CPU - ARM Cortex M4

ARM CPU
By ViswesrOwn work, CC BY-SA 3.0, Link

Einleitung

Im Folgenden werde ich einen Überblick über die ARM (früher stand ARM für Advanced RISC Machines, heute ist es nur die Firmenbezeichnung) erstellen. Außerdem werde ich mich auch auf meinen speziellen Fall des Cortex M4 beziehen.

Erklärung von ARM

ARM-Prozessoren unterstehen der RISC-Architektur (Reduced Instruction Set Computer) und man findet sie zumeist in Handys, Tablets, Steuerboards und in meinem Fall in Mikrocontrollern. Diese CPUs werden bei 32- und 64-Bit in SoCs (System on a Chip) entwickelt. Das bedeutet, dass auf diesem Chip bereits alles vorhanden ist, um die vorhergesehene Funktionalität zu gewährleisten. Also die Kombination aus verschiedenen Elementen auf einer Platine. Allerdings erstellt ARM nur die Architektur hierfür. Die SoCs selbst werden dann von Chipherstellern wie Apple, ST oder NXP gebaut. ARM-Prozessoren können beispielsweise aus einem Hauptprozessor, einem Grafikprozessor, einem Speichercontroller, GPS und Mobilfunk bestehen. Letzteres, weil die Anwendungsbereiche so vielfältig sind, sodass diese Funktion oft benötigt und nachgefragt wird.

Blockdiagramm des ARM Cortex-M4

Der Cortex M4 ist ein 32-Bit-Prozessor aus der Cortex-M-Serie und basiert auf der ARMv7E-M-Architektur. Das bedeutet, dass er erweiterte Funktionen hat im Gegensatz zur M3. Die M-Serie wurde entwickelt, um Echtzeitanwendungen und eingebettete Systeme kostengünstig, effizient und stromsparend zu nutzen.

Für schnelle Signalverarbeitung bietet der Cortex M4 sogenannte DSP-Instruktionen (z. B. SIMD, MAC – Multiply-Accumulate). Außerdem kann der Cortex M4 auch in der "F"-Variante ausgegeben werden, was zur Nutzung von Fließkommazahlen gemacht ist (FPU).

  • Nested Vectoring Interrupt Controller (NVIC) = Reduzierte Interrupt-Latenz und priorisiertes Handling
  • Memory Protection Unit (MPU) = Debug- und Trace-Funktionalität

Unterschiede in der Programmiermethodik

Unterschiede gibt es in den verschiedenen Instruktionsgruppen. Im Studium haben wir mit der Gruppe Thumb1 gearbeitet, hier ein kleines Beispiel über "armKEIL uVision5":

Ausschnitt meiner main.s-Datei 'Stoppuhr'

Zur Erklärung, was hier passiert: Ich verwende verschiedene Instruktionen (in Assembly), um Register miteinander arithmetisch zu bearbeiten und im Flash des Mikrocontrollers (STM32F ARM Cortex M4) zu speichern. Die gezeigten Instruktionen wie STR (Store Register), LDR (Load Register) oder MOV (Move) verwende ich, um Werte in Register zu schieben oder zu speichern. Diese nennt man Instruktionen und sie lassen sich in die THUMB1-GROUP einordnen. M4 beinhaltet das gesamte THUMB1-Instructions-Set. Es gibt noch weitere Instruktionen, die von anderen M-Modellen nicht unterstützt werden. Zum Beispiel die SP-Float-Gruppe. Diese gibt es, wie oben erwähnt, optional zu den M4-Modellen. Standardmäßig dabei ist sie aber bei keiner Architektur. Cortex M23, Cortex M3 und Cortex M0, M0+, M1 bieten gar keine Möglichkeit zur Rechnung mit Fließkommazahlen. Die Instruktionen sehen zum Beispiel so aus: VABS, VADD, VCMP.

Unterschied zur x86-Architektur

Vergleichsgrafik ARM vs. x86

Ein zentraler Unterschied zwischen ARM- und x86-Prozessoren liegt in der Architektur. Während ARM auf einer RISC-Architektur (Reduced Instruction Set Computer) basiert, ist x86 eine CISC-Architektur (Complex Instruction Set Computer). Dadurch ist der Instruktionssatz von ARM deutlich einfacher, was zu einer energieeffizienteren Ausführung führt. x86-Prozessoren dagegen bieten oft höhere Rechenleistung und sind besser für komplexe Betriebssysteme und Software mit hohen Anforderungen geeignet. In der Praxis bedeutet das: x86 findet man überwiegend in Desktop-PCs, Laptops und Servern, während ARM-Prozessoren in Smartphones, Tablets und eingebetteten Systemen dominieren. Ein interessanter Trend ist, dass ARM mit Prozessoren wie dem Apple M1/M2 inzwischen auch im klassischen PC-Bereich an Bedeutung gewinnt.

Abschluss und Fazit

Zusammenfassend lässt sich sagen, dass der ARM Cortex-M4 eine effiziente Lösung für Anwendungen ist, die geringe Leistungsaufnahme, Echtzeitfähigkeit und dennoch solide Rechenleistung erfordern. Besonders im Bereich eingebetteter Systeme zeigt er seine Stärken. Für mich persönlich ist der Cortex-M4 spannend, weil er die Brücke zwischen Theorie (z. B. Instruktionssätze im Studium) und Praxis (z. B. Steuerungen in der Elektrotechnik) schlägt. In Zukunft wird ARM wahrscheinlich noch stärker an Bedeutung gewinnen. Nicht nur im Embedded-Bereich, sondern auch in Laptops, Servern und vielleicht sogar High-Performance-Computing.