DE102017222292A1 - Parallelisierungsverfahren, parallelisierungs-tool und fahrzeuginterne steuervorrichtung - Google Patents

Parallelisierungsverfahren, parallelisierungs-tool und fahrzeuginterne steuervorrichtung Download PDF

Info

Publication number
DE102017222292A1
DE102017222292A1 DE102017222292.1A DE102017222292A DE102017222292A1 DE 102017222292 A1 DE102017222292 A1 DE 102017222292A1 DE 102017222292 A DE102017222292 A DE 102017222292A DE 102017222292 A1 DE102017222292 A1 DE 102017222292A1
Authority
DE
Germany
Prior art keywords
processing
core
program
execution
parallel program
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102017222292.1A
Other languages
English (en)
Inventor
Takayuki Nagai
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Denso Corp
Original Assignee
Denso Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Denso Corp filed Critical Denso Corp
Publication of DE102017222292A1 publication Critical patent/DE102017222292A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • G06F8/456Parallelism detection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3696Methods or tools to render software testable
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • G06F8/451Code distribution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores

Abstract

Ein Computer (10) fügt in ein paralleles Programm (21a1) eine Zustandssetzverarbeitung (S11) und eine Warteverarbeitung (S12) ein, um eine Reihenfolge einer Ausführung von unterschiedlichen Kernen (21a, 21b) eines Mehrkernprozessors (21) beizubehalten. Die Zustandssetzverarbeitung dient zum Setzen eines Zustands-Flags, wenn eine Ausführung einer vorherigen Verarbeitung beendet worden ist. Die Warteverarbeitung ermöglicht eine Ausführung einer späteren Verarbeitung unter der Bedingung, dass das Zustands-Flag gesetzt ist. Der Computer (10) fügt ferner in ein Nichtsteuerprogramm (21a2), welches unterschiedlich zu dem parallelen Programm und ausführbar von den mehrfachen Kernen ist, eine synchrone Überwachungsverarbeitung (S13) und eine synchrone ausfallsichere Verarbeitung (S14) ein. Die synchrone Überwachungsverarbeitung dient zum Überwachen, ob ein Beendigungszustand gespeichert ist, bevor das parallele Programm ausgeführt wird. Die synchrone ausfallsichere Verarbeitung ist zum Ausführen, wenn der Beendigungszustand nicht gespeichert ist.

Description

  • 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]

Claims (9)

  1. Parallelisierungsverfahren zum Erzeugen aus einem einzelnen Programm, welches eine mehrfache Verarbeitung (T1 bis T5, T7 bis T11) umfasst, die für eine Steuertätigkeit von einem Einkernprozessor eines Kerns ausgeführt werden soll und parallelisierbar ist, eines parallelen Programms, welches die mehrfache Verarbeitung parallelisiert, die von mehrfachen Kernen eines Mehrkernprozessors ausgeführt werden soll, wobei die mehrfache Verarbeitung den mehreren Kernen zugewiesen ist und eine vorherige Verarbeitung und eine spätere Verarbeitung umfasst, die von der vorherigen Verarbeitung abhängig ist und nach Beendigung einer Ausführung der vorherigen Verarbeitung ausgeführt wird, wobei das Parallelisierungsverfahren umfasst: eine Speicherungsverarbeitungseinfügeprozedur (S11) zum Einfügen einer Speicherungsverarbeitung eines Beendigungszustands der vorherigen Verarbeitung in das parallele Programm, um eine Ausführungsreihenfolge einer Verarbeitung von den mehreren Kernen beizubehalten, wenn die Ausführung der vorherigen Verarbeitung abgeschlossen worden ist; und eine Warteverarbeitungseinfügeprozedur (S12) zum Einfügen einer Warteverarbeitung, welche die Ausführung der späteren Verarbeitung unter der Bedingung ermöglicht, dass der Beendigungszustand der vorherigen Verarbeitung gespeichert ist, sodass die Ausführungsreihenfolge beibehalten wird, dadurch gekennzeichnet, dass das Parallelisierungsverfahren weiter umfasst eine Überwachungsverarbeitungseinfügeprozedur (S13) zum Einfügen einer Überwachungsverarbeitung, welche überwacht, ob der Beendigungszustand vor einer Ausführung des parallelen Programms gespeichert ist, in ein Nichtsteuerprogramm, das unterschiedlich zu dem parallelen Programm ist; und eine Ausfallsichere-Verarbeitungs-Einfügeprozedur (S14) zum Einfügen einer ausfallsicheren Verarbeitung, welche nach Detektion, dass der Beendigungszustand nicht gespeichert ist, ausgeführt wird, in das Nichtsteuerprogramm.
  2. Parallelisierungsverfahren gemäß Anspruch 1, wobei die Speicherungsverarbeitungseinfügeprozedur (S11) mehrere der Speicherungsverarbeitung in das parallele Programm einfügt, und die Warteverarbeitungseinfügeprozedur (F12) mehrere der Warteverarbeitung in das parallele Programm einfügt, dadurch gekennzeichnet, dass das Parallelisierungsverfahren weiter umfasst eine Spezifizierte-Verarbeitungs-Einfügeprozedur (S131) zum Spezifizieren der Speicherungsverarbeitung, deren Beendigungszustand nicht gespeichert ist, nach Detektion keiner Speicherung des Beendigungszustands und Einfügen der spezifizierten Verarbeitung in das Nichtsteuerprogramm.
  3. Parallelisierungsverfahren gemäß Anspruch 2, wobei: die Ausfallsichere-Verarbeitungs-Einfügeprozedur (S14) die ausfallsichere Verarbeitung, welche für jede durch die Spezifizierungsverarbeitung spezifizierte Speicherungsverarbeitung ausgeführt wird, in das Nichtsteuerprogramm einfügt.
  4. Parallelisierungs-Tool zum Erzeugen aus einem einzelnen Programm, welches eine mehrfache Verarbeitung (T1 bis T5, T7 bis T11) umfasst, die für eine Steuertätigkeit von einem Einkernprozessor eines Kern ausgeführt werden soll und parallelisierbar ist, eines parallelen Programms, welches die mehrfache Verarbeitung parallelisiert, die von mehrfachen Kernen eines Mehrkernprozessors ausgeführt werden sollen, wobei die den mehrfachen Kernen zugewiesene mehrfache Verarbeitung eine vorherige Verarbeitung und eine spätere Verarbeitung umfasst, welche von der vorherigen Verarbeitung abhängig ist und nach Beendigung einer Ausführung der vorherigen Verarbeitung ausgeführt wird, wobei das Parallelisierungs-Tool umfasst: einen Speicherungsverarbeitungseinfügeteil (S11) zum Einfügen einer Speicherungsverarbeitung eines Beendigungszustands der vorherigen Verarbeitung in das parallele Programm, um eine Ausführungsreihenfolge einer Verarbeitung von den mehreren Kernen beizubehalten, wenn die Ausführung der vorherigen Verarbeitung abgeschlossen worden ist; und einen Warteverarbeitungseinfügeteil (S12) zum Einfügen einer Warteverarbeitung, welche die Ausführung der späteren Verarbeitung unter der Bedingung ermöglicht, dass der Beendigungszustand der vorherigen Verarbeitung gespeichert ist, sodass die Ausführungsreihenfolge beibehalten wird, dadurch gekennzeichnet, dass das Parallelisierungs-Tool weiter umfasst einen Überwachungsverarbeitungseinfügeteil (S13) zum Einfügen einer Überwachungsverarbeitung, welche überwacht, ob der Beendigungszustand vor einer Ausführung des parallelen Programms gespeichert ist, in ein Nichtsteuerprogramm, das unterschiedlich zu dem parallelen Programm ist; und einen Ausfallsichere-Verarbeitungs-Einfügeteil (S14) zum Einfügen einer ausfallsicheren Verarbeitung, welche nach Detektion, dass der Beendigungszustand nicht gespeichert ist, ausgeführt wird, in das Nichtsteuerprogramm.
  5. Parallelisierungs-Tool gemäß Anspruch 4, wobei der Speicherungsverarbeitungseinfügeteil (S11) mehrfache der Speicherungsverarbeitung in das parallele Programm einfügt und der Warteverarbeitungseinfügeteil (S12) mehrfache der Warteverarbeitung in das parallele Programm einfügt, dadurch gekennzeichnet, dass das Parallelisierungs-Tool weiter umfasst einen Spezifizierte-Verarbeitungs-Einfügeteil (S131) zum Spezifizieren der Speicherungsverarbeitung, deren Beendigungszustand nicht gespeichert ist, nach Detektion keiner Speicherung des Beendigungszustandes und Einfügen der spezifizierten Verarbeitung in das Nichtsteuerprogramm.
  6. Parallelisierungs-Tool gemäß Anspruch 5, wobei: der Ausfallsichere-Verarbeitungs-Einfügeteil (S14) die ausfallsichere Verarbeitung, welche für jede von der Spezifizierungsverarbeitung spezifizierte Speicherungsverarbeitung ausgeführt wird, in das Nichtsteuerprogramm.
  7. Fahrzeuginterne Steuervorrichtung umfassend: einen Mehrkernprozessor (21), welcher mehrfache Kerne (21c, 21d) und ein Speichermedium (21a1), das ein paralleles Programm (21a1) speichert, umfasst, wobei das parallele Programm (21a1) eine mehrfache Verarbeitung (T1 bis T5, T7 bis T11), die für eine Steuertätigkeit von einem Einkernprozessor eines Kerns ausgeführt werden soll und parallelisierbar ist, parallelisiert, wobei die den mehrfachen Kernen (21c, 21d) zugewiesene mehrfache Verarbeitung eine vorherige Verarbeitung und eine spätere Verarbeitung umfasst, welche von der vorherigen Verarbeitung abhängig ist und nach Beendigung einer Ausführung der vorherigen Verarbeitung ausgeführt wird, und wobei das parallele Programm (21a1) eine Speicherungsverarbeitung zum Speichern eines Beendigungszustands der vorherigen Verarbeitung, um eine Ausführungsreihenfolge einer Verarbeitung von den mehrfachen Kernen (21a, 21b) beizubehalten, wenn die Ausführung der vorherigen Verarbeitung abgeschlossen 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, umfasst, die fahrzeuginterne Steuervorrichtung dadurch gekennzeichnet, dass das Speichermedium (21a) ferner ein Nichtsteuerprogramm (21a2), das unterschiedlich zu dem parallelen Programm (21a1) ist und von den mehrfachen Kernen (21c, 21d) ausführbar ist, speichert, wobei das Nichtsteuerprogramm (21a2) eine Überwachungsverarbeitung, welche überwacht, ob der Beendigungszustand vor einer Ausführung des parallelen Programms (21a1) gespeichert ist, und eine ausfallsichere Verarbeitung, welche nach Detektion, dass der Beendigungszustand nicht gespeichert ist, ausgeführt wird, umfasst und wobei jeder der mehrfachen Kerne (21c, 21d) des Mehrkernprozessors (21) das parallele Programm (21a1) und das Nichtsteuerprogramm (21a2) ausführt.
  8. Fahrzeuginterne Steuervorrichtung gemäß Anspruch 7, wobei: das parallele Programm (21a1) mehrfache der Speicherungsverarbeitung und mehrfache der Warteverarbeitung umfasst; und das Nichtsteuerprogramm (21a2) eine spezifizierte Verarbeitung umfasst, welche nach Detektion keiner Speicherung des Beendigungszustands die Speicherungsverarbeitung spezifiziert, deren Beendigungszustand nicht gespeichert ist.
  9. Fahrzeuginterne Steuervorrichtung gemäß Anspruch 8, wobei: das Nichtsteuerprogramm (21a2) die ausfallsichere Verarbeitung umfasst, welche für jede von der Spezifizierungsverarbeitung spezifizierte Speicherungsverarbeitung ausgeführt wird.
DE102017222292.1A 2017-02-02 2017-12-08 Parallelisierungsverfahren, parallelisierungs-tool und fahrzeuginterne steuervorrichtung Pending DE102017222292A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2017017776A JP6690570B2 (ja) 2017-02-02 2017-02-02 並列化方法、並列化ツール、車載制御装置
JP2017-17776 2017-02-02

Publications (1)

Publication Number Publication Date
DE102017222292A1 true DE102017222292A1 (de) 2018-08-02

Family

ID=62843516

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102017222292.1A Pending DE102017222292A1 (de) 2017-02-02 2017-12-08 Parallelisierungsverfahren, parallelisierungs-tool und fahrzeuginterne steuervorrichtung

Country Status (2)

Country Link
JP (1) JP6690570B2 (de)
DE (1) DE102017222292A1 (de)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140372995A1 (en) 2013-06-14 2014-12-18 Denso Corporation Parallelizing compile method, parallelizing compiler, parallelizing compile apparatus, and onboard apparatus

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5076342B2 (ja) * 2006-03-28 2012-11-21 トヨタ自動車株式会社 分散制御装置
JP5633501B2 (ja) * 2011-11-04 2014-12-03 トヨタ自動車株式会社 制御装置および制御方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140372995A1 (en) 2013-06-14 2014-12-18 Denso Corporation Parallelizing compile method, parallelizing compiler, parallelizing compile apparatus, and onboard apparatus
JP2015001807A (ja) 2013-06-14 2015-01-05 株式会社デンソー 並列化コンパイル方法、並列化コンパイラ、並列化コンパイル装置、及び、車載装置

