-
Die vorliegende Erfindung betrifft ein Parallelisierungsverfahren und ein Parallelisierungs-Tool zum Erzeugen eines Computerprogramms eines Mehrkernprozessors aus einem Programm eines Einkernprozessors und eine fahrzeuginterne Steuervorrichtung, welche die von dem Parallelisierungsverfahren erzeugten Programme für den Mehrkernprozessor hat.
-
JP 2015-1807 A (
US 2014/0372995 A1 ) offenbart ein Parallelisierungs-Kompilierungsverfahren als ein beispielhaftes Parallelisierungsverfahren zum Erzeugen von Programmen eines Mehrkernprozessors aus einem Programm eines Einkernprozessors.
-
Gemäß dem Parallelisierungs-Kompilierungsverfahren wird ein serielles Programm für ein integriertes System, das von einem Einkernprozessorsystem ausgeführt wird, in mehrere Makroaufgaben (Makro-Tasks) aufgeteilt, und dann werden die Makroaufgaben, die eine Steuerabhängigkeit haben, in einer Makroaufgabe kombiniert. Ferner werden, gemäß dem Parallelisierungs-Kompilierungsverfahren, die Makroaufgaben, die parallel ausführbar sind, basierend auf Datenabhängigkeit extrahiert, und ein paralleles Programm wird durch statische Ablaufplanung erzeugt.
-
Bei dem Parallelisierungsverfahren wird vorgeschlagen, jedem Kern nach einer Parallelisierungsanalyse eine normale Verarbeitung zuzuweisen und eine synchrone Verarbeitung zum Beibehalten einer Reihenfolge einer Verarbeitungsausführung einzufügen. Diese synchrone Verarbeitung umfasst ein Zustandssetzen zum Setzen einer Variable, die eine Beendigung der normalen Verarbeitung angibt, und ein Warten zum Warten darauf, eine normale Verarbeitung von dessen Kern zu starten, bis eine Variable in dem anderen Kern gesetzt wird.
-
Die Variable ist wahrscheinlich, sich aufgrund von Rauschen oder ähnlichem unerwartet zu ändern. In dem Mehrkernprozessor dauert, wenn die Variable geändert wird, die Warteverarbeitung in zumindest einem Kern fort und verursacht eine Systemblockade, bei welcher eine Ausführung der normalen Verarbeitung unterbunden wird.
-
Zum Verhindern der Systemblockade kann es vorgeschlagen werden, in das parallele Programm eine ausfallsichere Verarbeitung wie bspw. eine Verarbeitung zum Wiederherstellen der unerwarteterweise geänderten Variable in einen vorherigen Zustand einzufügen. In diesem Fall ist das parallele Programm eine Steuerlogik, die dem Programm des Einkernprozessors entspricht, und eine Logikgruppe, die eine ausfallsichere Logik zum Verhindern des Systemblockadezustands umfasst. Das wie oben beschrieben erzeugte parallele Programm ist dahingehend nicht vorteilhaft, dass die Steuerlogik in dem Kern zum Ausführen des parallelen Programms eine komplizierte Verwaltung benötigt und eine Verarbeitungslast des Kerns bei einer Ausführung der Steuerlogik zunimmt.
-
Die vorliegende Erfindung adressiert das oben beschriebene Problem und hat die Aufgabe, ein Parallelisierungsverfahren und ein Parallelisierungs-Tool, welche eine Logikverwaltung vereinfachen und fähig sind, ein parallelisiertes Programm zu erzeugen, welches wirksam darin ist, eine Verarbeitungslast zu einer Zeit einer Ausführung einer Steuerlogik niedrig zu halten, und eine fahrzeuginterne Steuervorrichtung bereit zu stellen, welche vor einem Systemblockadezustand geschützt ist.
-
Gemäß der vorliegenden Erfindung sind ein Parallelisierungsverfahren und ein Parallelisierungs-Tool (Parallelisierungswerkzeug) zum Erzeugen eines parallelen Programms, welches eine mehrfache Verarbeitung, die von mehreren Kernen eines Mehrkernprozessors ausgeführt werden soll, parallelisiert, aus einem einzelnen Programm, welches die mehrfache Verarbeitung, die für eine Steueroperation (Steuertätigkeit) von einem Einkernprozessor von einem Kern ausgeführt werden soll, und parallelisierbar ist, umfasst. Die mehrfache Verarbeitung wird den mehreren Kernen zugewiesen und umfasst eine vorherige Verarbeitung und eine spätere Verarbeitung, die von der vorherigen Verarbeitung abhängig ist und nach Beendigung einer Ausführung der vorherigen Verarbeitung ausgeführt wird. Das Parallelisierungsverfahren und das Parallelisierungs-Tool fügen eine Speicherungsverarbeitung eines Beendigungszustands der vorherigen Verarbeitung in das parallele Programm ein, um eine Ausführungsreihenfolge einer Verarbeitung unter den mehreren Kernen beizubehalten, wenn die Ausführung der vorherigen Verarbeitung beendet worden ist. Das Parallelisierungsverfahren und das Parallelisierungs-Tool fügen eine Warteverarbeitung ein, welche die Ausführung der späteren Verarbeitung unter der Bedingung erlaubt, dass der Beendigungszustand der vorherigen Verarbeitung gespeichert ist, sodass die Ausführungsreihenfolge beibehalten wird. Das Parallelisierungsverfahren und das Parallelisierungs-Tool fügen eine Überwachungsverarbeitung, welche überwacht, ob der Beendigungszustand vor einer Ausführung des parallelen Programms gespeichert ist, in ein Nichtsteuerprogramm ein, welches unterschiedlich zu dem parallelen Programm ist. Das Parallelisierungsverfahren und das Parallelisierungs-Tool fügen eine ausfallsichere (nicht fehleranfällige, betriebssichere) Verarbeitung, welche nach Detektion, dass der Beendigungszustand nicht gespeichert ist, ausgeführt wird, in das Nichtsteuerprogramm ein.
-
Gemäß der vorliegenden Erfindung umfasst eine fahrzeuginterne Steuervorrichtung einen Mehrkernprozessor, der mehrere Kerne umfasst, und ein Speichermedium, das ein paralleles Programm speichert. Das parallele Programm parallelisiert eine mehrfache Verarbeitung, die für eine Steuertätigkeit durch einen Einkernprozessor von einem Kern ausgeführt werden soll und parallelisierbar ist. Die mehrfache Verarbeitung wird den mehreren Kernen zugewiesen und umfasst eine vorherige Verarbeitung und eine spätere Verarbeitung, die von der vorherigen Verarbeitung abhängig ist und nach Beendigung einer Ausführung der vorherigen Verarbeitung ausgeführt wird. Das parallele Programm umfasst eine Speicherungsverarbeitung zum Speichern eines Beendigungszustands der vorherigen Verarbeitung, um eine Ausführungsreihenfolge einer Verarbeitung unter den mehreren Kernen beizubehalten, wenn die Ausführung der vorherigen Verarbeitung beendet worden ist, ebenso wie eine Warteverarbeitung, welche die Ausführung der späteren Verarbeitung unter der Bedingung erlaubt, dass der Beendigungszustand der vorherigen Verarbeitung gespeichert ist, sodass die Ausführungsreihenfolge beibehalten wird. Das Speichermedium speichert ferner ein Nichtsteuerprogramm, das unterschiedlich zu dem parallelen Programm ist und von den mehreren Kernen ausführbar ist. Das Nichtsteuerprogramm umfasst eine Überwachungsverarbeitung, die überwacht, ob der Beendigungszustand gespeichert ist vor einer Ausführung des parallelen Programms, und eine ausfallsichere Verarbeitung, die nach Detektion, dass der Beendigungszustand nicht gespeichert ist, ausgeführt wird. Jeder der mehreren Kerne des Mehrkernprozessors führt das parallele Programm und das Nichtsteuerprogramm aus.
- 1 ist ein Blockdiagramm, welches eine generelle Ausgestaltung eines Parallelisierungs-Tools gemäß einem Ausführungsbeispiel der vorliegenden Erfindung zeigt;
- 2 ist ein Blockdiagramm, welches eine generelle Ausgestaltung einer fahrzeuginternen Steuervorrichtung gemäß dem Ausführungsbeispiel zeigt;
- 3 ist ein Flussdiagramm, welches eine Verarbeitungsoperation (Verarbeitungstätigkeit) eines Computers bei dem Ausführungsbeispiel zeigt;
- 4 ist eine bildliche Darstellung eines parallelen Programms bei dem Ausführungsbeispiel;
- 5 ist ein Flussdiagramm, welches eine Verarbeitungsoperation der fahrzeuginternen Steuervorrichtung bei dem Ausführungsbeispiel zeigt;
- 6 ist ein Flussdiagramm, welches eine Verarbeitungsoperation der fahrzeuginternen Steuervorrichtung bei dem Ausführungsbeispiel zeigt;
- 7 ist ein Flussdiagramm, welches eine Verarbeitungsoperation des Computers bei dem Ausführungsbeispiel zeigt; und
- 8 ist ein Flussdiagramm, welches eine Verarbeitungsoperation einer fahrzeuginternen Steuervorrichtung gemäß einer Modifikation zeigt.
-
(Ausführungsbeispiel)
-
Die vorliegende Erfindung wird unten mit Bezug auf ein Ausführungsbeispiel, das in den Zeichnungen gezeigt ist, beschrieben werden.
-
Bezugnehmend auf 1 und 2 ist ein Computer 10 bereitgestellt, um ein paralleles Programm 21a1, das für einen Mehrkernprozessor 20 parallelisiert ist, der einen ersten Kern 21c und einen zweiten Kern 21d hat, die fähig sind, eine mehrfache Verarbeitung eines Einkernprozessors, der einen einzelnen Kern hat, parallel auszuführen, zu erzeugen. Der Prozessor ist ein Mikrocomputer. Der Computer 10 gemäß dem vorliegenden Ausführungsbeispiel erzeugt ferner, zusätzlich zu dem parallelen Programm 21a1, ein Nichtsteuerprogramm 21a2, welches unterschiedlich zu dem parallelen Programm 21a1 ist, das von dem ersten Kern 21c und dem zweiten Kern 21d ausführbar ist. Das heißt, der Computer 10 erzeugt ein Programm 21a3, welches das parallele Programm 21a1 und das Nichtsteuerprogramm 21a2 umfasst.
-
Wie in
JP 2015-1807 A offenbart, wird das parallele Programm 21a1 durch Analysieren des einzelnen Programms und Zuweisen der mehrfachen Verarbeitung zu dem ersten Kern
21c und dem zweiten Kern
21d erzeugt. Der detaillierte Offenbarungsgehalt der
JP 2015-1807 A wird durch Bezugnahme Bestandteil hiervon.
-
In der folgenden Beschreibung wird eine Verarbeitung als ein Verarbeitungsblock, d.h. ein Aufgabenblock (task block) bezeichnet. Bei dem vorliegenden Ausführungsbeispiel werden, wie in 4 gezeigt, die mehrfachen Verarbeitungsblöcke angenommen, einen ersten Verarbeitungsblock T1 bis zu einem fünften Verarbeitungsblock T5 und einen sechsten Verarbeitungsblock T6 bis zu einem elften Verarbeitungsblock T11 zu umfassen. Die mehrfachen Verarbeitungsblöcke umfassen eine vorherige Verarbeitung und eine spätere Verarbeitung, die unterschiedlichen Kernen zugewiesen werden. Die vorherige Verarbeitung wird zuerst ausgeführt und die spätere Verarbeitung wird nach Beendigung der vorherigen Verarbeitung ausgeführt. Die spätere Verarbeitung ist eine Verarbeitung, die eine Einflussnahme der vorherigen Verarbeitung erhält. Die spätere Verarbeitung verwendet z.B. Daten, bei denen es wahrscheinlich ist, dass sie in der vorherigen Verarbeitung aktualisiert werden. Zum Beispiel ist von dem ersten Verarbeitungsblock T1 und dem achten Verarbeitungsblock T8 der erste Verarbeitungsblock T1 die vorherige Verarbeitung bzw. der vorherige Verarbeitungsblock und der achte Verarbeitungsblock T8 ist der spätere Verarbeitungsblock. Von dem dritten Verarbeitungsblock T3 und dem achten Verarbeitungsblock T8 ist der achte Verarbeitungsblock T8 die vorherige Verarbeitung und der dritte Verarbeitungsblock T3 ist die spätere Verarbeitung.
-
Der Computer
10 und die fahrzeuginterne Steuervorrichtung
20 sind wie unten beschrieben ausgestaltet, wie in
1 gezeigt. Der Computer
10 ist ein Parallelisierungs-Tool, welches Parallelisierungsprozeduren ausführt. Der Computer
10 ist auch ein Programmerzeugungs-Tool (Programmerzeugungswerkzeug), welches das Programm 21a3 erzeugt, das das Parallelisierungsprogramm 21a1 und das Nichtsteuerprogramm 21a2 enthält. Der Computer
10 ist ausgestaltet, eine Anzeige
11, einen HDD
12, eine CPU
13, ein ROM
14, ein RAM
15, eine Eingabevorrichtung
16, einen Abrufteil
17 und ähnliches zu umfassen. Der Computer
10 ist ausgestaltet, in einem Speichermedium
18 gespeicherte Speicherinhalte abzurufen. Das Speichermedium
18 speichert darin einen automatischen Parallelisierungs-Compiler
1. Der Computer
10 und das Speichermedium können in Bezug auf einen Arbeitsplatz-Computer
100 und ein Speichermedium
180, die in der
JP 2015-1807 A offenbart sind, ausgestaltet sein.
-
Der automatische Parallelisierungs-Compiler 1 ist ein Parallelisierungsverfahren. Das heißt, der automatische Parallelisierungs-Compiler 1 ist ein Programm, welches eine Parallelisierungsprozedur, d.h., das Parallelisierungsverfahren definiert. Der Computer 10 erzeugt das Programm 21a3, welches das parallele Programm 21a1 und das Nichtsteuerprogramm 21a2 umfasst, durch Ausführen des automatischen Parallelisierungs-Compilers 1. Das heißt, der automatische Parallelisierungs-Compiler 1 ist ein Programmerzeugungsverfahren.
-
Der automatische Parallelisierungs-Compiler
1 kann mit Bezug auf den Offenbarungsgehalt der
JP 2015-1807 A konfiguriert sein. Der automatische Parallelisierungs-Compiler
1 umfasst insbesondere Prozeduren zum Einfügen von einer Zustandssetzverarbeitung (Zustandseinstellverarbeitung), zum Einfügen einer Warteverarbeitung, zum Einfügen einer synchronen Überwachungsverarbeitung und zum Einfügen einer synchronen ausfallsicheren Verarbeitung.
-
Die Einfügeprozedur der Zustandssetzverarbeitung ist für ein Einfügen der Zustandssetzverarbeitung(en) F0 bis F2 und F4 bis F6 in das parallele Programm 21a1, wie in 4 gezeigt. Die Zustandssetzverarbeitungen F0 bis F2 und F4 bis F6 sind Verarbeitungen zum Speichern eines Beendigungszustands zur Zeit einer Beendigung der vorherigen Verarbeitung, um die Sequenz einer Ausführung zwischen unterschiedlichen Kernen, d.h. zwischen dem ersten Kern 21c und dem zweiten Kern 21d beizubehalten. Das heißt, die Einfügeprozedur der Zustandssetzverarbeitung ist vorgesehen, um den ersten Kern 21c und den zweiten Kern 21d zu veranlassen, die Zustandssetzverarbeitung zu der Zeit einer Beendigung der vorherigen Verarbeitung von dem ersten Kern 21c und dem zweiten Kern 21d auszuführen. Die Zustandssetzverarbeitung ist eine Speicherungsverarbeitung des Beendigungszustands. Die Einfügeprozedur der Zustandssetzverarbeitung ist eine Speicherungsverarbeitungseinfügeprozedur.
-
Hier werden, als bzw. für ein Speicher(ungs)verfahren eines Beendigungszustands, Zustands-Flags A1, A3, A6, B8, B10 und B11 verwendet. Jedes Zustands-Flag gibt den Beendigungszustand bzw. den Nichtbeendigungszustand (unvollendeten Zustand) an, falls „1“ gesetzt ist bzw. nicht gesetzt ist („0“ gesetzt ist). Wie oben beschrieben, ist die fahrzeuginterne Steuervorrichtung 20 ausgestaltet, ein Zustands-Flag entsprechend jeder der mehrfachen vorherigen Verarbeitungen zu setzen. Ein Setzen des Zustands-Flags ist ein Speichern des Beendigungszustands.
-
Das erste Zustands-Flag A1 entspricht dem ersten Verarbeitungsblock T1. Falls der erste Verarbeitungsblock T1 abgeschlossen worden ist bzw. nicht abgeschlossen worden ist, wird „1“ bzw. „0“ bei der ersten Zustandssetzverarbeitung F1 gesetzt. Das dritte Zustands-Flag A3 entspricht dem dritten Verarbeitungsblock T3. Falls der dritte Verarbeitungsblock T3 abgeschlossen worden ist bzw. nicht abgeschlossen worden ist, wird „1“ bzw. „0“ bei der zweiten Zustandssetzverarbeitung F2 gesetzt. Das achte Zustands-Flag B8 entspricht dem achten Verarbeitungsblock T8. Falls der achte Verarbeitungsblock T8 abgeschlossen worden ist bzw. nicht abgeschlossen worden ist, wird „1“ bzw. „0“ bei der fünften Zustandssetzverarbeitung F5 gesetzt. Das zehnte Zustands-Flag B10 entspricht dem zehnten Verarbeitungsblock T10. Falls der zehnte Verarbeitungsblock T10 abgeschlossen worden ist bzw. nicht abgeschlossen worden ist, wird „1“ bzw. „0“ bei der sechsten Zustandssetzverarbeitung F6 gesetzt.
-
Ein Zustands-Flag AA gibt einen Zustand der gesamten Zustands-Flags des ersten Kerns 21c an. Falls das Zustands-Flag AA auf „1“ bzw. „0“ gesetzt ist, gibt es an, dass alle der Zustands-Flags A1 bis A6 in den beendeten Zuständen bzw. nicht in den beendeten Zuständen sind. Das Zustands-Flag AA, das auf „1“ gesetzt ist, wird in der nullten Zustandssetzverarbeitung F0 auf „0“ zurückgesetzt.
-
Ein Zustands-Flag BA gibt einen Zustand der gesamten Zustands-Flags des zweiten Kerns 21d an. Falls das Zustands-Flag BA auf „1“ bzw. „0“ gesetzt ist, gibt es an, dass alle der Zustands-Flags B8 bis B11 in den beendeten Zuständen bzw. nicht in den beendeten Zuständen sind. Das Zustands-Flag BA, das auf „1“ gesetzt ist, wird in der vierten Zustandssetzverarbeitung F4 auf „0“ zurückgesetzt.
-
Die Einfügeprozedur der Warteverarbeitung dient einem Einfügen von Warteverarbeitungen W1, W2, W4 und W5 in das parallele Programm 21a1. Die Warteverarbeitungen W1, W2, W4 und W5 sind zum Ausführen der späteren Verarbeitung nach dem Warten und Setzen des Zustands-Flags, um die Sequenz einer Ausführung zwischen dem ersten Kern 21c und dem zweiten Kern 21d beizubehalten. Das heißt, die Einfügeprozedur der Warteverarbeitungen W1, W2, W4 und W5 dient dazu, es dem ersten Kern 21c und dem zweiten Kern 21d zu ermöglichen, die spätere Verarbeitung unter der Bedingung auszuführen, dass das Zustands-Flag nach einem Warten auf das Setzen des Zustands-Flags auf „1“ gesetzt ist. Die Einfügeverarbeitung der Warteverarbeitung(en) ist eine Warteverarbeitungseinfügeprozedur. In dem vorliegenden Ausführungsbeispiel ist, wie in 4 gezeigt, die Warteverarbeitung als „while“-Satz („solange“-Satz), z.B. while (B8=0) (solange (B8=0)) in der Warteverarbeitung W1, angegeben.
-
Die erste Warteverarbeitung W1 entspricht einem achten Zustands-Flag B8. Die erste Warteverarbeitung W1 dient einem Ausführen des dritten Verarbeitungsblocks T3, welcher die spätere Verarbeitung ist, unter der Bedingung, dass das achte Zustands-Flag B8 in „1“ geändert worden ist nach einem wiederholenden Prüfen, ob das achte Zustands-Flag B8 „0“ ist. Die zweite Warteverarbeitung W2 entspricht einem zehnten Zustands-Flag B10. Die zweite Verarbeitung W2 dient einem Ausführen des fünften Verarbeitungsblocks T5, welcher die spätere Verarbeitung ist, unter der Bedingung, dass das zehnte Zustands-Flag B10 nach einem wiederholenden Prüfen, ob das zehnte Zustands-Flag B10 „0“ ist, in „1“ geändert worden ist.
-
Die vierte Warteverarbeitung W4 entspricht einem ersten Zustands-Flag A1. Die vierte Warteverarbeitung W4 dient einem Ausführen des achten Verarbeitungsblocks T8, welcher die spätere Verarbeitung ist, unter der Bedingung, dass das erste Zustands-Flag A1 nach einem wiederholenden Prüfen, ob das erste Zustands-Flag A1 „0“ ist, in „1“ geändert worden ist. Die fünfte Warteverarbeitung W5 entspricht einem dritten Zustands-Flag A3. Die fünfte Warteverarbeitung W5 dient einem Ausführen des zehnten Verarbeitungsblocks T10, welcher die spätere Verarbeitung ist, unter der Bedingung, dass das dritte Zustands-Flag A3 nach einem wiederholenden Prüfen, ob das dritte Zustands-Flag A3 „0“ ist, in „1“ geändert worden ist.
-
Die Einfügeprozedur der synchronen Überwachungsverarbeitung dient einem Einfügen der Überwachungsverarbeitung, die überwacht, ob das Zustands-Flag auf „1“ gesetzt ist, bevor das parallele Programm 21a1 ausgeführt wird, in das Nichtsteuerprogramm 21a2. Das heißt, die Einfügeprozedur der synchronen Überwachungsverarbeitung ist vorgesehen, um die Überwachungsverarbeitung auszuführen, welche überwacht, ob alle der Zustands-Flags auf „1“ gesetzt sind vor einer Ausführung des parallelen Programms 21a1. Somit dient die Einfügeprozedur der synchronen Überwachungsverarbeitung einem Veranlassen des ersten Kerns 21c und des zweiten Kerns 21d zu bestätigen, dass alle der Zustands-Flags vor einer Ausführung des parallelen Programms 21a1 auf „1“ gesetzt sind. Die Einfügeprozedur der synchronen Überwachungsverarbeitung ist eine Überwachungsverarbeitungseinfügeprozedur. Das Nichtsteuerprogramm 21a2 wird später detaillierter beschrieben werden.
-
Die Einfügeprozedur zum Einfügen der synchronen ausfallsicheren Verarbeitung dient einem Einfügen der synchronen ausfallsicheren Verarbeitung, welche ausgeführt wird, wenn die synchrone Überwachungsverarbeitung detektiert, dass irgendeines der Zustands-Flags nicht auf „1“ gesetzt ist, in das Nichtsteuerprogramm 21a2. Das heißt, die Einfügeprozedur der synchronen ausfallsicheren Verarbeitung dient einem Veranlassen des ersten Kerns 21c und des zweiten Kerns 21d, die synchrone ausfallsichere Verarbeitung auszuführen, welche nach Detektion der synchronen Überwachungsverarbeitung ausgeführt wird, dass irgendeines der Zustands-Flags nicht auf „1“ gesetzt ist. Die Einfügeprozedur der synchronen ausfallsicheren Verarbeitung ist eine Ausfallsichere-Verarbeitungs-Einfügeprozedur.
-
Die synchrone ausfallsichere Verarbeitung umfasst z.B. ein Zurücksetzen einer Aufgabe (eines Tasks), ein Zurücksetzen des Mehrkernprozessors 21 und ein Zurücksetzen von Fahrzeuginformationen wie bspw. einen Notlaufbetriebsmodus oder einen Fahrzeugbetriebszustand. Ein Zurücksetzen einer Aufgabe ist eine Verarbeitung zum Ausführen der Aufgaben, die der erste Kern 21c und der zweite Kern 21d ausführen, auf den Anfang. Ein Zurücksetzen des Mehrkernprozessors 21 ist eine Verarbeitung zum Zurücksetzen des RAM 21b und von Registern des Mehrkernprozessors 21. Der Notlaufbetriebsmodus ist ein Modus zum Veranlassen des ersten Kerns 21c und des zweiten Kerns 21d, nicht das parallele Programm 21a1 auszuführen, sondern eine Verarbeitung zum Fahren des Fahrzeugs in einem Notlaufmodus auszuführen. Ein Zurücksetzen der Fahrzeuginformationen ist eine Verarbeitung zum Zurücksetzen der Fahrzeuginformationen (Variable(n)), auf welche sich der erste Kern 21c und der zweite Kern 21d beim Ausführen des parallelen Programms 21a1 beziehen oder welche der erste Kern 21c und der zweite Kern 21d beim Ausführen des parallelen Programms 21a1 schreiben.
-
In dem vorliegenden Ausführungsbeispiel ist der automatische Parallelisierungs-Compiler 1 als die synchrone Verarbeitung zum gleichzeitigen Beenden der Verarbeitung des ersten Kerns 21c und des zweiten Kerns 21d vorgesehen. Der automatische Parallelisierungs-Compiler 1 hat Prozeduren zum Einfügen der Zustandssetzverarbeitung und der Warteverarbeitung an dem Ende des parallelen Programms 21a1. Als ein Beispiel hat, wie in 4 gezeigt, der automatische Parallelisierungs-Compiler 1 Prozeduren zum Einfügen der Zustandssetzverarbeitung F3 und der Warteverarbeitung W3 ebenso wie der Zustandssetzverarbeitung F7 und der Warteverarbeitung W6. So erzeugt der automatische Parallelisierungs-Compiler 1 das parallele Programm 21a1, welches es dem ersten Kern 21c und dem zweiten Kern 21d ermöglicht, zur gleichen Zeit abzuschließen. Die Zustandssetzverarbeitung F3 und Warteverarbeitung W3 ebenso wie die Zustandssetzverarbeitung F7 und die Warteverarbeitung W6 sind Verarbeitungen zum gleichzeitigen Beenden der Aufgaben des ersten Kerns 21c und des zweiten Kerns 21d.
-
Das Zustands-Flag A6 entspricht dem fünften Verarbeitungsblock T5. Das Zustands-Flag A6 ist auf „1“ bzw. „0“ bei der Zustandssetzverarbeitung F3 eingestellt, falls der fünfte Verarbeitungsblock T5 beendet worden ist bzw. nicht beendet worden ist. Das Zustands-Flag B11 entspricht dem elften Verarbeitungsblock T11. Das Zustands-Flag B11 ist auf „1“ bzw. „0“ bei der Zustandssetzverarbeitung F7 eingestellt, falls der elfte Verarbeitungsblock T11 beendet worden ist bzw. nicht beendet worden ist.
-
Die Warteverarbeitung W3 entspricht dem Zustands-Flag B11. Die Warteverarbeitung W3 ist unter der Bedingung beendet, dass das Zustands-Flag B11 nach wiederholtem Prüfen, ob das Zustands-Flag B11 „0“ ist, in „1“ geändert worden ist. Die Warteverarbeitung W6 entspricht dem Zustands-Flag A6. Die Warteverarbeitung W6 ist unter der Bedingung, dass das Zustands-Flag A6 nach wiederholtem Prüfen, ob das Zustands-Flag A6 „0“ ist, in „1“ geändert hat, abgeschlossen.
-
Der Computer 10 erzeugt das parallele Programm 21a1, welches Steuerlogikgruppen umfasst, die dem ersten Kern 21c und dem zweiten Kern 21d entsprechen, wie in 4 gezeigt, durch Ausführung des automatischen Parallelisierungs-Compilers 1. Die Steuerlogikgruppen umfassen mehrfache Steuerlogiken, die dem einzelnen Programm entsprechen, welches ein Einkernprozessor zum Durchführen von dessen Steuerfunktion ausführt.
-
Ferner erzeugt der Computer 10 das Nichtsteuerprogramm 21a2, welches die synchrone Überwachungsverarbeitung und die synchrone ausfallsichere Verarbeitung umfasst und bei einer in 4 gezeigten Aufgabenaktvierungsverarbeitung (Task-Aktivierungsverarbeitung) durch Ausführung des automatischen Parallelisierungs-Compilers 1 ausgeführt wird. Das Nichtsteuerprogramm 21a2 umfasst somit eine Überwachungslogik und eine ausfallsichere Logik. Obgleich das parallele Programm 21a1 mehrfache Steuerlogiken umfasst, umfasst es aber weder die Überwachungslogik noch die ausfallsichere Logik, die in dem Nichtsteuerprogramm 21a2 enthalten sind.
-
Wie in 2 gezeigt, ist die fahrzeuginterne Steuervorrichtung 20 ausgestaltet, einen Mehrkernprozessor 21, einen Kommunikationsteil 22, einen Sensorteil 23 und einen Eingabe-Ausgabe-Anschluss (Eingabe-Ausgabe-Port) 24 zu umfassen. Der Mehrkernprozessor 21 umfasst nicht nur den ersten Kern 21c und den zweiten Kern 21d, sondern auch ein ROM 21a und ein RAM 21b, von welchen jedes ein Speichermedium ist. Die fahrzeuginterne Steuervorrichtung 20 wird z.B. in einer Verbrennungsmotorsteuervorrichtung oder einer Hybridsteuervorrichtung, welche in einem Fahrzeug montiert sind, verwendet. Als ein Beispiel wird die fahrzeuginterne Steuervorrichtung 20 angenommen, in der Verbrennungsmotorsteuervorrichtung verwendet zu werden. In diesem Beispiel ist das parallele Programm 21a1 z.B. ein Fahrzeugsteuerprogramm für eine Verbrennungsmotorsteuerung. Der Mehrkernprozessor 21 ist ein Mehrkernprozessor. Der Kern kann als ein Prozessorelement bezeichnet sein.
-
Das RAM
21b, der Kommunikationsteil
22, der Sensorteil
23 und der Eingabe-Ausgabe-Teil
24 sind ähnlich zu einem RAM
420, einem Kommunikationsteil
430, einem Sensorteil
450 und einem Eingabe-Ausgabe-Anschluss
460 in der
JP 2015-1807 A vorgesehen.
-
Das ROM 21a speichert darin das Programm 21a3, welches durch den ersten Kern 21c und den zweiten Kern 21d ausführbar ist. Das Programm 21a3 umfasst das parallele Programm 21a1, welches durch das Parallelisierungsverfahren erzeugt worden ist. Der erste Kern 21c und der zweite Kern 21d führen die Verbrennungsmotorsteuerung durch Ausführen des parallelen Programms 21a1 aus. Das heißt, der erste Kern 21c und der zweite Kern 21d führen die Verbrennungsmotorsteuerung durch Ausführung der Steuerlogik gemäß dem parallelen Programm 21a1 durch.
-
Das Programm 21a3 umfasst ferner das Nichtsteuerprogramm 21a2, welches von dem Parallelisierungsverfahren erzeugt worden ist und unterschiedlich zu dem parallelen Programm 21a1 ist. Der erste Kern 21c und der zweite Kern 21d führen das Nichtsteuerprogramm 21a2 aus.
-
In dem vorliegenden Ausführungsbeispiel wird der Mehrkernprozessor 21 angenommen, in der fahrzeuginternen Steuervorrichtung 20 montiert zu sein. Die vorliegende Erfindung ist nicht auf dieses Beispiel beschränkt, und der Mehrkernprozessor 21 kann in irgendwelchen anderen Vorrichtungen, z.B. einem Arbeitsplatz-Computer, die unterschiedlich zu der fahrzeuginternen Steuervorrichtung 20 sind, montiert sein.
-
Eine Verarbeitungsoperation (Verarbeitungstätigkeit) des Computers
10 wird als nächstes mit Bezug auf
3 und
4 beschrieben werden. Die CPU 13 führt eine mittels eines Flussdiagramms in
3 gezeigte Verarbeitung aus, wenn z.B. ein Ausführungsbefehl für die Einfügungsverarbeitung von einer Eingabevorrichtung
16 erzeugt wird. Die CPU
13 erzeugt das Programm 21a3, welches das parallele Programm 21a1 und das Nichtsteuerprogramm 21a2 umfasst, aus dem einzelnen Programm durch Ausführung des automatischen Parallelisierungs-Compilers
1. Die CPU
13 führt die folgenden Schritte S11 bis S14 im Falle eines Erzeugens des parallelen Programms 21a1 gemäß der in der
JP 2015-1807 A offenbarten Prozedur aus.
-
In Schritt S11 fügt die CPU 13 die Zustandssetzverarbeitung ein. Die CPU 13 führt die Einfügeprozedur der Zustandssetzverarbeitung in dem automatischen Parallelisierungs-Compiler 1 aus. Das heißt, die CPU 13 fügt die Zustandssetzverarbeitungen F0 bis F2 und F4 bis F6 in das parallele Programm 21a1 ein. In dem vorliegenden Ausführungsbeispiel, wie es in 4 gezeigt ist, fügt die CPU 13 z.B. die erste Zustandssetzverarbeitung F1 und die achte Zustandssetzverarbeitung F8 dem ersten Verarbeitungsblock T1 bzw. dem achten Verarbeitungsblock T8 folgend ein. Der Computer 10 umfasst somit einen Funktionsblock, der die Zustandssetzverarbeitung einfügt. Schritt S11 entspricht somit einem Speicher(ungs)verarbeitungseinfügeteil. Die CPU 13 kann im Schritt S11 die dritte Zustandssetzverarbeitung F3 und die siebte Zustandssetzverarbeitung F7 in das parallele Programm 21a1 einfügen.
-
In dem vorliegenden Ausführungsbeispiel ist die CPU 13 beispielhaft dargestellt, im Schritt S11 die mehreren Zustandssetzverarbeitungen F0 bis F2 und F4 bis F6 in das parallele Programm 21a1 einzufügen, wie in 4 gezeigt. Alternativ kann die CPU 13 eine Zustandssetzverarbeitung in das parallele Programm 21a1 einfügen.
-
Die CPU 13 fügt die Warteverarbeitung in Schritt S12 ein. Die CPU 13 führt die Einfügeprozedur der Warteverarbeitung in dem automatischen Parallelisierungs-Compiler 1 aus. Das heißt, die CPU 13 fügt die Warteverarbeitungen W1, W2, W4 und W5 in das parallele Programm 21a1 ein. In dem vorliegenden Ausführungsbeispiel fügt, wie in 4 gezeigt, die CPU 13 z.B. die vierte Warteverarbeitung W4 und die erste Warteverarbeitung W1 dem achten Verarbeitungsblock T8 bzw. dem dritten Verarbeitungsblock T3 vorausgehend ein. Der Computer 10 umfasst somit einen Funktionsblock, welcher die Warteverarbeitung einfügt. Schritt S12 entspricht somit einem Warteverarbeitungseinfügeteil. Die CPU 13 kann in Schritt S12 die dritte Warteverarbeitung W3 und die sechste Warteverarbeitung W6 in das parallele Programm 21a1 einfügen.
-
Die CPU 13 fügt die synchrone Überwachungsverarbeitung in Schritt S13 ein. Die CPU 13 führt die Einfügeprozedur der synchronen Überwachungsverarbeitung in dem automatischen Parallelisierungs-Compiler 1 aus. Das heißt, die CPU 13 fügt die synchrone Überwachungsverarbeitung in das Nichtsteuerprogramm 21a2 ein. Der Computer 10 umfasst somit einen Funktionsblock, der die synchrone Überwachungsverarbeitung einfügt. Schritt S13 entspricht somit einem Überwachungsverarbeitungseinfügeteil.
-
Die CPU 13 fügt die synchrone ausfallsichere Verarbeitung in Schritt S14 ein. Die CPU 13 führt die Einfügeprozedur der synchronen ausfallsicheren Verarbeitung in dem automatischen Parallelisierungs-Compiler 1 aus. Das heißt, die CPU 13 fügt die synchrone ausfallsichere Verarbeitung in das Nichtsteuerprogramm 21a2 ein. Der Computer 10 umfasst somit einen Funktionsblock, der die synchrone ausfallsichere Verarbeitung einfügt. Schritt S14 entspricht somit einem Ausfallsichere-Verarbeitungs-Einfügeteil.
-
Wie oben beschreiben erzeugt der Computer 10 das parallele Programm 21a1 und das Nichtsteuerprogramm 21a2 in dem vorliegenden Ausführungsbeispiel durch Ausführung der Schritte S11 bis S14. Ein Beispiel eines erzeugten parallelen Programms 21a1 ist in 1 gezeigt. In diesem Beispiel sind der erste Verarbeitungsblock T1, der zweite Verarbeitungsblock T2, der dritte Verarbeitungsblock T3, der vierte Verarbeitungsblock T4 und der fünfte Verarbeitungsblock T5 dem ersten Kern 21c zugewiesen. Auf der anderen Seite sind der siebte Verarbeitungsblock T7, der achte Verarbeitungsblock T8, der neunte Verarbeitungsblock T9, der zehnte Verarbeitungsblock T10 und der elfte Verarbeitungsblock T11 dem zweiten Kern 21d zugewiesen.
-
Ferner werden in das parallele Programm 21a1 die Zustandssetzverarbeitung F1 und die Zustandssetzverarbeitung F5 dem ersten Verarbeitungsblock T1 bzw. dem achten Verarbeitungsblock T8 folgend eingefügt. Ferner werden in das parallele Programm 21a1 die Warteverarbeitung W1 und die Warteverarbeitung W4 dem dritten Verarbeitungsblock T3 bzw. dem achten Verarbeitungsblock T8 vorausgehend eingefügt.
-
Das Nichtsteuerprogramm 21a2 umfasst die Überwachungsverarbeitung, die überwacht, ob die Zustands-Flags alle auf „1“ gesetzt sind, und die synchrone ausfallsichere Verarbeitung, die ausgeführt wird, wenn irgendeines der Zustands-Flags nicht auf „1“ gesetzt ist.
-
Die vorliegende Erfindung ist nicht auf das oben beschriebene Beispiel beschränkt. Zum Beispiel können das parallele Programm 21a1 und das Nichtsteuerprogramm 21a2 durch Ausführen der Schritte S11 bis S14 zusätzlich zu dem in
JP 2015-1807 A offenbarten Parallelisierungsverfahren erzeugt werden.
-
Verarbeitungsoperationen des ersten Kerns 21c und des zweiten Kerns 21d des Mehrkernprozessors 21 werden unten im Detail mit Bezug auf 4, 5 und 6 beschrieben werden. Der erste Kern 21c und der zweite Kern 21d führen eine Aufgabenaktivierungsverarbeitung zu jeder vorbestimmten Zeit aus und führen die zugewiesene Verarbeitung, die jeweils zugewiesen ist, wie sie in 4 gezeigt ist, nach der Aufgabenaktivierungsverarbeitung aus.
-
Der erste Kern 21c und der zweite Kern 21d führen das Nichtsteuerprogramm 21a2 bei der Aufgabenaktivierungsverarbeitung aus, d.h. vor einer Ausführung des parallelen Programms 21a1. Der erste Kern 21c und der zweite Kern 21d führen eine als ein Flussdiagramm in 5 gezeigte Verarbeitung bei der Aufgabenaktivierungsverarbeitung aus. Das Nichtsteuerprogramm 21a2 umfasst somit die Verarbeitung(en) der Schritte S21 bis S25.
-
In einigen Fällen, die von den Inhalten der synchronen ausfallsicheren Verarbeitung abhängen, können der erste Kern 21c und der zweite Kern 21d die synchrone ausfallsichere Verarbeitung ohne Ausführung des parallelen Programms 21a1 ausführen, wenn irgendeines der Zustands-Flags „0“ ist, als ein Ergebnis einer Ausführung des Nichtsteuerprogramms 21a2. Wenn irgendeines der Zustands-Flags z.B. in der Einstellung des Notlaufbetriebsmodus „0“ ist, führen der erste Kern 21c und der zweite Kern 21d die Zustandssetzverarbeitung für das Notlauffahren des Fahrzeugs gemäß dem Notlaufbetriebsmodus aus, ohne das parallele Programm 21a1 auszuführen.
-
In 6, welches ein Zeitablaufdiagramm der Verarbeitungsoperationen des ersten Kerns 21c und des zweiten Kerns 21d zeigt, ist nur das erste Zustands-Flag A1 unter den mehreren Zustands-Flags gezeigt. Ferner zeigt 6 ein Beispiel, dass der erste Kern 21c und der zweite Kern 21d eine Ausführung der Aufgabenaktivierungsverarbeitung zur Zeit ti0 (d.h. zum Zeitpunkt ti0) starten und die Aufgaben zur Zeit ti1 ohne synchrone ausfallsichere Verarbeitung ausführen, und die nächste Aktivierungsverarbeitung zur Zeit ti6 ausführen, welches nach einer vorbestimmte Zeitperiode von der Aktivierungszeit ti0 ist. Ferner führen, in dem in 6 gezeigten Beispiel, nach einem Starten der Aufgabenaktivierungsverarbeitung zur Zeit ti6, der erste Kern 21c und der zweite Kern 21d die synchrone ausfallsichere Verarbeitung zur Zeit ti7 aus und führen die Aufgabe zur Zeit ti8 aus.
-
Ferner wird, in dem in 6 gezeigten Beispiel, das erste Zustands-Flag A1 angenommen, versehentlich zur Zeit ti3 auf „0“ zu wechseln, und der Wartezustand der Warteverarbeitung W4 läuft fort. Somit setzt sich die Warteverarbeitung W1 fort, sodass sie festfährt. Das heißt, die Systemblockade entsteht bei der ersten Warteverarbeitung W1, welche bei der Zeit ti5 beginnt, in dem ersten Kern 21c. Die Systemblockade entsteht in der Warteverarbeitung W4, welche bei der Zeit ti4 beginnt, in dem zweiten Kern 21d.
-
In Schritt S21 prüfen der erste Kern 21c und der zweite Kern 21d, ob die vorher aktivierten Aufgaben abgeschlossen worden sind. Der erste Kern 21c und der zweite Kern 21d prüfen, ob die vorher aktivierten Aufgaben abgeschlossen worden sind, wie es zu einer Zeit unmittelbar nach der Zeit ti0 und der Zeit ti6 gezeigt wird. Basierend auf den Prüfungsergebnissen führen der erste Kern 21c und der zweite Kern 21d Schritt S25 und Schritt S22 aus, falls die Aufgabe abgeschlossen worden ist bzw. noch nicht abgeschlossen worden ist.
-
Zum Beispiel ermitteln der erste Kern 21c und der zweite Kern 21d, dass die vorher aktivierte Aufgabe abgeschlossen worden ist, falls das Zustands-Flag B11 und das Zustands-Flag A6 auf „1“ gesetzt sind. Der erste Kern 21c und der zweite Kern 21d ermitteln, dass die vorher aktivierte Aufgabe nicht abgeschlossen worden ist, falls eines von dem Zustands-Flag B11 und dem Zustands-Flag A6 nicht auf „1“ gesetzt ist.
-
Der erste Kern 21c und der zweite Kern 21d aktivieren Aufgaben im Schritt S25. Der erste Kern 21c und der zweite Kern 21d starten eine Ausführung des parallelen Programms 21a1, wie es zur Zeit ti1 und zur Zeit ti8 gezeigt ist, nach der Aufgabenaktivierung.
-
Der erste Kern 21c und der zweite Kern 21d prüfen in Schritt S22, ob irgendeines der Zustands-Flags „0“ ist. Der erste Kern 21c und der zweite Kern 21d prüfen, ob irgendeines der Zustands-Flags A1, A3, B8 und B10 „0“ ist. Das heißt, der erste Kern 21c und der zweite Kern 21d prüfen, ob irgendeiner der Verarbeitungsblöcke noch nicht abgeschlossen worden ist. Der erste Kern 21c und der zweite Kern 21d können alternativ im Schritt S22 prüfen, ob irgendeines der Zustands-Flags, die das Zustands-Flag A6 und das Zustands-Flag B11 umfassen, „0“ ist.
-
Im Falle einer Ermittlung, dass alle der Zustands-Flags auf „1“ gesetzt sind, ermitteln der erste Kern 21c und der zweite Kern 21d, dass alle der Verarbeitungsblöcke abgeschlossen worden sind und führen Schritt S23 aus. Im Falle einer Ermittlung, dass irgendeines der Zustands-Flags „0“ ist, ermitteln der erste Kern 21c und der zweite Kern 21d, dass zumindest einer der Verarbeitungsblöcke nicht abgeschlossen worden ist und führen Schritt S24 aus. In dem Beispiel von 6 ermitteln der erste Kern 21c und der zweite Kern 21d „JA“ (zumindest ein Zustands-Flag ist „0“) in dem in der Aufgabenaktivierungsverarbeitung ausgeführten Schritt S22, welche von der Zeit ti6 bis zu der Zeit ti8 stattfindet.
-
Der erste Kern 21c und der zweite Kern 21d führen die synchrone ausfallsichere Verarbeitung aus. Der erste Kern 21c und der zweite Kern 21d führen die synchrone ausfallsichere Verarbeitung zur Zeit ti7 aus, welche innerhalb der Aktivierungsverarbeitung zwischen der Zeit ti6 und der Zeit ti8 liegt. Der erste Kern 21c und der zweite Kern 21d setzen z.B. die Aufgabe bei der zur Zeit ti7 ausgeführten synchronen ausfallsicheren Verarbeitung zurück. Der erste Kern 21c und der zweite Kern 21d führen das parallele Programm 21a1 aus, wie es nach der Zeit ti8 gezeigt ist.
-
Der erste Kern 21c und der zweite Kern 21d führen eine ausfallsichere Verarbeitung einer Aufgabenaktivierungszeit aus. Diese Aufgabenaktivierungszeit-ausfallsichere-Verarbeitung ist unterschiedlich zu der ausfallsicheren Verarbeitung der synchronen ausfallsicheren Verarbeitung und nicht auf eine besondere Verarbeitung beschränkt. Jeder von dem ersten Kern 21c und dem zweiten Kern 21d aktiviert die Aufgabe auf ähnliche Weise wie in Schritt S25 nach einer Beendigung von Schritt S23.
-
Da das Nichtsteuerprogramm 21a2 bei der Aufgabenaktivierungsverarbeitung bei dem vorliegenden Ausführungsbeispiel ausgeführt wird, ist das Nichtsteuerprogramm 21a2, das die Schritte S21 und S25 enthält, vorgesehen. Die vorliegende Erfindung ist nicht auf dieses Beispiel beschränkt. Das Nichtsteuerprogramm 21a2 kann unterschiedlich sein, solange es die Schritte S22 und S24 enthält.
-
Nach Beendigung der Aufgabenaktivierungsverarbeitung führt jeder von dem ersten Kern 21c und dem zweiten Kern 21d die Verarbeitung des Programms 21a, welches ihm selbst zugewiesen ist, wie in 4 gezeigt, in der Reihenfolge höherer Priorität aus. Der erste Kern 21c führt die nullte Zustandssetzverarbeitung F0 zur Zeit ti1 aus und setzt das Zustands-Flag AA auf „0“. Der erste Kern 21c setzt die Zustands-Flags A1, A3 und A6 zurück, d.h., setzt diese Flags auf „0“. Der zweite Kern 21d führt ebenfalls die vierte Zustandssetzverarbeitung F4 zur Zeit ti1 aus und setzt das Zustands-Flag BA auf „0“. Der zweite Kern 21d setzt die Zustands-Flags B8, B10 und B11 zurück, d.h. setzt diese Flags auf „0“.
-
Dann führt der erste Kern 21c den ersten Verarbeitungsblock T1 aus. Wenn der erste Kern 21c die Ausführung des ersten Verarbeitungsblocks T1 beendet, führt der erste Kern 21c die Zustandssetzverarbeitung F1 aus und setzt das erste Zustands-Flag A1 auf „1“. Nach Setzen des ersten Zustands-Flags A1 auf „1“, führt der erste Kern 21c den zweiten Verarbeitungsblock T2 aus. In dem vorliegenden Ausführungsbeispiel wird angenommen, dass das erste Zustands-Flag A1 versehentlich z.B. durch Rauschen zur Zeit ti3, wie in 6 gezeigt, zurückgesetzt wird. Das heißt, das erste Zustands-Flag A1 des Mehrkernprozessors 21 wird von „1“ zu „0“ geändert.
-
Der zweite Kern 21d führt den siebten Verarbeitungsblock T7 nach Setzen des Zustands-Flags BA auf „0“ aus. Wenn der zweite Kern 21d die Ausführung des siebten Verarbeitungsblocks T7 beendet, führt der zweite Kern 21d die Warteverarbeitung W4 zur Zeit ti4 aus und läuft in einer Schleife, bis das erste Zustands-Flag A1 in „1“ geändert ist.
-
Jedoch wird das erste Zustands-Flag A1 zur Zeit ti3 auf „0“ zurückgesetzt. Das erste Zustands-Flag A1 bleibt „0“, obgleich die Ausführung des ersten Verarbeitungsblocks T1 abgeschlossen worden ist. Aus diesem Grunde läuft der zweite Kern 21d in einer Schleife und verbleibt festgefahren, bis das erste Zustands-Flag A1 nach der Zeit ti4 auf „1“ gesetzt wird. Wenn der erste Kern 21c die Ausführung des zweiten Verarbeitungsblocks T2 beendet, führt der erste Kern 21c die Warteverarbeitung W1 zur Zeit ti5 aus und läuft in einer Schleife, bis das achte Zustands-Flag B8 in „1“ geändert wird. Da jedoch der zweite Kern 21d in der Warteverarbeitung W4 wie oben beschrieben festgefahren ist, kann der erste Kern 21c den dritten Verarbeitungsblock T3 nicht ausführen. Somit fährt das achte Zustands-Flag B8 fort, „0“ zu bleiben. Der erste Kern 21c läuft in einem festgefahrenen Zustand von der Zeit ti5 in einer Schleife, bis das achte Zustands-Flag B8 auf „1“ gesetzt wird.
-
Da sowohl der erste Kern 21c als auch der zweite Kern 21d somit festgefahren sind, führen der erste Kern 21 und der zweite Kern 21d die nächste Aufgabenaktivierungsverarbeitung nach einer vorbestimmten Zeitperiode, wie zur Zeit ti6 gezeigt, aus, ohne die Aufgabe dieser Zeit abzuschließen. Der erste Kern 21c und der zweite Kern 21d ermitteln NEIN (Zustands-Flag ist „0“) in Schritt S21 in der momentanen Aufgabenaktivierungsverarbeitung und führen Schritt S22 aus. Der erste Kern 21c und der zweite Kern 21d ermitteln JA (Zustands-Flag ist „1“) in Schritt S22 und führen die synchrone ausfallsichere Verarbeitung zur Zeit ti7 aus.
-
Nach erneuter Ausführung der Aufgabenaktivierungsverarbeitung führt jeder von dem ersten Kern 21c und dem zweiten Kern 21d die Verarbeitung des Programms 21a von 4, die ihm selbst zugewiesen ist, in der Reihenfolge höherer Priorität nach der Zeit ti8 auf ähnliche Weise wie bei dem oben beschriebenen Fall aus. Bei der momentanen Aufgabe, d.h., nach der Zeit ti8 in 6, wird es angenommen, dass das Zustands-Flag nicht versehentlich zurückgesetzt wird und keine Systemblockierung entsteht.
-
Der erste Kern 21c setzt das Zustands-Flag A6 auf „1“ in der Zustandssetzverarbeitung F3. Der erste Kern 21c wiederholt ein Prüfen, ob das Zustands-Flag B11 „0“ ist, in der Warteverarbeitung W3, bis das Zustands-Flag B11 auf „1“ gesetzt ist. Der zweite Kern 21d setzt das Zustands-Flag B11 in der Zustandssetzverarbeitung F7 auf Der zweite Kern 21d wiederholt ein Prüfen, ob das Zustands-Flag A6 „0“ ist, in der Warteverarbeitung W6, bis das Zustands-Flag A6 auf „1“ gesetzt ist. Somit sind der erste Kern 21c und der zweite Kern 21d befähigt, jeweilige Aufgaben zur gleichen Zeit, d.h. parallel, abzuschließen.
-
Wie oben beschrieben, erzeugt der automatische Parallelisierungs-Compiler 1 das parallele Programm 21a1, welches eine mehrfache Verarbeitung, die von den mehreren Kernen 21c und 21d ausgeführt werden soll, parallelisiert, aus der mehrfachen Verarbeitung des einzelnen Programms, welches parallelisierbar ist. Der automatische Parallelisierungs-Compiler 1 fügt in das parallele Programm 21a1 die Zustandssetzverarbeitung, welche den Beendigungszustand der vorherigen Verarbeitung nach Beendigung der vorherigen Verarbeitung speichert, und die Warteverarbeitung, welche die Ausführung der späteren Verarbeitung unter der Bedingung, dass der Beendigungszustand der vorherigen Verarbeitung gespeichert ist, erlaubt, d.h., das Zustands-Flag „1“ ist, ein. Der automatische Parallelisierungs-Compiler 1 erzeugt somit das parallele Programm 21a1, das die Steuerlogik enthält, welche dem von dem Einkernprozessor ausgeführten einzelnen Programm entspricht.
-
Der automatische Parallelisierungs-Compiler 1 fügt ferner die synchrone Überwachungsverarbeitung und die synchrone ausfallsichere Verarbeitung in das Nichtsteuerprogramm 21a2 ein, welches unterschiedlich zu dem parallelen Programm 21a1 ist. Aus diesem Grunde kann der automatische Parallelisierungs-Compiler 1 das Nichtsteuerprogramm 21a2, das die Überwachungslogik und die ausfallsichere Logik enthält, getrennt von dem parallelen Programm 21a1 erzeugen. Der automatische Parallelisierungs-Compiler 1 kann somit das Nichtsteuerprogramm 21a2 erzeugen, welches es den mehrfachen Kernen 21c und 21d ermöglicht, die synchrone ausfallsichere Verarbeitung auszuführen, wenn das Zustands-Flag sich versehentlich von „1“ in „0“ geändert hat.
-
Aus diesem Grunde brauchen die mehrfachen Kerne 21c und 21d das Nichtsteuerprogramm 21a2 nicht bei einer Ausführung des parallelen Programms 21a1 ausführen und können die Verwaltung der Steuerlogik und die Verwaltung der Überwachungslogik und der ausfallsicheren Logik getrennt ausführen. Der automatische Parallelisierungs-Compiler 1 kann somit das parallele Programm 21a1 erzeugen, welches eine einfache Logikverwaltung ermöglicht, verglichen mit einem Fall, in welchem das Nichtsteuerprogramm 21a2 in dem parallelen Programm 21a1 enthalten ist.
-
Zum Beispiel sind in dem Fall, in welchem das Nichtsteuerprogramm 21a2 in dem parallelen Programm 21a1 enthalten ist, die Verwaltung der Steuerlogik und die Verwaltung der Überwachungslogik und der ausfallsicheren Logik kompliziert. Das parallele Programm 21a1 ruft wahrscheinlich eine fehlerhafte Änderung hervor, falls die Logiken nicht angemessen von den mehreren Kernen 21c und 21d verwaltet werden. Da jedoch der automatische Parallelisierungs-Compiler 1 das parallele Programm 21a1 erzeugt, welches die Logikverwaltung vereinfacht, ist es möglich, es vor der fehlerhaften Änderung zu schützen.
-
Ferner ist es möglich zu vermeiden, dass die Verarbeitungslasten der mehrfachen Kerne 21c und 21d, die für ein Ausführen des Nichtsteuerprogramms 21a2 erforderlich sind, in den Verarbeitungslasten der mehreren Kerne 21c und 21d, die für ein Ausführen des parallelen Programms 21a1 erforderlich sind, enthalten sind. Der automatische Parallelisierungs-Compiler 1 kann deshalb das parallele Programm 21a1 erzeugen, welches wirkungsvoll ist, eine Zunahme der Verarbeitungslasten, die für die mehreren Kerne 21cund 21d erforderlich sind, um die Steuerlogiken auszuführen, zu unterdrücken. In einigen Fällen bei einer Herstellung des direkt auf eine Steuerung bezogenen parallelen Programms können die fahrzeuginterne Steuervorrichtung 20 und der Mehrkernprozessor, der das parallele Programm 21a1 enthält, anderen bzw. verschiedenen Herstellern anvertraut werden. In solchen Fällen kann der automatische Parallelisierungs-Compiler 1 die synchrone Überwachungsverarbeitung und die synchrone ausfallsichere Verarbeitung, die nicht direkt auf die Verbrennungsmotorsteuerung oder ähnliches bezogen sind, als das Nichtsteuerprogramm 21a2 von dem parallelen Programm 21a1, welches sich direkt auf die Verbrennungsmotorsteuerung oder ähnliches bezieht, trennen. Der automatische Parallelisierungs-Compiler 1 ist somit darin effektiv, dass die Herstellung des parallelen Programms 21a1 und von ähnlichen beauftragt werden kann, ohne das Nichtsteuerprogramm 21a2 zu beinhalten. Der automatische Parallelisierungs-Compiler 1 ist auch darin effektiv, dass die Herstellung des parallelen Programms 21a1 und von ähnlichen beauftragt werden kann, ohne die für eine Ausführung des Nichtsteuerprogramms 21a2 in die für eine Ausführung des parallelen Programms 21a1 erforderliche Verarbeitungslast einzuschließen.
-
Ferner kann der Computer 10, da der Computer 10 das parallele Programm 21a1 und das Nichtsteuerprogramm 21a2 durch Ausführung des automatischen Parallelisierungs-Compilers 1 erzeugt, das parallele Programm 21a1 erzeugen, wie der automatische Parallelisierungs-Compiler 1 es erzeugt. Der Computer 10 stellt somit ähnliche Vorteile wie der automatische Parallelisierungs-Compiler 1 bereit.
-
Wie oben beschrieben umfasst die fahrzeuginterne Steuervorrichtung 20 den Mehrkernprozessor 21 ebenso wie das wie oben beschrieben erzeugte parallele Programm 21a1 und das Nichtsteuerprogramm 21a2. In dem Mehrkernprozessor 21 führt jeder der Kerne 21c und 21d das parallele Programm 21a1 und das Nichtsteuerprogramm 21a2 aus. Aus diesem Grund kann, selbst wenn sich das Zustands-Flag versehentlich von „1“ in „0“ ändert, die fahrzeuginterne Steuervorrichtung 20 die ausfallsichere Verarbeitung ausführen. Die fahrzeuginterne Steuervorrichtung 20 ist verglichen mit einem Fall, bei welchem das Nichtsteuerprogramm 21a2 in dem parallelen Programm 21a1 enthalten ist, effektiver, die Verwaltung der Logik zu vereinfachen und verhindert eine Zunahme der Verarbeitungslast, wenn die mehreren Kerne 21c und 21d die Steuerlogiken ausführen.
-
In dem vorliegenden Ausführungsbeispiel ist das Nichtsteuerprogramm 21a2 beispielhaft dargestellt, zu der Aufgabenaktivierungsverarbeitungszeit ausgeführt zu werden. Die vorliegende Erfindung ist nicht auf dieses Ausführungsbeispiel beschränkt, sondern kann in dem automatischen Parallelisierungs-Compiler 1 und dem Computer 10 realisiert sein, in welchem die Überwachungsverarbeitung und die synchrone ausfallsichere Verarbeitung in von dem parallelen Programm 21a1 unterschiedliche Programme eingefügt sind und von zwei Kernen 21c und 21d ausführbar sind. Das Programm zum Einfügen des Überwachungsprogramms und der synchronen ausfallsicheren Verarbeitung kann ein Programm sein, welches von zwei Kernen 21c und 21d ausführbar ist und eine höhere Priorität als diejenige des parallelen Programms 21a1 hat.
-
Ferner wird, bei dem vorliegenden Ausführungsbeispiel, der Mehrkernprozessor 21, der zwei Kerne 21c und 21d enthält, verwendet. Aus diesem Grunde ist das vorliegende Ausführungsbeispiel beispielhaft dargestellt, das Programm 21a3, welches von zwei Kernen 21c und 21d ausführbar ist, entsprechend zwei Kernen 21c und 21d zu erzeugen. Die vorliegende Erfindung kann selbst in einem Ausführungsbeispiel implementiert sein, in welchem drei oder mehr Kerne vorgesehen sind. In diesem Fall wird das Programm 21a3 erzeugt, drei oder mehr Kerne zu entsprechen, d.h., parallel von drei oder mehr Kernen ausgeführt zu werden.
-
Die vorliegende Erfindung ist nicht auf das oben beschriebene Ausführungsbeispiel beschränkt, sondern kann wie unten beschrieben mit verschiedenen Modifikationen realisiert werden. Jede der folgenden Modifikationen kann einzeln oder in Kombination realisiert werden.
-
(Modifikation)
-
Eine Modifikation wird unten mit Bezug auf 7 und 8 beschrieben werden. Die vorliegende Modifikation ist unterschiedlich zu dem oben mit Bezug auf 1 bis 6 beschriebenen Ausführungsbeispiel darin, dass der automatische Parallelisierungs-Compiler 1 eine Prozedur zum Einfügen einer spezifizierten Verarbeitung in das Nichtsteuerprogramm 21a2 enthält. Auf ähnliche Weise ist die vorliegende Modifikation unterschiedlich zu dem oben beschriebenen Ausführungsbeispiel darin, dass der Computer 10 einen Einfügungsteil der spezifizierten Verarbeitung umfasst. Die vorliegende Modifikation ist unterschiedlich zu dem oben beschriebenen Ausführungsbeispiel darin, dass jeder der Kerne 21c und 21d die synchrone Überwachungsverarbeitung und die synchrone ausfallsichere Verarbeitung in Bezug auf jedes Zustands-Flag ausführt.
-
Eine Verarbeitungsoperation des Computers
10 gemäß der Modifikation wird als erstes beschrieben werden. Die CPU
13 führt eine als ein Flussdiagramm in
7 gezeigte Verarbeitung aus, wenn z.B. ein Befehl zum Ausführen der Einfügeverarbeitung von der Eingabevorrichtung
16 ausgegeben wird. Die CPU 13 erzeugt das Programm 21a3, welches das parallele Programm 21a1 und das Nichtsteuerprogramm 21a2 enthält, aus dem einzelnen Programm durch Ausführung des automatischen Parallelisierungs-Compilers
1. Die CPU
13 führt die folgenden Schritte S11 bis S14 und S131 beim Erzeugen des parallelen Programms 21a1 basierend auf der in der
JP 2015-1807 A offenbarten Prozedur aus.
-
Die CPU 13 führt eine spezifizierte Verarbeitung in Schritt S131 aus, der Schritt S13 folgt. Die CPU 13 fügt die spezifizierte Verarbeitung in das Nichtsteuerprogramm 21a2 ein (Spezifizierte-Verarbeitungs-Einfügeprozedur, Spezifizierte-Verarbeitungs-Einfügungsteil). Nach Detektion, dass das Zustands-Flag nicht auf „1“ gesetzt ist, fügt die CPU 13 die spezifizierte Verarbeitung, welche spezifiziert, dass die Zustandssetzverarbeitung das Zustands-Flag nicht auf „1“ gesetzt hat, in das Nichtsteuerprogramm 21a2 ein. Bei der Einfügeprozedur der synchronen ausfallsicheren Verarbeitung fügt die CPU 13 die synchrone ausfallsichere Verarbeitung, welche in Bezug auf jedes von der spezifizierten Verarbeitung spezifizierte Zustands-Flag ausgeführt wird, in das Nichtsteuerprogramm 21a2 ein. Das heißt, die CPU 13 gemäß der Modifikation prüft die mehreren Zustands-Flags individuell dahingehend, ob das jeweilige Zustands-Flag auf „1“ gesetzt ist. Die CPU 13 erzeugt das Nichtsteuerprogramm 21a2, welches die Ausführung der synchronen ausfallsicheren Verarbeitung für jedes Zustands-Flag angibt, das nicht auf „1“ gesetzt ist.
-
Verarbeitungsoperationen des ersten Kerns 21c und des zweiten Kerns 21d werden als nächstes mit Bezug auf 8 beschrieben werden. Der erste Kern 21c und der zweite Kern 21d führen eine in einem Flussdiagramm von 8 gezeigte Verarbeitung zu jeder Aufgabenaktivierung einer vorbestimmten Zeit aus. Die in 8 gezeigte Verarbeitung ist unterschiedlich zu derjenigen von 5 dahingehend, dass die synchrone ausfallsichere Verarbeitung, die in S4 in 5 ausgeführt wird, in die Schritte S31 bis S42 modifiziert ist.
-
Nach Ermittlung von JA (zumindest ein Zustands-Flag ist „0“) in Schritt S22, führen der erste Kern 21c und der zweite Kern 21d Schritt S31 aus.
-
In Schritt S31 wird geprüft, ob das erste Zustands-Flag A1 auf „1“ gesetzt ist (spezifizierte Verarbeitung). Nach Ermittlung, dass das erste Zustands-Flag A1 auf „1“ gesetzt ist, ermittelt der zweite Kern 21d, dass der erste Verarbeitungsblock T1 beendet worden ist und führt Schritt S33 aus.
-
Nach Ermittlung, dass das erste Zustands-Flag A1 nicht auf „1“ gesetzt ist, ermittelt der zweite Kern 21d, dass der erste Verarbeitungsblock T1 noch nicht abgeschlossen worden ist und führt Schritt S32 aus. Das heißt, der zweite Kern 21d spezifiziert, dass die Zustandssetzverarbeitung, deren Zustand noch nicht auf „1“ gesetzt worden ist, die erste Zustandssetzverarbeitung F1 ist.
-
Somit spezifiziert der zweite Kern 21d den Verarbeitungsblock, dessen Verarbeitung noch nicht abgeschlossen worden ist. In diesem Fall spezifiziert der zweite Kern 21d, dass die Verarbeitung des ersten Verarbeitungsblocks T1 von dem ersten Kern 21c noch nicht beendet worden ist.
-
Der zweite Kern 21d führt die synchrone ausfallsichere Verarbeitung, welche dem ersten Zustands-Flag A1 entspricht, in Schritt S32 aus. Der zweite Kern 21d führt die synchrone ausfallsichere Verarbeitung, die dem ersten Zustands-Flag A1 entspricht, d.h., die synchrone ausfallsichere Verarbeitung, die für einen Fall geeignet ist, in welchem der erste Verarbeitungsblock T1 noch nicht beendet worden ist, aus. Der zweite Kern 21d führt die Schritte S33 bis S36 auf ähnliche Weise durch Ändern des betreffenden Zustands-Flags aus.
-
In Schritt S37 wird es geprüft, ob das achte Zustands-Flag B8 auf „1“ gesetzt ist (spezifizierte Verarbeitung). Nach Ermittlung, dass das achte Zustands-Flag B8 auf „1“ gesetzt ist, stellt der erste Kern 21c fest, dass der achte Verarbeitungsblock T8 abgeschlossen worden ist und führt Schritt S39 aus.
-
Nach Feststellung, dass das achte Zustands-Flag B8 nicht auf „1“ gesetzt ist, stellt der erste Kern 21c fest, dass der achte Verarbeitungsblock T8 noch nicht abgeschlossen worden ist und führt Schritt S38 aus. Das heißt, der erste Kern 21c spezifiziert, dass die Zustandssetzverarbeitung, deren Zustand noch nicht auf „1“ gesetzt worden ist, die fünfte Zustandssetzverarbeitung F5 ist.
-
Somit spezifiziert der erste Kern 21c den Verarbeitungsblock, dessen Verarbeitung noch nicht abgeschlossen worden ist. In diesem Fall spezifiziert der erste Kern 21c, dass die Verarbeitung des achten Verarbeitungsblocks T8 von dem zweiten Kern 21d noch nicht abgeschlossen worden ist.
-
Der erste Kern 21c führt die synchrone ausfallsichere Verarbeitung, welche dem achten Zustands-Flag B8 entspricht, in Schritt S38 aus. Der erste Kern 21c führt die synchrone ausfallsichere Verarbeitung entsprechend dem achten Zustands-Flag B8, d.h., die synchrone ausfallsichere Verarbeitung, die für einen Fall geeignet ist, in welchem der achte Verarbeitungsblock T8 noch nicht beendet worden ist, aus. Der erste Kern 21c führt die Schritte S39 bis S42 auf ähnliche Weise durch Ändern des betreffenden Zustands-Flags aus.
-
Der automatische Parallelisierungs-Compiler 1, der Computer 10 und die fahrzeuginterne Steuervorrichtung 20 gemäß der Modifikation stellen somit die gleichen Vorteile bereit, wie sie von dem oben beschriebenen Ausführungsbeispiel bereitgestellt werden. Ferner veranlassen der automatische Parallelisierungs-Compiler 1, der Computer 10 und die fahrzeuginterne Steuervorrichtung 20 den ersten Kern 21c und den zweiten Kern 21d, die synchrone ausfallsichere Verarbeitung, die für den Verarbeitungsblock geeignet ist, dessen Verarbeitung noch nicht abgeschlossen worden ist, auszuführen. Ferner führt die fahrzeuginterne Steuervorrichtung 20 die synchrone ausfallsichere Verarbeitung aus, die für den Verarbeitungsblock, dessen Verarbeitung noch nicht abgeschlossen worden ist, geeignet ist.
-
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
-
- JP 2015001807 A [0002, 0012, 0016, 0034, 0038, 0047, 0079]
- US 2014/0372995 A1 [0002]
- JP 20151807 A [0014]