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(inne języki), Data General(inne języki) 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
Osobny artykuł: CCNUMA.

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

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads