Die KI-Engine bildet zusammen mit Adaptable-Engines (programmierbare Logik) und Skalar-Engines (Prozessor-Subsystem) eine eng integrierte heterogene Rechenplattform. KI-Engines bieten eine bis zu fünfmal höhere Rechenleistung/Fläche für vektorbasierte Algorithmen.
Jede Kachel der AI-Engine enthält Vektorprozessoren für Fest- und Gleitkommaoperationen, einen skalaren Prozessor, einen dedizierten Programm- und Datenspeicher, dedizierte AXI-Datenbewegungskanäle und Unterstützung für DMA. KI-Engines verarbeiten eine einzelne Anweisung mit mehreren Daten (SIMD) und Vektoroperationen (VLIW), was pro Taktzyklus bis zu einer 6-Wege-Parallelität führt (siehe Bilderstrecke), einschließlich zwei/drei skalarer Operationen, zwei Vektor-Leseoperationen, einer Schreiboperation sowie einer Fest- oder Gleitkomma-Vektoroperation (z.B. Multiplikation).
Optimiert für die Echtzeit-DSP- und AI/ML-Berechnung bietet das AI-Engine-Array (siehe Bilderstrecke) deterministisches Timing durch eine Kombination aus dedizierten Daten- und Befehlsspeichern, DMA und Software-Tools. Spezielle Daten- und Befehlsspeicher sind statisch und eliminieren die Inkonsistenzen, die durch Cache-Misses und die damit verbundenen Folgen entstehen können.
Die Ziele der KI-Engine wurden aus rechenintensiven Anwendungen mit DSP und AI/ML abgeleitet. Weitere Marktanforderungen sind eine höhere Entwicklerproduktivität und höhere Abstraktionsebenen, die die Entwicklung von Entwicklungswerkzeugen vorantreiben. Die KI-Engine wurde entwickelt, um vier wesentliche Vorteile zu bieten:
Um wirklich ein Gefühl für die enormen Fähigkeiten der KI-Engine zu bekommen, ist es wichtig, ein allgemeines Verständnis der Architektur und der Fähigkeiten zu erlangen. Die in der Bilderstrecke dargestellte Kachel der KI-Engine bietet eine detaillierte Beschreibung der Ressourcen in jeder Kachel:
Eine KI-Engine mit dediziertem Befehls- und Datenspeicher wird mit anderen KI-Engine-Kacheln verbunden, wobei eine Kombination aus dediziertem AXI-Bus-Routing und direkter Verbindung zu benachbarten KI-Engine-Kacheln verwendet wird. Für die Datenbewegung verbinden sich dedizierte DMA-Engines direkt mit der dedizierten AXI-Busverbindung und der Synchronisation.
Die Vektorprozessoren bestehen sowohl aus ganzzahligen als auch aus Gleitkommaeinheiten. Operanden mit 8-Bit, 16-Bit, 32-Bit und Single-Precision Floating Point (SPFP) werden unterstützt. Für verschiedene Operanden ändert sich die Anzahl der MAC-Instruktionen pro Taktzyklus, wie in der Bilderstrecke dargestellt ist.
Mehrere Parallelitätsstufen werden durch Parallelität auf Befehls- und Datenebene erreicht. Die Parallelität auf Befehlsebene ist in der Bilderstrecke dargestellt. In jedem Taktzyklus werden zwei skalare Anweisungen, zwei Vektor-Leseoperationen, eine Vektor-Schreiboperation und eine einzelne Vektoranweisung ausgeführt – also 6-fach VLIW. Die Parallelität auf Datenebene wird durch Operationen auf Vektorebene erreicht, bei denen mehrere Datensätze pro Taktzyklus verarbeitet werden können.
Die KI-Engine-Architektur wurde für Echtzeit-Verarbeitungsanwendungen entwickelt, die eine deterministische Leistung erfordern. Zwei wesentliche architektonische Merkmale sorgen für ein deterministisches Timing:
Direct Memory (DM)-Schnittstellen ermöglichen den direkten Zugriff zwischen der KI-Engine-Kachel und ihren nächsten Nachbarn, dem KI-Engine-Kacheldatenspeicher im Norden, Süden und Westen. Dies wird typischerweise verwendet, um Ergebnisse zu/von den Vektorprozessoren zu übertragen, während die gesamte Verarbeitungskette Daten produziert und/oder verbraucht. Der Datenspeicher ist implementiert, um ein "Ping-Pong"-Pufferschema zu ermöglichen, das die Auswirkungen von Speicherkonflikten auf die Leistung minimiert.
Die einfachste Form der Datenbewegung von KI Engine zu KI Engine erfolgt über den gemeinsamen Speicher zwischen direkt benachbarten KI Engine Kacheln. Wenn die Kacheln jedoch weiter entfernt sind, dann muss die KI-Engine-Kachel AXI-Datenstreaming verwenden. Die AXI-Streaming-Konnektivität ist vordefiniert und wird von den Compiler-Tools der AI Engine basierend auf dem Datenflussgraphen programmiert. Diese Streaming-Schnittstellen können auch für die direkte Anbindung an die PL und den NoC verwendet werden (siehe Bilderstrecke).
Eines der wertvollsten Argumente des Versal-Portfolios ist die Möglichkeit, das KI-Engine-Array zusammen mit programmierbarer Logik in der Adaptable-Engine zu verwenden. Die Kombination von Ressourcen bietet eine große Flexibilität bei der Implementierung von Funktionen in der optimalen Ressource, AI Engine, Adaptable Engine oder Skalar- Engine. Die Bilderstrecke veranschaulicht die Konnektivität zwischen dem AI-Engine-Array und der programmierbaren Logik, der sogenannten "AI-Engine-Array-Schnittstelle". AXI-Streaming-Konnektivität existiert auf jeder Seite der AI-Engine-Array-Schnittstelle und erweitert die Konnektivität in die programmierbare Logik und separat in das Network on Chip (NoC).
Vergleich von KI-Engine und programmierbaren Logikimplementierungen
Die Effektivität der Architektur kann durch die Implementierung von 4G- und 5G-Mobilfunk in der PL und der AI Engine gemessen werden. Eine Zusammenfassung der Ergebnisse zeigt, dass KI-Engine-basierte Ansätze Vorteile bieten können:
Für diejenigen Funktionen, die nicht in einer Vektorimplementierung abgebildt werden können, ist der Wirkungsgrad der KI-Engine viel geringer, und die KI-Engine ist oft nicht so gut geeignet. In diesen Fällen ist die PL eine bessere Lösung. KI Engines und PL sind als Partner gedacht.
PL eignet sich hervorragend für Datenbewegungen, bitorientierte Funktionen und nicht-vektorbasierte Berechnungen; sie kann auch kundenspezifische Beschleuniger für nicht von der AI-Engine unterstützte Operationen implementieren. PL und AI Engine ergänzen sich gegenseitig auf Systemebene. Programmierbare Logik ist immer noch eine sehr wertvolle Ressource in den meisten rechenintensiven Anwendungen; die KI-Engine/PL-Kombination kann Flexibilität, hohe Rechenleistung und Datenbewegung/-speicherung mit hoher Bandbreite liefern.
In den letzten Jahren hat Xilinx großen Wert auf die Verwendung von Hochsprachen (HLL) gelegt, um das Abstraktionsniveau für die Entwicklung mit seinen Chips zu erhöhen. Die Versal-Architektur verfügt über drei grundlegend unterschiedliche programmierbare Elemente: PL-, PS- und KI-Engine. Alle drei können in C/C++ programmiert werden.
Die AI-Engine-Simulation kann Funktions- oder Taktzyklusgenau sein, indem sie eine x86-basierte Simulationsumgebung verwendet. Für die Simulation auf Systemebene steht eine virtuelle System-C-Plattform zur Verfügung, die alle drei Verarbeitungsbereiche unterstützt.
Ein Schlüsselelement in der Entwicklungsumgebung sind die AI-Engine-Bibliotheken, die DSP- und Wireless-Funktionen, ML und AI, lineare Algebra und Matrix-Mathematik. Diese Bibliotheken sind auf Effizienz und Leistung optimiert.
KI-Engines wurden für rechenintensive Anwendungen optimiert, insbesondere für die digitale Signalverarbeitung (DSP) und einige Technologien der künstlichen Intelligenz (KI) wie Machine Learning (ML) und 5G Wireless-Anwendungen.
Im maschinellen Lernen ist ein Convolutional neuronales Netz (CNN, zu Deutsch etwa „faltendes neuronales Netz“) ein künstliches neuronales Netz, das von biologischen Prozessen inspiriert Anwendung vornehmlich bei der maschinellen Verarbeitung von Bild- und Audiodaten findet. CNNs sind immer wichtiger geworden, da Computer für alles verwendet werden, von autonomen fahrenden Fahrzeugen über Videoüberwachung bis hin zur Analyse von Bildern und Videos im Rechenzentrum. CNNs lieferten hierfür den technologischen Durchbruch.
Die CNN-Techniken stecken noch in den Kinderschuhen, und fast jede Woche werden neue Durchbrüche angekündigt. Das Innovationstempo in diesem Bereich ist hoch und bedeutet, dass neue, bisher unerreichbare Anwendungen in den nächsten Jahren ermöglicht werden dürften.
Die Herausforderung bei CNNs besteht jedoch darin, dass ein hoher Rechenaufwand erforderlich ist, der häufig mehrere TeraOPS erfordert. KI-Engines wurden optimiert, um diese Rechenleistung kostengünstig und energieeffizient zu liefern.
Aus Anwendersicht hat der Overlay-Ansatz viele Vorteile, darunter die Möglichkeit, mit dem Entstehen neuer Netzwerkarchitekturen modifiziert zu werden. Die programmierbare Kombination aus AI Engine und PL bietet eine effiziente und sehr flexible Plattform, die mit fortschreitender Entwicklung des ML-Anwendungsbereichs wachsen und expandieren kann.
Das AI Engine CNN/DNN-Overlay wird sowohl in Rechenzentrumsapplikationen zur Beschleunigung von ML-Netzwerk-Inferenzierungen als auch in Embedded Systemen eingesetzt. Die Integration ist eine einfache Angelegenheit der Instanziierung der Lösung in das Gesamtdesign des Benutzers. CNN/DNN-Netzwerke werden dann mit TensorFlow oder Caffe entwickelt und zu einem ausführbaren Programm kompiliert, das auf dem AI Engine CNN/DNN-Overlay läuft.