Sunteți pe pagina 1din 59

MULTIPROCESOARE

ORGANIZARE GENERALA
MODELE DE CONSISTENTA PENTRU MEMORIA
PARTAJATA
COERENTA MEMORIILOR CACHE
PROIECTAREA MULTIPROCESOARELOR CU
SUPRAVEGHERE

ORGANIZARE GENERALA
Sistemele multiprocesor caracterizate prin :
-un multiprocesor este un singur calculator care include mai multe procesoare i un
singur spaiu de memorie adresabil de acestea;
-procesoarele pot comunica i coopera la diferite niveluri pentru rezolvarea unei
probleme date;
-un multiprocesor este controlat de un singur sistem de operare integrat, care
permite interaciunea ntre procesoare i programele lor la nivel de proces, set de date i
chiar date elementare.
Exist dou modele arhitecturale de baz pentru sistemele multiprocesor:
-multiprocesoare slab cuplate LCM (Loosely Coupled Multiprocessors);
-multiprocesoare strns cuplate TCM (Tightly Coupled Multiprocessors).

Multiprocesoarele slab cuplate:


-grad mai sczut al conflictelor de memorie, fa de multiprocesoarele strns
cuplate;
-fiecare procesor dispune de un set de echipamente periferice i o memorie local
mare, unde sunt accesate aproape toate instruciunile i datele;
-procesorul, dispozitivele de I/E i memoria local => modul de calcul (nod);
-modulele de calcul sunt conectate ntre ele printr-o reea de interconectare.
-modulele calculator pot fi conectate pentru realizarea unui sistem multiprocesor
ierarhic sau neierarhic;
-un modul calculator poate fi fabricat ntr-un singur cip => folosit pentru
construirea de sisteme de calcul mari;
-reeaua de interconectare ntre modulele calculator : magistrala multiplexata n
timp sau memorie multiport.

Multiprocesoarele strns cuplate:


-productivitate mai buna;
-n prelucrrile de vitez mare sau de timp real;
-un grad nalt de interaciune ntre procesoarele componente.
-reeaua de interconectare procesoare memorie PMIN (Processor-Memory
Interconnection Network) => rat mare de comunicaie (comutatoare gril i reele de
comutatoare multinivel);
-PMIN trebuie s permit nscrierea simultan a datelor n mai multe module de
memorie i s rezolve conflictele de acces.
-accesul procesoarelor la echipamente comune: reea de interconectare
procesoare-dispozitive de I/E, IOPIN (I/O Processor Memory Interconnection
Network);
-procesoarele pot comunica direct, eventual pot executa operaii de
sincronizare prin reeaua de interconectare ISIN (Interrupt Signal Interconnection
Network).
Tipuri de sisteme multiprocesor:
-sisteme bazate pe magistral, multiplexat n timp;
-sisteme bazate pe comutator gril;
-sisteme bazate pe comutator multinivel.

MODELE DE CONSISTEN PENTRU MEMORIA


PARTAJAT
Modelul de memorie pentru programele paralele dintr-un multiprocesor:

Accesul concurent al procesoarelor pentru scrieri i citiri la o aceeai locaie


de memorie partajat.: pe baza unor reguli => modelul de consisten al memoriei
partajate.
Modele de consisten:
-consistena strict;
-consistena secvenial;
-consistena de procesor;
-consistena slab;
-consistena la eliberare.

1) Consistena strict (strict consistency): fiecare citire de la o locaie x va


furniza ntotdeauna valoarea celei mai recente scrieri n x.
-model comod;
-greu de implementat: nu permite memorie cache sau date duplicate;
-trebuie s existe un singur modul de memorie care s serveasc toate cererile
n ordinea FIFO;
-aglomerare a memoriei partajate.

2) Consistena secvenial (sequencial consistency): pentru cereri multiple


de citire i scriere, hardware-ul va alege nedeterminist o succesiune a lor, dar toate
procesoarele vor vedea aceeai ordine.
Exemplu: ntr-un sistem multiprocesor, procesoarele P1-P4 execut operaii de
citire scriere la o aceeai locaie de memorie x:
P1:
P2:
P3:
P3:
P4:
P4:

