NUMA ( Non -Uniform Memory Access „uneven memory access” sau Non-Uniform Memory Architecture „uneven memory architecture”) este o schemă de implementare a memoriei computerului utilizată în sistemele multiprocesor , când timpul de acces la memorie este determinat de locația sa în raport cu procesorul.
Sistemele NUMA constau din noduri de bază omogene care conțin un număr mic de procesoare cu module de memorie principale.
Practic, toate arhitecturile CPU folosesc o cantitate mică de memorie nepartajată foarte rapidă, cunoscută sub numele de cache , care accelerează accesul la datele frecvent necesare. În NUMA, suportul pentru coerență prin memorie partajată oferă un avantaj semnificativ de performanță.
Deși sistemele NUMA cu acces incoerent la memorie sunt mai ușor de proiectat și construit, devine extrem de dificil să programați astfel de sisteme în modelul clasic de arhitectură von Neumann . Ca rezultat, toate computerele NUMA disponibile comercial folosesc soluții hardware speciale pentru a obține coerența cache -ului și sunt clasificate ca sisteme coerente de cache cu memorie partajată distribuită sau ccNUMA .
În mod obișnuit, există o comunicare interprocesor între controlerele cache pentru a menține un model de memorie consistent ( coerența memoriei ) atunci când mai mult de un cache stochează aceeași locație de memorie. Acesta este motivul pentru care platformele ccNUMA pierd performanță atunci când mai multe procesoare la rând solicită acces la același bloc de memorie. Un sistem de operare care acceptă NUMA încearcă să reducă frecvența acestor tipuri de solicitări de acces prin realocarea procesoarelor și a memoriei într-un mod care să evite cursele și blocările.
Un exemplu de mașini multiprocesoare ccNUMA seria SGI Origin 2000 Supercomputerul ASCI Blue Mountain , unul dintre cele mai puternice supercomputere din 1999 [1] , a fost un grup masiv paralel de 48 de mașini SGI Origin 2000 cu 128 de procesoare fiecare. .