Brauchen wir wirklich so viele xPUs?

Update: 17. November 2021

"In den letzten Jahren wurden fast täglich Ankündigungen zu neuen Prozessorarchitekturen veröffentlicht, mit einem aus drei Buchstaben bestehenden Akronym – TPU, IPU, NPU. Doch was zeichnet sie wirklich aus? Gibt es wirklich so viele einzigartige Prozessorarchitekturen oder ist etwas anderes passiert?

"

In den letzten Jahren wurden fast täglich Ankündigungen zu neuen Prozessorarchitekturen veröffentlicht und mit einem aus drei Buchstaben bestehenden Akronym versehen: TPU, IPU, NPU. Doch was zeichnet sie wirklich aus? Gibt es wirklich so viele einzigartige Prozessorarchitekturen oder ist etwas anderes passiert?

Im Jahr 2018 hielten John L. Hennessy und David A. Patterson einen Turing-Vortrag mit dem Titel „Das neue goldene Zeitalter der Computerarchitektur“. Sie machen sich Sorgen um die CPU und ihre Entwicklung, aber das ist nur ein kleiner Teil der Gesamtgleichung. Michael Frank, IP-Forscher und Systemarchitekt bei Arteris, sagte: „Aus CPU-Sicht sind die meisten dieser xPUs keine echten Prozessoren.“ „Sie ähneln eher einer GPU, einem Beschleuniger für spezielle Workloads. Und sie haben viel Vielfalt in sich. Maschinelles Lernen ist eine Art Prozessor. Man kann sie zusammenfassend als Beschleuniger für maschinelles Lernen bezeichnen, aber sie beschleunigen den Verarbeitungsteil einer Vielzahl von Prozessoren.“

Das Wesen des Prozessors lässt sich auf drei Dinge reduzieren. „Letzten Endes kommt es tatsächlich wieder zur Befehlssatzarchitektur (ISA)“, sagte Manuel Uhm, Leiter Chip-Marketing bei Xilinx. „Das definiert, was Sie tun möchten. Dann gibt es I/O und Speicher, die die ISA und die Aufgaben, die sie zu erfüllen versucht, unterstützen. Dies wird in Zukunft eine sehr interessante Zeit sein, denn wir werden mehr als in den letzten zwei oder drei Jahren Zeit für mehr Innovation und Veränderung sehen.“

Viele neue Architekturen sind keine Einzelprozessoren. „Was wir sehen, ist eine Kombination verschiedener Arten von Prozessoren oder programmierbaren Engines, die im selben SoC oder im selben System vorhanden sind“, sagte Pierre-Xavier Thomas, Group Director von Cadence Technologie und strategisches Marketing. „Verteilen Sie Softwareaufgaben auf verschiedene Hardware oder flexible programmierbare Engines. Alle Prozessoren nutzen möglicherweise eine gemeinsame API, die Ausführungsdomäne ist jedoch unterschiedlich. Hier werden Sie tatsächlich unterschiedliche Verarbeitungsarten mit unterschiedlichen Ausprägungen sehen.“

Die Realität ist, dass die meisten Namen Marketingzwecken dienen.

„Der Punkt ist, dass Menschen diese Namen und Akronyme für zwei verschiedene Zwecke verwenden“, sagte Simon Davidmann, CEO von Imperas Software. „Man wird verwendet, um die Architektur des Prozessors zu erklären, beispielsweise SIMD (Single Instruction Multiple Data). Der andere definiert das Anwendungssegment, das er anspricht. So kann es die Prozessorarchitektur oder so etwas wie den Markennamen einer Tensor Processing Unit (TPU) definieren. Sie benennen ihre heterogenen oder homogenen Architekturen, nicht einzelne Prozessoren.“

Ein wenig Geschichte

Vor vierzig Jahren waren die Dinge viel einfacher. Damals gab es eine Zentraleinheit (CPU) und es gab viele Varianten davon, aber im Grunde waren es alles Turing-vollständige Prozessoren mit von-Neumann-Architektur. Jeder verfügt über einen anderen Befehlssatz, der sie für bestimmte Aufgaben effizienter macht, und es gibt viele Diskussionen über die relativen Vorteile des komplexen Befehlssatzes (CISC) und des reduzierten Befehlssatzes (RISC).

Das Aufkommen von RISC-V hat ISA große Aufmerksamkeit verschafft. „Die Leute wollen ISA verstehen, weil ISA definiert, wie optimiert der Prozessor für bestimmte Aufgaben ist“, sagte Uhm von Xilinx. „Sie können sich die ISA ansehen und den Berechnungszyklus starten. Wenn eine ISA über native Anweisungen verfügt und mit 1 GHz läuft, kann ich sie mit einer anderen Prozessor-ISA vergleichen, die möglicherweise zwei Anweisungen für dieselbe Funktion erfordert, der Prozessor jedoch mit 1.5 GHz läuft. Welche bringt mich weiter? Sie führen mathematische Berechnungen für wichtige Funktionen durch.“

Es gibt mehrere Verpackungsmethoden für CPUs. Manchmal werden E/A oder Speicher im selben Paket platziert. Sie werden Mikrocontroller-Einheiten (MCUs) genannt.

Als Modems populär wurden, erschienen digitale Signalprozessoren (DSPs), deren Unterschied darin bestand, dass sie die Harvard-Architektur verwendeten. Dadurch wird der Befehlsbus vom Datenbus getrennt. Einige von ihnen haben auch die SIMD-Architektur implementiert, um die Datenverarbeitung effizienter zu gestalten.

Die Trennung von Anweisungen und Daten soll den Durchsatz verbessern, schränkt jedoch einige mögliche Edge-Programmierungen ein, beispielsweise selbst geschriebene Programme. „Normalerweise sind Randbedingungen keine Berechnungen“, sagte Uhm. „Es geht zunehmend um E/A oder Speicher. Die Branche verlagert sich von der Erhöhung der Rechenleistung hin zur Sicherstellung, dass genügend Daten vorhanden sind, um die Rechenleistung und Leistung aufrechtzuerhalten.“

Wenn ein einzelner Prozessor nicht mehr schneller wird, schalten sie mehrere Prozessoren zusammen. Diese Prozessoren teilen sich normalerweise den Speicher und wahren das Konzept der Turing-Vollständigkeit für jeden Prozessor und den gesamten Prozessorcluster. Es spielt keine Rolle, auf welchem ​​Kern ein Teil des Programms ausgeführt wird, denn das Ergebnis ist das gleiche.

Die nächste große Entwicklung ist die Grafikverarbeitungseinheit (GPU), die mit der Konvention bricht, da jedes Verarbeitungselement oder jede Pipeline über einen eigenen Speicher verfügt und nicht außerhalb des Prozessors angesprochen werden kann. Da der Speicher begrenzt ist, bedeutet dies, dass er keine beliebigen Verarbeitungsaufgaben ausführen kann, sondern nur Aufgaben ausführen kann, die im bereitgestellten Speicherplatz abgelegt werden können.

„Für bestimmte Arten von Funktionen sind GPUs sehr leistungsstarke Prozessoren, aber ihre Pipelines sind sehr lang“, betont Uhm. „Diese Pipelines ermöglichen es der GPU-Einheit, kontinuierlich Daten zu verarbeiten, aber irgendwann, wenn man die Pipeline aktualisieren muss, wird das ein schwerer Schlag sein.“ In das System sind viele Latenzzeiten und Unsicherheiten eingebaut.“

Obwohl viele andere Beschleuniger definiert wurden, definierten GPUs – und später Allzweck-GPUs (GPGPUs) – ein Programmierparadigma und einen Software-Stack, der sie einfacher zu verwenden machte als frühere Beschleuniger. „Bestimmte Berufe sind seit vielen Jahren spezialisiert“, sagt Davidmann von Imperas. „Für sequentielle Programme gibt es eine CPU. Es gibt einen Grafikprozessor, der sich auf die Verarbeitung von Daten konzentriert Bildschirm und entführt uns in eine höchst parallele Welt. Verwendet viele kleine Verarbeitungselemente, um Aufgaben auszuführen. Jetzt gibt es maschinelle Lernaufgaben.“

Welche anderen Konstruktionsregeln können die ganze neue Architektur erklären? In der Vergangenheit wurden Prozessor-Arrays meist über Speicher oder feste Netzwerktopologien (wie Mesh oder Ring) verbunden. Was sich kürzlich herauskristallisiert hat, ist die Kombination von Network on Chip (NoC), die es verteilten heterogenen Prozessoren ermöglicht, flexibler zu kommunizieren. In Zukunft können sie auch ohne Speicher kommunizieren.

„Derzeit überträgt NoC nur Daten“, sagte Frank von Arteris. „Zukünftig kann NoC auf andere Bereiche ausgeweitet werden, in denen die Kommunikation zwischen Beschleunigern über Daten hinausgeht. Es kann Befehle senden, Benachrichtigungen senden usw. Die Kommunikationsanforderungen des Beschleuniger-Arrays können sich von den Kommunikationsanforderungen der CPU oder des Standard-SoC unterscheiden. Das Netzwerk auf dem Chip beschränkt Sie jedoch nicht auf eine Teilmenge. Sie können die Leistung optimieren und verbessern, indem Sie die speziellen Kommunikationsanforderungen von Beschleunigern unterstützen.“

Implementierungsarchitektur

Eine Möglichkeit zur Prozessordifferenzierung besteht in der Optimierung für eine bestimmte Betriebsumgebung. Beispielsweise kann die Software in der Cloud ausgeführt werden, Sie können jedoch dieselbe Software auch auf einem Mikro-IoT-Gerät ausführen. Die Implementierungsarchitektur wird sehr unterschiedlich sein und unterschiedliche Betriebspunkte hinsichtlich Leistung, Stromverbrauch, Kosten oder der Fähigkeit zum Betrieb unter extremen Bedingungen erreichen.

„Einige Anwendungen sind für Cloud Computing bestimmt, und jetzt bringen wir sie näher an den Rand“, sagte Thomas von Cadence. „Dies kann auf Latenzanforderungen oder Energie- oder Leistungsverluste zurückzuführen sein, die eine andere Art von Architektur erfordern. Möglicherweise möchten Sie genau den gleichen Software-Stack haben, um ihn an zwei Standorten ausführen zu können. Die Cloud muss Flexibilität bieten, da sie verschiedene Arten von Anwendungen empfängt und in der Lage sein muss, eine große Anzahl von Benutzern zu aggregieren. Dies erfordert, dass die Hardware auf dem Server über anwendungsspezifische Fähigkeiten verfügt, aber eine Einheitsgröße ist nicht für jeden geeignet.“

ML hat seine eigenen Anforderungen erhöht. „Wenn Sie neuronale Netze und maschinelles Lernen zum Aufbau intelligenter Systeme verwenden, müssen Sie Software-Frameworks und allgemeine Software-Stacks verwenden, um das neue Netzwerk zu programmieren und es der Hardware zuzuordnen“, fügte Thomas hinzu. „Dann kann man die Softwareanwendung aus PPA-Sicht an die richtige Hardware anpassen. Dies erhöht den Bedarf an unterschiedlichen Verarbeitungsarten und Prozessoren, um diese Anforderungen auf Hardwareebene erfüllen zu können.“

Diese Anforderungen werden durch die Anwendung definiert. „Ein Unternehmen hat einen Prozessor für Grafikoperationen entwickelt“, sagte Frank. „Sie optimieren und beschleunigen die Verfolgung von Diagrammen und führen Vorgänge wie die Neuordnung von Diagrammen durch. Es gibt noch andere rohe Kräfte, die maschinelles Lernen beschleunigen, nämlich die Matrixmultiplikation. Der Speicherzugriff ist für jede Architektur anders. Das ist ein besonderes Problem, denn beim Bau eines Beschleunigers besteht das wichtigste Ziel darin, ihn beschäftigt zu halten. Man muss so viele Daten wie möglich an die ALU übertragen, weil diese konsumiert und produziert werden können.“

Viele dieser Anwendungen haben viele Gemeinsamkeiten. „Sie verfügen alle über einen lokalen Speicher, ein Netzwerk auf einem Chip zur Kommunikation und jeder Prozessor, der einen Softwarealgorithmus ausführt, verarbeitet ein kleines Datenstück“, sagte Davidmann. „Diese Jobs werden von Betriebssystemen geplant, die auf traditionelleren CPUs laufen.“

Der schwierige Teil für Hardware-Designer besteht darin, vorherzusagen, welche Aufgaben sie ausführen müssen. „Obwohl man in einigen Schichten ähnliche Arten von Operationen durchführen wird, achten die Leute auf die Differenzierung in den Schichten“, sagte Thomas. „Um ein neuronales Netzwerk verarbeiten zu können, sind verschiedene Arten von Rechenleistung erforderlich. Das bedeutet, dass Sie in der Lage sein müssen, einen Teil des neuronalen Netzwerks auf irgendeine Weise zu verarbeiten, und dann möglicherweise eine andere Art von Operation benötigen, um eine andere Schicht zu verarbeiten. Datenbewegung Und auch die Datenmenge verändert sich Schicht für Schicht.“

Diese Differenzierung kann über die Datenbewegung hinausgehen. „Für die Genomsequenzierung müssen einige Verarbeitungsschritte durchgeführt werden“, sagte Frank. „Aber man kann nicht einen einzigen Beschleunigertyp verwenden, um alles zu beschleunigen. Sie müssen eine ganze Reihe verschiedener Beschleuniger für verschiedene Pipelines bauen. Die CPU wird zum Wächter des Managementausführungsprozesses. Es richtet DMA ein, führt es aus und sorgt für die Entscheidungsfindung zwischen den beiden Prozessen. Algorithmen zu verstehen, zu analysieren und zu definieren, wie man ihre Verarbeitung optimieren möchte, ist eine komplette Architekturaufgabe.“

Ein Teil des Prozesses erfordert eine Partitionierung. „Es gibt keinen einzelnen Prozessortyp, der für jede Prozessoraufgabe optimiert werden kann.“FPGA ist nicht gut, die CPU ist nicht gut, die GPU ist nicht gut, DSP ist auch notwendig“, sagte Uhm. „Wir haben eine Reihe von Geräten entwickelt, die all dies enthalten, aber der schwierige Teil auf Kundenseite besteht darin, dass sie Intelligenz bereitstellen müssen, um zu bestimmen, welche Teile des Gesamtsystems auf den Prozessor, die programmierbare Logik oder die KI ausgerichtet werden.“ Motor. Jeder möchte dieses automatische magische Werkzeug, ein Werkzeug, das sofort entscheiden kann, ob es auf der CPU, auf dem FPGA und auf der GPU installiert werden soll. Dieses Tool gibt es heute nicht mehr.“

Dennoch wird die CPU immer eine Rolle spielen. „Die CPU wird benötigt, um unregelmäßige Teile des Programms auszuführen“, sagte Frank. „Die allgemeine Programmierbarkeit der CPU hat ihre Vorteile. Wenn Sie über spezielle Datenstrukturen oder mathematische Operationen verfügen, wird es nicht gut funktionieren. Die CPU ist ein Allzweckprozessor und für nichts optimiert. Es ist in nichts gut. .“

„Abstrakt“ ändern

In der Vergangenheit wurde die Hardware-/Software-Grenze durch die ISA definiert und der Speicher war kontinuierlich adressierbar. Wenn mehrere Prozessoren vorhanden sind, sind diese normalerweise speicherausgerichtet.

„Konsistenz ist ein Vertrag“, sagte Frank. „Diese Art von Konstanz ist sehr wichtig und wird nicht verschwinden. Aber Sie können sich vorstellen, dass in einer Datenfluss-Engine die Konsistenz nicht so wichtig ist, da Sie die Daten, die sich am Rand bewegen, direkt von einem Beschleuniger zum anderen übertragen. Wenn Sie den Datensatz partitionieren, wird die Konsistenz zu einem Hindernis, da Sie dadurch zusätzliche Zyklen kosten. Sie müssen die Informationen überprüfen. Sie müssen aktualisierte Informationen bereitstellen.“

Dies erfordert eine andere Speicherarchitektur. „Man muss über die Speicherstruktur nachdenken, denn es gibt nur eine begrenzte Anzahl eng gekoppelter Speicher“, sagte Uhm. „Sie können auf angrenzenden Speicher zugreifen, aber der angrenzende Speicher geht Ihnen schnell aus und Sie können nicht rechtzeitig darauf zugreifen. Dies muss im Design verstanden werden. Je ausgereifter das Tool ist, desto mehr lernt es. Heutzutage erfolgt dies durch menschliche Intelligenz, die in der Lage ist, die Architektur zu verstehen und anzuwenden.“

Außerdem ist eine höhere Abstraktionsebene erforderlich. „Einige Frameworks können bekannte Netzwerke auf Zielhardware abbilden oder kompilieren“, sagte Thomas. „Sie verfügen über eine Reihe von Low-Level-Kerneln oder APIs, die im Software-Stack und schließlich vom Mapper des neuronalen Netzwerks verwendet werden. Nachfolgend finden Sie möglicherweise unterschiedliche Arten von Hardware, je nachdem, was Sie erreichen möchten, abhängig von Ihren Produktdetails. Es erreicht die gleiche Funktionalität, nutzt aber nicht die gleiche Hardware oder die gleichen PPA-Kompromisse.“

Dies setzt diese Compiler stark unter Druck. „Die Hauptfrage ist, wie programmiert man den Beschleuniger in Zukunft?“ fragte Frank. „Haben Sie eine festverdrahtete Engine wie die erste GPU-Generation implementiert? Oder haben Sie eine kleine programmierbare Engine mit Ihrem eigenen Befehlssatz gebaut? Jetzt müssen Sie diese Dinge separat programmieren und einfügen. Jeder von ihnen ist mit dem Datenfluss verbunden, um Aufgaben auszuführen. Ein Prozessor verfügt über eine bestimmte Teilmenge des gesamten Befehlssatzes, der andere Prozessor über eine andere Teilmenge, und alle teilen sich einige überlappende Teile des Kontrollflusses. Möglicherweise verfügen Sie über einige Produkte mit leicht unterschiedlichen Beschleunigungsfähigkeiten. Der Compiler oder die Bibliotheken, die es verstehen, werden entsprechend zugeordnet.“

Zusammenfassen

An der Architektur des Prozessors hat sich nichts geändert. Sie verfolgen immer noch die gleichen Entscheidungen, die es schon seit 40 Jahren gibt. Was sich ändert, ist die Art und Weise, wie der Chip aufgebaut ist. Sie enthalten mittlerweile eine große Anzahl heterogener Prozessoren mit Speicher und Kommunikation, die für eine Teilmenge der Anwendungsaufgaben optimiert sind. Jeder Chip trifft eine andere Wahl für die Prozessorfunktion und seinen Optimierungszweck, den erforderlichen Datendurchsatz und den Datenfluss, den er normalerweise sieht.

Jeder Hardware-Anbieter möchte seinen eigenen Chip von anderen Chips unterscheiden, aber es ist viel einfacher, durch Branding Werbung zu machen, als über interne technische Details zu sprechen. Also gaben sie ihm einen Namen, nannten ihn den ersten, schnellsten und größten und verknüpften ihn mit bestimmten Arten von Anwendungsproblemen. Diese aus drei Buchstaben bestehenden Akronyme sind zu Anwendungsaufgabennamen geworden, sie definieren jedoch nicht die Hardwarearchitektur.

In den letzten Jahren wurden fast täglich Ankündigungen zu neuen Prozessorarchitekturen veröffentlicht, mit einem aus drei Buchstaben bestehenden Akronym – TPU, IPU, NPU. Doch was zeichnet sie wirklich aus? Gibt es wirklich so viele einzigartige Prozessorarchitekturen oder ist etwas anderes passiert?

Im Jahr 2018 hielten John L. Hennessy und David A. Patterson einen Turing-Vortrag mit dem Titel „Das neue goldene Zeitalter der Computerarchitektur“. Sie machen sich Sorgen um die CPU und ihre Entwicklung, aber das ist nur ein kleiner Teil der Gesamtgleichung. Michael Frank, IP-Forscher und Systemarchitekt bei Arteris, sagte: „Aus CPU-Sicht sind die meisten dieser xPUs keine echten Prozessoren.“ „Sie ähneln eher einer GPU, einem Beschleuniger für spezielle Workloads. Und sie haben viel Vielfalt in sich. Maschinelles Lernen ist eine Art Prozessor. Man kann sie zusammenfassend als Beschleuniger für maschinelles Lernen bezeichnen, aber sie beschleunigen den Verarbeitungsteil einer Vielzahl von Prozessoren.“

Das Wesen des Prozessors lässt sich auf drei Dinge reduzieren. „Letzten Endes kommt es tatsächlich wieder zur Befehlssatzarchitektur (ISA)“, sagte Manuel Uhm, Leiter Chip-Marketing bei Xilinx. „Das definiert, was Sie tun möchten. Dann gibt es I/O und Speicher, die die ISA und die Aufgaben, die sie zu erfüllen versucht, unterstützen. Dies wird in Zukunft eine sehr interessante Zeit sein, denn wir werden mehr als in den letzten zwei oder drei Jahren Zeit für mehr Innovation und Veränderung sehen.“

Viele neue Architekturen sind keine Einzelprozessoren. „Was wir sehen, ist eine Kombination verschiedener Arten von Prozessoren oder programmierbaren Engines, die im selben SoC oder im selben System vorhanden sind“, sagte Pierre-Xavier Thomas, Direktor der Technology and Strategic Marketing Group von Cadence. „Verteilen Sie Softwareaufgaben auf verschiedene Hardware oder flexible programmierbare Engines. Alle Prozessoren können eine gemeinsame API verwenden, die Ausführungsdomäne ist jedoch unterschiedlich. Hier werden Sie tatsächlich unterschiedliche Verarbeitungsarten mit unterschiedlichen Ausprägungen sehen.“

Die Realität ist, dass die meisten Namen Marketingzwecken dienen.

„Der Punkt ist, dass Menschen diese Namen und Akronyme für zwei verschiedene Zwecke verwenden“, sagte Simon Davidmann, CEO von Imperas Software. „Man wird verwendet, um die Architektur des Prozessors zu erklären, beispielsweise SIMD (Single Instruction Multiple Data). Der andere definiert das Anwendungssegment, das er anspricht. So kann es die Prozessorarchitektur oder so etwas wie den Markennamen einer Tensor Processing Unit (TPU) definieren. Sie benennen ihre heterogenen oder homogenen Architekturen, nicht einzelne Prozessoren.“

Ein wenig Geschichte

Vor vierzig Jahren waren die Dinge viel einfacher. Damals gab es eine Zentraleinheit (CPU) und es gab viele Varianten davon, aber im Grunde waren es alles Turing-vollständige Prozessoren mit von-Neumann-Architektur. Jeder verfügt über einen anderen Befehlssatz, der sie für bestimmte Aufgaben effizienter macht, und es gibt viele Diskussionen über die relativen Vorteile des komplexen Befehlssatzes (CISC) und des reduzierten Befehlssatzes (RISC).

Das Aufkommen von RISC-V hat ISA große Aufmerksamkeit verschafft. „Die Leute wollen ISA verstehen, weil ISA definiert, wie optimiert der Prozessor für bestimmte Aufgaben ist“, sagte Uhm von Xilinx. „Sie können sich die ISA ansehen und den Berechnungszyklus starten. Wenn eine ISA über native Anweisungen verfügt und mit 1 GHz läuft, kann ich sie mit einer anderen Prozessor-ISA vergleichen, die möglicherweise zwei Anweisungen für dieselbe Funktion erfordert, der Prozessor jedoch mit 1.5 GHz läuft. Welche bringt mich weiter? Sie führen mathematische Berechnungen für wichtige Funktionen durch.“

Es gibt mehrere Verpackungsmethoden für CPUs. Manchmal werden E/A oder Speicher im selben Paket platziert. Sie werden Mikrocontroller-Einheiten (MCUs) genannt.