write 100
write 200
read x
read x
read x
read x

=> o anumit ordine, dar dac P3 citete din locatia x valorile 100, 200 (n
aceast ordine), => cu siguran i P4 va citi tot valorile 100, 200 (n aceeai ordine).

O solutie de implementare a modelului de consistenta secventiala:

Definitie. Un sisteme multiprocesor este secvential consistent daca rezultatul oricarei


executii este acelasi ca si cand operatiile tuturor procesoarelor ar fi fost executate intr-o
anumita ordine secventiala si operatiile fiecarui procesor individual apar in aceasta
secventa in ordinea specificata de program.
Aspecte:
-mentinerea ordinii din program pentru operatiile procesoarelor individuale;
-mentinerea unei ordini unice secventiale pentru operatiile tuturor
procesoarelor.
Exemple care ilustreaza aceste aspecte:

Ex.1: importanta ordinii din program pentru operatiile unui singur procesor (algoritmul
Dekker pentru sectiune critica).
P1

P2
(initial Flag1=Flag2=0)

Flag1=1
if(Flag2==0)
sectiune critica

Flag2=1
if(Flag1==0)
sectiune critica

P1 seteaza Flag1 si citeste Flag2, care daca are valoarea 0 inseamna ca P2 nu a incercat
sa intre in sectiunea critica si atunci P1 intra in sectiunea critica. Algoritmul se bazeaza
pe faptul ca citirea procesorului P1 a variabilei Flag2 are loc inainte ca P2 sa execute
operatiile de scriere si citire. Consistenta secventiala mentine ordinea din program a
operatiilor efectuate de P1 si P2 impiedicand ca cele doua procesoare sa citeasca 0 si sa
intre simultan in sectiunea critica.

Ex.2: importanta executiei atomice a operatiilor cu memoria. Trei procesoare partajeaza


variabilele A si B, initializate cu 0. Presupunem ca P2 citeste 1 (dupa scrierea lui P1 in
A), scrie in B si P3 citeste 1 pentru B. Aspectul de atomicitate a consistentei
secventiale permite sa presupunem ca efectul scrierii lui P1 este vazut de intregul
sistem in acelasi timp. De aceea se garanteaza ca P3 vede efectul scrieri lui P1 si
returneaza valoarea 1 pentru variabila A (caci P3 vede efectul scrierii lui P2 dupa ce P2
vede efectul scrierii lui P1 in A).
P1

P2
(initial A=B=0)

P3

A=1
if(A==1)
B=1
if(B==1)
reg=A

Implementarea consistentei secventiale in sisteme fara cache


1) Buffere de scriere cu posibilitate de ocolire ("bypassing capability"): ilustreaza
importanta mentinerii ordinii din program intre o scriere si o operatie de citire urmatoare.
La o scriere procesorul inscrie data in buffer si continua fara sa astepte terminarea
operatiei de scriere la memorie. Citiri urmatoare pot ocoli oricare scrieri anterioare in
bufferul de scriere pentru incheierea mai rapida (adresa de citire nu coincide cu nicio
adresa de scriere din buffer).

Pentru a urmari modul in care bufferele de scriere pot incalca consistenta secventiala se
considera algoritmul Dekker. Un sistem consistent secvential trebuie sa impiedice
furnizarea valorii 0 pentru ambele variabile (Flag1 si Flag2). Dar acest lucru se poate
intampla: daca ambele procesoare au inscris 1 si scrierile sunt in bufferele
procesoarelor, iar citirile se executa din memorie inainte de actualizarile operatiilor din
buffere cu memoria.

2) Suprapunerea operatiilor de scriere: ilustreaza importanta mentinerii ordinii din


