-
Eine
Vielzahl von Systemen kann einem Satz aus realen Zeiteinschränkungen
unterliegen. Zum Beispiel kann ein Mess/Steuer-System einem Satz
aus Zeiteinschränkungen
unterliegen, die sich auf die getestete Vorrichtung bzw. das Testobjekt
beziehen, z. B. Abtastrate, Steuerwertaktualisierungsrate, etc.
-
Ein
System, das einem Satz aus realen Zeiteinschränkungen unterliegt, kann einige
Aufgaben umfassen, die den Zeiteinschränkungen unterliegen, und einige
Aufgaben, die den Zeiteinschränkungen nicht
direkt unterliegen. Eine Aufgabe, die einem Satz von realen Zeiteinschränkungen
unterliegt, kann als eine Hart-Echtzeit-Aufgabe (HRT-Aufgabe; HRT
= hard real-time) bezeichnet werden. Ein Beispiel einer HRT-Aufgabe ist eine
Aufgabe, die ein Datenabtasten bei realen Zeiten, Raten, etc. ausführt, die
durch physische Eigenschaften eines Testobjekts bestimmt werden.
Ein anderes Beispiel einer HRT-Aufgabe ist eine Aufgabe, die Berechnungen
für Steuerwerte
ausführt,
die an ein System oder eine Vorrichtung bei realen Zeiten/Raten
angewendet werden.
-
Das
Zeitgebungsverhalten einer HRT-Aufgabe kann von einer Vielzahl von
Faktoren in ihrer Ausführungsumgebung
abhängen.
Beispiele von Faktoren in einer Ausführungsumgebung umfassen die Anzahl
von Aufgaben bzw. Tasks, die gegenwärtig ausgeführt werden, die Rechenintensität der Aufgaben
und die Kapazität
der Hardwareressourcen die zum Unterstützen dieser Aufgaben verfügbar sind.
-
Eine
bekannte Technik zum Erfüllen
eines Satzes aus Zeiteinschränkungen
einer HRT-Aufgabe umfasst, dass der HRT-Aufgabe eine relativ hohe Ausführungspriorität zugewiesen
wird. Leider adressiert eine solche Technik nicht explizit die Zeitgebungsanforderungen
einer HRT-Aufgabe und kann zu nicht mehr als einer Hoffnung führen, dass
Zeitgebungs-Anforderungen
erfüllt
werden können.
-
Eine
andere bekannte Technik zum Erfüllen eines
Satzes von Zeiteinschränkungen
einer HRT-Aufgabe umfasst das Vermehren von Systemhardwareressourcen
in der Hoffnung, das Anweisungsausführungsverhalten zu verbessern.
Zum Beispiel kann ein System mit Prozessoren besserer Leistung,
großen
Speichermengen, etc. versehen sein. Leider ist diese Technik nicht
mehr als eine Schätzung,
welche Ressourcen wahrscheinlich die Zeiteinschränkung einer HRT-Aufgabe erfüllen.
-
Es
ist die Aufgabe der vorliegenden Erfindung, ein zeitbewusstes System
und ein Verfahren zum zeitbewussten Verarbeiten mit verbesserten Charakteristika
zu schaffen.
-
Diese
Aufgabe wird durch ein zeitbewusstes System gemäß Anspruch 1 und ein Verfahren
zum zeitbewussten Verarbeiten gemäß Anspruch 11 gelöst.
-
Es
ist ein zeitbewusstes Prinzip offenbart, das Mechanismen zum expliziten
Adressieren der Zeitgebungsanforderungen schafft, die Aufgaben zugeteilt
sind. Ein zeitbewusstes System gemäß den vorliegenden Lehren umfasst
einen Satz aus Ressourcen zur Verwendung durch eine Aufgabe und
einen Ressourcenzuordnungsmechanismus, der einen Teilsatz der Ressourcen
zur Verwendung durch die Aufgabe zuordnet, ansprechend auf einen
Satz von Zeitgebungsparametern, die der Aufgabe zugeordnet sind.
Ausführungsbeispiele
eines Ressourcenzuordnungsmechanismus gemäß den vorliegenden Lehren umfassen
Hardwaremechanismen, Softwaremechanismen und Kombinations-Hardware/Software-Mechanismen.
-
Andere
Merkmale und Vorteile der vorliegenden Erfindung werden aus der
nachfolgenden detaillierten Beschreibung offensichtlich.
-
Bevorzugte
Ausführungsbeispiele
der vorliegenden Erfindung werden nachfolgend Bezug nehmend auf
die beiliegenden Zeichnungen näher
erläutert.
Es zeigen:
-
1 ein
zeitbewusstes System, das einen Satz aus Hardwareressourcen und
einen Ressourcenzuordnungsmechanismus gemäß den vorliegenden Lehren umfasst;
-
2 ein
Ausführungsbeispiel
eines zeitbewussten Systems, bei dem die Hardware-Ressourcen einen
Satz aus Prozessoren zum Ausführen
eines Programmcodes umfassen;
-
3 ein
Ausführungsbeispiel
eines zeitbewussten Systems, bei dem die Hardware-Ressourcen einen
Kommunikationsschalter umfassen;
-
4 ein
Ausführungsbeispiel
eines zeitbewussten Systems, bei dem die Hardwareressourcen einen
Hauptspeicher und einen Cache-Speicher umfassen;
-
5 einen
Kompilierer gemäß den vorliegenden
Lehren;
-
6 ein
zeitbewusstes, verteiltes System gemäß den vorliegenden Lehren;
und
-
7 einen
Ressourcenzuordnungsmechanismus bei einem zeitbewussten, verteilten
System gemäß den vorliegenden
Lehren.
-
1 zeigt
ein zeitbewusstes System gemäß den vorliegenden
Lehren. Das zeitbewusste System 10 umfasst einen Satz aus
Ressourcen 20-26 und einen Ressourcenzuordnungsmechanismus 126.
Der Ressourcenzuordnungsmechanismus 126 ordnet einen Teilsatz
der Ressourcen 20-26 ansprechend auf einen Satz
von Zeitgebungsparametern 28 zu. Die Zeitgebungspara meter 28 können aus einem
Satz von Zeiteinschränkungen
hergeleitet sein, die einer Aufgabe zugeordnet sind, die in dem zeitbewussten
System 10 ausgeführt
werden soll. Die Aufgabe, die den Zeitgebungsparametern 28 zugeteilt
ist, kann eine HRT-Aufgabe in dem zeitbewussten System 10 sein.
-
Die
Ressourcen 20-26 können Hardwareressourcen zum
Unterstützen
einer Ausführung
von Aufgaben in dem zeitbewussten System 10 umfassen. Beispiele
von Hardwareressourcen zum Unterstützen von Aufgaben umfassen
Prozessoren, Speicher, spezialisierte Rechenhardware, Kommunikationshardware,
Eingabe/Ausgabe-Vorrichtungen, anwendungsspezifische Vorrichtungen,
z. B. Sensoren, Betätiger,
Messinstrumente, etc.
-
Der
Ressourcenzuordnungsmechanismus 126 kann ein Hardwaremechanismus,
ein Softwaremechanismus oder eine Kombination aus Hardware/Software
sein. Der Ressourcenzuordnungsmechanismus 126 ordnet Ressourcen
zu einer Aufgabe zu, durch Zuweisen von Ressourcen für geeignete Zeitperioden,
die benötigt
werden, um zu garantieren, dass die Zeitgebungsparameter 28 erfüllt werden.
-
2 zeigt
ein Ausführungsbeispiel
des zeitbewussten Systems 10, bei dem die Ressourcen 20-26 einen
Satz aus Prozessoren A-D zum Ausführen eines Programmcodes umfassen.
Der Ressourcenzuordnungsmechanismus 126 umfasst bei diesem
Ausführungsbeispiel
eine Uhr 200 und einen Satz aus Registern 210-214.
Die Uhr 200 liefert einen Tageszeit-Zeitwert und die Register 210-214 sind zum
Halten der Zeitgebungsparameter 28.
-
Die
Zeitgebungsparameter 28 können eine Spezifikation einer
Zeitperiode und einen Identifizierer für eine oder mehrere der Ressourcen 20-26 umfassen.
Zum Beispiel können
die Zeitgebungsparameter 28 eine Startzeit TS und
eine Endzeit TE und einen Identifizierer
der Hardwareressource 20 spezifizieren, um anzuzeigen,
dass die Hardwareressource 20 zum Ausführen einer Aufgabe zugeordnet
sein soll, die zur Zeit TS beginnt und zur
Zeit TE endet. Die Zeitgebungsparameter 28 können sich
wiederholende Zeitintervalle spezifizieren. Die Zeitgebungsparameter 28 können als
Parameter für
eine „Zeitbombe" oder eine Wiederholungs-„Zeitbombe" zum Zuordnen einer
spezifizierten Hardwareressource verwendet werden.
-
Der
Ressourcenzuordnungsmechanismus 126 erzeugt ein Startsignal,
wenn die Inhalte der Register 210-214 und die
Uhr 200 anzeigen, dass einer oder mehrere der Prozessoren
einer Aufgabe zugeordnet sein sollen. Zum Beispiel erzeugt der Ressourcenzuordnungsmechanismus 126 ein
Startsignal, wenn die Zeit auf der Uhr 200 mit der Startzeit
TS übereinstimmt.
Zusätzlich
dazu erzeugt der Ressourcenzuordnungsmechanismus 126 ein
Endsignal, wenn die Zeit bei der Uhr 200 der Endzeit TE entspricht.
-
Das
Start- und das Stopp-Signal von dem Ressourcenzuordnungsmechanismus 126 werden zu
den Prozessoren A-D geliefert, die in den Registern 210-214 spezifiziert
sind, die Start- und Stoppsignale können zu einer Interrupt-Leitung
zu den Prozessoren A-D oder über
ein Eingangsregister oder eine Speicherabbildung geliefert werden,
die durch die Prozessoren A-D lesbar ist. Ansprechend auf ein Startsignal
ordnet ein Prozessor sich selbst der Aufgabe zu, die dem Startsignal
zugeteilt ist, und ansprechend auf das Stoppsignal kehrt der Prozessor zur
normalen Verarbeitung zurück.
-
3 zeigt
ein Ausführungsbeispiel
des zeitbewussten Systems 10, bei dem die Ressourcen 20-26 einen
Kommunikationsschalter 240 umfassen, der einer Aufgabe
ansprechend auf die Zeitgebungsparameter 28 zugeordnet
sein kann. Der Ressourcenzuordnungsmechanismus 126 erzeugt
ein Startsignal, um anzuzeigen, dass Ressourcen bei dem Kommunikationsschalter 240 zu
einer bestimmten Aufgabe zugeordnet sein sollen, und erzeugt ein Endsignal,
wenn die Zuordnung der Ressourcen bei dem Kommunikationsschalter 240 zu
der Aufgabe enden soll.
-
Der
Kommunikationsschalter 240 umfasst eine Schalterstruktur 242 zum
Leiten von Meldungen zwischen einem Satz von Eingangs-Ports 246 und
einem Satz von Ausgangs-Ports 248. Die Eingangs-Ports 246 umfassen
Warteschlangen zum Halten von Meldungen, während die Schalterstruktur 242 belegt
bzw. tätig
ist. Das Startsignal von dem Ressourcenzuordnungsmechanismus 126 verursacht,
dass die Eingangs-Ports 246 eingehende Meldungen, die der
bestimmten Aufgabe zugeteilt sind, zu den Ausgangsports 248 über eine
Umleitungsweg 244 senden. Der Umleitungsweg 244 trägt Meldungen
die der bestimmten Aufgabe zugeteilt sind über den Schalter und umgeht
Warteschlangen in den Eingangs-Ports 246, während der
Kommunikationsschalter der bestimmten Aufgabe zugeordnet ist. Das Endsignal
von dem Ressourcenzuordnungsmechanismus 126 bringt den
Schalter in den normalen Modus und die Verwendung der Schalterstruktur 242 zum Übertragen
aller Meldungen zwischen den Eingangs- und Ausgangs-Ports 246 und 248 zurückt.
-
Bei
einem anderen Ausführungsbeispiel
ist die Schalterstruktur 242 partitioniert und ein Abschnitt
der Schalterstruktur 242 ist der bestimmten Aufgabe zugeordnet,
ansprechend auf das Start- und End-Signal von dem Ressourcenzuordnungsmechanismus 126.
Zum Beispiel kann die Hälfte
der Schalterstruktur 242 dem Handhaben von Meldungen zugeordnet
sein, die der bestimmten Aufgabe zugeteilt sind, während die
verbleibende Hälfte
der Schalterstruktur 242 den gesamten anderen Verkehr handhabt.
Die Meldungen, die der bestimmten Aufgabe zugeordnet sind, können durch
einen vorbestimmten Code in den Meldungen identifiziert sein.
-
4 zeigt
ein Ausführungsbeispiel
des zeitbewussten Systems 10, bei dem die Ressourcen 20-26 einen
Hauptspeicher 300 und einen Cache-Speicher 302 umfassen.
Der Ressourcenzuordnungsmechanismus 126 umfasst bei diesem
Ausfüh rungsbeispiel
ein Betriebssystem 12, das Hardwareressourcen zu einem
Satz aus Anwendungsprogrammen 30-32 zuweist, ansprechend
auf Zeitgebungsparameter, die von den HRT-Zeiteinschränkungen hergeleitet sind, die
den Anwendungsprogrammen 30-32 zugeteilt sind.
Zum Beispiel umfasst das Anwendungsprogramm 30 einen Codesatz 40,
der eine HRT-Aufgabe
gemäß einem
Satz aus HRT-Zeiteinschränkungen 42 ausführt. Der
Code 40 kann ein Teilprozess bzw. Thread sein, der unter
dem Betriebssystem 12 ausgeführt wird. Die Anwendungsprogramme 30-32 und
das Betriebssystem 12 werden durch einen Prozessor 304 ausgeführt.
-
Bei
einem Ausführungsbeispiel
verwendet das Betriebssystem 12 den Scharfmach- bzw. Vorbereitungs-Mechanismus,
um Daten, die einer HRT-Aufgabe zugeordnet sind, aus dem langsameren
Hauptspeicher 300 in den schnelleren Zugriffs-Cache-Speicher 302 zu
bewegen. Zum Beispiel bewegt das Betriebssystem 12 Daten,
die dem Code 40 zugeordnet sind, aus dem Hauptspeicher 300 in den
Cache-Speicher 302 ansprechend auf ein Scharfmach-Signal.
Der schnellere Datenzugriff, der durch einen Cache-Speicher 302 geliefert
wird, ermöglicht
dem zeitbewussten System 10, die HRT-Zeiteinschränkungen 42 zu erfüllen. Der
Cache-Speicher 302 liefert Speicherlatenzzeiten, die vorhersagbar
sind, während
die Latenzzeiten des Hauptspeichers 300 möglicherweise
nicht vorhersagbar sind. Wenn der Hauptspeicher 300 z.
B. auf einem Bus ist, der gemeinschaftlich mit anderen Vorrichtungen
verwendet wird, z. B. Videokarten, können Blockierungen für Hauptspeicherzugriffe
auftreten. Der Cache-Speicher 302 ist
andererseits ausschließlich
in dem Besitz des Prozessors 304. Die Latenzzeit kann daher
genau vorhergesagt werden.
-
Der
Prozessor 304 umfasst bei einem Ausführungsbeispiel Anweisungen
zum Verwalten des Cache-Speichers 302. Zum Beispiel umfasst
der Prozessor 304 Seitenverriegelungsanweisungen zum Verriegeln
spezifizierter Speicherseiten in dem Cache-Speicher 302.
Die Seitenverriegelungsanweisung kann verwendet werden, um zu garantieren, dass
ein Datensatz, der einer HRT-Aufgabe zugeteilt ist, aus dem Cache-Speicher 302 innerhalb
einer spezifizierten Zeit geliefert wird, um einen Satz aus HRT-Zeiteinschränkungen
zu erfüllen.
Die Seitenverriegelungsanweisungen verriegeln Seiten in dem Cache-Speicher 302 gemäß derselben
Zeitgebungskonfiguration, wie z. B. Startzeit, Stoppzeit, Dauer. Dies
hilft sicherzustellen, dass die Seiten zu der spezifizierten Zeit
in dem Cache-Speicher 302 sind.
-
Das
Betriebssystem 12 liefert Systemdienste über eine
Anwendungsprogrammierungsschnittstelle (ABI; application programming
Interface) 44 zu den Anwendungsprogrammen 30-32. Die
Systemdienste ermöglichen
eine Zuordnung von Speicherressourcen zu HRT-Aufgaben. Die Systemdienste
nehmen als Parameter die Zeitgebungsparameter 28, die eine Zeitspezifikation
für eine
Speicherressourcenzuordnung umfassen. Eine Zuordnung von ausgewählten Speicherressourcen
ermöglicht
eine Garantie, dass ein Satz aus HRT-Zeiteinschränkungen, der einer HRT-Aufgabe
zugewiesen ist, erfüllt
werden kann. Ein Scharfmach-Mechanismus kann verwendet werden, um
jegliche Verschwendung bei zugeordneten Speicherressourcen zu minimieren.
Zum Beispiel kann eine Speicherressource gemeinschaftlich verwendet
werden, bis ein Scharfmach-Signal auftritt, so dass das Scharfmach-Signal verursacht,
dass die Speicherressource innerhalb einer bekannten Zeit zu einer
zugeordneten und zugewiesenen Ressource einer HRT-Aufgabe übergeht.
Die Zuweisung kann mit dem Scharfmachsignal spezifiziert werden
oder kann vorab zugewiesen sein.
-
Ein
Scharfmach-Signal zum Zuteilen und/oder Zuordnen einer Speicherressource
kann durch Hardware oder Software erzeugt werden. Ein Scharfmachsignal
zum Zuteilen und/oder Zuordnen einer Speicherressource kann ein
externes Scharfmach-Signal,
ein Netzwerk-Scharfmachsignal, ein internes zeitbasiertes Scharfmachen
oder ein Scharfmachen, das durch das Betriebssystem 12 initiiert wird,
sein. Bei einem Ausfüh rungsbeispiel
empfängt das
Betriebssystem 12 einen Interrupt von einer IEEE-1588-Uhr,
die eine Scharfmach-Periode spezifiziert.
-
Die
Anwendungsprogrammierungsschnittstelle API 44 ermöglicht,
dass das Anwendungsprogramm 30 eine Ausführungsumgebungsspezifikation für den Code 40 liefert.
Die Ausführungsumgebungsspezifikation
kann eine Anzeige umfassen, um den Code 40 einem bestimmten
Satz von Speicherressourcen zuzuweisen, z. B. zu einer bestimmten
Seite eines Speichers oder zu einem bestimmten Prozessor oder mehreren
Prozessoren oder zu einer bestimmten, anwendungsspezifischen Hardware.
-
Das
Betriebssystem 12 erzeugt ein Fehlerereignis, wenn ein
Satz aus HRT-Zeiteinschränkungen nicht
erfüllt
wird. Bei einem Ausführungsbeispiel
umfasst das Betriebssystem 12 eine Fertigstellungs-Zeitbombe,
die entschärft
wird, wenn die Fertigstellung einer HRT-Aufgabe dem Ablauf einer
Fertigstellungszeit vorausgeht, die in ihrer HRT-Zeiteinschränkung spezifiziert ist. Die
Fertigstellungszeitbombe feuert und erzeugt ein Ereignis, wenn eine HRT-Aufgabe nicht rechtzeitig
fertiggestellt wird, um ihre HRT-Zeiteinschränkungen
zu erfüllen.
Dieser Mechanismus kann für
jegliche Fortsetzungsaktion verwendet werden, die eine vorgeschriebene
Fertigstellungszeit aufweist. Beispiele umfassen dem Empfang oder
das Senden einer bestimmten Meldung auf einem Netzwerk, Einstellen über das
Betriebssystem 12 einer Hardwarekonfiguration oder Parameter,
wie z. B. Zeitbomben, etc.
-
Die
Anwendungsprogramme 30-32 können zeitbasierte Aufgaben
umfassen, die sich wiederholen, z. B. kann das Anwendungsprogramm 30 den Code 40 periodisch
wiederholen. Das Betriebssystem 12 setzt sich wiederholende
Zeitbomben ein, um den sich wiederholenden, zeitbasierten Code zu
unterstützen.
-
Die
API 44 liefert Scharfmach- und Auslöse-Funktionen für die Anwendungsprogramme 30-32.
Die API 44 kann verwendet werden, um HRT-Aufgaben an eine
zugrundeliegende Hardware zu binden, wodurch die Zuweisung/Zuordnung
von spezifizierten Hardwareressourcen zu HRT-Aufgaben ermöglicht wird.
Die Hardwareressourcen, die an HRT-Aufgaben gebunden sein können, umfassen Speicherressourcen,
z. B. den Cache-Speicher 302 und
den Hauptspeicher 300, sowie andere Hardwareressourcen,
z. B. Netzwerkkommunikationsressourcen, Prozessorressourcen, anwendungsspezifische
Hardware, etc.
-
Das
Betriebssystem 12 präsentiert
ein Ereignismodell für
zeitbasierte Aktionen für
die Anwendungsprogramme 30-32 über die API 44. Die
Anwendungsprogramme 30-32 sind als eine Sammlung
aus Aktionen mit expliziten Zeitgarantien strukturiert, z. B. wann
eine Anwendung beginnt, seine maximale Dauer etc. Das Betriebssystem 12 betrachtet
einen Code, der aufgeführt
werden soll, als eine Sammlung von Codebruchstücken mit Zeitspezifikationen,
z. B. weist der Code 40 die HRT-Zeiteinschränkungen 42 auf.
Das Betriebssystem 12 führt
die Codebruchstücke
zu der (den) spezifizierten Zeit(en) aus und liefert Fehlerindikatoren,
wenn Bruchstücke
nicht gemäß Zeitspezifikationen
fertiggestellt sind.
-
Der
Ressourcenzuordnungsmechanismus 126 bei diesem Ausführungsbeispiel
umfasst einen Kompilierer 14. Der Kompilierer 14 erzeugt
den Code 40, um einen Speicher zu verwalten, ansprechend auf
die HRT-Zeiteinschränkungen 42.
-
5 stellt
die Funktionen des Kompilierers 14 gemäß den vorliegenden Lehren dar.
Der Kompilierer 14 erzeugt den Code 40 ansprechend
auf einen Quellcode 60. Der Kompilierer 14 macht
einen Durchgang durch den Quellcode 60, um Speicherzugriffe
zu identifizieren. Der Kompilierer 14 emittiert Speicherverwaltungsanweisungen
in dem Code 40, die Speicher-Paging bzw. -Seitenadressierung
explizit verwalten und die Speicherseitenadressierung nicht zur
Laufzeit dem Betriebssystem 12 überlassen. Der Kompilierer 14 emittiert
Speicherverwaltungsanweisungen, um eine Speicherzugriffslatenzzeitvariabilität zu beseitigen.
-
Der
Kompilierer 14 umfasst einen Codeemitter 62, der
den Code 40 emittiert, um eine Einhaltung der HRT-Zeiteinschränkungen 42 zu
maximieren. Der Kompilierer 14 nimmt einen Satz aus Anweisungsausführungsinformationen 16 als
eine Eingabe, die sich auf das Zeitausführungsverhalten von Anweisungen
in dem Code 40 beziehen. Die Anweisungsausführungsinformationen 16 spezifizieren
die Anzahl von Zyklen, die bestimmte Anweisungen zum Ausführen brauchen,
und ob bestimmte Anweisungen möglicherweise
blockiert werden, etc.
-
Der
Kompilierer 14 erzeugt ein Flussdiagramm 64 des
Codes 40 und sagt die benötigte Zeit zum Ausführen des
Codes 40 unter Verwendung der Anweisungsausführungsinformationen 16 vorher. Der
Kompilierer 14 sagt einen Zeitbetrag zur Ausführung von
Nicht-Speicher-Zugriffsanweisungen bei dem Code 40 unter
Verwendung der Anweisungsausführungsinformationen 16 vorher.
Der Kompilierer 14 ordnet den Code 40 an, um jegliche
variable Speicherlatenzzeit zu beseitigen (angenommen, der Speicher
wird nicht gemeinschaftlich verwendet), wenn eine Ausführungszeit
von Speicherzugriffsanweisungen bei dem Code 40 vorhergesagt
wird. Der Kompilierer 14 führt z. B. einen Durchgang durch
den Quellcode 60 aus und identifiziert Regionen, die Speicherzugriff
umfassen. Dann emittiert der Kompilierer 14, vor dem Emittieren
eines Codes für
die Region, einen Code zum Abrufen aller notwendiger Daten aus dem
Hauptspeicher 30 in den Cache-Speicher 302. Der
Kompilierer 14 emittiert einen Code, um alle Schreiboperationen
in den Hauptspeicher 30 in seinen eigenen privaten Cache-Speicher
schattenzuspeichern, und vermehrt Speicherabrufanweisungen mit Abrufoperationen
aus dem privaten Speicher, um die Ungewissheit beim Speicherzugriff
zu beseitigen. Dies liefert einen Kompromiss eines möglichen Verhaltens
zur Vorhersagbarkeit. Die Anweisungen, die emittiert werden, um
den Speicher zu manipulieren, sind vielleicht nicht die optimalsten,
garantieren aber, dass der Code innerhalb einer begrenzten Zeit ausgeführt wird.
-
Bei
einem Ausführungsbeispiel
erzeugt der Kompilierer 14 eine Zeitgebungsspezifikation
und eine Ressourcenanforderungsliste für den Code 40. Zum
Beispiel kann der Kompilierer 14 eine Meldung erzeugen,
wie z. B. „diese
Binärzahl
wird in 5,4 ms für einen
200 MHz Takt in einer X-Klassenarchitektur ausgeführt, mit
Anforderungen nach 7 Verarbeitungs-Pipelines, 28 Registern und 250.200
Bytes Cache-Speicher."
-
6 zeigt
ein Ausführungsbeispiel
des zeitbewussten Systems 10, bei dem die Ressourcen 20-26 einen
Satz aus Knoten 110-114 und eine Kommunikationsinfrastruktur 130 umfassen.
Die Knoten 110-114 tauschen Meldungen über die
Kommunikationsinfrastruktur 130 aus, wenn eine verteilte
Anwendung in dem zeitbewussten System 10 ausgeführt wird.
-
Eine
verteilte Anwendung in dem zeitbewussten System 10 kann
einen Satz aus HRT-Zeiteinschränkungen
umfassen. Die Fähigkeit
des zeitbewussten, verteilten Systems 10, die HRT-Zeitgebungseinschränkungen
zu erfüllen,
hängt von
der Fähigkeit
der Kommunikationsinfrastruktur 130 ab, eine Meldungsübertragung
zwischen den Knoten 110-114 zu liefern. Zum Beispiel
kann die Kommunikationsinfrastruktur 130 eine Latenzzeit
und Jitter bei der Zeitgebung der Meldungsübertragung zwischen den Knoten 110-114 verursachen.
-
Die
Latenzzeit und Jitter der Kommunikationsinfrastruktur 130 kann
auf einen bestimmten Grad an Genauigkeit begrenzt sein, um die HRT-Zeiteinschränkungen
einer verteilten Anwendung in dem zeitbewussten System 10 zu
erfüllen.
Zusätzlich dazu
kann die Übertragung
von Meldungen über
die Kommunikationsinfrastruktur 130, z. B. Scharfmach-Meldungen
und Auslöse-Meldungen,
die sich auf das Erfüllen
eines Satzes von HRT-Zeiteinschränkungen
beziehen, ansprechend auf die Begrenzungen für Latenzzeit und Jitter geplant
werden.
-
7 zeigt
Ausführungsbeispiele
des Ressourcenzuordnungsmechanismus 126 bei dem Knoten 110.
Jeder der Knoten 110-114 kann ähnliche
Mechanismen umfassen, wie für
den Knoten 110 gezeigt ist.
-
Der
Ressourcenzuordnungsmechanismus 126 bei dem Knoten 110 umfasst
eine synchronisierte Uhr 150. Bei einem Ausführungsbeispiel
ist die synchronisierte Uhr 150 eine Uhr, die dem IEEE
1588 Takt- bzw. Uhr-Synchronisierungsstandard entspricht. Der Standard
IEEE 1588 liefert einen gemeinsamen Zeitsinn für das zeitbewusste, verteilte System 10.
Der gemeinsame Zeitsinn ermöglicht, dass
Aktionen durch den Knoten 110 basierend auf Zeit spezifiziert
werden. Zum Beispiel können
Ereignis-Trigger bzw. -Auslöser
durch Ereigniszeiten spezifiziert sein, die in Meldungen auf der
Kommunikationsinfrastruktur 130 getragen werden. Auf ähnliche Weise
können
Scharfmach-Perioden durch eine Zeitgebungsspezifikation spezifiziert
sein, die in Meldungen auf der Kommunikationsinfrastruktur 130 getragen
wird. Die synchronisierte Uhr 150 kann als Hardwarequelle
zum Auslösen
des entsprechenden Ereignisses und Starten und Beenden der entsprechenden
Scharfmach-Funktion verwendet werden, ansprechend auf die Inhalte
der Auslöser-
und Scharfmach-Meldungen.
-
Die
Auswirkungen von Latenzzeit und Jitter bei der Meldungsübertragung
zu und von dem Knoten 110 können die Genauigkeit der synchronisierten Uhr 150 gemäß dem Protokoll
IEEE 1588 verschlechtern, da eine Synchronisation auf der Übertragung
von Zeitgebungsmeldungen über
die Kommunikationsinfrastruktur 130 basiert. Zusätzlich dazu können Latenzzeit
und Jitter verhindern, dass eine Meldung an dem Knoten 110 vor
einer Ereigniszeit ankommt, die der Meldung zugeordnet ist. Als
Konsequenz können
Latenzzeit und Jitter bei der Kommunikationsinfrastruktur 130 die
Fähigkeit
einer verteilten Anwendung beeinflussen, ihre HRT-Zeiteinschränkungen
zu erfüllen.
-
Der
Ressourcenzunrdnungsmechanismus 126 bei dem Knoten 110 umfasst
ein Betriebssystem 152, das die Übertragung von Meldungen über die Kommunikationsinfrastruktur 130 verwaltet,
ansprechend auf die Grenzen auf Latenzzeit und Jitter. Zusätzlich dazu
umfasst der Ressourcenzuordnungsmechanismus 126 bei dem
Konten 110 eine Trigger-Schaltung 154 zum Auslösen einer
Meldungsübertragung
zu der Kommunikationsinfrastruktur 130 zu den entsprechenden
Zeiten.
-
Ein
Kommunikationsteilsystem 154 bei dem Konten 110 umfasst
einen Protokollstapel 160, der eine Meldungsübertragung über die
Kommunikationsinfrastruktur 130 ermöglicht. Der Protokollstapel 160 umfasst
eine Medienzugriffssteuerung (MAC; media access controller) 162 und
eine physische (PHY) Schicht 164. Die MAC 162 umfasst
Warteschlangen zum Halten von Meldungen, die übertragen werden sollen, und
Meldungen, die empfangen werden. Die MAC 162 und die PHY 164 umfassen Mechanismen
zum Reduzieren von Latenzzeit und Jitter bei der Meldungsübertragung.
-
Bei
einem Ausführungsbeispiel
umfasst der Ressourcenzuordnungsmechanismus 126 bei dem Knoten 110 reservierte
Codes, die bei Meldungen verwendet werden, die HRT-Aufgaben zugeordnet sind.
Die MAC 162 fügt
die reservierten Codes in Meldungen ein, die von einem Anwendungsprogramm
während
des Betriebs erhalten werden, und führt die entsprechende Einstellung
von Meldungslänge
und FCS für
eine Meldungsübertragung
aus. Die reservierten Codes können
allein verwendet werden oder zum Definieren von Segmenten innerhalb einer
Meldung, bei der eine Scharfmach- oder Auslöse-Semantik implementiert sein kann. Nach
dem Empfang einer Meldung erfasst die MAC 162 die reservierten
Codes und erzeugt ansprechend darauf die entsprechende Aktion und
zieht die reservierten Codes heraus, so dass die Originalmeldung
ungestört
ist. Diese Technik kann verwendet werden, um die Latenzzeit zu reduzieren,
während
eine Meldung dabei ist, auf einem physischen Medium übertragen zu
werden. IPV6-Anfangsblöcke
können
auf ähnliche Weise
am Beginn einer Meldungsübertragung
verwendet werden.
-
Bei
einem anderen Ausführungsbeispiel
umfasst der Ressourcenzuordnungsmechanismus 126 bei dem
Knoten 110 einen Mechanismus zum Ändern der Priorität bei den
Warteschlangen der MAC 162 in Echtzeit, wodurch Latenzzeit
und Jitter bei der Meldungsübertragung
reduziert werden. Bei einem anderen Ausführungsbeispiel umfasst der
Ressourcenzuordnungsmechanismus 126 bei dem Knoten 110 einen
Mechanismus zum Voranordnen von Meldungen innerhalb der MAC 162,
wodurch Latenzzeit und Jitter vermieden werden, die durch Protokollpegel verursacht
werden, die höher
sind als die MAC 162 einschließlich dem Betriebssystem 152.
Bei einem anderen Ausführungsbeispiel
umfasst der Ressourcenzuordnungsmechanismus 126 bei dem
Knoten 110 einen Mechanismus zum Scharfmachen innerhalb
der MAC 162, um eine Bandbreite für Meldungen zu reservieren,
die einer HRT-Aufgabe zugeordnet sind. Bei einem anderen Ausführungsbeispiel umfasst
der Ressourcenzuordnungsmechanismus 126 bei dem Knoten 110 einen
Mechanismus zum Signalisieren bei Schicht 1 des Protokollstapels 160, unter
bestimmten Umständen.
Zum Beispiel kann ein Signalisieren unter Verwendung eines Kanals
eines Multiplexes implementiert sein – entweder zeitbasiert, wie
bei TDMA (z. B. SERCOS), Wellenlänge oder
Frequenz sein.
-
Bei
einem wiederum anderen Ausführungsbeispiel
umfasst der Ressourcenzuordnungsmechanismus 126 bei dem
Knoten 110 einen Mechanismus zum Codieren bei der PHY 164.
Zum Beispiel umfasst die 4B/5B-Codierung, die bei 100 BT und anderen
Hochgeschwindigkeitsprotokollen verwendet wird, unbenutzte Bitmuster.
Die unbenutzten Bitmuster werden üblicherweise nicht verwendet,
da sie üblicherweise
andere Signalisierungsanforderungen nicht erfüllen, wie z. B. Durchschnittsübertragungsleistungs-
(Null-Mittel-) Proble me. Unter Anbetracht der Tatsache, dass Scharfmachung
und Signalisierung üblicherweise
wesentlich weniger häufig
sind als die Signalisierungsraten, kann eine gelegentliche Verwendung
der unbenutzten Codes für
Scharfmachen, Auslösen,
etc., eingesetzt werden, Die PHY 164 fügt einen der unbenutzten Codes
ein, wenn eine Meldung ansprechend auf ein Echtzeitereignis gesendet
wird. Die PHY 164 umfasst die unbenutzten Codes und zieht
die unbenutzten Codes heraus, wenn eine Meldung empfangen wird,
wodurch die Latenzzeit reduziert wird, die anderweitig verursacht werden
würde,
wenn die Meldungen effektiv eine Symbolzeit lang in die Warteschlange
gesetzt werden würde.
-
Wenn
die Kommunikationsinfrastruktur 130 einen Kommunikationsschalter
umfasst, dann erkennt der Kommunikationsschalter die unbenutzten Codes
in einer Meldung, die an einem Eingans-Port empfangen wird, zieht
die unbenutzten Codes heraus, währen
sie ihren Ausgangs-Ports signalisiert, die unbenutzten Codes in
eine aktuelle ausgehende Meldung einzufügen, wodurch eine Latenzzeit
entfernt wird, die anderweitig dem Kommunikationsschalter zugeordnet
wäre. Anders
ausgedrückt
kann ein codiertes Scharfmach-Signal auf einer eingehenden Meldung
A zu anderen Konten über
eine vollständig
unterschiedliche Meldung an anderen Ports verteilt werden. Die Auswahl,
auf welchen Knoten die Codierung verteilt werden soll, kann vorkonfiguriert sein,
kann in manchen Fällen
Teil der Codierung sein oder kann innerhalb des Kommunikationsschalters zeitbasiert
sein oder ein Gruppenruf sein.
-
Der
Ressourcenzuordnungsmechanismus 126 kann einen zeitbewussten
Kompilierer umfassen, der angepasst ist, um eine Vielzahl von Ressourcen
in dem zeitbewussten System 10 zuzuordnen. Die Rolle des
bekannten Kompilierers kann gekennzeichnet sein als das Transformieren
eines Softwareprogramms, das in einer Programmiersprache dargestellt
ist, in einen Satz aus Anweisungen, die die Aktivitäten der
verschiedenen Komponenten innerhalb einer CPU orchestrie ren, um
eine Anweisung auszuführen.
Diese können
als CPU-Ebenen-Anweisungen
bezeichnet werden. Ein bekannter Kompilierer kann Kenntnisse über den
Aufbau von unterschiedlichen Klassen von CPUs und die Fähigkeiten der
Komponenten der CPUs haben und kann einen Code für eine bestimmte CPU basierend
auf Befehlszeilenoptionen emittieren. Zum Beispiel kann ein Kompilierer
wissen, dass bestimmte CPUs eine Gleitkommaeinheit (floating point
unit) aufweisen, während
andere zwei haben können,
und kann Sequenzen von Anweisungen entsprechend planen.
-
Ein
zeitbewusster Kompilierer gemäß den vorliegenden
Lehren emittiert Anweisungen und Konfigurationseinstellungen, die
die Aktionen der Ressourcen des gesamten zeitbewussten Systems 10 orchestrieren,
nicht für
nur eine CPU auf einem bestimmten Knoten eines Systems, wie bei
bekannten Kompilierern. Ein zeitbewusster Kompilierer emittiert binäre Artefakte,
um viele Typen von Ressourcen zu steuern, z. B. CPUs, Mess-Front-Ends,
Kommunikationsbusse, Networking, etc., ansprechend auf eine zeitliche
Beschreibung der Aktivitäten
eines gesamten Systems, z. B. die Zeitgebungsparameter 28.
Die zeitliche Beschreibung kann in einem Programm dargestellt sein.
Die binären
Artefakte können
in der Form eines traditionellen binären Codes für eine CPU manifestiert sein
und können
ferner die Form von Konfigurationseinstellungen für andere
Ressourcen annehmen, z. B. Konfigurationseinstellungen für eine Messschaltung,
eine Kommunikationsvorrichtung, etc. Wenn mehrere CPUs in einem
System sind, können
Anweisungen für
jede CPU emittiert werden. Die verschiedenen Ressourcen müssen nicht
explizit miteinander über
Meldungen kommunizieren, wie bei bekannten Kompilierern der Fall
ist. Stattdessen, wenn eine gemeinsame Zeitvorstellung und synchronisierte
Uhren gegeben sind, können
die Aktionen für die
verschiedenen Ressourcen implizit durch einen Kompilierer synchronisiert
werden, wenn die Anweisungen für
die verschiedenen Systemressourcen emittiert werden.
-
Ein
zeitbewusster Kompilierer kann sich der internen Zusammensetzung
eines Systems bewusst ein, einschließlich Beschreibungen einer
Anzahl von Systemen und Kenntnisse von Informationen, wie z. B.
Typen von Ressourcen, wie z. B. CPU, Router, Mess-Front-End, etc,
und wie die Ressourcen verbunden sind, und das Wesen von Konfigurationseinstellungen,
die die Ressourcen akzeptieren, z. B. akzeptiert eine CPU einen
binären
Code, ein Router kann einen unterschiedlichen binären Code
akzeptieren, etc.
-
Eine
Programmiersprache hoher Ebene kann verwendet werden, um ein zeitliches
Programm für
das zeitbewusste System 10 darzustellen. Eine solche Programmiersprache
hoher Ebene kann Konstrukte für
einen zeitbewussten Kompilierer umfassen, um Sequenzen von Anweisungen
zu emittieren, um Aktionen auszuführen, die z. B. das Konfigurieren eines
bestimmten Routers.
-
Die
vorangehende, detaillierte Beschreibung der vorliegenden Erfindung
wird zu Zwecken der Darstellung geliefert und soll nicht erschöpfend sein
oder die Erfindung auf das präzise
offenbarte Ausführungsbeispiel
beschränken.
Dementsprechend ist der Schutzbereich der vorliegenden Erfindung
durch die beiliegenden Ansprüche
definiert.