Als Modems populär wurden, erschienen digitale Signalprozessoren (DSPs), deren Unterschied darin bestand, dass sie die Harvard-Architektur verwendeten. Dadurch wird der Befehlsbus vom Datenbus getrennt. Einige von ihnen haben auch die SIMD-Architektur implementiert, um die Datenverarbeitung effizienter zu gestalten.

Die Trennung von Anweisungen und Daten soll den Durchsatz verbessern, schränkt jedoch einige mögliche Edge-Programmierungen ein, beispielsweise selbst geschriebene Programme. „Normalerweise sind Randbedingungen keine Berechnungen“, sagte Uhm. „Es geht zunehmend um E/A oder Speicher. Die Branche verlagert sich von der Erhöhung der Rechenleistung hin zur Sicherstellung, dass genügend Daten vorhanden sind, um die Rechenleistung und Leistung aufrechtzuerhalten.“

Wenn ein einzelner Prozessor nicht mehr schneller wird, schalten sie mehrere Prozessoren zusammen. Diese Prozessoren teilen sich normalerweise den Speicher und wahren das Konzept der Turing-Vollständigkeit für jeden Prozessor und den gesamten Prozessorcluster. Es spielt keine Rolle, auf welchem ​​Kern ein Teil des Programms ausgeführt wird, denn das Ergebnis ist das gleiche.

Die nächste große Entwicklung ist die Grafikverarbeitungseinheit (GPU), die mit der Konvention bricht, da jedes Verarbeitungselement oder jede Pipeline über einen eigenen Speicher verfügt und nicht außerhalb des Prozessors angesprochen werden kann. Da der Speicher begrenzt ist, bedeutet dies, dass er keine beliebigen Verarbeitungsaufgaben ausführen kann, sondern nur Aufgaben ausführen kann, die im bereitgestellten Speicherplatz abgelegt werden können.

„Für bestimmte Arten von Funktionen sind GPUs sehr leistungsstarke Prozessoren, aber ihre Pipelines sind sehr lang“, betont Uhm. „Diese Pipelines ermöglichen es der GPU-Einheit, kontinuierlich Daten zu verarbeiten, aber irgendwann, wenn man die Pipeline aktualisieren muss, wird das ein schwerer Schlag sein.“ In das System sind viele Latenzzeiten und Unsicherheiten eingebaut.“

Obwohl viele andere Beschleuniger definiert wurden, definierten GPUs – und später Allzweck-GPUs (GPGPUs) – ein Programmierparadigma und einen Software-Stack, der sie einfacher zu verwenden machte als frühere Beschleuniger. „Bestimmte Berufe sind seit vielen Jahren spezialisiert“, sagt Davidmann von Imperas. „Für sequentielle Programme gibt es eine CPU. Es gibt einen Grafikprozessor, der sich auf die Verarbeitung von Daten für den Bildschirm konzentriert und uns in eine hochparallele Welt entführt. Verwendet viele kleine Verarbeitungselemente, um Aufgaben auszuführen. Jetzt gibt es maschinelle Lernaufgaben.“

Welche anderen Konstruktionsregeln können die ganze neue Architektur erklären? In der Vergangenheit wurden Prozessor-Arrays meist über Speicher oder feste Netzwerktopologien (wie Mesh oder Ring) verbunden. Was sich kürzlich herauskristallisiert hat, ist die Kombination von Network on Chip (NoC), die es verteilten heterogenen Prozessoren ermöglicht, flexibler zu kommunizieren. In Zukunft können sie auch ohne Speicher kommunizieren.

„Derzeit überträgt NoC nur Daten“, sagte Frank von Arteris. „Zukünftig kann NoC auf andere Bereiche ausgeweitet werden, in denen die Kommunikation zwischen Beschleunigern über Daten hinausgeht. Es kann Befehle senden, Benachrichtigungen senden usw. Die Kommunikationsanforderungen des Beschleuniger-Arrays können sich von den Kommunikationsanforderungen der CPU oder des Standard-SoC unterscheiden. Das Netzwerk auf dem Chip beschränkt Sie jedoch nicht auf eine Teilmenge. Sie können die Leistung optimieren und verbessern, indem Sie die speziellen Kommunikationsanforderungen von Beschleunigern unterstützen.“

Implementierungsarchitektur

Eine Möglichkeit zur Prozessordifferenzierung besteht in der Optimierung für eine bestimmte Betriebsumgebung. Beispielsweise kann die Software in der Cloud laufen, Sie können die gleiche Software aber auch auf Mikro-IoT-Geräten ausführen. Die Implementierungsarchitektur wird sehr unterschiedlich sein und unterschiedliche Betriebspunkte hinsichtlich Leistung, Stromverbrauch, Kosten oder der Fähigkeit zum Betrieb unter extremen Bedingungen erreichen.

