Non-Uniform Memory Access
Non-Uniform Memory Access (též Non-Uniform Memory Architecture, NUMA) je v informatice specifická počítačová platforma, která dosahuje škálovatelnosti tak, že seskupuje procesory a operační paměť do jednotek (neboli uzlů), které pak mohou samostatně fungovat téměř jako jeden počítač. Každý uzel má vlastní procesory, paměť a sběrnice. Jednotlivé uzly jsou též vzájemně propojeny a v případě potřeby mohou přistupovat k paměti jiného uzlu.
Architektura NUMA vychází z architektury SMP (Symmetric multiprocessing, použití více než jednoho procesoru na jedné základní desce). K jejímu komerčnímu rozvoji došlo v roce 1990 ve spolupráci firem Burroughs (později Unisys), Convex Computer (později Hewlett-Packard), Silicon Graphics, Sequent Computer Systems, Data General a Digital. Techniky, které byly vyvinuty těmito společnostmi, byly využity v unixových operačních systémech a také ve Windows NT.
Základní představa architektury
Moderní procesory pracují podstatně rychleji než hlavní paměť, na kterou jsou připojeny. V počátcích vysokorychlostní výpočetní techniky a superpočítačů, byl běh CPU obecně pomalejší než jejich paměť, ke zlomu však došlo v roce 1970. Od té doby procesory postrádají data, jeikož musejí čekat dokud nebude dokončen přístup do paměti. Mnoho superpočítačů navržených mezi léty 1980 a 1990 byly zaměřeny na poskytování vysoce-rychlostního přístupu do paměti na úkor rychlosti procesorů, což jim umožňovalo pracovat na velkých datových souborech, do kterých rychlejší systémy nemohli přistupovat.
Omezení počtu přístupů do paměti za předpokladu použití klíče ubírá výkon dnešních moderních počítačů. Pro běžné procesory to znamená nárůst množství vysokorychlostních vyrovnávacích pamětí a potřebu používat více sofistikovanější algoritmy, aby se zabránilo "cache misses" (to znamená, že data nebyla nalezena v paměti cache). Dramatický nárůst velikosti operačních systémů a aplikací na nich provozovaných v zásadě přemohl cache - zlepšení zpracování. U multiprocesorů vzniká podstatně horší problém. A to takový, že systém nyní může hladovět několik procesorů najednou, a to zejména proto, že pouze jeden procesor může přistupovat k paměti.
NUMA se snaží řešit tento problém tím, že má oddělenou pamět pro každý procesor. Tím by se mělo zabránit snížení výkonu, když se několik procesorů snaží adresovat stejnou pamět.
Samozřejmě ne všechny akce jsou omezeny na jediný úkol, což znamená, že více než jeden procesor, může požadovat stejná data. Pro tyto případy NUMA systémy zahrnují další hardware nebo software k přesunu dat mezi bankami. Tato operace má bohužel za následek zpomalení procesorů, které jsou k daným bankám připojeny. Z toho vyplývá, že celkové navýšení rychlosti díky NUMA je ve velké míře závislé na přesné povaze úkolů běžících na systému v dané době.
- Výhody: vysoká propustnost sběrnice, velká škálovatelnost.
- Nevýhody: složitější a dražší než základní SMP, velká latence ze vzdálených uzlů, vyšší režie.
Bez cache koherence je velmi problematické použití, a proto se dnes používá cache-coherent NUMA (ccNUMA), kdy řadiče cache mezi sebou zajišťují koherenci. Ke zpomalení dochází zejména v situacích kdy na stejné místo přistupuje více procesorů rychle za sebou.
Cache koherentní NUMA (ccNUMA)
Téměř všechny architektury dnešních procesorů používají malé množství nesdílené paměti, která je známa jako cache a slouží pro využití lokalizování referencí v přístupu do paměti. S NUMA je udržování cache coherency (odkazování na konzistenci dat uložených v lokální cache se sdílenými prostředky) přes sdílenou paměť značně náročné.
Ačkoliv je jednoduší návrh a vytvoření, systémy které nejsou ccNUMA (jen NUMA) se staly značně složité pro programy koncipované ve standardní Von Neumanově architektuře. Pro všechny NUMA počítače na dnešním trhu se používá speciálně navržený hardware pro udržování cache coherence a proto tedy název „cache-coherent“ NUMA neboli ccNUMA.
Typicky ccNUMA probíhá pomocí inter-procesorové komunikace mezi řadičemi cache pro udržení pevného obrazu paměti, v případě, chce-li více než jedna cache ukládat informace do stejného paměťového prostoru. Z tohoto důvodu ccNUMA nepracuje správně, pokud chce více procesorů přistoupit na stejné paměťové místo a to v příliš rychlém sledu. Operační systémy podporují pro NUMA redukci četnosti tohoto přístupu pomocí přidělování (alokace) procesorů a paměti s přihlédnutím na šetrnost k NUMA. Dále mají schopnost se vyhnout plánování a zajištění nešetrných NUMA algoritmů. Alternativně využívají protokoly pro cache coherency jako je MESIF protokol, který se snaží snížit komunikaci potřebnou k udržení koherence cache.
Současné ccNUMA systémy jsou multiprocesorové systémy založené na AMD Opteron (ty mohou být provedeny bez vnější logiky) a Intel Itanium, který vyžaduje speciální chipset s podporu NUMA. Příkladem chipsetů umožňujích ccNUMA jsou SGI Shub, Intel E8870, HP sx2000 (používané v Integrity Superdome a serverech) a další (založené na systému NEC Itanium). Dřívější ccNUMA systémy, například od Silicon Graphics byly založeny naMIPS procesorech a DEC Alpha 21364 (EV7) procesorech.
Související články
Externí odkazy
- NUMA FAQ
- Page-based distributed shared memory
- OpenSolaris NUMA Project
- Introduction video for the Alpha EV7 system architecture
- More videos related to EV7 systems: CPU, IO, etc
- NUMA optimization in Windows Applications
- NUMA Support in Linux at SGI
- Intel Tukwila
- Intel QPI (CSI) explained
- current Itanium NUMA systems