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…