Cachekohærens er en egenskab ved caches , hvilket betyder integriteten af data, der er gemt i lokale caches for en delt ressource . Cachekohærens er et særligt tilfælde af hukommelsessammenhæng .
Når processer i systemet bruger caching til delte ressourcer, såsom hukommelse, kan der opstå datainkonsistensproblemer. Dette gælder især for processorer i et multiprocessorsystem . Cachekohærens er designet til at håndtere sådanne konflikter ved at opretholde datakonsistens på tværs af forskellige caches.
Kohærens definerer adfærden for læsning og skrivning til den samme hukommelsesplacering. En cache kaldes kohærent, hvis følgende betingelser er opfyldt [1] :
Under disse forhold antages læse- og skriveoperationer at være øjeblikkelige. Dette sker dog ikke i praksis på grund af hukommelsesforsinkelser og andre arkitektoniske træk. Ændringer foretaget af processoren er muligvis ikke synlige for processoren, hvis læsningen sker meget kort efter skrivningen. Hukommelseskonsistensmodellen bestemmer, hvornår en skrevet værdi vil være synlig, når den læses fra en anden tråd.
De tre hovedmekanismer til at sikre kohærens i cache er at bruge en mappe ( mappe ), sporing ( snooping ) og aflytning ( snarfing ).
Når du bruger biblioteket, er information om tilstanden af den fysiske hukommelsesblok kun indeholdt ét sted, kaldet biblioteket (i dette tilfælde kan biblioteket fysisk fordeles mellem systemknuderne).
I sporingsmekanismen har hver cache, der indeholder en kopi af dataene fra en blok af fysisk hukommelse, også en tilsvarende kopi af serviceinformationen om dens tilstand. Der er ikke noget centraliseret journalsystem. Typisk er caches placeret på en delt (delt) bus, og controllerne for alle caches ser (kigger igennem) bussen for at afgøre, om de indeholder en kopi af den tilsvarende blok.
Når aflytning anvendes, når data fra en cache skrives til RAM, modtager controllerne for de andre et signal om denne ændring ("opsnappe" information om dataændringen) og om nødvendigt ændre de tilsvarende data i deres cache.
Distribuerede delte hukommelsessystemer bruger lignende mekanismer til at opretholde konsistens mellem hukommelsesblokke i løst koblede systemer .
Kohærensprotokollerne er ansvarlige for at opretholde datakorrekthed mellem alle caches i et distribueret delt hukommelsessystem. Protokollen opretholder hukommelsessammenhæng i henhold til den valgte kohærensmodel . De fleste hardwareprotokoller i processorer (inklusive dem, der giver cache-kohærent ikke-ensartet hukommelsesadgang ) svarer til den sekventielle konsistensmodel , og softwareprotokoller i softwaredistribuerede hukommelsessystemer implementerer oftere modeller for outputkonsistens ( engelsk udgivelseskonsistens ) eller svag konsistens ( engelsk ) svag konsistens ).
De vigtigste modeller og protokoller til understøttelse af cache-sammenhæng er: