Heterogenes Rechnen - Heterogeneous computing
Heterogenes Computing bezieht sich auf Systeme, die mehr als eine Art von Prozessor oder Kernen verwenden . Diese Systeme gewinnen nicht nur an Leistung oder Energieeffizienz, indem sie den gleichen Prozessortyp hinzufügen, sondern auch durch das Hinzufügen unterschiedlicher Coprozessoren , die normalerweise spezielle Verarbeitungsfunktionen enthalten, um bestimmte Aufgaben zu bewältigen.
Heterogenität
In der Regel bezog sich Heterogenität im Computing-Kontext auf verschiedene Instruction-Set-Architekturen (ISA), bei denen der Hauptprozessor eine und andere Prozessoren eine andere - normalerweise eine sehr unterschiedliche - Architektur (vielleicht mehr als eine) haben, nicht nur eine andere Mikroarchitektur ( floating Punktnummer Verarbeitung ist ein spezieller Fall dieser - in der Regel nicht als heterogenes bezeichnet).
In der Vergangenheit bedeutete heterogenes Computing, dass verschiedene ISAs unterschiedlich gehandhabt werden mussten, während in einem modernen Beispiel Systeme mit heterogener Systemarchitektur (HSA) den Unterschied (für den Benutzer) beseitigen, während sie mehrere Prozessortypen (normalerweise CPUs und GPUs ) verwenden, normalerweise auf dem gleichen integrierten Schaltkreis , um das Beste aus beiden Welten zu bieten: allgemeine GPU-Verarbeitung (abgesehen von den bekannten 3D-Grafik-Rendering-Funktionen der GPU kann sie auch mathematisch intensive Berechnungen mit sehr großen Datensätzen durchführen), während CPUs das Betriebssystem ausführen können und führen traditionelle serielle Aufgaben durch.
Der Grad der Heterogenität in modernen Computersystemen nimmt allmählich zu, da die weitere Skalierung der Herstellungstechnologien es ermöglicht, dass ehemals diskrete Komponenten zu integrierten Bestandteilen eines System-on-Chip oder SoC werden. Viele neue Prozessoren enthalten beispielsweise jetzt eine integrierte Logik für die Verbindung mit anderen Geräten ( SATA , PCI , Ethernet , USB , RFID , Funkgeräte , UARTs und Speichercontroller ) sowie programmierbare Funktionseinheiten und Hardwarebeschleuniger ( GPUs , Kryptographie). Co-Prozessoren , programmierbare Netzwerkprozessoren, A/V-Encoder/-Decoder usw.).
Jüngste Ergebnisse zeigen, dass ein heterogener ISA-Chip-Multiprozessor, der die von mehreren ISAs gebotene Diversität ausnutzt, die beste homogene Architektur mit gleichem ISA um bis zu 21% mit 23% Energieeinsparungen und einer Reduzierung des Energieverzögerungsprodukts (EDP) um 32% übertreffen kann. . AMDs Ankündigung von 2014 zu seinen pin-kompatiblen ARM- und x86-SoCs mit dem Codenamen Project Skybridge deutete auf einen heterogenen ISA (ARM+x86)-Chip-Multiprozessor in der Entwicklung hin.
Heterogene CPU-Topologie
Ein System mit heterogener CPU-Topologie ist ein System, bei dem die gleiche ISA verwendet wird, die Kerne selbst jedoch unterschiedlich schnell sind. Der Aufbau ähnelt eher einem symmetrischen Multiprozessor . (Obwohl solche Systeme technisch asymmetrische Multiprozessoren sind , unterscheiden sich die Kerne nicht in Rollen oder Gerätezugriff.) Es gibt typischerweise zwei Arten von Kernen: einen leistungsstärkeren Kern, der normalerweise als "großer" oder P-Kern bekannt ist, und einen energieeffizienteren Kern normalerweise bekannt als der "kleine" oder E-Kern.
Eine übliche Verwendung einer solchen Topologie besteht darin, eine bessere Energieeffizienz in mobilen SoCs bereitzustellen.
- ARM big.LITTLE (Nachfolge von DynamIQ) ist der prototypische Fall, bei dem schnellere High-Power-Kerne mit langsameren Low-Power-Kernen kombiniert werden.
- Apple hat Apple-Silizium- ARM-Kerne mit ähnlicher Organisation hergestellt.
- Intel hat auch hybride x86-64-Kerne mit dem Codenamen Lakefield produziert , allerdings nicht ohne erhebliche Einschränkungen bei der Unterstützung von Befehlssätzen. Der neuere Alder Lake reduziert die Opfer, indem er dem "kleinen" Kern mehr Befehlssatzunterstützung hinzufügt.
Herausforderungen
Heterogene Computersysteme stellen neue Herausforderungen dar, die in typischen homogenen Systemen nicht zu finden sind. Das Vorhandensein mehrerer Verarbeitungselemente wirft alle Probleme auf, die mit homogenen parallelen Verarbeitungssystemen verbunden sind, während der Grad der Heterogenität im System zu Ungleichmäßigkeiten bei der Systementwicklung, den Programmierpraktiken und der Gesamtsystemfähigkeit führen kann. Bereiche der Heterogenität können sein:
- ISA- oder Befehlssatzarchitektur
- Rechenelemente können unterschiedliche Befehlssatzarchitekturen aufweisen, was zu binärer Inkompatibilität führt.
- ABI- oder Anwendungsbinärschnittstelle
- Rechenelemente können den Speicher auf unterschiedliche Weise interpretieren. Dies kann sowohl Endianness , Aufrufkonvention als auch Speicherlayout umfassen und hängt sowohl von der Architektur als auch vom verwendeten Compiler ab .
- API oder Anwendungsprogrammierschnittstelle
- Bibliotheks- und Betriebssystemdienste sind möglicherweise nicht für alle Rechenelemente einheitlich verfügbar.
- Low-Level-Implementierung von Sprachfunktionen
- Sprachmerkmale wie Funktionen und Threads werden oft unter Verwendung von Funktionszeigern implementiert , einem Mechanismus, der bei Verwendung in heterogenen Umgebungen zusätzliche Übersetzung oder Abstraktion erfordert.
- Speicherschnittstelle und Hierarchie
- Rechenelemente können unterschiedliche Cache- Strukturen, Cache-Kohärenzprotokolle aufweisen , und der Speicherzugriff kann ein einheitlicher oder nicht einheitlicher Speicherzugriff ( NUMA ) sein. Unterschiede bestehen auch in der Fähigkeit, beliebige Datenlängen zu lesen, da einige Prozessoren/Einheiten nur Byte-, Wort- oder Burst-Zugriffe durchführen können.
- Verbinden
- Rechenelemente können neben den grundlegenden Speicher-/Busschnittstellen unterschiedliche Arten von Verbindungen aufweisen. Dies kann dedizierte Netzwerkschnittstellen, Direct Memory Access ( DMA )-Geräte, Mailboxen, FIFOs und Scratchpad-Speicher usw. umfassen. Darüber hinaus können bestimmte Teile eines heterogenen Systems Cache-kohärent sein, während andere eine explizite Software-Beteiligung zur Aufrechterhaltung der Konsistenz erfordern können und Kohärenz.
- Leistung
- Ein heterogenes System kann CPUs haben, die in Bezug auf die Architektur identisch sind, jedoch zugrunde liegende Unterschiede in der Mikroarchitektur aufweisen, die zu unterschiedlichen Leistungs- und Stromverbrauchsniveaus führen. Asymmetrien in den Fähigkeiten gepaart mit undurchsichtigen Programmiermodellen und Betriebssystemabstraktionen können manchmal zu Problemen mit der Vorhersagbarkeit der Leistung führen, insbesondere bei gemischten Workloads.
- Datenpartitionierung
- Während die Partitionierung von Daten auf homogenen Plattformen oft trivial ist, hat sich gezeigt, dass für den allgemeinen heterogenen Fall das Problem NP-vollständig ist. Es hat sich gezeigt, dass für eine kleine Anzahl von Partitionen optimale Partitionierungen existieren, die die Last perfekt ausgleichen und das Kommunikationsvolumen minimieren.
Beispielhardware
Heterogene Computerhardware findet sich in jeder Computerdomäne – von High-End-Servern und Hochleistungscomputern bis hin zu energiesparenden Embedded-Geräten wie Mobiltelefonen und Tablets.
- High Performance Computing
- Cray XD1 (FPGA)
- SRC-Computer SRC-6 und SRC-7 (FPGA)
- Eingebettete Systeme (DSP und mobile Plattformen)
- Texas Instruments OMAP (Medien-Coprozessor)
- Analog Devices Blackfin (DSP und Medien-Coprozessoren)
- Qualcomm Snapdragon (GPU, DSP, Bild, manchmal AI-Coprozessor; Modem, Sensoren)
- Nvidia Tegra (GPU; Modem, Sensoren)
- Samsung Exynos (GPU; Modem, Sensoren)
- Apple „A“-Serie (CPU, GPU; Modem)
- Movidius Myriad Vision-Verarbeitungseinheiten , die mehrere symmetrische Prozessoren umfassen, die durch Einheiten mit fester Funktion ergänzt werden , und ein Paar SPARC- basierter Controller.
- HiSilicon Kirin SoCs (GPU; Modem, Sensoren)
- MediaTek- SoCs (GPU; Modem, Sensoren)
- Cadence Design Systems Tensilica DSPs
- Rekonfigurierbares Computing
- Vernetzung
- Allgemeine Computer-, Spiel- und Unterhaltungsgeräte
- Intel Sandy Bridge, Ivy Bridge und Haswell CPUs (integrierte GPU, OpenCL-fähig seit Ivy Bridge)
- AMD Excavator und Ryzen APUs (integrierte GPU, OpenCL-fähig)
-
IBM Cell , gefunden in der PlayStation 3 (Vektor-Coprozessor)
- SpursEngine , eine Variante des IBM Cell-Prozessors
- Emotion Engine , gefunden in der PlayStation 2 (Vektor- und Medien-Coprozessoren)
-
ARM big.LITTLE/DynamIQ CPU-Architektur (heterogene Topologie)
- Nahezu alle ARM-Anbieter bieten heterogene Lösungen an; ARM, Qualcomm, Nvidia, Apple, Samsung, HiSilicon, MediaTek usw.