Cachekoherens

Cachekoherens är en  egenskap hos cacher , vilket betyder integriteten hos data som lagras i lokala cacher för en delad resurs. Cachekoherens är ett specialfall av minneskoherens .

När processer i systemet använder cachning för delade resurser, såsom minne, kan datainkonsekvensproblem uppstå. Detta gäller särskilt för processorer i ett multiprocessorsystem . Cachekoherens är utformad för att hantera sådana konflikter genom att upprätthålla datakonsistens över olika cacher.

Koherens definierar beteendet för läsning och skrivning till samma minnesplats. En cache kallas koherent om följande villkor är uppfyllda [1] :

Under dessa förhållanden antas läs- och skrivoperationer vara momentana. Detta händer dock inte i praktiken på grund av minnesfördröjningar och andra arkitektoniska egenskaper. Ändringar gjorda av processorn kanske inte är synliga för processorn om läsningen sker mycket kort efter skrivningen. Minneskonsistensmodellen avgör när ett skrivet värde kommer att synas när det läses från en annan tråd.

Mekanismer för cachekoherens

De tre huvudsakliga mekanismerna för att säkerställa cache-koherens är att använda en katalog ( katalog ), spårning ( snoopning ) och avlyssning ( snurfing ).

När du använder katalogen finns information om tillståndet för det fysiska minnesblocket endast på ett ställe, kallat katalogen (i detta fall kan katalogen distribueras fysiskt mellan systemnoderna).

I spårningsmekanismen har varje cache som innehåller en kopia av data från något block av fysiskt minne också en motsvarande kopia av tjänsteinformationen om dess tillstånd. Det finns inget centraliserat registersystem. Vanligtvis är cachar placerade på en delad (delad) buss, och styrenheterna för alla cacher tittar igenom bussen för att avgöra om de innehåller en kopia av motsvarande block.

När avlyssning tillämpas, när data från en cache skrivs till RAM, får de andras styrenheter en signal om denna ändring ("avlyssna" information om dataändringen) och, om nödvändigt, ändrar motsvarande data i sina cachar.

Distribuerade delade minnessystem [ använder liknande mekanismer för att upprätthålla överensstämmelse mellan minnesblock i löst kopplade system.

Protokoll för att upprätthålla koherens

Koherensprotokollen är ansvariga för att upprätthålla datakorrektheten mellan alla cachar i ett distribuerat delat minnessystem. Protokollet upprätthåller minneskoherens enligt den valda koherensmodellen . De flesta hårdvaruprotokoll i processorer (inklusive de som tillhandahåller cache-koherent olikformig minnesåtkomst ) motsvarar den sekventiella konsistensmodellen , och mjukvaruprotokoll i mjukvarudistributerade minnessystem implementerar oftare modeller för utdatakonsistens ( engelsk  release-konsistens ) eller svag konsistens ( engelska )  svag konsistens ).

De huvudsakliga modellerna och protokollen för att stödja cachekoherens är:

Anteckningar

  1. Yan, Solihin. Grunderna för parallell flerkärnig arkitektur  (neopr.) .
  2. 1 2 [1] Arkiverad 3 juli 2010 på Wayback Machine Multi-processorer, deras minnesorganisationer och implementeringar av Intel & AMD
  3. Principer för cacheminne - radstatusindikatorer . Datum för åtkomst: 15 oktober 2009. Arkiverad från originalet den 25 januari 2009.
  4. StackPath . Hämtad 12 mars 2019. Arkiverad från originalet 16 februari 2019.
  5. Hur AMBA CCIX och GenZ tillgodoser behoven hos datacenter - Processorblogg - Processorer - Arm Community . Hämtad 12 mars 2019. Arkiverad från originalet 12 december 2019.
  6. GitHub - westerndigitalcorporation/omnixtend: En öppen standard Cache Coherent Fabric Interface repository . Hämtad 12 mars 2019. Arkiverad från originalet 26 augusti 2020.
  7. Arkiverad kopia (länk ej tillgänglig) . Hämtad 12 mars 2019. Arkiverad från originalet 22 februari 2019. 
  8. Google, SiFive och WD bildar allians för att föra fram öppna chips och SoCs . Hämtad 12 mars 2019. Arkiverad från originalet 14 mars 2019.
  9. Western Digital avslöjar SweRV RISC-V Core, Cache Coherency over Ethernet Initiative . Hämtad 12 mars 2019. Arkiverad från originalet 25 april 2019.

Litteratur