Acces neuniform la memorie

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

Non-Uniform Memory Access ( NUMA ) este o arhitectură de memorie dezvoltată pentru sistemele multiprocesor în care timpul de acces depinde de locația memoriei în raport cu procesorul. În arhitecturile NUMA, un procesor își poate accesa rapid memoria locală, mai încet amintirile altor procesoare sau memoria partajată.

Arhitectura NUMA este următorul pas logic pentru arhitecturile SMP . Unul dintre primele sisteme cu acest tip de arhitectură a fost Honeywell Information Systems Italia XPS100 în anii 1980 și a fost apoi dezvoltat de Sequent și Data General în anii 1990 . Aceste tehnologii au fost adoptate ulterior de VMS și multe sisteme Unix , parțial și în arhitectura Windows NT Server după ver. 5.6 și versiuni ulterioare.

Noțiuni de bază

CPU-urile moderne sunt mult mai rapide decât amintirile pe care le accesează. La începutul anilor șaptezeci, când primele supercomputere au început să se răspândească, amintirile erau mult mai rapide decât procesoarele și, prin urmare, nu au apărut probleme de acces la memorie. Odată cu creșterea rapidă a frecvenței de operare a procesorului, timpul de acces la memorie a devenit o problemă din ce în ce mai presantă pentru a deveni una dintre principalele probleme ale generațiilor actuale de procesoare. Multe sisteme dezvoltate la sfârșitul anilor 1980 și 1990 s-au concentrat pe realizarea unor sisteme de acces la memorie foarte rapide, mai degrabă decât pe unități de calcul rapide, deoarece obiectivul sistemelor era să poată procesa cantități mari de date.

Cheia pentru a obține performanțe ridicate cu supercomputerele moderne este limitarea accesului la memorie la o cantitate limitată de memorie foarte rapidă. Pentru a realiza acest lucru, cache-urile de dimensiuni tot mai mari sunt utilizate în cadrul procesoarelor care dețin date utilizate frecvent. Aceste cache-uri sunt actualizate cu algoritmi din ce în ce mai avansați pentru a păstra doar informațiile care sunt de fapt utilizate frecvent. Aceste metode nu pot compensa pe deplin creșterea continuă a memoriei și a dimensiunii programelor și sistemelor de operare care degradează performanța cache-ului. În sistemele multiprocesor, acest lucru devine și mai evident, deoarece un singur procesor poate accesa memoria, în timp ce celelalte procesoare, dacă trebuie să acceseze memoria, sunt forțate să-și aștepte rândul.

Arhitectura NUMA încearcă să remedieze această problemă oferind fiecărui procesor o zonă mică de memorie cu acces exclusiv și rapid pentru a evita crearea de blocaje. În cazul aplicațiilor care necesită partajarea datelor, cum ar fi în cazul serverelor și altele asemenea, arhitectura NUMA îmbunătățește performanța dacă memoria principală este împărțită în diferite bănci și un număr redus de procesoare este atribuit fiecărei bănci.

Desigur, datele nu sunt într-adevăr separate în amintirile singurelor procesoare și dacă datele trebuie procesate de mai mulți procesoare, este posibil. În acest caz, arhitectura NUMA necesită dispozitive software sau hardware pentru a muta date de la o bancă la alta. Această copie a datelor încetinește procesoarele și, prin urmare, eficiența arhitecturilor NUMA depinde foarte mult de sarcinile efectuate de sistem.

Coerența cache-urilor și NUMA (ccNUMA)

Pictogramă lupă mgx2.svg Același subiect în detaliu: Coerența cache-ului § Bazat pe director - Transmiterea mesajelor .

În prezent, orice procesor are o zonă mică de memorie de acces foarte rapidă și exclusivă numită cache . Aceste amintiri îmbunătățesc foarte mult performanța sistemului, deoarece profită de principiul localității programului, dar managementul lor introduce o încărcătură suplimentară semnificativă în arhitectura NUMA.

Deși este simplu de proiectat, o arhitectură NUMA non-cache nu este de obicei implementată din cauza performanței slabe a sistemului. O arhitectură NUMA care nu păstrează cache-urile coerente ar fi, de asemenea, simplu de proiectat, dar programarea sa ar fi practic imposibilă. Prin urmare, toate arhitecturile NUMA au mecanisme hardware în interiorul lor care gestionează coerența cache-urilor; aceste arhitecturi se numesc ccNUMA .

Aceste sisteme utilizează în mod obișnuit comunicații între procese între administratorii de cache care urmăresc dacă mai multe procesoare au copii ale aceleiași zone de memorie și acestea vor invalida cache-urile dacă unul dintre procesoare modifică una dintre aceste zone de memorie controlate. Din acest motiv, arhitecturile NUMA oferă performanțe slabe dacă procesoarele accesează aceleași zone de memorie în succesiune rapidă. Sistemele de operare care acceptă arhitecturile NUMA încearcă să reducă problema prin alocarea proceselor pentru a profita de divizarea arhitecturii și prin furnizarea de algoritmi de gestionare și blocare a memoriei pentru a reduce accesele simultane la aceeași zonă de memorie.

NUMA și cluster

Arhitectura NUMA poate fi văzută ca o versiune redusă a clusterelor de calculatoare . Adăugarea paginării de memorie virtuală la un sistem cluster vă permite să emulați o arhitectură NUMA chiar dacă nu există în hardware. Cu toate acestea, această soluție este mult mai lentă: comunicarea interproces într-o arhitectură software NUMA este cu câteva ordine de mărime mai lentă decât comunicarea interproces într-o arhitectură hardware NUMA.

Bibliografie

Elemente conexe

linkuri externe

Informatică Portal IT : accesați intrările Wikipedia care se ocupă cu IT