Am oberen Ende der Rechenleistung 40-nm-STM32H7 bringt ARMs Cortex-M7 auf 400 MHz

Der STM32H7 besitzt 3 Power-Domänen, die zum Einsparen von Energie einzeln mittels Power-Gating abgeschaltet werden können.
Der STM32H7 besitzt 3 Power-Domänen, die zum Einsparen von Energie einzeln mittels Power-Gating abgeschaltet werden können.

Nur 2 Jahre nach Vorstellung der ersten MCU mit ARMs Cortex-M7 hat ST Microelectronics nachgelegt: Der STM32H7 wird statt in 90 nun in 40 nm gefertigt und erreicht 400 MHz. Die DESIGN&ELEKTRONIK hatte exklusiv die Möglichkeit, in den STM32H7 einzutauchen, der mehr als nur ein schnellerer F7 ist.

Gegenüber dem Brot-und-Butter-Cortex-M4, den es mittlerweile in unzähligen Implementierungen unterschiedlichster Halbleiterhersteller gibt, mit seiner Rechenleistung von 3,4 CoreMark/MHz (CM/MHz) erreicht der CortexM7, den ARM unter dem Codenamen „Pelican“ entwickelt hatte, mit seiner Dual-Issue-6-stufigen In-Order-Pipeline 5,00 CM/MHz (beide Werte gemessen mit dem IAR-Compiler). Der STM32H7 kommt mit seinen gemessenen 2010 CM daher auf eine doppelt so hohe Rechenleistung wie der F7. Weitere Details zum M7 an sich folgen später, zunächst soll es um die MCU gehen, STs erster Controller in einem 40-nm-embedded-Flash-Prozess, eine Fertigungsgeometrie, die Wettbewerber Renesas schon länger z.B. für seine RX-MCUs einsetzt.

Der H7 ist allerdings kein einfach auf 40-nm-Fertigung transferierter F7, auch wenn er zahlreiche Peripherie-Blöcke von ihm geerbt hat. Bild 1 zeigt die grundlegende Architektur mit drei Power-Domänen für eine größtmögliche Flexibilität. Die Domäne 1 enthält die CPU, die Caches und den eng angebundenen Speicher (Tightly Coupled Memeory, TCM). Dieser ist getrennt für Instruktionen und Daten und zielt auf deterministische Echtzeitanwendungen. Gegenüber dem F7 wurde er deutlich vergrößert, der Datenteil von 64 auf 128 KB und der Befehls-Teil von 16 auf 64 KB.

Auch die Caches sind – dem mooreschen Gesetz sei Dank – auf jeweils 16 KB für Daten und Instruktionen erweitert worden (F7: jeweils 4 KB), was eine Trefferwahrscheinlichkeit bei einem sequentiell abgearbeiteten Codes, wie man ihn in Embedded-Anwendungen meistens findet, natürlich deutlich erhöht. Der eFlash selbst ist zwar in 40 nm doppelt so schnell wie vorher und kann bis 160 MHz ohne Wait-States arbeiten, bei 400 MHz Taktfrequenz der CPU würde das ohne Caches jedoch nur bedingt helfen. Wegen ihrer vierfachen Größe gegenüber dem F7 hat ST den von vielen MCUs bekannten ART-Beschleuniger (Adaptive-Real-Time) nicht implementiert.

Caches waren vor dem M7 in der ARMv7E-M-Systemarchitektur nicht vorgesehen. Daher musste diese z.B. für Cache-Maintenance-Operationen erweitert werden. Im System-Adressbereich (0xE0100000 – 0xFFFFFFFF) wurden z.B. ab der Adresse 0xE000ED78 vier neue Identifikationsregister mit den Bezeichnungen CLIDR (Cache-Level-ID-Register), CTR (Cache-Typ-Register), CCSIDR (Cache-größen-ID-Register) und CSSELR (Cache-größen-Auswahl-Register) angelegt. Ab 0xE000EF50 beginnt der Cache-Maintenance-Bereich mit 10 weiteren Registern, die z.B. eine Ungültigkeit eines Cache-Inhaltes angeben. Anders als z.B. beim Cortex-A9 MPCore wird beim M7 Cache-Kohärenz nicht hardwareseitig unterstützt.

Als Schaltmatrix kommt in der Domäne 1 ein AXI-Bus zum Einsatz, an den der Master-DMA-Controller (MDMA), Flash (2 MB aufgeteilt in 2 Bänke mit jeweils 1 MB und ECC, 1 Fehler wird korrigiert, 2 Fehler werden erkannt), 512 KB RAM (ebenfalls mit ECC) und vier vom F7 geerbte Peripherieblöcke (Quad-SPI-Dual-Mode-Schnittstelle, TFT-LCD-Schnittstelle, JPEG-Chom-ART und der sogenannte flexible Speichercontroller (FMC)). Letzterer ist eigentlich 3 Controller für externen NOR/PSRAM,  NAND und SDRAM/Mobiles LPSDR SDRAM. Alle beschriebenen Blöcke sind wie in Bild 1 ersichtlich mit der halben CPU-Frequenz getaktet.

