close
Mine sisu juurde

NUMA

Allikas: Vikipeedia

NUMA ehk Non-Uniform Memory Access on arvuti mälu disain, kus mälule juurdepääsu aeg sõltub mälu asukohast protsessori suhtes.[1][2] Enamasti kasutatakse seda multitöötluses, näiteks serverites ja kõrgjõudlusega arvutites (HPC), kus ühes süsteemis võib olla kaks või enam protsessorit.[3] NUMA-t kasutavas süsteemis pääseb protsessor kiiremini ligi enda lokaalsele mälule kui talle mittelokaalsetele (s.t jagatud või teiste protsessorite lokaalsetele) mäludele.[4]

NUMA arhitektuur on muutunud oluliseks kaasaegsete mitmetuumaliste ja mitme protsessoriga süsteemide juures, kuna see võimaldab vältida traditsioonilise UMA (Uniform Memory Access) arhitektuuri kitsaskohti. NUMA eesmärk on parandada süsteemi skaleeritavust, vähendada mälusiini koormust ja tagada, et protsessorid saaksid töötada võimalikult väikese latentsusega.[1][4]

Ülesehitus

[muuda | muuda lähteteksti]

NUMA arhitektuuris jagatakse süsteem mitmeks sõlmeks (ingl k node), millest igaüks sisaldab protsessorituumasid, mälukanaleid ja lokaalset füüsilist mälu. Erinevalt UMA süsteemidest, kus kõik protsessorid kasutavad ühist mälusiini, on NUMA eesmärk tuua mälu arvutusüksustele füüsiliselt lähemale, et vähendada latentsust ja suurendada mälu ribalaiust.[2]

NUMA sõlmed on omavahel ühendatud spetsiaalselte interconnect-tehnoloogiatega - Intel QPI/UPI, AMD HyperTransport, AMD Infinity Fabric), mis võimaldavad protsessoritel vajadusel pääseda ligi ka teiste sõlmede mälule. Kuigi kogu süsteemi mälu on loogiliselt ühtne, ei ole see füüsiliselt homogeenne - ligipääs lokaaalsele mälule on oluliselt kiirem kui kaugmälu kasutamine.[5]

NUMA süsteemi keskne ehitusüksus on sõlm, mis koosneb tavaliselt ühest või mitmest protsessorituumast, lokaalsest DRAM mälust, mälukontrollerist ja interconnect-liidestest teiste sõlmede suunas. Kaasaegsetes serveriprotsessorites on iga protsessoripakett jagatud mitmeks siemiseks NUMA domeeniks, kus igal domeenil on oma mälukanalid ja vahemäluhierarhia. See tähendab, et isegi ühe protsessori sees võib olla mitu NUMA sõlme.[3]

Mälukontrollerid ja mälukanalid

[muuda | muuda lähteteksti]

NUMA arhitektuuris on mälukontrollerid enamasti integreeritud otse protsessorisse. See on oluline erinevus võrreldes UMA süsteemidega, kus mälukontroller oli eraldi kiibil. Integreeritud mälukontroller võimaldab madalamat latentsust, suuremat ribalaiust, otsest kontrolli mälupaigutuse üle ja loomulikku sõlmepõhist mälustruktuuri. Igal sõlmel on oma mälukanalid, mis toimivad sõltumatult teistest sõlmedest. See tähendab, et süsteemi koguribalaius kasvab koos sõlmede arvuga.[6]

Interconnect-võrgustik

[muuda | muuda lähteteksti]
Kolmedimensioonilise torus interconnect'i diagramm, kus on 8 sõlme.

Sõlmede omavaheline ühendus on NUMA toimimise seisukohalt kriitiline. Interconnect peab tagama piisava ribalaiuse, madala latentsuse, ühtlusprotokollide tõhusa toimimise ning olema skaleeritav kümnete või sadade sõlmedeni. Interconnect'i kvaliteet määrab, kui suur on latentsuse erinevus lokaalse ja kaugmälu vahel.

Levinud interconnect topoloogiad on ring, mesh (võrgustik), crossbar (ristlatt) ja torus (toor). Ring on neist kõige lihtsam, kuid sõlmede arvu suurenedes kasvab latentsus, mesh'i puhul ühendub iga sõlm mitme naabriga, see on ka levinuim topoloogia. Crossbar topoloogias ühendub iga sõlm kõigiga, tegemist on väga kiire interconnect'iga, aga on ka väga kallis. HPC süsteemides, kus on vaja väga suurt skaleeritavust kasutatakse aga torus topoloogiat.[7]

