ARM-Prozessoren im Vergleich

ARM7-Core oder Cortex-M3 als Basis?

Seite: 2/4

Anbieter zum Thema

Während der ARM7 die ARM- und Thumb-Befehlssätze enthält, unterstützt der Cortex-M3 nur den Thumb-2, der eine schnellere und einfachere Implementierung ermöglicht:

  • es müssen keine Zustandswechsel zwischen Thumb- und ARM-Code durchgeführt werden, was die Performance früherer Prozessoren beeinträchtigte,
  • Thumb-2 ist speziell für die C-Implementierung entwickelt worden und enthält ein If/Then-Konstrukt (bedingte Ausführung der nächsten vier Befehle); Hardware-Division und native Bitfeld-Manipulation,
  • Thumb-2 ermöglicht die Wartung und Modifikation von Anwendungen auf C-Code-Ebene; Teile des C-Codes lassen sich leicht wiederverwenden,
  • Thumb-2 enthält die Funktionen, die normalerweise einen Aufruf von Assembler-Code erfordern würde: TI (Luminary) versichert, dass sich der Entwickler nicht in die Assembler-Ebene begeben muss.

Der Cortex-M3 ist auch mit dem Nested Vector Interrupt Controller (NVIC) ausgestattet und lässt sich vom IC-Implementierer so konfigurieren, dass bis zu 240 physikalische Interrupts und 256 Prioritätsebenen von 32 physikalischen Interrupts mit acht Ebenen Pre-Emption-Priorität zur Verfügung stehen. Das Design ist deterministisch, mit geringer Latenz ausgestattet und eignet sich vor allem für Automotive-Anwendungen.

Der NVIC nutzt ein stackbasiertes Exception-Modell. Programm-Counter, Programm-Statusregister, Link-Register und universelle Register werden alle auf den Stack gehoben, um den Interrupt zu verarbeiten.

Nach dessen Abschluss werden die Register wiederhergestellt. Die Stack-Handhabung erfolgt in Hardware, sodass keine Assembler Wrappers zur Stack-Manipulation bei Interrupt-Service-Routinen erstellt werden müssen.

Kürzere Latenz, höhere Leistungsfähigkeit

Interrupts lassen sich ineinander verschachteln. Ein Interrupt kann eine höhere Priorität erhalten, um eher abgearbeitet zu werden, Prioritätsgrade lassen sich während der Laufzeit ändern. Aneinander gereihte Interrupts benötigen nur drei Zyklen – im Vergleich zu 32 Zyklen für sukzessives Pop und Push. Damit verkürzt sich die Latenz, die Performance steigt.

(ID:313913)