program intre doua operatii de scriere. Se considera o retea generala de interconectare
(nu magistrala) si module multiple de memorie. Lipsa magistralei si existenta unor
module multiple de memorie permit servirea unor operatii multiple de scriere.
Presupunem ca procesoarele lanseaza operatiile de scriere cu memoria in ordinea din
program si isi continua executia fara sa astepte incheierea operatiilor. Diferenta fata de
situatia precedenta: scrieri multiple ale unui procesor pot fi realizate in paralel in
memorii diferite.

Se considera un exemplu de program pentru care aceasta optimizare poate incalca


consistenta secventiala.
P1
Data=2000
Head=1

P2
while (Head==0){;}
... =Data

Un sistem secvential consistent garanteaza ca citirea variabilei Data de catre P2 va


intoarce valoarea inscrisa de P1. Dar permitand suprapunerea scrierilor procesorului P1
se poate incalca consistenta secventiala. Daca Data si Head sunt in module diferite si
scrierea lui Head este plasata in reteaua de interconectare inainte de Data, scierile se pot
incheia in alta ordine decat cea din program, ceea ce face ca celalalt procesor sa gaseasca
Head==1 (valoarea noua) si Data==valoarea veche.
Solutie: asteptarea incheierii unei operatii de scriere inainte de lansarea in reteaua de
interconectare a unei noi operatii de scriere de la acelasi procesor. In general se poate
utiliza un semnal de achitare a scrierii catre procesor ("acknowledge").

3) Operatii de citire neblocante: ilustreaza importanta mentinerii ordinii din program


intre o citire si o operatie urmatoare de citire sau scriere. Se considera citiri neblocante
in sistem: chiar daca exista procesoare care se blocheaza pana la citirea datei (citire
blocanta) alte procesoare trec de o operatie de citire utilizand tehnici cum sunt memorii
cache neblocante, executie speculativa si planificare dinamica.

Pentru programul din exemplul precedent se presupune ca scrierile lui P1 sunt in


ordinea din program, dar daca se permite ca operatiile de citire ale lui P2 sa fie lansate
in maniera suprapusa este posibil ca citirea variabilei Data de catre P2 sa se incheie
inainte de scrierea valorii acestei variabile de catre P1.

Implementarea consistentei secventiale in sisteme cu memorii cache


Memorarea datelor in cache poate conduce la o reordonare a operatiilor care sa incalce
consistenta secventiala. Exemplu: un cache L1 "write through" -> reordonare
asemanatoare cu cea de la bufferul de scriere cu posibilitate de ocolire.
Replicarea datelor implica suplimentar:
-prezenta de copii multiple necesita un mecanism care sa propage cea mai noua
valoare scrisa la toate copiile din cacheuri (protocol de coerenta a memoriile cache);
-detectarea incheierii unei operatii de scriere necesita mai multe tranzactii in
prezenta datelor replicate;
-propagarea modificarilor la copii multiple este inevitabil o operatie nonatomica, pentru care (deci pentru scrieri) trebuie sa se furnizeze iluzia atomicitatii in
raport cu alte operatii.

1) Coerenta memoriilor cache. Cu un protocol de coerenta se asociaza conditii ca:


-o scriere este facuta vizibila la toate procesoarele;
-scrierile la aceeasi locatie trebuie vazute in aceeasi ordine de catre toate
procesoarele (serializarea scrierilor in aceeasi locatie).
Propagarea unei valori inscrise se obtine prin fie invalidarea (sau eliminarea) fie
actualizarea copiei.

2) Detectarea incheierii operatiilor de scriere. Mentinerea ordinii din program a unei


scrieri fata de urmatoarele operatii necesita un acknowledge pentru a semnala
incheierea scrierii.
Se considera exemplul precedent de la solutia fara cache, dar in plus procesoarele sunt
dotate cu memorii cache. Presupunem ca P2 are Data in cache. Dupa ce P1 a scris Data
in memorie dar inainte de actualizarea in cahe-ul P2, P1 lanseaza scrierea Head. Este
posibil ca P2 sa citeasca noua valoare Head, dar sa citesca vechea valoare Data =>
incalcarea consistentei secventiale. Solutia: P1 asteapta ca P2 sa actualizeze copia Data
in cache, inainte ca P1 sa scrie Head.
Astfel daca se face o scriere intr-un bloc care se gaseste si intr-un alt cache sistemul
necesita un mecanism de acknowledge pentru invalidarea sau actualizarea copiilor,
implementat la nivelul memoriei partajate sau la nivelul procesorului care a lansat
scrierea. Procesorul care lanseaza urmatoarea scriere trebuie sa primeasca aceasta
notificare privind incheierea operatiei de scriere anterioare.

