NUMA ( Non -Uniform Memory Access "ojämn minnesåtkomst" eller Non-Uniform Memory Architecture "ojämn minnesarkitektur") är ett datorminnesimplementeringsschema som används i multiprocessorsystem , när minnesåtkomsttiden bestäms av dess plats i förhållande till processorn.
NUMA-system består av homogena grundnoder som innehåller ett litet antal processorer med huvudminnesmoduler.
Praktiskt taget alla CPU- arkitekturer använder en liten mängd mycket snabbt icke-delat minne, känd som en cache , vilket snabbar upp åtkomsten till ofta nödvändiga data. I NUMA ger stöd för koherens genom delat minne en betydande prestandafördel.
Även om NUMA-system med inkoherent minnesåtkomst är lättare att designa och bygga, blir det extremt svårt att programmera sådana system i den klassiska von Neumann-arkitekturmodellen . Som ett resultat använder alla kommersiellt tillgängliga NUMA-datorer speciella hårdvarulösningar för att uppnå cachekoherens och klassificeras som distribuerade delade minnescachekoherenta system, eller ccNUMA .
Vanligtvis finns det interprocessorkommunikation mellan cachekontroller för att upprätthålla ett konsekvent minnesmönster (minneskoherens ) när mer än en cache lagrar samma minnesplats. Det är därför ccNUMA-plattformar förlorar prestanda när flera processorer i rad begär åtkomst till samma minnesblock. Ett operativsystem som stöder NUMA försöker minska frekvensen av dessa typer av åtkomstförfrågningar genom att omfördela processorer och minne på ett sätt som undviker raser och lås.
Ett exempel på ccNUMA multiprocessormaskiner SGI Origin 2000ASCI Blue Mountain superdator , en av de mest kraftfulla superdatorerna 1999 [1] , var ett massivt parallellt kluster av 48 SGI Origin 2000-maskiner med 128 processorer vardera. .