-
Hintergrund der Erfindung
-
Die vorliegende Erfindung betrifft allgemein die Verarbeitung von Befehlen mit mehreren Prioritäten zwischen Back-End-Prozessoren. Insbesondere betrifft die vorliegende Erfindung die serielle Übertragung von Prozessorbefehlen mit unterschiedlicher Ausführungspriorität an Back-End-Prozessoren.
-
Für Hochleistungsserver werden Befehls- und Steuerprozessoren für vor Ort austauschbare Netzteile/Kühleinheiten (field replaceable unit, FRU) allgemein auf der Grundlage von Merkmalen wie lange Lebensdauer, geringer Flächenbedarf und niedriger Preis ausgewählt. Durch die Verwendung kleiner, preiswerter Mikrocontroller für Back-End-Prozessoren können in Netzteilen Kosten pro Einheit eingespart werden.
-
Die Befehls- und Steuerfunktionen in FRUs werden üblicherweise durch einen oder mehrere dieser kleinen, preiswerten Mikrocontroller ausgeführt. Bei FRUs mit mehreren Mikrocontrollern dient ein Controller oft als primärer (Front-End-)Mikrocontroller, und die übrigen Mikrocontroller werden als Back-End-Prozessoren (BEP) bezeichnet.
-
In einer FRU mit einem oder mehreren BEPs führt der Front-End-Mikrocontroller üblicherweise die zyklische Überwachung der BEP-Funktionen aus, die mitunter als EDFI (error detection and fault isolation, Fehlererkennung und -isolierung) bezeichnet wird und die BEP-Daten (Statusdaten und Sensorwerte) im Front-End-RAM zwischenspeichert, von wo diese durch eine Verwaltungsanwendung nach einem eigenen Zeitplan der Anwendung abgerufen werden können. Wenn die Verwaltungsanwendung in Echtzeit einen Befehl an den BEP senden soll (z. B. um eine Motordrehzahl zu ändern), reagiert der Front-End-Mikrocontroller üblicherweise sofort mit einem positiven Antwortcode an die Verwaltungsanwendung. Dann sorgt der Front-End-Controller für die Übertragung des Befehls an den BEP. Die Verwaltungsanwendung fragt üblicherweise den Status zu einem späteren Zeitpunkt ab, um zu ermitteln, ob der Echtzeit-Befehl (hoher Priorität) erfolgreich ausgeführt wurde.
-
Die zunehmende Verwendung von BEPs hat zu verschiedenen Problemen bei der Back-End-Datenübertragung geführt. Das Hauptproblem besteht in der Koordinierung mehrerer Prozesse, die sämtlich Daten mit einem BEP austauschen wollen. Insbesondere kommt es zu Situationen, in denen nichtperiodische Befehle hoher Priorität an einen BEP gesendet werden müssen. Da der Front-End-Mikrocontroller in der Regel ständig mit zyklischen Routineüberwachungsfunktionen beschäftigt ist, muss der Zugriff auf den seriellen Anschluss koordiniert werden, um Störungen zu vermeiden. Als Beispiel für einen Befehl hoher Priorität sei der Fall genannt, bei dem der Front-End-Mikrocontroller feststellt, dass ein Statusänderungsbefehl an einen BEP gesendet werden muss. Ein weiteres Beispiel stellt ein Befehl zur Änderung einer Motordrehzahl dar. Weiterhin besteht ein Problem darin, nahezu gleichzeitig vorliegende Befehle hoher Priorität zu verarbeiten, z. B. wenn Befehle hoher Priorität nahezu gleichzeitig eintreffen.
-
Am besten lässt sich dieses Problem direkt lösen, indem ein Front-End-Mikrocontroller verwendet wird, der eine große Anzahl serieller Anschlüsse enthält. Das Problem der Steuerung der Datenübertragung wird dadurch vereinfacht, dass für jeden BEP ein serieller Anschluss vorgesehen ist. Diese Hardwarelösung ist jedoch mit höheren Kosten und zusätzlichem Flächenbedarf auf der Leiterplatte verbunden und nicht immer umsetzbar. Somit ist die Lösung dieser Nachteile der bekannten Technik wünschenswert.
-
Kurzdarstellung der Erfindung
-
Demgemäß stellt die vorliegende Erfindung gemäß einem ersten Aspekt ein System zum Übertragen von Prozessorbefehlen verschiedener Ausführungspriorität bereit, aufweisend: einen Front-End-Prozessor, der zum seriellen Empfangen von Prozessorbefehlen konfiguriert ist; eine Vielzahl mit dem Front-End-Prozessor verbundener Befehlswarteschlangen, wobei die Befehlswarteschlangen eine Warteschlange hoher Priorität beinalten, die zum Speichern von Befehlen hoher Priorität konfiguriert ist, und eine Warteschlange niedriger Priorität, die zum Speichern von Befehlen niedriger Priorität konfiguriert ist; einen Controller, der zum Freigeben der Übertragung von Befehlen von nur einer der Befehlswarteschlangen konfiguriert ist; und mindestens einen Back-End-Prozessor; wobei der Controller zum Übertragen der Befehle an den mindestens einen Back-End-Prozessor konfiguriert ist.
-
Vorzugsweise wird die Übertragung von Befehlen an den mindestens einen Back-End-Prozessor seriell durchgeführt. Vorzugsweise sind die Befehlswarteschlangen kreisförmige Warteschlangen, sodass die letzten Elemente in den Warteschlangen auf die ersten Elemente der Warteschlangen zeigen. Vorzugsweise ist der Controller so konfiguriert, dass er zu Anfang einen Warteschlangenstatus der Warteschlange niedriger Priorität in den Status Freigegeben versetzt, einen Befehlsstatus der in der Warteschlange niedriger Priorität gespeicherten Befehle niedriger Priorität in einen Status Aktiv versetzt, den Warteschlangenstatus der Warteschlange hoher Priorität in einen Status Ausgesetzt versetzt und den Befehlsstatus der in der Warteschlange hoher Priorität gespeicherten Befehle hoher Priorität in einen Status Leerlauf versetzt. Vorzugsweise ist der Controller so konfiguriert, dass er nach dem Empfangen eines Befehls hoher Priorität den Warteschlangenstatus der Warteschlange niedriger Priorität in den Status Ausgesetzt versetzt, den Warteschlangenstatus der Warteschlange hoher Priorität in den Status Freigegeben versetzt und den Befehlsstatus des Befehls hoher Priorität in den Status Aktiv versetzt. Vorzugsweise ist der Controller so konfiguriert, dass er die Übertragung von Befehlen im Status Aktiv einer Warteschlange im Status Freigegeben freigibt. Vorzugsweise beinhalten die Befehle niedriger Priorität periodische Überwachungsbefehle, und die Befehle hoher Priorität erfordern eine Ausführung im Wesentlichen in Echtzeit.
-
Gemäß einem zweiten Aspekt wird ein Verfahren zum Übertragen von Prozessorbefehlen unterschiedlicher Ausführungspriorität bereitgestellt, wobei das Verfahren aufweist: Speichern von Befehlen niedriger Priorität in einer Warteschlange niedriger Priorität; Speichern von Befehlen hoher Priorität in einer Warteschlange hoher Priorität; Empfangen der Befehle von einem Front-End-Prozessor; und Übertragen der Befehle von einer der Warteschlangen, der Warteschlange niedriger Priorität oder der Warteschlange hoher Priorität, zum Ausführen in einem Back-End-Prozessor.
-
Vorzugsweise wird die Übertragung der Befehle an den Back-End-Prozessor seriell durchgeführt. Vorzugsweise sind die Warteschlange niedriger Priorität und der Warteschlange hoher Priorität kreisförmige Warteschlangen, sodass letzte Elemente in den Warteschlangen auf erste Elemente der Warteschlangen zeigen. Das Verfahren kann ferner zu Anfang das Versetzen eines Warteschlangenstatus der Warteschlange niedriger Priorität in einen Status Freigegeben, eines Befehlsstatus der in der Warteschlange niedriger Priorität gespeicherten Befehle niedriger Priorität in einen Status Aktiv, des Warteschlangenstatus der Warteschlange hoher Priorität in einen Status Ausgesetzt und des Befehlsstatus der in der Warteschlange hoher Priorität gespeicherten Befehle hoher Priorität in einen Status Leerlauf aufweisen. Das Verfahren kann ferner nach dem Empfangen eines Befehls hoher Priorität das Versetzen des Warteschlangenstatus der Warteschlange niedriger Priorität in den Status Ausgesetzt, des Warteschlangenstatus der Warteschlange hoher Priorität in den Status Freigegeben und des Befehlsstatus des Befehls hoher Priorität in den Status Aktiv aufweisen. Vorzugsweise beinhaltet das Übertragen der Prozessorbefehle das serielle Übertragen von Befehlen im Status Aktiv einer Warteschlange im Status Freigegeben an den Back-End-Prozessor.
-
Gemäß einem dritten Aspekt wird ein Computerprogramm bereitgestellt, das einen auf einem computerlesbaren Medium gespeicherten Computerprogrammcode aufweist, der in ein Computersystem geladen und darauf ausgeführt wird, um das Computersystem zum Ausführen aller Schritte eines Verfahrens gemäß dem zweiten Aspekt zu veranlassen.
-
Als beispielhafte Ausführungsform der vorliegenden Erfindung dient ein System zum seriellen Übertragen von Prozessorbefehlen unterschiedlicher Ausführungspriorität. Das System beinhaltet einen Front-End-Prozessor, der zum seriellen Empfangen von Prozessorbefehlen konfiguriert ist. Mit dem Front-End-Prozessor sind eine Vielzahl von Befehlswarteschlangen verbunden. Die Befehlswarteschlangen beinhalten eine Warteschlange niedriger Priorität, die zum Speichern von Befehlen niedriger Priorität konfiguriert ist, und eine Warteschlange hoher Priorität, die zum Speichern von Befehlen hoher Priorität und/oder Sequenzen von Befehlen hoher Priorität konfiguriert ist. Ein Controller ist zum Freigeben der Übertragung von Befehlen von nur einer der Befehlswarteschlangen konfiguriert.
-
Eine weitere beispielhafte Ausführungsform der Erfindung stellt ein Verfahren zum seriellen Übertragen von Prozessorbefehlen unterschiedlicher Ausführungspriorität dar. Das Verfahren beinhaltet das Speichern von Befehlen niedriger Priorität in einer Warteschlange niedriger Priorität und das Speichern von Befehlen hoher Priorität in einer Warteschlange hoher Priorität. Ein Front-End-Prozessor empfängt die Befehle während einer Empfangsoperation. Die empfangenen Befehle werden während einer Übertragungsoperation von einer der Warteschlangen, der Warteschlange niedriger Priorität oder der Warteschlange hoher Priorität, zum Ausführen an den Back-End-Prozessor übertragen.
-
Eine weitere beispielhafte Ausführungsform der Erfindung stellt ein Computerprogrammprodukt zum seriellen Übertragen von Prozessorbefehlen unterschiedlicher Ausführungspriorität dar. Der Programmcode ist zum Speichern von Befehlen niedriger Priorität in einer Warteschlange niedriger Priorität, zum Speichern von Befehlen hoher Priorität in einer Warteschlange hoher Priorität, zum Empfangen der Befehle durch einen Front-End-Prozessor und zum Übertragen der empfangenen Befehle von einer Warteschlange, der Warteschlange niedriger Priorität oder der Warteschlange hoher Priorität, zum Ausführen an einen Back-End-Prozessor konfiguriert.
-
Kurzbeschreibung der Zeichnungen
-
Nunmehr wird eine bevorzugte Ausführungsform der vorliegenden Erfindung lediglich beispielhaft unter Bezugnahme auf die beiliegenden Zeichnungen beschrieben, wobei:
-
1 zeigt ein beispielhaftes Computersystem zum Verarbeiten von BEP-Befehlen unterschiedlicher Priorität gemäß Ausführungsformen der vorliegenden Erfindung.
-
2 ein weiteres beispielhaftes System gemäß Ausführungsformen der Erfindung zeigt.
-
3 einen beispielhaften Controller für Warteschlangen zeigt, der mit der Fähigkeit zum Verwalten von zyklischen Standarddatenübertragungen niedriger Priorität zu Überwachungszwecken sowie von nichtperiodischen Datenübertragungen hoher Priorität ausgestattet ist.
-
4 eine statische Warteschlangen-Architektur zeigt, die durch eine Ausführungsform der vorliegenden Erfindung verwendet wird.
-
5A eine Warteschlange niedriger Priorität in einem (normalen) Status FREIGEGEBEN zeigt.
-
5B eine Warteschlange niedriger Priorität in einem Status AUSGESETZT, einen gewünschten Befehl hoher Priorität und/oder Folgen von Befehlen hoher Priorität im aktivierten Status und eine Warteschlange hoher Priorität in einem Status FREIGEGEBEN zeigt.
-
5C einen deaktivierten Befehl hoher Priorität und eine Warteschlange hoher Priorität zeigt, die so lange im Status FREIGEGEBEN verbleibt, bis der Befehl ausgeführt worden ist.
-
5D eine Warteschlange hoher Priorität in einem Status AUSGESETZT und eine Warteschlange niedriger Priorität zeigt, die ihren Normalbetrieb wieder aufnimmt (Status FREIGEGEBEN).
-
6 einen beispielhaften Prozess zum seriellen Übertragen von Prozessorbefehlen unterschiedlicher Ausführungspriorität gemäß Ausführungsformen der vorliegenden Erfindung zeigt.
-
7 eine Ausführungsform zeigt, bei der die Warteschlange hoher Priorität nicht zum Senden einzelner Befehle hoher Priorität, sondern zum Senden von Befehlsfolgen hoher Priorität verwendet wird.
-
Detaillierte Beschreibung der bevorzugten Ausführungsformen
-
Während der Beschreibung der Ausführungsformen der Erfindung wird auf 1 bis 6 Bezug genommen.
-
Im Rahmen der folgenden detaillierten Erörterung beinhalten Ausführungsformen der vorliegenden Erfindung eine Architektur zum Verwalten der asynchronen seriellen Datenübertragung zwischen mehreren Mikrocontrollern zum Ausführen von Befehls- und Steuerfunktionen einer Netzteil/Kühl-Komponente in einem fehlertoleranten Hochleistungsserver hoher Verfügbarkeit. Diese neuartige Bauart kann eine vollständig asynchrone, unterbrechungsgesteuerte Datenübertragung ermöglichen, die die freie Ausführung einer Firmware-Anwendung zulässt, während die Datenübertragung erfolgt.
-
Außerdem kann die Bauart die Fähigkeit zum Verwalten einer Reihe von Befehlen unterstützen, die mit „normaler” Priorität nach einem vorgegebenen periodischen Zeitplan (routinemäßige zyklische Datenübertragung) gesendet werden. Die Bauart kann die Fähigkeit zum Verwalten einer Reihe von Befehlen unterstützen, die nach einem unvorhersagbaren Zeitplan (als Reaktion auf veränderte Umstände oder als Reaktion auf externe Ressourcen) gesendet werden können, deren Priorität höher sein kann, sodass sie vorzugsweise anstelle der Befehle normaler Priorität gesendet werden.
-
Ausführungsformen können die Fähigkeit zum Austauschen von Daten zwischen einem „Front-End”-Mikrocontroller und einer beliebigen Anzahl von „Back-End”-Mikrocontrollern, darunter auch Multiplex-Datenübertragungen, unterstützen. Diese Funktionen können als gemeinsame Codebibliothek organisiert werden, die die Verwendung der Funktionen durch jeden Entwickler in einer Gruppenumgebung ermöglicht.
-
Gemäß den oben erörterten Ausführungen können Ausführungsformen der Erfindung solche Aufgaben ohne die Verwendung einer dynamischen Warteschlange und ohne einen komplizierten Prioritätsalgorithmus lösen. Solche Ansätze liefern in der Regel einen Code, der wesentlich komplexer und anfälliger für Laufzeitfehler, beispielsweise für Speicherverluste ist. Anstelle eines komplizierteren Prioritätsschemas unter Verwendung einer dynamischen Speicherverwaltung oder eines numerischen Prioritätsschemas wird zum Beispiel ein einfacher Ansatz mit zwei Warteschlangen verwendet; eine Warteschlange hoher Priorität und eine (normale) Warteschlange niedriger Priorität. Eine solche Lösung vermeidet alternative Hardwarekonfigurationen, deren Einrichtung mit höheren Kosten verbunden sein kann.
-
1 zeigt ein beispielhaftes Computersystem 102 zum Verarbeiten von Befehlen unterschiedlicher Priorität gemäß der vorliegenden Erfindung. Die Figur veranschaulicht, dass ein Server 104 Prozessorbefehle 106 von einer Verwaltungsanwendung empfängt, die über ein Computernetz 110 auf einem Verwaltungscomputer 108 ausgeführt wird. Bei dem Server kann es sich um einen fehlertoleranten Hochleistungsserver mit hoher Verfügbarkeit handeln. Obwohl der Verwaltungscomputer 108 außerhalb des Servers 104 dargestellt ist, ist es denkbar, dass der Verwaltungscomputer 108 innerhalb des Servercomputers 104 untergebracht sein kann.
-
Die Prozessorbefehle 106 beinhalten Befehls- und Steueranweisungen für vor Ort austauschbare Einheiten (FRU) 112 innerhalb des Servers 104. Darüber hinaus können die Befehle 106 unterschiedliche Ausführungsprioritäten aufweisen. Zum Beispiel können Befehle niedriger Priorität periodisch wiederkehrende Überwachungsbefehle beinhalten, während Befehle hoher Priorität eine Ausführung im Wesentlichen in Echtzeit erfordern können.
-
Die ausführlichere Erörterung zeigt, dass die Befehle asynchron und seriell über das Netzwerk 110 an die vorgesehene FRU 112 übertragen werden. Ein Front-End-Prozessor 114 in der FRU 112 empfängt die Befehle 106 von der Verwaltungsanwendung. Dann leitet der Front-End-Prozessor 114 die Befehle 106 bei Bedarf an Back-End-Prozessoren 116 weiter.
-
Zu sehen ist, dass der Front-End-Prozessor 114 eine Vielzahl von Befehlswarteschlangen 118 enthalten kann. Jede Warteschlange 118 ist zum Speichern von Befehlen 106 einer bestimmten Prioritätsstufe konfiguriert. Zum Beispiel ist eine mit dem Front-End-Prozessor verbundene Warteschlange 120 niedriger Priorität zum Speichern von Befehlen niedriger Priorität konfiguriert. Desgleichen ist eine mit dem Front-End-Prozessor verbundene Warteschlange 122 hoher Priorität zum Speichern von Befehlen hoher Priorität konfiguriert. Gemäß einer bestimmten Ausführungsform weisen die Befehlswarteschlangen 118 eine feste Speichergröße auf. Darüber hinaus können die Befehlswarteschlangen 118 kreisförmige Warteschlangen sein, sodass letzte Elemente in den Warteschlangen auf erste Elemente der Warteschlangen zeigen.
-
Gemäß einer Ausführungsform kann jede Warteschlange 118 einen Warteschlangenstatus Freigegeben oder Ausgesetzt aufweisen. Darüber hinaus können die in den Warteschlangen 118 gespeicherten Befehle einen Status Aktiv oder Leerlauf aufweisen.
-
Der Front-End-Prozessor 114 enthält auch einen Controller, der zum Freigeben der seriellen Übertragung von Befehlen von nur einer der Warteschlangen 118 zum Ausführen in den Back-End-Prozessoren 116 konfiguriert ist. Gemäß einer Ausführungsform kann der Controller zum Freigeben der Übertragung von Befehlen im Status Aktiv einer Warteschlange im Status Freigegeben an die Back-End-Prozessoren 116 konfiguriert werden.
-
Der Controller 124 kann so konfiguriert werden, dass er zu Anfang einen Warteschlangenstatus der Warteschlange niedriger Priorität in einen Status Freigegeben und den Warteschlangenstatus der Warteschlange hoher Priorität in einen Status Ausgesetzt versetzt. Außerdem kann der Controller 124 zu Anfang den Befehlsstatus der in der Warteschlange niedriger Priorität gespeicherten Befehle niedriger Priorität in einen Status Aktiv und den Befehlsstatus der in der Warteschlange hoher Priorität gespeicherten Befehle hoher Priorität in einen Status Leerlauf versetzen. Somit werden zu Anfang nur die in der Warteschlange 120 niedriger Priorität aktiven Befehle niedriger Priorität an die Back-End-Prozessoren 116 übertragen.
-
Der Controller 124 kann außerdem so konfiguriert werden, dass er nach dem Empfangen eines Befehls hoher Priorität den Warteschlangenstatus der Warteschlange 120 niedriger Priorität in den Status Ausgesetzt, den Warteschlangenstatus der Warteschlange 122 hoher Priorität in den Status und den Befehlsstatus des empfangene Befehls hoher Priorität und/oder der empfangenen Sequenzen von Befehlen hoher Priorität in den Status Aktiv versetzt. Wenn dies geschieht, wird die Übertragung der Befehle niedriger Priorität in der Warteschlange 120 niedriger Priorität an die Back-End-Prozessoren 116 angehalten. Weiterhin werden der/die aktiven Befehl/e in der Warteschlange 122 hoher Priorität durch den Controller 124 an die Back-End-Prozessoren 116 übertragen.
-
Somit unterstützt das beispielhafte System die Verwaltung der asynchronen seriellen Datenübertragung zwischen einem und mehreren Back-End-Prozessoren wie beispielsweise Mikrocontrollern, die Befehls- und Steuerfunktionen in einer vor Ort austauschbaren Einheit ausführen, zum Beispiel in einer Netzteil/Kühl-Komponente eines fehlertoleranten Hochleistungsservers mit hoher Verfügbarkeit. Ausführungsformen des Erfinders können eines oder mehrere der folgenden Merkmale unterstützen: (a) die vollkommen asynchrone, interruptgesteuerte Datenübertragung, die das Ausführen der Firmware-Anwendung ermöglicht, während die Datenübertragung erfolgt; (b) die Fähigkeit zum Verwalten einer Reihe von Befehlen, die nach einem vorgegebenen periodischen Zeitplan mit „normaler” Priorität gesendet werden (routinemäßige zyklische Datenübertragung); (c) die Fähigkeit, eine Reihe von Befehlen zu verwalten, die nach einem unvorhersagbaren Zeitplan (als Reaktion auf veränderte Umstände oder als Reaktion auf externe Ressourcen) gesendet werden können, deren Priorität erhöht sein kann, sodass sie vorzugsweise anstelle der Befehle „normaler” Priorität gesendet werden; (d) die Fähigkeit, Datenübertragungen zwischen dem „Front-End”-Mikrocontroller und einer beliebigen Anzahl von „Back-End”-Mikrocontrollern zu unterstützen, darunter Multiplex-Datenübertragungen; und (e) das Organisieren dieser Funktionen als gemeinsame Codebibliothek, die die Verwendung der Funktionen durch jeden Entwickler in einer Gruppenumgebung ermöglicht.
-
2 zeigt nunmehr ein weiteres beispielhaftes System 202 gemäß der Erfindung. Das System unterstützt mehrere Back-End-Prozessoren (BEP) 116 wie beispielsweise eine MDAU (minimum data access unit, Datenmindestabrufeinheit), ein 39912-VRM (voltage regulator module, Spannungsregelmodul), einen 35912-BPR-BEP (Wechselstrom/Gleichstrom, Gleichstrom/Gleichstrom und IBF), 3687-(im MDARE und im neuen BPR für z-Gryphon und P7) und 2166-Verfach-VRM-Mikrocontroller. Der Front-End-Prozessor 114 beinhaltet Softwarefunktionen für serielle Datenübertragung, die sowohl die routinemäßige zyklische Datenübertragung zwischen den Back-End-Prozessoren 116 als auch die „Echtzeit”-Datenübertragung mit hoher Priorität zwischen den Back-End-Prozessoren 116 unterstützen. Gemäß einer Ausführungsform sind die Datenübertragungs-Softwarefunktionen als gemeinsame Codebibliothek organisiert und können durch jeden Entwickler der Gruppe verwendet werden.
-
Im Folgenden wird näher ausgeführt, dass das System 202 einen Controller 204 zur Verwaltung der Datenübertragung mittels Warteschlangen beinhaltet. Der Controller 204 verwendet mehrere statische Warteschlangen, die jeweils eine andere (fest vorgegebene) Priorität aufweisen. Befehle in jeder Warteschlange weisen zwei statische Status auf, einen aktiven und einen inaktiven Status, die die Steuerung auf Befehlsebene erlauben. Der Controller 204 steuert alle Warteschlangen und stellt sicher, dass zu jedem Zeitpunkt nur eine Warteschlange freigegeben ist.
-
Seriell übertragene Befehls- und Steueranweisungen werden von der Administratoranwendung 108 direkt an den Front-End-Prozessor 114 gesendet (serielle Datenübertragungen sind in den Figuren durch gestrichelte Linien dargestellt). Der Front-End-Prozessor 114 wickelt sämtliche Datenübertragungen mit den Back-End-Prozessoren 116 ab und zwischenspeichert alle Statusdaten der Back-End-Prozessoren, damit diese bei Bedarf durch die Administratoranwendung 108 abgerufen werden können.
-
Durch die Wahl eines Controllers 204 mit statischen Warteschlangen werden die Komplexität und die damit verbundenen Probleme vermieden, die sich bei Verwendung einer dynamischen Speicher- oder Prioritätsverwaltung ergäben. Die Warteschlangen werden zum Zeitpunkt null erzeugt und ihre Elemente für den Zeitpunkt null initialisiert. Die Anzahl der Warteschlangen und die für jede Warteschlange (fest vorgegebene) Priorität werden zu diesem Zeitpunkt festgelegt. Zur einfacheren Beschreibung der Funktionsweise der Warteschlangen wird die folgende Beschreibung auf zwei Warteschlangen mit den Prioritäten „niedrig” und „hoch” beschränkt, obwohl das Konzept auf eine beliebige Anzahl von Warteschlangen mit jeweils einer zugeordneten Priorität erweiterbar ist.
-
Das System 202 beinhaltet einen Anschlussmultiplexer 206, der zum Unterstützen der gemultiplexten seriellen Datenübertragungen mit zahlreichen seriellen Anschlüssen der Mikrocontroller konfiguriert ist. Der Controller 204 verwaltet gemultiplexte Datenübertragungen an alle BEPs 116 auf diesem seriellen Kanal. Für jeden seriellen Anschluss 208 wird ein Warteschlangencontroller 204 definiert.
-
3 zeigt, dass der Controller 204 mit mehreren Warteschlangen mit der Fähigkeit zum Verwalten von standardmäßigen zyklischen Datenübertragungen 302 zu Überwachungszwecken (EDFI) mit niedriger Priorität sowie nichtperiodischen Datenübertragungen 304 mit hoher Priorität ausgestattet ist. Außerdem kann die Back-End-Warteschlange für Tasks hoher Priorität wie beispielsweise Flash-Aktualisierungen ausgesetzt werden, welche den seriellen Anschluss für die Dauer der Task in Anspruch nehmen. Das System unterstützt auch Pseudobefehle, die warteschlangenbezogene Aktionen ausführen, beispielsweise eine Anweisung, mit dem Ausführen des nächsten Befehls eine Sekunde zu warten. Dadurch kann der Infrastrukturcode zur Verwaltung der Back-End-Datenübertragungen die unterschiedlichen Zeitbasen ausgleichen, die möglicherweise in verschiedenen Anwendungen verwendet werden (d. h. die Häufigkeit der Zeitgeber-Interrupts und die Feinteiligkeit des Laufzeitzählers).
-
4 zeigt die durch eine Ausführungsform der vorliegenden Erfindung verwendete Architektur 402 der statischen Warteschlangen. Gemäß dieser Ausführungsform beinhaltet die Warteschlangenarchitektur 402 eine Warteschlange 404 niedriger Priorität und eine Warteschlange 406 hoher Priorität. Die Elemente der Warteschlangen sind nicht dynamisch, sondern statisch. Das heißt, die Elemente der Warteschlangen sind fest vorgegeben. Durch das System der statischen Warteschlangen wird eine dynamische Speicherverwaltung vermieden, die aufgrund ihrer Komplexität zu Speicherverlusten und anderen Problemen führen kann. Da alle Befehle, die als Reaktion auf einen LIC-Befehl an den BEP weitergeleitet werden können, zum Zeitpunkt der Systemerstellung bekannt sind, können außerdem beide Warteschlangen 404 und 406 zum Zeitpunkt null mit statischen Elementen initialisiert werden.
-
Sowohl die Warteschlange 406 hoher Priorität als auch die Warteschlange 404 niedriger Priorität weisen statisch verknüpfte Befehlselemente 408 auf, jedoch weisen sie standardmäßig einen unterschiedlichen Status auf. Standardmäßig lautet der Status der Warteschlange niedriger Priorität FREIGEGEBEN und der Status ihrer Befehlselemente 408 AKTIV. Standardmäßig lautet der Status der Warteschlange hoher Priorität AUSGESETZT und der Status ihrer Befehlselemente 408 LEERLAUF. Der Warteschlangen-Controller ermittelt, wann der Befehl hoher Priorität und/oder die Folgen von Befehlen hoher Priorität gesendet werden müssen, und „sendet” diese, indem er die Warteschlange hoher Priorität in den Status FREIGEGEBEN und den Zielbefehl in den Status AKTIV versetzt.
-
Der Warteschlangen-Controller wickelt im Einzelnen das Aussetzen der Warteschlange 404 niedriger Priorität, das Freigeben der Warteschlange 406 hoher Priorität und das Senden des Befehls hoher Priorität und/oder der Folgen von Befehlen hoher Priorität ab. Wenn die Verarbeitung des Befehls hoher Priorität und/oder der Folge von Befehlen hoher Priorität abgeschlossen ist, versetzt er den Befehl wieder zurück in den Status LEERLAUF, setzt die Warteschlange hoher Priorität aus und nimmt die Arbeit der Warteschlange niedriger Priorität wieder auf.
-
Gemäß einer Ausführungsform der Erfindung kann die funktionelle Architektur des Systems in drei Datenstrukturebenen eingeteilt werden, die durch den Controller genutzt werden. Jede Datenstrukturstufe repräsentiert eine Stufe in der Hierarchie der Warteschlangenverwaltung. Die Datenstruktur der ersten Stufe ist die Warteschlangensteuerstruktur für einen seriellen Anschluss. Die Datenstruktur der zweiten Stufe ist/sind die Warteschlange/n innerhalb der Steuerstruktur. Die Datenstruktur der dritten Stufe stellen die aneinander gereihten Befehlselemente dar, aus denen jede Warteschlange besteht.
-
Der Controller zur Verwaltung der seriellen Datenübertragungen mittels Warteschlangen kann wie oben erwähnt zum Zeitpunkt null eingerichtet werden. Die erste Entscheidung besteht darin, die Anzahl der Prioritätsstufen in dem System zu ermitteln, da hiervon die Anzahl der Warteschlangen abhängt. Unter Bezugnahme auf 5A bis 5D wird nunmehr ein beispielhaftes System mit zwei Prioritätsebenen („niedrig” und „hoch”) beschrieben, das zwei Warteschlangen erfordert: eine Warteschlange niedriger Priorität (low priority queue, LPQ) und eine Warteschlange hoher Priorität (high priority queue, HPQ).
-
Die LPQ wird mit den Befehlen zum Durchführen einer routinemäßigen zyklischen Überwachung des/der BEP/s initialisiert, während die HPQ die Gruppe von Befehlen enthält, die nicht periodisch gesendet werden, sondern in Echtzeit verarbeitet werden müssen. Beispiele solcher Befehle hoher Priorität sind unter anderem Einschalt- oder Ausschaltbefehle oder Befehle zur Korrektur einer Motordrehzahl.
-
Die Warteschlangen sind statisch, d. h., es wird kein Speicherplatz dynamisch zugeordnet oder freigegeben. Jede Warteschlange besteht aus einer kreisförmigen Kette (verkettete Liste), in der das „nächste” Element jedes Befehls auf den nächsten Befehl in der Kette zeigt, sodass der letzte Befehl in der Kette wiederum auf den ersten Befehl zeigt. Die Elemente der Warteschlangen werden zum Zeitpunkt null eingerichtet und bleiben während der gesamten Ausführung der Anwendung bestehen. Das ist möglich, weil der Entwickler von vornherein weiß, welche Befehle an den BEP gesendet werden können. Der Hauptunterschied zwischen der LPQ und der HPQ besteht darin, dass standardmäßig der Status der LPQ FREIGEGEBEN und der Status ihrer Befehle AKTIV lautet. Der Status der HPQ hingegen lautet standardmäßig AUSGESETZT und der Status ihrer Befehle standardmäßig LEERLAUF.
-
Zum Beispiel kann in einer FRU mit drei BEPs die LPQ die folgenden Befehle enthalten:
FRU-Status abrufen (Multiplexeradresse 1)
FRU-Status abrufen (Multiplexeradresse 2)
FRU-Status abrufen (Multiplexeradresse 3)
1 Sekunde aussetzen
-
Die HPQ kann die folgenden Befehle enthalten:
Motordrehzahl ändern (Multiplexeradresse 1)
Einschalten (Multiplexeradresse 2)
Ausschalten (Multiplexeradresse 2)
Einschalten (Multiplexeradresse 3)
Ausschalten (Multiplexeradresse 3)
-
Verschiedene Anwendungen können unterschiedliche Zeitgeberinterruptperioden sowie eine unterschiedliche Feinteiligkeit des Laufzeitzählers verwenden. Der Steuercode der Warteschlangen berücksichtigt dies und versetzt sie in die Lage, sowohl Zeitlimits als auch beabsichtigte Verzögerungen von Befehlen (beispielsweise der oben erwähnte Befehl „1 Sekunde aussetzen”) genau zu messen. Der Steuercode der Warteschlangen muss zum Zeitpunkt null mit den Zeitgeber-Interrupt-Perioden und der Feinteiligkeit des Laufzeitzählers initialisiert werden.
-
Der Zugriff auf den seriellen Anschluss wird durch die Steuerfunktionen der Warteschlangen koordiniert. 5A zeigt die LPQ standardmäßig im Status FREIGEGEBEN (dargestellt durch die schattierten Bereiche) und wird aktiv, wenn die Anwendung startet. Wenn der aktuelle Befehl den Status AKTIV aufweist, wird er verarbeitet, eine Antwort wird empfangen, die Daten werden gespeichert, und der nächste Befehl mit dem Status AKTIV wird geladen. Die LPQ führt die Ausführung so lange fort, bis der Controller feststellt, dass ein Befehl hoher Priorität gesendet werden muss.
-
5B zeigt, dass die Anwendung einen Befehl hoher Priorität durch Aufrufen einer speziellen Steuerfunktion der Warteschlange „sendet”, deren Argument das Befehlselement ist. Diese Funktion versetzt den Befehl hoher Priorität in den Status AKTIV und geht nahtlos dazu über, die LPQ in den Status AUSGESETZT und die HPQ in den Status FREIGEGEBEN zu versetzen (was wiederum durch den schattierten Bereich repräsentiert wird). Dann durchsucht die HPQ ihre Kette von Befehlen, bis sie einen Befehl im Status AKTIV findet. Dieser Befehl wird gesendet, eine Antwort wird empfangen, und deren Daten werden gespeichert. In 5C wird veranschaulicht, dass der aktive Befehl in den Status LEERLAUF versetzt wird. Wenn in der HPQ-Kette kein weiterer Befehl im Status AKTIV gefunden wird, ändert der Warteschlangencode gemäß 5D den Status der HPQ von FREIGEGEBEN in AUSGESETZT und setzt den Status der LPQ wieder zurück in FREIGEGEBEN. Die LPQ nimmt ihre normale zyklische Überwachungsarbeit wieder auf.
-
Gemäß einer Ausführungsform werden alle den Back-End-Datenübertragungen zuzurechnenden Aktivitäten durch den Warteschlangencontroller in einem für die Anwendung transparenten gemeinsamen Code durchgeführt. Wenn die Anwendung einen Befehl hoher Priorität „sendet”, ruft sie eigentlich eine API-Funktion auf, die den Zielbefehl in den Status AKTIV versetzt, und geht nahtlos dazu über, die HPQ in den Status FREIGEGEN zu versetzen. Der Warteschlangencontroller stellt auch den Status FREIGEGEBEN der LPQ wieder her, nachdem die HPQ-Transaktion abgeschlossen ist. Die Anwendung der Firmware wird dann während der Abwicklung der Warteschlangen wieder ungehindert fortgesetzt.
-
6 zeigt nunmehr einen beispielhaften Prozess 602 zum seriellen Übertragen von Prozessorbefehlen unterschiedlicher Ausführungspriorität gemäß der vorliegenden Erfindung.
-
Der Prozess beginnt mit einer Speicheroperation 604, bei der Befehle niedriger Priorität in einer Warteschlange niedriger Priorität gespeichert werden. Während einer Speicheroperation 606 werden Befehle hoher Priorität und/oder Folgen von Befehlen hoher Priorität in einer Warteschlange hoher Priorität gespeichert. Bei der Warteschlange niedriger Priorität und der Warteschlange hoher Priorität kann es sich wie oben erörtert um kreisförmige Warteschlangen handeln, bei denen letzte Elemente in den Warteschlangen auf erste Elemente der Warteschlangen zeigen. Außerdem können die Warteschlangen eine fest vorgegebene Speichergröße aufweisen.
-
Während einer Einstelloperation 608 werden zu Anfang ein Warteschlangenstatus der Warteschlange niedriger Priorität in einen Status Freigegeben und ein Befehlsstatus der in der Warteschlange niedriger Priorität gespeicherte Befehle niedriger Priorität in einen Status Aktiv versetzt. Außerdem werden der Warteschlangenstatus der Warteschlange hoher Priorität zu Anfang in einen Status Ausgesetzt und der Befehlsstatus der in der Warteschlange hoher Priorität gespeicherten Befehle hoher Priorität in einen Status Leerlauf versetzt.
-
Sodann werden während einer Empfangsoperation 610 Befehle unterschiedlicher Ausführungspriorität durch einen Front-End-Prozessor empfangen. Während einer Empfangsoperation 612 werden Befehle hoher Priorität durch den Front-End-Prozessor empfangen.
-
Nachdem der Befehl hoher Priorität empfangen wurde, versetzt eine Einstelloperation 614 den Warteschlangenstatus der Warteschlange niedriger Priorität in den Status Ausgesetzt, den Warteschlangenstatus Warteschlange hoher Priorität in den Status Freigegeben und den Befehlsstatus des Befehls hoher Priorität in den Status Aktiv.
-
Während einer Übertragungsoperation 616 werden Befehle nur von einer der Warteschlangen (entweder von der Warteschlange niedriger Priorität oder der Warteschlange hoher Priorität) seriell zum Ausführen an den Back-End-Prozessor übertragen. Gemäß den obigen Ausführungen überträgt der Controller seriell Befehle im Status Aktiv einer Warteschlange im Status Freigegeben an den Back-End-Prozessor.
-
7 zeigt eine Ausführungsform der Erfindung, bei der die Warteschlange hoher Priorität nicht zum Senden von einzelnen Befehlen hoher Priorität, sondern zum Senden von Befehlssequenzen verwendet wird. Die Warteschlange hoher Priorität kann zum Zeitpunkt null mit einzelnen Befehlen und/oder oder mit Befehlssequenzen ausgestattet werden. Während der Laufzeit wird eine Befehlssequenz durch Aktivieren aller Befehle in der Sequenz und durch Freigeben der Warteschlange hoher Priorität ausgelöst. Der erste Befehl in der Sequenz wird gesendet, und da die Befehle in einer verketteten Liste aneinandergereiht sind, wird die Befehlssequenz in dieser Reihenfolge ausgeführt.
-
Der Warteschlangencontroller sendet wie gezeigt die Echtzeitbefehle 1 bis 4 in der Sequenz und anschließend die Echtzeitbefehle 5 bis 8. Wenn die Verarbeitung der Echtzeit-Befehlssequenzen abgeschlossen ist, gibt der Warteschlangencontroller die Befehlssequenz mit der Standardpriorität wieder frei.
-
Dem Fachmann ist einsichtig, dass Aspekte der Erfindung als System, Verfahren oder Computerprogrammprodukt umgesetzt werden können. Demgemäß können Aspekte der Erfindung die Form einer vollständigen Hardwareumgebung, einer vollständigen Softwareumgebung (darunter Firmware, residente Software, Mikrocode usw.) oder einer Umgebung annehmen kann, die Software- und Hardwareaspekte in sich vereint, die hierin sämtlich als „Schaltkreis”, „Modul” oder „System” bezeichnet werden können. Darüber hinaus können Aspekte der Erfindung die Form eines Computerprogrammprodukts annehmen, das in einem oder mehreren computerlesbaren Medien mit einem darauf verkörperten computerlesbaren Programmcode verkörpert werden kann.
-
Es kann eine beliebige Kombination von einem oder mehreren computerlesbaren Medien verwendet werden. Bei dem computerlesbaren Medium kann es sich um ein computerlesbares Signalmedium oder um ein computerlesbares Speichermedium handeln. Bei einem computerlesbaren Speichermedium kann es sich unter anderem zum Beispiel um ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder Halbleitersystem, eine entsprechende Vorrichtung oder Einheit oder eine geeignete Kombination derselben handeln. Spezielle Beispiele (eine nicht erschöpfende Aufzählung) des computerlesbaren Speichermedium kann Folgendes beinhalten: eine elektrische Verbindung mit einem oder mehreren Leitungen, eine tragbare Computerdiskette, eine Festplatte, einen Arbeitsspeicher (random access memory, RAM), einen Nur-Lese-Speicher (read-only memory, ROM), einen löschbaren programmierbaren Nur-Lese-Speicher (erasable programmable read-only memory, EPROM oder Flash-Speicher), einen Lichtwellenleiter, einen tragbaren Compact Disc-Nur-Lese-Speicher (compact disc read-only memory, CD-ROM), eine optische Speichereinheit, eine magnetische Speichereinheit oder eine geeignete Kombination derselben handeln. In Verbindung mit diesem Dokument kann es sich bei einem computerlesbaren Speichermedium um ein beliebiges materielles Medium handeln, das ein Programm zur Verwendung durch oder in Verbindung mit einem System, einer Vorrichtung oder einer Einheit zum Ausführen von Anweisungen enthalten oder speichern kann.
-
Ein computerlesbares Signalmedium kann ein sich ausbreitendes Datensignal mit einem darin verkörperten computerlesbaren Programmcode enthalten, zum Beispiel im Basisband oder als Teil einer Trägerwelle. Ein solches sich ausbreitendes Signal kann eine Vielzahl von Formen annehmen, darunter unter anderem elektromagnetisch, optisch oder eine geeignete Kombination derselben. Bei einem computerlesbaren Signalmedium kann es sich um ein beliebiges computerlesbares Medium handeln, das kein computerlesbares Speichermedium ist und das ein Programm zur Verwendung durch oder in Verbindung mit einem System, einer Vorrichtung oder einer Einheit zum Ausführen von Anweisungen übertragen, ausbreiten oder transportieren kann.
-
Der auf einem computerlesbaren Medium verkörperte Programmcode kann unter Verwendung eines geeigneten Mediums übertragen werden, darunter unter anderem drahtlos, leitungsgebunden, über Lichtwellenleiter, HF usw. oder eine geeignete Kombination derselben.
-
Der Computerprogrammcode zum Ausführen von Operationen gemäß Aspekten der vorliegenden Erfindung kann in einer beliebigen Kombination einer oder mehrerer Programmiersprachen geschrieben werden, darunter eine objektorientierte Sprache wie beispielsweise Java, Smalltalk, C++ oder Ähnliches und herkömmliche prozedurale Programmiersprachen wie beispielsweise die Programmiersprache C oder ähnliche Programmiersprachen. Der Programmcode kann vollständig auf dem Computer eines Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Softwarepaket, teilweise auf dem Computer des Benutzers und teilweise auf einem fernen Computer oder vollständig auf dem fernen Computer oder Server ausgeführt werden. Im letzteren Szenario kann der ferne Computer über eine beliebige Art von Netzwerk mit dem Computer des Benutzers verbunden werden, darunter ein lokales Netz (local area network, LAN) oder ein Weitverkehrsnetz (wide area network, WAN), oder die Verbindung kann zu einem externen Computer hergestellt werden (zum Beispiel durch das Internet unter Verwendung eines Internet-Dienstanbieters).
-
Aspekte der Erfindung werden im Folgenden unter Bezugnahme auf Ablaufpläne und/oder Blockschaltbilder bzw. Schaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es ist klar, dass jeder Block der Ablaufpläne und/oder Blockschaltbilder bzw. Schaubilder und Kombinationen von Blöcken in den Ablaufplänen und/oder Blockschaltbildern bzw. Schaubilder durch Anweisungen eines Computerprogramms umgesetzt werden können. Diese Anweisungen des Computerprogramms können einem Prozessor eines Universalcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung zum Erzeugen einer Maschine zugeführt werden, sodass die durch den Prozessor des Computers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführten Anweisungen ein Mittel zum Umsetzen der in dem Block oder den Blöcken der Ablaufpläne und/oder Blockschaltbilder bzw. Schaubilder angegebenen Funktionen/Aktionen erzeugen.
-
Diese Anweisungen des Computerprogramms können auch in einem computerlesbaren Medium gespeichert werden, das einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder andere Einheiten veranlassen kann, in einer bestimmten Weise so wirksam zu werden, dass die in dem computerlesbaren Medium gespeicherten Anweisungen einen Herstellungsartikel erzeugen, der Anweisungen zum Umsetzen der in dem Block oder den Blöcken der Ablaufpläne und/oder Blockschaltbilder bzw. Schaubilder angegebenen Funktionen/Aktionen beinhaltet.
-
Die Anweisungen des Computerprogramms können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder andere Einheiten geladen werden, um eine Reihe auf dem Computer, der anderen programmierbaren Vorrichtung oder anderen Einheiten auszuführender Arbeitsschritte zu veranlassen, um einen computergestützten Prozess derart zu erzeugen, dass die auf dem Computer oder der anderen programmierbaren Vorrichtung ausgeführten Anweisungen Prozesse zum Umsetzen der in dem Block oder den Blöcken der Ablaufpläne und/oder Blockschaltbilder bzw. Schaubilder angegebenen Funktionen/Aktionen bereitstellen.
-
Der Ablaufplan und die Blockschaltbilder bzw. Schaubilder in den Figuren veranschaulichen die Architektur, die Funktionalität und die Funktionsweise möglicher Implementierungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In dieser Beziehung kann jeder Block in dem Ablaufplan oder den Blockschaltbildern bzw. Schaubilder ein Modul, ein Segment oder einen Abschnitt des Codes repräsentieren, der eine oder mehrere ausführbare Anweisungen zum Umsetzen der angegebenen Logikfunktion/en umfasst. Dabei ist zu beachten, dass bei alternativen Implementierungen die in dem Block angegebenen Funktionen in einer von den Figuren abweichenden Reihenfolge auftreten können. Zum Beispiel können zwei nacheinander dargestellte Blöcke je nach beabsichtigter Funktionalität in Wirklichkeit im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können mitunter in der umgekehrten Reihenfolge ausgeführt werden. Es wird auch darauf hingewiesen, dass jeder Block der Blockschaltbilder bzw. Schaubilder und/oder Ablaufpläne und Kombinationen von Blöcken in den Blockschaltbildern bzw. Schaubildern und/oder Ablaufplänen durch spezielle Hardwaresysteme umgesetzt werden können, die die angegebenen Funktionen oder Aktionen oder Kombinationen von speziellen Hardware- und Computeranweisungen ausführen.
-
Obwohl die bevorzugten Ausführungsformen der Erfindung beschrieben wurden, ist klar, dass der Fachmann sowohl jetzt als auch in Zukunft verschiedene Verbesserungen und Erweiterungen daran vornehmen kann.