-
Die Erfindung betrifft ein Verfahren zur Übertragung einer Mehrzahl von datenverarbeitenden Software-Modulen auf einen Mehrkernprozessor gemäß dem Oberbegriff des Anspruchs 1.
-
In elektronischen Fahrzeugsteuergeräten werden zunehmend Mehrkernprozessoren eingesetzt. Dabei ist eine effiziente und prozessorientierte Erstellung von komplexen Softwareprogrammen mit einer Mehrzahl von datenverarbeitenden und miteinander kommunizierenden Software-Modulen, die ursprünglich für einen Einkernprozessor vorgesehen sind, auf eingebetteten Systemen mit Mehrkernprozessoren eine enorme Herausforderung hinsichtlich der Umsetzung von Echtzeitfähigkeit, Determinismus und Richtigkeit des funktionalen Verhaltens.
-
Aus dem Stand der Technik ist, wie in
WO 2012/027907 A1 beschrieben, ein Verfahren zur Parallelisierung automatischer Steuerprogramme bekannt. Hierbei wird ein serielles automatisches Steuerprogramm mittels eines programmierbaren Mehrkern-Logikcontrollers in eine Mehrzahl von Programmblöcken geteilt. Das automatische Steuerprogramm wird anschließend als ein Parallelisierungsmodell unter Verwendung der Mehrzahl von Programmblöcken abgebildet und die Parallelisierung anhand des Parallelisierungsmodell durchgeführt, wobei jeweils mehrere Programmblöcke für einen Kern des Mehrkernprozessors bereitgestellt und entsprechend einer jeweiligen Ausführung im Kern in Maschinencodes umgewandelt werden.
-
Der Erfindung liegt die Aufgabe zu Grunde, ein gegenüber dem Stand der Technik verbessertes Verfahren zur Übertragung einer Mehrzahl von datenverarbeitenden Software-Modulen auf einen Mehrkernprozessor anzugeben.
-
Die Aufgabe wird erfindungsgemäß mit den in Anspruch 1 angegebenen Merkmalen gelöst.
-
Vorteilhafte Ausgestaltungen der Erfindung sind Gegenstand der Unteransprüche.
-
Verfahren zur Übertragung einer Mehrzahl von datenverarbeitenden Software-Modulen auf einen Mehrkernprozessor, wobei die Softwaremodule über eine vorgegebene Anzahl an Vorwärtsverbindungen und Rückwärtsverbindungen miteinander kommunizieren, dadurch gekennzeichnet, dass eine zuvor festgelegte Verarbeitungsreihenfolge der Software-Module in mindestens einem Schritt unter Berücksichtigung einer Aufrechterhaltung der Vorwärtsverbindungen verändert wird.
-
Bei einem Verfahren zur Übertragung einer Mehrzahl von datenverarbeitenden Softwaremodulen auf einen Mehrkernprozessor, wobei eine vorgegeben Anzahl der Softwaremodule über Vorwärtsverbindungen und Rückwärtsverbindungen abhängig voneinander Daten verarbeiten und wobei eine Datenverarbeitung durch die Softwaremodule in einer festgelegten Reihenfolge durchgeführt wird, ist erfindungsgemäß vorgesehen, dass eine Anzahl an Teilmodulen mit jeweils einer Anzahl an Softwaremodulen gebildet wird, wobei die Softwaremodule innerhalb eines Teilmoduls unabhängig voneinander Daten verarbeiten. Zur Bildung der Teilmodule wird die festgelegte Verarbeitungsreihenfolge der Softwaremodule mit einer bestimmten Anzahl an Schritten unter Berücksichtigung einer Aufrechterhaltung der Vorwärtsverbindungen modifiziert. Anschließend werden die gebildeten Teilmodule auf Prozessorkerne des Mehrkernprozessors verteilt.
-
Das erfindungsgemäße Verfahren ermöglicht eine einfache Übertragung einer Mehrzahl von datenverarbeitenden Softwaremodulen auf einen Mehrkernprozessor, wobei aufgrund der Aufrechterhaltung der Vorwärtsverbindungen eine Echtzeitfähigkeit, ein Determinismus sowie eine Datenkonsistenz, Richtigkeit und Skalierbarkeit über eine Vielzahl von Prozessorkernen hinweg erfüllt werden können. Das Verfahren ist mittels eines geeigneten Algorithmus durchführbar, so dass die Übertragung der Software-Module auf einen Mehrkernprozessor vorzugsweise automatisierbar ist.
-
Ausführungsbeispiele der Erfindung werden im Folgenden anhand von Zeichnungen näher erläutert.
-
Dabei zeigen:
-
1 schematisch eine Mehrzahl von datenverarbeitenden und über Vorwärts- und Rückwärtsverbindungen kommunizierende Software-Module in einer festgelegten Verarbeitungsreihenfolge,
-
2 schematisch die Mehrzahl von datenverarbeitenden und über Vorwärts- und Rückwärtsverbindungen kommunizierende Software-Module gemäß 1 in einer modifizierten Verarbeitungsreihenfolge und
-
3 schematisch ein Dreikernprozessor, auf den die Mehrzahl von datenverarbeitenden und über Vorwärts- und Rückwärtsverbindungen kommunizierenden Software-Modulen gemäß 1 verteilt sind.
-
Einander entsprechende Teile sind in allen Figuren mit den gleichen Bezugszeichen versehen.
-
1 zeigt schematisch eine Mehrzahl von datenverarbeitenden Softwaremodulen S1 bis S18 einer modularen, seriellen Softwarekomponente, die zur Verarbeitung von Daten und zur Implementierung in einen Einkernprozessor vorgesehen ist und dabei als ein sogenannter Datenflussgraph ausgebildet ist. Die Softwaremodule S1 bis S18 können hierbei einzelne Programmteile oder Module von Programmteilen der Softwarekomponente darstellen.
-
Eine zur Verarbeitung der Daten notwendige Funktionalität ist dabei auf die Softwaremodule S1 bis S18 aufgeteilt. Die Kommunikation der Softwaremodule S1 bis S18 untereinander erfolgt über eine Anzahl an Vorwärtsverbindungen V1 bis Vn und über eine Anzahl an Rückwärtsverbindungen R1 bis Rn, die im vorliegenden Ausführungsbeispiel anhand einer Pfeilrichtung zu unterscheiden sind.
-
Die Verarbeitung der Daten mittels der Softwaremodule S1 bis S18 erfolgt in der gezeigten Reihenfolge ausgehend von einem ersten Softwaremodul S1 bis zu einem letzten Softwaremodul S18. Beispielsweise verarbeitet das erste Softwaremodul S1 eine erste Anzahl von Arbeitsschritten für jeden Datensatz einer Eingangsdatei und erzeugt jeweils einen Ausgangsdatensatz, der in einer Ausgangsdatei gespeichert wird. Diese Ausgangsdatei des ersten Softwaremoduls S1 dient als Eingangsdatei eines weiteren der Softwaremodule S1 bis S18, z. B. wird über zwei Vorwärtsverbindungen V1, V2 des ersten Softwaremoduls S7, S8 jeweils eine Ausgangsdatei für die Softwaremodule S7 und S8 erzeugt, die den Softwaremodulen S7 und S8 als Eingangsdatei dienen. Somit wird in dem mittels der Softwaremodule S1 bis S18 gebildeten Datenflussgraph jeweils eine Datei von einem der Softwaremodule S1 bis S18 erzeugt und einem weiteren der Softwaremodule S1 bis S18 zur weiteren Verarbeitung zur Verfügung gestellt.
-
Zur besseren Verarbeitung großer Datenmengen werden zunehmend Mehrkernprozessoren eingesetzt, z. B. in Fahrzeugsteuergeräten, die eine Mehrzahl von Prozessorkernen aufweisen, die weitestgehend unabhängig voneinander sind.
-
Zur Implementierung der in 1 beschriebenen seriellen Softwarekomponente in einen Mehrkernprozessor ist ein erfindungsgemäßes Verfahren vorgesehen, welches nachfolgend in den 2 und 3 näher beschrieben wird.
-
2 zeigt dazu die Mehrzahl von Software-Modulen S1 bis S18 in einer modifizierten Verarbeitungsreihenfolge.
-
Die in 1 gezeigte Verarbeitungsreihenfolge wird dabei unter Aufrechterhaltung der Vorwärtsverbindungen V1 bis Vn derart modifiziert, dass Teilmodule C1 bis Cn entstehen, in denen jeweils die Softwaremodule S1 bis S18 unabhängig voneinander sind. Mit anderen Worten: In jedem Teilmodul C1 bis Cn ist eine bestimmte Anzahl der Softwaremodule S1 bis S18 enthalten, die untereinander weder über eine Vorwärtsverbindung V1 bis Vn noch über eine Rückwärtsverbindung R1 bis Rn miteinander verbunden sind.
-
Im vorliegenden Ausführungsbeispiel weisen die Softwaremodule S1 bis S3 untereinander keine Vorwärtsverbindung V1 bis Vn und Rückwärtsverbindung R1 bis Rn auf, so dass ein erstes Teilmodul C1, umfassend die Softwaremodule S1 bis S3, gebildet wird. Ebenso weisen die Softwaremodule S4 und S5 untereinander keine Vorwärtsverbindung V1 bis Vn und Rückwärtsverbindung R1 bis Rn auf, so dass ein zweites Teilmodul C2, umfassend die Softwaremodule S4 und S5, gebildet wird.
-
Zur Bildung der gezeigten weiteren Teilmodule C3 bis C7 wird die Verarbeitungsreihenfolge der Softwaremodule S8 bis S18 vertauscht, so dass sich eine modifizierte Reihenfolge in der gezeigten Art und Weise ergibt. Die Vorwärtsverbindungen V1 bis Vn sind dabei vollständig aufrecht erhalten, während sich beispielhaft eine der Rückwärtsverbindungen R1 bis Rn, hierbei zwischen den Softwaremodulen S16 und S18, zu einer Vorwärtsverbindung V1 bis Vn transformiert. Die Aufrechterhaltung der Rückwärtsverbindungen R1 bis Rn ist dabei weniger kritisch als die Aufrechterhaltung der Vorwärtsverbindungen V1 bis Vn, so dass die Transformierung einer der Rückwärtsverbindungen R1 bis Rn zu einer Vorwärtsverbindung V1 bis Vn keinen signifikanten Einfluss auf die Funktion der Datenverarbeitung mittels der Softwaremodule S1 bis S18 hat.
-
Die Modifizierung der Verarbeitungsreihenfolge und die daraus resultierende Bildung der Teilmengen C1 bis C7 werden mittels eines geeigneten Algorithmus automatisiert durchgeführt. 2 zeigt dabei einen Teilschritt während der Modifizierung der Verarbeitungsreihenfolge, der weitere Modifizierungen folgen können, wie es 3 zeigt.
-
3 zeigt dazu beispielhaft einen Mehrkernprozessor P, welcher als Dreikernprozessor mit drei Prozessorkernen P1 bis P3 ausgebildet ist, wobei gebildete Teilmodule C1 bis C7 auf die Prozessorkerne P1 bis P3 unter Aufrechterhaltung aller Vorwärts- und Rückwärtsverbindungen V1 bis Vn, R1 bis Rn zwischen den Softwaremodulen S1 bis S18 aufgeteilt sind.
-
Im vorliegenden Ausführungsbeispiel ist somit das erste Teilmodul C1, umfassend die Softwaremodule S1 bis S3, auf alle Prozessorkernen P1 bis P3 verteilt. Ebenso das zweite Teilmodul C2, umfassend die Softwaremodule S4 und S5. Die weiteren gezeigten Teilmodule C3 bis C7 sind zum Teil gegenüber den in 2 gezeigten Teilmodulen C3 bis C7 aus anderen Softwaremodulen S1 bis S18 zusammengesetzt, da zwischen 2 und 3 nicht gezeigte weitere Modifizierungsschritte durchgeführt wurden.
-
Die Verarbeitung der Daten erfolgt innerhalb der Prozessorkerne P1 bis P3 jeweils sequentiell, wohingegen die Verarbeitung der Daten zwischen den Prozessorkernen P1 bis P3 parallel erfolgt.
-
Bezugszeichenliste
-
-
- C1 bis Cn
- Teilmodul
- P
- Mehrkernprozessor
- P1 bis P3
- Prozessorkern
- R1 bis Rn
- Rückwärtsverbindung
- S1 bis S18
- Softwaremodul
- V1 bis Vn
- Vorwärtsverbindung
-
ZITATE ENTHALTEN IN DER BESCHREIBUNG
-
Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
-
Zitierte Patentliteratur
-