DE102016204970A1 - Parallelisierungskompilierverfahren, Parallelisierungskomplierer und Fahrzeugvorrichtung - Google Patents

Parallelisierungskompilierverfahren, Parallelisierungskomplierer und Fahrzeugvorrichtung Download PDF

Info

Publication number
DE102016204970A1
DE102016204970A1 DE102016204970.4A DE102016204970A DE102016204970A1 DE 102016204970 A1 DE102016204970 A1 DE 102016204970A1 DE 102016204970 A DE102016204970 A DE 102016204970A DE 102016204970 A1 DE102016204970 A1 DE 102016204970A1
Authority
DE
Germany
Prior art keywords
parallelization
program
processing
processes
predetermined parameter
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.)
Withdrawn
Application number
DE102016204970.4A
Other languages
English (en)
Inventor
Kenichi Mineda
Noriyuki Suzuki
Hironori Kasahara
Keiji Kimura
Hiroki Mikami
Dan UMEDA
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.)
Waseda University
Denso Corp
Original Assignee
Waseda University
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 Waseda University, Denso Corp filed Critical Waseda University
Publication of DE102016204970A1 publication Critical patent/DE102016204970A1/de
Withdrawn 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/451Code distribution
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

Ein Parallelisierungskompilierverfahren beinhaltet Analysieren eines sequentiellen Programms (P1), das für einen Einzelkernprozessor vorbereitet ist; Teilen des sequentiellen Programms (P1) in mehrere Verarbeitungen basierend auf einem Analyseergebnis; und Erzeugen eines parallelisierten Programms (P2), das einer parallelisierten Ausführung durch einen Mehrkernprozessor (30) unterworfen wird, aus den mehreren Verarbeitungen. Das Erzeugen des parallelisierten Programms (P2) beinhaltet Kompilieren der mehreren Verarbeitungen unter einer Ausführungsreihenfolgebeschränkung, die basierend auf einem vorbestimmten Parameter definiert ist.

Description

  • TECHNISCHES GEBIET
  • Die vorliegende Offenbarung betrifft ein Parallelisierungskompilierverfahren, einen Parallelisierungskompilierer und eine Fahrzeugvorrichtung.
  • HINTERGRUND
  • Mit dem Anbringen eines Mehrkernprozessors an einer Fahrzeugvorrichtung können Programme an jeweilige Kerne verteilt werden und demnach kann ein Durchsatz verbessert werden. In der Fahrzeugvorrichtung, an der der Mehrkernprozessor angebracht ist, muss ein sequentielles Programm, das für ein herkömmliches Einzelkernprozessorprogramm entworfen ist, durch ein parallelisiertes Programm ersetzt werden, mit dem eine Parallelisierungsverarbeitung durch den Mehrkernprozessor ausgeführt werden kann. Bis jetzt wurde zum Vereinfachen der Erzeugung des parallelisierten Programms ein Parallelisierungskompilierer, der automatisch das parallelisierte Programm aus dem sequentiellen Programm erzeugt, vorgeschlagen. Als der Parallelisierungskompilierer dieses Typs wurde ein Parallelisierungskompilierer vorgeschlagen, der in JP 2015-001807 A (entspricht US 2014/0372995 A1 ) offenbart ist. Der Parallelisierungskompilierer, der in JP 2015-001807 vorgeschlagen ist, analysiert eine Datenabhängigkeit und eine Steuerabhängigkeit zwischen in dem sequentiellen Programm beinhalteten Verarbeitungen und erzeugt automatisch das parallelisierte Programm aus dem sequentiellen Programm auf der Basis eines Analyseergebnisses.
  • Indessen besteht beispielsweise, wenn ein Teil der Verarbeitung in dem sequentiellen Programm aufgrund einer Versionsaktualisierung geändert wird, eine Möglichkeit zum Ändern einer Datenabhängigkeit und einer Steuerabhängigkeit zwischen den Verarbeitungen, die das sequentielle Programm konfigurieren. Aus diesem Grund, wenn das geänderte sequentielle Programm durch den Parallelisierungskompilierer ohne irgendeine Aktion geändert wird, kann eine Ausführungsreihenfolge des parallelisierten Programms nicht nur eines geänderten Abschnitts, sondern ebenso der anderen Abschnitte bemerkbar durch andere ersetzt werden. In anderen Worten verbreitet eine kleine Änderung des sequentiellen Programms eine Änderung in die gesamten parallelisierten Programme. In diesem Fall ist es möglich, da ein Bedarf zum erneuten Verifizieren besteht, ob das gesamte parallelisierte Programm normal ist oder nicht, dass der Verifizierungsaufwand des parallelisierten Programms erhöht wird.
  • ÜBERBLICK
  • Hinsichtlich der vorstehenden Schwierigkeiten ist es eine Aufgabe der vorliegenden Offenbarung, ein Parallelisierungskompilierverfahren, einen Parallelisierungskompilierer und eine Fahrzeugvorrichtung bereitzustellen, die jeweils einfach ein parallelisiertes Programm verifizieren können, wenn eine Modifikation oder Änderung in einem Programm getätigt wird.
  • Gemäß einem ersten Aspekt der vorliegenden Offenbarung beinhaltet ein Parallelisierungskompilierverfahren Analysieren eines sequentiellen Programms, das für einen Einzelkernprozessor vorbereitet ist; Teilen des sequentiellen Programms in mehrere Verarbeitungen basierend auf einem Analyseergebnis; und Erzeugen eines parallelisierten Programms, das einer parallelisierten Ausführung durch einen Mehrkernprozessor unterworfen wird, aus den mehreren Verarbeitungen. Die Erzeugung des parallelisierten Programms beinhaltet Kompilieren der mehreren Verarbeitungen unter einer Ausführungsreihenfolgebeschränkung, die basierend auf einem vorbestimmten Parameter definiert ist.
  • Gemäß einem zweiten Aspekt der vorliegenden Offenbarung beinhaltet ein Parallelisierungskompilierer, der in einem nicht-flüchtigen, greifbaren, computerlesbaren Speichermedium als ein Programmprodukt gespeichert ist, Anweisungen, die durch eine Kompiliervorrichtung auszuführen sind. Die Anweisungen dienen dazu, um zu implementieren: Analysieren eines sequentiellen Programms, das für einen Einzelkernprozessor vorbereitet ist; Teilen des sequentiellen Programms in mehrere Verarbeitungen basierend auf einem Analyseergebnis; und Erzeugen eines parallelisierten Programms, das einer parallelisierten Ausführung durch einen Mehrkernprozessor unterworfen wird, aus den mehreren Verarbeitungen. Die Erzeugung des parallelisierten Programms beinhaltet Kompilieren der mehreren Verarbeitungen unter einer Ausführungsreihenfolgebeschränkung, die basierend auf einem vorbestimmten Parameter definiert ist.
  • Gemäß einem dritten Aspekt der vorliegenden Offenbarung beinhaltet eine Fahrzeugvorrichtung einen Mehrkernprozessor, der eine Steuerverarbeitung basierend auf dem parallelisierten Programm ausführt, dass durch das Parallelisierungskompilierverfahren gemäß dem ersten Aspekt der vorliegenden Offenbarung ausführt.
  • Gemäß einem vierten Aspekt der vorliegenden Offenbarung beinhaltet eine Fahrzeugvorrichtung einen Mehrkernprozessor, der eine Steuerverarbeitung basierend auf dem parallelisierten Programm ausführt, das durch den Parallelisierungskompilierer gemäß dem zweiten Aspekt der vorliegenden Offenbarung erzeugt wird.
  • Mit dem vorstehenden Parallelisierungskompilierungsverfahren, Parallelisierungskompilierer und Fahrzeugvorrichtung kann, wenn eine Modifikation oder Änderung eines parallelisierten Programms ausgeführt wird, eine Verifizierung des parallelisierten Programms auf einfache und effektive Weise ausgeführt werden.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Die vorstehenden und weitere Aufgaben, Merkmale und Vorteile der vorliegenden Offenbarung werden aus der nachfolgenden detaillierten Beschreibung in Zusammenschau mit den Zeichnungen ersichtlicher.
  • Es zeigen:
  • 1 ein Blockschaltbild, das eine schematische Konfiguration einer Kompiliervorrichtung illustriert, in der ein Parallelisierungskompilierer gemäß einer ersten Ausführungsform der vorliegenden Offenbarung installiert ist;
  • 2 ein Blockschaltbild, das eine schematische Konfiguration der Kompiliervorrichtung und eine elektronische Steuereinheit (ECU) gemäß der ersten Ausführungsform illustriert;
  • 3 ein Diagramm, das eine Verarbeitungsprozedur illustriert, die durch den Parallelisierungskompilierer gemäß der ersten Ausführungsform ausgeführt wird;
  • 4 ein Diagramm, das schematisch ein Beispiel eines Verfahrens zum Teilen eines sequentiellen Programms in dem Parallelisierungskompilierer gemäß der ersten Ausführungsform illustriert;
  • 5 ein Diagramm, das schematisch eine Abhängigkeit von Verarbeitungen in dem Parallelisierungskompilierer gemäß der ersten Ausführungsform illustriert;
  • 6 ein Diagramm, das schematisch ein Beispiel zum Planen in dem Parallelisierungskompilierer gemäß der ersten Ausführungsform illustriert;
  • 7 ein Diagramm, das eine Verarbeitungsprozedur illustriert, die durch einen Parallelisierungskompilierer gemäß einer zweiten Ausführungsform der vorliegenden Offenbarung ausgeführt wird;
  • 8 ein Diagramm, das schematisch eine Abhängigkeit von Verarbeitungen in dem Parallelisierungskompilierer gemäß der zweiten Ausführungsform illustriert;
  • 9 ein Diagramm, das eine Verarbeitungsprozedur illustriert, die durch einen Parallelisierungskompilierer gemäß einer dritten Ausführungsform der vorliegenden Offenbarung ausgeführt wird;
  • 10 ein Diagramm, das schematisch ein Beispiel eines sequentiellen Programms in dem Parallelisierungskompilierer gemäß der dritten Ausführungsform illustriert;
  • 11 ein Diagramm, das schematisch ein Beispiel der Zeitplanung in dem Parallelisierungskompilierer gemäß der dritten Ausführungsform illustriert;
  • 12 ein Diagramm, das eine Verarbeitungsprozedur illustriert, die durch einen Parallelisierungskompilierer gemäß einer vierten Ausführungsform der vorliegenden Offenbarung ausgeführt wird;
  • 13 ein Diagramm, das schematisch ein Beispiel eines sequentiellen Programms in dem Parallelisierungskompilierer gemäß der vierten Ausführungsform illustriert;
  • 14 ein Diagramm, das eine Verarbeitungsprozedur illustriert, die durch einen Parallelisierungskompilierer gemäß einer fünften Ausführungsform der vorliegenden Offenbarung ausgeführt wird;
  • 15 ein Diagramm, das schematisch ein Beispiel einer Zeitplanung in dem Parallelisierungskompilierer gemäß der fünften Ausführungsform illustriert;
  • 16 ein Diagramm, das eine Verarbeitungsprozedur illustriert, die durch einen Parallelisierungskompilierer gemäß einer sechsten Ausführungsform der vorliegenden Offenbarung ausgeführt wird;
  • 17 ein Diagramm, das schematisch ein Beispiel einer Zeitplanung in dem Parallelisierungskompilierer gemäß der sechsten Ausführungsform illustriert; und
  • 18 ein Diagramm, das schematisch ein Beispiel einer Zeitplanung in einem Parallelisierungskompilierer gemäß einer weiteren Ausführungsform der vorliegenden Offenbarung illustriert.
  • DETAILLIERTE BESCHREIBUNG
  • (Erste Ausführungsform)
  • Nachfolgend wird ein Parallelisierungskompilierverfahren, ein Parallelisierungskompilierer und eine Fahrzeugvorrichtung gemäß einer ersten Ausführungsform mit Bezug auf die Zeichnungen beschrieben.
  • Wie in 1 illustriert ist, wird ein Parallelisierungskompilierer CP gemäß der vorliegenden Ausführungsform einem Benutzer in einem Zustand bereitgestellt, indem er in einem Speichermedium 1 gespeichert ist.
  • Der Parallelisierungskompilierer CP erzeugt ein Mehrkernprozessorquellprogramm für ein eingebautes System aus einem Einzelkernprozessorquellprogramm für ein eingebautes System. Nachfolgend wird das Einzelkernprozessorprogramm sequentielles Programm genannt. Das Mehrkernprozessorquellprogramm wird parallelisiertes Programm genannt.
  • Das Speichermedium 1 kann durch eine optische Platte, eine magnetische Platte oder einen Halbleiterspeicher, wie beispielsweise eine DVD, eine CD-ROM, einen USB-Speicher oder eine Speicherkarte (Memory Card, eingetragene Marke) bereitgestellt werden. Der Parallelisierungskompilierer CP, der in dem Speichermedium 1 gespeichert ist, wird auf einer Kompiliervorrichtung 2 installiert.
  • Die Kompiliervorrichtung 2 wird für die Entwicklung des parallelisierten Programms für ein eingebautes System der Fahrzeugvorrichtung verwendet. Die Kompiliervorrichtung 2 beinhaltet eine Anzeigeeinheit 20, eine Festplatte (HDD) 21, eine zentrale Verarbeitungseinheit (CPU) 22, einen Nur-Lesespeicher (ROM) 23, einen Speicher mit wahlfreiem Zugriff (RAM) 24, eine Eingabevorrichtung 25 und eine Leseeinheit 26. Die Anzeigeeinheit 20 zeigt ein Bild basierend auf einer Bildsignalausgabe von der CPU 22 an.
  • Die Eingabevorrichtung 25 beinhaltet eine Tastatur und eine Maus. Die Eingabevorrichtung 25 gibt ein Signal entsprechend einer Benutzerbedienung an die CPU 22 aus. Die Leseeinheit 26 liest den Parallelisierungskompilierer CP vom Speichermedium 1 aus.
  • Das RAM 24 wird als ein Speicherbereich zum temporären Speichern eines Programms und als ein Speicherbereich zum temporären Speichern von Berechnungsverarbeitungsdaten verwendet, wenn die CPU 22 das in dem ROM 23 oder der HDD 21 gespeicherte Programm ausführt.
  • Die CPU 22 liest ein Betriebssystem (OS) von der HDD 21 aus und führt das Betriebssystem aus, um dabei unterschiedliche Programme auszuführen, die in der HDD 21 als eine Verarbeitung auf dem OS gespeichert sind. Die CPU 22 empfängt beispielsweise eine Eingabe eines Signals von der Eingabevorrichtung 25, steuert eine Ausgabe eines Bildsignals an die Anzeigeeinheit 20 und liest Daten von dem RAM 24 und der HDD 21 aus oder schreibt Daten in das RAM 24 und die HDD 21 in dieser Verarbeitung.
  • Der Parallelisierungskompilierer CP, der von dem Speichermedium 1 durch die Leseeinheit 26 ausgelesen wird, wird auf der Kompiliervorrichtung 2 installiert. Der installierte Parallelisierungskompilierer CP ist in der HDD 21 gespeichert und funktioniert als eine der Anwendungen, die als eine Verarbeitung auf dem OS ausgeführt wird.
  • In Kompiliervorrichtung 2 führt der Parallelisierungskompilierer CP eine Parallelisierungsverarbeitung in Antwort auf eine Benutzeranweisung aus. Wie in 2 illustriert ist, ist die Parallelisierungsverarbeitung eine Verarbeitung zum automatischen Erzeugen eines parallelisierten Programms P2 aus einem sequentiellen Programm P1. Das parallelisierte Programm P2, das durch die Kompiliervorrichtung 2 erzeugt wird, wird in einer elektronischen Steuereinheit (ECU) 3 gespeichert. Die ECU 3 beinhaltet einen Mehrkernprozessor 30, eine Kommunikationseinheit 31 und einen Eingabe-Ausgabe-Port 32. In der vorliegenden Ausführungsform entspricht die ECU 3 der Fahrzeugvorrichtung.
  • Der Eingabe-Ausgabe-Port 32 nimmt Erfassungssignale von unterschiedlichen Sensoren 5, die in einem Fahrzeug angebracht sind, auf und überträgt ein Steuersignal an ein Steuerziel 4 wie beispielsweise einem Fahrzeugaktuator. Das Antreiben des Steuerziels 4 wird gemäß dem Steuersignal gesteuert, das von der ECU 3 an das Steuerziel 4 übertragen wird.
  • Der Mehrkernprozessor 30 beinhaltet ein ROM 301, ein RAM 302, mehrere Kerne 300a, 300b usw. Binäre Daten des parallelisierten Programms P2, die durch die Kompiliervorrichtung 2 erzeugt werden, werden in dem ROM 301 gespeichert. Der Mehrkernprozessor 30 operiert auf der Basis des parallelisierten Programms P2, das in dem ROM 301 gespeichert ist, und steuert umfassend den Antrieb des Steuerziels 4.
  • Die Kommunikationseinheit 31 ist konfiguriert, um mit einer andern fahrzeuggebundenen ECU, die mit der Kommunikationseinheit 31 verbunden ist, durch ein fahrzeuggebundenes Netzwerk wie beispielsweise ein Controller Area Network (CAN, eingetragene Marke) zu kommunizieren.
  • Nachfolgend wird eine Verarbeitung zum Erzeugen des parallelisierten Programms P2 aus dem sequentiellen Programm P1 durch den Parallelisierungskompilierer CP im Detail beschrieben.
  • Wie in 3 illustriert ist, analysiert der Parallelisierungskompilierer CP bei S1 als Erstes eine Programmstruktur des sequentiellen Programms P1. Insbesondere führt der Parallelisierungskompilierer CP beispielsweise eine lexikalische Analyse und eine syntaktische/schematische Analyse des sequentiellen Programms P1 aus.
  • In dieser Situation führt der Parallelisierungskompilierer CP eine Inlineerweiterung für das sequentielle Programm P1 aus. Die Inlineerweiterung ist eine Verarbeitung zum Ersetzen einer Beschreibung zum Aufrufen einer Unterroutine in dem Programm, wobei eine Beschreibung einer Verarbeitung in der Unterroutine definiert ist. Da ein eingebautes System ein Programm für ein eingebautes System allgemein fein bezüglich seiner Verarbeitung ist, ist die Parallelisierung mit Grobgranularität schwierig. Jedoch kann durch Ausführen der Inlineerweiterung ein Parallelismus in der Unterroutine effektiv verwendet werden.
  • Ferner identifiziert der Parallelisierungskompilierer CP in jedem Funktionsblock des sequentiellen Programms P1 Verarbeitungsblöcke, von denen jeder eine lokale Variable mit dem gleichen Namen verwendet. Der Parallelisierungskompilierer CP modifiziert ebenso das sequentielle Programm P1, so dass eine lokale Variable mit einem individuellen Namen in jedem der identifizierten Verarbeitungsblöcke verwendet wird. Jeder Verarbeitungsblock ist beispielsweise eine Aggregation der Beschreibungen von Schleifenverarbeitungsanweisungen und Verzweigungsverarbeitungsanweisungen wie beispielsweise eine if-Anweisung oder eine switch-case-Anweisung und Zuweisungsanweisungen, die mit den Anweisungen verknüpft sind.
  • Bei S2 teilt der Parallelisierungskompilierer CP das sequentielle Programm P1 in mehrere Verarbeitungen (Makroaufgaben) A, B usw. auf der Basis des Lexikons bzw. auf lexikalischer Ebene, Syntaktik, Semantik oder dergleichen, was bei S1 analysiert wird. Die jeweiligen Verarbeitungen A, B usw. sind eine Serie von Verarbeitungen einschließlich beispielsweise unterschiedlicher Berechnungs-, Zuweisungs-, und Abzweigverarbeitungen und Funktionsaufrufe. Beispielsweise, wie in 4 illustriert ist, zweigt der Parallelisierungskompilierer CP das sequentielle Programm P1 in Verarbeitungen A bis H auf.
  • Wie in 3 illustriert ist, analysiert nachfolgend auf S2 der Parallelisierungskompilierer CP bei Schritt S3 eine Steuerabhängigkeit zwischen den jeweiligen Verarbeitungen A, B usw. und analysiert die Datenabhängigkeit zwischen den jeweiligen Verarbeitungen A, B usw. bei S4. Bei S5 erzeugt der Parallelisierungskompilierer CP einen Verarbeitungsgraph (Makrotaskgraph bzw. Makroaufgabengraph) (MTG) auf der Basis der Datenabhängigkeit und der Steuerabhängigkeit zwischen den jeweiligen Verarbeitungen A, B usw. Der Parallelisierungskompilierer CP erzeugt den Verarbeitungsgraph MTG beispielsweise auf der Basis der nachfolgenden Bedingungen A1 und A2.
  • Bedingung A1: Wenn die Verarbeitung x datenabhängig von der Verarbeitung y ist, kann die Verarbeitung y nicht ausgeführt werden, bis die Ausführung der Verarbeitung x abgeschlossen ist.
  • Bedingung A2: Wenn ein Bedingungsabzweigeziel der Verarbeitung y bestimmt wird, kann die Verarbeitung x, die steuerabhängig von der Verarbeitung y ist, ausgeführt werden, sogar wenn das Ausführen der Verarbeitung y nicht abgeschlossen ist.
  • In dem Verarbeitungsgraph MTG ist die Datenabhängigkeit von all den Verarbeitungen repräsentiert, die in dem sequentiellen Programm P1 beinhaltet sind. Beispielsweise erzeugt der Parallelisierungskompilierer CP den Verarbeitungsgraph MTG, wie in 5 illustriert, von den Verarbeitungen A bis H, die in dem sequentiellen Programm P1 beinhaltet sind, das in 4 illustriert ist.
  • Nach S5 analysiert der Parallelisierungskompilierer CP bei S6 die Beschränkung, die auf die Ausführungsreihenfolge der jeweiligen Verarbeitungen A, B usw. angewandt wird, auf der Basis der Verarbeitungsprioritätsinformationen I1 einschließlich Prioritätsinformationen jeder Verarbeitung, die in dem sequentiellen Programm P1 beinhaltet ist. Die Verarbeitungsprioritätsinformationen I1 werden vorab bestimmt, um beispielsweise Prioritäten der Verarbeitungseinheiten A, B, die in 4 und 5 illustriert sind, durch jeweilige Zahlen zu repräsentieren. In den Verarbeitungsprioritätsinformationen I1 repräsentiert eine kleinere Zahl eine höhere Ausführungspriorität der Verarbeitung. Die Verarbeitungen, die Prioritätsinformationen mit identischen Zahlen aufweisen, repräsentieren keinen Unterschied bezüglich der Priorität der Ausführungsreihenfolge. Die Prioritätsinformationen I1 können beispielsweise von der Eingabevorrichtung 25 als Eingabeinformationen übertragen werden oder können in dem Speichermedium 1 vorab gespeichert werden. In der vorliegenden Ausführungsform entsprechen die Prioritätsinformationen I1 einem vorbestimmten Parameter.
  • Nach der Verarbeitung bei S6 führt der Parallelisierungskompilierer CP bei S7 eine Zeitplanung zum Zuweisen der jeweiligen Verarbeitungen A, B usw. mehreren Verarbeitungsgruppen PG1, PG2 usw. auf der Basis des Verarbeitungsgraphs MTG, der bei S5 erzeugt wird, und der Beschränkung, die auf die Ausführungsreihenfolge der jeweiligen Verarbeitungen A, B usw. angewandt wird, die bei S6 analysiert werden, aus. Die Anzahl von Verarbeitungsgruppen PG1, PG2 usw. entspricht der Anzahl von Kernen 303a, 303b usw. des Mehrkernprozessors 30. Beispielsweise, wenn die Anzahl von Kernen, die in dem Mehrkernprozessor 30 vorgesehen sind, zwei ist, werden zwei Bearbeitungsgruppen bereitgestellt. Insbesondere ordnet der Parallelisierungskompilierer CP alle oder einen Teil der Verarbeitungen, die in der Parallelisierungsverarbeitung ausführbar sind, unterschiedlichen Verarbeitungsgruppen zu, während die folgenden Bedingungen B1 und B2 erfüllt werden.
  • Bedingung B1: Die Verarbeitung mit höherer Priorität wird vor der Verarbeitung mit niedrigerer Priorität ausgeführt.
  • Bedingung B2: Eine Startzeit der Verarbeitung mit niedrigerer Priorität ist später als eine Endzeit der Verarbeitung mit höherer Priorität.
  • Der Parallelisierungskompilierer CP fügt eine Wartedauer in die Verarbeitungsgruppen PG1, PG2 usw. ein, um die vorstehend beschriebenen Bedingungen nach Bedarf zu erfüllen. Demzufolge erzeugt der Parallelisierungskompilierer CP die Verarbeitungsgruppen PG1 und PG2, die in 6 illustriert sind, beispielsweise auf der Basis des Verarbeitungsgraphen MTG, der in 5 illustriert ist, und der Prioritätsinformationen I1.
  • Der Parallelisierungskompilierer CP kann mehrere komparative Beispielsätze der Verarbeitungsgruppen PG1, PG2 usw. erzeugen und einen Satz optimaler Verarbeitungsgruppen PG1, PG2 usw. aus den mehreren komparativen Beispielsätzen auswählen. Die Bestimmung bezüglich dessen, ob ein Satz der Verarbeitungsgruppen PG1, PG2 usw. optimal oder nicht ist, wird beispielsweise unter Verwendung der jeweiligen Längen von Ausführungsdauern der mehreren Sätze von Verarbeitungsgruppen PG1, PG2 usw. und Evaluierungswerten ausgeführt, die auf der Basis einer vorbestimmten Evaluierungsfunktion berechnet werden.
  • Nachdem die Erzeugung der Verarbeitungsgruppen PG1, PG2 usw. abgeschlossen ist, erzeugt der Parallelisierungskompilierer CP binäre Daten des parallelisierten Programms P2 auf der Basis der Verarbeitungsgruppen PG1, PG2 usw. Das parallelisierte Programm, das wie vorstehend beschrieben erzeugt wird, wird in dem ROM 301 des Mehrkernprozessors 30 gespeichert.
  • Nachfolgend werden die Operation und Vorteile des Parallelisierungskompilierverfahrens, des Parallelisierungskompilierers CP und der ECU 3 gemäß der vorliegenden Ausführungsform beschrieben.
  • Wie in 6 illustriert ist, wird angenommen, dass beispielsweise die Inhalte der Verarbeitung E mit einer Änderung des sequentiellen Programms P1, die durch Versionsaktualisierung oder dergleichen verursacht wird, geändert wird und die Verarbeitungen D, E und F die gleiche Priorität aufweisen. In diesem Fall, wenn der Parallelisierungskompilierer CP das parallelisierte Programm P2 aus dem sequentiellen Programm P1 erzeugt, kann die Zuweisung der Verarbeitungen D, E und F den Verarbeitungsgruppen PG1 und PG2 geändert werden, was durch die Änderung in der Verarbeitung E verursacht wird. Jedoch wird die Zuweisung der Verarbeitungen A bis C, G und H mit Ausnahme der Verarbeitungen D bis F den Verarbeitungsgruppen PG1 und PG2 ohne Änderung aufrechterhalten. In anderen Worten beeinträchtigt die Änderung der Verarbeitung E lediglich ein lokales Ausmaß des parallelisierten Programms, was durch eine strichzweipunktierte Linie in 6 angegeben ist, ohne das gesamte parallelisierte Programm P2 zu beeinträchtigen. Wie vorstehend beschrieben ist, da nur ein lokales Ausmaß des parallelisierten Programms P2, insbesondere die Verarbeitungen D bis F verifiziert werden müssen, kann die Verifizierung des parallelisierten Programms P2 auf einfache und effektive Weise ausgeführt werden.
  • In manchen Fällen hat eine Programmspezifikation Bereitstellung der Ausführungsreihenfolge auf einer Funktionsbasis. Wenn die Zuordnung der Verarbeitungen den Verarbeitungsgruppen nur hinsichtlich Datenabhängigkeit des Verarbeitungsgraphen MTG ausgeführt wird, kann es sein, dass die Spezifikationen der Verarbeitungen, die den Verarbeitungsgruppen PG1, PG2 usw. zugewiesen sind, nicht zusammenpassen. In anderen Worten besteht eine Möglichkeit, dass die Spezifikationen der Verarbeitungen, die in dem parallelisierten Programm P2 beinhaltet sind, nicht zusammenpassen. Gemäß dem Parallelisierungskompilierer CP der vorliegenden Ausführungsform kann durch Festlegen der Prioritätsinformationen I1 gemäß der Spezifikation jeder Verarbeitung das Nicht-Zusammenpassen der Spezifikationen von Verarbeitungen in dem parallelisierten Programm P2 in einem Fall vermieden werden, in dem beispielsweise die Verarbeitung E geändert wird.
  • (Zweite Ausführungsform)
  • Nachfolgend werden ein Parallelisierungskompilierverfahren, ein Parallelisierungskompilierer CP und eine ECU 3 gemäß einer zweiten Ausführungsform beschrieben. Nachfolgend werden hauptsächlich Unterschiede zur ersten Ausführungsform beschrieben.
  • Wie in 7 illustriert ist, analysiert bei S6 der Parallelisierungskompilierer CP gemäß der vorliegenden Ausführungsform die Beschränkung, die auf eine Ausführungsreihenfolge jeweiliger Verarbeitungen A, B usw. ausgeführt wird, auf der Basis von Abhängigkeitsinformationen I2 anstelle von Prioritätsinformationen I1 der Verarbeitungen. Die Abhängigkeitsinformationen I2 repräsentieren eine willkürlich festlegbare Datenabhängigkeit der Verarbeitungen A, B usw. Die Abhängigkeitsinformationen I2 unterscheiden sich von der Datenabhängigkeit von Verarbeitungen, die in dem Verarbeitungsgraph MTG definiert sind. Die Abhängigkeitsinformationen I2 repräsentieren die Datenabhängigkeit der jeweiligen Verarbeitungen A, B usw. beispielsweise, wie in 8 illustriert ist. Die Abhängigkeitsinformationen I2 repräsentieren eine Datenabhängigkeit zwischen einer Verarbeitung, die in einer Spalte einer Abhängigkeitsquelle beschrieben ist, und einer Verarbeitung, die in einer Spalte eines Abhängigkeitsziels beschrieben ist. Beispielsweise repräsentieren die Abhängigkeitsinformationen I2, dass die Verarbeitung A die Datenabhängigkeit von der Verarbeitung D bis F aufweist. Die Abhängigkeitsinformationen I2 können beispielsweise von der Eingabevorrichtung 25 als Eingabeinformationen übertragen werden oder können in dem Speichermedium 1 vorab gespeichert werden. In der vorliegenden Ausführungsform entsprechen die Abhängigkeitsinformationen 12 einem vorbestimmten Parameter. Demzufolge kann beispielsweise eine hypothetische Datenabhängigkeit, wie durch eine strichzweipunktierte Linie in 8 angegeben ist, der Verarbeitung A hinzugefügt werden. In 8 ist der Einfachheit halber nur die hypothetische Datenabhängigkeit der Verarbeitung A illustriert.
  • Bei S7 führt der Parallelisierungskompilierer CP Zeitplanung zum Zuweisen der jeweiligen Verarbeitungen A, B usw. mehreren Verarbeitungsgruppen PG1, PG2 usw. auf der Basis des Verarbeitungsgraphen MTG, der bei S5 erzeugt wird, und der Beschränkung, die auf die Ausführungsreihenfolge der jeweiligen Verarbeitungen A, B usw. angewandt wird, die bei S6 analysiert werden, aus. In dieser Situation führt der Parallelisierungskompilierer CP Zeitplanung ohne Verwenden der vorstehend beschriebenen Bedingungen B1 und B2 aus. In anderen Worten weist der Parallelisierungskompilierer CP alle oder einen Teil der parallel ausführbaren Verarbeitungen unterschiedlichen Prozessgruppen PG1 und PG2 auf der Basis des Verarbeitungsgraphen MTG zu, dem beispielsweise die hypothetische Datenabhängigkeit, die in 8 illustriert ist, hinzugefügt wird. Demzufolge weist der Parallelisierungskompilierer CP die Verarbeitungen den Verarbeitungsgruppen PG1 und PG2 zu, so dass die Verarbeitungen D bis F ausgeführt werden, nachdem das Ausführen der Verarbeitungen A bis C abgeschlossen wurde. Der Parallelisierungskompilierer CP weist die Verarbeitungen den Prozessgruppen bzw. Verarbeitungsgruppen PG1 und PG2 zu, so dass die Verarbeitungen G und H ausgeführt werden, nachdem die Ausführung der Verarbeitungen D bis F abgeschlossen wurde. Somit erzeugt der Parallelisierungskompilierer CP die Verarbeitungsgruppen PG1 und PG2 beispielsweise, wie in 6 illustriert ist.
  • Nachfolgend werden die Operation und die Vorteile des Parallelisierungskompilierverfahrens, des Parallelisierungskompilierers CP und der ECU 3 gemäß der vorliegenden Ausführungsform beschrieben.
  • Wie in 6 illustriert ist, erzeugt der Parallelisierungskompilierer CP sogar, wenn die Inhalte der Verarbeitung E geändert werden, die Verarbeitungsgruppen PG1 und PG2, die ermöglichen, dass die Verarbeitungen D bis F ausgeführt werden, nachdem das Ausführen der Verarbeitungen A bis C abgeschlossen wurde, mit der Hilfe der Abhängigkeitsinformationen I2. Der Parallelisierungskompilierer CP erzeugt die Verarbeitungsgruppen PG1 und PG2, die den Verarbeitungen G und H ermöglichen, ausgeführt zu werden, nachdem das Ausführen der Verarbeitungen D bis F abgeschlossen wurde. Demnach beeinträchtigt die Änderung der Verarbeitung E lediglich eine Region, die durch eine strichzweipunktierte Linie in 6 umgeben ist, das heißt, ein lokales Ausmaß eines parallelisierten Programms P2. Somit können ähnliche Vorteile wie die der ersten Ausführungsform durch die Konfiguration der zweiten Ausführungsform erlangt werden.
  • (Dritte Ausführungsform)
  • Nachfolgend werden ein Parallelisierungskompilierverfahren, ein Parallelisierungskompilierer CP und eine ECU gemäß einer dritten Ausführungsform beschrieben. Nachfolgend werden hauptsächlich Unterschiede zur ersten Ausführungsform beschrieben.
  • Wie in 9 illustriert ist, analysiert der Parallelisierungskompilierer CP gemäß der vorliegenden Ausführungsform bei S6 die Beschränkung, die auf eine Ausführungsreihenfolge jeweiliger Verarbeitungen A, B usw. ausgeübt wird, auf der Basis von Prioritätsinformationen I3 der Funktionen Fa, Fb usw., die in dem sequentiellen Programm P1 beinhaltet sind, anstelle der Prioritätsinformationen I1 der Verarbeitungen, die in dem sequentiellen Programm beinhaltet sind. Es wird angenommen, dass die Funktionen Fa, Fb und Fc, die beispielsweise in 10 illustriert sind, in dem sequentiellen Programm P1 beschrieben sind. Die Funktion Fa beinhaltet die Verarbeitungen A bis C. Die Funktion Fb beinhaltet die Verarbeitungen D bis F. Die Funktion Fc beinhaltet die Verarbeitungen G und H. Zur Zeit einer Inlineerweiterung einer Programmstrukturanalyse bei S1 folgen die Verarbeitungen A bis H einer Ausführungsreihenfolge einer Parent-Funktion, wie sie ist.
  • Wie in 9 illustriert ist, repräsentieren die Prioritätsinformationen I3 die Prioritäten jeweiliger Funktionen Fa bis Fc durch Zahlen. In den Prioritätsinformationen I3 gibt eine kleinere Zahl eine höhere Ausführungspriorität der Funktion an. Die Prioritätsinformationen I3 können Beispiel von der Eingabevorrichtung 25 als Eingabeinformationen übertragen werden oder können vorab in dem Speichermedium 1 gespeichert werden. In der vorliegenden Ausführungsform entsprechen die Prioritätsinformationen I3 einem vorbestimmten Parameter.
  • Nach der Verarbeitung bei S6 führt der Parallelisierungskompilierer CP bei S7 Zeitplanung zum Zuweisen der jeweiligen Verarbeitungen A, B usw. mehreren Verarbeitungsgruppen PG1, PG2 usw. auf der Basis des Verarbeitungsgraphen MTG, der bei S5 erzeugt wird, und der Beschränkung, die auf die Ausführungsreihenfolge der jeweiligen Verarbeitungen A, B usw. ausgeübt wird, die bei S6 analysiert werden, aus. Insbesondere ordnet der Parallelisierungskompilierer CP alle oder einen Teil der Verarbeitungen, die in der Parallelisierungsverarbeitung ausführbar sind, unterschiedlichen Verarbeitungsgruppen PG1, PG2 usw. zu, während die nachfolgenden Bedingungen C1 und C2 erfüllt werden.
  • Bedingung C1: Die Funktion mit höherer Priorität wird vor der Funktion mit niedrigerer Priorität ausgeführt.
  • Bedingung C2: Eine Startzeit der Funktion mit niedrigerer Priorität ist später als eine Endzeit der Funktion, die höhere Priorität aufweist.
  • Demzufolge erzeugt der Parallelisierungskompilierer CP die Verarbeitungsgruppen PG1 und PG2, die in 11 illustriert sind, beispielsweise auf der Basis des Verarbeitungsgraphen MTG, der in 5 illustriert ist, und der Prioritätsinformationen I3.
  • Nachfolgend werden die Operation und Vorteile des Parallelisierungskompilierverfahrens, des Parallelisierungskompilierers CP und der ECU 3 gemäß der vorliegenden Ausführungsform beschrieben.
  • Wie in 11 illustriert ist, erzeugt der Parallelisierungskompilierer CP sogar, wenn die Inhalte der Verarbeitung E geändert werden, die Verarbeitungsgruppen PG1 und PG2, die ermöglichen, dass die Funktion Fb, nachdem die Ausführung der Funktion Fa abgeschlossen wurde, ausgeführt wird, durch die Hilfe der Prioritätsinformationen I3. Der Parallelisierungskompilierer CP erzeugt die Verarbeitungsgruppen PG1 und PG2, die ermöglichen, dass die Funktion Fc ausgeführt wird, nachdem das Ausführen der Funktion Fb abgeschlossen wurde. Demnach beeinträchtigt die Änderung in der Verarbeitung E lediglich eine Region, die durch eine strichzweipunktierte Linie in 11 angegeben ist, das heißt, ein lokales Ausmaß eines parallelisierten Programms P2. Somit können ähnliche Vorteile wie die der ersten Ausführungsform erlangt werden.
  • (Vierte Ausführungsform)
  • Nachfolgend werden ein Parallelisierungskompilierverfahren, ein Parallelisierungskompilierer CP und eine ECU gemäß einer vierten Ausführungsform beschrieben. Nachfolgend werden hauptsächlich Unterschiede zur ersten Ausführungsform beschrieben.
  • Wie in 12 illustriert ist, analysiert der Parallelisierungskompilierer CP gemäß der vorliegenden Ausführungsform bei S6 die Beschränkung, die auf eine Ausführungsreihenfolge jeweiliger Verarbeitungen A, B usw. ausgeübt wird, auf der Basis eines Indikators Ind, der in einem sequentiellen Programm B1 beschrieben ist. Der Indikator Ind ändert die Priorität früherer und späterer Verarbeitungen in dem sequentiellen Programm P1. Beispielsweise, wie in 13 illustriert ist, wird angenommen, dass die Indikatoren Ind zum Ändern der Priorität der früheren und späteren Verarbeitungen in dem sequentiellen Programm P1 beschrieben sind. In diesem Fall verringert der Parallelisierungskompilierer CP die Priorität der Ausführungsreihenfolge jedes Mal, wenn der Indikator Ind in dem Programm auftritt. Demzufolge wird die Priorität der Ausführungsreihenfolge in der Reihenfolge des Satzes einschließlich Verarbeitungen A bis C, des Satzes einschließlich Verarbeitungen D bis F und des Satzes einschließlich der Verarbeitungen G und H verringert. In der vorliegenden Ausführungsform entspricht der Indikator Ind einem vorbestimmten Parameter.
  • Gemäß der vorstehenden Konfiguration können, da die Prioritätsreihenfolge für die jeweiligen Verarbeitungen A, B usw., wie in der ersten Ausführungsform festgelegt werden kann, die gleiche Operation und Vorteile wie die der ersten Ausführungsform erlangt werden.
  • (Fünfte Ausführungsform)
  • Nachfolgend werden ein Parallelisierungskompilierverfahren, ein Parallelisierungskompilierer CP und eine ECU 3 gemäß einer fünften Ausführungsform beschrieben. Nachfolgend werden hauptsächlich Unterschiede zur ersten Ausführungsform beschrieben.
  • Wie in 14 illustriert ist, analysiert der Parallelisierungskompilierer CP gemäß der vorliegenden Ausführungsform bei S6 die Beschränkung, die auf eine Ausführungsreihenfolge jeweiliger Verarbeitungen A, B usw. ausgeübt wird, auf der Basis von Prioritätsinformationen I4 von jeweiligen Verarbeitungsordnern FDa, FDb usw. anstelle der Prioritätsinformationen I1 der jeweiligen Verarbeitungen. Eine Einzelne oder mehrere Verarbeitungsdateien können in jedem der Verarbeitungsordner gespeichert sein. Eine einzelne oder mehrere Verarbeitungen können in jeder der Verarbeitungsdateien beschrieben sein.
  • Beispielsweise wird angenommen, dass das sequentielle Programm P1 die Verarbeitungsordner FDa, FDb und FDc beinhaltet. Die Verarbeitungsdateien, in denen die Inhalte der Verarbeitungen A bis C beschrieben sind, werden in dem Verarbeitungsordner FDa gespeichert. Die Verarbeitungsdateien, in denen die Inhalte der Verarbeitungen D bis F beschrieben sind, werden in dem Verarbeitungsordner FDb gespeichert. Die Verarbeitungsdateien, in denen die Inhalte der Verarbeitungen G und H beschrieben sind, werden in dem Verarbeitungsordner FDc gespeichert. Der Parallelisierungskompilierer CP führt die Verarbeitungsdateien aus, die in den Verarbeitungsordnern FDa bis FDc gespeichert sind. In diesem Fall repräsentieren beispielsweise, wie in 14 illustriert ist, die Prioritätsinformationen I4 die Prioritäten jeweiliger Verarbeitungsordner FDa bis FDc durch Zahlen. In den Prioritätsinformationen I4 repräsentiert eine kleinere Zahl eine höhere Ausführungspriorität des Verarbeitungsordners. Die Prioritätsinformationen I4 können beispielsweise von der Eingabevorrichtung 25 als Eingabeinformationen übertragen werden oder in dem Speichermedium 1 vorab gespeichert werden. In der vorliegenden Ausführungsform entsprechen die Prioritätsinformationen I4 einem vorbestimmten Parameter.
  • Nach der Verarbeitung bei S6 führt der Parallelisierungskompilierer CP bei S7 Zeitplanung zum Zuweisen der jeweiligen Verarbeitungen A, B usw. mehreren Verarbeitungsgruppen PG1, PG2 usw. auf der Basis des Verarbeitungsgraphen MTG, der bei S5 erzeugt wird, und der Beschränkung, die auf die Ausführungsreihenfolge der jeweiligen Verarbeitungen A, B usw., die bei S6 analysiert werden, ausgeübt wird, aus. Insbesondere ordnet der Parallelisierungskompilierer CP alle oder einen Teil der Verarbeitungen, die in der Parallelisierungsverarbeitung ausführbar sind, den unterschiedlichen Verarbeitungsgruppen PG1, PG2 usw. zu, während die folgenden Bedingungen D1 und D2 erfüllt sind.
  • Bedingung D1: Der Verarbeitungsordner mit höchster Priorität wird vor dem Verarbeitungsordner mit niedrigerer Priorität ausgeführt.
  • Bedingung D2: Eine Startzeit des Verarbeitungsordners mit niedrigerer Priorität ist später als eine Endzeit des Verarbeitungsordners mit höherer Priorität.
  • Demzufolge erzeugt der Parallelisierungskompilierer CP die Verarbeitungsgruppen PG1 und PG2, die in 15 illustriert sind, beispielsweise auf der Basis des Verarbeitungsgraphen MTG, der in 5 illustriert ist, und der Prioritätsinformationen I4.
  • Nachfolgend werden die Operation und Vorteile des Parallelisierungskompilierverfahrens, des Parallelisierungskompilierers CP und der ECU gemäß der vorliegenden Ausführungsform beschrieben.
  • Wie in 15 illustriert ist, erzeugt der Parallelisierungskompilierer CP sogar, wenn die Inhalte der Verarbeitung E geändert werden, die Verarbeitungsgruppen PG1 und PG2, die ermöglichen, dass der Verarbeitungsordner FDb ausgeführt wird, nachdem die Ausführung des Verarbeitungsordner FDa abgeschlossen wurde, mit Hilfe der Prioritätsinformationen I4. Der Parallelisierungskompilierer CP erzeugt die Verarbeitungsgruppen PG1 und PG2, die ermöglichen, dass der Verarbeitungsordner FDc ausgeführt wird, nachdem die Ausführung des Verarbeitungsordners FDp abgeschlossen wurde. Demnach beeinträchtigt die Änderung in der Verarbeitung E lediglich eine Region, die durch eine strichzweipunktierte Linie in 5 angegeben ist, das heißt, ein lokales Ausmaß eines parallelisierten Programms P2. Somit können ähnliche Vorteile wie die in der ersten Ausführungsform erlangt werden.
  • (Sechste Ausführungsform)
  • Nachfolgend werden ein Parallelisierungskompilierverfahren, ein Parallelisierungskompilierer CP und eine ECU 3 gemäß einer sechsten Ausführungsform beschrieben. Nachfolgend werden hauptsächlich Unterschiede zur ersten Ausführungsform beschrieben.
  • Wie in 16 illustriert ist, analysiert der Parallelisierungskompilierer CP gemäß der vorliegenden Ausführungsform bei S6 die Beschränkung, die auf eine Ausführungsreihenfolge jeweiliger Verarbeitungen A, B usw. angewandt wird, auf der Basis von Prioritätsinformationen I5 jeweiliger Verarbeitungsdateien FLa, FLb usw. anstelle von Prioritätsinformationen I1 der Verarbeitungen. Eine einzelne oder mehrere Verarbeitungen können in jeder der Verarbeitungsdateien beschrieben sein.
  • Beispielsweise wird angenommen, dass ein sequentielles Programm P1 die Verarbeitungsdateien FLa, FLb und FLc beinhaltet. Die Inhalte der Verarbeitungen A bis C sind in der Verarbeitungsdatei FLa beschrieben. Die Inhalte der Verarbeitungen D bis F sind in der Verarbeitungsdatei FLb beschrieben. Die Inhalte der Verarbeitungen G und H sind in der Verarbeitungsdatei FLc beschrieben. Der Parallelisierungskompilierer CP führt die Verarbeitungen aus, die in den Verarbeitungsdateien FLa bis FLc gespeichert sind. In diesem Fall repräsentieren beispielsweise, wie in 16 illustriert ist, Prioritätsinformationen I5 die Prioritäten der Verarbeitungsdateien FLa bis FLc durch Zahlen. In den Prioritätsinformationen I5 repräsentiert eine kleinere Zahl eine höhere Ausführungspriorität der Verarbeitung in der Verarbeitungsdatei. Die Prioritätsinformationen I5 können beispielsweise von der Eingabevorrichtung 25 als Eingabeinformationen übertragen werden oder können in dem Speichermedium 1 vorab gespeichert werden. In der vorliegenden Ausführungsform entsprechen die Prioritätsinformationen I5 einem vorbestimmten Parameter.
  • Nach der Verarbeitung bei S6 führt der Parallelisierungskompilierer CP bei S7 Zeitplanung zum Zuweisen der jeweiligen Verarbeitungen A, B usw. mehreren Verarbeitungsgruppen PG1, PG2 usw. auf der Basis des Verarbeitungsgraphen MTG, der bei S5 erzeugt wird, und der Beschränkung, die auf die Ausführungsreihenfolge der jeweiligen Verarbeitungen A, B usw. angewandt wird, die bei S6 analysiert werden, aus. Insbesondere ordnet der Parallelisierungskompilierer CP alle oder einen Teil der Verarbeitungen, die in der Parallelisierungsverarbeitung ausführbar sind, den unterschiedlichen Verarbeitungsgruppen PG1, PG2 usw. zu, während die folgenden Bedingungen E1 und E2 erfüllt werden.
  • Bedingung E1: Die Verarbeitungsdatei mit höherer Priorität wird früher als die Verarbeitungsdatei mit niedriger Priorität ausgeführt.
  • Bedingung E2: Eine Startzeit der Verarbeitungsdatei mit niedrigerer Priorität ist später als eine Endzeit der Verarbeitungsdatei, die höhere Priorität aufweist.
  • Demzufolge erzeugt der Parallelisierungskompilierer CP die Verarbeitungsgruppen PG1 und PG2, die in 17 illustriert sind, beispielsweise auf der Basis des Verarbeitungsgraphen MTG, der in 5 illustriert ist, und den Prioritätsinformationen I5.
  • Nachfolgend werden eine Operation und Vorteile des Parallelisierungskompilierverfahrens, des Parallelisierungskompilierers CP und der ECU 3 gemäß der vorliegenden Ausführungsform beschrieben. Wie in 17 illustriert ist, erzeugt der Parallelisierungskompilierer CP sogar, wenn die Inhalte der Verarbeitung E geändert werden, die Verarbeitungsgruppen PG1 und PG2, die ermöglichen, dass die Verarbeitungsdatei FLb ausgeführt wird, nachdem das Ausführen der Verarbeitungsdatei FLa abgeschlossen wurde, durch die Hilfe von Prioritätsinformationen I5. Der Parallelisierungskompilierer CP erzeugt die Verarbeitungsgruppen PG1 und PG2, die ermöglichen, dass die Verarbeitungsdatei FLc ausgeführt wird, nachdem das Ausführen der Verarbeitungsdatei FLb abgeschlossen wurde. Demnach beeinträchtigt die Änderung in der Verarbeitung E lediglich eine Region, die durch eine strichzweipunktierte Linie in 17 angegeben ist, das heißt ein lokales Ausmaß eines parallelisierten Programms P2. Somit können ähnliche Vorteile wie die in der ersten Ausführungsform erlangt werden.
  • (Weitere Ausführungsformen)
  • Die vorstehend beschriebenen Ausführungsformen können ebenso durch die folgenden Konfigurationen implementiert werden.
  • Der Parallelisierungskompilierer CP gemäß der ersten Ausführungsform kann die folgende Bedingung B3 anstelle der Bedingung B2 zum Ausführen der Zeitplanung bei S7 einsetzen.
  • Bedingung B3: Eine Startzeit der Verarbeitung mit niedrigerer Priorität ist später als eine Startzeit der Verarbeitung, die höhere Priorität aufweist.
  • Basierend auf der vorstehenden Bedingung, kann der Parallelisierungskompilierer CP Verarbeitungsgruppen PG1 und PG2, die in 18 illustriert sind, beispielsweise auf der Basis des Verarbeitungsgraphen MTG, der in 5 illustriert ist, und der Prioritätsinformationen I1 erzeugen. Somit kann eine Ausführungszeit eines parallelisierten Programms P2 reduziert werden. Die Bedingung C2 in der dritten Ausführungsform, die Bedingung D2 in der fünften Ausführungsform und die Bedingung E2 in der sechsten Ausführungsform können auf ähnliche Weise geändert werden.
  • Der Indikator Ind gemäß der vierten Ausführungsform kann eine Abhängigkeit der früheren und späteren Verarbeitungen in einem sequentiellen Programm P1 hinzufügen. Sogar mit den vorstehenden Konfigurationen können ähnliche Operation und ähnliche Vorteile wie die in der vierten Ausführungsform erlangt werden.
  • Der Parallelisierungskompilierer CP kann auf einer Kompiliervorrichtung 2 durch ein Netzwerk installiert werden.
  • Die Kompiliervorrichtung 2 ist nicht auf die Fahrzeugvorrichtung beschränkt, sondern kann bei der Entwicklung eines parallelisierten Programms für ein eingebautes System, das für unterschiedliche Anwendungen wie beispielsweise Informationsanwendungen vorgesehen ist, oder die Entwicklung eines parallelisierten Programms für andere Anwendungen abgesehen von dem eingebauten System verwendet werden.
  • Gemäß den vorstehenden Ausführungsformen wird das Kompilieren in einem Zustand ausgeführt, in dem die Ausführungsreihenfolge der mehreren Verarbeitungen beim Ändern irgendeiner der mehreren Verarbeitungen beschränkt ist. Somit wird ein Einfluss einer Änderung in der Verarbeitung auf ein lokales Ausmaß entsprechend der Beschränkung beschränkt, die auf die Ausführungsreihenfolge angewandt wird. In anderen Worten beeinträchtigt die Änderung in der Verarbeitung lediglich das lokale Ausmaß des parallelisierten Programms ohne das gesamte parallelisierte Programm zu beeinträchtigen. Somit, da nur das lokale Ausmaß des parallelisierten Programms verifiziert werden muss, wird die Verifizierung des Programms vereinfacht.
  • Ferner kann gemäß den vorstehenden Ausführungsformen der vorliegenden Offenbarung das parallelisierte Programm einfach in einem Fall verifiziert werden, in dem eine Programmänderung getätigt wird.
  • In der vorliegenden Offenbarung ist zu beachten, dass ein Ablaufdiagramm oder die Verarbeitung des Ablaufdiagramms in der vorliegenden Offenbarung Abschnitte (ebenso als Schritte bezeichnet) beinhaltet, von denen jeder beispielsweise als S1 repräsentiert ist. Ferner kann jeder Abschnitt in mehrere Unterabschnitte unterteilt werden, während mehrere Abschnitte zu einem einzelnen Abschnitt kombiniert werden können. Ferner kann jeder der so konfigurierten Abschnitte ebenso als eine Schaltung, Einrichtung, Modul oder Mittel bezeichnet werden.
  • Während nur die ausgewählten Ausführungsbeispiele ausgewählt wurden, um die vorliegende Offenbarung zu illustrieren, ist es für den Fachmann aus dieser Offenbarung ersichtlich, dass unterschiedliche Änderungen und Modifikationen darin vorgenommen werden können, ohne den Umfang der Offenbarung, wie er in den Ansprüchen definiert ist, zu verlassen. Ferner ist die vorstehende Beschreibung der Ausführungsbeispiele gemäß der vorliegenden Offenbarung nur zur Illustration vorgesehen, und nicht um die Offenbarung, wie sie durch die Ansprüche und ihre Äquivalente definiert ist, zu beschränken.
  • 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 2015-001807 A [0002]
    • US 2014/0372995 A1 [0002]
    • JP 2015-001807 [0002]

Claims (16)

  1. Parallelisierungskompilierverfahren, umfassend: Analysieren eines sequentiellen Programms (P1), das für einen Einzelkernprozessor vorbereitet ist; Teilen des sequentiellen Programms (P1) in mehrere Verarbeitungen basierend auf einem Analyseergebnis; und Erzeugen eines parallelisierten Programms (P2), das einer parallelisierten Ausführung durch einen Mehrkernprozessor (30) unterworfen wird, aus den mehreren Verarbeitungen, wobei die Erzeugung des parallelisierten Programms (P2) Kompilieren der mehreren Verarbeitungen unter einer Ausführungsreihenfolgebeschränkung beinhaltet, die basierend auf einem vorbestimmten Parameter definiert ist.
  2. Parallelisierungskompilierverfahren gemäß Anspruch 1, wobei der vorbestimmte Parameter durch Prioritäten der mehreren Verarbeitungen bereitgestellt wird.
  3. Parallelisierungskompilierverfahren gemäß Anspruch 1, wobei der vorbestimmte Parameter durch eine abhängige Beziehung der mehreren Verarbeitungen bereitgestellt wird.
  4. Parallelisierungskompilierverfahren gemäß Anspruch 1, wobei das sequentielle Programm (P1) einen oder mehrere Funktionsblöcke beinhaltet, jeder der einen oder mehreren Funktionsblöcke eine oder mehrere der mehreren Verarbeitungen beinhaltet, und der vorbestimmte Parameter durch Prioritäten bereitgestellt wird, die jeweils für den einen oder mehrere Funktionsblöcke festgelegt sind.
  5. Parallelisierungskompilierverfahren gemäß Anspruch 1, wobei das sequentielle Programm (P1) einen oder mehrere Indikatoren beinhaltet, jeder des einen oder der mehreren Indikatoren zum Ändern einer Ausführungspriorität von zwei oder mehr der mehreren Verarbeitungen, die früher oder später in dem sequentiellen Programm (P1) angeordnet sind, definiert ist, oder zum Hinzufügen einer abhängigen Beziehung der zwei oder mehr der mehreren Verarbeitungen, die früher oder später in dem sequentiellen Programm (P1) angeordnet sind, definiert ist, und der vorbestimmte Parameter durch den einen oder die mehreren Indikatoren bereitgestellt wird.
  6. Parallelisierungskompilierverfahren gemäß Anspruch 1, wobei das sequentielle Programm (P1) einen oder mehrere Ordner beinhaltet, jeder des einen oder der mehreren Ordner eine oder mehrere Dateien beinhaltet, jede der einen oder mehreren Dateien eine oder mehrere der mehreren Verarbeitungen beinhaltet, und der vorbestimmte Parameter durch Prioritäten des einen oder der mehreren Ordner bereitgestellt wird.
  7. Parallelisierungskompilierverfahren gemäß Anspruch 1, wobei das sequentielle Programm (P1) eine oder mehrere Dateien beinhaltet, jede der einen oder mehreren Dateien eine oder mehrere der mehreren Verarbeitungen beinhaltet, und der vorbestimmte Parameter durch Prioritäten der einen oder mehreren Dateien bereitgestellt wird.
  8. Parallelisierungskompilierer, der in einem nicht-flüchtigen, greifbaren, computerlesbaren Speichermedium als ein Programmprodukt gespeichert ist, wobei der Parallelisierungskompilierer Anweisungen aufweist, die durch eine Kompiliervorrichtung (2) auszuführen sind, wobei die Anweisungen dazu dienen, um zu implementieren: Analysieren eines sequentiellen Programms (P1), das für einen Einzelkernprozessor vorbereitet ist; Teilen des sequentiellen Programms (P1) in mehrere Verarbeitungen basierend auf einem Analyseergebnis; und Erzeugen eines parallelisierten Programms (P2), das einer parallelisierten Ausführung durch einen Mehrkernprozessor (30) unterworfen wird, aus den mehreren Verarbeitungen, wobei die Erzeugung des parallelisierten Programms (P2) Kompilieren der mehreren Verarbeitungen unter einer Ausführungsreihenfolgebeschränkung beinhaltet, die basierend auf einem vorbestimmten Parameter definiert ist.
  9. Parallelisierungskompilierer gemäß Anspruch 8, wobei der vorbestimmte Parameter durch Prioritäten der mehreren Verarbeitungen bereitgestellt wird.
  10. Parallelisierungskompilierer gemäß Anspruch 8, wobei der vorbestimmte Parameter durch eine abhängige Beziehung der mehreren Verarbeitungen bereitgestellt wird.
  11. Parallelisierungskompilierer gemäß Anspruch 8, wobei das sequentielle Programm (P1) einen oder mehrere Funktionsblöcke beinhaltet, jeder der einen oder mehreren Funktionsblöcke eine oder mehrere der mehreren Verarbeitungen beinhaltet, und der vorbestimmte Parameter durch Prioritäten bereitgestellt wird, die jeweils für den einen oder mehrere Funktionsblöcke festgelegt sind.
  12. Parallelisierungskompilierer gemäß Anspruch 8, wobei das sequentielle Programm (P1) einen oder mehrere Indikatoren beinhaltet, jeder des einen oder der mehreren Indikatoren zum Ändern einer Ausführungspriorität von zwei oder mehr der mehreren Verarbeitungen, die früher oder später in dem sequentiellen Programm (P1) angeordnet sind, definiert ist, oder zum Hinzufügen einer abhängigen Beziehung der zwei oder mehr der mehreren Verarbeitungen, die früher oder später in dem sequentiellen Programm (P1) angeordnet sind, definiert ist, und der vorbestimmte Parameter durch den einen oder die mehreren Indikatoren bereitgestellt wird.
  13. Parallelisierungskompilierer gemäß Anspruch 8, wobei das sequentielle Programm (P1) einen oder mehrere Ordner beinhaltet, jeder des einen oder der mehreren Ordner eine oder mehrere Dateien beinhaltet, jede der einen oder mehreren Dateien eine oder mehrere der mehreren Verarbeitungen beinhaltet, und der vorbestimmte Parameter durch Prioritäten des einen oder der mehreren Ordner bereitgestellt wird.
  14. Parallelisierungskompilierer gemäß Anspruch 8, wobei das sequentielle Programm (P1) eine oder mehrere Dateien beinhaltet, jede der einen oder mehreren Dateien eine oder mehrere der mehreren Verarbeitungen beinhaltet, und der vorbestimmte Parameter durch Prioritäten der einen oder mehreren Dateien bereitgestellt wird.
  15. Fahrzeugvorrichtung, aufweisend: einen Mehrkernprozessor (30), der eine Steuerverarbeitung basierend auf dem parallelisierten Programm ausführt, dass durch das Parallelisierungskompilierverfahren gemäß einem der Ansprüche 1 bis 7 erzeugt wird.
  16. Fahrzeugvorrichtung, aufweisend: einen Mehrkernprozessor (30), der eine Steuerverarbeitung basierend auf dem parallelisierten Programm ausführt, das durch den Parallelisierungskompilierer gemäß einem der Ansprüche 8 bis 14 erzeugt wird.
DE102016204970.4A 2015-03-31 2016-03-24 Parallelisierungskompilierverfahren, Parallelisierungskomplierer und Fahrzeugvorrichtung Withdrawn DE102016204970A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2015072814A JP6427055B2 (ja) 2015-03-31 2015-03-31 並列化コンパイル方法、及び並列化コンパイラ
JP2015-72814 2015-03-31

Publications (1)

Publication Number Publication Date
DE102016204970A1 true DE102016204970A1 (de) 2016-10-06

Family

ID=56937730

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102016204970.4A Withdrawn DE102016204970A1 (de) 2015-03-31 2016-03-24 Parallelisierungskompilierverfahren, Parallelisierungskomplierer und Fahrzeugvorrichtung

Country Status (3)

Country Link
US (1) US20160291949A1 (de)
JP (1) JP6427055B2 (de)
DE (1) DE102016204970A1 (de)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017228029A (ja) * 2016-06-21 2017-12-28 株式会社デンソー 並列化方法、並列化ツール、車載装置
FR3074931B1 (fr) * 2017-12-13 2020-01-03 Vsora Architectures de processeur
CN109471637B (zh) * 2018-11-08 2021-07-06 西安电子科技大学 电路图的审查脚本调试方法
JP2022175874A (ja) * 2021-05-14 2022-11-25 日立Astemo株式会社 プログラム実行装置、解析方法、実行方法

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 (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05265721A (ja) * 1992-03-03 1993-10-15 Nec Corp 差分コンパイル方法および装置
JPH0675786A (ja) * 1992-08-26 1994-03-18 Hitachi Ltd タスクスケジュリング方法
JPH0721015A (ja) * 1993-06-23 1995-01-24 Nec Software Ltd リンク処理方式
US5768594A (en) * 1995-07-14 1998-06-16 Lucent Technologies Inc. Methods and means for scheduling parallel processors
JP2002108625A (ja) * 2000-09-26 2002-04-12 Toshiba Corp 言語処理装置及び言語処理プログラムを格納した記録媒体
US7302686B2 (en) * 2001-07-04 2007-11-27 Sony Corporation Task management system
JP4042604B2 (ja) * 2003-03-31 2008-02-06 日本電気株式会社 プログラム並列化装置,プログラム並列化方法およびプログラム並列化プログラム
JP2007226739A (ja) * 2006-02-27 2007-09-06 Seiko Epson Corp ソフトウェア開発装置およびプログラム
JP4936517B2 (ja) * 2006-06-06 2012-05-23 学校法人早稲田大学 ヘテロジニアス・マルチプロセッサシステムの制御方法及びマルチグレイン並列化コンパイラ
US8136104B2 (en) * 2006-06-20 2012-03-13 Google Inc. Systems and methods for determining compute kernels for an application in a parallel-processing computer system
JP5019897B2 (ja) * 2007-02-07 2012-09-05 任天堂株式会社 ゲームプログラムおよびゲーム装置
US8181168B1 (en) * 2007-02-07 2012-05-15 Tilera Corporation Memory access assignment for parallel processing architectures
JP2009146243A (ja) * 2007-12-17 2009-07-02 Hitachi Ltd 基板バイアス制御を活用する電力性能最適化コンパイラ及びプロセッサシステム
US8448155B2 (en) * 2009-06-01 2013-05-21 National Instruments Corporation Automatically creating parallel iterative program code in a graphical data flow program
US9009726B2 (en) * 2010-12-10 2015-04-14 Microsoft Technology Licensing, Llc Deterministic sharing of data among concurrent tasks using pre-defined deterministic conflict resolution policies
JP5660386B2 (ja) * 2011-05-26 2015-01-28 日本電気株式会社 メモリ配置管理装置、メモリ配置管理方法、メモリ配置管理プログラム、およびプログラム作成システム
JP5971334B2 (ja) * 2012-04-18 2016-08-17 日本電気株式会社 タスク配置装置、タスク配置方法、および、コンピュータ・プログラム
US20140032833A1 (en) * 2012-07-25 2014-01-30 International Business Machines Corporation Dynamic Disk Space Management In A File System
US9411641B2 (en) * 2012-10-04 2016-08-09 Lawrence J. Dickson Method and apparatus implemented in processors for real-time scheduling and task organization based on response time order of magnitude
US9530398B2 (en) * 2012-12-06 2016-12-27 White Eagle Sonic Technologies, Inc. Method for adaptively scheduling ultrasound system actions
US9195506B2 (en) * 2012-12-21 2015-11-24 International Business Machines Corporation Processor provisioning by a middleware processing system for a plurality of logical processor partitions
US20140288911A1 (en) * 2013-03-25 2014-09-25 Nvidia Corporation System and method for simulating integrated circuit performance on a many-core processor
US9542221B2 (en) * 2014-05-22 2017-01-10 Oracle International Corporation Dynamic co-scheduling of hardware contexts for parallel runtime systems on shared machines
US10318194B2 (en) * 2014-10-02 2019-06-11 Hitachi Vantara Corporation Method and an apparatus, and related computer-program products, for managing access request in multi-tenancy environments
US9280389B1 (en) * 2014-12-30 2016-03-08 Tyco Fire & Security Gmbh Preemptive operating system without context switching

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
JP6427055B2 (ja) 2018-11-21
JP2016192154A (ja) 2016-11-10
US20160291949A1 (en) 2016-10-06

Similar Documents

Publication Publication Date Title
DE69637020T2 (de) Überpartitionierungssystem und-verfahren zum Erhöhen der Anzahl von Prüfpunkten in komponentenbasierten Parallelanwendungen
DE102016204970A1 (de) Parallelisierungskompilierverfahren, Parallelisierungskomplierer und Fahrzeugvorrichtung
DE102014211047A1 (de) Parallelisierungskompilierverfahren, Parallelisierungskompilierer, Parallelisierungskompiliervorrichtung und Bordvorrichtung
DE102016204963A1 (de) Parallelisierungskompilierverfahren, Parallelisierungskompilierer und Fahrzeugvorrichtung
DE102016223939A1 (de) Parallelisierungsverfahren, Parallelisierungswerkzeug und fahrzeugeigene Vorrichtung
DE102020115968A1 (de) Systeme und verfahren für multi-bit-speicher mit eingebetteter logik
DE112019005584T5 (de) Arithmetiksteuervorrichtung
DE102017210126A1 (de) Parallelisierungsverfahren, Parallelisierungswerkzeug und fahrzeuginterne Vorrichtung
DE112010004037T5 (de) Simulationsverfahren, -system und -programm
DE102009027627B3 (de) Simulation von Echtzeit-Software-Komponenten auf Basis der Logischen Ausführungszeit
DE102018114322A1 (de) Architektur und Dienste zur Unterstützung der rekonfigurierbaren Synchronisation in einem Multiprozessorsystem
DE102018110018A1 (de) Verfahren zum Bereitstellen eines integrierten Prozesses für die Steuergerätentwicklung und Simulationsvorrichtung für die Steuergerätentwicklung
DE102014103139A1 (de) Parallelisierte Ausführung von Single-Core Steuerungssoftware auf Multi-Core Fahrzeugsteuergeräten
DE112019002778T5 (de) Simulationsvorrichtung, simulationsverfahren und elektronische steuereinheitsvorrichtung
DE102016204960A1 (de) Parallelisierungskompilierverfahren, Parallelisierungskompilierer und Fahrzeugvorrichtung
DE102016201612A1 (de) Parallelisierungskompilierungsverfahren, Parallelisierungskompilierer und elektronische Vorrichtung
DE102009025572A1 (de) Eine Methode zur Entwicklung von garantiert korrekten Echtzeitsystemen
DE102016220340A1 (de) Parallelisierungsverfahren, parallelisierungswerkzeug und fahrzeugverbaute einrichtung
DE102016219449A1 (de) Parallelisierungsverfahren, Parallelisierungswerkzeug und fahrzeugverbaute Einrichtung
DE102015112250A1 (de) Trennung von Kernen
DE102018123563B4 (de) Verfahren zur Zwischenkernkommunikation in einem Mehrkernprozessor
DE102017220181A1 (de) Parallelisierungsverfahren, Parallelisierungstool und fahrzeuginterne Steuervorrichtung
DE102016201614A1 (de) Parallelisierungskompilierungsverfahren, Parallelisierungskompilierer und elektronische Vorrichtung
DE102015218589A1 (de) Verfahren und Vorrichtung zum Betreiben eines Many-Core-System
DE102013212266A1 (de) Programmentwicklungsunterstützungsvorrichtung und Programmentwicklungsunterstützungswerkzeug

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R082 Change of representative

Representative=s name: WINTER, BRANDL - PARTNERSCHAFT MBB, PATENTANWA, DE

Representative=s name: WINTER, BRANDL, FUERNISS, HUEBNER, ROESS, KAIS, DE

R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0009450000

Ipc: G06F0009440000

R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee