Ce este Cache Coherence?

Coerența cache-ului este problema naturală care se dezvoltă atunci când setul de date al unui sistem este accesat și modificat de mai mulți agenți. Domeniul principal al arhitecturii computerelor în care aceasta devine o problemă este în computerele multiprocesor. Fiecare procesor dintr-un computer multiprocesor are propriul cache care încarcă și stochează informații din memoria cu acces aleatoriu (RAM). Când două procesoare accesează aceeași zonă de memorie, coerența cache-ului s-ar pierde dacă nu s-ar lua anumite măsuri de precauție.

Fără coerența cache-ului, un sistem multiprocesor nu ar putea funcționa. Există mai multe metode care au fost dezvoltate pentru a aborda această problemă și pentru a evita potențialele probleme. Coerența bazată pe director, snooping și snarfing sunt trei metode care sunt utilizate pentru a preveni pierderea coerenței cache-ului.

Coerența bazată pe director funcționează ca un filtru pentru a asigura coerența. Datele sunt plasate într-o porțiune de memorie care este accesibilă tuturor procesoarelor. Când informațiile care sunt stocate în acea zonă de memorie sunt modificate, sistemul fie va actualiza cache-urile, fie le va invalida.

Snoopingul necesită ca procesorul să monitorizeze toate accesele la locațiile de memorie care au fost stocate în cache. Acest lucru permite procesorului să știe când a avut loc o operație de scriere. Știind când are loc o operație de scriere, procesorul își poate actualiza memoria cache.

Snarfing este destul de asemănător cu snooping. Snarfingul implică nu numai monitorizarea acceselor la locațiile de memorie care au fost stocate în cache, ci și monitorizarea informațiilor reale care sunt stocate în memorie. Când are loc o scriere în memorie, memoria cache poate fi actualizată cu noile informații.

Sistemele de coerență bazate pe directoare au o latență relativ mare, rezultând o procesare mai lentă. Cerințele de lățime de bandă mai reduse permit sistemelor de coerență bazate pe directoare să fie practice în aplicațiile la scară largă de coerență cache. Cu cât un sistem folosește mai multe procesoare, cu atât mai multe avantaje poate avea de la utilizarea unui sistem de coerență bazat pe directoare.
Snooping este o metodă mult mai rapidă. Această metodă necesită mai multă lățime de bandă decât abordarea bazată pe directoare. Această metodă poate fi utilizată eficient în sisteme care au relativ puține procesoare.
Snarfing-ul nu este folosit de obicei ca metodă de menținere a coerenței cache-ului. Acest lucru se datorează în primul rând pentru că snarfing necesită mai multe resurse pentru a fi utilizate în comparație cu metodele de snooping și bazate pe directoare. Pentru ca un sistem de snarfing să funcționeze, trebuie să țină evidența atât a adreselor de memorie, cât și a datelor stocate în acele zone de memorie. Cantitatea de lățime de bandă și procesare care este preluată de această metodă o face nedorită pentru majoritatea aplicațiilor de menținere a coerenței cache-ului.