Ungleichmäßiger Speicherzugriff

Das Motherboard eines HP Z820 Workstation mit zwei CPU -Steckdosen mit jeweils einen eigenen Satz von acht DIMM Slots rund um die Steckdose.

Ungleichmäßiger Speicherzugriff (Numa) ist ein Computerspeicher Design verwendet in Multiprozessierung, wo die Speicherzugriffszeit vom Speicherort relativ zum Prozessor abhängt. Unter NUMA kann ein Prozessor auf seinen eigenen zugreifen Lokaler Speicher schneller als nicht-lokaler Gedächtnis (Speicher lokal an einen anderen Prozessor oder Speicher, der zwischen den Prozessoren geteilt wird). Die Vorteile der NUMA beschränken sich auf bestimmte Workloads, insbesondere auf Server, bei denen die Daten häufig stark mit bestimmten Aufgaben oder Benutzern verbunden sind.[1]

NUMA -Architekturen folgen logischerweise bei der Skalierung von Symmetrische Multiprozessierung (SMP) Architekturen. Sie wurden in den neunziger Jahren kommerziell entwickelt von Unisys, Konvexer Computer (später Hewlett Packard), Honeywell Informationssysteme Italien (HISI) (später Groupe Bull), Siliziumgrafik (später Silicon Graphics International), Sequente Computersysteme (später IBM), Daten allgemein (später EMC, jetzt Dell Technologies), und Digital (später Compaq, dann HP, jetzt HPE). Techniken, die von diesen Unternehmen später in einer Vielzahl von einer Vielzahl von vorgestellten Unternehmen entwickelt wurden Unix-artig Betriebssystemeund in gewissem Maße in Windows NT.

Die erste kommerzielle Implementierung eines NUMA-basierten UNIX-Systems war[wo?] Die symmetrische Multi-Verarbeitungs-XPS-100-Serverfamilie, die von Dan Gielan von Vast Corporation für entworfen wurde Honeywell Information Systems Italien.

Überblick

Eine mögliche Architektur eines NUMA -Systems. Die Prozessoren verbinden sich mit dem Bus oder der Kreuzungsleiste durch Anschlüsse mit unterschiedlicher Dicke/Anzahl. Dies zeigt, dass unterschiedliche CPUs aufgrund ihres relativen Standorts unterschiedliche Zugriffsprioritäten zum Speicher haben.

Moderne CPUs funktionieren erheblich schneller als der Hauptspeicher, den sie verwenden. In den frühen Tagen der Computer- und Datenverarbeitung lief die CPU im Allgemeinen langsamer als ihr eigener Speicher. Die Performance -Linien von Prozessoren und Speicher wurden in den 1960er Jahren mit dem Aufkommen des ersten überschritten Supercomputer. Seitdem hat sich CPUs zunehmend "ausgehungert" und mussten aufstehen, während sie darauf warten, dass Daten aus dem Speicher kommen (z. Von Neumann Engpass). Viele Supercomputerentwürfe der 1980er und 1990er Jahre konzentrierten sich auf die Bereitstellung von Hochgeschwindigkeitsspeicherzugriff im Gegensatz zu schnelleren Prozessoren, sodass die Computer mit großen Datensätzen mit Geschwindigkeiten arbeiten können, die sich anderen Systemen nicht nähern konnten.

Die Begrenzung der Anzahl der Speicherzugriffe lieferte den Schlüssel zum Extrahieren einer hohen Leistung von einem modernen Computer. Für Warenprozessoren bedeutete dies, eine immer größere Menge an Hochgeschwindigkeit zu installieren Cache-Speicher und mit zunehmend ausgefeilteren Algorithmen zur Vermeidung zu verwenden Cache Fehler. Die dramatische Größe der Betriebssysteme und der auf ihnen betriebenen Anwendungen hat diese Cache-Verarbeitungsverbesserungen im Allgemeinen überwältigt. Mehrprozessorsysteme ohne NUMA verschlechtern das Problem erheblich. Jetzt kann ein System mehrere Prozessoren gleichzeitig verhungern, insbesondere weil nur ein Prozessor gleichzeitig auf den Speicher des Computers zugreifen kann.[2]

NUMA versucht, dieses Problem zu beheben, indem sie für jeden Prozessor separate Speicher anbieten, und vermeidet die Leistung des Leistungsakts, wenn mehrere Prozessoren versuchen, denselben Speicher anzusprechen. Für Probleme mit Spread -Daten (häufig für Server und ähnliche Anwendungen) kann die NUMA die Leistung über einen einzelnen gemeinsamen Speicher um einen Faktor von ungefähr der Anzahl der Prozessoren (oder separaten Speicherbanken) verbessern.[3] Ein weiterer Ansatz zur Behandlung dieses Problems ist das Multi-Channel-Speicherarchitektur, bei dem eine lineare Zunahme der Anzahl der Speicherkanäle den Speicherzugriff entsprechend linear erhöht.[4]

Natürlich beschränken sich nicht alle Daten auf eine einzige Aufgabe, was bedeutet, dass mehr als ein Prozessor dieselben Daten benötigt. Um diese Fälle zu bewältigen, enthalten NUMA -Systeme zusätzliche Hardware oder Software, um Daten zwischen Speicherbanken zu verschieben. Dieser Betrieb verlangsamt die an diese Banken verbundenen Prozessoren, sodass die Gesamtgeschwindigkeitssteigerung aufgrund der NUMA stark von der Art der Laufaufgaben abhängt.[3]

Implementierungen

AMD implementierte NUMA mit seiner Opteron Prozessor (2003), verwendet Hypertransport. Intel kündigte die Kompatibilität der Numa für seinen x86 und Itanium Server Ende 2007 mit seinen Nehalem und Tukwila CPUs.[5] Beide Intel -CPU -Familien teilen eine gemeinsame Chipsatz; Die Zusammenfassung wird als Intel bezeichnet Schnellpfadverbindung (QPI), das eine extrem hohe Bandbreite bietet, um eine hohe Skalierbarkeit in Bord zu ermöglichen, und durch eine neue Version namens Intel ersetzt wurde Ultrapath -Verbindung mit der Veröffentlichung von Skylake (2017).[6]

Cache kohärente numa (ccnuma)

Topologie eines Ccnuma Bulldozer Server mit dem LStopo -Tool von HWLOC extrahiert.

Nahezu alle CPU-Architekturen verwenden eine kleine Menge sehr schneller, nicht stammender Speicher, bekannt als als Zwischenspeicher zu nutzen Referenzort in Speicherzugriffe. Mit numa, aufrechterhalten Cache -Kohärenz Über den gemeinsamen Gedächtnis verfügt über einen erheblichen Overhead. Obwohl es einfacher zu entwerfen und zu bauen, werden nicht kachelbekohige NUMA-Systeme unerschwinglich komplex, um im Standard zu programmieren Von Neumann Architektur Programmiermodell.[7]

In der Regel verwendet CCNUMA die Kommunikation zwischen den Prozessoren zwischen Cache-Controllern, um ein konsistentes Speicherbild beizubehalten, wenn mehr als ein Cache denselben Speicherort speichert. Aus diesem Grund kann CCNUMA eine schlechte Leistung erbringen, wenn mehrere Prozessoren in schneller Folge versuchen, auf denselben Speicherbereich zuzugreifen. Unterstützung für Numa in Betriebssysteme Versuche, die Häufigkeit dieser Art des Zugriffs zu verringern, indem Prozessoren und Speicher auf numa-freundliche Weise zugewiesen werden, und durch Vermeidung von Zeitplanungs- und Verriegelungsalgorithmen, die numa-unglückliche Zugriffe erforderlich machen.[8]

Alternativ alternativ Cache -Kohärenzprotokolle wie die Mesif -Protokoll Versuchen Sie, die Kommunikation zu verringern, die zur Aufrechterhaltung der Cache -Kohärenz erforderlich ist. Skalierbare kohärente Schnittstelle (Sci) ist ein IEEE Standard definiert ein Verzeichnis-basierter Cache-Kohärenzprotokoll, um die in früheren Multiprozessorsystemen gefundenen Skalierbarkeitsbeschränkungen zu vermeiden. Zum Beispiel wird SCI als Grundlage für die Numaconnect -Technologie verwendet.[9][10]

Numa vs. Cluster Computing

Man kann Numa als eng gekoppelte Form von betrachten Cluster Computing. Das Hinzufügen von virtueller Speicher Das Paging zu einer Clusterarchitektur kann die Implementierung von NUMA vollständig in Software ermöglichen. Die Latenz zwischen NUMA mit der Zwischenknoten von NUMA bleibt jedoch mehrere Größenordnungen größer (langsamer) als die von Hardware-basierten NUMA.[1]

Software-Unterstützung

Da NUMA weitgehend die Leistung des Speicherzugriffs beeinflusst, sind bestimmte Software-Optimierungen erforderlich, damit die Planung von Threads und Prozessen in der Nähe ihrer In-Memory-Daten geplant werden kann.

  • Microsoft Windows 7 und Windows Server 2008 R2 Unterstützung für NUMA -Architektur über 64 logische Kerne hinzugefügt.[11]
  • Java 7 Unterstützung für Numa-AWare-Speicher-Allocator hinzugefügt und hinzugefügt Müllsammler.[12]
  • Linux Kernel:
    • Version 2.5 bot eine grundlegende NUMA -Unterstützung,[13] Dies wurde in nachfolgenden Kernelfreisetzungen weiter verbessert.
    • Version 3.8 des Linux -Kernels brachte eine neue NUMA -Stiftung mit, die die Entwicklung effizienterer NUMA -Richtlinien in späteren Kernel -Releases ermöglichte.[14][15]
    • Version 3.13 des Linux -Kernels brachte zahlreiche Richtlinien mit, die darauf abzielen, einen Prozess in die Nähe seines Gedächtnisses zu bringen, zusammen mit dem Umgang mit Fällen wie Have Speicherseiten zwischen Prozessen oder der Verwendung von transparent geteilt riesige Seiten; Neu sysctl Die Einstellungen ermöglichen es, NUMA Balancing zu aktivieren oder deaktiviert zu sein, sowie die Konfiguration verschiedener NUMA -Speicherausgleichsparameter.[16][17][18]
  • OpenSolaris Models NUMA -Architektur mit LGroups.
  • Freebsd Unterstützung für die NUMA -Architektur in Version 9.0 hinzugefügt.[19]
  • Siliziumgrafik Irrix (Eingestellt ab 2021) Unterstützung für die CCNUMA -Architektur über 1240 CPU mit Originserverserie.

