ARM Cortex

War die ARM-Welt fr├╝her durch die drei unterschiedlichen Kerne relativ ├╝bersichtlich ist sie durch die Einf├╝hrung der ARMCortex-Kerne recht komplex geworden. Es gibt im Augenblick drei ARMCortex-Serien, die f├╝r unterschiedliche Anwendungen optimiert sind. Zus├Ątzlich gibt es in diesen Serien unterschiedliche Kerne, die sich in der Leistungsf├Ąhigkeit unterscheiden. Dadurch entsteht am Ende eine sehr gro├če Vielfalt von Kernen mit denen jetzt wahrscheinlich wirklich alle Anwendungen abgedeckt werden k├Ânnen.

ARMCortex-Serien und Unterklassen im ├ťberblick:

  • Cortex-M
    Hauptanwendung dieser Serie ist der Einsatz als Embedded Controller bei Mess-, Steuer- und Regelaufgaben.
CORE-Name Eigenschaften Max. Clk (MHz)
Cortex-M0 Kleinster Cortex-Kern, optimiert auf DICE-Gr├Â├če und Energieverbrauch. Anwendungsbereich: Ersatz von 8/16-Bit Controllern, Embedded in FPGA’s 50 MHz
Cortex-M3 Standard-Kern f├╝r MSR-Aufgaben 120 MHz
Cortex-M23 Cortex-M33 Cortex-Kern f├╝r IOT-Anwendungen mit erweiterten Sicherheitsfunktionen >120MHz
Cortex-M4 Cortex-Kern mit DSP-Erweiterung f├╝r rechenintensive Anwendungen (Motorregelungen, Stromrichter usw.) 200MHz
Cortex-M5 Cortex-Kern mit DSP-Erweiterung und erweiterten Caching-Methoden f├╝r rechenintensive und Kommunikationsanwendungen >200MHz
Cortex-M7 Cortex-Kern mit DSP-Erweiterung und erweiterten Caching-Methoden f├╝r rechenintensive und Kommunikationsanwendungen >1GHz
  • Cortex-A
    Diese Serie ist f├╝r leistungsf├Ąhige Multimediasystem, Smartphones usw. gedacht.
CORE Eigenschaften Max. Clk (MHz)
Cortex-A7 Low Power Kern, der eigentlich als Mehrfach-Core zur Zusammenarbeit mit dem A15-Kern entwickelt wurde > 1 GHz
Cortex-A8 SingleCore Applikationsprozessor mit NEON SIMD Coprozessor und Vektor-FPU > 1 GHz
Cortex-A9 DualCore Applikationsprozessor > 1 GHz
Cortex-A15 Cortex-Kern optimiert f├╝r Multicore-Prozessoren (QuadCore) > 1GHz
Cortex-A5x Cortex-Kern optimiert f├╝r Multicore-Prozessoren Little / Big-Core Konzept > 1GHz
usv. alle 1 bis 2 Jahre eine neue optimierte Version
  • Cortex-R
    Spezial-Kern f├╝r Sicherheitsrelevante Anwendungen. Dieser Kerne enthalten diverse interne Test- und Pr├╝fverfahren die sicherstellen, das der Controller ordnungsgem├Ą├č arbeitet und Fehler erkannt werden k├Ânnen bevor Schaden entsteht.

Die Haupt├Ąnderung der Cortex-Familie gegen├╝ber den alten ARM-Kernen ist, dass nur noch der “Thumb2”-Befehlssatz unterst├╝tzt wird. Dadurch ist der neue Kern nicht mehr vollst├Ąndig Befehlskompatibel zu den alten ARM-Kernen. Mit diesen Bruch k├Ânnten ein paar Probleme der alten Architekturen gel├Âst werden und weitere Optimierungen bez├╝glich der Rechenleistung und Herstellungskosten durchgef├╝hrt werden.

├ťbersicht Rechenleistung der einzelnen ARM-Kerne:

CORE DMIPS/MHz Max. Clk (MHz)
ARM7 0.95 < 100MHz
ARM9 1.1 < 500MHz
CortexM0 0.95 50MHz
CortexM3 1.25 > 100MHz
CortexA8 2 > 1 GHz
CortexA9 2.5 > 1GHz

Durch den Wegfall des alten ARM-Befehlssatzes werden viele Probleme, die sich bei der Umschaltung zwischen ARM- und Thumb-Code z.B. in Interruptroutinen ergeben, vermieden. Au├čerdem hat die Cortex-Familie jetzt einen Interruptcontroller und Systemtimer von ARM, der in allen Cortex-Controllern eingebaut ist.

Der neue Interrupt-Controller ist direkter an den Kern angebunden und sorgt jetzt automatisch daf├╝r, dass alle Register beim Einsprung in eine Interrupt-Routine gesichert werden. Dadurch entf├Ąllt die Notwendigkeit eigene Interrupt-Wrapper in Assembler zu schreiben. Ein angenehmer Nebeneffekt dieses hardwaregesteuerten Content-Switching der Register ist, dass die Interruptlatenz bei den M-Typen immer gleich ist. Eine Ausnahme bildet hier allerdings der M7-Kern, f├╝r den das nur gilt, wenn man sich in den TCM-Speicherbereichen aufh├Ąlt, in den anderen Speicherbereichen ginbt es zus├Ątzliche Latenzen durch die Caching & Sprungvorhersagen. Bei den alten ARM-Kernen war die Interrupt-Latenz davon u.a. abh├Ąngig, welchen Befehlscode (ARM oder Thumb) bei Auftreten des Interrupts gerade ausgef├╝hrt wurde.

Mit der standardisierten Basisarchitektur aus Interruptcontroller und Systemtimer rund um den Kern hat ARM auch die M├Âglichkeit geschaffen einen Standard f├╝r die Initialisierung des Kerns einzuf├╝hren. Der neue Standard hei├čt “CMSIS” und wird von den meisten Tools bereits unterst├╝tzt. Insgesamt vereinfacht sich die Portierung von Software zwischen einzelnen Cortex-Controllern und auch der Wechsel der Entwicklungstools wird erleichtert.

Die ARMCortex-Familie ist durch die Vereinfachung des Kerns und die bessere Anbindung des Interruptcontrollers sehr viel einfacher zu behandeln als das bei den “Classic”-Typen der Fall war. Die Lernkurve ist gerade am Anfang nicht so steil wie fr├╝her, als man als Erstes die passenden Startup-Files in Assembler programmieren oder sich zusammen suchen m├╝sste. Trotzdem sind die Cortex-Controller durch die komplexen Peripherie-Einheiten nicht wirklich gut f├╝r den Einstieger geeignet. Wenn allerdings bereits ein paar Erfahrungen mit der Programmierung von Controllern vorhanden sind, gibt es keinen Grund nicht einen Cortex-Controller einzusetzen. F├╝r viele Cortex-Controller gibt es im Augenblick sehr g├╝nstige Controllerboards, die eine gute Basis f├╝r den Einstieg bieten. Mehr dazu auf der folgenden Seite…