-
Die vorliegende Erfindung betrifft im Allgemeinen Datenverarbeitungssysteme und insbesondere ein Verfahren zur Handhabung einer Eingabe-/Ausgabe-Speicheranweisung an mehrere externe Einheiten sowie ein Computerprogrammprodukt und ein Datenverarbeitungssystem.
-
HINTERGRUND
-
Eine Datenverarbeitungsumgebung kann eine oder mehrere Arten von Eingabe-/ Ausgabeeinheiten, darunter verschiedene Arten von Adaptern, enthalten. Eine Art von Adapter ist ein Peripheral-Component-Interconnect-(PCI-) oder Peripheral-Component-Interconnect Express-(PCIe-)Adapter. Dieser Adapter enthält einen oder mehrere Adressräume, die beim Austausch von Daten zwischen dem Adapter und dem System verwendet werden, an das der Adapter angeschlossen ist.
-
In einigen Systemen wird ein Teil eines Adressraums der mit dem Adapter verbundenen zentralen Verarbeitungseinheit (CPU) auf einen Adressraum des Adapters abgebildet, was es CPU-Anweisungen, die auf Speicher zugreifen, ermöglicht, die Daten im Adressraum des Adapters direkt zu bearbeiten.
-
Ein Datenaustausch mit Adaptern wie beispielsweise PCI- oder PCIe-Adaptern kann durch Steueranweisungen vereinfacht werden, die speziell für einen an und von Adaptern erfolgenden Austausch von Daten ausgelegt sind und zum Datenaustausch verwendet werden.
-
Nach dem Stand der Technik umfasst eine Speicheranweisung zum Speichern von Daten in einem Adapter zum Beispiel das Abrufen einer Maschinenanweisung zur Ausführung, wobei die Maschinenanweisung zur Computerausführung gemäß einer Computerarchitektur definiert ist, wobei die Maschinenanweisung zum Beispiel ein Opcode-Feld enthält, das eine In-Adapter-speichern-Anweisung kennzeichnet. Ein erstes Feld kennzeichnet einen ersten Speicherort, der in einem Adapter zu speichernde Daten enthält. Ein zweites Feld kennzeichnet einen zweiten Speicherort, zu dessen Inhalt eine Funktionskennung, die den Adapter kennzeichnet, eine Bezeichnung eines Adressraums innerhalb des Adapters, in dem Daten gespeichert werden sollen, und einen Offset innerhalb des Adressraums gehört. Die Maschinenanweisung wird ausgeführt, wobei das Ausführen das Verwenden der Funktionskennung umfasst, um einen zu dem Adapter gehörenden Funktionstabelleneintrag abzurufen. Eine Datenadresse des Adapters wird abgerufen, wobei Informationen in dem Funktionstabelleneintrag und/oder der Offset verwendet werden. Daten werden aus dem ersten Speicherort an einem bestimmten Speicherort in dem durch die Bezeichnung des Adressraums gekennzeichneten Adressraum gespeichert, wobei der bestimmte Speicherort durch die Datenadresse des Adapters gekennzeichnet wird.
-
Ein in einem großen Mehrprozessorsystem vorhandenes Merkmal ist die Fähigkeit, alle Prozessoren innerhalb einer Zielzone in den Quiesce-Modus zu versetzen. Quiesce-Funktionen dienen dazu, den Zustand eines Prozessors oder einer Gruppe von Prozessoren vorübergehend anzuhalten oder zu ändern, um z.B. Systemaktualisierungen oder -sicherungen durchzuführen. In einigen Fällen ist eine Quiesce-Unterbrechung nur auf eine Teilmenge der Systemressourcen anwendbar. In solchen Fällen kann das System in verschiedene Zonen aufgeteilt werden. Bei einer auf eine Zone (eine Zielzone) anwendbaren Quiesce-Operation dürfen Prozessoren außerhalb der Zielzone weiterhin laufen, obgleich neue Umsetzungen gesperrt werden können. Üblicherweise überträgt mindestens ein Systemcontroller oder ein anderer Mechanismus die Quiesce im Rundsendeverfahren an alle physischen Prozessoren in dem System, handhabt die Erfassung von Quiesce-Zustandsinformationen und zeigt einem anfordernden Prozessor an, wenn alle Prozessoren gestartet sind oder die Quiesce-Anforderung ignorieren (filtern).
-
Ein Quiesce-Controller kann mit einem Prozessor in einem Mehrprozessorsystem per Datenaustausch verbunden sein, und eine Quiesce-Zustandsmaschine kann so konfiguriert sein, dass sie eine Quiesce-Anforderung empfängt. Das Computersystem ist so konfiguriert, dass es ein Verfahren durchführt, welches das Empfangen einer Quiesce-Anforderung an dem Quiesce-Controller von einem anfordernden Prozessor, wobei der anfordernde Prozessor ein Prozessor einer Mehrzahl von Prozessoren in einem Mehrprozessorsystem ist, sowie das Feststellen umfasst, dass die Quiesce-Anforderung beruhend auf einem Zustand der Quiesce-Zustandsmaschine nicht angenommen wird. Das Verfahren umfasst auch, beruhend darauf, dass die Anforderung nicht angenommen wird, das Erzeugen einer Zurückweisungsnachricht, die so konfiguriert ist, dass sie anzeigt, dass die Quiesce-Anforderung zurückgewiesen wurde, das Halten der Zurückweisungsnachricht, bis ein Quiesce-Befehl im Rundsendeverfahren an das Mehrprozessorsystem übertragen wird, wobei der Quiesce-Befehl auf einer anderen Quiesce-Anforderung beruht, und das Senden der Zurückweisungsnachricht an den anfordernden Prozessor beruhend darauf, dass die Rundsendung des Quiesce-Befehls durch den Quiesce-Controller erkannt wird.
-
KURZDARSTELLUNG
-
Ein Datenverarbeitungssystem zur Handhabung einer Eingabe-/Ausgabe-Speicheranweisung wird vorgeschlagen, das ein Systemnest aufweist, welches durch einen Eingabe-/Ausgabebuscontroller mit mindestens einem Eingabe-/Ausgabebus per Datenaustausch verbunden ist. Das Datenverarbeitungssystem weist des Weiteren mindestens eine Datenverarbeitungseinheit auf, die einen Kern, eine System-Firmware und eine asynchrone Kern-Nest-Schnittstelle aufweist. Die Datenverarbeitungseinheit ist über einen Aggregationspuffer mit dem Systemnest per Datenaustausch verbunden. Das Systemnest ist so konfiguriert, dass es Daten aus/in mindestens einer externen Einheit asynchron lädt und/oder speichert, die mit dem Eingabe-/ Ausgabebus per Datenaustausch verbunden ist. Die asynchrone Kern-Nest-Schnittstelle weist ein Eingabe-/Ausgabe-Statusarray mit mehreren Eingabe-/Ausgabe-Statuspuffern sowie eine Array-Verwaltungs- und -Zugriffslogik auf. Die System-Firmware weist des Weiteren einen Wiederholungspuffer auf, und der Kern weist eine Analyse- und Wiederholungslogik auf.
-
Das Datenverarbeitungssystem ist so konfiguriert, dass es durchführt: (i) ein auf dem Datenverarbeitungssystem laufendes Betriebssystem gibt die Eingabe-/Ausgabe-Speicheranweisung aus, die mindestens eine Eingabe-/Ausgabefunktion mit einem Offset durch eine Adresse, zu übertragende Daten und/oder einen Zeiger auf zu übertragende Daten sowie eine Länge der Daten angibt; (ii) die Datenverarbeitungseinheit ist so konfiguriert, dass sie die Eingabe-/Ausgabefunktion durch die in der Eingabe-/Ausgabe-Speicheranweisung angegebene Adresse kennzeichnet; (iii) die Datenverarbeitungseinheit ist so konfiguriert, dass sie überprüft, ob ein Zugriff auf die Eingabe-/Ausgabefunktion auf einer Adressraum- und auf einer Gastinstanzebene erlaubt ist, wobei der Gast auf dem Datenverarbeitungssystem ausgeführt wird; (iv) die Datenverarbeitungseinheit ist so konfiguriert, dass sie die Eingabe-/Ausgabe-Speicheranweisung abschließt, bevor eine Ausführung der Eingabe-/Ausgabe-Speicheranweisung in dem Systemnest abgeschlossen ist; (v) die System-Firmware ist so konfiguriert, dass sie das Betriebssystem durch eine Unterbrechung benachrichtigt, wenn während der asynchronen Ausführung der Eingabe-/ Ausgabe-Speicheranweisung ein Fehler durch die Datenverarbeitungseinheit erkannt wird, die die Daten der fehlgeschlagenen asynchronen Ausführung übermittelt; (vi) wobei der Analyse- und Wiederholungslogik, die separat Fehler erkennt, von der Hardware versichert wird, dass die Speicheranweisung noch nicht an einen Eingabe-/Ausgabebus weitergeleitet wurde; (vii) wobei der Wiederholungspuffer Speicherinformationen für Wiederholungen der Ausführung der Speicheranweisung in System-Hardware/-Firmware festhält; (viii) wobei die Analyse- und Wiederholungslogik Fehler analysiert und auf Wiederholungsmöglichkeit prüft; und (ix) wobei die Analyse- und Wiederholungslogik Wiederholungen auslöst.
-
Günstigerweise wird eine asynchrone, jedoch zur Anweisungsausführung gehörende Fehlererkennungs- und -behebungseinheit für eine Speicheranweisung und eine Sperrenanweisung zu dem Datenverarbeitungssystem hinzugefügt. Die gesamte zugehörige Technologie innerhalb des Datenverarbeitungssystems kann eine zugehörige Fehlererkennung und -behebung für eine Speicheranweisung synchron speichern. Andere Fehler, z.B. Verbindungsabbruch, von einer Eingabe-/Ausgabeeinheit gemeldeter Fehler, werden unabhängig von der Ausführung der Speicheranweisung erkannt und gehandhabt.
-
Gemäß einer Ausführungsform der Erfindung werden Fehler mit Wiederholungsaktion eingeführt, wobei eine Wiederholung innerhalb von Hardware und Firmware unterhalb einer Architekturgrenze durchgeführt wird.
-
Das Datenverarbeitungssystem gemäß einer ersten Ausführungsform der Erfindung weist Anweisungen auf, die aus/in mindestens einer externen Einheit des Datenverarbeitungssystems über einen Eingabe-/Ausgabebus laden und speichern. Asynchrone Anweisungen werden abgeschlossen, bevor Daten in der externen Einheit gespeichert wurden, während synchrone Anweisungen abgeschlossen werden, nachdem Daten in der externen Einheit gespeichert wurden. Innerhalb der hier beschriebenen Ausführungsformen wird PCI austauschbar für jede beliebige andere Eingabe-/Ausgabe-Technologie verwendet, so dass die Ausführungsform der Erfindung somit nicht auf PCI beschränkt ist.
-
Ausführungsformen der Erfindung beschreiben eine Ausführung einer Eingabe-/ Ausgabe-Speicheranweisung auf eine streng geordnete Weise, die von oberhalb der Architekturgrenze wahrnehmbar ist, während die tatsächliche Ausführung innerhalb der Hardware der Datenverarbeitungseinheit (CPU) gegebenenfalls nicht reihenfolgekonform ist.
-
Gemäß Ausführungsformen der Erfindung kann eine PCI-Speicheranweisung mit einer asynchronen Ausführung der PCIe-Speicherwirkung und einer asynchronen Statushandhabung ausgeführt werden. Eine asynchrone zuverlässige Ausführung beruht auf zuverlässigen Weiterleitungsmechanismen in einer Mikroarchitektur des erfindungsgemäßen Datenverarbeitungssystems.
-
Eine vorhandene PCI-Speicher- und -Speicherblockanweisung ist gewöhnlich bis zu dem Punkt synchron, an dem die PCI-Speicherdaten der PCIe-Schnittstelle übergeben wurden und der Abschluss an eine Verarbeitungseinheit zurückgegeben wurde.
-
Der PCI-Standard erfordert lediglich einen asynchronen Sendebefehl von PCI-Informationen, der üblicherweise durch eine Speicherwarteschlange in dem Prozessor ausgeführt ist, welcher Daten mit asynchroner Aussendung zusammenfasst.
-
Vorteilhafterweise kann gemäß Ausführungsformen der Erfindung eine Zyklen pro Anweisung betreffende Verbesserung erreicht werden, indem eine synchrone PCI-Anweisung durch einen zuverlässigen asynchronen Sendevorgang einer Eingabe-/Ausgabe-Speicheranweisung ersetzt wird.
-
Alternativ oder zusätzlich zu zu übertragenden Daten kann die Speicheranweisung gemäß einer Ausführungsform der Erfindung auch einen Zeiger auf einen Hauptspeicher angeben, der verwendet werden soll, um Daten daraus abzurufen, anstatt die Daten direkt zu enthalten.
-
Gastinstanzebene kann auch bedeuten, dass möglicherweise ein einzelner Gast oder Host auf dem Datenverarbeitungssystem ausgeführt wird.
-
Bei der Adresse des Offsets der Eingabe-/Ausgabefunktion selbst kann es sich um eine virtuelle, physische, logische Adresse handeln. Virtuelle und logische Adressen werden üblicherweise durch eine Speicherverwaltungseinheit (MMU, memory management unit) in eine physische Adresse umgesetzt, und die physische Adresse ermöglicht es dann, zu kennzeichnen, welche Funktion und welcher Offset gemeint sind.
-
Physische Adresse in diesem Kontext bedeutet „unterste Adresse in der Adressumsetzungshierarchie, auf die aus einem Gast-/Betriebssystem heraus zugegriffen werden kann“.
-
Vorteilhafterweise können die Eingabe-/Ausgabe-Statuspuffer zurückgegebene Zustände von dem Systemnest und/oder dem Eingabe-/Ausgabebuscontroller, insbesondere eine Abschlussnachricht von dem Systemnest, erfassen. Diese Eingabe-/Ausgabe-Statuspuffer können die zurückgegebenen Zustände erfassen, wobei sie als ein asynchroner Systemnachrichtenpuffer dienen, der den asynchronen Übermittlungsvorgang unterstützt. Vorteilhafterweise können die Eingabe-/Ausgabe-Statuspuffer für ein schnelles Antwortverhalten direkt in die asynchrone Kern-Nest-Schnittstelle integriert sein.
-
Gemäß einer günstigen Ausführungsform des erfindungsgemäßen Datenverarbeitungssystems zählt die Analyse- und Wiederholungslogik eine Anzahl von Wiederholungsfehlern, prüft Fehlererkennungsschwellenwerte und meldet dem Betriebssystem eine Anzahl von fehlgeschlagenen Wiederholungen. Somit kann eine Feststellung der aufgetretenen Fehler mit Wiederholungsaktion günstigerweise durchgeführt werden.
-
Vorteilhafterweise können die Eingabe-/Ausgabe-Statuspuffer Nachrichtenzustände von dem Systemnest und/oder dem Eingabe-/Ausgabe-Buscontroller, insbesondere einen Abschlussstatus von dem Systemnest, erfassen. Auf diese Weise können Informationen über den Abschlussstatus von verschiedenen Speicheranweisungen auf geordnete und effiziente Weise gehandhabt werden.
-
Vorteilhafterweise können die Nachrichtenzustände und/oder der Abschlussstatus mittels eines Eingabe-/Ausgabe-Statuspufferindex nummeriert werden. Die Nummerierung ermöglicht es, Nachrichten und insbesondere Abschlussstatusse auf geordnete und effiziente Weise zur weiteren Verarbeitung von anderen Speicheranweisungen zu handhaben.
-
Gemäß einer günstigen Ausführungsform des erfindungsgemäßen Datenverarbeitungssystems kann der Aggregationspuffer über einen asynchronen Bus mit der asynchronen Kern-Nest-Schnittstelle per Datenaustausch verbunden sein. Somit kann der Aggregationspuffer direkt durch die asynchrone Kern-Nest-Schnittstelle gesendete Daten fortlaufend handhaben, bis alle an die externe Einheit zu übertragenden Daten in dem Aggregationspuffer gespeichert sind. Auf diese Weise kann der asynchrone Übermittlungsmechanismus zur Datenübertragung von der asynchronen Kern-Nest-Schnittstelle günstigerweise unterstützt werden.
-
Gemäß einer günstigen Ausführungsform des erfindungsgemäßen Datenverarbeitungssystems können die Daten durch die Eingabe-/Ausgabe-Speicheranweisung durch einen asynchronen Übermittlungsmechanismus mit einer Vorzeitiger-Abschluss-Nachricht in mehreren Datenpaketen an den Aggregationspuffer übertragen werden, wenn die Länge der Quellendaten acht Byte überschreitet, andernfalls können die Daten in einem Datenpaket übertragen werden. Der asynchrone Übermittlungsmechanismus ist günstig, da die Sendeeinheit in einem früheren Zustand frei zur Wiederverwendung ist.
-
Gemäß einer günstigen Ausführungsform des erfindungsgemäßen Datenverarbeitungssystems kann die System-Firmware einen asynchronen Eingabe-/ Ausgabe-Treibercode zur Handhabung der Eingabe-/Ausgabe-Speicheranweisung aufweisen. Somit kann ein asynchroner Übermittlungsmechanismus zur Übertragung von Daten von der Datenverarbeitungseinheit an die externe Einheit verwendet werden.
-
Gemäß einer günstigen Ausführungsform des erfindungsgemäßen Datenverarbeitungssystems kann der Kern einen asynchronen Konfigurationscode zur Handhabung von Speicheranforderungen für Statusinformationen des asynchronen Eingabe-/Ausgabe-Treibercodes aufweisen Dieser asynchrone Konfigurationscode kann den asynchronen Übermittlungsmechanismus durch den Aggregationspuffer zum Systemnest und dem Eingabe-/Ausgabebuscontroller weiter vereinfachen.
-
Gemäß einer günstigen Ausführungsform des erfindungsgemäßen Datenverarbeitungssystems kann die asynchrone Kern-Nest-Schnittstelle eine asynchrone Kern-Nest-Schnittstellen-Weiterleitungskomponente aufweisen, um die Daten mit lokalem Abschluss weiterzuleiten. Diese Komponente kann in Hardware in der asynchronen Kern-Nest-Schnittstelle ausgeführt sein. Somit kann ein günstiger asynchroner Übermittlungsmodus unterstützt werden, um die Daten in Datenpaketen an den Aggregationspuffer zu senden.
-
Gemäß einer günstigen Ausführungsform des erfindungsgemäßen Datenverarbeitungssystems kann der Aggregationspuffer eine Vorzeitiger-Abschluss-Logik aufweisen, um nach dem Senden einer Anforderung eine Frei-zur-Wiederverwendung-Nachricht zu übergeben. Dies ermöglicht eine vorzeitige Fortsetzung des Übermittlungsvorgangs der Daten über den Aggregationspuffer zum Systemnest und dem Eingabe-/ Ausgabebuscontroller.
-
Gemäß einer günstigen Ausführungsform des erfindungsgemäßen Datenverarbeitungssystems kann die System-Firmware eine Array-Verwaltungslogik aufweisen, die Eingabe-/Ausgabe-Statuspuffer in dem Eingabe-/Ausgabe-Statusarray zuordnet/freigibt und/oder einen Start einer neuen Speicheranweisung einleitet. Somit können inaktive Statuspuffer weiteren Speicheranweisungen zugeordnet werden. Eine geordnete Verarbeitung von Speicheranweisungen kann auf effiziente und zeitsparende Weise gehandhabt werden.
-
Gemäß einer günstigen Ausführungsform des erfindungsgemäßen Datenverarbeitungssystems kann der asynchrone Eingabe-/Ausgabe-Treibercode eine Kopie einer jeden Eingabe-/Ausgabe-Operation in dem Wiederholungspuffer speichern, und wenn der asynchrone Eingabe-/Ausgabe-Treibercode einen Fehler erkennt, kann die Steuerung an die Analyse- und Wiederholungslogik übertragen werden. Auf diese Weise kann eine Systemwiederherstellung günstigerweise möglich sein, wobei nur echte Fehler gehandhabt werden können.
-
Gemäß einer günstigen Ausführungsform des erfindungsgemäßen Datenverarbeitungssystems kann die Analyse- und Wiederholungslogik eine fehlgeschlagene Speicheranweisung feststellen. Des Weiteren kann sie eine Eingabe-/Ausgabefunktion dieser Speicheranweisung feststellen, eine Wiederholung für Fehler mit Wiederholungsaktion einleiten, wenn ein Schwellenwert unterschritten wird. Wenn in der asynchronen Kern-Nest-Schnittstelle ein Fehler auftritt und der Schwellenwert überschritten wird, kann die Analyse- und Wiederholungslogik alle ausstehenden Anforderungen für diese Eingabe-/ Ausgabefunktion löschen; die Eingabe-/Ausgabefunktion in einen Fehlerzustand versetzen und dem Betriebssystem einen asynchronen Fehler melden. Wenn ein schwerwiegender Fehler auftritt, kann die Analyse- und Wiederholungslogik die Quelle des Fehlers feststellen. Wenn die Quelle das Systemnest ist, kann die Analyse- und Wiederholungslogik alles löschen, alle beteiligten Eingabe-/Ausgabefunktionen in einen Fehlerzustand versetzen und dem Betriebssystem einen asynchronen Fehler melden. Wenn die Quelle der Eingabe-/ Ausgabebuscontroller ist, kann die Analyse- und Wiederholungslogik alle ausstehenden Anforderungen für an diesen Eingabe-/Ausgabebuscontroller angeschlossene Eingabe-/ Ausgabefunktionen löschen; alle Eingabe-/Ausgabefunktionen in einen Fehlerzustand versetzen und dem Betriebssystem einen asynchronen Fehler melden. Somit kann eine Systemwiederherstellung günstigerweise möglich sein, wobei nur echte Fehler gehandhabt werden können.
-
Gemäß einer günstigen Ausführungsform des erfindungsgemäßen Datenverarbeitungssystems kann eine Systemnachricht - eine hierarchische physische Zieladresse oder - das Verwenden eines SMT-(Simultaneous-Multithreading-)Threads oder einer Gesamtpufferkennung als Quelle oder - eine Länge von Daten oder eine Eingabe-/ Ausgabebus-Adresse oder - einen Eingabe-/Ausgabe-Statuspufferindex aufweisen. Somit kann eine vorteilhafte Weitergabe von relevanten Informationen durch das Datenverarbeitungssystem gewährleistet werden.
-
Des Weiteren wird ein Verfahren zur Handhabung einer Eingabe-/Ausgabe-Speicheranweisung an mindestens eine externe Einheit eines Datenverarbeitungssystems vorgeschlagen, wobei das Datenverarbeitungssystem ein Systemnest aufweist, das durch einen Eingabe-/Ausgabebuscontroller mit mindestens einem Eingabe-/Ausgabebus per Datenaustausch verbunden ist. Das Datenverarbeitungssystem weist des Weiteren mindestens eine Datenverarbeitungseinheit auf, die einen Kern, eine System-Firmware und eine asynchrone Kern-Nest-Schnittstelle aufweist. Die Datenverarbeitungseinheit ist über einen Aggregationspuffer mit dem Systemnest per Datenaustausch verbunden. Die externe Einheit ist mit dem Eingabe-/Ausgabebus per Datenaustausch verbunden. Die asynchrone Kern-Nest-Schnittstelle weist ein Eingabe-/Ausgabe-Statusarray mit mehreren Eingabe-/ Ausgabe-Statuspuffern sowie eine Array-Verwaltungs- und -Zugriffslogik auf. Die System-Firmware weist des Weiteren einen Wiederholungspuffer auf und der Kern weist eine Analyse- und Wiederholungslogik auf.
-
Das Verfahren umfasst: (i) Ausgeben der Eingabe-/Ausgabe-Speicheranweisung durch ein auf dem Datenverarbeitungssystem laufendes Betriebssystem, die mindestens eine Eingabe-/Ausgabefunktion mit einem Offset durch eine Adresse, zu übertragende Daten und/oder einen Zeiger auf zu übertragende Daten sowie eine Länge der Daten angibt; (ii) wobei die Datenverarbeitungseinheit so konfiguriert ist, dass sie die Eingabe-/ Ausgabefunktion durch die in der Eingabe-/Ausgabe-Speicheranweisung angegebene Adresse kennzeichnet; (iii) wobei die Datenverarbeitungseinheit so konfiguriert ist, dass sie überprüft, ob ein Zugriff auf die Eingabe-/Ausgabefunktion auf einer Adressraum- und auf einer Gastinstanzebene erlaubt ist, wobei der Gast auf dem Datenverarbeitungssystem ausgeführt wird; (iv) wobei die Datenverarbeitungseinheit so konfiguriert ist, dass sie die Eingabe-/Ausgabe-Speicheranweisung abschließt, bevor eine Ausführung der Eingabe-/ Ausgabe-Speicheranweisung in dem Systemnest abgeschlossen ist; (v) wobei die System-Firmware so konfiguriert ist, dass sie das Betriebssystem durch eine Unterbrechung benachrichtigt, wenn während der asynchronen Ausführung der Eingabe-/Ausgabe-Speicheranweisung ein Fehler durch die Datenverarbeitungseinheit erkannt wird, die die Daten der fehlgeschlagenen asynchronen Ausführung übermittelt; (vi) wobei der Analyse- und Wiederholungslogik, die separat Fehler erkennt, von der Hardware versichert wird, dass die Speicheranweisung noch nicht an einen Eingabe-/Ausgabebus weitergeleitet wurde; (vii) wobei der Wiederholungspuffer Speicherinformationen für Wiederholungen der Ausführung der Speicheranweisung in System-Hardware/-Firmware festhält; (viii) wobei die Analyse- und Wiederholungslogik Fehler analysiert und auf Wiederholungsmöglichkeit prüft; und (ix) wobei die Analyse- und Wiederholungslogik Wiederholungen auslöst.
-
Günstigerweise kann es mehreren ausstehenden asynchronen Speicheranweisungen somit gleichzeitig gestattet werden, Zyklen pro Anweisung von wiederholten asynchronen Speicheranweisungen zu verringern. Eine Reihenfolge wird zwischen asynchronen Speicheranweisungen und synchronen Lade-/Speicheranweisungen festgelegt. Das Unterstützen von mehreren ausstehenden asynchronen Speicheranweisungen beruht auf dem Buchführen von mehreren Statusnachrichten und der Korrelation von Antworten mit Statuseinträgen.
-
Das Verfahren gemäß einer weiteren Ausführungsform der Erfindung umfasst Anweisungen, die aus/in einer externen Einheit des Datenverarbeitungssystems über einen Eingabe-/Ausgabebus laden und speichern. Asynchrone Anweisungen werden abgeschlossen, bevor Daten in der externen Einheit gespeichert wurden, während synchrone Anweisungen abgeschlossen werden, nachdem Daten in der externen Einheit gespeichert wurden. Innerhalb der hier beschriebenen Ausführungsformen wird PCI austauschbar für jede beliebige andere Eingabe-/Ausgabe-Technologie verwendet, so dass die Ausführungsform der Erfindung somit nicht auf PCI beschränkt ist.
-
Ausführungsformen des erfindungsgemäßen Verfahrens beschreiben eine Ausführung einer Eingabe-/Ausgabe-Speicheranweisung auf eine streng geordnete Weise, die von oberhalb der Architekturgrenze wahrnehmbar ist, während die tatsächliche Ausführung innerhalb der Hardware der Datenverarbeitungseinheit (CPU) gegebenenfalls nicht reihenfolgekonform ist.
-
Gemäß Ausführungsformen des erfindungsgemäßen Verfahrens kann eine PCI-Speicheranweisung mit einer asynchronen Ausführung der PCIe-Speicherwirkung und einer asynchronen Statushandhabung ausgeführt werden. Eine asynchrone zuverlässige Ausführung beruht auf zuverlässigen Weiterleitungsmechanismen in einer Mikroarchitektur des erfindungsgemäßen Datenverarbeitungssystems.
-
Eine vorhandene PCI-Speicher- und -Speicherblockanweisung ist gewöhnlich bis zu dem Punkt synchron, an dem die PCI-Speicherdaten der PCIe-Schnittstelle übergeben wurden und der Abschluss an eine Verarbeitungseinheit zurückgegeben wurde.
-
Der PCI-Standard erfordert lediglich einen asynchronen Sendebefehl von PCI-Informationen, der üblicherweise durch eine Speicherwarteschlange in dem Prozessor ausgeführt ist, welcher Daten mit asynchroner Aussendung zusammenfasst.
-
Vorteilhafterweise kann gemäß Ausführungsformen des erfindungsgemäßen Verfahrens eine Zyklen pro Anweisung betreffende Verbesserung erreicht werden, indem eine synchrone PCI-Anweisung durch einen zuverlässigen asynchronen Sendevorgang einer Eingabe-/Ausgabe-Speicheranweisung ersetzt wird.
-
Alternativ oder zusätzlich zu zu übertragenden Daten kann die Speicheranweisung gemäß einer Ausführungsform der Erfindung auch einen Zeiger auf einen Hauptspeicher angeben, der verwendet werden soll, um Daten daraus abzurufen, anstatt die Daten direkt zu enthalten.
-
Gastinstanzebene kann auch bedeuten, dass möglicherweise ein einzelner Gast oder Host auf dem Datenverarbeitungssystem ausgeführt wird.
-
Bei der Adresse des Offsets der Eingabe-/Ausgabefunktion selbst kann es sich um eine virtuelle, physische, logische Adresse handeln. Virtuelle und logische Adressen werden üblicherweise durch eine Speicherverwaltungseinheit (MMU) in eine physische Adresse umgesetzt, und die physische Adresse ermöglicht es dann, zu kennzeichnen, welche Funktion und welcher Offset gemeint sind.
-
Physische Adresse in diesem Kontext bedeutet „unterste Adresse in der Adressumsetzungshierarchie, auf die aus einem Gast-/Betriebssystem heraus zugegriffen werden kann“.
-
Gemäß einer günstigen Ausführungsform des erfindungsgemäßen Verfahrens zählt die Analyse- und Wiederholungslogik eine Anzahl von Wiederholungsfehlern, prüft Fehlererkennungsschwellenwerte und meldet dem Betriebssystem eine Anzahl von fehlgeschlagenen Wiederholungen. Somit kann eine Feststellung der aufgetretenen Fehler mit Wiederholungsaktion günstigerweise durchgeführt werden.
-
Vorteilhafterweise können die Eingabe-/Ausgabe-Statuspuffer Nachrichtenzustände von dem Systemnest und/oder dem Eingabe-/Ausgabe-Buscontroller, insbesondere einen Abschlussstatus von dem Systemnest, erfassen, wobei die Nachrichtenzustände und/oder der Abschlussstatus mittels eines Eingabe-/Ausgabe-Statuspufferindex nummeriert werden. Auf diese Weise können Informationen über den Abschlussstatus von verschiedenen Speicheranweisungen auf geordnete und effiziente Weise gehandhabt werden. Die Nummerierung ermöglicht es, Nachrichten und insbesondere Abschlussstatusse auf geordnete und effiziente Weise zur weiteren Verarbeitung von anderen Speicheranweisungen zu handhaben.
-
Vorteilhafterweise kann die System-Firmware eine Array-Verwaltungslogik aufweisen, die Eingabe-/Ausgabe-Statuspuffer in dem Eingabe-/Ausgabe-Statusarray zuordnet/freigibt und/oder einen Start einer neuen Speicheranweisung einleitet. Somit können inaktive Statuspuffer weiteren Speicheranweisungen zugeordnet werden. Eine geordnete Verarbeitung von Speicheranweisungen kann auf effiziente und zeitsparende Weise gehandhabt werden.
-
Gemäß einer günstigen Ausführungsform kann das Verfahren des Weiteren umfassen: (i) Ausgeben der Eingabe-/Ausgabe-Speicheranweisung durch das Betriebssystem; (ii) Zuordnen eines freien Eingabe-/Ausgabe-Statuspufferindex durch die System-Firmware (10); wenn kein freier Eingabe-/Ausgabe-Statuspufferindex zur Verfügung steht, Warten auf einen freien Eingabe-/Ausgabe Statuspufferindex; (iii) Einfügen der Speicheranweisung in die asynchrone Sende-Engine durch die System-Firmware; falls sie durch eine weitere Speicheranweisung gesperrt ist, Warten, bis die Speicheranweisung abgeschlossen wurde; (iv) je nach der Länge der Daten: wenn eine Länge der Daten acht Byte überschreitet, wiederholtes Ausgeben einer Systemnachricht durch die System-Firmware, um ein Datenpaket an den Aggregationspuffer zu senden, bis alle Daten eines Speicherblocks an den Aggregationspuffer weitergeleitet wurden, während die System-Firmware wartet, bis die Daten durch die Systemnachricht gesendet wurden; ansonsten Ausgeben einer Systemnachricht durch die System-Firmware, um die Daten an den Aggregationspuffer zu senden; des Weiteren unabhängig von der Länge der Daten (v) Ausgeben einer Systemnachricht an den Aggregationspuffer durch die System-Firmware, um die Daten als eine einzelne Nestnachricht asynchron an den Eingabe-/Ausgabebuscontroller weiterzuleiten, während darauf gewartet wird, dass der Aggregationspuffer eine Abschlussnachricht sendet; (vi) Einfügen der Nestnachricht in das Systemnest durch den Aggregationspuffer, wobei der Aggregationspuffer unmittelbar nach der Sendeoperation zur Wiederverwendung frei ist, Zurückmelden an die System-Firmware; anschließendes Senden einer Frei-zur-Wiederverwendung-Nachricht durch den Aggregationspuffer; (vii) Weiterleiten der Nachricht an den Zielspeicherort durch das Systemnest; (viii) Empfangen der Nachricht durch den Eingabe-/Ausgabebuscontroller und Weiterleiten der Daten in einem Datenrahmen an den Eingabe-/Ausgabebus; (ix) Senden einer Abschlussnachricht an das Systemnest durch den Eingabe-/Ausgabebuscontroller; (x) Weiterleiten der Abschlussnachricht an den Ursprungsaggregationspuffer durch das Systemnest; (xi) Weiterleiten des Abschlusses an die asynchrone Kern-Nest-Schnittstelle durch den Aggregationspuffer; (xii) Speichern des Abschlussstatus durch die asynchrone Kern-Nest-Schnittstelle in dem Eingabe-/Ausgabe-Statuspuffer für den Eingabe-/Ausgabe-Statuspufferindex und Melden des Abschlusses der Operation an die System-Firmware; (xiii) Aktualisieren einer Eingabe-/Ausgabe-Statuspufferaufzeichnung mittels des Eingabe-/ Ausgabe-Statuspufferindex durch die System-Firmware; und (xiv) asynchrones Melden von Defekten an das Betriebssystem durch die System-Firmware im Falle eines Fehlers.
-
Nur der Schritt (ii) ist von der Länge der Daten abhängig und unterscheidet sich bei der Länge der Daten, die acht Byte überschreiten, und der Länge der Daten, die acht Byte nicht überschreiten.
-
Gemäß der Ausführungsform des erfindungsgemäßen Verfahrens werden die Daten in Ausschnitten an den Aggregationspuffer übermittelt, bis alle Daten eines Speicherblocks an den Aggregationspuffer weitergeleitet sind, wobei die System-Firmware wartet, bis die Daten durch die asynchrone Kern-Nest-Schnittstelle gesendet wurden.
-
Somit kann, wenn die Daten weniger als acht Byte umfassen, der mit Datenpaketen in Ausschnitten erfolgende Füllvorgang des Aggregationspuffers übersprungen werden, und der Übermittlungsvorgang der Daten an die externe Einheit kann in einem einzelnen Schritt abgeschlossen werden.
-
Gemäß einer günstigen Ausführungsform des erfindungsgemäßen Verfahrens können die Daten durch die Eingabe-/Ausgabe-Speicheranweisung durch einen asynchronen Übermittlungsmechanismus mit einer Vorzeitiger-Abschluss-Nachricht in mehreren Datenpaketen an den Aggregationspuffer übertragen werden, wenn die Länge der Daten acht Byte überschreitet. Der asynchrone Übermittlungsmechanismus ist günstig, da die Sendeeinheit in einem früheren Zustand frei zur Wiederverwendung ist.
-
Gemäß einer günstigen Ausführungsform des erfindungsgemäßen Verfahrens kann die System-Firmware einen asynchronen Eingabe-/Ausgabe-Treibercode zur Handhabung der Eingabe-/Ausgabe-Speicheranweisung verwenden. Somit kann ein asynchroner Übermittlungsmechanismus zur Übertragung von Daten von der Datenverarbeitungseinheit an die externe Einheit verwendet werden.
-
Gemäß einer günstigen Ausführungsform des erfindungsgemäßen Verfahrens kann der Kern einen asynchronen Konfigurationscode zur Handhabung von Speicheranforderungen für Statusinformationen des asynchronen Eingabe-/Ausgabe-Treibercodes verwenden. Dieser asynchrone Konfigurationscode kann den asynchronen Übermittlungsmechanismus durch den Aggregationspuffer zum Systemnest und dem Eingabe-/Ausgabebuscontroller weiter vereinfachen.
-
Gemäß einer günstigen Ausführungsform des erfindungsgemäßen Verfahrens kann die asynchrone Kern-Nest-Schnittstelle eine asynchrone Kern-Nest-Schnittstellen-Weiterleitungskomponente verwenden, um die Daten mit lokalem Abschluss weiterzuleiten. Somit kann ein günstiger asynchroner Übermittlungsmodus unterstützt werden, um die Daten in Datenpaketen an den Aggregationspuffer zu senden.
-
Gemäß einer günstigen Ausführungsform des erfindungsgemäßen Verfahrens kann der Aggregationspuffer eine Vorzeitiger-Abschluss-Logik verwenden, um nach dem Senden einer Anforderung eine Frei-zur-Wiederverwendung-Nachricht zu übergeben. Dies ermöglicht eine vorzeitige Fortsetzung des Übermittlungsvorgangs der Daten über den Aggregationspuffer zum Systemnest und dem Eingabe-/Ausgabebuscontroller.
-
Vorteilhafterweise können die Eingabe-/Ausgabe-Statuspuffer zurückgegebene Zustände von dem Systemnest und/oder dem Eingabe-/Ausgabebuscontroller, insbesondere eine Abschlussnachricht von dem Systemnest, erfassen. Diese Eingabe-/Ausgabe-Statuspuffer können die zurückgegebenen Zustände erfassen, wobei sie als ein asynchroner Systemnachrichtenpuffer dienen, der den asynchronen Übermittlungsvorgang unterstützt.
-
Gemäß einer günstigen Ausführungsform des erfindungsgemäßen Verfahrens kann eine Systemnachricht - eine hierarchische physische Zieladresse oder - das Verwenden eines SMT-Threads oder einer Gesamtpufferkennung als Quelle oder - eine Länge von Daten oder - eine Eingabe-/Ausgabebus-Adresse oder - einen Eingabe-/Ausgabe-Statuspufferindex aufweisen. Somit kann eine vorteilhafte Weitergabe von relevanten Informationen durch das Datenverarbeitungssystem gewährleistet werden.
-
Gemäß einer günstigen Ausführungsform des erfindungsgemäßen Verfahrens kann der asynchrone Eingabe-/Ausgabe-Treibercode eine Kopie einer jeden Eingabe-/ Ausgabe-Operation in dem Wiederholungspuffer speichern, und wenn der asynchrone Eingabe-/Ausgabe-Treibercode einen Fehler erkennt, kann die Steuerung an die Analyse- und Wiederholungslogik übertragen werden. Auf diese Weise kann eine Systemwiederherstellung günstigerweise möglich sein, wobei nur echte Fehler gehandhabt werden können.
-
Gemäß einer günstigen Ausführungsform des erfindungsgemäßen Verfahrens kann die Analyse- und Wiederholungslogik eine fehlgeschlagene Speicheranweisung feststellen. Des Weiteren kann sie eine Eingabe-/Ausgabefunktion dieser Speicheranweisung feststellen, eine Wiederholung für Fehler mit Wiederholungsaktion einleiten, wenn ein Schwellenwert unterschritten wird. Wenn in der asynchronen Kern-Nest-Schnittstelle ein Fehler auftritt und der Schwellenwert überschritten wird, kann die Analyse- und Wiederholungslogik alle ausstehenden Anforderungen für diese Eingabe-/Ausgabefunktion löschen; die Eingabe-/Ausgabefunktion in einen Fehlerzustand versetzen und dem Betriebssystem einen asynchronen Fehler melden. Wenn ein schwerwiegender Fehler auftritt, kann die Analyse- und Wiederholungslogik die Quelle des Fehlers feststellen. Wenn die Quelle das Systemnest ist, kann die Analyse- und Wiederholungslogik alles löschen, alle beteiligten Eingabe-/Ausgabefunktionen in einen Fehlerzustand versetzen und dem Betriebssystem einen asynchronen Fehler melden. Wenn die Quelle der Eingabe-/ Ausgabebuscontroller ist, kann die Analyse- und Wiederholungslogik alle ausstehenden Anforderungen für an diesen Eingabe-/Ausgabebuscontroller angeschlossene Eingabe-/ Ausgabefunktionen löschen; alle Eingabe-/Ausgabefunktionen in einen Fehlerzustand versetzen und dem Betriebssystem einen asynchronen Fehler melden. Somit kann eine Systemwiederherstellung günstigerweise möglich sein, wobei nur echte Fehler gehandhabt werden können.
-
Des Weiteren wird ein günstiges Computerprogrammprodukt zur Handhabung einer Eingabe-/Ausgabe-Speicheranweisung an mindestens eine externe Einheit eines Datenverarbeitungssystems vorgeschlagen, wobei das Datenverarbeitungssystem ein Systemnest aufweist, das durch einen Eingabe-/Ausgabebuscontroller mit mindestens einem Eingabe-/Ausgabebus per Datenaustausch verbunden ist. Das Datenverarbeitungssystem weist des Weiteren mindestens eine Datenverarbeitungseinheit auf, die einen Kern, eine System-Firmware und eine asynchrone Kern-Nest-Schnittstelle aufweist. Die Datenverarbeitungseinheit ist über einen Aggregationspuffer mit dem Systemnest per Datenaustausch verbunden. Die externe Einheit ist mit dem Eingabe-/Ausgabebus per Datenaustausch verbunden. Die asynchrone Kern-Nest-Schnittstelle weist ein Eingabe-/ Ausgabe-Statusarray mit mehreren Eingabe-/Ausgabe-Statuspuffern sowie eine Array-Verwaltungs- und -Zugriffslogik auf. Die System-Firmware weist des Weiteren einen Wiederholungspuffer auf und der Kern weist eine Analyse- und Wiederholungslogik auf.
-
Das Computerprogrammprodukt weist ein durch einen Computer lesbares Speichermedium mit damit realisierten Programmanweisungen auf, wobei die Programmanweisungen durch das Computersystem ausführbar sind, um das Computersystem zu veranlassen, ein Verfahren durchzuführen, welches umfasst: (i) Ausgeben der Eingabe-/Ausgabe-Speicheranweisung durch ein auf dem Datenverarbeitungssystem laufendes Betriebssystem, die mindestens eine Eingabe-/ Ausgabefunktion mit einem Offset durch eine Adresse, zu übertragende Daten und/oder einen Zeiger auf zu übertragende Daten sowie eine Länge der Daten angibt; (ii) wobei die Datenverarbeitungseinheit so konfiguriert ist, dass sie die Eingabe-/Ausgabefunktion durch die in der Eingabe-/Ausgabe-Speicheranweisung angegebene Adresse kennzeichnet; (iii) wobei die Datenverarbeitungseinheit so konfiguriert ist, dass sie überprüft, ob ein Zugriff auf die Eingabe-/Ausgabefunktion auf einer Adressraum- und auf einer Gastinstanzebene erlaubt ist, wobei der Gast auf dem Datenverarbeitungssystem ausgeführt wird; (iv) wobei die Datenverarbeitungseinheit so konfiguriert ist, dass sie die Eingabe-/Ausgabe-Speicheranweisung abschließt, bevor eine Ausführung der Eingabe-/Ausgabe-Speicheranweisung in dem Systemnest abgeschlossen ist; (v) wobei die System-Firmware so konfiguriert ist, dass sie das Betriebssystem durch eine Unterbrechung benachrichtigt, wenn während der asynchronen Ausführung der Eingabe-/Ausgabe-Speicheranweisung ein Fehler durch die Datenverarbeitungseinheit erkannt wird, die die Daten der fehlgeschlagenen asynchronen Ausführung übermittelt; (vi) wobei der Analyse- und Wiederholungslogik, die separat Fehler erkennt, von der Hardware versichert wird, dass die Speicheranweisung noch nicht an einen Eingabe-/Ausgabebus weitergeleitet wurde; (vii) wobei der Wiederholungspuffer Speicherinformationen für Wiederholungen der Ausführung der Speicheranweisung in System-Hardware/-Firmware festhält; (viii) wobei die Analyse- und Wiederholungslogik Fehler analysiert und auf Wiederholungsmöglichkeit prüft; und (ix) wobei die Analyse- und Wiederholungslogik Wiederholungen auslöst.
-
Des Weiteren wird ein Datenverarbeitungssystem zur Ausführung eines Datenverarbeitungsprogramms vorgeschlagen, das durch einen Computer lesbare Programmanweisungen aufweist, um das vorstehend beschriebene Verfahren durchzuführen.
-
Figurenliste
-
Die vorliegende Erfindung, zusammen mit den vorstehenden sowie weiteren Aufgaben und Vorteilen, lässt sich am besten anhand der folgenden ausführlichen Beschreibung der Ausführungsformen verstehen, darf jedoch nicht auf die Ausführungsformen beschränkt werden.
- 1 stellt ein Blockschaltbild eines Datenverarbeitungssystems zur Handhabung einer Eingabe-/Ausgabe-Speicheranweisung an eine externe Einheit gemäß einer Ausführungsform der Erfindung dar.
- 2 stellt ein Nachrichtenfolgediagramm eines Verfahrens zur Handhabung einer Eingabe-/Ausgabe-Speicheranweisung an eine externe Einheit gemäß einer Ausführungsform der Erfindung dar.
- 3 stellt einen ersten Teil eines Ablaufplans zur Handhabung einer Eingabe-/ Ausgabe-Speicheranweisung an eine externe Einheit gemäß einer Ausführungsform der Erfindung dar.
- 4 stellt einen zweiten Teil eines Ablaufplans zur Handhabung einer Eingabe-/Ausgabe-Speicheranweisung an eine externe Einheit gemäß einer Ausführungsform der Erfindung dar.
- 5 stellt eine beispielhafte Ausführungsform eines Datenverarbeitungssystems zur Ausführung eines Verfahrens gemäß der Erfindung dar.
-
AUSFÜHRLICHE BESCHREIBUNG
-
In den Zeichnungen wird auf gleiche Elemente mit gleichen Bezugszahlen Bezug genommen. Bei den Zeichnungen handelt es sich lediglich um schematische Darstellungen, die keine bestimmten Parameter der Erfindung darstellen sollen. Darüber hinaus sollen die Zeichnungen nur typische Ausführungsformen der Erfindung darstellen und sollten daher nicht als den Umfang der Erfindung einschränkend betrachtet werden.
-
Die hierin beschriebenen veranschaulichenden Ausführungsformen stellen ein Datenverarbeitungssystem und ein Verfahren zur Handhabung einer Eingabe-/Ausgabe-Speicheranweisung bereit, welches ein Systemnest aufweist, das mit mindestens einem Eingabe-/Ausgabebus durch einen Eingabe-/Ausgabebuscontroller per Datenaustausch verbunden ist. Das Datenverarbeitungssystem weist des Weiteren mindestens eine Datenverarbeitungseinheit auf, die einen Kern, eine System-Firmware und eine asynchrone Kern-Nest-Schnittstelle aufweist. Die Datenverarbeitungseinheit ist über einen Aggregationspuffer mit dem Systemnest per Datenaustausch verbunden. Das Systemnest ist so konfiguriert, dass es Daten aus/in mindestens einer externen Einheit asynchron lädt und/oder speichert, die mit dem Eingabe-/Ausgabebus per Datenaustausch verbunden ist. Die asynchrone Kern-Nest-Schnittstelle weist ein Eingabe-/Ausgabe-Statusarray mit mehreren Eingabe-/Ausgabe-Statuspuffern sowie eine Array- Verwaltungs- und -Zugriffslogik auf. Die System-Firmware weist des Weiteren einen Wiederholungspuffer auf, und der Kern weist eine Analyse- und Wiederholungslogik auf.
-
Die veranschaulichenden Ausführungsformen können für das Verfahren verwendet werden, welches umfasst: (i) ein auf dem Datenverarbeitungssystem laufendes Betriebssystem gibt die Eingabe-/Ausgabe-Speicheranweisung aus, die mindestens eine Eingabe-/Ausgabefunktion mit einem Offset durch eine Adresse, zu übertragende Daten und/oder einen Zeiger auf zu übertragende Daten sowie eine Länge der Daten angibt; (ii) die Datenverarbeitungseinheit ist so konfiguriert, dass sie die Eingabe-/Ausgabefunktion durch die in der Eingabe-/Ausgabe-Speicheranweisung angegebene Adresse kennzeichnet; (iii) die Datenverarbeitungseinheit ist so konfiguriert, dass sie überprüft, ob ein Zugriff auf die Eingabe-/Ausgabefunktion auf einer Adressraum- und auf einer Gastinstanzebene erlaubt ist, wobei der Gast auf dem Datenverarbeitungssystem ausgeführt wird; (iv) die Datenverarbeitungseinheit ist so konfiguriert, dass sie die Eingabe-/Ausgabe-Speicheranweisung abschließt, bevor eine Ausführung der Eingabe-/Ausgabe-Speicheranweisung in dem Systemnest abgeschlossen ist; (v) die System-Firmware ist so konfiguriert, dass sie das Betriebssystem durch eine Unterbrechung benachrichtigt, wenn während der asynchronen Ausführung der Eingabe-/Ausgabe-Speicheranweisung ein Fehler durch die Datenverarbeitungseinheit erkannt wird, die die Daten der fehlgeschlagenen asynchronen Ausführung übermittelt; (vi) wobei der Analyse- und Wiederholungslogik, die separat Fehler erkennt, von der Hardware versichert wird, dass die Speicheranweisung noch nicht an einen Eingabe-/Ausgabebus weitergeleitet wurde; (vii) wobei der Wiederholungspuffer Speicherinformationen für Wiederholungen der Ausführung der Speicheranweisung in System-Hardware/-Firmware festhält; (viii) wobei die Analyse- und Wiederholungslogik Fehler analysiert und auf Wiederholungsmöglichkeit prüft; und (ix) wobei die Analyse- und Wiederholungslogik Wiederholungen auslöst.
-
Alternativ oder zusätzlich zu zu übertragenden Daten kann die Speicheranweisung gemäß einer Ausführungsform der Erfindung auch einen Zeiger auf Hauptspeicher angeben, der verwendet werden soll, um Daten daraus abzurufen, anstatt die Daten direkt zu enthalten.
-
Gastinstanzebene kann auch bedeuten, dass möglicherweise ein einzelner Gast oder Host auf dem Datenverarbeitungssystem ausgeführt wird.
-
Bei der Adresse des Offsets der Eingabe-/Ausgabefunktion selbst kann es sich um eine virtuelle, physische, logische Adresse handeln. Virtuelle und logische Adressen werden üblicherweise durch eine Speicherverwaltungseinheit (MMU) in eine physische Adresse umgesetzt, und die physische Adresse ermöglicht es dann, zu kennzeichnen, welche Funktion und welcher Offset gemeint sind.
-
Physische Adresse in diesem Kontext bedeutet „unterste Adresse in der Adressumsetzungshierarchie, auf die aus einem Gast-/Betriebssystem heraus zugegriffen werden kann“.
-
1 stellt ein Blockschaltbild eines Datenverarbeitungssystems 210 zur Handhabung einer Eingabe-/Ausgabe-Speicheranweisung 30 an mindestens eine externe Einheit 214 gemäß einer Ausführungsform der Erfindung dar. Das Datenverarbeitungssystem 210 weist ein Systemnest 18, das durch einen Eingabe-/Ausgabebuscontroller 20 mit einem Eingabe-/Ausgabebus 22 per Datenaustausch verbunden ist, eine Datenverarbeitungseinheit 216, die einen Kern 12, eine System-Firmware 10 und eine asynchrone Kern-Nest-Schnittstelle 14 aufweist, auf. Der Eingabe-/Ausgabebuscontroller 20 kann auch über mehrere Eingabe-/Ausgabebusse 22 mit mehreren externen Einheiten 214 verbunden sein.
-
Die Datenverarbeitungseinheit 216 ist über einen Aggregationspuffer 16 mit dem Systemnest 18 per Datenaustausch verbunden. Das Systemnest 18 ist so konfiguriert, dass es Daten aus/in der externen Einheit 214 lädt und/oder speichert, die über eine Puffer-Eingabe-/Ausgabebuscontroller-Schnittstelle 28 als Teil des Systemnests 18 und den Eingabe-/Ausgabebuscontroller 20 mit dem Eingabe-/Ausgabebus 22 per Datenaustausch verbunden ist. Die asynchrone Kern-Nest-Schnittstelle 14 weist ein Eingabe-/Ausgabe-Statusarray 44 mit mehreren Eingabe-/Ausgabe-Statuspuffern 24 und einer Array-Verwaltungs- und -Zugriffslogik 46 auf. Die System-Firmware 10 weist einen Wiederholungspuffer 52 auf, und der Kern 12 weist eine Analyse- und Wiederholungslogik 54 auf. Die Analyse- und Wiederholungslogik 54 zählt eine Anzahl von Wiederholungsfehlern, prüft Fehlererkennungsschwellenwerte und meldet dem Betriebssystem eine Anzahl von fehlgeschlagenen Wiederholungen.
-
Der Aggregationspuffer 16 ist mit der asynchronen Kern-Nest-Schnittstelle 14 per Datenaustausch verbunden. Die System-Firmware 10 weist einen asynchronen Eingabe-/ Ausgabe-Treibercode 32 zur Handhabung der Eingabe-/Ausgabe-Speicheranweisung 30 auf. Der Kern 12 weist einen asynchronen Konfigurationscode 34 zur Handhabung von Speicheranforderungen für Statusinformationen des asynchronen Eingabe-/Ausgabe-Treibercodes 32 auf. Gemäß einer Wiederherstellungssemantik für mehrere externe Einheiten 214 speichert der asynchrone Eingabe-/Ausgabe-Treibercode 32 eine Kopie einer jeden Eingabe-/Ausgabe-Operation in dem Wiederholungspuffer 52, und wenn der asynchrone Eingabe-/Ausgabe-Treibercode 32 einen Fehler erkennt, wird die Steuerung an die Analyse- und Wiederholungslogik 54 übertragen.
-
Die Array- Verwaltungs- und -Zugriffslogik 46 stellt eine Schnittstelle zum Kern 12 bereit, um einen Status von allen Eingabe-/Ausgabe-Statuspuffern 24 abzufragen. Des Weiteren stellt sie eine Schnittstelle zum Kern 12 bereit, um einen Status von ausgewählten Eingabe-/Ausgabe-Statuspuffern 24 zurückzusetzen.
-
Die Analyse- und Wiederholungslogik 54 stellt eine fehlgeschlagene Speicheranweisung 30 fest. Des Weiteren stellt sie eine Eingabe-/Ausgabefunktion dieser Speicheranweisung 30 fest, leitet eine Wiederholung für Fehler mit Wiederholungsaktion ein, wenn ein Schwellenwert unterschritten wird. Wenn in der asynchronen Kern-Nest-Schnittstelle 14 ein Fehler auftritt und der Schwellenwert überschritten wird, löscht die Analyse- und Wiederholungslogik 54 des Weiteren alle ausstehenden Anforderungen für diese Eingabe-/Ausgabefunktion; versetzt die Eingabe-/Ausgabefunktion in einen Fehlerzustand und meldet dem Betriebssystem einen asynchronen Fehler. Wenn ein schwerwiegender Fehler auftritt, stellt die Analyse- und Wiederholungslogik 54 die Quelle des Fehlers fest. Wenn die Quelle das Systemnest 18 ist, löscht die Analyse- und Wiederholungslogik 54 alles, versetzt alle beteiligten Eingabe-/Ausgabefunktionen in einen Fehlerzustand und meldet dem Betriebssystem einen asynchronen Fehler. Wenn die Quelle der Eingabe-/Ausgabebuscontroller 20 ist, löscht die Analyse- und Wiederholungslogik 54 alle ausstehenden Anforderungen für an diesen Eingabe-/Ausgabebuscontroller 20 angeschlossene Eingabe-/Ausgabefunktionen; versetzt alle Eingabe-/Ausgabefunktionen in einen Fehlerzustand und meldet dem Betriebssystem einen asynchronen Fehler.
-
Die System-Firmware 10 weist eine Array-Verwaltungslogik 42 auf, die Eingabe-/ Ausgabe-Statuspuffer 24 in dem Eingabe-/Ausgabe-Statusarray 44 zuordnet/freigibt und/oder einen Start einer neuen Speicheranweisung 30 einleitet.
-
Die asynchrone Kern-Nest-Schnittstelle 14 weist eine asynchrone Kern-Nest-Schnittstellen-Weiterleitungskomponente 36 auf, um die Daten mit lokalem Abschluss weiterzuleiten. Der Aggregationspuffer 16 weist eine Vorzeitiger-Abschluss-Logik 26 auf, um nach dem Senden einer Anforderung eine Frei-zur-Wiederverwendung-Nachricht zu übergeben. Der Aggregationspuffer 16 ist mit der asynchronen Kern-Nest-Schnittstelle 14 über einen asynchronen Bus 38 verbunden. Die asynchrone Kern-Nest-Schnittstelle 14 weist ein Eingabe-/Ausgabe-Statusarray 44 mit mehreren Eingabe-/Ausgabe-Statuspuffern 24 sowie eine Array- Verwaltungs- und -Zugriffslogik 46 auf. Die Eingabe-/Ausgabe-Statuspuffer 24 erfassen zurückgegebene Zustände von dem Systemnest 18 und/oder dem Eingabe-/ Ausgabebuscontroller 20, insbesondere eine Abschlussnachricht von dem Systemnest 18. Die Eingabe-/Ausgabe-Statuspuffer 24 sind direkt in die asynchrone Kern-Nest-Schnittstelle 14 integriert. Eine Nachricht 48 mit einer Kennzeichnung eines Array-Eintrags, z.B. eine Abschlussnachricht an einen der Eingabe-/Ausgabe-Statuspuffer 24, kann durch das Systemnest 18 empfangen werden.
-
Gemäß einer Ausführungsform des erfindungsgemäßen Verfahrens gibt ein auf dem Datenverarbeitungssystem 210 laufendes Betriebssystem die Eingabe-/Ausgabe-Speicheranweisung 30 aus, die mindestens eine Eingabe-/Ausgabefunktion mit einem Offset durch eine Adresse, zu übertragende Daten und/oder einen Zeiger auf zu übertragende Daten sowie eine Länge der Daten angibt. Die Datenverarbeitungseinheit 216 ist hierbei so konfiguriert, dass sie die Eingabe-/Ausgabefunktion durch die in der Eingabe-/Ausgabe-Speicheranweisung 30 angegebene Adresse kennzeichnet. Die Datenverarbeitungseinheit 216 ist so konfiguriert, dass sie überprüft, ob ein Zugriff auf die Eingabe-/Ausgabefunktion auf einer Adressraum- und auf einer Gastinstanzebene erlaubt ist, wobei der Gast auf dem Datenverarbeitungssystem 210 ausgeführt wird. Die Datenverarbeitungseinheit 216 ist so konfiguriert, dass sie die Eingabe-/Ausgabe-Speicheranweisung 30 abschließt, bevor eine Ausführung der Eingabe-/Ausgabe-Speicheranweisung 30 in dem Systemnest 18 abgeschlossen ist. Die System-Firmware 10 ist so konfiguriert, dass sie das Betriebssystem durch eine Unterbrechung benachrichtigt, wenn während der asynchronen Ausführung der Eingabe-/Ausgabe-Speicheranweisung 30 ein Fehler durch die Datenverarbeitungseinheit 216 erkannt wird, die die Daten der fehlgeschlagenen asynchronen Ausführung übermittelt.
-
Die Array- Verwaltungs- und -Zugriffslogik 46 erfasst einen Abschluss der Speicheranweisung 30 und aktualisiert die Eingabe-/Ausgabe-Statuspuffer 24 beruhend auf den empfangenen Abschlussnachrichten.
-
Die Eingabe-/Ausgabe-Statuspuffer 24 erfassen Nachrichtenzustände von dem Systemnest 18 und/oder dem Eingabe-/Ausgabebuscontroller 20, insbesondere einen Abschlussstatus von dem Systemnest 18. Die Nachrichtenzustände und/oder der Abschlussstatus können mittels eines Eingabe-/Ausgabe-Statuspufferindex günstigerweise nummeriert werden.
-
Die Eingabe-/Ausgabe-Speicheranweisung 30 befindet sich in dem Datenverarbeitungssystem 210 auf der Seite der Benutzerschnittstelle 40 jenseits der Architekturgrenze, die die System-Hardware/-Firmware 50 von der Benutzerseite 40 trennt.
-
Somit werden die Daten durch die Eingabe-/Ausgabe-Speicheranweisung 30 durch einen asynchronen Übermittlungsmechanismus mit einer Vorzeitiger-Abschluss-Nachricht in mehreren Datenpaketen an den Aggregationspuffer 16 übertragen, wenn die Länge der Quellendaten acht Byte überschreitet, andernfalls werden die Daten in einem Datenpaket übertragen.
-
Eine Systemnachricht gemäß einer Ausführungsform des erfindungsgemäßen Datenverarbeitungssystems weist eine hierarchische physische Zieladresse oder das Verwenden eines SMT-Threads oder einer Gesamtpufferkennung als Quelle oder eine Länge von Daten oder eine Eingabe-/Ausgabebus-Adresse oder einen Eingabe-/Ausgabe-Statuspufferindex auf.
-
Die Warteschlangensteuerungs- und Reihenfolgesemantik zur Handhabung von Speicheranweisungen 30 an mehrere externe Einheiten 214 kann vorteilhafterweise so durchgeführt werden, wie im Folgenden beschrieben ist. Bei einer einzelnen Beziehung eines SMT-Threads zu einer Eingabe-/Ausgabe-Funktion können alle älteren Eingabe-/Ausgabe-Lade-/Speicheroperationen in Bezug auf einen einzelnen Thread der Prozessoreinheit 216 geordnet werden. Die neuen Eingabe-/Ausgabe-Speicheranweisungen sind untereinander vollkommen ungeordnet. Neue Eingabe-/Ausgabe-Speicheranweisungen werden in Abhängigkeit von älteren Eingabe-/Ausgabe-Anweisungen geordnet. Alle Eingabe-/Ausgabe-Anweisungen für verschiedene Eingabe-/Ausgabefunktionen werden nicht in Abhängigkeit voneinander geordnet.
-
2 stellt ein Nachrichtenfolgediagramm des Verfahrens zur Handhabung einer Eingabe-/Ausgabe-Speicheranweisung 30 an eine externe Einheit 214 gemäß einer Ausführungsform der Erfindung dar.
-
Wie in 2 gezeigt ist, beginnt das Verfahren damit, dass das Betriebssystem die Eingabe-/Ausgabe-Speicheranweisung 30 ausgibt. Im Schritt S101 ordnet die System-Firmware 10 einen freien Eingabe-/Ausgabe-Statuspufferindex zu. Wenn kein freier Eingabe-/Ausgabe-Statuspufferindex zur Verfügung steht, wartet die System-Firmware 10. Im Schritt S103 prüft die System-Firmware 10, ob die Speicheranweisung in eine asynchrone Sende-Engine eingefügt werden kann. Wenn dies möglich ist, fährt der Prozess fort. Wenn dies nicht möglich ist, wird die Speicheranweisung verzögert, bis die Speicheranweisungen, die die Verzögerung verursachen, abgeschlossen wurden.
-
Als Nächstes, wie durch die Schritte S100 und S104 angegeben, gibt die System-Firmware 10, wenn eine Länge der Daten acht Byte überschreitet, wiederholt eine Systemnachricht aus, um ein Datenpaket an den Aggregationspuffer 16 zu senden, bis alle Daten eines Speicherblocks an den Aggregationspuffer 16 weitergeleitet wurden, während die System-Firmware 10 wartet, bis die Daten durch die Systemnachricht gesendet worden sind. In den Schritten S102 und S106 wird eine lokale Abschlussnachricht an die System-Firmware 10 zurückgesendet.
-
Im Schritt S108 gibt die System-Firmware 10 dann eine Systemnachricht an den Aggregationspuffer 16 aus, um die Daten asynchron als eine einzelne Nestnachricht an den Eingabe-/Ausgabebuscontroller 20 weiterzuleiten, während sie darauf wartet, dass der Aggregationspuffer 16 eine Abschlussnachricht sendet.
-
Als Nächstes, im Schritt S110, fügt der Aggregationspuffer 16 die Nestnachricht in das Systemnest 18 ein, wobei der Aggregationspuffer 16 unmittelbar nach der Sendeoperation zur Wiederverwendung frei ist, Zurückmelden an die System-Firmware 10. Anschließend sendet der Aggregationspuffer 16 eine Frei-zur-Wiederverwendung-Nachricht.
-
Im Schritt S112 leitet das Systemnest 18 die Nachricht an den Zielspeicherort weiter, gefolgt vom Schritt S114, in dem der Eingabe-/Ausgabebuscontroller 20 die Nachricht empfängt und Daten in einem Datenrahmen an den Eingabe-/Ausgabebus weiterleitet, woraufhin der Eingabe-/Ausgabebuscontroller 20 im Schritt S116 eine Abschlussnachricht an das Systemnest 18 sendet.
-
Als Nächstes, im Schritt S118, leitet das Systemnest 18 die Abschlussnachricht an den Ursprungsaggregationspuffer 16 weiter, woraufhin der Aggregationspuffer 16 den Abschluss im Schritt S120 an die asynchrone Kern-Nest-Schnittstelle 14 weiterleitet. Im Schritt S122 speichert die asynchrone Kern-Nest-Schnittstelle 14 dann den Status im Eingabe-/Ausgabepuffer 24 für den jeweiligen Eingabe-/Ausgabe-Statuspufferindex und meldet der System-Firmware 10 den Abschluss der Operation. Schließlich aktualisiert die System-Firmware 10 im Schritt S123 die Aufzeichnung des Eingabe-/Ausgabe-Statuspuffers 24 mittels des Eingabe-/Ausgabe-Statuspufferindex. Der Eingabe-/Ausgabe-Statuspuffer 24 ist jetzt wieder frei.
-
In dem Fall, dass während der Übertragung von Daten ein Fehler auftritt, meldet die System-Firmware 10 dem Betriebssystem asynchron Defekte.
-
Falls die zu übertragenden Daten weniger als acht Byte umfassen, wird das wiederholte Füllen des Aggregationspuffers 16 übersprungen.
-
3 stellt einen ersten Teil eines Ablaufplans zur Handhabung einer Eingabe-/ Ausgabe-Speicheranweisung 30 an eine externe Einheit 214 gemäß einer Ausführungsform der Erfindung dar, wohingegen 4 einen zweiten Teil des Ablaufplans darstellt.
-
Wenn im Schritt S200 eine Fehlerunterbrechung auftritt, wird die Unterbrechung im Schritt S202 durch die System-Firmware 10 als eine Nachricht empfangen. Als Nächstes wird im Schritt S204 eine Statusnachricht von dem Eingabe-/Ausgabe-Statusarray abgerufen, das die Eingabe-/Ausgabe-Statuspuffer 24 aufweist. Die betroffene Eingabe-/ Ausgabefunktion wird im Schritt S206 festgestellt, wobei im Schritt S208 geprüft wird, ob es sich um einen Fehler mit Wiederholungsaktion handelt. Wenn dies der Fall ist, wird im Schritt S210 geprüft, ob ein Schwellenwert erreicht ist. Wenn dies der Fall ist, wird der Prozessablauf am Fortsetzungspunkt A gemäß dem in 4 beschriebenen Ablaufplan fortgesetzt. Wenn nicht, wird der Wiederholungszähler im Schritt S212 erhöht, woraufhin der Fehler im Statusarray-Eintrag im Schritt S214 behoben wird. Dann wird im Schritt S218 eine Wiederholung ausgelöst. Als Nächstes wird im Schritt S220 geprüft, ob der Fehler in dem Statusarray 44 gefunden wird. Wenn dies der Fall ist, kehrt der Prozess in einer Schleife zum Schritt S206 zurück, in dem er die betroffene Funktion feststellt. Wenn nicht, wird der Prozess beendet.
-
Wenn im Schritt S208 kein Fehler mit Wiederholungsaktion festgestellt wird, wird im Schritt S222 geprüft, ob es sich dabei um einen schwerwiegenden Fehler handelt. Dann wird geprüft, ob an den Eingabe-/Ausgabebus 22 angeschlossene Funktionen mit einer ausstehenden Speicherfunktion (Schritt 226) betroffen sind oder ob alle Funktionen mit einer ausstehenden Speicherfunktion betroffen sind (Schritt S228). Die betroffenen Funktionen werden im Schritt S230 in einen Fehlerzustand versetzt, woraufhin der Fehler im Schritt S232 dem Betriebssystem asynchron gemeldet wird.
-
Wenn im Schritt S222 kein schwerwiegender Fehler gefunden wird, werden die betroffenen Funktionen im Schritt S230 in einen Fehlerzustand versetzt, woraufhin der Fehler im Schritt S232 dem Betriebssystem asynchron gemeldet wird, und parallel dazu fährt der Prozessablauf am Fortsetzungspunkt A mit dem in 4 beschriebenen zweiten Teil des Ablaufplans fort.
-
Informationen über die festgestellten betroffenen Eingabe-/Ausgabefunktionen werden im Speicher 228 in einer Speicherdaten-Schattenkopie 62 gespeichert. Informationen über die in einen Fehlerzustand versetzten betroffenen Funktionen werden in einer Speicherzugriffstabelle 64 des Speichers 228 gespeichert.
-
Der zweite Teil des Ablaufplans, der mit dem Fortsetzungspunkt A beginnt, ist in 4 dargestellt. Zunächst wird im Schritt S304 geprüft, ob die mehr als 8 Byte übertragen werden sollen. Wenn dies der Fall ist, füllt die Kern-Nest-Schnittstelle den Aggregationspuffer im Schritt S306 mit einer bis zu 16 Byte umfassenden Nachricht. Die System-Firmware wartet, Schritt S308, bis eine Nachricht eines lokalen Abschlusses im Schritt S310 gesendet wird, und kehrt zum Schritt S304 zurück. Wenn bei der Prüfung des Schritts S304 weniger als 8 Byte übrig sind, fährt der Ablauf im Schritt S312 damit fort, dass die Kern-Nest-Schnittstelle eine asynchrone Eingabe-/Ausgabe-Nachricht sendet, woraufhin im Schritt S314 auf eine Pufferantwort im Schritt S316 gewartet wird. Dann wird im Schritt S318 eine Beende-Speicherblock-Anweisung ausgeführt und der Ablauf endet im Schritt S320 mit einer Beendigung in der System-Firmware.
-
Im Schritt S328 startet die asynchrone Kern-Nest-Schnittstellenlogik eine Ausgangsprozessschleife, woraufhin der Empfang einer Aggregationspuffer-Abschlussnachricht im Schritt S322 und eine Leite-Daten-weiter-Nachricht an den Aggregationspuffer im Schritt S324 folgt, woraufhin eine „Sende Abschlussnachricht zurück an die System-Firmware“ im Schritt S326 folgt. Im Schritt S330 wird eine asynchrone Eingabe-/Ausgabe-Sendenachricht empfangen, woraufhin eine Weiterleitung der Eingabe-/ Ausgabe-Sendenachricht an den Aggregationspuffer folgt.
-
Im Schritt S338 startet die Aggregationspufferlogik eine Ausgangsprozessschleife, woraufhin „Empfange Daten“ im Schritt S334 und ein Zusammenfassen von Daten im Aggregationspuffer im Schritt S336 folgt. Der Aggregationspuffer empfängt im Schritt S340 auch eine Eingabe-/Ausgabe-Sendenachricht, woraufhin Daten aus dem Aggregationspuffer mit einer Eingabe-/Ausgabe-Sendenachricht im Schritt S242 weitergeleitet werden. Als Nächstes, im Schritt S344, wird eine Antwortnachricht aus dem Aggregationspuffer über die Kern-Nest-Schnittstelle an die System-Firmware gesendet.
-
Unter Bezugnahme auf 5 ist eine schematische Darstellung eines Beispiels eines Datenverarbeitungssystems 210 gezeigt. Das Datenverarbeitungssystem 210 ist lediglich ein Beispiel eines geeigneten Datenverarbeitungssystems und soll keine Einschränkung hinsichtlich des Nutzungsumfangs oder der Funktionalität von Ausführungsformen der hierin beschriebenen Erfindung bedeuten. Ungeachtet dessen ist das Datenverarbeitungssystem 210 ausführungsfähig und/oder in der Lage, jedwede der vorstehend dargelegten Funktionalität durchzuführen.
-
In dem Datenverarbeitungssystem 210 gibt es ein(en) Computersystem/Server 212, das bzw. der mit zahlreichen anderen Umgebungen oder Konfigurationen eines universellen oder speziellen IT-Systems betrieben werden kann. Zu Beispielen für hinlänglich bekannte IT-Systeme, -Umgebungen und/oder -Konfigurationen, die für die Verwendung mit dem Computersystem/Server 212 geeignet sein können, gehören, ohne darauf beschränkt zu sein, Personal-Computer-Systeme, Server-Computersysteme, Thin Clients, Thick Clients, tragbare oder Laptop-Einheiten, Mehrprozessorsysteme, auf einem Mikroprozessor beruhende Systeme, Set-Top-Boxen, programmierbare Unterhaltungselektronik, Netzwerk-PCs, Minicomputersysteme, Mainframe-Computersysteme sowie verteilte Cloud-Computing-Umgebungen, die beliebige der vorstehenden Systeme oder Einheiten enthalten, und dergleichen.
-
Das/der Computersystem/Server 212 kann in dem allgemeinen Kontext von durch ein Computersystem ausführbaren Anweisungen, wie beispielsweise Programmmodulen, die von einem Computersystem ausgeführt werden, beschrieben werden. Im Allgemeinen können Programmmodule Routinen, Programme, Objekte, Komponenten, Logik, Datenstrukturen und so weiter umfassen, die bestimmte Aufgaben durchführen oder bestimmte abstrakte Datentypen ausführen. Das/der Computersystem/Server 212 kann in verteilten Cloud-Computing-Umgebungen in die Praxis umgesetzt werden, in denen Aufgaben von fernen Verarbeitungseinheiten durchgeführt werden, die durch ein Übertragungsnetzwerk miteinander verbunden sind. In einer verteilten Cloud-Computing-Umgebung können sich Programmmodule sowohl in lokalen als auch in fernen Speichermedien eines Computersystems, zu denen auch Hauptspeichereinheiten gehören, befinden.
-
Wie in 5 gezeigt ist, ist das/der Computersystem/Server 212 in dem Datenverarbeitungssystem 210 in Form einer Universal-Datenverarbeitungseinheit gezeigt. Zu den Komponenten des Computersystems/Servers 212 können, ohne darauf beschränkt zu sein, ein oder mehrere Prozessoren oder Verarbeitungseinheiten 216, ein Systemspeicher 228 und ein Bus 218 gehören, der verschiedene Systemkomponenten einschließlich des Systemspeichers 228 mit dem Prozessor 216 verbindet.
-
Der Bus 218 stellt eine oder mehrere von beliebigen Busstrukturen von mehreren Arten von Busstrukturen dar, darunter einen Speicherbus oder einen Speichercontroller, einen peripheren Bus, einen Accelerated Graphics Port und einen Prozessor- oder lokalen Bus, der beliebige einer Vielfalt an Busarchitekturen verwendet. Beispielhaft, und nicht als Einschränkung, gehören zu solchen Architekturen der Bus „Industry Standard Architecture (ISA)“, der Bus „Micro Channel Architecture (MCA)“, der Bus „Enhanced ISA (EISA)“, der lokale Bus „Video Electronics Standards Association (VESA)“ und der Bus „Peripheral Component Interconnect (PCI)“.
-
Das/der Computersystem/Server 212 enthält üblicherweise eine Vielfalt an durch ein Computersystem lesbaren Datenträgern. Solche Datenträger können jedwede verfügbaren Datenträger sein, auf die von dem Computersystem/Server 212 zugegriffen werden kann, und zu ihnen gehören sowohl flüchtige und nicht flüchtige als auch austauschbare und nicht austauschbare Datenträger.
-
Zum Systemspeicher 228 können durch ein Computersystem lesbare Datenträger in Form von flüchtigem Speicher, wie beispielsweise ein Direktzugriffsspeicher (RAM) 230 und/oder ein Cache 232, gehören. Das/der Computersystem/Server 212 kann des Weiteren weitere austauschbare/nicht austauschbare, flüchtige/nicht flüchtige Speichermedien eines Computersystems enthalten. Lediglich als Beispiel kann das Speichersystem 234 für das Lesen von und das Schreiben auf einen nicht austauschbaren, nicht flüchtigen Magnetdatenträger (nicht gezeigt und üblicherweise als „Festplattenlaufwerk“ bezeichnet) bereitgestellt werden. Obgleich nicht gezeigt, können ein Magnetplattenlaufwerk für das Lesen von und das Schreiben auf eine austauschbare, nicht flüchtige Magnetplatte (z.B. eine „Diskette“) und ein optisches Plattenlaufwerk für das Lesen von oder das Schreiben auf eine austauschbare, nicht flüchtige optische Platte, wie beispielsweise ein CD-ROM, DVD-ROM oder andere optische Datenträger, bereitgestellt werden. In diesen Fällen kann jeder Datenträger durch eine oder mehrere Datenträgerschnittstellen mit dem Bus 218 verbunden werden. Wie weiter dargestellt und nachstehend beschrieben wird, kann der Speicher 228 mindestens ein Programmprodukt enthalten, das über einen Satz (z.B. zumindest einen) von Programmmodulen verfügt, die so konfiguriert sind, dass sie die Funktionen von Ausführungsformen der Erfindung ausführen.
-
Das Programm/Dienstprogramm 240, das über einen Satz (zumindest einen) von Programmmodulen 242 verfügt, kann beispielhaft, und nicht als Einschränkung, im Speicher 228 gespeichert werden, ebenso wie ein Betriebssystem, ein oder mehrere Anwendungsprogramme, andere Programmmodule und Programmdaten. Das Betriebssystem, ein oder mehrere Anwendungsprogramme, andere Programmmodule und Programmdaten oder eine Kombination daraus können jeweils eine Ausführung einer Netzwerkumgebung umfassen. Die Programmmodule 242 führen im Allgemeinen die Funktionen und/oder die Vorgehensweisen von Ausführungsformen der Erfindung aus, die hierin beschrieben sind.
-
Das/der Computersystem/Server 212 kann auch mit einer oder mehreren externen Einheiten 214 wie beispielsweise einer Tastatur, einer Zeigereinheit, einem Bildschirm 224 usw.; mit einer oder mehreren Einheiten, die einem Benutzer den Dialogverkehr mit dem Computersystem/Server 212 ermöglichen; und/oder beliebigen Einheiten (z.B. Netzkarte, Modem usw.), die dem Computersystem/Server 212 den Datenaustausch mit einer oder mehreren anderen Datenverarbeitungseinheiten ermöglichen, Daten austauschen. Ein solcher Datenaustausch kann über Eingabe-/Ausgabe-(E/A-)Schnittstellen 222 erfolgen. Dennoch kann das/der Computersystem/Server 212 mit einem oder mehreren Netzwerken wie beispielsweise einem lokalen Netz (LAN), einem allgemeinen Weitverkehrsnetz (WAN) und/oder einem öffentlichen Netz (z.B. dem Internet) über den Netzwerkadapter 220 Daten austauschen. Wie dargestellt ist, tauscht der Netzwerkadapter 220 mit den anderen Komponenten des Computersystems/Servers 212 über den Bus 218 Daten aus. Es sollte klar sein, dass auch andere Hardware- und/oder Software-Komponenten in Verbindung mit dem Computersystem/Server 212 verwendet werden könnten, obgleich diese nicht gezeigt sind. Zu Beispielen gehören, ohne darauf beschränkt zu sein: Mikrocode, Einheitentreiber, redundante Verarbeitungseinheiten, externe Anordnungen von Plattenlaufwerken, RAID-Systeme, Bandlaufwerke sowie Speichersysteme zur Datenarchivierung usw.
-
Bei der vorliegenden Erfindung kann es sich um ein System, ein Verfahren und/oder ein Computerprogrammprodukt handeln. Das Computerprogrammprodukt kann ein durch einen Computer lesbares Speichermedium (oder -medien) mit durch einen Computer lesbaren Programmanweisungen darauf umfassen, um einen Prozessor dazu zu veranlassen, Aspekte der vorliegenden Erfindung auszuführen.
-
Bei dem durch einen Computer lesbaren Speichermedium kann es sich um eine physische Einheit handeln, die Anweisungen zur Verwendung durch ein System zur Ausführung von Anweisungen behalten und speichern kann. Bei dem durch einen Computer lesbaren Speichermedium kann es sich zum Beispiel um eine elektronische Speichereinheit, eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiterspeichereinheit oder jede geeignete Kombination daraus handeln, ohne auf diese beschränkt zu sein. Zu einer nicht erschöpfenden Liste spezifischerer Beispiele des durch einen Computer lesbaren Speichermediums gehören die folgenden: eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM bzw. Flash-Speicher), ein statischer Direktzugriffsspeicher (SRAM), ein tragbarer Kompaktspeicherplatte-Nur-Lese-Speicher (CD-ROM), eine DVD (digital versatile disc), ein Speicher-Stick, eine Diskette, eine mechanisch kodierte Einheit wie zum Beispiel Lochkarten oder gehobene Strukturen in einer Rille, auf denen Anweisungen gespeichert sind, und jede geeignete Kombination daraus. Ein durch einen Computer lesbares Speichermedium soll in der Verwendung hierin nicht als flüchtige Signale an sich aufgefasst werden, wie zum Beispiel Funkwellen oder andere sich frei ausbreitende elektromagnetische Wellen, elektromagnetische Wellen, die sich durch einen Wellenleiter oder ein anderes Übertragungsmedium ausbreiten (z.B. durch ein Glasfaserkabel geleitete Lichtimpulse) oder durch einen Draht übermittelte elektrische Signale.
-
Hierin beschriebene, durch einen Computer lesbare Programmanweisungen können von einem durch einen Computer lesbaren Speichermedium auf jeweilige Datenverarbeitungs-/Verarbeitungseinheiten oder über ein Netzwerk wie zum Beispiel das Internet, ein lokales Netzwerk, ein Weitverkehrsnetz und/oder ein drahtloses Netzwerk auf einen externen Computer oder eine externe Speichereinheit heruntergeladen werden. Das Netzwerk kann Kupferübertragungskabel, Lichtwellenübertragungsleiter, drahtlose Übertragung, Leitwegrechner, Firewalls, Vermittlungseinheiten, Gateway-Computer und/oder Edge-Server aufweisen. Eine Netzwerkadapterkarte oder Netzwerkschnittstelle in jeder Datenverarbeitungs-/Verarbeitungseinheit empfängt durch einen Computer lesbare Programmanweisungen aus dem Netzwerk und leitet die durch einen Computer lesbaren Programmanweisungen zur Speicherung in einem durch einen Computer lesbaren Speichermedium innerhalb der entsprechenden Datenverarbeitungs-/Verarbeitungseinheit weiter.
-
Bei durch einen Computer lesbaren Programmanweisungen zum Ausführen von Arbeitsschritten der vorliegenden Erfindung kann es sich um Assembler-Anweisungen, ISA-Anweisungen (Instruction-Set-Architecture), Maschinenanweisungen, maschinenabhängige Anweisungen, Mikrocode, Firmware-Anweisungen, zustandssetzende Daten oder entweder Quellcode oder Objektcode handeln, die in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen geschrieben werden, darunter objektorientierte Programmiersprachen wie Smalltalk, C++ o.ä. sowie herkömmliche prozedurale Programmiersprachen wie die Programmiersprache „C“ oder ähnliche Programmiersprachen. Die durch einen Computer lesbaren Programmanweisungen können vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Software-Paket, teilweise auf dem Computer des Benutzers und teilweise auf einem fernen Computer oder vollständig auf dem fernen Computer oder Server ausgeführt werden. In letzterem Fall kann der entfernt angeordnete Computer mit dem Computer des Benutzers durch eine beliebige Art Netzwerk verbunden sein, darunter ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetz (WAN), oder die Verbindung kann mit einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Verwendung eines Internet-Dienstanbieters). In einigen Ausführungsformen können elektronische Schaltungen, darunter zum Beispiel programmierbare Logikschaltungen, im Feld programmierbare Gatter-Anordnungen (FPGA, field-programmable gate arrays) oder programmierbare Logikanordnungen (PLA, programmable logic arrays) die durch einen Computer lesbaren Programmanweisungen ausführen, indem sie Zustandsinformationen der durch einen Computer lesbaren Programmanweisungen nutzen, um die elektronischen Schaltungen zu personalisieren, um Aspekte der vorliegenden Erfindung durchzuführen.
-
Aspekte der vorliegenden Erfindung sind hierin unter Bezugnahme auf Ablaufpläne und/oder Blockschaltbilder bzw. Schaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es wird darauf hingewiesen, dass jeder Block der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder sowie Kombinationen von Blöcken in den Ablaufplänen und/oder den Blockschaltbildern bzw. Schaubildern mittels durch einen Computer lesbare Programmanweisungen ausgeführt werden können.
-
Diese durch einen Computer lesbaren Programmanweisungen können einem Prozessor eines Universalcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, so dass die über den Prozessor des Computers bzw. der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführten Anweisungen ein Mittel zur Umsetzung der in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder festgelegten Funktionen/Schritte erzeugen. Diese durch einen Computer lesbaren Programmanweisungen können auch auf einem durch einen Computer lesbaren Speichermedium gespeichert sein, das einen Computer, eine programmierbare Informationsverarbeitungsvorrichtung und/oder andere Einheiten so steuern kann, dass sie auf eine bestimmte Art funktionieren, so dass das durch einen Computer lesbare Speichermedium, auf dem Anweisungen gespeichert sind, ein Herstellungsprodukt aufweist, darunter Anweisungen, welche Aspekte der/des in dem Block bzw. den Blöcken des Ablaufplans und/oder der Blockschaltbilder bzw. Schaubilder angegebenen Funktion/Schritts umsetzen.
-
Die durch einen Computer lesbaren Programmanweisungen können auch auf einen Computer, eine andere programmierbare Informationsverarbeitungsvorrichtung oder eine andere Einheit geladen werden, um das Ausführen einer Reihe von Prozessschritten auf dem Computer bzw. der anderen programmierbaren Vorrichtung oder anderen Einheit zu verursachen, um einen auf einem Computer ausgeführten Prozess zu erzeugen, so dass die auf dem Computer, einer anderen programmierbaren Vorrichtung oder einer anderen Einheit ausgeführten Anweisungen die in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder festgelegten Funktionen/Schritte umsetzen.
-
Die Ablaufpläne und die Blockschaltbilder bzw. Schaubilder in den Figuren veranschaulichen die Architektur, die Funktionalität und den Betrieb möglicher Ausführungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in den Ablaufplänen oder Blockschaltbildern bzw. Schaubildern ein Modul, ein Segment oder einen Teil von Anweisungen darstellen, die eine oder mehrere ausführbare Anweisungen zur Ausführung der bestimmten logischen Funktion(en) aufweisen. In einigen alternativen Ausführungen können die in dem Block angegebenen Funktionen in einer anderen Reihenfolge als in den Figuren gezeigt stattfinden. Zwei nacheinander gezeigte Blöcke können zum Beispiel in Wirklichkeit im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können manchmal je nach entsprechender Funktionalität in umgekehrter Reihenfolge ausgeführt werden. Es ist ferner anzumerken, dass jeder Block der Blockschaltbilder bzw. Schaubilder und/oder der Ablaufpläne sowie Kombinationen aus Blöcken in den Blockschaltbildern bzw. Schaubildern und/oder den Ablaufplänen durch spezielle auf Hardware beruhende Systeme umgesetzt werden können, welche die festgelegten Funktionen oder Schritte durchführen, oder Kombinationen aus Spezial-Hardware und Computeranweisungen ausführen.
-
Die Beschreibungen der verschiedenen Ausführungsformen der vorliegenden Erfindung erfolgten zum Zweck der Veranschaulichung, sollen jedoch nicht erschöpfend oder auf die offenbarten Ausführungsformen beschränkt sein. Viele Änderungen und Varianten sind für den Fachmann erkennbar, ohne vom Umfang und Wesen der beschriebenen Ausführungsformen abzuweichen. Die hierin verwendete Terminologie wurde gewählt, um die Grundgedanken der Ausführungsformen, die praktische Anwendung oder technische Verbesserung gegenüber auf dem Markt befindlicher Technologien am besten zu erklären bzw. um anderen Fachleuten das Verständnis der hierin offenbarten Ausführungsformen zu ermöglichen.
-
Bezugszeichenliste
-
- 10
- System-Firmware
- 12
- Kern
- 14
- asynchrone Kern-Nest-Schnittstelle
- 16
- Aggregationspuffer
- 18
- Systemnest
- 20
- E/A-Buscontroller
- 22
- E/A-Bus
- 24
- E/A-Statuspuffer
- 26
- Vorzeitiger-Abschluss-Logik
- 28
- Puffer-E/A-Buscontroller-Schnittstelle
- 30
- E/A-Speicheranweisung
- 32
- Asynchroner E/A-Treibercode
- 34
- E/A-Konfigurationscode
- 36
- asynchrone Weiterleitung
- 38
- asynchroner Bus
- 40
- Benutzerschnittstelle
- 42
- Array-Verwaltungslogik
- 44
- E/A-Statusarray
- 46
- Array- Verwaltungs- und -Zugriffslogik
- 48
- Nachricht mit Kennzeichnung eines Array-Eintrags
- 50
- System-Hardware/-Firmware
- 52
- Wiederholungspuffer
- 54
- Analyse- & Wiederholungslogik
- 60 62
- Speicherdaten-Schattenkopie
- 64
- Speicherzugriffstabelle
- 210
- Datenverarbeitungssystem
- 212
- Computersystem/Server
- 214
- externe Einheiten
- 216
- CPU / Datenverarbeitungseinheit
- 218
- E/A-Bus
- 220
- Netzwerkadapter
- 222
- E/A-Schnittstellen
- 224
- Bildschirm
- 228
- Speicher
- 230
- RAM
- 232
- Cache
- 234
- Speichersystem
- 240
- Programm/Dienstprogramm
- 242
- Programmmodule