Perfektes Timing

In Embedded-Systemen kommt es häufig auf das richtige Timing der Ein- und Ausgangssignale an. Gleich einem separaten, kleinen Mikrocontroller kümmert sich die programmierbare Enhanced-Time-Processor-Unit um diese Aufgaben und entlastet damit den Controller-Kern.

In Embedded-Systemen kommt es häufig auf das richtige Timing der Ein- und Ausgangssignale an. Gleich einem separaten, kleinen Mikrocontroller kümmert sich die programmierbare Enhanced-Time-Processor-Unit um diese Aufgaben und entlastet damit den Controller-Kern.

Die Anforderungen an Mikrocontroller, die in Embedded-Systemen für Echtzeit-Anwendungen zum Einsatz kommen sollen, konzentrieren sich in erster Linie auf akkurates und effizientes Timing und erst in zweiter Linie auf Rechenleistung. Der Prozessor muss die Erzeugung der Steuersignale in Abhängigkeit von den Eingangsstimuli gewährleisten. Die Grenzen für die zugrunde liegenden mathematischen Aufgaben des Steuerungsalgorithmus sind durch die Verarbeitungszeiten zwischen Ein- und Ausgängen vorgegeben. Jeder Prozessor kann nur mit einem bestimmten Leistungsdurchsatz aufwarten. Dieser hängt von der Art der Anwendung ab. Betrachtet man beispielsweise einen Prozessor in einem Logikanalysator, wo die Abtastung des Eingangssignals eine sehr schnelle Logik, aber fast keine Berechnungen erfordert, dann liegt der Schwerpunkt anders als bei einem MP3-Diktiergerät, wo die mathematischen Berechnungen im Vordergrund stehen.

Anwendungen mit kritischem Timing setzen eine rasche Abarbeitung von Interrupts voraus. Die Abarbeitung eines Interrupt beginnt mit dem Speichern des aktuellen Task-Kontexts der CPU und endet mit dessen Wiederherstellung – auch „Service-Overhead“ genannt. Es hat sich gezeigt, dass der Service-Overhead für einen solchen Interrupt in manchen Anwendungen bis zu 70 % der CPU-Zeit ausmachen kann.

Das beschriebene Problem lässt sich auf mehrere Weisen lösen, beispielsweise, indem man der CPU einen zweiten Hauptregistersatz spendiert. Der Kontext des aktuellen Task muss dann vor der Abarbeitung eines Interrupts nicht gespeichert werden, sondern die CPU schaltet lediglich auf den zweiten Registersatz um. Ist die Bearbeitung des Interrupts beendet, schaltet die CPU auf den ersten Registersatz zurück, in dem der Kontext unverändert zur Verfügung steht. Diese Methode weist einige Einschränkungen auf – so können die Interrupts beispielsweise nicht geschachtelt werden. Als Lösungsansatz kommen noch spezielle Hardwaremodule für bestimmte Aufgaben in Frage. Das PWM-Modul beispielsweise erzeugt unabhängig von der CPU PWM-Signale, und die CPU legt lediglich die benötigte Periode und das Tastverhältnis des zu erzeugenden Signals fest. Das UART-Modul erledigt die serielle Kommunikation und tauscht mit der CPU lediglich die empfangenen und zu sendenden Daten aus. Je mehr Peripheriemodule ein Prozessor hat, desto universeller ist er einsetzbar.

Die „eTPU“ (enhanced Time Processor Unit) gehört ebenfalls zu den Peripheriemodulen; ihre Funktion besteht darin, Aufgaben mit anspruchsvollem Timing zu verarbeiten und damit die CPU zu entlasten. Sie stellt ein programmierbares Modul dar, das sich von anderen Bausteinblöcken unterscheidet. Man kann sagen, die eTPU ist ein Co-Prozessor, ein kleiner Mikrocontroller, der parallel zur Haupt-CPU arbeitet. Sie wurde speziell dafür konzipiert, zeitkritische Aufgaben zu erledigen. Freescale Semiconductor setzt das eTPU-Modul vor allem ein in seinen 32-bit-Prozessoren der Baureihen MCF523x (ColdFire-Familie) und MPC5500 (Power Architecture-Familie).