DE112011101019T5 - Verarbeitung von Befehlen mit mehreren Prioritäten zwischen Back-End-Prozessoren - Google Patents

Verarbeitung von Befehlen mit mehreren Prioritäten zwischen Back-End-Prozessoren Download PDF

Info

Publication number
DE112011101019T5
DE112011101019T5 DE112011101019T DE112011101019T DE112011101019T5 DE 112011101019 T5 DE112011101019 T5 DE 112011101019T5 DE 112011101019 T DE112011101019 T DE 112011101019T DE 112011101019 T DE112011101019 T DE 112011101019T DE 112011101019 T5 DE112011101019 T5 DE 112011101019T5
Authority
DE
Germany
Prior art keywords
queue
status
high priority
instructions
command
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
DE112011101019T
Other languages
English (en)
Inventor
Thomas Charles Long
Robert Philip MAKOWICKI
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112011101019T5 publication Critical patent/DE112011101019T5/de
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Hardware Redundancy (AREA)
  • Multi Processors (AREA)

Abstract

Es werden ein Verfahren, ein System und ein Computerprogrammprodukt zum seriellen Übertragen von Prozessorbefehlen unterschiedlicher Ausführungspriorität beschrieben. Zum Beispiel empfängt ein Front-End-Prozessor seriell Prozessorbefehle. Eine mit dem Front-End-Prozessor verbundene Warteschlange niedriger Priorität speichert Befehle niedriger Priorität, und eine mit dem Front-End-Prozessor verbundene Warteschlange hoher Priorität speichert Befehle hoher Priorität. Ein Controller gibt die Übertragung von Befehlen entweder von der Warteschlange niedriger Priorität oder von der Warteschlange hoher Priorität zum Ausführen frei.

Description

  • 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.

Claims (14)

  1. System zum Übertragen von Prozessorbefehlen unterschiedlicher Ausführungspriorität, 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 niedriger Priorität beinhalten, die zum Speichern von Befehlen niedriger Priorität konfiguriert ist, und eine Warteschlange hoher Priorität, die zum Speichern von Befehlen hoher 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.
  2. System nach Anspruch 1, wobei das Übertragen von Befehlen an den mindestens einen Back-End-Prozessor seriell durchgeführt wird.
  3. System nach Anspruch 1 oder 2, wobei die Befehlswarteschlangen kreisförmige Warteschlangen sind, sodass letzte Elemente in den Warteschlangen auf erste Elemente der Warteschlangen zeigen.
  4. System nach einem der vorhergehenden Ansprüche, wobei der Controller so konfiguriert ist, dass er zu Anfang einen Warteschlangenstatus der Warteschlange niedriger Priorität in einen Status Freigegeben versetzt, einen Befehlsstatus der in der Warteschlange niedriger Priorität gespeicherten Befehle 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.
  5. System nach Anspruch 4, wobei der Controller so konfiguriert ist, 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 Befehl hoher Priorität in den Status Aktiv versetzt.
  6. System nach Anspruch 5, wobei der Controller so konfiguriert ist, dass er das Übertragen von Befehlen im Status Aktiv einer Warteschlange im Status Freigegeben freigibt.
  7. System nach einem der vorhergehenden Ansprüche, wobei die Befehle niedriger Priorität periodische Überwachungsbefehle beinhalten und die Befehle hoher Priorität eine Ausführung im Wesentlichen in Echtzeit erfordern.
  8. Verfahren zum Übertragen von Prozessorbefehlen unterschiedlicher Ausführungspriorität, 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 durch einen 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 an den Back-End-Prozessor.
  9. Verfahren nach Anspruch 8, wobei eine Übertragung der Befehle an den Back-End-Prozessor seriell durchgeführt wird.
  10. Verfahren nach Anspruch 8 oder Anspruch 9, wobei die Warteschlange niedriger Priorität und die Warteschlange hoher Priorität kreisförmige Warteschlangen sind, sodass letzte Elemente in den Warteschlangen auf erste Elemente der Warteschlangen zeigen.
  11. Verfahren nach Anspruch 8 bis 10, ferner aufweisend 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.
  12. Verfahren nach Anspruch 11, ferner aufweisend 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 der Befehle hoher Priorität in den Status Aktiv.
  13. Verfahren nach Anspruch 12, wobei das Übertragen der Prozessorbefehle das serielle Übertragen von Befehlen im Status Aktiv einer Warteschlange im Status Freigegeben an den Back-End-Prozessor beinhaltet.
  14. Computerprogramm, aufweisend einen auf einem computerlesbaren Medium gespeicherten Computerprogrammcode, der in ein Computersystem geladen und darauf ausgeführt wird, um das Computersystem zum Ausführen aller Schritte eines Verfahrens nach einem der Ansprüche 8 bis 13 zu veranlassen.