Hardwareunterstützung

Ab 2011 sind CCNUMA -Systeme Multiprozessorsysteme basierend auf der AMD Opteron Prozessor, der ohne externe Logik und Intel implementiert werden kann Itanium -Prozessor, was den Chipsatz erfordert, um NUMA zu unterstützen. Beispiele für ccnuma-fähige Chipsätze sind der SGI Shub (Super Hub), der Intel E8870, der HP SX2000 (verwendet in den Integritäts- und Superdome-Servern) und die in NEC Itanium-basierten Systemen. Frühere ccnuma -Systeme wie denen von Siliziumgrafik waren auf MIPS Prozessoren und die Dez Alpha 21364 (EV7) Prozessor.

Siehe auch

Verweise

  1. ^ a b Nakul Manchanda; Karan Anand (2010-05-04). "Ungleichmäßiger Speicherzugriff (NUMA)" (PDF). New Yorker Universität. Archiviert von das Original (PDF) Am 2013-12-28. Abgerufen 2014-01-27.
  2. ^ Sergey Blagodurov; Sergey Zhuravlev; Mohammad Dashti; Alexandra Fedorov (2011-05-02). "Ein Fall für das Numa-AWare-Streitmanagement für Multicore-Systeme" (PDF). Simon Fraser Universität. Abgerufen 2014-01-27.
  3. ^ a b Zoltan Majo; Thomas R. Gross (2011). "Speichersystemleistung in einem Numa Multicore -Multiprozessor" (PDF). ACM. Archiviert von das Original (PDF) Am 2013-06-12. Abgerufen 2014-01-27.
  4. ^ "Intel Dual-Channel DDR Memory Architecture White Paper" (PDF) (Rev. 1.0 ed.). Infineon Technologies Nordamerika und Kingston Technology. September 2003. archiviert von das Original (PDF, 1021KB) on 2011-09-29. Abgerufen 2007-09-06.
  5. ^ Intel Corp. (2008). Intel QuickPath Architektur [Weißbuch]. Abgerufen von http://www.intel.com/pressroom/archive/reference/whitepaper_quickpath.pdf
  6. ^ Intel Corporation. (18. September 2007). Gelsinger spricht mit Rapid Technology Caden der Intel und der High-Tech-Industrie [Pressemitteilung]. Abgerufen von http://www.intel.com/pressroom/archive/releases/2007/20070918corp_b.htm
  7. ^ "ccnuma: cache kohärenter ungleichmäßiger Speicherzugriff". SlideShare.net. 2014. Abgerufen 2014-01-27.
  8. ^ Pro Stenstromt; Truman Joe; Anoop Gupta (2002). "Vergleichende Leistungsbewertung von Cache-Kohärenten NUMA- und Coma-Architekturen" (PDF). ACM. Abgerufen 2014-01-27.
  9. ^ David B. Gustavson (September 1991). "Die skalierbare kohärente Schnittstelle und verwandte Standards für Standards" (PDF). SLAC -Veröffentlichung 5656. Stanford Linear Accelerator Center. Abgerufen 27. Januar, 2014.
  10. ^ "Der Numachip ermöglicht Cache, kohärent kostengünstig gemeinsam genutzte Speicher zu haben". Numascale.com. Archiviert von das Original Am 2014-01-22. Abgerufen 2014-01-27.
  11. ^ NUMA -Unterstützung (MSDN)
  12. ^ Java Hotspot ™ Virtual Machine Performance Enhancements
  13. ^ "Linux Skalierbarkeitsaufwand: Numa Group Homepage". SourceForge.net. 2002-11-20. Abgerufen 2014-02-06.
  14. ^ "Linux -Kernel 3.8, Abschnitt 1.8. Automatische Numa Balancing". kernelnewbies.org. 2013-02-08. Abgerufen 2014-02-06.
  15. ^ Jonathan Corbet (2012-11-14). "Numa in Eile". Lwn.net. Abgerufen 2014-02-06.
  16. ^ "Linux -Kernel 3.13, Abschnitt 1.6. Verbesserte Leistung in NUMA -Systemen". kernelnewbies.org. 2014-01-19. Abgerufen 2014-02-06.
  17. ^ "Linux -Kernel -Dokumentation: Dokumentation/sysctl/kernel.txt". kernel.org. Abgerufen 2014-02-06.
  18. ^ Jonathan Corbet (2013-10-01). "Numa -Planungsfortschritt". Lwn.net. Abgerufen 2014-02-06.
  19. ^ "Numa (4)". www.freebsd.org. Abgerufen 2020-12-03.

Externe Links