Epäyhtenäinen pääsy muistiin - Non-uniform memory access
Epäyhtenäinen muistikäyttö ( NUMA ) on tietokoneprosessori, jota käytetään moniprosessoinnissa , jossa muistin käyttöaika riippuu muistin sijainnista suhteessa prosessoriin. NUMA-kohdassa prosessori voi käyttää omaa paikallista muistiaan nopeammin kuin ei-paikallinen muisti (muistia, joka on paikallinen toiselle prosessorille tai muisti, joka on jaettu suorittimien kesken). NUMA: n edut rajoittuvat tiettyihin työtaakkoihin, erityisesti palvelimilla, joilla tiedot liittyvät usein vahvasti tiettyihin tehtäviin tai käyttäjiin.
NUMA -arkkitehtuurit noudattavat loogisesti symmetrisen moniprosessointi (SMP) -arkkitehtuurin skaalausta . Ne kehitettiin kaupallisesti 1990-luvulla Unisys , Convex Computer (myöhemmin Hewlett-Packard ), Honeywell Information Systems Italy (HISI) (myöhemmin Groupe Bull ), Silicon Graphics (myöhemmin Silicon Graphics International ), Sequent Computer Systems (myöhemmin IBM ), Data General (myöhemmin EMC ) ja Digital (myöhemmin Compaq , sitten HP , nyt HPE ). Näiden yritysten kehittämiä tekniikoita esiteltiin myöhemmin useissa Unix-tyyppisissä käyttöjärjestelmissä ja jossain määrin Windows NT: ssä .
Ensimmäinen NUMA-pohjaisen Unix-järjestelmän kaupallinen toteutus oli Symmetric Multi Processing XPS-100 -palvelinperhe, jonka on suunnitellut Dan Gielan VAST Corporationista Honeywell Information Systems Italialle.
Yleiskatsaus
Nykyaikaiset suorittimet toimivat huomattavasti nopeammin kuin niiden käyttämä keskusmuisti. Tietojenkäsittelyn ja tietojenkäsittelyn alkuaikoina CPU suoritti yleensä hitaammin kuin oma muisti. Prosessorien ja muistin suorituskykylinjat risteivät 1960 -luvulla ensimmäisten supertietokoneiden myötä . Siitä lähtien keskusyksiköt ovat yhä useammin joutuneet "nälkäiseen tietoon" ja joutuneet pysähtymään odottaessaan tietojen saapumista muistista (esim. Von-Neumann-arkkitehtuuripohjaiset tietokoneet, katso Von Neumannin pullonkaula ). Monet 1980- ja 1990-lukujen supertietokoneiden mallit keskittyivät nopean muistin tarjoamiseen nopeampien prosessorien sijaan, jolloin tietokoneet voivat työskennellä suurilla tietojoukoilla nopeuksilla, joita muut järjestelmät eivät voineet lähestyä.
Muistikäyttöjen määrän rajoittaminen tarjosi avaimen korkean suorituskyvyn hyödyntämiseen nykyaikaisesta tietokoneesta. Hyödykeprosessoreille tämä tarkoitti yhä suuremman määrän nopean välimuistin asentamista ja yhä kehittyneempien algoritmien käyttöä välimuistin välttämiseksi . Mutta käyttöjärjestelmien ja niissä käytettävien sovellusten koon dramaattinen kasvu on yleensä hukannut nämä välimuistin käsittelyparannukset. Moniprosessorijärjestelmät ilman NUMA: ta pahentavat ongelmaa huomattavasti. Nyt järjestelmä voi nälkää useita suorittimia samanaikaisesti, erityisesti koska vain yksi prosessori voi käyttää tietokoneen muistia kerrallaan.
NUMA yrittää ratkaista tämän ongelman tarjoamalla erillisen muistin kullekin prosessorille välttäen suorituskykyosumaa, kun useat prosessorit yrittävät käsitellä samaa muistia. Hajautetun datan ongelmissa (yleinen palvelimille ja vastaaville sovelluksille) NUMA voi parantaa suorituskykyä yhdellä jaetulla muistilla noin prosessorien (tai erillisten muistipankkien) määrällä. Toinen lähestymistapa tämän ongelman ratkaisemiseen, jota käytetään pääasiassa ei-NUMA-järjestelmissä, on monikanavainen muistiarkkitehtuuri , jossa muistikanavien lukumäärän lineaarinen kasvu lisää muistin käyttöoikeutta samanaikaisesti.
Kaikki tiedot eivät tietenkään rajoitu yhteen tehtävään, mikä tarkoittaa, että useampi kuin yksi prosessori voi vaatia samoja tietoja. Näiden tapausten hoitamiseksi NUMA -järjestelmät sisältävät lisälaitteistoa tai -ohjelmistoa tietojen siirtämiseksi muistipankkien välillä. Tämä toiminto hidastaa kyseisiin pankkeihin kiinnitettyjä prosessoreita, joten NUMA: n aiheuttama yleinen nopeuden kasvu riippuu suuresti käynnissä olevien tehtävien luonteesta.
Toteutukset
AMD toteutti NUMA: n Opteron -prosessorillaan (2003) HyperTransportin avulla . Intel ilmoitti NUMA -yhteensopivuudesta x86- ja Itanium -palvelimilleen vuoden 2007 lopulla Nehalem- ja Tukwila -suorittimiensa kanssa. Molemmilla Intel -suoritinperheillä on yhteinen piirisarja ; liitäntää kutsutaan nimellä Intel Quick Path Interconnect (QPI).
Välimuistin johdonmukainen NUMA (ccNUMA)
Lähes kaikki suoritinarkkitehtuurit käyttävät pientä määrää erittäin nopeaa ei-jaettua muistia, joka tunnetaan välimuistina hyödyntääkseen muistipaikkojen viitekohdetta . NUMA: n avulla välimuistin johdonmukaisuuden ylläpitäminen jaetussa muistissa on merkittävä lisäkustannus. Vaikka välimuistista johdonmukaisista NUMA-järjestelmistä on yksinkertaisempaa suunnitella ja rakentaa, niistä tulee liian monimutkaisia ohjelmoida von Neumann -arkkitehtuurin vakio- ohjelmointimalliin.
Tyypillisesti ccNUMA käyttää prosessorien välistä viestintää välimuistiohjaimien välillä pitääkseen muistin yhtenäisenä, kun useampi kuin yksi välimuisti tallentaa saman muistipaikan. Tästä syystä ccNUMA voi toimia huonosti, kun useat prosessorit yrittävät käyttää samaa muistialuetta nopeasti peräkkäin. Tuki NUMA: lle käyttöjärjestelmissä yrittää vähentää tällaisen käytön taajuutta jakamalla prosessorit ja muistin NUMA-ystävällisillä tavoilla ja välttämällä ajoitus- ja lukitusalgoritmeja, jotka tekevät NUMA-sopimattomista käyttöoikeuksista välttämättömiä.
Vaihtoehtoisesti välimuistin yhtenäisyysprotokollat, kuten MESIF -protokolla, yrittävät vähentää välimuistin yhtenäisyyden ylläpitämiseen tarvittavaa tiedonsiirtoa. Scalable Coherent Interface (SCI) on IEEE- standardi, joka määrittää hakemistopohjaisen välimuistin yhtenäisyysprotokollan, jotta vältetään aiempien moniprosessorijärjestelmien skaalautuvuusrajoitukset. Esimerkiksi SCI: tä käytetään NumaConnect -tekniikan perustana.
NUMA vs. klusterilaskenta
NUMAa voidaan pitää tiiviisti kytkettävänä klusterilaskennan muotona . Lisäämällä virtuaalimuistin henkilöhaku klusterin arkkitehtuuri voidaan sallia täytäntöönpanoa NUMA kokonaan ohjelmiston. Ohjelmistopohjaisen NUMA: n solmujen välinen viive on kuitenkin useita suuruusluokkia suurempi (hitaampi) kuin laitteistopohjaisen NUMA: n.
Ohjelmistotuki
Koska NUMA vaikuttaa suurelta osin muistin käytön suorituskykyyn, tarvitaan tiettyjä ohjelmistojen optimointeja, jotta voidaan ajoittaa säikeet ja prosessit lähellä niiden muistitietoja.
- Microsoft Windows 7 ja Windows Server 2008 R2 lisäsivät tuen NUMA -arkkitehtuurille 64 loogisen ytimen yli.
- Java 7 lisäsi tuen NUMA-tietoiselle muistinvaraajalle ja roskienkerääjälle .
-
Linux -ydin :
- Versio 2.5 tarjosi perus -NUMA -tuen, jota parannettiin edelleen myöhemmissä ytimen julkaisuissa.
- Linux -ytimen versio 3.8 toi uuden NUMA -perustan, joka mahdollisti tehokkaampien NUMA -käytäntöjen kehittämisen myöhemmissä ytimen julkaisuissa.
- Linux -ytimen versio 3.13 toi lukuisia käytäntöjä, joiden tarkoituksena on saattaa prosessi lähelle sen muistia, ja käsitellä tapauksia, kuten muistisivujen jakaminen prosessien välillä tai läpinäkyvien valtavien sivujen käyttö ; uudet sysctl -asetukset mahdollistavat NUMA -tasapainotuksen ottamisen käyttöön tai poistamisen käytöstä sekä erilaisten NUMA -muistitasapainotusparametrien konfiguroinnin.
- OpenSolaris mallintaa NUMA -arkkitehtuuria lgroupsilla.
- FreeBSD lisäsi tuen NUMA -arkkitehtuurille versiossa 9.0.
- Silicon Graphics IRIX (lopetettu vuodesta 2021) tukee ccNUMA -arkkitehtuuria yli 1240 suorittimen ja Origin -palvelinsarjan kanssa.
Laitteiston tuki
Vuodesta 2011 lähtien ccNUMA -järjestelmät ovat moniprosessorijärjestelmiä, jotka perustuvat AMD Opteron -prosessoriin, joka voidaan toteuttaa ilman ulkoista logiikkaa, ja Intel Itanium -prosessoria , joka vaatii piirisarjan tukemaan NUMA: ta. Esimerkkejä ccNUMA-yhteensopivista piirisarjoista ovat SGI Shub (Super hub), Intel E8870, HP sx2000 (käytetään Integrity- ja Superdome-palvelimissa) ja NEC Itanium -pohjaisissa järjestelmissä. Aiemmat ccNUMA -järjestelmät, kuten Silicon Graphics, perustuivat MIPS -prosessoreihin ja DEC Alpha 21364 (EV7) -prosessoriin.
Katso myös
Viitteet
Ulkoiset linkit
- NUMA FAQ
- Sivupohjainen jaettu muisti
- OpenSolaris NUMA -projekti
- Esittelyvideo Alpha EV7 -järjestelmäarkkitehtuurista
- Lisää EV7 -järjestelmiin liittyviä videoita: suoritin, IO jne
- NUMA -optimointi Windows -sovelluksissa
- NUMA -tuki Linuxissa SGI: llä
- Intel Tukwila
- Intel QPI (CSI) selitetty
- nykyiset Itanium NUMA -järjestelmät