DE102016219721A1 - Parallelisierungsverfahren, parallelisierungswerkzeug und fahrzeugverbaute einrichtung - Google Patents

Parallelisierungsverfahren, parallelisierungswerkzeug und fahrzeugverbaute einrichtung Download PDF

Info

Publication number
DE102016219721A1
DE102016219721A1 DE102016219721.5A DE102016219721A DE102016219721A1 DE 102016219721 A1 DE102016219721 A1 DE 102016219721A1 DE 102016219721 A DE102016219721 A DE 102016219721A DE 102016219721 A1 DE102016219721 A1 DE 102016219721A1
Authority
DE
Germany
Prior art keywords
subject
core
time
kernel
suppression
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.)
Granted
Application number
DE102016219721.5A
Other languages
English (en)
Other versions
DE102016219721B4 (de
Inventor
Kenichi Mineda
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 DE102016219721A1 publication Critical patent/DE102016219721A1/de
Application granted granted Critical
Publication of DE102016219721B4 publication Critical patent/DE102016219721B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • G06F9/522Barrier synchronisation
    • 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
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5017Task decomposition

Landscapes

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

Abstract

Ein Parallelisierungsverfahren wird bereitgestellt, das in der Lage ist, ein paralleles Programm zu erzeugen, das ein länger Werden einer Wartezeit beschränken kann, während eine Buszugriffskonkurrenz reduziert wird. Das Verfahren beinhaltet ein Berechnen (S11, S12) einer Wartezeit in einem Synchronisationsprozess des parallelen Programms. Die Wartezeit ist eine Zeit seit der Beendigung der Ausführung eines Prozesses, der für einen ersten Kern allokiert ist, bis zu der Beendigung der Ausführung eines Prozesses, der für einen zweiten Kern allokiert ist. Das Verfahren beinhaltet weiter das Hinzufügen (S13) eines Unterdrückungsprozesses zu dem parallelen Programm zum Unterdrücken des Zugriffs des Subjektkerns auf den Bus während des Wartens des Subjektkerns durch Ermitteln einer Unterdrückungszeit in Übereinstimmung mit der berechneten Wartezeit und Hinzufügen des Unterdrückungsprozesses des Verbietens, dass der Subjektkern während der Unterdrückungszeit auf den Bus zugreift.

Description

  • Die Erfindung betrifft ein Parallelisierungsverfahren und ein Parallelisierungswerkzeug zum Erzeugen eines parallelen Programms für einen Mehrkern-Mikrocomputer aus einem Programm für einen Einkern-Mikrocomputer, und eine fahrzeugverbaute Einrichtung, die das durch das Parallelisierungsverfahren erzeugte parallele Programm implementiert.
  • Bislang gibt es, als ein Beispiel des Parallelisierungsverfahrens zum Erzeugen des parallelen Programms für den Mehrkern-Mikrocomputer aus dem Programm für den Einkern-Mikrocomputer, ein Parallelisierungskompilierungsverfahren, das in einer Patentliteratur 1 offenbart ist.
  • In dem Parallelisierungskompilierungsverfahren werden, nachdem ein sequenzielles Programm für ein eingebettetes System, das von einem Einprozessorsystem auszuführen ist, in mehrere Makroaufgaben (nachstehend als ”MTs” bezeichnet) unterteilt worden ist, die MTs mit einer Steuerungsabhängigkeit zu einer bzw. in eine MT zusammengefasst. Danach werden in dem Parallelisierungskompilierungsverfahren parallelisierbare MTs auf der Grundlage der Datenabhängigkeit extrahiert und wird eine statische Ablaufplanung durchgeführt, um ein paralleles Programm zu erzeugen.
    Patentliteratur 1: JP-2015-1807A entsprechend US 2014 372 995 A1 und DE 10 2014 211 047 A1
  • Das in einem in der Patentliteratur 1 offenbarten Verfahren erzeugte parallele Programm beinhaltet eine Warteschlangenverarbeitung bzw. einen Warteschlangenprozess des Wartens darauf, dass die Ausführung einer MT, die für einen Kern allokiert bzw. zugeteilt ist, abgeschlossen bzw. beendet ist , und dann Erlaubens, dass eine für einen anderen Kern allokierte MT ausgeführt wird.
  • Das Folgende beschreibt verwandte Technik, welche nicht notwendigerweise den Stand der Technik bildet. Es ist denkbar, dass in dem Mehrkern-Mikrocomputer ein Wert, der die Beendigung der Ausführung einer MT durch jeden Kern anzeigt, über einen Bus, der von den Kernen gemeinsam verwendet wird, in einer Speichereinheit gespeichert wird, und der Warteschlangenprozess durchgeführt wird, während die Werte in der Speichereinheit abgefragt werden.
  • In diesem Fall greift der Kern, der die MT ausführt, für den Zweck des Ausführens der MT auf den Bus zu. Andererseits greift der Kern, der sich in einem Wartezustand befindet, in dem der Kern die MT bereits ausgeführt hat, zum Zweck des Überprüfens bzw. Bestätigens, ob ein anderer Kern die Ausführung der MT beendet hat oder nicht, auf den Bus zu. Daher kann der Mehrkern-Mikrocomputer an einem Problem dahin gehend leiden, dass die Buszugriffe miteinander konkurrieren.
  • In der verwandten Technik weist, um eine solche Konkurrenz zu unterdrücken, ein Parallelisierungsverfahren einen ”nop”(Abkürzung für ”no operation” bzw. Nulloperation)-Befehl einem parallelen Programm zu, um den Kern in dem Wartezustand darin zu beschränken, auf den Bus zuzugreifen. Ferner wird die Anzahl von ”nop”-Befehlen empirisch oder durch systematisches Ausprobieren bzw. nach dem Prinzip von Versuch und Irrtum ermittelt. Aus diesem Grund kann in dem parallelen Programm die Anzahl von ”nop”-Befehlen größer oder kleiner sein als eine geeignete Anzahl. Daher leidet das parallele Programm an einem Problem derart, dass eine Wartezustandszeit länger wird und die Leistungsfähigkeit des Mehrkern-Mikrocomputers nicht ausreichend genutzt werden kann.
  • In Anbetracht des vorstehenden Problems liegt der Erfindung als eine Aufgabe zugrunde, ein Parallelisierungsverfahren und ein Parallelisierungswerkzeug bereitzustellen, welche in der Lage sind, ein paralleles Programm zu erzeugen, das eine Wartezeit darin beschränken kann, länger zu werden, während eine Konkurrenz von Buszugriffen reduziert wird. Darüber hinaus soll eine fahrzeugverbaute Einrichtung bereitgestellt werden, die in der Lage ist, die Wartezeit darin zu beschränken, länger zu werden, während die Konkurrenz für den Buszugriff verringert wird.
  • In einem ersten Aspekt der Erfindung wird ein Parallelisierungsverfahren bereitgestellt zum Erzeugen, aus einer Vielzahl von Prozessen in einem Einzelprogramm für einen Einkern-Mikrocomputer mit einem Kern, eines parallelen Programms, das für einen Mehrkern-Mikrocomputer mit einer Vielzahl von Kernen einschließlich eines Subjektkerns und eines anderen Kerns, welche auf einen gemeinsamen Bus zugreifen, parallelisiert ist. Das parallele Programm beinhaltet einen Synchronisationsprozess des, bei Beendigung der Ausführung eines für den Subjektkern allokierten Prozesses, Wartens auf die Beendigung der Ausführung eines Prozesses, der für einen anderen Kern allokiert ist, und dann Ausführens eines nächsten Prozesses, der für den Subjektkern allokiert ist. Das Parallelisierungsverfahren beinhaltet: eine Erfassungsprozedur des Erfassens einer Stelle in dem parallelen Programm, an der der Synchronisationsprozess durchgeführt wird; eine Berechnungsprozedur des Berechnens einer Wartezeit in dem erfassten Synchronisationsprozess, wobei die Wartezeit eine Zeit seit der Beendigung der Ausführung des für den Subjektkern allokierten Prozesses bis zu der Ausführung des für den anderen Kern allokierten Prozesses ist; und eine Hinzufügeprozedur des Hinzufügens eines Unterdrückungsprozesses zu dem parallelen Programm zum Unterdrücken des Zugriffs des Subjektkerns auf den Bus während des Wartens des Subjektkerns, wobei, in Übereinstimmung mit der berechneten Wartezeit, die Hinzufügeprozedur eine Unterdrückungszeit ermittelt, welche eine Ausführungszeit des Unterdrückungsprozesses ist, und die Hinzufügeprozedur den Unterdrückungsprozess des Verbietens, dass der Subjektkern während der Unterdrückungszeit auf den Bus zugreift, hinzufügt.
  • In Übereinstimmung mit dem Parallelisierungsverfahren kann, weil der Unterdrückungsprozess zu dem parallelen Programm hinzugefügt wird, das parallele Programm die Konkurrenz des Zugriffs auf den Bus zwischen dem Subjektkern und einem anderen Kern reduzieren, während der andere Kern den Prozess ausführt. Ferner kann, weil die Stelle des Synchronisationsprozesses aus dem parallelen Programm erfasst wird, und die Wartezeit des Subjektkerns in dem Synchronisationsprozess berechnet wird und die Unterdrückungszeit in Übereinstimmung mit der Wartezeit ermittelt bzw. bestimmt wird, das parallele Programm die Wartezeit darin beschränken, länger zu werden.
  • In einem zweiten Aspekt der Erfindung beinhaltet ein Parallelisierungswerkzeug einen Computer zum Erzeugen, aus einer Vielzahl von Prozessen in einem Einzelprogramm für einen Einkern-Mikrocomputer mit einem Kern, ein paralleles Programm, das für einen Mehrkern-Mikrocomputer mit einer Vielzahl von Kernen einschließlich eines Subjektkerns und eines anderen Kerns, welche auf einen gemeinsamen Bus zugreifen, parallelisiert ist. Das parallele Programm beinhaltet einen Synchronisationsprozess des, bei Beendigung der Ausführung eines für den Subjektkern allokierten Prozesses, Wartens auf die Beendigung der Ausführung eines Prozesses, der für einen anderen Kern allokiert ist, und Ausführens eines nächsten Prozesses, der für den Subjektkern allokiert ist. Das Parallelisierungswerkzeug beinhaltet eine Erfassungseinheit, eine Berechnungseinheit und eine Hinzufügeeinheit. Die Erfassungseinheit erfasst eine Stelle in dem parallelen Programm, an der der Synchronisationsprozess durchgeführt wird. Die Berechnungseinheit berechnet eine Wartezeit in dem erfassten Synchronisationsprozess. Die Wartezeit ist eine Zeit seit der Beendigung der Ausführung des für den Subjektkern allokierten Prozesses bis zu der Ausführung des für den anderen Kern allokierten Prozesses. Die Hinzufügeeinheit fügt einen Unterdrückungsprozess zu dem parallelen Programm hinzu zum Unterdrücken des Zugriffs des Subjektkerns auf den Bus während des Wartens des Subjektkerns. In Übereinstimmung mit der berechneten Wartezeit ermittelt die Hinzufügeeinheit eine Unterdrückungszeit, welche eine Ausführungszeit des Unterdrückungsprozesses ist. Die Hinzufügeeinheit fügt den Unterdrückungsprozess des Verbietens, dass der Subjektkern während der Unterdrückungszeit auf den Bus zugreift, hinzu.
  • In Übereinstimmung mit dem Parallelisierungswerkzeug kann das parallele Programm die Wartezeit daran hindern, länger zu werden.
  • In einem dritten Aspekt der Erfindung beinhaltet eine fahrzeugverbaute Einrichtung einen Mehrkern-Mikrocomputer und ein paralleles Programm. Der Mehrkern-Mikrocomputer hat eine Vielzahl von Kernen einschließlich eines ersten Kerns und eines zweiten Kerns, welche auf einen gemeinsamen Bus zugreifen. Das parallele Programm wird für den Mehrkern-Mikrocomputer aus einer Vielzahl von Prozessen in einem Einzelprogramm für einen Einkern-Mikrocomputer mit einem Kern parallelisiert. Die Vielzahl von Prozessen ist für verschiedene Kerne des Mehrkern-Mikrocomputers allokiert. Das parallele Programm beinhaltet einen Synchronisationsprozess des, bei Beendigung der Ausführung eines für den Subjektkern allokierten Prozesses, Wartens auf die Beendigung der Ausführung eines Prozesses, der für einen anderen Kern allokiert ist, und Ausführens eines nächsten Prozesses, der für den Subjektkern allokiert ist. Eine Stelle in dem parallelen Programm, an der der Synchronisationsprozess durchgeführt wird, wird erfasst. Eine Wartezeit in dem erfassten Synchronisationsprozess wird berechnet. Die Wartezeit ist eine Zeit seit der Beendigung der Ausführung des für den Subjektkern allokierten Prozesses bis zu der Ausführung des für den anderen Kern allokierten Prozesses. Ein Unterdrückungsprozess zum Unterdrücken des Zugriffs des Subjektkerns auf den Bus während des Wartens des Subjektkerns ist zu dem parallelen Programm hinzugefügt.
  • Eine Unterdrückungszeit, welche eine Ausführungszeit des Unterdrückungsprozesses ist, wird in Übereinstimmung mit der berechneten Wartezeit ermittelt. Die Vielzahl von Kernen führen die Prozesse, die für die Kerne allokiert sind, den Synchronisationsprozess und den Unterdrückungsprozess aus.
  • In Übereinstimmung mit der vorstehenden Konfiguration kann, weil der Unterdrückungsprozess zu dem parallelen Programm hinzugefügt ist, die Zugriffskonkurrenz auf den Bus zwischen dem Objektkern und einem bzw. dem anderen Kern, während der andere Kern den Prozess ausführt, verringert werden. Ferner wird die Stelle des Synchronisationsprozesses aus dem parallelen Programm erfasst, und wird die Wartezeit des Subjektkerns in dem Synchronisationsprozess berechnet. Weil die Unterdrückungszeit in Übereinstimmung mit der Wartezeit ermittelt wird, kann die Wartezeit darin beschränkt werden, länger zu werden. Daher können, weil die Kerne die für die Kerne allokierten Prozesse, den Synchronisationsprozess und den Unterdrückungsprozess ausführen, die Konkurrenz für den Buszugriff reduziert werden, und kann die Wartezeit darin beschränkt werden, länger zu werden.
  • Die vorstehenden sowie weitere Ziele, Merkmale und Vorteile der Erfindung sind aus der folgenden detaillierten Beschreibung unter Bezugnahme auf die beigefügten Zeichnungen besser ersichtlich. Es zeigen:
  • 1 ein Blockdiagramm, das eine schematische Konfiguration eines Computers gemäß einem ersten Ausführungsbeispiel darstellt;
  • 2 ein Blockdiagramm, das eine schematische Konfiguration einer fahrzeugverbauten Einrichtung gemäß dem ersten Ausführungsbeispiel darstellt;
  • 3 ein Blockdiagramm, das eine Funktion des Computers gemäß dem Ausführungsbeispiel darstellt;
  • 4 ein Blockdiagramm, das einen Verarbeitungsbetriebsablauf des Computers gemäß dem Ausführungsbeispiel darstellt;
  • 5 ein Bilddiagramm, das eine schematische Konfiguration eines Parallelisierungsprogramms gemäß dem Ausführungsbeispiel darstellt; und
  • 6 ein Diagramm, das einen Verarbeitungsbetriebsablauf einer fahrzeugverbauten Einrichtung gemäß Vergleichsbeispielen darstellt.
  • Nachstehend werden Ausführungsbeispiele unter Bezugnahme auf die Zeichnungen beschrieben. Das vorliegende Ausführungsbeispiel ist auf ein Beispiel des Erzeugens eines parallelen Programms 21a1 gerichtet, das für einen Mehrkern-Mikrocomputer 21 mit einem ersten Kern 21c und einem zweiten Kern 21d aus mehreren Prozessen MT1 bis MT7 in einem Einzelprogramm für einen Einkern-Mikrocomputer mit einem Kern parallelisiert wurde. Die Prozesse können auch als ”Verarbeitungsblöcke” oder ”Makroaufgaben” bezeichnet werden. Der Mehrkern-Mikrocomputer kann auch als ein ”Mehrkernprozessor” bezeichnet werden.
  • Ein Hintergrund zum Erzeugen des parallelen Programms 21a1 ist, dass der Mehrkernprozessor 21 aus Gesichtspunkten eines Anstiegs des Wärmewerts oder eines Anstiegs des Leistungsverbrauchs des Mikrocomputers, oder eines Begrenzungsproblems einer Taktfrequenz, zu einem generellen Trend wird. Der Mehrkernprozessor 21 muss sogar auf das Gebiet der fahrzeugverbauten Einrichtungen angewandt werden. Das parallele Programm 21a1 muss den Prozess mit hoher Zuverlässigkeit und hoher Geschwindigkeit ausführbar machen, während eine Entwicklungsdauer und Entwicklungskosten von Software gedrückt werden müssen.
  • Bei dem Erzeugen des parallelen Programms 21a1 wird eine Abhängigkeit der mehreren Verarbeitungen bzw. Prozesse MT1 bis MT7 in dem Einzelprogramm analysiert, und werden die mehreren Prozesse MT1 bis MT7 für die verschiedenen Kerne 21c und 21d des Mehrkernprozessors 21 allokiert bzw. zugeteilt. In dieser Hinsicht sei auf die Patentliteratur 1 verwiesen.
  • Das vorliegende Ausführungsbeispiel beinhaltet zum Beispiel einen ersten Prozess MT1 bis einen siebten Prozess MT7 in dem Einzelprogramm. Die mehreren Prozesse MT1 bis MT7 beinhalten einen Prozess mit einer Abhängigkeit voneinander. In dem vorliegenden Ausführungsbeispiel wird angenommen, dass der erste Prozess MT1 und der vierte Prozess MT4 die Abhängigkeit aufweisen.
  • Die Abhängigkeit ist zum Beispiel eine Beziehung, in welcher ein Prozess auf Daten Bezug nimmt, die von einem anderen Prozess aktualisiert werden, der früher als der eine Prozess ausgeführt worden ist. Spezieller beinhalten die mehreren Prozesse einen vorangehenden Prozess bzw. Vorprozess, der in der Ausführungsreihenfolge in dem Einzelprogramm früher auszuführen ist, und einen folgenden Prozess bzw. Folgeprozess, der auszuführen ist, nachdem der vorangehende Prozess ausgeführt worden ist. Der folgende Prozess ist ein Prozess, der durch den vorangehenden Prozess beeinflusst wird und der Daten verwendet, deren Inhalte wahrscheinlich in dem vorangehenden Prozess zu aktualisieren sind.
  • Nachstehend wird eine Konfiguration des Computers 10 unter Bezugnahme auf 1 beschrieben. Der Computer 10 entspricht einem Parallelisierungswerkzeug, das ein Parallelisierungsverfahren ausführt, und erzeugt das parallele Programm 21a1. Der Computer 10 beinhaltet eine Anzeige 11, eine HDD bzw. ein Festplattenlaufwerk 12, eine CPU bzw. zentrale Verarbeitungseinheit 13, ein ROM bzw. einen Festspeicher 14, ein RAM bzw. einen Direktzugriffsspeicher 15, eine Eingabeeinheit 16 und eine Leseeinheit 17. Der Computer 10 kann in einem Speichermedium 18 gespeicherte Speicherinhalte lesen. Ein automatischer Parallelisierungskompilierer 1 ist in dem Speichermedium 18 gespeichert. Die HDD ist eine Abkürzung für ein Festplattenlaufwerk. Die CPU ist eine Abkürzung für eine zentrale Verarbeitungseinheit. Das ROM ist eine Abkürzung für einen Nurlesespeicher bzw. Festspeicher. Das RAM ist eine Abkürzung für einen Speicher mit wahlfreiem Zugriff bzw. Direktzugriffsspeicher. Für die Konfigurationen des Computers 10 und das Speichermedium 18 sei auf einen Personal Computer 100 und ein Speichermedium 180, die in der Patentliteratur 1 offenbart sind, verwiesen.
  • Der automatische Parallelisierungskompilierer 1 beinhaltet Prozeduren zum Erzeugen des parallelen Programms 21a1. Daher entspricht der automatische Parallelisierungskompilierer 1 einem Parallelisierungsverfahren. Spezieller ist der automatische Parallelisierungskompilierer 1 ein das Parallelisierungsverfahren beinhaltendes Programm. Der automatische Parallelisierungskompilierer 1 beinhaltet eine Erfassungsprozedur, eine Berechnungsprozedur und eine Hinzufügeprozedur zusätzlich zu den in der Patenliteratur 1 offenbarten Prozeduren. Die Erfassungsprozedur, die Berechnungsprozedur und die Hinzufügeprozedur werden später beschrieben.
  • Als Nächstes wird eine Konfiguration der fahrzeugverbauten Einrichtung 20 beschrieben. Wie in 2 dargestellt, beinhaltet die fahrzeugverbaute Einrichtung 20 den Mehrkernprozessor 21, eine Kommunikationseinheit 22, eine Sensoreinheit 23 und einen Eingabe/Ausgabe-Port bzw. -Anschluss 24. Der Mehrkernprozessor 21 beinhaltet ein ROM 21a, ein RAM 21b, den ersten Kern 21c, den zweiten Kern 21d und einen Bus 21e. Die fahrzeugverbaute Einrichtung 20 kann auf eine Motorsteuereinrichtung oder eine Hybridsteuereinrichtung bzw. hybride Steuereinrichtung, welche in einem Automobil verbaut ist, angewandt sein. Wenn die fahrzeugverbaute Einrichtung 20 auf zum Beispiel die Motorsteuereinrichtung angewandt ist, kann das parallele Programm 21a1 als ein Automobilsteuerungsprogramm wie beispielsweise eine Motorsteuerung betrachtet werden. Das parallele Programm 21a1 ist jedoch nicht auf das Vorstehende beschränkt. Die Kerne können auch als ”Prozessorelemente” bezeichnet werden.
  • Was das RAM 21b, die Kommunikationseinheit 22, die Sensoreinheit 23 und den Eingabe/Ausgabe-Port 24 anbelangt, wird auf ein RAM 420, eine Kommunikationseinheit 430, eine Sensoreinheit 450 und einen Eingabe/Ausgabe-Port 460 verwiesen, die in der Patentliteratur 1 offenbart sind.
  • Das mithilfe des automatischen Parallelisierungskompilierers 1 erzeugte parallele Programm 21a1 ist in dem ROM 21a abgelegt. Der erste Kern 21c und der zweite Kern 21d führen das parallele Programm 21a1 aus, um eine Motorsteuerung durchzuführen. Genauer führen der erste Kern 21c und der zweite Kern 21d das parallele Programm 21a1 aus, um eine Motorsteuerung durchzuführen, während sie eine temporäre Speicherfunktion des RAMs 21b mit einem Zugriff auf den Bus 21e verwenden. Daher wird der Bus 21e von dem ersten Kern 21c und dem zweiten Kern 21d gemeinsam genutzt bzw. geteilt. Ebenso wird das RAM 21b von dem ersten Kern 21c und dem zweiten Kern 21d gemeinsam genutzt bzw. geteilt. Der erste Kern 21c und der zweite Kern 21d arbeiten in Synchronisation mit einem Taktsignal, das von einer nicht gezeigten Oszillationsschaltung ausgegeben wird.
  • In dem parallelen Programm 21a1 können zwei Prozess- bzw. Verarbeitungs-MTs mit einer Abhängigkeit voneinander in den verschiedenen Kernen 21c und 21d angeordnet sein. Daher beinhaltet dann, wenn die zwei Verarbeitungs-MTs mit einer Abhängigkeit voneinander in den verschiedenen Kernen 21c und 21d angeordnet sind, das parallele Programm 21a1 einen Synchronisationsprozess zum Ausführen der später in der Verarbeitungsreihenfolge liegenden Verarbeitungs-MT nach dem Warten auf die Beendigung der Ausführung der für einen anderen Kern allokierten, früher in der Verarbeitungsreihenfolge liegenden Verarbeitungs-MT. Spezieller warten in dem Synchronisationsprozess bei Beendigung der für einen Subjektkern allokierten Verarbeitungs-MT der Subjektkern auf die Beendigung der Ausführung der Verarbeitungs-MT, die für den anderen Kern allokiert ist, und führt dann eine nächste Verarbeitungs-MT aus, die für den Subjektkern allokiert ist. In diesem Beispiel hat die Verarbeitungs-MT, die für den anderen Kern allokiert ist, eine Abhängigkeit von der nächsten Verarbeitungs-MT, die für den Subjektkern allokiert ist, und liegt in der Ausführungsreihenfolge früher als die nächste Verarbeitungs-MT, die für den Subjektkern allokiert ist.
  • Aus diesem Grund greift, um den Synchronisationsprozess durchzuführen, jeder des ersten Kerns 21c und des zweiten Kerns 21d bei Beendigung der Ausführung der Verarbeitungs-MT, die für ihn allokiert ist, auf den Bus 21e zu und speichert Information (nachstehend als ”Beendigungsinformation” bezeichnet), die ein Warten auf Synchronisation anzeigt, in das RAM 21b. Der Subjektkern, der darauf wartet, dass ein anderer Kern die Ausführung der Verarbeitungs-MT mit der Abhängigkeit beendet, greift periodisch auf den Bus 21e zu, ohne die Verarbeitungs-MT auszuführen, und überprüft bzw. bestätigt, ob die Beendigungsinformation in dem RAM 21b gespeichert ist oder nicht. Spezieller greift der Subjektkern, der darauf wartet, dass ein anderer Kern die Ausführung der Verarbeitungs-MT mit der Abhängigkeit beendet, über den Bus 21e auf das RAM 21b zu, und überprüft bzw. bestätigt, ob die Beendigungsinformation gespeichert worden ist oder nicht. Wie vorstehend beschrieben wurde, führen der erste Kern 21c und der zweite Kern 21d die Verarbeitungs-MT aus, während sie sich in einer Warteschlange befinden, in anderen Worten, während sie synchronisieren. Daher kann der Synchronisationsprozess auch als eine ”Warteschlangenverarbeitung” bzw. ein ”Warteschlangenprozess” bezeichnet werden.
  • Das parallele Programm 21a1 beinhaltet einen bekannten ”nop”-Befehl. Daher geraten dann, wenn der erste Kern 21c und der zweite Kern 21d den ”nop”-Befehl ausführen, der erste Kern 21c und der zweite Kern 21d in einen Nichtbetriebszustand, in dem sie nichts tun, und greifen der erste Kern 21c und der zweite Kern 21d nicht auf den Bus 21e zu. Daher entspricht der ”nop”-Befehl einem Unterdrückungsprozess zum Unterdrücken eines Zugriffs auf den Bus 21e durch den Subjektkern, während der Subjektkern wartet. Der ”nop”-Befehl entspricht auch einem ”Verbietungsbefehl”.
  • Das parallele Programm 21a1 beinhaltet ein Programm, das von dem ersten Kern 21c auszuführen ist, und ein Programm, das von dem zweiten Kern 21d auszuführen ist. Der Zugriff auf den Bus 21e kann als ein ”RAM-Zugriff” bezeichnet werden.
  • Nachfolgend wird der Verarbeitungsbetriebsablauf für den Computer 10 zum Ausführen des automatischen Parallelisierungskompilierer 1 unter Bezugnahme auf die 3 und 4 beschrieben. Der Computer 10 führt den automatischen Parallelisierungskompilierer 1 aus, um das parallele Programm 21a1 zu generieren.
  • 3 ist eine Zeichnung zum Darstellen der Verarbeitung des Computers 10 durch funktionelle Blöcke. Der Computer 10 beinhaltet eine Abhängigkeitsanalyseeinheit 10a, eine Verarbeitungszeitanalyseeinheit 10b, eine Kernallokierungseinheit 10c, eine Planungseinheit 10d, eine Berechnungseinheit 10e und eine Codeerzeugungseinheit 10f.
  • Die Abhängigkeitsanalyseeinheit 10a analysiert die Abhängigkeit des Einzelprogramms und extrahiert parallelisierbare Verarbeitungs-MTs. Die Verarbeitungszeitanalyseeinheit 10b analysiert Verarbeitungszeiten der jeweiligen Prozesse MT1 bis MT7, das heißt, einer Zeit, die für die Ausführung jeder Verarbeitung von MT1 bis MT7 erforderlich ist. Die Kernallokierungseinheit 10c allokiert (spezieller, zuteilt) die Prozesse bzw. Verarbeitungs-MTs MT1 bis MT7 für die Kerne 21c und 21d. Die Planungseinheit 10d plant die jeweiligen Verarbeitungs-MTs MT1 bis MT7 ein und ordnet dadurch die jeweiligen Verarbeitungs-MTs MT1 bis MT7 neu an. Bis zu dieser Phase sei auf die Patentliteratur 1 verwiesen. In diesem Beispiel werden zu dieser Zeit die jeweiligen Verarbeitungs-MTs MT1 bis MT7 für die Kerne 21c und 21d allokiert, wie in 5 dargestellt. In dieser Weise allokiert der Computer 10 die mehreren Verarbeitungs-MTs MT1 bis MT7 für den ersten Kern 21c und den zweiten Kern 21d auf der Grundlage der Abhängigkeit und den Verarbeitungszeiten in derselben Weise wie derjenigen, die in der Patentliteratur 1 offenbart ist. Die jeweiligen Verarbeitungs-MTs MT1 bis MT7 zu dieser Zeit können als das parallele Programm 21a1 verwendet werden. In den jeweiligen Verarbeitungs-MTs MT1 bis MT7 ist jedoch die Wartezeit wahrscheinlich lang, wie vorstehend beschrieben wurde.
  • In Anbetracht dessen beinhaltet der Computer 10 die Berechnungseinheit 10e und die Codeerzeugungseinheit 10f. Die Berechnungseinheit 10e und die Codeerzeugungseinheit 10f führen einen Prozess aus, der in einem Ablaufdiagramm von 4 dargestellt ist. Die mehreren Verarbeitungs-MTs MT1 bis MT7, die für den ersten Kern 21c und den zweiten Kern 21d zu dieser Zeit allokiert sind, werden als ein ”Präprogramm” bzw. ”Vorprogramm” bezeichnet. Die Verarbeitungs-MTs, die von dem ersten Kern 21c und dem zweiten Kern 21d als erste auszuführen sind, werden miteinander synchronisiert und zu einer Startzeit t0 begonnen. In den jeweiligen Verarbeitungs-MTs MT1 bis MT7 sind Startzeiten und Endezeiten als vorhergesagte Werte bekannt. Die Startzeiten und die Endezeiten werden durch Zeiten relativ zu der Startzeit t0 repräsentiert.
  • Zunächst wird in Schritt S10 ermittelt, ob ein Warteschlangenprozess, in welchen kein ”nop”-Befehl eingefügt ist, vorhanden ist oder nicht. Es wird angemerkt, dass die Planungseinheit 10d des Computers 10 Schritt S10 durchführt, bevor die Berechnungseinheit 10e und die Codeerzeugungseinheit 10f die bzw. ihre Verarbeitung durchführen.
  • Aus dem Vorprogramm erfasst der Computer 10 eine Stelle, in bzw. an welcher der Warteschlangenprozess durchgeführt wird (Erfassungseinheit). Der Computer 10 ermittelt, ob es den Warteschlangenprozess gibt, in welchen kein ”nop”-Befehl eingefügt ist, oder nicht. Falls der Computer 10 ermittelt, dass es den Warteschlangenprozess gibt, in welchen kein ”nop”-Befehl eingefügt ist, schreitet der Computer 10 zu Schritt S11 fort, und falls der Computer 10 ermittelt, dass der Warteschlangenprozess, in welchen kein ”nop”-Befehl eingefügt ist, fehlt, beendet der Computer 10 das Ablaufdiagramm von 4. Spezieller ermittelt der Computer 10 für jeden der Warteschlangenprozesse, die aus dem Vorprozess extrahiert wurden, ob der ”nop”-Befehl eingefügt ist oder nicht.
  • In einem Beispiel von 5 erfasst der Computer 10 einen ersten Warteschlangenprozess W1 und einen zweiten Warteschlangenprozess W2. Der Computer 10 ermittelt, ob es den Warteschlangenprozess gibt, in welchen kein ”nop”-Befehl eingefügt ist, oder nicht, aus dem ersten Warteschlangenprozess W1 und dem zweiten Warteschlangenprozess W2.
  • Wie vorstehend beschrieben wurde, kann das Vorprogramm als das parallele Programm 21a1 verwendet werden. Daher wird in Schritt S10 die Stelle, in bzw. an welcher der Warteschlangenprozess durchgeführt wird, aus dem parallelen Programm 21a1 erfasst, und wird ermittelt, ob es den Warteschlangenprozess gibt, in welchen kein ”nop”-Befehl eingefügt ist, oder nicht. Der Computer 10 führt den automatischen Parallelisierungskompilierer 1 aus, um Schritt S10 auszuführen. Daher entspricht Schritt S10 einer Erfassungsprozedur.
  • In Schritt S11 beschafft die Berechnungseinheit 10e eine Endezeit tb des Prozesses genau vor der Warteschlangenbildung. In Schritt S12 beschafft die Berechnungseinheit 10e eine Startzeit ta des Prozesses genau nach der Warteschlangenbildung. Dies ist so, weil das Berechnen einer Wartezeit seit die Ausführung des Prozesses, der für den Subjektkern allokiert ist, beendet ist, bis zu der Ausführung des Prozesses, der für den anderen Kern allokiert ist, in dem erfassten Warteschlangenprozess abgeschlossen ist. Die Berechnungseinheit 10e beschafft die Endezeit tb der Verarbeitungs-MT, die genau vor dem Warteschlangenprozess, in welchen kein ”nop”-Befehl eingefügt ist, auszuführen ist, und die Startzeit ta der Verarbeitungs-MT, die genau nach diesem Warteschlangenprozess auszuführen ist. Die Berechnungseinheit 10e subtrahiert die Startzeit ta von der Endezeit tb, um die Wartezeit zu berechnen.
  • Zum Beispiel dann, wenn der erste Warteschlangenprozess W1 angesprochen wird, beschafft die Berechnungseinheit 10e eine Zeit te2 als die Endezeit tb und eine Zeit ts4 als die Startzeit ta, und führt eine Berechnung von (Zeit te2 – Zeit ts4) aus, um die Wartezeit zu berechnen. Darüber hinaus beschafft dann, wenn der zweite Warteschlangenprozess W2 angesprochen wird, die Berechnungseinheit 10e eine Zeit te4 als die Endezeit tb und eine Zeit ts7 als die Startzeit ta, und führt eine Berechnung von (Zeit te4 – Zeit ts7) aus, um die Wartezeit zu berechnen.
  • Der Computer 10 führt den automatischen Parallelisierungskompilierer 1 aus, um die Schritte S11 und S12 auszuführen. Daher entsprechen die Schritte S11 und S12 einer Berechnungsprozedur.
  • In Schritt S13 wird die Anzahl von ”nop”, welche durch ((tb – ta) × Verhältnis) berechnet wird, in den Warteschlangenprozess hinzugefügt. Die Codeerzeugungseinheit 10f beschafft Verhältnisinformation 2, die in dem ROM 14 gespeichert ist. Das in Schritt S13 verwendete Verhältnis ist in der Verhältnisinformation 2 gespeichert. Genauer ist eine Konstante oder eine Tabelle (lineare Interpolation) zum Ermitteln des Verhältnisses aus einer Beziehung zwischen der Wartezeit und dem ”nop”-Befehl in der Verhältnisinformation 2 enthalten. Die Konstante und die Tabelle dienen dazu, die Anzahl von ”nop”-Befehlen entsprechend zu der Wartezeit zu ermitteln, um zu verhindern, dass die Wartezeit länger als notwendig wird.
  • Der Subjektkern, der darauf wartet, dass ein anderer Kern die Ausführung der Verarbeitungs-MT beendet, greift nicht auf den Bus 21e zu, während er den ”nop”-Befehl ausführt. Der Zugriff auf den Bus 21e durch den Subjektkern wird durch die Subjektkernausführungszeit des ”nop”-Befehls unterdrückt. Daher entspricht eine Zeit, während welcher der Subjektkern die ”nop”-Befehle ausführt, der Unterdrückungszeit, während welcher der Zugriff auf den Bus 21e durch den Subjektkern, der auf die Beendigung der Ausführung der Verarbeitungs-MT eines anderen Kerns wartet, unterdrückt wird. Spezieller entspricht die Anzahl von ”nop”-Befehlen einer Unterdrückungszeit.
  • Wie vorstehend beschrieben wurde, wird der Unterdrückungsprozess zum Unterdrücken des Zugriffs des Subjektkerns auf den Bus 21e während des Wartens des Subjektkerns in den Warteschlangenprozess des parallelen Programms 21a1 durch die Codeerzeugungseinheit 10f eingefügt bzw. hinzugefügt. Die Codeerzeugungseinheit 10f ermittelt die Anzahl von ”nop”-Befehlen in Übereinstimmung mit der berechneten Wartezeit und fügt die ”nop”-Befehle zum Verbieten, dass der Subjektkern während der Unterdrückungszeit auf den Bus 21e zugreift, hinzu. Genauer fügt die Codeerzeugungseinheit 10f die ermittelte Anzahl von ”nop”-Befehlen in den Warteschlangenprozess in dem Präprogramm ein. Zum Beispiel dann, wenn die Codeerzeugungseinheit 10f die ermittelte Anzahl von ”nop”-Befehlen hinzufügt, fügt die Codeerzeugungseinheit 10f die ”nop”-Befehle so hinzu, dass die ”nop”-Befehle in gleichen Zeitintervallen ausgeführt werden. Es kann gesagt werden, dass die Codeerzeugungseinheit 10f die Anzahl von ”nop”-Befehlen, die zu dem parallelen Programm 21a1 hinzuzufügen sind, in Übereinstimmung mit der berechneten Wartezeit justiert bzw. einstellt.
  • Daher entspricht die Codeerzeugungseinheit 10f einer Hinzufügeeinheit. Der Computer 10 führt den automatischen Parallelisierungskompilierer 1 aus, um Schritt S13 auszuführen. Aus diesem Grund entspricht Schritt S13 einer Hinzufügeprozedur.
  • Wie vorstehend beschrieben wurde, erzeugt, wie in 5 dargestellt, der Computer 10 das parallele Programm 21a1. Die ”nop”-Befehle der Anzahl entsprechend einer Länge der Wartezeit (te2–ts4) werden zu dem ersten Warteschlangenprozess W1 hinzugefügt. Ebenso werden die ”nop”-Befehle der Anzahl entsprechend einer Länge der Wartezeit (te4–ts7) zu dem zweiten Warteschlangenprozess W2 hinzugefügt. Der erste Warteschlangenprozess W1 und der zweite Warteschlangenprozess W2 unterscheiden sich in der Länge der Wartezeit voneinander. Daher unterscheidet sich die ”nop”-Anzahl in dem ersten Warteschlangenprozess W1 von der ”nop”-Anzahl in dem zweiten Warteschlangenprozess W2.
  • Darüber hinaus kann gesagt werden, dass der Computer 10 eine Quelle bzw. einen Quellcode des parallelen Programms 21a1 generiert. Die Quelle des parallelen Programms 21a1 wird durch Kompilieren und Einschreiben in das ROM 21a der fahrzeugverbauten Einrichtung 20 gespeichert.
  • Die erste Verarbeitungs-MT1 hat eine Startzeit ts1 und eine Endezeit te1. Die zweite Verarbeitungszeit MT2 hat eine Startzeit ts2 und eine Endezeit te1. Die Startzeit ts1 und die Startzeit ts2 sind dieselbe Zeit und gleich der Verarbeitungsstartzeit t0. Eine Startzeit ts3 der dritten Verarbeitungs-MT MT3 ist gleich der Endezeit te1 und der Startzeit ts4. Wie vorstehend beschrieben wurde, wird der Ausführungsbeginn der dritten Verarbeitungs-MT MT3 mit dem Ausführungsbeginn der vierten Verarbeitungs-MT MT4 synchronisiert. Weil die fünfte Verarbeitungs-MT MT5 bei der Beendigung der Ausführung der dritten Verarbeitungs-MT MT3 ausgeführt wird, ist die Endezeit te3 der dritten Verarbeitungs-MT MT3 gleich einer Startzeit ts5 der fünften Verarbeitungs-MT MT5.
  • Ebenso ist eine Startzeit ts6 der sechsten Verarbeitungs-MT MT6 gleich einer Endezeit te5 der fünften Verarbeitungs-MT MT5 und einer Startzeit ts7 der siebten Verarbeitungs-MT MT7. Wie vorstehend beschrieben wurde, wird der Ausführungsbeginn der sechsten Verarbeitungs-MT MT6 mit dem Ausführungsbeginn der siebten Verarbeitungs-MT MT7 synchronisiert.
  • Ein Symbol te4 ist eine Endezeit der vierten Verarbeitungs-MT MT4. Ein Symbol te6 ist eine Endezeit der sechsten Verarbeitungs-MT MT6. Ein Symbol te7 ist eine Endezeit der siebten Verarbeitungs-MT MT7.
  • Nun werden die Vorteile des Computers 10 unter Bezugnahme auf Vergleichsbeispiele von 6 beschrieben. In den Vergleichsbeispielen sind, wie in einem oberen Teil dargestellt, die erste Verarbeitungs-MT MT1 und die dritte Verarbeitungs-MT MT3 mit der Abhängigkeit voneinander für den ersten Kern allokiert, und ist die zweite Verarbeitungs-MT MT2 mit der Abhängigkeit von dem dritten Prozess für den zweiten Kern allokiert. Die Mitte von 6 stellt ein erstes Beispiel der Vergleichsbeispiele dar, in welchen die Anzahl von ”nop”-Befehlen während des Warteschlangenprozesses relativ klein ist, wie in der Mitte von 6 dargestellt. Der untere Teil von 6 stellt ein zweites Beispiel der Vergleichsbeispiele dar, in welchen die Anzahl von ”nop”-Befehlen während des Warteschlangenprozesses relativ groß ist. Ein Mehrkernprozessor in dem ersten Vergleichsbeispiel führt die erste Verarbeitungs-MT MT1 bis dritte Verarbeitungs-MT MT3 aus, wie in der mittleren Phase von 6 dargestellt. Ein Mehrkernprozessor in dem zweiten Vergleichsbeispiel führt die erste Verarbeitungs-MT MT1 bis dritte Verarbeitungs-MT MT3 wie in einer unteren Phase von 6 dargestellt aus.
  • In dem Mehrkernprozessor des ersten Vergleichsbeispiels ist, weil die Anzahl von ”nop”-Befehlen klein ist, wahrscheinlich, dass ein RAM-Zugriff für den ersten Kern zum Ausführen der ersten Verarbeitungs-MT MT1 gegen einen RAM-Zugriff für den zweiten Kern zum Überprüfen der Beendigungsinformation konkurriert. Daher ist in dem Mehrkernprozessor des ersten Vergleichsbeispiels 1, verglichen mit dem Fall, in welchem die Anzahl von ”nop”-Befehlen groß ist, eine Konkurrenzhäufigkeit erhöht, und ist wahrscheinlich, dass die Wartezeit länger wird.
  • Andererseits ist in dem Mehrkernprozessor des zweiten Vergleichsbeispiels, weil die Anzahl von ”nop”-Befehlen groß ist, unwahrscheinlich, dass der RAM-Zugriff für den ersten Kern zum Ausführen der ersten Verarbeitungs-MT MT1 gegen den RAM-Zugriff für den zweiten Kern zum Überprüfen der Beendigungsinformation konkurriert. In dem Mehrkernprozessor des zweiten Vergleichsbeispiels ist jedoch, weil die Anzahl von ”nop”-Befehlen groß ist, wahrscheinlich, dass die Wartezeit länger wird. In dem Mehrkernprozessor des zweiten Vergleichsbeispiels ist es wahrscheinlich, dass sich der Ausführungsbeginn der dritten Verarbeitungs-MT MT3, welche ein nächster Prozess der ersten Verarbeitungs-MT MT1 ist, verzögert.
  • Weil die ”nop”-Befehle zu dem parallelen Programm 21a1 wie in den Vergleichsbeispielen hinzugefügt werden, kann der Computer 10 das parallele Programm 21a1 bereitstellen, das die Konkurrenz des Zugriffs auf den Bus 21e zwischen dem Subjektkern und einem anderen Kern während der Ausführung der Verarbeitungs-MT durch den anderen Kern reduzieren kann. Der Computer 10 kann das parallele Programm 21a1 bereitstellen, das zum Beispiel den zweiten Kern 21d, der den ersten Warteschlangenprozess W1 durchführt, darin beschränken kann, während der Ausführung der ersten Verarbeitungs-MT MT1 durch den ersten Kern 21c auf den Bus zuzugreifen. Daher kann der Computer 10 das parallele Programm 21a1 bereitstellen, das die Konkurrenz des Zugriffs auf den Bus 21e zwischen dem ersten Kern 21c und dem zweiten Kern 21d reduzieren kann.
  • Ferner erfasst der Computer 10 die Stelle des Warteschlangenprozesses aus dem parallelen Programm 21a1 und berechnet die Wartezeit in dem Warteschlangenprozess. Weil der Computer 10 die Anzahl von ”nop”-Befehlen in Übereinstimmung mit der Wartezeit ermittelt, kann der Computer 10 das parallele Programm 21a1 bereitstellen, das die Wartezeit darin beschränken kann, länger zu werden. Ebenso kann der automatische Parallelisierungskompilierer 1 das parallele Programm 21a1 bereitstellen, das die Wartezeit darin beschränken kann, länger zu werden.
  • Wie vorstehend beschrieben wurde, wird in dem Parallelisieren der Prozesse MT1 bis MT7 Information über die Verarbeitungszeiten der jeweiligen Prozesse MT1 bis MT7 analysiert und geplant. Aus diesem Grund ist bekannt, welche Verarbeitungs-MT während des Ausführens des Warteschlangenprozesses von einem anderen Kern ausgeführt wird. Spezieller ist dann, wenn ein Kern darauf wartet, dass ein anderer Kern die Ausführung der Verarbeitungs-MT beendet, die von dem anderen Kern ausgeführte Verarbeitungs-MT bekannt. Daher kann das Parallelisierungsverfahren berechnen, wie lange der Subjektkern wartet. Durch Verwenden eines Ergebnisses dieser Berechnung stellt der Computer 10 automatisch die Anzahl von ”nop”-Befehlen ein. Daher kann der Computer 10 leicht das vorstehend beschriebene parallele Programm 21a1 bereitstellen. Der automatische Parallelisierungskompilierer 1 kann dieselben Vorteile wie diejenigen des Computers 10 erhalten.
  • Der Mehrkernprozessor 21 führt das wie vorstehend beschrieben erzeugte parallele Programm 21a1 aus. Spezieller führt jeder des ersten Kerns 21c und des zweiten Kerns 21d die für ihn allokierte Verarbeitungs-MT, den Warteschlangenprozess und den Unterdrückungsprozess aus. Aus diesem Grund kann jeder der Kerne 21c und 21d die Konkurrenz des Zugriffs auf den Bus 21e reduzieren, und die Wartezeit darin beschränken, länger zu werden.
  • Obwohl das Ausführungsbeispiel vorstehend dargestellt worden ist, ist das Ausführungsbeispiel illustrativ und nicht beschränkend. Innerhalb des Rahmens und Schutzumfangs der Erfindung gibt es verschiedenartige Modifikationen, von welchen Beispiele nachstehend beschrieben werden.
  • Der automatische Parallelisierungskompilierer 1 kann einen Unterdrückungsprozess des Verbietens, dass der Subjektkern auf den Bus 21e zugreift, bis eine voreingestellte Bedingung erfüllt ist, seit die Ausführung der für den Subjektkern allokierten Verarbeitungs-MT abgeschlossen ist (Hinzufügeprozedur). Der automatische Parallelisierungskompilierer 1 kann einen Unterdrückungsprozess des Verbietens, dass der Subjektfahrzeug für nur eine Unterdrückungszeit auf den Bus 21e zugreift, durch Verbieten, dass der Subjektkern auf den Bus 21e zugreift, bis die voreingestellte Bedingung erfüllt ist, hinzufügen.
  • Ebenso kann der Computer 10 einen Unterdrückungsprozess des Verbietens, dass der Subjektkern auf den Bus 21e zugreift, bis eine vorbestimmte Bedingung erfüllt ist, seit die Ausführung der Verarbeitungs-MT, die für den Subjektkern allokiert ist, abgeschlossen worden ist, hinzufügen (Hinzufügeeinheit). Der Computer 10 kann einen Unterdrückungsprozess des Verbietens des Zugriffs auf den Bus 21e durch den Subjektkern nur für die Unterdrückungszeit durch Verbieten, dass der Subjektkern auf den Bus 21e zugreift, bis die voreingestellte Bedingung erfüllt ist, hinzufügen.
  • Die fahrzeugverbaute Einrichtung 20 kann das parallele Programm 21a1 beinhalten, zu dem der vorstehende Unterdrückungsprozess hinzugefügt ist.
  • Der automatische Parallelisierungskompilierer 1 kann einen Unterdrückungsprozess des Verbietens, dass der Subjektkern auf den Bus 21e zugreift, bis eine Zeit, die seit der Beendigung der Ausführung der Verarbeitungs-MT, die für den Subjektkern allokiert ist, verstrichen ist, eine voreingestellte Zeit erreicht, die als eine Bedingung voreingestellt ist, hinzufügen (Hinzufügeprozedur). Der automatische Parallelisierungskompilierer 1 kann einen Unterdrückungsprozess des Verbietens, dass der Subjektkern auf den Bus 21e zugreift, durch Verbieten, dass der Subjektkern auf den Bus zugreift, bis die verstrichene Zeit die voreingestellte Zeit erreicht, hinzufügen.
  • Ebenso kann der Computer 10 einen Unterdrückungsprozess des Verbietens, dass der Subjektkern auf den Bus 21e zugreift, bis eine Zeit, die seit der Beendigung der Ausführung der Verarbeitungs-MT, die für den Subjektkern allokiert ist, verstrichen ist, eine vorbestimmte Zeit erreicht, die als eine Bedingung voreingestellt ist (Hinzufügeeinheit). Der Computer 10 kann einen Unterdrückungsprozess des Verbietens, dass der Subjektkern auf den Bus 21e zugreift, bis die verstrichene Zeit die voreingestellte Zeit erreicht, hinzufügen, um den Zugriff auf den Bus 21e durch den Subjektkern zu verbieten.
  • Die fahrzeugverbaute Einrichtung 20 kann das parallele Programm 21a1 beinhalten, dem der Unterdrückungsprozess wie vorstehend beschrieben hinzugefügt ist.
  • Der automatische Parallelisierungskompilierer 1 kann einen Unterdrückungsprozess des Verbietens, dass der Subjektkern auf den Bus 21e zugreift, bis Betriebstakte des Subjektkerns nach der Beendigung der Ausführung der für den Subjektkern allokierten Verarbeitungs-MT eine voreingestellte Anzahl erreichen, die als eine Bedingung voreingestellt ist, hinzufügen (Hinzufügeprozedur). Wie vorstehend beschrieben wurde, kann der automatische Parallelisierungskompilierer 1 einen Unterdrückungsprozess des Verbietens, dass der Subjektkern auf den Bus 21e zugreift, durch Verbieten, dass der Subjektkern auf den Bus 21e zugreift, bis die Betriebstakte die voreingestellte Anzahl erreichen, hinzufügen. Der Betriebstakt ist ein Zeitpunkt für einen Betrieb in Synchronisation mit dem Taktsignal.
  • Ebenso kann der Computer 10 einen Unterdrückungsprozess des Verbietens, dass der Subjektkern auf den Bus 21e zugreift, bis die Betriebstakte des Subjektkerns seit der Beendigung der Ausführung der für den Subjektkern allokierten Verarbeitungs-MT die voreingestellte Anzahl erreichen, die als die Bedingung voreingestellt ist, hinzufügen (Hinzufügeeinheit). Der Computer 10 kann den Unterdrückungsprozess des Verbietens des Zugriffs des Subjektkerns auf den Bus 21e durch Verbieten, dass der Subjektkern auf den Bus 21e zugreift, bis die Betriebstakte die voreingestellte Anzahl erreichen, hinzufügen.
  • Die fahrzeugverbaute Einrichtung 20 kann das parallele Programm 21a1 beinhalten, dem der Unterdrückungsprozess wie vorstehend beschrieben hinzugefügt 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 2015-1807 A [0003]
    • US 2014372995 A1 [0003]
    • DE 102014211047 A1 [0003]

Claims (15)

  1. Parallelisierungsverfahren zum Erzeugen, aus einer Vielzahl von Prozessen (MT1 bis MT7) in einem Einzelprogramm für einen Einkern-Mikrocomputer mit einem Kern, ein paralleles Programm (21a1), das für einen Mehrkern-Mikrocomputer (21) mit einer Vielzahl von Kernen (21c, 21d) einschließlich eines Subjektkerns und eines anderen Kerns, welche auf einen gemeinsamen Bus (21e) zugreifen, parallelisiert ist, und einen Synchronisationsprozess beinhaltet des, bei Beendigung der Ausführung eines für den Subjektkern allokierten Prozesses, Wartens auf die Beendigung der Ausführung eines Prozesses, der für einen anderen Kern allokiert ist, und dann Ausführens eines nächsten Prozesses, der für den Subjektkern allokiert ist, wobei das Parallelisierungsverfahren beinhaltet: eine Erfassungsprozedur (S10) des Erfassens einer Stelle in dem parallelen Programm, an der der Synchronisationsprozess durchgeführt wird; eine Berechnungsprozedur (S11, S12) des Berechnens einer Wartezeit in dem erfassten Synchronisationsprozess, wobei die Wartezeit eine Zeit seit der Beendigung der Ausführung des für den Subjektkern allokierten Prozesses bis zu der Ausführung des für den anderen Kern allokierten Prozesses ist; und eine Hinzufügeprozedur (S13) des Hinzufügens eines Unterdrückungsprozesses zu dem parallelen Programm zum Unterdrücken des Zugriffs des Subjektkerns auf den Bus während des Wartens des Subjektkerns, wobei die Hinzufügeprozedur in Übereinstimmung mit der berechneten Wartezeit eine Unterdrückungszeit ermittelt, welche eine Ausführungszeit des Unterdrückungsprozesses ist; und die Hinzufügeprozedur den Unterdrückungsprozess des Verbietens, dass der Subjektkern während der Unterdrückungszeit auf den Bus zugreift, hinzufügt.
  2. Parallelisierungsverfahren nach Anspruch 1, bei dem die Hinzufügeprozedur ein Hinzufügen eines Verbietungsbefehls zum Verbieten, dass der Subjektkern auf den Bus zugreift, als den Unterdrückungsprozess beinhaltet, wobei die Anzahl von hinzugefügten Verbietungsbefehlen der Unterdrückungszeit entspricht.
  3. Parallelisierungsverfahren nach Anspruch 1, bei dem der Unterdrückungsprozess, der in der Hinzufügeprozedur hinzugefügt wurde, zum Verbieten, dass der Subjektkern während der Unterdrückungszeit auf den Bus zugreift, ein Verbieten beinhaltet, dass der Subjektkern seit der Beendigung der Ausführung des für den Subjektkern allokierten Prozesses bis zur Erfüllung einer voreingestellten Bedingung auf den Bus zugreift.
  4. Parallelisierungsverfahren nach Anspruch 3, bei dem der Unterdrückungsprozess, der in der Hinzufügeprozedur hinzugefügt wurde, zum Verbieten, dass der Subjektkern während der Unterdrückungszeit auf den Bus zugreift, ein Verbieten beinhaltet, dass der Subjektkern auf den Bus zugreift, bis eine Zeit, die seit der Beendigung der Ausführung des für den Subjektkern allokierten Prozesses verstrichen ist, eine voreingestellte Zeit als die Bedingung erreicht.
  5. Parallelisierungsverfahren nach Anspruch 3, bei dem der Unterdrückungsprozess, der in der Hinzufügeprozedur hinzugefügt wurde, zum Verbieten, dass der Subjektkern während der Unterdrückungszeit auf den Bus zugreift, ein Verbieten beinhaltet, dass der Subjektkern auf den Bus zugreift, bis Betriebstakte des Subjektkerns seit der Beendigung der Ausführung des für den Subjektkern allokierten Prozesses eine voreingestellte Anzahl als die Bedingung erreichen.
  6. Parallelisierungswerkzeug mit einem Computer zum Erzeugen aus einer Vielzahl von Prozessen (MT1 bis MT7) in einem Einzelprogramm für einen Einkern-Mikrocomputer mit einem Kern, ein paralleles Programm (21a1), das für einen Mehrkern-Mikrocomputer (21) mit einer Vielzahl von Kernen (21c, 21d) einschließlich eines Subjektkerns und eines anderen Kerns, welche auf einen gemeinsamen Bus (21e) zugreifen, parallelisiert ist, und einen Synchronisationsprozess beinhaltet des, bei Beendigung der Ausführung eines für den Subjektkern allokierten Prozesses, Wartens auf die Beendigung der Ausführung eines Prozesses, der für einen anderen Kern allokiert ist, und dann Ausführens eines nächsten Prozesses, der für den Subjektkern allokiert ist, wobei das Parallelisierungswerkzeug beinhaltet: eine Erfassungseinheit (S10), die eine Stelle in dem parallelen Programm erfasst, an der der Synchronisationsprozess durchgeführt wird; eine Berechnungseinheit (S11, S12), die eine Wartezeit in dem erfassten Synchronisationsprozess berechnet, wobei die Wartezeit eine Zeit seit der Beendigung der Ausführung des für den Subjektkern allokierten Prozesses bis zu der Ausführung des für den anderen Kern allokierten Prozesses ist; und eine Hinzufügeeinheit (S13), die einen Unterdrückungsprozess zu dem parallelen Programm hinzufügt zum Unterdrücken des Zugriffs des Subjektkerns auf den Bus während des Wartens des Subjektkerns, wobei die Hinzufügeeinheit in Übereinstimmung mit der berechneten Wartezeit eine Unterdrückungszeit ermittelt, welche eine Ausführungszeit des Unterdrückungsprozesses ist; und die Hinzufügeeinheit den Unterdrückungsprozess des Verbietens, dass der Subjektkern während der Unterdrückungszeit auf den Bus zugreift, hinzufügt.
  7. Parallelisierungswerkzeug nach Anspruch 6, bei dem die Hinzufügeeinheit einen Verbietungsbefehl zum Verbieten, dass der Subjektkern auf den Bus zugreift, als den Unterdrückungsprozess hinzufügt, und die Anzahl von hinzugefügten Verbietungsbefehlen der Unterdrückungszeit entspricht.
  8. Parallelisierungswerkzeug nach Anspruch 6, bei dem der Unterdrückungsprozess, der von der Hinzufügeeinheit hinzugefügt wurde, zum Verbieten, dass der Subjektkern während der Unterdrückungszeit auf den Bus zugreift, ein Verbieten beinhaltet, dass der Subjektkern seit der Beendigung der Ausführung des für den Subjektkern allokierten Prozesses bis zur Erfüllung einer voreingestellten Bedingung auf den Bus zugreift.
  9. Parallelisierungswerkzeug nach Anspruch 8, bei dem der Unterdrückungsprozess, der von der Hinzufügeeinheit hinzugefügt wurde, zum Verbieten, dass der Subjektkern während der Unterdrückungszeit auf den Bus zugreift, ein Verbieten beinhaltet, dass der Subjektkern auf den Bus zugreift, bis eine Zeit, die seit der Beendigung der Ausführung des für den Subjektkern allokierten Prozesses verstrichen ist, eine voreingestellte Zeit als die Bedingung erreicht.
  10. Parallelisierungswerkzeug nach Anspruch 8, bei dem der Unterdrückungsprozess, der von der Hinzufügeeinheit hinzugefügt wurde, zum Verbieten, dass der Subjektkern während der Unterdrückungszeit auf den Bus zugreift, ein Verbieten beinhaltet, dass der Subjektkern auf den Bus zugreift, bis Betriebstakte des Subjektkerns seit der Beendigung der Ausführung des für den Subjektkern allokierten Prozesses eine voreingestellte Anzahl als die Bedingung erreichen.
  11. Fahrzeugverbaute Einrichtung, beinhaltend: einen Mehrkern-Mikrocomputer (21) mit einer Vielzahl von Kernen (21c, 21d) einschließlich eines ersten Kerns und eines zweiten Kerns, welche auf einen gemeinsamen Bus (21e) zugreifen, und ein paralleles Programm (21a1), das für den Mehrkern-Mikrocomputer aus einer Vielzahl von Prozessen (MT1 bis MT7) in einem Einzelprogramm für einen Einkern-Mikrocomputer mit einem Kern parallelisiert wurde, wobei die Vielzahl von Prozessen für verschiedene Kerne des Mehrkern-Mikrocomputers allokiert ist, wobei das parallele Programm einen Synchronisationsprozess beinhaltet des, bei Beendigung der Ausführung eines für den Subjektkern allokierten Prozesses, Wartens auf die Beendigung der Ausführung eines Prozesses, der für einen anderen Kern allokiert ist, und Ausführens eines nächsten Prozesses, der für den Subjektkern allokiert ist, eine Stelle in dem parallelen Programm, an der der Synchronisationsprozess durchgeführt wird, erfasst wird; eine Wartezeit in dem erfassten Synchronisationsprozess berechnet wird, wobei die Wartezeit eine Zeit seit der Beendigung der Ausführung des für den Subjektkern allokierten Prozesses bis zu der Ausführung des für den anderen Kern allokierten Prozesses ist, ein Unterdrückungsprozess zum Unterdrücken des Zugriffs des Subjektkerns auf den Bus während des Wartens des Subjektkerns zu dem parallelen Programm hinzugefügt ist, wobei eine Unterdrückungszeit, welche eine Ausführungszeit des Unterdrückungsprozesses ist, in Übereinstimmung mit der berechneten Wartezeit ermittelt wird, und die Vielzahl von Kernen die Prozesse, die für die Kerne allokiert sind, den Synchronisationsprozess und den Unterdrückungsprozess ausführen.
  12. Fahrzeugverbaute Einrichtung nach Anspruch 11, bei der als der Unterdrückungsprozess dem parallelen Programm ein Verbietungsbefehl hinzugefügt ist zum Verbieten, dass der Subjektkern auf den Bus zugreift, und die Anzahl von hinzugefügten Verbietungsbefehlen der Unterdrückungszeit entspricht.
  13. Fahrzeugverbaute Einrichtung nach Anspruch 11, bei der dem parallelen Programm der Unterdrückungsprozess hinzugefügt ist des Verbietens, dass der Subjektkern seit der Beendigung der Ausführung des für den Subjektkern allokierten Prozesses bis zur Erfüllung einer voreingestellten Bedingung auf den Bus zugreift, wodurch es dem Subjektkern verboten wird, während der Unterdrückungszeit auf den Bus zuzugreifen.
  14. Fahrzeugverbaute Einrichtung nach Anspruch 13, bei der dem parallelen Programm der Unterdrückungsprozess hinzugefügt ist des Verbietens, dass der Subjektkern auf den Bus zugreift, bis eine Zeit, die seit der Beendigung der Ausführung des Prozesses, der für den Subjektkern allokiert ist, verstrichen ist, eine voreingestellte Zeit als die Bedingung erreicht, wodurch es dem Subjektkern verboten wird, während der Unterdrückungszeit auf den Bus zuzugreifen.
  15. Fahrzeugverbaute Einrichtung nach Anspruch 13, bei der dem parallelen Programm der Unterdrückungsprozess hinzugefügt ist des Verbietens, dass der Subjektkern auf den Bus zugreift, bis Betriebstakte des Subjektkerns seit der Beendigung der Ausführung des Prozesses, der für den Subjektkern allokiert ist, eine vorbestimmte Anzahl als die Bedingung erreichen, wodurch es dem Subjektkern verboten wird, während der Unterdrückungszeit auf den Bus zuzugreifen.
DE102016219721.5A 2015-10-12 2016-10-11 Parallelisierungsverfahren, parallelisierungswerkzeug und fahrzeugverbaute einrichtung Active DE102016219721B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2015-201663 2015-10-12
JP2015201663A JP6617511B2 (ja) 2015-10-12 2015-10-12 並列化方法、並列化ツール、車載装置

Publications (2)

Publication Number Publication Date
DE102016219721A1 true DE102016219721A1 (de) 2017-04-13
DE102016219721B4 DE102016219721B4 (de) 2024-10-02

Family

ID=58405647

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102016219721.5A Active DE102016219721B4 (de) 2015-10-12 2016-10-11 Parallelisierungsverfahren, parallelisierungswerkzeug und fahrzeugverbaute einrichtung

Country Status (2)

Country Link
JP (1) JP6617511B2 (de)
DE (1) DE102016219721B4 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108806235A (zh) * 2017-05-03 2018-11-13 南京交通职业技术学院 按需服务的智能公交调度方法

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

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6819316B2 (en) 2001-04-17 2004-11-16 3M Innovative Properties Company Flexible capacitive touch sensor

Patent Citations (3)

* 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
DE102014211047A1 (de) 2013-06-14 2014-12-18 Denso Corporation Parallelisierungskompilierverfahren, Parallelisierungskompilierer, Parallelisierungskompiliervorrichtung und Bordvorrichtung
JP2015001807A (ja) 2013-06-14 2015-01-05 株式会社デンソー 並列化コンパイル方法、並列化コンパイラ、並列化コンパイル装置、及び、車載装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108806235A (zh) * 2017-05-03 2018-11-13 南京交通职业技术学院 按需服务的智能公交调度方法
CN108806235B (zh) * 2017-05-03 2020-11-06 南京交通职业技术学院 按需服务的智能公交调度方法

Also Published As

Publication number Publication date
DE102016219721B4 (de) 2024-10-02
JP6617511B2 (ja) 2019-12-11
JP2017076156A (ja) 2017-04-20

Similar Documents

Publication Publication Date Title
DE102013214756B4 (de) Verfahren zum verwalten einer task-ausführung in einem mehrkernprozessor
DE102005013913A1 (de) Unterbrechungsanforderungsprogramm und Mikrocomputer
DE102016014152A1 (de) Numerische Steuervorrichtung
DE102016204963A1 (de) Parallelisierungskompilierverfahren, Parallelisierungskompilierer und Fahrzeugvorrichtung
DE102016219403A1 (de) Parallelisierungsverarbeitung, parallelisierungswerkzeug und fahrzeuggebundene vorrichtung
DE102017210126A1 (de) Parallelisierungsverfahren, Parallelisierungswerkzeug und fahrzeuginterne Vorrichtung
DE112019005584T5 (de) Arithmetiksteuervorrichtung
DE112010004037T5 (de) Simulationsverfahren, -system und -programm
DE102015107654A1 (de) Dienst und System zum Unterstützen eines kohärenten Datenzugriffs auf einem Multicore-Controller
DE60125540T2 (de) Verfahren und gerät für einen ablaufsplanungstreiber zum implementieren eines protokolls mittels zeitschätzungen für anwendung mit einem gerät das keine unterbrechungen erzeugt
DE102014103139B4 (de) Parallelisierte Ausführung von Single-Core Steuerungssoftware auf Multi-Core Fahrzeugsteuergeräten
DE102012209789A1 (de) Fahrzeuggebundene elektrische steuervorrichtung
DE102016219721B4 (de) Parallelisierungsverfahren, parallelisierungswerkzeug und fahrzeugverbaute einrichtung
DE102016204970A1 (de) Parallelisierungskompilierverfahren, Parallelisierungskomplierer und Fahrzeugvorrichtung
DE102016204960A1 (de) Parallelisierungskompilierverfahren, Parallelisierungskompilierer und Fahrzeugvorrichtung
DE102015100566A1 (de) Verfahren und leichter Mechanismus für gemischte kritische Anwendungen
DE102016220340A1 (de) Parallelisierungsverfahren, parallelisierungswerkzeug und fahrzeugverbaute einrichtung
CN111752716A (zh) 模型使用方法、数据处理方法及装置
DE102016219449A1 (de) Parallelisierungsverfahren, Parallelisierungswerkzeug und fahrzeugverbaute Einrichtung
DE102009025572A1 (de) Eine Methode zur Entwicklung von garantiert korrekten Echtzeitsystemen
DE102021131057A1 (de) System und Verfahren zur Ausführung einer Aufgabe eines Betriebssystems für ein Fahrzeug
EP3705993B1 (de) System und verfahren zum auffinden und identifizieren von rechenknoten in einem netzwerk
DE102016221570A1 (de) Parallelisierungsverfahren, parallelisierungswerkzeug und fahrzeugverbaute einrichtung
DE102019202228A1 (de) Parallelisierungsverfahren, Parallelisierungswerkzeug, Mehrkernmikrocomputer und fahrzeuginterne Vorrichtung
DE102020205720A1 (de) Computerimplementiertes Verfahren und Vorrichtung zur Planung von Ressourcen

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R084 Declaration of willingness to licence
R018 Grant decision by examination section/examining division