DE102017210126A1 - Parallelisierungsverfahren, Parallelisierungswerkzeug und fahrzeuginterne Vorrichtung - Google Patents

Parallelisierungsverfahren, Parallelisierungswerkzeug und fahrzeuginterne Vorrichtung Download PDF

Info

Publication number
DE102017210126A1
DE102017210126A1 DE102017210126.1A DE102017210126A DE102017210126A1 DE 102017210126 A1 DE102017210126 A1 DE 102017210126A1 DE 102017210126 A DE102017210126 A DE 102017210126A DE 102017210126 A1 DE102017210126 A1 DE 102017210126A1
Authority
DE
Germany
Prior art keywords
core
microcomputer
numerous
extracted
cores
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
DE102017210126.1A
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 DE102017210126A1 publication Critical patent/DE102017210126A1/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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • G06F8/451Code distribution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • G06F8/456Parallelism detection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request

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) erzeugt auf der Grundlage einer Analyse eines einzelnen Programms (30), das mehrere für einen Einkern-Mikrocomputer geschriebene Aufgaben (31, 32) enthält, ein Parallelprogramm (21a1) durch Parallelisierung von parallelisierbaren Aufgaben (31, 32) für einen Mehrkernprozessor mit mehreren Kernen. Der Computer (10) enthält einen Makrotask(MT)-Gruppen-Extraktor (2d), der eine häufig benötigte Ressource analysiert oder findet, auf die gemeinsam von den zahlreichen Aufgaben (31, 32) zugegriffen wird, und extrahiert zahlreiche MTs, die den Zugriff auf eine derartige gemeinsam genutzte Ressource benötigen. Dann verwendet der Computer (10) eine Zuordnungsbeschränkungsbestimmungsvorrichtung (2e), um die extrahierten zahlreichen MTs demselben Kern in dem Mehrkernprozessor zuzuordnen. Durch die Ausarbeitung eines vorstehend beschriebenen Parallelisierungsverfahrens wird ein Overhead in einer Ausführungszeit des Parallelprogramms durch den Mehrkern-Prozessor verringert und eine fahrzeugseitige Vorrichtung wird in die Lage versetzt, jeden der MTs im Programm optimal auszuführen.

Description

  • Die vorliegende Offenbarung bezieht sich allgemein auf ein Parallelisierungsverfahren und ein Parallelisierungswerkzeug zum Erzeugen eines parallel abarbeitbaren Programms für einen Mehrkern-Mikrocomputer basierend auf einem Einzelprogramm für einen Einkern-Mikrocomputer, und auf eine fahrzeuginterne Vorrichtung, in die das erzeugte Parallelprogramm implementiert ist.
  • Ein in einer Patentschrift, der japanischen Patentoffenlegungsschrift Nr. 2015-1807 ( JP 2015-1807 A , Patentschrift 1), offenbartes Parallelisierungskompilierverfahren dient beispielsweise als ein Parallelisierungsverfahren zur Erzeugung eines parallelen Programms für einen Mehrkern-Mikrocomputer auf der Grundlage eines Einzelprogramms für einen Single-Core-Mikrocomputer bzw. Einkern-Mikrocomputer.
  • Bei einem solchen Parallelisierungskompilierverfahren wird eine Zwischensprache aus einem Quellcode des Einzelprogramms durch Ausführen einer lexikalischen Analyse und einer Syntaxanalyse erzeugt und durch Verwendung einer solchen Zwischensprache eine Abhängigkeitsanalyse und Optimierung und dergleichen für mehrere Makroaufgaben (d.h. nachstehend Einheitsprozessen) durchgeführt. Ferner erzeugt das Parallelisierungskompilierungsverfahren das Parallelprogramm auf der Grundlage einer Terminierung bzw. eines Scheduling der vielen Einheitsprozesse, die die Abhängigkeit jedes Einheitsprozesses und eine Ausführungszeit jedes Einheitsprozesses berücksichtigt.
  • In einem allgemeinen „embedded system“ bzw. eingebetteten System werden jedoch mehrere Tasks bzw. Aufgaben durch ein Echtzeitbetriebssystem (RTOS, real time operation system) durch abwechselndes Schalten durchgeführt. In diesem Fall ist ein Synchronisationsprozess erforderlich, um das Parallelisieren der vielen Aufgaben bzw. Tasks zu ermöglichen, auch wenn das Parallelprogramm durch Parallelisierung dieser Aufgaben erzeugt werden kann, was dem RTOS ermöglicht, dem Synchronisationsprozess eine Verarbeitungszeit zuzuordnen.
  • Das bedeutet, dass die durch die Parallelisierung der Mehrfachaufgaben reduzierte Prozesszeit durch eine Overheadzeit überschritten wird, die der Synchronisationsprozess benötigt, wenn das Parallelprogramm relativ klein ist. Daher wird der Vorteil der Parallelisierung nicht zwingend von allen Multitasking-Programmen erreicht. Anders gesagt sind die Aufgaben mit relativ kurzen Prozesszeiten nicht geeignet parallelisiert.
  • Weiterhin ist die Parallelisierung der oben beschriebenen Aufgaben mit der kurzen Prozesszeit nicht nur schwierig, sondern auch anfällig für eine Interferenz bzw. gegenseitige Beeinflussung mit anderen Aufgaben, was es schwieriger macht, sie parallel, d.h. gleichzeitig, auszuführen.
  • Für die Adressierung der Parallelisierung der Tasks mit kurzen Prozesszeiten kann das Durchführen eines Inter-Core-Ausschlussvorgangs bzw. Ausschlussvorgangs zwischen Kernen zusätzlich zu einem relevanten Vorgang eine Lösung sein. Allerdings hat der Inter-Core-Ausschlussvorgang einen wesentlich größeren Overhead im Vergleich zu einem Intra-Core-Ausschlussvorgang bzw. kerninternen Ausschlussvorgang, das in dem Einkern-Mikrocomputer verwendet wird, was die Verarbeitungskapazität des Mehrkern-Mikrocomputers stark verschlechtern kann.
  • Es ist eine Aufgabe der vorliegenden Offenbarung, ein Parallelisierungsverfahren und ein Parallelisierungswerkzeug bereitzustellen, die in der Lage sind, ein paralleles Programm zu erzeugen, das einen Overhead in einer Ausführungszeit eines solchen Programms durch den Mehrkern-Mikrocomputer in geeigneter Weise verringert, und eine fahrzeuginterne Vorrichtung, die in der Lage ist, jeden der Einheitsprozesse im parallelen Programm geeignet/optimal auszuführen.
  • In einem Aspekt der vorliegenden Offenbarung wird ein Parallelisierungsverfahren geschaffen, das ein Parallelprogramm für einen Mehrkern-Mikrocomputer mit mehreren Kernen erzeugt. Das Parallelprogramm parallelisiert parallelisierbare Einheitsprozesse auf der Grundlage von (i) einer Analyse eines Einzelprogramms für einen Einkern-Mikrocomputer, das mehrere Aufgaben umfasst, und (ii) einer Abhängigkeitsbeziehung, die aus der Analyse abgeleitet ist und einen Zugriff auf eine gleiche Ressource angibt, aus dem Einheitsprozess. Das Parallelisierungsverfahren umfasst einen Extraktionsvorgang, der mehrere der Einheitsprozesse, die auf dieselbe Ressource zugreifen, basierend auf einer Analyse der gleichen Ressource extrahiert, auf die üblicherweise von den zahlreichen Tasks bzw. Aufgaben zugegriffen wird, und einen Zuweisungsvorgang, der die zahlreichen durch den Extraktionsvorgang extrahierten Einheitsprozesse einem gleichen Kern des Mehrkern-Mikrocomputers zuordnet.
  • Die vorliegende Offenbarung ist somit dazu fähig, Einheitsprozesse, die auf dieselbe Ressource zugreifen, aus den in verschiedenen Aufgaben enthaltenen Einheitsprozessen aufgrund einer Analyse einer gemeinsam genutzten Ressource und einer Extraktion von zahlreichen Einheitsprozessen zu extrahieren, die auf die gemeinsam genutzte Ressource zugreifen.
  • Weiterhin ermöglicht die vorliegende Offenbarung, den Ausschlussprozess zwischen Kernen aufgrund der Zuordnung einer Vielzahl von extrahierten Einheitsprozessen zum gleichen Kern des Mehrkern-Mikrocomputers zu verringern oder zu eliminieren.
  • Daher ist die vorliegende Offenbarung in der Lage, ein paralleles Programm zu erzeugen, das dazu fähig ist, einen Overhead bzw. Verwaltungsaufwand in der Ausführungszeit eines solchen Programms zu verringern.
  • Ein anderer Aspekt der vorliegenden Offenbarung ist ein Parallelisierungswerkzeug, das einen Computer zum Erzeugen eines parallelen Programms durch Parallelisierung von parallelisierbaren Einheitsprozessen für einen Mehrkern-Mikrocomputer mit mehreren Kernen auf der Grundlage einer Abhängigkeitsbeziehung enthält, die nach einer Analyse eines einzigen Programms mit mehreren Aufgaben für einen Einkern-Mikrocomputer einen Zugriff auf eine gleiche Ressource aus mehreren Einheitsprozessen eines einzigen Programms anzeigt. Das Parallelisierungswerkzeug umfasst einen Extraktor, der mehrere Einheitsprozesse extrahiert, die auf dieselbe Ressource zugreifen, basierend auf einer Analyse derselben Ressource, auf die normalerweise von mehreren Tasks zugegriffen wird; und eine Zuordnung, die die vielen der vom Extraktor extrahierten Einheitsprozesse demselben Kern des Mehrkern-Mikrocomputers zuordnet.
  • Daher kann das Parallelisierungswerkzeug der vorliegenden Offenbarung ähnlich dem oben beschriebenen Parallelisierungsverfahren ein paralleles Programm erzeugen, das in der Lage ist, einen Overhead in der Ausführungszeit eines solchen Programms zu verringern.
  • In einem weiteren Aspekt der vorliegenden Offenbarung umfasst eine fahrzeuginterne Vorrichtung einen Mehrkern-Mikrocomputer mit mehreren Kernen und ein Parallelprogramm, das eine Mehrzahl von Einheitsprozessen in einem einzigen Programm für einen Einkern-Mikrocomputer parallel verarbeitet, um mehrere Aufgaben mit einem einzigen Kern zu verarbeiten. Das Parallelprogramm ist dazu konfiguriert, (a) die Mehrfachaufgaben zu parallelisiern, indem mehrere parallelisierbare Einheitsprozesse parallelisiert werden, basierend auf einer Datenabhängigkeit, die einen Zugriff auf eine gleiche Ressource aus mehreren Einheitsprozessen des Einzelprogramms anzeigt, gemäß einer Analyse des Einzelprogramms, das die zahlreichen Aufgaben für den Einkern-Mikrocomputer umfasst, (b) die zahlreichen Einheitsprozesse auf der Grundlage eines Hinweises auf einen Zugriff auf die gemeinsam genutzte Ressource zu extrahieren, indem eine gemeinsam genutzte Ressource analysiert wird, die gemeinsam von den zahlreichen Aufgaben abgefragt wird, und (c) die zahlreichen extrahierten Einheitsprozesse demselben Kern des Mehrkern-Mikrocomputers zuordnen. Außerdem ist der Mehrkern-Mikrocomputer so aufgebaut, dass er die den zahlreichen Kernen zugeordneten Einheitsprozesse ausführt.
  • Die fahrzeuginterne Vorrichtung ist mit dem Mehrkern-Mikrocomputer und dem Parallelprogramm versehen, das wie vorstehend beschriebenerzeugt wird. Weiterhin führt jeder der mehreren Kerne des Mehrkern-Mikrocomputers das Parallelprogramm aus. Das heißt, dass die fahrzeugseitige Vorrichtung der vorliegenden Offenbarung das Parallelprogramm ausführt, das den Overhead verringert. Daher kann die fahrzeugseitige Vorrichtung jeden der Einheitsprozesse optimal ausführen.
  • Aufgaben, Merkmale und Vorteile der vorliegenden Offenbarung werden aus der nachstehenden genauen Beschreibung unter Bezugnahme auf die beigefügten Figuren deutlicher, in denen:
  • 1 ein Blockschaubild eines Aufbaus eines Computers in einer Ausführungsform der vorliegenden Offenbarung ist;
  • 2 ein Blockschaubild eines Aufbaus einer fahrzeuginternen Vorrichtung in der Ausführungsform der vorliegenden Offenbarung ist;
  • 3 ein Blockschaubild von Funktionen des Computers in der Ausführungsform der vorliegenden Offenbarung ist;
  • 4 ein Ablaufplan eines Prozesses bzw. einer Verarbeitung durch den Computer in der Ausführungsform der vorliegenden Offenbarung ist;
  • 5 eine Veranschaulichung eines Einzelprogramms in der Ausführungsform der vorliegenden Offenbarung ist;
  • 6 eine Veranschaulichung einer Verarbeitungsreihenfolge von MTs bzw. Mehrfachaufgaben bei jeder Aufgabe in der Ausführungsform der vorliegenden Offenbarung ist;
  • 7 eine Darstellung von Datenabhängigkeitsbeziehungen in jeder Aufgabe in der Ausführungsform der vorliegenden Offenbarung ist;
  • 8 eine Darstellung eines Planungs- bzw. Schedulingergebnisses einer ersten Aufgabe in der Ausführungsform der vorliegenden Offenbarung ist;
  • 9 eine Veranschaulichung eines Planungs- bzw. Schedulingergebnisses einer zweiten Aufgabe in der Ausführungsform der vorliegenden Offenbarung ist;
  • 10 eine Darstellung einer Aufgabe bzw. eines Tasks, die bzw. der zwischen mehreren Kernen umschaltet, und ein Zuordungsergebnis jedes MT in der Ausführungsform der vorliegenden Offenbarung ist;
  • 11 ein Blockschaubild der Funktionen des Computers in einer Modifizierung der vorliegenden Offenbarung ist; und
  • 12 ein Ablaufplan der Verarbeitung durch den Computer in der Modifizierung der vorliegenden Offenbarung ist.
  • Einige Ausführungsformen zur Durchführung der vorliegend offenbarten Erfindung werden nachfolgend anhand der Figuren beschrieben.
  • In jeder der zahlreichen Ausführungsformen weisen dieselben Komponenten/ Aufbauten dieselben Bezugszeichen wie in vorher beschriebenen Ausführungsformen auf, und die Beschreibung der gleichen Komponenten/Aufbauten wird nicht wiederholt. In jeder der zahlreichen Ausführungsformen kann, wenn ein Teil eines Aufbaus beschrieben wird, der Rest des Aufbaus von den vorhergehenden Ausführungsformen entliehen werden.
  • In der vorliegenden Ausführungsform wird ein Computer 10 als eine Vorrichtung verwendet, die ein parallel arbeitendes Programm 21a1, das für einen Mehrkernprozessor 21 mit einem ersten Kern 21c und einem zweiten Kern 21d parallelisiert ist, aus Prozessen für mehrere Einheiten in einem Einzelprogramm 30 (z. B. einem seriellen C-Quellcode) für einen Einkern-Mikrocomputer mit nur einem Kern erzeugt.
  • Weiterhin wird in der vorliegenden Ausführungsform ein automatischer Parallelisierungscompiler 1 zum Erzeugen des Parallelprogramms 21a1 verwendet. Weiterhin wird in der vorliegenden Ausführungsform eine fahrzeugseitige Vorrichtung 20 verwendet, die mit dem Parallelprogramm 21a1 versehen ist, das der Computer 10 erzeugt. Es sei angemerkt, dass ein Prozessor als Mikrocomputer bezeichnet werden kann. Daher kann der Mehrkernprozessor als der Mehrkern-Mikrocomputer bezeichnet werden.
  • Der automatische Parallelisierungscompiler 1 umfasst einen Vorgang zum Erzeugen des Parallelprogramms 21a1. Daher ist der automatische Parallelisierungscompiler 1 äquivalent zu einem anspruchsgemäßen Parallelisierungsverfahren.
  • Weiterhin ist der automatische Parallelisierungscompiler 1 ein Programm, das das Parallelisierungsverfahren umfasst. Weiterhin erzeugt der Computer 10 das Parallelprogramm 21a1 durch Ausführen des automatischen Parallelisierungscompilers 1.
  • Daher ist der Computer 10 äquivalent zu einem anspruchsgemäßen Parallelisierungswerkzeug.
  • Man beachte, dass das Einzelprogramm 30 mehrere Aufgaben 31 und 32 umfasst und somit als Umschaltausführung der Mehrfachaufgaben 31 und 32 durch ein embedded bzw. eingebettetes Echtzeitbetriebssystem (RTOS) ausgeführt wird.
  • Der Computer 10 erzeugt das Parallelprogramm 21a1, das jede der Mehrfachaufgaben 31 und 32 in dem Einzelprogramm 30 parallelisiert.
  • Der automatische Parallelisierungscompiler 1 dient zur Erzeugung des Parallelprogramms 21a1, das jede der Mehrfachaufgaben 31 und 32 im Einzelprogramm 30 parallelisiert.
  • Hintergrund für die Erzeugung des Parallelprogramms 21a1 sind Probleme wie etwa eine Erhöhung der von einem Prozessor erzeugten Wärmemenge, eine Erhöhung des elektrischen Stromverbrauchs durch den Prozessor, eine maximale Taktfrequenz des Prozessors sowie eine zunehmende Popularität von Mehrkernprozessoren. Das heißt, auch auf einem Gebiet einer fahrzeuginternen Vorrichtung ist der Einsatz des Mehrkernprozessors 21 nun „Mainstream“ bzw. üblich, was es notwendig macht, Steuerprogramme an den Mehrkernprozessor anzupassen.
  • Zudem muss das Parallelprogramm 21a1 kurzfristig und kostengünstig entwickelt werden und muss eine hohe Zuverlässigkeit, hohe Leistung und hohe Prozessablaufgeschwindigkeit aufweisen.
  • Beim Erzeugen des Parallelprogramms 21a1 wird eine Datenabhängigkeitsbeziehung der Prozesse für mehrere Einheiten des Einzelprogramms 30 analysiert und die Prozesse für mehrere Einheiten den verschiedenen Kernen 21c und 21d des Mehrkernprozessors 21 zugeteilt oder zugewiesen/angeordnet. Hinsichtlich der Einzelheiten dieser Zuordnung wird auf die Patentschrift JP 2015-1807 A verwiesen.
  • In der vorliegenden Ausführungsform wird als Beispiel das Einzelprogramm 30 genommen, das in der Sprache „C“ geschrieben ist. Das Einzelprogramm 30 kann aber auch in einer anderen Programmiersprache als der Sprache „C“ geschrieben sein.
  • Der oben erwähnte Einheitsprozess kann als ein Verarbeitungsblock, eine Makroaufgabe oder dergleichen neu formuliert werden. Im Folgenden kann der Einheitsprozess auch als Makroaufgabe bzw. Makrotask (MT) bezeichnet werden.
  • Gemäß der vorliegenden Ausführungsform wie in 5 usw. gezeigt werden ein 11. bis 13. MT und ein 21. MT bis 23. MT als Beispiel angenommen.
  • Jede der MTs enthält mindestens einen Befehl, der durch den ersten Kern 21c und den zweiten Kern 21d ausführbar ist.
  • Hier wird das Einzelprogramm 30, das in der vorliegenden Ausführungsform verwendet wird, unter Bezugnahme auf 3 beschrieben.
  • Ein serieller C-Quellcode 30 der 3 entspricht dem Einzelprogramm 30 in den Ansprüchen. Ferner ist in 3 ein Task-Umschaltvorgang bzw. Aufgabenumschaltvorgang im Einzelkernmikrocomputer und eine MT-Verarbeitungsreihenfolge im Einzelkern dargestellt.
  • Das Einzelprogramm 30 enthält eine erste Aufgabe 31 und eine zweite Aufgabe 32 und zu den jeweiligen Aufweckzeitpunkten (Aufwecken bzw. WKUP in 5) wird beispielsweise zwischen der ersten Aufgabe 31 und der zweiten Aufgabe 32 umgeschaltet und diese ausgeführt.
  • Man beachte, dass in den 5 bis 10 zur Unterscheidung zwischen verschiedenen Aufgaben die MTs der ersten Aufgabe 31 und die MTs der zweiten Aufgabe 32 sich voneinander unterscheidende Schraffuren aufweisen.
  • Wie in 6 gezeigt sind der 11. bis zum 13. MT in der ersten Aufgabe bzw. dem ersten Task 31 enthalten. Die Verarbeitungsreihenfolge dieser MTs in der ersten Aufgabe 31 verläuft vom 11. über den 12. zum 13. MT.
  • Andererseits sind der 21. bis 23. MT in der zweiten Aufgabe 32 enthalten. Die Verarbeitungsreihenfolge dieser MTs in der zweiten Aufgabe 32 verläuft vom 21. über den 22. zum 23. MT.
  • Es sei angemerkt, dass bei der vorliegenden Ausführungsform angenommen wird, dass die erste Aufgabe 31 eine höhere Priorität als die zweite Aufgabe 32 hat.
  • Die zahlreichen MTs umfassen voneinander abhängige MTs, bei denen zwei MTs von denselben Daten abhängen, oder eine Aktualisierung der beiden MTs über dieselben Daten verknüpft wird. Das kann in der Zeichnung auch als eine Datenabhängigkeitsbeziehung oder einfacher als eine Datenabhängigkeit bezeichnet werden.
  • Nach der vorliegenden Ausführungsform wird die Datenabhängigkeitsbeziehung zwischen dem 11. und dem 12. MT, zwischen dem 11. und dem 13. MT und zwischen dem 13. und dem 21. MT festgestellt/etabliert. In 7 sind die voneinander abhängigen MTs, die eine Datenabhängigkeitsbeziehung zueinander aufweisen, durch einen Pfeil verbunden.
  • Die Datenabhängigkeitsbeziehung ist eine Beziehung des Zugriffs auf dieselben Daten der/durch die beiden MTs. Die Datenabhängigkeitsbeziehung kann auch als ein Zugriff von jedem der beiden MTs auf dieselbe Ressource verstanden werden.
  • Daher zeigen die beiden MTs mit der Datenabhängigkeitsbeziehung den Zugriff auf die gemeinsame Ressource. Somit werden zwei oder mehr Datenabhängigkeitsbeziehungen im Einzelprogramm 30 mit zahlreichen MTs gefunden. Im Folgenden kann die gleiche Ressource, auf die die zahlreichen MTs zugreifen, auch als die gemeinsame Ressource bezeichnet werden.
  • Ferner wird die Datenabhängigkeitsbeziehung in den ersten bis dritten Fall kategorisiert.
  • Der erste Fall ist eine Beziehung, in der ein erster MT die Daten schreibt (Write) und ein zweiter MT dieselben Daten liest (Read). Der zweite Fall ist eine Beziehung, in der der erste MT und der zweite MT jeweils dieselben Daten schreiben. Der dritte Fall ist eine Beziehung, in der der erste MT die Daten liest und der zweite MT dieselben Daten schreibt. Die Ausführungssequenz (d.h. die Verarbeitungsreihenfolge) des ersten MT in dem Einzelprogramm 30 liegt vor dem zweiten MT. Der erste MT und der zweite MT sind Beispiel-MTs, die verwendet werden, um die Datenabhängigkeitsbeziehung zu erklären/darzustellen.
  • Weiterhin enthält das Einzelprogramm 30 den kerninternen Ausschlussprozess, um Interferenzen bzw. gegenseitige Störungen zweier MTs zu vermeiden, die in verschiedenen Aufgaben enthalten sind und auf dieselben Daten zugreifen.
  • Daher führt der Einkernmikrocomputer den kerninternen Ausschlussprozess durch.
  • Nach der in 5 gezeigten vorliegenden Ausführungsform wird, um eine Interferenz zwischen dem 13. MT des ersten Tasks 31 und dem 21. MT des zweiten Tasks 32 zu vermeiden, ein Beispiel für die Einbeziehung des Intra-Core-Ausschlussprozesses bzw. kerninternen Ausschlussprozesses umgesetzt. Der kerninterne Ausschlussprozess ist ein Prozess, der ein Taskunterbrechungsverbot und eine Taskunterbrechungsberechtigung ausführt.
  • Wenn zum Beispiel die erste Aufgabe 31 ausgeführt wird, wird eine Unterbrechung durch die zweite Aufgabe 32 verboten, und nach Beendigung der Ausführung der ersten Aufgabe 31 wird eine Unterbrechung durch die zweite Aufgabe 32 erlaubt.
  • Ferner kann das Parallelprogramm, in dem zwei voneinander abhängige MTs mit der Datenabhängigkeitsbeziehung den verschiedenen Kernen zugeordnet sind, den Inter-Core-Ausschlussprozess bzw. Ausschlussprozess zwischen Kernen umfassen, um eine Interferenz zwischen den verschiedenen Kernen zu vermeiden.
  • Allerdings hat der Ausschlussprozess zwischen Kernen im Vergleich zum kerninternen Ausschlussprozess einen größeren Overhead bzw. Verwaltungsaufwand, und ist ein wichtiger Faktor der Kapazitätsverringerung.
  • Hier wird der Aufbau des Computers 10 anhand von 1 und 3 beschrieben.
  • Der Computer 10 ist mit einem Display 11, einem Festplattenlaufwerk (HDD) 12, einer Zentralverarbeitungseinheit (CPU) 13, einem Nur-Lese-Speicher (ROM) 14, einem Direktzugriffsspeicher bzw. Speicher mit wahlfreiem Zugriff (RAM) 15, einer Eingabevorrichtung 16, einem Lesegerät 17 und dergleichen versehen. Der Computer 10 ist dazu fähig, einen Speicherinhalt zu lesen, der von einem Speichermedium 18 gespeichert wird. Der automatische Parallelisierungscompiler 1 wird vom Speichermedium 18 gespeichert. Daher ist der Computer 10 dazu fähig, den automatischen Parallelisierungscompiler 1 auszuführen, der auf dem Speichermedium 18 gespeichert ist, und erzeugt das parallelisierte Programm 21a1.
  • Hinsichtlich des Aufbaus des Computers 10 und des Speichermediums 18 wird auf einen Personalcomputer 100 und ein Speichermedium 180 verwiesen, die in einer Patentschrift JP 2015-1807 A offenbart sind.
  • Der automatische Parallelisierungs-Compiler 1 enthält zusätzlich zu dem, was in der JP 2015-1807 A offenbart ist, einen MT-Gruppenextraktor 2d, eine Zuweisungsbeschränkungs-Bestimmungsvorrichtung 2e und dergleichen.
  • Ferner ist der Computer 10 wie in 3 gezeigt mit Funktionsblöcken – Blöcken für die erste Aufgabe 31 und Blöcken für die zweite Aufgabe 32 – versehen. Der Computer 10 erzeugt eine erste Aufgabe 31a nach der Parallelisierung unter Verwendung des Funktionsblocks für die erste Aufgabe 31 und erzeugt eine zweite Aufgabe 32a nach der Parallelisierung unter Verwendung des Funktionsblocks für die zweite Aufgabe 32. Dann kombiniert der Computer 10 mittels Software die erste Aufgabe 31a nach der Parallelisierung und die zweite Aufgabe 32a nach der Parallelisierung, um das Parallelprogramm 21a1 zu erzeugen. Man bemerke, dass das Parallelprogramm 21a1 auch als paralleler C-Quellcode angesehen werden kann.
  • In der vorliegenden Ausführungsform wird der Computer 10 eingesetzt, der dazu fähig ist, Kernabhängigkeitsinformationen 41 zu erhalten.
  • Die Kernabhängigkeitsinformation 41 ist äquivalent zur Kernzuweisungsinformation in den Ansprüchen und ist eine Information, die zeigt, welcher der vielen MTs im Einzelprogramm 30 als dem Kern 21c oder dem Kern 21d zugeordnet spezifiziert ist (d.h. Information, die ein Zuteilungsziel von MT im Einzelprogramm 30 anzeigt). Man bemerke, dass ein als Zuweisungsziel spezifiziertes MT unter den MTs in dem Einzelprogramm 30 als abhängig von dem als das Zuweisungsziel spezifizierten Kern angesehen werden kann.
  • Die Funktionsblöcke für die erste Aufgabe 31 umfassen einen ersten Zugriffsanalysator 1a, einen ersten Datenabhängigkeitsanalysator 1b, eine erste Kernabhängigkeitsbestimmungsvorrichtung 1c, einen ersten Scheduler 1d und dergleichen.
  • Der erste Zugriffsanalysator 1a analysiert eine Zugriffsressource jedes MT in der ersten Aufgabe 31. Das heißt, der erste Zugriffsanalysator 1a extrahiert eine Ressource (d.h. Daten), auf die jeder MT in der ersten Aufgabe 31 zugreift.
  • Der erste Datenabhängigkeitsanalysator 1b analysiert eine Datenabhängigkeitsbeziehung jedes MT in der ersten Aufgabe 31. Der erste Datenabhängigkeitsanalysator 1b analysiert die Datenabhängigkeitsbeziehung und extrahiert parallelisierbare MTs, die parallelisierbar sind.
  • Die erste Kernabhängigkeitsbestimmungseinrichtung 1c bestimmt (i) einen für ein Zuweisungsziel spezifizierten MT, über den ein Zuweisungsziel aus MTs in der ersten Aufgabe 31 spezifiziert ist, und (ii) ein Zuweisungsziel eines solchen MT auf der Grundlage der Kernabhängigkeitsinformation 41.
  • Der erste Scheduler 1d führt Kernzuteilung und Scheduling durch. Der erste Scheduler 1d weist bei der Durchführung des Schedulings jeden MT in der ersten Aufgabe 31 zu dem ersten Kern 21c oder dem zweiten Kern 21d zu. Dann erzeugt der Computer 10 optimalerweise die optimierte erste Aufgabe 31a nach der Parallelisierung.
  • Die Funktionsblöcke für die zweite Aufgabe 32 umfassen einen zweiten Zugriffsanalysator 2a, einen zweiten Datenabhängigkeitsanalysator 2b, eine zweite Kernabhängigkeitsbestimmungsvorrichtung 2c, einen MT-Gruppenextraktor 2d, eine Zuweisungsbeschränkungsbestimmungsvorrichtung 2e, einen zweiten Scheduler 2f und dergleichen.
  • Der zweite Zugriffsanalysator 2a analysiert eine Zugriffsressource jedes MT in der zweiten Aufgabe 32. Das heißt, der zweite Zugriffsanalysator 2a extrahiert eine Ressource, auf die jeder MT in der zweiten Aufgabe 32 zugreift.
  • Der zweite Datenabhängigkeitsanalysator 2b analysiert eine Datenabhängigkeitsbeziehung jedes MT in der zweiten Aufgabe 32. Der zweite Datenabhängigkeitsanalysator 2b analysiert die Datenabhängigkeitsbeziehung und extrahiert parallelisierbare MT, die parallelisierbar sind.
  • Die zweite Kernabhängigkeitsbestimmungsvorrichtung 2c bestimmt (i) ein für den MT spezifiziertes Zuweisungsziel, über das ein Zuweisungsziel für MTs in der zweiten Aufgabe 32 spezifiziert ist, und (ii) ein Zuweisungsziel eines solchen MT auf der Grundlage der Kernabhängigkeitsinformation 41.
  • Der MT-Gruppen-Extraktor 2d extrahiert eine MT-Gruppe oder eine Gruppe von MTs, die den Zugriff auf die gemeinsame Ressource aus den verschiedenen Aufgaben zeigen (was einem Extraktor in den Ansprüchen entspricht).
  • Das heißt, der MT-Gruppen-Extraktor 2d analysiert eine Ressource, auf die gemeinsam von den verschiedenen Aufgaben zugegriffen wird, und extrahiert die vielen MTs, z. B. zwei MTs, die den Zugriff auf die gemeinsame Ressource zeigen. Daher zeigen die extrahierten MTs den Zugriff auf die gemeinsame Ressource und sind in verschiedenen Aufgaben enthalten.
  • Man beachte, dass der Computer 10 die Funktion des MT-Gruppen-Extraktors 2d durch Ausführen des automatischen Parallelisierungs-Compilers 1 ausführt. Daher kann der MT-Gruppen-Extraktor 2d einem beanspruchten Extraktionsverfahren entsprechen.
  • Die Zuteilungsbeschränkungsbestimmungseinrichtung 2e bestimmt eine Zuteilungsbeschränkung jedes MT in der zweiten Aufgabe 32 auf der Grundlage eines sich ergebenden Scheduling durch den ersten Scheduler 1d, eines Bestimmungsergebnisses der zweiten Kernabhängigkeitsbestimmungsvorrichtung 2c und der extrahierten MT-Gruppe (d.h. einer Zuweisungsvorrichtung in den Ansprüchen).
  • Das heißt, die Zuteilungsbeschränkungsbestimmungsvorrichtung 2e bestimmt Einschränkungen zum Zeitpunkt der Zuordnung jedes MT in der zweiten Aufgabe 32 zu dem ersten Kern 21c oder zu dem zweiten Kern 21d.
  • Im Einzelnen genau beschrieben weist die Zuweisungsbeschränkungsbestimmungsvorrichtung 2e die vielen MTs, die durch den MT-Gruppen-Extraktor 2d extrahiert wurden, unter Berücksichtigung des Planungsergebnisses des ersten Schedulers 1d und des Bestimmungsergebnisses der zweiten Kernabhängigkeitsbestimmungseinrichtung 2c demselben Kern im Mehrkernprozessor 21 zu.
  • Man beachte, dass die Zuweisungsbeschränkungsbestimmungseinrichtung 2e dem von der Kernabhängigkeitsinformation 41 spezifizierten Zuteilungsziel Priorität zuweist, um die von dem MT-Gruppen-Extraktor 2d extrahierten vielen MTs demselben Kern im Mehrkernprozessor 21 zuzuordnen.
  • Das heißt, die Zuteilungsbeschränkungsbestimmungseinrichtung 2e weist die zahlreichen MTs, die durch den MT-Gruppen-Extraktor 2d extrahiert wurden, demselben Kern in dem Mehrkernprozessor 21 innerhalb von Grenzen zu, die das durch die Kernabhängigkeitsinformation 41 spezifizierte Zuweisungsziel nicht ändern.
  • Da der Computer 10 den automatischen Parallelisierungscompiler 1 ausführt, um eine Funktion der Zuweisungsbeschränkungsbestimmungseinrichtung 2e zu realisieren, sei angemerkt, dass die Zuweisungsbeschränkungsbestimmungseinrichtung 2e als äquivalent zu einem Zuordungsprozess in den Ansprüchen betrachtet wird.
  • Weiter führt der zweite Scheduler 2f eine Kernzuteilung und ein Scheduling durch. Der zweite Scheduler 2f weist bei der Durchführung des Schedulings jedes MTs in der zweiten Aufgabe 32 dem ersten Kern 21c oder dem zweiten Kern 21d zu. Dann erzeugt der Computer 10 in optimaler Weise die nach der Parallelisierung optimierte zweite Aufgabe 32a.
  • Hier wird der Verarbeitungsvorgang des Computers 10 unter Bezugnahme auf 4 beschrieben. Es sei angemerkt, dass jeder der nachstehend gezeigten Schritte S10–S16 als gleichwertig zu einer Prozedur des automatischen Parallelisierungscompilers 1 angesehen werden kann.
  • In Schritt S10 wird eine Verarbeitungsobjektaufgabe bestimmt. Das heißt, der Computer 10 scannt nacheinander jede Aufgabe und bestimmt die Verarbeitungsobjektaufgabe.
  • In Schritt S11 wird eine Ressource extrahiert. Das heißt, der Computer 10 extrahiert eine Ressource, die jeder MT in der Verarbeitungsobjektaufgabe aufruft.
  • Schritt S11 kann als ein Prozess betrachtet werden, den jeweils der erste Zugriffsanalysator 1a und der zweite Zugriffsanalysator 2a ausführen.
  • In Schritt S12 wird eine Datenabhängigkeitsbeziehung analysiert. Das heißt, der Computer 10 analysiert die Datenabhängigkeitsbeziehung zwischen jedem der MTs in der Verarbeitungsobjektaufgabe.
  • Schritt S12 kann als Prozess betrachtet werden, den jeweils der erste Datenabhängigkeitsanalysator 1b und der zweite Datenabhängigkeitsanalysator 2b ausführen.
  • In Schritt S13 wird eine Kernabhängigkeit jedes MT bestimmt. Das heißt, wenn beispielsweise aus funktionalen Sicherheitsgründen die Kernabhängigkeitsinformation 41 implementiert ist, die einen Kern für die Ausführung eines bestimmten MTs festlegt, bestimmt der Computer 10 die Kernabhängigkeit jedes MT gemäß der Kernabhängigkeitsinformation 41.
  • Schritt S13 kann als ein Prozess betrachtet werden, in dem jeweils die erste Kernabhängigkeitsbestimmungsvorrichtung 1c und die zweite Kernabhängigkeitsbestimmungsvorrichtung 2c arbeiten.
  • In Schritt S14 wird die Zuweisungsbeschränkung jedes MT bestimmt. Das heißt, der Computer 10 extrahiert eine MT-Gruppe, die Zugriff auf die gemeinsame Ressource benötigt, aus den verschiedenen Aufgaben, und bestimmt die Zuweisungsbeschränkung jedes MT innerhalb von Grenzen, die nicht die Kernabhängigkeitsinformation 41 verletzen, wenn jedes MT die Kernabhängigkeit aufweist.
  • Das heißt, der Computer 10 ordnet die vielen MTs von den verschiedenen Aufgaben, die den Zugriff auf die gemeinsame Ressource benötigen, demselben Kern zu, ohne die Kernabhängigkeitsinformation 41 zu verletzen.
  • Nach der vorliegenden Ausführungsform sind dem ersten Kern 21c der 13. MT der ersten Aufgabe 31 und der 21. MT der zweiten Aufgabe 32 zugeordnet.
  • Schritt S14 kann als ein Prozess betrachtet werden, den jeweils der MT-Gruppenextraktor 2d und die Zuweisungsbeschränkungsbestimmungsvorrichtung 2e ausführen.
  • In Schritt S15 werden Kernzuteilung und Scheduling bzw. Terminierung durchgeführt. Das heißt, der Computer 10 führt eine Kernzuteilung und ein Scheduling für jeden MT in der Verarbeitungsobjektaufgabe gemäß der Zuweisungsbeschränkung und der Datenabhängigkeitsbeziehung durch.
  • Schritt S15 kann als ein Prozess betrachtet werden, den jeweils der erste Scheduler 1d und der zweite Scheduler 2f durchführen.
  • Man beachte, dass der Computer 10 die Schritte S10–S15 durch Behandeln jeder der beiden Aufgaben 31 und 32 als Verarbeitungsobjektaufgabe ausführt. Der Schritt S14 muss jedoch nur für eine der beiden Aufgaben 31 und 32 durchgeführt werden. Daher führt der Computer 10 den Schritt S14 während einer Ausführung einer der beiden Aufgaben 31 und 32 nicht aus. Das heißt, dass beispielsweise während einer Ausführung der ersten Aufgabe 31, die als eine Prozessausführungsaufgabe bestimmt wird, der Schritt S14 nicht ausgeführt wird.
  • Dann führt der Computer 10 in Schritt S15 für die erste Aufgabe 31 aufgrund von (i) einem Analyseergebnis der Datenabhängigkeitsbeziehung und (ii) einem Bestimmungsergebnis, das auf der Kernabhängigkeitsinformation 41 basiert, eine Kernzuteilung und ein Scheduling aus.
  • Dann bestimmt der Computer 10 die nächste Aufgabe, d.h. die zweite Aufgabe 32, als Prozessausführungsaufgabe. Das heißt, für die zweite Aufgabe 32 führt der Computer 10 den Schritt S14 aus und führt in Schritt S15 eine Kernzuteilung und ein Scheduling gemäß der Zuweisungsbeschränkung und der Datenabhängigkeitsbeziehung aus.
  • In Schritt S16 wird für alle Aufgaben bestimmt, ob die Aufgabe bearbeitet wurde. Das heißt, wenn es unter allen Aufgaben eine Aufgabe gibt, für die die Schritte S10 bis S15 nicht abgearbeitet wurden, bestimmt der Computer 10, dass eine solche Aufgabe nicht abgearbeitet wurde, und der Ablauf kehrt zu Schritt S10 zurück.
  • Wenn es unter allen Aufgaben keine Aufgabe gibt, für die die Schritte S10 bis S15 nicht abgearbeitet wurden, bestimmt der Computer 10, dass alle Aufgaben verarbeitet worden sind, und beendet den Ablauf aus 4.
  • Das heißt, der Computer 10 führt die Schritte S10 bis S15 nacheinander für jede Aufgabe als ein Verarbeitungsobjekt aus. Mit anderen Worten führt der Computer 10 eine Kernzuteilung und eine Terminierung bzw. ein Scheduling für jede Aufgabe durch.
  • Der Computer 10 erzeugt auf diese Weise durch Durchführung des Verfahrens das in 10 gezeigte Parallelprogramm 21a1 aus dem in 5 gezeigten Einzelprogramm. Durch Scheduling für jeden MT der ersten Aufgabe 31 wie in 8 gezeigt ordnet der Computer 10 alle MTs dem ersten Kern 21c zu, was die Nachparallelisierung der ersten Aufgabe 31a ist.
  • Weiter weist der Computer 10 durch Ausführen eines Schedulings für jeden MT der zweiten Aufgabe 32 wie in 9 gezeigt dem 21. MT mit einer Datenabhängigkeitsbeziehung zum 13. MT demselben ersten Kern 21c zu, dem der 13. MT zugeordnet ist.
  • Weiterhin kombiniert der Computer 10 die erste Aufgabe 31a nach der Parallelisierung und die zweite Aufgabe 32a nach der Parallelisierung und erzeugt das in 10 gezeigte Parallelprogramm 21a1.
  • Ferner weist der Computer 10 den 13. MT der ersten Aufgabe 31 und den 21. MT der zweiten Aufgabe 32 mit der Datenabhängigkeitsbeziehung demselben Kern zu.
  • Daher wird eine Interferenz bzw. gegenseitige Beeinflussung zwischen den verschiedenen Aufgaben durch den Computer 10 verhindert, indem eine Maßnahme wie ein kerninterner Ausschlussprozess durchgeführt wird, das eine Unterbrechung oder dergleichen unterbinden kann.
  • Der kerninterne Ausschlussprozess wird grundsätzlich vor der Parallelisierung hinzugefügt und in ein Programmdesign einbezogen. Jedoch kann der kerninterne Ausschlussprozess auch basierend auf einem Analyseergebnis nach Bedarf hinzugefügt werden, und das Parallelprogramm 21a1 wird entsprechend erzeugt (was einer Zuteilungsvorrichtung in den Ansprüchen entspricht).
  • Hier fügt der Computer 10 wie durch eine Zweipunkt-Strichlinie in 10 gezeigt den kerninternen Ausschlussprozess zum 13. MT der ersten Aufgabe 31 und zum 21. MT der zweiten Aufgabe 32 zu.
  • Es sei angemerkt, dass der kerninterne Ausschlussprozess von Anfang an in das Einzelprogramm 30 aufgenommen wird. Weiterhin wird angenommen, dass der automatische Parallelisierungscompiler 1 ein Zuweisungsverfahren umfasst.
  • Wie vorstehend beschrieben analysiert der Computer 10 eine gemeinsam genutzte Ressource und extrahiert die vielen MTs, die den Zugriff auf eine solche gemeinsame Ressource zeigen, wodurch ermöglicht wird, einen MT aus in den verschiedenen Aufgaben enthaltenen MTs zu extrahieren, der auf die gemeinsame Ressource zugreift.
  • Da der Computer 10 die zahlreichen extrahierten MTs demselben Kern in dem Mehrkernprozessor 21 zuordnet, wird es möglich, den Ausschlussprozess zwischen Kernen zu verringern oder zu eliminieren.
  • Daher ist der Computer 10 in der Lage, das Parallelprogramm 21a1 zu erzeugen, das den Overhead der Ausführungszeit verringern kann, wenn es vom Mehrkernprozessor 21 ausgeführt wird. Zusätzlich zum vorstehend Erläuterten ist der Computer 10 in der Lage, das Parallelprogramm 21a1 zu erzeugen, das mehr Raum als ein Programm aufweist, das einen Inter-Core-Ausschlussprozess beinhaltet, wie in 10 gezeigt, d.h. so leistungsfähig ist, dass neue Prozesse hinzufügbar oder abarbeitbar sind.
  • Da der Computer 10 das Parallelprogramm durch Ausführen des automatischen Parallelisierungscompilers 1 erzeugt, sei angemerkt, dass der automatische Parallelisierungscompiler 1 dieselben Wirkungen wie der Computer 10 aufweist.
  • Selbst wenn der Computer 10 nicht mit der ersten Kernabhängigkeitsbestimmungseinrichtung 1c und der zweiten Kernabhängigkeitsbestimmungseinrichtung 2c versehen ist, kann der Computer 10 immer noch das gleiche Ziel erreichen. Daher braucht der Computer 10 den Schritt S13 nicht durchzuführen.
  • In diesem Fall ordnet der Computer 10 die zahlreichen MTs, die den Zugriff auf die gemeinsame Ressource von den verschiedenen Aufgaben benötigen, unabhängig von der Kernabhängigkeit in Schritt S14 demselben Kern zu.
  • Als Nächstes wird der Aufbau der fahrzeuginternen Vorrichtung 20 beschrieben.
  • Die fahrzeuginterne Vorrichtung 20 umfasst den Mehrkernprozessor 21, eine Kommunikationsvorrichtung 22, einen Sensor 23 und einen Ein-/Ausgangsanschluss 24 wie in 2 gezeigt. Der Mehrkernprozessor 21 ist mit einem ROM 21a, einem RAM 21b, dem ersten Kern 21c und dem zweiten Kern 21d versehen.
  • Die fahrzeuginterne Vorrichtung 20 ist beispielsweise auf eine Motorsteuereinrichtung, eine Hybridsteuereinrichtung und dergleichen anwendbar, die in einem Fahrzeug angeordnet sind. Das Parallelprogramm 21a1 ist jedoch nicht darauf beschränkt. Der Kern kann auch als Prozessorelement bezeichnet werden.
  • Der erste Kern 21c und der zweite Kern 21d führen das Parallelprogramm 21a1 zum Durchführen einer Motorsteuerung, einer Hybridsteuerung und dergleichen aus. Das heißt, die fahrzeugseitige Vorrichtung 20 führt eine Motorsteuerung, eine Hybridsteuerung und dergleichen durch Verwendung des ersten Kerns 21c und des zweiten Kerns 21d durch, die jeweils MT ausführen, die entweder dem ersten Kern 21c oder dem zweiten Kern 21d zugeordnet sind.
  • Somit weist die fahrzeugseitige Vorrichtung 20 den Mehrkernprozessor 21 und das Parallelprogramm 21a1 auf, das wie vorstehend erwähnt erzeugt wird.
  • Weiterhin führt in dem Mehrkernprozessor 21 jeder der Kerne 21c und 21d das Parallelprogramm 21a1 aus. Das heißt, die fahrzeugseitige Vorrichtung 20 führt das Parallelprogramm 21a1 aus, in dem ein Overhead reduziert wird.
  • Daher kann die fahrzeuginterne Vorrichtung 20 jeden MT optimal ausführen.
  • Der Overhead kann eine Kapazitätsverschlechterung des Mehrkernprozessors 21 verursachen. Anders gesagt führt der Mehrkernprozessor 21 das Parallelprogramm 21a1 aus, in dem der Overhead reduziert wird, wodurch die Kapazitätsverschlechterung verringert wird.
  • Hisichtlich der Einzelheiten des RAM 21b, des Kommunikators 22, des Sensors 23 und des Eingangs-/Ausgangsanschlusses 24 wird auf ein RAM 420, ein Kommunikationsteil 430, ein Sensorteil 450 und einen Eingabe-/Ausgabeanschluss 460 verwiesen, die in der Patentschrift JP 2015-1807 A offenbart sind.
  • Wenn die Mehrfach-MTs, die jeweils Zugriff auf die gemeinsame Ressource haben, aus den verschiedenen Aufgaben extrahiert werden, kann der Computer 10 nicht immer die zahlreichen MTs demselben Kern zuordnen. In diesem Fall ordnet der Computer 10 die zahlreichen extrahierten MTs den verschiedenen Kernen zu. Das heißt, der Computer 10 teilt die mehrfach extrahierten MTs dem ersten Kern 21c und dem zweiten Kern 21d aufteilend zu.
  • Um zu vermeiden, dass der erste Kern 21c und der zweite Kern 21d jeweils einen der zahlreichen MTs ausführen und jeweils gleichzeitig auf die gemeinsame Ressource zugreifen, kann der Computer 10 den Ausschlussprozess zwischen Kernen zum Erzeugen des Parallelprogramms 21a1 (d.h. eine Addiervorrichtung in den Ansprüchen hinzufügen). Es sei angemerkt, dass als Ausschlussprozess zwischen Kernen zum Beispiel ein Semaphor oder dergleichen einsetzbar ist.
  • Daher kann mit anderen Worten beschrieben werden, dass der Computer 10 das Parallelprogramm 21a1 einschließlich eines Ausschlussprozesses zwischen Kernen erzeugt. Das heißt, der Computer 10 fügt einen Prozess zum Steuern/Vermeiden einer Konkurrenz (d.h. Interferenz) für den Zugriff auf die gemeinsame Ressource unter den verschiedenen Kernen hinzu, denen die mehrfach extrahierten MTs zugeordnet wurden, um das Parallelprogramm 21a1 zu erzeugen.
  • Daher ist der Computer 10 in der Lage, das Parallelprogramm 21a1 zu erzeugen, mit dem die Konkurrenz um die gemeinsame Ressource durch/zwischen dem ersten Kern 21c und dem zweiten Kern 21d verringert wird, selbst wenn die zahlreichen MTs, die jeweils den Zugriff auf die gemeinsame Ressource von den verschiedenen Aufgaben benötigen, zwei verschiedenen Kernen 21c und 21d zugeordnet wurden.
  • Man beachte, dass der automatische Parallelisierungscompiler 1 dieselben Effekte wie der Computer 10 erreichen kann. Weiterhin dient der Addierer als ein Additionsvorgang des automatischen Parallelisierungscompilers 1.
  • Weiterhin kann der Computer 10, wenn er die zahlreichen MTs, die jeweils einen Zugriff für die verschiedenen Aufgaben auf die dem ersten Kern 21c und dem zweiten Kern 21d gemeinsame Ressource benötigen, einen Unterbrechungsprozess zum Erzeugen des Parallelprogramms 21a1 hinzufügen (d.h., eine Addiervorrichtung in den Ansprüchen sein).
  • Das heißt, um zu vermeiden, dass der erste Kern 21c und der zweite Kern 21d jeweils einen der zahlreichen MTs ausführen und jeweils gleichzeitig auf die gemeinsame Ressource zugreifen, kann der Computer 10 den Interruptprozess bzw. Unterbrechungsprozess hinzufügen, um eine Ausführung des anderen MT während einer Ausführung des einen der zahlreichen MTs zu unterbrechen.
  • Daher kann anders gesagt beschrieben werden, dass der Computer 10 das Parallelprogramm 21a1 einschließlich eines Interruptprozesses erzeugt. Das heißt, der Computer 10 fügt einen Prozess zum Steuern/Vermeiden der Konkurrenz (d.h. Interferenz) für den Zugriff auf die gemeinsame Ressource durch die verschiedenen Kerne hinzu, denen die zahlreichen extrahierten MTs zugeordnet wurden, um das Parallelprogramm 21a1 zu erzeugen.
  • Somit ist der Computer 10 dazu fähig, das Parallelprogramm 21a1 zu erzeugen, mit dem die Konkurrenz um die gemeinsame Ressource zwischen dem ersten Kern 21c und dem zweiten Kern 21d reduziert wird, selbst wenn die zahlreichen MTs den beiden verschiedenen Kernen 21c und 21d zugeordnet werden, die jeweils den Zugriff auf die gemeinsame Ressource für verschiedene Aufgaben benötigen.
  • Man beachte, dass der automatische Parallelisierungscompiler 1 dieselben Effekte wie der Computer 10 erzielen kann. Weiterhin entspricht die Addierervorrichtung in den Ansprüchen der zusätzlichen Prozedur des automatischen Parallelisierungscompilers 1.
  • Weiterhin kann der vorstehend beschriebene Aufbau in der vorliegenden Ausführungsform auch auf das Einzelprogramm 30 einschließlich der drei oder mehr Aufgaben anwendbar sein. In diesem Fall muss der Computer 10 eine höhere Anzahl von Funktionsblöcken entsprechend der Anzahl der Aufgaben aufweisen. In Bezug auf den Funktionsblock, der den MT-Gruppenextraktor 2d und dergleichen enthält, muss der Computer 10 jedoch nur einen solchen Funktionsblock haben.
  • Obwohl die vorliegende Offenbarung in Verbindung mit einer bevorzugten Ausführungsform derselben unter Bezugnahme auf die beigefügten Figuren beschrieben wurde, ist anzumerken, dass verschiedene Änderungen und Modifikationen für den Fachmann offensichtlich werden.
  • (Modifikationen)
  • Die Modifikation der vorliegenden Offenbarung wird unter Bezugnahme auf 11 und 12 beschrieben.
  • Die Modifikation unterscheidet sich vom Computer 10 dadurch, dass ein Computer 10a in der Modifikation eine Kernzuteilung und ein Scheduling zu einem Zeitpunkt für alle Aufgaben ausführt.
  • Bei der Modifikation enthält das Einzelprogramm 30 drei Aufgaben bzw. Tasks, eine erste Aufgabe 33, eine zweite Aufgabe 34 und eine dritte Aufgabe 35. Es ist zu beachten, dass bei der Modifikation das Einzelprogramm 30 auch zwei Aufgaben umfassen kann, oder das Einzelprogramm 30 auch vier oder mehr Aufgaben umfassen kann.
  • Der Computer 10a erzeugt das Parallelprogramm durch Ausführen des automatischen Parallelisierungscompilers der Modifikation.
  • Wie in 11 gezeigt enthält der Computer 10 den ersten Zugriffsanalysator 1a und den ersten Datenabhängigkeitsanalysator 1b als Funktionsblock für die erste Aufgabe 33 und enthält den zweiten Zugriffsanalysator 2a und den zweiten Datenabhängigkeitsanalysator 2b als Funktionsblock für die zweite Aufgabe. Weiterhin umfasst der Computer 10 einen dritten Zugriffsanalysator 3a und einen dritten Datenabhängigkeitsanalysator 3b als Funktionsblock für die dritte Aufgabe 35.
  • Der dritte Zugriffsanalysator 3a ist derselbe wie der erste Zugriffsanalysator 1a oder der zweite Zugriffsanalysator 2a. Der dritte Datenabhängigkeitsanalysator 3b ist derselbe wie der erste Datenabhängigkeitsanalysator 1b oder der zweite Datenabhängigkeitsanalysator 2b.
  • Weiterhin enthält der Computer 10 eine Kernabhängigkeitsbestimmungsvorrichtung 3, eine Zuweisungsbeschränkungsbestimmungsvorrichtung 4 und einen Optimierer 5 jeweils als einen gemeinsamen Funktionsblock.
  • Die Kernabhängigkeitsbestimmungseinrichtung 3 ist die gleiche wie die erste Kernabhängigkeitsbestimmungseinrichtung 1c oder die zweite Kernabhängigkeitsbestimmungseinrichtung 2c.
  • Die Zuweisungsbeschränkungsbestimmungsvorrichtung 4 entspricht dem MT-Gruppenextraktor 2d und der Zuweisungsbeschränkungsbestimmungsvorrichtung 2e (d.h. eine Zuteilungsvorrichtung in den Ansprüchen).
  • Die Zuteilungsbeschränkungsbestimmungsvorrichtung 4 bestimmt die Kernzuweisungsbeschränkung, die auf der Grundlage der Kernabhängigkeit und der Zugriffsressource jeder Aufgabe bestimmt wird. Das heißt, die Zuteilungsbeschränkungsbestimmungsvorrichtung 4 extrahiert eine MT-Gruppe aus den verschiedenen Aufgaben, die den Zugriff auf die gemeinsame Ressource benötigt.
  • Dann bestimmt die Zuweisungsbeschränkungsbestimmungseinrichtung 4 die Zuweisungsbeschränkung jedes MT auf der Grundlage des Bestimmungsergebnisses der Kernabhängigkeitsbestimmungseinrichtung 3 und der extrahierten MT-Gruppe.
  • Das heißt, die Zuweisungsbeschränkungsbestimmungseinrichtung 4 ordnet die zahlreichen extrahierten MTs demselben Kern in dem Mehrkernprozessor 21 unter Berücksichtigung des Bestimmungsergebnisses der Kernabhängigkeitsbestimmungsvorrichtung 3 zu.
  • Weiterhin weist die Zuweisungsbeschränkungsbestimmungsvorrichtung 4 die zahlreichen extrahierten MTs demselben Kern in dem Mehrkernprozessor 21 innerhalb der Grenzen zu, die die von der Kernabhängigkeitsbestimmungseinrichtung 3 spezifizierten Zuordnungsziele nicht ändern.
  • Zu beachten ist, dass die Zuweisungsbeschränkungsbestimmungsvorrichtung 4 wie der Computer 10 den kerninternen Ausschlussprozess hinzufügen kann, um die Interferenz zwischen den zahlreichen extrahierten Aufgaben zu vermeiden, wenn die zahlreichen extrahierten MTs in dem Multi-Core-Prozessor 21 demselben Kern zugeordnet wurden (d.h. als Zuteilungsvorrichtung in den Ansprüchen arbeiten kann).
  • Wie vorstehend erwähnt kann der automatische Parallelisierungscompiler in der Modifikation als ein Zuweisungsverfahren in den Ansprüchen beschrieben werden.
  • Die Optimierung 5 ist ein Funktionsblock, der eine temporäre Kernzuordnung, Scheduling bzw. Terminierung und eine Optimierung durchführt. Die Optimierung 5 entspricht dem ersten Scheduler 1d und dem zweiten Scheduler 2f.
  • Die Optimierung 5 führt die temporäre Kernzuordnung für MTs jeder Aufgabe aus, die keine Kernzuweisungsbeschränkung aufweist, führt das Scheduling für jede Aufgabe durch und optimiert einen Prozessausgleich jeder Aufgabe.
  • Nachstehend wird der Verarbeitungsvorgang des Computers 10a mit Bezug auf 12 beschrieben. Man beachte, dass jeder der folgenden Schritte S20 bis S29 einem Prozess des automatischen Parallelisierungs-Compilers 1 in der Modifikation entspricht.
  • Schritt S20 bis Schritt S22 sind gleich wie Schritt S10 bis Schritt S12.
  • In Schritt S23 wird für alle Aufgaben bestimmt, ob die Aufgabe in den Schritten S20 bis S22 verarbeitet wurde.
  • Wenn es eine Aufgabe aus allen Aufgaben gibt, für die keiner der Schritte S20 bis S22 ausgeführt wurde, bestimmt der Computer 10, dass die Verarbeitung der Aufgaben noch nicht abgeschlossen ist, und der Prozess kehrt zu Schritt S20 zurück.
  • Wenn es keine Aufgabe gibt, die keinen der Schritte S20 bis S22 durchlaufen hat, bestimmt der Computer 10, dass die Verarbeitung aller Aufgaben abgeschlossen ist, und der Prozess geht zu Schritt S24 über.
  • In Schritt S24 wird die Kernabhängigkeit jedes MT bestimmt.
  • Der Computer 10a kann die Kernabhängigkeit jedes MT gemäß der Kernabhängigkeitsinformation 41 bestimmen, die angibt, dass ein bestimmter MT beispielsweise aus funktionalen Sicherheitsgründen durch einen bestimmten Kern ausgeführt werden muss. Schritt S24 kann als ein Prozess betrachtet werden, den die Kernabhängigkeitsbestimmungsvorrichtung 3 ausführt.
  • In Schritt S25 wird die Kernzuordnung jedes MTs bestimmt.
  • Der Computer 10a bestimmt in Bezug auf einen MT, dessen Zuordnung zu einem bestimmten Kern nach einer vorhandenen Kernabhängigkeit bestimmbar ist, die Kernzuordnung jedes MTs für alle Aufgaben.
  • Ferner weist der Computer 10a demselben Kern eine MT-Gruppe zu, die in jeder Aufgabe auf die gemeinsame Ressource zugreift.
  • Schritt S25 kann als ein Prozess betrachtet werden, der durch die Zuweisungsbeschränkungsbestimmungsvorrichtung 4 ausgeführt wird.
  • In Schritt S26 wird jeder der noch nicht zugeordneten MTs vorübergehend einem bestimmten Kern zugeordnet (d.h. eine temporäre Kernzuordnung).
  • Der Computer 10a weist vorübergehend einen MT einem beliebigen Kern zu, der in Schritt S25 keinem Kern zugeordnet wurde.
  • In Schritt S27 wird eine Ausführungssequenz jedes MTs bestimmt (d.h. Scheduling wird durchgeführt).
  • Der Computer 10a bestimmt eine Ausführungssequenz jedes MTs in jeder Aufgabe.
  • In Schritt S28 wird eine Auswertungs- bzw. Evaluierungsfunktion berechnet.
  • Der Computer 10a berechnet eine Auswertungsfunktion in einem Zustand, in dem jeder MT vorübergehend zugewiesen ist. Die Auswertungsfunktion ist ein Index für einen Grad der Optimierung der Kernzuteilung.
  • Die Auswertungsfunktion kann beispielsweise als Division der [Summe der Verarbeitungszeit jedes Kerns] durch [eine maximale Verarbeitungszeit jedes Kerns] formuliert werden. Das heißt, die Auswertungsfunktion kann folgende Form annehmen. Auswertungsfunktion = Σ(A × B)/max(A × B) , mit
  • A:
    {Ausführungshäufigkeit jeder Aufgabe}
    B:
    {Verarbeitungszeit jeder Aufgabe durch den jeweiligen Kern}
  • In Schritt S29 wird bestimmt, ob die Auswertungsfunktion den Maximalwert annimmt. Das heißt, der Computer 10a bestimmt, ob der Wert, der durch Berechnen der Auswertungsfunktion erhalten wird, der Maximalwert ist.
  • Wenn die Auswertungsfunktion als nicht maximiert bestimmt wird, interpretiert der Computer 10a, dass der Prozessausgleich nicht für jede Aufgabe optimiert wurde, und der Prozess kehrt zu Schritt S26 zurück.
  • Wenn die Auswertungsfunktion als maximiert bestimmt wird, interpretiert der Computer 10a, dass der Prozessausgleich für jede Aufgabe optimiert ist, und beendet den Prozess aus 12. Das heißt, die Optimierung des Prozessausgleichs wird erreicht, wenn die Auswertungsfunktion zur Evaluierung der Zuordnung von MTs zu Kernen maximiert ist.
  • Anders gesagt kann eine der Zuordnungen von MTs zu den Kernen, die den Wert der Auswertungsfunktion maximiert, zur Optimierung des Prozessausgleichs verwendet werden.
  • Da jedoch die Menge der Auswertungen sprunghaft ansteigen/in die Höhe schießen kann, wenn die Anzahl der MTs ansteigt, kann vorzugsweise ein bestimmter effizienter Suchalgorithmus verwendet werden. Man bemerke jedoch, dass ein effizienter Suchalgorithmus keine notwendige Voraussetzung ist.
  • Wie oben beschrieben, optimiert der Computer 10a durch Wiederholen der Schritte S26–S29 einen Prozessabgleich in jeder Aufgabe, d.h. optimiert die Kernzuteilung jedes MT. Das heißt, der Computer 10a optimiert die Prozessbilanz in jeder Aufgabe durch Ersetzen der Kernzuteilung jedes MT, die durch eine temporäre Zuweisung von MT zu den Kernen durchgeführt wird. Diese Schritte S26–S29 werden als ein vom Optimierer 5 durchgeführter Prozess betrachtet.
  • Der Computer 10a erzeugt eine erste Aufgabe 33a nach der Parallelisierung, eine zweite Aufgabe 34a nach der Parallelisierung und eine dritte Aufgabe 35a nach der Parallelisierung aus dem Einzelprogramm 30 durch Ausführen des Verfahrens in der vorstehend beschriebenen Weise. Dann kombiniert der Computer 10a die erste Aufgabe 33a nach der Parallelisierung mit der dritten Aufgabe 35a nach der Parallelisierung, um das Parallelprogramm 21a1 zu erzeugen.
  • Der Computer 10a erzielt dieselben Effekte wie der Computer 10. Weiterhin erzielt der automatische Parallelisierungscompiler bei der Modifikation auch die gleichen Effekte wie der Computer 10a.
  • Man beachte, dass der Computer 10a die gleiche Aufgabe ohne die Kernabhängigkeitsbestimmungsvorrichtung 3 erreichen kann. Daher muss der Computer 10a den Schritt S24 nicht durchführen.
  • In einem solchen Fall weist der Computer 10a (d.h. die Zuweisungsbeschränkungsbestimmungsvorrichtung 4) in Schritt S25 die mehreren MTs zu, die jeweils unabhängig von der Kernabhängigkeit Zugriff auf die gemeinsame Ressource von den verschiedenen Aufgaben zu demselben Kern benötigen.
  • Solche durch die beigefügten Ansprüche definierten Änderungen, Modifikationen und zusammengefassten Schemata sind als von der vorliegenden Offenbarung umfasst zu verstehen.
  • Zusammenfassend leistet die Erfindung Folgendes:
    Ein Computer 10 erzeugt auf der Grundlage einer Analyse eines Einzelprogramms 30, das mehrere für einen Einkern-Mikrocomputer geschriebene Aufgaben 31, 32 enthält, ein Parallelprogramm 21a1 durch Parallelisierung von parallelisierbaren Aufgaben 31, 32 für einen Mehrkernprozessor mit mehreren Kernen. Der Computer 10 enthält einen Makrotask(MT)-Gruppen-Extraktor 2d, der eine gemeinsam benötigte Ressource analysiert oder findet, auf die gemeinsam von den zahlreichen Aufgaben 31, 32 zugegriffen wird, und extrahiert zahlreiche MTs, die den Zugriff auf eine derartige gemeinsam genutzte Ressource benötigen. Dann verwendet der Computer 10 eine Zuordnungsbeschränkungsbestimmungsvorrichtung 2e, um die extrahierten mehreren MTs demselben Kern in dem Mehrkernprozessor zuzuordnen. Durch die Ausarbeitung eines vorstehend beschriebenen Parallelisierungsverfahrens wird ein Overhead in einer Ausführungszeit des Parallelprogramms durch den Mehrkern-Prozessor verringert und eine fahrzeugseitige Vorrichtung wird in die Lage versetzt, jeden der MTs im Programm optimal auszuführen.
  • 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 20151807 A [0002]
    • JP 2015-1807 A [0042, 0068, 0069, 0134]

Claims (11)

  1. Parallelisierungsverfahren, das ein Parallelprogramm (21a1) für einen Mehrkern-Mikrocomputer mit zahlreichen Kernen erzeugt, wobei das Parallelprogramm parallelisierbare Prozesseinheiten basierend auf (i) einer Analyse eines Einzelprogramms für einen Einkernmikrocomputer, das zahlreiche Aufgaben umfasst, und (ii) einer Abhängigkeitsbeziehung parallelisiert, die aus der Analyse abgeleitet ist und einen Zugriff auf dieselbe Ressource aus den Prozesseinheiten anzeigt, wobei das Parallelisierungsverfahren Folgendes umfasst: einen Extraktionsprozess (2d, 4), der eine Vielzahl der Prozesseinheiten basierend auf einer Analyse derselben Ressource extrahiert, die auf dieselbe Ressource zugreifen, auf die üblicherweise von den zahlreichen Aufgaben zugegriffen wird; und einen Zuordnungsprozess (2e, 4), der die zahlreichen durch den Extraktionsprozess extrahierten Prozesseinheiten einem gleichen Kern des Mehrkernmikrocomputers zuordnet.
  2. Parallelisierungsverfahren nach Anspruch 1, wobei der Zuordnungsprozess den zahlreichen Prozesseinheiten, die durch den Extraktionsprozess extrahiert und dem gleichen Kern des Multicore-Mikrocomputers zugeordnet wurden, einen kerninternen Ausschlussprozess hinzufügt.
  3. Parallelisierungsverfahren nach Anspruch 1 oder 2, wobei der Zuordnungsprozess die zahlreichen durch den Extraktionsprozess extrahierten Prozesseinheiten verschiedenen Kernen des Mehrkern-Mikrocomputers zuordnet, wenn die zahlreichen durch die Extraktionsvorgänge extrahierten Prozesseinheiten nicht demselben Kern des Mehrkernmikrocomputers zugeordnet werden können, und das Parallelisierungsverfahren ferner einen Additionsprozess umfasst, der einen Ausschlussprozess zwischen Kernen hinzufügt, der einen Zugriff auf dieselbe Ressource durch die verschiedenen Kerne verhindert, die jeweils jede der zahlreichen Prozesseinheiten ausführen, falls der Zuordnungsprozess die Mehrzahl der Prozesseinheiten, die durch das Extraktionsverfahren extrahiert wurden, den verschiedenen Kernen des Mehrkern-Mikrocomputers zuordnet.
  4. Parallelisierungsverfahren nach Anspruch 1 oder 2, wobei das Zuordnungsverfahren die zahlreichen durch den Extraktionsprozess extrahierten Prozesseinheiten verschiedenen Kernen des Mehrkern-Mikrocomputers zuordnet, wenn die zahlreichen durch die Extraktionsvorgänge extrahierten Prozesseinheiten demselben Kern des Mehrkern-Mikrocomputers nicht zugeordnet werden können, und das Parallelisierungsverfahren ferner einen Unterbrechungsvorgang umfasst, der einen Unterbrechungsprozess hinzufügt, der einen Zugriff auf dieselbe Ressource durch die verschiedenen Kerne verhindert, die jeweils eine aus der Vielzahl von Prozesseinheiten ausführen, indem der Rest der zahlreichen Prozesseinheiten während des Zugriffs auf die gleiche Ressource durch eine der zahlreichen Prozesseinheiten unterbrochen wird, wenn der Zuordnungsprozess die zahlreichen durch den Extraktionsprozess extrahierten Prozesseinheiten den verschiedenen Kernen des Mehrkernmikrocomputers zuordnet.
  5. Parallelisierungsverfahren nach einem der Ansprüche 1 bis 4, wobei Kernzuweisungsinformation, die das Zuweisungsziel jedes der zahlreichen Prozesseinheiten des einzelnen Programms anzeigt, erhalten wird, um die zahlreichen Prozesseinheiten den zahlreichen Kernen des Mehrkern-Mikrocomputers zuzuordnen, und der Zuordnungsprozess die Kernzuordnungsinformation bei der Zuweisung der Mehrzahl der Prozesseinheiten an bestimmte Kerne priorisiert und die zahlreichen durch den Extraktionsprozess extrahierten Prozesseinheiten demselben Kern des Mehrkern-Mikrocomputers zuordnet.
  6. Parallelisierungswerkzeug mit einem Computer (10) zum Erzeugen eines Parallelprogramms (21a1) durch Parallelisierung von parallelisierbaren Prozesseinheiten für einen Mehrkernmikrocomputer mit zahlreichen Kernen auf der Grundlage einer Abhängigkeitsbeziehung, die einen Zugriff auf eine gleiche Ressource aus zahlreichen Prozesseinheiten eines Einzelprogramms anzeigt, gemäß einer Analyse eines Einzelprogramms, das mehrere Aufgaben für einen Einkernmikrocomputer umfasst, wobei das Parallelisierungswerkzeug Folgendes umfasst: einen Extraktor (2d, 4), der eine Vielzahl von Prozesseinheiten extrahiert, die auf dieselbe Ressource zugreifen, basierend auf einer Analyse der gleichen Ressource, auf die üblicherweise von den zahlreichen Tasks zugegriffen wird; und eine Zuordnungsvorrichtung (2e, 4), die die zahlreichen vom Extraktor extrahierten Prozesseinheiten dem gleichen Kern des Mehrkernmikrocomputers zuordnet.
  7. Parallelisierungswerkzeug nach Anspruch 6, wobei die Zuordnungsvorrichtung den zahlreichen vom Extraktor extrahierten Einheitsprozessen, die demselben Kern des Mehrkern-Mikrocomputers zugeordnet wurden, einen kerninternen Ausschlussprozess hinzufügt.
  8. Parallelisierungswerkzeug nach Anspruch 6 oder 7, wobei die Zuordnungsvorrichtung die Mehrzahl der vom Extraktor extrahierten Einheitsprozesse unterschiedlichen Kernen des Mehrkern-Mikrocomputers zuordnet, wenn die zahlreichen vom Extraktor extrahierten Einheitsprozesse nicht demselben Kern des Mehrkern-Mikrocomputers zugeordnet werden können und die Parallelisierungsvorrichtung weiterhin einen Addierer umfasst, der einen Ausschlussprozess zwischen Kernen hinzufügt, der einen Zugriff von verschiedenen Kernen, die jeweils die zahlreichen Einheitsprozesse ausführen, auf dieselbe Ressource verhindert, falls die Zuordnungsvorrichtung die zahlreichen durch den Extraktor extrahierten Prozesse den verschiedenen Kernen des Mehrkern-Mikrocomputers zugeordnet hat.
  9. Parallelisierungswerkzeug nach Anspruch 6 oder 7, wobei die Zuordnungsvorrichtung die zahlreichen vom Extraktor extrahierten Einheitsprozesse unterschiedlichen Kernen des Mehrkern-Mikrocomputers zuordnet, wenn die zahlreichen vom Extraktor extrahierten Einheitsprozesse nicht demselben Kern des Mehrkern-Mikrocomputers zugeordnet werden können und das Parallelisierungswerkzeug ferner einen Unterbrecher umfasst, der einen Unterbrechungsprozess hinzufügt, der einen Zugriff der verschiedenen Kerne, die jeweils einen der zahlreichen Einheitsprozesse ausführen, auf dieselbe Ressource durch Unterbrechen des Restes der zahlreichen Einheitsprozesse während des Zugriffs auf diese Ressource durch einen der zahlreichen Einheitsprozesse verhindert, wenn die Zuordnungsvorrichtung die zahlreichen vom Extraktor extrahierten Einheitsprozesse den verschiedenen Kernen des Mehrkern-Mikrocomputers zuordnet.
  10. Parallelisierungswerkzeug nach einem der Ansprüche 6 bis 9, wobei, der Computer eine Kernzuweisungsinformation erhält, die das Zuweisungsziel jedes der zahlreichen Einheitsprozesse des Einzelprogramms anzeigt, um die zahlreichen Einheitsprozesse den zahlreichen Kernen des Mehrkern-Mikrocomputers zuzuordnen, und die Zuordnungsvorrichtung die Kernzuteilungsinformation bei der Zuteilung der zahlreichen Einheitsprozesse an bestimmte Kerne priorisiert und die zahlreichen vom Extraktor extrahierten Einheitsprozesse demselben Kern des Mehrkern-Mikrocomputers zuordnet.
  11. Fahrzeuginterne Vorrichtung mit: einem Mehrkern-Mikrocomputer (21) mit zahlreichen Kernen (21c, 21d); und einem Parallelprogramm (21a1), das mehrere Prozesseinheiten in einem Einzelprogramm für einen Einkern-Mikrocomputer parallelisiert, wobei das Einzelprogramm mehrere Aufgaben durch einen einzelnen Kern umfasst/verarbeitet, wobei das parallele Programm dazu aufgebaut ist, Folgendes zu tun: (a) Parallelisieren der zahlreichen Aufgaben durch Parallelisieren mehrerer parallelisierbarer Einheitsprozesse basierend auf einer Datenabhängigkeit, die einen Zugriff auf eine gleiche Ressource aus zahlreichen Einheitsprozessen des Einzelprogramms anzeigt, nach einer Analyse des Einzelprogramms, das die zahlreichen Aufgaben für der Einkern-Mikrocomputer enthält, (b) Extrahieren der zahlreichen Einheitsprozesse, die auf der Grundlage eines Hinweises auf einen Zugriff auf die gemeinsam genutzte Ressource extrahiert wurden, durch Analysieren einer gemeinsam genutzten Ressource, die üblicherweise von den zahlreichen Aufgaben genutzt wird, und (c) Zuordnen der extrahierten Mehrheitsprozesse zum gleichen Kern des Mehrkern-Mikrocomputers und wobei der Mehrkern-Mikrocomputer so aufgebaut ist, dass er das parallele Programm ausführt, indem er die zahlreichen Kerne verwendet, um jeweils die den zahlreichen Kernen zugeordneten Einheitsprozesse auszuführen.
DE102017210126.1A 2016-06-21 2017-06-16 Parallelisierungsverfahren, Parallelisierungswerkzeug und fahrzeuginterne Vorrichtung Pending DE102017210126A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2016-122769 2016-06-21
JP2016122769A JP2017228029A (ja) 2016-06-21 2016-06-21 並列化方法、並列化ツール、車載装置

Publications (1)

Publication Number Publication Date
DE102017210126A1 true DE102017210126A1 (de) 2017-12-21

Family

ID=60481314

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102017210126.1A Pending DE102017210126A1 (de) 2016-06-21 2017-06-16 Parallelisierungsverfahren, Parallelisierungswerkzeug und fahrzeuginterne Vorrichtung

Country Status (3)

Country Link
US (1) US10540156B2 (de)
JP (1) JP2017228029A (de)
DE (1) DE102017210126A1 (de)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017107448A (ja) * 2015-12-10 2017-06-15 株式会社デンソー 並列化方法、並列化ツール、車載装置
US10671361B2 (en) * 2016-10-25 2020-06-02 Paypal, Inc. Automatically determining data dependencies to facilitate code execution
JP7073933B2 (ja) * 2018-06-14 2022-05-24 株式会社デンソー マルチコアマイコン及び並列化方法
JP7107275B2 (ja) * 2019-04-25 2022-07-27 株式会社デンソー 並列化方法、半導体制御装置、及び車載制御装置
US11709648B2 (en) * 2019-12-19 2023-07-25 Tyxit Sa Distributed audio processing system for processing audio signals from multiple sources

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

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5802338A (en) * 1996-10-01 1998-09-01 International Business Machines Corporation Method of self-parallelizing and self-parallelizing multiprocessor using the method
JPH11259437A (ja) * 1998-03-12 1999-09-24 Hitachi Ltd 不要バリア命令の削減方式
JP4042604B2 (ja) * 2003-03-31 2008-02-06 日本電気株式会社 プログラム並列化装置,プログラム並列化方法およびプログラム並列化プログラム
US7926046B2 (en) * 2005-12-13 2011-04-12 Soorgoli Ashok Halambi Compiler method for extracting and accelerator template program
JP4936517B2 (ja) * 2006-06-06 2012-05-23 学校法人早稲田大学 ヘテロジニアス・マルチプロセッサシステムの制御方法及びマルチグレイン並列化コンパイラ
JPWO2008072334A1 (ja) 2006-12-14 2010-03-25 富士通株式会社 コンパイル方法及びコンパイラ
JP5224498B2 (ja) * 2007-02-28 2013-07-03 学校法人早稲田大学 メモリ管理方法、情報処理装置、プログラムの作成方法及びプログラム
JP2009258962A (ja) 2008-04-16 2009-11-05 Hitachi Ltd プログラム変換方法、及び装置
US20120239910A1 (en) * 2008-08-15 2012-09-20 Apple Inc. Conditional extract instruction for processing vectors
US8417919B2 (en) * 2008-09-12 2013-04-09 Wisconsin Alumni Research Foundation Assigning different serialization identifier to operations on different data set for execution in respective processor in multi-processor system
WO2011052005A1 (en) * 2009-10-27 2011-05-05 Hitachi, Ltd. Storage controller and storage control method for dynamically assigning partial areas of pool area as data storage areas
US9830157B2 (en) * 2010-08-18 2017-11-28 Wisconsin Alumni Research Foundation System and method for selectively delaying execution of an operation based on a search for uncompleted predicate operations in processor-associated queues
US9152523B2 (en) * 2010-09-15 2015-10-06 Qualcomm Incorporated Batching and forking resource requests in a portable computing device
KR101738641B1 (ko) * 2010-12-17 2017-05-23 삼성전자주식회사 멀티 코어 시스템의 프로그램 컴파일 장치 및 방법
US9513966B2 (en) * 2011-02-17 2016-12-06 Siemens Aktiengesellschaft Parallel processing in human-machine interface applications
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
JP5637182B2 (ja) 2012-07-02 2014-12-10 株式会社デンソー プログラム開発支援装置、及びプログラム開発支援ツール
US20150363230A1 (en) * 2013-01-23 2015-12-17 Waseda University Parallelism extraction method and method for making program
US10241793B2 (en) * 2013-03-15 2019-03-26 Analog Devices Global Paralleizing loops in the presence of possible memory aliases
JP6427055B2 (ja) * 2015-03-31 2018-11-21 株式会社デンソー 並列化コンパイル方法、及び並列化コンパイラ
JP6427054B2 (ja) * 2015-03-31 2018-11-21 株式会社デンソー 並列化コンパイル方法、及び並列化コンパイラ
JP2017107448A (ja) * 2015-12-10 2017-06-15 株式会社デンソー 並列化方法、並列化ツール、車載装置
JP6558310B2 (ja) * 2016-06-13 2019-08-14 株式会社デンソー 並列化方法、並列化ツール

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
US20170364341A1 (en) 2017-12-21
US10540156B2 (en) 2020-01-21
JP2017228029A (ja) 2017-12-28

Similar Documents

Publication Publication Date Title
DE102017210126A1 (de) Parallelisierungsverfahren, Parallelisierungswerkzeug und fahrzeuginterne Vorrichtung
DE102013104328B4 (de) Aufgabenzuteilung in großen und kleinen Kernen
DE2243956A1 (de) Speicherprogrammierte datenverarbeitungsanlage
DE102016223939A1 (de) Parallelisierungsverfahren, Parallelisierungswerkzeug und fahrzeugeigene Vorrichtung
DE2720578A1 (de) Rechnersystem mit mehrprogrammbetrieb/mehrprogrammverarbeitung sowie verfahren zum betrieb eines solchen rechnersystems
DE102016204963A1 (de) Parallelisierungskompilierverfahren, Parallelisierungskompilierer und Fahrzeugvorrichtung
DE102015002191A1 (de) Sicherheits-Hypervisor-Funktion
DE112019005584T5 (de) Arithmetiksteuervorrichtung
DE102006008684A1 (de) Verfahren und System zum Stack-Cachen
DE102012209789B4 (de) Fahrzeuggebundene elektrische steuervorrichtung
DE102018114322A1 (de) Architektur und Dienste zur Unterstützung der rekonfigurierbaren Synchronisation in einem Multiprozessorsystem
DE112010004037T5 (de) Simulationsverfahren, -system und -programm
DE102016219403A1 (de) Parallelisierungsverarbeitung, parallelisierungswerkzeug und fahrzeuggebundene vorrichtung
DE102016204970A1 (de) Parallelisierungskompilierverfahren, Parallelisierungskomplierer und Fahrzeugvorrichtung
DE69933323T2 (de) Kompiler
DE102016204960A1 (de) Parallelisierungskompilierverfahren, Parallelisierungskompilierer und Fahrzeugvorrichtung
DE102012210482A1 (de) Verfahren und System zum Migrieren von Geschäftsprozessinstanzen
DE102016219449A1 (de) Parallelisierungsverfahren, Parallelisierungswerkzeug und fahrzeugverbaute Einrichtung
DE102015112250A1 (de) Trennung von Kernen
DE102018123563B4 (de) Verfahren zur Zwischenkernkommunikation in einem Mehrkernprozessor
EP1801696B1 (de) Multithreading - fähige virtuelle Maschine
DE102019202870A1 (de) Parallelisierungsverfahren, Parallelisierungswerkzeug und Multikernmikrocomputer
DE102019202228A1 (de) Parallelisierungsverfahren, Parallelisierungswerkzeug, Mehrkernmikrocomputer und fahrzeuginterne Vorrichtung
DE102013212266A1 (de) Programmentwicklungsunterstützungsvorrichtung und Programmentwicklungsunterstützungswerkzeug
DE102017209285A1 (de) Parallelization method, parallelization tool, and in-vehicle device

Legal Events

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