Sunteți pe pagina 1din 9

MULTIPROCESOARE

Multiprocesoarele sunt calculatoare paralele care dispun de o singur memorie global


partajat. Procesoarele din aceste sisteme sunt conectate printr-o reea indirect sau printr-o
combinaie de reea indirect i reea punct la punct.
Comunicaia i sincronizarea dintre procesoare este realizat prin intermediul unor locaii
partajate din memoria global, dar pe aceste maini se poate emula i interfaa pe baz de
transmisie de mesaje MPI (Message Passing Interface) caracteristic multicalculatoarelor.

Memoria global

Figura 1. Arhitectura unui sistem multiprocesor


O problem a acestor calculatoare este scalabilitatea redus. De exemplu, calculatoarele
multiprocesor bazate pe magistral nu se pot scala la un numr mare de procesoare. Astfel, la un
numr de 8-10 procesoare, magistrala intr n saturaie. O alt problem care trebuie rezolvat la
calculatoarele multiprocesor este meninerea coerenei memoriilor cache.

Coerena memoriilor cache n calculatoarele multiprocesor cu memorie partajat


Cum fiecare procesor dispune de o memorie cache i fiecare procesor poate accesa o
aceeai locaie din memoria partajat, pot aprea inconsistene ntre diferitele memorii cache
care au ncrcat aceeai variabil.
Sursele inconsistenelor pot fi 3 la numr:
1) Scrierea datelor n zone partajate de memorie.
2) Migrarea proceselor ntre procesoare.
3) Activitile de intrare-ieire.
Exemple:
Situatia 1:
Scrierea datelor ntr-o zon partajat:

Figura 2. Inconsisten la scrierea datelor ntr-o zon partajat


Situaia iniial: P1 i P2 citesc aceeai memorie X.
Write-through: Memoria cache permite scrierea, valoarea e scris imediat n memoria global.
P1 scrie valoarea X n variabila X dup care P2 vrea s citeasc aceast valoare, dar P2 va citi
X, nu valoarea actualizata (X) => inconsisten.
Write-back: P1 scrie valoarea X n X dar nu este trecut in memoria global. P2 citete valoarea
X => inconsisten.
Situaia 2:
Migrarea proceselor.

Figura 3. Inconsisten n cazul migrrii proceselor


Situaia iniial: P1 citete valoarea X din memoria global.
Write-through: Un proces din P2 scrie valoarea X n variabila X dup care procesul se mut n
P1 i va citi din nou variabila X => inconsisten.
Write-back: Un proces din P1 scrie valoarea X n variabila X apoi acelai proces migreaza n
procesorul P2 care citete valoarea X din memoria global => inconsisten.

Situatia 3:
Activitile de intratre-ieire.

Figura 4. Inconsistena datelor n cazul activitilor de intrare-ieire


Situaia iniial: S-a adugat un dispozitiv de intrare-iesire pe magistrala sistem, P1 i P2 citesc
aceeai valoare X din memoria global.
Write-through: Presupunem c perifericul vrea sa scrie valoarea X n memoria principal n
locul variabilei X. Scrierea se face fr intervenia procesoarelor, de exemplu prin DMA. Apoi
P1 sau P2 vor sa citeasca variabila X din memorie => inconsisten.
Write-back: P1 scrie X n variabila X dup care perifericul vrea s citeasc valoarea X din
memorie => inconsisten.
Pentru rezolvarea ultimei probleme (la memoriile write-back) se poate muta interfaa de
intrare-ieire lng procesor astfel nct perifericul s poat accesa memoria global doar prin
memoria cache:

Figura 5. Rezolvarea inconsistenei prin reamplasarea interfeelor de intrare-ieire


O alt soluie tot pentru aceast problem este ca procesorul s nu citeasc locaiile de
memorie din spaiul de intrare-ieire (alocat perifericelor) din memoria cache, ci direct din
memoria global.
Pentru meninerea coerenei memoriilor cache se folosesc aa-numitele protocoale de
coeren. Exist dou tipuri de protocoale pentru meninerea coerenei:
1) Write invalidate (scriere cu invalidare)
2) Write update (actualizare la scriere)

Figura 6. Protocoale pentru meninerea coerenei datelor


Protocolul Write-Invalidate: dac P1 scrie valoarea X n variabila X din memorie atunci
se va trimite un mesaj de invalidare tuturor celorlalte memorii cache pentru blocul care conine
variabila X.
Protocolul Write-Update: dac P1 scrie valoarea X n variabila X atunci se vor trimite
mesaje de actualizare cu valoarea X la toate celelalte memorii cache. Protocolul Write-Update
necesit mai mult laime de band din partea reelei, pentru c aceast metod este echivalent
cu o operaie de broadcast pentru actualizarea datelor.
Metoda Write-Invalidate sufer n schimb de un fenomen numit false-sharing; n acest
caz se pot face anumite invalidri ale datelor care nu sunt necesare n program:
P1

P2

Figura 7. Situaie n care poate aprea fenomenul de false-sharing

n exemplul de mai sus, A i B sunt dou variabile ce exist n acelai bloc de memorie.
Dac P1 modific variabila A, atunci se invalideaz i variabila B (invalidarea realizndu-se la
nivel de bloc), dei aceast din urm invalidare nu este necesar.

1. Arhitectura UMA (Uniform Memory Access)


Aceast arhitectur se utilizeaz n sisteme multiprocesor tradiionale care folosesc o reea de
comunicaie indirect, de obicei o magistral. n sistemele UMA, modalitatea de conectare i
timpul de acces la memoria global partajat sunt aceleai pentru toate procesoarele.

Figura 8. Arhitectura UMA


O clas special de calculatoare care folosete arhitectura UMA o reprezint
multiprocesoarele simetrice SMP (Simetric Multiprocessor).

Figura 9. Arhitectura unui sistem SMP


n cazul unui sistem SMP, toate resursele sistem (memorii, hard disk-uri, dispozitive de
I/O) sunt accesibile tuturor procesoarelor ntr-o manier uniform.

Cteva probleme ale calculatoarelor cu arhitectura UMA:


1) Aceste arhitecturi sunt foarte greu scalabile.
Arhitectura bazat pe magistral sufer fenomenul de saturare dac se conecteaz prea
multe procesoare. Folosirea unei reele cross-bar limiteaz scalabilitatea datorit costurilor.
Folosirea reelelor multistagiu este scump, aprnd o laten mare a acesului la memoriile
partajate atunci cnd se mrete numrul de stagii.
Soluii:
a) Reducerea traficului pe magistral prin folosirea memoriilor cache, dar i aici crescnd
numrul de procesoare crete numrul de evenimente cache-miss (crete numrul de blocuri
cache invalide), evenimente a cror rezolvare va conduce din nou la saturarea magistralei.
b) Gruparea unui numr mic de procesoare mpreun cu o singur memorie partajat ntrun cluster i conectarea mai multor clustere printr-o reea direct (arhitectura NUMA).
2) Poate aprea blocarea memoriei atunci cnd mai multe procesoare vor s acceseze memoria
simultan.
Soluie:
Pentru rezolvarea problemei putem mpri memoria n mai multe blocuri (sau bancuri de
memorie) astfel nct fiecare banc s se acceseze ntr-un anumit interval de adres. De exemplu
putem avea o memorie cu dou bancuri, primul banc fiind accesat la adrese pare iar al doilea la
adrese impare.
Dar i n cazul impririi memoriei n bancuri apar probleme dac mai multe procesoare vor
s acceseze simultan acelai banc de memorie.
Exemplu: Presupunem c avem mai multe procesoare care sunt conectate printr-o reea
multistagiu la mai multe bancuri de memorie (fig.10). n momentul n care mai multe procesoare
acceseaz simultan un banc de memorie (B1) apare congestia sau saturarea reelei:

Figura 10. Congestia unei reele multistagiu

n exemplul de mai sus, switch-ul conectat la bancul B1 reprezint un punct de congestie.


Ca o soluie pentru acest problem putem folosi combinarea mesajelor:
De exemplu se folosete o operaie atomic numit Fetch and Add (o operaie atomic nu
poate fi divizat sau ntrerupt de nici un alt proces). Operaia Fetch and Add (x,e) este
echivalent cu nlocuirea variabilei x din memorie prin valoarea x+e.

Figura 11. Accesul simultan a dou procesoare la o locaie de memorie


prin operaii Fetch and Add
Pasul 1: P1 i P2 vor s acceseze simultan variabila X prin operaii atomice Fetch and Add.
Pasul 2: Switch-ul memoreaz valoarea de adunare e1 a primei operaii, apoi combin cele dou
operaii Fetch and Add ntr-una singur avnd ca valoare de adunare e1+e2, i trimite aceast
operaie ca un singur mesaj memoriei principale.
Pasul 3: Valoarea din memorie se actualizeaz i se trimite napoi ctre switch un mesaj cu
valoarea iniial a lui X.
Pasul 4: Switch-ul trimite valoarea iniial ctre cele dou procesoare; astfel P1 va primi valoarea
X n timp ce P2 va primi valoarea X+e1 (presupunem ca P1 i P2 nu au memorii cache).
Acest exemplu ilustreaz avantajul metodei de combinare a mesajelor: memoria este citit
sau scris o singur dat la accesul simultan a mai multor procesoare, astfel nct nu va mai
aprea fenomenul de saturare a reelei.

2. Arhitectura NUMA (Non-Uniform Memory Access)


Un dezavantaj al arhitecturii UMA este acela c ea duce la realizarea de sisteme greu
scalabile; pentru a nltura acest dezavantaj s-au dezvoltat sistemele NUMA. n cadrul acestei
arhitecturi, mai multe procesoare cu acces uniform la o memorie partajat sunt conectate ntr-un
cluster, mai multe clustere fiind conectate printr-o reea punct la punct scalabil, ce folosete
pentru comunicare transmiterea de mesaje.

Figura 12. Arhitectura NUMA


Din punct de vedere al programrii exist un singur spaiu de memorie global, astfel c
NUMA devine o arhitectur partajat din punct de vedere logic, dei din punct de vedere fizic ea
este o arhitectur distribuit.
Cnd un procesor acceseaz memoria sistemului, controlerul de memorie cache (sau n
alte implementri unitatea de management a memoriei MMU) verific dac locaia adresat se
gsete n memoria local sau ntr-o memorie aflat la distan. n cazul n care se acceseaz un
bloc de memorie aflat la distan (remote), se trimite un mesaj n reeaua de clustere pentru
accesarea blocului remote prin reea. Acest mod de funcionare are ca i consecin faptul c
accesul la memoria local este rapid, pe cnd accesul la memoria remote este lent (de aici vine i
numele arhitecturii NUMA).
Pentru a reduce numrul de accesri ale memoriilor aflate la distan, procesoarele aduc
n memoria cache proprie blocurile remote dorite:

Reea de comunicaie

Figura 13. Aducerea n memoria local a blocurilor remote

Dar n aceast situaie va trebui rezolvat problema coerenei memoriilor cache care au
citit aceeai variabil. n acest scop, au fost create sistemele numite CC-NUMA (Cache Coerent
NUMA), sisteme care folosesc un protocol de tip Write-Invalidate pentru meninerea coerenei
memoriilor cache.

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