-
Technisches
Gebiet
-
Die vorliegende Erfindung betrifft
allgemein die Task-Einteilung
und die Nachrichtenweiterleitung in Task-Systemen und insbesondere das Modellieren
der periodischen und aperiodischen Echtzeit-Task-Einteilung und
der Nachrichtenweiterleitung, ausgelegt für eine Analyse des Zeitsteuerungsverhaltens
in Multitask-Systemen
und für
eine Definition elektronischer Systeme und Anweisungen zur Ausführung einer
solchen Einteilung und Nachrichtenweiterleitung.
-
Allgemeiner
Stand der Technik
-
Computerprozesse werden oft in vielfältige Funktionen
unterteilt, die als Tasks auf serielle und/oder parallele Weise
ausgeführt
werden können.
Mit diesen Computerprozessen kann man Informationen sammeln und
auf diese reagieren und als Reaktion auf die Informationen ein bestimmtes
Ergebnis hervorbringen. Diese funktionalen Task-Systeme finden in
vielfältigen
wichtigen Umgebungen Verwendung. Beispiele sind u.a. die Überwachung
und Steuerung eines industriellen Prozesses, wie z.B. eines Energieerzeugungs-
und Verteilungssystems, oder die Überwachung und Steuerung komplexer
Gerätschaften,
wie z.B. eines kommerziellen Flugzeugs.
-
Klassische Steuerfunktionen verwenden
Datenflüsse
zwischen periodisch ausgeführten
Tasks, wobei die Ergebnisse einer Task bei der nächsten Abfertigung dieser Task
abgeliefert werden. Dieses Verhalten ermöglicht zyklische Datenabhängigkeiten
zwischen Tasks, d.h. Rückkopplungsschleifen,
und ist mit den Annahmen vereinbar, die der mathematischen Analyse
zeitdiskreter dynamischer Systeme zugrundeliegen. Ein Nachrichtenweiterleitungskommunikationsmodell
eignet sich besser für
partitionierte Mehrprozessorsysteme als ein Shared-Memory-Kommunikationsmodell,
insbesondere Systeme, die lose gekoppelt sind, um einen hohen Grad
an Hardware-Fehlerisolation aufrecht zu erhalten.
-
Bei vielen missionskritischen Systemen
muß Software
durch Verwendung einer entsprechenden Funktionszerlegung modularisiert
werden, wodurch häufig
ein Zerlegen einer traditionellen Steuertask in mehrere Kommunikations-Subtasks
erforderlich wird. Dazu kann eine Ende-zu-Ende-Anordnung und Einteilung bestimmter
Subtasks und Nachrichten erforderlich sein. Zum Beispiel könnten in
einem flugtechnischen System die Trägheitsmeß- und Autopilotverarbeitung
als durch separate Task-Mengen implementierte separate Funktionen
implementiert werden. Es bestünde
eine Ende-zu-Ende-Frist
von dem Lesen von Sensordaten bis zum Ausgeben von Stellgliedbefehlen
und Task- und Nachrichtenordnungsabhängigkeiten innerhalb dieser Frist.
-
Durch die zunehmende Komplexität von Hardware
wird es schwieriger, Berechnungs- und Kommunikationszeiten präzise zu
beschränken.
Zum Beispiel wird es durch Cache-Speicher schwieriger, Rechenzeiten im
ungünstigsten
Fall genau zu beschränken,
und zwar auch für
Algorithmen, deren Steuerfluß datenunabhängig ist.
Die tatsächlichen
Rechenzeiten im ungünstigsten
Fall können
mitunter wesentlich kleiner als Schranken sein, die während der
Entwicklung leicht hergestellt werden können. Tatsächliche Rechenzeiten können über verschiedene
Dispatches der selben Task hinweg signifikant variieren. Systeme
werden so ausgelegt werden, daß nur
für die
kritischeren Funktionen eine Garantie mit höchster Sicherheit der Einteilbarkeit
unter Rechenzeitschranken im ungünstigsten
Fall besteht. In Intervallen mit transienter Prozessorüberlastung
wird es zu einer Lastverhexelung der weniger kritischen Tasks kommen.
-
Systeme mit großer Sicherheit stellen zusätzliche Anforderungen.
Die Abhängigkeitsanordnung
von Berechnungen und Übermittlungen
und die genauen Zeiten von Wechselwirkungen mit der Außenwelt
müssen deterministische
Ergebnisse erzeugen. Unbestimmtheiten oder Variationen der Task-Rechenzeiten
dürfen
sich nicht auf die Werte ausgewiesener Steuerausgangssignale auswirken.
Es ist notwendig, das Zeitsteuerungsverhalten eines Systems formal
zu modellieren und zu analysieren. Spezifikationen, Modelle, Analysen
und Code müssen
alle gut strukturiert, verständlich,
verfolgbar und mehreren unabhängigen
Mitteln der Verifikation zugänglich
sein.
-
Es gibt in der Technik Lösungen bei
der Modellierung der periodischen und aperiodischen Echtzeit-Taskeinteilung und
der Nachrichtenweiterleitung, die in integrierten missionskritischen
Systemen oder in Systemen mit hochratigen Anwendungen und Mikrosteuerungen
mit eingeschränktem
Durchsatz und/oder Speicher nützlich
sind.
-
Aus "Metall support for real-time multi-processor
avionics", Proceedings
of 5th International Workshop on Parallel and Distributed Real-Time
Systems und Third Workshop on Object-Oriented Real-Time Systems, 1.–3.4 1997,
Seiten 11 bis 21, Genf, Schweiz, ist eine Echtzeit-Modellierungsvorrichtung
bekannt, die ein ausführliches
zuvorkommendes Festprioritätsmodell
einer Anwendung erzeugt.
-
Die Erfindung behandelt die deterministische
Kommunikation zwischen zwei periodischen Prozessen. Sie umfaßt ein Kommunikationsmodell,
eine Fristenreduktionstechnik, eine periodische Transformationstechnik
und Implementierungseffizienzpufferzuweisungsregeln.
-
In einer Ausführungsform liefert die Erfindung
ein Verfahren zur Erzeugung einer zugewiesenen Einteilungspriorität mehrerer
Tasks in einem Multitask-System,
mit den folgenden Schritten:
Definieren einer ersten Liste
der mehreren Tasks, wobei die erste Liste der mehreren Tasks mit
einer Task-Frist als ein Primärschlüssel und
einer Task-Kritizität
als ein Sekundärschlüssel sortiert
wird;
Transformieren der Task-Frist jeder der mehreren Tasks
einzeln unter Verwendung eines Transformationsszenarios, beginnend
mit der Task mit der kleinsten Task-Frist, wodurch eine transformierte
Task-Frist für
jede der mehreren Tasks erzeugt wird;
Definieren einer zweiten
Liste der mehreren Tasks, wobei die zweite Liste der mehreren Tasks
mit der transformierten Task-Frist als Primärschlüssel sortiert wird und wobei
weiterhin jede transformierte Task-Frist einer Task mit einer ersten
Task-Kritizität
kleiner als jede transformierte Task-Frist einer Task mit einer
kleineren Task-Kritizität
als die erste Task-Kritizität
ist; und
Zuweisen von Einteilungspriorität in einer Reihenfolge der
zweiten Liste der mehreren Tasks, wodurch die zugewiesene Einteilungspriorität erzeugt
wird.
-
1A ist
ein Schaltbild eines Flugleitsystems zur Verwendung gemäß einer
Armausführungsform
der Erfindung.
-
1B ist
ein Schaltbild eines redundanten Flugleitsystems zur Verwendung
gemäß einer
Ausführungsform
der Erfindung.
-
1C ist
ein Blockschaltbild eines Multitask-Systems gemäß einer Ausführungsform
der Erfindung.
-
2 ist
eine Ausführungs-Zeitlinie
einer Task gemäß einer
Ausführungsform
der Erfindung.
-
3 ist
ein Schaltbild von Verbindungstypen für die Nachrichtenweiterleitung
gemäß einer
Ausführungsform
der Erfindung, die mit Task-Objekten dargestellt ist.
-
4 ist
ein Schaltbild eines Hardwareobjekts gemäß einer Ausführungsform
der Erfindung.
-
5 ist
ein Schaltbild von Ende-zu-Ende-Berechnungen und der Kommunikation
gemäß einer
Ausführungsform
der Erfindung.
-
6 ist
ein Schaltbild einer Task-Exekutive gemäß einer Ausführungsform
der Erfindung.
-
7 ist
ein Schaltbild von Exekutivpuffern gemäß einer Ausführungsform
der Erfindung.
-
8 ist
ein Prozeßflußdiagramm
einer Abfertiger-Task gemäß einer
Ausführungsform
der Erfindung.
-
9 ist
ein Prozeßflußdiagramm
eines Ereignis-Handlers
gemäß einer
Ausführungsform
der Erfindung.
-
10 ist
ein Prozeßflußdiagramm
einer Dienstkomponente gemäß einer
Ausführungsform
der Erfindung.
-
11 ist
ein Prozeßflußdiagramm
der Tasklistenerzeugung gemäß einer
Ausführungsform
der Erfindung.
-
12 ist
eine Darstellung beispielhafter Transformationsszenarien zur Verwendung
gemäß Ausführungsformen
der Erfindung.
-
13 ist
ein Prozeßflußdiagramm
der Tasktransformation gemäß einer
Ausführungsform
der Erfindung.
-
14 ist
ein Blockschaltbild eines elektronischen Systems gemäß einer
Ausführungsform
der Erfindung.
-
Beschreibung
der Ausführungsformen
-
In der folgenden ausführlichen
Beschreibung der bevorzugten Ausführungsformen wird auf die beigefügten Zeichnungen
Bezug genommen, die einen Teil der Beschreibung bilden, und in denen
zur Veranschaulichung spezifische Ausführungsformen gezeigt sind,
in denen die Erfindungen ausgeübt
werden können.
Diese Ausführungsformen
werden ausführlich
genug beschrieben, damit Fachleute die Erfindung ausüben können, und
es versteht sich, daß andere
Ausführungsformen
verwendet und daß Prozeß- oder
mechanische Änderungen
vorgenommen werden können,
ohne vom Schutzumfang der vorliegenden Erfindung abzuweichen. Die
folgende ausführliche
Beschreibung ist deshalb nicht in einem einschränkenden Sinne aufzufassen,
und der Schutzumfang der vorliegenden Erfindung wird nur durch die
angefügten
Ansprüche
definiert.
-
1A ist
ein Schaltbild eines Flugleitsystems 100. Die Flugleittask 105 wird
mit einer bestimmten periodischen Rate ausgeführt. Die Flugleittask 105 empfängt Sensordaten
(S) 115 von dem Sensor 110, berechnet eine Funktion ƒ mit den
Sensordaten 115 und in einer vorherigen Abfertigung (Xm) berechneten Zustandsdaten 130 als
Eingaben und schreibt eine Ausgabe (Xm+1) 120 in
ein Stellglied 125. Man kann dies als Xm+1 = ƒ(Xm, S) schreiben. Die Sensordaten 115 sollten
im wesentlichen ohne Verzögerung
zu der Flugleittask 105 transferiert werden, und die Flugleittask 105 darf
erst dann ausgeführt
werden, wenn sie die Sensordaten 115 empfangen hat. Dieser
unverzögerte
Transfer ist durch einen Pfeil mit zwei Spitzen dargestellt.
-
Die Stellgliedausgabe 120,
die zum Zeitpunkt t aus den Sensordaten 115 berechnet wird,
sollte mit minimalem Jitter genau zum Zeitpunkt t + Δ geschrieben
werden, wobei Δ und
die Taskperiode von einem Regelungsingenieur auf der Grundlage von
Systemanforderungen bestimmt und spezifiziert werden. Häufig ist Δ eine Frist,
die vor der nächsten
Abfertigung der Flugleittask auftritt. Die Zustandsinformationen
(Xm) 130, die bei der m-ten Abfertigung
der Task berechnet werden, müssen
bei der (m+1)-ten Abfertigung der Task empfangen werden. Dieser
verzögerte
Datenfluß wird
durch die Rückkopplungsverbindung
von der Flugleittask zu sich selbst dargestellt. Die Rückkopplungsdaten
aus der Flugleittask zu sich selbst können auch mit einer bestimmten
festen und unveränderlichen
Verzögerung,
z.B. der Periode dieser Task, transferiert werden. Diese beiden
letzteren Transfers werden als Verbindungen mit Einzelabtastverzögerung (SSD – Single
Sample Delay) bezeichnet.
-
Wenn Daten von einer periodischen
Task A zu einer periodischen Task B (möglicherweise mit verschiedenen
Raten) gesendet werden und wenn die i-te Abfertigung von B Daten
von der j-ten Abfertigung von A in einem beliebigen einteilbaren
Lauf empfängt,
muß es
dies in jedem einteilbaren Lauf durchführen, um Anforderungen bezüglich der
Rückkopplungsregelungsbestimmtheit
zu erfüllen.
Dies gilt sowohl für
unverzögerte als
auch für
SSD-Verbindungen.
-
1B zeigt
eine Variante eines Flugleitsystems 100 mit Redundanz.
Das Flugleitsystem 100 enthält ferner eine Primärflugleittask 105A,
eine Sekundärflugleittask 105B und
eine Komparatortask 135 zur Wahl der Ausgabe (120A oder 120B),
die für
die Steuerung des Systems verwendet wird. Die Ende-zu-Ende-Frist Δ zwischen
dem Lesen der Sensoreingabe 115 und dem Schreiben der Stellgliedausgabe 120 gilt
für die Ausführung aller
drei Tasks (105A, 105B und 135) und für den Zwischendatentransfer
zwischen den beiden Flugleittasks 105A und 105B und
der Komparatortask 135. Der Datentransfer von den Flugleittasks 105A und 105B zu
der Komparatortask 135 muß im wesentlichen unverzögert sein
und es besteht eine Einteilungsvorgangeinschränkung zwischen den beiden Flugleittasks 105A und 105B und
der Komparatortask 135.
-
Bei einer Ausführungsform der Erfindung liefert
das System eine zuvorkommende Festprioritätseinteilung periodischer und
aperiodischer Tasks und Zuweisungen zwischen Nachrichtenpuffervariablen.
Prioritäten werden
invers mit der Periode oder Frist zugewiesen, so daß Tasks
mit kürzeren
Perioden oder Fristen höhere Einteilungsprioritäten aufweisen.
Wenn die Anfangsprioritätszuweisung
nicht mit Task-Kitizitäten
vereinbar ist, dann werden die Perioden und/oder Fristen von Tasks
mit hoher Kritizität
transformiert, d.h. die Tasks werden zu kleineren Stücken zerlegt,
die sequenziell mit höheren
Raten abgefertigt werden. Bei aperiodischer Einteilung verwendet
die Ausführungsform
sowohl Algorithmen mit zurückstellbarem
Server als auch mit Periodendurchsetzung. Bei einer anderen Ausführungsform
liefert das System einen Echtzeit-Slack-Einteiler.
-
Für
die Einteilbarkeitsanalyse wird ein exakter Charakterisierungsalgorithmus
verwendet, der erweitert ist, um Empfindlichkeitsanalyseinformationen
zu liefern. Das Ausführungsbeispiel
wurde in einem Metall-Toolset implementiert, das automatisch formale
Einteilbarkeits-, Zuverlässigkeits-
und Partitionierungsmodelle eines Systems erzeugt und analysiert;
und automatisch das System zusammenstellt, Bilder für jeden
Systemprozessor aufbaut, wobei erzeugter Einteilungs- und Kommunikationscode
verwendet wird. Das Metall-Toolset wird von Honeywell, Inc., Minneapolis,
Minnesota, USA, entwickelt und vertrieben.
-
Es können andere CASE-Werkzeuge
(Computer-Aided Software Engineering) mit den verschiedenen Ausführungsformen
der Erfindung verwendet werden.
-
Mit Bezug auf 1C ist das Tasksystem 100 ein
Multitask-System mit mindestens zwei einteilbaren Anwendungstasks 110.
Die Einteilung der Anwendungstasks 110 in dem Task-System 100 sowie
die Kommunikation der Anwendungstasks 110 wird durch eine
Exekutiv-Task 150 gesteuert. Jede Task 110 in
dem Task-System 100 wird entweder für periodische Tasks wiederholt
abgefertigt, oder für
aperiodische Tasks als Reaktion auf ein bestimmtes Ereignis, d.h.
ein softwareerzeugtes, Interrupt- oder anderweitiges Ereignis. Eine Task 110 ist
in nur einem Prozessor 120 verankert bzw. wird von diesem
durchgeführt.
-
2 zeigt
die Task-Ausführungszeitlinie
einer Task 110, die jeder Abfertigung und den hier für gewählte Zeitpunkte
und Zeitintervalle definierten Regeln folgt. Der Begriff "Task-Zeitpunkt" bedeutet eine spezifische
Abfertigung einer Task 110 und der zugeordneten Sequenz
von folgenden Aktivitäten
und Einteilungspunkten. Zwischen jeder Abfertigung einer Task 110 und
der folgenden Frist muß eine
Task eine bestimmte Menge an Arbeit durchführen und eine bestimmte Menge
an Rechenzeit von dem Prozessor erhalten. Der Prozessor kann jedoch
auch zwischen Abfertigung und Abschluß etwas Zeit mit der Arbeit
an anderen Tasks 110 verbringen, und in diesen Zeitspannen
wird gesagt, daß andere
Tasks 110 einer Task 110 zuvorkommen. Eine wichtige
Beobachtung besteht darin, daß Task-Abfertigungen, d.h.
wann eine Task 110 in eine mit Prioritäten versehene Bereitschaftswarteschlange
eingereiht wird, und Fristen, d.h. eine bestimmte systemdefinierte
Frist oder andere Einschränkung
für den
Abschluß der
Task, für
periodische Tasks zu deterministischen Zeitpunkten auftreten. Die
Task-Startzeit,
d.h. wann die Berechnung der Task beginnt, und Abschlußzeiten,
d.h. wann die Berechnung der Task abgeschlossen ist, können jedoch
abhängig
von Einteilungs- und Rechenzeitanforderungen unterschiedlich sein.
-
Tasks 110 werden mit vier
Primärparametern
charakterisiert. Die Klasse einer Task ist entweder periodisch,
d.h. regelmäßig für die Abfertigung
eingeteilt, oder aperiodisch, d.h. wird als Reaktion auf ein bestimmtes,
nicht eingeteiltes Ereignis abgefertigt. Die Periode einer Task
ist der Zeitraum zwischen Abfertigungen einer periodischen Task
oder der minimale Zeitraum zwischen Ereignisankünften für eine aperiodische Task. Die Rechenzeit
einer Task ist die obere Schranke für die Menge an Prozessorzeit,
die eine Instanz dieser Task benötigt,
um nach jeder Abfertigung fertig zu werden. In der Praxis wird der
Sicherheitsgrad, daß die
tatsächliche Rechenzeit
diesen Wert nicht überschreitet,
abhängig
von der Task unterschiedlich sein.
-
Die Kritizität einer Task ist bei eine Ausführungsform
ein ganzzahliger Wert, der zur Steuerung des Einteilungsverhaltens
verwendet wird, wenn Prozessoren überlastet sind, d.h. wenn eine
bestimmte Teilmenge von Tasks nicht einteilbar ist. Obwohl ein solches
numerisches Einstufungssystem für
die Implementierung zweckmäßig ist,
können
andere Einstufungssysteme verwendet werden. Die Einteilbarkeit einer
Task wird nur durch Tasks auf demselben Prozessor mit einer Kritizität, die größer oder
gleich ihrer eigenen Kritizität
ist, beeinflußt.
Tasks mit niedrigerer Kritizität
können
ihre Nennrechenzeiten überschreiten
oder können
bei aperiodischen Tasks mit einer höheren Rate als ihre Nennperioden
abgefertigt werden, ohne daß dadurch
eine Task mit höherer
Kritizität
eine Frist verpaßt.
-
Bei einer Ausführungsform sind Nachrichten
Werte, die gemäß einer
spezifizierten Menge von Verbindungen von Ausgangspuffervariablen
in Absendertasks zu Eingangspuffervariablen in Empfängertasks
transferiert werden. In der Spezifikationssprache Metall kann jede
Task einen oder mehrere Eingangs- oder Ausgangsports aufweisen,
die Puffervariablendeklarationen in dem Task-Quellcode auszeichnen,
und Verbindungen können
zwischen Ports mit kompatiblem Typ hergestellt werden (siehe 3). Wie in 3 gezeigt, weist die Task 1101 einen Ausgangspuffer 310 mit
einer Einzelabtastverzögerung
und einen unverzögerten
Eingangspuffer 340 auf. Die Task 1102 weist
einen Eingangspuffer 320 mit einer Einzelabtastverzögerung und
einen unverzögerten
Ausgangspuffer 330 auf. Die Tasks 1101 und 1102 können
zusätzliche
oder andere Eingangs- und Ausgangspuffer aufweisen.
-
Der Ausgangspuffer 310 mit
einer Einzelabtastverzögerung
führt seinen
Nachrichtenwert dem Eingangspuffer 320 mit einer Einzelabtastverzögerung zu.
Der unverzögerte
Ausgangspuffer 330 führt
seinen Nachrichtenwert dem unverzögerten Eingangspuffer 340 zu.
-
Ankommende Nachrichten werden in
die Eingangspuffer einer Empfängertask
abgelegt, bevor sie startet, und es wird angenommen, daß abgehende
Nachrichten in den Ausgangspuffern einer Task verfügbar sind,
wenn sie fertig ist. Ohne jegliche anderen Einschränkungen
der Task-Einteilung in einem einteilbaren System sollten ankommende
Nachrichten bei der Taskabfertigung verfügbar sein, und abgehende Nachrichten sind
möglicherweise
nicht vor der Task-Frist verfügbar.
Eine Task ist ein Absender, wenn sie einen Nachrichtenwert von ihrem
Ausgangspuffer sendet, und ein Empfänger, wenn sie einen Nachrichtenwert
in ihrem Eingangspuffer empfängt.
-
Bei dem Ausführungsbeispiel gibt es zwei
Arten von Nachrichtenverbindungen. Die erste ist eine Verbindung
mit einer Einzelabtastverzögerung.
Die zweite ist eine unverzögerte
Nachrichtenverbindung.
-
Eine Verbindung mit einer Einzelabtastverzögerung bewirkt,
daß der
durch eine Taskinstanz empfangene Wert derjenige ist, der an der
jüngsten
Absenderfrist verfügbar
ist, die der Empfängerabfertigung
vorausging oder zum selben Zeitpunkt wie sie auftrat. Bei einer
Ausführungsform
kommt es zu einer Ausnahme, wenn der Absender eine aperiodische
Task ist, so daß der
Nachrichtenwert zum Abschlußzeitpunkt
anstelle der Frist des Absenders erhalten wird.
-
Hardwareobjekte dürfen Ports besitzen, z.B. Einrichtungssteuerregister,
die in den Speicherraum abgebildet werden. Wie in 4 gezeigt, kann das Hardwareobjekt 400 einen
oder mehrere Hardware-Eingangsports 410 und
einen oder mehrere Hardware-Ausgangsports 420 aufweisen.
Transfers zu oder von Hardwareports erfolgen an der Frist der Absendertask
bzw. der Abfertigung der Empfängertaskinstanz.
Wie bereits erwähnt,
können
für aperiodische
Tasks die Transfers zu einem Hardwareport von einer aperiodischen
Task zum Abschlußzeitpunkt
der Task auftreten. Hardwareobjekte führen Tasks Nachrichtenwerte
zu, z.B. Tastatureingabe von Daten oder Daten aus einem maschinenlesbaren
Medium, und nehmen Nachrichtenwerte von Tasks an, z.B. zur Anzeige
für einen
Endbenutzer oder zur Steuerung industrieller Geräte. Ähnlich wie bei Tasks ist ein
Hardwareobjekt ein Absender, wenn es einen Nachrichtenwert von seinem
Ausgangsport sendet, und ein Empfänger, wenn es einen Nachrichtenwert
an seinem Eingangsport empfängt.
-
Jede Task oder Einrichtung, die unverzögerte Nachrichten
ausgibt und nicht eingibt, wird als eine Quelle bezeichnet. Jede
Task oder Einrichtung, die unverzögerte Nachrichten eingibt und
nicht ausgibt, wird als eine Senke bezeichnet. Jede Task oder Einrichtung,
die unverzögerte
Nachrichten ausgibt, wird als ein Produzent bezeichnet. Eine Quelle
ist definitionsgemäß ein Produzent.
Jede Task oder Einrichtung, die unverzögerte Nachrichten eingibt,
wird als ein Verbraucher bezeichnet. Eine Senke ist definitionsgemäß ein Verbraucher.
-
Da Fristen und Abfertigungen für periodische
Tasks zu deterministischen Zeiten auftreten, führt dies zu einer strikt deterministischen
Datenabhängigkeit
zwischen periodischen Tasks. Das heißt, wenn die ƒ-te Instanz
einer Task Daten von der i-ten Instanz einer anderen Task in einem
beliebigen einteilbaren Lauf des Systems Daten empfängt, geschieht
dies in allen einteilbaren Läufen
des Systems. 5 zeigt
ein Beispiel für
die Weiterleitung unverzögerter
Nachrichten zwischen periodischen Tasks, wobei A unverzögerte Verbindungen zu
B und C, und B eine unverzögerte
Verbindung zu C aufweist. In 5 empfängt die
1. Instanz der Task C Eingaben von den 1. Instanzen der Tasks A
und B, während
die 2. Instanz der Task C Eingaben von der 3. Instanz von Task A
und der 1. Instanz von Task 3 empfängt. Die Abhängigkeit
zwischen periodischen Tasks mit unverzögerter Nachrichtenweiterleitung
wiederholt sich in jedem einteilbaren Ablauf des Task-Systems. Die im
Fall eines aperiodischen Absenders erlaubte Ausnahme wird als akzeptabler
Verlust an Determinismus betrachtet, da aperiodische Abfertigungszeiten
selbst in gewissem Sinne nicht deterministisch sind und dies eine einfachere
Implementierung ermöglicht.
-
Eine unverzögerte Verbindung richtet eine
Vorausgang-Einschränkung sowie
eine Datenabhängigkeit zwischen
Task-Instanzen ein. Der Absender wird bis zum Abschluß ausgeführt, die
Nachricht transferiert und der Empfänger darf dann starten. Bei
einer Ausführungsform
enthält
das Task-System 100 die folgenden Einschränkungen
bezüglich
unverzögerter
Nachrichten verbindungen in dem sogenannten paarweise synchronen Abfertigungsmodell.
-
- 1. Die Menge unverzögerter Nachrichtenverbindungen
und die zugeordneten Tasks müssen
einen gerichtete azyklischen Graphen bilden.
- 2. Jedes Paar periodischer Tasks, das durch eine unverzögerte Verbindung
kommuniziert, muß harmonische
Perioden aufweisen, d.h. die Periode der einen muß ein ganzzahliges
Vielfaches der Periode der anderen sein. Man beachte, daß Transitivität bewirkt,
daß alle
Tasks in einer unverzögerten
Kette harmonisch sind, aber nicht in parallelen Zweigen eines Baums.
Man betrachte z.B. parallele Zweige der unverzögerten Ketten A->>B->>C1 und A->>B->>C2,
wenn die Perioden von A, B, C1 und C2 5 ms, 10 ms, 20 ms bzw. 30 ms betragen.
- 3. Der Absender einer unverzögerten
Nachricht darf nur dann eine niedrigere Kritizität als der Empfänger aufweisen,
wenn der Absender eine erzwungene Rechenzeit und minimale Ereigniszwischenankunftszeiten
aufweist.
-
Ein unverzögerter Datentransfer erfolgt
zwischen zwei periodischen Taskinstanzen nur dann, wenn sie zum
selben Zeitpunkt abgefertigt wurden, d.h. paarweise synchrone Abfertigung.
Bei dem Modell der paarweise synchronen Abfertigung wird zuerst
der Absender bis zum Abschluß ausgeführt und
der Empfängerstart wird
bis nach dem Transfer der Nachricht verzögert. Eine gesamte Kette von
Berechnungen und Übermittlungen
unverzögerter
Nachrichten von Ende zu Ende weist die Frist der letzten Empfängertask
auf. Wieder mit Bezug auf 5,
wobei A unverzögerte
Verbindungen zu B und C, und B eine unverzögerte Verbindung zu C aufweist,
ist zu beachten, daß keine
Anforderung besteht, daß Absender
eine höhere
Abfertigungsrate als Empfänger
aufweisen.
-
In dem Beispiel von 5 führt
C eine Überabtastung
der von B empfangenen Daten durch.
-
Wenn entweder die Absender- oder
die Empfängertask
aperiodisch ist, gelten die Anordnungseinschränkung und der Nachrichtentransfer
für die
nächste
Instanz der Empfängertask,
die bei der Abfertigung der Absendertask oder danach abgefertigt
wird. Dadurch können
z.B. aperiodische Tasks Daten weiterleiten und nachfolgende aperiodische
Tasks abfertigen, um Bäume
koordinierender Task-Instanzen zu bilden.
-
Wenn eine unverzögerte Verbindung aus einem
Hardware-Ausgangsport
kommt, wird der Nachrichtenwert bei der Abfertigung der Empfängertask
transferiert. Wenn eine unverzögerte
Verbindung zu einem Hardware-Eingangsport kommt, wird der Wert beim
Abschluß der
Absendertask transferiert. Man beachte, daß unverzögerte Verbindungen zu Hardwareports
zeitlich nicht deterministisch sind. Folglich können sie aufgrund von Rechenzeit-
und Einteilungsvariabilität
Jitter aufweisen.
-
Bei einer Ausführungsform teilt die Exekutivtask 150 Tasks
unter Verwendung einer zuvorkommenden Festprioritätsdisziplin
ein. Die Exekutivtask 150 ist für die Verwaltung von Taskprioritäten, das
Abfertigen von Tasks (Einreihen dieser in eine Bereitschaftswarteschlange
mit Prioritäten),
das Suspendieren von Tasks (Entfernen dieser aus der Bereitschaftswarteschlange)
und das Verschieben von Daten zwischen Taskpuffervariablen verantwortlich.
Mit Bezug auf 6 enthält die Exekutivtask 150 drei
Komponenten:
- 1. eine periodische Abfertigertask 610,
die die Task mit der höchsten
Priorität
in dem Task-System 100 ist und periodische Abfertigungen
von Tasks 110 und ihre Einzelabtastverzögerungsübermittlungen verwaltet,
- 2. einen Ereignis-Handler 620, der aperiodische Abfertigungen
von Tasks 110 und ihre Einzelabtastverzögerungsübermittlungen verwaltet,
- 3. eine Dienstkomponente 630, die Taskabschlüsse und
alle unverzögerten Übermittlungen
von Tasks 110 verwaltet.
-
Diese drei Komponenten können automatisch
aus einer Metall-Spezifikation von Tasks und ihren Nachrichten- und Ereignisverbindungen
erzeugt werden.
-
Die Nachrichtenweiterleitung wird
durch Zuweisungen zwischen Taskpuffervariablen implementiert. In vielen
Fällen
kann eine Exekutivpuffervariable zugeteilt und in der Exekutivtask 150 verwendet
werden, z.B. Verbindungen zwischen nicht harmonischen oder aperiodischen
Tasks. Im allgemeinen wird eine Verschiebung von Nachrichtendaten
als eine Zuweisung von der Puffervariablen eines Absenders zu einer
Exekutivpuffervariablen, gefolgt durch eine Zuweisung von der Exekutivpuffervariablen
zu der Puffervariablen des Empfängers
implementiert. Zum Beispiel leitet in 7 die
Absendertask 1101 ihren Nachrichtenwert
von einem Ausgangspuffer 710 zu einem Schatten-Ausgangspuffer 720,
einem Exekutivpuffer, weiter. Der Schatten-Ausgangspuffer 720 leitet seinerseits
den Nachrichtenwert zu dem Schatten-Eingangspuffer 730,
einem weiteren Exekutivpuffer, weiter. Der Schatten-Eingangspuffer 730 leitet
den Nachrichtenwert zu einem Eingangspuffer 740 der Empfängertask 1102 weiter. Die beiden Zuweisungen, d.h.
vom Sender zur Exekutive und von der Exekutive zum Empfänger, können an
verschiedenen Einteilungspunkten stattfinden, z.B. die erste an der
Frist einer periodischen Absendertask 1101 und
die zweite bei der Abfertigung einer periodischen Empfängertask 1102 . Bei einer Ausführungsform könnte die
Zwischenzuweisung eines Nachrichtenwerts zu einer Exekutivpuffervariablen
für Verbindungen
zwischen harmonischen periodischen Tasks, deren Fristen gleich ihren Perioden
sind, wegoptimiert werden, so daß die Absendertask 1101 ihren Nachrichtenwert direkt zu der
Empfängertask 1102 weiterleitet, wie durch die gestrichelte
Linie 750 gezeigt. In diesem Fall werden die Exekutivpuffer
eliminiert. In einer anderen Ausführungsform sind der Schatten-Ausgangspuffer
und der Schatten-Eingangspuffer derselbe Exekutivpuffer, der der
Zweckmäßigkeit
halber als Schatten-Eingangspuffer
bezeichnet wird.
-
Die Abfertigertask 610 führt eine
Einzelabtastverzögerungsnachrichtenweiterleitung
zwischen periodischen Tasks und eine Abfertigung periodischer Tasks
durch. Die Abfertigertask 610 wird in der Regel als der Handler
eines periodischen Hardwaretaktinterrupts, der nahezu gleichzeitig
an allen Prozessoren auftritt, implementiert. Die Interruptrate
sollte so gewählt
sein, daß jede
Abfertigung und Frist ein ganzzahliges Vielfaches der Interruptperiode
ist, z.B. der größte gemeinsame
Teiler der Perioden und Fristen, die in der Systemspezifikation
erscheinen.
-
Bei jedem Interrupt wird ein Zykluszähler um
1 erhöht
(Modulo einen bestimmten großen
Wert, der ein gemeinsames Vielfaches aller Perioden ist). Die periodischen
Aktionen, die bei jedem Interrupt auftreten sollen, werden dadurch
bestimmt, ob der Zykluszähler
gerade durch die Periodizität
einer Aktion teilbar ist oder nicht.
-
Bei einer Ausführungsform kann ein Prozeßfluß der Abfertigertask
610 mit
Bezug auf
8 beschrieben
werden.
8 ist ein Prozeßflußdiagramm
mit Aktionsboxen
810,
820,
840 und
850 sowie
einer Entscheidungsbox
830. In der Aktionsbox
810 wird
die Abfertigertask
610 darauf vorbereitet, an dem periodischen
Interrupts, wie z.B. einem Hardwaretaktinterrupt, abzulaufen. Nach
dem Empfang des periodischen Interrupt wird der Zykluszähler in
der Aktionsbox
820 erhöht.
Die Entscheidungsbox
830 bestimmt, ob etwaige eingeteilte
Tasks in diesem Zyklus abgefertigt werden sollen, d.h. wenn der
Zyklus die Größe der Taskperiode,
dividiert durch das periodische Interrupt, gerade teilt. wenn in
der Entscheidungsbox
830 Tasks abgefertigt werden sollen,
bestimmt die Aktionsbox
840 die Menge (S) aller abzufertigenden
Tasks. In der Aktionsbox
850 erfolgt für die periodischen Tasks, die
die Kriterien der Entscheidungsbox
830 erfüllen, Nachrichtenzuweisungen
von Puffer zu Puffer und diese Tasks werden abgefertigt. Die Steuerung
wird dann an die durch das periodische Interrupt unterbrochenen
Tasks zurückgegeben.
Die Abfertigung der periodischen Tasks kann als Hinzufügen der
Tasks zu einer Bereitschaftswarteschlange
890 angesehen
werden. Mit Bezug auf
8 wird
das folgende Beispiel angegeben:
-
Der Ereignis-Handler 620 wird
immer dann ausgeführt,
wenn externe Interrupts oder interne, durch Software erzeugte Ereignisse
auftreten. Bei der Abfertigung aperiodischer Tasks zu empfangende
Nachrichtenwerte werden ihren Eingangspuffervariablen zugewiesen
und die Tasks werden abgefertigt.
-
9 ist
ein Prozeßflußdiagramm
einer Ausführungsform
des Ereignis-Handlers 620. 9 enthält die Aktionsboxen 910, 920 und 930.
In der Aktionsbox 910 wird der Ereignis-Handler 620 als
Reaktion auf ein durch Software erzeugtes Ereignis oder einen externen
Interrupt ausgeführt.
Nach dem Empfang des Interrupts in der Aktionsbox 910 weist
der Ereignis-Handler 620 ihren Taskeingangspuffern in der
Aktionsbox 920 Nachrichtenwerte zu. Die dem Interrupt in 910 zugeordnete
aperiodische Task bzw. zugeordneten aperiodischen Tasks werden in
der Aktionsbox 930 abgefertigt. Die Steuerung wird dann
an die Bereitschaftstask mit der höchsten Priorität zurückgegeben.
Wie bei der Abfertigungstask 610 umfaßt das Abfertigen einer aperiodischen
Task das Einreihen der aperiodischen Task in der Bereitschaftswarteschlange 890.
-
Die Dienstkomponente 630 wird
ausgeführt,
wenn eine Taskinstanz abgeschlossen wird. Die abschließende Task
wird aus der Bereitschaftswarteschlange 890 entfernt. Durch
die abschließende
Task erzeugte Ausgangswerte werden entsprechenden Exekutiv- oder
Empfängertaskpuffervariablen
gemäß den nachfolgend
angegebenen Regeln zugewiesen. Diese Zuweisungen sind konditional,
abhängig
von Informationen, die bei der Abfertigung jeder Task, die unverzögerte Nachrichten
empfangen kann, aufgezeichnet werden. Bei jeder Abfertigung einer
periodischen Task, die eine unverzögerte Eingabe von einer anderen
periodischen Task empfangen kann, wird der Zyklus, an dem diese
Task abgefertigt wird, aufgezeichnet. Bei der Abfertigung jeder aperiodischen
Task, die eine unverzögerte
Eingabe von einer anderen Task empfangen kann, wird der Einteilungszustand
jeder Absendertask (Warten auf Abfertigung oder abgefertigt, aber
noch nicht abgeschlossen) aufgezeichnet.
-
10 ist
ein Prozeßflußdiagramm
einer Ausführungsform
der Dienstkomponente
630.
10 enthält die Aktionsboxen
1010,
1020 und
1030.
In der Aktionsbox
1010 wird die Dienstkomponente
630 ausgeführt, wenn
eine Task abgeschlossen ist. Nach dem Abschluß einer Task oder von Tasks,
was zu der Aktionsbox
1010 führt, entfernt die Dienstkomponente
630 die
abschließende
Task oder die abschließenden
Tasks aus der Bereitschaftswarteschlange
890. Ausgaben
aus der abschließenden
Task oder den abschließenden Tasks
werden in der Aktionsbox
1030 einem Exekutiv- oder Empfängerpuffer
zugewiesen. Die Steuerung geht dann an die Task mit der höchsten Priorität in der
Bereitschaftswarteschlange. Die Zuweisung der Ausgabe in der Aktionsbox
1030 kann
mit Bezug auf Tabelle 1 weiterbeschrieben werden. Tabelle
1
Nachrichtenweiterleitungszeitsteuerung
mit:
- <<-
- = unverzögerte Nachrichtenweiterleitung
- <-
- = einzelabtastverzögerte Nachrichtenweiterleitung
- XR.in
- = Eingangspuffer für Task X,
mit X = P (periodisch), A (aperiodisch) oder D (Einrichtung)
- XR.in.buffer
- = Schatten-Eingangspuffer
für Task
X, mit X = P, A oder D
- XS.out
- =Ausgangspuffer für Task X,
mit X = P, A oder D
- PR
- = Periodischer Empfänger
- PS
- = Periodischer Absender
- AR
- = Aperiodischer Empfänger
- AS
- = Aperiodischer Absender
- DR
- = Einrichtungsempfänger
- DS
- = Einrichtungsabsender
- DS(n)
- = Nächste Abfertigung
der Absendertask
- DS(l)
- = Letzte Abfertigung
der Absendertask
- DR(n)
- = Nächste Abfertigung
der Empfängertask
- DS(1)
- = Letzte Abfertigung
der Empfängertask
- SR(n)
- = Nächste Startzeit
der Empfängertask
- CS(n)
- = Nächste Abschlußzeit der
Absendertask
- LS(n)
- = Nächste Frist
der Absendertask
-
Bei einer Ausführungsform weist ein Prioritätszuweisungsalgorithmus
dem Absender einer unverzögerten
Nachricht eine höhere
Priorität
als allen seinen signalabwärts
befindlichen Empfängern
zu. Zu signalabwärts
befindlichen Empfängern
gehören
jede Task, die direkt die unverzögerte
Nachricht empfängt,
sowie alle empfangenden Tasks in einem acylischen Graphen, dessen
Wurzel am Absender der unverzögerten Nachricht
liegt. Dadurch wird garantiert, daß jeder Task, deren Puffer
bei Abschluß einer
anderen Task beschrieben werden, d.h. jeder Task, die unverzögerte Werte
von einer anderen Task empfängt,
von dem Zeitpunkt ihrer Abfertigung bis zum Zeitpunkt der Zuweisung
zuvorgekommen worden ist, und sie somit erst nach der Zuweisung
startet.
-
Immer dann, wenn es möglich ist,
wird eine Task mit hoher Kritizität aber langer Periode transformiert, so
daß eine
fristenmonotone Prioritätszuweisung
verwendet werden kann. Bei einer Ausführungsform ist die Periodentransformation
eine Art der Steuerung des Time-Slicing. Die Rechenzeit der transformierten
Task wird durch einen bestimmten ganzzahligen wert dividiert, um
zu einem Zeitschlitz für
diese Task zu kommen. Eine Abfertigung der transformierten Task
wird in eine Abfertigung, der eine Reihe von periodischen Wiederaufnahmen
folgt, umgesetzt. Jede Abfertigung und Wiederaufnahme gewährt einen
Zeitschlitz und nach dem Aufbrauchen jedes Zeitschlitzes wird eine
transformierte Task bis zu ihrer nächsten Wiederaufnahme suspendiert. Der
Gesamteffekt besteht darin, daß eine
Task mit niedriger Rate wie eine Task mit hoher Rate mit kleinerer Rechenzeit
und somit höherer
Priorität
aussieht.
-
Zur Periodentransformation periodischer
Tasks werden die Abfertigungen und Wiederaufnahmen einfach in die
entsprechenden Fälle
der Abfertiger-Case-Anweisung eingefügt (Q1 wird
dann auf ein Vielfaches aller transformierten Perioden eingeschränkt). Die
Periodentransformation aperiodischer Tasks hängt von dem verwendeten Einteilungsprotokoll
ab. Eine Periodentransformation kann einfach unter Verwendung des
zurückstellbaren
Serverprotokolls angewandt werden, da dieses Protokoll im wesentlichen
gesteuertes Time-Slicing mit Slave-Beziehung zu der Abfertigerfrequenz
ist. Bei einer Ausführungsform
wird die Periodendurchsetzung approximiert durch Definieren der
Wiederfreigabe einer Task als die nächste Abfertiger-Taskabfertigung und
es könnte
auch eine analoge approximative Periodentransformation durchgeführt werden.
Die Task-Einteilung kann auch so ausgelegt werden, daß sie Kritizität berücksichtigt.
-
Das Metall-Toolset erzeugt Datentabellen
und Code für
die Abfertigertask 610, den Ereignis-Handler 620 und
die Dienstkomponente 630. Außerdem erzeugt und analysiert
sie ein Echtzeit-Einteilbarkeitsmodell des Task-Systems 100.
-
Die unverzögerten Nachrichtenverbindungen
und Tasks werden geprüft,
um sicherzustellen, daß sie keine
Zyklen enthalten. Je nach Notwendigkeit werden dann Taskfristen
reduziert, so daß die
Frist jedes Absenders einer unverzögerten Nachricht streng kleiner
als die Frist aller ihrer Empfänger
ist. Eine nachfolgende fristenmonotone Prioritätszuweisungsphase, die kürzeren Fristen
höhere
Prioritäten
zuweist, weist dem Sender einer unverzögerten Nachricht eine höhere Priorität als dem
Empfänger
zu. Dadurch wird sichergestellt, daß dem Empfänger zuvorgekommen bleibt und
er erst startet, wenn der Absender abgeschlossen ist (immer dann,
wenn die Bedingungen für
unverzögerten
Transfer erfüllt
sind).
-
Genauer gesagt wird zuerst die Menge
unverzögerter
Nachrichtenverbindungen auf Zyklen geprüft. Je nach Notwendigkeit werden
dann Taskfristen reduziert, so daß die Frist jedes Absenders
einer unverzögerten Nachricht
streng kleiner als die Frist aller ihrer Empfänger ist. Eine nachfolgende
fristenmonotone Prioritätszuweisungsphase,
die kürzeren
Fristen höhere
Prioritäten
zuweist, weist dem Sender einer unverzögerten Nachricht eine höhere Priorität als den
Empfängern
zu. Dadurch wird sichergestellt, daß den Empfängern zuvorgekommen bleibt
und er erst startet, wenn der Absender abgeschlossen ist (immer
dann, wenn die Bedingungen für
unverzögerten
Transfer erfüllt
sind).
-
Formaler ausgedrückt, wird die Menge aller unverzögerten Nachrichten
als eine Erreichbarkeitsmatrix R mit R(ij) = 1 für τi ->> τj und null andernfalls dargestellt. Man konstruiere
Rk(ij) = 1, wenn ein unverzögerter Verbindungsweg
von τi zu τj der genauen Länge k vorliegt und null andernfalls.
Zyklen, die nicht zugelassen sind, existieren, wenn für jedes 1 ≤ i,k ≤ nu, Rk(ij) = 1 ist,
wobei nu die Anzahl von Tasks mit unverzögerten Verbindungen
ist.
-
Als nächstes konstruiere man D aus
der Menge{Rk} durch D(ij)– max
{k|Rk(E–j)
= 1}. Anders ausgedrückt
ist D(ij) der unverzögerte
Nachrichtenverbindungsweg maximaler Länge von τi zu τj.
Es kann mehrere Wege geben, und in diesem Fall setze man D(ij) =
0 (anstelle von ). Die Frist jeder Task τ wird dann auf das Minimum ihrer
benutzerspezifischen Frist und der Fristen aller Tasks, die von τ aus erreicht
werden können, eingestellt.
Um verschiedene Fristen und Prioritätszuweisungen sicherzustellen,
werden diese Fristen dann um m∈ vermindert,
wobei m die maximale Verbindungstiefe zwischen einem Absender einer
unverzögerten Nachricht
und allen Blättern
in dem gerichteten azyklischen Graphen (DAG) unverzögerter Verbindungen
mit Wurzel an diesem Absender ist, und ∈ ist ein Zeitquantum, das
vorzugsweise mehrere Größenordnungen
kleiner als die Anzahl von Tasks mal dem Fristenquantum, d.h. der
Abfertiger-Taskrate, ist. Zum Beispiel kann ∈ 1 Nanosekunde betragen, wobei
erwartet wird, daß Fristen
Vielfache einer in Millisekunden gemessenen Abfertigertaskperiode
sind. Der Ausdruck interne Fristen wird so definiert, daß er diese
eingestellten Fristen bedeutet. In mathematischer Notation sei I(i)
= {k : D(i,k) > 0}.
I(i) ist der Indexsatz aller Tasks, die τi über eine unverzögerte Nachrichtenketten
erreichen kann. Für
jedes i gilt dann Frist von τi = mink∈I(1) {Frist
von τi, Frist von τk
– D(i,k)·∈}.
-
Zwischen den benutzerspezifizierten
Kritizitäten
für zwei
Tasks und den durch unverzögerte
Verbindungen und ihren entsprechenden internen Fristen implizierten
Prioritätszuweisungen
können
Konflikte entstehen. Wenn z.B. eine unverzögerte Verbindung von A nach
B besteht, dann muß A
eine höhere
Priorität
als B aufweisen, um die Vorausgangeinschränkung ordnungsgemäß zu implementieren,
aber B könnte
eine höhere benutzerspezifizierte
Kritizität
als A aufweisen. Durch Kritizität
von τi > Kritizität von τj und
j ∈ I(i)
wird dann ein Konflikttest gegeben. Solche Konflikte sind zulässig, solange
Rechenzeitgrenzen (und für
aperiodische Tasks eine Periodendurchsetzung) für den Absender spezifiziert
sind, und andernfalls handelt es sich um einen Fehler. Interne Fristen
(und Prioritäten)
werden gemäß Vorausgangeinschränkungen
unverzögerter
Verbindungen zugewiesen, anstatt gemäß benutzerspezifizierten Kritizitätsattributen,
wenn ein solcher Konflikt besteht. Benutzerspezifizierte Kritizitätswerte
werden je nach Notwendigkeit nach oben eingestellt, um akzeptable
Konflikte zu entfernen. Der Ausdruck interne Kritizitäten ist
so definiert, daß er
diese eingestellten Kritizitätswerte bedeutet.
-
Als ein Beispiel sei τu eine
Task, die eine unverzögerte
Nachricht sendet. Es sei Ru die Menge aller Tasks,
die letztendlich Eingaben τu direkt oder durch Zwischentasks über eine
Sequenz unverzögerter
Nachrichten empfangen werden. Ru enthält die Knoten
des DAG von Empfängertasks
mit Wurzel bei τu und wird leicht unter Verwendung eines
transitiven Abschlusses aller Tasks und ihrer Nachrichtenverbindungen
konstruiert. Da τu abgeschlossen sein muß, bevor eine Task in Ru beginnen kann, wird die interne Kritizität von τu auf das
Minimum ihrer benutzerspezifizierten Kritizität und der internen Kritizitäten von
Tasks in Ru eingestellt.
-
Die Liste von Tasks, die unverzögerte Nachrichten
senden oder empfangen, wird dann nach aufsteigenden internen Fristen
sortiert. Wenn mehrere Tasks gleiche Fristen aufweisen, dann wird
diese Subliste nach aufsteigender Kritizität sortiert. Das Ergebnis ist
eine sortierte Liste mit interner Frist als Primärschlüssel und interner Kritizität als Sekundärschlüssel, wobei
interne Fristen und interne Kritizitäten beide miteinander vereinbar
und in aufsteigen der Reihenfolge sind.
-
Die Liste verbleibender Tasks (Tasks,
die unverzögerte
Nachrichten weder senden noch empfangen) wird nun mit dieser Liste
in sortierter Reihenfolge unter Verwendung der benutzerspezifizierten
Frist als Primärschlüssel und
der benutzerspezifizierten Kritizität als Sekundärschlüssel zusammengeführt. Unstimmigkeiten
zwischen Kritizitätseinstufungen
und Fristeneinstufungen sind in dieser Liste zulässig. Diese Unstimmigkeiten
werden später
unter Verwendung der Periodentransformation eliminiert. Interne
Kritizitäten
und interne Fristen werden auf die benutzerspezifizierten Kritizitäten bzw.
die benutzerspezifizierten Fristen eingestellt.
-
Die zusammengeführte Liste von Tasks wird unter
Verwendung der internen Frist als Primärschlüssel und der internen Kritizität als Sekundärschlüssel sortiert.
Der nächste
Schritt ist das Transformieren der Perioden und Fristen der Tasks,
so daß sowohl
Kritizitäten
als auch Fristen in monotoner Reihenfolge vorliegen. Das heißt, alle
Tasks mit einer ersten Kritizität
weisen Fristen auf, die kleiner als jede Task mit einer niedrigeren Kritizität sind.
-
11 ist
ein Prozeßflußdiagramm
einer Ausführungsform
der obigen Tasklistenerzeugung. In 11 werden
die Liste von Tasks, die unverzögerte
Nachrichten senden oder empfangen und die Liste verbleibender Tasks
parallel erzeugt. Es besteht jedoch keine Anforderung einer solchen
parallelen Implementierung.
-
11 enthält die Aktionsboxen 1110, 1115, 1120, 1125, 1135, 1140, 1145, 1155, 1160, 1165 und 1170,
sowie die Entscheidungsboxen 1130 und 1150. Die
Erzeugung der Liste von Tasks, die unverzögerte Nachrichten senden oder
empfangen, für
jeden Prozessor beginnt mit der Aktionsbox 1110. In der
Aktionsbox 1115 werden interne Fristen so gesetzt, daß die Frist
jeder Absendertask streng kleiner als die Frist aller ihrer Empfänger ist.
Die Liste wird dann in der Aktionsbox 1115 nach interner
Frist sortiert. In der Aktionsbox 1125 werden interne Kritizitäten eingestellt,
um Konflikte zu entfernen. Die Entscheidungsbox 1130 bestimmt,
ob mehrere Tasks in der sortierten Liste gleiche interne Fristen
aufweisen. Wenn ja, werden der Teil bzw. die Teile der Liste mit
gleichen Fristen in der Aktionsbox 1135 nach interner Kritizität sortiert.
Wenn es keine Teile der Liste mit gleichen internen Fristen in der
Entscheidungsbox 1130 gibt, oder nach dem Sortieren nach
interner Kritizität
in der Aktionsbox 1135, wird die Steuerung an die Aktionsbox 1165 abgegeben.
-
Die Erzeugung der Liste von Tasks,
die keine unverzögerten
Nachrichten senden oder empfangen, beginnt für jeden Prozessor in der Aktionsbox 1140.
Die in der Aktionsbox 1140 erzeugte Liste wird in der Aktionsbox 1145 nach
benutzerspezifizierter Frist sortiert. Die Entscheidungsbox 1150 bestimmt,
ob mehrere Tasks in der sortierten Liste gleiche benutzerspezifizierte
Fristen aufweisen. wenn ja, werden der Teil bzw. die Teile der Liste
mit gleichen benutzerspezifizierten Fristen in der Aktionsbox 1155 nach
benutzerspezifizierter Kritizität
sortiert. Wenn es keine Teile der Liste mit gleichen benutzerspezifizierten
Fristen in der Entscheidungsbox 1150 gibt, oder nach dem
Sortieren nach benutzerspezifizierter Kritizität in der Aktionsbox 1155,
wird die Steuerung an die Aktionsbox 1160 abgegeben, in
der interne Kritizitäten
und Fristen auf die benutzerspezifizierten Kritizitäten bzw.
Fristen eingestellt werden.
-
Die Aktionsbox 1165 führt die
sortierte Liste von Tasks, die unverzögerte Nachrichten senden oder empfangen,
mit der sortierten Liste von Tasks, die keine unverzögerten Nachrichten
senden oder empfangen, zusammen. Die zusammengeführte Liste wird mit der internen
Frist als Primärschlüssel und
der internen Kritizität
als Sekundärschlüssel sortiert.
Die zusammengeführte
Liste wird dann in der Aktionsbox 1170 einer Transformation
unterzogen, um die prioritätssortierte
Liste zu erzeugen.
-
Eine Task wird transformiert durch
Dividieren ihrer Periode und Rechenzeit durch eine bestimmte positive
ganze Zahl, wodurch sie in diesem Beispiel über gesteuertes Laufzeit-Time-Slicing
in eine Task mit kleinerer Periode und Frist und folglich höherer Priorität umgesetzt
wird.
-
Der Transformationsalgorithmus arbeitet
einzeln an Tasks, beginnend mit der Task mit der geringsten Frist.
Die Liste von Tasks kann als eine Verkettung von Sublisten HELpU
betrachtet werden, wobei p die gerade transformierte Task, H die
Subliste von Tasks mit höherer
Kritizität
als die von p, E die Subliste von Tasks mit gleicher Kritizität wie p,
L die Subliste von Tasks mit kleinerer Kritizität als p und U der untransformierte
Teil der Liste ist. Das Ziel ist, einen ganzzahligen Teiler der
Periode (und Rechenzeit) von p, d.h. einen Transformationsfaktor,
zu finden, der ein Umschreiben der Liste als HE1pE2LU Zuläß, wobei
die Tasks in E1 und E2 Kritizitäten aufweisen,
die der von p gleich sind, die Tasks in E1 keine
Fristen aufweisen, die größer als
die von p sind, und die Tasks in E2 keine
Fristen aufweisen, die kleiner als die von p sind.
-
Mehrere Faktoren verkomplizieren
die Lösung
dieses Problems. Es ist möglich,
Beispiele ohne machbare ganzzahlige Lösung zu konstruieren, wobei
das Transformieren von p durch den Transformationsfaktor i eine
transformierte Periode ergibt, die zu groß ist, aber das Transformieren
von p durch den Transformationsfaktor i + 1 eine transformierte
Periode ergibt, die zu klein ist. Man betrachte z.B. die Kritizitätsanordnung
A > B > C, wobei die Periode
von A und C gleich 2, aber die Periode von B gleich 3 ist. Die Verwendung
des Transformationsfaktors 1 ergibt eine zu große transformierte Periode,
während
die Verwendung des Transformationsfaktors 2 eine zu kleine transformierte
Periode ergibt.
-
Eine transformierte Task muß möglicherweise
durch eine Vorperiodenfrist abgeschlossen werden. Die Transformation
der Frist analog zu der Transformation der Periode kann also angemessen
sein.
-
Transformation führt Kontextwechsel-Overheads
ein. Bei einer Ausführungsform
werden diese Kontextwechsel-Overheads
minimiert. Außerdem
sind transformierte Perioden und Fristen vorzugsweise Vielfache der
Taktinterruptperiode. Schließlich
kann der Absender einer unverzögerten
Nachricht nicht transformiert werden, da dies Intervalle erzeugen
könnte,
in denen der Empfänger
starten könnte,
bevor der Absender beendet hatte. Folglich werden die Fristen von
Absendern unverzögerter
Nachrichten vor jeglichen Periodentransformationen berechnet.
-
12 zeigt
drei Szenarien für
die Transformation einer Task dergestalt, daß sie ihre angegebene Menge
Rechenzeit bis zu ihrer angegebenen Frist erhält. Der erste Teil von 12 zeigt die ursprüngliche Taskperiode
und -frist. Das Szenario 1 von 12 ist
das Transformieren sowohl der Periode als auch der Frist, wobei
die transformierte Frist eine Vorperiodenfrist in bezug auf die
transformierte Periode ist und so ausgewählt wird, daß die transformierte
Frist des letzten Resumés
an der ursprünglichen
Frist auftritt. Dieses Szenario wird bevorzugt, wenn die transformierte
Frist ein wesentlicher Teil der transformierten Periode ist. Das Szenario
2 transformiert die Task so, daß ihre
ursprüngliche
Frist ein Vielfaches der transformierten Periode ist. Die transformierte
Frist ist gleich der transformierten Periode und die transformierte
Rechenzeit ist dergestalt, daß die
Task nach einer bestimmten Anzahl transformierter Perioden abgeschlossen
ist, die nicht größer als
die ursprüngliche
Frist ist. Das Szenario 2 wird gegenüber dem Szenario 1 bevorzugt,
wenn das Szenario 1 eine transformierte Frist erzeugen würde, die
ein kleiner Teil der transformierten Periode ist. Beide Szenarien stimmen überein,
wenn die ursprüngliche
Frist und die ursprüngliche
Periode gleich sind. Das Szenario 3 besteht darin, einfach die Frist
je nach Notwendigkeit zu verringern, d.h. einfach die Priorität je nach
Notwendigkeit zu erhöhen,
um der Kritizitätsanforderung
zu genügen,
ohne die Einteilung der Task zu transformieren. Das Szenario 3 wird
beim Transformieren von Absendern unverzögerter Nachrichten verwendet,
und in Fällen, wenn
kein ganzzahliger Transformationsfaktor machbar ist.
-
Bei einer Ausführungsform wird der Umfang
machbarer ganzzahliger Transformationsfaktoren, d.h. derjenigen,
die die Task p in die Subliste E verschieben würden, durchsucht. Für jeden
machbaren Transformationsfaktor wird sowohl das Szenario 1 als auch
das Szenario 2 beurteilt. Das Szenario 3 kann auch für alle ganzzahligen
Transformationsfaktoren von 1 bis zu dem größten Transformationsfaktor,
der p nicht vor E legt, beurteilt werden, mit dem Effekt, daß Kombinationen
des Szenarios 3 mit den Szenarien 1 und 2 beurteilt werden.
-
Bei einer Ausführungsform dient eine Kostenfunktion
zur Auswahl eines Szenarios gegenüber einem anderen, dergestalt,
daß die
Kosten minimiert werden. Bei einer anderen Ausführungsform handelt es sich
bei der Kostenfunktion um die für
Kontextwechsel erforderliche Ausnutzung, d.h. Entfernung und Ersetzung
des Stapels und von Registern, plus einem Faktor, der die Abnahme
der Einteilbarkeit aufgrund von Vorperiodenfristen berücksichtigt.
Bei einer weiteren Ausführungsform
handelt es sich bei der Kostenfunktion um den Transformationsfaktor
(der 1 sein kann) multipliziert mit.
wobei S die Kontextwechselzeit,
T
t die transformierte Periode und D
t die transformierte Frist ist. Bei einer
Ausführungsform
erfolgt die Auswahl eines Szenarios zur Minimierung der Kostenfunktion.
-
13 ist
ein Prozeßflußdiagramm
einer Ausführungsform
der Tasktransformation, die für
jede Task in der zusammengeführten
Liste von Tasks durchgeführt
wird. In der Aktionsbox 1310 werden machbare ganzzahlige
Transformationsfaktoren bestimmt. Zu machbaren Transformationsfaktoren
gehören:
der kleinste ganzzahlige Teiler der Periode von p, der ein Umschreiben
der Subliste HELpU als HE1pE2LU
ermöglicht,
wobei die Tasks in E1 und E2 Kritizitäten gleich
der von p, die Tasks in E1 keine Fristen
von mehr als der von p und die Tasks in E2 keine
Fristen von weniger als der von p aufweisen, d.h. minimaler machbarer
Transformationsfaktor oder TFmin, der größte ganzzahlige
Teiler der Periode von p, der ein Umschreiben der Subliste HELpU als
HE1pE2LU ermöglicht,
wobei die Tasks in E1 und E2 Kritizitäten gleich
der von p, die Tasks in E1 keine Fristen von
mehr als der von p und die Tasks in E2 keine
Fristen von weniger als der von p aufweisen, d.h. maximaler machbarer
Transformationsfaktor oder TFmax. In der
Aktionsbox 1320 wird die Periode und Frist der Task in
einem ersten Szenario für
jeden Transformationsfaktor von TFmin bis
TFmax transformiert, wobei die transformierte Frist
eine Vorperiodenfrist in bezug auf die transformierte Periode ist
und so ausgewählt
wird, daß die
transformierte Frist des letzten Resumés an der ursprünglichen
Frist auftritt. In der Aktionsbox 1330 wird die Task in einem
zweiten Szenario für
jeden Transformationsfaktor von TFmin bis
TFmax so transformiert, daß ihre ursprüngliche
Frist ein Vielfaches der transformierten Periode ist. Die transformierte
Frist ist gleich der transformierten Periode und die transformierte
Rechenzeit ist dergestalt, daß die
Task nach einer bestimmten Anzahl transformierter Perioden abgeschlossen
ist, die nicht größer als
die ursprüngliche
Frist ist. In der Aktionsbox 1340 wird die Frist der Task
in einem dritten Szenario transformiert, wobei die Frist verringert
wird, um die Priorität
so zu erhöhen,
wie es notwendig ist, um die Kritizitätsanforderung zu erfüllen, ohne
die Einteilung der Task zu transformieren. Nachdem alle Szenarien über ihren
jeweiligen Umfang von Transformationsfaktoren ausgewertet wurden,
werden in der Aktionsbox 1350 für jeden Transformationsfaktor
jedes Szenarios die Kosten ausgewertet. In der Aktionsbox 1360 wird
das Szenario und der Transformationsfaktor mit dem niedrigsten Kostenwert
ausgewählt,
um die Task zu transformieren. Die Task wird in der Aktionsbox 1370 transformiert.
-
Nachdem alle Tasks transformiert
wurden, werden in der Reihenfolge, in der Tasks in der Endliste
erscheinen, Prioritäten
zugewiesen. Die geordneten Prioritäten der transformierten Tasks
stellen eine zugewiesene Einteilungspriorität dar. Die zugewiesene Einteilungspriorität wird von
der Exekutive zur Anordnung der Ausführung der Tasks auf einem Prozessor
in dem Multitask-System benutzt.
-
Als ein Beispiel erzeugt bei einer
Implementierung der Erfindung, die das Metall-Toolset verwendet, das
Metall-Toolset ein lineares Einteilbarkeitsmodell, ein Modell, in
dem jede Task als eine Sequenz von Taskkomponenten beschrieben werden
kann. Jede Taskkomponente kann gemeinsam von anderen Tasks benutzt
werden und kann andere Tasks blockieren. Im allgemeinen werden Aktionen,
die im Namen einer bestimmten Task 110 durch die Exekutivtask 150 durchgeführt werden,
wie z.B. Nachrichtenweiterleitung, als Komponenten dieser Task und
Blockierungszeiten für
andere Tasks höherer
Priorität
modelliert. Rechenzeiten für
erzeugte Exekutivkomponenten werden von dem MetaH-Tool unter Verwendung
von Attributen der Zielhardware erzeugt, z.B. werden Pufferzuweisungszeiten
durch die lineare Funktion A1 + A2 × b
geschätzt,
wobei b die Anzahl zugewiesener Byte ist und A1,
A2 Abfang- und Steigungsattribute sind,
die in dem Metall-Prozessor oder in der Busspezifikation definiert
sind. Die Abbildung zwischen Spezifikation, Implementierung und
Modell ist also ausführlicher
als eine einfache Liste von Tasks und ihrer Parameter. Die Analyse
wird unter Verwendung einer Erweiterung eines exakten Charakterisierungsalgorithmus
durchgeführt,
die eine Zerlegung von Tasks in Komponenten ermöglicht und Rechenzeitempfindlichkeitsanalyseinformationen
bereitstellt.
-
Die verschiedenen Ausführungsformen
der Erfindung erzeugen nicht immer eine bezüglich benutzerspezifizierten
Fristen monotone Prioritätszuweisung.
Viele Fachleuten bekannte Einteilbarkeitsanalysemethoden arbeiten
mit einer beliebigen Prioritätszuweisung
ohne Annahmen oder spezielle Einschränkungen bezüglich der Beziehung zwischen
Prioritäten
und Fristen, Perioden oder minimalen Zwischenankunftsraten und können mit
dem Ansatz der Ausführungsformen
verwendet werden.
-
Die Lösung der verschiedenen Ausführungsformen
bleibt für
Tasks, die Echtzeitsemaphoren verwenden, gültig, solange das Semaphorenprotokoll
dem Prozessor nicht erlaubt, mit einer niedrigeren Priorität als eine
beliebige Task, die auf eine Semaphore wartet, auszuführen. Diese
Bedingung ist notwendig, um sicherzustellen, daß Empfänger unverzögerter Nachrichten, denen zuvorgekommen
wurde, nicht starten können, wenn
ein Absender auf einer Semaphore blockiert. Dies gilt für die Deckenpriorität und alle
Prioritätsvererbungssemaphorenprotokolle.
-
Die verschiedenen Ausführungsformen
der Erfindung unterstützen
weiterhin eine dynamische Umkonfiguration oder Moduswechsel. Bei
einer Ausführungsform
werden Moduswechsel auf Hyperperiodengrenzen eingeschränkt. Für jeden
benutzerspezifizierten Moduswechsel werden Transitionsmodi eingeführt, und
der Abfertiger kann in einem Transitionsmodus Prozeßstarts
und -stops und etwas unterschiedliche Muster der Nachrichtenweiterleitung
durchführen.
Durch MetaH-Spezifikationen
des hierarchischen Modus wird es möglich, daß sich Modi Teilmengen von
Tasks und Verbindungen auf komplexe Weisen teilen. Die so präsentierten Algorithmen
werden für
die Vereinigung aller Modi in einem System durchgeführt, worauf
eine Nachverarbeitungsphase folgt, um die Anzahl von erforderlichen
Prioritätsniveaus
zu reduzieren.
-
In verteilten Echtzeitsystemen kann
das Auswählen
von Taktinterruptraten ein Problem sein. Es können zeitlich deterministische
Nachrichtenfreigabezeiten notwendig sein, um harte Fristen von Ende
zu Ende sicherzustellen. Es können
Taktinterruptperioden erwünscht
sein, die nicht nur die benutzerspezifizierten Perioden und Fristen
teilen, sondern auch zweckmäßige transformierte
Perioden und zweckmäßige Netzwerknachrichtenfreigabezeiten
liefern.
-
Die verschiedenen Verfahren der Erfindung
liefern ein Modell, das für
eine Analyse des Zeitsteuerungsverhaltens eines Task-Systems ausgelegt
ist, und zwar insbesondere für
modulare missionskritische Softwaresysteme, hochratige Anwendungen
und Mikrosteuerungen. Die Verwendung solcher Modelle erlaubt eine
Offline-Analyse und -konfiguration, um eine Exekutive für jedes
System anzupassen, statt eine generische Exekutive zu verwenden,
wodurch eine einfachere, kleinere und schnellere Exekutive möglich wird.
Solche Modelle helfen außerdem
bei der Formulierung gut strukturierter Spezifikationen für Task-Systeme,
wodurch die Erzeugung von besser strukturiertem und verfolgbarem
Code, der dem Task-System
zugrundeliegt, möglich
werden kann.
-
Obwohl die Ausführungsbeispiele Mehrprozessor-Task-Systeme beschreiben,
die auf einem einzigen Bus kommunizieren, ist die Erfindung nicht
auf Einbussysteme beschränkt.
-
Obwohl es bevorzugt wird, daß mehrere
Prozessoren durch Busse mit relativ hoher Geschwindigkeit und niedriger
Latenz für
effizienten Transfer von Einzelabtastverzögerungsnachrichten verbunden
werden, kann man verteilte Systeme verwenden, wenn Einteilungsansätze das
Freigeben einer Einzelabtastverzögerungsnachricht
mit einer spezifizierten Frist auf dem Netzwerk erlauben und wenn
die Kommunikation gleichzeitig mit der Prozessorausführung stattfinden
kann.
-
Durch Verwendung verschiedener Ausführungsformen
der Erfindung hergestellte Modelle können zum Definieren elektronischer
Systeme verwendet werden, um die Einteilungs- und Nachrichtenweiterleitungsaktivitäten des
Multitask-Systems auszuführen.
Die beschriebenen elektronischen Systeme verwenden vielfältige elektronische
Geräte
mit Prozessoren, die Anweisungen in maschinenlesbarer Form zur Ausführung der hier
beschriebenen Verfahren aufweisen. 14 zeigt
ein Blockschaltbild eines Prozessors 1410, der an ein maschinenlesbares
Medium 1420 angekoppelt ist. Der Prozessor 1410 kann
zur Kommunikation mit anderen Prozessoren weiterhin an den Bus 1430 angekoppelt
sein. Das maschinenlesbare Medium 1420 kann an den Prozessor 1410 angekoppelte
feste Einrichtungen enthalten, wie z.B. internes magnetisches Medium
oder programmierbares Speichergerät. Das maschinenlesbare Medium 1420 kann
außerdem
an den Prozessor 1410 angekoppelte wechselbare Geräte enthalten,
wie z.B. wechselbares magnetisches Medium oder Programmierkassette.
Das maschinenlesbare Medium 1420 enthält darin gespeicherte Anweisungen
in maschinenlesbarem Format, die bewirken können, daß der Prozessor 1410 die
hier beschriebenen Verfahren ausführt.
-
Schlußfolgerung
-
Es werden Verfahren offengelegt,
die für
die Modellierung der periodischen und aperiodischen Echtzeit-Taskeinteilung
und Nachrichtenweiterleitung in Multitask-Systemen nützlich sind.
Unter Verwendung von Verfahren der Erfindung erzeugte Modelle werden
angepaßt,
um das Zeitsteuerungsverhalten in solchen Multitask-Systemen zu
analysieren. Die Verfahren verwenden unverzögerte und einzelabtastverzögerte Nachrichtenverbindungen
zwischen Softwaretaskobjekten und Hardwareobjekten. Taskprioritäten werden
invers mit der Periode oder Frist zugewiesen, so daß Tasks
mit kürzeren
Perioden oder Fristen höhere
Einteilungsprioritäten
aufweisen. Perioden von Tasks mit hoher Kritizität werden in kleinere Stücke zerlegt,
die sequenziell mit höheren
Raten abgefertigt werden, wobei die anfängliche Zuweisung der Priorität mit der
Taskkritizität
nicht vereinbar ist. Systemmodelle definieren elektronische Systeme
und Anweisungen zum Ausführen
der Einteilung und Nachrichtenweiterleitung des Multitask-Systems.
-
Obwohl hier spezifische Ausführungsformen
dargestellt und beschrieben wurden, ist für Durchschnittsfachleute erkennbar,
daß jede
beliebige Anordnung, die so berechnet ist, daß derselbe Zweck erzielt wird,
die spezifischen gezeigten Ausführungsformen
ersetzen können.
Fachleuten werden viele Anpassungen der Erfindung ersichtlich sein.
Folglich soll die vorliegende Anmeldung jegliche Anpassungen oder
Varianten der Erfindung abdecken. Es wird manifest beabsichtigt,
daß die
vorliegende Erfindung nur durch die folgenden Ansprüche und
ihre Äquivalente
eingeschränkt
wird.