Mehrkern-Anwendungen

In vier Schritten Embedded-Software auf Multicore-Systeme portieren

Seite: 2/2

Firmen zum Thema

Es besteht ein hoher Bedarf an neuen Tools

Für jeden der vier Schritte existieren bereits grundlegende Werkzeuge, die jedoch für einen effizienten Einsatz in der Software-Entwicklung für eingebettete Multicore-Systeme optimiert werden müssen. Für die dynamische Analyse, die in zwei Phasen der Migration zum Einsatz kommt, gibt es Profiler als Teil der Werkzeugkette und spezielle Tools zur Visualisierung des Verhaltens paralleler Anwendungen.

Diese Visualisierungs-Tools werden im Bereich des High Performance Computing und von Prozessor-Herstellern, wie Intel und AMD, angeboten. Die Auswahl an Werkzeugen, die den zusätzlichen Anforderungen eingebetteter Systeme genügen, ist gering, weshalb oftmals das Verhalten eines Systems aus mehreren Anwendungen optimiert werden muss. Gerade für eingebettete Systeme benötigt man Werkzeuge, die Interaktionen verschiedener Anwendungen in einem System erfassen.

Ein weiteres Problem ist, dass der Einsatz von Analysetools häufig mit einem Overhead verbunden ist, der das Zeitverhalten des zu untersuchenden Programms beeinflusst. Besonders wenn es um Echtzeit-Anwendungen geht, ist der Nutzen dieser Tools begrenzt. Hier benötigt man Werkzeuge, die mit Hardwareunterstützung – beispielsweise über die JTAG-Schnittstelle – Laufzeitinformationen des Systems ermitteln, ohne es zu beeinflussen.

Programmierfehler aufdecken und Abhängigkeiten aufspüren

Die Tools zur statischen Codeanalyse konzentrieren sich auf das Aufspüren von Programmierfehlern. Sie können aber auch eingesetzt werden, um Abhängigkeiten innerhalb des Programms aufzudecken, die zu Problemen bei der Parallelisierung führen. Auch eine Abschätzung des Aufwands einer bevorstehenden Migration ist mit Hilfe von Codeanalysen möglich. Die hierfür benötigten Tools werden aber bisher nicht angeboten.

Für das Refactoring werden in Entwicklungsumgebungen Funktionen angeboten, die den Quellcode aber nur oberflächlich bearbeiten. Tiefergehende Änderungen, wie sie für eine Parallelisierung erforderlich sind, werden nicht ausreichend unterstützt. Für die eigentliche Parallelisierung gibt es eine große Auswahl an Möglichkeiten. Angefangen bei der direkten Verwendung von Threads reichen die Optionen bis zu Template-Bibliotheken und zu neuen Programmiersprachen, die eine leichtere parallele Ausführung versprechen. Allerdings ist die Auswahl der Werkzeuge in der Embedded-Entwicklung oft sehr eingeschränkt, zum Beispiel durch die fehlende Verfügbarkeit auf der Zielplattform.

Zusammengefasst sind die vorhandenen Werkzeuge in zwei Kategorien anzuordnen:

  • Tools, die sich in der Embedded-Entwicklung bewährt haben, allerdings erweitert werden müssen, um parallele Architekturen zu unterstützen.
  • Tools, die sich in der Entwicklung paralleler Anwendungen bewährt haben, allerdings an die Anforderungen der Embedded-Entwicklung angepasst werden müssen.

Damit Programmierer in Zukunft Software für parallele eingebettete Systeme problemlos entwickeln können, arbeiten die Forscher der Fraunhofer ESK an Tools, die sowohl den Kriterien der Embedded-Entwicklung, als auch den Ansprüchen von Multicore-Systemen gerecht werden.

* * Adriaan Schmidt ist wissenschaftlicher Mitarbeiter am Fraunhofer ESK und Prof. Dr. habil. Christian Prehofer ist Kompetenzfeldleiter Adaptive Communication Systems Fraunhofer ESK in München.

Artikelfiles und Artikellinks

(ID:26838580)