Mikrocontroller für maschinelles Lernen Arm Cortex-M55-CPU und Ethos-U55-NPU pushen KI

Der neueste Cortex-M55-Prozessor ist der leistungsfähigste KI-Cortex-M-Prozessor von Arm und der erste mit der Helium-Vektorverarbeitung, die eine verbesserte, energieeffiziente digitale Signalverarbeitung und maschinelles Lernen ermöglicht.

Der Cortex-M55 ist der erste Cortex-M-Prozessor, der die Armv8.1-M Architektur unterstützt. Mit der Helium-Technologie (auch bekannt als M-Profile Vector Extension, MVE) können Cortex-M55-basierte Produkte eine deutliche Steigerung der Leistung und Energieeffizienz bei Signalverarbeitungs- und Machine-Learning-Anwendungen im Vergleich zu bisherigen Cortex-M-basierten Produkten erreichen. Die Helium-Technologie haben wir bereits im Detail beschrieben.

Der Cortex-M55-Prozessor ist so konzipiert, dass er bei geringem Silizium-Footprint eine höhere Rechenleistung und Energieeffizienz für Steuerungs-, Signalverarbeitungs- und ML-Anwendungen liefert. Konkret erreicht er 4,2 Coremark/MHz und in Kombination mit einer höheren Taktfrequenz sollte er den Cortex-M33 um 20 % übertreffen (dieser liefert 4,02 Coremark/MHz). Bild 1 zeigt das Blockdiagramm, auf dessen Einzelheiten in der Folge noch im Detail eingegangen werden wird.

Der Prozessor ist für ein breite Spektrum von Anwendungen vorgesehen. Zusätzlich zu traditionellen Mikrocontroller-Märkten wie z. B. Consumer-IoT, Industrie- und Motorsteuerungen, Robotik, Medizin- und Fitnessgeräte gibt es viele neue Anwendungssegmente, in denen die Helium-Technologie erhebliche Vorteile bringen kann, z. B. in der Audioverarbeitung, Sprachsteuerung, NB-IoT (Narrow Band IoT), Sensor-Hubs/Sensor-Fusion, Bildsensoren und predictive Maintenance.

Die Cortex-M55-CPU

Die CPU im Cortex-M55 basiert auf einer 4-stufigen Integer-Pipeline (Bild 2), und wenn die optionalen Helium-Vektor-Erweiterungen eindesignt werden, erhöht die Vektor-Engine die Gesamtpipeline-Stufenzahl auf 5. Die Pipeline arbeitet vollständig in Order (d. h. keine Out-of-Order-Ausführung) und beinhaltet eine limitierte Dual-Issue-Ausführung. Zwei Instruktionen können potenziell gleichzeitig verarbeitet werden, wenn die nächsten beiden Instruktionen beide 16 bit breit und abhängig von der Kombination der Instruktionstypen sind. Im Gegensatz zum Cortex-M7-Prozessor ist die Dual-Issue-Fähigkeit des Cortex-M55-Prozessors jedoch begrenzt und somit wird er nicht als superskalarer Prozessor klassifiziert. Dennoch erreicht der Cortex-M55 damit eine Leistung von 4,2 CoreMark/MHz gegenüber 3,42 CoreMark/MHz des Cortex-M4 und 4,02 CoreMark/MHz des Cortex-M33.

Die Pipeline ist in zwei Seiten unterteilt: die Haupt-Pipeline und die erweiterte Verarbeitungseinheit, die nur dann vorhanden ist, wenn FPU- oder Helium-Unterstützung implementiert ist. Die Trennung der Pipeline ermöglicht es, die FPU oder Heliumeinheit herunterzufahren oder in den Status-Erhalt-Zustand (state Retention) zu versetzen, wenn sie nicht benutzt werden. Die 4-stufige Pipeline ermöglicht dem Cortex-M55-Prozessor eine Erhöhung der maximalen Taktfrequenz im Vergleich zum Cortex-M4 um mehr als 10 % (je nach Konfiguration).

Gleitkommaeinheit (FPU)

