DE102016223939A1 - Parallelisierungsverfahren, Parallelisierungswerkzeug und fahrzeugeigene Vorrichtung - Google Patents

Parallelisierungsverfahren, Parallelisierungswerkzeug und fahrzeugeigene Vorrichtung Download PDF

Info

Publication number
DE102016223939A1
DE102016223939A1 DE102016223939.2A DE102016223939A DE102016223939A1 DE 102016223939 A1 DE102016223939 A1 DE 102016223939A1 DE 102016223939 A DE102016223939 A DE 102016223939A DE 102016223939 A1 DE102016223939 A1 DE 102016223939A1
Authority
DE
Germany
Prior art keywords
address
processes
dependency
extracted
data part
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
DE102016223939.2A
Other languages
English (en)
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 DE102016223939A1 publication Critical patent/DE102016223939A1/de
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • G06F8/456Parallelism detection

Landscapes

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

Abstract

Ein Verfahren dient zum Erzeugen eines parallelen Programms (21a1) für einen Mehrkern-Mikrocomputer (21) aus Prozessen (MT0 bis MT11) in einem einzelnen Programm für einen Einkern-Mikrocomputer. Das Verfahren enthält eine Extrahierungsprozedur (S11, S12), eine Zuordnungsprozedur (S13) und eine Analyseprozedur (S14). Die Extrahierungsprozedur extrahiert eine extrahierte Adresse eines Zugriffsdatenteils, der ein Datenteil unter Datenteilen ist, die in einem Speicherbereich zusammen mit den Prozessen gespeichert sind und auf die zugegriffen wird, wenn ein jeweiliger Prozess ausgeführt wird, und einen extrahierten Symbolnamen des Zugriffsdatenteils. Die Zuordnungsprozedur ordnet eine zugeordnete Adresse in dem Speicherbereich, der den Zugriffsdatenteil des extrahierten Symbolnamens speichert, dem extrahierten Symbolnamen zu. Die Analyseprozedur analysiert eine Abhängigkeit zwischen den Prozessen auf der Grundlage der extrahierten Adresse und der zugeordneten Adresse 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.

Description

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