Vahemäluhierarhia

[muuda | muuda lähteteksti]

NUMA süsteemides on vahemäluhierarhia eriti oluline, sest see aitab vähendada vajadust kaugmälu järele. Tüüpilise vahemälu hierarhia kohaselt on vahemälu NUMA süsteemis jaotatud tasemeteks:

  • L1 - tuumapõhine, väga kiire;
  • L2 - tuumapõhine või jagatud väikese grupi vahel;
  • L3 - jagatud sõlme või chipleti sees;
  • L4 (valikuline) - DRAM-põhine vahemälu;

Vahemälude ühtsust tagavad protokollid (MESI, MOESI, MESIF) peavad töötama üle interconnect-võrgu, mis muudab ühtsuse tagamise NUMA süsteemides keerukamaks kui UMA's.[8]

Eelised ja puudused

[muuda | muuda lähteteksti]

NUMA arhitektuur pakub mitmeid eeliseid:

  • Parem skaleeritavus - võimalik lisada rohkem protsessoreid ilma märkimisväärse jõudluse languseta;
  • Suurem ribalaius - igal protsessoril on oma mälukanal;
  • Väiksem pudelikael võrreldes UMA süsteemidega;
  • Suurem mäluhulk;

NUMA-l on ka mõned puudused:

  • Keerulisem programmeerimine - tarkvara peab arvestama mälu asukohaga [4];
  • Jõudluse varieeruvus - mittelokaalse mälu kasutus võib süsteemi märkimisväärselt aeglustada;
  • Lõimemigratsioon - kui protsess liigub ühelt protsessorilt teisele, võib see protsess hakata kasutama kaugmälu;

NUMA juured ulatuvad 1980.-1990. aastatesse, mil hakati otsima lahendusi mitme protsessoriga süsteemide skaleeritavuse parandamiseks. Varasemad süsteemid kasutasid peamiselt UMA arhitektuuri, kuid protsessorite arvu kasvades muutus ühine mälusiin kitsaskohaks. Selle tulemusena hakkasid teadlased ja arvutitootjad otsima viise, kuidas vähendada mälusiini koormust ja pakkuda paralleelsust.[2]

BBN TC2000 (Butterfly) protsessorite trükkplaat.

Varased NUMA-süsteemid (1980-1990)

[muuda | muuda lähteteksti]

NUMA arhitektuuri varajaseks eelkäijaks peetakse BBN Butterfly süsteemi, mis kasutas hajutatud mälu ja mitmetasandilist lülitusvõrku, et võimaldada protsessoritele ligipääsu nii lokaalsele kui ka kaugmälule.[9] Süsteem ei olnud täiuslik, kuid see demonstreeris, et mälule ligipääsu latentsust saab vähendada, kui mälu jaotada füüsiliselt mitme sõlme vahel. Teine oluline varajane süsteem oli Encore Multimax, mis kasutas jagatud mälu, vahemälu ühtsuse mehhanisme ja võimaldas mitme protsessoriga töökoormusi paremini skaleerida kui traditsioonilised UMA masinad.[10]

ccNUMA teke (1990ndad)

[muuda | muuda lähteteksti]

1990. aastatel toimus oluline läbimurre: cache-coherent NUMA arhitektuuride teke. Need süsteemid tagasid, et kõik protsessorid näevad ühtset mälupilti, isegi kui andmed asuvad erinevates vahemäludes. See lahendas ühe varasemate NUMA-süsteemide suurima probleemi - vahemälude järjekindlusetuse.

Kõige mõjukam ccNUMA süsteem oli Silicon Graphics Origin 2000, mis kasutas kataloogipõhist ühtsusprotokolli ja NUMAlink tehnoloogiat.[11] Origin 2000 võimaldas süsteeme skaleerida sadade protsessoriteni, säilitades samal ajal mälu ühtluse ja suhteliselt madala latentsuse.

QPI paiknemine Intel Nehalem arhitektuuris.

Samal perioodil ilmus ka Sequent NUMA-Q, mis oli üks esimesi kommertslikke ccNUMA servereid.[12]

NUMA standardiseerimine ja laialdane kasutuselevõtt (2000-2010)

[muuda | muuda lähteteksti]

2000ndatel muutus NUMA serveriarhitektuuride standardiks. Aastal 2003 ilmus AMD Opteron, mis oli esimene x86 protsessor, mis integreeris mälukontrolleri protsessorisse ja kasutas HyperTransport-põhist NUMA ühendust.[6] Inteli vastus sellele tuli aastal 2008 Intel Nehalem näol, mis oli esimene Intel Xeon arhitektuuri põhine protsessor, mis kasutas QuickPath Interconnect (QPI) tehnoloogiat ja NUMA-laadset mälumudelit.[13]

Kaasaegne NUMA ja chiplet-arhitektuurid (2010 - tänapäev)

[muuda | muuda lähteteksti]

Aastal 2017 tõi AMD turule EPYC serveriprotsessorid, mis kasutasid mitmest kiibist koosnevat chiplet-arhitektuuri. Iga chiplet oli omaette NUMA sõlm, ühendatud Infinity Fabricu kaudu teistega.[14] See lähenemine võimaldas protsessorituumade arvu suurendada, säilitades samal ajal mälu ribalaiuse ja hoida latentsus kontrolli all. Intel vastas Xeon Scalable platvormiga, mis kasutas UPI (Ultra Path Interconnect) tehnoloogiat ja mitut mälukanalit sõlme kohta.[15]

ccNUMA ja vahemälu ühtsus

[muuda | muuda lähteteksti]

ccNUMA (cache-coherent NUMA) on NUMA arhitektuuri edasiarendus, mille keskne eesmärk on tagada vahemälu ühtsus kõigi protsessorite vahel sõltumata sellest, millises sõlmes andmed füüsiliselt asuvad. Kui klassikalises NUMA süsteemis võib iga sõlm hallata oma mälu sõltumatult, siis ccNUMA tagab, et kõik protsessorid näeksid ühtset ja järjekindlat mälupilti. See muudab ccNUMA-st sobiliku arhitektuuri üldotstarbelistele serveritele, andmebaasidele ja HPC rakendustele, kus programmide korrektsus sõltub mälupildist.[8]

Ühtsusprotokollid

[muuda | muuda lähteteksti]

ccNUMA toimimise keskmes on ühtsusprotokollid, mis tagavad, et protsessorite vahemälud ei sisalda üksteisega vastuolus olevaid andmeid. Kõige levinumad protokollid on MESIF (Modified, Exclusive, Shared, Invalid, Forward), mis on kasutusel Intel Xeon platvormidel ning MOESI (Modified, Owned, Exclusive, Shared, Invalid), mis on kasutusel AMD serveriprotsessorites. Need protokollid määravad, millal andmeid uuendatakse ja millal need tuleb teistele sõlmedele edastada.[2] Ühtsusprotokollid peavad töötama üle interconnect-võrgu, mis muudab ccNUMA oluliselt keerukamaks, kui UMA süsteemid, kus kõik vahemälud kuulavad ühte ühist siini.

Andmete edastamiseks ccNUMA süsteemides on kaks põhilist lähenemist: siini pealtkuulamist (ingl k bus snooping) ning kataloogipõhist ühtsust (ingl k directory-based coherence). Siini pealtkuulamise puhul jälgib iga vahemälu siini peal toimuvaid operatsioone ning uuendab enda sisu vastavalt. Selline lähenemine sobib väiksematele süsteemidele, kus sõlmede ja ühenduste arv on väike. Suuremate süsteemide puhul läheks pealtkuulamise jaoks vajalike ühenduste tegemine liiga kalliks ja latentsus suureneks.

Kataloogiipõhise ühtsuse puhul on iga sõlme juures eraldi kataloog, kus iga mälulehekülje või vahemälu rea kohta hoitakse kirjet, mis näitab, millistes vahemäludes andmed asuvad. Selline lähenemine vähendab suhtlusvõrgu koormust, kuna sõlmed suhtlevad ainult siis, kui see on vajalik. Selline lähenemine on suurtele süsteemidele kõige sobivaim ja on ühtlasi ka tänapäeva ccNUMA standard.[8]

ccNUMA sõlmede ülesehitus

[muuda | muuda lähteteksti]