„Einige Anwendungen sind für Cloud Computing bestimmt, und jetzt bringen wir sie näher an den Rand“, sagte Thomas von Cadence. „Dies kann auf Latenzanforderungen oder Energie- oder Leistungsverluste zurückzuführen sein, die eine andere Art von Architektur erfordern. Möglicherweise möchten Sie genau den gleichen Software-Stack haben, um ihn an zwei Standorten ausführen zu können. Die Cloud muss Flexibilität bieten, da sie verschiedene Arten von Anwendungen empfängt und in der Lage sein muss, eine große Anzahl von Benutzern zu aggregieren. Dies erfordert, dass die Hardware auf dem Server über anwendungsspezifische Fähigkeiten verfügt, aber eine Einheitsgröße ist nicht für jeden geeignet.“

ML hat seine eigenen Anforderungen erhöht. „Wenn Sie neuronale Netze und maschinelles Lernen zum Aufbau intelligenter Systeme verwenden, müssen Sie Software-Frameworks und allgemeine Software-Stacks verwenden, um das neue Netzwerk zu programmieren und es der Hardware zuzuordnen“, fügte Thomas hinzu. „Dann kann man die Softwareanwendung aus PPA-Sicht an die richtige Hardware anpassen. Dies erhöht den Bedarf an unterschiedlichen Verarbeitungsarten und Prozessoren, um diese Anforderungen auf Hardwareebene erfüllen zu können.“

Diese Anforderungen werden durch die Anwendung definiert. „Ein Unternehmen hat einen Prozessor für Grafikoperationen entwickelt“, sagte Frank. „Sie optimieren und beschleunigen die Verfolgung von Diagrammen und führen Vorgänge wie die Neuordnung von Diagrammen durch. Es gibt noch andere rohe Kräfte, die maschinelles Lernen beschleunigen, nämlich die Matrixmultiplikation. Der Speicherzugriff ist für jede Architektur anders. Das ist ein besonderes Problem, denn beim Bau eines Beschleunigers besteht das wichtigste Ziel darin, ihn beschäftigt zu halten. Man muss so viele Daten wie möglich an die ALU übertragen, weil diese konsumiert und produziert werden können.“

Viele dieser Anwendungen haben viele Gemeinsamkeiten. „Sie verfügen alle über einen lokalen Speicher, ein Netzwerk auf einem Chip zur Kommunikation und jeder Prozessor, der einen Softwarealgorithmus ausführt, verarbeitet ein kleines Datenstück“, sagte Davidmann. „Diese Jobs werden von Betriebssystemen geplant, die auf traditionelleren CPUs laufen.“

Der schwierige Teil für Hardware-Designer besteht darin, vorherzusagen, welche Aufgaben sie ausführen müssen. „Obwohl man in einigen Schichten ähnliche Arten von Operationen durchführen wird, achten die Leute auf die Differenzierung in den Schichten“, sagte Thomas. „Um ein neuronales Netzwerk verarbeiten zu können, sind verschiedene Arten von Rechenleistung erforderlich. Das bedeutet, dass Sie in der Lage sein müssen, einen Teil des neuronalen Netzwerks auf irgendeine Weise zu verarbeiten, und dann möglicherweise eine andere Art von Operation benötigen, um eine andere Schicht zu verarbeiten. Datenbewegung Und auch die Datenmenge verändert sich Schicht für Schicht.“

Diese Differenzierung kann über die Datenbewegung hinausgehen. „Für die Genomsequenzierung müssen einige Verarbeitungsschritte durchgeführt werden“, sagte Frank. „Aber man kann nicht einen einzigen Beschleunigertyp verwenden, um alles zu beschleunigen. Sie müssen eine ganze Reihe verschiedener Beschleuniger für verschiedene Pipelines bauen. Die CPU wird zum Wächter des Managementausführungsprozesses. Es richtet DMA ein, führt es aus und sorgt für die Entscheidungsfindung zwischen den beiden Prozessen. Algorithmen zu verstehen, zu analysieren und zu definieren, wie man ihre Verarbeitung optimieren möchte, ist eine komplette Architekturaufgabe.“

Ein Teil des Prozesses erfordert eine Partitionierung. „Es gibt keinen einzelnen Prozessortyp, der für jede Prozessoraufgabe optimiert werden kann – FPGA ist nicht gut, CPU ist nicht gut, GPU ist nicht gut, DSP ist auch notwendig“, sagte Uhm. „Wir haben eine Reihe von Geräten entwickelt, die all dies enthalten, aber der schwierige Teil auf Kundenseite besteht darin, dass sie Intelligenz bereitstellen müssen, um zu bestimmen, welche Teile des Gesamtsystems auf den Prozessor, die programmierbare Logik oder die KI ausgerichtet werden.“ Motor. Jeder möchte dieses automatische magische Werkzeug, ein Werkzeug, das sofort entscheiden kann, ob es auf der CPU, auf dem FPGA und auf der GPU installiert werden soll. Dieses Tool gibt es heute nicht mehr.“

