Non-Uniform Memory Access
Non-Uniform Memory Access nebo také Non-Uniform Memory Architecture (NUMA) je paměť počítače navržena pro použití s multiprocesory, kde čas přístupu do paměti je závislý na umístění paměti vzhledem k procesoru. S NUMA může procesor přístupovat k jeho lokální paměť rychleji než do paměti nelokální (lokální pamět jiného procesoru, nebo sdílená paměť mezi procesory).
Architektura NUMA následovala a zároveň vycházela z architektury SMP - Symmetric multiprocessing (použití více než jednoho procesoru na jedné základní desce). K jejímu komerčnímu vývoji došlo v roce 1990 a to ve spolupráci firem Burroughs (later Unisys), Convex Computer (later Hewlett-Packard), Silicon Graphics, Sequent Computer Systems, Data General and Digital. Techniky, které byly vyvinuty těmito společnostmi, byly později použ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čů, běželi CPU obecně pomaleji než jejich paměť. Ke zlomu však došlo v roce 1970, kdy museli CPU čekat na data až do doby, než došlo k dokončení přístupu 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žnilo 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árust množství vysokorychlostních vyrovnávacích pamětí a potřebu používat více sofistikovanějších algoritmů, 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 vzásadě přemohl cache - zlepšení zpracování. U multiprocesorů vzniká problém podstatně horší. Nyní systém může hladovět několik procesorů najednou, a to zejména proto, že pouze jeden procesor může přístupovat 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ě.