ccNUMA sõlm sisaldab protsessorituuma(sid), mitmetasandilist vahemälu, mälukontrollerid, interconnect-liideseid ja ühtsuskontrollerit. Ühtsuskontroller on ccNUMA eripära, see haldab vahemäludevahelist suhtlust ja tagab, et andmete olekud oleksid kooskõlas. Mõnes süsteemis, näiteks Intel Xeon, on see integreeeritud vahemällu[16], teistes, näiteks AMD EPYC, on see osa interconnect loogikast.[17]

Mälu järjepidevus

[muuda | muuda lähteteksti]

Lisaks ühtsusele peab ccNUMA tagama mälu järjepidevuse, seda tehakse reeglitega, mis määravad, millises järjekorras protsessorid mälukirjeid näevad. Levinuimad mudelid on TSO (Total Store Order), RC (Relaxed Consistency) ja SC (Sequential Consistency). Kuivõrd TSO ja RC on kasutuses levinud (Intel kasutab TSO-d ning ARM ja POWER põhised serverid RC-d), siis SC näol on tegemist teoreetilise ideaaliga, mida täies mahus rakendada on raske.[8]

Eelised ja puudused

[muuda | muuda lähteteksti]

ccNUMA eelisteks on ühtse mäluruumi olemasolu, mis lihtsustab programmeerimist; skaleeritavust, mis muudab selle sobivaks suurtele serveritele ja HPC süsteemidele ning tõhus vahemälu kasutus, mis vähendab kaugmälu kasutamise vajadust. Puudusteks on ühtsusprotokollide keerukus, mis on suur riist- ja tarkvaraline lisakulu ning koormus interconnect-süsteemile, sest ühtsussõnumid võivad teatud hetkedel hõivata suure osa liiklusest.[8]

  1. 1 2 "What is non-uniform memory access (NUMA)?". WhatIs (inglise). Vaadatud 2. mail 2026.
  2. 1 2 3 4 Hennessy, John L.; Patterson, David A. (2019). Computer Architecture: A Quantitative Approach (inglise) (Kuues trükk). Morgan Kaufmann. ISBN 978-0-12-811905-1.
  3. 1 2 "What is NUMA? — The Linux Kernel documentation". static.lwn.net. Vaadatud 2. mail 2026.
  4. 1 2 3 "NUMA - HPC Wiki". hpc-wiki.info. Vaadatud 2. mail 2026.
  5. Stallings, William (2019). Computer Organization and Architecture (PDF) (inglise) (Üheteistkümnes trükk). Pearson.
  6. 1 2 "AMD Opteron™ Processor Product Data Sheet" (PDF). Märts 2007. Vaadatud 2. mail 2026.
  7. "The Cray T3E Network: Adaptive Routing in a High Performance 3D Torus". www.semanticscholar.org. Vaadatud 2. mail 2026.
  8. 1 2 3 4 5 Nagarajan, Vijay; Sorin, Daniel J.; Hill, Mark D.; Wood, David A. (2020). "A Primer on Memory Consistency and Cache Coherence". Synthesis Lectures on Computer Architecture. DOI:10.1007/978-3-031-01764-3. ISSN 1935-3235.
  9. "The BBN Butterfly". homepages.inf.ed.ac.uk. Vaadatud 2. mail 2026.
  10. Enterprise, I. D. G. (16. september 1985). Computerworld (inglise). IDG Enterprise.
  11. "sgistuff.net : Hardware : Systems : Origin 2000 / Onyx 2". www.sgistuff.net. Vaadatud 2. mail 2026.
  12. Gupta, David Culler, Jaswinder Pal Singh, Anoop. Parallel Computer Architecture (inglise). ISBN 978-0-08-057307-6.
  13. "First the Tick, Now the Tock: Next Generation Intel Microarchitecture (Nehalem)" (PDF). Märts 2008. Vaadatud 2. mail 2026.
  14. "Engineering:Epyc". HandWiki (inglise). Vaadatud 2. mail 2026.
  15. "Intel Unveils Powerful Intel Xeon Scalable Processors, Bringing Next-Generation Business and Consumer Experiences to Life | Intel Newsroom". Intel Newsroom (Ameerika inglise). Vaadatud 2. mail 2026.
  16. "Intel® 64 and IA-32 Architectures Optimization Reference Manual Volume 1". Intel. Vaadatud 3. mail 2026.
  17. "AMD Technical Information Portal". docs.amd.com. Vaadatud 3. mail 2026.