[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

DE102014103139B4 - Parallelized execution of single-core control software on multi-core vehicle control units - Google Patents

Parallelized execution of single-core control software on multi-core vehicle control units Download PDF

Info

Publication number
DE102014103139B4
DE102014103139B4 DE102014103139.3A DE102014103139A DE102014103139B4 DE 102014103139 B4 DE102014103139 B4 DE 102014103139B4 DE 102014103139 A DE102014103139 A DE 102014103139A DE 102014103139 B4 DE102014103139 B4 DE 102014103139B4
Authority
DE
Germany
Prior art keywords
expiration
task
control software
tasks
software
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.)
Expired - Fee Related
Application number
DE102014103139.3A
Other languages
German (de)
Other versions
DE102014103139A1 (en
Inventor
c/o DENSO Automotive D. Kehr Sebastian
c/o DENSO Automotive D. Böddeker Bert
c/o TU Ilmenau Schäfer Günther
c/o Barcelona Supercom. Quinones Eduardo
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 Automotive Deutschland GmbH
Original Assignee
Denso Automotive Deutschland GmbH
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 Automotive Deutschland GmbH filed Critical Denso Automotive Deutschland GmbH
Priority to DE102014103139.3A priority Critical patent/DE102014103139B4/en
Publication of DE102014103139A1 publication Critical patent/DE102014103139A1/en
Application granted granted Critical
Publication of DE102014103139B4 publication Critical patent/DE102014103139B4/en
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

Die Erfindung betrifft ein Verfahren zur Portierung von Alt-Steuerungssoftware (100), die für ein Steuergerät (102) mit einem Einzel-Rechenkern (C0) entwickelt ist, auf ein Fahrzeugsteuergerät (103) mit mindestens zwei Rechenkernen (C1, C2, C3). In der Alt-Steuerungssoftware (100) sind Tasks (T-1, T-8, T-Cr) mit jeweils einem oder mehreren Ablaufteile (R_i) sowie eine Ausführungs-Rangfolge (106) für die Tasks enthalten. Es werden Vorrang-Beschränkungen (PC1, PC2, PC3) für schreibende und lesende Zugriffe auf gemeinsame persistente Speichervariablen (Va, Vb) ermittelt und schwache Vorrang-Beschränkungen (PC2, PCx, PCy) nach vorbestimmten Klassifizierungsregeln (109) identifiziert. Ein Ausführungsplans (105) für die Ausführung der Alt-Steuerungssoftware auf den zwei oder mehr Rechenkernen (C1, C2, C3) wird erzeugt, und zwar unter Parallelisierung von Ablaufteilen (R_11, R_81) mit schwachen Vorrang-Beschränkungen (PC2). Für jede schwache Vorrang-Beschränkung (PC2) wird die zugehörige persistente Speichervariable (Va) in einer getrennt verwalteten Datenbasis (108) gespeichert, die einen wartezeitfreien lesenden und schreibenden Zugriff zulässt.The invention relates to a method for porting legacy control software (100) developed for a control unit (102) with a single arithmetic core (C0) to a vehicle control unit (103) having at least two arithmetic cores (C1, C2, C3). , The old control software (100) contains tasks (T-1, T-8, T-Cr) with one or more expiration parts (R_i) as well as an execution order (106) for the tasks. Priority constraints (PC1, PC2, PC3) are identified for write and read accesses to common persistent storage variables (Va, Vb) and weak priority constraints (PC2, PCx, PCy) are identified according to predetermined classification rules (109). An execution plan (105) for the execution of the legacy control software on the two or more cores (C1, C2, C3) is generated, with parallelization of expiration parts (R_11, R_81) with weak priority constraints (PC2). For each weak priority constraint (PC2), the associated persistent storage variable (Va) is stored in a separately managed database (108) that allows wait-free read and write access.

Description

Die Arbeiten, die zu dieser Erfindung geführt haben, wurden gemäß der Finanzhilfevereinbarung Nr. 287519 im Zuge des Siebten Rahmenprogramms der Europäischen Union (RP7/2007-2013) gefördert. The work leading to this invention has been funded under the Grant Agreement No. 287519 under the Seventh Framework Program of the European Union (FP7 / 2007-2013).

Die Erfindung betrifft ein Verfahren zur Portierung von Alt-Steuerprogrammen, die für die Ausführung auf einem Einzel-Rechenkern (Single-Core) entwickelt sind, auf ein Fahrzeugsteuergerät (ECU) mit mindestens zwei Rechenkernen (Multi-Core). The invention relates to a method for porting Alt-control programs, which are designed for execution on a single-core (single-core), on a vehicle control unit (ECU) with at least two cores (multi-core).

Bisher sind keine zufriedenstellenden Verfahren zur Ausführung von Single-Core Steuerungssoftware auf Multi-Core Steuergeräten für den automotiven Einsatz bekannt, sodass auf eine Parallelisierung von Tasks weitgehend verzichtet wird und umfassende Teile der Alt-Steuerungssoftware häufig auf nur einem einzigen der mehreren Rechenkerne ausgeführt werden. So far, no satisfactory methods for implementing single-core control software on multi-core ECUs for automotive use are known, so that a parallelization of tasks is largely dispensed with and extensive parts of the legacy control software often run on only one of the multiple cores.

In der Praxis gibt es zwar Verfahren zur parallelisierten Ausführung von für Single-Core entwickelter Alt-Software auf Multi-Core Rechnern aus anderen Anwendungsbereichen, insbesondere aus dem Bereich der PC-Software. Diese Verfahren sind für die parallelisierte Ausführung von Steuerungssoftware von Fahrzeugen jedoch ungeeignet, da sie den besonderen Echtzeit- und Sicherheitsanforderungen nicht gerecht werden. In automobiler Software existiert ferner aufgrund zyklischer Ausführung kein fester Start- oder Endzeitpunkt, wie dies bei PC-Programmen typisch ist, was ebenfalls die Anwendung der hierzu vorbekannten Verfahren verhindert. In practice, there are procedures for the parallelized execution of single-core developed Alt software on multi-core computers from other applications, especially in the field of PC software. However, these methods are unsuitable for the parallelized execution of control software of vehicles because they do not meet the specific real-time and safety requirements. In automotive software also exists due to cyclical execution no fixed start or end time, as is typical in PC programs, which also prevents the application of the previously known methods.

Allgemeine Informationen zur Parallelisierung von Single-Core Alt-Software auf Multi-Core Systeme finden sich beispielsweise in:

  • • Basicevic, I. et al.: An Approach to Parallelization of Legacy Software. In: Proceedings of the 2009 First IEEE Eastern European Conference on the Engineering of Computer Based Systems, 2009, S. 42–48; und
  • • Yohei Kanehagi et al.: Parallelization of Automotive Engine Control Software On Embedded Multi-core Processor Using OSCAR Compiler. In: Cool Chips XVI (COOL Chips), 2013, S. 1–3.
General information on the parallelization of single-core legacy software to multi-core systems can be found, for example, in:
  • • Basicevic, I. et al .: An Approach to Parallelization of Legacy Software. In: Proceedings of the 2009 First IEEE Eastern European Conference on the Engineering of Computer Based Systems, 2009, pp. 42-48; and
  • • Yohei Kanehagi et al .: Parallelization of Automotive Engine Control Software On Embedded Multi-core Processor Using OSCAR Compiler. In: Cool Chips XVI (COOL Chips), 2013, pp. 1-3.

Es ist Aufgabe der vorliegenden Erfindung ein Verfahren zur parallelisierten Ausführung von (Single-Core) Alt-Steuerungssoftware auf einem Steuergerät mit mindestens zwei Rechenkernen aufzuzeigen, mit dem eine Effizienzsteigerung erreichbar ist. Ferner soll ein Softwareprodukt aufgezeigt werden, das das Verfahren ausführt. Die Erfindung löst diese Aufgabe durch die Merkmale der eigenständigen Ansprüche. It is an object of the present invention to provide a method for the parallelized execution of (single-core) old control software on a control unit having at least two computing cores, with which an increase in efficiency can be achieved. Furthermore, a software product is to be demonstrated, which performs the method. The invention solves this problem by the features of the independent claims.

Fahrzeug-Steuerungssoftware weist einige Besonderheiten auf, die sie von anderen Softwareanwendungen unterscheiden. Beispielsweise treten zur Vermeidung von hohen Rechenverzögerungen nur sehr selten Schleifen oder Rekursionen auf. Falls Schleifen oder rekursive Funktionsaufrufe in der Alt-Steuerungssoftware enthalten sind, ist deren maximale Ausführungszahl und/oder Rekursionstiefe beschränkt. Um Daten zwischen verschiedenen Tasks und/oder deren Instanzen auszutauschen sind gemeinsame Speichervariablen definiert, auf die durch die verschiedenen Programmabschnitte zugegriffen werden kann. Vehicle control software has some peculiarities that distinguish it from other software applications. For example, loops or recursions rarely occur to avoid high computational delays. If loops or recursive function calls are included in the legacy control software, their maximum execution count and / or recursion depth is limited. In order to exchange data between different tasks and / or their instances, common memory variables are defined that can be accessed by the various program sections.

Die Alt-Steuerungssoftware beinhaltet in der Regel eine Mehrzahl von Tasks (Aufgabenabschnitten). Diese Tasks führen verschiedene Aufgaben aus, wie bspw. das Ermitteln von aktuellen Messwerten und Fahrzeugparametern, deren Umwandlung in Steuer-Werte und ggfs. das Ansteuern von Aktuatoren des Fahrzeugs. Die Tasks sind in der Regel in Software-Komponenten zusammengefasst. Sie werden nach einem Interrupt (periodisch gesteuert), nach einem Ereignis (durch Events gesteuert) oder direkt durch das Betriebssystem (OS gesteuert) ausgeführt. Die Tasks weisen somit unterschiedliche Formen von Auslösern (Triggern) auf. The legacy control software typically includes a plurality of tasks (task sections). These tasks perform various tasks, such as the determination of current measured values and vehicle parameters, their conversion into control values and possibly the activation of actuators of the vehicle. The tasks are usually grouped together in software components. They are executed after an interrupt (periodically controlled), after an event (controlled by events) or directly through the operating system (OS controlled). The tasks thus have different forms of triggers.

Die Verfahren gemäß der vorliegenden Offenbarung werden bevorzugt für Alt-Steuerungssoftware angewendet, die AUTOSAR-Komponenten enthält. AUTOSAR-Komponenten definieren Schnittstellen (Ports) für die Kommunikation. Komponenten enthalten Ablaufteile (sog. Runnables), welche durch diese Schnittstellen miteinander kommunizieren (Sender-Receiver, Client-Server). Tasks werden konfiguriert, wobei Ablaufteile (Runnables) den Tasks zugeordnet werden (Runnable-to-Task mapping).The methods according to the present disclosure are preferably applied to legacy control software that includes AUTOSAR components. AUTOSAR components define interfaces (ports) for communication. Components contain drainage components (so-called runnables), which communicate with each other through these interfaces (sender-receiver, client-server). Tasks are configured, with runnables assigned to the tasks (runnable-to-task mapping).

In den Tasks wird auf flüchtige sowie persistente Speichervariablen zugegriffen. Flüchtige Speichervariablen sind meist für andere Tasks nicht zugreifbar, betreffen lediglich innere Rechenwerte eines Tasks und werden am Ende einer Einzel-Ausführung wieder freigegeben, d.h. zum Ende der Laufzeit einer Instanz eines Tasks. The tasks access both volatile and persistent storage variables. Volatile memory variables are usually inaccessible to other tasks, only relate to inner computational values of a task and are released again at the end of a single execution, i. at the end of the runtime of an instance of a task.

Persistente Speichervariablen bleiben über die Laufzeiten mehrerer Task-Ausführungen hinweg und ggfs. für die gesamte Laufzeit der Steuerungssoftware im Speicher erhalten. Der Wert einer persistenten Speichervariablen kann sich dabei wiederholt ändern. Es können mehrfache Zugriffe von unterschiedlichen Tasks auf eine gemeinsame Speichervariable erfolgen. Alternativ oder zusätzlich können wiederholte Zugriffe von verschiedenen Instanzen desselben Tasks auf eine gemeinsame Speichervariable erfolgen. Bei der Ausführung der Alt-Steuerungssoftware auf einem Single-Core Steuergerät erfolgen die Zugriffe zwangsläufig sequenziell. Persistent memory variables are retained over the run times of several task executions and, if necessary, for the entire runtime of the control software in the memory. The value of a persistent storage variable may change repeatedly. Multiple accesses from different tasks to a shared memory variable can occur. Alternatively or additionally, repeated accesses from different instances of the same task to a common memory variable can take place. When executing the legacy control software on a single-core controller, the accesses are inevitably sequential.

Die Tasks und/oder deren Instanzen können Schreib- und/oder Lesezugriffe ausführen. Im Fall von Speichervariablen, die für Messwerte oder Betriebsparameter am Fahrzeug dienen, gibt es in der Regel genau einen Task, der einen Schreibzugriff ausführt (Produzent) und einen oder mehrere weitere Tasks, die Lesezugriffe ausführen (Konsumenten). The tasks and / or their instances can perform read and / or write accesses. In the case of memory variables that are used for measurements or operating parameters on the vehicle, there is usually exactly one task that performs a write access (producer) and one or more other tasks that execute read accesses (consumers).

In der für Single-Core Systeme entwickelten Alt-Steuerungssoftware werden die meisten Tasks durch Perioden-Trigger (der sog. Clock / einer Systemuhr) gestartet und so lange ausgeführt, bis ihre Verarbeitung abgeschlossen ist, wobei zwischenzeitige Präemption (In der Informatik auch als Verdrängung bezeichnet – English: Preemption) die Gesamtverarbeitungsdauer verlängern kann (siehe unten). In the old control software developed for single-core systems, most tasks are started by period triggers (the so-called clock / a system clock) and executed until their processing is completed, whereby intermediate preemption (in computer science also as suppression termed - English: Preemption) can extend the total processing time (see below).

In der Regel ist ein Grundtakt für die Ausführung der periodisch gestarteten Tasks definiert, wobei die Tasks bei jedem n-ten Perioden-Trigger gestartet werden. Der Grundtakt ist grundsätzlich frei wählbar. Rein beispielhaft wird im Folgenden davon ausgegangen, dass der Grundtakt 1ms beträgt. Er könnte jedoch auch deutlich kürzer oder länger sein. As a rule, a basic clock is defined for the execution of the periodically started tasks, whereby the tasks are started every nth period trigger. The basic clock is basically freely selectable. Purely by way of example, it is assumed below that the basic clock is 1 ms. It could also be shorter or longer.

Es kann je nach Relevanz eines Tasks eine stark unterschiedliche Periodizität vorgesehen sein. Die Periodizität ist in der Regel als ein Vielfaches des Grundtaktes definiert. Als Periodizität können entsprechend Widerholungshäufigkeiten von weniger als 1 ms bis hin zu mehreren Sekunden vorgesehen sein. Depending on the relevance of a task, a very different periodicity may be provided. The periodicity is usually defined as a multiple of the basic clock. As periodicity may be provided correspondingly repetition frequencies of less than 1 ms to several seconds.

Es können weiterhin in der Alt-Steuerungssoftware Tasks vorgesehen sein, die Event-basiert gestartet werden. Diese Tasks weisen also einen Event-Trigger auf. Eine Event-basierte Auslösung kann insbesondere in Abhängigkeit von einem momentanen Kurbelwinkelwert erfolgen. It can also be provided in the old control software tasks that are started event-based. These tasks therefore have an event trigger. An event-based triggering can be carried out in particular as a function of a current crank angle value.

Häufig ist eine Ausführungs-Rangfolge der Tasks in der Alt-Steuerungssoftware explizit definiert. Durch die Ausführungs-Rangfolge ist vorgegeben, welcher Task bei einer (Freigabe-)Kollision als nächster abzuarbeiten ist. Unter Freigabe-Kollision wird im Folgenden ein momentaner Zustand verstanden, bei dem mehr als ein Task gleichzeitig zur Ausführung ansteht. Verschiedene Varianten für das Auftreten von Kollisionen werden weiter unten erläutert. Frequently, an execution order of the tasks is explicitly defined in the legacy control software. The execution order determines which task is to be processed next in case of a (release) collision. In the following, release collision is understood to be a momentary state in which more than one task is simultaneously pending execution. Different variants for the occurrence of collisions are explained below.

Die Ausführungs-Rangfolge kann in beliebiger Darstellungsform vorliegen. In der Regel sind den Tasks Wichtigkeiten oder Prioritäten als Parameter zugeordnet. Alternativ oder zusätzlich können eine oder mehrere Ranglisten definiert sein, in denen jeweils für das Verhältnis von einem ersten und einem zweiten Task festgelegt ist, welcher von diesen den Vorrang hat. Alternativ können andere Mittel zur Festlegung einer Ausführungs-Rangfolge verwendet werden. The execution order can be in any representation. As a rule, priorities or priorities are assigned to the tasks as parameters. Alternatively or additionally, one or more ranking lists can be defined, in each of which the relationship between a first and a second task is determined, which of these has priority. Alternatively, other means of establishing an execution order may be used.

Innerhalb der Dauer eines Grundtaktes können bei einem Single-Core Steuergerät mehrere Tasks zur Ausführung anstehen, sodass es zu einer Binnen-Kollision innerhalb der Grundtaktdauer kommt. Dann werden diese Tasks gemäß der vorgegebenen Rangfolge nacheinander ausgeführt, d.h. es wird mit dem Task der höchsten Priorität bzw. des höchsten Ranges begonnen und anschließend mit dem Task der nächsten niedrigeren Priorität oder des nächst niedrigeren Ranges fortgefahren. Within the duration of a basic clock, a single-core control unit can have several tasks to execute, resulting in an internal collision within the basic clock duration. Then, these tasks are executed in sequence according to the predetermined order, i. it starts with the highest priority or highest rank task and then continues to the next lower priority or next lower rank task.

Wenn der letzte anstehende Task zum Beginn des nächsten Taktes noch nicht abgearbeitet wurde, kann es zu einer taktübergreifenden Kollision kommen. If the last task at the beginning of the next cycle has not yet been processed, a deadlock-type collision can occur.

Bei der Ausführung der Alt-Steuerungssoftware auf einem Einzel-Rechenkern kann stets nur ein einziger Task zu einem bestimmten Zeitpunkt abgearbeitet werden. Um sicherzustellen, dass hoch priorisierte Tasks (gerade bei taktübergreifenden Kollisionen) ohne Zeitverlust abgearbeitet werden, wird bei Single-Core Steuergeräten in der Regel eine Task-Sequenzierung mit Präemption ausgeführt (sog. „preemptive sequencing“). Die Präemption kann unter Anwendung der Ausführungs-Rangfolge erfolgen, oder unter Anwendung einer separat definierten Präemptiv-Rangfolge (Verdrängungs-Rangfolge). When executing the old control software on a single processor, only a single task can be executed at any one time. To ensure that high-priority tasks (especially for cross-stroke collisions) are processed without any loss of time, single-core ECUs are usually preceded by task sequencing (so-called "preemptive sequencing"). The preemption may be done using the execution order, or using a separately defined preemptive ranking (displacement ranking).

Wenn zwei oder mehr Tasks konkurrierend zur Ausführung anstehen, wird anhand der jeweiligen Rangfolge entschieden, welcher Task den sofortigen Vorrang erhält. Wenn beispielsweise gerade ein niedrig priorisierter Task ausgeführt wird, und vor dessen Abarbeitung ein höher priorisierter Task zur Ausführung (neu) freigegeben wird, dann präemptiert (d.h. verdrängt) der hoch-priorisierte Task den niedrig-priorisierten Task. Das bedeutet, dass die Ausführung des niedrig priorisierten Tasks so lange unterbrochen wird, bis der höher priorisierte Task ausgeführt und voll abgearbeitet wurde. Erst danach wird die Verarbeitung des niedrig-priorisierten Tasks fortgesetzt. Mit anderen Worten wird bei einer Binnenkollision oder einer taktübergreifenden Kollision auf einem Singe-Core Steuergerät sofort der am höchsten priorisierte Task vom Prozessor verarbeitet, während die anderen Tasks pausiert werden. Die Präemption kann mehrstufig erfolgen, sodass mehrfache Unterbrechungsebenen entstehen. When two or more tasks are competing for execution, a decision is made as to which task receives immediate priority based on its ranking. For example, if a low priority task is being executed, and before it is processed, a higher priority task is (re) released for execution, then the high priority task preempts (ie displaces) the low priority task. This means that execution of the low-priority task is interrupted until the higher-priority task has been executed and fully executed. Only then will the processing of the low prioritized task continue. In other words, in an inbound collision or inter-frame collision on a Singe-Core controller, the highest-priority task is immediately processed by the processor while the other tasks are paused. Pre-emption can be multi-level, creating multiple levels of interruption.

Innerhalb jedes Tasks sind in der Alt-Steuerungssoftware ein oder mehrere Ablaufteile (englisch: Runnables) vorhanden. Diese Ablaufteile können explizit definiert oder durch Analyse ermittelbar sein. Die Ablaufteile werden auf einem Single-Core Steuergerät zwangsweise nacheinander, also sequenziell ausgeführt. Within each task, one or more expiration parts (English: Runnables) are present in the old control software. These expiration parts can be explicitly defined or determined by analysis. The expiry parts are forcibly executed one after the other on a single-core control unit, ie sequentially.

Die Sequenzierung der Tasks und der darin enthaltenen Ablaufteile ist in der Alt-Steuerungssoftware weitgehend festgelegt und ergibt bspw. aus dem Quellcode. Es gibt eine Makro-Sequenzierung und eine Mikro-Sequenzierung. Die Makro-Sequenzierung folgt aus dem Kontrollfluss der Tasks untereinander und ergibt sich implizit aus der Abarbeitung der Tasks gemäß der vorgegebenen Ausführungs- und/oder Präemptiv-Rangfolge (siehe oben). Die Mikro-Sequenzierung ist durch die Aufrufreihenfolge der Ablaufteile innerhalb eines Tasks vorgegeben. The sequencing of the tasks and the expiration parts contained therein is largely defined in the legacy control software and results, for example, from the source code. There is a macro-sequencing and a micro-sequencing. The macro-sequencing follows from the control flow of the tasks among each other and results implicitly from the execution of the tasks according to the given execution and / or preemptive ranking (see above). Micro-sequencing is dictated by the calling order of the expiration parts within a task.

Es gibt zwingende Abhängigkeiten, die bei der Entwicklung von Fahrzeug-Steuerungssoftware für die Festlegung der Mikro- und Makro-Sequenzierung berücksichtigt werden, um zu gewährleisten, dass im zeitlichen Verlauf ein gerichteter Datenfluss eingehalten wird. Dieser Datenfluss muss stets von Sensordaten ausgehen und mit der Ausgabe von Aktuator-Daten enden. Es handelt sich also um eine Von-Sensor-zu-Aktuator-Sequenzierung. Sie kann auch als Vom-Produzenten-zum-Konsumenten-Sequenzierung bezeichnet werden, wobei ein Produzent ein Ablaufteil ist, der ein von anderen Ablaufteilen genutztes Datenelement schreibt, und ein Konsument einer dieser anderen Ablaufteile ist, der auf das Datenelement zugreift. Wenn gegen diese Sequenzierung verstoßen würde, könnte es auf den Single-Core Steuergeräten zu Zugriffen auf noch nicht erzeugte Messwerte, zu Gegenkopplungen in den Regelkreisen oder zu unbestimmten Systemzuständen kommen. Die Von-Sensor-zu-Aktuator-Sequenzierung kann aus der im Code enthaltenen Mikro- und Makro-Sequenzierung rekonstruiert werden. There are compelling dependencies that are taken into account in the development of vehicle control software for establishing micro and macro sequencing to ensure that a directed data flow is maintained over time. This data flow must always start from sensor data and end with the output of actuator data. It is therefore a sensor-to-actuator sequencing. It may also be referred to as producer-to-consumer sequencing, where a producer is a thread that writes a piece of data used by other threads and a consumer is one of those other threads that accesses the piece of data. If this sequencing were violated, it could lead to access to not yet generated measured values, to negative feedback in the control loops or to indeterminate system states on the single-core control units. From sensor to actuator sequencing can be reconstructed from the micro and macro sequencing included in the code.

Die Mikro- und die Makro-Sequenzierung für die Ausführung einer Alt-Steuerungssoftware auf einem Single-Core Steuergerät können ggfs. analytisch ermittelt werden. Die Mikro-Sequenzierung (Kontrollfluss) kann beispielsweise unter Verwendung eines Compilers aus Programm-Code automatisch extrahiert werden. The micro and the macro sequencing for the execution of a legacy control software on a single-core control unit can be determined analytically if necessary. For example, the micro-sequencing (control flow) may be extracted automatically using a program code compiler.

Die Makro-Sequenzierung kann anhand der zugeordneten Zeit-Trigger und Task Prioritäten rekonstruiert werden. The macro sequencing can be reconstructed based on the assigned time triggers and task priorities.

Bei dem erfindungsgemäßen Verfahren werden die Ablaufteile der verschiedenen Tasks so weit wie möglich auf den zwei oder mehr Rechenkernen parallelisiert ausgeführt. Der Kontrollfluss und der gerichtete Datenfluss, d.h. die Makro-Sequenzierung und die Mikro-Sequenzierung der Alt-Steuerungssoftware, sollten insoweit beibehalten werden, wie dies zur Einhaltung der äußeren Anforderungen an die Steuerungssoftware erforderlich ist, insbesondere in Hinblick auf Robustheit, Vorhersagbarkeit des Verhaltens und Timing-Eigenschaften. Hierfür wird die Kommunikation (Datenweitergabe) zwischen den Ablaufteilen analysiert. In the method according to the invention, the expiration parts of the various tasks are executed as far as possible in parallel on the two or more calculation cores. The control flow and directed data flow, i. Macro sequencing and micro-sequencing of the legacy control software should be maintained to the extent required to meet the external requirements of the control software, particularly with regard to robustness, predictability of behavior, and timing characteristics. For this purpose, the communication (data transfer) between the expiration parts is analyzed.

Es werden Vorrang-Beschränkungen für schreibende und lesende Zugriffe aus den Ablaufteilen auf gemeinsame persistente Speichervariablen in der Alt-Steuerungssoftware ermittelt. Diese Ermittlung kann grundsätzlich auf beliebige Weise erfolgen. Bevorzugt ist vorgesehen, dass innerhalb eines Tasks der Kontrollfluss mittels eines Compilers ermittelt wird. Aus dem Kontrollfluss werden zusammen mit den analytisch ermittelten Speicherzugriffen Vorrang-Beschränkungen extrahiert. Es kann dabei zur Vereinfachung des Verfahrens vorgesehen sein, dass nur Datenflussabhängigkeiten (von schreibenden zu lesenden Ablaufteilen) zu Vorrang-Beschränkungen führen. Priority restrictions on write and read accesses from the expiration parts to shared persistent storage variables in the legacy control software are determined. This determination can basically be done in any way. It is preferably provided that within a task the control flow is determined by means of a compiler. Priority constraints are extracted from the control flow along with the analytically determined memory accesses. To simplify the method, it may be provided that only data flow dependencies (from write-to-read expiration parts) lead to priority restrictions.

Anhand von vorbestimmten Klassifizierungsregeln werden innerhalb der ermittelten Vorrang-Beschränkungen schwache und starke Vorrang-Beschränkungen identifiziert. Maßgeblich sind vor allem die als schwach klassifizierten Vorrang-Beschränkungen. Durch die Klassifizierungsregeln werden solche Vorrang-Beschränkungen ermittelt, die nur eine unwesentliche Auswirkung auf die Robustheit und/oder Vorhersagbarkeit der Steuerungssoftware haben. Based on predetermined classification rules, weak and strong priority constraints are identified within the identified priority constraints. Above all, the precedence restrictions classified as weak are decisive. The classification rules make such priority Determines restrictions that have only a negligible effect on the robustness and / or predictability of the control software.

Es wird ein Ausführungsplan für die Ausführung der Alt-Steuerungssoftware auf den zwei oder mehr Rechenkernen des (Multi-Core) Fahrzeugsteuergerätes erstellt, der eine Parallelisierung (auch) für diejenigen Ablaufteile vorsieht, zwischen denen eine schwache Vorrang-Beschränkung besteht. Die Erstellung des Ausführungsplans kann in beliebiger Weise erfolgen. Gemäß einer bevorzugten Ausführungsform wird eine listenbasierte Planung verwendet. Die Aufgabenteile werden zunächst in eine Liste einsortiert, wobei die Vorrang-Beschränkungen eine Ordnung über die Liste definieren. Anschließend werden die Aufgabenteile, entsprechend der Reihenfolge in der Liste, auf freie Prozessoren verteilt. Es kann dabei vorgesehen sein, dass die Ablaufteile der Alt-Steuerungssoftware auf neu oder abweichend definierte Tasks verteilt werden. Mit anderen Worten kann ein adaptiertes Runnable-to-Task-Mapping erzeugt werden. An execution plan is created for the execution of the legacy control software on the two or more cores of the (multi-core) vehicle control unit, which provides for a parallelization (also) for those run-off parts between which there is a weak priority constraint. The creation of the execution plan can be done in any way. According to a preferred embodiment, list-based scheduling is used. The task parts are first sorted into a list, with the priority constraints defining order over the list. Then the task parts are distributed to free processors according to the order in the list. It may be provided that the expiration parts of the legacy control software are distributed to new or different defined tasks. In other words, an adapted runnable-to-task mapping can be generated.

Zusätzlich wird zu jeder schwachen Vorrang-Beschränkung eine zugehörige persistente Speichervariable in einer getrennt verwalteten Datenbasis eingerichtet. Es ist dabei vorteilhaft, wenn die Datenbasis einen wartezeitfreien lesenden und schreibenden Zugriff erlaubt. Additionally, for each weak priority constraint, an associated persistent storage variable is established in a separately managed database. It is advantageous if the database allows wait-free read and write access.

Mit anderen Worten wird der zu einer schwachen Vorrang-Beschränkung gehörende Austausch von aktuellen Kommunikationsdaten, der auf einem Single-Core Steuergerät sequenziell ausgeführt wird (d.h. erst aktuelle Daten schreiben, dann die aktuellen Daten lesen bzw. erst Produzieren, dann aktuelle Daten Konsumieren), aufgetrennt und durch die Nutzung eines (etwas) älteren gepufferten Datenwertes ersetzt. In other words, the exchange of current communication data pertaining to a weak priority restriction, which is carried out sequentially on a single-core control unit (ie first write current data, then read the current data or first produce, then consume current data), separated and replaced by the use of a (slightly) older buffered data value.

Diese Parallelisierung von Ablaufteilen unter Pufferung und Veränderung des Zeitrangs der ausgetauschten Daten führt zu einer drastischen Erhöhung der Parallelisierung. Im Vergleich zu einer unveränderten Beibehaltung der Kommunikationsbeziehungen zwischen den Ablaufteilen können erheblich mehr Ablaufteile zu jeweils früheren Zeitpunkten auf parallelen Rechenkernen ausgeführt werden. Folglich kann die Rechenleistung des Multi-Core Steuergeräts deutlich effizienter genutzt werden, sodass einfachere Hardware verwendbar ist und/oder der Stromverbrauch des Steuergeräts sinkt. This parallelization of expiration parts under buffering and changing the seniority of the exchanged data leads to a drastic increase in the parallelization. In comparison to an unchanged retention of the communication relationships between the expiration parts, considerably more expiration parts can be executed at respective earlier times on parallel calculation cores. Consequently, the computing power of the multi-core controller can be used much more efficiently, so that simpler hardware can be used and / or the power consumption of the controller is reduced.

Die Verwendung geeigneter Klassifizierungsregeln für die Vorrang-Beziehungen stellt sicher, dass nur geeignete Ablaufteile parallelisiert werden. Using appropriate classification rules for the precedence relationships ensures that only appropriate expiration parts are parallelized.

Das erfindungsgemäße Verfahren kann zur Portierung der Alt-Steuerungssoftware in eine adaptierte Steuerungssoftware mit einem angepassten Multi-Core Ausführungsplan in einer beliebigen Softwareumgebung ausgeführt werden. Es kommen vor allem die Ausführung in einer Entwicklungsumgebung oder auf dem Multi-Core Steuergerät selbst in Betracht. Die adaptierte Software kann im Multi-Core Fahrzeugsteuergerät selbst erzeugt oder in dieses eingespielt und dort ausgeführt werden. Die Portierung und ggfs. die Einspielung können insbesondere durch ein Softwareprodukt erfolgen, welches das Portierungsverfahren automatisiert ausführt. Das Softwareprodukt kann die Alt-Steuerungssoftware als Eingangsprodukt übernehmen und eine parallelisierte Steuerungssoftware ausgeben, die auf das Multi-Core Fahrzeugsteuergerät übertragbar ist. Gegebenenfalls können Informationen über Aufbaut und/oder Struktur des Single-Core Steuergeräts und/oder des Multi-Core Fahrzeugsteuergeräts sowie der jeweiligen Konfigurationen bei der Portierung berücksichtigt und von dem Softwareprodukt verarbeitet werden. The method according to the invention can be carried out for porting the legacy control software into an adapted control software with a customized multi-core execution plan in any software environment. Above all, the design in a development environment or on the multi-core control device itself come into consideration. The adapted software can be generated in the multi-core vehicle control unit itself or recorded in this and executed there. The porting and possibly the recording can be done in particular by a software product, which executes the porting method automatically. The software product can take over the legacy control software as an input product and output a parallelized control software that can be transferred to the multi-core vehicle control unit. If necessary, information about the structure and / or structure of the single-core control device and / or the multi-core vehicle control device and the respective configurations during porting can be taken into account and processed by the software product.

Ein Task ist im Folgenden als ein separat ausführbarer Aufgabenabschnitt zu verstehen. Ein solcher Aufgabenabschnitt kann beispielsweise die Erzeugung eines aktualisierten Messwertes betreffen, wie beispielsweise die Ermittlung eines Druck- oder Temperaturwertes. Ferner kann ein Aufgabenabschnitt die Weiterverarbeitung eines Mess- oder Steuerwertes für eine Steueraufgabe betreffen, beispielweise, die Ermittlung eines Soll-Wertes aus einem Kennfeld oder die Vorgabe eines Timings für die Ansteuerung eines Kraftstoffinjektors. A task is to be understood in the following as a separately executable task section. Such a task section may, for example, relate to the generation of an updated measured value, such as, for example, the determination of a pressure or temperature value. Furthermore, a task section may relate to the further processing of a measurement or control value for a control task, for example, the determination of a desired value from a map or the specification of a timing for the control of a fuel injector.

Ein Ablaufteil ist ein separat ausführbares Programmelement innerhalb eines Tasks. Ein Ablaufteil beinhaltet eine Sequenz von Instruktionen, die durch die Laufzeitumgebung (run time environment – RTE, insbesondere eine AUTOSAR RTE) aufrufbar ist. Hierbei kann es sich beispielsweise um separat deklarierte Funktionen handeln, die einzelne Teil-Aufgaben innerhalb des Tasks ausführen. An expiration part is a separately executable program element within a task. A expiration part contains a sequence of instructions which can be called by the runtime environment (RTE, in particular an AUTOSAR RTE). For example, these may be separately declared functions that perform individual subtasks within the task.

Systemkritische Aufgaben oder die Messwert-Aktualisierung für besonders wichtige Parameter können in Tasks / Ablaufteilen bei einer kurzen Periodizität ausgeführt werden, bspw. als 1ms-Tasks oder 2ms-Tasks. Es können auch deutlich kürzere Wiederholungstakte vorgesehen sein. Weniger kritische Aufgaben oder Messwert-Aktualisierungen für sich nur träge ändernde physikalische Größen können bei einer deutlich längeren Periodizität ausgeführt werden, bspw. als 8ms-Tasks, 128ms-Tasks oder 1024ms-Tasks oder Ablaufteile. System-critical tasks or the measurement value update for particularly important parameters can be executed in tasks / expiration parts with a short periodicity, for example as 1ms tasks or 2ms tasks. It can also be provided significantly shorter repetition. Less critical tasks or measured value updates for only sluggishly changing physical sizes can be significant at one longer periodicity, for example as 8ms tasks, 128ms tasks or 1024ms tasks or expiration parts.

Die durch Events, insbesondere durch die Erreichung von vorbestimmten Kurbelwinkelpositionen, ausgelösten Tasks haben in der Regel die höchsten Prioritäten in der Steuerungssoftware für Fahrzeuge. Sie sind häufig für das Motor-Management erforderlich und umfassen beispielsweise Steueraufgaben für das Kraftstoff-Fördersystem und die Kraftstoffinjektion. The tasks triggered by events, in particular by the achievement of predetermined crank angle positions, usually have the highest priorities in the control software for vehicles. They are often required for engine management and include, for example, control tasks for the fuel delivery system and fuel injection.

Durch die Klassifizierungsregeln werden Ablaufteile in der Alt-Steuerungssoftware aufgefunden, die Produzent und Konsument eines zwischen ihnen ausgetauschten Datenelementes sind, wobei die Kommunikation zwischen Produzent und Konsument asynchron erfolgt und wobei Produzent und Konsument eine deutlich unterschiedliche Ausführungscharakteristik im Single-Core Ausführungsplan haben. Derart miteinander kommunikativ verbundene Ablaufteile kommen bei Einhaltung der für Fahrzeug-Steuerungssoftware gültigen Entwicklungsvorgaben nur in Programmstrukturen vor, die ein zeitunkritisches Datenflussprofil aufweisen, also beispielsweise außerhalb von geschlossenen Regelkreisen oder direkten Verkettungen von Steueranweisungen. Demzufolge ist bei solchen Ablaufteilen zu erwarten, dass eine Transformierung des zugehörigen Datenflusses unter Veränderung des Zeitrangs eines Datenelementes, das durch einen Konsumenten für die weitere Verarbeitung eingelesen wird, mit hoher Wahrscheinlichkeit ohne negative Auswirkung auf die Robustheit oder das äußere Steuerungsergebnis der Software, sodass eine Parallelisierung dieser Ablaufteile zur Effizienzsteigerung ausgenutzt werden kann. Dies gilt umso mehr, wenn der Produzenten-Ablaufteil bei einer sehr hohen Ausführungsfrequenz, also beispielsweise bei Intervallen von 10ms oder weniger ausgeführt wird. By the classification rules, expiration parts are found in the legacy control software, the producer and consumer of a data element exchanged between them, whereby the communication between producer and consumer is asynchronous and where producer and consumer have a distinctly different execution characteristic in the single-core execution plan. If the development specifications valid for vehicle control software are adhered to, communication components that are communicatively connected to one another only occur in program structures which have a non-time-critical data flow profile, for example, outside of closed control loops or direct links of control statements. Accordingly, in such schedules, it is likely that transforming the associated data flow by changing the seniority of a data item read by a consumer for further processing is highly likely to have no adverse effect on the robustness or external control result of the software Parallelization of these drain parts can be exploited to increase efficiency. This is even more the case if the producer expiration part is executed at a very high execution frequency, ie at intervals of 10 ms or less.

Die Erfindung ist in den Zeichnungen beispielsweise und schematisch dargestellt. Es zeigen: The invention is illustrated by way of example and schematically in the drawings. Show it:

1: Eine Schemadarstellung der Portierung einer Alt-Steuerungssoftware auf ein Multi-Core Fahrzeugsteuergerät; 1 : A schematic representation of the porting of legacy control software to a multi-core vehicle controller;

2: Beispiele von Tasks mit enthaltenen Ablaufteilen, Formen von Auslösern (Triggern) und einer Ausführungs-Rangfolge; 2 : Examples of tasks with contained expiration parts, forms of triggers, and an execution order;

3: Schematische Darstellungen eines Kontrollflusses und einen Datenflusses für die in 2 dargestellten Tasks; 3 : Schematic representations of a control flow and a data flow for the in 2 presented tasks;

4 u. 5: Ausführungspläne für die Verarbeitung der Alt-Steuerungssoftware auf einem Single-Core und einem Multi-Core Steuergerät; 4 u. 5 : Execution plans for processing legacy control software on a single-core and a multi-core controller;

6: Einen Datenfluss zwischen zwei Tasks mit unterschiedlichen Formen von Auslösern, 6 : A data flow between two tasks with different types of triggers

7 u. 8: Beispiele für die Klassifizierung von schwachen Vorrang-Beschränkungen. 7 u. 8th : Examples of the classification of weak priority constraints.

Die Erfindung betrifft ein Verfahren zur parallelisierten Ausführung von Alt-Steuerungssoftware (100), die für ein Steuergerät (102) mit einem Einzel-Rechenkern (C0) entwickelt ist, auf einem Fahrzeugsteuergerät (103) mit mindestens zwei Rechenkernen (C1, C2, C3, C4), welches in 1 illustriert ist. Die Alt-Steuerungssoftware (100) wird unter Erstellung eines neuen Ausführungsplans (105) (Multi-Core Schedule) für die Ausführung auf dem Multi-Core Fahrzeugsteuergerät (103) portiert. Ggfs. können aus dem Stand der Technik bekannte Adaptionen des Quellcodes vorgenommen werden, um eine parallelisierte Steuerungssoftware (101) zu erzeugen. Hierzu können insbesondere die Partitionierung der Alt-Steuerungssoftware (100) unter Separierung der enthaltenen Tasks und Ablaufteile gehören. The invention relates to a method for the parallelized execution of legacy control software ( 100 ) required for a control unit ( 102 ) is developed with a single arithmetic-logic core (C0) on a vehicle control unit ( 103 ) with at least two computing cores (C1, C2, C3, C4), which in 1 is illustrated. The old control software ( 100 ) will be prepared with a new implementation plan ( 105 ) (Multi-Core Schedule) for execution on the multi-core vehicle control unit ( 103 ) ported. If necessary. For example, adaptations of the source code known from the prior art may be performed in order to provide parallelized control software ( 101 ) to create. In particular, the partitioning of the old control software ( 100 ) under separation of the included tasks and expiration parts.

1 zeigt das Portierungsverfahren in einer Schemadarstellung. Das Verfahren kann insbesondere verwendet werden, um Alt-Steuerungssoftware, die nach einem AUTOSAR-Standard für ein Single-Core Steuergerät (102) entwickelt worden ist, auf dem Multi-Core Fahrzeugsteuergerät (103) auszuführen. Derartige Alt-Steuerungssoftware eignet sich besonders gut für die Portierung, da in den AUTOSAR-Standards strikte Vorgaben für den Datenaustausch, d.h. die Kommunikation, zwischen Tasks und den in den Tasks enthaltenen Ablaufteilen vorgegeben sind. Der AUTOSAR Virtual Function Bus (VFB) kann für das Auffinden von Vorrechts-Beschränkungen und die Anwendung der Klassifizierungsregeln (109) in automatisierter Weise analysiert werden, um Kommunikations-Ports, Sender-Receiver-Datenaustausch sowie zugeordnete persistente Speichervariablen zu ermitteln. Die Klassifizierungsregeln werten bevorzugt formale Strukturen in der Alt-Steuerungssoftware aus. Dementsprechend muss keine Kenntnis darüber bestehen, welchen physikalischen oder logischen Gehalt eine persistente Speichervariable hat, für die eine Vorrang-Beschränkung ermittelt und ggfs. als schwach identifiziert wird. Dies ermöglicht eine vollautomatisierte Durchführung des Portierungsverfahrens für unterschiedlichste Formen von Alt-Steuerungssoftware (100). 1 shows the porting procedure in a schematic view. The method can be used, in particular, for legacy control software that is based on an AUTOSAR standard for a single-core control unit ( 102 ) has been developed on the multi-core vehicle control unit ( 103 ). Such legacy control software is particularly well suited for porting, since in the AUTOSAR standards strict specifications for the data exchange, ie the communication, between tasks and the scheduling parts contained in the tasks are specified. The AUTOSAR Virtual Function Bus (VFB) can be used for finding privilege restrictions and applying the classification rules ( 109 ) are analyzed in an automated manner to determine communication ports, transceiver data exchange, and associated persistent storage variables. The classification rules preferably evaluate formal structures in the legacy control software. Accordingly, there is no need to know what physical or logical content a persistent storage variable has, for which a priority constraint is determined and, if so, as is weakly identified. This enables a fully automated implementation of the porting method for a wide variety of forms of legacy control software ( 100 ).

Im Weiteren wird davon ausgegangen, dass es sich bei der Alt-Steuerungssoftware (100) um eine AUTOSAR-konforme Anwendung mit einer Mehrzahl von Tasks (T-1, T-8, T-Cr) handelt, von denen einige bei einer jeweils vorbestimmten Periodizität (bspw. P = 1ms, P = 8ms) ausgeführt werden. Andere Tasks (T-Cr) können Event-basiert, insbesondere in Abhängigkeit von bestimmten Kurbelwinkelpositionen des Fahrzeugverbrennungsmotors gestartet werden. Für die Tasks ist eine Ausführungs-Rangfolge (106) in Form von zugeordneten Prioritätswerten und/oder Ranglisten festgelegt. Furthermore, it is assumed that the old control software ( 100 ) is an AUTOSAR-compliant application with a plurality of tasks (T-1, T-8, T-Cr), some of which are executed at a respective predetermined periodicity (eg P = 1ms, P = 8ms). Other tasks (T-Cr) can be started on an event-based basis, in particular as a function of specific crank angle positions of the vehicle engine. For the tasks, an execution ranking ( 106 ) in the form of assigned priority values and / or leaderboards.

Eine Parallelisierung von Ablaufteilen in der AUTOSAR-Alt-Steuerungssoftware kann besonders für Vorrang-Beschränkungen in Bezug auf asynchrone Kommunikationsvorgänge durchgeführt werden. Hierzu zählt insbesondere eine Sender-Receiver-Kommunikation, wenn diese das Ablegen eines Datenelements zu einem Schreib-Zeitpunkt durch den Sender (Produzenten-Ablaufteil) in einer gemeinsam benutzten persistenten Speichervariable (Va, Vb) vorsieht und dieses Datenelement von dem Empfänger (Konsumenten-Ablaufteil) zu einem davon abweichenden Lese-Zeitpunkt ausgelesen wird, wobei der Lese-Zeitpunkt relativ zum Schreib-Zeitpunkt mit einer nicht oder variierend festgelegten Zeitverzögerung eintritt. Mit anderen Worten wird eine Parallelisierung von Ablaufteilen für solche Vorrang-Beschränkungen vorgesehen, bei denen ein Lese-Zeitpunkt asynchron auf einen Schreib-Zeitpunkt folgt. Parallelization of expiration parts in the old AUTOSAR control software can be performed especially for priority constraints on asynchronous communication operations. In particular, this includes a transmitter-receiver communication, if it provides for the storage of a data element at a write time by the transmitter (producer expiry part) in a shared persistent storage variable (Va, Vb) and this data element is received from the receiver (consumer). Expiration part) is read out at a different reading time, wherein the reading time occurs relative to the writing time with a non or varying specified time delay. In other words, a parallelization of expiration parts is provided for such precedence restrictions in which a read time asynchronously follows a write time.

Eine Parallelisierung eines solchen Produzenten-Ablaufteils mit einem oder mehreren Konsumenten-Ablaufteilen sieht vor, dass diese auf zwei unterschiedlichen Rechenkernen (C1, C2, C3) zeitparallel ausgeführt werden – und nicht, wie im Datenfluss auf dem Single-Core Steuerungsgerät vorgesehen, nacheinander. Durch die zeitliche Parallelisierung wird der Konsumenten-Ablaufteil also zu einem zeitlich nach vorn verlagerten Startpunkt aktiviert. Gleichzeitig wird der Zeitrang der von dem Konsumenten-Ablaufteil gelesenen Daten derart transformiert, dass nicht der aktuell von der momentanen Instanz des Produzenten-Ablaufteils erzeugte Wert, sondern ein zwischengespeicherter Wert der letzten vorhergehenden Instanz des Produzenten-Ablaufteils verwendet wird. Um dies zu ermöglichen wird die gemeinsame persistente Speichervariable in einer getrennt verwalteten Datenbasis (108) gespeichert, die einen parallelen lesenden und schreibenden Zugriff zulässt. Der Zugriff auf die persistente Speichervariable erfolgt dabei bevorzugt wartezeitfrei, sodass keine Schreib- oder Leseverzögerungen bei den parallelisierten Ablaufteilen entstehen. Ferner wird eine Parallelisierung nur für solche Ablaufteile durchgeführt, für die nach den Klassifizierungsregeln (109) eine schwache Vorrang-Beschränkung identifiziert wurde. A parallelization of such a producer expiration part with one or more consumer expiration parts provides that they are executed in parallel on two different cores (C1, C2, C3) - and not, as provided in the data flow on the single-core control device, one after the other. Due to the temporal parallelization of the consumer expiration part is thus activated to a temporally forward shifted starting point. At the same time, the seniority of the data read by the consumer expiration part is transformed such that not the value currently generated by the current instance of the producer expiration part but a cached value of the last preceding instance of the producer expiration part is used. To enable this, the shared persistent storage variable is stored in a separately managed database ( 108 ), which allows parallel read and write access. The access to the persistent storage variable is preferably waiting time-free, so that no write or read delays arise in the parallelized expiration parts. Furthermore, a parallelization is only carried out for those expiration parts for which, according to the classification rules ( 109 ) a weak priority restriction has been identified.

2 zeigt beispielhaft eine Alt-Steuerungssoftware (100) mit drei Tasks. Task (T-1) wird bei einer Periodizität (P) von 1ms, also sehr häufig ausgeführt. Dieser Task beinhaltet eine Mehrzahl von Ablaufteilen (R_11, R_12, R_13), in denen verschiedene Instruktionen enthalten sind, die gemäß der Aufrufreihenfolge (107) auf einem Single-Core Steuergerät sequenziell abgearbeitet wurden. 2 shows by way of example a legacy control software ( 100 ) with three tasks. Task (T-1) is executed at a periodicity (P) of 1 ms, ie very frequently. This task includes a plurality of expiration parts (R_11, R_12, R_13) containing various instructions that are executed according to the calling order ( 107 ) were processed sequentially on a single-core control unit.

Der Task (T-8) enthält ebenfalls eine Mehrzahl von Ablaufteilen (R_81, R_82, R_83) mit einer vorgegebenen Aufrufreihenfolge und wird einer Periodizität (P) von 8ms ausgeführt. The task (T-8) also contains a plurality of expiration parts (R_81, R_82, R_83) with a predetermined calling order and is executed at a periodicity (P) of 8 ms.

Der Task (T-Cr) beinhaltet Ablaufteile (R_Cr1, R_Cr2, R_Cr3) und wird Event-basiert, hier bei Auftreten von bestimmten Kurbelwinkelpositionen ausgeführt. The task (T-Cr) includes expiration parts (R_Cr1, R_Cr2, R_Cr3) and is event-based, executed here when certain crank angle positions occur.

Den Tasks (T-1, T-8, T-Cr) sind Prioritäten (Prio) zugeordnet, aus denen sich die Ausführungs-Rangfolge (106) und/oder eine Präemptiv-Rangfolge für die Ausführung auf dem Single-Core Steuergerät ergibt. The tasks (T-1, T-8, T-Cr) are assigned priorities (prio) that make up the execution order ( 106 ) and / or a preemptive ranking for execution on the single-core controller.

Durch eine Analyse der Ausführungs-Rangfolge (106) sowie der Aufrufreihenfolge (107) kann der reguläre Kontrollfluss (vgl. 3, links) ermittelt werden, aus der sich die (Makro- und Mikro-)Sequenzierung der Verarbeitung der einzelnen Ablaufteile (R_11 bis R_83) ergibt. Through an analysis of the execution order ( 106 ) as well as the calling order ( 107 ), the regular control flow (cf. 3 , left), from which the (macro- and micro-) sequencing of the processing of the individual expiration parts (R_11 to R_83) results.

Durch eine Analyse der im Quellcode definierten Kommunikation zwischen den Ablaufteilen und/oder der vorgesehenen schreibenden und lesenden Zugriffe aus den Ablaufteilen (R_11 bis R_83) auf gemeinsame persistente Speichervariablen (Va, Vb) kann der Datenfluss zwischen den Ablaufteilen ermittelt werden, der hier beispielhaft in 3, rechts dargestellt ist. By analyzing the communication defined in the source code between the expiration parts and / or the envisaged write and read accesses from the expiration parts (R_11 to R_83) to shared persistent storage variables (Va, Vb), the data flow between the expiration parts can be ascertained 3 , shown on the right.

Ablaufteil (R_11) in Task (T-1) ermittelt einen Messwert (M1) und schreibt diesen bei jeder Ausführung in die gemeinsame persistente Speichervariable (Va). Somit ist der Ablaufteil (R_11) ein Produzent in Bezug auf die gemeinsame Speichervariable (Va). Die Ablaufteile (R_12 und R_81) führen einen lesenden Zugriff auf die gemeinsame persistente Speichervariable (Va) aus, um unter Verwendung des darin abgelegten Datenwertes die Steuerwerte (A, B) zu erzeugen. Sie sind Konsumenten in Bezug auf die Speichervariable (Va). Expiration part (R_11) in task (T-1) determines a measured value (M1) and writes it to the common persistent storage variable (Va) each time it is executed. Thus, the expiration part (R_11) is a producer with respect to the common storage variable (Va). The expiration parts (R_12 and R_81) have a read access to the common persistent storage variable (Va) to generate the control values (A, B) using the data stored therein. They are consumers in terms of the memory variable (Va).

Die Ablaufvariable (R_82) erfasst einen weiteren Messwert (M2) und legt diesen in einer weiteren gemeinsamen persistenten Speichervariable (Vb) ab. Auf diese wird durch den Ablaufteil (R_83) lesend zugegriffen, um einen weiteren Steuerwert (D) zu erzeugen. Auch der im Event-basiert ausgeführten Task (T-Cr) enthaltene Ablaufteil (R_Cr1) greift auf diese persistente Speichervariable (Vb) zu, um einen weiteren Steuerwert (E) zu erzeugen. The process variable (R_82) acquires another measured value (M2) and stores it in another common persistent memory variable (Vb). These are read-accessed by the expiration part (R_83) to generate another control value (D). The expiration part (R_Cr1) contained in the event-based executed task (T-Cr) also accesses this persistent storage variable (Vb) to generate another control value (E).

Aus dem rechten Teil von 3 ist ersichtlich, dass zwischen den dort auf eine gemeinsame persistente Speichervariable (Va, Vb) schreibend und lesend zugreifenden Ablaufteilen jeweils Vorrang-Beschränkungen (PC1, PC2, PC3, PC4) bestehen, die hier durch die mit Pfeilen dargestellte Datenflussrichtung (von-Sensor-zu-Aktuator-Sequenzierung) dargestellt sind. From the right part of 3 It can be seen that there are priority restrictions (PC1, PC2, PC3, PC4) between the operating parts accessing a shared persistent storage variable (Va, Vb) and writing there, which are represented here by the data flow direction (from sensor to-actuator sequencing) are shown.

Eine parallelisierte Ausführung von solchen über Vorrang-Beschränkungen miteinander verknüpften Ablaufteilen kann potenziell zu unbestimmten Systemzuständen führen. Dies ist beispielsweise dann zu erwarten, wenn Datenelemente in einem Konsumenten-Ablaufteil in konditionalen Anweisungen (beispielsweise if- oder while-Schleifen) oder innerhalb von geschlossenen Regelkreisen verwendet werden und zwischen Produzent und Konsument ein zeitkritisches Datenflussprofil exisitert. Es sollten also nur solche Ablaufteile parallelisiert werden, bei denen auch bei einer Veränderung des Datenflusses keine relevanten Beeinträchtigungen in Hinsicht auf das Steuerungsergebnis zu erwarten ist, bei denen folglich keine Anzeichen für eine Zeitkritikalität bestehen. A parallelized execution of such expiration parts linked together by precedence restrictions can potentially lead to indefinite system states. This is to be expected, for example, when data elements in a consumer expiration part are used in conditional statements (for example if or while loops) or within closed control loops, and a time-critical data flow profile exists between producer and consumer. So only those expiration parts should be parallelized, in which even with a change in the data flow, no relevant impairment is to be expected in terms of the control result, which consequently have no signs of time criticality.

Dies wird erreicht, indem die ermittelten Vorrang-Beschränkungen (PC1 bis PC4) gemäß vorbestimmten Klassifizierungsregeln (109) in starke und schwache Vorrang-Beschränkungen unterteilt werden. This is achieved by determining the ascertained priority restrictions (PC1 to PC4) according to predetermined classification rules ( 109 ) are divided into strong and weak priority constraints.

Die Klassifizierungsregeln können als automatisierbare Anweisungen in Form von Software hinterlegt und durch ein automatisiertes Portierungsprogramm ausgeführt werden, welches die Alt-Steuerungssoftware (100) übernimmt und eine parallelisierte Steuerungssoftware (101) mit einem neuerstellten Multi-Core Ausführungsplan (105) ausgibt. The classification rules can be stored as automatable instructions in the form of software and executed by an automated porting program, which the Alt-control software ( 100 ) and a parallelized control software ( 101 ) with a newly created multi-core execution plan ( 105 ).

4 und 5 zeigen einen Single-Core Ausführungsplan (104) und einen Multi-Core Ausführungsplan (105) in einer beispielhaften Vergleichsdarstellung. 4 and 5 show a single-core execution plan ( 104 ) and a multi-core execution plan ( 105 ) in an exemplary comparison representation.

In dem in 4 dargestellten Single-Core-Ablaufplan (104) werden alle Tasks (T-1, T-8 und T-Cr) gemäß der vorgegebenen Ausführungs-Rangfolge (106) (Prioritäten) sequenziell auf dem Rechenkern (C0) ausgeführt. Wenn innerhalb eines Grundtaktes (hier beispielsweise bei t = 0 und t = 8) zwei Tasks (T-1, T-8) konkurrierend zur Ausführung anstehen, so wird der höher priorisierte Task (T-1, Priorität: 0) zuerst ausgeführt. Nach dessen vollständiger Abarbeitung folgt dann die Verarbeitung des niedriger priorisierten Tasks (T-8, Priorität: --). In the in 4 single core flowchart ( 104 ) all tasks (T-1, T-8 and T-Cr) are executed according to the given execution order ( 106 ) (Priorities) are executed sequentially on the arithmetic kernel (C0). If two tasks (T-1, T-8) are competing for execution within one basic clock (here, for example, at t = 0 and t = 8), the higher-priority task (T-1, priority: 0) is executed first. After its complete processing, the processing of the lower-priority task (T-8, priority: -) then follows.

Die Event-basierten Tasks (T-Cr) werden in der Regel sofort nach dem Auftreten eines auslösenden Ereignisses (Cr-Event) gestartet. Wenn eine Präemption vorgesehen ist (s.o.), kann ein hoch priorisierter Task die Ausführung eines niedriger priorisierten Tasks ggf. unterbrechen (hier nicht dargestellt). The event-based tasks (T-Cr) are usually started immediately after the occurrence of a triggering event (Cr-Event). If a preemption is provided (see above), a high priority task may interrupt the execution of a lower priority task (not shown here).

In dem in 5 dargestellten Multi-Core-Ausführungsplan (105) werden alle Ablaufteile innerhalb der Tasks (T-1, T-8, T-Cr) so weit wie möglich parallelisiert, d.h., auf unterschiedliche Rechenkerne (C1, C2, C3, C4) verteilt und zeitparallel ausgeführt. Eine Parallelisierung erfolgt ohne weiteres für solche Ablaufteile, zwischen denen keine Vorrang-Beschränkungen vorliegen, d.h., die untereinander keine Datenelemente austauschen und somit im Wesentlichen voneinander unabhängige Verarbeitungen ausführen. Solche Ablaufteile (R_11, R_12 und R_81, R_82), zwischen denen starke Vorrang-Beschränkungen (PC1, PC3) identifiziert wurden, werden sequentiell und in der Regel auf dem selben Rechenkern (C1, C3) ausgeführt. In the in 5 illustrated multi-core execution plan ( 105 ), all expiration parts within the tasks (T-1, T-8, T-Cr) are parallelized as far as possible, ie distributed to different calculation cores (C1, C2, C3, C4) and executed in parallel. A parallelization readily takes place for those expiration parts between which there are no priority restrictions, that is to say, which do not exchange any data elements among one another and thus essentially execute independent processing operations. Such expiration portions (R_11, R_12 and R_81, R_82) between which strong priority constraints (PC1, PC3) have been identified are executed sequentially and typically on the same arithmetic unit (C1, C3).

Ablaufteile (R_11, R_81), zwischen denen eine schwache Vorrang-Beschränkung (PC2) identifiziert wurde, werden ebenfalls parallelisiert ausgeführt, wobei zwischen diesen Ablaufteilen (R_11, R_81) bzw. deren Instanzen ein adaptierter Datenfluss (X) vorgesehen wird. Expiration parts (R_11, R_81), between which a weak priority restriction (PC2) has been identified, are also executed in parallel, whereby an adapted data flow (X) is provided between these expiration parts (R_11, R_81) or their instances.

6 zeigt einen Spezialfall eines Datenflusses zwischen zwei Ablaufteilen (R_11, R_Cr1) aus zwei Tasks (T-1, T-Cr) mit unterschiedlichen Formen von Auslösern (Perioden-Trigger vs. Event-Trigger). Auch hier handelt es sich um asynchrone Kommunikation. In diesem Fall produziert der periodisch ausgeführte Ablaufteil (R_11) bei jeder Ausführung ein Datenelement, das in einer gemeinsamen persistenten Speichervariablen (Vx) abgelegt und von dem Event-basiert ausgeführten Ablaufteil (R_Cr1) konsumiert wird. Andererseits produziert der Ablaufteil (R_Cr1) ein anderes Datenelement, das in einer Speichervariablen (Vy) abgelegt und von dem Ablaufteil (R_11) konsumiert wird. Zwischen diesen Ablaufteilen (R_11 und R_Cr1) besteht somit eine gegenseitige Abhängigkeit in Form von in beiden Richtungen vorliegenden Vorrang-Beschränkungen (PCx, PCy). Durch das erfindungsgemäße Portierungsverfahren können auch solche gegenseitigen Vorrang-Beschränkungen zwischen zwei Ablaufteilen, die durch unterschiedliche Formen von Auslösern gestartet werden, parallelisiert werden, und es kann auf eine Präemption zwischen diesen Ablaufteilen verzichtet werden – vorausgesetzt, dass die Vorrang-Beschränkungen (PCx, PCy) als schwach klassifiziert werden. 6 shows a special case of a data flow between two expiration parts (R_11, R_Cr1) from two tasks (T-1, T-Cr) with different forms of triggers (period trigger vs. event trigger). Again, this is asynchronous communication. In this case, the periodically executed expiration item produces (R_11) a data item stored in a shared persistent storage variable (Vx) and consumed by the event-based expiration portion (R_Cr1) on each execution. On the other hand, the expiration part (R_Cr1) produces another data item which is stored in a storage variable (Vy) and consumed by the expiration part (R_11). There is thus a mutual dependence between these expiration parts (R_11 and R_Cr1) in the form of bidirectional restrictions (PCx, PCy). Through the porting method according to the invention, also such mutual priority restrictions between two expiration parts started by different forms of triggers can be parallelized, and preemption between these expiration parts can be dispensed with - provided that the precedence restrictions (PCx, PCy ) are classified as weak.

7 und 8 verdeutlichen zwei bevorzugte Klassifizierungsregeln, zur Bewertung einer Vorrang-Beschränkung als schwach. In 7 wird gemäß dem Single-Core-Ausführungsplan ein Produzenten-Ablaufteil (R_11) bei einer hohen Frequenz, hier beispielsweise einer Periodizität (P = 1ms) ausgeführt, wobei jedes Mal ein schreibender Zugriff auf eine gemeinsame persistente Speichervariable erfolgt. Ein konsumierender Ablaufteil (R_51) wird deutliche seltener ausgeführt, hier bei einer Periodizität (P = 5ms). Im Single-Core-Ausführungsplan würde die Ausführung des Ablaufteils (R_51) sequentiell nach der Ausführung des Ablaufteils (R_11) erfolgen, um den Von-Sensor-zu-Aktuator-Datenfluss einzuhalten. Die zwischen diesen Ablaufteilen (R_11, R_51) bestehende Vorrang-Beschränkung wird als schwach klassifiziert, da die Periodizität des Produzenten-Ablaufteils (R_11) ein X-faches, hier ein 5-faches, der Periodizität des Konsumenten-Ablaufteils (R_51) ist. Die Klassifizierungsregel kann allgemein so formuliert werden, dass eine Vorrang-Beschränkung zwischen zwei Ablaufteilen als schwach klassifiziert wird, wenn die Periodizität (P) des einen Ablaufteils mehr als das X-fache der Periodizität (P) des anderen Ablaufteils beträgt, wobei X ein vorbestimmter Grenzwert ist. Der Grenzwert X kann bevorzugt ein Faktor 3 oder größer sein. 7 and 8th clarify two preferred classification rules to evaluate a priority constraint as weak. In 7 According to the single-core execution plan, a producer expiration part (R_11) is executed at a high frequency, here for example a periodicity (P = 1 ms), whereby a write access to a shared persistent storage variable takes place each time. A consuming expiration part (R_51) is significantly less frequently executed, here with a periodicity (P = 5ms). In the single-core execution plan, the execution of the expiration portion (R_51) would occur sequentially after execution of the expiration portion (R_11) to maintain the from sensor to actuator data flow. The priority restriction existing between these expiration parts (R_11, R_51) is classified as weak because the periodicity of the producer expiration part (R_11) is an X-fold, here a 5 times, the periodicity of the consumer expiration part (R_51). The classification rule may be generally formulated such that a priority constraint between two expiration parts is classified as weak if the periodicity (P) of one expiration part is more than X times the periodicity (P) of the other expiration part, where X is a predetermined one Limit is. The threshold value X may preferably be a factor of 3 or greater.

Die stark unterschiedliche Häufigkeit der Ausführung der beiden zu der schwachen Vorrangbeschränkung gehörenden Ablaufteile stellt ein starkes Indiz dafür dar, dass zwischen den zugehörigen Steuerverfahren kein kritischer Zusammenhang besteht, so dass eine Transformation des Datenflusses zwischen diesen Ablaufteilen mit hoher Wahrscheinlichkeit keinen Einfluss auf die Robustheit und das äußere Steuerungsergebnis hat. The very different frequency of execution of the two expiration parts belonging to the weak priority restriction represents a strong indication that there is no critical connection between the associated control methods, so that a transformation of the data flow between these expiration parts with high probability has no influence on the robustness and the has external control result.

8 illustriert eine weitere bevorzugte Klassifizierungsregel. 8 zeigt zeigt einen Single-Core-Ausführungsplan für zwei Ablaufvariablen (R_11, R_Cr), die durch verschiedene Formen von Auslösern (Perioden-Trigger versus Event-Trigger) gestartet werden, in Analogie zu 6 und über einen etwas längeren Zeitbereich. Es ist ersichtlich, dass die Ausführung des Ablaufteils (R_Cr) vollkommen unabhängig von dem zeitlichen Auftreten des Ablaufteils (R_11) ist. Auch dies stellt ein Indiz dafür dar, dass zwischen diesen Ablaufteilen keine kritischen Kommunikationen erfolgen. Ferner wird der Ablaufteil (R_11) mit einer hohen Frequenz, hier mit einer Periodizität von (P = 1ms) ausgeführt. 8th illustrates another preferred classification rule. 8th shows a single-core execution plan for two process variables (R_11, R_Cr), which are started by different forms of triggers (period trigger versus event trigger), in analogy to 6 and over a slightly longer time frame. It can be seen that the execution of the expiration part (R_Cr) is completely independent of the timing of the expiration part (R_11). Again, this is an indication that there are no critical communications between these expiration parts. Furthermore, the expiration part (R_11) is executed at a high frequency, here with a periodicity of (P = 1 ms).

Die zugehörige Klassifizierungsregel kann allgemein so formuliert werden, dass eine Vorrang-Beschränkung (PCx, PCy) zwischen zwei Ablaufteilen als schwach klassifiziert wird, wenn die Ablaufteile (R_11, R_Cr) durch unterschiedliche Formen von Auslösern (Perioden-Trigger versus Event-Trigger) gestartet werden. The associated classification rule may be generally formulated such that a precedence constraint (PCx, PCy) between two expiration parts is classified as weak if the expiration parts (R_11, R_Cr) are started by different forms of triggers (period trigger versus event trigger) become.

Eine weitere bevorzugte Klassifizierungsregel sieht vor, dass eine Vorrang-Beschränkung zwischen zwei Ablaufteilen als schwach klassifiziert wird, wenn die Periodizität des einen Tasks nicht ein natürliches Vielfaches der Periodizität des anderen Tasks ist. Ein Beispiel hierfür wäre, wenn ein erster Task alle 20ms und ein zweiter Task alle 1024ms ausgeführt wird oder wenn die Periodizitäten 20ms gegenüber 48ms betragen. Solche Tasks bzw. die darin enthaltenen Ablaufteile können untereinander kein synchronisiertes Steuerverhalten aufweisen, so dass eine parallelisierte Ausführung (die ohnehin nur vergleichsweise selten in Frage kommen wird, nämlich bei jedem Auftreten eines kleinsten gemeinsamen Vielfachen der Periodizitäten), keine negativen Auswirkungen haben wird. Another preferred classification rule is that a precedence constraint between two expiration parts is classified as weak if the periodicity of one task is not a natural multiple of the periodicity of the other task. An example of this would be if a first task is executed every 20ms and a second task every 1024ms, or when the periodicities are 20ms versus 48ms. Such tasks or the expiration parts contained therein can not have a synchronized control behavior among each other, so that a parallelized execution (which is only comparatively rare anyway, namely with each occurrence of a least common multiple of the periodicities), will not have any negative effects.

Die technische Umsetzung des erfindungsgemäßen Verfahrens kann in unterschiedlicher Weise erfolgen. Die Alt-Steuerungssoftware kann bereits eine eindeutige Definition von Tasks, darin enthaltenen Ablaufteilen, Ausführungsrangfolgen sowie Aufrufreihenfolgen, enthalten. Alternativ oder zusätzlich können diese Merkmale durch eine Analyse und ein eventuelles Reverse Modelling der Alt-Steuerungssoftware ermittelt werden. Dabei kann insbesondere vorgesehen sein, dass die Alt-Steuerungssoftware partitioniert wird, wobei die enthaltenen Tasks und Ablaufteile separiert und für jeden Ablaufteil alle schreibenden und lesenden Zugriffe auf persistente Speichervariablen ermittelt werden. The technical implementation of the method according to the invention can be done in different ways. The legacy control software may already contain a clear definition of tasks, their expiration parts, execution orders, and invocation orders. Alternatively or additionally, these features may be determined by analysis and possibly reverse modeling of the legacy control software. In this case, provision can be made, in particular, for the legacy control software to be partitioned, whereby the tasks and expiration parts contained are separated and, for each expiration part, all write and read accesses to persistent storage variables are determined.

Eine Vorrang-Beschränkung für den Zugriff auf eine gemeinsame persistente Speichervariable zwischen zwei Ablaufteilen kann insbesondere dann ermittelt werden, wenn ein schreibender Zugriff in der Alt-Steuerungssoftware von einem Produzenten-Ablaufteil vor einem lesenden Zugriff durch einen Konsumenten-Ablaufteil zu erfolgen hat. A priority restriction for the access to a shared persistent storage variable between two expiration parts can be determined, in particular, if a write access in the legacy control software has to be made by a producer expiration part before a read access by a consumer expiration part.

In der Praxis sind verschiedene Möglichkeiten für die Schaffung einer separat verwalteten Datenbasis (108) bekannt. Eine solche Datenbasis kann insbesondere in einem Arbeitsspeicher (RAM) angelegt und verwaltet werden, der von allen beteiligten Rechenkernen (C1–C4) zugreifbar ist. In practice there are different possibilities for creating a separately managed database ( 108 ) known. In particular, such a database can be created and managed in a random access memory (RAM) that is accessible by all participating processor cores (C1-C4).

Ein wartezeitfreier Zugriff auf eine dort gespeicherte persistente Speichervariable kann bevorzugt dadurch erreicht werden, dass für jede Speichervariable ein Haupt-Speicherwert und mindestens ein Puffer-Speicherwert angelegt werden, wobei ein Puffer-Speicherwert lesend zugreifbar ist, während ein Schreibzugriff auf den Haupt-Speicherwert erfolgt. In einem solchen Fall kann also ein Konsumenten-Ablaufteil, der auf einem ersten Rechenkern (C1) ausgeführt wird, lesend auf einen letzten Wert in dem Puffer-Speicherwert zugreifen, während gleichzeitig ein parallelisiert ausgeführter Produzenten-Ablaufteil einen neuen aktualisierten Wert in den Haupt-Speicherwert schreibt. Der Inhalt des Puffer-Speicherwerts kann bevorzugt nach jedem Schreibzugriff auf den aktualisierten Wert des zugehörigen Haupt-Speicherwerts angeglichen werden. Eine Angleichung kann in beliebiger Weise erfolgen, beispielweise durch Kopieren von Zellinhalten und/oder durch Verändern von Speicheradressierungen / Zeigern. A wait time-free access to a persistent memory variable stored there can preferably be achieved by applying for each memory variable a main memory value and at least one buffer memory value, wherein a buffer memory value is read-accessable while a write access to the main memory value takes place , Thus, in such a case, a consumer expiration portion executing on a first arithmetic core (C1) may read-access a last value in the buffer storage value, while at the same time a parallely executed producer expiration portion stores a new updated value in the main buffer. Memory value writes. The content of the buffer memory value may preferably be adjusted after each write access to the updated value of the associated main memory value. Alignment can be done in any way, for example by copying cell contents and / or changing memory addresses / pointers.

Alternativ oder zusätzlich kann die getrennt verwaltete Datenbasis (108) für eine persistente Speichervariable eine einzige Speicherzelle mit atomarem Zugriff vorsehen. Mit einer einzelnen Speicherzelle kann eine einzelne physische Zelle gemeint sein. Zugriffe darauf sind immer atomar, d.h. sie werden vom Prozessor in einem einzigen Taktschritt ausgeführt. Inkonsistenzen durch gleichzeitiges Schreiben und Lesen einer Variablen treten nicht auf. Alternatively or additionally, the separately managed database ( 108 ) provide a single memory cell with atomic access for a persistent storage variable. By a single memory cell may be meant a single physical cell. Accesses are always atomic, ie they are executed by the processor in a single clock step. Inconsistencies due to simultaneous writing and reading of a variable do not occur.

Es gibt jedoch Datentypen, die mehr als eine Speicherzelle belegen (64 Bit Ganzzahl auf 32 Bit Architektur). In diesem Fall kann atomarer Zugriff durch zusätzliche Mechanismen garantiert / geschützt werden. BEZUGSZEICHENLISTE 100 Alt-Steuerungssoftware Legacy control software 101 Parallelisierte Steuerungssoftware Parallelized control software 102 Single-Core Steuergerät Single-Core control unit 103 Multi-Core Steuergerät Multi-Core control unit 104 Ausführungsplan (Single-Core) Schedule (single-Core) 105 Ausführungsplan Schedule (Multi-Core) 106 Ausführungs-Rangfolge Execution order 107 Aufrufreihenfolge Calling order 108 Separat verwaltete Datenbasis Separately managed data base 109 Klassifizierungsregeln Classification rules C... Rechenkern (Processor-)Core I/O Eingabe / Ausgabe Input / Output X Adaptierter Datenfluss Adapted data flow T-1 1ms-Task (periodisch) 1ms-Task (periodical) T-8 8ms-Task (periodisch) 8ms-Task (periodical) T-Cr Cr-Task (Cr-ausgelöst) Cr-Task (Cr triggered) R_i Ablaufteil Runnable PCi Vorrang-Beschränkung Precedence constraint M1 Messwert Measured value M2 Messwert Measured value Va Persistente Speichervariable Persistent storage variable Vb Persistente Speichervariable Persistent storage variable A Steuerwert Control value B Steuerwert Control value D Steuerwert Control value E Steuerwert Control value P Periodizität Periodicity However, there are data types that occupy more than one memory cell (64-bit integer to 32-bit architecture). In this case, atomic access can be guaranteed / protected by additional mechanisms. LIST OF REFERENCE NUMBERS 100 Old-control software Legacy control software 101 Parallelized control software Parallelized control software 102 Single-core control unit Single-core control unit 103 Multi-core control unit Multi-core control unit 104 Execution plan (single-core) Schedule (single-core) 105 execution plan Schedule (Multi-Core) 106 Execution Ranking Execution order 107 Calling sequence Calling order 108 Separately managed database Separately managed data base 109 classification rules Classification rules C ... solver (Processor-) Core I / O Input / output Input / output X Adapted data flow Adapted data flow T-1 1ms task (periodic) 1ms task (periodical) T-8 8ms task (periodic) 8ms task (periodical) T-Cr Cr-Task (Cr-triggered) Cr-Task (Cr-triggered) r_i the end part runnable PCi Precedence constraint Precedence constraint M1 reading Measured value M2 reading Measured value Va Persistent storage variable Persistent storage variable Vb Persistent storage variable Persistent storage variable A control value Control value B control value Control value D control value Control value e control value Control value P periodicity periodicity

Claims (8)

Verfahren zur automatisierten Portierung und Parallelisierung von Alt-Steuerungssoftware (100), die für ein Steuergerät (102) mit einem Einzel-Rechenkern (C0) entwickelt ist, auf ein Fahrzeugsteuergerät (103) mit mindestens zwei Rechenkernen (C1, C2, C3), wobei das Verfahren in einer beliebigen Softwareumgebung ausgeführt wird und zumindest die folgenden Schritte umfasst: – Ermitteln einer Mehrzahl von Tasks (T-1, T-8, T-Cr), wobei von den Tasks (T-1, T-8, T-Cr) einige bei einer jeweils vorbestimmten Periodizität (P) auszuführen sind, und wobei eine Ausführungs-Rangfolge (106) für die Tasks vorgesehen ist, und wobei innerhalb jeden Tasks (T-1, T-8, T-Cr) jeweils ein oder mehrere Ablaufteile (R_i) mit einer vorgegebenen Aufrufreihenfolge (107) vorgesehen sind, – Ermitteln von schreibenden und lesenden Zugriffen auf persistente Speichervariablen (Va, Vb), wobei genau ein Task einen Schreibzugriff (Produzent) und ein weiterer Task einen Lesezugriff (Konsument) ausführt, – Ermittlung, ob eine schwache Vorrang-Beschränkung (PC2, PCx, PCy) besteht, wobei eine Vorrang-Beschränkung als schwach klassifiziert wird, wenn – ein Ablaufteil aus einem Produzenten-Task auf eine gemeinsame Speichervariable (Va, Vb) nur schreibend und ein anderer Ablaufteil aus einem Konsumenten-Task auf die gemeinsame Speichervariable nur lesend zugreift und eine Datenflussabhängigkeit vom schreibenden zum lesenden Ablaufteil besteht, und wenn – die Periodizität (P) des Ablaufteils aus dem Produzenten-Task, mehr als das X-fache der Periodizität (P) des Ablaufteils aus dem Konsumenten-Task, beträgt, wobei X ein vorbestimmter Grenzwert mit dem Wert 3 oder größer ist, ODER – die Periodizität (P) des Ablaufteils aus dem Produzenten-Task nicht ein natürliches Vielfaches der Periodizität (P) des Ablaufteils aus dem Konsumenten-Task ist (P = 5ms vs. P = 1024ms), ODER – die Ablaufteile (R_11, R_Cr) mit unterschiedlichen Formen von Auslösern (Perioden-Trigger, Event-Trigger) gestartet werden, – Erstellung eines Ausführungsplans (105) für die Ausführung der Alt-Steuerungssoftware auf den zwei oder mehr Rechenkernen (C1, C2, C3) unter Parallelisierung von Ablaufteilen (R_11, R_81) mit schwachen Vorrang-Beschränkungen (PC2), – Für jede schwache Vorrang-Beschränkung (PC2) Speicherung der zugehörigen persistenten Speichervariablen (Va) in einer getrennt verwalteten Datenbasis (108). Method for automated porting and parallelization of legacy control software ( 100 ) required for a control unit ( 102 ) is developed with a single arithmetic core (C0), to a vehicle control unit ( 103 ) having at least two computing cores (C1, C2, C3), the method being executed in any software environment and comprising at least the following steps: determining a plurality of tasks (T-1, T-8, T-Cr), wherein some of the tasks (T-1, T-8, T-Cr) are to be executed at a respectively predetermined periodicity (P), and an execution order ( 106 ) is provided for the tasks, and within each task (T-1, T-8, T-Cr) one or more expiration parts (R_i) each having a predetermined call order ( 107 ), - determining whether there is a write access (producer) and another task a read access (consumer), PC2, PCx, PCy), wherein a priority restriction is classified as weak if: - a flow part from a producer task to a shared memory variable (Va, Vb) is write only and another flow part from a consumer task is shared Memory variable read only accesses and there is a data flow dependency from the write to the read expiration part, and if - the periodicity (P) of the expiration part from the producer task, more than X times the periodicity (P) of the expiration part of the consumer task , where X is a predetermined limit value of 3 or greater, OR - the periodicity (P) of the expiration part from the producer task ni It is a natural multiple of the periodicity (P) of the expiration part of the consumer task (P = 5ms vs.. P = 1024ms), OR - the expiration parts (R_11, R_Cr) are started with different forms of triggers (period triggers, event triggers), - creation of an execution plan ( 105 ) for the execution of the legacy control software on the two or more cores (C1, C2, C3) with parallelization of expiration parts (R_11, R_81) with weak priority constraints (PC2), - for each weak priority constraint (PC2) storage associated persistent storage variables (Va) in a separately managed database ( 108 ). Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass die Alt-Steuerungssoftware unter Anwendung folgender Schritte partitioniert wird: – Separieren der in der Alt-Steuerungssoftware enthaltenen Tasks (T-1, T-8, T-Cr) und Ablaufteile (R_i), – Für jeden Ablaufteil (R_i) Ermitteln aller schreibenden und lesenden Zugriffe auf persistente Speichervariablen (Va, Vb). A method according to claim 1, characterized in that the legacy control software is partitioned using the following steps: - separating the tasks contained in the legacy control software (T-1, T-8, T-Cr) and expiration parts (R_i), - For each expiration part (R_i), determining all write and read accesses to persistent storage variables (Va, Vb). Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass die getrennt verwaltete Datenbasis (108) einen wartezeitfreien lesenden und schreibenden Zugriff gestattet. Method according to one of the preceding claims, characterized in that the separately managed database ( 108 ) allows wait-free read and write access. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass in der getrennt verwalteten Datenbasis (108) für eine persistente Speichervariable ein Haupt-Speicherwert und mindestens ein Puffer-Speicherwert angelegt werden, wobei ein Puffer-Speicherwert lesend zugreifbar ist während ein Schreibzugriff auf den Haupt-Speicherwert erfolgt. Method according to one of the preceding claims, characterized in that in the separately managed database ( 108 ) for a persistent memory variable, a main memory value and at least one buffer memory value are applied, wherein a buffer memory value is read-accessible while a write access to the main memory value takes place. Verfahren nach Anspruch 4, dadurch gekennzeichnet, dass nach einem schreibenden Zugriff der Inhalt eines Puffer-Speicherwertes auf den aktualisierten Wert des zugehörigen Haupt-Speicherwerts angeglichen wird. A method according to claim 4, characterized in that after a write access the content of a buffer memory value is adjusted to the updated value of the associated main memory value. Verfahren nach einem der vorhergehenden Ansprüche, dass die getrennt verwaltete Datenbasis (108) für eine persistente Speichervariable (Va, Vb) eine einzige Speicherzelle mit atomarem Zugriff vorsieht. Method according to one of the preceding claims, that the separately managed database ( 108 ) for a persistent storage variable (Va, Vb) provides a single memory cell with atomic access. Softwareprodukt zur Portierung einer Alt-Steuerungssoftware (100), die für ein Steuergerät (102) mit einem Einzel-Rechenkern (C0) entwickelt ist, in eine parallelisierte Steuerungssoftware (101), die auf einem Fahrzeugsteuergerät (103) mit mindestens zwei Rechenkernen (C1, C2, C3) ausführbar ist, dadurch gekennzeichnet, dass das Softwareprodukt ein Verfahren nach einem der vorhergehenden Ansprüche ausführt. Software product for porting legacy control software ( 100 ) required for a control unit ( 102 ) is developed with a single arithmetic core (C0) into a parallelized control software ( 101 ) on a vehicle control unit ( 103 ) is executable with at least two arithmetic cores (C1, C2, C3), characterized in that the software product executes a method according to one of the preceding claims. Softwareprodukt nach Anspruch 8, dadurch gekennzeichnet, dass das Softwareprodukt dazu ausgebildet ist, als Eingangsprodukt die Alt-Steuerungssoftware (100) zu übernehmen und die parallelisierte Steuerungssoftware (101) auszugeben, die auf das Fahrzeugsteuerungsgerät (103) übertragbar ist. Software product according to claim 8, characterized in that the software product is designed to use as input product the legacy control software ( 100 ) and the parallelized control software ( 101 ), which is on the vehicle control device ( 103 ) is transferable.
DE102014103139.3A 2014-03-10 2014-03-10 Parallelized execution of single-core control software on multi-core vehicle control units Expired - Fee Related DE102014103139B4 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
DE102014103139.3A DE102014103139B4 (en) 2014-03-10 2014-03-10 Parallelized execution of single-core control software on multi-core vehicle control units

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102014103139.3A DE102014103139B4 (en) 2014-03-10 2014-03-10 Parallelized execution of single-core control software on multi-core vehicle control units

Publications (2)

Publication Number Publication Date
DE102014103139A1 DE102014103139A1 (en) 2015-10-08
DE102014103139B4 true DE102014103139B4 (en) 2017-08-10

Family

ID=54146170

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102014103139.3A Expired - Fee Related DE102014103139B4 (en) 2014-03-10 2014-03-10 Parallelized execution of single-core control software on multi-core vehicle control units

Country Status (1)

Country Link
DE (1) DE102014103139B4 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102019201309A1 (en) 2019-02-01 2020-08-06 Denso Corporation Computer-implemented method for operating a motor vehicle control unit

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102016200777A1 (en) 2016-01-21 2017-07-27 Robert Bosch Gmbh Method and apparatus for monitoring and controlling quasi-parallel execution threads in an event-oriented operating system
DE102016107646A1 (en) 2016-04-25 2017-10-26 Barcelona Supercomputing Center Optimization technology for single to multi-core porting of control software
DE102017124105A1 (en) 2016-10-24 2018-04-26 Denso Corporation Method for porting a single-core control software to a multi-core control device or for optimizing a multi-core control software
FR3071334B1 (en) * 2017-09-19 2019-08-30 Psa Automobiles Sa METHOD FOR ENSURING DATA STABILITY OF A MULTICOAL PROCESSOR OF A MOTOR VEHICLE
CN111427742B (en) * 2020-03-09 2023-11-03 创驱(上海)新能源科技有限公司 AUTOSAR architecture-based complex driving task real-time monitoring method

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Basicevic, I. et al.: An Approach to Parallelization of Legacy Software. In: Proceedings of the 2009 First IEEE Eastern European Conference on the Engineering of Computer Based Systems, 2009, S. 42 - 48 *
Yohei Kanehagi et al.: Parallelization of Automotive Engine Control Software On Embedded Multi-core Processor Using OSCAR Compiler. In: Cool Chips XVI (COOL Chips), 2013. 2013, S. 1 - 3 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102019201309A1 (en) 2019-02-01 2020-08-06 Denso Corporation Computer-implemented method for operating a motor vehicle control unit

Also Published As

Publication number Publication date
DE102014103139A1 (en) 2015-10-08

Similar Documents

Publication Publication Date Title
DE102014103139B4 (en) Parallelized execution of single-core control software on multi-core vehicle control units
EP1402382B1 (en) Data processing method
DE102013214756B4 (en) METHOD OF MANAGING TASK EXECUTION IN A MULTI-CORE PROCESSOR
DE60127857T2 (en) SECURITY PROCEDURE WITH DETERMINISTIC REAL-TIME PERFORMANCE OF MULTITASK APPLICATIONS OF CONTROL AND COMMAND TYPE WITH ERROR CONTROL
DE19500957A1 (en) Procedures for the control of technical processes or processes
LU93299B1 (en) Sequence control of program modules
DE102018110018A1 (en) A method for providing an integrated process for the ECU development and simulation device for the ECU development
DE102007051803A1 (en) Method and device for data processing
WO2011063869A1 (en) Method for enabling sequential, non-blocking processing of statements in concurrent tasks in a control device
DE112019002778T5 (en) SIMULATION DEVICE, SIMULATION METHOD AND ELECTRONIC CONTROL UNIT DEVICE
DE102016202305A1 (en) Method and device for operating a control device
WO1996019759A1 (en) System for controlling technical processes
DE102009025572A1 (en) A method for developing guaranteed real-time systems
DE102015100566A1 (en) Method and light mechanism for mixed critical applications
EP1320047B1 (en) Method for analyzing the temporal behavior of complex distributed systems
DE102004059972A1 (en) Thread scheduling method involves accomplishing scheduling of threads, which can be processed by multithread processor, and scheduling is accomplished as function of variable, which represents idle time of processor
EP1701266A1 (en) Test apparatus for verification of a batch processing
DE102007026982B4 (en) Processor, program controlled unit and method for controlling a processor clock
DE102018205390A1 (en) Method and device for error handling in a communication between distributed software components
DE102008048862A1 (en) Test module and method for testing an O / R imaging middleware
DE102019216226A1 (en) Method for operating a computing system and computing system
EP0991995B1 (en) Interrupt method in a computer system with interrupt control
DE102016121542A1 (en) Sequence control of program modules
DE102019128206B4 (en) Method and device for static memory management optimization in integrated multi-core processors
DE102021209509A1 (en) Method and device for processing at least one first and one second arithmetic operation in a computing unit

Legal Events

Date Code Title Description
R082 Change of representative

Representative=s name: ERNICKE UND KOLLEGEN, DE

Representative=s name: PATENTANWAELTE ERNICKE UND KOLLEGEN, DE

Representative=s name: ERNICKE PATENT- UND RECHTSANWAELTE, DE

R163 Identified publications notified
R012 Request for examination validly filed
R016 Response to examination communication
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R130 Divisional application to

Ref document number: 102014019848

Country of ref document: DE

Ref document number: 102014019849

Country of ref document: DE

R130 Divisional application to

Ref document number: 102014019848

Country of ref document: DE

Ref document number: 102014019849

Country of ref document: DE

R084 Declaration of willingness to licence
R082 Change of representative

Representative=s name: ERNICKE PATENT- UND RECHTSANWAELTE PARTMBB, DE

Representative=s name: ERNICKE PATENT- UND RECHTSANWAELTE, DE

R020 Patent grant now final
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee