DE102017209285A1 - Parallelization method, parallelization tool, and in-vehicle device - Google Patents

Parallelization method, parallelization tool, and in-vehicle device Download PDF

Info

Publication number
DE102017209285A1
DE102017209285A1 DE102017209285.8A DE102017209285A DE102017209285A1 DE 102017209285 A1 DE102017209285 A1 DE 102017209285A1 DE 102017209285 A DE102017209285 A DE 102017209285A DE 102017209285 A1 DE102017209285 A1 DE 102017209285A1
Authority
DE
Germany
Prior art keywords
data
relationship
unit processes
parallelization
data dependency
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102017209285.8A
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 DE102017209285A1 publication Critical patent/DE102017209285A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • G06F8/433Dependency analysis; Data or control flow analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • G06F8/456Parallelism detection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements

Landscapes

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

Abstract

Ein Computer (10) erhält Invalidierungsinformation (30), die ignorierbare Datenabhängigkeitsbeziehungen aus mehreren Datenabhängigkeitsbeziehungen zeigt, und extrahiert eine synchronabhängige Beziehung (10c) unter den ignorierbaren Datenabhängigkeitsbeziehungen, die als Schreiben-Schreiben derselben Daten durch die Invalidierungsinformation gezeigt sind. Dann wird vom Computer (10) ein Parallelprogramm (21a1) zum Maximieren der Anzahl von parallelisierten Makrotasks (MTs) durch Ignorieren anderer Datenabhängigkeitsbeziehungen außer der extrahierten synchronabhängigen Beziehung erzeugt (10d, 10e, 10f), während ein gleichzeitiges Schreiben derselben Daten durch zwei Makrotasks mit der synchronabhängigen Beziehung verhindert wird.

Description

  • Die vorliegende Offenbarung bezieht sich allgemein auf ein Parallelisierungsverfahren und ein Parallelisierungswerkzeug, die jeweils zum Erzeugen eines Parallelprogramms für einen Mehrkernmikrocomputer auf der Grundlage eines Einzelprogramms bzw. seriellen Programms für einen Einkernmikrocomputer dienen, und auf eine fahrzeuginterne Vorrichtung, in der das erzeugte Parallelprogramm implementiert ist.
  • Ein Parallelisierungskompilierverfahren, das z. B. in einer Patentschrift, der japanischen Patentoffenlegung Nr. 2015-1807 (Patentschrift 1), offenbart ist, dient als Parallelisierungsverfahren zum Erzeugen eines Parallelprogramms für einen Mehrkernmikrocomputer basierend auf einem Einzelprogramm für einen Einkernmikrocomputer.
  • In einem solchen Parallelisierungskompilierverfahren wird eine Zwischensprache aus einem Quellcode des Einzelprogramms durch Durchführen einer lexikalischen Analyse und einer Syntaxanalyse erzeugt. Durch Verwenden einer derartigen Zwischensprache werden sowohl eine Abhängigkeitsanalyse als auch eine Optimierung und dergleichen aus mehreren (nachstehend als Einheitsprozesse bezeichneten) Makrotasks durchgeführt. Zudem erzeugt das Parallelisierungskompilierverfahren das Parallelprogramm basierend auf einem Scheduling bzw. zeitlichen Anordnen der zahlreichen Einheitsprozesse, das die Abhängigkeit jedes Einheitsprozesses und eine Ausführungszeit jedes Einheitsprozesses einbezieht.
  • Nun wird im Verlauf der Erzeugung eines Parallelprogramms die Parallelisierung in einem Kontext der Software auf der Grundlage einer Analyse von Datenabhängigkeitsbeziehungen oder einfacher nachstehend in der Beschreibung „Datenabhängigkeiten” jedes Einheitsprozesses erreicht, wobei die Datenabhängigkeit zwischen den zahlreichen Einheitsprozessen beibehalten wird. Auf diese Weise kann das Parallelprogramm beibehalten, was durch einen Betrieb des Einkernmikrocomputers, das bedeutet, durch Ausführen des Einzelprogramms erreicht wurde. Die Antwortfähigkeit der Software (d. h. des Parallelprogramms) kann jedoch selbst dann beibehalten werden, wenn die Datenabhängigkeit rigoros beibehalten wird. Daher kann es möglich sein, ein Scheduling des Parallelprogramms durchzuführen, um eine größere Parallelisierungskapazität sowohl der Software-Parallelisierung als auch der Steuer-Parallelisierung zu erzielen, indem absichtlich die Datenabhängigkeit von zwei Einheitsprozessen ignoriert/gedanklich gelöst wird, bei denen ein Einheitsprozess vom anderen abhängt, d. h. zwischen zwei „voneinander abhängigen” Prozessen.
  • Nun zeigt eine solche (d. h. eine ignorierbare) Datenabhängigkeit an, dass die zwei Prozesse auf dieselben Daten zugreifen, selbst wenn die Datenabhängigkeit für das Scheduling und die größere Kapazität des Parallelprogramms ignorierbar/gedanklich lösbar sein kann. Das heißt, dass die zwei Einheitsprozesse, die den zwei unterschiedlichen Kernen des Mehrkernmikrocomputers zugeordnet sind, gleichzeitig auf dieselben Daten zugreifen können. Zudem können solche Daten im Falle des gleichzeitigen Zugriffs durch die zwei unterschiedlichen Kerne einen Datenfehler oder eine Datenabnormität verursachen. Zum Behandeln eines solchen Falls kann ein Prozess zum Ausschluss zwischen Kernen hinzugefügt werden, um die Datenabnormität zu verhindern. Der Prozess zum Ausschluss zwischen Kernen weist jedoch einen Overhead auf, der die Kapazität der Parallelverarbeitung stark verschlechtern kann.
  • Zudem kann ein Synchronisationsprozess zum Verhindern der gleichzeitigen Ausführung der voneinander abhängigen Einheitsprozesse verwendet werden, um beispielsweise in den vorstehend beschriebenen Fällen die Datenabnormität zu verhindern. Ein solcher Synchronisierungsprozess ist jedoch eine Schedulingbeschränkung und kann auch die Kapazität der Parallelverarbeitung aufgrund einer gleichförmigen Synchronisierung aller voneinander abhängigen Einheitsprozesse immer dann verschlechtern, wenn erkannt wird, dass die Einheitsprozesse voneinander abhängig sind.
  • Es ist eine Aufgabe der vorliegenden Offenbarung, ein Parallelisierungsverfahren zu schaffen, das eine Parallelausführungskapazität des Parallelprogramms verbessert, während die Beschränkungen der Parallelisierung beim Erzeugen eines Parallelprogramms verringert werden. Die vorliegende Offenbarung enthält auch ein Parallelisierungswerkzeug, das das Parallelisierungsverfahren implementiert, und eine fahrzeuginterne Vorrichtung, die dazu aufgebaut ist, jeden der Einheitsprozesse im damit erzeugten Parallelprogramm optimal auszuführen.
  • In einem Aspekt der vorliegenden Offenbarung erzeugt ein Parallelisierungsverfahren ein Parallelprogramm für einen Mehrkernmikrocomputer (i) auf der Grundlage eines Einzelprogramms für einen Einkernmikrocomputer und (ii-a) durch Durchführen einer Datenabhängigkeitsanalyse über Datenabhängigkeitsbeziehungen zwischen Einheitsprozessen des Einheitsprogramms, die jeweils auf gleiche Daten zugreifen und (ii-b) durch Parallelisieren von parallelisierbaren Einheitsprozessen des Einzelprogramms.
  • Das Parallelisierungsverfahren umfasst eine Extraktionsprozedur, die (i) Ungültigkeits- bzw. Invalidierungsinformation erhält, die eine ignorierbare bzw. vernachlässigbare Beziehung zwischen mehreren der Datenabhängigkeitsbeziehungen zeigt und (ii) aus der Invalidierungsinformation eine Schreiben-Schreiben- bzw. Write-Write-Datenabhängigkeitsbeziehung extrahiert, die einen Zugriff auf dieselben Daten als eine synchron abhängige Beziehung zeigt. Die Parallelisierung umfasst auch eine Erzeugungsprozedur, die das Parallelprogramm zum Parallelisieren einer maximalen Anzahl der parallelisierbaren Einheitsprozesse erzeugt, während eine Datenabnormität verhindert wird, indem (a) andere Datenabhängigkeitsbeziehungen außer der synchron abhängigen Beziehung ignoriert werden und (b) ein gleichzeitiges Ausführen der beiden Einheitsprozesse mit der synchron abhängigen Beziehung verhindert wird.
  • Wie vorstehend beschrieben wird nach der vorliegenden Offenbarung die Invalidierungsinformation verwendet, um (i) die Datenabhängigkeitsbeziehungen gedanklich zu lösen oder zu ignorieren, die nicht als die synchron abhängige Beziehung extrahiert werden und (ii) das Parallelprogramm zu erzeugen, das die Anzahl der parallelisierten Einheitsprozesse maximiert. Daher ist das Parallelisierungsverfahren der vorliegenden Offenbarung im Vergleich zu den anderen Verfahren, die die Datenabhängigkeitsbeziehungen nicht ignorieren, dazu fähig, ein Parallelprogramm mit erhöhter Kapazität, d. h. während einer Parallelausführung der Einheitsprozesse, zu erzeugen.
  • Zudem ist es wahrscheinlicher, dass eine Datenabnormität verursacht wird, wenn auf dieselben Daten gleichzeitig durch zwei unterschiedliche Kerne zugegriffen wird, oder noch genauer, wenn zwei Kerne versuchen, auf dieselben Daten zu schreiben. Somit wird nach der vorliegenden Offenbarung die Write-Write- bzw. Schreiben-Schreiben-Datenabhängigkeitsbeziehung aus den Datenabhängigkeitsbeziehungen, die durch die Invalidierungsinformation gezeigt werden, als die synchron abhängige Beziehung extrahiert. Dann wird die Anzahl der parallelisierten Einheitsprozesse im Parallelprogramm nach der vorliegenden Offenbarung maximiert, während gleichzeitiges Schreiben auf dieselben Daten durch die beiden Einheitsprozesse mit der synchron abhängigen Beziehung verhindert wird. Daher werden nach der vorliegenden Offenbarung die Einschränkungen für die Parallelisierung zum Erzeugen eines Parallelprogramms im Vergleich zum herkömmlichen Verfahren verringert, das dazu aufgebaut ist (i) kein gleichzeitiges Write-Write durch die beiden Einheitsprozesse zu verursachen und (ii) kein gleichzeitiges Write-Read bzw. Schreiben-Lesen durch die beiden Einheitsprozesse zur verursachen.
  • In einem anderen Aspekt der vorliegenden Offenbarung erzeugt ein Parallelisierungswerkzeug ein Parallelprogramm für einen Mehrkernmikrocomputer (i) auf der Grundlage eines Einzelprogramms für einen Einkernmikrocomputer und (ii-a) durch Durchführen einer Datenabhängigkeitsanalyse hinsichtlich Datenabhängigkeitsbeziehungen zwischen Einheitsprozessen des Einzelprogramms, die jeweils auf gleiche Daten zugreifen und (ii-b) durch Parallelisieren von parallelisierbaren Einheitsprozessen des Einzelprogramms. Das Parallelisierungswerkzeug umfasst einen Extraktor, der (i) Invalidierungsinformation erhält, die eine ignorierbare Beziehung aus mehreren der Datenabhängigkeitsbeziehungen anzeigt und (ii) aus der Invalidierungsinformation eine Write-Write-Datenabhängigkeitsbeziehung als eine synchron abhängige Beziehung extrahiert, die einen Zugriff auf dieselben Daten zeigt. Das Parallelisierungswerkzeug umfasst auch einen Generator, der das Parallelprogramm zum Parallelisieren einer maximalen Anzahl der parallelisierbaren Einheitsprozesse erzeugt, während er eine Datenabnormität verhindert, indem er (i) andere Datenabhängigkeitsbeziehungen außer der synchron abhängigen Beziehung ignoriert und (ii) eine gleichzeitige Ausführung der zwei Einheitsprozesse mit der synchron abhängigen Beziehung verhindert.
  • Nach dem vorstehend Erläuterten ist das Parallelisierungswerkzeug ähnlich dem Parallelisierungsverfahren dazu fähig, ein Parallelprogramm zu erzeugen, das eine höhere Kapazität zur Zeit einer Parallelausführung der Einheitsprozesse aufweist, während die Beschränkungen für die Parallelisierung zum Erzeugen des Parallelprogramms verringert sind.
  • In einem weiteren Aspekt der vorliegenden Offenbarung weist ein Mehrkernmikrocomputer basierend auf mehreren Einheitsprozessen eines Einzelprogramms für einen Einkernmikrocomputer zahlreiche Kerne auf, und ein Parallelprogramm, das zahlreiche Einheitsprozesse aufweist, die für den Mehrkernmikrocomputer parallelisiert sind.
  • Das Parallelprogramm ordnet die Einheitsprozesse den zahlreichen Kernen so zu, dass die Zahl der parallelisierten Einheitsprozesse maximiert ist, basierend auf (i) dem Erhalt von Invalidierungsinformation, die eine ignorierbare Beziehung aus mehreren der Datenabhängigkeitsbeziehungen anzeigt, (ii) Extrahieren einer Write-Write-Datenabhängigkeitsbeziehung aus der Invalidierungsinformation, die einen Zugriff auf dieselben Daten als eine synchron abhängige Beziehung zeigt, und durch (iii) Ignorieren anderer Datenabhängigkeitsbeziehungen außer der synchron abhängigen Beziehung, während sie ein gleichzeitiges Schreiben derselben Daten durch die beiden Einheitsprozesse mit der synchron abhängigen Beziehung vermeidet. Jeder der zahlreichen Kerne des Mehrkernmikrocomputers führt die Einheitsprozesse aus, die dem jeweiligen aus den zahlreichen Kernen des Mehrkernmikrocomputers zugeordnet sind.
  • Nach dem vorstehend Erläuterten umfasst die fahrzeuginterne Vorrichtung das Parallelprogramm mit mehr Einheitsprozessen, die für ein effizientes Verarbeiten parallelisiert sind. Daher wird die Ausführung jedes der Einheitsprozesse optimiert.
  • Die nachstehend verwendeten Bezugszeichen zeigen eine beispielhafte Beziehung zwischen den Elementen in den Ansprüchen und den Komponenten/Aufbauten in den Ausführungsformen. Daher schränkt eine derartige beispielhafte Beziehung das Gebiet der vorliegenden Offenbarung in keiner Weise ein.
  • Aufgaben, Merkmale und Vorteile der vorliegenden Offenbarung werden aus der nachstehenden genauen Beschreibung mit Bezug auf die beigefügten Figuren deutlicher, in denen:
  • 1 ein Blockschaubild eines Computers in einer Ausführungsform der vorliegenden Offenbarung ist;
  • 2 ein Blockschaubild einer fahrzeuginternen Vorrichtung in einer Ausführungsform der vorliegenden Offenbarung ist;
  • 3 ein Blockschaubild von Funktionen des Computers in einer Ausführungsform der vorliegenden Offenbarung ist;
  • 4 ein Ablaufplan eines Prozesses des Computers in einer Ausführungsform der vorliegenden Offenbarung ist;
  • 5 ein Ablaufplan eines Prozesses des Computers in einer Ausführungsform der vorliegenden Offenbarung ist;
  • 6 eine Veranschaulichung von Datenabhängigkeiten eines Einheitsprozesses ist;
  • 7 eine Veranschaulichung eines Beispiels eines Einzelprogramms ist;
  • 8 eine Veranschaulichung einer Anwendung einer zwingend zu synchronisierenden Abhängigkeit auf das Einzelprogramm in 7 ist;
  • 9 eine Veranschaulichung eines Scheduling-Musters des Einzelprogramms in 8 ist;
  • 10 eine Veranschaulichung eines anderen Beispiels des Einzelprogramms ist;
  • 11 eine Veranschaulichung einer Anwendung der zwingend zu synchronisierenden Abhängigkeit für das Einzelprogramm in 10 ist; und
  • 12 eine Veranschaulichung eines Datenabhängigkeitsmusters des Einzelprogramms in 11 ist.
  • Ausführungsformen zum Durchführen der vorliegenden Offenbarung werden nachstehend anhand der Figuren beschrieben.
  • Nach der vorliegenden Ausführungsform wird ein Computer 10 zum Erzeugen eines Parallelprogramms 21a1 für einen Mehrkernprozessor 21 verwendet, der einen ersten Kern 21c und einen zweiten Kern 21d aufweist, in dem zahlreiche Einheitsprozesse eines Einzelprogramms für einen Einkernmikrocomputer, der nur einen Kern aufweist, parallelisiert sind. Zudem wird in der vorliegenden Ausführungsform ein automatischer Parallelisierungscompiler 1 zum Erzeugen des Parallelprogramms 21a1 verwendet. Zudem wird in der vorliegenden Ausführungsform eine fahrzeuginterne Vorrichtung 20 eingesetzt, die das Parallelprogramm 21a1 umfasst, das durch den Computer 10 erzeugt wird. Der hier verwendete Terminus „Prozessor” kann sich auch ein „Mikrocomputer” beziehen, so dass der Terminus „Mehrkernmikrocomputer” anstelle des Terminus „Mehrkernprozessor” verwendet werden kann.
  • Der automatische Parallelisierungscompiler 1 umfasst eine Prozedur zum Erzeugen des Parallelprogramms 21a1. Daher kann der automatische Parallelisierungscompiler 1 nachstehend auch als ein Parallelisierungsverfahren bezeichnet sein.
  • Der automatische Parallelisierungscompiler 1 ist ein Programm, das das Parallelisierungsverfahren umfasst. Zudem erzeugt der Computer 10 durch Ausführen des automatischen Parallelisierungscompilers 1 das Parallelprogramm 21a1. Daher kann der Computer 10 nachstehend auch als Parallelisierungswerkzeug bezeichnet werden.
  • Der vorstehend erläuterte Einheitsprozess kann als ein Prozessblock, ein Makrotask (MT) oder dergleichen umbenannt werden. Nachstehend kann auch der Einheitsprozess als MT bezeichnet werden.
  • Nach der vorliegenden Ausführungsform wird ein 11. MT bis zu einem 13. MT als ein erstes Beispiel verwendet, und ein 21. MT bis 23. MT werden als ein zweites Beispiel verwendet.
  • Man bemerke, dass jeder dieser MTs mindestens eine Anweisung umfasst, die durch entweder den ersten Kern 21c oder den zweiten Kern 21d ausführbar ist.
  • Ein Hintergrund zum Erzeugen des Parallelprogramms 21a1 ist, dass der Mehrkernprozessor 21 als Prozessor zum Lösen von Wärmeproblemen, Stromverbrauchsproblemen, Taktfrequenzproblemen und dergleichen verwendet wird. Zudem wird der Mehrkernprozessor 21 für Vorrichtungen im Fahrzeug verwendet. Zudem wird für das Parallelprogramm 21a1 ein Programm/eine Software mit hoher Verlässlichkeit und hoher Leistung eingesetzt, das/die auch schnell mit geringen Kosten entwickelt ist.
  • Man bemerke, dass die Datenabhängigkeitsbeziehung zahlreicher MTs im Einzelprogramm beim Erzeugen des Parallelprogramms 21a1 analysiert wird, und jeder aus den zahlreichen MTs den jeweiligen Kernen 21c und 21d des Mehrkernprozessors 21 zugeordnet, d. h. „alloziert” wird. Hinsichtlich der Zuordnung der Einheitsprozesse zu den zahlreichen Kernen siehe die Veröffentlichung der japanischen Patentanmeldung JP2015-1807A .
  • In der vorliegenden Offenbarung wird beispielhaft ein Einzelprogramm verwendet, das in der Sprache C geschrieben ist. Die vorliegende Offenbarung ist jedoch nicht auf einen solchen Aufbau beschränkt. Das Einzelprogramm kann auch in einer anderen Programmiersprache als der Sprache C geschrieben sein.
  • In der vorliegenden Ausführungsform werden ein Einzelprogramm, das den 11. bis 13. MT wie in 7 gezeigt enthält, und ein Einzelprogramm verwendet, das den 21. MT bis zum 23. MT wie in 10 gezeigt enthält. Die zahlreichen MTs, die in den 7 und 10 gezeigt sind, umfassen „voneinander abhängige” MTs, zwischen denen eine bestimmte Datenabhängigkeitsbeziehung (d. h. vereinfacht „DATENABHÄNGIGKEIT” in 7 und 10) z. B. über einen Zugriff auf dieselben Daten vorliegt.
  • In 7 und 10 weisen mit Pfeilen verbundene MTs eine Datenabhängigkeitsbeziehung auf (d. h. sind voneinander abhängige MTs). Insbesondere zeigt ein Zwei-Punkt-Strich-linierter Pfeil eine Datenabhängigkeitsbeziehung, die ungültig gemacht wird (d. h. ignoriert/nicht beachtet/für nichtig erklärt/entwertet wird) auf der Grundlage der Invalidierungsinformation 30 (d. h. Information, die ignoriert oder nicht in Betracht gezogen werden, unsichtbar, versteckt, ungültig oder für nichtig erklärt sein kann).
  • Zudem sind die zahlreichen Einheitsprozesse in einem Einzelprogramm so aufgebaut, dass sie in mehrere Funktionsgruppen unterteilbar sind. Beispielsweise werden bestimmte mehrere MTs, die zum Erzielen einer Funktion α dienen, als eine Funktionsgruppe α gruppiert, und bestimmte andere mehrere MTs zum Erzielen einer Funktion β werden als eine Funktionsgruppe β gruppiert.
  • Die Datenabhängigkeitsbeziehung ist eine Beziehung von zwei MTs zur Zeit des jeweiligen Zugriffs auf dieselben Daten. Die Datenabhängigkeitsbeziehung kann wie in 6 gezeigt in die ersten bis dritten Fälle klassifiziert sein.
  • Der erste Fall ist eine Beziehung, in der der erste MT bestimmte Daten schreibt (Write) und der zweite MT auf diese bestimmten Daten Bezug nimmt oder sie liest (Read).
  • Der zweite Fall ist eine Beziehung, in der der erste MT und der zweite MT dieselben Daten schreiben (Write).
  • Der dritte Fall ist eine Beziehung, in der sich der erste MT auf bestimmte Daten bezieht oder diese liest (Read) und der zweite MT diese bestimmten Daten schreibt (Write).
  • Man bemerke, dass im Einzelprogramm eine Ausführungsfolge (d. h. eine Verarbeitungsreihenfolge) so definiert ist, dass der erste MT vor einer Ausführung des zweiten MTs ausgeführt wird.
  • Es ist zu beachten, dass der vorstehend erwähnte erste Fall auch als eine Schreib-Lese(Write-Read, WR-)Beziehung bezeichnet werden kann, weil es eine Schreib-Lese-Datenabhängigkeitsbeziehung ist, in der Schreiben und Lesen aufeinander folgend ablaufen, und der zweite vorstehend erwähnte Fall auch als eine Schreib-Schreib(Write-Write, WW-)Beziehung bezeichnet werden kann, weil es eine Schreib-Schreib-Datenabhängigkeitsbeziehung ist, in der Schreiben und Schreiben aufeinanderfolgend ablaufen.
  • Zudem ist der dritte Fall eine Datenabhängigkeitsbeziehung von Lesen-Schreiben (Read-Write, RW), weil Lesen und Schreiben aufeinanderfolgend ablaufen, und kann auch als eine RW-Beziehung bezeichnet werden.
  • Man bemerke, dass im Allgemeinen aufgrund der Unabhängigkeit zwischen den unterschiedlichen Funktionen und unterschiedlichen Funktionsgruppen, die in ein Programm im Designstadium eingebaut werden, eine Ausführungsfolge dieser Funktionen/Funktionsgruppen (d. h. eine Zugriffsreihenfolge auf dieselben/relevanten Daten), im Wesentlichen keinen oder einen geringen Unterschied hinsichtlich des Einflusses auf das Antwortverhalten der Steuerung der fahrzeuginternen Vorrichtung 20 aufweist.
  • Das heißt, zwei MTs, die in unterschiedliche Funktionsgruppen gruppiert sind, können in vielen Fällen entsprechend einem Scheduling ausführbar sein, das die Datenabhängigkeitsbeziehung zwischen den zwei MTs ignoriert/ungültig macht.
  • Somit weist das Parallelprogramm, das in einer derartigen ungültigen Abhängigkeit erzeugt wird, einen ausreichend geringen Einfluss auf die Steuerung der fahrzeuginternen Vorrichtung 20 auf, das heißt, es wird dem Parallelprogramm ermöglicht, das Antwortverhalten der Steuerung beizubehalten.
  • Zudem wird in der vorliegenden Ausführungsform angenommen, dass der Einfluss der Ausführungsfolge zwischen den Funktionen/Funktionsgruppen auf das Antwortverhalten der Steuerung der fahrzeuginternen Vorrichtung 20 ausreichend gering ist. Daher kann die Datenabhängigkeitsbeziehung zwischen zwei MTs, die in zwei unterschiedliche Funktionsgruppen gruppiert sind, als vernachlässigbar definiert werden, das heißt dazu fähig, ungültig zu sein. Das heißt, dass das Parallelprogramm 21a1 erzeugt wird, indem die Invalidierungsinformation 30 erzeugt wird, die eine/zahlreiche ignorierbare/invalidierbare Datenabhängigkeitsbeziehung(en) aus mehreren relevanten Datenabhängigkeitsbeziehungen zeigt.
  • Man bemerke, dass im ersten Beispiel der 11. MT und der 12. MT zur selben Funktionsgruppe und der 13. MT zu einer anderen Funktionsgruppe gehören, die sich von der einen unterscheidet, zu der der 11. MT und der 12. MT gehören.
  • Andererseits gehören im zweiten Beispiel der 21. MT und der 22. MT zur selben Funktionsgruppe, und der 23. MT gehört einer anderen Funktionsgruppe an, die sich von der einen unterscheidet, der der 21. MT und der 22. MT angehören.
  • Zudem werden im ersten Beispiel der 11. MT und der 12. MT demselben Kern zugeordnet und der 13. MT wird einem anderen Kern zugeordnet, der sich von dem unterscheidet, dem der 11. MT und der 12. MT zugeordnet werden.
  • Andererseits werden im zweiten Beispiel der 21. MT und der 22. MT demselben Kern zugeordnet und der 23. MT wird einem anderen Kern zugeordnet, der sich von dem einen unterscheidet, dem der 21. MT und der 22. MT zugeordnet werden.
  • Desweiteren wird in der vorliegenden Ausführungsform angenommen, dass das Parallelprogramm, das erzeugt wird, indem die Datenabhängigkeitsbeziehung zwischen den unterschiedlichen Funktionsgruppen ignoriert/ungültig gemacht wird, einen ausreichend geringen Einfluss auf die Steuerung der fahrzeuginternen Vorrichtung 20 hat.
  • Bei der Betrachtung eines Falls, in dem zwei voneinander abhängige MTs des Parallelprogramms 21a1 jeweils unterschiedlichen Kernen 21c und 21d zugeordnet sind, umfasst das Parallelprogramm 21a1 einen Synchronisierungsvorgang, der die Ausführung zweier MTs synchronisiert, d. h., bis der Abschluss der Ausführung eines in der Prozessabfolge vorhergehenden MTs abgeschlossen ist, wird die Ausführung eines späteren MTs in der Prozessabfolge ausgesetzt.
  • D. h., dass anders gesagt ein Synchronisationsprozess des Parallelprogramms 21a1 einen ersten MT und einen dritten MT, die einem gleichen Kern zugeordnet sind, und einen zweiten MT durch Aussetzen einer Ausführung des dem gleichen Kern zugeordneten dritten MTs synchronisiert, der einem anderen Kern zugeordnet ist, bis das Ausführen des dem anderen Kern zugeordneten anderen MTs abgeschlossen ist, wenn das Ausführen des demselben Kern zugeordneten ersten MTs abgeschlossen ist.
  • Daher greift der erste Kern 21c und der zweite Kern 21d, die nachstehend genauer beschrieben werden, jeweils auf einen Speicher mit wahlfreiem Zugriff (RAM) 21b zu, um den Synchronisationsprozess durchzuführen, und erinnern sich an (d. h. speichern) Information im RAM 21b, während sie auf die Synchronisierung (die nachstehend als Abschlussinformation bezeichnet wird) warten, wenn die Ausführung von diesen Kernen 21c und 21d zugeordneten MTs abgeschlossen ist.
  • Dann greift der eigene Kern, der auf den Abschluss der Ausführung des MTs mit der Datenabhängigkeitsbeziehung durch den anderen Kern wartet, periodisch auf das RAM 21b zu und bestätigt, ob das RAM 21b die Abschlussinformation gespeichert hat, ohne den MT durchzuführen, der dem eigenen Kern zugeordnet ist. Anders gesagt wartet der eigene bzw. eine Kern darauf, dass der andere Kern den MT mit der Datenabhängigkeitsbeziehung ausführt, bevor der dem eigenen Kern zugeordnete MT ausgeführt wird, und der eigene Kern greift periodisch auf das RAM 21b zu, um zu bestätigen, ob die Abschlussinformation im RAM 21b gespeichert/abgelegt ist.
  • Somit führen der erste Kern 21c und der zweite Kern 21d jeweilige MTs durch Warten aufeinander, also synchron, durch. Das heißt, dass der Synchronisierungsvorgang auch als ein Wartevorgang bezeichnet werden kann.
  • Man bemerke, dass das Parallelprogramm 21a1 ein Programm umfasst, das durch den ersten Kern 21c ausgeführt wird, und ein Programm, das durch den zweiten Kern 21d ausgeführt wird.
  • Hier wird der Aufbau des Computers 10 anhand von 1 und 3 beschrieben.
  • Der Computer 10 ist mit einer Anzeige 11, einem Festplattenlaufwerk (Hard Disk Drive, HDD) 12, einer Zentralprozessoreinheit (CPU) 13, einem Nur-Lese-Speicher (ROM) 14, einem RAM 15, einer Eingabevorrichtung 16, einem Lesegerät 17 und dgl. versehen. Der Computer 10 ist dazu fähig, den Speicherinhalt zu lesen, der auf einem Speichermedium 18 gespeichert ist. Der automatische Parallelisierungscompiler 1 wird vom Speichermedium 18 gespeichert. Daher erzeugt der Computer 10 das Parallelprogramm 21a1 durch Ausführen des automatischen Parallelisierungscompilers 1, der vom Speichermedium 18 gespeichert ist.
  • Mit Bezug auf den Aufbau des Computers 10 und des Speichermediums 18 wird auf einen Personal Computer 100 und ein Speichermedium 180 verwiesen, die in einer veröffentlichten Patentanmeldung JP2015-1807A offenbart sind. Man bemerke, dass der automatische Parallelisierungscompiler 1 zusätzlich zu dem, was in der JP2015-1807A offenbart ist, eine Extraktionsprozedur, eine Berechnungsprozedur und eine Bestimmungsprozedur umfasst.
  • Zudem umfasst der Computer 10 jeweils wie in 3 gezeigt einen Zugriffsinformationsanalysator 10a, einen Abhängigkeitsanalysator 10b, eine Umbauvorrichtung 10c, einen Scheduler 10d, einen Rechner 10e für den Grad der Parallelisierung und eine Bestimmungsvorrichtung 10f als Funktionsblöcke.
  • Der Zugriffsinformationsanalysator 10a analysiert Datenzugriffsinformation jedes MTs im Einzelprogramm. Das heißt, dass der Zugriffsinformationsanalysator 10a die Lesefunktionen und Schreibfunktionen der Daten durch jeden MT analysiert. Wie in 7 dargestellt ist der Datenzugriff des 11. MT Lesen der (d. h. Lesezugriff auf die) Daten X und Daten Y, der Datenzugriff des 12. MT ist Schreiben der Daten X und der Datenzugriff des 13. MT ist Schreiben der Daten X und der Daten Y. Zudem ist wie in 10 dargestellt der Datenzugriff des 21. MT, des 22. MT und des 23. MT Schreiben der Daten X.
  • Der Abhängigkeitsbeziehungsanalysator 10b analysiert die Datenabhängigkeitsbeziehung des Einzelprogramms und extrahiert MTs, die parallelisiert werden können.
  • Die Umbauvorrichtung 10c baut die Datenabhängigkeitsbeziehung in Anbetracht der Invalidierungsinformation 30 um. Zudem erzeugt die Umbauvorrichtung 10c zahlreiche Datenabhängigkeitsmuster auf der Grundlage der umgebauten Datenabhängigkeitsbeziehung.
  • Aus den Datenabhängigkeitsbeziehungen, die durch die Invalidierungsinformation 30 gezeigt werden, kann die WW-Beziehung nun aufgrund gleichzeitigen Ausführens möglicherweise eine Datenstörung verursachen und kann einen Datenverlust verursachen. Die Daten können durch einen solchen Vorgang zerstört werden. Das heißt, unter den in 6 gezeigten ersten bis dritten Fällen kann der zweite Fall unter einem Scheduling leiden, das zwei MTs gleichzeitig ausführt, wobei die Datenabhängigkeitsbeziehung zwischen zwei MTs ignoriert wird und als Ergebnis kann in einem solchen Fall eine Datenstörung auftreten.
  • Daher muss der Synchronisierungsvorgang zum Synchronisieren von Abläufen zwischen zwei WW-Beziehungs-MTs beziehungsweise MTs mit Schreib-Schreib-Beziehung durchgeführt werden. Das heißt, dass eine Datenstörung verhindert werden kann, wenn zwei MTs, die dieselben Daten schreiben, daran gehindert werden, gleichzeitig ausgeführt zu werden, indem der Synchronisationsprozess durchgeführt wird.
  • Somit extrahiert die Umbauvorrichtung 10c eine WW-Beziehung auf dieselben Daten als eine synchron abhängige Beziehung aus den Datenabhängigkeitsbeziehungen, die durch die Invalidierungsinformation 30 gezeigt sind. Man bemerke, dass die Umbauvorrichtung 10c dazu fähig ist, die synchron abhängige Beziehung aus einem Analyseergebnis des Zugriffsinformationsanalysators 10a oder dergleichen zu extrahieren.
  • Zudem ignoriert die Umbauvorrichtung 10c eine RW-Beziehung beziehungsweise Lese-Schreib-Beziehung und eine WR-Beziehung bzw. Schreib-Lese-Beziehung aus den durch die Invalidierungsinformation 30 gezeigten Datenabhängigkeitsbeziehungen.
  • Andererseits erzeugt die Umbauvorrichtung 10c ein Datenabhängigkeitsmuster hinsichtlich einer WW-Beziehung, die durch die Invalidierungsinformation 30 gezeigt ist, indem eine Ausführungsfolge der MTs mit der WW-Beziehung umgeschaltet wird, das heißt umgedreht oder umgekehrt wird.
  • Zudem können einige der RW-Beziehungen und WR-Beziehungen, die durch die Invalidierungsinformation 30 gezeigt sind, hinsichtlich der Steuerung gleichzeitig ablaufen, das heißt, manche dieser Beziehungen können das Scheduling oder das Anpassen eines Datenaktualisierungszeitpunkts verwenden. Wenn diese Beziehungen ungültig gemacht werden, kann das dazu führen, dass der Datenaktualisierungszeitpunkt unpassend wird und die Datenkonsistenz kann sich verschlechtern.
  • Daher erhält die Umbauvorrichtung 10c Information 40 über Synchronisierungsdaten, die eine Gruppe von Daten zeigt, die einer Steuerbeschränkung gehorchen oder folgen – das heißt eine Steuerung, wie beispielsweise eine Ausführungsfolge oder eine Ausführungszeit der RW-Beziehung oder der WR-Beziehung steuern. In der Information 40 über Synchronisierungsdaten ist eine Gruppe von Daten, die einer Steuerbeschränkung für den Zeitpunkt der RW-/WR-Beziehung folgen können, beispielsweise in Listenform festgelegt oder in Form einer Spezifizierung des Programmcodes oder dergleichen aufgeschrieben.
  • Beispielsweise kann eine Steuerbeschränkung für den Zeitpunkt des Daten-Lesens/-Schreibens bei einer Motorsteuerung verwendet werden, in der Einspritzmengendaten oder Einspritzwinkeldaten miteinander synchronisiert sind. Eine Unterbrechung, die beispielsweise durch eine Anordnung/Reihenfolge einer Softwarecodeausführung verursacht wird, kann Einspritzmengendaten, aber nicht Einspritzwinkeldaten, aktualisieren, was zu einer Datendesynchronisierung führt. Demgemäß sollten die Daten mit ähnlichen Raten wieder aufgefrischt/aktualisiert werden, um Daten für eine geeignete Motorsteuerung bzw. Brennkraftmaschinensteuerung zu synchronisieren.
  • Weiterhin kann die Umbauvorrichtung 10c zudem aus den Datenabhängigkeitsbeziehungen, die durch die Invalidierungsinformation 30 gezeigt werden, die Datenabhängigkeitsbeziehung extrahieren, die Schreiben und Lesen der Daten enthält, die von der Information 40 über Synchronisationsdaten als eine synchron abhängige Beziehung gezeigt ist, wenn die Datenabhängigkeitsbeziehung, die Schreiben und Lesen umfasst, die RW-Beziehung und die WR-Beziehung ist.
  • Die Umbauvorrichtung 10c erzeugt das Datenabhängigkeitsmuster, in dem die Ausführungsfolge der MTs mit RW-Beziehungen für die RW-Beziehung(en) der Daten umgestellt/umgekehrt wird, die die Information 40 über Synchronisationsdaten zeigt, die aus den RW-Datenabhängigkeitsbeziehungen extrahiert ist/sind, die die Invalidierungsinformation 30 zeigt.
  • Gleichermaßen erzeugt die Umbauvorrichtung 10c das Datenabhängigkeitsmuster, in dem eine Ausführungsabfolge der WR-Beziehungs-MTs umgestellt/umgekehrt wird, für die durch die Information 40 über Synchronisierungsdaten gezeigten WR-Beziehung(en) der Daten, die aus den WR-Datenabhängigkeitsbeziehungen extrahiert wird/werden, die von der Invalidierungsinformation 30 gezeigt ist.
  • Man bemerke, dass die vorliegende Offenbarung die Datenabhängigkeitsbeziehungen, die durch die Information 40 über die Synchronisationsdaten gezeigt werden, nicht extrahieren muss. Beispielsweise würde die vorliegende Offenbarung auch arbeiten, wenn die WW-Beziehung als synchronisationsabhängige Beziehung extrahiert wird.
  • Wie vorstehend beschrieben ist die Umbauvorrichtung 10c eine Komponente zum Extrahieren einer synchronisationsabhängigen Beziehung, wodurch sie als ein Extraktor dient. Man bemerke, dass der Computer 10 eine Beziehung extrahiert, indem er den automatischen Parallelisierungscompiler ausführt. Daher kann die Umbauvorrichtung 10c hier auch als eine Extraktionsprozedur bezeichnet werden.
  • Hier wird die Erzeugung des Datenabhängigkeitsmusters für den 21. MT bis 23. MT hinsichtlich des zweiten Beispiels mit Bezug auf 10, 11 und 12 beschrieben. Man bemerke, dass der Synchronisationsablauf an einem Zweirichtungspfeil der dicken Linie in 11 hinzugefügt wird.
  • Wie in 10 gezeigt sind im zweiten Beispiel die Datenabhängigkeitsbeziehung des 21. MTs und des 23. MTs und die Datenabhängigkeitsbeziehung des 22. MTs und des 23. MTs nach der Invalidierungsinformation 30 ignorierbar. Sowohl der 21. MT als auch der 23. MT befinden sich jedoch in einer WW-Beziehung. In ähnlicher Weise ist die Beziehung des 22. MTs und des 23. MTs eine WW-Beziehung. Das heißt, weil die Beziehung des 21. MTs und des 23. MTs und die Beziehung des 22. MTs und des 23. MTs wie in 11 gezeigt eine WW-Beziehung „zwischen Kernen” sind, die zwei unterschiedliche Kerne umfasst, kann die Verarbeitungsreihenfolge passend zum Schedulingergebnis bestimmt werden, und der Synchronisierungsprozess kann hinzugefügt werden, um ein simultanes Schreiben derselben Daten zu verhindern.
  • Daher erzeugt der Computer 10 das Datenabhängigkeitsmuster wie in 12 veranschaulicht.
  • Das erste Datenabhängigkeitsmuster ist ein Muster, in dem die Verarbeitungsreihenfolge des 21. MTs bis 23. MTs gegenüber derjenigen im Einzelprogramm ausgetauscht oder umgekehrt wird.
  • Das zweite Datenabhängigkeitsmuster ist ein Muster, in dem die Verarbeitungsreihenfolge des 22. MTs und des 23. MTs gegenüber derjenigen im Einzelprogramm ausgetauscht wird.
  • Das dritte Datenabhängigkeitsmuster ist ein Muster, in dem die Verarbeitungsreihenfolge des 21. MTs und des 23. MTs beibehalten wird, das heißt gegenüber dem im Einzelprogramm unverändert gehalten wird.
  • Man bemerke, dass im ersten Datenabhängigkeitsmuster die Datenabhängigkeitsbeziehung des 23. MTs und des 22. MTs, die durch einen gestrichelten Pfeil gezeigt wird, keinen wirklichen Effekt hat.
  • Gleichermaßen hat im dritten Datenabhängigkeitsmuster die Datenabhängigkeitsbeziehung des 21. MTs und des 23. MTs, die durch einen gestrichelten Pfeil gezeigt wird, keinen wirklichen Effekt.
  • Daher ist für diese Beziehungen der Synchronisationsprozess zur Zeit der Parallelausführung unnötig.
  • Wie vorstehend beschrieben erzeugt der Computer 10 für alle extrahierten synchron abhängigen Beziehungen Datenabhängigkeitsmuster vollständig entweder durch Beibehalten oder Umkehren einer Verarbeitungsreihenfolge der zwei Einheitsprozesse relativ zu der Verarbeitungsreihenfolge der zwei Einheitsprozesse im Einzelprogramm. Das „vollständige Erzeugen” der Datenabhängigkeitsmuster bedeutet, dass alle Kombinationen der involvierten MTs hinsichtlich der Verarbeitungsreihenfolgen zwischen ihnen ausgeschöpft werden.
  • Eine solche vollständige Erzeugung aller Kombinationsmuster dient zum Maximieren der Kapazitätsverbesserung, die durch Ignorieren/gedankliches Lösen der Datenabhängigkeitsbeziehungen erzielt wird, wenn die in der vorliegenden Offenbarung vorgeschlagene Technik zum Eliminieren eines Ausschlussprozesses zwischen Kernen durchgeführt wird.
  • Für jedes aus mehreren der Datenabhängigkeitsmuster, die durch die Umbauvorrichtung 10c erzeugt werden, berechnen der Scheduler 10d und der Rechner 10e für den Grad der Parallelisierung einen Grad der Parallelisierung des erzeugten Datenabhängigkeitsmusters, während das Scheduling durchgeführt wird.
  • Das heißt, für jedes aus den zahlreichen Datenabhängigkeitsmustern, die in der vorstehend beschriebenen Weise erzeugt werden, machen der Scheduler 10d und der Rechner 10e für den Grad der Parallelisierung individuell ein „Schedule” bzw. einen Plan und berechnen dann den Grad der Parallelisierung des einzelnen Schedules.
  • Man bemerke, dass der Scheduler 10d und der Rechner 10e für den Grad der Parallelisierung als ein Rechner dienen können. Zudem führt der Computer 10 ein Scheduling und eine Berechnung des Grads der Parallelisierung durch, indem er den automatischen Parallelisierungscompiler 1 ausführt. Daher können der Scheduler 10d und der Rechner 10e für den Grad der Parallelisierung auch als ein Berechnungsvorgang bzw. als Berechnungsprozedur dienen.
  • Die Bestimmungsvorrichung 10f nimmt den maximalen Grad der Parallelisierung auf oder passt sich daran an. Das heißt, durch Bestimmen einer Aufnahme des Schedulingergebnisses, das einen maximalen Grad der Parallelisierung erbringt, erzeugt die Bestimmungsvorrichtung 10f ein Parallelprogramm, das eine maximale Anzahl von MTs parallelisiert.
  • Das heißt, durch Durchführen eines Schedulings für alle Datenabhängigkeitsmuster und durch Berechnen und Vergleichen des Grads der Parallelisierung dieser Muster ermöglicht der Computer 10, ein Parallelprogramm mit maximaler Kapazität mit der maximalen Anzahl von MTs zu erzeugen.
  • Man bemerke, dass der Grad der Parallelisierung ein Grad der Verbesserung der schlechtesten Ausführungszeit des Parallelprogramms relativ zur Ausführungszeit vor der Parallelisierung des Einzelprogramms ist. Das heißt, je größer der Anstieg der Zahl der parallelisierten MTs ist, umso größer ist der Grad der Parallelisierung.
  • Wie vorstehend erläutert nimmt der Computer 10 ein Schedulingergebnis an, das den Parallelisierungsgrad maximiert, indem er den automatischen Parallelisierungscompiler ausführt. Daher kann die Bestimmungsvorrichtung 10f als Bestimmungsvorgang dienen.
  • Weiterhin kann der Computer 10 ein Parallelprogramm erzeugen, ohne das/die Datenabhängigkeitsmuster zu erzeugen.
  • In einem solchen Fall baut die Umbauvorrichtung 10c die Datenabhängigkeitsbeziehung um, die die Invalidierungsinformation 30 in Betracht zieht. Das heißt, aus den durch die Invalidierungsinformation 30 gezeigten Datenabhängigkeitsbeziehungen extrahiert die Umbauvorrichtung 10c eine WW-Beziehung auf die gleichen Daten als die synchron abhängige Beziehung.
  • Die Umbauvorrichtung 10c kann weiterhin aus den Datenabhängigkeitsbeziehungen, die durch die Invalidierungsinformation 30 gezeigt werden, eine Datenabhängigkeitsbeziehung als die synchron abhängige Beziehung extrahieren, die Schreiben und Lesen auf dieselben Daten enthält, die von der Information 40 über die Synchronisationsdaten gezeigt ist.
  • Der Scheduler 10d behält die Verarbeitungsreihenfolge der zwei MTs entweder bei oder kehrt sie um, die von der Umbauvorrichtung 10c als die synchron abhängige Beziehung extrahiert werden, und erzeugt zahlreiche Schedule-Muster.
  • Der Rechner 10e für den Grad der Parallelisierung berechnet den Grad der Parallelisierung jedes der Schedule-Muster aus dem Schedulingergebnis. Zudem bestimmt die Bestimmungsvorrichtung 10f, aus den zahlreichen Schedule-Mustern ein Schedule-Muster aufzunehmen, in dem der Grad der Parallelisierung maximiert ist, um ein Parallelprogramm zu erzeugen, das eine Gesamtverarbeitungszeit der parallelisierten MTs maximiert. Im Verlauf einer solchen Bestimmung wählt die Bestimmungsvorrichtung 10f ein Schedule-Muster, das ein gleichzeitiges Schreiben auf dieselben Daten durch die zwei MTs verhindert, die die synchron abhängige Beziehung aufweisen. Zudem wählt die Bestimmungsvorrichtung 10f bei der Nutzung der Information 40 über die Synchronisationsdaten ein Schedule-Muster so, dass eine Zeitpunktsteuerbeschränkung beibehalten wird.
  • Nachstehend wird mit Bezug auf 7, 8 und 9 eine Erzeugung des Schedule-Musters für den 11. MT bis 13. MT für das erste Beispiel beschrieben.
  • Man bemerke, dass ein Zweirichtungspfeil der dicken Linie in 8 der Punkt ist, an dem der Synchronisationsprozess hinzugefügt wird.
  • Wie in 7 gezeigt, ist nach der Invalidierungsinformation 30 das erste Beispiel ein Beispiel, in dem die Datenabhängigkeitsbeziehung des 11. MTs und des 13. MTs und die Datenabhängigkeitsbeziehung des 12. MTs und des 13. MTs beide ignorierbar/gedanklich lösbar sind. Der 12. MT und der 13. MT weisen jedoch eine WW-Beziehung auf. Das heißt, weil der 12. MT und der 13. MT wie in 8 gezeigt mit einer WW-Beziehung zwischen Kernen verknüpft sind, die zwei unterschiedliche Kerne involviert, wird die Verarbeitungsreihenfolge des 12. MTs und 13. MTs entsprechend des Schedulingergebnisses bestimmt, die 12. und 13. MTs werden so gesteuert, dass kein gleichzeitiges Schreiben derselben Daten durchgeführt wird, indem der Synchronisierungsprozess hinzugefügt wird.
  • Dann erzeugt der Computer 10 zahlreiche Schedule-Muster wie in 9 gezeigt. Das heißt, die Schedule-Muster werden als fünf Muster erzeugt, also als erstes Muster, zweites Muster, drittes Muster, viertes Muster und fünftes Muster erzeugt.
  • Man bemerke, dass das vierte Muster wie in 9 veranschaulicht ein gleichzeitiges Schreiben auf die Daten vom 12. MT und vom 13. MT aufweist. Daher wählt die Bestimmungsvorrichtung 10f das vierte Muster nicht aus. Das heißt der Computer 10 führt ein Scheduling unter Ausschluss des vierten Musters durch.
  • Zudem dienen der Scheduler 10d, der Rechner 10e für den Grad der Parallelisierung und die Bestimmungsvorrichtung 10f als ein Generator bzw. Erzeuger. Außerdem dienen der Scheduler 10d, der Rechner 10e für den Grad der Parallelisierung und die Bestimmungsvorrichtung 10f auch als Erzeugungsvorgang, da der Computer 10 einen Parallelvorgang durch Aufruf des automatischen Parallelisierungscompilers 1 erzeugt.
  • Hier wird der Verarbeitungsablauf des Computers 10 anhand von Ablaufplänen beschrieben, die in 4 und 5 gezeigt sind.
  • 4 und 5 zeigen eine Abfolge von Verarbeitungsvorgängen des Computers 10. Der Computer 10 beginnt mit einem in 4 gezeigten Prozess, wenn ein Ablauf gestartet wird.
  • Wenn der Computer 10 in Schritt S12 der 4 ein JA-Urteil fällt, geht der Vorgang zu Schritt S19 (d. h. einem A im Kreis) in 5 weiter.
  • Zudem geht der Computer 10 zu Schritt S11 (d. h. einem „B” im Kreis) in 4 weiter, wenn in Schritt S21 der 5 ein NEIN-Urteil gefällt wird, und wenn der Ablauf des Schritts S24 abgeschlossen ist.
  • In Schritt S10 werden die Datenabhängigkeitsbeziehungen aller MTs analysiert. Anders gesagt wird eine Analyse hinsichtlich der Bestimmung durchgeführt, ob eine aktuell bearbeitete Datenbeziehung eine WW-Beziehung, eine WR-Beziehung oder eine RW-Beziehung ist.
  • Man bemerke, dass die „Datenabhängigkeitsbeziehung” in 4 und anderen Figuren als „ABHÄNGIGKEIT” vereinfacht ist.
  • In den Schritten S11 und S12 wird bestimmt, ob es irgendeinen nicht bearbeiteten MT hinsichtlich der Invalidierungsinformation 30 gibt, indem der Reihenfolge nach Verarbeitungsobjekt-MTs gescannt werden, das heißt MTs einer nach dem anderen geprüft werden.
  • Das heißt, es wird bestimmt, ob es in allen in Schritt S10 analysierten Datenabhängigkeitsbeziehungen, irgendeinen MT gibt, für den ein Bestimmungsvorgang hinsichtlich dessen, ob die Invalidierungsinformation 30 zutrifft oder nicht, noch NICHT durchgeführt wurde.
  • Wenn bestimmt wird, dass es einen nicht verarbeiteten MT gibt, geht der Vorgang zu Schritt S19 weiter. Andererseits geht der Vorgang zu Schritt S13 weiter, wenn bestimmt wird, dass es keinen unverarbeiteten MT gibt.
  • In Schritt S19 wird bestimmt, ob die Invalidierungsinformation 30 vollständig hinsichtlich dessen verarbeitet ist oder nicht, dass sie auf die in Schritt S12 aufgenommenen MTs anwendbar ist/zu diesen passt. Das heißt, in Schritt S19 wird bestimmt, dass ein Bestimmungsvorgang hinsichtlich dessen abgeschlossen ist, ob die Invalidierungsinformation 30 über alle in Schritt S12 aufgenommenen Verarbeitungsobjekt-MTs zutrifft oder nicht.
  • In Schritt S20 werden alle Datenabhängigkeitsbeziehungen gescannt bzw. abgetastet. Das bedeutet, die Datenabhängigkeitsbeziehungen für alle Verarbeitungsobjekt-MTs (d. h. die in Schritt S12 aufgenommenen) werden gescannt bzw. abgetastet.
  • In Schritt S21 wird bestimmt, ob die Invalidierungsinformation 30 vorliegt, die noch nicht verarbeitet wurde. Das heißt, es wird bestimmt, ob irgendeine nicht verarbeitete Invalidierungsinformation 30 für jedes der Verarbeitungsobjekt-MTs existiert, und wenn bestimmt wird, dass sie existiert, geht der Vorgang zu Schritt S22 weiter. Wenn andererseits bestimmt wird, dass sie nicht existiert, kehrt der Vorgang zu Schritt S11 zurück.
  • In Schritt S22 wird bestimmt, ob eine Datenabhängigkeitsbeziehung eine WW-Beziehung ist. Das heißt, es wird bestimmt, ob die Datenabhängigkeitsbeziehung, für die die Invalidierungsinformation 30 gilt, eine WW-Beziehung ist, anders gesagt wird bestimmt, ob die Datenabhängigkeitsbeziehung eine synchron abhängige Beziehung ist oder nicht.
  • Wenn bestimmt wird, dass die Beziehung eine WW-Beziehung ist, wird in Betracht gezogen, dass die Beziehung eine synchron abhängige Beziehung ist, und der Vorgang geht zu Schritt S23 weiter.
  • Wenn andererseits bestimmt wird, dass die Beziehung keine WW-Beziehung ist, wird angenommen, dass die Beziehung keine synchron abhängige Beziehung ist, und der Vorgang geht zu Schritt S25 weiter.
  • In Schritt S23 wird die Abhängigkeitsbeziehung der bearbeiteten Daten als ein Umkehrkandidat festgelegt. Das heißt, die Beziehung, für die (i) die Invalidierungsinformation 30 gilt, und (ii) die als eine WW-Beziehung bestimmt ist, wird als ein Umkehrkandidat festgelegt.
  • Andererseits wird in Schritt S25 die aktuell bearbeitete Abhängigkeitsbeziehung der bearbeiteten Daten gelöscht. Das heißt, die Beziehung wird gelöscht, für die die Invalidierungsinformation 30 gilt.
  • In Schritt S24 wird die relevante Invalidierungsinformation 30 als bereits verarbeitet bestimmt. Zudem kehrt der Vorgang zu Schritt S11 zurück, nachdem der Prozess in Schritt S24 abgeschlossen ist.
  • In Schritt S13 werden alle Kombinationsmuster der Datenabhängigkeitsbeziehungen erzeugt. Das heißt, das Datenabhängigkeitsmuster wird für alle Kombinationen von MTs wie vorstehend erläutert erzeugt. Daher kann das/die Datenabhängigkeitsmuster nachstehend auch als Kombination(en) bezeichnet werden.
  • Der Computer 10 führt den Ablauf durch, der in den nachfolgenden Schritten S14–S18 gezeigt ist, indem er mehrere Datenabhängigkeitsmuster verwendet, die in der vorstehend beschriebenen Weise erzeugt werden, und erzeugt das Parallelprogramm 21a1.
  • In Schritt S14 wird bestimmt, ob alle Kombinationen einmal verarbeitet wurden (das heißt, ob die Schritte S16–S18 einmal für alle Kombinationsmuster durchgeführt werden). Das heißt, es wird bestimmt, ob für jedes aus all den Kombinationsmustern ein Scheduling und eine Berechnung des Grads der Parallelisierung durchgeführt wurden.
  • Wenn bestimmt wird, dass alle Kombinationen verarbeitet wurden, geht der Ablauf zu Schritt S15 weiter. Wenn andererseits bestimmt wird, dass noch nicht alle Kombinationen verarbeitet wurden, geht der Ablauf zu Schritt S16 weiter.
  • In Schritt S15 wird der Parallelisierungscode erzeugt, indem ein Scheduling verwendet wird, das den maximalen Grad der Parallelisierung erbringt. Das heißt, dass das Parallelprogramm 21a1 auf der Grundlage eines Scheduling mit einem maximalen Grad an Parallelisierung erzeugt wird.
  • In den Schritten S16 und S17 wird bestimmt, ob es irgendwelche zirkulären Abhängigkeiten unter den Datenabhängigkeitsbeziehungen der Verarbeitungsobjekt-MTs gibt, indem Kombinationen der unverarbeiteten Datenabhängigkeitsbeziehungen abgetastet beziehungsweise gescannt werden.
  • Anders gesagt wird bestimmt, ob es irgendeine Datenabhängigkeitsbeziehung gibt, die einen Widerspruch/eine Inkonsistenz verursacht, wenn die Datenabhängigkeit in der Beziehung getauscht/umgekehrt wird.
  • Wenn bestimmt wird, dass es keine zirkulären Abhängigkeiten gibt, wird in Betracht gezogen/interpretiert, dass kein Widerspruch verursacht wird, und der Ablauf geht zu Schritt S18 weiter.
  • Wenn andererseits bestimmt wird, dass es zirkuläre Abhängigkeiten gibt, wird in Betracht gezogen/interpretiert, dass ein Widerspruch verursacht werden kann, und der Ablauf kehrt zu Schritt S14 zurück.
  • In Schritt S18 wird ein Scheduling für die Kombination der Beziehungen ohne Widerspruch durchgeführt (d. h. RELEVANTE KOMBINATION in Schritt S18 der 4), und der Grad der Parallelisierung wird für eine solche Kombination berechnet.
  • Daher ignoriert der Computer 10 wie vorstehend beschrieben die Datenabhängigkeitsbeziehungen/löst sie gedanklich auf, die nicht als synchron abhängige Beziehung aus den Datenabhängigkeitsbeziehungen extrahiert wird, die durch die Invalidierungsinformation 30 gezeigt sind.
  • Dann erzeugt der Computer 10 das Parallelprogramm 21a1 so, dass die Parallelisierung der maximalen Anzahl von MTs erzielt wird, während er das simultane Schreiben derselben Daten durch die zwei MTs verhindert, die die synchron abhängige Beziehung unter den Datenabhängigkeitsbeziehungen aufweisen, die durch die Invalidierungsinformation 30 gezeigt werden.
  • Wenn die Information 40 über die Synchronisierungsdaten erhalten wird, ignoriert der Computer 10 den Erhalt der die Datenabhängigkeitsbeziehung/löst sie gedanklich auf, die nicht als die synchron abhängige Beziehung aus den Datenabhängigkeitsbeziehungen extrahiert wird, die durch die Invalidierungsinformation 30 gezeigt ist.
  • Dann erzeugt der Computer 10 das Parallelprogramm 21a1, das die Anzahl der parallelisierten MTs maximiert, indem er (i) das simultane Schreiben auf dieselben Daten durch die zwei MTs mit der synchron abhängigen Beziehung unter den Datenabhängigkeitsbeziehungen verhindert, die durch die Invalidierungsinformation 30 gezeigt werden, und (ii), indem er bei der Zeitpunktsteuerbeschränkung wartet.
  • Dadurch wird dem Computer 10 ermöglicht, das Parallelprogramm 21a1 zu erzeugen, das die maximale Zahl von Einheitsprozessen parallelisiert, indem er die Datenabhängigkeitsbeziehung, die nicht als die synchron abhängige Beziehung extrahiert wird, aus den Datenabhängigkeitsbeziehungen, die durch die Invalidierungsinformation 30 gezeigt werden, ignoriert/gedanklich auflöst.
  • Somit ist der Computer 10 dazu fähig, das Parallelprogramm 21a1 zu erzeugen, das die Kapazität während der Parallelausführungen im Vergleich zu dem verbessern kann, das erzeugt wird, indem keine Datenabhängigkeitsbeziehung ignoriert wird.
  • Zudem kann eine Datenabnormität verursacht werden, wenn auf die Daten gleichzeitig durch zwei verschiedene Kerne 21c und 21d zugegriffen wird, d. h. besonders falls die zwei verschiedenen Kerne 21c und 21d gleichzeitig auf dieselben Daten schreiben.
  • Daher extrahiert der Computer 10 eine WW-Beziehung für dieselben Daten als die synchron abhängige Beziehung unter den Datenabhängigkeitsbeziehungen, die durch die Invalidierungsinformation 30 gezeigt sind. Dann erzeugt der Computer 10 das Parallelprogramm 21a1, das die maximale Anzahl von MTs parallelisiert, während er das simultane Schreiben auf dieselben Daten durch die zwei MTs mit der synchron abhängigen Beziehung verhindert.
  • Daher wird es dem Computer 10 ermöglicht, die Beschränkung zum Erzeugen des Parallelprogramms 21a1 im Vergleich zur herkömmlichen Beschränkung (i) zum Verhindern des simultanen Schreibens auf dieselben Daten durch die zwei MTs und (ii) zum Verhindern eines simultanen Auftretens des Schreibens durch einen MT und des Lesens durch den anderen MT zu verringern.
  • Das heißt, anders gesagt kann der Computer 10 aus den Datenabhängigkeitsbeziehungen, die durch die Invalidierungsinformation 30 gezeigt werden, die WR-Beziehung und die RW-Beziehung auf dieselben Daten ignorieren/gedanklich lösen, wodurch er die Beschränkung hinsichtlich der Erzeugung des Parallelprogramms 21a1 verringert.
  • Zudem kann der Computer 10 sich möglicherweise gegenseitig beeinflussende MTs extrahieren, die eine gegenseitige Datenstörung verursachen können, wenn er eine Parallelausführung der zahlreichen MTs durch Ignorieren/gedankliches Lösen der Datenabhängigkeitsbeziehung für die zahlreichen Kerne durchführt. Daher schafft der Computer 10 nach der vorliegenden Offenbarung nicht nur einen automatischen Erzeugungsvorgang eines Parallelisierungscodes, sondern stellt auch einen Prozess/eine Maßnahme zur Verhinderung einer gegenseitigen Beeinflussung bereit.
  • Zudem kann der Computer 10 durch Nutzen der Information 40 über synchronisierte Daten die synchron abhängige Beziehung in Anbetracht der Steuerbeschränkung neben dem in Betracht ziehen der WW-Beziehung extrahieren. Eine solche Steuerbeschränkung kann als ein notwendiger Faktor zum Ausführen eines Ausschlussprozesses zwischen Kernen dienen, der unter Nutzung von Software nicht analysierbar ist.
  • Der Computer 10 wird jedoch befähigt, mit einer solchen Situation umzugehen, indem er die Information 40 über synchronisierte Daten verwendet, das heißt, ohne den Prozess zum Ausschluss zwischen Kernen auszuführen.
  • Man bemerke, dass der Computer 10 das Parallelprogramm durch Ausführen des automatischen Parallelisierungscompilers 1 erzeugt. Daher kann der automatische Parallelisierungscompiler 1 dieselben Effekte wie der Computer 10 erzielen.
  • Als Nächstes wird der Aufbau der fahrzeuginternen Vorrichtung 20 beschrieben.
  • Die fahrzeuginterne Vorrichtung 20 umfasst wie in 2 gezeigt einen Mehrkernprozessor 21, eine Kommunikationsvorrichtung bzw. einen Kommunikator 22, einen Sensor 23 und einen Eingabe-/Ausgabeanschluss 24. Der Mehrkernprozessor 21 weist ein ROM 21a, ein RAM 21b, einen ersten Kern 21c und einen zweiten Kern 21d auf.
  • Die fahrzeuginterne Vorrichtung 20 ist für eine Maschinensteuervorrichtung, eine Hybridsteuervorrichtung und dergleichen einsetzbar, die beispielsweise in einem Fahrzeug angeordnet sind.
  • Der erste Kern 21c und der zweite Kern 21d führen eine Maschinensteuerung, eine Hybridsteuerung und dergleichen durch Ausführen des Parallelprogramms 21a1 durch. Das heißt, die fahrzeuginterne Vorrichtung 20 führt die Maschinensteuerung, die Hybridsteuerung und dergleichen durch Ausführen der MTs unter Verwendung des ersten Kerns 21c und des zweiten Kerns 21d durch, denen die MTs zugeordnet sind.
  • Daher umfasst die fahrzeuginterne Vorrichtung 20 das Parallelprogramm 21a1, in dem die größere Anzahl von MTs parallelisiert sind. Somit kann die fahrzeuginterne Vorrichtung 20 jeden dieser MTs optimal durchführen.
  • Zudem wird hinsichtlich eines RAM 420, eines Kommunikators 430, eines Sensors 450 und eines Eingabe-/Ausgabeanschlusses 460 hinsichtlich der Details des RAM 21b, der Kommunikation 22, des Sensors 23 und des Eingabe-/Ausgabeanschlusses 24 auf die Patentschrift JP 2015-1807A verwiesen, in der diese offenbart sind.
  • Obwohl die vorliegende Offenbarung in Verbindung mit bevorzugten Ausführungsformen derselben anhand der beigefügten Figuren beschrieben wurde, ist anzumerken, dass verschiedene Änderungen und Modifizierungen für Fachleute offensichtlich werden, und solche Änderungen, Modifizierungen und zusammengefasste Schemata sind als innerhalb des Gebiets der Offenbarung zu verstehen, das durch die beigefügten Ansprüche definiert ist.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • JP 2015-1807 [0002]
    • JP 2015-1807 A [0039, 0068, 0162]

Claims (13)

  1. Parallelisierungsverfahren zum Erzeugen eines Parallelprogramms (21a1) für einen Mehrkernmikrocomputer (i) auf der Grundlage eines Einzelprogramms für einen Einkernmikrocomputer und (ii-a) durch Durchführen einer Datenabhängigkeitsanalyse mit Bezug auf Datenabhängigkeitsbeziehungen zwischen Einheitsprozessen des Einzelprogramms, die jeweils auf gleiche Daten zugreifen und (ii-b) durch Parallelisieren von parallelisierbaren Einheitsprozessen des Einzelprogramms, wobei das Parallelisierungsverfahren Folgendes umfasst: eine Extraktionsprozedur (10c), die (i) Invalidierungsinformation (30) erhält, die eine ignorierbare Beziehung unter mehreren der Datenabhängigkeitsbeziehungen anzeigt, und (ii) aus der Invalidierungsinformation eine Schreiben-Schreiben Datenabhängigkeitsbeziehung, die einen Zugriff auf dieselben Daten zeigt, als eine synchronabhängige Beziehung extrahiert; und eine Erzeugungsprozedur (10d, 10e, 10f), die das Parallelprogramm erzeugt, um eine maximale Anzahl der parallelisierbaren Einheitsprozesse zu parallelisieren, während sie Datenabnormität durch (a) Ignorieren anderer Datenabhängigkeitsbeziehungen außer der synchronabhängigen Beziehung und (b) Verhindern einer gleichzeitigen Ausführung der zwei Einheitsprozesse verhindert, die die synchronabhängige Beziehung aufweisen.
  2. Parallelisierungsverfahren nach Anspruch 1, wobei die Extraktionsprozedur (i) gleichzeitig benötige Information (40) erhält, die spezifische Daten aus mehreren Daten zeigt, die einer Steuerbeschränkung hinsichtlich eines Zeitpunkts des Schreibens und Lesens unterliegen, und (ii) aus den Datenabhängigkeitsbeziehungen, die durch die Invalidierungsinformation gezeigt sind, eine Datenabhängigkeitsbeziehung extrahiert, die das Schreiben und Lesen der spezifischen Daten umfasst, die durch die gleichzeitig notwendige Information gezeigt ist, wobei die extrahierte Datenabhängigkeitsbeziehung als die synchronabhängige Beziehung extrahiert wird, und die Erzeugungsprozedur (iii) unter den durch die Invalidierungsinformation gezeigten Datenabhängigkeitsbeziehungen die Datenabhängigkeitsbeziehung ignoriert, die nicht durch die Extraktionsprozedur extrahiert ist, und (iv) das Parallelprogramm erzeugt, das die maximale Anzahl der Parallelisierung der Einheitsprozesse erreicht, während sie (a) ein gleichzeitiges Schreiben auf dieselben Daten durch die zwei Einheitsprozesse mit der synchronabhängigen Beziehung verhindert und (b) die Steuerbeschränkung hinsichtlich des Zeitpunkts beibehält.
  3. Parallelisierungsverfahren nach Anspruch 1 oder 2, wobei die Erzeugungsprozedur das Parallelprogramm durch entweder Beibehalten oder Umkehren einer Verarbeitungsreihenfolge der zwei Einheitsprozesse relativ zur Verarbeitungsreihenfolge der zwei Einheitsprozesse im Einzelprogramm erzeugt.
  4. Parallelisierungsverfahren nach Anspruch 1 oder 2, wobei die Extraktionsprozedur vollständig für alle extrahierten synchronabhängigen Beziehungen Datenabhängigkeitsmuster erzeugt, indem sie eine Verarbeitungsreihenfolge der zwei Einheitsprozesse relativ zur Verarbeitungsreihenfolge der zwei Einheitsprozesse im Einzelprogramm beibehält oder umkehrt.
  5. Parallelisierungsverfahren nach Anspruch 4 weiter mit den folgenden Schritten in der Erzeugungsprozedur: einer Berechnungsprozedur (10d, 10e), die einen Grad einer Parallelisierung für jedes aus mehreren Schedulingergebnissen auf der Grundlage eines Schedulings jedes der erzeugten Datenabhängigkeitsmuster berechnet; und einer Bestimmungsprozedur (10f), die das Parallelprogramm mit der Anzahl von parallelisierten Einheitsprozessen erzeugt, die durch Aufnehmen eines Schedulingergebnisses maximiert sind, das einen maximalen Grad der Parallelisierung aufweist, der durch die Berechnungsprozedur berechnet wurde.
  6. Parallelisierungsverfahren nach einem der Ansprüche 1–5, wobei die zahlreichen Einheitsprozesse des Einzelprogramms hinsichtlich des Unterteilens in mehrere Funktionsgruppen unterteilbar sind, und die Invalidierungsinformation als die ignorierbare Beziehung die Datenabhängigkeitsbeziehung zwischen den Einheitsprozessen zeigt, die jeweils in unterschiedliche Funktionsgruppen unterteilt sind.
  7. Ein Parallelisierungswerkzeug zum Erzeugen eines Parallelprogramms (21a1) für einen Mehrkernmikrocomputer (i) auf der Grundlage eines Einzelprogramms für einen Einkernmikrocomputer und (ii-a) durch Durchführen einer Datenabhängigkeitsanalyse für Datenabhängigkeitsbeziehungen zwischen Einheitsprozessen des Einzelprogramms, die jeweils auf gleiche Daten zugreifen und (ii-b) durch Parallelisieren von parallelisierbaren Einheitsprozessen des Einzelprogramms, wobei das Parallelisierungswerkzeug Folgendes umfasst: einen Extraktor (10c), der (i) Invalidierungsinformation (30) erhält, die eine ignorierbare Beziehung zwischen mehreren der Datenabhängigkeitsbeziehungen anzeigt und (ii) aus der Invalidierungsinformation eine Schreiben-Schreiben-Datenabhängigkeitsbeziehung extrahiert, die einen Zugriff auf dieselben Daten als eine synchronabhängige Beziehung zeigt; und einen Erzeuger (10d, 10e, 10f), der das Parallelprogramm zum Parallelisieren einer maximalen Anzahl der parallelisierbaren Einheitsprozesse erzeugt, während er Datenabnormität verhindert, indem er (i) andere Datenabhängigkeitsbeziehungen außer der synchronabhängigen Beziehung ignoriert und (ii) eine gleichzeitige Ausführung der zwei Einheitsprozesse mit der synchronabhängigen Beziehung verhindert.
  8. Parallelisierungswerkzeug nach Anspruch 7, wobei der Extraktor (i) gleichzeitig benötigte Information (40) erhält, die aus mehreren Daten spezifische Daten zeigt, die eine Steuerbeschränkung hinsichtlich eines Zeitpunkts des Schreibens und Lesens abwarten müssen, und (ii) aus den Datenabhängigkeitsbeziehungen, die durch die Invalidierungsinformation gezeigt sind, eine Datenabhängigkeitsbeziehung extrahiert, die das Schreiben und Lesen der spezifischen Daten umfasst, die durch die gleichzeitig benötigte Information gezeigt sind, wobei die extrahierte Datenabhängigkeitsbeziehung als die synchronabhängige Beziehung extrahiert ist, und der Generator (iii) unter den Datenabhängigkeitsbeziehungen, die durch die Invalidierungsinformation gezeigt sind, die Datenabhängigkeitsbeziehung ignoriert, die durch den Extraktor nicht extrahiert wird und (iv) das Parallelprogramm erzeugt, das die maximale Anzahl an Parallelisierungen der Einheitsprozesse erzielt, während er (a) ein gleichzeitiges Schreiben auf dieselben Daten durch die zwei Einheitsprozesse mit der synchronabhängigen Beziehung verhindert und (b) die Steuerbeschränkung hinsichtlich des Zeitpunkts beibehält.
  9. Parallelisierungswerkzeug nach Anspruch 7 oder 8, wobei der Erzeuger das Parallelprogramm erzeugt, indem er entweder eine Verarbeitungsreihenfolge der zwei Einheitsprozesse relativ zur Verarbeitungsreihenfolge der zwei Einheitsprozesse im Einzelprogramm beibehält oder umkehrt.
  10. Parallelisierungswerkzeug nach Anspruch 7 oder 8, wobei der Extraktor vollständig für alle extrahierten synchronabhängigen Beziehungen Datenabhängigkeitsmuster erzeugt, indem er entweder eine Verarbeitungsreihenfolge der zwei Einheitsprozesse relativ zur Verarbeitungsreihenfolge der beiden Einheitsprozesse im Einzelprogramm beibehält oder umkehrt.
  11. Parallelisierungswerkzeug nach Anspruch 10, das weiterhin im Erzeuger Folgendes umfasst: einen Rechner (10d, 10e), der einen Grad der Parallelisierung für jedes aus mehreren Schedulingergebnissen auf der Grundlage eines Schedulings jedes der erzeugten Datenabhängigkeitsmuster berechnet; und eine Bestimmungsvorrichtung (10f), die das Parallelprogramm mit der Anzahl von parallelisierten Einheitsprozessen erzeugt, die unter Annahme eines Schedulingergebnisses maximiert ist, das einen vom Rechner als maximal berechneten Grad der Parallelisierung aufweist.
  12. Parallelisierungswerkzeug nach einem der Ansprüche 7 bis 11, wobei die zahlreichen Einheitsprozesse des Einzelprogramms hinsichtlich der Unterteilung in mehrere Funktionsgruppen aufteilbar sind, und die Invalidierungsinformation als die ignorierbare Beziehung die Datenabhängigkeitsbeziehung zwischen den Einheitsprozessen zeigt, die in jeweils unterschiedliche Funktionsgruppen unterteilt sind.
  13. Fahrzeuginterne Vorrichtung, die Folgendes umfasst: einen Mehrkernmikrocomputer (21) mit mehreren Kernen (21c, 21d); und ein Parallelprogramm (21a1), das auf der Grundlage von zahlreichen Einheitsprozessen eines Einzelprogramms für einen Einkernmikrocomputer die zahlreichen für den Mehrkernmikrocomputer parallelisierten Einheitsprozesse aufweist, wobei das Parallelprogramm die Einheitsprozesse den zahlreichen Kernen so zuordnet, dass die parallelisierten Einheitsprozesse hinsichtlich ihrer Anzahl maximiert sind, und zwar auf der Grundlage von (i) erhaltener Invalidierungsinformation (30), die eine ignorierbare Beziehung aus mehreren der Datenabhängigkeitsbeziehungen anzeigt und (ii) des Extrahierens einer Schreiben-Schreiben Datenabhängigkeitsbeziehung aus der Invalidierungsinformation, die einen Zugriff auf dieselben Daten zeigt, als eine synchronabhängige Beziehung, und durch (iii) Ignorieren anderer Datenabhängigkeitsbeziehungen außer der synchronabhängigen Beziehung, während sie ein gleichzeitiges Schreiben auf dieselben Daten durch die zwei Einheitsprozesse mit der synchronabhängigen Beziehung verhindert, und jeder aus den zahlreichen Kernen des Mehrkernmikroprozessors die Einheitsprozesse durchführt, die dem jeweiligen aus den zahlreichen Kernen des Mehrkernmikroprozessors zugeordnet sind.
DE102017209285.8A 2016-06-13 2017-06-01 Parallelization method, parallelization tool, and in-vehicle device Pending DE102017209285A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2016117248A JP6558310B2 (ja) 2016-06-13 2016-06-13 並列化方法、並列化ツール
JP2016-117248 2016-06-13

Publications (1)

Publication Number Publication Date
DE102017209285A1 true DE102017209285A1 (de) 2017-12-14

Family

ID=60419956

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102017209285.8A Pending DE102017209285A1 (de) 2016-06-13 2017-06-01 Parallelization method, parallelization tool, and in-vehicle device

Country Status (3)

Country Link
US (1) US10228948B2 (de)
JP (1) JP6558310B2 (de)
DE (1) DE102017209285A1 (de)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017228029A (ja) * 2016-06-21 2017-12-28 株式会社デンソー 並列化方法、並列化ツール、車載装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015001807A (ja) 2013-06-14 2015-01-05 株式会社デンソー 並列化コンパイル方法、並列化コンパイラ、並列化コンパイル装置、及び、車載装置

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3039953B2 (ja) * 1989-04-28 2000-05-08 株式会社日立製作所 並列化装置
US6948162B2 (en) * 2002-01-09 2005-09-20 Sun Microsystems, Inc. Enhanced parallelism in trace scheduling by using renaming
US7882498B2 (en) * 2006-03-31 2011-02-01 Intel Corporation Method, system, and program of a compiler to parallelize source code
US20070260856A1 (en) * 2006-05-05 2007-11-08 Tran Thang M Methods and apparatus to detect data dependencies in an instruction pipeline
US7984431B2 (en) * 2007-03-31 2011-07-19 Intel Corporation Method and apparatus for exploiting thread-level parallelism
JP2009129179A (ja) * 2007-11-22 2009-06-11 Toshiba Corp プログラム並列化支援装置およびプログラム並列化支援方法
JP5036523B2 (ja) * 2007-12-21 2012-09-26 三菱電機株式会社 プログラム並列化装置
US9354884B2 (en) * 2013-03-13 2016-05-31 International Business Machines Corporation Processor with hybrid pipeline capable of operating in out-of-order and in-order modes
JP6427054B2 (ja) 2015-03-31 2018-11-21 株式会社デンソー 並列化コンパイル方法、及び並列化コンパイラ

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015001807A (ja) 2013-06-14 2015-01-05 株式会社デンソー 並列化コンパイル方法、並列化コンパイラ、並列化コンパイル装置、及び、車載装置

Also Published As

Publication number Publication date
US20170357511A1 (en) 2017-12-14
US10228948B2 (en) 2019-03-12
JP2017224046A (ja) 2017-12-21
JP6558310B2 (ja) 2019-08-14

Similar Documents

Publication Publication Date Title
DE69637020T2 (de) Überpartitionierungssystem und-verfahren zum Erhöhen der Anzahl von Prüfpunkten in komponentenbasierten Parallelanwendungen
DE68921906T2 (de) Verfahren für ein Multiprozessorsystem mit sich selbst zuordnenden Prozessoren.
DE112006004005T5 (de) Kommunikation zwischen Mehrfach-Ausführungsfolgen in einem Prozessor
DE102013017982A1 (de) COMPILER gesteuerte Gebietsdisponierung für SIMD-Ausführung von Strängen
DE10297279T5 (de) Verfahren und Vorrichtung zum Durchführen von Compiler-Transformation von Softwarecode unter Verwendung von Fast-Forward-Bereichen und Wertespezialisierung
DE112011101391T5 (de) GPU-fähige Datenbanksysteme
DE10297624T5 (de) Steuerung von Kompatibilitätsgraden von Binärcode-Übersetzungen zwischen Befehlssatzarchitekturen
DE2720578A1 (de) Rechnersystem mit mehrprogrammbetrieb/mehrprogrammverarbeitung sowie verfahren zum betrieb eines solchen rechnersystems
DE102013215009A1 (de) Verfahren und System zur Optimierung der Datenübertragung
DE102018109538A1 (de) Techniken zum umfassenden Synchronisieren einer Ausführung von Threads
EP3568757B1 (de) Verfahren zur erzeugung von quellcode
DE102017213160B4 (de) Kompilierung für knotenvorrichtungs-GPU-basierte Parallelverarbeitung
DE102017210126A1 (de) Parallelisierungsverfahren, Parallelisierungswerkzeug und fahrzeuginterne Vorrichtung
DE102013019333A1 (de) Registerzuweisung für als cluster vorliegende mehrebenen-registerdaten
DE102020110655A1 (de) Verfahren und vorrichtung zum verbessern der verwendung eines heterogenen systems, das software ausführt
DE102016204963A1 (de) Parallelisierungskompilierverfahren, Parallelisierungskompilierer und Fahrzeugvorrichtung
DE102016223939A1 (de) Parallelisierungsverfahren, Parallelisierungswerkzeug und fahrzeugeigene Vorrichtung
DE112010004037T5 (de) Simulationsverfahren, -system und -programm
DE202016007872U1 (de) Eine feinkörnige, anforderungsabhängige IPO Infrastruktur
DE102018114322A1 (de) Architektur und Dienste zur Unterstützung der rekonfigurierbaren Synchronisation in einem Multiprozessorsystem
DE112019004391T5 (de) Grossmodellunterstützung für deep learning
DE102017209285A1 (de) Parallelization method, parallelization tool, and in-vehicle device
DE102016204970A1 (de) Parallelisierungskompilierverfahren, Parallelisierungskomplierer und Fahrzeugvorrichtung
DE102016204960A1 (de) Parallelisierungskompilierverfahren, Parallelisierungskompilierer und Fahrzeugvorrichtung
DE102015112250A1 (de) Trennung von Kernen

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R084 Declaration of willingness to licence