DE112011101019T 2010-06-23 2011-06-13 Verarbeitung von Befehlen mit mehreren Prioritäten zwischen Back-End-Prozessoren Withdrawn DE112011101019T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/821,727 2010-06-23
US12/821,727 US20110321052A1 (en) 2010-06-23 2010-06-23 Mutli-priority command processing among microcontrollers
PCT/EP2011/059754 WO2011160972A1 (en) 2010-06-23 2011-06-13 Multi-priority command processing among back-end processors

Publications (1)

Publication Number Publication Date
DE112011101019T5 true DE112011101019T5 (de) 2013-02-07

Family

ID=44518133

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112011101019T Withdrawn DE112011101019T5 (de) 2010-06-23 2011-06-13 Verarbeitung von Befehlen mit mehreren Prioritäten zwischen Back-End-Prozessoren

Country Status (4)

Country Link
US (1) US20110321052A1 (de)
DE (1) DE112011101019T5 (de)
GB (1) GB2498462A (de)
WO (1) WO2011160972A1 (de)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9021146B2 (en) * 2011-08-30 2015-04-28 Apple Inc. High priority command queue for peripheral component
US8918680B2 (en) 2012-01-23 2014-12-23 Apple Inc. Trace queue for peripheral component
US20140032787A1 (en) * 2012-07-25 2014-01-30 Nokia Corporation Methods, apparatuses and computer program products for enhancing performance and controlling quality of service of devices by using application awareness
US10146467B1 (en) * 2012-08-14 2018-12-04 EMC IP Holding Company LLC Method and system for archival load balancing
US9509771B2 (en) * 2014-01-14 2016-11-29 International Business Machines Corporation Prioritizing storage array management commands
US9442756B2 (en) 2014-09-24 2016-09-13 International Business Machines Corporation Multi-processor command management in electronic components with multiple microcontrollers
KR102648180B1 (ko) * 2016-07-19 2024-03-18 에스케이하이닉스 주식회사 메모리 시스템 및 그 동작 방법
CN108663971A (zh) * 2018-06-01 2018-10-16 北京汉能光伏投资有限公司 命令转发方法及装置、太阳能系统和中央控制器
JP2020154391A (ja) * 2019-03-18 2020-09-24 富士ゼロックス株式会社 情報処理システムおよびプログラム
US11553337B2 (en) 2019-12-10 2023-01-10 Winkk, Inc. Method and apparatus for encryption key exchange with enhanced security through opti-encryption channel
US12132763B2 (en) 2019-12-10 2024-10-29 Winkk, Inc. Bus for aggregated trust framework
US11652815B2 (en) 2019-12-10 2023-05-16 Winkk, Inc. Security platform architecture
US12073378B2 (en) 2019-12-10 2024-08-27 Winkk, Inc. Method and apparatus for electronic transactions using personal computing devices and proxy services
US11657140B2 (en) 2019-12-10 2023-05-23 Winkk, Inc. Device handoff identification proofing using behavioral analytics
US11599481B2 (en) 2019-12-12 2023-03-07 Western Digital Technologies, Inc. Error recovery from submission queue fetching errors
US12095751B2 (en) * 2021-06-04 2024-09-17 Winkk, Inc. Encryption for one-way data stream

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3634665A (en) * 1969-06-30 1972-01-11 Ibm System use of self-testing checking circuits
US3715573A (en) * 1971-04-14 1973-02-06 Ibm Failure activity determination technique in fault simulation
US3721961A (en) * 1971-08-11 1973-03-20 Ibm Data processing subsystems
US3840863A (en) * 1973-10-23 1974-10-08 Ibm Dynamic storage hierarchy system
US3928830A (en) * 1974-09-19 1975-12-23 Ibm Diagnostic system for field replaceable units
US4777595A (en) * 1982-05-07 1988-10-11 Digital Equipment Corporation Apparatus for transferring blocks of information from one node to a second node in a computer network
US5220668A (en) * 1990-09-21 1993-06-15 Stratus Computer, Inc. Digital data processor with maintenance and diagnostic system
US5297276A (en) * 1991-12-26 1994-03-22 Amdahl Corporation Method and apparatus for maintaining deterministic behavior in a first synchronous system which responds to inputs from nonsynchronous second system
US5504894A (en) * 1992-04-30 1996-04-02 International Business Machines Corporation Workload manager for achieving transaction class response time goals in a multiprocessing system
GB2283596B (en) * 1993-11-01 1998-07-01 Ericsson Ge Mobile Communicat Multiprocessor data memory sharing
US6016506A (en) * 1994-03-29 2000-01-18 The United States Of America As Represented By The Secretary Of The Navy Non-intrusive SCSI status sensing system
US6108743A (en) * 1998-02-10 2000-08-22 Intel Corporation Technique for performing DMA including arbitration between a chained low priority DMA and high priority DMA occurring between two links in the chained low priority
US6061709A (en) * 1998-07-31 2000-05-09 Integrated Systems Design Center, Inc. Integrated hardware and software task control executive
US6490611B1 (en) * 1999-01-28 2002-12-03 Mitsubishi Electric Research Laboratories, Inc. User level scheduling of inter-communicating real-time tasks
US6324600B1 (en) * 1999-02-19 2001-11-27 International Business Machines Corporation System for controlling movement of data in virtual environment using queued direct input/output device and utilizing finite state machine in main memory with two disjoint sets of states representing host and adapter states
US6567883B1 (en) * 1999-08-27 2003-05-20 Intel Corporation Method and apparatus for command translation and enforcement of ordering of commands
US6636949B2 (en) * 2000-06-10 2003-10-21 Hewlett-Packard Development Company, L.P. System for handling coherence protocol races in a scalable shared memory system based on chip multiprocessing
US7681018B2 (en) * 2000-08-31 2010-03-16 Intel Corporation Method and apparatus for providing large register address space while maximizing cycletime performance for a multi-threaded register file set
US6950895B2 (en) * 2001-06-13 2005-09-27 Intel Corporation Modular server architecture
US6820154B2 (en) * 2001-09-05 2004-11-16 Intel Corporation System and method for servicing interrupts
US20030123393A1 (en) * 2002-01-03 2003-07-03 Feuerstraeter Mark T. Method and apparatus for priority based flow control in an ethernet architecture
US7480754B2 (en) * 2003-06-27 2009-01-20 Seagate Technology, Llc Assignment of queue execution modes using tag values
US7735093B2 (en) * 2004-03-02 2010-06-08 Qualcomm Incorporated Method and apparatus for processing real-time command information
US20050289551A1 (en) * 2004-06-29 2005-12-29 Waldemar Wojtkiewicz Mechanism for prioritizing context swapping
US8397224B2 (en) * 2004-09-13 2013-03-12 The Mathworks, Inc. Methods and system for executing a program in multiple execution environments
US20070047553A1 (en) * 2005-08-25 2007-03-01 Matusz Pawel O Uplink scheduling in wireless networks
WO2007099613A1 (ja) * 2006-02-28 2007-09-07 Fujitsu Limited コマンド選択方法、装置、コマンド投入方法、及び装置
US8516163B2 (en) * 2007-02-27 2013-08-20 Integrated Device Technology, Inc. Hardware-based concurrent direct memory access (DMA) engines on serial rapid input/output SRIO interface
US7711842B2 (en) * 2007-06-29 2010-05-04 Caterpillar Inc. System and method for remote machine data transfer
US7822885B2 (en) * 2007-10-16 2010-10-26 Applied Micro Circuits Corporation Channel-less multithreaded DMA controller
US8363641B2 (en) * 2008-03-07 2013-01-29 At&T Intellectual Property I, Lp Methods and apparatus to control a flash crowd event in a voice over Internet protocol (VoIP) network

Also Published As

Publication number Publication date
US20110321052A1 (en) 2011-12-29
WO2011160972A1 (en) 2011-12-29
GB2498462A (en) 2013-07-17
GB201301111D0 (en) 2013-03-06

Similar Documents

Publication Publication Date Title
DE112011101019T5 (de) Verarbeitung von Befehlen mit mehreren Prioritäten zwischen Back-End-Prozessoren
DE102019133923B4 (de) Anwendungsverwendung in einem behältermanagementsystem
DE69130620T2 (de) Datenübertragungsadapter und Verfahren zu dessen Betrieb
DE112011101633B4 (de) Virtualisierung und dynamische Ressourcenzuweisung berücksichtigendes Neuordnen von Speicherebenen
DE19836347C2 (de) Fehlertolerantes Computersystem
DE60016283T2 (de) Arbeitsbelastungsverwaltung in einer rechnerumgebung
DE102020102783A1 (de) Verfahren und einrichtungen zum verbessern einer leistungsdatensammlung einer hochleistungsberechnungsanwendung
DE102015105884A1 (de) Zuverlässige und deterministische Live-Migration von virtuellen Maschinen
DE112012000693T5 (de) Ausführen einer Vielzahl von Instanzen einer Anwendung
DE112019000421B4 (de) Arbeitslastverwaltung mit datenzugriffserkennung in einem datenverarbeitungscluster
DE112013000369T5 (de) Verwaltung von Threads innerhalb einer Datenverarbeitungsumgebung
DE112018005898T5 (de) Dynamische bereitstellung von software-funktionen
DE112014002754T5 (de) Effiziente Aufgabenplanung unter Verwendung eines Sperrmechanismus
DE102012215918A1 (de) Spiegeln virtueller Maschinen von einem primären auf einen sekundären Host
DE112013000904T5 (de) Durchführen von Aktualisierungen von Quellcode, der auf einer Vielzahl von Rechenknoten ausgeführt wird
DE112018003087T5 (de) On-chip-rauschunterdrückung oder -minderung der versorgungsspannung unter verwendung von lokalen detektionsschleifen in einem prozessorkern
DE112018004138B4 (de) Asynchrone aktualisierung von metadatenspuren in reaktion auf einen mittels einer e/a-operation über eine busschnittstelle erzeugten cachetreffer
DE102014114108A1 (de) Prozessleitsysteme und -verfahren
DE112021005636T5 (de) Migrieren von komplexen legacy-anwendungen
DE112020006047T5 (de) Steuern von transaktionsanforderungen zwischen anwendungen und servern
DE112015004564T5 (de) Ereignisgesteuerte Reoptimierung einer logisch partitionierten Umgebung zur Energieverwaltung
DE102016203808A1 (de) Verringern der Bevorrechtigung virtueller Maschinen in einer virtualisierten Umgebung
DE112012001357T5 (de) Verwalten einer Portalanwendung
DE102013209643A1 (de) Mechanismus für optimierte Nachrichtenaustauschdatenübertragung zwischen Nodelets innerhalb eines Plättchens
DE112016004319T5 (de) Technologien zur Schätzung der Netzwerkpaketumlaufzeit

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee