Arhitectură cu memorie partajată
Arhitecturile cu memorie partajată sunt arhitecturi ce se găsesc in calculatoarele cu memorie partajată, unde există un spațiu comun de memorie pentru toate procesoarele din sistem. Aceste calculatoare mai sunt numite și multiprocesoare, iar datorită gradului mare de interacțiune între procesoare, care împart aceeași memorie și între care există o bună sincronizare, se spune că aceste sisteme au un cuplaj strâns.
În cazul arhitecturilor cu memorie partajată s-a pornit de la mașina von Neumann, iar fiecărui procesor i s-a adăugat o memorie cache, pentru un acces mai rapid la date și instrucțiuni. Deoarece memoria este partajată, dezavantajul major îl constituie scăderea performanțelor sistemului odată cu creșterea numărului de procesoare.
În funcție de resurse, există două tipuri de sisteme, care la rândul lor se împart în următoarele arhitecturi:
- cu resurse globale
- arhitectura UMA (Uniform Memory Access)
- arhitectura UMA cu memorii cache locale
- cu resurse distribuite (procesoarele au memoriile locale ditribuite din punct de vedere fizic, însă acestea formează o memorie comună)
- arhitectura NUMA (Non-Uniform Memory Access)
- arhitectura COMA (Cache-Only Memory Access)
- arhitectura CC-NUMA (Cache Coherent Non-Uniform Memory-Access)
Arhitectura UMA
modificareCalculatoarele din această categorie au ca trăsătură esențială faptul că procesoarele care folosesc o memorie partajată, au același timp de acces la memorie. Totuși un număr prea mare de procesoare poate introduce întârzieri, pentru că apare accesul concurent la aceeași resursă. Procesoarele ce comunică cu memoria sunt conectate prin intermediul unei rețele.
Arhitectura UMA cu memorii cache locale
modificareAceastă arhitectură reprezintă o îmbunătățire a versiunii anterioare. Aici fiecare procesor conține o memorie cache. Dacă datele necesare procesorului se găsesc în cache-ul aferent acestuia, atunci procesorul le utilizeaza, fără a mai apela la memoria partajată. Astfel se reduce timpul de acces și se reduce în anumite proporții si accesul la aceeași resursă aflată în memorie. Dacă unele date din memoria partajată sunt conținute și în memoriile cache, atunci modificarea datelor din memoria comună presupune și modificarea datelor din memoriile cache, lucru necesar pentru asigurarea consistenței.
Arhitectura NUMA
modificareÎn cazul arhitecturii NUMA, fiecare procesor are asociată o memorie locală, iar toate memoriile locale formează o memorie văzută ca un tot unitar, ca un spațiu unic de adrese. Atunci când procesorul accesează date din memoria locală, timpul de acces va fi unul scurt, spre deosebire de cazul în care procesorul accesează date din memoria locală aferentă altui procesor. În cel de-al doilea caz timpul va fi mai mare datorită transportului datelor prin rețeaua de interconectare. O trăsătură esențială pentru mașinile din această categorie o reprezintă factorul NUMA. Acesta indică diferențele între accesarea datelor din memoria locală de către un procesor și accesarea datelor dintr-o altă zonă, care nu este locală, de către același procesor. În mod normal acest factor se referă la primul și ultimul procesor din cadrul unei rețele (cele mai îndepărtate procesoare).
Arhitectura COMA
modificareÎn arhitectura COMA, memoriile cache ale fiecărui procesor vor forma un spațiu unic de adresare. În cazul de față, există un dispozitiv, numit controler de memorie, care are rolul de a aduce datele necesare fiecărui procesor în memoria sa cache locală. O problemă apare în cazul în care un procesor are nevoie de un bloc de date, însă are memoria cache plină. Deoarece nu există o memorie comună, va trebui ca datele vechi să fie mutate în memoria altui procesor, pentru ca noile date să poată fi aduse în memoria cache a procesorului care accesează datele. Controlerul de memorie are printre alte atribuții și aceea de a muta blocurile dintr-o memorie în alta.
Arhitectura CC-NUMA
modificareAcest model îmbină cele două arhitecturi: NUMA și COMA. Fiecare dintre procesoare are atât o memorie locală, cât și o memorie cache. Memoria cache este folosită în cazul în care datele de care are nevoie procesorul nu se găsesc în memoria locală. Pentru datele necesare procesoarelor se caută mai întâi în memoriile locale asociate acestora. Dacă datele sunt conținute în aceste memorii, atunci datele sunt prelucrate de procesor, dacă nu, atunci datele din memoriile celorlalte procesoare sunt aduse în memoria cache a procesorului care are nevoie de acele date. Bineînțeles că trebuie să se realizeze o consistență a memoriilor cache: în cazul în care datele din memoriile locale se modifică, trebuie modificate și datele care se găsesc în memoria cache a altor procesoare.
Vezi și
modificareBibliografie
modificare- en Non-Uniform Memory Access
- Revista Informatica Economica, nr. 1/2004
- Mihai Horia Zaharia, Sisteme Paralele și distribuite, ed. Gh. Asachi, Iași, 2003, ISBN 973-621-056-1