Software-Projektmanagement

Multicore-Software mit APP4MC entwickeln

12. Oktober 2018, 14:33 Uhr | Von Lothar Gamer, Simon Kramer, Franck Youk, Peter Häfele und Dr. Stephan Grünfelder
Diesen Artikel anhören

Fortsetzung des Artikels von Teil 1

Optimierung bei Aufgaben­verteilung

Die Integration von Software-Teilen auf einem Multi-Core-Steuergerät ist eine herausfordernde Aufgabe: Zum Integrationszeitpunkt müssen viele verschiedene Entscheidungen getroffen werden, die die Ausführung des Systems maßgeblich betreffen. Zum Beispiel

  • die Verteilung der ausführbaren Runnables auf die verschiedenen periodisch aufgerufenen oder durch ein Ereignis geweckten Tasks,
  • die Verteilung der Tasks auf die verfügbaren Rechenkerne,
  • die Verteilung der Variablen und Puffer auf die zur Verfügung stehenden Speicher-Einheiten.

Man ist gut beraten, die Entscheidungen so zu treffen, dass das System »optimal« ist. Nur ist das eine multifaktorielle Aufgabe. Die zu berücksichtigenden Faktoren sind unter anderen

  • gleichmäßige Verteilung der Rechenlast auf die verfügbaren Kerne (Core Balancing),
  • Minimierung der der Signallaufzeiten entlang gegebener Signalpfade/Wirkketten,
  • Reduktion des Kommunikations-Overheads zwischen verschiedenen Tasks.

Viele Entscheidungen dieser Art beeinflussen sich gegenseitig – z. B. Core Balancing und der Kommunikations-Overhead: Werden zwei Tasks auf denselben Kern gelegt, so wird die Kommunikation minimiert, aber die Lastverteilung in vielen Fällen verschlechtert. Amalthea unterstützt bei einer solchen Optimierungsaufgabe.

passend zum Thema

Mit APP4MC visulalisierte Cross-Core-Kommunikation eines anspruchsvollen Steuergeräte-Projekts vor der Optimierung.
Bild 3. Mit APP4MC visulalisierte Cross-Core-Kommunikation eines anspruchsvollen Steuergeräte-Projekts vor der Optimierung.
© Bild: Robert Bosch

Zu diesem Zweck werden Wirkketten in Amalthea analog zu Autosar als Sequenz von Events dargestellt. Meistens als LabelEvents (Schreib- und Lesezugriffe auf Variablen) oder als RunnableEvents (Start oder Ende eines Runnables). Zusätzlich zum Signalfluss gibt es vom System her Anforderungen an das zeitliche Verhalten einer Wirkkette. In der Regel ist dies eine Anforderung an die maximale Latenz. In Amalthea wird diese als ReactionConstraint abgelegt, das eine maximale (auch minimale) Dauer spezifiziert, die ein Durchlauf einer Wirkkette vom ersten bis zu letzten Event dauern darf.

Mit APP4MC visualisierte Cross-Core-Kommunikation eines anspruchvollen Steuergeräte-Projekts nach der Optimierung.
Bild 4. Mit APP4MC visualisierte Cross-Core-Kommunikation eines anspruchvollen Steuergeräte-Projekts nach der Optimierung.
© Bild: Robert Bosch

Werkzeuge, die auf Basis des Amalthea-Modells eine Lösung für das Verteilungsproblem suchen, verwenden u.a. Integer Linear Programming (ILP). Bei großen Aufgaben – wir sprechen von ~103 Runnables und ~104 Variablen [6] – kann so eine optimale Lösung nur mit sehr großem Aufwand und nach längerer Zeit gefunden werden. Deswegen kommen in Boschs firmeninternen Werkzeug zum Beispiel Näherungs­lösungen mit polynomiellen Laufzeiten wie genetische Algorithmen oder Heuristiken zum Einsatz. Die Bilder 3 und 4 zeigen, wie man in einem großen Steuergeräteprojekt mit Hilfe so einer Verteilungsoptimierung die Kommunika­tionslast verringert hat.

Unterstützung bei »Object-Code-Sharing«

In aktuellen Generationen von Steuergeräten im Automobil sind neben der Software des Lieferanten auch Software-Anteile von Kunden und weiterer Entwicklungspartner zu integrieren. Da die zugelieferte Software überwiegend in Form von Objekt-Code, quasi als »Black Box«, geliefert wird, erfolgt die Inte­gration in Projekten ohne Amalthea auf Basis von mitgelieferten Dokumentationen über Schnittstellen und Anforderungen an das Scheduling.

Viel zuverlässiger funktioniert so eine Integration aber, wenn diese Dokumentation in Amalthea maschinenlesbar hinterlegt ist und daher im Rahmen der Integration automatisiert nachweisbar ist. Das betrifft z. B. Anforderungen an die Integration wie

  • Software-Anteil A muss auf einem Kern mit Feature X (z. B. Lockstep) ausgeführt werden;
  • ISR B darf nur eine maximale Response Time von x ms aufweisen;
  • Software-Anteil C muss nach Anteil D ausgeführt werden.
Grafik: Mit Hilfe von APP4MC ist die Zusammenarbeit verschiedener Unternehmen in Steuergeräteprojekten mit hohen Integritätsanforderungen möglich, selbst wenn der Quellcode das jeweilige Unternehmen nie verläst.
Bild 5: Mit Hilfe von APP4MC ist die Zusammenarbeit verschiedener Unternehmen in Steuergeräteprojekten mit hohen Integritätsanforderungen möglich, selbst wenn der Quellcode das jeweilige Unternehmen nie verläst.
© Quelle: Robert Bosch

Die von Bosch an die Kunden der Steuergeräte-Projekte angebotenen Amalthea-Modelle lassen sich auf einfache Weise mit Amalthea-Modellen der Entwicklungspartner kombinieren und stellen somit ein detailliertes Modell des Gesamtsystems zur Verfügung. Auf Basis dieses Gesamtmodells können die Projektteilnehmer durch die erwähnten Simulationen/Analysen Verifikationsschritte durchführen, die für gewöhnlich den Quellcode benötigen. Hier kann APP4MC/Amalthea als freies Format seine Stärken voll entfalten: Dies ist nun möglich, ohne den Quellcode auszutauschen. Eine Vision, die vielleicht bald Realität wird, hat den Projektnamen Cloud-Based-Solution. Alles dreht sich um ein Amalthea-Modell im Netz (Bild 5). Damit ist eine Modellerstellung als Dienstleistung noch eine Spur eleganter, ebenso die Durchführung von Verifikationsschritten als Dienstleistung. Zugriffsrechte auf das Modell oder Teile davon können maßgeschneidert werden.

Was APP4MC/Amalthea nicht kann

APP4MC bietet kein geeignetes Format zur projektunabhängigen Spezifikation von Automotive-Software-Komponenten und stellt deshalb keine Alternative zu Standards wie Autosar dar. Der Grund dafür ist die bewusste Entscheidung, Varianz nur begrenzt zu unterstützen.

Das domänenspezifische Modell zeigt seine Stärken bei Embedded-Multi-Core-Systemen, welche statisch konfiguriert werden, und bietet daher nur minimalen Support für dynamisch erzeugte Software-Artefakte, wie das Erzeugen von Tasks zur Laufzeit, Verwendung von Timern, Callbacks und komplexeren Datenstrukturen. Die Unterstützung zur Optimierung bei Amalthea findet in der Entwicklungsumgebung statt und nicht zur Laufzeit.

APP4MC bietet keine Sammlung an Algorithmen für Embedded-Systeme oder eine Simulationsumgebung. Es stellt vielmehr ein flexibles und freies Austauschformat für Tools unterschiedlicher Hersteller und Dienstleister zur Verfügung – mit dem Fokus auf Inter­operabilität und Usability.

Auf Multi- und Manycore-Systeme ausgerichtet

APP4MC bietet ein offenes Ökosystem für systembezogene Werkzeuge und Dienstleistungen für die Entwicklung von Steuergeräten. Der Fokus liegt dabei klar auf Lösungen für Multi- und Manycore-Systeme.

In Projekten mit mehreren Entwicklungspartnern bietet Amalthea ein architekturunabhängiges Austauschformat, um das dynamische Verhalten des Systems mit allen enthaltenen Software-Komponenten zu beschreiben. Dies ermöglicht die Integrationstests im Rahmen von Gemeinschafts-Projekten, bei denen der Austausch von Quellcode nicht möglich ist. Amalthea hat das Potenzial, sich hier als Standard-Austauschformat zu etablieren und wird bereits von mehreren Tool-, Steuergeräte- und Fahrzeugherstellern verwendet. Durch den Austausch von relevanten Systembeschreibungen auf Basis dieses offenen, maschinenlesbaren Formats werden Diskussionen um Einsicht in Entwicklungsunterlagen und Source-Code pragmatisch vermieden. Für alle in diesem Artikel beschriebenen typischen Anwendungsfälle stehen bereits kommerzielle oder frei verfügbare Werkzeuge zur Verfügung.

Literatur

[1] Grünfelder, S.: Software-Test für Embedded Systems. dPunkt-Verlag, Heidelberg, 2. Auflage 2017.
[2] González Harbour, M.; Grünfelder, S.: Echtzeitanalyse für nebenläufige Systeme. Elektronik 2015, H. 8, S. 56 bis 61.
[3] Bericht auf NTV am 25.11.2012: Neue ICEs bremsen zu langsam. https://www.n-tv.de/wirtschaft/Neue-ICEs-bremsen-zu-langsam-article9599211.html.
[4] Clarke,S. und McDermid, J.: Software fault trees and weakest preconditions: a comparison and analysis. Software Engineering Journal. 8(4): 225-236, 1993.
[5] Grünfelder, S.: Race Conditions; Algorithmen und Werkzeuge zum Erkennen von laufzeitabhängigen Software-Fehlern. Elektronik 2008, H. 17, S. 36 bis 42.
[6] Kramer, S.; Ziegenbein,D.; Hamann, A.: Real world automotive benchmarks for free. Proceedings of the 6th International Workshop on Analysis Tools and Methodologies for Embedded Systems. An mehreren Stellen im Web zu finden.

Die Autoren

Dr. Stephan Grünfelder
Dr. Stephan Grünfelder ist Autor des Buchs »Software-Test für Embedded Systems« und hält seit zwölf Jahren Industrie-Seminare für das Testen von Software und für Requirements Engineering. Einer seiner wichtigsten Kunden ist Bosch und so entstand dieser Artikel. Für die Seminare greift Grünfelder auf seine mehr als 20 Jahre Erfahrung als Programmierer, Tester und Projektleiter in der Medizintechnik, Automobilindustrie, im Broadcasting und in der Raumfahrt zurück.
© Stephan Grünfelder
Das Autorenteam aus dem Bereich Powertrain Solutions der Robert Bosch GmbH
Das Autorenteam aus dem Bereich Powertrain Solutions der Robert Bosch GmbH (v.l.n.r.): Dipl.-Ing. Lothar Gamer ist für das Thema Software Sharing verantwortlich. M. Sc. Peter Häfele ist für Lösungen zur Multicore-Lastverteilung und für das Laufzeitverhalten zuständig. Franck Youk kümmert sich um Simulation. Dipl.-Inf. Simon Kramer betreut das Thema Software-Architektur.
© Bild: Robert Bosch

  1. Multicore-Software mit APP4MC entwickeln
  2. Optimierung bei Aufgaben­verteilung

Lesen Sie mehr zum Thema


Das könnte Sie auch interessieren

Jetzt kostenfreie Newsletter bestellen!