ARM TechCon 2015 Architektur ARMv8-M bringt Hardware-Security in Mikrocontroller

Auf der Entwicklerkonferenz TechCon hat ARMs CTO Mike Muller eine neue Mikrocontroller-Architektur präsentiert, welche u.a. die von den Applikationsprozessoren bekannte Sicherheitstechnologie TrustZone auch in die Embedded-Welt überführt. Chip-Hersteller und OEMs können sich zukünftig noch besser durch Software differenzieren.

Bislang gab es für ARMs Cortex-M-CPU-Cores zwei Architektur-Profie: AMv6-M für die kleinsten Cores Cortex-M0/M0+ und ARMv7-M für Cortex-M3, -M4 und –M7. Es gibt dabei nicht nur Unterschiede in der Rechenleistung, sondern auch im Systemdesign, so ist es z.B. in ARMv6-M nicht möglich, exklusive Speicherzugriffe mittels Semaphoren zu erzielen, was z.B. bei Multicore-Implementierungen mit Cortex-M4/M0 die Nutzung von geteiltem Speicher extrem schwierig macht.

Zukünftig wird es ARM-CPUs in zwei Sub-Profilen „aus einem Guß“ geben: „Baseline“ und „Mainline“. Schon das Baseline-Profil bringt einige Verbesserungen gegenüber ARMv6-M, wie einen Hardware-Dividierer (bislang gab es nur einen Hardware-Multiplizierer). Heute sieht man MCUs mit einem proprietären Hardware-Dividierer, der an den Bus angehängt wird. Der Nachteil ist natürlich eingeschränkte Software-Kompatibilität.

Weitere neue Instruktionen betreffen Verzweigungen über den gesamten 32-bit-Adressraum oder einen Vergleich-mit-Null-und-Sprung . Bislang musste der Compiler bei ARMv6-M bei weiten Sprüngen mehrere kleine 16-bit-Sprünge hintereinander erzeugen.

Die sogenannten „Wide immediate Moves“ MOVT und MOV.W können in der Instruktion abgelegte 16-bit-Werte in die oberen bzw. unteren 16 bit eines Registers laden. Ein Fetch ist damit nicht notwendig. Interessant ist das, wenn der Kunde im Speicher einen Bereich als „Execute Only“ definiert hat, um z.B. das Auslesen einer Firmware zu verhindern. Konstanten musste man somit außerhalb dieses Speicherbereiches ablegen, da ein Lesezugriff in einem „Execute Only“-Bereich ja verboten ist und zu einer Exception führt. Damit sind diese Konstanten aber auch potentiell von Hackern auslesbar. Mit diesen neuen Befehlen MOVT und MOV.W können die Konstanten in einem „Execute-Only“ –Speicherbereich versteckt werden und sind gegen Auslesen geschützt.

Wichtig für Multicore-Chips ist die Möglichkeit, exklusiv-Zugriffe auf Daten mittels Semaphoren zu erreichen. Dies war bislang nur in ARMv7-M, nicht jedoch in ARMv6-M möglich. Mit dem „Baseline“-Profil wird diese Eigenschaft auch für die kleinen CPU-Cores möglich.

Last but not least kann jetzt der Status aller Interrupts individuell getrackt werden. Jeder Interrupt kann ja mit einer Priorität versehen werden. Angenommen, es sind 4 Interrupts anhängig, während ein höher priorisierter Interrupt abgearbeitet wird. Man könnte somit die Priorität der 4 anhängigen dynamisch verändern um festzulegen, welcher Interrupt als nächstes abgearbeitet wird.

Das „Mainline“-Profil enthält zusätzlich zu weiteren 32-bit-Befehlen auch optional die schon vom M4 bekannten 80 DSP- und/oder 45 FPU-Instruktionen gemäß IEEE754. Viele Kunden wollen entweder DSP oder FPU haben, somit wollte man die Wahlmöglichkeiten erhöhen. Kunden, die z.B. mit Gleitkomma-DSPs arbeiten, können mit dem Integer-DSP des Cortex-M4 nichts anfangen, haben ihn aber zwangsläufig mitgeliefert bekommen. Dies wird zukünftig nicht mehr der Fall sein, so dass Gatter und Siliziumfläche gespart werden können.

Einen echten Fortschritt bringt die neue MPU für beide Profile: Statt Speicherbereiche nur in Potenzen von 2 KB definieren zu können, kann man jetzt bis zu 128 Bereiche definieren, z.B. einen 274 KB großen Bereich, den man bisher in 4 Bereiche (256 KB + 16 KB + 2x 1 KB) unterteilen musste, was Latenzzeiten und Programmieraufwand erhöhten (Bild 1). Davon abgesehen musste man 4 von den zur Verfügung stehenden Regionen „verbrauchen“, was die Flexibilität eingeschränkt hat. Tatsächlich haben Kunden wegen der Komplexität bislang sogar auf den Einsatz einer MPU verzichtet, obwohl dies aus Sicherheits- und Stabilitätsaspekten natürlich nicht hilfreich ist. Die RTL der neuen MPU ist zwar größer und komplexer (wir schätzen 10-20 % mehr Siliziumfläche), aber die Kosten sind zumindest bei den High-End-CPUs dank Moores Law geringer als vor noch einigen Jahren. Um auch kleinen Derivaten, die ggf. in einem 130-nm-Low-Leakage-Prozess gefertigt werden, gerecht zu werden, bietet ARM Flexibitlität bezüglich der Anzahl der Regionen an. Weniger Regionen bedeutet weniger Gatter und weniger Siliziumfläche.