Cache coerență

Multi cache pentru o resursă de memorie partajată

Coerența cache-ului este o proprietate a cache-urilor. adică integritatea datelor stocate în cache-urile locale pentru resursele partajate. Coerența cache-urilor este un caz special de coerență a memoriei.







Atunci când clienții sunt deja folosind caching de resurse partajate, cum ar fi memoria, poate duce la probleme de inconsistență a datelor. Acest lucru este valabil mai ales pentru procesoarele dintr-un sistem multiprocesor. Cifra „Unele memorii cache resurse de memorie partajată“ în cazul în care clientul în partea de sus a unei copii a unui bloc de memorie de la o citire anterioară, iar clientul jos își schimbă un bloc de memorie, o copie a datelor în cache-ul clientului superior devine caduc dacă nu este utilizat pentru modificarea sau orice notificare verificați modificările. coerența memoriei cache este conceput pentru a gestiona astfel de conflicte și să mențină coerența între diferitele memorii cache.

Coerența determină comportamentul citirilor și înregistrărilor în același loc de memorie. O cache se numește coerent dacă sunt valabile următoarele condiții:

  1. În cazul în care procesorul P scrie o valoare unei variabile X, data viitoare când citiți X, el ar trebui să obține valoarea înregistrată anterior, în cazul în care între scriere și citire X celălalt procesor nu scrie la H. Această condiție este asociată cu menținerea ordinii de executare a programului. acest lucru ar trebui făcut pentru o arhitectură cu un singur filet.
  2. Funcționarea citirii variabilei X de către procesorul P 1>. următorul după ce celălalt procesor P 2> a înregistrat în X, ar trebui să returneze valoarea înregistrată, dacă celelalte procesoare nu au schimbat X între cele două operații. Această condiție determină conceptul de vizibilitate coerentă a memoriei.
  3. Înregistrările din aceeași locație de memorie trebuie să fie consecutive. Cu alte cuvinte, dacă două procesoare scriu două valori la variabila X: A, atunci B - nu ar trebui să se întâmple astfel încât atunci când citiți procesorul primește valoarea B și apoi A.






În aceste condiții, se presupune că operațiile de citire și scriere apar instantaneu. Cu toate acestea, acest lucru nu se întâmplă în practică din cauza întârzierilor de memorie și a altor caracteristici de arhitectură. Modificările efectuate de procesorul P 1>. poate să nu fie vizibilă procesorului P 2>. dacă citirea a avut loc după un timp foarte scurt după înregistrare. Modelul de consistență a memoriei determină când valoarea înregistrată este vizibilă atunci când citiți dintr-un alt fir.

Mecanisme de coerență în cache

  • Coerența folosind directorul. Informațiile despre starea blocului de memorie fizică sunt conținute doar într-un singur loc, numit un director (fizic, directorul poate fi distribuit între nodurile sistemului).
  • Coerența folosind snooping. Fiecare cache care conține o copie a datelor unui anumit bloc de memorie fizică are, de asemenea, o copie corespunzătoare a informațiilor despre serviciu despre starea sa. Nu există un sistem centralizat de înregistrare. De obicei, cache-urile sunt localizate pe un autobuz partajat, iar toți controlorii cache-ului urmăresc busul (îl vezi) pentru a determina dacă conțin o copie a blocului corespunzător.
  • Intercepție (răsturnare). Atunci când dintr-o singură memorie cache de date este suprascris în memorie, celelalte controlere de a primi semnalul de schimbare ( „intercepta“ informațiile cu privire la modificările datelor) și, dacă este necesar, să modifice datele relevante în cache-uri lor.

Sistemele de memorie distribuite distribuite utilizează mecanisme similare pentru a menține corectitudinea între blocurile de memorie în sistemele cu cuplaj liber.

Protocoale de sprijinire a coerenței

Protocoalele de suport pentru coerență sunt responsabile pentru menținerea corectitudinii datelor între toate cache-urile din sistem cu en: distribuită memorie partajată. Protocolul acceptă coerența memoriei conform modelului selectat (en: model de consistență). Majoritatea protocoalelor hardware din microprocesoare corespund modelului de consistență secvențială. iar protocoalele software în sistemele de distribuție a informațiilor distribuite software corespund adesea modelelor: consistență de eliberare sau en: consistență slabă.

Modele și protocoale pentru susținerea coerenței cache-ului:







Articole similare

Trimiteți-le prietenilor: