-
Gebiet der Erfindung
-
Die vorliegende Erfindung betrifft eine Vorrichtung, ein Verfahren, und ein System zum Steuern eines Prozessors, insbesondere eines Mehrkernprozessors oder Multiprozesssystems einer Steuerungseinrichtung eines Kraftfahrzeugs.
-
Stand der Technik
-
1 zeigt ein Kraftfahrzeug 100 mit Steuerungseinrichtungen (Steuergeräte, Electronic Control Units, ECUs) 120 1, 120 2, die zur Steuerung und / oder Regelung von Komponenten 110, 140 des Kraftfahrzeugs 100 eingesetzt werden. Ein Motorsteuergerät (Engine Control Unit, ECU) 120 2, zum Beispiel, kann zur Steuerung und Regelung eines Fahrzeugmotors 110 während seines Betriebes eingesetzt werden. Das Motorsteuergerät 120 2 kann aus Eingangsparametern, beispielsweise der angesaugten Luftmasse pro Zeiteinheit, der Temperatur von Motor und Umgebung und ggf. dem Ladedruck eines Turboladers anhand von Steuerungs- und Regelungsmechanismen Ausgabeparameter, beispielsweise Einspritzzeitpunkt, Einspritzmenge und ggf. Zündzeitpunkt für jeden Zylinder des Fahrzeugmotors 110 bestimmen. Eine Steuerungseinrichtung 120 1 kann für eine Fahrdynamikregelung (Elektronisches Stabilitätsprogramm, ESP, Electronic Stability Control, ESC) die Bremsen 140 des Kraftfahrzeugs 100 regeln. Die Steuerungseinrichtungen 120 1, 120 2 können über einen Fahrzeugbus 130, zum Beispiel Controller Area Network Bus (CAN-Bus) oder FlexRay, zum Datenaustausch zwischen den Steuerungseinrichtungen 120 1, 120 2 miteinander verbunden sein.
-
Eine Steuerungseinrichtung 120 1, 120 2 umfasst einen Prozessor. Der Prozessor kann einen Rechenkern umfassen (Einkernprozessor, Single-Core-Prozessor). Die Steuerungseinrichtung 120 1, 120 2 kann weiterhin einen Speicher und / oder eine Schnittstelle (Interface) umfassen. Der Speicher kann zum Beispiel ein Betriebssystem (Operating System, OS), ein Anwendungsprogramm (Application Software, Software) und / oder Daten wie die Eingangsparameter, Ausgangsparameter, Funktionstabellen und / oder Variablen umfassen. Über die Schnittstelle kann die Steuerungseinrichtung 120 1, 120 2 zum Beispiel mit den Komponenten Parameter wie die Eingangsparameter und Ausgangsparameter austauschen oder mit einer anderen Steuerungseinrichtung 120 1, 120 2 kommunizieren.
-
Um mehrere Aufgaben (Tasks) wie Rechenaufgaben oder Prozesse der Steuerungseinrichtung 120 1, 120 2 „gleichzeitig“ oder „parallel“, d. h. quasi gleichzeitig oder quasi parallel, bearbeiten zu können, kann das Betriebssystem Nebenläufigkeit (Concurrency) simulieren. Das Anwendungsprogramm wird dazu vorab in eine Vielzahl von getrennten Aufgaben unterteilt. Während des Betriebs der Steuerungseinrichtung 120 1, 120 2 verwaltet eine Prozesssteuerung (Prozesssteuerprogramm, Scheduler) des Betriebssystems die Aufgaben und entscheidet wann welche Aufgabe ausgeführt wird. Bei Steuerungseinrichtungen 120 1, 120 2 für Kraftfahrzeuge kann für unterbrechbare, periodische Aufgaben bei Echtzeitanfordungen ein streng prioritätenbasierter Scheduler (Rate Monotonic Scheduler, RMS) eingesetzt werden. Weiterhin kann als Scheduling-Verfahren ein zeitbasiertes Verfahren, das seine Entscheidungen so trifft, dass Fertigstellungstermine (Deadlines) eingehalten werden, (Earliest Deadline First, EDF) eingesetzt werden.
-
2 zeigt schematisch einen beispielhaften zeitlichen Verlauf 20 von Tasks eines ESP-Steuergeräts gemäß des Standes der Technik. Entlang einer waagrechten Zeitachse t sind, in einem Abstand von beispielsweise 5 ms, Zeitpunkte t1 bis t5 aufgetragen. Entlang einer senkrechten Prioritätenachse P sind Tasks 200 1, 200 4, 200 5, 200 6, 200 7 und 200 8 von oben nach unten mit sinkenden Prioritäten sowie schließlich ein Leerlaufprozess (Idle Task) 200 9 aufgetragen. Die Gestaltung der Prioritäten und Zeitscheiben berücksichtigt vorliegende regelungstechnische Vorgaben und Erfordernisse und ermöglicht einen deterministischen Austausch von Daten. Dabei kann ein Task einerseits, wie zum Beispiel mit Bezugszeichen 202 4 und 202 9 gekennzeichnet, aktiviert, aber nicht-laufend bzw. ruhend sein, und andererseits, wie zum Beispiel mit Bezugszeichen 204 4 und 204 9 gekennzeichnet, laufend sein. Wenn alle Tasks 200 1–200 8 ruhen, läuft somit der Idle Task 200 9. Tasks können, wie zum Beispiel mit Bezugszeichen 212 1 und 212 4–212 8 gekennzeichnet, nach einem Zeitplan (Time Table) oder durch eine Unterbrechungsroutine (Interrupt Service Routine, ISR) aktiviert werden. Die Aktivierung erfolgt durch einen Zeitgeber (Timer), zum Beispiel einen Timer-Baustein des Prozessors. Der Task 200 1, der zum Beispiel im Abstand von 1 ms (kurz) läuft, ist ein System-Task und unabhängig von den anderen Tasks. Der Task 200 4 (x1), der zum Beispiel in einem Abstand von 5 ms läuft, hat eine niedrigere Priorität als der System-Task 200 1. Der Task 200 5 (x2), der zum Beispiel in einem Abstand von 10 ms läuft, ist von dem Task 200 4 (x1) abhängig, und seine Wiederholperiode ist ein Vielfaches, zum Beispiel 2, der Wiederholperiode des Tasks 200 4 (x1). Der Task 200 6 (x4), der zum Beispiel in einem Abstand von 20 ms läuft, ist von dem Task 200 5 abhängig, und seine Wiederholperiode ist ein Vielfaches, zum Beispiel 2, der Wiederholperiode des Tasks 200 5 und somit auch ein Vielfaches, zum Beispiel 4, der Wiederholperiode des Tasks 200 4. Der Task 200 7 (x8), der zum Beispiel in einem Abstand von 40 ms läuft, ist von dem Task 200 6 abhängig, und seine Wiederholperiode ist ein Vielfaches, zum Beispiel 2, der Wiederholperiode des Tasks 200 6 und somit auch ein Vielfaches, zum Beispiel 8, der Wiederholperiode des Tasks 200 4. Der Task 200 8 (x24), der zum Beispiel in einem Abstand von 120 ms läuft, ist von dem Task 200 6 abhängig, und seine Wiederholperiode ist ein Vielfaches, zum Beispiel 3, der Wiederholperiode des Tasks 200 7 und somit auch ein Vielfaches, zum Beispiel 24, der Wiederholperiode des Tasks 200 4. Je kürzer die Wiederholperiode, also je höher die Wiederholrate, eines Tasks, desto häufiger wird dieser Task aktiviert. Dabei stellt der Scheduler sicher, dass ein Task mit höherer Priorität niemals von einem Task mit niedrigerer Priorität unterbrochen wird. Bezüglich des Austauschs von Daten zwischen den abhängigen Tasks können zum Einen, wie zum Beispiel mit Bezugszeichen 222 4-5, 222 5-6, 222 6-7 und 222 7-8 gekennzeichnet, Daten von einem Task an einen Task mit niedrigerer Priorität weitergegeben werden und zum Anderen, wie zum Beispiel mit Bezugszeichen 224 5-4, 224 6-4 und 224 6-5 gekennzeichnet, Daten von einem Task an einen Task mit höherer Priorität weitergegeben werden. Dabei überprüft eine Fristablaufüberwachung (Deadline Monitor), dass Daten von einem Task mit niedriger Priorität zur Weitergabe an einen Task mit höherer Priorität rechtzeitig vorliegen.
-
Wie in 2 gezeigt, werden mehrere Tasks, durch den Zeitgeber, gleichzeitig aktiviert, und der Scheduler startet den Lauf der Tasks der Reihe nach in Abhängigkeit ihrer Priorität, sodass das Betriebssystem sicherstellt, dass die Tasks in einer gewünschten Reihenfolge, d. h. Tasks mit der höchsten Priorität zuerst, ablaufen. Diese Prozesssteuerung für einen Einkernprozessor lässt sich nicht auf einen Mehrkernprozessor übertragen, da die Tasks, die gleichzeitig aktiviert werden, nicht mehr nacheinander sondern gleichzeitig laufen, wenn sie verschiedenen Kernen zugeordnet sind, selbst wenn einer der Tasks eine höhere Priorität als der andere Task bzw. die anderen Tasks hat und / ein Task Daten von einem Task mit höherer Priorität benötigt, die noch nicht vorliegen.
-
DE 102 29 520 A1 offenbart ein Verfahren und eine Vorrichtung sowie ein entsprechendes Betriebssystem zur Steuerung von Vorgängen bei einem Fahrzeug, wobei die Vorgänge durch wenigstens ein schnelleres Aufgabenprogramm und wenigstens ein langsameres Aufgabenprogramm gesteuert werden, wobei wenigstens eine Ausgabegröße in dem wenigstens einen schnelleren Aufgabenprogramm und dem wenigstens einen langsameren Aufgabenprogramm verwendet wird und dazu von einem Speicherbereich in einen anderen Speicherbereich kopiert wird, wobei eine Ausgabegröße für das wenigstens eine langsamere Aufgabenprogramm am Ende des wenigstens einen schnelleren Aufgabenprogramms kopiert wird und / oder eine Ausgabegröße für das wenigstens eine schnellere Aufgabenprogramm zu Beginn des wenigstens eines schnelleren Aufgabenprogramms kopiert wird, wenn eine solche Ausgabegröße entsprechend für beide Aufgabenprogramme vorgesehen ist.
-
Aufgabe der Erfindung
-
Die vorliegende Erfindung hat sich deshalb zur Aufgabe gestellt, ein Verfahren, eine Vorrichtung und ein System zum Steuern eines Prozessors, insbesondere eines Mehrkernprozessors, bereitzustellen.
-
Allgemeine Beschreibung der Erfindung
-
Diese Aufgabe wird durch die beiliegenden nebengeordneten Ansprüche gelöst, insbesondere durch ein Verfahren, eine Vorrichtung und ein System.
-
Ein Aspekt der Erfindung betrifft eine Vorrichtung zum Steuern eines Prozessors, umfassend einen ersten Task 400 12, 400 14, 400 22, 400 23, 400 24; 500 13–500 25; 600 12–600 24 mit einer ersten Priorität und einer ersten Wiederholperiode, und einen zweiten Task 400 14–400 26; 500 17–500 24; 600 14–600 26 mit einer zweiten Priorität und einer zweiten Wiederholperiode, wobei die zweite Priorität niedriger als die erste Priorität ist, wobei die zweite Wiederholperiode ein Vielfaches der ersten Wiederholperiode ist, wobei der erste Task 400 12, 400 14, 400 22, 400 23, 400 24; 500 13–500 25; 600 12–600 24 eine Aktivierungseinrichtung zum Aktivieren des zweiten Tasks 400 14–400 26; 500 17–500 24; 600 14–600 26 gemäß der zweiten Wiederholperiode umfasst. Wenn der zweite Task Informationen, zum Beispiel in Form von Daten wie Eingangsdaten umfasst, die beispielsweise von dem ersten Task bereitzustellen sind, kann die Aktivierung ausgeführt werden, wenn (sobald) diese Informationen verfügbar sind.
-
Durch diesen und ggf. weitere Aspekte der Erfindung wird die Möglichkeit zum Steuern eines Prozessors, insbesondere eines Mehrkernprozessors, bereitgestellt. Das System erzeugt die Aktivierung der Tasks explizit. Dabei aktiviert das System bzw. Scheduler oder Zeitgeber einen ersten Task, zum Beispiel durch einen Funktionsaufruf, und dieser erste Task aktiviert einen zweiten Task mit niedrigerer Priorität und / oder niedrigerer Wiederholrate in entsprechenden Abständen, zum Beispiel durch einen Funktionsaufruf an seinem Ende. Dabei entsprechen die Abstände dem Verhältnis der Wiederholraten bzw. Wiederholperioden. Zum Beispiel aktiviert der erste Task mit der ersten Wiederholperiode x1 den zweiten Task mit einer zweiten Wiederholperiode x2 bei jeder zweiten Aktivierung. Jeder Task kann einen entsprechenden Zählmechanismus umfassen. Dazu kann der Zählmechanismus, zum Beispiel, auf eine globale Variable und / oder eine lokale Variable wie eine statische lokale Variable, zugreifen. Dieser zweite Task wiederum kann einen dritten Task mit noch niedrigerer Priorität und / oder niedrigerer Wiederholrate aktivieren. Die Aktivierung weiterer Tasks kann entsprechend erfolgen. Dabei können zwischen den Tasks gleiche oder auch unterschiedliche ganzzahlige Verhältnisse der Wiederholperioden bestehen. Durch das erfindungsgemäße System lassen sich auch Anwendungen, Computer, Steuerungseinrichtungen, Programme usw. von einem Einkernprozessor auf einen Mehrkernprozessor übertragen. Ein weiterer Aspekt der Erfindung betrifft eine Vorrichtung, wobei der erste Task umfasst eine Erhöhungseinrichtung zum Erhöhen der ersten Wiederholperiode in die zweite Wiederholperiode.
-
Ein weiterer Aspekt der Erfindung betrifft eine Vorrichtung, wobei die Erhöhungseinrichtung umfasst eine Zähleinrichtung zum Zählen von Aktivierungen des ersten Tasks 400 12, 400 14, 400 22, 400 23, 400 24; 500 13–500 25; 600 12–600 24, eine Vergleichseinrichtung zum Vergleichen der gezählten Aktivierungen mit dem Vielfachen, und eine Steuerungseinrichtung zum Steuern der Aktivierungseinrichtung. Ein weiterer Aspekt der Erfindung betrifft eine Vorrichtung, wobei der zweite Task ein erste Mal aktiviert wird, wenn der erste Task zum ersten, zweiten, dritten, vierten, fünften oder öfter aktiviert worden ist.
-
Ein weiterer Aspekt der Erfindung betrifft eine Vorrichtung, wobei das Vielfache ein ganzzahliges Vielfaches ist.
-
Ein weiterer Aspekt der Erfindung betrifft eine Vorrichtung, wobei der Prozessor einen ersten Rechenkern 312 1 und einen zweiten Rechenkern 312 2 umfasst, der erste Task 400 12–400 14; 500 13–500 18; 600 12–600 14 dem ersten Rechenkern 312 1 zugeordnet ist, und der zweite Task 400 14–400 26; 500 17–500 24; 600 22–600 26 dem zweiten Rechenkern 312 2 zugeordnet ist.
-
Ein anderer Aspekt der Erfindung betrifft eine Steuerungseinrichtung 120 1, 120 2, umfassend eine der Vorrichtungen.
-
Ein anderer Aspekt der Erfindung betrifft ein Kraftfahrzeug 100, umfassend einer der Steuerungseinrichtungen 120 1, 120 2.
-
Ein anderer Aspekt der Erfindung betrifft ein Verfahren zum Steuern eines Prozessors, umfassend Bereitstellen eines ersten Tasks 400 12, 400 14, 400 22, 400 23, 400 24; 500 13–500 25; 600 12–600 24 mit einer ersten Priorität und einer ersten Wiederholperiode, und Bereitstellen eines zweiten Tasks 400 14–400 26; 500 17–500 24; 600 14–600 26 mit einer zweiten Priorität und einer zweiten Wiederholperiode, wobei die zweite Priorität niedriger als die erste Priorität ist, wobei die zweite Wiederholperiode ein Vielfaches der ersten Wiederholperiode ist, wobei der erste Task 400 12, 400 14, 400 22, 400 23, 400 24; 500 13–500 25; 600 12–600 24 eine Aktivierungsfunktion zum Aktivieren des zweiten Tasks 400 14–400 26; 500 17–500 24; 600 14–600 26 gemäß der zweiten Wiederholperiode umfasst. Die Aktivierungsfunktion an verschiedenen Positionen des ersten Tasks angeordnet sein bzw. ausgeführt werden, zum Beispiel am Anfang, in der Mitte oder am Ende. Wenn der zweite Task Informationen, zum Beispiel in Form von Daten wie Eingangsdaten umfasst, die beispielsweise von dem ersten Task bereitzustellen sind, kann die Aktivierungsfunktion ausgeführt werden, wenn (sobald) diese Informationen verfügbar sind.
-
Ein weiterer Aspekt der Erfindung betrifft ein Verfahren, wobei der erste Task umfasst eine Erhöhungsfunktion zum Erhöhen der ersten Wiederholperiode in die zweite Wiederholperiode.
-
Ein weiterer Aspekt der Erfindung betrifft eine Verfahren, wobei die Erhöhungsfunktion umfasst eine Zählfunktion zum Zählen von Aktivierungen des ersten Tasks 400 12, 400 14, 400 22, 400 23, 400 24; 500 13–500 25; 600 12–600 24, eine Vergleichsfunktion zum Vergleichen der gezählten Aktivierungen mit dem Vielfachen, und eine Steuerungsfunktion zum Steuern der Aktivierungsfunktion.
-
Ein weiterer Aspekt der Erfindung betrifft ein Verfahren, wobei der zweite Task ein erste Mal aktiviert wird, wenn der erste Task zum ersten, zweiten, dritten, vierten, fünften oder öfter aktiviert worden ist.
-
Ein weiterer Aspekt der Erfindung betrifft ein Verfahren, wobei: das Vielfache ein ganzzahliges Vielfaches ist.
-
Ein weiterer Aspekt der Erfindung betrifft ein Verfahren, wobei der Prozessor einen ersten Rechenkern 312 1 und einen zweiten Rechenkern 312 2 umfasst, der erste Task 400 12–400 14; 500 13–500 18; 600 12–600 14 dem ersten Rechenkern 312 1 zugeordnet ist, und der zweite Task 400 14–400 26; 500 17–500 24; 600 22–600 26 dem zweiten Rechenkern 312 2 zugeordnet ist.
-
Ein anderer Aspekt der Erfindung betrifft ein System zum Steuern eines Prozessors umfassend eines der Verfahren zum Steuern eines Prozessors.
-
Ein anderer Aspekt der Erfindung betrifft ein Computerprogrammprodukt, umfassend: ein Computerprogramm, das auf einem Datenträger oder in einem Speicher eines Computers 120 1, 120 2, 30 gespeichert ist und das Computer-lesbare Befehle umfasst, die zur Ausführung eines der Verfahrens bestimmt sind, wenn die Befehle von dem Computer 120 1, 120 2, 30 ausgeführt werden.
-
Eine Fahrdynamikregelung (Elektronisches Stabilitätsprogramm, ESP, Electronic Stability Control, ESC) ist ein Computer, der für die Steuerung, Regelung und Überwachung von Funktionen der Bremsen 140 eines Kraftfahrzeugs 100 entwickelt und ausgebildet ist.
-
Eine Motorsteuerung (Motorsteuergerät, Engine Control Unit, ECU) ist ein Computer, der für die Steuerung, Regelung und Überwachung von Funktionen des Motors 110, beispielsweise eines Verbrennungsmotors wie Benzin- oder Dieselmotors oder eines Elektromotors, entwickelt und ausgebildet ist. Beispielsweise regelt eine Electronic Diesel Control (EDC) das Einspritzsystem eines Dieselmotors.
-
Kurze Beschreibung der Figuren
-
In der folgenden detaillierten Beschreibung werden die Merkmale, Vorteile und alternativen Ausführungsformen von Ausführungsbeispielen der Erfindung mit Bezug auf die beigefügten Figuren beschrieben, in denen ähnliche Bezugszeichen ähnliche Elemente kennzeichnen.
-
Es zeigen:
-
1 ein Kraftfahrzeug mit Steuerungseinrichtungen;
-
2 schematisch einen beispielhaften zeitlichen Verlauf von Tasks eines ESP-Steuergeräts gemäß des Standes der Technik;
-
3 eine schematische Darstellung eines Systems zum Steuern eines Prozessors gemäß einer bevorzugten Ausführungsform der Erfindung;
-
4 einen beispielhaften zeitlichen Verlauf von Tasks eines Prozessors gemäß der bevorzugten Ausführungsform der Erfindung;
-
5 einen beispielhaften zeitlichen Verlauf von Tasks eines Prozessors gemäß einer anderen Ausführungsform der Erfindung; und
-
6 einen beispielhaften zeitlichen Verlauf von Tasks eines Prozessors gemäß einer weiteren Ausführungsform der Erfindung.
-
Detaillierte Beschreibung der Ausführungsformen
-
3 eine schematische Darstellung eines Systems 30 zum Steuern eines Prozessors gemäß einer bevorzugten Ausführungsform der Erfindung. Das System 30 umfasst eine Prozessorschicht 310, eine Betriebssystemschicht 320 und eine Anwendungsschicht 330.
-
Die Prozessorschicht 310 umfasst einen Prozessor. Der Prozessor kann ein Einkernprozessor (Single Core Processor), zum Beispiel ein Prozessor mit einem mehrfädigen Hauptprozessor (multi-threaded Central Processing Unit (CPU)), oder ein Mehrkernprozessor (Multi-core Processor), zum Beispiel ein Zweikernprocessor (Dual-core Processor), Dreikernprozessor (Triple-core Processor), Vierkernprocessor (Quad-core Processor), Sechskernprozessor (Hexa-core Processor), Achtkernprozessor (Octa-core Processor) oder Vielkernprozessor (Many-core processor). Der Prozessor kann symmetrische, d. h. gleiche, Rechenkerne oder asymmetrische, d. h. unterschiedliche, Rechenkerne, zum Beispiel einen Hauptprozessor und einen Ko-Prozessor (Co-processor) umfassen. Der Prozessor kann ein Mikroprozessor oder ein Mikrocontroller, d. h. Prozessor mit einen, zwei, drei, vier oder mehr Peripheriefunktionsbausteinen sein. Wie in 3 beispielhaft angedeutet, kann der Prozessor eine Vielzahl von Rechenkernen 312 1 ... 312 n umfassen. Alternativ kann die Prozessorschicht 310 eine Vielzahl von Prozessoren umfassen (Multiprozesssystem).
-
Die Betriebssystemschicht 320 umfasst ein Betriebssystem, zum Beispiel eine Echtzeitbetriebssytem wie OSEK (Offene Systeme und deren Schnittstellen für die Elektronik im Kraftfahrzeug) beispielsweise OSEK/VDX, FreeOSEK oder openOSEK, oder AUTOSAR (AUTomotive Open System ARchitecture). Wie in 3 beispielhaft und vereinfacht gezeigt, umfasst das Betriebssystem eine Steuerung 322, die eine Prozesssteuerung (Prozesssteuerprogramm, Scheduler) 324 umfasst, Ressourcen 326, die zum Beispiel Bibliotheken für Schnittstellen, Berechnungen, Verschlüsselung usw. bereitstellen, und Dienste (Services) 328 1 ... 328 n, zum Beispiel in Form einer Laufzeitumgebung (Run Time Environment, RTE), die mit den Rechenkernen 312 1 ... 312 n verbunden sind. Dabei kann ein (gemeinsamer) Scheduler für mehrere Kerne oder Prozessoren vorgesehen sein. Alternativ kann ein Scheduler je Kern oder Prozessor vorgesehen sein.
-
Die Anwendungsschicht 330 umfasst ein Anwendungsprogramm (Software). Das Anwendungsprogramm kann eine Vielzahl von Bausteinen 332, 334, 336, 338, zum Beispiel Funktionen, Bibliotheken, Routinen, Parameter, Tabellen usw. umfassen. Das Anwendungsprogramm ist bzw. die Bausteine 332, 334, 336, 338 sind über die Dienste 328 1 ... 328 n mit den Rechenkernen 312 1 ... 312 n verbunden.
-
Somit ermöglichen die Dienste 328 1 ... 328 n eine Verarbeitung der Prozesse mittels der Rechenkerne 312 1 ... 312 n.
-
Das System 30 kann von einem Computer, zum Beispiel einer Steuerungseinrichtung wie einer Steuerungseinrichtung (Steuergerät, Motorsteuergerät, ESP-Steuergerät) 120 1, 120 2 für ein Kraftfahrzeugs 100, einem Rechner wie einem Arbeitsplatzrechner (Desktop-Computer), einem tragbaren Rechner (Laptop Computer, Notebook Computer, Tablet Computer), einem Endgerät wie einem Telekommunikationsendgerät (Mobile Phone, Smart Phone), umfasst sein. Zum Steuern des Prozessors regelt (schedult) der Scheduler 324, zum Beispiel mittels einer Arbitrationslogik, die zeitliche Ausführung mehrerer Prozesse (Tasks). Wie bereits beschrieben, kann auch ein Scheduler je Kern oder Prozessor vorgesehen sein, so dass die Scheduler die zeitliche Ausführung der Tasks schedulen. Mittels eines Prioritätsscheduling (Priority Scheduling) ist jedem der mehreren Prozesse eine Priorität zugewiesen worden, und der Scheduler 324 bringt jeweils den lauffähigen Prozess mit der höchsten Priorität zur Ausführung. Der Scheduler 324 kann für unterbrechbare, periodische Tasks als Prioritätsscheduling-Verfahren ein Rate Monotonic Scheduling (RMS) einsetzen, wobei die Prioritäten statisch nach der Periodendauer eines Tasks festgelegt werden, d. h je kürzer die Periodendauer eines Tasks ist, desto höher ist seine Priorität. Somit kann der Scheduler 324 die Überwachung von Fristabläufen und die Vorhersagbarkeit des Systemverhaltens sicherstellen. Dabei stellt der Scheduler sicher, dass ein Task mit höherer Wiederholrate, d. h. kürzerer Wiederholperiode, niemals von einem Task mit niedrigerer Wiederholrate, d. h. längerer Wiederholperiode, unterbrochen wird. Kommt es zu einer mehrfachen Aktivierung, d. h. ein laufender Task wird nochmals aktiviert, kann dies ggf. als Fehler interpretiert werden.
-
Das Anwendungsprogramm umfasst eine Vielzahl von Tasks 400 11, 400 12, 400 14, 400 22, 400 23, 400 24, 400 26, 500 11, 500 12, 500 13, 500 17, 500 18, 500 24, 500 25, 600 11, 600 12, 600 13, 600 14, 600 22, 600 23, 600 24 und 600 26, wobei jedem Task eine Priorität zugeweisen ist. Die Tasks werden von dem Scheduler 324 verwaltet und zur Ausführung gebracht, wobei Tasks 400 11, 400 12, 400 14, 500 11, 500 12, 500 13, 500 17, 500 18, 600 11, 600 12, 600 13, 600 14 bzw. 400 22, 400 23, 400 24, 400 26, 500 24, 500 25, 600 22, 600 23, 600 24 und 600 26, die auf verschiedenen Rechenkernen 312 1 und 312 2 laufen, voneinander unabhängig geschedult werden können. Somit können die Scheduler durch einen Einbau von gezielten Abhängigkeiten Tasks, die auf mehreren Kernen aufgeführt werden, in Abhängigkeit voneinander schedulen.
-
4 zeigt einen beispielhaften zeitlichen Verlauf (Task-Anordnung) 40 von Tasks eines Prozessors gemäß der bevorzugten Ausführungsform der Erfindung. Entlang einer waagrechten Zeitachse t sind, in einem Abstand von beispielsweise 5 ms, Zeitpunkte t1 bis t5 aufgetragen. Entlang von zwei senkrechten Prioritätenachsen P1 und P2 sind die Tasks 400 11, 400 12, 400 13, 400 14, 400 22, 400 23, 400 24 und 400 26 von oben nach unten aufgetragen. 4 zeigt auch Leerlaufprozesse (Idle Task) 400 19, und 400 29, die jeweils mit der niedrigsten Priorität laufen. Die Gestaltung der Prioritäten und Zeitscheiben berücksichtigt vorliegende regelungstechnische Vorgaben und Erfordernisse und ermöglicht einen deterministischen Austausch von Daten. Dabei kann ein Task einerseits, wie zum Beispiel mit Bezugszeichen 402 26 und 402 29 gekennzeichnet, aktiviert, aber nicht-laufend bzw. ruhend sein, und andererseits, wie zum Beispiel mit Bezugszeichen 404 29 gekennzeichnet, laufend sein. Wenn alle Tasks 400 11–400 14 bzw. 400 22–400 26 eines Rechenkerns 312 1, 312 2 ruhen, läuft somit der entsprechende Idle Task 400 19 bzw. 400 29. Tasks können zum Einen, wie zum Beispiel mit Bezugszeichen 412 11 und 412 12 gekennzeichnet, nach einem Zeitplan (Time Table) und zum Anderen, wie mit Bezugszeichen 414 13 gekennzeichnet, durch eine Unterbrechungsroutine (Interrupt Service Routine, ISR) wie eine FlexRay ISR aktiviert werden. Die Aktivierung erfolgt durch einen Zeitgeber (Timer), zum Beispiel einen Timer-Baustein des Prozessors. Der Task 400 11, der zum Beispiel im Abstand von 1 ms (kurz) läuft, kann ein System-Task sein und ist unabhängig von den anderen Tasks. Der Task 400 13, der zum Beispiel im Abstand von 2,5 ms läuft, kann ein FlexRay-Task sein und ist unabhängig von den anderen Tasks.
-
Damit die erste Zeitscheibe („Task“ (x1)) der abhängigen Tasks eine höhere Priorität als der FlexRay-Task 400 14 haben kann, ohne diesen dabei übermäßig zu behindern, umfasst sie in diesem Beispiel einen ersten Teil-Task 400 12 (x1h), der zum Beispiel in einem Abstand von 5 ms läuft, mit höherer (high, h) Priorität als der FlexRay-Task 400 13 und einen zweiten Teil-Task 400 14 (x1l), der ebenfalls in einem Abstand von 5 ms läuft und von dem ersten Teil-Task 400 12 abhängig ist, mit niedriger (low, l) Priorität als der Flex-Ray-Task 400 13. Der zweite Teil-Task 400 14 wird, wie mit Bezugszeichen 416 12-14 gekennzeichnet, am Ende des ersten Teil-Tasks 400 12 aktiviert und läuft. Der erste Teil-Task 400 12 ist nicht mehr aktiviert. Die Tasks 400 11, 400 12, 400 13 und 400 14 befinden sich, wie oben beschrieben, auf dem ersten Rechenkern 312 1. Der zweite Task 400 22 (x2), der zum Beispiel in einem Abstand von 10 ms läuft, ist von dem zweiten Teil-Task 400 14 abhängig, und seine Wiederholperiode ist ein Vielfaches, zum Beispiel 2, der Wiederholperiode des ersten Tasks. Der zweite Task 400 22 wird, wie mit Bezugszeichen 416 14-22 gekennzeichnet, am Ende des ersten Tasks, im Beispiel am Ende von dessen zweitem Teil-Task 400 14, aktiviert und läuft. Der (aktivierende) zweite Teil-Task 400 14 ist nicht mehr aktiviert. Ein dritter Task 400 23 (x4), der zum Beispiel in einem Abstand von 20 ms läuft, ist von dem zweiten Task 400 22 abhängig, und seine Wiederholperiode ist ein Vielfaches, zum Beispiel 2, der Wiederholperiode des zweiten Tasks 400 14, und somit auch ein Vielfaches, zum Beispiel 4 der Wiederholperiode des ersten Tasks 400 14. Der dritte Task 400 23 wird, wie mit Bezugszeichen 416 22-23 gekennzeichnet, am Ende des zweiten Tasks 400 400 22, aktiviert und läuft. Der (aktivierende) zweite Task 400 22 ist nicht mehr aktiviert. Ein vierter Task 400 24 (x8), der zum Beispiel in einem Abstand von 40 ms läuft, ist von dem dritten Task 400 23 abhängig, und seine Wiederholperiode ist ein Vielfaches, zum Beispiel 2, der Wiederholperiode des dritten Tasks 400 23, und somit auch ein Vielfaches, zum Beispiel 8 der Wiederholperiode des ersten Tasks 400 14. Der vierte Task 400 24 wird, wie mit Bezugszeichen 416 23-24 gekennzeichnet, am Ende des vierten Tasks 400 23, aktiviert und läuft. Der (aktivierende) dritte Task 400 23 ist nicht mehr aktiviert. Weiterhin ist ein fünfter Task 400 26 (x24), der zum Beispiel in einem Abstand von 120 ms läuft, von dem vierten Task 400 24 abhängig, und seine Wiederholperiode ist ein Vielfaches, zum Beispiel 3, der Wiederholperiode des vierten Tasks 400 24, und somit auch ein Vielfaches, zum Beispiel 24 der Wiederholperiode des ersten Tasks 400 14. Der fünfte Task 400 26 wird, wie mit Bezugszeichen 416 24-25 gekennzeichnet, am Ende des fünften Tasks 400 24, aktiviert und läuft. Der (aktivierende) vierte Task 400 24 ist nicht mehr aktiviert. Der zweite bis fünfte Task 400 22, 400 23, 400 24 und 400 26 befinden sich, wie oben beschrieben, auf dem zweiten Rechenkern 312 2. Aufgrund eines erneuten Laufs des zweiten Tasks 400 22, dessen Priorität höher ist als die des fünften Tasks 400 26, wird daher der Lauf des fünften Tasks 400 26, nach dem Zeitpunkt t3, unterbrochen, d. h. der fünfte Task 400 26 ist, wie mit Bezugszeichen 402 26 gekennzeichnet, aktiviert, aber nicht-laufend, damit der zweiten Tasks 400 22 laufen kann. Das Anwendungsprogramm kann weitere Tasks umfassen, die hier nicht näher betrachtet werden sollen.
-
Im Gegensatz zu sporadischen Tasks, zum Beispiel unterbrechungsaktivierten Tasks, sind die betrachteten Tasks, insbesondere die abhängigen Tasks (x1, ... x24), zeitsynchron, d. h. sie werden aktiviert und laufen mit vorgegebenen Wiederholraten bzw. Wiederholperioden (Kehrwerte der Wiederholraten). Die Wiederholperioden sind Vielfache voneinander. Ausgehend von der Wiederholperiode des ersten Tasks (x1) (Zeitscheibe) mit einer beispielhaften Periodendauer von 5 ms, hat der zweite Task (x2) eine beispielhafte Periodendauer von 5 ms x2 = 10 ms, der dritte Task (x4 = 2x2) eine beispielhafte Periodendauer von 5 ms x4 = 20 ms der zweite Task (x8 = 2x2x2) eine beispielhafte Periodendauer von 5 ms x8 = 40 ms der zweite Task (x24 = 2x2x2x3) eine beispielhafte Periodendauer von 5 ms x24 = 120 ms. Dementsprechend aktiviert jeder Tasks den nachfolgenden Task mit niedrigerer Priorität und vorgegebenen Vielfachen nicht bei jeder Beendigung (Terminierung), sondern in Abständen entsprechend dem Vielfachen, und zwar unabhängig von dem Rechenkern oder den Rechenkernen, auf dem oder denen sie laufen. Wie bereits beschrieben, kann der Task mit der höchsten Priorität, d. h. der erste Task bzw. sein erster Teil-Task
400 12 durch das Betriebssystem, zum Beispiel mittels des Zeitgebers, der in Hardware oder Software ausgeführt sein kann, aktiviert werden. Ein Mechanismus zum Erhöhen der Wiederholperiode bzw. Erzeugen einer längeren Periode aus einer kürzeren Periode kann, zum Beispiel für den ersten Task (x1), mit den folgenden beispielhaften oder ähnlichen Pseudo-Programmbefehlen ausgeführt werden, wobei der zweite Task (x2) bereits bei einer ersten Aktivierung des Tasks (x1) aktiviert wird:
-
Ein andere Mechanismus zum Erhöhen der Wiederholperiode kann, zum Beispiel für den ersten Task (x1), mit den folgenden beispielhaften oder ähnlichen Pseudo-Programmbefehlen ausgeführt werden, wobei der zweite Task (x2) erst bei einer zweiten Aktivierung des Tasks (x1) aktiviert wird:
-
In dem Mechanismus und dem anderen Mechanismus wird der zweite Task in Abständen von zwei Aktivierungen des ersten Tasks aktiviert. Andere Wiederholperioden bzw. Abstände, zum Beispiel 3, 4, 5, 6, 7, 8, 9, 10 oder mehr, können auf ähnliche oder andere Weisen erreicht werden. Zum Beispiel kann in den Tests der Ausdruck (0 == Task_x1_Counter & 1) auch in den Ausdruck (0 == (Task_x1_Counter % 2)) geändert werden.
-
Weiterhin können die implizite Aktivierungen durch das Betriebssystem bzw. den Zeitgeber und die explizite Aktivierung durch die Tasks in dem System 30 gemischt eingesetzt werden.
-
5 zeigt einen beispielhaften zeitlichen Verlauf 50 von Tasks eines Prozessors gemäß dieser anderen Ausführungsform der Erfindung. Entlang einer waagrechten Zeitachse t sind, in einem Abstand von beispielsweise 5 ms, Zeitpunkte t1 bis t5 aufgetragen. Entlang von zwei senkrechten Prioritätenachsen P1 und P2 sind die Tasks von oben nach unten aufgetragen. Die Tasks (x1) 500 11, (x2) 500 12, (x4) 500 13, (x32) 500 17 und (x64) 500 18 sind dem ersten Rechenkern 312 1 zugeordnet, und die Tasks (x8) 500 24 und (x16) 500 25 sind dem zweiten Rechenkern 312 2 zugeordnet. Hier erfolgt die explizite Aktivierung durch die Tasks nur über die Rechenkerne hinweg, d. h. wenn der von einem Task zu aktivierende Tasks einem anderen Rechenkern zugeordnet ist. Dann können die Tasks (x1) 500 11, (x2) 500 12, (x4) 500 13, wie mit Bezugszeichen 512 11, 512 12, 512 13 gekennzeichnet, durch das Betriebssystem bzw. den Zeitgeber aktiviert werden. Dadurch stellt der Scheduler 324 sicher, dass zunächst der Task (x1) 500 11 mit der höchsten Priorität, dann der Task (x2) 500 12 und anschließend der Task (x4) 500 13 aktiviert werden und laufen können. Am Ende von Task (x4) 500 13 wird, wie mit Bezugszeichen 516 13-24 gekennzeichnet, der Task (x8) 500 24 aktiviert werden. Am Ende von Task (x4) 500 13 kann, wie mit Bezugszeichen 516 13-25 gekennzeichnet, ggf. auch der Task (x16) 500 25 aktiviert werden. Auch hier, d. h. für den zweiten Rechenkern 312 2, stellt der Scheduler 324 sicher, dass zunächst der Task (x8) 500 24 mit der höheren Priorität und erst dann der Task (x16) 500 25 aktiviert werden und laufen können. Am Ende von Task (x16) 500 25 wird, wie mit Bezugszeichen 516 25-17 gekennzeichnet, der Task (x32) 500 17 aktiviert werden. Am Ende von Task (x16) 500 25 kann, wie mit Bezugszeichen 516 25-18 gekennzeichnet, ggf. auch der Task (x64) 500 18 aktiviert werden. Die Aktivierung eines nächsten Tasks kann jedoch bereits erfolgen, sobald alle Ergebnisse bzw. Daten, die dieser nächste Task benötigt, vorliegen, also, wie beschrieben, am Ende eines aufrufenden Tasks oder ggf. auch schon davor, zum Beispiel mitten im aufrufenden Task.
-
Weiterhin kann eine Fristablaufüberwachung (Deadline Monitor) in dem System 30 bereitgestellt werden.
-
6 zeigt einen beispielhaften zeitlichen Verlauf 60 von Tasks eines Prozessors gemäß dieser weiteren Ausführungsform der Erfindung. Entlang einer waagrechten Zeitachse t sind, in einem Abstand von beispielsweise 5 ms, Zeitpunkte t1 bis t5 aufgetragen. Entlang von zwei senkrechten Prioritätenachsen P1 und P2 sind die Tasks von oben nach unten aufgetragen. Die Tasks 600 11, (x1h) 600 12, 600 13, (x1l) 600 14 sind dem ersten Rechenkern 312 1 zugeordnet, und die Tasks (x2) 600 22, (x4) 600 23, (x8) 600 24 und (x24) 500 26 sind dem zweiten Rechenkern 312 2 zugeordnet. Wie bereits mit Bezug auf 4 beschrieben, kann der Task 600 11, der zum Beispiel im Abstand von 1 ms (kurz) läuft, ein System-Task, und der Task 600 13, der zum Beispiel im Abstand von 2,5 ms läuft, kann ein FlexRay-Task sein. Damit der erste Task (x1) der abhängigen Tasks, wie bereits mit Bezug auf 4 beschrieben, eine höhere Priorität als der FlexRay-Task 600 14 haben kann, ohne diesen dabei übermäßig zu behindern, umfasst er in diesem Beispiel einen ersten Teil-Task 600 12 (x1h), der zum Beispiel in einem Abstand von 5 ms läuft, mit höherer (high, h) Priorität als der FlexRay-Task 600 13 und einen zweiten Teil-Task 600 14 (x1l), der ebenfalls in einem Abstand von 5 ms läuft und von dem ersten Teil-Task 600 12 abhängig ist, mit niedriger (low, l) Priorität als der Flex-Ray-Task 600 13. Weiterhin zeigt 6 zeigt auch die Idle Task 600 19, und 600 29, die jeweils mit der niedrigsten Priorität laufen.
-
Die Deadline eines Tasks ist, wie zum Beispiel mit Bezugszeichen 620 14 bis 620 26 gekennzeichnet, generell durch seine Wiederholperiode vorgegeben. Dabei kann die Deadline (etwas) kürzer sein als die entsprechende Wiederholperiode. Damit jeweils Daten, die von einem Task mit niedrigerer Priorität, zum Beispiel Task (x2), erzeugt und bereitgestellt werden, von einem Task mit höherer Priorität, zum Beispiel Task (x1), gelesen werden können, muss der Task mit der niedrigeren Priorität (Task (x2)) beendet sein, wenn der Task mit der höheren Priorität (Task (x1)) wieder aktiviert wird. Die Deadlineüberwachung kann nun durch den Task (x1) erfolgen. Dazu erfolgt zu Beginn des Tasks (x1) eine Überprüfung, ob die Daten von allen abhängigen Tasks, die im Folgenden benötigt werden, vorliegen.
-
Ein Mechanismus zum Überwachen der Deadlines kann, zum Beispiel für den ersten Task (x1), mit den folgenden beispielhaften oder ähnlichen Pseudo-Programmbefehlen ausgeführt werden:
-
Dabei liefert die Funktion TaskState(TaskName) den aktuellen Status des Tasks mit dem Namen „TaskName“, unabhängig davon welchen Rechenkernen die Funktionen ActivateTask_x1() und TaskState() sowie die Tasks (x1), ... zugeordnet sind.
-
ZITATE ENTHALTEN IN DER BESCHREIBUNG
-
Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
-
Zitierte Patentliteratur
-