STM32F7 von STMicroelectronics ARMs Cortex-M7 - der Schlüssel zu sicherheits­kritischen Anwendungen?

Der unter dem Codenamen »Pelican« entwickelte Cortex-M7 soll dank diverser Verbesserungen neue Märkte erschließen, die für Cortex-M3/M4 bislang verschlossen waren. Entwicklungspartner ST­M stellte eine neue STM32F7 genannte Familie vor.

ARMs Cortex-M3 und -M4 stellen im Mikrocontroller-Bereich eine beispiellose Erfolgsgeschichte dar: Abgesehen von MCU-Marktführer Renesas, der nebenbei bemerkt ARM-Cortex-M-Cores schon seit Langem in ASICs einsetzt, und Microchip, das seine PIC32-Controller auf einem in der MCU-Szene exotischen MIPS-Core von Imagination Technologies aufsetzt, bieten alle anderen acht Hersteller der Top-10 im Mikrocontroller-Geschäft ihre Produkte mittlerweile auf Basis von M3 und/oder M4 an, wobei Infineon (C166 u.a.), Atmel (AVR32) und Freescale (ColdFire) ihre proprietären Architekturen aufgrund des Marktdrucks zugunsten einer Standardarchitektur mehr oder weniger aufgeben mussten.
Nichtsdestotrotz gibt es Märkte, auf die es der Cortex-M4 aufgrund diverser Defizite niemals geschafft hat und auch niemals schaffen wird. Entweder fehlt Rechenleistung (auch dank der nur dreistufigen Pipe­line, welche die Taktfrequenzen doch sehr limitiert, und des einfachen Speichersystems ohne TCMs/Caches) oder Eigenschaften für sicherheitskritische Anwendungen (z.B. Fehlererkennung/Korrektur auf Speicher, Lockstep-Betrieb) oder beides.
Diese offensichtlichen Schwachstellen hat ARM beim „Pelican“ beseitigt. Mit seiner superskalaren Befehlsausführung dank der Dual-Issue-6-stufigen In-Order-Pipeline erreicht der Cortex-M7 in einem 40-nm-LP-Prozess eine Taktfrequenz von 400 MHz; die Rechenleistung steigt von 3,4 auf 5,00 CoreMark/MHz, gemessen mit dem IAR-Compiler. Zum Vergleich: Ein PIC32Z von Microchip mit seiner MIPSM4K-CPU kommt auf 3,2 CoreMark/MHz, ein RX64M mit der RXv2-CISC-CPU von Renesas auf 4,25 CoreMark/MHz. Unterstützt wird nunmehr auch Gleitkomma-Arithmetik mit doppelter Genauigkeit, was z.B. für die Nutzung von Mathlab mit automatischer Codegenerierung essentiell ist. Dank der hohen Rechenleistung - und in der Folge noch detaillierter beschriebenen leistungsfähigerer Hardware-Ressourcen - ist neben Mathlab natürlich auch eine produktivere Software-Entwicklung mit Java, der ARMmbed-Entwicklungsplattform oder Micriums µC-Echtzeitsoftware in Betracht zu ziehen.

