Sie sind hier: HomeRubrikenHalbleiterMikrocontroller

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.

Bild 1. Blockschaltbild des Cortex-M7. Unterschiedlich breite Speicherschnittstellen mit TCMs oder Caches adressieren verschiedene Bedürfnisse wie z.B. High-Speed-Codeausführung aus Flash, Zugriff auf externes RAM und Peripherie. Bildquelle: © Elektronik
Bild 1. Blockschaltbild des Cortex-M7. Unterschiedlich breite Speicherschnittstellen mit TCMs oder Caches adressieren verschiedene Bedürfnisse wie z.B. High-Speed-Codeausführung aus Flash, Zugriff auf externes RAM und Peripherie.

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.

ISA ARMv7M-E ARMv7M-E
Befehlslänge 16/32 bit 16/32 bit
Thumb-Anweisungen Thumb-2 Thumb-2
Integer-Pipeline 3 Stufen 6 Stufen Dual Issue
Speicher-Architektur Harvard Harvard
L1-Cache (Befehle/Daten) Nein 4-64 KB/4-64 KB
TCM (Befehle/Daten) Nein 0-16 MB/0-16 MB
FPU (einfache/doppelte Genauigkeit) FPv4 Ja/Nein* FPv5 Ja/Ja
Gleitkomma-Register 32x32 bit 32x32 bit/16x64 bit
32-bit-Dividierer Ja Ja
Speicherschutzeinheit Optional 8 Bereiche Optional 8 oder 16 Bereiche
Systemschnittstellen 3xAHB Lite 32 bit 1x64 bit ITCM, 2x32 bit DTCM, 1xAXI 64 bit, 2xAHB Lite 32 bit
Nested Vectored Interrupt Controller 1-240 externe Interrupts 1-240 externe Interrupts
Interrupt-Prioritäten/NMI 256/Ja 256/Ja
DMIPS/MHz - CoreMark/MHz (IAR) 1,25/1,52** - 3,4 2,14/2,52** - 5,0
Interrupt-Latenz 12 Taktzyklen 11-12 Taktzyklen
Energiesparmodi 3 (Sleep/Deep Sleep/Deep Sleep WIC) 3 (Sleep/Deep Sleep/Deep Sleep WIC)
Echtzeit-Trace optional nur Code optional Code und Daten
Breakpoints/Watchpoints 2-6/1-4 2-6/1-4
Lockstep-Operation Nein Ja
Taktfrequenz (maximal) in 40 nm LP 300 MHz*** 400 MHz
Leistungsaufnahme in 90 nm LP 33 µW/MHz 53 µW/MHz#
Leistungsaufnahme in 40 nm LP 8 µW/MHz 12,9 µW/MHz#
Vorstellung Februar 2010 September 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.