DE102016219403A1 - PARALLELIZATION PROCESSING, PARALLELIZATION TOOL AND VEHICLE-ASSIGNED DEVICE - Google Patents

PARALLELIZATION PROCESSING, PARALLELIZATION TOOL AND VEHICLE-ASSIGNED DEVICE Download PDF

Info

Publication number
DE102016219403A1
DE102016219403A1 DE102016219403.8A DE102016219403A DE102016219403A1 DE 102016219403 A1 DE102016219403 A1 DE 102016219403A1 DE 102016219403 A DE102016219403 A DE 102016219403A DE 102016219403 A1 DE102016219403 A1 DE 102016219403A1
Authority
DE
Germany
Prior art keywords
processing
core
task
dependent task
dependent
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
DE102016219403.8A
Other languages
German (de)
Inventor
Naoki Sada
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 DE102016219403A1 publication Critical patent/DE102016219403A1/en
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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5017Task decomposition

Abstract

Ein Parallelisierungsverfahren und ein Parallelisierungswerkzeug, die ein paralleles Programm erzeugen können, das einen Wartezustand reduzieren kann, und eine fahrzeuggebundene Vorrichtung, die den Wartezustand reduzieren kann, werden bereitgestellt. Ein Computer (10) erzeugt ein paralleles Programm (21a1) aus einem einzelnen Programm für einen Einzelkern-Mikrocomputer durch Ausführen eines automatischen Parallelisierungswerkzeugs. Für jede von Verarbeitungen, die Kernen (21c) zugeordnet sind, ordnet der Computer eine Verarbeitung mit einer Abhängigkeit einer abhängigen Aufgabe zu und eine Verarbeitung, die die Abhängigkeit nicht aufweist, einer nicht abhängigen Aufgabe (S10 bis S12) zu. Der Computer (10) weist dem parallelen Programm (21a1) eine Funktion zum Versetzen der abhängigen Aufgabe in einem Verarbeitungswartezustand und Aufheben des Verarbeitungswartezustands der nicht abhängigen Aufgabe zu, wenn die Aufgaben in einem Synchronisierungswartezustand (S15) versetzt werden.A parallelization method and a parallelization tool that can generate a parallel program that can reduce a wait state and a vehicle-mounted device that can reduce the wait state are provided. A computer (10) generates a parallel program (21a1) from a single program for a single-core microcomputer by executing an automatic parallelization tool. For each of processes associated with cores (21c), the computer allocates processing with a dependency of a dependent task and processing that does not have the dependency with a non-dependent task (S10 to S12). The computer (10) assigns the parallel program (21a1) a function for offsetting the dependent task in a processing wait state and canceling the processing wait state of the non-dependent task when the tasks are put in a synchronization wait state (S15).

Figure DE102016219403A1_0001
Figure DE102016219403A1_0001

Description

Die vorliegende Offenbarung betrifft ein Parallelisierungsverfahren und ein Parallelisierungswerkzeug zum Erzeugen eines parallelen Programms für einen Mehrkern-Mikrocomputer aus einem Programm für einen Einzelkern-Mikrocomputer und eine fahrzeuggebundene Vorrichtung, die das parallele Programm implementiert, das durch das Parallelisierungsverfahren erzeugt wird.The present disclosure relates to a parallelization method and a parallelization tool for generating a parallel program for a multi-core microcomputer from a program for a single-core microcomputer and a vehicle-mounted device implementing the parallel program generated by the parallelization method.

Bis jetzt gibt es als ein Beispiel des Parallelisierungsverfahrens zum Erzeugen des parallelen Programms für den Mehrkern-Mikrocomputer aus dem Programm für den Einzelkern-Mikrocomputer ein Parallelisierungskompilierverfahren, das in Patentdokument 1 offenbart ist.So far, as an example of the parallelization method for generating the parallel program for the multi-core microcomputer from the single-core microcomputer program, there is a parallelization compilation method disclosed in Patent Document 1.

Bei dem Parallelisierungskompilierverfahren werden, nachdem ein sequentielles Programm eines eingebetteten Systems, das durch ein Einzelkern-Prozessorsystem auszuführen ist, in mehrere Makroaufgaben (nachfolgend als „MTs” bezeichnet) aufgeteilt wurde, die Makroaufgaben, die eine Steuerabhängigkeit aufweisen, in eine Makroaufgabe zusammengefasst. Danach werden in dem Parallelisierungskompilierverfahren parallelisierbare Makroaufgaben auf der Basis von Datenabhängigkeit extrahiert und statische Zeitplanung wird ausgeführt, um ein paralleles Programm zu erzeugen.

  • Patentdokument 1: JP-2015-1807 A entspricht US 2014372995 (A1) und DE 10 2014 211 047 (A1)
In the parallelization compilation method, after a sequential program of an embedded system to be executed by a single core processor system is divided into a plurality of macro tasks (hereinafter referred to as "MTs"), the macro tasks having a control dependency are grouped into a macro task. Thereafter, in the parallelization compilation method, parallelizable macro tasks are extracted on the basis of data dependency, and static scheduling is performed to generate a parallel program.
  • Patent Document 1: JP-2015-1807 A corresponds to US 2014372995 (A1) and DE 10 2014 211 047 (A1)

Jedoch beinhaltet das parallele Programm, das in einem Verfahren erzeugt wird, das in Patentdokument 1 offenbart ist, eine Synchronisierungsverarbeitung zum Warten darauf, dass das Ausführen einer Makroaufgabe, die einem Kern zugeordnet ist, abgeschlossen ist, und dann einer Makroaufgabe zu erlauben, die einem anderen Kern zugeordnet ist, ausgeführt zu werden. Auf diese Weise wird in dem parallelen Programm, da ein Wartezustand zum Veranlassen des Kerns, die Makroaufgabe auszuführen, auftritt, die Performanz des Mehrkern-Mikrocomputers nicht vollständig verwendet.However, the parallel program generated in a method disclosed in Patent Document 1 involves synchronization processing for waiting for execution of a macro task associated with a core to be completed, and then allowing a macro task to be performed other core is assigned to be executed. In this way, in the parallel program, since a wait state for causing the kernel to perform the macro task occurs, the performance of the multi-core microcomputer is not fully utilized.

Hinsichtlich der vorstehenden Schwierigkeiten ist eine Aufgabe der vorliegenden Offenbarung ein Parallelisierungsverfahren und ein Parallelisierungswerkzeug bereitzustellen, die ein paralleles Programm erzeugen können, das den Wartezustand reduzieren kann, und eine fahrzeuggebundene Vorrichtung bereitzustellen, die den Wartezustand reduzieren kann.In view of the above problems, an object of the present disclosure is to provide a parallelization method and a parallelization tool that can generate a parallel program that can reduce the waiting state and provide a vehicle-mounted device that can reduce the waiting state.

In einem ersten Aspekt der vorliegenden Offenbarung wird ein Parallelisierungsverfahren zum Erzeugen aus mehreren Verarbeitungen in einem einzelnen Programm für einen Einzelkern-Mikrocomputer mit einem Kern eines parallelen Programms, das für einen Mehrkern-Mikrocomputer mit mehreren Kernen parallelisiert wird, durch Analysieren einer Abhängigkeit der mehreren Verarbeitungen in dem einzelnen Programm und Zuordnen der mehreren Verarbeitungen unterschiedlichen Kernen des Mehrkern-Mikrocomputers bereitgestellt. Das Parallelisierungsverfahren umfasst: eine Teilungsprozedur zum, für jede der mehreren Verarbeitungen, die den Kernen zuzuordnen sind, Zuordnen der Verarbeitung mit der Abhängigkeit einer abhängigen Aufgabe und Zuordnen der Verarbeitung mit keiner Abhängigkeit einer nicht abhängigen Aufgabe; und eine Zuteilungsprozedur zum Zuteilen dem parallelen Programm eine Funktion zum Ausführen der Verarbeitung, die der nicht abhängigen Aufgabe eines Eigenkerns zugeordnet ist, wenn die abhängige Aufgabe des Eigenkerns in einen Wartezustand versetzt ist, damit Ausführen der Verarbeitung, die der abhängigen Aufgabe des Eigenkerns zugeordnet ist, ausgehend von einer Vervollständigung der Ausführung der Verarbeitung gestartet wird, die der abhängigen Aufgabe eines anderen Kerns zugeordnet ist.In a first aspect of the present disclosure, a parallelization method of generating a plurality of processings in a single program for a single core microcomputer having a parallel program core parallelized for a multi-core multi-core microcomputer by analyzing a dependency of the plurality of processes in the single program and allocating the multiple processes to different cores of the multi-core microcomputer. The parallelization method comprises: a partitioning procedure for, for each of the plurality of processes to be assigned to the cores, associating the processing with the dependency of a dependent task, and associating the processing with no dependency of a non-dependent task; and an allocation procedure for allocating to the parallel program a function of executing the processing associated with the non-dependent task of a self-kernel when the dependent task of the self-kernel is put in a wait state, thereby performing the processing associated with the dependent task of the self-kernel , starting from a completion of the execution of the processing associated with the dependent task of another core.

Wie vorstehend beschrieben ist, ordnet für jede der mehreren Verarbeitungen, die den Kernen zugeordnet ist, das vorstehende Parallelisierungsverfahren die Verarbeitung mit der Abhängigkeit der abhängigen Aufgabe zu und ordnet die Verarbeitung mit keiner Abhängigkeit der nicht abhängigen Aufgabe zu. Mit der vorstehenden Konfiguration werden die abhängige Aufgabe einschließlich der Verarbeitung mit der Abhängigkeit und die nicht abhängige Aufgabe einschließlich der Verarbeitung mit keiner Abhängigkeit jedem Kern zugeordnet. Ferner wird in dem vorstehenden Parallelisierungsverfahren dem parallelen Programm die Funktion zum Ausführen der Verarbeitung zugeteilt, die der nicht abhängigen Aufgabe des Eigenkerns zugeordnet ist, wenn die abhängige Aufgabe des Eigenkerns in den Wartezustand versetzt ist. Somit kann das vorstehende Parallelisierungsverfahren das parallele Programm bereitstellen, das die Verarbeitung der nicht abhängigen Aufgabe ausführt, während das Ausführen der Verarbeitung der abhängigen Aufgabe durch jeden Kern im Wartezustand ist. In anderen Worten kann das vorstehende Parallelisierungsverarbeiten das parallele Programm erzeugen, das den Wartezustand reduzieren kann, in dem jeder der Kerne keine der Verarbeitung der abhängigen Aufgabe und der Verarbeitung der nicht abhängigen Aufgabe ausführt.As described above, for each of the multiple processes assigned to the cores, the above parallelization method allocates the dependency processing of the dependent task and assigns the processing with no dependency on the non-dependent task. With the above configuration, the dependent task including the dependency processing and the non-dependent task including the non-dependency processing are assigned to each core. Further, in the above parallelizing method, the parallel program is given the function of executing the processing associated with the non-dependent task of the self-kernel when the dependent task of the self-kernel is put in the waiting state. Thus, the above parallelization method can provide the parallel program that performs the non-dependent task processing while the execution of the dependent task processing by each core is in the wait state. In other words, the above parallelization processing can generate the parallel program that can reduce the wait state in which each of the cores does not execute the dependent task processing and the non-dependent task processing.

In einem zweiten Aspekt der vorliegenden Offenbarung wird ein Parallelisierungswerkzeug einschließlich eines Computers zum Erzeugen aus mehreren Verarbeitungen in einem einzelnen Programm für einen Einzelkern-Mikrocomputer mit einem Kern eines parallelen Programms, das für einen Mehrkern-Mikrocomputer mit mehreren Kernen parallelisiert wird, durch Analysieren einer Abhängigkeit der mehreren Verarbeitungen in dem einzelnen Programm und Zuordnen der mehreren Verarbeitungen unterschiedlichen Kernen des Mehrkern-Mikrocomputers bereitgestellt. Das Parallelisierungswerkzeug konfiguriert, um auszuführen: eine Teilungsverarbeitung zum, für jede der mehreren Verarbeitungen, die den Kernen zuzuordnen sind, Zuordnen der Verarbeitung mit der Abhängigkeit einer abhängigen Aufgabe und Zuordnen der Verarbeitung mit keiner Abhängigkeit einer nicht abhängigen Aufgabe; und eine Zuteilungsverarbeitung zum Zuteilen dem parallelen Programm eine Funktion zum Ausführen der Verarbeitung, die der nicht abhängigen Aufgabe eines Eigenkerns zugeordnet ist, wenn die abhängige Aufgabe des Eigenkerns in einen Wartezustand versetzt ist, damit Ausführen der Verarbeitung, die der abhängigen Aufgabe des Eigenkerns zugeordnet ist, ausgehend von einer Vervollständigung der Ausführung der Verarbeitung gestartet wird, die der abhängigen Aufgabe eines anderen Kerns zugeordnet ist.In a second aspect of the present disclosure, a parallelization tool including a computer for generating a plurality of processings in a single program for a single core microcomputer with a parallel program core parallelized for a multi-core multi-core microcomputer is analyzed by analyzing a dependency of the a plurality of processes in the single program and assigning the plurality of processes to different cores of the multi-core microcomputer. The parallelization tool configures to perform: a division processing for, for each of the plurality of processes to be assigned to the cores, associating the processing with the dependency of a dependent task, and assigning the processing with no dependence on a non-dependent task; and allocation processing for allocating the parallel program has a function of executing the processing associated with the non-dependent task of a self-kernel when the dependent task of the self-kernel is put in a wait state, thereby performing the processing associated with the dependent task of the eigenkernel , starting from a completion of the execution of the processing associated with the dependent task of another core.

Das Parallelisierungswerkzeug kann das parallele Programm erzeugen, das den Wartezustand reduzieren kann, wie im Parallelisierungsverfahren.The parallelization tool can generate the parallel program that can reduce the wait state, as in the parallelization method.

In einem zweiten Aspekt der vorliegenden Offenbarung wird eine fahrzeuggebundene Vorrichtung bereitgestellt, die aufweist: einen Mehrkern-Mikrocomputer mit mehreren Kernen; und ein paralleles Programm, das für den Mehrkern-Mikrocomputer aus mehreren Verarbeitungen eines einzelnen Programms für einen Einzelkern-Mikrocomputer mit einem Kern parallelisiert ist. In dem parallelen Programm sind die mehreren Verarbeitungen mehreren Kernen des Mehrkern-Mikrocomputers basierend auf einer Analyse einer Abhängigkeit der mehreren Verarbeitungen zugeordnet. Für jeden der Kerne beinhaltet das parallele Programm eine abhängige Aufgabe, der eine Verarbeitung mit einer Abhängigkeit zugeordnet ist, und eine nicht abhängige Aufgabe, der eine Verarbeitung mit keiner Abhängigkeit zugeordnet ist. Der Mehrkern-Mikrocomputer beinhaltet eine Ausführungseinheit für eine nicht abhängige Aufgabe zum Ausführen der Verarbeitung, die der nicht abhängigen Aufgabe eines Eigenkerns zugeordnet ist, wenn die abhängige Aufgabe des Eigenkerns in einen Wartezustand versetzt ist, damit Ausführen der Verarbeitung, die der abhängigen Aufgabe des Eigenkerns zugeordnet ist, ausgehend von einer Vervollständigung der Ausführung der Verarbeitung gestartet wird, die der abhängigen Aufgabe eines anderen Kerns zugeordnet ist.In a second aspect of the present disclosure, there is provided a vehicle-mounted device comprising: a multicore multi-core microcomputer; and a parallel program parallelized for the multi-core microcomputer from a plurality of processings of a single program for a single core microcomputer having a core. In the parallel program, the plural processes are assigned to plural cores of the multi-core microcomputer based on an analysis of a dependency of the plural processes. For each of the cores, the parallel program includes a dependent task that is assigned processing with a dependency and a non-dependent task that is assigned processing with no dependency. The multi-core microcomputer includes a non-dependent task execution unit for executing the processing associated with the non-dependent task of a self-kernel when the dependent task of the self-kernel is put in a wait state, thereby performing the processing corresponding to the dependent task of the self-kernel is started, starting from a completion of the execution of the processing associated with the dependent task of another core.

Wie vorstehend beschrieben ist, beinhaltet die fahrzeuggebundene Vorrichtung das parallele Programm, das für jeden der Kerne die abhängige Aufgabe, der die Verarbeitung mit der Abhängigkeit zugeordnet ist, und die nicht abhängige Aufgabe beinhaltet, der die Verarbeitung mit keiner Abhängigkeit zugeordnet ist. Das parallele Programm ist für den Mehrkern-Mikrocomputer parallelisiert. Wenn der Eigenkern die abhängige Aufgabe in den Wartezustand versetzt, führt der Mehrkern-Mikrocomputer die Verarbeitung, die der nicht abhängigen Aufgabe des Eigenkerns zugeordnet ist, aus. Aus diesem Grund kann die fahrzeuggebundene Vorrichtung den Wartezustand, in dem jeder Kern keine der Verarbeitung der abhängigen Aufgabe und der Verarbeitung der nicht abhängigen Aufgabe ausführt, reduzieren.As described above, the on-vehicle device includes the parallel program including, for each of the cores, the dependent task associated with the processing with the dependency and the non-dependent task with which the processing is not associated with any dependency. The parallel program is parallelized for the multi-core microcomputer. When the self-kernel places the dependent task in the wait state, the multi-core microcomputer performs the processing associated with the non-dependent task of the self-kernel. For this reason, the on-vehicle device can reduce the wait state in which each core does not perform the dependent task processing and the non-dependent task processing.

Die vorstehenden und weitere Aufgaben, Merkmale und Vorteile der vorliegenden Offenbarung werden aus der nachfolgenden detaillierten Beschreibung in Zusammenschau mit den Zeichnungen ersichtlicher.The foregoing and other objects, features and advantages of the present disclosure will become more apparent from the following detailed description taken in conjunction with the drawings.

Es zeigen:Show it:

1 ein Blockschaltbild, das eine schematische Konfiguration eines Parallelisierungswerkzeugs gemäß einer ersten Ausführungsform illustriert; 1 FIG. 10 is a block diagram illustrating a schematic configuration of a parallelizing tool according to a first embodiment; FIG.

2 ein Blockschaltbild, das eine schematische Konfiguration einer fahrzeuggebundenen Vorrichtung gemäß der ersten Ausführungsform illustriert; 2 FIG. 10 is a block diagram illustrating a schematic configuration of a vehicle-mounted device according to the first embodiment; FIG.

3 ein Diagramm, das einen Teil eines Parallelisierungsverfahrens gemäß der ersten Ausführungsform illustriert; 3 a diagram illustrating a part of a parallelization method according to the first embodiment;

4 ein Diagramm, das eine schematische Konfiguration eines parallelen Programms gemäß der ersten Ausführungsform illustriert; 4 FIG. 12 is a diagram illustrating a schematic configuration of a parallel program according to the first embodiment; FIG.

5 ein Ablaufdiagramm, das eine Verarbeitungsoperation während eines Aufgabenaufweckens gemäß der ersten Ausführungsform illustriert; 5 FIG. 10 is a flowchart illustrating a processing operation during task awakening according to the first embodiment; FIG.

6 ein Ablaufdiagramm, das die Verarbeitungsoperation während einer Ausführung einer abhängigen Aufgabe gemäß der ersten Ausführungsform illustriert; 6 5 is a flowchart illustrating the processing operation during execution of a dependent task according to the first embodiment;

7 ein Ablaufdiagramm, das eine Verarbeitungsoperation während einer Ausführung einer nicht abhängigen Aufgabe gemäß der Ausführungsform illustriert; 7 FIG. 10 is a flowchart illustrating a processing operation during execution of a non-dependent task according to the embodiment; FIG.

8 ein Ablaufdiagramm, das eine Verarbeitungsoperation während einer Synchronisierungsverarbeitung gemäß der Ausführungsform illustriert; 8th FIG. 10 is a flowchart illustrating a processing operation during synchronization processing according to the embodiment; FIG.

9 ein Ablaufdiagramm, das eine Verarbeitungsoperation während einer ersten Terminierungsverarbeitung gemäß der ersten Ausführungsform illustriert; 9 FIG. 10 is a flowchart illustrating a processing operation during a first termination processing according to the first embodiment; FIG.

10 ein Ablaufdiagramm, das eine Verarbeitungsoperation während einer zweiten Terminierungsverarbeitung gemäß der Ausführungsform illustriert; und 10 a flowchart illustrating a processing operation during a second Scheduling processing according to the embodiment illustrated; and

11 ein Diagramm, das eine Verarbeitungsoperation eines ersten Kerns und eines zweiten Kerns gemäß der Ausführungsform illustriert. 11 12 is a diagram illustrating a processing operation of a first core and a second core according to the embodiment.

Nachfolgend werden Ausführungsformen mit Bezug auf die Zeichnungen beschrieben. Die vorliegenden Ausführungsform zeigt ein Beispiel der Erzeugung eines parallelen Programms 21a1, das für eine Mehrkern-Mikrocomputer 21, der einen ersten Kern 21c und einen zweiten Kern 21d aufweist, aus mehreren Verarbeitungen A11 bis A14 in einem einzelnen Programm für einen Einzelkern-Mikrocomputer, der einen Kern aufweist, parallelisiert wird. Die Verarbeitungen können ebenso „Verarbeitungsblöcke” oder „Makroaufgaben” (Aufgabe ist an dieser Stelle und in den restlichen Anmeldunterlagen ein Synonym für den allgemein bekannten Fachbegriff „Task”) genannt werden. Der Mehrkern-Mikrocomputer kann ebenso „Mehrkernprozessor” genannt werden.Hereinafter, embodiments will be described with reference to the drawings. The present embodiment shows an example of the generation of a parallel program 21a1 that for a multi-core microcomputer 21 who is a first core 21c and a second core 21d of a plurality of processes A11 to A14 in a single program for a single-core microcomputer having a core is parallelized. The processing operations can also be called "processing blocks" or "macro-tasks" (task is a synonym for the well-known technical term "task" at this point and in the remaining application documents). The multi-core microcomputer may also be called a "multi-core processor".

Ein Hintergrund zum Erzeugen des parallelen Programms 21a aus dem einzelnen Programm ist, dass der Mehrkern-Mikrocomputer, der mehrere Kerne beinhaltet, hinsichtlich einer Zunahme einer Wärmeerzeugung oder einer Zunahme eines Energieverbrauch des Mikrocomputers oder hinsichtlich eines Problems einer Begrenzung einer Taktfrequenz allgemeiner Trend wird. Das parallele Programm 21a ist erforderlich, um die Verarbeitung mit hoher Verlässlichkeit und mit hoher Geschwindigkeit ausführbar zu machen, während eine Entwicklungsdauer und Entwicklungsaufwand von Software verkürzt wird.A background for creating the parallel program 21a From the single program, the multi-core microcomputer including a plurality of cores becomes a general trend in increase of heat generation or increase of power consumption of the microcomputer or problem of limitation of a clock frequency. The parallel program 21a It is required to make the processing executable with high reliability and high speed while shortening a development time and development cost of software.

Beim Erzeugen des parallelen Programms 21a1, wie in Patentdokument 1 offenbart ist, wird eine Abhängigkeit der mehreren Makroaufgaben in dem Einzelprogramm analysiert und die mehreren Makroaufgaben werden unterschiedlichen Kernen 21c und 21d des Mehrkernprozessors 21 zugeordnet. In dieser Hinsicht wird auf Patentdokument 1 verwiesen.When creating the parallel program 21a1 As disclosed in Patent Document 1, a dependency of the multiple macro tasks in the single program is analyzed, and the plural macro tasks become different cores 21c and 21d of the multi-core processor 21 assigned. In this regard, reference is made to Patent Document 1.

Ein Beispiel des Einzelprogramms der vorliegenden Ausführungsform beinhaltet Verarbeitungen A11 bis A14, A21, A22, B11 bis B14, B21 und B22. Die mehreren Verarbeitungen A11 beinhalten Verarbeitungen mit einer Abhängigkeit voneinander. In der vorliegenden Ausführungsform haben die Verarbeitungen A21, A22, B21 und B22 keine Abhängigkeit voneinander und die Verarbeitung A11 hat eine Abhängigkeit von einer anderen Verarbeitung.An example of the individual program of the present embodiment includes processes A11 to A14, A21, A22, B11 to B14, B21 and B22. The plurality of processes A11 include processes having a dependency on each other. In the present embodiment, the processes A21, A22, B21 and B22 have no dependency on each other and the processing A11 has a dependency on another processing.

Die Abhängigkeit ist beispielsweise eine Beziehung, in der eine Verarbeitung auf Daten Bezug nimmt, die durch eine andere Verarbeitung aktualisiert werden bzw. wurden, die früher als die eine Verarbeitung ausgeführt wurde. Insbesondere beinhalten die mehreren Verarbeitungen eine vorhergehende Verarbeitung, die in der Verarbeitungsreihenfolge in dem einzelnen Programm vorhergehend bzw. früher auszuführen ist, und eine nachfolgende Verarbeitung, die auszuführen ist, nachdem die vorhergehende Verarbeitung ausgeführt wurde. Die nachfolgende Verarbeitung wird durch die vorhergehende Verarbeitung beeinträchtigt und verwendet Daten, deren Inhalte wahrscheinlich in der vorhergehenden Verarbeitung aktualisiert wurden.The dependency is, for example, a relationship in which processing refers to data that has been updated by another processing executed earlier than the one processing. More specifically, the plural processes include previous processing to be executed in the processing order in the single program, and subsequent processing to be performed after the preceding processing has been executed. Subsequent processing is affected by the previous processing and uses data whose contents were likely to be updated in the previous processing.

Eine Konfiguration des Computers 10 wird mit Bezug auf 1 beschrieben. Der Computer 10 entspricht einem Parallelisierungswerkzeug, das ein Parallelisierungsverfahren ausführt, und erzeugt das parallele Programm 21a1. Der Computer 10 beinhaltet eine Anzeige 11, ein HDD 12, eine CPU 13, ein ROM 14, ein RAM 15, eine Eingabeeinrichtung 16 und eine Leseeinheit 17. Der Computer 10 kann Speicherinhalte lesen, die in einem Speichermedium 18 gespeichert sind. Ein automatischer Parallelisierungskompilierer 1 ist in dem Speichermedium 18 gespeichert. HDD ist eine Abkürzung für ein Festplattenlaufwerk. CPU ist eine Abkürzung für zentrale Verarbeitungseinheit. ROM ist eine Abkürzung für Nur-Lese-Speicher. Das RAM ist eine Abkürzung für Speicher mit wahlfreiem Zugriff. Für die Konfigurationen des Computers 10 und des Speichermediums 18 wird auf einen Personalcomputer 100 verwiesen und ein Speichermedium 118 ist in Patentdokument 1 offenbart.A configuration of the computer 10 is related to 1 described. The computer 10 corresponds to a parallelization tool that performs a parallelization procedure and generates the parallel program 21a1 , The computer 10 includes an ad 11 , an HDD 12 , a CPU 13 , a ROM 14 , a ram 15 , an input device 16 and a reading unit 17 , The computer 10 can read memory contents stored in a storage medium 18 are stored. An automatic parallelization compiler 1 is in the storage medium 18 saved. HDD is an abbreviation for a hard disk drive. CPU is an abbreviation for central processing unit. ROM is an abbreviation for read-only memory. The RAM is an abbreviation for random access memory. For the configurations of the computer 10 and the storage medium 18 will be on a personal computer 100 directed and a storage medium 118 is in patent document 1 disclosed.

Der automatische Parallelisierungskompilierer 1 beinhaltet eine Prozedur zum Erzeugen des parallelen Programms 21a1. Der automatische Parallelisierungskompilierer 1 entspricht einem Parallelisierungsverfahren. Insbesondere ist der automatische Parallelisierungskompilierer 1 ein Programm einschließlich des Parallelisierungsverfahrens. Der automatische Parallelisierungskompilierer 1 beinhaltet eine Teilungsprozedur und eine Zuteilungsprozedur zusätzlich den in Patentdokument 1 offenbarten Prozeduren. Die Teilungsprozedur und die Zuteilungsprozedur werden später beschrieben.The automatic parallelization compiler 1 includes a procedure for generating the parallel program 21a1 , The automatic parallelization compiler 1 corresponds to a parallelization method. In particular, the automatic parallelization compiler is 1 a program including the parallelization procedure. The automatic parallelization compiler 1 includes a division procedure and an allocation procedure in addition to the patent document 1 revealed procedures. The division procedure and the allocation procedure will be described later.

Als Nächstes wird eine Konfiguration der fahrzeuggebundenen Vorrichtung 20 beschrieben. Wie in 2 illustriert ist, beinhaltet die fahrzeuggebundene Vorrichtung 20 den Mehrkernprozessor 21, eine Kommunikationseinheit 22, eine Sensoreinheit 23 und einen Eingabe-Ausgabe-Port 24. Der Mehrkernprozessor 21 beinhaltet ein ROM 21a, ein RAM 21b, den ersten Kern 21c und den zweiten Kern 21d. Die fahrzeuggebundene Vorrichtung 20 kann auf einer Brennkraftmaschinensteuervorrichtung oder einer Hybridsteuervorrichtung angewandt werden, die an einem Automobil angebracht ist. In diesem Beispiel wird ein Beispiel, in dem die fahrzeuggebundene Vorrichtung 20 auf die Brennkraftmaschinensteuervorrichtung angewandt wird, eingesetzt. In diesem Fall kann das parallele Programm 21a1 als ein Automobilsteuerprogramm wie beispielsweise eine Brennkraftmaschinensteuerung betrachtet werden. Jedoch ist das parallele Programm 21a1 nicht auf das Vorstehende beschränkt. Die Kerne können ebenso „Prozessorelemente” genannt werden.Next, a configuration of the on-vehicle device will be described 20 described. As in 2 is illustrated includes the vehicle-mounted device 20 the multi-core processor 21 , a communication unit 22 , a sensor unit 23 and an input-output port 24 , The multi-core processor 21 includes a ROM 21a , a ram 21b , the first core 21c and the second core 21d , The vehicle-mounted device 20 can be applied to an engine control device or a hybrid control device mounted on an automobile. In this example, an example in which the vehicle-mounted device 20 is applied to the engine control device is used. In In this case, the parallel program 21a1 be considered as an automobile control program such as an engine control. However, this is the parallel program 21a1 not limited to the above. The cores can also be called "processor elements".

Für das RAM 21b, die Kommunikationseinheit 22, die Sensoreinheit 23 und den Eingabe-Ausgabe-Port 24 wird auf das RAM 420, eine Kommunikationseinheit 430, eine Sensoreinheit 450 und einen Eingabe-Ausgabe-Port 460 verwiesen, die in Patentdokument 1 offenbart sind.For the RAM 21b , the communication unit 22 , the sensor unit 23 and the input-output port 24 gets to the RAM 420 , a communication unit 430 , a sensor unit 450 and an input-output port 460 referenced in Patent Document 1.

Das parallele Programm 21a1, das mit der Hilfe des automatischen Parallelisierungskompilierers 1 erzeugt wird, ist in dem ROM 21a gespeichert. Der erste Kern 21c und der zweite Kern 21d führen das parallele Programm 21a1 aus, um eine Brennkraftmaschinensteuerung auszuführen. Das parallele Programm 21a1 beinhaltet ein Programm, das durch den ersten Kern 21c auszuführen ist, und ein Programm, das durch den zweiten Kern 21d auszuführen ist.The parallel program 21a1 with the help of the automatic parallelization compiler 1 is generated in the ROM 21a saved. The first core 21c and the second core 21d lead the parallel program 21a1 to execute an engine control. The parallel program 21a1 involves a program that passes through the first core 21c execute, and a program through the second core 21d is to execute.

Anschließend wird die Verarbeitungsoperation für den Computer 10 zum Ausführen des automatischen Parallelisierungskompilierers 1 gemäß 3 und 4 beschrieben. Der Computer 10 führt den automatischen Parallelisierungskompilierer 1 zum Erzeugen des parallelen Programms 21a1 aus.Subsequently, the processing operation for the computer 10 to run the automatic parallelization compiler 1 according to 3 and 4 described. The computer 10 runs the automatic parallelization compiler 1 for generating the parallel program 21a1 out.

Wie in dem Verfahren von Patentdokument 1 offenbart ist, analysiert der Computer 10 die Abhängigkeit der Daten auf Basis jeder Verarbeitung des einzelnen Programms und extrahiert die Verarbeitungen, die parallelisierbar sind, aus dem Einzelprogramm. Wie in dem Verfahren von Patentdokument 1 offenbart ist, ordnet der Computer 10 die mehreren Verarbeitungen dem ersten Kern 21c und dem zweiten Kern 21d auf der Basis der Abhängigkeit und der Verarbeitungszeit zu. In diesem Beispiel werden zu diesem Punkt die Verarbeitungen A11 bis A14, A21 und A22 dem ersten Kern 21c zugeordnet und die Verarbeitungen B11 bis B14, B21 und B22 werden dem zweiten Kern 21b zugeordnet. In der nachfolgenden Beschreibung werden die Verarbeitungen A11 bis A14, A21, A22, die dem ersten Kern 21c zugeordnet sind, ebenso „erste Verarbeitungsgruppe” genannt und die Verarbeitungen B11 bis B14, B21 und B22, die dem zweiten Kern 21d zugeordnet sind, werden ebenso „zweite Verarbeitungsgruppe” genannt.As disclosed in the method of Patent Document 1, the computer analyzes 10 the dependence of the data on the basis of each processing of the individual program and extracts the processes that can be parallelized from the individual program. As disclosed in the method of Patent Document 1, the computer arranges 10 the multiple processes the first core 21c and the second core 21d based on dependency and processing time. In this example, the processings A11 to A14, A21 and A22 become the first core at this point 21c and the processings B11 to B14, B21 and B22 become the second core 21b assigned. In the following description, the processes A11 to A14, A21, A22 become the first core 21c are also called "first processing group" and the processes B11 to B14, B21 and B22 corresponding to the second core 21d are also called "second processing group".

Danach operiert der Computer 10 für die entsprechenden Verarbeitungsgruppen, wie in einem Ablaufdiagramm von 3 illustriert ist.After that the computer operates 10 for the appropriate processing groups, as in a flowchart of 3 is illustrated.

Bei Schritt S10 wird bestimmt, ob die Verarbeitung die Abhängigkeit oder nicht aufweist (Teilungsverarbeitung). Wenn der Computer 10 bestimmt, dass die Verarbeitung die Abhängigkeit aufweist, fährt der Computer 10 mit Schritt S11 fort. Wenn der Computer 10 bestimmt, dass die Verarbeitung die Abhängigkeit nicht aufweist, fährt der Computer 10 mit Schritt S12 fort. Beispielsweise, wenn das gegenwärtige Ziel die Verarbeitung A11 ist, da der Computer 10 bestimmt, dass die Verarbeitung die Abhängigkeit aufweist, fährt der Computer 10 mit Schritt S11 fort. Wenn das gegenwärtige Ziel die Verarbeitung A21 ist, da der Computer 10 bestimmt, dass die Verarbeitung die Abhängigkeit nicht aufweist, fährt der Computer 10 mit Schritt S12 fort.At step S10, it is determined whether or not the processing has the dependency (division processing). If the computer 10 determines that the processing has the dependency, the computer moves 10 proceed to step S11. If the computer 10 determines that the processing does not have the dependency, drives the computer 10 on to step S12. For example, if the current destination is processing A11, because the computer 10 determines that the processing has the dependency, the computer moves 10 proceed to step S11. If the current destination is processing A21, because the computer 10 determines that the processing does not have the dependency, drives the computer 10 on to step S12.

Bei Schritt S11 wird die Verarbeitung der abhängigen Aufgabe zugeordnet (Teilungsverarbeitung). Der Computer 10 ordnet die Verarbeitung, für die bei S10 bestimmt wird, dass sie die Abhängigkeit aufweist, der abhängigen Aufgabe zu. Bei Schritt S12 wird die Verarbeitung der nicht abhängigen Aufgabe zugeordnet (Teilungsverarbeitung). Der Computer 10 ordnet die Verarbeitung, für die bei S10 bestimmt wird, dass sie keine Abhängigkeit aufweist, der nicht abhängigen Aufgabe zu.In step S11, the processing is assigned to the dependent task (division processing). The computer 10 The processing for which S10 is determined to have the dependency assigns to the dependent task. In step S12, the processing is assigned to the non-dependent task (division processing). The computer 10 The processing for which S10 is determined to have no dependency assigns the non-dependent task.

Bei S13 wird bestimmt, ob die Zuordnung all der Verarbeitungen abgeschlossen wurde oder nicht. Bestimmt der Computer 10, dass die Zuordnung aller Verarbeitungen abgeschlossen wurde, fährt der Computer 10 mit Schritt S14 fort. Bestimmt der Computer 10, dass die Zuordnung aller Verarbeitungen nicht abgeschlossen wurde, kehrt der Computer 10 zu Schritt S10 zurück.At S13, it is determined whether or not the assignment of all the processings has been completed. Certainly the computer 10 that the assignment of all processing has been completed, the computer moves 10 proceed to step S14. Certainly the computer 10 that the assignment of all processing has not been completed, the computer returns 10 back to step S10.

Somit, wie in 4 illustriert ist, wenn die Verarbeitungen A11 bis A14, A21, A22 der ersten Verarbeitungsgruppe Ziele sind, ordnet der Computer 10 die Verarbeitungen A11 bis A14 einer ersten Aufgabe zu, die als die abhängige Aufgabe dient, und ordnet die Verarbeitungen A21 und A22 einer zweiten Aufgabe zu, die als die nicht abhängige Aufgabe dient. Zusätzlich, wenn die Verarbeitungen B11 bis B14, B21 und B22 der zweiten Verarbeitungsgruppe Ziele sind, ordnet der Computer 10 die Verarbeitungen B11 bis B14 einer dritten Aufgabe zu, die als die abhängige Aufgabe dient, und ordnet die Verarbeitungen B21 und B22 einer vierten Aufgabe zu, die als die nicht abhängige Aufgabe dient.Thus, as in 4 is illustrated, when the processes A11 to A14, A21, A22 of the first processing group are destinations, the computer orders 10 assigns the processes A11 to A14 to a first task serving as the dependent task and assigns the processes A21 and A22 to a second task serving as the non-dependent task. In addition, when the processes B11 to B14, B21, and B22 of the second processing group are destinations, the computer orders 10 assigns the processings B11 to B14 to a third task serving as the dependent task, and assigns the processings B21 and B22 to a fourth task serving as the non-dependent task.

Auf diese Weise führt der Computer 10 Schritte S10 bis S12 zum Zuordnen der Verarbeitungen, die die Abhängigkeit voneinander aufweisen, der abhängigen Aufgabe aus und ordnet die Verarbeitungen, die keine Abhängigkeit aufweisen, der nicht abhängigen Aufgabe zu, für jede der mehreren Verarbeitungen, die den entsprechenden Kernen 21c und 21d zugeordnet sind. Somit entsprechen Schritte S10 bis S12 der Teilungsprozedur.That's how the computer performs 10 Steps S10 to S12 for assigning the processes having the dependency of each other to the dependent task and assigning the processes having no dependency to the non-dependent task for each of the plural processes corresponding to the respective cores 21c and 21d assigned. Thus, steps S10 to S12 correspond to the dividing procedure.

Die erste bis vierte Aufgabe sind eine Ausführungseinheit des Programms. Die erste Aufgabe bis vierte Aufgabe werden jede vorbestimmte Zeit wie beispielsweise jede 8 Millisekunden ausgeführt. Die Verarbeitung wie beispielsweise A11 und dergleichen ist eine Funktion einer Operation, die durch jede Aufgabe ausgeführt wird. Zusätzlich wird jede Aufgabe in einen SUSPENDIERT-Zustand, einen BEREIT-Zustand, einen LAUF-Zustand oder einen WARTE-Zustand versetzt. Ein Wartezustand und ein Verarbeitungswartezustand, die später beschrieben werden, entsprechen dem WARTE-Zustand. The first to fourth tasks are an execution unit of the program. The first task to fourth task are executed every predetermined time such as every 8 milliseconds. The processing such as A11 and the like is a function of an operation performed by each task. In addition, each task is placed in a SUSPENDED state, a READY state, a RUN state, or a WAIT state. A wait state and a processing wait state, which will be described later, correspond to the WAIT state.

Bei S14 wird dem parallelen Programm 21a eine Funktion zum, auf einer Kern-um-Kern-Basis bzw. Kern-nach-Kern-Basis (core-by-core basis), Aufwecken der abhängigen Aufgabe und der nicht abhängigen Aufgabe gleichzeitig und Versetzen der nicht abhängigen Aufgabe in den Verarbeitungs-Warte-Zustand zu einer Aufgaben-Aufweckzeit (Aufweckverarbeitung) zugeteilt. Auf diese Weise teilt der Computer 10 dem parallelen Programm 21a die Funktion zum einmaligen Aufwecken der ersten Aufgabe und der zweiten Aufgabe und Versetzen der zweiten Aufgabe in den Wartezustand zu, wenn die erste Aufgabe und die zweite Aufgabe aufwachen. Ferner teilt der Computer 10 dem parallelen Programm 21a die Funktion zum einmaligen Aufwecken der dritten Aufgabe und der vierten Aufgabe und Versetzen der vierten Aufgabe in den Wartezustand zu, wenn die dritte Aufgabe und die vierte Aufgabe aufwachen. Somit entspricht Schritt S14 einer Aufweckprozedur.At S14 becomes the parallel program 21a a core-by-core (core-by-core) -based function, waking up the dependent task and non-dependent task simultaneously, and putting the non-dependent task into processing Waiting state assigned to a task wake-up time (awakening processing). This way, the computer shares 10 the parallel program 21a the function of waking the first task and the second task once and assigning the second task to the waiting state when the first task and the second task wake up. Further, the computer shares 10 the parallel program 21a the function for waking the third task and the fourth task once and assigning the fourth task to the waiting state when the third task and the fourth task wake up. Thus, step S14 corresponds to a wake-up procedure.

Vorstehend ist die Aufweckzeit bzw. Aufweckzeit eine Übergangszeit zwischen einer Nichtbereitschaft und einer Bereitschaft, die Verarbeitung auszuführen. Nach dem Aufwachen, da eine Behandlung einer anderen Aufgabe mit einer höheren Priorität oder dergleichen Priorität läuft, geht eine Aufgabe in einen Wartezustand für das Zuordnen eines Verwendungsrechts der Vorrichtung wie beispielsweise des Kerns 21c oder 21d über. Nachdem das Vorrichtungsverwendungsrecht des Kerns 21c oder 21d einer Aufgabe zugeordnet wurde, geht die eine Aufgabe in den Laufzustand über.In the above, the waking time is a transitional period between unwillingness and willingness to perform the processing. Upon awakening, as priority is given to handling another task of higher priority or the like, a task goes into a wait state for assigning a use right of the device such as the core 21c or 21d above. After the device use right of the core 21c or 21d assigned to a task, the task goes into the running state.

Bei Schritt S15 wird dem parallelen Programm 21a1 eine Funktion zum Versetzen der abhängigen Aufgabe in dem Verarbeitungszustand und Aufheben des Verarbeitungswartezustands der nicht abhängigen Aufgabe, wenn die Aufgaben in einen Synchronisierungswartezustand versetzt werden, zugeteilt (Zuteilungsverarbeitung). Auf diese Weise weist der Computer 10 dem parallelen Programm 21a1 die Funktion zum Versetzen der abhängigen Aufgabe des Eigenkerns in den Wartezustand zu, damit die Ausführung der Verarbeitung, die der abhängigen Aufgabe des Eigenkerns zugeordnet ist, ausgehend von einer Vervollständigung der Ausführung der Verarbeitung gestartet wird, die der abhängigen Aufgabe eines anderen Kerns zugeordnet ist. Der Wartezustand entspricht dem Synchronisierungswartezustand und dem Verarbeitungswartezustand. Der Computer 10 teilt dem parallelen Programm 21a1 die Funktion zum Ausführen der Verarbeitung zu, die der nicht abhängigen Aufgabe des Eigenkerns zugeordnet ist, wenn die Aufgaben in den Synchronisierungswartezustand versetzt werden. Somit entspricht Schritt S15 der Zuteilungsprozedur.In step S15 becomes the parallel program 21a1 a function for offsetting the dependent task in the processing state and canceling the processing wait state of the non-dependent task when the tasks are put into a synchronization waiting state (allocation processing). That's how the computer points 10 the parallel program 21a1 the function for putting the dependent task of the self-core into the wait state so that the execution of the processing associated with the dependent task of the self-kernel is started from a completion of the execution of the processing associated with the dependent task of another kernel. The wait state corresponds to the synchronization wait state and the processing wait state. The computer 10 shares the parallel program 21a1 the function to perform the processing associated with the non-dependent self-core task when the tasks are put into the synchronization wait state. Thus, step S15 corresponds to the arbitration procedure.

Beispielsweise teilt der Computer 10 dem parallelen Programm 21a1 die Funktion zum Versetzen der ersten Aufgabe in den Wartezustand zu, damit die Ausführung der Verarbeitung A12, die der ersten Aufgabe zugeordnet ist, ausgehend von der Vervollständigung der Ausführung der Verarbeitung B11 gestartet wird, die der dritten Aufgabe zugeordnet ist. Ferner teilt der Computer 10 dem parallelen Programm 21a1 die Funktion zum Ausführen der Verarbeitung A21 zu, die der zweiten Aufgabe zugeordnet ist, wenn die Aufgaben in den Wartezustand versetzt werden.For example, the computer shares 10 the parallel program 21a1 the function for putting the first task in the wait state so that the execution of the processing A12 associated with the first task is started from the completion of the execution of the processing B11 associated with the third task. Further, the computer shares 10 the parallel program 21a1 the function for executing the processing A21 associated with the second task when the tasks are put in the waiting state.

Bei Schritt S16 wird dem parallelen Programm 21a eine Funktion zum Versetzen bei einer Synchronisationsvervollständigungszeit der nicht abhängigen Aufgaben in dem Verarbeitungswartezustand und Aufheben des Verarbeitungswartezustands der abhängigen Aufgabe (Wechselverarbeitung). Die Synchronisierungsvervollständigungszeit ist, wenn das Ausführen der Verarbeitung eines anderen Kerns, der ein Synchronisierungswarteziel ist, abgeschlossen ist. Insbesondere liegt die Synchronisierungsvervollständigungszeit vor, wenn die Ausführung der Verarbeitung des Eigenkerns vervollständigt ist und die Ausführung der Verarbeitung eines anderen Kerns, der in dem Synchronisierungswartezustand ist, ermöglicht ist. Auf diese Weise teilt der Computer 10 dem parallelen Programm 21a1 die Funktion zum Versetzen der nicht abhängigen Aufgabe eines anderen Kerns in den Wartezustand und Aufheben des Wartezustands der abhängigen Aufgabe eines anderen Kerns, wenn die Ausführung der Verarbeitung, die der abhängigen Aufgabe des Eigenkerns zugeordnet ist, abgeschlossen ist und die abhängige Aufgabe eines anderen Kerns in dem Wartezustand ist, zu. Somit entspricht Schritt S16 der Wechselprozedur. Beispielsweise teilt der Computer 10 dem parallelen Programm 21a1 die Funktion zum Versetzen der vierten Aufgabe in den Wartezustand und Aufheben des Wartezustands der dritten Aufgabe, wenn die Ausführung der Verarbeitung, die der ersten Aufgabe zugeordnet ist, abgeschlossen ist, und die dritte Aufgabe in dem Wartezustand ist, zu.In step S16 becomes the parallel program 21a a function for offsetting synchronization completion time of the non-dependent tasks in the processing wait state and canceling the processing wait state of the dependent task (switching processing). The synchronization completion time is when the execution of the processing of another core that is a synchronization waiting destination is completed. In particular, the synchronization completion time is when the execution of the processing of the self-kernel is completed and the execution of the processing of another kernel that is in the synchronization wait state is enabled. This way, the computer shares 10 the parallel program 21a1 the function for putting the non-dependent task of another core into the waiting state and releasing the waiting state of the dependent task of another core when the execution of the processing associated with the dependent task of the self-kernel is completed and the dependent task of another kernel in is the wait state, too. Thus, step S16 corresponds to the switching procedure. For example, the computer shares 10 the parallel program 21a1 the function for putting the fourth task in the waiting state and canceling the waiting state of the third task when the execution of the processing associated with the first task is completed, and the third task is in the waiting state.

Der Computer 10 führt den automatischen Parallelisierungskompilierer 1 zum Erzeugen des parallelen Programms 21a1 aus, das in 4 illustriert ist. In dem parallelen Programm 21a1 sind Programme A11 bis A14, die der ersten Aufgabe zugeordnet sind, und Verarbeitungen A21 und A22, die der zweiten Aufgabe zugeordnet sind, Programme, die durch den ersten Kern 21c auszuführen sind. Ferner sind in dem parallelen Programm 21a1 Verarbeitungen B11 bis B14, die der dritten Aufgabe zugeordnet sind, und Verarbeitungen B21 und B22, die der vierten Aufgabe zugeordnet sind, Programme, die durch den zweiten Kern 21d auszuführen sind.The computer 10 runs the automatic parallelization compiler 1 for generating the parallel program 21a1 out, that in 4 is illustrated. In the parallel program 21a1 For example, programs A11 to A14 associated with the first task and processes A21 and A22 associated with the second task are programs passing through the first core 21c are to be executed. Further, in the parallel program 21a1 Processes B11 to B14 associated with the third task and processings B21 and B22 associated with the fourth task are programs executed by the second core 21d are to be executed.

In der vorliegenden Ausführungsform führt der Computer 10 den automatischen Parallelisierungskompilierer 1 zum Erzeugen des parallelen Programms 21a1 aus. Jedoch ist die vorliegende Ausführungsform nicht auf die vorstehende Konfiguration beschränkt. In einer weiteren Ausführungsform kann ein Arbeiter Schritte S10 bis S16 zusätzlich zum Parallelisierungsverfahren ausführen, das in Patentdokument 1 offenbart ist, um dabei das parallele Programm 21a1 zu erzeugen.In the present embodiment, the computer performs 10 the automatic parallelization compiler 1 for generating the parallel program 21a1 out. However, the present embodiment is not limited to the above configuration. In another embodiment, a worker may perform steps S10 through S16 in addition to the parallelization method described in patent document 1 is disclosed to the parallel program 21a1 to create.

Nachfolgend wird die Operation der fahrzeuggebundenen Vorrichtung 20 mit Bezug auf 5 bis 11 beschrieben.The following is the operation of the vehicle-mounted device 20 regarding 5 to 11 described.

Als Erstes operiert die fahrzeuggebundene Vorrichtung 20, wie in einem Ablaufdiagramm von 5 beschrieben ist, wenn die Aufgabe aufwacht. Bei Schritt S20 führt die fahrzeuggebundene Vorrichtung 20 eine Verarbeitung aus. In diesem Beispiel unterscheidet sich die Verarbeitung von der ersten Verarbeitungsgruppe und der zweiten Verarbeitungsgruppe und ist eine Verarbeitung, die beispielsweise alle jede Millisekunde auszuführen ist.First, the vehicle-mounted device operates 20 as in a flow chart of 5 is described when the task wakes up. At step S20, the on-vehicle device performs 20 a processing off. In this example, the processing is different from the first processing group and the second processing group, and is a processing to be executed every every millisecond, for example.

Danach weckt der Mehrkernprozessor 21 die erste Aufgabe und die zweite Aufgabe auf und versetzt die zweite Aufgabe in den Verarbeitungswartezustand (Aufweckverarbeitungseinheit bzw. Aufwachverarbeitungseinheit, Schritte S21 bis S23). Auf gleiche Weise weckt der Mehrkernprozessor 21 die dritte Aufgabe und die vierte Aufgabe auf und versetzt die dritte Aufgabe in den Verarbeitungswartezustand (Aufweckverarbeitungseinheit bzw. Aufwachverarbeitungseinheit, Schritte S24 bis S26).Then the multi-core processor wakes 21 the first task and the second task, and places the second task in the processing wait state (wake-up processing unit, steps S21 to S23). The multicore processor awakens in the same way 21 the third task and the fourth task, and places the third task in the processing wait state (wake-up processing unit, steps S24 to S26).

Indessen sind in der vorliegenden Ausführungsform die zwei Kerne 21c und 21d vorgesehen. Jedoch kann der Mehrkernprozessor 21 drei oder mehr Kerne aufweisen. In diesem Fall kann für all die Kerne der Mehrkernprozessor 21 die abhängigen Aufgaben und die nicht abhängigen Aufgaben einmal aufwecken und kann die nicht abhängigen Aufgaben in den Wartezustand versetzen (Aufweckverarbeitungseinheit bzw. Aufwachverarbeitungseinheit).Meanwhile, in the present embodiment, the two cores 21c and 21d intended. However, the multi-core processor can 21 have three or more cores. In this case, for all the cores, the multi-core processor 21 wake the dependent and non-dependent tasks once and can put the non-dependent tasks on hold (wake-up processing unit).

Bei Schritt S27 wird eine Verarbeitung ausgeführt. In diesem Beispiel unterscheidet sich die Verarbeitung von der ersten Verarbeitungsgruppe und der zweiten Verarbeitungsgruppe und ist eine Verarbeitung, die beispielsweise alle jede Millisekunde auszuführen ist.At step S27, processing is performed. In this example, the processing is different from the first processing group and the second processing group, and is a processing to be executed every every millisecond, for example.

Mit der vorstehenden Verarbeitung führt jeder der Kerne 21c und 21d die abhängige Aufgabe aus, nachdem die Aufgabe aufwacht. Wird die abhängige Aufgabe ausgeführt, operiert jeder der Kerne 21c und 21d, wie in einem Ablaufdiagramm von 6 illustriert ist.With the above processing, each of the cores leads 21c and 21d the dependent task after the task wakes up. When the dependent task is executed, each of the cores operates 21c and 21d as in a flow chart of 6 is illustrated.

Jeder der Kerne 21c und 21d führt die Verarbeitung von Schritt S30 aus und führt eine Synchronisationsverarbeitung bei Schritt S31 aus. Der erste Kern 21c führt wiederholt Schritt S30 und Schritt S31 aus. Insbesondere führt der erste Kern 21c die Verarbeitung A11 in dem ersten Schritt S30 aus, führt die Verarbeitung A12 in dem nachfolgenden Schritt S30 aus usw., wodurch die Verarbeitungen A11 bis A14 der Reihe nach ausgeführt werden. Andererseits führt der zweite Kern 21d wiederholt Schritt S30 und Schritt S31 aus. Insbesondere führt der zweite Kern 21d die Verarbeitung B11 in dem ersten Schritt S30 aus, führt die Verarbeitung B12 in dem nachfolgenden Schritt S30 aus usw., wodurch er somit die Verarbeitungen B11 bis B14 der Reihe nach ausführt.Each of the cores 21c and 21d executes the processing of step S30 and executes synchronization processing in step S31. The first core 21c Repeats step S30 and step S31. In particular, the first core leads 21c processing A11 in the first step S30 carries out the processing A12 in the subsequent step S30, etc., whereby the processings A11 to A14 are executed in order. On the other hand, the second core leads 21d Repeats step S30 and step S31. In particular, the second core leads 21d processing B11 in the first step S30, executes the processing B12 in the subsequent step S30, etc., thus performing the processings B11 to B14 in order.

Beispielsweise, wie in 11 illustriert ist, vervollständigt der erste Kern 21c die Ausführung der Verarbeitung A11 und führt die Synchronisationsverarbeitung aus und geht in den Wartezustand zum Warten darauf, dass die Ausführung der Verarbeitung 611 durch den zweiten Kern 21 abgeschlossen bzw. vervollständigt ist. Zusätzlich geht der erste Kern 21c in den Verarbeitungswartezustand, wenn eine Ausführungszeit der Verarbeitung B11 durch den zweiten Kern 21d erweitert wird.For example, as in 11 illustrated, the first core completes 21c the execution of the processing A11 and executes the synchronization processing and goes into the wait state to wait for the execution of the processing 611 through the second core 21 completed or completed. In addition, the first core goes 21c in the processing wait state when execution time of the processing B11 by the second core 21d is extended.

Auf gleiche Weise vervollständigt der zweite Kern 21d die Ausführung der Verarbeitung B12 und führt die Synchronisationsverarbeitung aus und geht in den Wartezustand zum Warten, dass die Ausführung der Verarbeitung A12 durch den ersten Kern 21 vervollständigt wird. Zusätzlich geht der zweite Kern 21d in den Verarbeitungswartezustand, wenn die Ausführungszeit der Verarbeitung A12 durch den ersten Kern 21c erweitert wird.In the same way, the second core completes 21d the execution of the processing B12 and executes the synchronization processing and enters the wait state to wait for execution of the processing A12 by the first core 21 is completed. In addition, the second core goes 21d in the processing wait state when the execution time of the processing A12 through the first core 21c is extended.

Bei Schritt S32 wird eine erste Terminierungsverarbeitung ausgeführt. Die erste Terminierungsverarbeitung wird später beschrieben.At step S32, a first termination processing is executed. The first termination processing will be described later.

Nachfolgend wird die Synchronisierungsverarbeitung mit Bezug auf 8 beschrieben. Beim Ausführen der Synchronisierungsverarbeitung operiert jeder der Kerne 21c und 21d wie in einem Ablaufdiagramm von 8 illustriert ist. Für illustrative Zwecke wird angenommen, dass der Eigenkern als der erste Kern 21c funktioniert, und ein anderer Kern als der zweite Kern 21d funktioniert.Hereinafter, the synchronization processing will be explained with reference to FIG 8th described. When performing the synchronization processing, each of the cores operates 21c and 21d as in a flowchart of 8th is illustrated. For illustrative purposes, it is assumed that the eigenkernel is the first kernel 21c works, and a different core than the second core 21d works.

Bei Schritt S50 wird das Eigenkernsynchronisationswarten gespeichert. Insbesondere wird bei Schritt S50 eine Synchronisierungswartehistorie gespeichert. Wenn der erste Kern 21c die Synchronisierungsverarbeitung ausführt, speichert der Mehrkernprozessor 21 Informationen, die angeben, dass der erste Kern 21c im Synchronisierungswartezustand ist, in dem RAM 21b oder dergleichen. At step S50, self-core synchronization maintenance is stored. More specifically, a synchronization waiting history is stored at step S50. If the first core 21c performs the synchronization processing, the multi-core processor stores 21 Information indicating that the first core 21c in the synchronization wait state is in the RAM 21b or similar.

Bei Schritt S51 wird bestimmt, ob all die anderen Kerne im Synchronisierungswartezustand sind oder nicht. Der Mehrkernprozessor 21 bestätigt das RAM 21b und bestimmt, ob der zweite Kern 21d im Wartezustand ist oder nicht. Bestimmt der Mehrkernprozessor 21, dass der zweite Kern 21d im Synchronisierungswartezustand ist, fährt der Mehrkernprozessor 21 mit Schritt S52 fort. Bestimmt der Mehrkernprozessor 21, dass der zweite Kern 21d nicht im Synchronisierungswartezustand ist, fährt der Mehrkernprozessor 21 mit Schritt S55 fort. Ist die Anzahl von Kernen 3 oder mehr, fährt, wenn all die anderen Kerne als im Synchronisierungswartezustand befindlich bestimmt sind, der Eigenkern mit Schritt S52 fort. Sind nicht all die anderen Kerne als im Synchronisierungswartezustand befindlich bestimmt, fährt der Eigenkern mit Schritt S55 fort.At step S51, it is determined whether or not all the other cores are in the synchronization wait state. The multi-core processor 21 confirms the RAM 21b and determines if the second core 21d is in the waiting state or not. Definitely the multi-core processor 21 that the second core 21d is in the synchronization wait state, the multicore processor is traveling 21 proceed to step S52. Definitely the multi-core processor 21 that the second core 21d is not in the synchronization wait state, the multicore processor is traveling 21 proceed to step S55. Is the number of cores 3 or more, when all the other cores are determined to be in the synchronization wait state, the self-kernel proceeds to step S52. If not all the other cores are determined to be in the synchronization wait state, the self-kernel proceeds to step S55.

Bei Schritt S52 wird die Synchronisierungswartehistorie gelöscht. Der Mehrkernprozessor 21 löscht nicht nur die Synchronisierungswartehistorie des ersten Kerns 21c, sondern ebenso die Synchronisierungswartehistorie des zweiten Kerns 21d.In step S52, the synchronization waiting history is cleared. The multi-core processor 21 not only clears the sync wait history of the first core 21c , but also the synchronization waiting history of the second kernel 21d ,

Bei Schritt S53 wird der Verarbeitungswartezustand der abhängigen Aufgabe eines anderen Kerns aufgehoben (Wechselverarbeitungseinheit). Bei Schritt S54 wird die nicht abhängige Aufgabe eines anderen Kerns auf den Verarbeitungswartezustand (Wechselverarbeitungseinheit) festgelegt. Wie vorstehend beschrieben ist, wenn Schritte der Verarbeitung in der abhängigen Aufgabe des Eigenkerns vervollständigt sind und die abhängige Aufgabe eines anderen Kerns in dem Wartezustand ist, versetzt der Mehrkernprozessor 21 die nicht abhängige Aufgabe eines anderen Kerns in den Wartezustand und hebt den Wartezustand der abhängigen Aufgabe eines anderen Kerns auf. Somit, wenn die dritte Aufgabe in dem Verarbeitungswartezustand in einer Situation ist, in der der erste Kern 21c das Ausführen der Verarbeitung in der ersten Aufgabe vervollständigt und die Synchronisierungsverarbeitung ausführt, wird die vierte Aufgabe in den Verarbeitungswartezustand versetzt und der Verarbeitungswartezustand der dritten Aufgabe wird aufgehoben.At step S53, the processing wait state of the dependent task of another core is canceled (change processing unit). At step S54, the non-dependent task of another core is set to the processing wait state (change processing unit). As described above, when steps of processing in the dependent task of the self-kernel are completed and the dependent task of another kernel is in the wait state, the multi-core processor puts 21 the non-dependent task of another core in the wait state and releases the wait state of the dependent task of another core. Thus, when the third task in the processing wait state is in a situation where the first core 21c completing the execution of the processing in the first task and executing the synchronization processing, the fourth task is put in the processing wait state and the processing wait state of the third task is canceled.

Bei Schritt S55 wird der Verarbeitungswartezustand der nicht abhängigen Aufgabe des Eigenkerns aufgehoben (Ausführungseinheit für nicht abhängige Aufgaben). Bei Schritt S56 wird die abhängige Aufgabe des Eigenkerns auf den Verarbeitungswartezustand (Ausführungseinheit für nicht abhängige Aufgaben) festgelegt. Insbesondere, wenn die erste Aufgabe in den Wartezustand versetzt wird, damit die Ausführung der Verarbeitung, die der ersten Aufgabe zugeordnet ist, ausgehend von der Vervollständigung des Ausführens der Verarbeitung gestartet wird, die der dritten Aufgabe zugeordnet ist, führt der Mehrkernprozessor 21 die Verarbeitung aus, die der zweiten Aufgabe zugeordnet ist. Beispielsweise, wie in 11 illustriert ist, wenn die erste Aufgabe in den Verarbeitungswartezustand versetzt wird, damit die Verarbeitung A12 ausgehend von der Vervollständigung der Ausführung der Verarbeitung B11 durch den zweiten Kern 21d gestartet wird, führt der erste Kern 21c die Verarbeitung A21 aus.At step S55, the processing wait state of the non-dependent task of the self-core is canceled (non-dependent task execution unit). At step S56, the dependent task of the self-kernel is set to the processing wait state (non-dependent task execution unit). Specifically, when the first task is put in the wait state to start the execution of the processing associated with the first task from the completion of the processing associated with the third task, the multi-core processor executes 21 the processing associated with the second task. For example, as in 11 is illustrated, when the first task is put in the processing wait state, thereby the processing A12 is started from the completion of the execution of the processing B11 by the second core 21d is started, the first core leads 21c processing A21 off.

Wie vorstehend beschrieben ist, werden die erste Aufgabe und die dritte Aufgabe durch den Eigenkern in den Verarbeitungswartezustand versetzt und in den Verarbeitungswartezustand durch einen anderen Kern versetzt. Andererseits werden die zweite Aufgabe und die vierte Aufgabe in dem Verarbeitungswartezustand durch einen anderen Kern versetzt und von dem Verarbeitungswartezustand durch den Eigenkern freigegeben.As described above, the first task and the third task are put in the processing wait state by the self-core, and put in the processing wait state by another core. On the other hand, in the processing wait state, the second task and the fourth task are offset by another core and released from the processing wait state by the self-kernel.

In diesem Beispiel operiert beim Ausführen der nicht abhängigen Aufgabe jeder der Kerne 21c und 21d wie in einem Ablaufdiagramm von 7 illustriert ist. Jeder der Kerne 21c und 21d führt die Verarbeitung bei S40 aus und führt eine zweite Terminierungsverarbeitung bei Schritt S41 aus. Der erste Kern 21c führt wiederholt Schritt 40 entsprechend der Anzahl von Verarbeitungen aus, die der zweiten Aufgabe zugeordnet sind. Insbesondere führt der erste Kern 21c die Verarbeitung A21 in dem ersten Schritt S40 aus und führt die zweite Terminierungsverarbeitung nach Ausführen der Verarbeitung A22 in dem nachfolgenden Schritt S40 aus. Wie vorstehend beschrieben ist, führt der erste Kern 21c die Verarbeitungen A21 und A22, die der zweiten Aufgabe zugeordnet sind, der Reihe nach aus. Andererseits führt der zweite Kern 21d wiederholt Schritt S40 entsprechend der Anzahl von Verarbeitungen aus, die der vierten Aufgabe zugeordnet sind. Insbesondere führt der zweite Kern 21d die Verarbeitung B21 in dem ersten Schritt S40 aus und führt die zweite Terminierungsverarbeitung nach Ausführen der Verarbeitung B22 in dem nachfolgenden Schritt S40 aus. Wie vorstehend beschrieben ist, führt der zweite Kern 21d die Verarbeitungen B21 und B22, die der vierten Aufgabe zugeordnet sind, der Reihe nach aus.In this example, when performing the non-dependent task, each of the cores operates 21c and 21d as in a flowchart of 7 is illustrated. Each of the cores 21c and 21d executes the processing at S40 and executes a second termination processing at step S41. The first core 21c steps repeatedly 40 corresponding to the number of processings associated with the second task. In particular, the first core leads 21c processing A21 in the first step S40 and executes the second termination processing after execution of the processing A22 in the subsequent step S40. As described above, the first core leads 21c the processings A21 and A22 associated with the second task are sequentially executed. On the other hand, the second core leads 21d repeats step S40 according to the number of processings associated with the fourth task. In particular, the second core leads 21d processing B21 in the first step S40 and executes the second termination processing after execution of the processing B22 in the subsequent step S40. As described above, the second core leads 21d the processings B21 and B22 associated with the fourth task are sequentially executed.

Wie vorstehend beschrieben ist, wenn die erste Aufgabe in dem Verarbeitungswartezustand ist, führt der erste Kern 21c die Verarbeitung der zweiten Aufgabe aus. Auf gleiche Weise führt, wenn die dritte Aufgabe im Verarbeitungswartezustand ist, der zweite Kern 21d die Verarbeitung der vierten Aufgabe aus. Beispielsweise, wie in 11 illustriert ist, während dem Verarbeitungswartezustand zum Warten darauf, dass die Ausführung der Verarbeitung B11 abgeschlossen bzw. vervollständigt ist, führt der erste Kern 21c die Verarbeitung A21 aus. Während dem Verarbeitungswartezustand zum Warten darauf, dass die Ausführung der Verarbeitung A12 abgeschlossen wird, führt der zweite Kern 21b die Verarbeitung B21 aus.As described above, when the first task is in the processing wait state, the first core passes 21c the processing of the second task. Likewise, when the third task is in the processing wait state, the second core 21d the processing of the fourth task. For example, as in 11 is illustrated during the processing wait state for waiting for the execution of the processing B11 to be completed, the first core executes 21c processing A21 off. During the processing wait state for waiting for the execution of the processing A12 to be completed, the second core executes 21b processing B21 off.

Wenn jeder Kern 21c und 21d in den Verarbeitungswartezustand während der Ausführung der Verarbeitung versetzt wird, unterbricht der Kern die Verarbeitung. Wird der Verarbeitungswartezustand aufgehoben, während jeder der Kerne 21c und 21d die Verarbeitung unterbricht, startet jeder der Kerne das Ausführen der unterbrochenen Verarbeitung neu. Beispielsweise wird in einem Beispiel von 11 die zweite Aufgabe in den Verarbeitungswartezustand während der Ausführung der Verarbeitung A21 versetzt. Danach wird die erste Aufgabe in den Verarbeitungswartezustand ausgehend von der Vervollständigung der Ausführung der Verarbeitung A13 versetzt und der Verarbeitungswartezustand der zweiten Aufgabe wird aufgehoben. Dann startet der erste Kern 21c die Ausführung der Verarbeitung A21 neu. Ferner, wenn der Verarbeitungswartezustand der ersten Aufgabe zu der Zeit fortgeführt wird, wenn die Ausführung der Verarbeitung A21 abgeschlossen ist, führt der erste Kern 21c die Verarbeitung A22 aus.If every core 21c and 21d is put into the processing wait state during the execution of the processing, the kernel stops the processing. The processing wait state is canceled during each of the cores 21c and 21d When processing stops, each of the cores restarts to perform the interrupted processing. For example, in an example of 11 put the second task in the processing wait state during the execution of the processing A21. Thereafter, the first task is put in the processing wait state from the completion of execution of the processing A13, and the processing wait state of the second task is canceled. Then the first core starts 21c the execution of the processing A21 new. Further, when the processing wait state of the first task is continued at the time when the execution of the processing A21 is completed, the first core passes 21c processing A22 off.

Nachfolgend wird die erste Terminierungsverarbeitung mit Bezug auf 9 beschrieben. Beim Ausführen der ersten Terminierungsverarbeitung operiert jeder der Kerne 21c und 21d wie in einem Ablaufdiagramm von 9 illustriert.Hereinafter, the first termination processing will be referred to 9 described. When performing the first termination processing, each of the cores operates 21c and 21d as in a flowchart of 9 illustrated.

Bei Schritt S60 wird eine Vervollständigungshistorie der abhängigen Aufgabe des Eigenkerns gespeichert. Der erste Kern 21c speichert die Vervollständigungshistorie der ersten Aufgabe in dem RAM 21b oder dergleichen. Auf gleiche Weise speichert der zweite Kern 21d die Vervollständigungshistorie der dritten Aufgabe in dem RAM 21b oder dergleichen.At step S60, a completion history of the dependent task of the self-kernel is stored. The first core 21c stores the completion history of the first task in the RAM 21b or similar. The second core saves in the same way 21d the completion history of the third task in the RAM 21b or similar.

Bei Schritt S61 wird bestimmt, ob die nicht abhängige Aufgabe des Eigenkerns vervollständigt ist oder nicht. Der erste Kern 21c bestimmt, ob die zweite Aufgabe vervollständigt ist oder nicht, und wenn die zweite Aufgabe als vervollständigt bestimmt wird, fährt der erste Kern 21c mit Schritt S64 fort. Wird die zweite Aufgabe als nicht vervollständigt bestimmt, fährt der erste Kern 21c mit Schritt S62 fort. Auf gleiche Weise bestimmt der zweite Kern 21d, ob die vierte Aufgabe vervollständigt ist oder nicht und wenn die vierte Aufgabe als vervollständigt bestimmt wird, fährt der zweite Kern 21d mit Schritt S64 fort. Wird die vierte Aufgabe als nicht vervollständigt bestimmt, fährt der zweite Kern 21d mit Schritt S62 fort.At step S61, it is determined whether or not the non-dependent task of the self-kernel is completed. The first core 21c determines whether the second task is completed or not, and if the second task is determined to be completed, moves the first core 21c proceed to step S64. If the second task is determined to be incomplete, the first core moves 21c proceed to step S62. In the same way, the second core determines 21d Whether the fourth task is completed or not, and if the fourth task is determined to be completed, the second core moves 21d proceed to step S64. If the fourth task is determined to be incomplete, the second core moves 21d proceed to step S62.

Bei Schritt S62 wird der Verarbeitungswartezustand der nicht abhängigen Aufgabe des Eigenkerns aufgehoben. Der erste Kern 21c hebt den Verarbeitungswartezustand der zweiten Aufgabe auf. Auf gleiche Weise hebt der zweite Kern 21d den Verarbeitungswartezustand der vierten Aufgabe auf.In step S62, the processing wait state of the non-dependent task of the self-kernel is canceled. The first core 21c removes the processing wait state of the second task. In the same way, the second core lifts 21d the processing wait state of the fourth task.

Bei Schritt S63 wird die abhängige Aufgabe des Eigenkerns auf den Verarbeitungswartezustand festgelegt. Der erste Kern 21c versetzt die erste Aufgabe in den Verarbeitungswartezustand. Auf gleiche Weise versetzt der zweite Kern 21d die dritte Aufgabe in den Verarbeitungswartezustand.In step S63, the dependent task of the self-kernel is set to the processing wait state. The first core 21c puts the first task in the processing wait state. In the same way, the second core displaces 21d the third task in the processing wait state.

Bei Schritt S64 wird bestimmt, ob alle Aufgaben des anderen Kerns abgeschlossen bzw. vervollständigt sind oder nicht. Der erste Kern 21c bestimmt, ob die dritte Aufgabe und die vierte Aufgabe vervollständigt sind oder nicht, und wenn die dritte Aufgabe und die vierte Aufgabe als vervollständigt bestimmt werden, fährt der erste Kern 21c mit Schritt S65 fort. Wenn die dritte Aufgabe und die vierte Aufgabe als nicht vervollständigt bestimmt werden, wiederholt der erste Kern die Bestimmung bei Schritt S64. Auf gleiche Weise bestimmt der zweite Kern 21d, ob die erste Aufgabe und die zweite Aufgabe vervollständigt sind oder nicht, und wenn die erste Aufgabe und die zweite Aufgabe als vervollständigt bestimmt werden, fährt der zweite Kern 21d mit Schritt S65 fort. Werden die erste Aufgabe und die zweite Aufgabe als nicht vervollständigt bestimmt, wiederholt der zweite Kern 21d die Bestimmung bei Schritt S64.At step S64, it is determined whether or not all the tasks of the other core are completed. The first core 21c determines whether the third task and the fourth task are completed or not, and when the third task and the fourth task are determined to be completed, the first core moves 21c proceed to step S65. If the third task and the fourth task are determined to be incomplete, the first core repeats the determination in step S64. In the same way, the second core determines 21d Whether the first task and the second task are completed or not, and when the first task and the second task are determined to be completed, the second core moves 21d proceed to step S65. If the first task and the second task are determined to be incomplete, the second core repeats 21d the determination in step S64.

Bei Schritt S65 werden die Aufgaben von allen Kernen vollständig bzw. umfassend terminiert. Der erste Kern 21c und der zweite Kern 21d terminieren die Aufgaben all der Kerne komplett. Beispielsweise terminiert der erste Kern 21c all die Aufgaben einschließlich der Aufgaben des zweiten Kerns 21d zusätzlich zu den Aufgaben des ersten Kerns 21c. Jedoch ist die vorliegende Ausführungsform nicht auf die vorstehende Konfiguration beschränkt. Es ist zu beachten, dass in diesem Beispiel alle die Aufgaben alle die Aufgaben bedeutet, die in dem Ablaufdiagramm von 5 aufwachen.At step S65, the tasks are completely terminated by all cores. The first core 21c and the second core 21d complete the tasks of all the cores completely. For example, the first core terminates 21c all the tasks including the tasks of the second core 21d in addition to the tasks of the first core 21c , However, the present embodiment is not limited to the above configuration. It should be noted that in this example, all the tasks mean all the tasks described in the flowchart of FIG 5 wake up.

Jeder der Kerne 21c und 21d führt die nicht abhängige Aufgabe aus, wenn die nicht abhängige Aufgabe des Eigenkerns nicht abgeschlossen ist, und wartet auf die Vervollständigung eines anderen Kerns, wenn die nicht abhängige Aufgabe abgeschlossen ist.Each of the cores 21c and 21d performs the nondependent task if the non-dependent kernel task is not completed, and waits for the completion of another kernel when the non-dependent task completes.

Als Nächstes wird die zweite Terminierungsverarbeitung mit Bezug auf 10 beschrieben. Beim Ausführen der zweiten Terminierungsverarbeitung operiert jeder der Kerne 21c und 21d wie in einem Ablaufdiagramm von 10 illustriert ist.Next, the second termination processing will be described with reference to FIG 10 described. When performing the second termination processing, each of the cores operates 21c and 21d as in a flowchart of 10 is illustrated.

Bei Schritt S70 wird eine Vervollständigungshistorie der nicht abhängigen Aufgabe des Eigenkerns gespeichert. Der erste Kern 21c speichert die Vervollständigungshistorie der zweiten Aufgabe in dem RAM 21b oder dergleichen. Auf gleiche Weise speichert der zweite Kern 21d die Vervollständigungshistorie der vierten Aufgabe in dem RAM 21b oder dergleichen. At step S70, a completion history of the non-dependent task of the self-kernel is stored. The first core 21c stores the completion history of the second task in the RAM 21b or similar. The second core saves in the same way 21d the completion history of the fourth task in the RAM 21b or similar.

Bei Schritt S71 wird bestimmt, ob die abhängige Aufgabe des Eigenkerns abgeschlossen bzw. vervollständigt ist oder nicht. Der erste Kern 21c bestimmt, ob die erste Aufgabe vervollständigt ist oder nicht, und wenn die erste Aufgabe als vervollständigt bestimmt wird, fährt der erste Kern 21c mit Schritt S72 fort. Wird die erste Aufgabe als nicht vervollständigt bestimmt, wiederholt der erste Kern 21c die Bestimmung bei Schritt S71. Auf gleiche Weise bestimmt der zweite Kern 21d, ob die dritte Aufgabe vervollständigt ist oder nicht, und wenn die dritte Aufgabe als vervollständigt bestimmt wird, fährt der zweite Kern 21d mit Schritt S72 fort. Wenn die dritte Aufgabe als nicht vervollständigt bestimmt wird, wiederholt der zweite Kern 21d die Bestimmung bei Schritt S71.At step S71, it is determined whether or not the dependent task of the self-kernel is completed. The first core 21c determines whether the first task is completed or not, and when the first task is determined to be completed, the first core moves 21c proceed to step S72. If the first task is determined to be incomplete, the first core repeats 21c the determination in step S71. In the same way, the second core determines 21d Whether the third task is completed or not, and if the third task is determined to be completed, the second core moves 21d proceed to step S72. If the third task is determined to be incomplete, the second core repeats 21d the determination in step S71.

Bei Schritt S72 wird der Verarbeitungswartezustand der abhängigen Aufgabe des Eigenkerns aufgehoben. Der erste Kern 21c hebt den Verarbeitungswartezustand der ersten Aufgabe auf. Auf gleiche Weise hebt der zweite Kern 21d den Verarbeitungswartezustand der dritten Aufgabe auf. Wie vorstehend beschrieben ist, führt jeder der Kerne 21c und 21d Schritt S71 in einer Schleife aus, während die abhängige Aufgabe, die jedem Kern zugeordnet ist, nicht vervollständigt ist, und wartet auf die Synchronisation.In step S72, the processing wait state of the dependent task of the self-kernel is canceled. The first core 21c removes the processing wait state of the first task. In the same way, the second core lifts 21d the processing wait state of the third task. As described above, each of the cores leads 21c and 21d Step S71 in a loop while the dependent task associated with each core is not completed, waiting for the synchronization.

Bei Schritt S73 wird die nicht abhängige Aufgabe des Eigenkerns auf den Verarbeitungswartezustand festgelegt. Der erste Kern 21c versetzt die zweite Aufgabe in den Verarbeitungswartezustand. Auf gleiche Weise versetzt der zweite Kern 21d die vierte Aufgabe in den Verarbeitungswartezustand.In step S73, the non-dependent task of the self-kernel is set to the processing wait state. The first core 21c puts the second task in the processing wait state. In the same way, the second core displaces 21d the fourth task in the processing wait state.

Wie vorstehend beschrieben ist, sind durch den automatischen Parallelisierungskompilierer 1 die Verarbeitungen, die die Abhängigkeit voneinander haben, der ersten Aufgabe und der dritten Aufgabe zugeordnet, und die Verarbeitungen, die keine Abhängigkeit aufweisen, sind der zweiten Aufgabe und der vierten Aufgabe zugeordnet, für jede der mehreren Verarbeitungen, die den entsprechenden Kernen 21c und 21d zugeordnet sind. Mit der vorstehenden Konfiguration werden die erste Aufgabe und die dritte Aufgabe, die die Verarbeitungen mit der Abhängigkeit beinhalten, und die zweite Aufgabe und die vierte Aufgabe, die die Verarbeitung mit keiner Abhängigkeit beinhalten, den entsprechenden Kernen 21c und 21d zugeordnet.As described above, by the automatic parallelization compiler 1 the processes having dependency on each other are assigned to the first task and the third task, and the processings having no dependency are assigned to the second task and the fourth task for each of the plural processes corresponding to the respective cores 21c and 21d assigned. With the above configuration, the first task and the third task including the processings with the dependency, and the second task and the fourth task involving the processing with no dependency, the corresponding cores 21c and 21d assigned.

Ferner teilt der automatische Parallelisierungskompilierer 1 dem parallelen Programm 21a die Funktion zum, wenn die erste Aufgabe des ersten Kerns 21c in den Wartezustand versetzt wird, Ausführen der Verarbeitung zu, die der zweiten Aufgabe des ersten Kerns 21c zugeordnet ist. Somit kann der automatische Parallelisierungskompilierer 1 das parallele Programm 21a1 bereitstellen, indem der erste Kern 21c die Verarbeitung der zweiten Aufgabe ausführt, während er die Ausführung der Verarbeitung der ersten Aufgabe in den Wartezustand versetzt. Auf gleiche Weise kann der automatische Parallelisierungskompilierer das parallele Programm 21a1 bereitstellen, in dem der zweite Kern 21d die Verarbeitung der vierten Aufgabe ausführt, während er die Ausführung der Verarbeitung der dritten Aufgabe in den Wartezustand versetzt.The automatic parallelization compiler also shares 1 the parallel program 21a the function to when the first task of the first core 21c is put into the wait state, execute the processing that the second task of the first core 21c assigned. Thus, the automatic parallelization compiler 1 the parallel program 21a1 deploy by the first core 21c performs the processing of the second task while putting the execution of the processing of the first task into the waiting state. In the same way, the automatic parallelization compiler can use the parallel program 21a1 provide in which the second core 21d performs the processing of the fourth task while setting the execution of the processing of the third task to the waiting state.

Insbesondere kann der automatische Parallelisierungskompilierer 1 das parallele Programm 21a erzeugen, das den Wartezustand reduzieren kann, indem der erste Kern 21c keine der Verarbeitung der ersten Aufgabe und der Verarbeitung der zweiten Aufgabe ausführt. Auf gleiche Weise kann der automatische Parallelisierungskompilierer 1 das parallele Programm 21a1 erzeugen, das den Wartezustand reduzieren kann, indem der zweite Kern 21d keine der Verarbeitung der dritten Aufgabe und der Verarbeitung der vierten Aufgabe ausführt.In particular, the automatic parallelization compiler 1 the parallel program 21a generate, which can reduce the waiting state by the first core 21c does not perform the processing of the first task and the processing of the second task. In the same way, the automatic parallelization compiler 1 the parallel program 21a1 generate, which can reduce the waiting state by the second core 21d does not perform the processing of the third task and the processing of the fourth task.

Ausgehend von dem vorstehenden Blickpunkt kann der automatische Parallelisierungskompilierer 1 das parallele Programm 21a1 erzeugen, das eine Reduzierung der Performanz des Mehrkern-Mikrocomputers 21 unterdrücken kann, die durch den Wartezustand verursacht wird, während Vorteile eines Synchronisationssystems bestehen. Zusätzlich kann der automatische Parallelisierungskompilierer 1 Arbeitsstunden verringern, die für die Teilung und Zeitplaneinstellung zur Reduzierung des Wartezustands erforderlich sind.Based on the above viewpoint, the automatic parallelization compiler 1 the parallel program 21a1 produce a reduction in the performance of the multi-core microcomputer 21 can suppress, which is caused by the wait state, while advantages of a synchronization system exist. In addition, the automatic parallelization compiler 1 Reduce labor hours required for split and schedule to reduce the wait state.

Ebenso führt der Computer 10 den automatischen Parallelisierungskompilierer 1 aus, um das parallele Programm 21a1 zu erzeugen. Somit kann der Computer 10 die gleichen Vorteile wie die des automatischen Parallelisierungskompilierers 1 erlangen.Likewise, the computer performs 10 the automatic parallelization compiler 1 off to the parallel program 21a1 to create. Thus, the computer can 10 the same advantages as the automatic parallelization compiler 1 gain.

Ferner beinhaltet die fahrzeuggebundene Vorrichtung 20 das parallele Programm 21a1, in dem für entsprechende Kerne 21c und 21d die Verarbeitungen mit der Abhängigkeit der ersten Aufgabe oder der dritten Aufgabe zugeordnet werden und die Verarbeitung mit keiner Abhängigkeit der zweiten Aufgabe oder der vierten Aufgabe zugeordnet werden. Das parallele Programm 21a1 wird für den Mehrkern-Mikrocomputer 21 parallelisiert. Wenn der erste Kern 21c die erste Aufgabe in den Wartezustand versetzt, führt der Mehrkern-Mikrocomputer die Verarbeitung aus, die der zweiten Aufgabe zugeordnet ist. Auf gleiche Weise, wenn der zweite Kern 21d die dritte Aufgabe in den Wartezustand versetzt, führt der Mehrkern-Mikrocomputer 21 die Verarbeitung aus, die der vierten Aufgabe zugeordnet ist. Aus diesem Grund kann die fahrzeuggebundene Vorrichtung 20 den Wartezustand reduzieren, in dem der erste Kern 21c keine der Verarbeitung der ersten Aufgabe und der Verarbeitung der zweiten Aufgabe ausführt. Auf gleiche Weise kann die fahrzeuggebundene Vorrichtung 20 den Wartezustand reduzieren, in dem der zweite Kern 21d keine der Verarbeitung der dritten Aufgabe und der Verarbeitung der vierten Aufgabe ausführt.Further, the on-vehicle device includes 20 the parallel program 21a1 in which for corresponding cores 21c and 21d the processing operations are associated with the dependency of the first task or the third task and the processing is associated with no dependency on the second task or the fourth task. The parallel program 21a1 becomes for the multi-core microcomputer 21 parallelization. If the first core 21c put the first task in the wait state, the multi-core microcomputer leads the Processing associated with the second task. In the same way, if the second core 21d put the third task in the wait state, leading the multi-core microcomputer 21 the processing associated with the fourth task. For this reason, the vehicle-mounted device 20 reduce the wait state in which the first core 21c does not perform the processing of the first task and the processing of the second task. In the same way, the vehicle-mounted device 20 reduce the wait state in which the second core 21d does not perform the processing of the third task and the processing of the fourth task.

Obwohl die Ausführungsformen vorstehend illustriert wurden, ist die vorliegende Erfindung nicht auf die vorstehenden Ausführungsformen beschränkt und die Ausführungsformen können unterschiedlich modifiziert werden, ohne das Licht der Lehre und den Umfang der vorliegenden Erfindung zu verlassen.Although the embodiments have been illustrated above, the present invention is not limited to the above embodiments, and the embodiments may be variously modified without departing from the teachings and scope of the present invention.

ZITATE ENTHALTEN IN DER BESCHREIBUNG QUOTES INCLUDE IN THE DESCRIPTION

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.This list of the documents listed by the applicant has been generated automatically and is included solely for the better information of the reader. The list is not part of the German patent or utility model application. The DPMA assumes no liability for any errors or omissions.

Zitierte PatentliteraturCited patent literature

  • JP 2015-1807 A [0003] JP 2015-1807 A [0003]
  • US 2014372995 A1 [0003] US 2014372995 A1 [0003]
  • DE 102014211047 A1 [0003] DE 102014211047 A1 [0003]

Claims (9)

Parallelisierungsverfahren zum Erzeugen aus mehreren Verarbeitungen (A1 bis A14, A21, A22, B11 bis B14, B21, B22) in einem einzelnen Programm für einen Einzelkern-Mikrocomputer mit einem Kern eines parallelen Programms, das für einen Mehrkern-Mikrocomputer mit mehreren Kernen parallelisiert wird, durch Analysieren einer Abhängigkeit der mehreren Verarbeitungen in dem einzelnen Programm und Zuordnen der mehreren Verarbeitungen unterschiedlichen Kernen des Mehrkern-Mikrocomputers, wobei das Parallelisierungsverfahren umfasst: eine Teilungsprozedur (S10 bis S12) zum, für jede der mehreren Verarbeitungen, die den Kernen zuzuordnen sind, Zuordnen der Verarbeitung mit der Abhängigkeit einer abhängigen Aufgabe und Zuordnen der Verarbeitung mit keiner Abhängigkeit einer nicht abhängigen Aufgabe; und eine Zuteilungsprozedur (S15) zum Zuteilen dem parallelen Programm eine Funktion zum Ausführen der Verarbeitung, die der nicht abhängigen Aufgabe eines Eigenkerns zugeordnet ist, wenn die abhängige Aufgabe des Eigenkerns in einen Wartezustand versetzt ist, damit Ausführen der Verarbeitung, die der abhängigen Aufgabe des Eigenkerns zugeordnet ist, ausgehend von einer Vervollständigung der Ausführung der Verarbeitung gestartet wird, die der abhängigen Aufgabe eines anderen Kerns zugeordnet ist.A parallelization method for generating a plurality of processes (A1 to A14, A21, A22, B11 to B14, B21, B22) in a single program for a single core microcomputer with a parallel program core parallelized for a multicore multi-core microcomputer by analyzing a dependency of the multiple processes in the single program and allocating the multiple processes to different cores of the multi-core microcomputer, the parallelization method comprising: a division procedure (S10 to S12) for, for each of the plurality of processes to be assigned to the cores, associating the processing with the dependency of a dependent task and allocating the processing with no dependency of a non-dependent task; and an arbitration procedure (S15) for allocating to the parallel program a function for executing the processing associated with the non-dependent task of a self-kernel when the dependent task of the self-kernel is put in a wait state, thereby performing the processing corresponding to the dependent task of the eigenkernel is started, starting from a completion of the execution of the processing associated with the dependent task of another core. Parallelisierungsverarbeitung gemäß Anspruch 1, ferner aufweisend: eine Aufweckprozedur (S14) zum Zuteilen dem parallelen Programm eine Funktion zum, bei der Aufweckzeit der abhängigen Aufgabe und der nicht abhängigen Aufgabe, einmaligen Aufwecken der abhängigen Aufgabe und der nicht abhängigen Aufgabe und Versetzen der nicht abhängigen Aufgabe in den Wartezustand auf einer Kern-nach-Kern-Basis.The parallelization processing of claim 1, further comprising: a wake-up procedure (S14) for allocating to the parallel program a function for, at the wake-up time of the dependent task and the non-dependent task, one-time awakening of the dependent task and the non-dependent task, and putting the non-dependent task in the wait state on a kernel-after core basis. Parallelisierungsverarbeitung gemäß Anspruch 1 oder 2, ferner umfassend: eine Wechselprozedur (16), zum Zuteilen dem parallelen Programm eine Funktion zum Versetzen der nicht abhängigen Aufgabe des anderen Kerns in den Wartezustand und Aufheben des Wartezustands der abhängigen Aufgabe des anderen Kerns, wenn die Ausführung der Verarbeitung, die der abhängigen Aufgabe des Eigenkerns zugeordnet ist, vervollständigt ist und die abhängige Aufgabe des anderen Kerns in dem Wartezustand ist.Parallelization processing according to claim 1 or 2, further comprising: a switching procedure ( 16 ), to allocate to the parallel program a function for putting the non-dependent task of the other core in the waiting state and canceling the waiting state of the dependent task of the other core when the execution of the processing associated with the dependent task of the eigenkern is completed, and the dependent task of the other core is in the wait state. Parallelisierungswerkzeug einschließlich eines Computers zum Erzeugen aus mehreren Verarbeitungen (A11 bis A14, A21, A22, B11 bis B14, B21, B22) in einem einzelnen Programm für einen Einzelkern-Mikrocomputer mit einem Kern eines parallelen Programms, das für einen Mehrkern-Mikrocomputer mit mehreren Kernen parallelisiert wird, durch Analysieren einer Abhängigkeit der mehreren Verarbeitungen in dem einzelnen Programm und Zuordnen der mehreren Verarbeitungen unterschiedlichen Kernen des Mehrkern-Mikrocomputers, wobei das Parallelisierungswerkzeug konfiguriert ist, um auszuführen: eine Teilungsverarbeitung (S10 bis S12) zum, für jede der mehreren Verarbeitungen, die den Kernen zuzuordnen sind, Zuordnen der Verarbeitung mit der Abhängigkeit einer abhängigen Aufgabe und Zuordnen der Verarbeitung mit keiner Abhängigkeit einer nicht abhängigen Aufgabe; und eine Zuteilungsverarbeitung (S15) zum Zuteilen dem parallelen Programm eine Funktion zum Ausführen der Verarbeitung, die der nicht abhängigen Aufgabe eines Eigenkerns zugeordnet ist, wenn die abhängige Aufgabe des Eigenkerns in einen Wartezustand versetzt ist, damit Ausführen der Verarbeitung, die der abhängigen Aufgabe des Eigenkerns zugeordnet ist, ausgehend von einer Vervollständigung der Ausführung der Verarbeitung gestartet wird, die der abhängigen Aufgabe eines anderen Kerns zugeordnet ist.A parallelization tool including a computer for generating a plurality of processes (A11 to A14, A21, A22, B11 to B14, B21, B22) in a single program for a single core microcomputer having a core of a parallel program suitable for a multicore microcomputer having a plurality of Cores by analyzing a dependency of the multiple processes in the single program and assigning the multiple processes to different cores of the multi-core microcomputer, where the parallelization tool is configured to execute: a division processing (S10 to S12) for, for each of the plurality of processes to be assigned to the cores, associating the processing with the dependency of a dependent task and assigning the processing with no dependency of a non-dependent task; and an allocation processing (S15) for allocating to the parallel program a function for executing the processing associated with the non-dependent task of a self-kernel when the dependent task of the self-kernel is put in a wait state, thereby performing the processing corresponding to the dependent task of the self-kernel is started, starting from a completion of the execution of the processing associated with the dependent task of another core. Parallelisierungswerkzeug gemäß Anspruch 4, ferner aufweisend: eine Aufweckverarbeitung (S14) zum Zuteilen dem parallelen Programm eine Funktion zum, bei der Aufweckzeit der abhängigen Aufgabe und der nicht abhängigen Aufgabe, einmaligen Aufwecken der abhängigen Aufgabe und der nicht abhängigen Aufgabe und Versetzen der nicht abhängigen Aufgabe in den Wartezustand auf einer Kern-nach-Kern-Basis.The parallelization tool of claim 4, further comprising: a wake-up processing (S14) for allocating to the parallel program a function for, at the wake-up time of the dependent task and the non-dependent task, one-time awakening of the dependent task and the non-dependent task and putting the non-dependent task in the wait state on a kernel-after core basis. Parallelisierungswerkzeug gemäß Anspruch 4 oder 5, ferner aufweisend: eine Wechselverarbeitung (16), zum Zuteilen dem parallelen Programm eine Funktion zum Versetzen der nicht abhängigen Aufgabe des anderen Kerns in den Wartezustand und Aufheben des Wartezustands der abhängigen Aufgabe des anderen Kerns, wenn die Ausführung der Verarbeitung, die der abhängigen Aufgabe des Eigenkerns zugeordnet ist, vervollständigt ist und die abhängige Aufgabe des anderen Kerns in dem Wartezustand ist.The parallelization tool according to claim 4 or 5, further comprising: a change processing ( 16 ), to allocate to the parallel program a function for putting the non-dependent task of the other core in the waiting state and canceling the waiting state of the dependent task of the other core when the execution of the processing associated with the dependent task of the eigenkern is completed, and the dependent task of the other core is in the wait state. Fahrzeuggebundene Vorrichtung, aufweisend: einen Mehrkern-Mikrocomputer mit mehreren Kernen; und ein paralleles Programm, das für den Mehrkern-Mikrocomputer aus mehreren Verarbeitungen (A1 bis A14, A21, A22, B11 bis B14, B21, B22) eines einzelnen Programms für einen Einzelkern-Mikrocomputer mit einem Kern parallelisiert ist, wobei in dem parallelen Programm die mehreren Verarbeitungen mehreren Kernen des Mehrkern-Mikrocomputers basierend auf einer Analyse einer Abhängigkeit der mehreren Verarbeitungen zugeordnet sind, wobei für jeden der Kerne das parallele Programm eine abhängige Aufgabe, der eine Verarbeitung mit einer Abhängigkeit zugeordnet ist, und eine nicht abhängige Aufgabe beinhaltet, der eine Verarbeitung mit keiner Abhängigkeit zugeordnet ist, und der Mehrkern-Mikrocomputer beinhaltet: eine Ausführungseinheit (S55, S56) für eine nicht abhängige Aufgabe zum Ausführen der Verarbeitung, die der nicht abhängigen Aufgabe eines Eigenkerns zugeordnet ist, wenn die abhängige Aufgabe des Eigenkerns in einen Wartezustand versetzt ist, damit Ausführen der Verarbeitung, die der abhängigen Aufgabe des Eigenkerns zugeordnet ist, ausgehend von einer Vervollständigung der Ausführung der Verarbeitung gestartet wird, die der abhängigen Aufgabe eines anderen Kerns zugeordnet ist.A vehicle-mounted device, comprising: a multicore multi-core microcomputer; and a parallel program parallelized for the multi-core microcomputer from a plurality of processes (A1 to A14, A21, A22, B11 to B14, B21, B22) of a single program for a single core microcomputer having a core, wherein in the parallel program the plurality of processes are assigned to a plurality of cores of the multi-core microcomputer based on an analysis of a dependency of the plurality of processes, wherein for each of the cores, the parallel program is a dependent task having a processing of one Dependency is assigned, and includes a non-dependent task, which is assigned a processing with no dependency, and the multi-core microcomputer includes: an execution unit (S55, S56) for a non-dependent task to perform the processing, the non-dependent task of Is self-core assigned when the dependent task of the eigenkern is put into a wait state so that execution of the processing associated with the dependent task of the eigenkern is started from a completion of the execution of the processing associated with the dependent task of another kernel , Fahrzeuggebundene Vorrichtung gemäß Anspruch 7, wobei der Mehrkern-Mikrocomputer ferner beinhaltet: eine Aufweckverarbeitungseinheit (S21 bis S26) zum, bei der Aufweckzeit der abhängigen Aufgabe und der nicht abhängigen Aufgabe, einmaligen Aufwecken der abhängigen Aufgabe und der nicht abhängigen Aufgabe und Versetzen der nicht abhängigen Aufgabe in den Wartezustand, wobei die Aufweckverarbeitungseinheit (S21 bis S26) für jeden der Kerne vorgesehen ist.The vehicle-mounted device of claim 7, wherein the multi-core microcomputer further includes: a wakeup processing unit (S21 to S26) for, at the wakeup time of the dependent task and the nondependent task, once awakening the dependent task and the nondependent task and putting the nondependent task into the waiting state, wherein the wakeup processing unit (S21 to S26) for each of the cores is provided. Fahrzeuggebundene Vorrichtung gemäß Anspruch 7 oder 8, wobei der Mehrkern-Mikrocomputer ferner beinhaltet: eine Wechselverarbeitungseinheit (S53, S54) zum Versetzen der nicht abhängigen Aufgabe des anderen Kerns in den Wartezustand und Aufheben des Wartezustands der abhängigen Aufgabe des anderen Kerns, wenn die Ausführung der Verarbeitung, die der abhängigen Aufgabe des Eigenkerns zugeordnet ist, vervollständigt ist und die abhängige Aufgabe des anderen Kerns in dem Wartezustand ist.The vehicle-mounted device of claim 7 or 8, wherein the multi-core microcomputer further includes: a handover unit (S53, S54) for putting the non-dependent task of the other core in the waiting state and releasing the waiting state of the dependent task of the other core when the execution of the processing associated with the dependent task of the self-kernel is completed and the dependent one Task of the other core is in the wait state.
DE102016219403.8A 2015-10-07 2016-10-06 PARALLELIZATION PROCESSING, PARALLELIZATION TOOL AND VEHICLE-ASSIGNED DEVICE Pending DE102016219403A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2015199703A JP6464982B2 (en) 2015-10-07 2015-10-07 Parallelization method, parallelization tool, in-vehicle device
JP2015-199703 2015-10-07

Publications (1)

Publication Number Publication Date
DE102016219403A1 true DE102016219403A1 (en) 2017-04-13

Family

ID=58405641

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102016219403.8A Pending DE102016219403A1 (en) 2015-10-07 2016-10-06 PARALLELIZATION PROCESSING, PARALLELIZATION TOOL AND VEHICLE-ASSIGNED DEVICE

Country Status (2)

Country Link
JP (1) JP6464982B2 (en)
DE (1) DE102016219403A1 (en)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109697122B (en) * 2017-10-20 2024-03-15 华为技术有限公司 Task processing method, device and computer storage medium
JP7042105B2 (en) 2018-02-16 2022-03-25 日立Astemo株式会社 Program execution control method and vehicle control device
JP6797332B2 (en) 2018-07-30 2020-12-09 三菱電機株式会社 Interrupt controller, interrupt control method and interrupt control program
JP7095620B2 (en) * 2019-02-21 2022-07-05 株式会社デンソー Arithmetic logic unit
CN110365768B (en) * 2019-07-15 2021-07-06 腾讯科技(深圳)有限公司 Data synchronization method, device, medium and electronic equipment of distributed system

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140372995A1 (en) 2013-06-14 2014-12-18 Denso Corporation Parallelizing compile method, parallelizing compiler, parallelizing compile apparatus, and onboard apparatus

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3039953B2 (en) * 1989-04-28 2000-05-08 株式会社日立製作所 Parallelization device
JP5673666B2 (en) * 2010-02-23 2015-02-18 富士通株式会社 Multi-core processor system, interrupt program, and interrupt method
JP2012108576A (en) * 2010-11-15 2012-06-07 Toyota Motor Corp Multi-core processor, process execution method, and program
KR101901587B1 (en) * 2011-12-13 2018-10-01 삼성전자주식회사 Method and apparatus to guarantee real time processing of soft real-time operating system

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140372995A1 (en) 2013-06-14 2014-12-18 Denso Corporation Parallelizing compile method, parallelizing compiler, parallelizing compile apparatus, and onboard apparatus
DE102014211047A1 (en) 2013-06-14 2014-12-18 Denso Corporation Parallelization compilation method, parallelization compiler, parallelization compiler device and on-board device
JP2015001807A (en) 2013-06-14 2015-01-05 株式会社デンソー Parallelization compilation method, parallelization compiler, parallelization compilation device, and on-vehicle device

Also Published As

Publication number Publication date
JP2017073000A (en) 2017-04-13
JP6464982B2 (en) 2019-02-06

Similar Documents

Publication Publication Date Title
DE102016219403A1 (en) PARALLELIZATION PROCESSING, PARALLELIZATION TOOL AND VEHICLE-ASSIGNED DEVICE
DE102013104328B4 (en) Assignment of tasks in large and small cores
EP1831786B1 (en) Method for distributing computing time in a computer system
DE102013214756B4 (en) METHOD OF MANAGING TASK EXECUTION IN A MULTI-CORE PROCESSOR
DE102010043569A1 (en) Method and apparatus for scheduling tasks for controlling hardware devices
DE102016204963A1 (en) Parallelization compilation method, parallelization compiler and vehicle device
DE102005013913A1 (en) Interrupt request program and microcomputer
DE112019005584T5 (en) ARITHMETIC CONTROL DEVICE
DE102017210126A1 (en) Parallelization method, parallelization tool and in-vehicle device
DE102016208339A1 (en) PARALLELIZING COMPILING METHOD, PARALLELIZING COMPILER AND VEHICLE-ASSOCIATED DEVICE
DE102016223939A1 (en) Parallelization method, parallelization tool and on-board device
DE112017006367T5 (en) Task management with dynamic runtime
DE102012209789B4 (en) ON-VEHICLE ELECTRICAL CONTROL DEVICE
DE112010004037T5 (en) Simulation method, system and program
DE102016221526A1 (en) Apparatus and method for processing a plurality of tasks
DE102016204970A1 (en) Parallelization compilation method, parallelization complicator and vehicle device
DE102016201612A1 (en) Parallelization compilation method, parallelization compiler and electronic device
EP3529723A1 (en) Apparatuses, methods and computer programs for a vehicle and a central office
DE102016220340A1 (en) PARALLELIZATION METHOD, PARALLELIZATION TOOL AND VEHICLE-BUILDER DEVICE
DE102021131057A1 (en) System and method for performing an operating system task for a vehicle
DE102016219449A1 (en) Parallelization method, parallelization tool and vehicle-mounted device
DE102016219721A1 (en) PARALLELIZATION METHOD, PARALLELIZATION TOOL AND VEHICLE-BUILDER DEVICE
DE102016201614A1 (en) Parallelization compilation method, parallelization compiler and electronic device
DE112018003505T5 (en) ACCESS CONTROL DEVICE
DE102019219260A1 (en) Method for operating a computing unit

Legal Events

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