Documente Academic
Documente Profesional
Documente Cultură
Multiprocesoare
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).
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).
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.
P2
(initial A=B=0)
P3
A=1
if(A==1)
B=1
if(B==1)
reg=A
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.
P2
while (Head==0){;}
... =Data
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.
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.
3) Dance hall
4) Memorie distribuit :
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).
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!
Protocoalele write-back:
-protocoale cu invalidare:
-protocoale cu actualizare.
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
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.
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).