DE112020000146T5 - Handhabung einer eingabe-/ausgabe-speicheranweisung - Google Patents

Handhabung einer eingabe-/ausgabe-speicheranweisung Download PDF

Info

Publication number
DE112020000146T5
DE112020000146T5 DE112020000146.6T DE112020000146T DE112020000146T5 DE 112020000146 T5 DE112020000146 T5 DE 112020000146T5 DE 112020000146 T DE112020000146 T DE 112020000146T DE 112020000146 T5 DE112020000146 T5 DE 112020000146T5
Authority
DE
Germany
Prior art keywords
input
output
data
asynchronous
data processing
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.)
Pending
Application number
DE112020000146.6T
Other languages
English (en)
Inventor
Christoph Raisch
Marco Kraemer
Frank Lehnert
Matthias Klein
Jonathan Bradbury
Christian Jacobi
Brenton Belmar
Peter Driever
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 DE112020000146T5 publication Critical patent/DE112020000146T5/de
Pending 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0727Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a storage system, e.g. in a DASD or network based storage system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/076Error or fault detection not based on redundancy by exceeding limits by exceeding a count or rate limit, e.g. word- or bit count limit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0772Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1405Saving, restoring, recovering or retrying at machine instruction level
    • G06F11/141Saving, restoring, recovering or retrying at machine instruction level for bus or memory accesses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3041Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is an input/output interface
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • 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/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • 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/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/81Threshold

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Multimedia (AREA)
  • Mathematical Physics (AREA)
  • Debugging And Monitoring (AREA)
  • Retry When Errors Occur (AREA)
  • Memory System (AREA)
  • Information Transfer Systems (AREA)

Abstract

Ein Datenverarbeitungssystem (210) und ein Verfahren zur Handhabung einer Eingabe-/ Ausgabe-Speicheranweisung (30), das ein Systemnest (18) aufweist, welches durch einen Eingabe-/Ausgabebuscontroller (20) mit mindestens einem Eingabe-/Ausgabebus (22) verbunden ist. Eine Datenverarbeitungseinheit (216) ist über einen Aggregationspuffer (16) mit dem Systemnest (18) verbunden. Ein Systemnest (18) ist so konfiguriert, dass es Daten aus/in mindestens einer externen Einheit (214) asynchron lädt und/oder speichert. 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. Eine asynchrone Kern-Nest-Schnittstelle (14) weist ein Eingabe-/Ausgabe-Statusarray (44) mit mehreren Eingabe-/ Ausgabe-Statuspuffern (24) auf. Eine System-Firmware (10) weist einen Wiederholungspuffer (52) auf, und der Kern (12) weist eine Analyse- und Wiederholungslogik (54) auf.

Description

  • 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

Claims (25)

  1. Datenverarbeitungssystem (210) zur Handhabung einer Eingabe-/Ausgabe-Speicheranweisung (30), das ein Systemnest (18) aufweist, welches durch einen Eingabe-/Ausgabebuscontroller (20) mit mindestens einem Eingabe-/Ausgabebus (22) per Datenaustausch verbunden ist, wobei es des Weiteren mindestens eine Datenverarbeitungseinheit (216) aufweist, die einen Kern (12), eine System-Firmware (10) und eine asynchrone Kern-Nest-Schnittstelle (14) aufweist, wobei die Datenverarbeitungseinheit (216) über einen Aggregationspuffer (16) mit dem Systemnest (18) per Datenaustausch verbunden ist, wobei das Systemnest (18) so konfiguriert ist, dass es Daten aus/in mindestens einer externen Einheit (214) asynchron lädt und/oder speichert, die mit dem Eingabe-/ Ausgabebus (22) per Datenaustausch verbunden ist, wobei die asynchrone Kern-Nest-Schnittstelle (14) ein Eingabe-/Ausgabe-Statusarray (44) mit mehreren Eingabe-/Ausgabe-Statuspuffern (24) sowie eine Array-Verwaltungs- und -Zugriffslogik (46) aufweist, wobei die System-Firmware (10) einen Wiederholungspuffer (52) aufweist und der Kern (12) eine Analyse- und Wiederholungslogik (54) aufweist, und wobei (i) ein auf dem Datenverarbeitungssystem (210) laufendes Betriebssystem die Eingabe-/Ausgabe-Speicheranweisung (30) ausgibt, 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 (216) so konfiguriert ist, dass sie die Eingabe-/ Ausgabefunktion durch die in der Eingabe-/Ausgabe-Speicheranweisung (30) angegebene Adresse kennzeichnet; (iii) die Datenverarbeitungseinheit (216) 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 (210) ausgeführt wird; (iv) die Datenverarbeitungseinheit (216) so konfiguriert ist, dass sie die Eingabe-/ Ausgabe-Speicheranweisung (30) abschließt, bevor eine Ausführung der Eingabe-/Ausgabe-Speicheranweisung (30) in dem Systemnest (18) abgeschlossen ist; (v) die System-Firmware (10) so konfiguriert ist, 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; (vi) der Analyse- und Wiederholungslogik (54), die separat Fehler erkennt, von der Hardware versichert wird, dass die Speicheranweisung (30) noch nicht an einen Eingabe-/Ausgabebus (22) weitergeleitet wurde; (vii) der Wiederholungspuffer (52) Speicherinformationen für Wiederholungen der Ausführung der Speicheranweisung (30) in System-Hardware/-Firmware (50) festhält; (viii) die Analyse- und Wiederholungslogik (54) Fehler analysiert und auf Wiederholungsmöglichkeit prüft; (ix) die Analyse- und Wiederholungslogik (54) Wiederholungen auslöst.
  2. Datenverarbeitungssystem nach Anspruch 1, wobei die Analyse- und Wiederholungslogik (54) eine Anzahl von Wiederholungsfehlern zählt, Fehlererkennungsschwellenwerte prüft und dem Betriebssystem eine Anzahl von fehlgeschlagenen Wiederholungen meldet.
  3. Datenverarbeitungssystem nach Anspruch 1 oder 2, wobei der Aggregationspuffer (16) über einen asynchronen Bus (38) mit der asynchronen Kern-Nest-Schnittstelle (14) per Datenaustausch verbunden ist.
  4. Datenverarbeitungssystem nach einem der vorhergehenden Ansprüche, wobei 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 werden, wenn die Länge der Daten acht Byte überschreitet, andernfalls werden die Daten in einem Datenpaket übertragen.
  5. Datenverarbeitungssystem nach einem der vorhergehenden Ansprüche, wobei die System-Firmware (10) einen asynchronen Eingabe-/Ausgabe-Treibercode (32) zur Handhabung der Eingabe-/Ausgabe-Speicheranweisung (30) aufweist.
  6. Datenverarbeitungssystem nach Anspruch 5, wobei der Kern (12) einen asynchronen Konfigurationscode (34) zur Handhabung von Speicheranforderungen für Statusinformationen des asynchronen Eingabe-/Ausgabe-Treibercodes (32) aufweist.
  7. Datenverarbeitungssystem nach einem der vorhergehenden Ansprüche, wobei die asynchrone Kern-Nest-Schnittstelle (14) eine asynchrone Kern-Nest-Schnittstellen-Weiterleitungskomponente (36) aufweist, um die Daten mit lokalem Abschluss weiterzuleiten.
  8. Datenverarbeitungssystem nach einem der vorhergehenden Ansprüche, wobei der Aggregationspuffer (16) eine Vorzeitiger-Abschluss-Logik (26) aufweist, um nach dem Senden einer Anforderung eine Frei-zur-Wiederverwendung-Nachricht zu übergeben.
  9. Datenverarbeitungssystem nach einem der vorhergehenden Ansprüche, wobei die System-Firmware (10) eine Array-Verwaltungslogik (42) aufweist, die Eingabe-/ Ausgabe-Statuspuffer (24) in dem Eingabe-/Ausgabe-Statusarray (44) zuordnet/freigibt und/oder einen Start einer neuen Speicheranweisung (30) einleitet.
  10. Datenverarbeitungssystem nach einem der vorhergehenden Ansprüche, wobei der asynchrone Eingabe-/Ausgabe-Treibercode (32) eine Kopie einer jeden Eingabe-/ Ausgabe-Operation in dem Wiederholungspuffer (52) speichert und die Steuerung an die Analyse- und Wiederholungslogik (54) übertragen wird, wenn der asynchrone Eingabe-/Ausgabe-Treibercode (32) einen Fehler erkennt.
  11. Datenverarbeitungssystem nach einem der vorhergehenden Ansprüche, wobei die Analyse- und Wiederholungslogik (54) - eine fehlgeschlagene Speicheranweisung (30) feststellt, - eine Eingabe-/Ausgabefunktion dieser Speicheranweisung (30) feststellt, - eine Wiederholung für Fehler mit Wiederholungsaktion einleitet, wenn ein Schwellenwert unterschritten wird, - alle ausstehenden Anforderungen für diese Eingabe-/Ausgabefunktion löscht, wenn in der asynchronen Kern-Nest-Schnittstelle (14) ein Fehler auftritt und der Schwellenwert überschritten wird; die Eingabe-/Ausgabefunktion in einen Fehlerzustand versetzt und dem Betriebssystem einen asynchronen Fehler meldet, - die Quelle des Fehlers feststellt, wenn ein schwerwiegender Fehler auftritt; alles löscht, wenn die Quelle das Systemnest (18) ist, alle beteiligten Eingabe-/ Ausgabefunktionen in einen Fehlerzustand versetzt und dem Betriebssystem einen asynchronen Fehler meldet; alle ausstehenden Anforderungen für Eingabe-/Ausgabefunktionen, die an diesen Eingabe-/Ausgabebuscontroller (20) angeschlossen sind, löscht, wenn die Quelle der Eingabe-/ Ausgabebuscontroller (20) ist; alle Eingabe-/Ausgabefunktionen in einen Fehlerzustand versetzt und dem Betriebssystem einen asynchronen Fehler meldet.
  12. Datenverarbeitungssystem nach einem der vorhergehenden Ansprüche, wobei 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-/Ausgabebusadresse oder - einen Eingabe-/Ausgabe-Statuspufferindex aufweist.
  13. Verfahren zur Handhabung einer Eingabe-/Ausgabe-Speicheranweisung (30) an mindestens eine externe Einheit (214) eines Datenverarbeitungssystems (210), wobei das Datenverarbeitungssystem (210) ein Systemnest (10) aufweist, das mit mindestens einem Eingabe-/Ausgabebus (22) durch einen Eingabe-/Ausgabebuscontroller (14) per Datenaustausch verbunden ist, und des Weiteren mindestens eine Datenverarbeitungseinheit (216) aufweist, die einen Kern (12), eine System-Firmware (10) und eine asynchrone Kern-Nest-Schnittstelle (14) aufweist, wobei die Datenverarbeitungseinheit (216) über einen Aggregationspuffer (16) mit dem Systemnest (18) per Datenaustausch verbunden ist, wobei die externe Einheit (214) mit dem Eingabe-/Ausgabebus (22) per Datenaustausch verbunden ist, wobei die asynchrone Kern-Nest-Schnittstelle (14) ein Eingabe-/Ausgabe-Statusarray (44) mit mehreren Eingabe-/Ausgabe-Statuspuffern (24) sowie eine Array-Verwaltungs- und -Zugriffslogik (46) aufweist, wobei die System-Firmware (10) einen Wiederholungspuffer (52) aufweist und der Kern (12) eine Analyse- und Wiederholungslogik (54) aufweist, wobei das Verfahren (i) das Ausgeben der Eingabe-/Ausgabe-Speicheranweisung (30) durch ein auf dem Datenverarbeitungssystem (210) laufendes Betriebssystem umfasst, 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 (216) so konfiguriert ist, dass sie die Eingabe-/Ausgabefunktion durch die in der Eingabe-/Ausgabe-Speicheranweisung (30) angegebene Adresse kennzeichnet; (iii) wobei die Datenverarbeitungseinheit (216) 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 (210) ausgeführt wird; (iv) wobei die Datenverarbeitungseinheit (216) so konfiguriert ist, dass sie die Eingabe-/Ausgabe-Speicheranweisung (30) abschließt, bevor eine Ausführung der Eingabe-/Ausgabe-Speicheranweisung (30) in dem Systemnest (18) abgeschlossen ist; (v) wobei die System-Firmware (10) so konfiguriert ist, 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; (vi) wobei der Analyse- und Wiederholungslogik (54), die separat Fehler erkennt, von der Hardware versichert wird, dass die Speicheranweisung (30) noch nicht an einen Eingabe-/Ausgabebus (22) weitergeleitet wurde; (vii) wobei der Wiederholungspuffer (52) Speicherinformationen für Wiederholungen der Ausführung der Speicheranweisung (30) in System-Hardware/-Firmware (50) festhält; (viii) wobei die Analyse- und Wiederholungslogik (54) Fehler analysiert und auf Wiederholungsmöglichkeit prüft; (ix) wobei die Analyse- und Wiederholungslogik (54) Wiederholungen auslöst.
  14. Verfahren nach Anspruch 13, wobei die Analyse- und Wiederholungslogik (54) eine Anzahl von Wiederholungsfehlern zählt, Fehlererkennungsschwellenwerte prüft und dem Betriebssystem eine Anzahl von fehlgeschlagenen Wiederholungen meldet.
  15. Verfahren nach 13 oder 14, das des Weiteren umfasst (i) Ausgeben der Eingabe-/Ausgabe-Speicheranweisung (30) 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 (30) in die asynchrone Sende-Engine durch die System-Firmware (10); falls sie durch eine weitere Speicheranweisung gesperrt ist, Warten, bis die Speicheranweisung abgeschlossen wurde; (iv) in Abhängigkeit von der Länge der Daten: wenn eine Länge der Daten acht Byte überschreitet, wiederholtes Ausgeben einer Systemnachricht durch die System-Firmware (10), 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; andernfalls Ausgeben einer Systemnachricht durch die System-Firmware (10), um die Daten an den Aggregationspuffer (16) zu senden; (v) Ausgeben einer Systemnachricht durch die System-Firmware (10) an den Aggregationspuffer (16), 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; (vi) Einfügen der Nestnachricht in das Systemnest (18) durch den Aggregationspuffer (16), wobei der Aggregationspuffer (16) unmittelbar nach der Sendeoperation frei zur Wiederverwendung ist, Zurückmelden an die System-Firmware (10); anschließendes Senden einer Frei-zur-Wiederverwendung-Nachricht durch den Aggregationspuffer (16); (vii) Weiterleiten der Nachricht an den Zielspeicherort durch das Systemnest (18); (viii) Empfangen der Nachricht durch den Eingabe-/Ausgabebuscontroller (20) und Weiterleiten von Daten in einem Datenrahmen an den Eingabe-/Ausgabebus; (ix) Senden einer Abschlussnachricht an das Systemnest (18) durch den Eingabe-/ Ausgabebuscontroller (20); (x) Weiterleiten der Abschlussnachricht an den Ursprungsaggregationspuffer (16) durch das Systemnest (18); (xi) Weiterleiten des Abschlusses an die asynchrone Kern-Nest-Schnittstelle (14) durch den Aggregationspuffer (16); (xii) Speichern des Abschlussstatus in dem Eingabe-/Ausgabe-Statuspuffer (24) für den Eingabe-/Ausgabe-Statuspufferindex durch die asynchrone Kern-Nest-Schnittstelle (14) und Melden des Abschlusses der Operation an die System-Firmware (10); (xiii) Aktualisieren einer Eingabe-/Ausgabe-Statuspufferaufzeichnung mittels des Eingabe-/Ausgabe-Statuspufferindex durch die System-Firmware (10); (xiv) asynchrones Melden von Defekten an das Betriebssystem im Falle eines Fehlers durch die System-Firmware (10).
  16. Verfahren nach einem der Ansprüche 13 bis 15, das des Weiteren die Daten durch die Eingabe-/Ausgabe-Speicheranweisung (30) durch einen asynchronen Übermittlungsmechanismus mit einer Vorzeitiger-Abschluss-Nachricht in mehreren Datenpaketen an den Aggregationspuffer (16) überträgt, wenn die Länge der Daten acht Byte überschreitet
  17. Verfahren nach einem der Ansprüche 13 bis 16, wobei des Weiteren die System-Firmware (10) einen asynchronen Eingabe-/Ausgabe-Treibercode (32) zur Handhabung der Eingabe-/Ausgabe-Speicheranweisung (30) verwendet.
  18. Verfahren nach Anspruch 17, wobei des Weiteren der Kern (12) einen asynchronen Konfigurationscode (34) zur Handhabung von Speicheranforderungen für Statusinformationen des asynchronen Eingabe-/Ausgabe-Treibercodes (32) verwendet.
  19. Verfahren nach einem der Ansprüche 13 bis 18, wobei des Weiteren die asynchrone Kern-Nest-Schnittstelle (14) eine asynchrone Kern-Nest-Schnittstellen-Weiterleitungskomponente (36) verwendet, um die Daten mit lokalem Abschluss weiterzuleiten.
  20. Verfahren nach einem der Ansprüche 13 bis 19, wobei des Weiteren der Aggregationspuffer (16) eine Vorzeitiger-Abschluss-Logik (26) verwendet, um nach dem Senden einer Anforderung eine Frei-zur-Wiederverwendung-Nachricht zu übergeben.
  21. Verfahren nach einem der Ansprüche 13 bis 20, wobei 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-/Ausgabebusadresse oder - einen Eingabe-/Ausgabe-Statuspufferindex aufweist.
  22. Verfahren nach einem der Ansprüche 13 bis 21, wobei der asynchrone Eingabe-/ Ausgabe-Treibercode (32) eine Kopie einer jeden Eingabe-/Ausgabe-Operation in dem Wiederholungspuffer (52) speichert und, wenn der asynchrone Eingabe-/ Ausgabe-Treibercode (32) einen Fehler erkennt, die Steuerung an die Analyse- und Wiederholungslogik (54) überträgt.
  23. Verfahren nach einem der Ansprüche 13 bis 22, wobei die Analyse- und Wiederholungslogik (54) - eine fehlgeschlagene Speicheranweisung (30) feststellt, - eine Eingabe-/Ausgabefunktion dieser Speicheranweisung (30) feststellt, - eine Wiederholung für Fehler mit Wiederholungsaktion einleitet, wenn ein Schwellenwert unterschritten wird, - alle ausstehenden Anforderungen für diese Eingabe-/Ausgabefunktion löscht, wenn in der asynchronen Kern-Nest-Schnittstelle (14) ein Fehler auftritt und der Schwellenwert überschritten wird; die Eingabe-/Ausgabefunktion in einen Fehlerzustand versetzt und dem Betriebssystem einen asynchronen Fehler meldet, - die Quelle des Fehlers feststellt, wenn ein schwerwiegender Fehler auftritt; alles löscht, wenn die Quelle das Systemnest (18) ist; alle beteiligten Eingabe-/ Ausgabefunktionen in einen Fehlerzustand versetzt und dem Betriebssystem einen asynchronen Fehler meldet; alle ausstehenden Anforderungen für an diesen Eingabe-/Ausgabebuscontroller (20) angeschlossene Eingabe-/ Ausgabefunktionen löscht, wenn die Quelle der Eingabe-/ Ausgabebuscontroller (20) ist; alle Eingabe-/Ausgabefunktionen in einen Fehlerzustand versetzt und dem Betriebssystem einen asynchronen Fehler meldet.
  24. Computerprogrammprodukt zur Handhabung einer Eingabe-/Ausgabe-Speicheranweisung (30) an mindestens eine externe Einheit (214) eines Datenverarbeitungssystems (210), wobei das Datenverarbeitungssystem (210) ein Systemnest (10) aufweist, das mit mindestens einem Eingabe-/Ausgabebus (22) durch einen Eingabe-/Ausgabebuscontroller (14) per Datenaustausch verbunden ist, und des Weiteren mindestens eine Datenverarbeitungseinheit (216) aufweist, die einen Kern (12), eine System-Firmware (10) und eine asynchrone Kern-Nest-Schnittstelle (14) aufweist, wobei die Datenverarbeitungseinheit (216) über einen Aggregationspuffer (16) mit dem Systemnest (18) per Datenaustausch verbunden ist, wobei die externe Einheit (214) mit dem Eingabe-/Ausgabebus (22) per Datenaustausch verbunden ist, wobei die asynchrone Kern-Nest-Schnittstelle (14) ein Eingabe-/Ausgabe-Statusarray (44) mit mehreren Eingabe-/Ausgabe-Statuspuffern (24) sowie eine Array-Verwaltungs- und -Zugriffslogik (46) aufweist, wobei die System-Firmware (10) einen Wiederholungspuffer (52) aufweist und der Kern (12) eine Analyse- und Wiederholungslogik (54) aufweist, wobei das Computerprogrammprodukt ein durch einen Computer lesbares Speichermedium mit damit realisierten Programmanweisungen aufweist, wobei die Programmanweisungen durch das Computersystem (212) ausführbar sind, um das Computersystem (212) zu veranlassen, ein Verfahren durchzuführen, welches (i) das Ausgeben der Eingabe-/Ausgabe-Speicheranweisung (30) durch ein auf dem Datenverarbeitungssystem (210) laufendes Betriebssystem umfasst, 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 (216) so konfiguriert ist, dass sie die Eingabe-/Ausgabefunktion durch die in der Eingabe-/Ausgabe-Speicheranweisung (30) angegebene Adresse kennzeichnet; (iii) wobei die Datenverarbeitungseinheit (216) 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 (210) ausgeführt wird; (iv) wobei die Datenverarbeitungseinheit (216) so konfiguriert ist, dass sie die Eingabe-/Ausgabe-Speicheranweisung (30) abschließt, bevor eine Ausführung der Eingabe-/Ausgabe-Speicheranweisung (30) in dem Systemnest (18) abgeschlossen ist; (v) wobei die System-Firmware (10) so konfiguriert ist, 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; (vi) wobei der Analyse- und Wiederholungslogik (54), die separat Fehler erkennt, von der Hardware versichert wird, dass die Speicheranweisung (30) noch nicht an einen Eingabe-/Ausgabebus (22) weitergeleitet wurde; (vii) wobei der Wiederholungspuffer (52) Speicherinformationen für Wiederholungen der Ausführung der Speicheranweisung (30) in System-Hardware/-Firmware (50) festhält; (viii) wobei die Analyse- und Wiederholungslogik (54) Fehler analysiert und auf Wiederholungsmöglichkeit prüft; (ix) wobei die Analyse- und Wiederholungslogik (54) Wiederholungen auslöst.
  25. Datenverarbeitungssystem (210) zur Ausführung eines Datenverarbeitungsprogramms (240), das durch einen Computer lesbare Programmanweisungen aufweist, um ein Verfahren nach einem der Ansprüche 13 bis 23 durchzuführen.
