Arm_Cortex-M3
Arm_Cortex-M3

== Vectored Interrupt Controller ==
Mit der Implementierung des NVIC verwendet der Cortex-M3 eine echte Vektortabelle, d. h. dort stehen Sprungadressen (Vektoren) statt der zuvor bei ARM-basierten Controllern üblichen vollständigen Befehle. Über sein direktes Interface zum Core können diese Vektoren (Adressen) sehr schnell geladen und angesprungen werden.
Der Interruptcontroller ist beim Cortex-M3 sehr eng mit dem Kern verbunden. Der Prozessor sichert den Kontext automatisch. Weitere Besonderheiten wie „Late Arriving Interrupt“ und „Tail Chaining“, bei dem eine POP/PUSH-Sequenz eingespart wird (vgl. ARM7), ergeben ein sehr effizientes Interruptsystem.
Allgemein kann jedem Interrupt eine Priorität zugewiesen werden, d. h. die Priorität wird nicht über die Position in der Vektortabelle fest vorgegeben. Die Prioritäten können in Gruppen organisiert werden. Interrupts in verschiedenen Gruppen können sich gegenseitig unterbrechen, innerhalb einer Gruppe unterbricht ein Interrupt höherer Priorität keinen niederpriorigen. Das ist wichtig, um Deadlocks bei gemeinsam verwendeter Hardware zu vermeiden.