Effizientere Datenverarbeitung Leistungsgrenzen bei Mikrocontrollern überschreiten

Autor / Redakteur: Kristian Saether* / Holger Heller

MCUs müssen heute u.a. Steuerungsalgorithmen in Echtzeit verwalten, schnelle Kommunikationsprotokolle dekodieren und Signale von HF-Sensoren verarbeiten. Interrupts helfen dabei, Echtzeit-Anforderungen zu erfüllen. Sie stellen aber nur fest, wann ein Echtzeit-Ereignis stattgefunden hat. Die CPU muss daher immer noch mit einbezogen werden, um I/Os und Peripherie zu lesen, bevor Daten verloren gehen.

Anbieter zum Thema

Eine effizientere Datenverarbeitung ergibt sich nicht durch eine höhere Taktfrequenz, was auch die Leistungsaufnahme erhöhen würde, sondern durch interne Änderungen der MCU-Architekturen. Integrierte Coprozessoren finden sich mittlerweile in einer Vielzahl von Embedded-MCUs. Sie entlasten die CPU, können ganze Tasks übernehmen oder unterstützen die rechenintensiven Bestandteile komplexer Algorithmen. Offload Engines vereinfachen dabei die Implementierung dieser Tasks und erübrigen die zeitraubende Treibercode-Entwicklung. Über einfache APIs haben Entwickler Zugriff auf diese Funktion.

DMA- und Eventsystem-Techniken sind Entwicklern weniger vertraut und kommen daher nicht so oft zum Einsatz. DMA-Controller entlasten die CPU mit der Verwaltung von Datenbewegungen, indem sie Datenzugriffe im Hintergrund durchführen, wie z.B. von Peripherieregistern zu internem oder externem SRAM. Der DMA-Controller lässt sich so konfigurieren, dass ein Datenblock vorab auf das On-Chip-RAM geladen wird, damit er für einen schnellen Zugriff zur Verfügung steht, noch bevor die CPU ihn benötigt. Somit entfallen Wartezustände und abhängige Verzögerungen.

Noch weniger Entwickler sind mit dem Eventsystem vertraut, das mit einem DMA-Controller zusammenarbeitet, um weitere CPU-Zyklen auszulagern und die Gesamtstromaufnahme zu verringern. Ein Eventsystem ist ein Bus, der interne Signale einer MCU-Peripherie an eine andere weiterleitet. Tritt ein Event an der Peripherie auf, löst der Bus eine Reaktion anderer Peripherie aus, ohne dabei die CPU zu involvieren - und das innerhalb von zwei Zyklen Latenzzeit.

Einblick in ein Eventsystem

Ein Eventsystem leitet Signale über ein eigenes Netzwerk durch die MCU, was die CPU, den Datenbus, Peripherie und den DMA-Controller miteinander verbindet. Um eine Reaktion hervorzurufen, muss die Peripherie die CPU normalerweise unterbrechen - wie auch das Lesen der Peripherie. Durch das direkte Weiterleiten von Events innerhalb der Peripherie entlastet das Eventsystem die CPU von diesen Interrupts.

Bild 1: Zusammenarbeit zwischen Eventsystem und Direct Memory Access (Archiv: Vogel Business Media)

Die Kombination aus DMA und Eventsystem ermöglicht das Ausgliedern ganzer Tasks, genauso wie bei einem Coprozessor. Der Unterschied ist nur, dass Coprozessoren nicht programmierbar sind. Bild 1 zeigt ein Blockdiagramm, wie ein Eventsystem und DMA zusammenarbeiten. Der A/D-Wandler ist mit einem Sensor verbunden und sammelt Daten. Ein interner Zähler wird so eingestellt, dass er der Abtastfrequenz entspricht, um regelmäßige und genaue Intervalle bereitzustellen.

(ID:346475)