Dennoch wird die CPU immer eine Rolle spielen. „Die CPU wird benötigt, um unregelmäßige Teile des Programms auszuführen“, sagte Frank. „Die allgemeine Programmierbarkeit der CPU hat ihre Vorteile. Wenn Sie über spezielle Datenstrukturen oder mathematische Operationen verfügen, funktioniert dies nicht gut. Die CPU ist ein Allzweckprozessor und für nichts optimiert. Es ist in nichts gut.“

„Abstrakt“ ändern

In der Vergangenheit wurde die Hardware-/Software-Grenze durch die ISA definiert und der Speicher war kontinuierlich adressierbar. Wenn mehrere Prozessoren vorhanden sind, sind diese normalerweise speicherausgerichtet.

„Konsistenz ist ein Vertrag“, sagte Frank. „Diese Art von Konstanz ist sehr wichtig und wird nicht verschwinden. Aber Sie können sich vorstellen, dass in einer Datenfluss-Engine die Konsistenz nicht so wichtig ist, da Sie die Daten, die sich am Rand bewegen, direkt von einem Beschleuniger zum anderen übertragen. Wenn Sie den Datensatz partitionieren, wird die Konsistenz zu einem Hindernis, da Sie dadurch zusätzliche Zyklen kosten. Sie müssen die Informationen überprüfen. Sie müssen aktualisierte Informationen bereitstellen.“

Dies erfordert eine andere Speicherarchitektur. „Man muss über die Speicherstruktur nachdenken, denn es gibt nur eine begrenzte Anzahl eng gekoppelter Speicher“, sagte Uhm. „Sie können auf angrenzenden Speicher zugreifen, aber der angrenzende Speicher geht Ihnen schnell aus und Sie können nicht rechtzeitig darauf zugreifen. Dies muss im Design verstanden werden. Je ausgereifter das Tool ist, desto mehr lernt es. Heutzutage erfolgt dies durch menschliche Intelligenz, die in der Lage ist, die Architektur zu verstehen und anzuwenden.“

Außerdem ist eine höhere Abstraktionsebene erforderlich. „Einige Frameworks können bekannte Netzwerke auf Zielhardware abbilden oder kompilieren“, sagte Thomas. „Sie verfügen über eine Reihe von Low-Level-Kerneln oder APIs, die im Software-Stack und schließlich vom Mapper des neuronalen Netzwerks verwendet werden. Nachfolgend finden Sie möglicherweise unterschiedliche Arten von Hardware, je nachdem, was Sie erreichen möchten, abhängig von Ihren Produktdetails. Es erreicht die gleiche Funktionalität, nutzt aber nicht die gleiche Hardware oder die gleichen PPA-Kompromisse.“

Dies setzt diese Compiler stark unter Druck. „Die Hauptfrage ist, wie programmiert man den Beschleuniger in Zukunft?“ fragte Frank. „Haben Sie eine festverdrahtete Engine wie die erste GPU-Generation implementiert? Oder haben Sie eine kleine programmierbare Engine mit Ihrem eigenen Befehlssatz gebaut? Jetzt müssen Sie diese Dinge separat programmieren und einfügen. Jeder von ihnen ist mit dem Datenfluss verbunden, um Aufgaben auszuführen. Ein Prozessor verfügt über eine bestimmte Teilmenge des gesamten Befehlssatzes, der andere Prozessor über eine andere Teilmenge, und alle teilen sich einige überlappende Teile des Kontrollflusses. Möglicherweise verfügen Sie über einige Produkte mit leicht unterschiedlichen Beschleunigungsfähigkeiten. Der Compiler oder die Bibliotheken, die es verstehen, werden entsprechend zugeordnet.“

Zusammenfassen

An der Architektur des Prozessors hat sich nichts geändert. Sie verfolgen immer noch die gleichen Entscheidungen, die es schon seit 40 Jahren gibt. Was sich ändert, ist die Art und Weise, wie der Chip aufgebaut ist. Sie enthalten mittlerweile eine große Anzahl heterogener Prozessoren mit Speicher und Kommunikation, die für eine Teilmenge der Anwendungsaufgaben optimiert sind. Jeder Chip trifft eine andere Wahl für die Prozessorfunktion und seinen Optimierungszweck, den erforderlichen Datendurchsatz und den Datenfluss, den er normalerweise sieht.

Jeder Hardware-Anbieter möchte seinen eigenen Chip von anderen Chips unterscheiden, aber es ist viel einfacher, durch Branding Werbung zu machen, als über interne technische Details zu sprechen. Also gaben sie ihm einen Namen, nannten ihn den ersten, schnellsten und größten und verknüpften ihn mit bestimmten Arten von Anwendungsproblemen. Diese aus drei Buchstaben bestehenden Akronyme sind zu Anwendungsaufgabennamen geworden, sie definieren jedoch nicht die Hardwarearchitektur.