Die Cortex-M55-FPU-Unterstützung basiert auf der Arm-FPv5 Architektur, die vollständig IEEE-754-konform ist. Wenn die FPU enthalten ist, unterstützt der Cortex-M55-Prozessor skalare Fließkomma-Instruktionen für Datenformate mit halber (16 bit, fp16), einfacher (32 bit, fp32) und doppelter Genauigkeit (64 bit, fp64). Die Unterstützung der halbpräzisen Fließkomma-Arithmetik ist neu in den Arm Cortex-M-Prozessoren – in einer Reihe von Szenarien der Sensordatenverarbeitung ist ein großer Dynamikbereich erforderlich, aber die Signalauflösung muss nicht hoch sein. In solchen Anwendungen kann das Halbgenauigkeits-Fließkommaformat eine gute Lösung sein, da die doppelte Datenmenge pro Taktzyklus im Vergleich zur Verwendung von Einfachpräzisions-Fließkommazahlen (32 bit) verarbeitet und gleichzeitig der Speicherbedarf für Daten reduziert werden kann.

Da die doppelte Präzision in Mikrocontrollern und kleinen IoT-Endpunkten relativ selten ist, konzentriert sich ihre Verarbeitung im Cortex-M55 auf die Optimierung für Geräte mit kleiner Fläche und geringer Stromaufnahme. Durch die native Unterstützung von Fließkomma-Befehlen mit doppelter Genauigkeit ist die Leistung einer solchen Verarbeitung noch deutlich höher als bei Prozessoren, die nicht nativ unterstützen.

Genau wie andere Cortex-M-Prozessoren ist der Cortex-M55 hochgradig konfigurierbar und die Helium-Unterstützung des Cortex-M55 ist ebenfalls optional. Von der Befehlssatzunterstützung sind fünf Kombinationen für FPU und Helium möglich (Tabelle). Diese Optionen ermöglichen es den SoC-Designern, das Cortex-M55-Prozessordesign an ihre spezifischen Anwendungsanforderungen anzupassen.

KonfigurationFPU (Datentypen fp16, fp32, fp64)Helium (Datentypen Vektorfestkomma 8-bit, 16-bit, 32-bit)Helium (Datentypen Vektorgleitkomma fp16, fp32)
1---
2Ja--
3-Ja-
4JaJa-
5JaJaJa

 

Tabelle. Die 5 Konfigurations-Optionen des Cortex-M55 für Gleitkomma- und Vektordaten-Unterstützung.

Wie in unserem Helium-Artikel erklärt, verwendet Helium die Register in der FPU als Vektorregister wieder, und jeder Vektor umfasst 128 bit. Die Cortex-M55-Vektor-Engine ist mit einem 64-bit-internen Datenpfad implementiert, der doppelt so breit ist wie die SIMD-Unterstützung in früheren Cortex-M-Designs (32 bit).

Während jede Helium-Operation zwei Taktzyklen benötigt, erlaubt die Architektur des Cortex-M55, die Ausführungszyklen zwischen den Instruktionen zu überlappen, was zu einem verdoppelten Durchsatz für eine Reihe von Codefragmenten führt, bei denen Speicherzugriffe und Datenverarbeitung parallel durchgeführt werden können (Bild 3). Diese Eigenschaft der Pipeline ermöglicht eine hohe Energieeffizienz durch die gleichzeitige Nutzung mehrerer Hardware-Ressourcen.

Neue Features wie Low-Overhead-Branch-Extensions und neue Vektor-Speicherzugriffsbefehle ermöglichten weitere Leistungssteigerungen. Als Ergebnis ist die Rechenleistung des Cortex-M55 bei der Verarbeitung von Vektordaten über 5 mal höher im Vergleich zu Cortex-M4-Prozessoren. Solche Leistungssteigerungen sind sichtbar bei einer Reihe von Signalverarbeitungs-Algorithmen wie FIR-Filtern, FFT sowie bei ML die Inferenz mit Hilfe von neuronalen Netzen. Bei letzteren soll im Optimalfall sogar eine Steigerung um Faktor 15 möglich sein.

Das Cortex-M55-Speichersystem

Das Konzept des Speichersystems auf dem Cortex-M55-Prozessor ist dem des Cortex-M7-Prozessors sehr ähnlich, jedoch mit einigen Unterschieden auf der Detailebene; das interne Speichersystem ist als zwei Hälften konzipiert. Es gibt ein eng gekoppelten Teil, der für deterministisches Echtzeitverhalten optimiert ist, und ein cachebasiertes Bussystem, um den Cortex-M55 mit Speichersystemen mit höherer Latenzzeit verwenden zu können (Bild 4). Die wichtigsten Schnittstellen sind dabei:

  • die 64-bit-AXI5-Schnittstelle für einen Speicherzugriff mit hoher Bandbreite,
  • der optionale Befehlscache von 0 KB bis 64 KB (0,4, 8, 16, 32, 64 KB) konfigurierbar basiert auf einem 2-Wege-Assoziativ-Cache-Mechanismus und unterstützt optional ECC,
  • der optionale Daten-Cache kann ebenfalls von 0 KB bis 64 KB konfiguriert werden und basiert auf einem 4-Wege-assoziativen Cache-Mechanismus; unterstützt werden Write-Back- (WB) und Write-Through-Strategien (WT) sowie optional ECC.
  • der 32-bit-I-TCM ist optional und kann von 0 bis 16 MB konfiguriert werden, er unterstützt auch Wait-States und optional ECC.
  • der D-TCM ist optional und kann von 0 bis 16 MB konfiguriert werden; er unterstützt auch Wait-States und optional ECC. Im Gegensatz zum Cortex-M7 bietet der Cortex-M55 vier 32-bit-TCM-Schnittstellen, die sich über Bit 2 und Bit 3 des Adresswertes gleichmäßig aufteilen - insgesamt unterstützt die D-TCM-Schnittstelle also bis zu 128 bit pro Taktzyklus Datenübertragungsbandbreite.

Vorhin wurde erwähnt, dass der Helium-Datenpfad innerhalb des Cortex-M55 64 bit breit ist, sodass die Software-Ausführung des Prozessors nur 64 bit pro Zyklus Datenverkehr erzeugen kann. Bei vielen Signalverarbeitungs- oder ML-Verarbeitungsaufgaben muss jedoch auch DMA verwendet werden, um neue Daten in den D-TCM zu übertragen und alte Ergebnisse aus dem D-TCM zu holen, während der Prozessor läuft. Mit der zusätzlichen TCM-Schnittstelle und Bandbreite kann der Prozessor diese Übertragungen gleichzeitig mit Softwarezugriffen verarbeiten. Wenn sowohl die auf dem Prozessor als auch der DMA-Controller laufende Software versucht, auf dieselbe D-TCM-Speicherbank zuzugreifen, wird dem Softwarezugriff eine höhere Priorität eingeräumt, und es ist wahrscheinlich, dass die Software im nächsten Taktzyklus auf eine andere Bank zugreift und der DMA-Transfer dann fortgesetzt werden kann.

  • eine 64-bit-AHB-Slave-Schnittstelle ermöglicht einem DMA-Controller oder anderen Bus-Mastern den Zugriff auf I-TCM und D-TCM. Burst-Transfers werden auf dieser Schnittstelle unterstützt. Das AHB-Protokoll wird verwendet, da diese Anordnung im Vergleich zu AXI einen geringeren Siliziumflächen-Overhead hat, aber eine Bridge kann verwendet werden, um den AXI-DMA-Controller einfach an diesen AHB-Slave-Schnittstellenport anzuschließen.
  • die 32-bit-AHB-Peripherieschnittstelle ermöglicht die einfache Wiederverwendung von älteren AHB-Peripheriegeräten auf dem Cortex-M55. Zusätzlich kann sie die Zugriffslatenzzeit reduzieren, indem sie Zugriffe auf Peripherieregister erlaubt, um die Haupt-AXI-Verbindung zu vermeiden.
  • die 32-Bit Debug AHB5 Slave-Schnittstelle ermöglicht Debug-Komponenten wie dem Debug Access Port (DAP) den Zugriff auf das Speichersystem des Cortex-M55-Prozessors. Alternativ kann ein CoreSight-Debug-Subsystem verwendet werden, wenn ein Cortex-M55-Prozessor in einem Multi-Core-SoC-Design verwendet wird.

Der Coprozessor

Der Prozessor Cortex-M55 unterstützt die gleiche Coprozessor-Schnittstelle, die im Cortex-M33 und Cortex-M35P-Prozessor eingeführt wurde. Vorhandene Hardware-Beschleuniger, die für diese Prozessoren entwickelt wurden, können auf dem Cortex-M55 sofort wiederverwendet werden. Mit Hilfe der Coprozessor-Schnittstelle können SoC-Designer eng gekoppelte Hardware-Beschleuniger erstellen, um eine bestimmte Reihe von Verarbeitungsfunktionen zu beschleunigen. In einer zukünftigen Version des Cortex-M55-Prozessors werden auch kundenspezifische Befehle unterstützt, die eine weitere Möglichkeit zur Beschleunigung spezieller Datenverarbeitungs-Funktionen bieten.

Unterstützung der funktionalen Sicherheit

Damit der Cortex-M55-Prozessor in sicherheitskritischen Umgebungen eingesetzt werden kann, unterstützt er eine Reihe von optionalen funktionalen Sicherheitsfunktionen, einschließlich ECC (Error Correction Code) für Caches und TCMs, Dualcore Lock-Step-Konfigurationsoption und Schnittstellenschutz (Paritätsbits in Busschnittstellen). Mit der Ergänzung des PMC-100 (Programmable Memory-BIST Controller) kann er auch Online-MBIST unterstützen, die es ermöglicht, Cache- und TCM-RAMs während des Prozessorbetriebs zu testen. Für SoC-Designs, die eine Sicherheitszertifizierung erfordern, werden zu einem späteren Zeitpunkt ein Paket für funktionale Sicherheit und eine Software-Testbibliothek (STL) zur Verfügung stehen, um die Sicherheitszertifizierung zu unterstützen und die Systemrobustheit zu erhöhen.

Obwohl nicht als Funktionale Sicherheit klassifiziert, kann die AXI5 RAS (Reliability, Available and Serviceability) Unterstützung bei der Behandlung von ECC-Fehlern helfen.

Der Ethos-U55-Prozessor

Ethos-U55 ist ein Prozessor für neuronale Netzwerke. Er ist konfigurierbar von 32 bis 256 MACs pro Taktzyklus. Mit der Software-Unterstützung für das TensorFlow ML Framework ist der Ethos-U55 für die ML-Beschleunigung in einer Reihe von Embedded/IoT-, Smart-Home- und Wearable-Anwendungen geeignet. Die Anwendungsbeispiele umfassen Spracherkennung, Keyword-Spotting und Bildklassifikation. Im Vergleich zum “Cortex-M55 only” sieht Arm eine weitere Steigerung bei ML-Anwendungen bis zu Faktor 32, so dass kalkulatorisch ein System mit Cortex-M55 plus Ethos-U55 im Vergleich zu einem Cortex-M4-basierten System bei ML-Anwendungen bis zu 480x schneller sein könnte (15x Cortex-M55 vs. Cortex-M4 x 32x Cortex-M55+EthosU55 vs. Cortex-M55 only).

Wie Bild 5 zeigt, ist der Ethos-U55 ist mit zwei AXI-Master-Schnittstellen, einer APB-Schnittstelle zur Programmierung von Konfigurations- und Steuerregistern, einem Interrupt-Signal zur Signalisierung an den Host-Prozessor und Power-Management-Steuersignalen ausgestattet. Die beiden AXI-Master-Schnittstellen sind 64 bit breit – eine für Lese-/Schreibzugriffe und die andere nur für den Zugriff auf Daten im Flash. Sind alle Daten im SRAM, kann die Nur-Lese-Schnittstelle abgekoppelt und nicht genutzt werden.

