Cache-kohærens

En cache kan bruges til at forbedre ydeevnen ved adgang til en given ressource. Når der er flere sådanne caches til den samme ressource, som vist på billedet, kan det give problemer. Cache-kohærens eller Cache-kohærens henviser til en række måder at sikre, at alle caches for ressourcen har de samme data, og at dataene i cachen giver mening (kaldet dataintegritet). Cache-kohærens er et særligt tilfælde af hukommelseskohærens.

Der kan opstå problemer, hvis der er mange caches af en fælles hukommelsesressource, da data i cachen måske ikke længere giver mening, eller en cache måske ikke længere har de samme data som de andre. Et almindeligt tilfælde, hvor problemet opstår, er cachen for CPU'er i et multiprocessingssystem. Som det fremgår af figuren, hvis den øverste klient har en kopi af en hukommelsesblok fra en tidligere læsning, og den nederste klient ændrer denne hukommelsesblok, kan den øverste klient stå tilbage med en ugyldig cache af hukommelsen,uden at vide det. Cache-kohærens er til for at håndtere sådanne konflikter og opretholde konsistensen mellem cache og hukommelse.

Flere caches af fælles ressourcerZoom
Flere caches af fælles ressourcer

Definition

Sammenhæng definerer opførslen af læsninger og skrivninger til den samme hukommelsesplacering. Caches er kohærente, hvis alle følgende betingelser er opfyldt:

  1. Når en processor P læser en placering X efter at have skrevet til denne placering, skal P få den værdi, den skrev, hvis ingen anden processor har skrevet en anden værdi til denne placering. Dette gælder også for monoprocessorsystemer, det betyder, at hukommelsen er i stand til at bevare en skrevet værdi.
  2. Hvis der er to processorer, P1 og P2, og P1 har skrevet en værdi X1, og P efterfølgende har 2skrevet en værdi X2, skal P, hvis den 1læser værdien, få den værdi, som P2 har skrevet, X2, og ikke den værdi, som P har skrevet, X1, hvis der ikke er andre skrivninger mellem de to processorer. Dette betyder, at hukommelsen er sammenhængende. Hvis processorer kan læse den samme gamle værdi efter P2's skrivning, er hukommelsen ikke kohærent.
  3. Der kan kun skrives én gang ad gangen til et bestemt sted i hukommelsen. Hvis der er flere skrivninger, skal de ske efter hinanden. Med andre ord, hvis placering X har modtaget to forskellige værdier A og B i denne rækkefølge af to processorer, kan processorerne aldrig læse placering X som B og derefter læse den som A. Placering X skal ses med værdierne A og B i den rækkefølge.

Disse betingelser er defineret under forudsætning af, at læse- og skriveoperationer udføres øjeblikkeligt. Dette sker imidlertid ikke i computerhardware på grund af hukommelseslatenstid og andre aspekter af arkitekturen. Det er muligt, at en skrivning fra processor X ikke kan ses af en læsning fra processor Y, hvis læsningen foretages inden for et meget kort tidsrum efter, at skrivningen er foretaget. Hukommelseskonsistensmodellen definerer, hvornår en skrevet værdi skal kunne ses af en efterfølgende læseinstruktion fra de andre processorer.

Cache-kohærensmekanismer

  • Katalogbaserede kohærensmekanismer opretholder en central mappe med cachede blokke.
  • Snooping er den proces, hvor hver cache overvåger adresselinjer for adgang til hukommelsesplaceringer, der er i dens cache. Når der observeres en skriveoperation til en placering, som en cache har en kopi af, ugyldiggør cache-controlleren sin egen kopi af den snoopede hukommelsesplacering.
  • Snarfing er, når en cache-controller overvåger både adresse og data i et forsøg på at opdatere sin egen kopi af en hukommelsesplacering, når en anden master ændrer en placering i hovedhukommelsen.

Distribuerede systemer med delt hukommelse efterligner disse mekanismer, så de kan opretholde konsistensen mellem hukommelsesblokke i løst koblede systemer.

De to mest almindelige typer af sammenhæng, der typisk undersøges, er Snooping og Directory-baseret sammenhæng. De har hver især deres fordele og ulemper. Snooping-protokoller har tendens til at være hurtigere, hvis der er tilstrækkelig båndbredde til rådighed, da alle transaktioner er en anmodning/svar, der ses af alle processorer. Ulempen er, at snooping ikke kan skaleres. Hver anmodning skal udsendes til alle knuder i et system. Efterhånden som systemet bliver større, må størrelsen af den (logiske eller fysiske) bus og den båndbredde, den giver, vokse. Derimod har kataloger tendens til at have længere latenstider (med en 3 hop request/forward/respondance), men bruger meget mindre båndbredde, da meddelelser er punkt til punkt og ikke udsendes. Af denne grund anvender mange af de større systemer (>64 processorer) denne type cache-kohærens.

Spørgsmål og svar

Spørgsmål: Hvad er cachekohærens?


Svar: Cache-kohærens henviser til at sikre, at alle caches af en ressource har de samme data, og at dataene i caches er konsistente (dataintegritet).

Sp: Hvad er formålet med cachekohærens?


Svar: Formålet med cachekohærens er at håndtere konflikter mellem flere caches af en fælles hukommelsesressource og opretholde konsistensen mellem cache og hukommelse.

Spørgsmål: Hvilke konsekvenser kan det have, hvis der ikke er cachekohærens?


Svar: Uden cachekohærens kan data i cachen ikke længere give mening, eller en cache kan ikke længere have de samme data som de andre, hvilket kan resultere i inkonsekvenser og fejl.

Sp: Hvad er et almindeligt tilfælde, hvor der opstår problemer med cache-kohærens?


Svar: Et almindeligt tilfælde, hvor der opstår problemer med cachekohærens, er cachen i CPU'er i et multiprocessingssystem.

Sp: Hvordan fungerer cachekohærens?


Svar: Cache-kohærens fungerer ved at sikre, at alle caches af en ressource har de samme data, og at dataene i cachen er konsistente ved hjælp af forskellige metoder.

Spørgsmål: Hvad forstås ved hukommelseskohærens?


Svar: Hukommelseskohærens henviser til konsistensen af data på tværs af en delt hukommelsesressource.

Spørgsmål: Hvordan kan cachekohærens forbedre ydeevnen?


Svar: Cache-kohærens kan forbedre ydeevnen ved at give hurtigere og mere effektiv adgang til en given ressource.

AlegsaOnline.com - 2020 / 2023 - License CC3