3) Mentinerea iluziei de atomicitate pentru scrieri: propagarea schimbarilor la copii


multiple nu este o operatie atomica. Exista doua conditii care trebuie indeplinite pentru
a asigura atomicitatea scrierilor.
Ilustrarea primei conditii: presupunem ca patru procesoare executa:
P1
P2
P3
P4
(initial A=B=C=0)
A=1
A=2
while(B!=1){;} while(B!=1){;}
B=1
C=1
while(C!=1){;} while(C!=1){;}
reg1=A
reg2=A
Este posibil ca scrierile lui A de catre P1 si P2 sa ajunga la P3 si P4 in ordine diferita,
astfel P3 si P4 citesc valori diferite pentru A.
Este necesar sa se impuna serializarea scrierilor in aceeasi locatie.

Pentru cea de-a doua conditie se considera exemplul:


P1
P2
(initial A=B=0)
A=1
if(A==1)
B=1

P3

if(B==1)
reg=A
Se poate incalca consistenta secvetiala daca:
-P2 citeste valoarea noua a lui A inainte ca actualizarea lui A sa ajunga la P3;
-actualizarea lui P2 asupra variabilei B ajunge la P3 inainte de actualizarea lui
A;
-P3 citeste noua valoare a lui B, apoi incearca sa citeasca A din propriul cache
(inainte sa primeasca actualizarea lui A).
=> P2 si P3 observa scrierea lui A la momente diferite, facand
scrierea neatomica (apare in schemele cu invalidare).
Pentru prevenirea incalcarii consistentei: interzicerea unei citiri de la returnarea unei
valori nou scrise pana ce toate copiile din cacheuri au confirmat receptia mesajului de
invalidare sau de actualizare generate de scriere.

3) Consistena de procesor (processor consistency) - definit de urmtoarele


proprieti:
a) scrierile oricrui procesor sunt vzute de toate procesoarele n aceeai
ordine n care au fost emise;
b) pentru fiecare cuvnt de memorie toate procesoarele vd toate scrierile n
aceeai ordine.
Exemplu: procesorul P1 scrie n x valorile 100, 200, 300 (n aceast ordine),
iar procesorul P2 scrie tot n x valorile 400, 500, 600.
P3 citeste din x: 100, 400, 200, 500, 300, 600;
P4 citeste din x: 100, 200, 400, 300, 500, 600 (etc. alte combinaii);
=> niciun procesor nu va citi o combinaie, de exemplu, de tipul ,200, 100,
-proprietatea b): toate procesoarele s fie de acord cu ultima scriere dintr-o
succesiune de scrieri (locaia x s aib o valoare neambigu).

O solutie de implementare a consistentei de procesor (utilizata in arhitectura


SPARC) :

4) Consistena slab (weak consistency): nu garanteaz nici mcar c


scrierile fcute de un procesor sunt vzute n aceeai ordine.
Exemplu: procesorul P1 scrie valorile 100, 200 n locaia x. Procesorul P2
vede succesiunea 100, 200, iar P3 vede 200, 100.
operaie de sincronizare: toate operaiile de scriere sunt ncheiate i nu se ncep
altele noi, pn cnd cele vechi nu sunt terminate (operaiile de sincronizare: secvenial
consistente).
Exemplu: P1 scrie n locaia de memorie x urmtoarele valori:
100,
200

300
.....
pct.sinc.
pct.sinc.
-procesorul P2 poate vedea valorile 100, 200;
-procesorul P3 poate vedea valorile 200, 100;
=> dar ambele vd succesiunea 100, 300 i 200, 300.

5) Consistena la eliberare (release consistency):


-rezolva dezavantajul modelului precedent: sunt oprite toate operaiile noi n
punctul de sincronizare pn cnd se termin toate operaiile n curs;
-operaia de sincronizare este mprit n dou operaii diferite:
-acaparare (acquire): acapararea variabilei de sincronizare pentru a
obine acces exclusiv la datele partajate;
-eliberare (release): eliberarea variabilei de sincronizare pentru a
indica terminarea.
=> avantaj: nu ntrzie instruciunile aa de des cum face consistena slab.

COERENA MEMORIEI CACHE


Categorii de ierarhii de memorie:
1) Memoria cache partajat

2) Memorie principal bazat pe magistral

3) Dance hall

4) Memorie distribuit :

Definitie. Un sistem de memorie este coerent daca rezultatele oricarei executii


a unui program sunt astfel incat pentru fiecare locatie este posibil sa se construiasca o
ordine seriala ipotetica a tuturor operatiilor cu locatia care este consistenta cu
rezultatele executiei si in care:
1) operatiile generate de oricare proces particular au loc in ordinea generata de
proces;
2) valoarea returnata de o citire este valoarea scrisa de ultima operatie de
scriere in locatia respectiva in cadrul ordinii seriale.
Caracteristici:
-propagarea scrierii: valoarea scrisa trebuie sa devina vizibila altor procesoare;
-serializarea scrierii: scrierile in locatia respectiva trebuie sa fie vazute in
aceeasi ordine de toate procesoarele.

Solutii:
a) bazate software: in clustere de statii de lucru (PC-uri) extinzand sistemul de
memorie virtuala;
b) bazate hardware - variante:
-scheme de supraveghere: broadcast pentru observarea intregului trafic de
coerenta (sisteme pe magistrala si sisteme cu numar mic de procesoare, exemplu: SGI
Challange);
-scheme de directoare: informatii centralizate pentru evitarea broadcastului
(sisteme cu numar mare de procesoare. exemplu: SGI Origin 2000).

Scheme de supraveghere pentru coerenta memoriilor cache


Exemplu de acces al unei variabile partajate de catre trei procesoare cu
memorii cache:

Cea mai simpl metod: sistemul de memorii cache cu actualizare la scriere


(write through) -> orice operaie de scriere => tranzacie de scriere pe magistral
(toate memoriile cache observ aceast tranzacie) !

O memorie cache cu observare (snooping cache) are o copie a blocului => va


invalida copia blocului sau o va actualiza.
Categorii de protocoale:
-protocoale cu invalidare;
-protocoale cu actualizare.

Memorie cache write through, varianta write no allocate (fr alocare la


scriere dac la o operaie de scriere blocul nu este n memoria cache, acesta nu va fi
ncrcat n cache i operaia de scriere se va face direct n memoria principal) -2 stri:
-valid;
-invalid.
Memorie cache cu actualizare la eliminare (write back)
-valid;
-invalid;
-modificat (sau murdar).

Protocoale write-through
1) Protocol VI simplu cu invalidare pentru memorie cache write through,
varianta write no allocate.

Exemplu: se considera un sistem multiprocesor bazat pe magistrala cu protocol writethrough in care fiecare procesor lucreaza la frecventa de 1GHz, 1CPI (un ciclu per
instructiune), iar 15% din program sunt instructiuni de scriere in memorie de cuvinte pe
8 octeti.
fiecare procesor executa 15*107 instructiuni de memorare pe secunda (1.2
Gocteti/sec)
magistrala 2 Gocteti/sec => magistrala poate suporta numai un singur procesor, fara sa
se satureze!
Solutia write-through nu este indicata pentru SMP-uri! Memoriile cache write-back
reduc accesele la magistrala!

Protocoale write-back cu invalidare

Protocoalele write-back:
-protocoale cu invalidare:
-protocoale cu actualizare.

2) Protocol MSI de baz cu invalidare pentru memorie cache de tipul write


back (utilizat prima dat n sistemele multiprocesor din seria Silicon Graphics 4D).

3) Protocol ESI write-back cu invalidare. Un bloc de memorie poate sa fie


intr-una din urmatoarele stari:
-Clean: valid intr-un subset de memorii cache si in memoria partajata;
-Dirty: intr-o singura memorie cache;
-nu se gaseste in nicio memorie cache.
Starile fiecarui bloc de cache:
-I (invalid): blocul nu este valid in memoria cache curenta (se gaseste in alt
cache sau in memoria partajata);
-E (exclusiv): blocul este valid numai in memoria cache a procesorului curent;
-S (shared): blocul este valid in doua sau mai multe memorii cache.
Diagrama de tranzitii cuprinde actiuni initiate de un procesor (cu rosu) si actiuni initiate
de pe magistrala (albastru inchis). Evenimentele lipsa de cache la citire (ReadMiss)
produc operatii de supraveghere de catre toate memoriile cache. Scrierile in blocuri
curate sunt tratate ca eveniente lipsa de cache la scriere (WriteMiss).

Aplicatie. Se consiera doua procesoare care acceseaza doua blocuri de cache


care se mapeaza in acelasi cadru de bloc in memoria cache a fiecarui procesor. Initial
blocul nu se gaseste decat in memoria principala.

P1

P2

stare

adresa

valoare

P1Wr
10A1

A1

10

P1Rd
A1

A1

10

P2Rd
A1

P2Wr
20A1

stare

A1

adresa

Mag.
valoare

A1

10

Mem.

actiune

proc.

adresa

valoare

adresa

valoare

WrMs

P1

A1

RdMs

P2

A1

WrBk

P1

A1

10

10

10

10

A1

10

RdData

P2

A1

A1

20

WrMs

P2

A1

10

WrMs

P2

A2

10

WrBk

P2

A1

P2Wr
40A2
E

A2

40

20

20

3) Protocol MESI cu invalidare pentru memorie cache de tipul write back.

Aplicatie. Se considera un sistem multiprocesor cu trei procesoare in care


consistenta memoriei cache se asigura printr-un protocol MESI. Se executa o
succesiune de operatii de citire si scriere referitoare la un acelasi bloc de memorie
cache:
P1Rd, P2Rd, P3Rd, P1Rd, P1Wr, P1Rd, P2Wr, P3Rd
Initial nu exista copii ale blocului in nicio memorie cache. Sa se specifice succesiunea
de stari corespunzatoare blocului la nivelul fiecarei memorii cache, actiunile pe
magistrala si dispozitivul care furnizeaza datele.

Protocoale write-back cu actualizare

Protocol cu actualizare: o operatie de scriere realizeaza actualizarile valorii in


celelalte cache-uri.
Avantaje:
-un alt procesor care acceseaza aceeasi informatie va avea valoarea
actualizata;
-se executa o singura tranzactie pe magistrala pentru actualizarea mai multor
memorii cache, ceea ce conduce la o economisire a ratei de transfer.
Dezavantaj:
-scrieri multiple ale aceluiasi procesor genereaza tranzactii multiple de
actualizare.

4) Protocol Dragon write-back cu actualizare.


Stari:
-E (exclusiv): blocul este detinut de memoria cache curenta si de memoria
principala;
-Sc (shared clean): blocul este detinut de alte memorii cache, posibil de
memoria principala si de memoria cache curenta, care nu este proprietara (nu este
responsabila cu furnizarea blocului la o cerere);
-Sm (shared modified): blocul este detinut de alte memorii cache, de memoria
cache curenta, care este proprietara (este responsabila cu furnizarea blocului la o
cerere), dar nu este detinut de memoria principala;
-M (modified) sau D (dirty): blocul este detinut numai de memoria cache
curenta.

Aplicatie. Se considera o secventa de operatii de scriere si citire efectuate de


trei procesoare P1, P2 si P3 pentru un acelasi bloc de memorie cache. Sa se specifice
succesiunea starilor la nivelul fiecarei memorii cache, actiunea pe magistrala si sursa de
date pentru fiecare operatie.

