Anders als bei den meisten Single-Core-Motorsteuerungen läuft heutzutage bei mit Multi-Core-MCUs ausgestatteten Steuergeräten ohne entsprechende Debug-Unterstützung auf dem Chip so gut wie gar nichts mehr. Denn nur so lassen sich eine synchrone Ablaufsteuerung für Stop-&-go-Debugging oder das rückwirkungsfreie Beobachten von echt nebenläufigen Tasks realisieren. Aber auch die weitere Aufbereitung der Debug-Informationen und deren übersichtliche Präsentation in Echtzeit auf dem Bildschirm des Entwicklers ist eine echte Herausforderung.
Im Bereich der Unterhaltungselektronik sind Multi-Core-Systeme längst etabliert. Dort verteilt das Betriebssystem die einzelnen, unabhängig voneinander laufenden Anwendungen auf die einzelnen CPUs, die typischerweise allesamt gleichartig, also homogen sind. Je nach aktueller Rechenlast der Prozessorkerne erfolgt die Verteilung der Applikation, die meist gar nicht weiß, dass sie auf einem Multi-Core-System läuft, dynamisch zur Laufzeit. Damit soll eine hohe Systemleistung, gepaart mit einer möglichst gleichmäßigen Auslastung der CPUs, erzielt werden.
Multi-Core-Systeme in Motorsteuerungen hingegen sind in der Regel alles andere als homogen. Hier ist meist nur ein Teil der CPUs für den universellen Einsatz ausgelegt; die anderen Prozessorkerne sind für Spezialaufgaben vorgesehen. Die neuen Multi-Core-Controller von Infineon (Bild 1) beispielsweise verfügen über insgesamt bis zu drei TriCore-Prozessorkerne und als vierten, stark heterogenen Prozessorkern über ein zusätzliches, sehr leistungsfähiges, programmierbares Timer-Modul. Selbst die TriCore-Kerne sind nicht allesamt gleichartig. Sie unterscheiden sich zum einen in Rechenleistung und Energieaufnahme, zum anderen durch ihre Sicherheitsfunktionen. So besitzen zwei der drei CPUs zusätzlich sogenannte Lockstep-Kerne. Diese führen im Hintergrund die gleichen Operationen auf den gleichen Daten wie ihre Master-Kerne aus und vergleichen die Ergebnisse. Damit kann ein etwaiges Fehlverhalten, beispielsweise durch einen Hardware-Defekt, im realen Betrieb aufgespürt und sofort korrigiert werden.
Die Herausforderung für die Entwickler der Steuergeräte-Software besteht nun darin, ihren zum Teil über viele Jahre gewachsenen und gereiften Code so auf die CPUs des Multi-Core-Systems zu verteilen, dass die korrekte Funktion weiterhin gewährleistet bleibt. Zusätzlich ist beim Wechsel auf eine neue Rechenplattform auch immer zu prüfen, ob Randwerte wie Latenz, Antwortverhalten oder Energieaufnahme noch der Spezifikation entsprechen. In der Regel sollen auch neue Funktionen realisiert werden, die die im Vergleich zu Single-Core-Systemen größeren Rechen-Ressourcen mehrerer Prozessorkerne ausnutzen sollen. Jedoch kann der zusätzliche, oftmals CPU-übergreifende Kommunikationsaufwand die angestrebte Verarbeitungsgeschwindigkeit negativ beeinflussen.
Der Umstieg auf Multi-Core ist also keine einfache Aufgabe. Die Heterogenität der Multi-Core-Controller macht es notwendig, bereits während der Entwicklung bzw. Portierung der Software festzulegen, welcher Teil der Applikation auf welchem Prozessorkern ausgeführt werden soll. Diese Entscheidung liegt letztlich beim Software-Entwickler. Der muss genau abwägen, wann beispielsweise volle Rechenleistung gefordert ist oder wann eine niedrigere Energieaufnahme.