NUMA (Non-Uniform Memory Access)
Non-Uniform Memory Access, NUMA, (im Deutschen: uneinheitlicher Speicherzugriff) ist eine Methode zur Konfiguration eines Clusters von Mikroprozessoren in einem Multiprozessorsystem, damit sie sich den Memory-Speicher lokal teilen können. Die Idee dahinter ist, die Leistung des Systems zu verbessern und es zu ermöglichen, es zu erweitern, wenn der Verarbeitungsbedarf ansteigt.
In einer NUMA-Konfiguration teilen sich die einzelnen Prozessoren in einem Computersystem das lokale Memory und können zusammenarbeiten. Die Daten können reibungslos und schnell fließen, da sie über einen Zwischenspeicher und nicht über einen Hauptbus geleitet werden.
NUMA kann man sich als ein Mikroprozessor-Cluster in einem Gehäuse vorstellen. Das Cluster besteht in der Regel aus vier Mikroprozessoren, die über einen lokalen Bus mit einem gemeinsamen Memory auf einer einzigen Hauptplatine verbunden sind. Der Bus kann PCI sein, das gemeinsame Memory wird als L3-Cache bezeichnet und die Hauptplatinewird oft als Karte bezeichnet.
Diese Einheit kann zu ähnlichen Einheiten hinzugefügt werden, um ein symmetrisches Multiprozessorsystem (SMP) zu bilden, das 16 bis 256 Mikroprozessoren enthalten kann, wobei ein gemeinsamer SMP-Bus die Cluster miteinander verbindet. In einem SMP-System erscheinen einem Anwendungsprogramm alle einzelnen Prozessorspeicher wie ein einziges Memory.
Wie NUMA funktioniert
Wenn ein Prozessor nach Daten an einer bestimmten Memory-Adresse sucht, schaut er zunächst im L1-Cache des Mikroprozessors nach. Dann geht er zum größeren L2-Cache-Chip und schließlich zu einer dritten Cache-Ebene (L3). Die NUMA-Konfiguration bietet diese dritte Ebene. Wenn der Prozessor die Daten immer noch nicht finden kann, sucht er im entfernten Memory in der Nähe der anderen Mikroprozessoren.
Jeder dieser Cluster wird von NUMA als ein Knoten im Verbindungsnetz betrachtet. NUMA verwaltet eine hierarchische Ansicht der Daten auf allen Knoten. Die Daten werden auf dem Bus zwischen den Clustern über eine skalierbare, kohärente Schnittstelle verschoben. SCI koordiniert die Cache-Kohärenz (Konsistenz) zwischen den Knoten der verschiedenen Cluster in der NUMA-Architektur.
NUMA und symmetrisches Multiprocessing
NUMA wird in der Regel in einem symmetrischen Multiprozessorsystem verwendet. Ein SMP-System ist ein eng gekoppeltes System, in dem mehrere Prozessoren unter einem einzigen Betriebssystem arbeiten und über einen gemeinsamen Bus oder Verbindungspfad auf den Arbeitsspeicher des jeweils anderen zugreifen. Diese Mikroprozessoren arbeiten auf einer einzigen Hauptplatine, die über einen Bus verbunden ist.
Eine Einschränkung von SMP besteht darin, dass der gemeinsam genutzte Bus oder Datenpfad überlastet wird, wenn weitere Mikroprozessoren hinzugefügt werden, was zu einem Leistungsengpass führt. NUMA fügt eine Zwischenebene des Memory hinzu, die von einigen wenigen Mikroprozessoren gemeinsam genutzt wird, so dass nicht alle Daten, auf die zugegriffen wird, über den Hauptbus laufen müssen. Dies trägt zur Behebung von Leistungsengpässen bei.
SMP- und NUMA-Systeme werden in der Regel in Data-Mining-Anwendungen und Entscheidungsunterstützungssystemen (Decision Support System) eingesetzt. Bei dieser Art von Anwendungen kann die Verarbeitung auf mehrere Prozessoren verteilt werden, die gemeinsam an einer Datenbank arbeiten.
NUMA-Knoten-Architektur
Die NUMA-Architektur ist bei Multiprozessorsystemen üblich. Diese Systeme umfassen mehrere Hardwareressourcen wie Memory, Eingabe-/Ausgabegeräte, Chipsätze, Netzwerkgeräte und Speicher (zusätzlich zu den Prozessoren). Jede Ansammlung von Ressourcen ist ein Knoten. Mehrere Knoten sind über eine Hochgeschwindigkeits-Verbindung oder einen Bus miteinander verbunden.
Jedes NUMA-System enthält einen kohärenten globalen Memory- und I/O-Adressraum, auf den alle Prozessoren im System zugreifen können. Die anderen Komponenten können variieren, aber mindestens ein Knoten muss über Memory, einer über I/O-Ressourcen und einer über Prozessoren verfügen.
Bei dieser Art von Speicherarchitektur wird einem Prozessor ein bestimmtes lokales Memory zur eigenen Verwendung zugewiesen, der in der Nähe des Prozessors angeordnet ist. Die Signalwege sind kürzer, weshalb diese Prozessoren schneller auf das lokale Memory zugreifen können als auf den nichtlokalen Speicher. Da der nichtlokale Speicher nicht gemeinsam genutzt wird, verringern sich auch die Verzögerungen (Latenz) bei mehreren Zugriffsanfragen auf denselben Speicherplatz erheblich.
Vor- und Nachteile von NUMA
Einer der größten Vorteile von NUMA ist die schnelle Bewegung von Daten und die geringere Latenzzeit im Multiprozessorsystem. Außerdem reduziert NUMA die Datenreplikation und vereinfacht die Programmierung. Darüber hinaus sind die Parallelrechner in einer NUMA-Architektur hochgradig skalierbar und reagieren auf die Datenzuweisung im lokalen Memory.
Ein Nachteil von NUMA ist, dass es teuer sein kann. Und das Fehlen von Programmierstandards für größere Konfigurationen kann die Implementierung schwierig machen.
Unterschied zwischen NUMA und UMA
Es gibt drei Shared-Memory-Modelle in Multiprozessorsystemen.
- Uniform Access Memory (UMA)
- Non-Uniform Access Memory (NUMA)
- Cache-only Memory Access/Architektur (COMA)
Wie UMA und NUMA ist auch COMA ein Modell mit gemeinsamem Memory-Zugriff, das in Multiprozessoren verwendet wird. In einer COMA-Maschine sind mehrere Verarbeitungsknoten über ein Verbindungsnetz miteinander verbunden. Jeder Knoten enthält einen Prozessor und einen Cache und wird als Teil des globalen gemeinsamen Memory zugewiesen. Das lokale Memory (in der Regel DRAM) an jedem Knoten wird als Cache verwendet. Diese Eigenschaft unterscheidet COMA von NUMA, bei dem das lokale Memory als Hauptspeicher verwendet wird.
COMA ermöglicht im Allgemeinen eine effizientere Nutzung der Speicherressourcen. Der Nachteil ist, dass es auch schwieriger ist, ein bestimmtes Stück Daten zu finden, da es bei COMA keinen Heimatknoten gibt (im Gegensatz zu NUMA). Außerdem kann es schwierig sein, Probleme mit Speicherknappheit zu lösen, wenn das lokale Memory voll ist.