Also Published As

Publication number Publication date
JP2018124876A (ja) 2018-08-09
JP6690570B2 (ja) 2020-04-28

Similar Documents

Publication Publication Date Title
DE102014201682A1 (de) Verfahren zur Koexistenz von Software mit verschiedenen Sicherheitsstufen in einem Multicore-Prozessorsystem
DE102013022405B3 (de) Schutz globaler Register in einem Multithreaded-Prozessor
DE102006047979A1 (de) Datenverarbeitungssystem und Verfahren zum Ausführen einer Testroutine in Verbindung mit einem Betriebssystem
DE102012009482A1 (de) Funktional erweiterbares Fahrzeugsteuergerät und Verfahren zum Ergänzen der Funktionalität eines Fahrzeugsteuergeräts
DE102013213314A1 (de) Hinterlegen mindestens eines berechenbaren Integritätsmesswertes in einem Speicherbereich eines Speichers
DE112015007104T5 (de) Datenverarbeitungsvorrichtung, Datenverarbeitungsverfahren und Datenverarbeitungsprogramm
DE112017003052T5 (de) Steuerungssystem mit einer verteilten dienstorientierten Architektur
DE102012209789B4 (de) Fahrzeuggebundene elektrische steuervorrichtung
DE102014200089A1 (de) Verfahren, Vorrichtung, Computerprogramm und Computerprogrammprodukt zum Programmieren von mehreren Steuergeräten
DE102016204970A1 (de) Parallelisierungskompilierverfahren, Parallelisierungskomplierer und Fahrzeugvorrichtung
DE112016006060T5 (de) Technologien zum Aufruf von nativem Code unter Verwendung binärer Analyse
DE102018213618A1 (de) Kryptografiemodul und Betriebsverfahren hierfür
DE102019135079A1 (de) Installation von firmware-bundles abbrechen
DE102017222292A1 (de) Parallelisierungsverfahren, parallelisierungs-tool und fahrzeuginterne steuervorrichtung
DE102016220340A1 (de) Parallelisierungsverfahren, parallelisierungswerkzeug und fahrzeugverbaute einrichtung
DE102016219449A1 (de) Parallelisierungsverfahren, Parallelisierungswerkzeug und fahrzeugverbaute Einrichtung
EP3705993B1 (de) System und verfahren zum auffinden und identifizieren von rechenknoten in einem netzwerk
DE102021131057A1 (de) System und Verfahren zur Ausführung einer Aufgabe eines Betriebssystems für ein Fahrzeug
DE102016224206A1 (de) Fahrzeugsteuervorrichtung
EP2329374A1 (de) Testmodul und verfahren zum testen einer o/r-abbildungs-middleware
DE102017220181A1 (de) Parallelisierungsverfahren, Parallelisierungstool und fahrzeuginterne Steuervorrichtung
DE102019202870A1 (de) Parallelisierungsverfahren, Parallelisierungswerkzeug und Multikernmikrocomputer
DE102007015507A1 (de) Prozessor mit einem ersten und einem zweiten Betriebsmodus und Verfahren zu seinem Betrieb
DE102018210733A1 (de) Verfahren zum Überwachen wenigstens einer Recheneinheit
DE102016216298A1 (de) Parallelisierungsverfahren, parallelisierungstool und an einem fahrzeug befestigte vorrichtung

Legal Events

Date Code Title Description
R012 Request for examination validly filed