PROIECTAREA MULTIPROCESOARELOR CU
SUPRAVEGHERE
Memorii cache cu un singur nivel si magistrala atomica
Probleme:
-proiectarea memoriei cache care sa asigure accesul procesorului si al
agentului de supraveghere la taguri;
-rezultatele supravegherii din partea controloarelor de cache trebuie sa se
prezinte ca parte a tranzactiei pe magistrala (cand si cum?);
-chiar daca magistrala este atomica, actiunile pentru o cerere procesor implica
si alte resurse, de exemplu controloarele cache, care nu sunt atomice;
-operatiile de actualizare "write-back" introduc conditii asupra competitiei
pentru magistrala.

In timpul unei operatii cu memoria pe magistrala fiecare memorie cache verifica adresa
tranzactiei cu tagurile proprii, iar rezultatul supravegherii trebuie raportat de toate
cache-urile inainte de continuarea tranzactiei.
Probleme:
-cand trebuie sa se faca raportarea;
-cum trebuie sa se faca raportarea.

Solutii pentru momentul raportarii supravegherii:


-hardware-ul garanteaza ca rezultatele supravegherii sunt disponibile intr-un
numar fix de perioade de ceas. Posibil ca la un cache procesorul tocmai sa faca o
actualizare E -> M in ambele memorii de tag, ceea ce intarzie controlorul de cache
pentru magistrala. Avantaj: proiectare simpla a sistemului de memorie. Dezavantaje:
hardware complex si posibil latenta crescuta pentru supraveghere. Solutia adoptata la
Pentium Pro Quads (extinde faza de supraveghere daca este necesar).
-supraveghere intr-un interval variabil. Solutia presupune ca memoria asteapta
pana cand o memorie cache furnizeaza datele sau pana cand s-a incheiat supravegherea
si este indicata o alta situatie. Exemplu: SGI Challenge.
-memoria principala gestioneaza cate un bit pentru fiecare bloc de cache, daca
blocul este in starea M intr-unul din cache-uri sau nu. Dezavantaj: complexitatea
sistemului de memorie.

Modalitatea raportarii supravegherii. Considerente:


-la incarcarea unui bloc controlorul de cache trebuie sa cunoasca daca blocul
este si intr-un alt cache (E / S);
-la o tranzactie memoria trebuie sa cunoasca daca blocul este in starea M la un
alt cache sau nu.
=> solutie: trei linii sau-cablat (doua pentru rezultatul supravegherii si una pentru
validarea rezultatului):
-linia 1: indica daca vreun cache detine o copie a blocului;
-linia 2: indica daca vreun cache are blocul modificat;
-linia 3: initial inactiva, fiecare controlor de cache activeaza linia pe masura ce
a incheiat supravegherea. Cand toate cache-urile activeaza linia, aceasta devina activa.

Operatia "writeback" complica implementarea caci implica doua blocuri de cache (un
bloc de intrare si un bloc de iesire).
se acorda prioritate procesorului => memorie suplimentara (buffer "writeback).
Problema: posibil inainte de actualizare, pe magistrala sa apara o cerere pentru acest
bloc => blocul plasat pe magistrala din bufferul "writeback" si se va anula cererea
pentru magistrala (comparator suplimentar de adresa pentru supravegherea bufferului
writeback).

Problema importanta: doua procesoare P1 si P2 detin un acelasi bloc in


memoriile cache in starea S si simultan genereaza o scriere in bloc, facand cerere de
magistrala. Daca arbitrarea este castigata de P2, starea blocului se va modifica din S in
M, in timp ce la P1, care are o cerere de magistrala in asteptare, starea blocului ramane
S (incorect!).
=> P1 trebuie sa supravegheze magistrala si pentru cererile sale in asteptare si
sa modifice starea blocului din S in I, iar ulterior sa faca o noua cerere pentru scrierea
in bloc (BusRdX).
Solutie: extinderea protocolului cu stari intermediare sau tranzitorii.

S-ar putea să vă placă și