DE112020000146.6T 2019-01-31 2020-01-16 Handhabung einer eingabe-/ausgabe-speicheranweisung Pending DE112020000146T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP19154740 2019-01-31
EP19154740.5 2019-01-31
PCT/IB2020/050339 WO2020157594A1 (en) 2019-01-31 2020-01-16 Handling an input/output store instruction

Publications (1)

Publication Number Publication Date
DE112020000146T5 true DE112020000146T5 (de) 2021-09-09

Family

ID=65275987

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112020000146.6T Pending DE112020000146T5 (de) 2019-01-31 2020-01-16 Handhabung einer eingabe-/ausgabe-speicheranweisung

Country Status (6)

Country Link
US (2) US11068266B2 (de)
JP (1) JP7324282B2 (de)
CN (1) CN113366457B (de)
DE (1) DE112020000146T5 (de)
GB (1) GB2593852B (de)
WO (1) WO2020157594A1 (de)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI773959B (zh) 2019-01-31 2022-08-11 美商萬國商業機器公司 用於處理輸入輸出儲存指令之資料處理系統、方法及電腦程式產品
TWI767175B (zh) 2019-01-31 2022-06-11 美商萬國商業機器公司 用於處理輸入輸出儲存指令之資料處理系統、方法及電腦程式產品
JP7324282B2 (ja) 2019-01-31 2023-08-09 インターナショナル・ビジネス・マシーンズ・コーポレーション 入出力ストア命令をハンドリングする方法、システム、およびプログラム
WO2020156797A1 (en) 2019-01-31 2020-08-06 International Business Machines Corporation Handling an input/output store instruction
EP4127940A1 (de) * 2020-05-08 2023-02-08 Huawei Technologies Co., Ltd. Direkter fernspeicherzugriff mit offsetwerten
CN113741311B (zh) * 2021-09-16 2023-03-10 深圳市软赢科技有限公司 具有子周期高频处理功能的总线控制系统及方法
CN114706820B (zh) * 2022-05-18 2022-09-06 北京卡普拉科技有限公司 异步i/o请求的调度方法、系统、电子设备及介质