Claims (9)

  1. Parallelisierungsverfahren zum Erzeugen eines parallelen Programms (21a1), das für einen Mehrkern-Mikrocomputer (21), der mehrere Kerne (21c, 21d) aufweist, aus mehreren Prozessen (MT0 bis MT11) in einem einzelnen Programm für einen Einkern-Mikrocomputer, der einen Kern aufweist, parallelisiert wird, wobei das Parallelisierungsverfahren aufweist: eine Extrahierungsprozedur (S11, S12), die eine extrahierte Adresse und einen extrahierten Symbolnamen extrahiert, wobei die extrahierte Adresse 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; eine Zuordnungsprozedur (S13), die den extrahierten Symbolnamen eine zugeordneten Adresse zuordnet, wobei die zugeordnete Adresse eine Adresse in dem Speicherbereich ist, der den Zugriffsdatenteil des extrahierten Symbolnamens speichert; und eine Analyseprozedur (S14), die eine Abhängigkeit zwischen jeweiligen Prozessen auf der Grundlage von Subjekt-Adressen, die die extrahierten Adressen und die zugeordneten Adressen sind, analysiert, 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.
  2. Parallelisierungsverfahren nach Anspruch 1, wobei die Subjekt-Adressen, für die eine Abhängigkeit analysiert wird, eine Adresse in einem Register des Speicherbereiches enthalten.
  3. Parallelisierungsverfahren nach Anspruch 1 oder 2, wobei die Subjekt-Adressen, auf der Grundlage derer eine Abhängigkeit analysiert wird, eine Adresse in einem Ergebnis einer Kompilierung des einzelnen Programms und einer Adressabbildung eines jeweiligen Datenteils enthalten.
  4. Parallelisierungswerkzeug, das einen Computer enthält, um ein paralleles Programm (21a1) zu erzeugen, das für einen Mehrkern-Mikrocomputer (21), der mehrere Kerne (21c, 21d) aufweist, aus mehreren Prozessen (MT0 bis M'11) in einem einzelnen Programm für einen Einkern-Mikrocomputer, der einen Kern aufweist, parallelisiert wird, wobei das Parallelisierungswerkzeug aufweist: einen Symbol- und Adress-Extrahierer (S11, S12), der eine extrahierte Adresse und einen extrahierten Symbolnamen extrahiert, wobei die extrahierte Adresse 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; einen Symbolzuordnungsprozessor (S13), der einer zugeordneten Adresse den extrahierten Symbolnamen zuordnet, wobei die zugeordnete Adresse eine Adresse in dem Speicherbereich ist, der den Zugriffsdatenteil des extrahierten Symbolnamens speichert; und einen Abhängigkeitsanalysierer (S14), der eine Abhängigkeit zwischen jeweiligen Prozessen auf der Grundlage von Subjekt-Adressen analysiert, die die extrahierte Adresse und die zugeordnete Adresse 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.
  5. Parallelisierungswerkzeug nach Anspruch 4, wobei die Subjekt-Adressen, auf der Grundlage derer eine Abhängigkeit analysiert wird, eine Adresse in einem Register des Speicherbereiches enthalten.
  6. Parallelisierungswerkzeug nach Anspruch 4 oder 5, wobei Subjekt-Adressen, auf der Grundlage derer eine Abhängigkeit analysiert wird, eine Adresse in einem Ergebnis einer Kompilierung des einzelnen Programms und einer Adressabbildung eines jeweiligen Datenteils enthalten.
  7. Fahrzeugeigene Vorrichtung, die einen Mehrkern-Mikrocomputer (21), der mehrere Kerne (21c, 21d) aufweist, und ein paralleles Programm (21a1) enthält, das für den Mehrkern-Mikrocomputer aus mehreren Prozessen (MT0 bis MT11) in einem einzelnen Programm für einen Einkern-Mikrocomputer, der einen Kern aufweist, parallelisiert wird, wobei das parallele Programm erzeugt wird durch: Extrahieren einer extrahierten Adresse und eines extrahierten Symbolnamens, wobei die extrahierte Adresse eine Adresse eines Zugriffsdatenteils ist, wobei der zugegriffene Symbolname 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 des extrahierten Symbolnamens zu einer zugeordneten Adresse, wobei die zugeordnete Adresse eine Adresse in dem Speicherbereich ist, der den Zugriffsdatenteil des extrahierten Symbolnamens speichert; und Analysieren einer Abhängigkeit zwischen den jeweiligen Prozessen auf der Grundlage von Subjekt-Adressen, die die extrahierte Adresse und die zugeordnete Adresse sind, um parallelisierbare Prozesse aus den Prozessen zu bestimmen, und Bestimmen, dass zwei Prozesse, die auf eine identische Adresse zugreifen, eine Abhängigkeit aufweisen, und Bestimmen, dass zwei Prozesse, die nicht auf eine identische Adresse zugreifen, keine Abhängigkeit aufweisen, wobei das parallele Programm den Kernen jeweils die Prozesse zuordnet; und ein Subjekt-Kern, der irgendeiner der Kerne des Mehrkern-Mikrocomputers ist, irgendeinen Prozess ausführt, der dem Subjekt-Kern selbst zugeordnet ist.
  8. Fahrzeugeigene Vorrichtung nach Anspruch 7, wobei die Subjekt-Adressen, auf der Grundlage derer eine Abhängigkeit analysiert wird, eine Adresse in einem Register des Speicherbereiches enthalten.
  9. Fahrzeugeigene Vorrichtung nach Anspruch 7 oder 8, wobei die Subjekt-Adressen, auf der Grundlage derer eine Abhängigkeit analysiert wird, eine Adresse in einem Ergebnis einer Kompilierung des einzelnen Programms und einer Adressabbildung eines jeweiligen Datenteils enthalten.
DE102016223939.2A 2015-12-10 2016-12-01 Parallelisierungsverfahren, Parallelisierungswerkzeug und fahrzeugeigene Vorrichtung Withdrawn DE102016223939A1 (de)

Applications Claiming Priority (2)

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

Publications (1)

Publication Number Publication Date
DE102016223939A1 true DE102016223939A1 (de) 2017-06-14

Family

ID=58773283

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102016223939.2A Withdrawn DE102016223939A1 (de) 2015-12-10 2016-12-01 Parallelisierungsverfahren, Parallelisierungswerkzeug und fahrzeugeigene Vorrichtung

Country Status (3)

Country Link
US (1) US10296316B2 (de)
JP (1) JP2017107448A (de)
DE (1) DE102016223939A1 (de)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017107448A (ja) * 2015-12-10 2017-06-15 株式会社デンソー 並列化方法、並列化ツール、車載装置
JP2017228029A (ja) * 2016-06-21 2017-12-28 株式会社デンソー 並列化方法、並列化ツール、車載装置
US10671361B2 (en) * 2016-10-25 2020-06-02 Paypal, Inc. Automatically determining data dependencies to facilitate code execution
JP6933063B2 (ja) * 2017-09-07 2021-09-08 株式会社デンソー 並列化方法、並列化ツール、車載装置
JP7139633B2 (ja) * 2018-03-14 2022-09-21 株式会社デンソー 並列化方法、並列化ツール、及びマルチコアマイコン
JP7059776B2 (ja) * 2018-04-24 2022-04-26 株式会社デンソー 並列化方法、並列化ツール、及びマルチコアマイコン

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

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3641997B2 (ja) * 2000-03-30 2005-04-27 日本電気株式会社 プログラム変換装置及び方法並びに記録媒体
JP3729064B2 (ja) * 2000-11-29 2005-12-21 日本電気株式会社 データ依存関係検出装置
US7159211B2 (en) * 2002-08-29 2007-01-02 Indian Institute Of Information Technology Method for executing a sequential program in parallel with automatic fault tolerance
EP1731998A1 (de) * 2004-03-29 2006-12-13 Kyoto University Datenverarbeitungseinrichtung, datenverarbeitungsprogramm und das datenverarbeitungsprogramm enthaltendes aufzeichnungsmedium
JP4923240B2 (ja) * 2006-01-17 2012-04-25 国立大学法人東京工業大学 プログラム処理装置、並列処理プログラム、プログラム処理方法、並列処理コンパイラ、並列処理コンパイラを格納した記録媒体およびマルチプロセッサシステム
US20080162889A1 (en) * 2007-01-03 2008-07-03 International Business Machines Corporation Method and apparatus for implementing efficient data dependence tracking for multiprocessor architectures
JP2009129179A (ja) * 2007-11-22 2009-06-11 Toshiba Corp プログラム並列化支援装置およびプログラム並列化支援方法
JP2009237762A (ja) * 2008-03-26 2009-10-15 Toshiba Corp プログラム解析装置、プログラム解析方法および解析プログラム
US9164742B2 (en) * 2010-02-18 2015-10-20 Johan Kraft Method and a system for searching for parts of a computer program which affects a given symbol
JP5148674B2 (ja) * 2010-09-27 2013-02-20 株式会社東芝 プログラム並列化装置およびプログラム
JP5810316B2 (ja) * 2010-12-21 2015-11-11 パナソニックIpマネジメント株式会社 コンパイル装置、コンパイルプログラム及びループ並列化方法
US8793675B2 (en) * 2010-12-24 2014-07-29 Intel Corporation Loop parallelization based on loop splitting or index array
US9727377B2 (en) * 2011-07-14 2017-08-08 Siemens Aktiengesellschaft Reducing the scan cycle time of control applications through multi-core execution of user programs
GB2511672B (en) * 2011-11-04 2020-04-15 Univ Waseda Processor system and accelerator
US9489180B1 (en) * 2011-11-18 2016-11-08 Reservoir Labs, Inc. Methods and apparatus for joint scheduling and layout optimization to enable multi-level vectorization
US20140096117A1 (en) * 2012-01-13 2014-04-03 Panasonic Corporation Data dependence analysis support device, data dependence analysis support program, and data dependence analysis support method
US8943511B2 (en) * 2012-05-31 2015-01-27 Nec Corporation Parallel allocation optimization device, parallel allocation optimization method, and computer-readable recording medium
EP2950211B1 (de) * 2013-01-23 2021-07-07 Waseda University Parallelitätsextraktionsverfahren und verfahren zur programmherstellung
WO2015050594A2 (en) * 2013-06-16 2015-04-09 President And Fellows Of Harvard College Methods and apparatus for parallel processing
US9594644B2 (en) * 2014-09-19 2017-03-14 Sybase, Inc. Converting a serial transaction schedule to a parallel transaction schedule
US20160147577A1 (en) * 2014-11-25 2016-05-26 Qualcomm Incorporated System and method for adaptive thread control in a portable computing device (pcd)
JP6481585B2 (ja) * 2015-10-20 2019-03-13 株式会社デンソー 並列化方法、並列化ツール、車載装置
JP2017107448A (ja) * 2015-12-10 2017-06-15 株式会社デンソー 並列化方法、並列化ツール、車載装置
JP2017228029A (ja) * 2016-06-21 2017-12-28 株式会社デンソー 並列化方法、並列化ツール、車載装置

Patent Citations (2)

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

Also Published As

Publication number Publication date
US20170168790A1 (en) 2017-06-15
JP2017107448A (ja) 2017-06-15
US10296316B2 (en) 2019-05-21

Similar Documents

Publication Publication Date Title
DE102016223939A1 (de) Parallelisierungsverfahren, Parallelisierungswerkzeug und fahrzeugeigene Vorrichtung
DE102016214786A1 (de) Anwendungsprofiling-Jobmanagement-System, -Programm und -Verfahren
EP0689694B1 (de) Verfahren zur maschinellen erzeugung von nebenläufig bearbeitbaren befehlsgruppen aus einem programm für superskalare mikroprozessoren
DE69622305T2 (de) Verfahren und Gerät für einen optimierenden Kompiler
DE69637020T2 (de) Überpartitionierungssystem und-verfahren zum Erhöhen der Anzahl von Prüfpunkten in komponentenbasierten Parallelanwendungen
DE112013001747T5 (de) Optimieren des Verbindens von Anweisungen
DE102017210126A1 (de) Parallelisierungsverfahren, Parallelisierungswerkzeug und fahrzeuginterne Vorrichtung
DE112013001735T5 (de) Optimieren des Verbindens von Anweisungen
DE112019005584T5 (de) Arithmetiksteuervorrichtung
DE202015009297U1 (de) Programmprodukt zum Eliminieren zusätzlicher Speicherladungen während des Zugriffs auf globale Variablen in positionsunabhängigem Code
DE102012016539A1 (de) Konfigurationstechnik für ein Steuergerät mit miteinander kommunizierenden Anwendungen
DE112018002316T5 (de) Codeabdeckungsverfolgung für ein mikrocontroller-programm
DE19924702A1 (de) Systeme mit einheitlicher Datenstruktur, Verfahren und Computerprogrammprodukte zur Feststellung von globalen Konflikten
DE102018208267A1 (de) Technologie zum verwenden von steuerabhängigkeitsgraphen für das konvertieren von steuerflussprogrammen in datenflussprogramme
DE102016204970A1 (de) Parallelisierungskompilierverfahren, Parallelisierungskomplierer und Fahrzeugvorrichtung
DE69933323T2 (de) Kompiler
DE102016204960A1 (de) Parallelisierungskompilierverfahren, Parallelisierungskompilierer und Fahrzeugvorrichtung
DE102015112250A1 (de) Trennung von Kernen
DE102016220340A1 (de) Parallelisierungsverfahren, parallelisierungswerkzeug und fahrzeugverbaute einrichtung
DE102018104752A1 (de) Verfahren zum Ausführen und Übersetzen eines Computerprogrammes in einem Rechnerverbund, insbesondere zum Steuern eines Mikroskops
DE102019202870A1 (de) Parallelisierungsverfahren, Parallelisierungswerkzeug und Multikernmikrocomputer
JP6933001B2 (ja) 並列化方法、並列化ツール
DE112011105402T5 (de) Symboltabellen-Erzeugungsverfahren; Kommunikationsverfahren mit peripherer Ausrüstung und programmierbare Logiksteuerung
DE102019202228A1 (de) Parallelisierungsverfahren, Parallelisierungswerkzeug, Mehrkernmikrocomputer und fahrzeuginterne Vorrichtung
DE102019207629A1 (de) Mehrkernmikrocomputer und Parallelisierungsverfahren

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0009450000

Ipc: G06F0009440000

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