Deutlich aufgebohrt wurde das Speichersystem (Bild 1). Der Tightly-Cou­pled-Speicher (TCMs) getrennt für In­struk­tionen und Daten für On-Chip-Flash- bzw. -SRAM-Speicher zielt auf deterministische Echtzeitanwendungen; eine 64-bit-AXI-AMBA4-Speicherschnittstelle mit zwei jeweils 4 bis 64 KB großen Caches für Befehle und Daten dient zur Verbindung eines großen externen Speichers; daneben gibt es einen 32 bit breiten AHB-Lite-Bus für die On-Chip-Peripherie.
Wie auch der Cortex-M4 basiert der M7 auf ARMs v7E-M-Architektur, was eine hundertprozentige Code-Aufwärtskompatibilität vom M4 bedeutet (anders herum gilt das dank einiger Cortex-M7-spezifischer Erweiterungen nicht).
Die mit 12 Taktzyklen geringe Interrupt-Latenz des Cortex-M4 konnte beim Cortex-M7 sogar in manchen Fällen noch um einen Zyklus auf 11 Taktzyklen verringert werden, die Regel sind auch hier 12 Taktzyklen (gemessen vom Auftreten des Interrupt bis zur Ausführung der ersten Instruktion in der Interrupt Service Routine). Wichtig: Diese Angaben gelten natürlich nur bei einem Null-Wait-State-Betrieb bezüglich des Speicherzugriffs; beim Cortex-M7 ist es wichtiger denn je, dass ARMs Lizenznehmer, die MCU-Hersteller, Flash-Speicherbeschleuniger (wie z.B. STMicros ART) implementieren.
Die DSP-Leistung konnte gegenüber dem Cortex-M4 verdoppelt werden, u.a. deswegen, weil man neue DSP-Bibliotheken von der amerikanischen Firma DSP-Concept hat entwickeln lassen. Hier wurde eine offensichtliche Schwachstelle der Vorgängerarchitektur erfolgreich angegangen: Mit einigen Derivaten von diskreten 32-bit-DSPs wie ADIs Blackfin oder TIs C28x-Chips (natürlich nicht mit High-End-DSPs, die für 60 Dollar oder mehr verkauft werden, dieser Vergleich wäre hochgradig unfair) kann der Cortex-M7 nicht nur mithalten, sondern z.T. sogar bessere Werte z.B. bei Biquad- oder FIR-Operationen vorweisen.
Bei den Sicherheits-Eigenschaften sind Fehlerkorrektur auf den Speichern (ECC, ein Fehler wird korrigiert, zwei Fehler werden erkannt), Speicherschutz-Einheit (MPU), Speicherselbsttest, Lock-Step-Betrieb und ein Safety Manual zu nennen. Letzteres hilft ARMs Kunden, Anwendungen im Bereich der funktionalen Sicherheit zu zertifizieren.
Diese funktionalen Erweiterungen gehen – da auch ARM die Physik nicht ausschalten kann – natürlich auf Kosten der Leistungsaufnahme. Um diese trotz allem möglichst niedrig zu halten, hat ARM das M7-Design auch in diese Richtung verbessert: Drei separate Power-Domänen (Interrupts, Prozessor, Cache) und gegenüber dem Cortex-M4 deutlich erweitertes Clock Gating und Power Gating ermöglichen ARMs Lizenznehmern deutlich mehr Optionen in Richtung Energiesparen. Dazu kommen vier Energiesparmodi (Power Off, Deep Sleep (WIC), Deep Sleep und Sleep). Im Deep-Sleep-Modus wird der Core komplett abgeschaltet und von einem optionalen Wake-Up-Interrupt-Controller (WIC) wieder aktiviert, was noch energiesparender ist, als wenn der interne Interrupt-Controller NVIC aktiv bliebe.
Tabelle 1 zeigt eine Übersicht der Eigenschaften vom Cortex-M7 im Vergleich zum Cortex-M4.

EigenschaftARM Cortex-M4 ARM Cortex-M7
ISAARMv7M-EARMv7M-E
Befehlslänge16/32 bit16/32 bit
Thumb-AnweisungenThumb-2Thumb-2
Integer-Pipeline3 Stufen6 Stufen Dual Issue
Speicher-ArchitekturHarvardHarvard
L1-Cache (Befehle/Daten)Nein4-64 KB/4-64 KB
TCM (Befehle/Daten)Nein0-16 MB/0-16 MB
FPU (einfache/doppelte Genauigkeit)FPv4 Ja/Nein*FPv5 Ja/Ja
Gleitkomma-Register32x32 bit32x32 bit/16x64 bit
32-bit-DividiererJaJa
SpeicherschutzeinheitOptional 8 BereicheOptional 8 oder 16 Bereiche
Systemschnittstellen3xAHB Lite 32 bit1x64 bit ITCM, 2x32 bit DTCM, 1xAXI 64 bit, 2xAHB Lite 32 bit
Nested Vectored Interrupt Controller1-240 externe Interrupts1-240 externe Interrupts
Interrupt-Prioritäten/NMI256/Ja256/Ja
DMIPS/MHz - CoreMark/MHz (IAR)1,25/1,52** - 3,42,14/2,52** - 5,0
Interrupt-Latenz12 Taktzyklen11-12 Taktzyklen
Energiesparmodi3 (Sleep/Deep Sleep/Deep Sleep WIC)3 (Sleep/Deep Sleep/Deep Sleep WIC)
Echtzeit-Traceoptional nur Codeoptional Code und Daten
Breakpoints/Watchpoints2-6/1-42-6/1-4
Lockstep-OperationNeinJa
Taktfrequenz (maximal) in 40 nm LP300 MHz***400 MHz
Leistungsaufnahme in 90 nm LP33 µW/MHz53 µW/MHz#
Leistungsaufnahme in 40 nm LP8 µW/MHz12,9 µW/MHz#
VorstellungFebruar 2010September 2014
Tabelle 1. Vergleich des Cortex-M7 mit seinem Vorgänger Cortex-M4. *: Nur Laden und Speichern in doppelter Genauigkeit. **: Ohne/mit Inlining. ***: Bei Implementierung ohne MPU und zusätzlichen Interrupt-Prioritäten. #: Schätzung der Fachzeitschrift ELEKTRONIK.