Niejednolity dostęp do pamięci
Niejednolity dostęp do pamięci (NUMA, od ang. Non-Uniform Memory Access) – architektura organizacji pamięci stosowana w architekturze komputerowej przeznaczonej do przetwarzania współbieżnego[1]. W systemach NUMA czas dostępu do pamięci zależy od fizycznego położenia pamięci względem procesora – każdy procesor posiada własną, lokalną pulę pamięci, do której dostęp jest szybszy niż do pamięci bardziej oddalonej.
Celem zastosowania architektury NUMA jest zwiększenie wydajności operacji pamięciowych poprzez przypisanie lokalnych zasobów pamięciowych poszczególnym procesorom[2].
Non-Uniform Memory Access – architektura z niejednolitym dostępem do pamięci
edytujNon-Uniform Memory Access (NUMA, również: Non-Uniform Memory Architecture) – architektura organizacji pamięci stosowana w systemach wieloprocesorowych, w której czas dostępu do pamięci zależy od fizycznego położenia pamięci względem procesora. W architekturze NUMA procesor uzyskuje szybszy dostęp do swojej pamięci lokalnej niż do pamięci obsługiwanej przez inne procesory lub do pamięci współdzielonej.
Pod względem logicznym NUMA wywodzi się z architektury symetrycznych systemów wieloprocesorowych (SMP). Komercyjny rozwój architektury NUMA nastąpił w latach 90. XX wieku dzięki takim przedsiębiorstwom jak Burroughs (później Unisys), Convex Computer (później część Hewlett-Packard), Silicon Graphics, Sequent Computer Systems , Data General oraz Digital.
Rozwiązania opracowane przez te firmy znalazły zastosowanie w różnych systemach operacyjnych typu Unix, a częściowo również w systemach Windows NT.
Koncepcja
edytujArchitektura NUMA zakłada, że każdy procesor posiada przypisaną własną pulę pamięci operacyjnej – fizycznie pamięć systemu jest więc podzielona. Komputery oparte na tej architekturze wyposażone są zazwyczaj w co najmniej dwa procesory, z których każdy kontroluje określony fragment pamięci.
Charakterystyczną cechą systemów NUMA jest niejednolity czas dostępu do pamięci. Procesor uzyskuje szybszy dostęp do swojej lokalnej pamięci niż do pamięci obsługiwanej przez inne procesory. W efekcie czas dostępu do danych zależy od fizycznego położenia pamięci względem procesora.
Cache-Coherent NUMA (ccNUMA) – architektura NUMA ze spójną pamięcią podręczną
edytujWiększość współczesnych architektur procesorów wykorzystuje niewielkie, bardzo szybkie i niewspółdzielone pamięci podręczne (cache), umożliwiające rdzeniom procesorów znacznie krótszy czas dostępu do danych. W systemach NUMA utrzymanie spójności danych przechowywanych w pamięciach podręcznych wiąże się jednak z istotnymi wyzwaniami technicznymi i dodatkowymi obciążeniami.
Nawet prostsze systemy NUMA pozbawione mechanizmów spójności pamięci podręcznej (tzw. non-cache-coherent NUMA) okazały się trudne do programowania w klasycznym modelu architektury von Neumanna. W rezultacie wszystkie komputery NUMA dostępne na rynku wykorzystują specjalne mechanizmy sprzętowe, zapewniające spójność pamięci cache – takie systemy określane są jako cache-coherent NUMA (ccNUMA).
W sytuacji, gdy więcej niż jedna pamięć podręczna odwzorowuje ten sam obszar pamięci współdzielonej, spójność danych jest zazwyczaj utrzymywana dzięki komunikacji między kontrolerami pamięci podręcznej w procesorach. Rozwiązanie to wiąże się jednak ze spadkiem wydajności, szczególnie gdy wiele procesorów próbuje uzyskać dostęp do tego samego obszaru pamięci w krótkim czasie.
Systemy operacyjne wspierające NUMA minimalizują liczbę nieefektywnych dostępów do zdalnej pamięci poprzez optymalny przydział procesorów i pamięci. Polega to m.in. na przypisywaniu wątków do procesorów znajdujących się w tym samym węźle NUMA, w którym znajduje się wykorzystywana pamięć, a także stosowaniu odpowiednich algorytmów szeregowania i blokowania.
Alternatywnie, ograniczenie komunikacji koniecznej do zachowania spójności umożliwiają protokoły spójności cache, takie jak protokół MESIF. SCI to standard opracowany przez IEEE, który definiuje metody zarządzania spójnością pamięci podręcznej w systemach wieloprocesorowych. W przeciwieństwie do wcześniejszych rozwiązań o ograniczonej skalowalności, SCI wykorzystuje mechanizm katalogowy (directory-based), umożliwiający bardziej efektywną komunikację między procesorami. Technologia ta została zastosowana m.in. w rozwiązaniu NumaConnect, usprawniającym funkcjonowanie systemów NUMA.
Współczesne systemy ccNUMA mogą być realizowane bez dodatkowej zewnętrznej logiki, dzięki odpowiednim chipsetom wspierającym NUMA. Przykładami takich rozwiązań są:
- SGI Shub (Super Hub),
- Intel E8870,
- HP sx2000 (stosowany w serwerach Integrity i Superdome),
- systemy NEC oparte na procesorach Itanium.
Wcześniejsze rozwiązania ccNUMA opierały się m.in. na procesorach MIPS (systemy Silicon Graphics) oraz Alpha 21364 (EV7).
W 2007 roku Intel zapowiedział wprowadzenie wsparcia dla NUMA w swoich serwerowych architekturach x86 oraz Itanium, począwszy od procesorów Nehalem i Tukwila. W obu tych rodzinach procesorów komunikacja między układami realizowana jest za pomocą QuickPath Interconnect (QPI).
NUMA a przetwarzanie klastrowe
edytujArchitektura NUMA jest czasem porównywana do ściśle powiązanej formy klastrów komputerowych. Wdrożenie NUMA jest możliwe również w środowiskach pozbawionych dedykowanego wsparcia sprzętowego, poprzez zastosowanie stronicowanej pamięci wirtualnej w architekturze klastra.
W przypadku NUMA realizowanej programowo (np. w rozwiązaniach typu virtual symmetric multiprocessing, vSMP), opóźnienia w transmisji danych między węzłami są jednak znacznie większe niż w systemach wykorzystujących sprzętowe wsparcie dla NUMA.
Zobacz też
edytujPrzypisy
edytuj- ↑ Obsługa NUMA i Hyperthreading [online], students.mimuw.edu.pl [dostęp 2024-12-13] .
- ↑ Non-Uniform Memory Access from FOLDOC [online], foldoc.org [dostęp 2024-12-13] .
Bibliografia
edytuj- Przetłumaczone z Free On-line Dictionary of Computing
- TechTarget (2024-11-16)
Linki zewnętrzne
edytuj- NUMA FAQ
- Page-based distributed shared memory. cs.gmu.edu. [zarchiwizowane z tego adresu (2015-02-01)].
- OpenSolaris NUMA Project. opensolaris.org. [zarchiwizowane z tego adresu (2009-10-24)].
- Introduction video for the Alpha EV7 system architecture. h18002.www1.hp.com. [zarchiwizowane z tego adresu (2004-06-06)].
- NUMA optimization in Windows Applications. developer.amd.com. [zarchiwizowane z tego adresu (2012-06-19)].
- NUMA Support in Linux at SGI. oss.sgi.com. [zarchiwizowane z tego adresu (2011-01-28)].
- Intel Tukwila. realworldtech.com. [zarchiwizowane z tego adresu (2012-05-10)].
- The Common System Interface: Intel’s Future Interconnect. realworldtech.com. [dostęp 2024-01-28].
- current Itanium NUMA systems