Der Master-DMA-Controller bietet u.a. Unterstützung für Link-List-Transfers, bei denen eine verkettete Liste von DMA-Datenübertragungen ohne Einwirkung der CPU durchgeführt werden können. Der Chrom-ART ist ein Hardware-Beschleuniger für 2D-Grafikoperationen, der in Grafik-Stacks integriert und für den Software-Entwickler somit unsichtbar ist.  Es handelt sich im Grunde genommen um eine 2D-DMA-Engine, welche schnelle Datenkopier-Operationen zwischen zwei Ebenen mit Pixel-Konversion als auch Blending-Operationen ermöglicht.

Die Konnektivitäts-Domäne

Der 64-bit-AMBA4-AXI-Bus in Domäne 1 dient zum Zugriff auf Instruktionen und Daten, die sich in Adressräumen außerhalb der TCMs und der AHB-Lite-Peripherie-Schnittstelle bewegen. Dies sind die Adressen 0x60000000 – 0x9FFFFFFF (externes RAM) und 0xA0000000 – 0xDFFFFFFF (externe Devices). Als nativer AXI-Master werden 25-39 ausstehende Schreiboperationen bzw. 5-7 ausstehende Leseoperationen unterstützt. Für eine Maximierung des Datendurchsatzes empfiehlt ARM die Integration eines puren AXI-Systems, nichtsdestotrotz kann der AXI-Bus für preissensitive Systeme auf Kosten des Datendurchsatzes auch wie hier im STM32H7 als Brücke zu einem AHB-Bus dienen.

Dieser stellt die Schaltmatrix der 2. Domäne, der sogenannten Konnektivitätsdomäne, dar. Diese wird mit Ausnahme von langsamen Peripherien wie UART, die mit einem Viertel der CPU-Frequenz getaktet werden, mit der halben CPU-Frequenz getaktet. Das interessante ist u.a., daß sie drei eigene RAM-Blöcke (2 x 128 KB und 1 x 32 KB ebenfalls mit ECC) und zwei DMA-Controller beinhaltet, so daß sie z.B. vollkommen unabhängig von Domäne 1 Daten von ihren Peripherie-Blöcken sammeln  kann. Dies sind Ethernet MAC 10/100 mit Unterstützung für IEEE 1588 v2, SD/MMC,  zwei USB-OTG -Ports (davon einer mit HS-Support), zwei Blöcke für langsame Peripherien wie UART, SPI, I2C und I2S, Crypto/Hash-Prozessor (dieser dient der Hardware-Beschleunigung für AES 128, 192, 256, Triple DES und HASH (MD5, SHA-1)),  zwei eigene Audio-PLL sowie die vom F7 geerbten Timer (16 bit und 32 bit, Low-Power Timer).

Neu entwickelt wurden ein hochauflösender Timer, der mit 400 Mhz getaktet wird und somit auf eine Auflösung von 2,5 ns kommt, 2 CAN-Schnittstellen (TT-CAN und FD-CAN)  und die A/D-Wandler. Gab es beim F7 noch drei 12-bit-A/D-Wandler mit bis zu 24 Kanälen und einer Abtastrate von 2,4 MS/s (bzw. 7,2 MS/s im Interleaved Mode), kommt der F7 mit drei 14-bit-A/D-Wandler mit bis zu 20 Kanälen und einer Abtastrate von 2,0 MS/s daher.

Die „Always On“ Domäne

Ebenfalls über eine AHB-Schaltmatrix an den AXI-Bus angeschlossen ist eine dritte Domäne, die konsequent auf eine Low-Power-Operation wie die Erfassung von Sensordaten ausgerichtet ist. Sie beinhaltet einen Basis-DMA-Controller (BDMA), der vergleichsweise wenige Gatter und Siliziumfläche belegt und wie der Name sage, nur eine Basisfunktionalität, d.h. den puren Datentransfer und einige wenige weitere Aktivitäten wie z.B. das Aufwecken der CPU beherrscht. Der BDMA ist ein einzelner AHB-Port-DMA (gegenüber Dual-Port-DMA in Domäne 2), hat keine internen FIFOs für das Packen bzw. Entpacken von Daten, unterstützt keine Bursts, hat jedoch dieselbe Flexibilität der Konfiguration wie der Controller in Domäne 2 (unabhängige Kanal-Konfiguration). Es können somit Daten von Peripherieblöcken wie den A/D-Wandlern, GPIOs, UARTs, SPI u.a. in einen 64 KB großen RAM-Block übertragen werden, ohne daß Domäne 1 oder 2 aktiv ist.

Ein weiterer Block beinhaltet Echtzeituhr, Tamper-Erkennung und 4 KB RAM. Weitere natürlich Always-On-Blöcke sind die Stromversorgung (PWR) und Reset & Taktversorgung (RCC). Bild 2 zeigt sämtliche verfügbaren Peripherien des STM32H7 auf einen Blick.