Cache-koherens

En cache kan användas för att förbättra prestandan vid åtkomst till en viss resurs. När det finns flera sådana cacher för samma resurs, som i bilden, kan det leda till problem. Cachekoherens eller Cache coherency avser ett antal sätt att se till att alla cacheminnen för resursen har samma data och att data i cacheminnena är meningsfulla (så kallad dataintegritet). Cachekoherens är ett specialfall av minneskoherens.

Det kan uppstå problem om det finns många cacher för en gemensam minnesresurs, eftersom data i cacheminnet kanske inte längre är meningsfulla, eller om en cache inte längre har samma data som de andra. Ett vanligt fall där problemet uppstår är CPU:ernas cache i ett flerprocessorsystem. Som framgår av figuren, om den översta klienten har en kopia av ett minnesblock från en tidigare läsning och den nedre klienten ändrar det minnesblocket, kan den översta klienten lämnas med en ogiltig cache av minnet,utan att veta om det. Cache coherence är till för att hantera sådana konflikter och upprätthålla konsistensen mellan cache och minne.

Flera cachemiljöer för delad resursZoom
Flera cachemiljöer för delad resurs

Definition

Samstämmighet definierar hur läs- och skrivningar till samma minnesplats beter sig. Caches är sammanhängande om alla följande villkor är uppfyllda:

  1. När en processor P läser en plats X, efter att ha skrivit till den platsen, måste P få det värde som den skrev, om ingen annan processor skrev ett annat värde till den platsen. Detta gäller även för monoprocessorsystem, vilket innebär att minnet kan behålla ett skrivet värde.
  2. Antag att det finns två processorer, P1 och P2, och att P1 skrev ett värde X1 och att P2 därefter skrev ett värde X2. Om P 1läser värdet måste den få det värde som P2 skrev, X2, och inte det värde som P skrev, X1, om det inte finns några andra skrivningar mellan de två. Detta innebär att synen på minnet är sammanhängande. Om processorer kan läsa samma gamla värde efter det att P2 har skrivit det skulle minnet inte vara sammanhängande.
  3. Det kan bara skrivas en gång i taget till en viss plats i minnet. Om det finns flera skrivningar måste de ske efter varandra. Med andra ord, om plats X fick två olika värden A och B i denna ordning av två processorer, kan processorerna aldrig läsa plats X som B och sedan läsa den som A. Plats X måste ses med värdena A och B i denna ordning.

Dessa villkor definieras under förutsättning att läs- och skrivoperationer utförs omedelbart. Detta sker dock inte i datorhårdvara på grund av minnesfördröjning och andra aspekter av arkitekturen. En skrivning från processor X kanske inte ses av en läsning från processor Y om läsningen sker inom en mycket kort tid efter det att skrivningen har gjorts. Minneskonsistensmodellen definierar när ett skrivet värde måste kunna ses av en följande läsinstruktion som görs av andra processorer.

Mekanismer för sammanhållning av cacheminnet

  • Katalogbaserade sammanhållningsmekanismer upprätthåller en central katalog över cachade block.
  • Snooping är den process där varje cache övervakar adressrader för åtkomst till minnesplatser som finns i dess cache. När en skrivoperation observeras till en plats som en cache har en kopia av, ogiltigförklarar cachekontrollanten sin egen kopia av den snokade minnesplatsen.
  • Snarfing innebär att en cache-kontrollant övervakar både adress och data i ett försök att uppdatera sin egen kopia av en minnesplats när en annan master ändrar en plats i huvudminnet.

Distribuerade delade minnessystem efterliknar dessa mekanismer så att de kan upprätthålla konsistens mellan minnesblock i löst kopplade system.

De två vanligaste typerna av sammanhållning som vanligtvis studeras är snokning och katalogbaserad. Var och en har sina egna fördelar och nackdelar. Snooping-protokoll tenderar att vara snabbare, om tillräcklig bandbredd finns tillgänglig, eftersom alla transaktioner är en begäran/svar som ses av alla processorer. Nackdelen är att snooping inte är skalbart. Varje begäran måste sändas till alla noder i ett system. När systemet blir större måste storleken på den (logiska eller fysiska) bussen och den bandbredd som den tillhandahåller öka. Kataloger tenderar å andra sidan att ha längre väntetider (med en begäran/vidarebefordran/svar med tre hopp) men använder mycket mindre bandbredd eftersom meddelanden är punkt till punkt och inte sänds ut. Av denna anledning använder många av de större systemen (>64 processorer) denna typ av cachekoherens.

Frågor och svar

F: Vad är cachekohärens?


S: Cachekoherens innebär att man ser till att alla cacheminnen av en resurs har samma data och att data i cacheminnena är konsekventa (dataintegritet).

F: Vad är syftet med cachekoherens?


S: Syftet med cachekoherens är att hantera konflikter mellan flera cacher för en gemensam minnesresurs och upprätthålla konsistens mellan cache och minne.

Fråga: Vilka konsekvenser kan det få om cachekoherens saknas?


S: Utan cachekoherens kan det hända att data i cacheminnet inte längre är meningsfulla, eller att ett cacheminne inte längre har samma data som de andra, vilket kan leda till inkonsekvenser och fel.

F: Vad är ett vanligt fall där problem med cachekohärens uppstår?


S: Ett vanligt fall där problem med cachekoherens uppstår är cacheminnet för CPU:er i ett flerprocessorsystem.

F: Hur fungerar cachekoherens?


S: Cachekoherens fungerar genom att se till att alla cacheminnen för en resurs har samma data och att data i cacheminnena är konsekventa med hjälp av olika metoder.

F: Vad menas med minneskoordinering?


S: Med minneskohärens avses att data är konsekventa i en delad minnesresurs.

F: Hur kan cachekoherens förbättra prestandan?


S: Cachekoherens kan förbättra prestandan genom att möjliggöra snabbare och effektivare åtkomst till en viss resurs.

AlegsaOnline.com - 2020 / 2023 - License CC3