A gyorsítótár koherenciája a gyorsítótárak tulajdonsága , ami a helyi gyorsítótárban tárolt adatok integritását jelenti egy megosztott erőforráshoz. A gyorsítótár koherenciája a memóriakoherencia speciális esete .
Amikor a rendszerben lévő folyamatok gyorsítótárat használnak a megosztott erőforrásokhoz, például a memóriához, adatkonzisztencia-problémák léphetnek fel. Ez különösen igaz a többprocesszoros rendszerek processzoraira . A gyorsítótár-koherenciát úgy tervezték, hogy kezelje az ilyen ütközéseket azáltal, hogy fenntartja az adatok konzisztenciáját a különböző gyorsítótárak között.
A koherencia határozza meg az olvasás és írás viselkedését ugyanarra a memóriahelyre. A gyorsítótárat koherensnek nevezzük, ha a következő feltételek teljesülnek [1] :
Ilyen körülmények között az olvasási és írási műveleteket azonnalinak kell tekinteni. Ez azonban a gyakorlatban nem történik meg a memóriakésések és egyéb építészeti jellemzők miatt. Előfordulhat , hogy a processzor által végrehajtott változtatások nem láthatók a processzor számára , ha az olvasás nagyon röviddel az írás után történik. A memória konzisztencia modellje meghatározza, hogy egy írott érték mikor lesz látható egy másik szálból olvasva.
A gyorsítótár koherenciájának biztosításának három fő mechanizmusa a címtár ( könyvtár ), a követés ( snooping ) és az elfogás ( snarfing ) használata.
A könyvtár használatakor a fizikai memóriablokk állapotára vonatkozó információ csak egy helyen, az úgynevezett könyvtárban található (ebben az esetben a könyvtár fizikailag elosztható a rendszercsomópontok között).
A nyomkövetési mechanizmusban minden gyorsítótár, amely a fizikai memória valamely blokkjának adatainak másolatát tartalmazza, rendelkezik az állapotáról szóló szolgáltatási információ megfelelő másolatával is. Nincs központosított nyilvántartási rendszer. A gyorsítótárak általában egy megosztott (megosztott) buszon helyezkednek el, és az összes gyorsítótár vezérlője figyeli (átnézi) a buszt, hogy megállapítsa, tartalmaznak-e másolatot a megfelelő blokkról.
Az elfogás alkalmazásakor, amikor az egyik gyorsítótárból adatokat írnak a RAM-ba, a többiek vezérlői jelet kapnak erről a változásról („elfogják” az adatváltozásról szóló információkat), és szükség esetén módosítják a megfelelő adatokat a gyorsítótárukban.
Az elosztott megosztott memóriarendszerek [ hasonló mechanizmusokat használnak a memóriablokkok közötti konzisztencia fenntartására lazán csatolt rendszerekben.
A koherencia protokollok felelősek az adatok helyességének megőrzéséért az elosztott megosztott memóriarendszerben lévő összes gyorsítótár között. A protokoll fenntartja a memóriakoherenciát a választott koherencia modellnek megfelelően . A processzorok legtöbb hardveres protokollja (beleértve azokat is, amelyek gyorsítótár-koherens, nem egységes memória-hozzáférést biztosítanak ) megfelel a szekvenciális konzisztencia modellnek , és a szoftveres elosztott memóriarendszerek szoftverprotokolljai gyakrabban valósítják meg a kimeneti konzisztencia ( angol kiadási konzisztencia ) vagy a gyenge konzisztencia ( angol ) modelljeit. gyenge konzisztencia ).
A gyorsítótár koherenciáját támogató fő modellek és protokollok a következők: