Najlepsze pytania
Chronologia
Czat
Perspektywa
Niejednolity dostęp do pamięci
Z Wikipedii, wolnej encyklopedii
Remove ads
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].
Remove ads
Non-Uniform Memory Access – architektura z niejednolitym dostępem do pamięci
Non-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.
Remove ads
Koncepcja
Architektura 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.
Remove ads
Cache-Coherent NUMA (ccNUMA) – architektura NUMA ze spójną pamięcią podręczną
Podsumowanie
Perspektywa
Wię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).
Remove ads
NUMA a przetwarzanie klastrowe
Architektura 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.
Remove ads
Zobacz też
Przypisy
Bibliografia
Linki zewnętrzne
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads