Zum Inhalt springen

Non-Uniform Memory Access

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 1. Mai 2011 um 13:07 Uhr durch WikitanvirBot (Diskussion | Beiträge) (r2.7.1) (Bot: Ergänze: mk:Non-Uniform Memory Access). Sie kann sich erheblich von der aktuellen Version unterscheiden.

Non-Uniform Memory Architecture oder kurz NUMA ist eine Computer-Speicher-Architektur für Multiprozessorsysteme, bei denen jeder Prozessor eigenen, lokalen Speicher hat, aber anderen Prozessoren über einen gemeinsamen Adressraum direkten Zugriff darauf gewährt (Distributed Shared Memory). Die Speicherzugriffszeiten in einem solchen Verbund hängen daher davon ab, ob sich eine Speicheradresse im lokalen oder im fremden Speicher befindet.

Im Gegensatz dazu stehen

NUMA-Architekturen sind der nächste Schritt zur Erhöhung der Skalierbarkeit der SMP-Architekturen.

Cache coherent NUMA (ccNUMA)

Fast alle Rechnerarchitekturen benutzen eine kleine Menge sehr schnellen Speichers, der als Cache bezeichnet wird, um bei Speicherzugriffen Lokalitätseigenschaften auszunutzen. Bei Verwendung von NUMA sorgt das Beibehalten der Cache-Kohärenz über den verteilten Speicher für zusätzlichen Overhead. Als Beispiel stelle man sich vor, dass sich ein Prozessor Daten aus dem Speicher eines anderen Prozessors holt, damit Berechnungen anstellt und die Ergebnisse in seinen lokalen Cache schreibt. Der Cache des Prozessors, von dem die Daten stammen (und vielleicht auch noch weitere Caches im System) müssen dann synchronisiert werden.

Nicht Cache-kohärente NUMA-Systeme sind zwar einfacher zu entwickeln und zu bauen, aber mit dem Standard-Programmiermodell von Neumanns nur schwer programmierbar. Daher besitzen alle derzeit im Einsatz befindlichen NUMA-Systeme spezielle Hardware, um die Cache-Kohärenz sicherzustellen, und werden deshalb auch als cache-coherent NUMA (ccNUMA) bezeichnet.

Dies wird meistens durch Inter-Prozessor-Kommunikation zwischen den Cache-Controllern erreicht, die so für konsistente Speicherinhalte sorgen, falls die gleiche Speicherstelle in mehr als einem Cache gespeichert ist. ccNUMA leidet unter schlechter Performance, wenn mehrere Prozessoren schnell nacheinander auf dieselbe Speicherstelle zugreifen wollen. Daher versucht ein Betriebssystem mit NUMA-Unterstützung die Häufigkeit solcher Zugriffe zu minimieren, indem Prozessoren und Speicher auf NUMA-freundliche Art und Weise alloziert werden.

Aktuelle Implementationen von ccNUMA-Systemen sind beispielsweise AMD-Mehrprozessorsysteme auf Opteron-Basis und SGI-Systeme mit NUMAlink. Frühere ccNUMA-Systeme basierten auf dem Alpha-Prozessor EV7 der Digital Equipment Corporation (DEC) oder den MIPS R1x000 Prozessoren wie etwa in der SGI Origin Serie.

NUMA vs. Cluster-Computing

NUMA kann als sehr eng gekoppelte Form des Cluster-Computings gesehen werden. Das Hinzufügen des Pagings für virtuellen Speicher zu einer Cluster-Architektur macht es möglich, NUMA in Software zu implementieren, wo keine NUMA-Hardware existiert. Die Latenzzeiten des softwarebasierten NUMA sind jedoch um ein vielfaches größer als mit Hardware-NUMA.


Der Original-Artikel aus der englischen Wikipedia enthält Material von FOLDOC, das hier und in der engl. Wikipedia unter einer Public-Domain-Lizenz verwendet wird.