-
TECHNISCHES GEBIET
-
Die vorliegende Erfindung betrifft ein Parallelisierungsverfahren, das ein paralleles Programm für einen Mehrkern-Mikrocomputer aus einem einzelnen Programm für einen Einkern-Mikrocomputer erzeugt, ein Parallelisierungswerkzeug und eine fahrzeugeigene Vorrichtung, in der das parallele Programm, das von dem Parallelisierungsverfahren erzeugt wurde, installiert ist.
-
STAND DER TECHNIK
-
Ein Beispiel eines Parallelisierungsverfahrens, das ein paralleles Programm für einen Mehrkern-Mikrocomputer aus einem einzelnen Programm für einen Einkern-Mikrocomputer erzeugt, ist das Parallelisierungskompilierungsverfahren gemäß der
JP 2015-001807 A (
US 2014/0372995 A1 ).
-
Das Parallelisierungskompilierungsverfahren erzeugt eine Zwischensprache durch lexikalische Analyse und syntaktische Analyse eines Quellcodes eines einzelnen Programms und verwendet diese Zwischensprache, um Abhängigkeiten zwischen mehreren Makroaufgaben (Makro-Tasks) (im Folgenden als Prozesse MT bezeichnet) zu analysieren und optimieren. Das Parallelisierungskompilierungsverfahren erzeugt ein paralleles Programm durch Ablaufplanung auf der Grundlage einer Ausführungszeit eines jeweiligen Prozesses MT und Abhängigkeiten zwischen Prozessen MT.
-
ZUSAMMENFASSUNG
-
Zwei Prozesse MT, die nicht auf dieselben Daten zugreifen, werden derart betrachtet, dass sie keine Abhängigkeit in der Abhängigkeitsanalyse aufweisen. Das heißt, diese beiden Prozesse MT sind parallel ausführbar.
-
Eine Prozedur zum Spezifizieren bzw. Bestimmen der Daten, auf die zugegriffen wird, wenn die Prozesse MT ausgeführt werden, enthält eine Adressspezifizierung unter Verwendung einer Adresse in einem Speicherbereich und eine Symbolspezifizierung unter Verwendung eines Symbolnamens wie beispielsweise eines Variablennamens. Es ist jedoch schwierig, zu bestimmen, ob die Daten, die durch eine Adresse angegeben werden, und die Daten, die durch einen Symbolnamen angegeben werden, dieselben sind. Das heißt, es ist schwierig, zu bestimmen, ob ein Prozess MT, der eine Adressspezifizierung verwendet, und ein anderer Prozess MT, der eine Symbolspezifizierung verwendet, auf dieselben Daten zugreifen. Es ist daher schwierig die Abhängigkeit zwischen dem Prozess MT, der eine Adressspezifizierung verwendet, und dem Prozess MT, der eine Symbolspezifizierung verwendet, in der Abhängigkeitsanalyse zu bestimmen. Es kann daher ein Fehler in der Abhängigkeitsanalyse auftreten.
-
Im Hinblick auf das Obige ist es eine Aufgabe der vorliegenden Erfindung, ein Parallelisierungsverfahren, das ein paralleles Programm erzeugen kann, wobei Fehler in der Abhängigkeitsanalyse verhindert werden, ein Parallelisierungswerkzeug und eine fahrzeugeigene Vorrichtung, die das parallele Programm ausführen kann, zu schaffen.
-
Um die obige Aufgabe zu lösen, wird gemäß einem ersten Beispiel der vorliegenden Erfindung ein Parallelisierungsverfahren zum Erzeugen eines parallelen Programms geschaffen, das für einen Mehrkern-Mikrocomputer, der mehrere Kerne aufweist, aus mehreren Prozessen aus einem einzelnen Programm für einen Einkern-Mikrocomputer, der einen einzelnen Kern aufweist, parallelisiert wird. Das Parallelisierungsverfahren enthält eine Extrahierungsprozedur, eine Zuordnungsprozedur und eine Analyseprozedur. Die Extrahierungsprozedur extrahiert eine Extrahierungsadresse und einen Extrahierungssymbolnamen. Die Extrahierungsadresse ist eine Adresse eines Zugriffsdatenteils. Der Zugriffssymbolname ist ein Symbolname des Zugriffsdatenteils. Der Zugriffsdatenteil ist ein Teil aus mehreren Datenteilen, die in einem Speicherbereich zusammen mit den Prozessen gespeichert sind und auf die zugegriffen wird, wenn ein jeweiliger Prozess ausgeführt wird. Die Zuordnungsprozedur ordnet eine Zuordnungsadresse dem Extrahierungssymbolnamen zu. Die Zuordnungsadresse ist eine Adresse in dem Speicherbereich, der den Zugriffsdatenteil des Extrahierungssymbolnamens speichert. Die Analyseprozedur analysiert eine Abhängigkeit zwischen jeweiligen Prozessen auf der Grundlage von Subjekt-Adressen, die die Extrahierungsadresse und die Zuordnungsadresse sind, um parallelisierbare Prozesse aus den Prozessen zu bestimmen, und bestimmt, dass zwei Prozesse, die auf eine identische Adresse zugreifen, eine Abhängigkeit aufweisen, und bestimmt, dass zwei Prozesse, die nicht auf eine identische Adresse zugreifen, keine Abhängigkeit aufweisen.
-
Das erste Beispiel extrahiert innerhalb von mehreren Datenteilen, auf die zugegriffen wird, wenn ein jeweiliger Prozess ausgeführt wird, eine Adresse des Zugriffsdatenteils in einem Speicherbereich, wenn ein jeweiliger Prozess ausgeführt wird, und einen Symbolnamen des Zugriffsdatenteils, wenn ein jeweiliger Prozess ausgeführt wird. Das erste Beispiel ordnet dem Symbolnamen die Adresse in dem Speicherbereich, die dem Symbolnamen entspricht, zu. Die Adresse in dem Speicherbereich wird somit dem Datenteil zugeordnet, dessen Symbolname spezifiziert und auf den zugegriffen wird, wenn ein jeweiliger Prozess ausgeführt wird.
-
Das erste Beispiel analysiert Abhängigkeiten zwischen den jeweiligen Prozessen auf der Grundlage der Adressen der Datenteile, die in einem jeweiligen Prozess spezifiziert werden, um zu bestimmen, dass zwei Prozesse, die auf dieselben Daten zugreifen, eine Abhängigkeit aufweisen, und dass zwei Prozesse, die nicht auf dieselben Daten zugreifen, keine Abhängigkeit aufweisen. Das erste Beispiel kann somit Abhängigkeiten zwischen jeweiligen Prozessen auf der Grundlage der Adressen analysieren. Das erste Beispiel kann somit ein paralleles Programm erzeugen, wobei Fehler in der Abhängigkeitsanalyse verhindert werden.
-
Gemäß einem zweiten Beispiel der vorliegenden Erfindung wird ein Parallelisierungswerkzeug geschaffen, das einen Computer zum Erzeugen eines parallelen Programms enthält, das für einen Mehrkern-Mikrocomputer, der mehrere Kerne aufweist, aus mehreren Prozesse in einem einzelnen Programm für einen Einkern-Mikrocomputer, der einen einzigen Kern aufweist, parallelisiert wird. Das Parallelisierungswerkzeug enthält einen Symbol- und Adress-Extrahierer, einen Symbolzuordnungsprozessor und einen Abhängigkeitsanalysierer. Der Symbol- und Adress-Extrahierer extrahiert eine Extrahierungsadresse und einen Extrahierungssymbolnamen, wobei die Extrahierungsadresse eine Adresse eines Zugriffsdatenteils ist, wobei der Zugriffssymbolname ein Symbolname des Zugriffsdatenteils ist, wobei der Zugriffsdatenteil ein Teil aus mehreren Datenteilen ist, die in einem Speicherbereich zusammen mit den Prozessen gespeichert sind und auf die zugegriffen wird, wenn ein jeweiliger Prozess ausgeführt wird. Der Symbolzuordnungsprozessor ordnet dem Extrahierungssymbolnamen eine Zuordnungsadresse zu, wobei die Zuordnungsadresse eine Adresse in dem Speicherbereich ist, der den Zugriffsdatenteil des Extrahierungssymbolnamens speichert. Der Abhängigkeitsanalysierer analysiert eine Abhängigkeit zwischen jeweiligen Prozessen auf der Grundlage von Subjekt-Adressen, die die Extrahierungsadresse und die Zuordnungsadresse sind, um parallelisierbare Prozesse aus den Prozessen zu bestimmen, und bestimmt, dass zwei Prozesse, die auf eine identische Adresse zugreifen, eine Abhängigkeit aufweisen, und bestimmt, dass zwei Prozesse, die nicht auf eine identische Adresse zugreifen, keine Abhängigkeit aufweisen.
-
Ähnlich wie das obige erste Beispiel kann das zweite Beispiel ein paralleles Programm erzeugen, während Fehler in der Abhängigkeitsanalyse verhindert werden.
-
Außerdem wird gemäß einem dritten Beispiel der vorliegenden Erfindung eine fahrzeugeigene Vorrichtung geschaffen, die enthält: einen Mehrkern-Mikrocomputer, der mehrere Kerne aufweist, und ein paralleles Programm, das aus mehreren Prozesse in einem einzelnen Programm für einen Einkern-Mikrocomputer, der einen einzigen Kern aufweist, für den Mehrkern-Mikrocomputer parallelisiert wird. Das parallele Programm wird erzeugt durch: Extrahieren einer Extrahierungsadresse und eines Extrahierungssymbolnamens, wobei die Extrahierungsadresse eine Adresse eines Zugriffsdatenteils ist, wobei der Zugriffssymbolname ein Symbolname des Zugriffsdatenteils ist, wobei der Zugriffsdatenteil ein Datenteil aus mehreren Datenteilen ist, die in einem Speicherbereich zusammen mit den Prozessen gespeichert sind, und auf die zugegriffen wird, wenn ein jeweiliger Prozess ausgeführt wird; Zuordnen einer Zuordnungsadresse zu den extrahierten Symbolnamen, wobei die Zuordnungsadresse eine Adresse in dem Speicherbereich ist, der den Zugriffsdatenteil des Extrahierungssymbolnamens speichert; und Analysieren einer Abhängigkeit zwischen jeweiligen Prozessen auf der Grundlage von Subjekt-Adressen, die die Extrahierungsadresse und die Zuordnungsadresse sind, um parallelisierbare Prozesse aus mehreren Prozessen zu bestimmen, und Bestimmen, dass zwei Prozesse, die auf eine identische Adresse zugreifen, eine Abhängigkeit aufweisen, und zu bestimmen, dass zwei Prozesse, die nicht auf eine identische Adresse zugreifen, keine Abhängigkeit aufweisen. Hier ordnet das parallele Programm die Prozesse den jeweiligen Kernen zu; und ein Subjekt-Kern, der einer aus den Kernen des Mehrkern-Mikrocomputers ist, führt einen beliebigen Prozess aus, der dem Subjekt-Kern selbst zugeordnet ist.
-
Ähnlich wie die ersten und zweiten Beispiele kann das dritte Beispiel ein paralleles Programm erzeugen, während Fehler in der Abhängigkeitsanalyse verhindert werden.
-
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
Die obige und weitere Aufgaben, Merkmale und Vorteile der vorliegenden Erfindung werden anhand der folgenden detaillierten Beschreibung mit Bezug auf die zugehörigen Zeichnungen deutlich. Es zeigen:
-
1 ein Blockdiagramm, das eine schematische Konfiguration eines Computers gemäß einer Ausführungsform darstellt;
-
2 ein Blockdiagramm, das eine schematische Konfiguration einer fahrzeugeigenen Vorrichtung gemäß der Ausführungsform darstellt;
-
3 ein Blockdiagramm, das Funktionen des Computers gemäß der Ausführungsform darstellt;
-
4 ein Flussdiagramm, das eine Verarbeitung in dem Computer gemäß der Ausführungsform darstellt;
-
5 ein Diagramm, das eine Beziehung zwischen Speicherinhalten und Adressen in einem Speicherraum gemäß der Ausführungsform darstellt;
-
6 ein Diagramm, das eine Spezifizierung von Daten eines jeweiligen Prozesses gemäß der Ausführungsform darstellt;
-
7 ein Diagramm, das ein einzelnes Programm gemäß der Ausführungsform darstellt;
-
8 ein Diagramm, das ein paralleles Programm gemäß der Ausführungsform darstellt; und
-
9 ein Diagramm, das eine Spezifizierung von Daten eines jeweiligen Prozesses gemäß einem Vergleichsbeispiel darstellt.
-
DETAILLIERTE BESCHREIBUNG
-
(Ausführungsform)
-
Im Folgenden wird eine Ausführungsform der vorliegenden Erfindung mit Bezug auf die Zeichnungen erläutert. Die vorliegende Ausführungsform verwendet ein Beispiel zum Erzeugen eines parallelen Programms 21a1 aus mehreren Prozessen MT0 bis MT11 in einem einzelnen Programm für einen Einkern-Mikrocomputer, der einen einzelnen Kern aufweist. Das parallele Programm 21a1 wird für einen Mehrkern-Prozessor 21 parallelisiert, der einen ersten Kern 21c und einen zweiten Kern 21d aufweist. Die Prozesse können auch als Prozessblock und Makro-Aufgaben bzw. Makro-Tasks bezeichnet werden. Der Prozessor kann auch als Mikrocomputer bezeichnet werden. Daher kann der Mehrkern-Prozessor auch als Mehrkern-Mikrocomputer bezeichnet werden.
-
Das parallele Programm 21a1 wird für den Mehrkern-Prozessor 21 erzeugt, der aufgrund verschiedener Nachteile von Prozessen, beispielsweise erhöhte Wärmeemission, erhöhter Energieverbrauch, Begrenzung der Taktfrequenz, populär wird. Der Mehrkern-Prozessor 21 muss für fahrzeugeigene Vorrichtungen verwendbar sein. Das parallele Programm 21a1 muss zuverlässig und mit hoher Geschwindigkeit ausführbar sein, während die Entwicklungszeit und die Kosten für die Software verringert werden.
-
Wenn das parallele Programm 21a1 erzeugt wird, werden die Abhängigkeiten zwischen mehreren Prozessen MT0 bis MT11 in einem einzelnen Programm analysiert, und die Prozesse MT0 bis MT11 werden unterschiedlichen Kernen 21c und 21d des Mehrkern-Prozessors 21 zugewiesen. Das ”Zuweisen” kann auch als ”Anordnen”, ”Zuordnen” und ”Zuteilen” bezeichnet werden. Die Prozesse MT0 bis MT11 werden dem ersten Kern 21c und zweiten Kern 21d zugewiesen, während die Abhängigkeiten zwischen den Prozessen MT0 bis MT11 aufrechterhalten werden. Für die Zuweisung wird Bezug auf die Patentliteratur 1 gemacht. Die vorliegende Ausführungsform verwendet ein einzelnes Programm, das beispielsweise in der Sprache C geschrieben ist. Die vorliegende Erfindung ist nicht auf ein einzelnes Programm begrenzt, das in der Sprache C geschrieben ist. Das einzelne Programm kann in einer Programmierungssprache geschrieben werden, die sich von C unterscheidet.
-
Wie es in 7 gezeigt ist, verwendet die vorliegende Ausführungsform ein einzelnes Programm, das beispielsweise die ersten bis zwölften Prozesse MT0 bis MT11 verwendet. Wie es in 8 gezeigt ist, weist die vorliegende Ausführungsform die ersten bis zwölften Prozesse MT0 bis MT11 den ersten und zweiten Kernen 21c 21d zu.
-
Die Prozesse MT0 bis MT11 enthalten Prozesse MT, die Abhängigkeiten aufweisen. 7 stellt die Abhängigkeiten der Prozesse mittels Pfeilen dar. In der vorliegenden Ausführungsform weisen der erste Prozess MT0 und der vierte Prozess MT3 eine Abhängigkeit auf.
-
Die Abhängigkeit ist eine Beziehung, bei der ein bestimmter Prozess Bezug auf Daten nimmt, die von einem Prozess aktualisiert werden, der vor dem bestimmten Prozess ausgeführt wird. Das heißt, die Prozesse beinhalten einen vorhergehenden Prozess, der mit einem vorhergehenden Zeitrang ausgeführt wird, und einen späteren Prozess, der nach der Ausführung des vorhergehenden Prozesses in einem einzelnen Programm ausgeführt wird. Der spätere Prozess wird durch den vorhergehenden Prozess dadurch beeinflusst, dass er die Daten, deren Inhalt von dem vorhergehenden Prozess aktualisiert werden könnten, verwendet. Insbesondere wenn ein vorhergehender Prozess und ein späterer Prozess nur jeweils auf Daten Bezug nehmen (referenzieren), ändern sich deren Verarbeitungsergebnisse unabhängig von der Verarbeitungsreihenfolge der beiden Prozesse nicht. In diesem Fall weisen die beiden Prozesse keine Abhängigkeit auf. Die Abhängigkeit kann auch als Beziehung bezeichnet werden.
-
Eine Konfiguration eines Computers 10 wird anhand der 1 erläutert. Der Computer 10 entspricht einem Parallelisierungswerkzeug, das ein Parallelisierungsverfahren ausführt, um ein paralleles Programm 21a1 zu erzeugen. Der Computer 10 enthält eine Anzeige 11, ein HDD 12, eine CPU 13, einen ROM 14, einen RAM 15, eine Eingabevorrichtung 16 und einen Leseabschnitt 17. Das HDD ist die Abkürzung für ein Festplattenlaufwerk. Die CPU ist die Abkürzung für eine zentrale Verarbeitungseinheit. Der ROM ist die Abkürzung für einen Nur-Lese-Speicher. Der RAM ist die Abkürzung für einen Speicher mit wahlfreiem Zugriff.
-
Der Computer 10 kann Inhalte, die in einem Speichermedium 18 gespeichert sind, auslesen. Das Speichermedium 18 speichert einen automatischen Parallelisierungscompiler 1. Der automatische Parallelisierungscompiler 1 enthält eine Prozedur zum Erzeugen eines parallelen Programms 21a1. Der automatische Parallelisierungscompiler 1 entspricht daher einem Parallelisierungsverfahren. Das heißt, der automatische Parallelisierungscompiler 1 ist ein Programm, das das Parallelisierungsverfahren enthält. Der Computer 10 führt den automatischen Parallelisierungscompiler 1 aus, um eine paralleles Programm 21a1 zu erzeugen.
-
Hinsichtlich der Konfigurationen des Computers 10 und des Speichermediums 18 wird Bezug auf einen Computer 10 und ein Speichermedium 118 in der Patentliteratur 1 genommen, deren Offenbarung hiermit durch Bezugnahme darauf enthalten ist. Der automatische Parallelisierungscompiler 1 enthält zusätzlich zu den Elementen in der Patentliteratur 1 eine Extrahierungsprozedur und eine Zuordnungsprozedur. Die Extrahierungsprozedur und die Zuordnungsprozedur werden später erläutert. Der automatische Parallelisierungscompiler 1 unterscheidet sich von demjenigen in der Patentliteratur 1 hinsichtlich der Inhalte der Abhängigkeitsanalyse.
-
Der Computer 10 enthält einen Lexikalanalyseabschnitt 10a, einen Zuordnungsabschnitt 10b und einen Abhängigkeitsanalyseabschnitt 10c als Funktionsblöcke, wie es in 3 gezeigt ist. Der Computer 10 kann Mikrocomputerregisterinformationen 41 und erste Speicherabbildungsinformationen 42 erlangen. Der Computer 10 erzeugt das parallele Programm 21a1, das ein Quellcode ist, der in der Sprache C geschrieben ist, aus einem einzelnen Programm, das ein Quellcode ist, der in der Sprache C geschrieben ist. Die Verarbeitung des Computers 10 wird später genauer erläutert. Der Computer 10 enthält einen bekannten Schätzabschnitt, einen Kernzuweisungsabschnitt und einen Ablaufplanungsabschnitt (nicht gezeigt). Der Lexikalanalyseabschnitt 10a ist bekannt und wird nicht genauer erläutert.
-
Man beachte, dass Informationen als zählbar ebenso wie als nicht zählbar verwendet werden können. Das heißt, Informationen können äquivalent zu einem Informationsteil sein; Informationen können äquivalent zu Informationsteilen sein. Außerdem können ”Daten” in der Einzahl oder in der Mehrzahl gemeint sein. Um deutlich anzugeben, ob die Daten in der Einzahl oder in der Mehrzahl gemeint sind, kann in der vorliegenden Anmeldung der Begriff „Datenteil” verwendet werden. Mit anderen Worten, eine einzelne Date kann als (einzelner) Datenteil ausgedrückt werden, wohingegen mehrere Daten als (mehrere) Datenteile ausgedrückt werden können.
-
Die Mikrocomputerregisterinformationen 41 sind Informationen über ein Register 21e. Das Register 21e, das später erläutert wird, enthält ein Eingangs-Port-Register und ein Ausgangs-Port-Register. Das heißt, das Register 21e definiert das Eingangs-Port-Register und das Ausgangs-Port-Register. Die Mikrocomputerregisterinformationen 41 enthalten Adressen des Eingangs-Port-Registers und des Ausgangs-Port-Registers in dem Register 21e. Diese Adressen können hier auch als Adressen in einem Speicherraum bezeichnet werden, die später beschrieben werden. Die vorliegende Ausführungsform verwendet als Symbolnamen die Definitionen des Registers 21e wie beispielsweise des Eingangs-Port-Registers und des Ausgangs-Port-Registers. Die Mikrocomputerregisterinformationen 41 können somit Zuordnungsinformationen zum Zuordnen von Symbolnamen und Adressen in dem Speicherraum sein. Die Mikrocomputerregisterinformationen 41 werden in dem Zuordnungsabschnitt 10b verwendet.
-
Die ersten Speicherabbildungsinformationen 42 sind ein Ergebnis der Kompilierung des einzelnen Programms mittels eines zweiten Compilers 32 und einer Speicherabbildung. Der zweite Compiler 32 enthält einen Lexikalanalyseabschnitt, einen Syntaktikbedeutungsanalyseabschnitt und einen Assemblerverwendungsabschnitt. Der zweite Compiler 32 kompiliert ein einzelnes Programm, das in der Sprache C geschrieben ist, in binäre Daten 50 unter Verwendung einer Assembler-Sprache, um die ersten Speicherabbildungsinformationen 42 zu erzeugen.
-
Die ersten Speicherabbildungsinformationen 42 sind das Ergebnis einer zeitweiligen Speicherabbildung des Quellcodes des einzelnen Programms und enthalten Speicherabbildungsinformationen über Variablen. Die ersten Speicherabbildungsinformationen 42 enthalten somit Zuordnungen zwischen Variablen und Adressen des Bereiches, in dem die Variablen in dem RAM 21b definiert sind.
-
Die zweiten Speicherabbildungsinformationen 43, die sich von den ersten Speicherabbildungsinformationen 42 unterscheiden, sind das Ergebnis einer Speicherabbildung des Quellcodes des parallelen Programms 21a1 und enthalten Speicherabbildungsinformationen über Variablen. Die zweiten Speicherabbildungsinformationen 43 können auf dieselbe Weise wie die ersten Speicherabbildungsinformationen 42 verwendet werden.
-
Variablennamen sind in einem Teil des Speicherraums (RAM 21b), der später erläutert wird, definiert. Die vorliegende Ausführungsform verwendet definierte Variablennamen als Symbolnamen. Somit ordnen die ersten Speicherabbildungsinformationen 42 den Symbolnamen Adressen in dem Speicherraum zu. Die ersten Speicherabbildungsinformationen 42 werden in dem Zuordnungsabschnitt 10b verwendet.
-
Der erste Compiler 31 enthält einen Lexikalanalyseabschnitt, einen Syntaktikbedeutungsanalyseabschnitt und einen Assemblererweiterungsabschnitt. Die beiden Compiler sind dieselben mit der Ausnahme, dass der erste Compiler 31 einen Quellcode nach der Parallelisierung kompiliert und der zweite Compiler 32 einen Quellcode vor der Parallelisierung kompiliert. Der erste Compiler 31 kompiliert das parallele Programm 21a1, das in C geschrieben ist, in Assembler-Sprache und dann in binäre Daten. Das heißt, das parallele Programm 21a1, das in C geschrieben ist, wird von dem ersten Compiler 31 in das parallele Programm 21a1 umgewandelt, das in einer Maschinensprache wie beispielsweise binären Daten geschrieben ist. Das parallele Programm 21a1, das aus binären Daten ausgebildet ist, das heißt in jedem Kern 21c, 21d durchführbar ausgebildet ist, wird in einem ROM 21a gespeichert. Das parallele Programm 21a1 vor der Kompilierung durch den ersten Compiler 31 und das parallele Programm 21a1, das in dem ROM 21a gespeichert ist, sind dasselbe Programm mit der Ausnahme nur der Spezifikationen. Der erste Compiler 31 erzeugt die zweiten Speicherabbildungsinformationen 43.
-
Die Assembler-Sprache enthält Mnemonik (mnemonische Codes) und Operanden. Die mnemonischen Codes sind Anweisungen, die von einem Betriebsabschnitt wie beispielsweise dem ersten Kern 21c und dem zweiten Kern 21d ausgeführt werden. Ein Operand ist das Objekt einer Mnemonik.
-
Mnemonikcodes werden als ADD, LD, ST, AND und NOP beschrieben. ADD ist eine Anweisung zur Addition. LD ist eine Anweisung zum Laden. ST ist eine Anweisung zum Speichern. AND ist eine Anweisung für ein logisches Produkt. NOP ist eine Anweisung für keinen Betrieb. Mnemonische Codes enthalten nicht nur diese Anweisungen für allgemeine Zwecke, sondern auch weniger vielseitige spezielle Anweisungen (im Folgenden als spezielle Anweisungen bezeichnet). Diese speziellen Anweisungen sind für einen bestimmten Prozessor speziell. Spezielle Anweisungen können von einem bestimmten Prozessor ausgeführt werden, können aber von anderen Prozessoren nicht ausgeführt werden.
-
Der zweite Compiler 32 weist eine Konfiguration auf, die derjenigen des Mehrkern-Prozessors 21 entspricht. Das heißt, der zweite Compiler 32 ist für den Mehrkern-Prozessor 21 zweckgebunden. Daher kann der zweite Compiler 32 das einzelne Programm in die Assembler-Sprache umwandeln, die spezielle Anweisungen enthält, die für den Mehrkern-Prozessor 21 speziell sind. Der zweite Compiler 32 entspricht einem Compiler für einen Mikrocomputer.
-
In dem parallelen Programm 21a1 können zwei Prozesse MT, die eine Abhängigkeit aufweisen, separat in den unterschiedlichen Kernen 21c und 21d angeordnet sein. Wenn zwei Prozesse MT, die voneinander abhängig sind, separat in dem Kern 21c und dem Kern 21d angeordnet sind, enthält das parallele Programm 21a1 daher einen Synchronisierungsbetrieb zum Ausführen eines späteren Prozesses MT nach Beendigung eines vorhergehenden Prozesses MT, der einem anderen Kern zugewiesen ist. Das heißt, das parallele Programm 21a1 enthält den Synchronisierungsbetrieb, wenn ein vorheriger Prozess MT, der einem Kern zugewiesen ist, beendet ist, um einen nächsten Prozess MT, der dem einen Kern zugewiesen ist, nach Beendigung eines anderen Prozesses MT, der dem anderen Kern zugewiesen ist, auszuführen. Die andere Prozess MT, der dem anderen Kern zugewiesen ist, weist hier eine Abhängigkeit von dem nächsten Prozess MT auf, der dem einen Kern zugewiesen ist, und wird vor dem nächsten Prozess MT, der dem ersten Kern zugewiesen ist, ausgeführt.
-
Wenn die Prozesse MT, die ihnen selbst zugewiesen sind, beendet werden, greifen der erste Kern 21c und der zweite Kern 21d auf den RAM 21b zu und speichern Informationen über das Warten auf eine Synchronisierung (im Folgenden Beendigungsinformationen) in dem RAM 21b, um einen Synchronisierungsbetrieb auszuführen. Der eine Kern, der auf Beendigung des abhängigen Prozesses MT des anderen Kerns wartet, greift periodisch auf den RAM 21b zu, um zu bestätigen, ob die Beendigungsinformationen in dem RAM 21b gespeichert wurden, ohne den Prozess MT auszuführen. Das heißt, der eine Kern, der auf Beendigung des abhängigen Prozesses MT des anderen Kerns wartet, greift periodisch auf den RAM 21b zu, während er sich nicht in Betrieb befindet, um zu bestätigen, ob die Beendigungsinformationen gespeichert wurden. Somit warten der erste Kern 21c und der zweite Kern 21d aufeinander, das heißt, sind miteinander synchronisiert, um die Prozesse MT auszuführen. Daher kann der Synchronisierungsprozess auch als Warteprozess bezeichnet werden. Außerdem enthält das parallele Programm 21a1 ein Programm, das von dem ersten Kern 21c ausgeführt wird, und ein Programm, das von dem zweiten Kern 21d ausgeführt wird.
-
Im Folgenden wird eine Konfiguration einer fahrzeugeigenen Vorrichtung 20 erläutert. Die fahrzeugeigene Vorrichtung 20 enthält einen Mehrkern-Prozessor 21, einen Kommunikationsabschnitt 22, einen Sensorabschnitt 23 und einen Eingangs-Ausgangs-Port (I/O) 24, wie es in 2 gezeigt ist. Der Mehrkern-Prozessor 21 enthält den ROM 21a, den RAM 21b, den ersten Kern 21c, den zweiten Kern 21d und ein Register 218. Die fahrzeugeigene Vorrichtung 20 ist für eine Verbrennungsmotorsteuerungsvorrichtung und eine Hybridsteuerungsvorrichtung, die in einem Fahrzeug montiert ist, verwendbar. Das Beispiel hier verwendet die fahrzeugeigene Vorrichtung 20, die für eine Verbrennungsmotorsteuerungsvorrichtung verwendet wird. In diesem Fall kann das parallele Programm 21a1 auch als Fahrzeugsteuerungsprogramm zur Verbrennungsmotorsteuerung bezeichnet werden. Das parallele Programm 21a1 ist nicht auf das Fahrzeugsteuerungsprogramm begrenzt. Der Kern kann auch als Prozessorelement bezeichnet werden.
-
Der erste Kern 21c und der zweite Kern 21d führen das parallele Programm 21a1 aus, um die Verbrennungsmotorsteuerung durchzuführen. Insbesondere führen der erste Kern 21c und der zweite Kern 21d die Prozesse MT, die den Kernen von dem parallelen Programm 21a1 zugewiesen sind, aus und führen Warteprozesse aus, um die Verbrennungsmotorsteuerung durchzuführen. Für den RAM 21b, den Kommunikationsabschnitt 22, den Sensorabschnitt 23 und den Eingangs-Ausgangs-Port 24 wird Bezug auf den RAM 420, den Kommunikationsabschnitt 430, den Sensorabschnitt 450 und den Eingangs-Ausgangs-Port 460 in der Patentliteratur 1 genommen.
-
Der ROM 21a, der RAM 21b und das Register 21e bilden einen Speicherraum, der durch eine Folge von Adressen (0x00000000 bis 0xFFFFFFFF) verwaltet wird, wie es in 5 gezeigt ist. Der Speicherraum entspricht einem Speicherbereich. Der ROM 21a enthält einen Code-Flash und einen Daten-Flash, wie es in 5 gezeigt ist. Das parallele Programm 21a1, das von dem Computer 10 auf der Grundlage des automatischen Parallelisierungscompilers 1 erzeugt wird, wird in den ROM 21a geschrieben und darin gespeichert. Insbesondere speichert der Code-Flash Funktionen F1(), F2() und F3() des parallelen Programms 21a1. Die Funktion F1() ist in jedem Prozess MT enthalten. Daher speichert der Code-Flash jeden Prozess MT. Der Daten-Flash speichert Konstanten C1, C2 und C3. Das parallele Programm 21a1, das in dem ROM 21a gespeichert ist, ist in Maschinensprache beispielsweise als binäre Daten wie oben beschrieben geschrieben.
-
Der RAM 21b ist in einen fünften Bereich 65, in dem Variablennamen in der Software definiert sind, und einen sechsten Bereich 66 unterteilt, in dem keine Variablennamen in der Software definiert sind. Die Variablennamen beinhalten hier V1, V2 und V3. Das Beispiel der Daten zum Definieren keines Variablennamens verwendet eine Nicht-Definition 1 und eine Nicht-Definition 2. Die Variablennamen entsprechen den obigen Symbolnamen. Auf die Daten des sechsten Bereiches 66 kann mittels Direktadressierung zugegriffen werden.
-
Das Register 21e enthält ein Eingangs-Port-Register und ein Ausgangs-Port-Register. Das Register 21e speichert Eingangswerte und Ausgangswerte als Daten. Die Registernamen (Quellnamen) des Eingangs-Port-Registers und des Ausgangs-Port-Registers entsprechen den obigen Symbolnamen. Das Register 21e kann auch als vierter Bereich 64 bezeichnet werden. Auf das Register 21e bzw. den vierten Bereich 64 kann mittels Direktadressierung zugegriffen werden. Eine Adresse des Speicherraums, der die jeweiligen Daten speichert, wird jeweiligen Daten des vierten Bereiches 64 und fünften Bereiches 65 zugeordnet (Zuordnungsprozedur, Zuordnungsabschnitt 10b, Zuordnungsprozessor). Eine Adresse des Speicherraums, der jeweilige Daten speichert, wird einem Symbolnamen jeweiliger Daten des vierten Bereiches 64 und fünften Bereiches 65 zugeordnet (Zuordnungsprozedur, Zuordnungsabschnitt 10b, Zuordnungsprozessor). Dem Eingangs-Port-Register ist 0x00000000 zugeordnet. Dem Ausgangs-Port-Register ist 0x00000004 zugeordnet. Dem Variablennamen V1 ist 0x10000000 zugeordnet. Auf jeweilige Daten des sechsten Bereiches 66 kann mittels Direktadressierung zugegriffen werden. Daher kann jeweiligen Daten die Adresse des Speicherraums, der die jeweiligen Daten speichert, zugeordnet werden.
-
Der Speicherraum kann in einen ersten Bereich 61, einen zweiten Bereich 62 und einen dritten Bereich 63 unterteilt sein. Der erste Bereich 61 entspricht dem Register 21e und wird von Software nicht geändert. Der erste Bereich 61 kann auch als für einen Mikrocomputer reservierter Bereich bezeichnet werden. Der zweite Bereich 62 entspricht dem ROM 21a und dem RAM 21b und wird von Software geändert. Der zweite Bereich 62 kann auch als Nutzerbereich bezeichnet werden. Der dritte Bereich 63 entspricht dem RAM 21b und dem Register 218 und wird überschrieben, wenn der Mikrocomputer betrieben wird.
-
Die Anordnungen der Daten und Programme (Programmcode) in dem Speicherraum unterscheiden sich zwischen dem parallelen Programm 21a1 und dem einzelnen Programm.
-
Die Anordnungen der Daten und Programme werden separat erläutert. Zunächst wird die Anordnung der Daten erläutert. Der obige Synchronisierungsprozess wird benötigt, um dieselben Betriebe als einzelnes Programm in mehreren Kernen, die asynchron betrieben werden, zu verarbeiten, wenn es eine Datenabhängigkeit gibt. Das einzelne Programm weist keinen Synchronisierungsprozess auf. Der Synchronisierungsprozess wird dem parallelen Programm 21a1 durch Parallelisierung hinzugefügt. Da Prozesse der Kerne 21c und 21d in dem Synchronisierungsprozess durch Datenlesen und Datenschreiben gemeinsam verwendet werden, werden außerdem zugehörigen Daten definiert. Die Anordnung der Daten unterscheidet sich daher zwischen vor und nach der Parallelisierung. Wenn die Anzahl der Kerne des Mikrocomputers größer wird, wird die Konfiguration des RAM, der jeweilige Daten speichert, gewöhnlich geändert. Wenn die Konfiguration des RAM geändert wird, wird außerdem eine optimale Datenanordnung geändert. Daher unterscheidet sich die Datenanordnung in dem Speicherraum zwischen vor und nach der Parallelisierung aufgrund der optimalen Datenneuanordnung.
-
Im Folgenden wird die Programmanordnung erläutert. Wie oben beschrieben enthält das Programm zusätzlich einen Synchronisierungsprozess und ist somit vor und nach der Parallelisierung unterschiedlich in dem Speicherraum angeordnet. Da die Funktionen, die in dem einzelnen Programm ausgeführt werden, jedem Kern 21c, 21d des Mehrkern-Prozessors 21 zugewiesen sind, ändert sich eine Aufrufreihenfolge und ein Teil des Programmes. Die Anordnung des Programmes in dem Speicherraum unterscheidet sich daher zwischen vor und nach der Parallelisierung.
-
Im Folgenden wird die Verarbeitung, wenn der Computer 10 den automatischen Parallelisierungscompiler 1 ausführt, mit Bezug auf 4 erläutert. Der Computer 10 erzeugt das parallele Programm 21a1 durch Ausführen des automatischen Parallelisierungscompilers 1.
-
Man beachte, dass ein Flussdiagramm oder die Verarbeitung des Flussdiagrammes in der vorliegenden Anmeldung Abschnitte (auch als Schritte bezeichnet) enthält, die jeweils beispielsweise mit S10 bezeichnet werden. Außerdem kann jeder Abschnitt einer Prozedur dem automatischen Parallelisierungscompiler 1 entsprechen. Außerdem kann jeder Abschnitt in mehrere Unterabschnitte unterteilt sein, während mehrere Abschnitte in einen einzelnen Abschnitt kombiniert werden können. Jeder der derart konfigurierten Abschnitte kann auch als Vorrichtung, Modul oder Prozessor bezeichnet werden. Außerdem kann ein derartiger Abschnitt zusammen mit einem strukturellen Modifizierer mit einem anderen Namen bezeichnet werden; beispielsweise kann ein Abhängigkeitsanalyseabschnitt auch als Abhängigkeitsanalysierer bezeichnet werden. Jede oder eine beliebige Kombination von Abschnitten, die oben erläutert sind, kann als (i) ein Softwareabschnitt in Kombination mit einer Hardwareeinheit (beispielsweise Computer) oder (ii) ein Hardwareabschnitt, der eine Funktion einer betreffenden Vorrichtung enthält, aber nicht enthalten muss, erzielt werden; außerdem kann der Hardwareabschnitt innerhalb eines Mikrocomputers ausgebildet sein.
-
In S10 wird bestimmt, ob auf eine Quelle (Ressource), die keinen Symbolnamen aufweist, zuzugreifen ist (das heißt, ob auf eine Quelle ohne Symbolnamen zuzugreifen ist). Der Computer 10 bestimmt, ob auf eine Quelle, die keinen Symbolname aufweist, zuzugreifen ist, anhand dessen, ob die Prozesse MT0 bis MT11 eine Adresse für die Daten in dem vierten Bereich 64 und dem fünften Bereich 65 oder für die Daten in dem sechsten Bereich 66 spezifizieren. Das heißt, der Computer 10 bestimmt, ob die jeweiligen Prozesse MT0 bis MT11 ausgeführt werden, um auf die Daten in dem vierten Bereich 64 und dem fünften Bereich 65 oder auf die Daten in dem sechsten Bereich 66 zuzugreifen.
-
Der Computer 10 bestimmt, dass der Prozess MT, der einen Zugriff auf die Daten in dem vierten Bereich 64 und/oder dem fünften Bereich 65 spezifiziert, auf keine Quelle zugreift, die keinen Symbolnamen aufweist (NEIN), und schreitet zu S11. Der Computer 10 bestimmt, dass der Prozess MT, der einen Zugriff auf die Daten in dem sechsten Bereich 66 spezifiziert, auf eine Quelle zugreift, die keinen Symbolnamen aufweist (JA), und schreitet zu S12. S10 wird in dem Zuordnungsabschnitt 10b ausgeführt.
-
Im Folgenden kann eine Spezifizierung von Daten, auf die unter Verwendung eines Symbolnamens zugegriffen wird, auch nur als Symbolspezifizierung bezeichnet werden, und eine Spezifizierung von Daten, auf die unter Verwendung einer Adresse zugegriffen wird, kann auch nur als Adressspezifizierung bezeichnet werden.
-
In S11 wird ein Symbolname, auf den von einem jeweiligen Prozess MT zuzugreifen ist, extrahiert (Symbolextrahierungsabschnitt, Symbolextrahierer oder Symbolextrahierungsprozedur). Das heißt, der Computer 10 extrahiert den Symbolnamen, auf den von einem jeweiligen Prozess MT aus den Prozessen MT0 bis MT11 zuzugreifen ist, von dem bestimmt wird, dass er eine Symbolspezifizierung verwendet. In S12 wird eine Adresse, auf die von einem jeweiligen Prozess MT zuzugreifen ist, extrahiert (Adressextrahierungsabschnitt, Adressextrahierer oder Adressextrahierungsprozedur). Hier kann die Kombination aus S11 und S12 auch als Symbol- und Adressextrahierungsabschnitt, Symbol- und Adressextrahierer oder Symbol- und Adressextrahierungsprozedur bezeichnet werden. Das heißt, der Computer 10 extrahiert die Adresse, auf die von einem jeweiligen Prozess MT aus den Prozessen MT0 bis MT11 zuzugreifen ist, für den bestimmt wird, dass er eine Adressspezifizierung verwendet. S11 und S12 werden in dem Zuordnungsabschnitt 10b ausgeführt. Somit extrahiert der Computer 10 Adressen und Symbolnamen von mehreren Daten, die in dem Speicherraum zusammen mit den Prozessen MT0 bis MT11 gespeichert sind und auf die zugegriffen wird, wenn die jeweiligen Prozesse MT0 bis MT11 ausgeführt werden.
-
In S13 werden die Symbolnamen durch Adressen auf der Grundlage der extrahierten Symbolnamen (auch als Extrahierungssymbolnamen bezeichnet) und einer Zugriffsliste ersetzt. Das heißt, der Computer 10 ordnet den extrahierten Symbolnamen die Adressen des Speicherraums zu, der die Daten der extrahierten Symbolnamen speichert (Symbolzuordnungsabschnitt, Symbolzuordnungsprozessor oder Symbolzuordnungsprozedur). Der Computer 10 ordnet den Symbolnamen die Adressen unter Verwendung der Mikrocomputerregisterinformationen 41 und der ersten Speicherabbildungsinformationen 42 zu. Den extrahierten Symbolnamen werden dadurch die Adressen in dem Speicherraum zugeordnet.
-
Dieses analysiert Abhängigkeiten in Bezug auf die Prozesse MT, die eine Symbolspezifizierung verwenden, und der Prozesse MT, die eine Adressspezifizierung verwenden. Das heißt, S13 analysiert die Abhängigkeiten zwischen den Prozessen MT, die eine Symbolspezifizierung verwenden, zwischen den Prozessen MT, die eine Adressspezifizierung verwenden, sowie zwischen den Prozessen MT, die eine Symbolspezifizierung verwenden, und den Prozessen MT, die eine Adressspezifizierung verwenden.
-
Daher enthalten die Adressen, die verwendet werden, um die Abhängigkeiten zu analysieren, die Adressen in dem Register 21e des Speicherraums. Die Adressen, die verwendet werden, um die Abhängigkeiten zu analysieren, enthalten die Adressen in dem Ergebnis der Kompilierung des einzelnen Programms und der Adressabbildung der jeweiligen Daten.
-
Somit führt der Computer 10 S11 aus, um die Symbolnamen in dem vierten Bereich 64 und dem fünften Bereich 65 zu extrahieren, wie es in 5 gezeigt ist. Insbesondere extrahiert der Computer 10 das Eingangs-Port-Register, das Ausgangs-Port-Register und die Variablen V1 bis V3 als Symbolnamen.
-
Der Computer 10 führt S13 aus, um dem Eingangs-Port-Register eine Adresse 0x00000000 zuzuordnen, wie es in 5 gezeigt ist. Auf ähnliche Weise ordnet der Computer 10 dem Ausgangs-Port-Register eine Adresse 0x00000004 zu, ordnet der Variable V1 eine Adresse 0x10000000 zu, ordnet der Variable V2 eine Adresse 0x10000004 zu und ordnet der Variable V3 eine Adresse 0x10000008 zu.
-
Der Computer 10 führt S12 aus, um 0x1000000C als eine Adresse der Nicht-Definition 1 in dem sechsten Bereich 66 und 0x10000010 als eine Adresse der Nicht-Definition 2 in dem sechsten Bereich 66 zu extrahieren, wie es in 5 gezeigt ist.
-
S13 wird in dem Zuordnungsabschnitt 10b ausgeführt. Die vorliegende Ausführungsform kann mindestens entweder die Adressen in dem Register 21e oder die Adressen in dem Ergebnis der Adressabbildung enthalten.
-
In S14 wird eine Abhängigkeit zwischen den Prozessen MT, die auf dieselbe Adresse zugreifen, hinzugefügt. Der Computer 10 analysiert Abhängigkeiten zwischen den jeweiligen Prozessen auf der Grundlage von extrahierten Adressen und zugeordneten Adressen, um parallelisierbare Prozesse aus den Prozessen MT zu bestimmen, und bestimmt, dass zwei Prozesse MT, die auf dieselbe Adresse zugreifen (das heißt identische Adresse), eine Abhängigkeit aufweisen. Der Computer 10 bestimmt, dass zwei Prozesse MT, die auf unterschiedliche Adressen zugreifen, keine Abhängigkeit aufweisen (Abhängigkeitsanalysierabschnitt, Abhängigkeitsanalysierer, Abhängigkeitsanalysierprozedur). S14 wird in dem Abhängigkeitsanalysierabschnitt 10c ausgeführt. Der Abhängigkeitsanalysierabschnitt 10c entspricht einem Analysierabschnitt.
-
In S15 wird der Ablauf jedes Prozesses MT auf der Grundlage der erlangten Abhängigkeiten geplant (Aufgabenplanungsabschnitt, Aufgabenplaner). In S16 wird das parallele Programm 21a1 auf der Grundlage des Planungsergebnisses erzeugt (Kernzuweisungsabschnitt, Kernzuweiser).
-
Eine vorteilhafte Wirkung der vorliegenden Erfindung wird mit Bezug auf 6 und einem Vergleichsbeispiel in 9 erläutert. Das Vergleichsbeispiel führt den Prozess, der Symbolnamen und Adressen zuordnet, nicht aus. Der zweite Prozess MT1, der eine Symbolspezifizierung verwendet, und der dritte Prozess MT2, der eine Adressspezifizierung verwendet, werden hier verwendet. Der zweite Prozess MT1 spezifiziert die Variable V1, die ein Symbolname ist, wenn er ausgeführt wird. Der Prozess MT2 spezifiziert eine Adresse 0x000000AA, wenn er ausgeführt wird. Die Daten der Variable V1 weisen die Adresse 0x000000AA auf.
-
In dem Vergleichsbeispiel spezifiziert der zweite Prozess MT1 die Variable V1 und der dritte Prozess MT2 spezifiziert die Adresse 0x000000AA. Es ist daher schwierig zu bestimmen, ob die Variable V1 und 0x000000AA dieselben Daten angeben. In dem Vergleichsbeispiel ist die Abhängigkeit zwischen dem zweiten Prozess MT1 und dem dritten Prozess MT2 nicht analysierbar.
-
Der Computer 10 ordnet der Variable V1 die Adresse 0x000000AA zu, wie es in 6 gezeigt ist. Der Computer 10 kann daher die Adresse der Daten, die von dem zweiten Prozess MT1 spezifiziert werden, erlangen. Der Computer vergleicht die Adresse, die dem Symbolnamen entspricht, der von dem zweiten Prozess MT1 spezifiziert wird, mit der Adresse, die von dem dritten Prozess MT2 spezifiziert wird, um zu bestimmen, ob der zweite Prozess MT1 und der dritte Prozess MT2 dieselben Daten spezifizieren. Somit kann der Computer 10 die Abhängigkeit zwischen dem zweiten Prozess MT1 und dem dritten Prozess MT2 analysieren. In diesem Beispiel bestimmt der Computer 10, dass der zweite Prozess MT1 und der dritte Prozess MT2 die Daten der Adresse 0x000000AA spezifizieren, das heißt den Zugriff auf dieselben Daten spezifizieren, und eine Abhängigkeit aufweisen.
-
Wie es oben beschrieben wurde, extrahiert der Computer 10 innerhalb mehrerer Daten, auf die zugegriffen wird, wenn die jeweiligen Prozesse MT0 bis MT11 ausgeführt werden, eine Adresse der Daten, auf die in dem Speicherraum zugegriffen wird, wenn die jeweiligen Prozesse MT0 bis MT11 ausgeführt werden. Der Computer 10 extrahiert innerhalb mehrerer Daten, auf die zugegriffen wird, wenn ein jeweiliger Prozess MT0 bis MT11 ausgeführt wird, ein Symbol der Daten, auf die in dem Speicherraum zugegriffen wird, wenn der jeweilige Prozess MT0 bis MT11 ausgeführt wird. Das heißt, der Computer 10 extrahiert eine Adresse, wenn ein jeweiliger Prozess MT0 bis MT11 die Adresse spezifiziert, und extrahiert einen Symbolnamen, wenn ein jeweiliger Prozess MT0 bis MT11 den Symbolnamen spezifiziert. Die vorliegende Erfindung ordnet dem extrahierten Symbolnamen die Adresse des Speicherraums, die dem Symbolnamen entspricht, zu. Der Adresse des Speicherraums werden somit die Daten zugeordnet, deren Symbolname für den Zugriff spezifiziert wird, wenn ein jeweiliger Prozess MT0 bis MT11 ausgeführt wird.
-
Der Computer 10 analysiert Abhängigkeiten zwischen den jeweiligen Prozessen MT0 bis MT11 auf der Grundlage der Adressen der Daten, die in einem jeweiligen Prozess spezifiziert werden. Der Computer 10 analysiert, dass (mindestens) zwei Prozesse, die auf dieselben Daten zugreifen, eine Abhängigkeit aufweisen, und dass (mindestens) zwei Prozesse, die nicht auf dieselben Daten zugreifen, keine Abhängigkeit aufweisen. Der Computer 10 kann somit die Abhängigkeiten zwischen den jeweiligen Prozessen MT0 bis MT11 auf der Grundlage der Adressen analysieren. Somit kann der Computer 10 ein paralleles Programm erzeugen, während Fehler in der Abhängigkeitsanalyse verhindert werden.
-
Der Computer 10 kann Abhängigkeiten der Prozesse MT, die eine Adressspezifizierung verwenden, und der Prozesse MT, die eine Symbolspezifizierung verwenden, analysieren. Das heißt, der Computer 10 kann Abhängigkeiten zwischen den Prozessen MT, die eine Adressspezifizierung verwenden, zwischen den Prozessen MT, die eine Symbolspezifizierung verwenden, und zwischen einem Prozess MT, der eine Adressspezifizierung verwendet und einem Prozess MT, der eine Symbolspezifizierung verwendet, analysieren. Somit kann der Computer 10 mehr Abhängigkeiten zwischen den Prozessen MT als nur zwischen den Prozessen, die eine Adressspezifizierung verwenden, oder nur den Prozessen, die eine Symbolspezifizierung verwenden, analysieren. Somit kann der Computer 10 mehr Prozesse MT analysieren, als wenn eine Parallelisierung nur der Prozesse MT, die eine Adressspezifizierung in dem einzelnen Programm verwenden, oder nur der Prozesse MT, die eine Symbolspezifizierung verwenden, erfolgt.
-
Der Computer 10 führt den automatischen Parallelisierungscompiler 1 aus, um das parallele Programm 21a1 zu erzeugen. Der automatische Parallelisierungscompiler 1 kann dieselben Wirkungen wie der obige Computer 10 erzielen.
-
Die fahrzeugeigene Vorrichtung 20 führt das parallele Programm 21a1, das erzeugt wird, während Fehler in der Abhängigkeitsanalyse verhindert werden, aus, um jeden Prozess MT0 bis MT11 optimal auszuführen. Die fahrzeugeigene Vorrichtung 20 führt das parallele Programm 21a1, in dem viele Prozesse MT in dem einzelnen Programm parallelisiert sind, aus, um den ersten Kern 21c und den zweiten Kern 21d effizient zu betreiben.
-
Die vorliegende Ausführungsform verwendet die fahrzeugeigene Vorrichtung 20, die den ersten Kern 21c und den zweiten Kern 21d aufweist. Die vorliegende Erfindung ist jedoch nicht auf die vorliegende Ausführungsform beschränkt, sondern kann sogar für eine fahrzeugeigene Vorrichtung verwendet werden, die drei oder mehr Kerne aufweist. Die vorliegende Erfindung kann daher einen Computer und einen automatischen Parallelisierungscompiler verwenden, um ein paralleles Programm, das für drei oder mehr Kerne verwendbar ist, aus einem einzelnen Programm zu erzeugen. Das parallele Programm 21a1 kann in einer anderen Vorrichtung anstatt in der fahrzeugeigenen Vorrichtung 20 ausgeführt werden.
-
Während die vorliegende Erfindung oben mit Bezug auf ihre Ausführungsformen beschrieben wurde, ist es selbstverständlich, dass die Erfindung nicht auf die bevorzugten Ausführungsformen und deren Aufbauten beschränkt ist. Die vorliegende Erfindung deckt verschiedene Modifikationen und äquivalente Anordnungen ab. Zusätzlich zu den obigen verschiedenen Kombinationen und Konfigurationen, die bevorzugt sind, sind weitere Kombinationen und Konfigurationen einschließlich mehr, weniger oder nur einem einzelnen Element ebenfalls innerhalb des Bereiches der vorliegenden Erfindung möglich.
-
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]