Die AXI-Schnittstelle(n) auf dem Ethos-U55 ist (sind) 64 bit breit, und die zweite AXI bietet einen dedizierten AXI-Kanal für den Zugriff auf Daten im nichtflüchtigen Speicher in typischen Mikrocontrollersystemen. Für die Mehrzahl der MCU-Anwendungen sind die Befehlslisten für Ethos-U55 vorkompiliert und in Flash-Speichern abgelegt, und der Cortex-M-Prozessor kann die NN-Verarbeitung durch Ausgabe von Startbefehlen und Befehlslistenzeigern über die APB-Steuerschnittstelle starten. Nach Abschluss der Verarbeitung gibt der Ethos-U55 ein Interrupt-Ereignis an den Cortex-M-Prozessor zurück.

Software-Entwickler können von der Verarbeitungsfähigkeit von Ethos-U55 profitieren, indem sie das TensorFlow-ML-Framework nutzen. Nachdem das TensorFlow-Modell in ein TensorFlow Lite (TFL) Modell überführt wurde, wird die TFL-FlatBuffer-Datei dann mit einem Optimierungswerkzeug von Arm überprüft (Bild 6). Das Tool identifiziert, welche ML-Operatoren von der Ethos-U55-microNPU verarbeitet werden können und ersetzt diese durch eine Folge von Spezialoperationen; andere ML-Operatoren können auf dem Cortex-M-Prozessor durch optimierte Kernel aus der CMSIS-NN-Bibliothek verarbeitet werden. Für den unwahrscheinlichen Fall, dass ein ML-Operator weder in der Ethos-U55-microNPU noch in der CMSIS-NN-Bibliothek vorhanden ist, wird die Verarbeitung dieses Operators auf die Verwendung von der Referenzimplementierung zurückgeführt.

Fazit

Mit der zusätzlichen Helium-Technologie erreicht der Cortex-M55 eine signifikante Leistungssteigerung in Signalverarbeitung und maschinellem Lernen auf der kleinen Grundfläche eines Cortex-M-Prozessors. Zusätzlich kann Armv8.1-M auch zur Leistungssteigerung bei Standardanwendungen beitragen, bei denen einige der Datenverarbeitungs-Operationen vektorisiert werden können, und wo einige der neuen Verzweigungsoperationen, Schleifen und bedingte Ausführungsbefehle verwendet werden können, um eine höhere Rechenleistung und kleineren Code zu ermöglichen.

Neben den Leistungsverbesserungen gibt es auch eine Reihe von neuen Funktionen, wie Verbesserung der Sicherheit und neue Funktionen im Debugging. Mit der Coprozessor-Schnittstelle und der Unterstützung für Arms kundenspezifische Anweisungen scheint der Cortex-M55 für viele Low-Power-Embedded- und IoT-Anwendungen, bei denen es auf Leistung, Energieeffizienz und Sicherheit ankommt, geeignet zu sein.

Mit der Weiterentwicklung der Compiler-Technologien können viele Anwendungen die Vorteile der Helium-Technologie nutzen, indem sie einfach die C-Compiler aufrüsten und Helium in den Projektoptionen aktivieren. CMSIS-DSP mit Helium-Unterstützung ist für Softwareentwickler verfügbar, die CMSIS-NN- (Neuronales Netzwerk) Bibliothek wird ebenfalls aktualisiert, um die Helium-Technologie zu unterstützen. Die CMSIS-NN-Bibliotheken sind eng in ML Software Frameworks wie TensorFlow Lite micro integriert. Auch Trusted Firmware-M wird aktualisiert, um den Cortex-M55 Prozessor zu unterstützen.

Es liegt allerdings an Arms Lizenznehmern, die Optionen in ihre Designs zu übernehmen und dem Programmierer diese theoretisch verfügbaren Möglichkeiten auch tatsächlich zur Verfügung zu stellen. In der Vergangenheit gab es ja viele Beispiele, wo aus Kostengründen nützliche Sicherheits-Eigenschaften wie TrustZone nicht auf den Chips implementiert wurden. So wird es vermutlich auch Spar-Versionen des Cortex-M55 z. B. ohne Helium geben, die aus Sicht der Chip-Hersteller „good enough“ für zumindest einige Applikationen sind. In diesen Fällen werden die Vorteile des Cortex-M55 gegenüber den existierenden Arm-CPUs überschaubar bleiben.