Family Cites Families (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2273317B1 (de) 1974-05-28 1976-10-15 Philips Electrologica
US4947316A (en) 1983-12-29 1990-08-07 International Business Machines Corporation Internal bus architecture employing a simplified rapidly executable instruction set
US5131081A (en) 1989-03-23 1992-07-14 North American Philips Corp., Signetics Div. System having a host independent input/output processor for controlling data transfer between a memory and a plurality of i/o controllers
US5317739A (en) 1992-03-30 1994-05-31 International Business Machines Corp. Method and apparatus for coupling data processing systems
US5548735A (en) 1993-09-15 1996-08-20 International Business Machines Corporation System and method for asynchronously processing store instructions to I/O space
US5553302A (en) 1993-12-30 1996-09-03 Unisys Corporation Serial I/O channel having independent and asynchronous facilities with sequence recognition, frame recognition, and frame receiving mechanism for receiving control and user defined data
JPH07302200A (ja) 1994-04-28 1995-11-14 Hewlett Packard Co <Hp> 順次付けロード動作および順序付け記憶動作を強制する命令を有するコンピュータのロード命令方法。
US5548788A (en) 1994-10-27 1996-08-20 Emc Corporation Disk controller having host processor controls the time for transferring data to disk drive by modifying contents of the memory to indicate data is stored in the memory
DE19631289A1 (de) 1996-08-02 1998-02-05 Ibm Verfahren zum Testen eines Protokollumsetzers und Protokollumsetzer
US6072781A (en) 1996-10-22 2000-06-06 International Business Machines Corporation Multi-tasking adapter for parallel network applications
US6085277A (en) 1997-10-15 2000-07-04 International Business Machines Corporation Interrupt and message batching apparatus and method
US6269360B1 (en) * 1998-04-24 2001-07-31 International Business Machines Corporation Optimization of ordered stores on a pipelined bus via self-initiated retry
US6247097B1 (en) 1999-01-22 2001-06-12 International Business Machines Corporation Aligned instruction cache handling of instruction fetches across multiple predicted branch instructions
US6189088B1 (en) 1999-02-03 2001-02-13 International Business Machines Corporation Forwarding stored dara fetched for out-of-order load/read operation to over-taken operation read-accessing same memory location
US6496277B1 (en) 1999-07-23 2002-12-17 Xerox Corporation Data flow control and storage facility for an image reproduction system
US6725348B1 (en) 1999-10-13 2004-04-20 International Business Machines Corporation Data storage device and method for reducing write misses by completing transfer to a dual-port cache before initiating a disk write of the data from the cache
US6490647B1 (en) 2000-04-04 2002-12-03 International Business Machines Corporation Flushing stale data from a PCI bus system read prefetch buffer
US6578102B1 (en) 2000-04-18 2003-06-10 International Business Machines Corporation Tracking and control of prefetch data in a PCI bus system
US7042881B1 (en) 2001-06-29 2006-05-09 Cisco Technology, Inc. Asynchronous transfer mode system and method to verify a connection
US7178019B2 (en) * 2003-11-13 2007-02-13 Hewlett-Packard Development Company, L.P. Networked basic input output system read only memory
US7234004B2 (en) 2003-12-19 2007-06-19 International Business Machines Corporation Method, apparatus and program product for low latency I/O adapter queuing in a computer system
US7200626B1 (en) 2004-01-22 2007-04-03 Unisys Corporation System and method for verification of a quiesced database copy
US7079978B2 (en) 2004-05-24 2006-07-18 International Business Machines Corporation Apparatus, system, and method for abbreviated library calibration
US7467325B2 (en) 2005-02-10 2008-12-16 International Business Machines Corporation Processor instruction retry recovery
US7631097B2 (en) * 2005-07-21 2009-12-08 National Instruments Corporation Method and apparatus for optimizing the responsiveness and throughput of a system performing packetized data transfers using a transfer count mark
US7594144B2 (en) * 2006-08-14 2009-09-22 International Business Machines Corporation Handling fatal computer hardware errors
US7827433B1 (en) 2007-05-16 2010-11-02 Altera Corporation Time-multiplexed routing for reducing pipelining registers
US7870351B2 (en) 2007-11-15 2011-01-11 Micron Technology, Inc. System, apparatus, and method for modifying the order of memory accesses
US7941627B2 (en) 2008-02-01 2011-05-10 International Business Machines Corporation Specialized memory move barrier operations
US7991981B2 (en) 2008-02-01 2011-08-02 International Business Machines Corporation Completion of asynchronous memory move in the presence of a barrier operation
US8867344B2 (en) 2008-07-21 2014-10-21 Mediatek Inc. Methods for bus data transmission and systems utilizing the same
US8566480B2 (en) 2010-06-23 2013-10-22 International Business Machines Corporation Load instruction for communicating with adapters
US8650335B2 (en) * 2010-06-23 2014-02-11 International Business Machines Corporation Measurement facility for adapter functions
JP5680466B2 (ja) 2011-03-29 2015-03-04 三菱重工業株式会社 並列処理システム及び並列処理システムの動作方法
US9652230B2 (en) 2013-10-15 2017-05-16 Mill Computing, Inc. Computer processor employing dedicated hardware mechanism controlling the initialization and invalidation of cache lines
US9477550B2 (en) * 2013-10-24 2016-10-25 Globalfoundries Inc. ECC bypass using low latency CE correction with retry select signal
US20150261535A1 (en) 2014-03-11 2015-09-17 Cavium, Inc. Method and apparatus for low latency exchange of data between a processor and coprocessor
US10120681B2 (en) 2014-03-14 2018-11-06 International Business Machines Corporation Compare and delay instructions
US9588914B2 (en) * 2014-04-09 2017-03-07 International Business Machines Corporation Broadcast and unicast communication between non-coherent processors using coherent address operations
US9460019B2 (en) 2014-06-26 2016-10-04 Intel Corporation Sending packets using optimized PIO write sequences without SFENCEs
US9477481B2 (en) 2014-06-27 2016-10-25 International Business Machines Corporation Accurate tracking of transactional read and write sets with speculation
GB2531011A (en) 2014-10-07 2016-04-13 Ibm Initializing I/O Devices
US9542201B2 (en) * 2015-02-25 2017-01-10 Quanta Computer, Inc. Network bios management
CN105095022B (zh) * 2015-07-31 2018-06-08 北京金山安全软件有限公司 一种数据备份方法及装置
US9971545B1 (en) 2016-03-23 2018-05-15 Crossbar, Inc. Non-volatile write and read cache for storage media
US9983877B2 (en) * 2016-09-29 2018-05-29 Intel Corporation Automatic hardware ZLW insertion for IPU image streams
US10248509B2 (en) 2016-11-16 2019-04-02 International Business Machines Corporation Executing computer instruction including asynchronous operation
PL3812900T3 (pl) 2016-12-31 2024-04-08 Intel Corporation Systemy, sposoby i aparaty do obliczania heterogenicznego
US10452278B2 (en) * 2017-03-24 2019-10-22 Western Digital Technologies, Inc. System and method for adaptive early completion posting using controller memory buffer
US10606591B2 (en) 2017-10-06 2020-03-31 International Business Machines Corporation Handling effective address synonyms in a load-store unit that operates without address translation
JP7324282B2 (ja) 2019-01-31 2023-08-09 インターナショナル・ビジネス・マシーンズ・コーポレーション 入出力ストア命令をハンドリングする方法、システム、およびプログラム
WO2020156797A1 (en) 2019-01-31 2020-08-06 International Business Machines Corporation Handling an input/output store instruction
TWI767175B (zh) 2019-01-31 2022-06-11 美商萬國商業機器公司 用於處理輸入輸出儲存指令之資料處理系統、方法及電腦程式產品
TWI773959B (zh) 2019-01-31 2022-08-11 美商萬國商業機器公司 用於處理輸入輸出儲存指令之資料處理系統、方法及電腦程式產品

Also Published As

Publication number Publication date
CN113366457A (zh) 2021-09-07
US20210311738A1 (en) 2021-10-07
WO2020157594A1 (en) 2020-08-06
US11593107B2 (en) 2023-02-28
GB2593852B (en) 2022-03-09
GB202111895D0 (en) 2021-10-06
CN113366457B (zh) 2024-06-14
JP7324282B2 (ja) 2023-08-09
US11068266B2 (en) 2021-07-20
US20200249944A1 (en) 2020-08-06
JP2022519985A (ja) 2022-03-28
GB2593852A (en) 2021-10-06

Similar Documents

Publication Publication Date Title
DE112020000146T5 (de) Handhabung einer eingabe-/ausgabe-speicheranweisung
DE2854485C2 (de) Datenverarbeitungsanlage
DE69636029T2 (de) Verfahren und Vorrichtung zur Datenübertragung
DE60204687T2 (de) Speicherkopierbefehl mit Angabe von Quelle und Ziel, der in der Speichersteuerung ausgeführt wird
DE3725343C2 (de) Vielzweck-Kanalsteuersystem
DE2856483C2 (de)
DE112012005222T5 (de) Halbleiter-Datenspeicherverwaltung
DE112010003594B4 (de) Vorrichtung, Verfahren und Computerprogramm zum Betreiben eines verteilten Gruppenspeichernetzes für Schreibvorgänge
DE2912738A1 (de) System mit direkter uebertragung zwischen subsystemen
DE4208924A1 (de) Verfahren zur kommunikation zwischen prozessoren und parallelverarbeitungscomputer hierfuer
DE102005006176A1 (de) Transaktionsverarbeitungs-Systeme und -Verfahren, die einen Nicht-Platten-Dauerspeicher verwenden
DE19807872A1 (de) Verfahren zur Verwaltung von Konfigurationsdaten in Datenflußprozessoren sowie Bausteinen mit zwei- oder mehrdimensionalen programmierbaren Zellstruktur (FPGAs, DPGAs, o. dgl.
DE112011102242T5 (de) Vorrichtung zum Verarbeiten einer Stapelarbeitseinheit
DE112005003243T5 (de) System und Verfahren für die Cache-Kohärenz bei einem Cache mit unterschiedlichen Längen für die Cache-Orte
DE1549474C3 (de) Anordnung In einer elektronischen digitalen Datenverarbeitungsanlage zur Ausführung eines ersten Befehls und gleichzeitigen Decodierung eines folgenden Befehls
DE1499206C3 (de) Rechenanlage
DE112010004809B4 (de) Mehrfachgranulare Datenstromverarbeitung
DE102013200030B4 (de) Hash-basiertes verwalten von speicher-ids
DE112014000340T5 (de) Vorablesezugriff auf Daten für einen Chip mit einem übergeordneten Kern und einem Scout-Kern
DE19900251B4 (de) Vorrichtung und Verfahren zum Steuern eines vielseitigen USB-Endpunktkanals
DE102004003102A1 (de) System und Verfahren zum Bestimmen einer Transaktionszeitüberschreitung
DE112019000460T5 (de) Adapter für direkten speicherzugriff
DE112018005359T5 (de) Verhindern eines Beibehaltens von Datensatzsperren durch Transaktionen mit langer Laufzeit
DE3009530A1 (de) Datenverarbeitungssystem
DE10148109B4 (de) Verfahren zum Speichern oder Weiterleiten von Daten

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R084 Declaration of willingness to licence
R085 Willingness to licence withdrawn