Hotchips 2019 Huawei zeigt Automotive-SoC mit KI-Engine und hoher Performance

Erstmalig hat Huawei bzw. seine Halbleitertochter HiSilicon auf der Hotchips Details seiner DaVinci genannten Architektur für neuronale Netzwerkberechnungen enthüllt. Der Core wird u.a.in einem Automotive-SoC für autonomes Fahren zum Einsatz kommen, das auf eine extreme Rechenleistung kommen düfte.

In Bild 1 ist das Blockschaltbild des vermutlich in einer verbesserten 7-nm-Fertigung (7 nm + genannt) bei TSMC hergestellten SoCs zu sehen. Neben sechs DaVinci-KI-Cores, auf die wir später noch detaillierter eingehen werden, fallen noch andere Building-Blöcke wie vier Sensor-Preprozessoren oder gleich drei Arm Cortex-R52-CPUs (Einsatz als Sensor-Koprozessor, sog. Safety-Island für die Anbindung einer externen Safety-MCU und Secure Engine für sicheres Booten und Power-Management)  ins Auge. Die an der Sensordatenerfassung und –Verarbeitung beteiligten Blöcke sind über einen gleich 1024 bit breiten Mesh-Bus gemäß ASIL-B miteinander verbunden, die Haupt-CPUs und Sicherheits-Blöcke sind über einen 256 bit breiten Ringbus gemäß ASIL-D verbunden.

Als externer Speicher soll  angebunden über eine 192 bit breite Speicherschnittstelle LPDDR5 mit 6400 Mbit/s maximaler Datenrate zum Einsatz kommen und zwar über zwei Kanäle.

Als ob dies noch nicht genug wäre, gibt es noch vier Cluster mit jeweils vier CPUs des Typs Taishan V200, die seitens HiSilicon noch nie zuvor erwähnt wurde – erst Anfang 2019 hatte man den Taishan V110 als Nachfolger des V100 vorgestellt, eine Eigeneentwicklung auf Basis von Arms Cortex-A72, den man mit Hilfe einer Arm-Architekturlizenz gemäß den eigenen Bedürfnissen optimiert hat. Da Details über den V200 nicht genannt wurden, müssen wir uns derzeit auf die wenigen Aussagen bezüglich des V110 beschränken.

Der superskalare Core weist ein 4-fach-Out-of-Order-Design auf und implementiert das ARMv8.2-A ISA. Huawei erklärte, dass der Core fast alle ARMv8.4-Features mit wenigen Ausnahmen unterstützt, einschließlich dot-Produkt und der FP16 FML-Erweiterung. Es verfügt über private 64 K- L1-Befehls- und Daten-Caches sowie 512 KB privaten L2-Cache. Obwohl Huawei kaum auf Details hinsichtlich der Unterschiede zu den Original-Arm-Cores eingeht, sollen die eigenentwickelten CPUs im Vergleich zu Arm's Cortex-Cores ein verbessertes Speichersubsystem, eine größere Anzahl von Ausführungseinheiten und eine bessere Sprungvorhersage aufweisen.

Der Core verfügt weiterhin über eine 128-Bit-NEON-Einheit. Es ist in der Lage, eine einzige doppelpräzise FMA-Vektoranweisung pro Zyklus oder zwei  Vektor-Anweisungen mit einfacher Genauigkeit pro Taktzyklus auszuführen. Es ist anzumerken, dass im Vergleich zum TaiShan v100 der Durchsatz für Vektoroperationen mit einfacher Präzision von 1 auf 2 Anweisungen pro Taktzyklus verdoppelt wurde.

Anzunehmen ist, dass der V200 auf einer weiteren Evolution von Arms Cortex-A-Cores basiert z.B. auf dem Cortex-A76 oder sogar –A77. Wenn man mindestens die Taktfrequenz des V110 (2,6 GHz) zu Grunde legt, kann man ausrechnen, welche Rechenleistung die 16 CPUs im wahrsten Sinn des Wortes auf die Strasse bringen werden.

Die DaVinci-KI-Engine

Viel mehr Details verriet Huawei über seine KI-Engine, deren Blockschaltbild in Bild 2 ersichtlich ist. Herzstück ist die CUBE genannte Struktur für Matrizenberechnungen, die 4096 (163) FP16-MAC- plus 8192 INT8-MAC-Operationen pro Taktzyklus abarbeiten kann. Dazu können 256 2048-bit-INT8/FP16/FP32-Vektoroperationen mit einigen Spezialfunktionen (Aktivierungsfunktionen, NMS- Non Minimum Suppression, ROI, SORT) ausgeführt werden.Neben der größten Ausbaustufe wird es die DaVinci-Mikroarchitektur auch in zwei abgespeckten, d.h. energiesparenden Versionen, geben (Bild 3).

Natürlich stellt sich bei solchen Architekturen immer die Frage, wie man die Ressourcenauslastung zwischen CUBE und Vektoroperationen ausbalanciert.  Ein Ausgleich der Rechenleistung zwischen CUBE und Vektor-Prozessing soll durch Überlagerung der Rechenzeit erreicht werden (Bild 4), dazu erfolgt eine „sorgfältige Zuordnung“ der Anzahl der MACs für CUBE und Vektor-Berechnungen – was das im Detail heisst, wurde nicht gesagt.  Erweiterung der Breite des Datenbusses zwischen L1- Puffer und CUBE soll ebenfalls für die Ausbalancierung hilfreich sein.

Wenn auch rudimentär, aber immerhin äußerte sich Huawei auch zu der ständig wiederkehrenden Frage, wie denn ein einzelner sequentieller Thread Nutzen aus diesen parallelen Ressourcen ziehen soll. Huawei hat dafür eine C-ähnliche Programmier-Schnittstelle mit der Bezeichnung (CCE) entwickelt, mit welcher der Programmierer die Parallelisierung explizit steuern können soll. Typischer DaVinci-Code ist laut Huawei eine Kombination von verschachtelten FOR-Schleifen, bei denen für jeden Schleifenkörper per Software Multi-Threading implementiert werden kann.

Neben dem Automotive-SoC nannte Huawei noch Deatils eines weiteren Ascent 910 genannten SoC vor, das in Cloud-Umgebungen in der Trainingsphase von KI-Modellen zum Einsatz kommen soll und offiziell Ende 2018 vorgestellt wurde.  Dieses wird sogar 16 Cluster mit jeweils 4 Taishan V200-CPUs und 32 DaVinci-Cores beinhalten, was zu einer Rechenleistung von 256 TeraFLOPs bei FP16-Verarbeitung und 512 TeraOPs bei INT8-Daten führt. Gefertigt in 7 nm + wird die Leistungsaufnahme 350 W betragen und die Silizium-Chipgröße 182.4 mm². Dies ist eine extrem hohe Dichte verglichen mit anderen KI-SoCs, das von Tesla vorgestelle V100 kommt z.B. auf „nur“ 120 TeraFlops bei einer Fläche von 416 mm2 (allerdings gefertigt in 12 nm) und Googles TPU der 3. Version auf 105 Teraflops bei unbekannter Chipgröße und unbekanntem Fertigungsprozess.