DE112022003144T5 - Systemübergreifende verarbeitung und nutzung von pufferzusammenfassungsgruppen - Google Patents

Systemübergreifende verarbeitung und nutzung von pufferzusammenfassungsgruppen Download PDF

Info

Publication number
DE112022003144T5
DE112022003144T5 DE112022003144.1T DE112022003144T DE112022003144T5 DE 112022003144 T5 DE112022003144 T5 DE 112022003144T5 DE 112022003144 T DE112022003144 T DE 112022003144T DE 112022003144 T5 DE112022003144 T5 DE 112022003144T5
Authority
DE
Germany
Prior art keywords
buffer
buffers
group
message
instruction
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
DE112022003144.1T
Other languages
English (en)
Inventor
Peter Dana Driever
David Harold Surman
Peter Kenneth Szwed
Andrew Walter Piechowski
Steven Neil Goss
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 DE112022003144T5 publication Critical patent/DE112022003144T5/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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Computer And Data Communications (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

Es wird auf eine Pufferzusammenfassungsgruppe einer Mehrzahl von Pufferzusammenfassungsgruppen zugegriffen. Die Pufferzusammenfassungsgruppe umfasst einen oder mehrere Zusammenfassungsindikatoren für einen oder mehrere Puffer, die der Pufferzusammenfassungsgruppe zugewiesen sind. Ein Zusammenfassungsindikator des einen oder der mehreren Zusammenfassungsindikatoren der Pufferzusammenfassungsgruppe wird geprüft, um zu ermitteln, ob bei mindestens einem Puffer des einen oder der mehreren Puffer, die der Pufferzusammenfassungsgruppe zugewiesen sind, ein Ereignis aufgetreten ist. Auf der Grundlage des Prüfens, das angibt, dass das Ereignis aufgetreten ist, werden eine oder mehrere Maßnahmen durchgeführt.

Description

  • HINTERGRUND
  • Ein oder mehrere Aspekte betreffen allgemein ein Erleichtern der Verarbeitung innerhalb einer Datenverarbeitungsumgebung und insbesondere ein Verbessern einer derartigen Verarbeitung.
  • Unterschiedliche Datenverarbeitungsumgebungen stellen unterschiedliche Stufen von Zuverlässigkeit, Zugänglichkeit und Service bereit. Ferner können Datenverarbeitungsumgebungen von einem bis zu mehreren Prozessoren, von solchen, die Virtualisierung und/oder Partitionierung unterstützen, bis hin zu solchen reichen, die eine einfache Ausgestaltung aufweisen. Einige Datenverarbeitungsumgebungen mit mehreren Prozessoren und/oder der Unterstützung der Partitionierung möchten möglicherweise Daten gemeinsam mit anderen Einrichtungen zwischen den Prozessoren nutzen.
  • Datenverarbeitungsumgebungen, die möglicherweise Daten gemeinsam mit anderen Einrichtungen nutzen möchten, können eine Kopplungseinrichtung verwenden, um die gemeinsame Datennutzung zu erleichtern. Bei einer Kopplungseinrichtung handelt es sich zum Beispiel um eine gemeinsam genutzte Speichereinheit, die mehrere Speicherstrukturen wie z.B. Cache-, Listen- und/oder Sperrstrukturen umfasst. Es handelt sich um eine gemeinsam nutzbare Einrichtung, die Speicherungs- und Verarbeitungsfunktionen aufweist, die durch Steuercode der Kopplungseinrichtung bereitgestellt werden, der in einer eigenen logischen Partition ausgeführt werden kann, auf die durch andere logische Partitionen und/oder Prozessoren zugegriffen werden kann, die Daten ohne die Befürchtung gemeinsam nutzen möchten, dass die Daten beschädigt sind. Die anderen logischen Partitionen und/oder Prozessoren greifen auf die Kopplungseinrichtung zurück, um zum Beispiel Sicherheits-, schnelle Zwischenspeicherungs- und/oder Sperreinrichtungen bereitzustellen.
  • Da die Kopplungseinrichtung in derartigen Datenverarbeitungsumgebungen eine wichtige Rolle spielt, ist es von Vorteil, die Verarbeitung der Kopplungseinrichtung zu erleichtern und/oder die Datenübertragungs- und Verarbeitungsgeschwindigkeit zwischen den Prozessoren und der Kopplungseinrichtung zu verbessern. Beim Verbessern der Datenübertragung ist es von Vorteil, die Verarbeitung von Puffern zu verbessern, die im Zusammenhang mit der Datenübertragung verwendet werden.
  • KURZDARSTELLUNG
  • Mängel des Stands der Technik werden überwunden und weitere Vorteile bereitgestellt, indem ein Computerprogrammprodukt zum Erleichtern der Verarbeitung innerhalb einer Datenverarbeitungsumgebung bereitgestellt wird. Das Computerprogrammprodukt enthält ein oder mehrere durch einen Computer lesbare Speichermedien und Programmanweisungen, die zusammen auf dem einen oder den mehreren durch einen Computer lesbaren Speichermedien gespeichert sind, um ein Verfahren durchzuführen. Das Verfahren umfasst ein Zugreifen auf eine Pufferzusammenfassungsgruppe einer Mehrzahl von Pufferzusammenfassungsgruppen. Die Pufferzusammenfassungsgruppe umfasst einen oder mehrere Zusammenfassungsindikatoren für einen oder mehrere Puffer, die der Pufferzusammenfassungsgruppe zugewiesen sind. Ein Zusammenfassungsindikator des einen oder der mehreren Zusammenfassungsindikatoren der Pufferzusammenfassungsgruppe wird geprüft, um zu ermitteln, ob bei mindestens einem Puffer des einen oder der mehreren Puffer, die der Pufferzusammenfassungsgruppe zugewiesen sind, ein Ereignis aufgetreten ist. Auf der Grundlage des Prüfens, das angibt, dass das Ereignis aufgetreten ist, werden eine oder mehrere Maßnahmen durchgeführt.
  • Beim Verwenden von Zusammenfassungsindikatoren in einer Pufferzusammenfassungsgruppe zum Prüfen in Bezug auf Arbeit oder Ereignisse erfolgt das Prüfen spezifisch für bestimmte Puffer, wodurch die Verwendung von Systemressourcen verringert, die Verarbeitungsgeschwindigkeit verbessert und die Systemverarbeitung erleichtert werden, unter anderem die Verarbeitung von Kopplungseinrichtungen. Ferner ist das Prüfen eines Indikators schneller und einfacher als das Ausführen einer Anweisung zum Prüfen, ob ein Puffer Arbeit zu erledigen hat.
  • Bei einer Ausführungsform werden der eine oder die mehreren Puffer zu der Pufferzusammenfassungsgruppe zugewiesen. Das Zuweisen des einen oder der mehreren Puffer zu der Pufferzusammenfassungsgruppe umfasst ein Verwenden einer Kanalpuffer-vorbereiten-Anweisung, um den einen oder die mehreren Puffer zu der Pufferzusammenfassungsgruppe zuzuweisen und den einen oder die mehreren Puffer auf den Empfang einer oder mehrerer Nachrichten vorzubereiten.
  • Bei einer Ausführungsform werden der eine oder die mehreren Puffer auf der Grundlage der Ausführung einer Nachricht-senden-Anweisung zu der Pufferzusammenfassungsgruppe zugewiesen. Die Nachricht-senden-Anweisung muss einen Puffer des einen oder der mehreren Puffer verwenden, um eine Nachricht zu senden.
  • Beispielhaft umfasst ein Ereignis den Empfang einer Nachricht in einem Puffer des einen oder der mehreren Puffer, und das Durchführen der einen oder der mehreren Maßnahmen umfasst ein Durchführen einer Verarbeitung, die die in dem Puffer enthaltene Nachricht betrifft.
  • Bei einem Beispiel umfasst ein Ereignis eine Angabe, dass die Verarbeitung von Daten im Zusammenhang mit der Nachricht beendet ist, und das Durchführen der einen oder der mehreren Maßnahmen umfasst ein Senden einer Antwort, die angibt, dass die Daten verarbeitet wurden.
  • Bei einer Ausführungsform ersetzt das Prüfen eine Abfrageoperation über eine Anweisung zum Suchen nach Arbeit in Puffern der Datenverarbeitungsumgebung. Das Entfernen der Abfrageoperation erhöht die Verarbeitungsgeschwindigkeit und verringert die Verwendung von Systemressourcen.
  • Bei einer Ausführungsform wird eine Zuweisung eines ausgewählten Puffers des einen oder der mehreren Puffer dynamisch neu zugewiesen, wobei der ausgewählte Puffer aus einer Pufferzusammenfassungsgruppen der Mehrzahl von Pufferzusammenfassungsgruppen zu einer anderen Pufferzusammenfassungsgruppe der Mehrzahl von Pufferzusammenfassungsgruppen neu zugewiesen wird. Die Neuzuweisung von Puffern zu Pufferzusammenfassungsgruppen stellt Flexibilität bereit und ermöglicht, dass ausgewählte Prozessoren gruppiert werden können, die die Puffer verwenden, wodurch erweiterte Zwischenspeicherungseinrichtungen bereitgestellt werden.
  • Beispielhaft gehören zu dem einen oder den mehreren Zusammenfassungsindikatoren ein Befehl-aktiv-Zusammenfassungsindikator, ein Sekundäres-Eintreffen-Zusammenfassungsindikator, ein Antwort-aktiv-Zusammenfassungsindikator, ein Endgültige-Daten-aktiv-Zusammenfassungsindikator und ein Primäre-Beendigung-Zusammenfassungsindikator.
  • Bei einer Ausführungsform ist ein Pufferzusammenfassungs-Antwortbereich an einem ausgewählten Speicherort definiert, an dem der Pufferzusammenfassungs-Antwortbereich die Mehrzahl von Pufferzusammenfassungsgruppen umfassen muss.
  • Außerdem werden hierin mit Hilfe von Computern realisierte Verfahren und Systeme beansprucht, die einen oder mehrere Aspekte betreffen. Ferner werden hierin Dienste beschrieben und unter Umständen beansprucht, die einen oder mehrere Aspekte betreffen.
  • Gemäß einem weiteren Aspekt stellt die vorliegende Erfindung ein Computersystem zum Erleichtern der Verarbeitung innerhalb einer Datenverarbeitungsvorrichtung bereit, wobei das Computersystem aufweist: einen Speicher; und mindestens einen Prozessor in Datenübertragungsverbindung mit dem Speicher, wobei das Computersystem so konfiguriert ist, dass es ein Verfahren durchführt, wobei das Verfahren umfasst: Zugreifen auf eine Pufferzusammenfassungsgruppe einer Mehrzahl von Pufferzusammenfassungsgruppen, wobei die Pufferzusammenfassungsgruppe einen oder mehrere Zusammenfassungsindikatoren für einen oder mehrere Puffer umfasst, die der Pufferzusammenfassungsgruppe zugewiesen sind; Prüfen eines Zusammenfassungsindikators des einen oder der mehreren Zusammenfassungsindikatoren der Pufferzusammenfassungsgruppe, um zu ermitteln, ob bei mindestens einem Puffer des einen oder der mehreren Puffer, die der Pufferzusammenfassungsgruppe zugewiesen sind, ein Ereignis aufgetreten ist; und Durchführen einer oder mehrerer Maßnahmen auf der Grundlage des Prüfens, das angibt, dass das Ereignis aufgetreten ist.
  • Gemäß einem weiteren Aspekt stellt die vorliegende Erfindung ein mittels Computer realisiertes Verfahren zum Erleichtern der Verarbeitung innerhalb einer Datenverarbeitungsumgebung bereit, wobei das mittels Computer realisierte Verfahren umfasst: Zugreifen auf eine Pufferzusammenfassungsgruppe einer Mehrzahl von Pufferzusammenfassungsgruppen, wobei die Pufferzusammenfassungsgruppe einen oder mehrere Zusammenfassungsindikatoren für einen oder mehrere Puffer umfasst, die der Pufferzusammenfassungsgruppe zugewiesen sind; Prüfen eines Zusammenfassungsindikators des einen oder der mehreren Zusammenfassungsindikatoren der Pufferzusammenfassungsgruppe, um zu ermitteln, ob bei mindestens einem Puffer des einen oder der mehreren Puffer, die der Pufferzusammenfassungsgruppe zugewiesen sind, ein Ereignis aufgetreten ist; und Durchführen einer oder mehrerer Maßnahmen auf der Grundlage des Prüfens, das angibt, dass das Ereignis aufgetreten ist.
  • Weitere Merkmale und Vorteile werden durch die hierin beschriebenen Techniken realisiert. Andere Ausführungsformen und Aspekte werden hierin eingehend beschrieben und als Teil der beanspruchten Aspekte betrachtet.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Ein oder mehrere Aspekte werden in den Ansprüchen, die im Anschluss an die Beschreibung folgen, besonders hervorgehoben und ausdrücklich beansprucht. Das Vorstehende und Aufgaben, Merkmale und Vorteile eines oder mehrerer Aspekte werden anhand der folgenden eingehenden Beschreibung deutlich, die in Verbindung mit den beigefügten Zeichnungen zu lesen ist, in denen:
    • 1A ein Beispiel einer Datenverarbeitungsumgebung bildlich darstellt, in der ein oder mehrere Aspekte der vorliegenden Erfindung enthalten sind und verwendet werden;
    • 1B ein Beispiel weiterer Einzelheiten eines Speichers von 1A gemäß einem oder mehreren Aspekten der vorliegenden Erfindung bildlich darstellt;
    • 1C ein weiteres Beispiel weiterer Einzelheiten eines Speichers von 1A gemäß einem oder mehreren Aspekten der vorliegenden Erfindung bildlich darstellt;
    • 2A ein Beispiel einer Kopplung zwischen Prozessoren und einer Kopplungseinrichtung gemäß einem oder mehreren Aspekten der vorliegenden Erfindung bildlich darstellt;
    • 2B ein Beispiel des Verwendens einer Nachricht-senden-Anweisung zum Austauschen von Daten zwischen einem Prozessor und einer Kopplungseinrichtung gemäß einem oder mehreren Aspekten der vorliegenden Erfindung bildlich darstellt;
    • 3 Beispiele von verwendeten Puffern gemäß einem oder mehreren Aspekten der vorliegenden Erfindung bildlich darstellt;
    • 4A ein Beispiel eines Kanalpufferzusammenfassungs-Antwortbereichs gemäß einem oder mehreren Aspekten der vorliegenden Erfindung bildlich darstellt;
    • 4B ein Beispiel weiterer Einzelheiten einer Pufferzusammenfassungsgruppe des Kanalpufferzusammenfassungs-Antwortbereichs von 4A gemäß einem oder mehreren Aspekten der vorliegenden Erfindung bildlich darstellt;
    • 5A ein Beispiel eines Formats einer Kanalpuffer-vorbereiten-Anweisung gemäß einem oder mehreren Aspekten der vorliegenden Erfindung bildlich darstellt;
    • 5B ein Beispiel eines Formats einer Kanalpuffer-signalisieren-Anweisung gemäß einem oder mehreren Aspekten der vorliegenden Erfindung bildlich darstellt;
    • 5C ein Beispiel eines Formats einer Kanalpuffer-suchen-Anweisung gemäß einem oder mehreren Aspekten der vorliegenden Erfindung bildlich darstellt;
    • 5D ein Beispiel eines Formats einer Kanalpufferdaten-mehrfach-verschieben-Anweisung gemäß einem oder mehreren Aspekten der vorliegenden Erfindung bildlich darstellt;
    • 5E ein Beispiel eines Formats einer Kanalpuffer-testen-Anweisung gemäß einem oder mehreren Aspekten der vorliegenden Erfindung bildlich darstellt;
    • 6A ein Beispiel eines Formats einer Vektor-definieren-Anweisung gemäß einem oder mehreren Aspekten der vorliegenden Erfindung bildlich darstellt;
    • 6B ein Beispiel eines Formats einer Vektoreinträge-testen-Anweisung gemäß einem oder mehreren Aspekten der vorliegenden Erfindung bildlich darstellt;
    • 6C ein Beispiel eines Formats einer Vektoreintrag-festlegen-Anweisung gemäß einem oder mehreren Aspekten der vorliegenden Erfindung bildlich darstellt;
    • 7A ein Beispiel der Befehlsverarbeitung unter Verwendung von primären Empfängerpuffern bildlich darstellt;
    • 7B ein Beispiel der Befehlsverarbeitung unter Verwendung von primären Empfängerpuffern gemäß einem oder mehreren Aspekten der vorliegenden Erfindung bildlich darstellt;
    • die 8A bis 8B ein Beispiel des Erleichterns der Verarbeitung innerhalb einer Datenverarbeitungsumgebung gemäß einem oder mehreren Aspekten der vorliegenden Erfindung bildlich darstellen;
    • 9A ein weiteres Beispiel einer Datenverarbeitungsumgebung bildlich darstellt, in der ein oder mehrere Aspekte der vorliegenden Erfindung enthalten sind und verwendet werden;
    • 9B weitere Einzelheiten des Speichers von 9A gemäß einem oder mehreren Aspekten der vorliegenden Erfindung bildlich darstellt;
    • 10 eine Ausführungsform einer Cloud-Computing-Umgebung gemäß einem oder mehreren Aspekten der vorliegenden Erfindung bildlich darstellt; und
    • 11 ein Beispiel von Abstraktionsmodellschichten gemäß einem oder mehreren Aspekten der vorliegenden Erfindung bildlich darstellt.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Gemäß einem oder mehreren Aspekten der vorliegenden Erfindung wird eine Fähigkeit zum Erleichtern der Verarbeitung innerhalb einer Datenverarbeitungsumgebung bereitgestellt. Beispielhaft wird eine Fähigkeit bereitgestellt, die systemweite Verarbeitung in Datenverarbeitungsumgebungen zu erleichtern, die eine oder mehrere Kopplungseinrichtungen nutzen. Zu der Fähigkeit gehören zum Beispiel Definieren, Verwenden und/oder Verwalten von Pufferzusammenfassungsgruppen, um die Verarbeitung zu erleichtern. Bei einem Aspekt umfasst das Verwalten das Zuweisen von Puffern zu Pufferzusammenfassungsgruppen und/oder das dynamische Anpassen des Zuweisens aus einer oder mehreren Pufferzusammenfassungsgruppen zu einer oder mehreren anderen Pufferzusammenfassungsgruppen neu zugewiesen werden.
  • Die Puffer einer Pufferzusammenfassungsgruppe werden beim Austauschen von Daten zwischen Prozessoren und der Kopplungseinrichtung und/oder zwischen Kopplungseinrichtungen verwendet. Die Kopplungseinrichtung ist mit einer Fähigkeit (z.B. Kopplungseinrichtungssteuercode) ausgestattet, um Puffer in Gruppen zu segmentieren, die verwendet werden können, um Operationen auf bestimmte Gruppen oder Prozessoren zu konzentrieren, da den Prozessoren ausgewählte Puffer zum Verwenden zugewiesen sind. Dies stellt eine höhere Wahrscheinlichkeit bereit, dass zuvor im Cache zwischengespeicherte Informationen für die Prozessoren verfügbar sind und die Menge gemeinsam genutzter Informationen verringert wird. Caches werden bei einem Beispiel durch Prozessoren gemeinsam genutzt, die Pufferzusammenfassungsgruppen gemeinsam nutzen.
  • Bei einem oder mehreren Aspekten werden Zusammenfassungsangaben innerhalb einer Pufferzusammenfassungsgruppe bereitgestellt, um das Vorliegen von Ereignissen wie z.B. Pufferzustandsänderungen anzugeben, die möglicherweise zum Beispiel die Aufmerksamkeit der Kopplungseinrichtung erfordern. Die Pufferzusammenfassungsgruppen sind zum Beispiel an Cache-Leitungsgrenzen bereitgestellt, was z.B. dem Kopplungseinrichtungs-Steuercode die Fähigkeit ermöglicht, Prozessoren, die einzelne Pufferzusammenfassungsgruppen bedienen, auf Prozessoren zu beschränken, die Hardwareeinrichtungen intensiv gemeinsam nutzen, wodurch die Möglichkeit maximiert wird, dass die Daten in lokalen Caches verbleiben, und die Leistung verbessert wird.
  • Bei einem oder mehreren anderen Aspekten werden Zusammenfassungsangaben für registrierte Vektorzustandsänderungen für festgelegte Pufferzusammenfassungsgruppen bereitgestellt. Dies erleichtert zum Beispiel die Verarbeitung zwischen Kopplungseinrichtungen.
  • Eine Ausführungsform einer Datenverarbeitungsumgebung, bei der eine oder mehrere Aspekte der vorliegenden Erfindung einbezogen und verwendet werden, wird unter Bezugnahme auf 1A beschrieben. Beispielhaft beruht die Datenverarbeitungsumgebung auf der z/Architecture®-Anweisungssatzarchitektur, die bei International Business Machines Corporation, Armonk, New York, erhältlich ist. Eine Ausführungsform der z/Architecture-Anweisungssatzarchitektur ist in einer Veröffentlichung mit dem Titel „z/Architecture Principles of Operation“, IBM-Veröffentlichungsnummer SA22-7832-12, dreizehnte Ausgabe, September 2019, beschrieben, die in ihrer Gesamtheit durch Bezugnahme hierin einbezogen ist. Bei der z/Architecture-Anweisungssatzarchitektur handelt es sich jedoch lediglich um eine beispielhafte Architektur; Andere Architekturen und/oder andere Arten von Datenverarbeitungsumgebungen von International Business Machines Corporation und/oder anderer Einheiten können einen oder mehrere Aspekte der vorliegenden Erfindung enthalten und/oder verwenden. z/Architecture und z/IBM sind Marken oder eingetragene Marken von International Business Machines Corporation in mindestens einem juristischen Geltungsbereich.
  • Unter Bezugnahme auf 1A umfasst eine Datenverarbeitungsumgebung 100 zum Beispiel einen zentralen Prozessorkomplex (central processor complex, CPC) 101. Der zentrale Prozessorkomplex 101 enthält eine Mehrzahl von Komponenten wie z.B. einen Speicher 102 (der auch als Systemspeicher, Arbeitsspeicher, Hauptspeicher, Zentralspeicher, Speicher bezeichnet wird), der mit einem oder mehreren Prozessoren wie z.B. einem oder mehreren Universalprozessoren 104 (die auch als Zentraleinheiten (central processing units, CPUs) bezeichnet werden) und mit einem Eingabe/Ausgabe-Teilsystem (E/A-Teilsystem) 108 verbunden ist.
  • Das E/A-Teilsystem 108 kann Teil des zentralen Prozessorkomplexes oder davon getrennt sein. Es leitet den Informationsfluss zwischen dem Hauptspeicher 102 und Eingabe/Ausgabe-Steuereinheiten 110 und Eingabe/Ausgabe-Einheiten (E/A-Einheiten) 112, die mit dem zentralen Prozessorkomplex verbunden sind.
  • Viele Arten von E/A-Einheiten können verwendet werden. Bei einer bestimmten Art handelt es sich um eine Datenspeichereinheit 114. Auf der Datenspeichereinheit 114 können ein oder mehrere Programme 116, eine oder mehrere durch einen Computer lesbare Programmanweisungen 118 und/oder Daten usw. gespeichert sein. Die durch einen Computer lesbaren Programmanweisungen können so konfiguriert sein, dass Funktionen von Ausführungsformen von Aspekten der Erfindung ausgeführt werden.
  • Der zentrale Prozessorkomplex 101 kann wechselbare/nichtwechselbare, flüchtige/nichtflüchtige Computersystemspeichermedien enthalten oder mit diesen verbunden sein. Zum Beispiel kann es ein nichtwechselbares, nichtflüchtiges Magnetmedium (in der Regel als „Festplatte“ bezeichnet), ein Magnetplattenlaufwerk zum Lesen von einer und Schreiben auf eine wechselbare nichtflüchtige Magnetplatte (z.B. eine „Diskette“) und ein optisches Plattenlaufwerk zum Lesen von einer oder Schreiben auf eine wechselbare nichtflüchtige optische Platte wie z.B. ein CD-ROM, DVD-ROM oder andere optische Medien enthalten oder mit diesen verbunden sein. Es sollte sich verstehen, dass andere Hardware- und/oder Softwarekomponenten in Verbindung mit dem zentralen Prozessorkomplex 101 verwendet werden könnten. Zu Beispielen gehören, ohne auf diese beschränkt zu sein: Mikrocode, Millicode, Einheitentreiber, redundante Verarbeitungseinheiten, externe Festplattenlaufwerksanordnungen, RAID-Systeme (RAID = Redundant Array of Independent Disks), Bandlaufwerke, Speichersysteme zur Datenarchivierung usw.
  • Ferner kann der zentrale Prozessorkomplex 101 in Verbindung mit zahlreichen anderen Universal- oder Spezial-Datenverarbeitungssystemumgebungen oder derartigen Konfigurationen betriebsfähig sein. Zu Beispielen allgemein bekannter Datenverarbeitungssysteme, -umgebungen und/oder -konfigurationen, die zur Verwendung in Verbindung mit dem zentralen Prozessorkomplex 101 geeignet sind, gehören, ohne auf diese beschränkt zu sein, Personal-Computer-Systeme (PC-Systeme), Server-Computersysteme, Thin-Clients, Thick-Clients, Hand- oder Notebook-Einheiten, Multiprozessorsysteme, auf Mikroprozessoren beruhende Systeme, Set-Top-Boxen, programmierbare Einheiten der Konsumgüterelektronik, Netzwerk-PCs, Minicomputersysteme, Großrechnersysteme und verteilte Cloud-Computing-Umgebungen, zu denen beliebige der vorstehend erwähnten Systeme oder Einheiten gehören, und dergleichen.
  • Der zentrale Prozessorkomplex 101 stellt bei einer oder mehreren Ausführungsformen eine Unterstützung für logische Partitionierung und/oder Virtualisierung bereit. Bei einer Ausführungsform umfasst der Speicher 102 wie in 1B gezeigt zum Beispiel eine oder mehrere logische Partitionen 120a, 120b; einen Hypervisor 121, der die logischen Partitionen verwaltet, und Prozessor-Firmware 122. Bei einem Beispiel des Hypervisors 121 handelt es sich um den Processor Resource/System Manager (PR/SM™), der bei International Business Machines Corporation, Armonk, New York, erhältlich ist. PR/SM ist eine Marke oder eingetragene Marke von International Business Machines Corporation in mindestens einem juristischen Geltungsbereich. Zwar ist PR/SM beispielhaft bereitgestellt, es können jedoch gemäß einem oder mehreren Aspekten der vorliegenden Erfindung auch andere Hypervisoren verwendet werden.
  • Die Prozessor-Firmware 122 enthält z.B. den Mikrocode oder Millicode eines Prozessors. Sie enthält zum Beispiel die Anweisungen und/oder Datenstrukturen auf der Hardwareebene, die zur Realisierung von Maschinencode auf einer höheren Ebene verwendet werden. Bei einer Ausführungsform umfasst sie zum Beispiel einen proprietären Code, der normalerweise als Mikrocode oder Millicode bereitgestellt ist und vertrauenswürdige Software oder vertrauenswürdigen Mikrocode oder Millicode umfasst, die bzw. der für die zugrunde liegende Hardware spezifisch ist und den Zugriff des Betriebssystems auf die Systemhardware steuert.
  • Jede logische Partition 120a, 120b ist in der Lage, als separates System zu fungieren. Das heißt, jede logische Partition kann unabhängig voneinander zurückgesetzt werden, ein Gastbetriebssystem 123 wie z.B. das Betriebssystem z/OS®, das bei International Business Machines Corporation, Armonk, New York, erhältlich ist, oder anderen Steuercode 124 wie z.B. CFSS (coupling facility control code) ausführen, der ebenfalls bei International Business Machines Corporation, Armonk, New York., erhältlich ist. Eine logische Partition 120a kann mit unterschiedlichen Programmen 125 betrieben werden. Ein Betriebssystem oder ein Anwendungsprogramm, das bzw. die in einer logischen Partition läuft, scheint Zugriff auf ein vollständiges und komplettes System zu haben, aber in Wirklichkeit steht ihm bzw. ihr nur ein Abschnitt davon zur Verfügung. Zwar sind beispielhaft das z/OS-Betriebssystem und der Kopplungseinrichtungs-Steuercode aufgeführt, es können jedoch gemäß einem oder mehreren Aspekten der vorliegenden Erfindung auch andere Betriebssysteme und/oder Steuercodes verwendet werden, die bei International Business Machines Corporation und/oder anderen Unternehmen erhältlich sind. z/OS ist eine Marke oder eingetragene Marke von International Business Machines Corporation in mindestens einem juristischen Geltungsbereich.
  • Im hierin verwendeten Sinne wird eine logische Partition, auf der ein Betriebssystem ausgeführt wird (z.B. logische Partitionen 120a) als logische Partition bezeichnet, und eine logische Partition, auf der Kopplungseinrichtungs-Steuercode ausgeführt wird (z.B. die logische Partition 120b), wird als Kopplungseinrichtung bezeichnet.
  • Der Speicher 102 ist z.B. mit CPUs 104 (1A) verbunden, bei denen es sich um physische Prozessorressourcen handelt, die den logischen Partitionen zugeordnet sein können. Zum Beispiel umfasst eine logische Partition 120a einen oder mehrere logische Prozessoren, von denen jeder für die gesamte physische Prozessorressource 104 oder einen Teil davon steht, die bzw. der der logischen Partition dynamisch zugeordnet sein kann. Die Kopplungseinrichtung 120b kann einen oder mehrere ihr zugeordnete Prozessoren aufweisen.
  • Bei noch einer weiteren Ausführungsform stellt der zentrale Prozessorkomplex eine Unterstützung für virtuelle Maschinen bereit (entweder mit oder ohne Unterstützung der logischen Partitionierung). Wie in 1C gezeigt, umfasst der Speicher 102 des zentralen Prozessorkomplexes 101 zum Beispiel eine oder mehrere virtuelle Maschinen 126, einen Manager für virtuelle Maschinen wie z.B. einen Hypervisor 127, der die virtuellen Maschinen verwaltet, und Prozessor-Firmware 128. Bei einem Beispiel des Hypervisors 127 handelt es sich um den Hypervisor z/VM®, der bei International Business Machines Corporation, Armonk, New York, erhältlich ist. Der Hypervisor wird manchmal auch als Host bezeichnet. z/VM ist eine Marke oder eingetragene Marke von International Business Machines Corporation in mindestens einem juristischen Geltungsbereich.
  • Die Unterstützung des zentralen Prozessorkomplexes für virtuelle Maschinen stellt die Fähigkeit bereit, große Anzahlen von virtuellen Maschinen 126 zu betreiben, die jeweils in der Lage sind, mit unterschiedlichen Programmen 129 zusammenzuarbeiten und ein Gastbetriebssystem 130 wie z.B. das Betriebssystem Linux® auszuführen. Jede virtuelle Maschine 126 ist in der Lage, als separates System zu fungieren. Das heißt, jede virtuelle Maschine kann unabhängig voneinander zurückgesetzt werden, ein Gastbetriebssystem ausführen und mit unterschiedlichen Programmen zusammenarbeiten. Ein Betriebssystem oder ein Anwendungsprogramm, das in einer virtuellen Maschine läuft, scheint Zugriff auf ein vollständiges und komplettes System zu haben, aber in Wirklichkeit steht ihm nur ein Abschnitt davon zur Verfügung. Zwar sind z/VM und Linux beispielhaft aufgeführt, es können jedoch gemäß einem oder mehreren Aspekten der vorliegenden Erfindung auch andere Manager für virtuelle Maschinen und Betriebssysteme verwendet werden. Die eingetragene Marke Linux® wird in Übereinstimmung mit einer Unterlizenz von der Linux Foundation verwendet, dem ausschließlichen Lizenznehmer von Linus Torvalds als weltweitem Eigentümer der Marke.
  • Bei einem oder mehreren Aspekten sind die logischen Partitionen 120a und die Kopplungseinrichtung 120b miteinander verbunden, und dazwischen werden Nachrichten übertragen. Weitere Einzelheiten des Austauschens von Daten zwischen den logischen Partitionen 120a und der Kopplungseinrichtung 120b sind unter Bezugnahme auf 2A beschrieben. Bei einem Beispiel ist jede logische Partition 120a über ein Kanal-Teilsystem 200 (bei dem es sich z.B. um einen Teil des E/A-Teilsystems 108 handeln kann) mit der Kopplungseinrichtung 120b verbunden. Das Kanal-Teilsystem 200 verwendet mindestens einen oder mehrere Kopplungskanäle (die auch als Kanäle, systemübergreifende Kanäle oder Datenübertragungsverbindungen bezeichnet werden) 210, um Daten zwischen den logischen Partitionen und der Kopplungseinrichtung auszutauschen.
  • Beispielhaft tauscht eine logische Partition mit einer Kopplungseinrichtung Daten über die Kopplungskanäle über zum Beispiel ein Nachricht-senden-Protokoll (SMSG-Protokoll, SMSG = Send Message) aus. Ein Beispiel dieser Datenübertragung ist unter Bezugnahme auf 2B beschrieben.
  • Unter Bezugnahme auf 2B wird bei einer Ausführungsform eine Nachricht-senden-Anweisung 220 verwendet, um eine Nachricht von einer logischen Partition 120a an eine Kopplungseinrichtung 120b zusenden. Die Nachricht-senden-Anweisung 220 enthält zum Beispiel ein Operationscode-Feld (Opcode-Feld) 222, das eine Sendeoperation, ein Basisfeld (B2) 224 und ein Verschiebungsfeld (D2) 226 festlegt. Bei einem Beispiel legt der Inhalt eines Registers, das mit dem Feld B2 224 bezeichnet ist, der zu dem Wert in dem Feld D2 226 hinzugefügt wurde, eine Adresse fest, die den Speicherort eines Nachrichtenoperationsblocks 232 angibt, der beim Senden einer Nachricht verwendet werden muss. Die Nachricht-senden-Anweisung 220 verwendet außerdem ein inbegriffenes Register, um zum Beispiel einen Unterkanal 234 zu bezeichnen, der sich in dem Kanal-Teilsystem 200 befindet. Unterkanäle sind für Einheiten bestimmt, auf die das Kanal-Teilsystem zugreifen kann, und stellen zum Beispiel Speicher zum Aufnehmen von Informationen über die Einheiten bereit. Unterkanäle werden beim Austauschen von Daten zwischen einem Prozessor und einer Kopplungseinrichtung und/oder zwischen Kopplungseinrichtungen verwendet.
  • Ein Beispiel des Nachrichtenoperationsblocks 232 für die Nachricht-senden-Anweisung wird nachstehend beschrieben. Zwar werden verschiedene Felder beschrieben, jedoch kann ein Nachrichtenoperationsblock zusätzliche, weniger und oder andere Felder enthalten. Ferner ist ein Feld zwar auf einen bestimmten Wert gesetzt, es kann jedoch auch auf einen anderen Wert gesetzt werden. Darüber hinaus kann ein hierin beschriebenes Feld eine Größe aufweisen, bei anderen Ausführungsformen kann es jedoch andere Größen aufweisen. Andere Variationen sind möglich.
  • Bei einem Beispiel enthält der Nachrichtenoperationsblock 232 zum Beispiel:
  • Asynchroner Betrieb (A) 236: Wenn dieses Feld auf eins gesetzt ist, gibt es die asynchrone Ausführung von „Nachricht senden“ an;
  • Nachrichtenbefehlsblockadresse (MCB-Adresse, MCB = messge command block) 238: Dieses Feld zeigt auf ein Paar aus Nachrichtenbefehlsblock (MCB) 264/Nachrichtenantwortblock (MRB, MRB = message response block) 266. Hierbei handelt es sich zum Beispiel um 256-Byte-Puffer, die sich z.B. im Hauptspeicher befinden. Der Nachrichtenbefehlsblock 264 enthält einen oder mehrere Parameter, die an die Kopplungseinrichtung gesendet werden, und wenn eine Antwort zurückkommt, wird sie direkt im Nachrichtenantwortblock 266 gespeichert;
  • Nachrichtenpufferadresslisten-Adresse (MBAL-Adresse, MBAL = message buffer address list) 240: Dieses Feld zeigt auf eine Nachrichtenpufferadressliste 268. Bei der MBAL-Liste handelt es sich um eine Liste von z.B. 1 bis 16 mit variabler Länge. Sie enthält ein oder mehrere Nachrichtenpufferadresswörter (MBAWs, MBAW = message buffer address words) 270, die einen oder mehrere Nachrichtenpuffer (hierin auch als Puffer bezeichnet) 272 bezeichnen. Bei den Puffern kann es sich um eine Quelle für Schreiboperationen auf eine Kopplungseinrichtung 120b oder um ein Ziel von Leseoperationen von der Kopplungseinrichtung handeln;
  • MBAL-Länge 242: Dieses Feld gibt die Länge der MBAL-Liste an. Nicht alle Befehle müssen eine Nachrichtenpufferadressliste aufweisen, und daher könnte eine Länge null betragen;
  • V-Pufferzusammenfassungsgruppe-gültig-Indikator (V-Indikator) 244: Wenn dieses Feld gesetzt ist (z.B. auf eins), gibt es an, dass ein Wert einer Pufferzusammenfassungsgruppe (buffer summary group, BSG) gültig ist. Wenn dieser Indikator gesetzt ist, muss bei einem Beispiel eine Angabe des asynchronen Betriebs des Nachrichtenoperationsblocks gesetzt werden (z.B. auf eins); und
  • Pufferzusammenfassungsgruppe 246: Dieses Feld stellt einen vorzeichenlosen binären Ganzzahlwert dar, der eine Pufferzusammenfassungsgruppe angibt, die Zusammenfassungsangaben enthält, die angeben, dass die Nachrichtenantwortblock-Antwort auf diese Nachricht-senden-Operation angekommen ist.
  • Bei einer Ausführungsform werden, wenn „Nachricht senden“ ausgeführt wird, Parameter aus dem Nachrichtenoperationsblock an die CPU oder an das Kanal-Teilsystem übergeben, die anfordern, dass eine Sendefunktion mit der Kopplungseinrichtung durchgeführt wird, die einem angegebenen Unterkanal des Kanal-Teilsystems zugehörig ist. Die Sendefunktion wird synchron oder auch synchron zu „Nachricht senden“ durchgeführt.
  • Die Sendefunktion wird ausgeführt, indem Informationen in dem Unterkanal verwendet werden, um einen Pfad zu der Kopplungseinrichtung zu finden. Unter Verwendung dieses Pfads wird die Nachrichtenoperation zu der Kopplungseinrichtung weitergeleitet. Zum Beispiel wird die Ausführung der Nachrichtenoperation erreicht, indem Befehlsinformationen an die Kopplungseinrichtung übergeben werden, der Befehl decodiert und ausgeführt wird, Antwortinformationen formuliert werden, die das Ergebnis angeben, und die Antwortinformationen in dem Nachrichtenantwortblock gespeichert werden.
  • Bei einer Ausführungsform ist die Nachricht-senden-Anweisung Teil einer Nachrichteneinrichtung, bei der es sich um ein Systemkonstrukt handelt, das einen Mechanismus zum Übermitteln von Informationen zwischen Systemen (physischen oder logischen) bereitstellt. Die Nachrichteneinrichtung verwendet das Konstrukt eines Puffers (z.B. eines Kanalpuffers, eines Nachrichtenpuffers), um Informationen zwischen Systemen zu verschieben. Ein Puffer stellt eine Einrichtung bereit, die Informationen, die übergeben werden, sowie Informationen in Bezug auf den Zustand der Operationen enthält, die zum Übergeben von Informationen zwischen Systemen verwendet werden. Die Nachrichteneinrichtung stellt mehrere Puffer bereit, die Datenübertragungskanälen (z.B. Kopplungskanälen) zugewiesen werden.
  • Puffer weisen eine vordefinierte Eigenschaft auf, in der Lage zu sein, entweder eine Übertragung von Informationen zu verursachen oder die Anforderung zum Verarbeiten der Informationen zu empfangen, die verursacht wurde. Zum Beispiel gehören, wie in 3 gezeigt, zu beispielhaften Puffern Verursacherpuffer 310, Empfängerpuffer 320, primäre Puffer 330 und sekundäre Puffer 340, von denen jeder hierin beschrieben ist. Verursacherpuffer 310 verursachen Operationen und können Befehle bereitstellen und Daten senden/empfangen. Empfängerpuffer 320 empfangen Informationen und ermöglichen, dass Befehle verarbeitet werden, Daten empfangen/gesendet werden und Antwortinformationen zurück an Verursacherpuffer gesendet werden. Verursacher- und Empfängerpuffer sind 1 zu 1 in einem logisch verbundenen Paar zugewiesen. Bei primären Puffern 330 und sekundären Puffern 340 handelt es sich um Puffer, die bei der Datenübertragung zwischen Prozessoren und Kopplungseinrichtungen und z.B. bei der Datenübertragung von Kopplungseinrichtung zu Kopplungseinrichtung verwendet werden.
  • Verursacherpuffer haben beispielhaft die folgenden Betriebszustände: Leerlaufverfügbar, um einen Befehl zum Senden an einen Empfängerpuffer aufzunehmen; belegt - Operation im Gange befindliche; und Befehlsantwort empfangen und erkannt. Empfängerpuffer haben beispielhaft die folgenden Betriebszustände: Leerlauf- keine Befehlsoperation in Bearbeitung; Befehl empfangen und erkannt; Datenübertragung beendet; und Antwortinformationen an Verursacher zurückgegeben.
  • Gemäß einem oder mehreren Aspekten der vorliegenden Erfindung kann ein Puffer einer bestimmten Pufferzusammenfassungsgruppe zugewiesen sein. Bei einem Beispiel ist die Konfiguration (z.B. Datenverarbeitungsumgebung, zentraler Prozessorkomplex usw.) so konfiguriert, dass sie eine Mehrzahl von Pufferzusammenfassungsgruppen enthält und einer oder mehreren Pufferzusammenfassungsgruppen ein oder mehrere Puffer zugewiesen sind. Es ist modellabhängig, wie viele Pufferzusammenfassungsgruppen unterstützt werden, aber bei einem Beispiel liegen jedoch bis zu 32 Pufferzusammenfassungsgruppen vor. Bei anderen Ausführungsformen können zusätzliche oder weniger Pufferzusammenfassungsgruppen vorliegen. Die Pufferzusammenfassungsgruppen sind an einem ausgewählten Speicherort zugeordnet, der bei einem Beispiel durch die Kopplungseinrichtung definiert ist und durch diese genutzt wird. Zum Beispiel sind, wie in 4A gezeigt, die Pufferzusammenfassungsgruppen in einem Speicherbereich enthalten, der hierin als Kanalpufferzusammenfassungs-Antwortbereich 400 bezeichnet wird, und jede Pufferzusammenfassungsgruppe 402 befindet sich an einem ausgewählten Offset 404 in dem Bereich. Bei einem Beispiel weist jede Pufferzusammenfassungsgruppe eine Größe von 256 Bytes (z.B. eine Cache-Zeile) auf; bei anderen Ausführungsformen kann sie jedoch andere Größen aufweisen.
  • Bei einem Beispiel handelt es sich bei dem Kanalpufferzusammenfassungs-Antwortbereich 400 um einen Speicherblock, dessen Startadresse z.B. durch eine Kanalpuffer-vorbereiten-Anweisung definiert ist. Der Bereich enthält zum Beispiel 32 aufeinanderfolgende Sätze von 256-Byte-Bereichen, die mit 0 bis 31 nummeriert sind. Jeder 256-Byte-Bereich wird als Pufferzusammenfassungsgruppe bezeichnet. Jede Gruppe enthält zum Beispiel eine Mehrzahl von (z.B. fünf) Zusammenfassungsdoppelwörtern, die hierin als Indikatoren bezeichnet werden.
  • Jeder Indikator enthält zum Beispiel eine Ein-Bit-Angabe (z.B. Bit 0 des Doppelworts), die angibt, ob ein oder mehrere zugehörige Ereignisse aufgetreten sind, die zugewiesen wurden, um in dieser bestimmten Pufferzusammenfassungsgruppe angegeben zu werden. Bei einem Beispiel werden Indikatoren durch Hardware gesetzt und durch die Kopplungseinrichtung zurückgesetzt. Bei anderen Ausführungsformen können sie durch andere Entitäten gesetzt und/oder zurückgesetzt werden.
  • Beispielhaft enthalten, wie in 4B gezeigt, die Indikatoren einer Pufferzusammenfassungsgruppe 402 zum Beispiel:
  • Befehl-aktiv-Zusammenfassung 410: Dieser Indikator (z.B. Bit 0 von Wort 0) der Pufferzusammenfassungsgruppe wird durch das System (z.B. die Prozessorarchitektur des zentralen Prozessorkomplexes) gesetzt, wenn ein MCB bei einem primären Puffer des Empfängers eintrifft, der zum Zeitpunkt der Kanalpuffer-vorbereiten-Anweisung bei der bestimmten Zusammenfassungsgruppe registriert wurde.
  • Sekundäres-Eintreffen-Zusammenfassung 412: Dieser Indikator (z.B. Bit 0 von Wort 2) der Pufferzusammenfassungsgruppe wird durch das System gesetzt, wenn ein MCB bei einem sekundären Puffer des Empfängers eintrifft, der bei der jeweiligen Zusammenfassungsgruppe und dem bestimmten Byte des Vektors registriert wurde, der das zu setzende Vektorbit enthält. Diese Registrierung erfolgt z.B. zum Zeitpunkt der Vektoreinträge-testen-Anweisung.
  • Antwort-aktiv-Zusammenfassung 414: Dieser Indikator (z.B. Bit 0 von Wort 4) der Pufferzusammenfassungsgruppe wird durch das System gesetzt, wenn ein MRB eintrifft oder eine Statusbedingung bei einem sekundären Puffer des Verursachers erkannt wird, der bei der bestimmten Zusammenfassungsgruppe z.B. zum Zeitpunkt der Kanalpuffer-signalisieren-Anweisung registriert wurde.
  • Endgültige-Daten-aktiv/Daten-bereit-Zusammenfassung 416: Dieser Indikator (z.B. Bit 0 von Wort 6) der Pufferzusammenfassungsgruppe wird durch das System gesetzt, wenn beispielhaft „Daten aktiv“ gesetzt ist oder „Daten bereit“ gesetzt ist oder eine Statusbedingung bei einem primären Empfängerpuffer erkannt wird, der bei der bestimmten Zusammenfassungsgruppe zum Zeitpunkt der Kanalpuffer-vorbereiten-Anweisung registriert wurde.
  • Bei einem Beispiel führen Kanäle, die die Daten-aktiv-Angabe bei Schreibbefehlen in Bezug auf die Kopplungseinrichtung verwenden, die Kanalpufferdaten-mehrfach-verschieben-Anweisung synchron aus und geben daher die Endgültige-Daten-aktiv-Angabe nur in dem Pufferstatusbereich eines Kanalpufferoperationsblocks (channel buffer operation block, CBOB) und nicht in dem Kanalpufferzusammenfassungs-Antwortbereich an.
  • Ein Kanalpufferoperationsblock befindet sich zum Beispiel im Hauptspeicher und wird durch eine Kanalpuffer-vorbereiten-Anweisung gestellt. Das Kanal-Teilsystem speichert in die Felder des Kanalpufferoperationsblocks, während Nachrichtenprozessorfunktionen durchgeführt werden, wenn der Kanalpuffer vorbereitet wird. Das Programm setzt Felder innerhalb des Kanalpufferoperationsblocks und außerhalb des Nachverfolgungseintrags durch z.B. eine Kanalpuffer-testen-Anweisung zurück.
  • Bei einem Beispiel liegt ein Kanalpufferoperationsblockpaar vor, das ein Gerade-ungerade-Paar von Kanalpufferoperationsblöcken enthält, und wenn eine Empfangsfunktion oder eine sekundäre Sendefunktion für einen Kanalpuffer aktiv ist, speichert die systemübergreifende Kanalhardware in das Kanalpufferoperationspaar und ruft aus diesem ab.
  • Jeder Kanalpufferoperationsblock des Paars enthält z.B. einen Nachrichtenbefehlsblock, einen Nachrichtenantwortblock, einen Befehl-aktiv- oder einen Antwort-aktiv-Indikator, einen Daten-aktiv-Indikator, eine Operations-ID, ein Anforderungsfeld, ein Statusfeld und einen Nachverfolgungseintrag. Bei anderen Ausführungsformen kann ein Kanalpufferoperationsblock zusätzliche, weniger und/oder andere Informationen enthalten.
  • Primäre-Beendigung-Zusammenfassung 418: Dieser Indikator (z.B. Bit 0 von Wort 8) der Pufferzusammenfassungsgruppe wird durch das System gesetzt, wenn ein MRB eintrifft oder eine Statusbedingung bei einem primären Puffer des Verursachers erkannt wird, der bei der bestimmten Zusammenfassungsgruppe z.B. zum Zeitpunkt der Nachricht-senden-Anweisung registriert wurde.
  • Zusätzliche, weniger und/oder andere Indikatoren können in einer Pufferzusammenfassungsgruppe enthalten sein.
  • Wie hierin angegeben, werden verschiedene Systemanweisungen verwendet, um das Definieren, Registrieren und/oder Verwenden der Pufferzusammenfassungsgruppen und/oder Puffer zu erleichtern, die diesen zugewiesen sind. Beispielhaft wird eine Kanalpuffer-vorbereiten-Anweisung verwendet, um auf Konfigurationsebene eine Definition einer Adresse bereitzustellen, sodass sie den Kanalpufferzusammenfassungs-Antwortbereich enthält, und eine Vorbereitung einzelner Kanalpuffer mit einer bestimmten Pufferzusammenfassungsgruppe innerhalb des Kanalpufferzusammenfassungs-Antwortbereichs bereitzustellen; eine Nachricht-senden-Anweisung (SMSG-Anweisung) wird verwendet, um eine Angabe bereitzustellen, dass eine Pufferzusammenfassungsgruppe verwendet wird, und um die spezifische Gruppennummer bereitzustellen; eine Kanalpuffer-signalisieren-Anweisung (SCB-Anweisung, SCB = Signal Channel Buffer) wird verwendet, um eine Angabe bereitzustellen, dass eine Pufferzusammenfassungsgruppe verwendet wird, und um die spezifische Gruppennummer für die Beendigungszusammenfassung (Verursacher) bereitzustellen; eine Kanalpuffer-suchen-Anweisung (LCB-Anweisung, LCB = Locate Channel Buffer) wird verwendet, um zu erkennen, dass ein Befehl in einem Puffer (z.B. einem Empfängerpuffer) empfangen wurde, um die Antwort von „Arbeit gefunden“ oder „Keine Arbeit gefunden“ auf bestimmte Gruppen zu begrenzen und für alle Gruppen anzugeben, sofern ausgewählt; eine Kanalpufferdaten-mehrfach-verschieben-Anweisung (MCBDM-Anweisung) wird verwendet, um sofort verfügbare Daten oder eine Notwendigkeit anzugeben, die Anweisung nach Eintreffen einer Zusammenfassung erneut auszuführen; eine Vektor-definieren-Anweisung wird verwendet, um einen Kopplungslisten-Benachrichtigungsvektor zu definieren; eine Vektoreinträge-testen-Anweisung wird verwendet, um eine Angabe einer Zusammenfassung anzufordern, wenn das bestimmte Vektorbit aktiv wird, bei einer Pufferzusammenfassungsgruppe zu registrieren; und eine Vektoreintrag-setzen-Anweisung wird verwendet, um Vektoren für Angaben von Zustandsänderungen systemübergreifend zu definieren und bereitzustellen und um ein Zurücksetzen der Registrierung einer Pufferzusammenfassungsgruppe (Registrierung aufheben) anzufordern.
  • Eine oder mehrere der Anweisungen (z.B. Kanalpuffer vorbereiten, Kanalpuffer signalisieren, Kanalpuffer suchen, Kanalpuffer mehrfach verschieben und Kanalpuffer testen) verwenden Inhalte eines ausgewählten Registers wie z.B. eines allgemeinen Registers 1 als inbegriffenen Operanden. Bei einem Beispiel werden ausgewählte Bits (z.B. Bit 0 und Bits 27 bis 31) verwendet, um die Verwendung einer Pufferzusammenfassungsgruppe anzugeben, die mit der durch die Anweisung aufgerufenen Maßnahme in Zusammenhang steht. Die Verwendung dieser Bits wird gegebenenfalls unter Bezugnahme auf jede der nachstehenden Anweisungen beschrieben. Ferner enthalten bei einem Beispiel ausgewählte Bits (z.B. die Bits 32 bis 63) des allgemeinen Registers 1 ein Kanalpuffer-Token oder ein Steuerprogramm-Token. Ein Kanalpuffer-Token wird dem Steuerprogramm bereitgestellt, und ein Steuerprogramm-Token wird durch das Steuerprogramm bereitgestellt, wenn ein Kanalpuffer vorbereitet ist und besteht, bis der Kanalpuffer anschließend vorbereitet ist, nachdem die Vorbereitung aufgehoben wurde oder ein System-Reset durchgeführt wird.
  • Ein Beispiel eines allgemeinen Registers 1, das ein Kanalpuffer-Token enthält, wird nachstehend beschrieben. Beispielhaft enthält es zum Beispiel:
  • Gültigkeit (validity, V): Wenn dieses Feld (z.B. Bit 0 des allgemeinen Registers 1) auf eins für Anweisungen gesetzt ist, die z.B. die Bits 0 bis 31 des allgemeinen Registers 1 nicht ignorieren, ist die angegebene Pufferzusammenfassungsgruppe gültig. Anderenfalls werden die Bits 1 bis 31 ignoriert oder reserviert.
  • Pufferzusammenfassungsgruppe (BSG): Dieses Feld (z.B. die Bits 27 bis 31 des allgemeinen Registers 1) stellt eine vorzeichenlose binäre Ganzzahl dar, die die Nummer der Pufferzusammenfassungsgruppe angibt, die für die Anweisungsoperation verwendet werden muss. Wenn der Gültigkeitsindikator (V) z.B. 0 ist, wird der Wert in diesem Feld ignoriert. Ein gültiger Wert in diesem Feld ist z.B. 0 bis 30; Bit 31 und damit die zugehörige Pufferzusammenfassungsgruppe sind bei einem Beispiel reserviert.
  • Jede der hierin beschriebenen Anweisungen kann ein oder mehrere Felder enthalten, und jedes Feld kann eine bestimmte Größe und/oder Position aufweisen (z.B. bestimmte Bits des Anweisungsformats). Die hierin bereitgestellten Felder, Größen und/oder Speicherorte sind jedoch lediglich Beispiele; zusätzliche, weniger und/oder andere Felder, Größen und/oder Speicherorte können verwendet werden. Ferner kann jedes Feld auf einen bestimmten Wer gesetzt werden; jedoch können zusätzliche, weniger und/oder andere Werte verwendet werden. Zwar sind verschiedene Bedingungen und/oder Verarbeitungen beschrieben, es können jedoch zusätzliche, weniger und/oder andere Bedingungen und/oder Verarbeitungen zutreffen. Viele Variationen sind möglich.
  • Bei einem Beispiel enthält eine Kanalpuffer-vorbereiten-Anweisung 500 unter Bezugnahme auf 5A ein Operationscodefeld 502, um eine Kanalpuffer-vorbereiten-Operation, ein Basisfeld (B2) 504 und ein Verschiebungsfeld (D2) 506 anzugeben. Bei einem Beispiel legt der Inhalt eines Registers, das mit dem Feld B2 504 bezeichnet ist, der zu dem Wert in dem Feld D2 506 hinzugefügt wurde, eine zweite Operandenadresse fest, die wie nachstehend beschrieben verwendet wird. Bei einem Beispiel wird die Kanalpuffer-vorbereiten-Anweisung durch die Kopplungseinrichtung ausgeführt.
  • Während des Betriebs führt die Kanalpuffer-vorbereiten-Anweisung eine oder mehrere der folgenden Operationen auf der Grundlage eines Anforderungsfelds in einem bezeichneten Kanalpufferoperationsblock durch:
  • Die Vorbereiten-Funktion wird synchron zur Ausführung der Anweisung durchgeführt. Infolgedessen beeinflusst das Programm für den Kanalpuffer bestimmte Aspekte der Verarbeitung, die eine sekundäre Sende- oder Empfangsfunktion betrifft.
  • Ein Nachverfolgungseintrag in dem Kanalpuffer wird auf einen Kanalnachverfolgungsbereich kopiert.
  • Die Multiprogrammierungs-Anforderungsebene (multiprogramming request level, MPRL) für die Verbindung wird in dem Kanalpufferoperationsblock gespeichert.
  • Die zweite Operandenadresse bezeichnet einen Nachrichtenoperationsblock. Es ist nicht definiert, ob die Adresse real oder absolut ist.
  • Wenn der sich ergebende Bedingungscode z.B. null ist, wird ein Kanalpuffer-Token in ausgewählten Bits (z.B. 32 bis 63) eines ausgewählten Registers, z.B. des allgemeinen Registers 1, zurückgegeben.
  • Bei einem Beispiel ist ein Nachrichtenoperationsblock für eine Kanalpuffer-vorbereiten-Anweisung z.B. 64 Bytes lang und enthält bei einem Beispiel Folgendes:
  • Pufferzusammenfassungsbereich definieren (Define Buffer-Summary Area, DBS):
    • Wenn dieses Feld (z.B. Bit 6 von Wort 0) z.B. eins ist, wird der Kanalpufferzusammenfassungs-Antwortbereich für die Konfiguration unter Verwendung der nachstehend beschriebenen Adresse des Kanalpufferzusammenfassungs-Antwortbereichs definiert. Diese Operation muss vor einer beliebigen Kanalpuffer-vorbereiten-Anweisung durchgeführt werden, was dazu führt, dass der Bedingungscode 0 ausgeführt werden kann.
  • Empfangsfunktionstyp (R): Wenn das R-Bit (z.B. Bit 7 von Wort 0) eins ist, ist der Kanalpuffer zum Teilnehmen an Empfangsfunktionen vorbereitet. Wenn das R-Bit null ist, ist der Kanalpuffer zum Teilnehmen an sekundären Sendefunktionen vorbereitet.
  • Kanal-Teilsystemabbildkennung (Channel Subsystem Image Identifier, CSSID):
    • Dieses Feld (z.B. die Bits 8 bis 15 von Wort 1) enthält eine Kanal-Teilsystemabbildkennung.
  • Kanalpfadkennung (Channel Path Identifier, CHPID): Dieses Feld (z.B. die Bits 16 bis 23 von Wort 1) enthält eine Kanalpfadkennung.
  • Kanalpuffernummer (N): Dieses Feld (z.B. die Bits 24 bis 31 von Wort 1) enthält eine Kanalpuffernummer.
  • Kanalpufferoperationsblock-Adresse: Dieses Feld (z.B. die Bits 0 bis 63 der Wörter 2 bis 3) bezeichnet einen Speicherort im Speicher eines Kanalpufferoperationsblockpaars. Es ist nicht definiert, ob die Adresse real oder absolut ist.
  • Steuerprogramm-Token: Wenn das R-Bit eins ist, enthält dieses Feld (z.B. die Bits 0 bis 3 von Wort 6) ein Steuerprogramm-Token, das zurückgegeben werden kann, wenn eine Kanalpuffer-suchen-Anweisung zum Beispiel mit einem Bedingungscode 0 beendet wird. Bei einem Beispiel ist ein Steuerprogramm-Token von null ungültig. Wenn das R-Bit null ist, ist dieses Feld reserviert.
  • Pufferzusammenfassungsgruppe: Wenn das R-Bit eins ist, enthält dieses Feld (z.B. die Bits 27 bis 31 von Wort 7) eine vorzeichenlose binäre Ganzzahl (z.B. 5 Bits), die den Gruppen-Offset in den Basis-Kanalpufferzusammenfassungs-Antwortbereich darstellt. Wenn ein MCB für diesen Puffer eintrifft, wird das Befehl-aktiv-Zusammenfassungsbit für die angegebene Pufferzusammenfassungsgruppe auf z.B. eins gesetzt, und wenn die Bedingungen an dem Puffer dazu führen, dass „Endgültige Daten aktiv/Daten bereit“ gesetzt werden, wird das zugehörige Bit für die angegebene Pufferzusammenfassungsgruppe auf eins gesetzt. Wenn das R-Bit null ist, ist dieses Feld reserviert.
  • Adresse des Kanalpufferzusammenfassungs-Antwortbereichs (Channel Buffer Summary Response Area Address, CBS@): Wenn das DBS-Bit z.B. eins ist, enthält dieses Feld (z.B. die Bits 0 bis 63 der Wörter 8 bis 9) bei einem Beispiel die Basisadresse für den Kanalpufferzusammenfassungs-Antwortbereich für die Konfiguration. Diese Adresse muss sich z.B. an einer 256-Byte-Grenze befinden. Vor der ersten Ausführung einer Vorbereiten-Anweisung, bei der das DBS-Bit auf z.B. eins gesetzt ist, ist kein Kanalpufferzusammenfassungs-Antwortbereich verfügbar. Sobald das Einrichten der Adresse des Kanalpufferzusammenfassungs-Antwortbereichs erfolgreich ausgeführt wurde, darf der Wert erst geändert werden, wenn ein System-Reset durchgeführt wird. Wenn das R-Bit null ist oder das DBS-Bit null ist, ist dieses Feld reserviert.
  • Während des Betriebs ist ein Bedingungscode gesetzt, z.B. 3, und es wird keine andere Maßnahme ergriffen, wenn eine beliebige der folgenden Bedingungen zutrifft:
  • Der Kanalpuffer ist nicht in dem Kanal-Teilsystem bereitgestellt.
  • Der Kanalpuffer ist keinem Kanal einer Kopplungseinrichtung zugehörig.
  • Der Kanalpuffer steht nicht zur Auswahl zur Verfügung.
  • Beispielhaft wird der Bedingungscode 2 gesetzt, und es wird keine andere Maßnahme ergriffen, wenn die Steuerelemente für den bezeichneten Kanalpuffer an einer anderen Systemaktivität beteiligt sind.
  • Bit 0 des Anforderungsfelds in dem bezeichneten Kanalpufferoperationsblock ist das Nachverfolgungsanforderungsbit. Wenn das Nachverfolgungsanforderungsbit eins ist, wird eine Nachverfolgungsanforderung erkannt, und der Nachverfolgungseintrag in dem Kanalpuffer wird in den Kanalnachverfolgungsbereich kopiert.
  • Bit 1 des Anforderungsfelds in dem bezeichneten Kanalpufferoperationsblock ist das MPRL-Anforderungsbit. Wenn das MPRL-Anforderungsbit eins ist, wird die effektive Nachrichtenpfad-Anforderungsebene für die Verbindung in dem MPRL-Bereich des Anforderungsfelds abgelegt (z.B. die Bits 48 bis 63 des Anforderungsfelds). Die effektive MPRL ist die niedrigere der Nummer von Puffern an dem Nachrichteneinrichtungsende und dem Kopplungseinrichtungsende der Verbindung. Wenn die Initialisierung der Verbindung nicht beendet wurde, wird die MPRL als null gespeichert.
  • Wenn eines des Nachverfolgungsanforderungsbits oder des MPRL-Anforderungsbits oder beide als eins gespeichert werden, wird die Anweisung durch Setzen des Bedingungscodes auf z.B. 1 beendet.
  • Wenn sowohl das Nachverfolgungsanforderungsbit als auch das MPRL-Anforderungsbit zum Beispiel null sind, wird die Vorbereiten-Funktion durchgeführt, wie nachstehend beschrieben.
  • Vorbereiten-Funktion - wenn die Kanalpuffernummer gerade ist und sich der Kanalpuffer im Leerlauf befindet, wird ein gerader Kanalpufferoperationsblock (CBOB) vorbereitet. Wenn die Kanalpuffernummer ungerade ist und sich der Kanalpuffer im Leerlauf befindet, wird ein ungerader Kanalpufferoperationsblock vorbereitet. Zusätzliche Anforderungen an die Vorbereitung eines CBOB sind bei einem Beispiel wie folgt:
  • Wenn bei älteren Modellen die Kanalpuffernummer ungerade ist, muss sich der entsprechende ungerade nummerierte CBOB im Vorbereitet-Zustand befinden.
  • Bei neueren Modellen gilt bei einem Beispiel Folgendes:
  • Wenn die Kanalpuffernummer gerade ist und der entsprechende ungerade nummerierte Kanalpuffer bereits vorbereitet wurde, muss die CBOB-Adresse in dem Nachrichtenoperationsblock mit der CBOB-Adresse übereinstimmen, die beim Vorbereiten des ungerade nummerierten Puffers verwendet wurde.
  • Wenn die Kanalpuffernummer ungerade ist und der entsprechende gerade nummerierte bereits vorbereitet wurde, muss die CBOB-Adresse im Nachrichtenoperationsblock mit der CBOB-Adresse übereinstimmen, die beim Vorbereiten des gerade normierten Puffers verwendet wurde.
  • Eine Pufferzusammenfassungsbereich-definieren-Operation muss durchgeführt werden, um die Adresse des Kanalpufferzusammenfassungs-Antwortbereichs vor der Vorbereiten-Funktion für einen beliebigen Kanalpuffer zu definieren.
  • Bei Beendigung der Kanalpuffer-vorbereiten-Funktion wird ein Befehl-aktiv-Zusammenfassungsindikator in der Pufferzusammenfassungsgruppe, die durch die Vorbereiten-Funktion zugewiesen wurde, auf eins gesetzt. Dies stellt einen ersten Schritt zum Durchführen einer LCB-Anweisung durch den Kopplungseinrichtungs-Steuercode bereit und stellt sicher, dass beliebige ausstehende anhängige Fehlerzustandsbedingungen erkannt und beseitigt werden.
  • Wenn der Kanalpuffer bereits vorbereitet ist und eine Pufferzusammenfassungsgruppe-ändern-Operation durchgeführt wird, wird der Befehl-aktiv-Zusammenfassungsindikator in der Pufferzusammenfassungsgruppe, die durch die Vorbereiten-Anweisung zugewiesen wurde, auf eins gesetzt. Dies stellt einen ersten Schritt zum Durchführen einer LCB-Anweisung durch den Kopplungseinrichtungs-Steuercode bereit und stellt sicher, dass beliebige ausstehende anhängige Fehlerzustandsbedingungen erkannt und beseitigt werden.
  • Wenn der bezeichnete Kanalpuffer bereits vorbereitet ist und sich der Wert der Pufferzusammenfassungsgruppe seit dem vorherigen Vorbereiten für diesen Puffer nicht geändert hat, wird der Bedingungscode, z.B. 1, gesetzt, und es wird keine andere Maßnahme ergriffen. Wenn der bezeichnete Kanalpuffer bereits vorbereitet ist und sich der Wert der Pufferzusammenfassungsgruppe seit der vorherigen Kanalpuffer-vorbereiten-Anweisung für diesen Puffer geändert hat, wird der neue Wert der Pufferzusammenfassungsgruppe in dem Kanalpuffer abgelegt, und der Bedingungscode, z.B. 1, wird gesetzt. Anderenfalls geschieht bei einer Ausführungsform Folgendes:
  • Ein Kanalpfad und ein Kanalpuffer werden dem Kanalpufferoperationsblock zugewiesen, wenn er für Empfangs- oder sekundäre Sendefunktionen vorbereitet ist.
  • Werte aus dem Nachrichtenoperationsblock werden in dem Kanalpuffer abgelegt.
  • Der Kanalpuffer wechselt in den Vorbereitet-Zustand.
  • Das Kanalpuffer-Token wird in z.B. den Bits 32 bis 63 des allgemeinen Registers 1 zurückgegeben.
  • Die Anweisung wird durch Setzen des Bedingungscodes 0 beendet.
  • Wenn der Kanalpuffer in den Nicht-vorbereitet-Zustand wechselt, wird eine beliebige Zuweisung des Kanalpfads und des Kanalpuffers widerrufen.
  • Bei einem oder mehreren Aspekten wird ein Operationsausnahmefehler erkannt, wenn der zentrale Prozessorkomplex in dem Basismodus arbeitet. Es ist nicht definiert, ob ein Operandenausnahmefehler erkannt wird, wenn ein reserviertes Feld nicht null ist oder ein Steuerprogramm-Token null ist.
  • Ein Festlegungsausnahmefehler wird erkannt, wenn eines des Folgenden auftritt:
  • „Bit des Pufferzusammenfassungsbereichs definieren" ist auf eins gesetzt und:
    die Adresse des Kanalpufferzusammenfassungs-Antwortbereichs befindet sich nicht z.B. an einer 256-Byte-Grenze oder
    die Operation wurde bereits für die Konfiguration durchgeführt oder
    der Wert der Adresse des Kanalpufferzusammenfassungs-Antwortbereichs (CBS@-Wert) ist null oder
    der Wert der Adresse des Kanalpufferzusammenfassungs-Antwortbereichs (CBS@-Wert) plus z.B. 8191 liegt außerhalb des Speichers innerhalb der Konfiguration.
  • Eine Kanalpuffer-Vorbereitungsfunktion, die vor einer Pufferzusammenfassungsbereich-definieren-Operation angefordert wurde, hat die Adresse des Kanalpufferzusammenfassungs-Antwortbereichs für die Konfiguration definiert.
  • Der Wert der Pufferzusammenfassungsgruppe ist ungültig.
    der zweite Operand bezeichnet z.B. keine 64-Byte-Grenze,
    die Adresse des Kanalpufferoperationsblocks bezeichnet z.B. keine 8192-Byte-Grenze oder
    je nach Modell gilt eines des Folgenden:
  • Die Kanalpuffernummer ist ungerade, und der entsprechende gerade nummerierte CBOB befindet sich nicht im Vorbereitet-Zustand.
  • Eines des Folgenden gilt:
  • Beim Vorbereiten eines gerade nummerierten Kanalpuffers wurde der entsprechende ungerade nummerierte Kanalpuffer bereits vorbereitet, und die CBOB-Adresse in dem Nachrichtenoperationsblock stimmt nicht mit der CBOB-Adresse überein, die beim Vorbereiten des ungerade nummerierten Puffers verwendet wurde.
  • Beim Vorbereiten eines ungerade nummerierten Kanalpuffers wurde der entsprechende gerade nummerierte Kanalpuffer bereits vorbereitet, und die CBOB-Adresse in dem Nachrichtenoperationsblock stimmt nicht mit der CBOB-Adresse überein, die beim Vorbereiten des gerade nummerierten Puffers verwendet wurde.
  • Zu Beispielen von sich ergebenden Bedingungscodes gehören:
    0 Kanalpuffer vorbereitet oder Adresse des Kanalpufferzusammenfassungs-Antwortbereichs eingerichtet
    1 Kanalpuffer bereits vorbereitet, Nachverfolgungsanforderung verarbeitet, MPRL-Anforderung verarbeitet oder Pufferzusammenfassungsgruppe neu zugewiesen
    2 belegt
    3 nicht verfügbar
  • Bei einem oder mehreren Aspekten stellt die Kanalpuffer-vorbereiten-Anforderung eine Kanalpufferebenendefinition einer Adresse bereit, die den Kanalpufferzusammenfassungs-Antwortbereich enthält. Sie verwendet eine Pufferzusammenfassungsbereich-definierten-Operation, um die Adresse des Kanalpufferzusammenfassungs-Antwortbereichs zu definieren, die zum Erstellen eines Kanalpufferzusammenfassungs-Antwortbereichs verwendet wird. Ferner stellt die Kanalpuffer-vorbereiten-Anweisung eine Vorbereitung einzelner Kanalpuffer mit einer bestimmten Pufferzusammenfassungsgruppe innerhalb des Kanalpufferzusammenfassungs-Antwortbereichs bereit.
  • Bei einer weiteren Anweisung, die gemäß einem oder mehreren Aspekten der vorliegenden Erfindung verwendet wird, handelt es sich um eine Kanalpuffer-signalisieren-Anweisung, von der ein Beispiel unter Bezugnahme auf 5B beschrieben wird. Bei einem Beispiel umfasst eine Kanalpuffer-signalisieren-Anweisung 510 ein Operationscodefeld 512, das eine Signalkanalpufferoperation festlegt, und ein Registerfeld (R1) 514. „Kanalpuffer signalisieren“ wird bei einem Beispiel durch die Kopplungseinrichtung ausgeführt.
  • Bei einem Beispiel beginnt die sekundäre Sendefunktion oder endet die Empfangsfunktion synchron zu der Ausführung der Anweisung.
  • Wenn der bezeichnete Kanalpuffer zum Teilnehmen an sekundären Sendefunktionen vorbereitet ist, wird die sekundäre Sendefunktion bei der bezeichneten Nachrichteneinheit ausgelöst, das Nachverfolgungsanforderungsbit wird getestet, und das Anforderungsfeld und das Antwort-aktiv-Steuerelement werden zurückgesetzt.
  • Wenn der bezeichnete Kanalpuffer zum Teilnehmen an Empfangsfunktionen vorbereitet ist, wird die Empfangsfunktion bei der bezeichneten Nachrichteneinheit beendet, das Nachverfolgungsanforderungsbit wird getestet, und das Anforderungsfeld und das Befehl-aktiv-Steuerelement werden zurückgesetzt.
  • Hinsichtlich der sekundären Sendefunktion enthalten ausgewählte Bits (z.B. Bit 0 und Bits 27 bis 31) des allgemeinen Registers 1 zum Beispiel Informationen über die Pufferzusammenfassungsgruppe, die für die Operation verwendet werden muss.
  • Hinsichtlich der Beendigung der Empfangsfunktion werden ausgewählte Bits (z.B. die Bits 0 bis 31) des allgemeinen Registers 1 zum Beispiel ignoriert.
  • Bei einem Beispiel enthalten ausgewählte Bits (z.B. die Bits 32 bis 63) des allgemeinen Registers 1 das Kanalpuffer-Token, das den verwendeten Kanalpuffer bezeichnet. Ferner enthält das allgemeine Register R1 ein Nachrichtenoperationswort.
  • Die in dem Nachrichtenoperationswort enthaltenen Steuerwerte werden bei einem Beispiel in dem Kanalpuffer platziert.
  • Wenn Bit 0 des Anforderungsfelds B' 1' ist, wird eine Nachverfolgungsanforderung erkannt, und der Nachverfolgungseintrag in dem Kanalpuffer wird in den Kanalnachverfolgungsbereich kopiert.
  • Der Bedingungscode 0 wird gesetzt, wenn die vorstehend beschriebenen Maßnahmen ergriffen wurden.
  • Bei einem Beispiel legt das Nachrichtenoperationswort fest, ob eine Diagnosezeitüberschreitung bei einer sekundären Sendefunktion auftritt oder nicht, ob der Nachrichtenantwortblock und die Länge des Blocks verworfen werden sollen oder nicht.
  • Beispielhaft enthält ein Nachrichtenoperationswort Folgendes:
  • Zeitüberschreitung (T): Wenn die SCB-Diagnose-Zeitüberschreitungseinrichtung (Kanalpuffer-signalisieren-Diagnose-Zeitüberschreitungseinrichtung) installiert ist, handelt es sich bei diesem Feld (z.B. Bit 4) um das Zeitüberschreitungssteuerelement, das wie folgt funktioniert:
  • Wenn dieses Feld eins ist und der bezeichnete Kanalpuffer zum Teilnehmen an sekundären Sendefunktionen vorbereitet ist, wird durch den Kanal asynchron zur Ausführung der Kanalpuffer-signalisieren-Anweisung, aber z.B. unmittelbar nach Erkennung der sekundären Sendefunktion durch den Kanal, eine Verbindungs-Zeitüberschreitungsbedingung erkannt.
  • Wenn entweder dieses Feld null ist oder der bezeichnete Kanalpuffer zum Teilnehmen an Empfangsfunktionen vorbereitet ist, werden Verbindungszeitüberschreitungen wegen dieses T-Steuerelements nicht erkannt. Zeitüberschreitungsbedingungen können aufgrund von Nachrichtenrahmenprotokollen nach wie vor erkannt werden.
  • Wenn die SCB-Diagnose-Zeitüberschreitungseinrichtung nicht installiert ist, ist dieses Feld reserviert.
  • Verwerfen-Puffer (D): Wenn dieses Feld (z.B. Bit 5) eins ist und ein Nachrichtenbefehlsblock gesendet wird, wird der Nachrichtenantwortblock verworfen, aber das Antwort-aktiv-Bit ist nach wie vor gesetzt.
  • Das Verwerfen-Puffer-Bit wird ignoriert, wenn der bezeichnete Kanalpuffer zum Teilnehmen an Empfangsfunktionen vorbereitet ist.
  • Länge (L): Dieses Feld (z.B. die Bits 24 bis 31) legt die Länge des Nachrichtenbefehlsblocks oder des Nachrichtenantwortblocks in Wörtern fest. Ein Wert von null gibt eine Länge von z.B. 256 Wörtern an.
  • Wenn die Transaktionsantwortgröße in dem Nachrichtenbefehlsblock null ist, muss das Längenfeld einen Wert zwischen z.B. 1 und 64 enthalten. Anderenfalls wird möglicherweise ein Operandenausnahmefehler erkannt.
  • Empfangsfunktion: Bei einem Beispiel einer Empfangsfunktion wird der Kanalpuffer in den Leerlaufzustand versetzt, wenn während des Beendens der Funktion keine Statusbedingung erkannt wird. Anderenfalls wird der Kanalpuffer in den Zustand „Status ausstehend“ versetzt, und er verbleibt in diesem Zustand, bis die Statusbedingung durch z.B. „Kanalpuffer testen“ oder einen Teilsystem-Reset gelöscht wird.
  • Bei einem Beispiel wird für eine Empfangsfunktion ein Kanalpuffer zum Teilnehmen an Empfangsfunktionen zugewiesen, wenn die Kanalpuffer-vorbereiten-Anweisung ausgeführt wird. Das Kanal-Teilsystem löst eine Empfangsfunktion aus, wenn ein Befehlssignal bei dem Kanalpuffer eintrifft und der Kanalpuffer sich nicht in „Status ausstehend“ befindet. Zum Durchführen der Empfangsfunktion gehört beispielhaft das Ergreifen der folgenden Maßnahmen: Speichern von Befehlsinformationen und beliebigen Begleitdaten im Hauptspeicher; wenn die Adapterunterbrechungen betreffende Kopplung für die gemeinsam genutzte Steuerungsroutineneinrichtung (engine facility) installiert und aktiviert ist, Erkennen eines die Kopplung betreffenden Adapterereignisses; Aussetzen der Empfangsfunktion, um die Befehlsverarbeitung durch das Programm zu ermöglichen; Wiederaufnehmen der Empfangsfunktion und Senden von Antwortinformationen und beliebigen Begleitdaten; und Erkennen von Statusbedingungen.
  • Sekundärsendefunktion: Bei einem Beispiel einer sekundären Sendefunktion wird der Kanalpuffer in den Leerlaufzustand versetzt, wenn während des Durchführens der Funktion keine Statusbedingung erkannt wird. Anderenfalls wird der Kanalpuffer in den Zustand „Status ausstehend“ versetzt, und er verbleibt in diesem Zustand, bis die Statusbedingung durch z.B. „Kanalpuffer testen“ oder einen Teilsystem-Reset gelöscht wird.
  • Wenn „Antwort aktiv“ bei dem Kanalpuffer gesetzt ist und das Gültigkeitsbit (z.B. Bit 0) des allgemeinen Registers 1 auf eins gesetzt ist, wird das Antwort-aktiv-Zusammenfassungsbit in dem Kanalpufferzusammenfassungs-Antwortbereich für die Nummer der Pufferzusammenfassungsgruppe ebenfalls auf eins gesetzt, die im allgemeinen Register 1 definiert ist, z.B. die Bits 27 bis 31.
  • Bei einem oder mehreren Aspekten gelten beispielhaft die folgenden Bedingungen: Während der Ausführung von „Kanalpuffer signalisieren“ werden Tests in Bezug auf besondere Bedingungen vorgenommen. Wenn eine beliebige besondere Bedingung erkannt wird, bleibt der Inhalt des Kanalpuffers unverändert, und die Datenübertragung mit der Einheit wird nicht ausgelöst.
  • Der Bedingungscode 1 wird gesetzt und es wird keine andere Maßnahme ergriffen, wenn sich der Kanalpuffer in „Status ausstehend“ befindet, wenn „Kanalpuffer signalisieren“ ausgeführt wird oder sich während der Ausführung der Anweisung der Zustand in „Status ausstehend“ ändert.
  • Der Bedingungscode 2 wird gesetzt und es wird keine andere Maßnahme ergriffen, wenn sich der Kanalpuffer weder in „Befehl aktiv“, „Latente Wiederholung ausstehend“ noch in „Status ausstehend“ befindet und eine Empfangsfunktion angefordert wird oder wenn die Steuerelemente für den bezeichneten Kanalpuffer an einer anderen Systemaktivität beteiligt sind.
  • Der Bedingungscode 3 wird gesetzt und es wird keine andere Maßnahme ergriffen, wenn der Kanalpuffer nicht für sekundäre Sendefunktionen vorbereitet ist und eine sekundäre Sendefunktion angefordert wird oder nicht für Empfangsfunktionen vorbereitet ist und eine Empfangsfunktion angefordert wird.
  • Die Ausführung von „Kanalpuffer signalisieren“ wird unterdrückt, wenn eine beliebige Programmausnahmefehlerbedingung erkannt wird.
  • Ein beliebiger Operationsausnahmefehler wird erkannt, wenn der zentrale Prozessorkomplex in dem Basismodus arbeitet.
  • Ein Festlegungsausnahmefehler wird bei einer sekundäre Sendefunktion erkannt, wenn z.B. Bit 0 des allgemeinen Registers 1 auf eins gesetzt ist und der Wert der Pufferzusammenfassungsgruppe ungültig ist.
  • Ein Operandenausnahmefehler kann erkannt werden, wenn ein Wert im allgemeinen Register R1 falsch festgelegt ist. Die Bedingung kann selbst dann angegeben werden, wenn die Bedingungen, die mit einem Zugriffsausnahmefehler in Zusammenhang stehen, ebenfalls vorhanden sind.
  • Es ist nicht definiert, ob ein Operandenausnahmefehler erkannt wird, wenn ein reserviertes Feld nicht null ist.
  • Zu Beispielen von sich ergebenden Bedingungscodes gehören:
    0 Funktion ausgelöst
    1 Status ausstehend
    2 belegt
    3 nicht vorbereitet
  • Bei einem oder mehreren Aspekten wird bei einer Kanalpuffer-signalisieren-Anweisung, wenn „Antwort aktiv“ bei dem Kanalpuffer gesetzt ist und das Gültigkeitsbit im z.B. allgemeinen Register 1 auf z.B. eins gesetzt ist, das Antwort-aktiv-Zusammenfassungsbit in dem Kanalpufferzusammenfassungs-Antwortbereich für die festgelegte Nummer der Pufferzusammenfassungsgruppe auf z.B. eins gesetzt.
  • Bei einer weiteren durch zum Beispiel die Kopplungseinrichtung verwendeten Anweisung handelt es sich um eine Kanalpuffer-suchen-Anweisung. Bei einem Beispiel unter Bezugnahme auf 5C umfasst eine Kanalpuffer-signalisieren-Anweisung 520 ein Operationscodefeld 522, das eine Kanalpuffer-suchen-Operation angibt.
  • Bei einer Ausführungsform wird ein Steuerprogramm-Token an einen ausgewählten Speicherplatz (z.B. die Bits 32 bis 63 des allgemeinen Registers 1) zurückgegeben, wenn sich die Nachrichtenpfadzustände aller für Empfangsfunktionen vorbereiteten Kanalpuffer nicht in „Fehlerzustand ausstehend“ befinden oder wenn sich die Nachrichtenpfadzustände von z.B. allen für Empfangsfunktionen vorbereiteten Kanalpuffern und „Befehl aktiv“ nicht in „Fehlerzustand ausstehend“ befinden.
  • Wenn das Gültigkeitsbit (z.B. Bit 0) des allgemeinen Registers 1 auf eins gesetzt ist, gilt die Antwort der Anweisung, wenn der Bedingungscode 0 zurückgegeben wird, nur für Kanalpuffer, die zuvor für Empfangsfunktionen vorbereitet wurden, und für die festgelegte Pufferzusammenfassungsgruppe, die durch den Wert in z.B. den Bits 27 bis 31 des allgemeinen Registers 1 angegeben ist. Wenn das Gültigkeitsbit auf null gesetzt ist, gilt die Antwort ungeachtet einer beliebigen Zuweisung einer Pufferzusammenfassungsgruppe z.B. für alle Kanalpuffer, die zuvor für Empfangsfunktionen vorbereitet wurden.
  • Wenn keiner der zutreffenden Kanalpuffer, die für Empfangsfunktionen vorbereitet wurden, einen Befehl empfangen hat, der nicht durch ein „Kanalpuffer suchen“ zurückgegeben wurde, ist das zurückgegebene Steuerprogramm-Token null.
  • Wenn einer oder mehrere der zutreffenden Kanalpuffer, die für Empfangsfunktionen vorbereitet wurden, einen Befehl empfangen haben, der nicht durch ein „Kanalpuffer suchen“ zurückgegeben wurde, und entweder
    die Einrichtung zum zeitlichen Sortieren von Nachrichten nicht installiert ist oder
    die Einrichtung zum zeitlichen Sortieren von Nachrichten installiert ist und entweder
    das Bit zum zeitlichen Sortieren von Nachrichten im Nachrichtenkopf null ist oder
    das Bit zum zeitlichen Sortieren im Nachrichtenkopf null ist und der Nachrichtenzeitstempel im Nachrichtenkopf kleiner als der Wert ist, der z.B. in den Bits 32 bis 55 der Tageszeituhr des Prozessors (TOD-Uhr, TOD = time of day) enthalten ist,
    wird das einem dieser Kanalpuffer zugehörige Steuerprogramm-Token zurückgegeben.
  • Der Bedingungscode 0 wird gesetzt, wenn die vorstehend beschriebenen Maßnahmen ergriffen wurden.
  • Es können eine oder mehrere besondere Bedingungen gelten, wie nachfolgend beschrieben:
  • Bei einem Beispiel werden während der Ausführung von „Kanalpuffer signalisieren“ Tests in Bezug auf besondere Bedingungen vorgenommen. Wenn eine beliebige besondere Bedingung erkannt wird, bleibt der Inhalt des Kanalpuffers unverändert.
  • Ungeachtet einer beliebigen Zuordnung von Pufferzusammenfassungsgruppen wird ein Bedingungscode gesetzt, z.B. 1, und es wird keine andere Maßnahme ergriffen, wenn sich der Nachrichtenpfadstatus, der einem Kanalpuffer zugehörig ist, der für Empfangsfunktionen vorbereitet ist, in „Fehlerzustand ausstehend“ befindet, oder wenn sich der Nachrichtenpfadstatus, der einem beliebigen Kanalpuffer zugehörig ist, der für Empfangsfunktionen vorbereitet ist, und „Befehl aktiv“ in „Fehlerzustand ausstehend“ befinden.
  • Wenn die Einrichtung zum zeitlichen Sortieren von Nachrichten installiert ist, das Bit zum zeitlichen Sortieren von Nachrichten im Nachrichtenkopf eins ist und der Nachrichtenzeitstempel im Nachrichtenkopf um mehr als z.B. eine Millisekunde größer als der Wert ist, der z.B. in den Bits 32 bis 55 der TOD-Uhr des Prozessors enthalten ist, werden die TOD-Uhren des Absenders und des Empfängers als ausreichend außerhalb der Synchronisierung liegend angesehen, um eine Wiederherstellung durch die Einrichtung zum zeitlichen Sortieren von Nachrichten auszuschließen. In diesem Fall:
    wird ein Antwortzeitangabe-Qualifikationsmerkmal (response time indication qualifier, RTIQ) auf eins gesetzt, und
    ein Antwortcode, z.B. 254, wird an den Absender mit einer Statusbedingung von z.B. 16 zurückgegeben, der angibt, dass die Verzögerungszeit überschritten wurde.
  • Wenn die Einrichtung zum zeitlichen Sortieren von Nachrichten installiert ist, das Bit zum zeitlichen Sortieren von Nachrichten im Nachrichtenkopf eins ist und der Nachrichtenzeitstempel im Nachrichtenkopf größer oder gleich dem Wert ist, der z.B. in den Bits 32 bis 55 der TOD-Uhr des Prozessors enthalten ist, aber der Unterschied zwischen diesen Werten kleiner als z.B. eine Millisekunde ist, wird die Nachricht für den Kanalpuffer als zur LCB-Verarbeitung nicht infrage kommend angesehen. In diesem Fall verbleibt die Nachricht im Kanalpuffer ausstehend, und ihr Token wird nicht zurückgegeben. Wenn in diesem Fall kein anderer Puffer mit einem infrage kommenden Befehl verfügbar war, wird darüber hinaus der Bedingungscode, z.B. 2, gesetzt, und das allgemeine Register 1 bleibt unverändert.
  • Zu Beispielen von sich ergebenden Bedingungscodes gehören:
    0 Steuerprogramm-Token zurückgegeben
    1 Fehlerzustand ausstehend
    2 Verzögerung beim zeitlichen Sortieren von Nachrichten
    3 --
  • Bei einer weiteren durch die Kopplungseinrichtung zu verwendenden Anweisung handelt es sich um eine Kanalpufferdaten-mehrfach-verschieben-Anweisung. Bei einem Beispiel umfasst eine Kanalpufferdaten-mehrfach-verschieben-Anweisung 530 unter Bezugnahme auf 5D ein Operationscodefeld 532, das eine Kanalpufferdaten-mehrfach-verschieben-Operation festlegt, ein erstes Registerfeld (R1) 534 und ein zweites Registerfeld (R2) 536.
  • Bei einer Ausführungsform wird die Empfangsfunktion mit der bezeichneten zentralen Prozessorkomplexeinheit fortgesetzt und erfolgt synchron zur Ausführung der Anweisung.
  • Bei einem Beispiel sind ausgewählte Bits (z.B. die Bits 0 bis 31) des allgemeinen Registers 1 reserviert und sollten zur Ausführungszeit der Anweisung Nullen enthalten. Bit 2 des allgemeinem Registers 1 wird beispielhaft für Antwortinformationen von der Anweisung zur Beendigungszeit der Anweisung verwendet, wenn der Bedingungscode, z.B. 2, gesetzt wird.
  • Die Kanalpufferdaten-mehrfach-verschieben-Anweisung verwendet die Pufferzusammenfassungsgruppe, die zum Zeitpunkt der Kanalpuffer-vorbereiten-Anweisung festgelegt wurde.
  • Bei einem Beispiel enthalten ausgewählte Bits (z.B. die Bits 32 bis 63) des allgemeinen Registers 1 das Kanalpuffer-Token, das den verwendeten Kanalpuffer bezeichnet.
  • Ferner enthalten ausgewählte Bits (z.B. die Bits 32 bis 63) des allgemeinen Registers R1 bei einem Beispiel ein Nachrichtenoperationswort, wovon nachstehend ein Beispiel beschrieben wird. Außerdem bilden ausgewählte Bits (z.B. die Bits 0 bis 52) des allgemeinen Registers R2, die mit z.B. 11 Nullen auf der rechten Seite aufgefüllt sind, die Hauptspeicheradresse einer Nachrichtendatenelement-Adressliste (message data element address list, MDEAL). Es ist nicht definiert, ob die Hauptspeicheradresse real oder absolut ist.
  • Bei einem Beispiel werden der Inhalt des allgemeinen Registers R1, ausgewählte Bits (z.B. die Bits 0 bis 52) des allgemeinen Registers R2 und die Adressen von z.B. allen bezeichneten Nachrichtendatenelementen in dem Kanalpuffer abgelegt, und das Nachverfolgungsanforderungsbit wird getestet. „Daten aktiv“ und das Anforderungsfeld werden bei dem Kanalpuffer zurückgesetzt.
  • Wenn Bit 0 des Anforderungsfelds B' 1' ist, wird eine Nachverfolgungsanforderung erkannt, und der Nachverfolgungseintrag in dem Kanalpuffer wird in den Kanalnachverfolgungsbereich kopiert.
  • Der Bedingungscode 0 wird gesetzt, wenn die vorstehend beschriebenen Maßnahmen durchgeführt wurden.
  • Eine Serialisierungs- und Prüfpunkt-Synchronisierungsfunktion wird durchgeführt, bevor die Operation beginnt. Nach Beendigung der Operation kann eine Prüfpunkt-Synchronisierungsfunktion durchgeführt werden oder auch nicht.
  • Bei einem Beispiel enthält ein Nachrichtenoperationswort Informationen über die Größe eines Nachrichtendatenblocks, die Anzahl der zu übertragenden Nachrichtendatenblöcke, die Größe des Nachrichtendatenelements und die Anzahl von Einträgen in der Nachrichtendatenelement-Adressenliste. Ebenfalls enthalten ist die Richtung, in die die Daten verschoben werden sollen.
  • Als konkretes Beispiel enthält ein durch die Anweisung verwendetes Nachrichtenoperationswort zum Beispiel:
  • Sendedaten (S): Wenn dieses Feld (z.B. Bit 0) eins ist, werden die Daten aus dem Speicher in den Kanalpuffer verschoben; wenn dieses Feld null ist, werden die Daten aus dem Kanalpuffer in den Speicher verschoben.
  • Nachrichtendatenblockgröße (Message Data Block Size, MBS): Dieses Feld (z.B. die Bits 3 bis 5) legt die Größe des Nachrichtendatenblocks fest. Die Länge in Bytes ist das Produkt aus z.B. 256 und 2, potenziert mit der in dem Feld MBS festgelegten Ganzzahl.
  • Übertragungszählwert (Transfer Count, TC): Der Wert in diesem Feld (z.B. die Bits 11 bis 15) legt die Anzahl von Nachrichtendatenblöcken fest, die übertragen werden sollen.
  • Größe des Nachrichtendatenelements (Message Data Element Size, ES): Dieses Feld (z.B. die Bits 19 bis 21) legt die Größe des Nachrichtendatenelements fest. Die Länge in Bytes ist z.B. das Produkt aus 256 und 2, potenziert mit der in dem Feld ES festgelegten Ganzzahl.
  • Größe der Nachrichtendatenelement-Adressenliste (Message Data Element Address List Size, MDEALS): Der Wert in diesem Feld (z.B. die Bits 23 bis 31) legt die Anzahl von Einträgen in der Nachrichtendatenelement-Adressenliste fest.
  • Bei einem Beispiel enthält ein Eintrag in der Nachrichtendatenelement-Adressliste:
  • Hauptspeicheradresse (Main Storage Address, MSA): Dieses Feld (z.B. die Bits 0 bis (N-1), die mit (64-N) Nullen auf der rechten Seite aufgefüllt sind) legt eine Hauptspeicheradresse an einer Grenze der Größe des Nachrichtendatenelements fest. Es ist nicht definiert, ob die Adresse real oder absolut ist.
  • Bei einem Beispiel wird die Empfangsfunktion fortgesetzt, wenn sich der Kanalpuffer in „Befehl aktiv“ und nicht in „Status ausstehend“ befindet. Daten werden zwischen dem Kanalpuffer und festgelegten Speicherorten in der Abfolge der Adressen in MDEAL übertragen. Daten werden auf der Verbindung in den Einheiten des Nachrichtendatenblocks übertragen. Der Wert in dem Feld TC legt die Gesamtzahl von Nachrichtendatenblöcken fest, die übertragen werden sollen.
  • Wenn alle Daten übertragen wurden, wird eine Endgültige-Daten-aktiv-Angabe bei dem Kanalpuffer auf eins gesetzt, und die Empfangsfunktion wird ausgesetzt.
  • Wenn das Feld MDEALS oder das Feld TC null enthält, bleiben der Inhalt des Kanalpuffers und z.B. alle festgelegten Speicherorte unverändert, die Endgültige-Daten-aktiv-Angabe bei dem Kanalpuffer wird auf eins gesetzt, der Bedingungscode wird auf null gesetzt, und die Empfangsfunktion wird ausgesetzt.
  • Bei einem Beispiel gelten die folgenden Bedingungen:
  • Während der Ausführung von „Kanalpuffer mehrfach verschieben“ werden Tests in Bezug auf besondere Bedingungen vorgenommen. Wenn eine der folgenden besonderen Bedingungen erkannt wird, bleiben der Inhalt des Kanalpuffers und z.B. alle festgelegten Speicherorte unverändert, und die Empfangsfunktion wird nicht fortgesetzt.
  • Der Bedingungscode 1 wird gesetzt und es wird keine andere Maßnahme ergriffen, wenn sich der Kanalpuffer beim Ausführen von „Kanalpufferdaten mehrfach verschieben“ in „Status ausstehend“ befindet.
  • Der Bedingungscode 2 wird gesetzt und es wird keine andere Maßnahme ergriffen, wenn:
    sich der Kanalpuffer weder in „Befehl aktiv“ noch „Status ausstehend“ befindet
    oder wenn die Steuerelemente für den bezeichneten Kanalpuffer an einer anderen Systemaktivität beteiligt sind
    oder die MCBDM-Anweisung erst beendet werden kann, wenn Daten bei dem Kanalpuffer verfügbar sind.
  • Für den vorstehenden letzten Fall wird bei einem Beispiel als Antwort das Bit 2 des allgemeinen Registers 1 durch die Anweisung ebenfalls auf 1 gesetzt.
  • Der Bedingungscode 3 wird gesetzt und es wird keine andere Maßnahme ergriffen, wenn der Kanalpuffer nicht für Empfangsfunktionen vorbereitet ist.
  • Ein Operationsausnahmefehler wird erkannt, wenn der zentrale Prozessorkomplex im Basismodus arbeitet oder wenn die MCBDM-Einrichtung nicht installiert ist und die Operation unterdrückt wird.
  • Ein Operationsausnahmefehler wird optional erkannt, wenn ein beliebiges reserviertes Bit nicht null ist oder wenn ein Operand in dem Nachrichtenoperationswort ungültig ist. Wenn der Ausnahmefehler erkannt wird, wird die Operation unterdrückt.
  • Zu Beispielen von sich ergebenden Bedingungscodes gehören:
    0 Funktion ausgelöst
    1 Status ausstehend
    2 belegt oder nicht in „Befehl aktiv“
    3 nicht vorbereitet
  • Bei einem oder mehreren Aspekten verwendet die Anweisung „Kanalpufferdaten mehrfach verschieben“ ein Daten-bereit-Steuerelement, um zu bestätigen, ob die Empfangsfunktion das Empfangen von Daten beendet hat. Wenn Sie nach wie vor auf die Daten bei dem Kanalpuffer wartet, setzt sie z.B. einen Bedingungscode von z.B. 2, wobei das Bit 2 des allgemeinen Registers 1 beispielhaft auf eins gesetzt wird. Wenn die Daten verfügbar sind, wird das Daten-bereit-Steuerelement in dem Kanalpufferoperationsblock angegeben. Eine erneute Ausführung der MCBDM-Anweisung wird mit einem Bedingungscode, z.B. 0, abgeschlossen und verschiebt die verfügbaren Daten in den Programmspeicher, und der Endgültige-Daten-aktiv-Indikator wird in dem Kanalpufferoperationsblock auf z.B. eins gesetzt. Wenn der Puffer zur Ausführungszeit der Kanalpuffer-vorbereiten-Anweisung mit einer Pufferzusammenfassungsgruppe vorbereitet wurde, werden die Zusammenfassungsangabebits in der festgelegten Pufferzusammenfassungsgruppe ebenfalls gesetzt.
  • Bei einer weiteren durch die Kopplungseinrichtung zu verwendenden Anweisung handelt es sich um eine Kanalpuffer-testen-Anweisung. Bei einem Beispiel enthält eine Kanalpuffer-testen-Anweisung 540 unter Bezugnahme auf 5E ein Operationscodefeld 542, um Kanalpuffer-testen-Anweisung, ein Basisfeld (B2) 544 und ein Verschiebungsfeld (D2) 546 festzulegen. Bei einem Beispiel legt der Inhalt eines Registers, das mit dem Feld B2 544 bezeichnet ist, der zu dem Wert in dem Feld D2 546 hinzugefügt wurde, eine Adresse fest, die den Speicherort eines Nachrichtenoperationsblocks angibt.
  • Bei einem Beispiel wird ein Kanalpuffer-Informationsblock gespeichert, und wenn der Kanalpuffer vorbereitet wird, wird das Nachverfolgungsanforderungsbit getestet, und die Aktivitätssteuerelemente, das Anforderungsfeld und das Statusfeld in einem Kanalpufferoperationsblock werden zurückgesetzt.
  • Beispielhaft enthalten ausgewählte Bits (z.B. die Bits 32 bis 63) des allgemeinen Registers 1 das Kanalpuffer-Token, das den verwendeten Kanalpuffer bezeichnet.
  • Die zweite Operandenadresse bezeichnet einen Nachrichtenoperationsblock. Es ist nicht definiert, ob die Adresse real oder absolut ist.
  • Wenn Bit 0 des Anforderungsfelds B' 1' ist, wird eine Nachverfolgungsanforderung erkannt, und der Nachverfolgungseintrag in dem Kanalpuffer wird in den Kanalnachverfolgungsbereich kopiert.
  • Beispielhaft ist ein Nachrichtenoperationsblock für eine Kanalpuffer-vorbereiten-Anweisung z.B. 64 Bytes lang und enthält zum Beispiel:
  • Kanalpufferinformationsblock-Adresse: Die Wörter 2 und 3 bezeichnen beispielhaft den Speicherort in dem Speicher des Kanalpufferinformationsblocks. Es ist nicht definiert, ob die Adresse real oder absolut ist.
  • Bei einem Beispiel enthält ein Kanalpufferinformationsblock zum Beispiel eine Kennung eines Kanal-Teilsystemabbilds; eine Kanalpfadkennung; eine Kanalpuffernummer; ein Steuerprogramm-Token; eine Adresse eines Kanalpufferoperationsblockpaars; ein Empfangsfunktionstyp, der angibt, ob der Kanalpuffer zum Teilnehmen an Empfangsfunktionen oder sekundäre Sendefunktionen vorbereitet ist; einen Nicht-vorbereitet-Zustand, der angibt, ob sich der Kanalpuffer in einem Nicht-vorbereitet-Zustand befindet; ein Befehl-aktiv-Steuerelement, das im gesetzten Zustand angibt, dass eine Empfangsfunktion begonnen hat; ein Antwort-aktiv-Steuerelement, das im gesetzten Zustand angibt, dass die Sekundärsendefunktion fortgesetzt wird; ein Daten-aktiv-Steuerelement, das nachstehend beschrieben wird; ein Anforderungsfeld; und ein Statusfeld. Zusätzliche, weniger und/oder andere Informationen können enthalten sein.
  • Das Daten-aktiv-Steuerelement enthält zum Beispiel:
    den Endgültige-Daten-aktiv-Indikator, der im gesetzten Zustand angibt, dass die Empfangsfunktion ausgesetzt ist. Beim Empfangen von Daten setzt das Kanal-Teilsystem „Endgültige Daten aktiv“ bei dem Kanalpuffer, wenn der Nachrichtendatenblock im Hauptspeicher gültig ist und es sich um den letzten Nachrichtendatenblock handelt, der in Zusammenhang mit dem Befehl steht. Beim Senden von Daten setzt das Kanal-Teilsystem „Endgültige Daten aktiv“ bei dem Kanalpuffer, wenn der letzte Nachrichtendatenblock erfolgreich gesendet wurde.
    den Daten-bereit-Indikator, der im auf z.B. eins gesetzten Zustand angibt, dass bei Kanälen, die ihn erfordern, die Empfangsfunktion das Empfangen von Daten beendet hat und bereit ist, das MCBDM ausführen zu lassen, um die empfangenen Daten in den Programmspeicher zu verschieben. Das MCBDM wird bei diesen Kanälen synchron ausgeführt, wenn dieses Bit gesetzt ist (z.B. auf eins). Beim Empfangen von Daten setzt das Kanal-Teilsystem „Daten bereit“ bei dem Kanalpuffer, wenn zu der aktiven Nachricht gehörige Daten vollständig empfangen wurden und verfügbar sind, um durch die MCBDM-Anweisung in den Programmspeicher verschoben zu werden. Kanäle, die diese Angabe erfordern, übergeben der MCBDM-Anweisung z.B. einen Bedingungscode 2, wobei z.B. das Bit 2 des Registers 1 auf eins gesetzt wird, wenn das Daten-bereit-Bit auf z.B. null gesetzt ist. Wenn das Programm die MCBDM-Anweisung für diese Kanäle durchführt und das Daten-bereit-Bit z.B. auf eins gesetzt ist, wird die MCBDM-Anweisung synchron zur Datenverfügbarkeit im Programmspeicher beendet, z.B. mit dem Bedingungscode 0, und das Endgültige-Daten-aktiv-Bit in dem Daten-aktiv-Steuerelement für den Kanalpuffer wird auf z.B. eins gesetzt.
  • Bei einer Ausführungsform wird der Bedingungscode 2 gesetzt, und es wird keine andere Maßnahme ergriffen, wenn die Steuerelemente für den bezeichneten Kanalpuffer an einer anderen Systemaktivität beteiligt sind.
  • Der Bedingungscode 3 wird gesetzt und es wird keine andere Maßnahme ergriffen, wenn der Kanalpuffer nicht in dem Kanal-Teilsystem bereitgestellt ist.
  • Die Ausführung von „Kanalpuffer testen“ wird unterdrückt, wenn eine beliebige Programmausnahmefehlerbedingung erkannt wird.
  • Ein beliebiger Operationsausnahmefehler wird erkannt, wenn der zentrale Prozessorkomplex in dem Basismodus arbeitet.
  • Ein Operandenausnahmefehler kann erkannt werden, wenn ein Wert in einem Operanden falsch festgelegt ist. Die Bedingung kann selbst dann angegeben werden, wenn die Bedingungen, die mit einem Zugriffsausnahmefehler in Zusammenhang stehen, ebenfalls vorhanden sind.
  • Es ist nicht definiert, ob ein Operandenausnahmefehler erkannt wird, wenn ein reserviertes Feld nicht null ist.
  • Ein Festlegungsausnahmefehler wird erkannt, wenn der zweite Operand oder die Adresse des Kanalpufferinformationsblocks z.B. keine 64-Byte-Grenze bezeichnet.
  • Zu Beispielen von sich ergebenden Bedingungscodes gehören:
    0 Kanalpufferinformationsblock gespeichert
    1 --
    2 belegt
    3 Kanalpuffer nicht bereitgestellt
  • Zusätzlich zu den Anweisungen, die zum Verwenden der Nachrichteneinrichtung bereitgestellt werden, werden andere Anweisungen bereitgestellt, um Vektoren für Zustandsänderungen über Systeme hinweg zu definieren und bereitzustellen. Diese Anweisungen werden gemäß einem oder mehreren Aspekten der vorliegenden Erfindung so definiert, dass sie eine oder mehrere Pufferzusammenfassungsgruppen verwenden. Zum Beispiel werden Vektoren, die beim Signalisieren von Datenübertragung von Kopplungseinrichtung zu Kopplungseinrichtung verwendet werden, bei einer oder mehreren Pufferzusammenfassungsgruppen registriert, und Indikatoren innerhalb der Pufferzusammenfassungsgruppen werden verwendet, um Zustandsvektoränderungen anzugeben. Bei einem Beispiel werden sekundäre Empfängerpuffer zum Signalisieren von Pufferzusammenfassungsgruppen für Vektorzustandsänderungen verwendet. Die Firmware stellt eine Vektoränderungsverarbeitung z.B. bei Eintreffen eines Nachrichtenbefehls bereit.
  • Ein Beispiel einer Anweisung, die bei der Vektorverarbeitung durch z.B. die Kopplungseinrichtung verwendet wird, ist eine Vektor-definieren-Anweisung. Bei einem Beispiel umfasst eine Vektor-definieren-Anweisung 600 unter Bezugnahme auf 6A ein Operationscodefeld 602, das eine Vektor-definieren-Operation festlegt, ein erstes Registerfeld (R1) 604 und ein zweites Registerfeld (R2) 606.
  • Bei einem Beispiel wird eine Funktion an einem Nachrichtenvektor durchgeführt, wie z.B. durch den Wert in ausgewählten Bits (z.B. den Bits 32 bis 63) des allgemeinen Registers 1 festgelegt:
    Hex-Wert Durchgeführte Funktion
    0000 0000 Lokalen Cache-Vektor definieren
    0000 0001 Listenbenachrichtigungsvektor definieren
    0000 0002 Vektor freigeben
    0000 0003 Vektor löschen
    0000 0004 Vektor abändern
    0000 0005 Kopplungseinrichtung-Signalisierungsvektor definieren
  • Bei einem Beispiel werden die Bits 16 bis 23 der Anweisung ignoriert.
  • Bei einer Ausführungsform legt das Feld R1 ein gerade nummeriertes Register eines Gerade-ungerade-Paars allgemeiner Register fest. Die Register enthalten ein lokales-Cache Token (local cache token, LCT) oder ein Listenbenachrichtigungs-Token (list notification token, LNT) für eine Freigabe-, Lösch- oder Abänderungsfunktion. Durch die CPU wird ein Listenbenachrichtigungs-Token oder ein lokales-Cache-Token für eine Definitionsfunktion in die Register geladen. Die Bits 0 bis 31 des lokalen Cache-Tokens oder des Listenbenachrichtigungs-Tokens werden z.B. in die Bits 32 bis 63 des Registers R1 geladen, und bei einem Beispiel werden die Bits 32 bis 63 des lokalen Cache-Tokens oder des Listenbenachrichtigungs-Tokens in z.B. die Bits 32 bis 63 des Registers R1 + 1 geladen.
  • Das Feld R2 legt ein allgemeines Register fest, das für eine Definitions- oder Abänderungsfunktion verwendet wird. Das Feld wird bei den anderen Funktionen ignoriert.
  • Für eine Definitions- oder Abänderungsfunktion enthält R2 z.B. eine vorzeichenlose binäre 32-Bit-Ganzzahl in ausgewählten Bits (z.B. den Bits 32 bis 63) des Registers, die die Anzahl von Vektoreinträgen angibt, die durch das Programm angefordert werden. Der Wert in dem Register gibt die Anzahl von zugewiesenen Einträgen (number of entries assigned, NBVE) an, wenn z.B. der Bedingungscode 0 oder 1 durch die Anweisung gesetzt wird. NBVE beträgt bei einem Beispiel ein Vielfaches von 32.
  • Bei einem Beispiel wird die Serialisierung durchgeführt, bevor die Operation beginnt, und erneut, nachdem sie beendet ist.
  • Weitere Einzelheiten, die jede der Funktionen betreffen, werden nachstehend beschrieben:
  • Lokalen Cache-Vektor definieren: Ein lokaler Cache-Vektor und sein Vektor-Token werden zugewiesen. Die Vektoreinträge sind bei einem Beispiel alle null.
  • Listenbenachrichtigungsvektor definieren: Ein Listenbenachrichtigungsvektor und sein Vektor-Token werden zugewiesen. Die Vektoreinträge und der lokale Zusammenfassungsindikator für den Vektor sind bei einem Beispiel alle null.
  • Vektor freigeben: Das lokale Cache-Token oder das Listenbenachrichtigungs-Token wird in den Zustand „Nicht zugewiesen“ versetzt.
  • Vektor löschen: Die Einträge des Nachrichtenvektors werden auf Nullen zurückgesetzt. Die lokale Zusammenfassung, falls vorhanden, bleibt unverändert.
  • Vektor abändern: Der Nachrichtenvektor wird ab seinem Eintrag mit der höchsten Nummer erweitert oder verkleinert, um eine Länge von NBVE Einträgen zu erreichen. Vor der Erweiterung vorhandene Einträge bleiben unverändert; neue Einträge sind Nullen. Nach der Verkleinerung verbleibende Einträge bleiben unverändert. Das Vektor-Token bleibt unverändert.
  • Kopplungseinrichtungs-Signalisierungsvektor definieren: Ein Listenbenachrichtigungsvektor zur Verwendung durch die Kopplungseinrichtung und sein Vektor-Token werden zugewiesen. Die Vektoreinträge und der lokale Zusammenfassungsindikator für den Vektor sind bei einem Beispiel alle null.
  • Der Kopplungseinrichtungs-Signalisierungsvektor stellt die zusätzliche Fähigkeit bereit, Vektoreinträge bei bestimmten Pufferzusammenfassungsgruppen zu registrieren und die Registrierung aufzuheben. Das Definieren des Kopplungseinrichtungs-Signalisierungsvektors bewirkt, dass die Systemeinrichtungen für diese Registrierungen in einen inaktiven Zustand initialisiert werden (keine Registrierungen).
  • Bei einem Beispiel wird ein einziger Kopplungseinrichtungs-Signalisierungsvektor innerhalb der Konfiguration definiert. Die Vektor-freigeben-Funktion der Vektor-definieren-Anweisung kann an einem Listenbenachrichtigungs-Token (LNT) durchgeführt werden, das einen Kopplungseinrichtungs-Signalisierungsvektor darstellt. Eine Kanalpuffer-vorbereiten-Anweisung, die die Adresse des Kanalpufferzusammenfassungs-Antwortbereichs definiert, muss vor dem Definieren des Kopplungseinrichtungs-Signalisierungsvektors ausgeführt werden.
  • Der Maximalwert für NBVE in z.B. den Bits 32 bis 63 des allgemeinen Registers R2 ist ein modellabhängiger Wert für den Kopplungseinrichtungs-Signalisierungsvektor.
  • Es können eine oder mehrere besondere Bedingungen gelten.
  • Der Bedingungscode 1 wird gesetzt, wenn die angeforderte Anzahl von Einträgen nicht zugewiesen, sondern auf die im Register R2 verringert wurde. Der Bedingungscode 1 wird z.B. nur für eine Funktion zum Definieren oder Abändern gesetzt.
  • Der Bedingungscode 2 wird gesetzt und es wird keine andere Maßnahme ergriffen, wenn kein Platz zum Definieren oder Erweitern eines Vektors verfügbar ist oder kein neues Token verfügbar ist. Er wird z.B. für eine Definieren- oder Abändern-Funktion gesetzt.
  • Der Bedingungscode 3 wird gesetzt und es wird keine andere Maßnahme ergriffen, wenn das für eine Freigegeben-, Löschen- oder Abändern-Funktion festgelegte Token nicht zugewiesen ist. Der Bedingungscode 3 hat bei einem Beispiel Vorrang vor dem Bedingungscode 2.
  • Ein Festlegungsausnahmefehler wird erkannt, wenn R1 ungerade oder null ist, R2 null ist oder der Wert in z.B. den Bits 32 bis 63 des allgemeinen Registers 1 z.B. hex 4 für eine Betriebssystempartition oder z.B. hex 5 für eine Kopplungseinrichtungspartition überschreitet.
  • Ein Festlegungsausnahmefehler wird erkannt, wenn der Wert in z.B. den Bits 32 bis 63 des Registers R2:
    für eine beliebige Vektor-definieren-Funktion oder eine Abändern-Funktion null ist oder
    für eine Kopplungseinrichtungs-Signalisierungsvektor-definieren-Funktion größer als das modellabhängige Maximum ist.
  • Ein Festlegungsausnahmefehler wird erkannt, wenn ein LNT bereitgestellt wird, das einen Kopplungseinrichtungs-Signalisierungsvektor darstellt:
    und es sich bei der angeforderten Funktion um „Vektor löschen“ oder „Vektor abändern“ handelt oder
    es sich bei der angeforderten Funktion um „Kopplungseinrichtungs-Signalisierungsvektor definieren“ handelt und zuvor ein Kopplungseinrichtungs-Signalisierungsvektor definiert wurde oder
    es sich bei der angeforderten Funktion um „Kopplungseinrichtungs-Signalisierungsvektor definieren“ handelt und zuvor keine Kanalpuffer-vorbereiten-Anweisung ausgeführt wurde, die die Adresse des Kanalpufferzusammenfassungs-Antwortbereichs definiert.
  • Zu sich ergebenden Bedingungscodes gehören zum Beispiel:
    0 Funktion durchgeführt
    1 Anzahl von Einträgen geringer als angefordert
    2 Vektorraum oder Vektor-Token nicht verfügbar
    3 LCT/LNT nicht zugewiesen
  • Bei einem oder mehreren Aspekten definiert die Vektor-definieren-Anweisung einen Kopplungseinrichtungs-Signalisierungsvektor. Beispielhaft werden ein Listenbenachrichtigungsvektor und sein Vektor-Token zur Verwendung durch die Kopplungseinrichtung zugewiesen. Bei einem Beispiel wird eine Kanalpuffer-vorbereiten-Anweisung ausgeführt, bevor der Kopplungseinrichtungs-Signalisierungsvektor definiert wird.
  • Bei einer weiteren durch die Kopplungseinrichtung auszuführenden Vektoranweisung handelt es sich um eine Vektoreinträge-testen-Anweisung. Bei einem Beispiel umfasst eine Vektoreinträge-testen-Anweisung 610 unter Bezugnahme auf 6B einen Operationscode 612, der eine Vektoreinträge-testen-Operation angibt, ein erstes Registerfeld (R1) 614 und ein zweites Registerfeld (R2) 616.
  • Bei einem Beispiel wird ein Test an einem oder mehreren Nachrichtenvektoreinträgen durchgeführt, wie durch den Wert in z.B. den Bits 32 bis 63 des allgemeinen Registers 1 festgelegt:
    Hex-Wert Durchgeführte Funktion
    0000 0000 Eintrag testen
    0000 0001 Einträge laden und testen
  • Das Feld R1 legt ein gerade nummeriertes Register eines Gerade-ungerade-Paars allgemeiner Register fest. Die Register enthalten ein lokales-Cache Token (LCT) oder ein Listenbenachrichtigungs-Token (LNT). Bei einem Beispiel sind die Bits 0 bis 31 des lokalen Cache-Tokens oder des Listenbenachrichtigungs-Tokens in z.B. den Bits 32 bis 63 des Registers R1 enthalten, und ausgewählte Bits (z.B. die Bits 32 bis 63) des lokalen Cache-Tokens oder des Listenbenachrichtigungs-Tokens sind z.B. in den Bits 32 bis 63 des Registers R1 + 1 enthalten.
  • Das Feld R2 legt ein gerade nummeriertes Register eines Gerade-ungerade-Paars allgemeiner Register fest. Das Register R2 enthält eine Nummer des lokalen Cache-Eintrags (Local Cache Entry Number, LCEN) oder eine Nummer des Listenbenachrichtigungseintrags (List Notification Entry Number, LNEN). Bei LCT oder LNT bezeichnet die Eintragsnummer einen Vektoreintrag.
  • Bei einem Beispiel werden die Bits 16 bis 23 der Anweisung ignoriert.
  • Wenn ein LNT-Token im allgemeinen Register R1 enthalten ist und R1 + 1 einen Kopplungseinrichtungs-Signalisierungsvektor festlegt und die Eintrag-testen Funktion der Anweisung festgelegt ist, gibt das Bit 0 des allgemeinen Registers 1 im auf eins gesetzten Zustand an, dass das Byte, das den angegebenen Vektoreintrag enthält, für eine Pufferzusammenfassungsgruppe registriert werden soll. Bei einem Beispiel enthalten die Bits 27 bis 31 des allgemeinen Registers 1 eine vorzeichenlose binäre Ganzzahl (z.B. fünf Bits), die angibt, dass die Sekundäres-Eintreffen-Pufferzusammenfassungsgruppe Zusammenfassungsangaben enthalten soll. Wenn ein beliebiger Vektoreintrag, der in dem Byte enthalten ist, das den angegebenen Vektoreintrag enthält, der durch das Register R2 festgelegt ist, durch das Eintreffen und die Verarbeitung eines sekundären Befehls gesetzt wurde, wird das Zusammenfassungsbit in der festgelegten Sekundäres-Eintreffen-Zusammenfassungsgruppe auf eins gesetzt. Wenn das Token keinen Kopplungseinrichtungs-Signalisierungsvektor festlegt, werden die Bits 0 bis 31 des allgemeinen Registers 1 ignoriert.
  • Weitere Einzelheiten, die die Funktionen betreffen, werden nachstehend beschrieben:
  • Eintrag testen: Der bezeichnete Eintrag wird getestet. Der Bedingungscode 0 wird gesetzt, wenn sein Wert z.B. eins beträgt. Der Bedingungscode 1 wird gesetzt, wenn sein Wert z.B. null beträgt.
  • Einträge laden und testen: Werte von Nachrichtenvektoreinträgen werden in die niedrigstwertige Hälfte des Registers R2 + 1 geladen. Der Wert in dem bezeichneten Eintrag wird z.B. in Bit 32 abgelegt. Bei einem Beispiel werden aufeinanderfolgende Einträge in aufeinanderfolgenden Bits abgelegt, bis das Registerbit 63 erreicht ist.
  • Der Wert im Register R2 muss z.B. fünf niedrigstwertige Nullen aufweisen, die z.B. eine Grenze von 32 Einträgen bezeichnen.
  • Der Bedingungscode 0 wird gesetzt, wenn z.B. alle in das Register R2 + 1 geladenen Werte eins sind. Der Bedingungscode 1 wird gesetzt, wenn ein beliebiger der Werte null beträgt.
  • Es können eine oder mehrere besondere Bedingungen gelten.
  • Das allgemeine Register R2 + 1 bleibt unverändert, wenn eine beliebige besondere Bedingung erkannt wird.
  • Der Bedingungscode 2 wird gesetzt, wenn LCEN/LNEN keinen Eintrag in dem Vektor bezeichnet.
  • Der Bedingungscode 3 wird gesetzt, wenn LCT/LNT nicht zugewiesen ist.
  • Ein Festlegungsausnahmefehler wird erkannt, wenn R1 oder R2 null oder ungerade ist, R1 gleich R2 ist, der Wert in z.B. den Bits 32 bis 63 des allgemeinen Registers 1 z.B. hex 1 überschreitet oder die LCEN/LNEN bei einer Laden-und-testen-Funktion z.B. keine fünf niedrigstwertigen Nullen aufweist.
  • Ein Festlegungsausnahmefehler wird erkannt, wenn ein LNT-Token, das in dem allgemeinen Register R1 enthalten ist und R1 + 1 einen Kopplungseinrichtungs-Signalisierungsvektor festlegt und es sich bei der angeforderten Funktion um „Einträge laden und testen“ handelt.
  • Bei einem Beispiel wird ein Festlegungsausnahmefehler erkannt, wenn Bit 0 des allgemeinen Registers 1 auf eins gesetzt ist und der Wert ausgewählte Bits (z.B. der Bits 27 bis 31) des allgemeinen Registers 1 einen ungültigen Wert für die Pufferzusammenfassungsgruppe angibt.
  • Zu sich ergebenden beispielhaften Bedingungscodes gehören zum Beispiel:
    0 alle Eintragswerte betragen eins
    1 ein Eintragswert beträgt null
    2 LCEN/LNEN zu groß
    3 LCT/LNT nicht zugewiesen
  • Bei einem oder mehreren Aspekten wird die Vektoreinträge-testen-Anweisung verwendet, um den Kopplungseinrichtungs-Signalisierungsvektor zu registrieren. Sie stellt die Fähigkeit bereit, einen Vektoreintrag bei bestimmten Pufferzusammenfassungsgruppe zu registrieren. Bei einem Beispiel muss die Registrierung der Pufferzusammenfassungsgruppe bei der Vektoreinträge-testen-Anweisung erfolgen, bevor der Zustand des Vektors zurückgegeben wird. Bei Empfang eines sekundären MCB zum Setzen eines Vektorbits, das in einem bereits registrierten Vektor enthalten ist, stellt der zentrale Prozessorkomplex bei einem Beispiel sicher, dass der Vektoreintrag vor dem Setzen der Zusammenfassungsangabe gesetzt wird.
  • Die Registrierung des Kopplungseinrichtungs-Signalisierungsvektors kann über eine Vektoreintrag-setzen-Anweisung aufgehoben werden, was nachstehend beschrieben wird. Sie hebt die Registrierung eines Vektoreintrags für eine oder mehrere bestimmte Pufferzusammenfassungsgruppen auf.
  • Ein Beispiel der Vektoreintrag-setzen-Anweisung, die durch die Kopplungseinrichtung zu verwenden ist, um z.B. die Registrierung des Kopplungseinrichtungs-Signalisierungsvektors aufzuheben, wird unter Bezugnahme auf 6C beschrieben. Bei einem Beispiel umfasst eine Vektoreintrag-setzen-Anweisung 620 ein Operationscodefeld 622, das eine Vektor-setzen-Operation festlegt, ein erstes Registerfeld (R1) 624 und ein zweites Registerfeld (R2) 626.
  • Bei einem Beispiel wird ein bezeichneter Nachrichtenvektoreintrag gemäß dem Wert in z.B. den Bits 32 bis 63 des allgemeinen Registers 1 gesetzt:
    Hex-Wert Durchgeführte Funktion
    0000 0000 Eintrag auf eins setzen
    0000 0001 Eintrag auf null zurücksetzen
  • Bei einem Beispiel werden die Bits 16 bis 23 der Anweisung ignoriert.
  • Das Feld R1 bezeichnet ein gerade nummeriertes Register eines Gerade-ungerade-Paars allgemeiner Register. Die Register enthalten ein lokales-Cache Token (LCT) oder ein Listenbenachrichtigungs-Token (LNT) für den Nachrichtenvektor. Bei einem Beispiel sind die Bits 0 bis 31 des lokalen Cache-Tokens oder des Listenbenachrichtigungs-Tokens in ausgewählten Bits (z.B. den Bits 32 bis 63) des Registers R1 enthalten, und ausgewählte Bits (z.B. die Bits 32 bis 63) des lokalen Cache-Tokens oder des Listenbenachrichtigungs-Tokens sind z.B. in den Bits 32 bis 63 des Registers R1 + 1 enthalten.
  • Das Feld R2 bezeichnet ein allgemeines Register. Das Register enthält die Nummer des lokalen Cache-Eintrags (LCEN) oder die Nummer des Listenbenachrichtigungseintrags (LNEN).
  • Wenn bei einem Beispiel die Inhalte der Register R1 und R1 + 1 ein zuvor definiertes Token eines Kopplungseinrichtungs-Signalisierungsvektors enthalten, gibt das Bit 0 des allgemeinen Registers 1 im auf eins gesetzten Zustand an, dass gegebenenfalls eine vorherige Registrierung einer Sekundäres-Eintreffen-Zusammenfassungsgruppe, die durch eine vorherige Vektoreinträge-testen-Anweisung für den im Register R2 angegebenen Vektoreintrag definiert wurde, zu entfernen (die Registrierung aufzuheben) ist. Dadurch wird verhindert, dass beliebige Pufferzusammenfassungsgruppen-Angabe bei einem beliebigen MCB-Eintreffen übergeben wird, die einen beliebigen angegebenen Vektoreintrag in dem zuvor registrierten Byte angibt. Wenn das Token kein gültiges Token eines Kopplungseinrichtungs-Signalisierungsvektors angibt, wird das Bit 0 des allgemeinen Registers 1 ignoriert.
  • Keine lokale oder globale Zusammenfassung von Listenbenachrichtigungsvektoren wird geändert.
  • Wenn eine beliebige besondere Bedingung erkannt wird, bleibt der Vektoren verändert.
  • Der Bedingungscode 2 wird gesetzt, wenn LCEN/LNEN keinen Eintrag in dem Vektor bezeichnet.
  • Der Bedingungscode 3 wird gesetzt, wenn LCT/LNT nicht zugewiesen ist.
  • Bei einem Beispiel wird ein Festlegungsausnahmefehler erkannt, wenn R1 ungerade ist oder der Wert in z.B. den Bits 32 bis 63 des allgemeinen Registers 1 z.B. hex 1 überschreitet.
  • Zu sich ergebenden Bedingungscodes gehören beispielhaft:
    0 Vektoreintrag gesetzt oder zurückgesetzt
    1 --
    2 LCEN/LNEN zu groß
    3 LCT/LNT nicht zugewiesen
  • Eine oder mehrere der vorstehend beschriebenen Anweisungen werden bei der Verarbeitung zwischen z.B. einem Prozessor und einer Kopplungseinrichtung und/oder zwischen Kopplungseinrichtungen verwendet. Bei einem Beispiel der Befehlsverarbeitung zwischen einem Prozessor und einer Kopplungseinrichtung handelt es sich um eine Empfangsfunktion bei der Kopplungseinrichtung für einen Schreibbefehl, der durch den Prozessor ausgegeben wurde, wovon ein Beispiel nachstehend ausführlicher beschrieben ist.
  • Bei einem Beispiel wird ein Kanalpuffer zum Teilnehmen an Empfangsfunktionen zugewiesen, wenn die Kanalpuffer-vorbereiten-Anweisung ausgeführt wird. Das Kanal-Teilsystem löst eine Empfangsfunktion aus, wenn ein Befehlssignal bei dem Kanalpuffer eintrifft und der Kanalpuffer sich nicht in „Status ausstehend“ befindet. Zum Durchführen der Empfangsfunktion gehört beispielhaft das Ergreifen der folgenden Maßnahmen: Speichern von Befehlsinformationen und beliebigen Begleitdaten im Hauptspeicher; wenn die Adapterunterbrechungen betreffende Kopplung für die gemeinsam genutzte Steuerungsroutineneinrichtung installiert und aktiviert ist, Erkennen eines die Kopplung betreffenden Adapterereignisses; Aussetzen der Empfangsfunktion, um die Befehlsverarbeitung durch das Programm zu ermöglichen; Wiederaufnehmen der Empfangsfunktion und Senden von Antwortinformationen und beliebigen Begleitdaten; und Erkennen von Statusbedingungen.
  • Eine Ausführungsform der Empfangsfunktionsverarbeitung wird unter Bezugnahme auf 7A beschrieben. Bei einer Ausführungsform fragt die Kopplungseinrichtung das gesamte System nach durchzuführender Arbeit ab. Das Abfragen wird zum Beispiel durch schleifenartiges Wiederholen 700 einer Anweisung wie z.B. der Kanalpuffer-suchen-Anweisung durchgeführt. Wenn ein Befehl 710 bei der Kopplungseinrichtung eintrifft und insbesondere, wenn ein Befehl bei einem Empfänger-Kanalpuffer bei der Kopplungseinrichtung empfangen wird, beginnt eine Empfangsfunktion. Die Befehlsinformationen werden 712 in einem Nachrichtenbefehlsblock gespeichert, z.B. unter Verwendung einer Nachrichtenbefehlsblock-speichern-Anweisung oder einer anderen Anweisung. Der Nachrichtenbefehlsblockbereich wird zum Beispiel anhand einer Adresse eines Kanalpufferoperationsblockpaars und der Kanalpuffernummer bei dem Kanalpuffer gefunden. Die Parität der Kanalpuffernummer bestimmt, ob ein gerader oder ungerader Nachrichtenblockbereichs-Offset verwendet wird.
  • Bei einem Beispiel enthält der für die Empfangsfunktion gespeicherte Nachrichtenbefehlsblock zum Beispiel:
  • Nachrichtenzeitstempel: Wenn der Indikator der zeitlichen Sortierung von Nachrichten z.B. eins ist, enthält dieses Feld (z.B. die Bits 0 bis 23 von Wort 1) den Zeitstempel der Nachricht.
  • Domänennummer der Nachrichteneinrichtung: Dieses Feld (z.B. die Bits 24 bis 31 von Wort 1) kennzeichnet die logische Partition bei der zugehörigen Nachrichteneinrichtung, in deren Auftrag die Nachrichtenprozessoroperation durchgeführt wird.
  • Befehlszählwert: Dieses Feld (z.B. die Bits 23 bis 31 von Wort 2) legt die Anzahl von aussagekräftigen Wörtern fest, die in dem Nachrichtenbefehlsblock gespeichert werden.
  • STP-Nachrichtenbefehl: Dieses Feld (z.B. Bit 0 von Wort 3) gibt beispielhaft im auf eins gesetzten Zustand an, dass es sich bei dem Befehl um einen STP-Nachrichtenbefehl (STP = server time protocol) handelt. Wenn dieses Feld z.B. null ist, handelt es sich bei dem Befehl um einen Kopplungseinrichtungs- oder einen Nachrichteneinrichtungsbefehl.
  • Übertragungszählwert: Dieses Feld (z.B. die Bits 11 bis 15 von Wort 3) legt den Übertragungszählwert fest. Es handelt sich z.B. um eine vorzeichenlose binäre Ganzzahl im Bereich von z.B. 0 bis 16. Wenn der Schreibindikator z.B. eins ist, legt der Übertragungszählwert die Anzahl von Nachrichtendatenblöcken fest, die durch den Kanalpuffer erwartet werden; und wenn der Schreibindikator z.B. null ist, legt der Übertragungszählwert die maximale Anzahl von Nachrichtendatenblöcken fest, die durch das Programm gesendet werden können.
  • Schreibindikator: Dieses Feld (z.B. Bit 16 von Wort 3) gibt eine Schreiboperation an, wenn der Indikator auf z.B. eins gesetzt ist; und er gibt eine Leseoperation an, wenn er z.B. auf null gesetzt ist.
  • Zeitliche Sortierung von Nachrichten: Dieses Feld (z.B. Bit 17 von Wort 3) gibt im z.B. auf eins gesetzten Zustand an, dass die Nachrichtenkopfdaten einen Nachrichtenzeitstempel enthalten; und im z.B. auf null gesetzten Zustand enthalten die Nachrichtenkopfdaten keinen Nachrichtenzeitstempel.
  • Größe der Transaktionsnachricht: Dieses Feld (z.B. Bit 18 von Wort 3) legt die Größe des Nachrichtenbefehlsblocks und des Nachrichtenantwortblocks fest. Ein Wert von z.B. null gibt an, dass der Nachrichtenbefehlsblock und der Nachrichtenantwortblock beide eine ausgewählte Größe haben (z.B. 256 Bytes). Ein Wert von z.B. eins gibt an, dass ein Befehlsblock einer Nachricht-1 und der Nachrichtenantwortblock beide eine andere ausgewählte Größe haben (z.B. 1024 Bytes).
  • Übertragungsgröße: Dieses Feld (z.B. die Bits 27 bis 31 von Wort 3) legt die Größe jedes Nachrichtendatenblocks in z.B. 256-Byte-Einheiten fest. Bei der Übertragungsgröße handelt es sich um eine vorzeichenlose binäre Ganzzahl im Bereich von z.B. 0 bis 16.
  • Befehlsinformationen: Dieses Feld (z.B. die Wörter 4 bis 255) enthält Werte, die die Festlegung des Befehls vervollständigen.
  • Die Werte in dem Nachrichtenbefehlsblock sind gültig, wenn „Befehl aktiv“ in dem Kanalpuffer angegeben ist; anderenfalls sind die Werte in dem Nachrichtenbefehlsblock nicht definiert.
  • Zusätzlich zum Speichern des MCB setzt das Kanal-Teilsystem „Befehl aktiv“ 714 bei dem Kanalpuffer, um anzugeben, dass die Inhalte des Nachrichtenbefehlsblocks im Hauptspeicher gültig sind.
  • Nachdem ein Befehl bei dem Kanalpuffer eintrifft, werden Begleitdaten gespeichert, zum Beispiel unter Verwendung einer Kanalpufferdaten-mehrfach-verschieben-Anweisung 720. Zum Beispiel wird die Kanalpufferdaten-mehrfach-verschieben-Anweisung auf der Grundlage eines Befehls (und von Begleitdaten) ausgeführt 722, der eintrifft 724, und die Daten werden unter Verwendung der Liste von Hauptadressen 728 gespeichert 726, die in der Kanalpufferdaten-mehrfach-verschieben-Anweisung bereitgestellt wird.
  • Wenn die Datenmenge, die in der Kanalpufferdaten-mehrfach-verschieben-Anweisung angefordert wird, größer ist als die Datenmenge, die bei dem Kanalpuffer empfangen wird, werden die Daten bei einem Beispiel mit Füllwörtern von null bis zur angeforderten Datenmenge erweitert.
  • Wenn Daten gespeichert werden, werden sie aus einer Liste von Hauptspeicheradressen verschoben, die in der Kanalpufferdaten-mehrfach-verschieben-Anweisung bereitgestellt wird. Das Kanal-Teilsystem setzt „Endgültige Daten aktiv“ 730 bei dem Kanalpuffer, um anzugeben, dass der letzte Nachrichtendatenblock erfolgreich gesendet wurde.
  • Die Empfangsfunktion wird z.B. synchron zu einer Kanalpuffer-signalisierenden-Anweisung (SCB-Anweisung) 732 beendet die einen Nachrichtenantwortblock 734 sendet. Bei einem Beispiel werden die Verarbeitung des Setzens des Endgültige-Daten-aktiv-Indikators, des Beendens der Empfangsfunktion und des Sendens des Nachrichtenantwortblocks auf der Grundlage einer Abfrageschleife in einer Kanalpuffer-testen-Anweisung 736 durchgeführt. Zum Beispiel wird die Kanalpuffer-testen-Anweisung ausgeführt, die einen Kanalpufferinformationsblock erstellt, der sich beispielhaft im Hauptspeicher befindet. DA Kanalpufferinformationsblock enthält ein Daten-aktiv-Steuerelement, das einen Endgültige-Daten-aktiv-Indikator enthält. Dieser Indikator wird geprüft, und wenn er so gesetzt ist, dass er angibt, dass der letzte zu dem Befehl gehörige Nachrichtendatenblock gesendet wurde, wird die Kanalpuffer-signalisierenden-Anweisung ausgeführt. Anderenfalls wird die Kanalpuffer-testen-Anweisung erneut ausgeführt, um den Endgültige-Daten-aktiv-Indikator zu prüfen.
  • Bei einem Beispiel werden Antwortinformationen aus dem Nachrichtenantwortblockbereich im Hauptspeicher in den Kanalpuffer verschoben. Der Nachrichtenantwortblockbereich wird anhand der Adresse des Kanalpufferoperationsblockpaars und der Kanalpuffernummer bei dem Kanalpuffer gefunden. Die Parität der Kanalpuffernummer bestimmt, ob der gerade oder ungerade Nachrichtenblockbereichs-Offset verwendet wird.
  • Bei einem Beispiel umfasst ein Nachrichtenantwortblock für einen primären Empfängerpuffer zum Beispiel:
  • Antwortzählwert: Dieses Feld (z.B. die Bits 21 bis 31 von Wort 0) legt die Anzahl von aussagekräftigen Bytes fest, die in dem Nachrichtenantwortblock gespeichert werden. Bei dem Antwortzählwert handelt es sich um eine vorzeichenlose binärer Ganzzahl. Es handelt sich um ein Vielfaches von z B. vier in einem Bereich von z.B. 20 bis 1024. Der Antwortzählwert in Wörtern soll der Länge in dem Nachrichtenoperationswort von „Kanalpuffer signalisierenden“ entsprechen.
  • Zuletzt-verwendeter-Pfad-Maske: Dieses Feld (z.B. die Bits 0 bis 7 von Wort 1) ist für die Empfangsfunktion nicht von Bedeutung.
  • Datenzählwert: Dieses Feld (z.B. die Bits 15 bis 23 von Wort 1) legt die Anzahl von z B. 256-Byte-Blöcken fest, die in den Nachrichtendatenblöcken gespeichert sind. Bei dem Datenzählwert handelt es sich um eine vorzeichenlose binäre Ganzzahl in einem Bereich von z.B. 0 bis 256. Der Datenzählwert darf nicht größer als das Produkt aus Übertragungsgröße und Übertragungszählwert in dem Nachrichtenbefehlsblock sein. Der Datenzählwert ist z.B. null, wenn der Schreibindikator in dem Nachrichtenbefehlsblock z.B. eins ist.
  • Antwortzeitangabe: Dieses Feld (z.B. die Bits 0 bis 23 von Wort 2) enthält die Antwortzeitangabe. Wenn das Qualifikationsmerkmal der Antwortzeitangabe z.B. null ist, wird dieses Feld auf null gesetzt. Wenn das Qualifikationsmerkmal der Antwortzeitangabe z.B. eins ist, enthält dieses Feld z.B. eine vorzeichenlose 24-Bit-Ganzzahl, die die Zeitspanne angibt, um die der Befehl durch die Einrichtung zum zeitlichen Sortieren von Nachrichten verzögert wurde. Der Wert in diesem Feld entspricht ausgewählten Bits (z.B. den Bits 32 bis 55) einer Tagesuhrzeit, wobei das niedrigstwertige Bit z.B. 0,0625 Mikrosekunden darstellt. Wenn das Qualifikationsmerkmal der Antwortzeitangabe z.B. 2 ist, enthält dieses Feld ausgewählte Bits (z.B. die Bits 32 bis 35) der lokalen Tagesuhrzeit, zu der „Kanalpuffer signalisieren“ ausgeführt wurde. Die Antwortzeitangabe wird gesetzt, wenn z.B. die Einrichtung zum zeitlichen Sortieren installiert ist und das zeitliche Sortieren von Nachrichten wie durch den Indikator der zeitlichen Sortierung von Nachrichten in den Nachrichtenkopfdaten angegeben angefordert wird.
  • Qualifikationsmerkmal der Antwortzeitangabe: Dieses Feld (z.B. die Bits 24 bis 25 von Wort 2) enthält bei einem Beispiel z.B. eine vorzeichenlose Ganzzahl, die den Inhalt des Antwortzeitangabefelds angibt:
    0 Die Antwortzeitangabe ist nicht aussagekräftig.
    1 Die Antwortzeitangabe enthält die Zeitspanne, um die die Nachricht durch den Empfängerkanal verzögert wurde.
    2 Die Antwortzeitangabe enthält ausgewählte Bits (z.B. die Bits 32 bis 35) der Tagesuhrzeit, zu der „Kanalpuffer signalisieren“ ausgeführt wurde, um die Empfangsfunktion zu beenden.
    3 reserviert
  • Verbindungsattribut: Dieses Feld (z.B. Bit 26 von Wort 2) enthält eine Angabe der Verbindung, auf der die Antwort empfangen wurde.
  • Verdoppeln-deaktiviert-Indikator: Der Wert des Verdoppeln-deaktiviert-Indikators (z.B. Bit 28 von Wort 2) beschreibt das Ergebnis des Einzeleintrag- oder Listenform-Verdopplungsprozesses bei verdoppelten Befehlen.
  • Aktueller Signalgruppenindex: Wenn Verdopplungssignale für einen Befehl ausgegeben werden, wird der Wert des aktuellen Signalgruppenindexobjekts in dem Signalisierungsvektor, der dem Wiederholungsindex zugehörig ist, in diesem Feld gespeichert (z.B. die Bits 30 bis 31 von Wort 2). Wenn beispielhaft für den Befehl keine Verdopplungssignale erzeugt werden, werden Nullen in diesem Feld gespeichert.
  • Antwort: Dieses Feld (z.B. die Wörter 4 bis 25) enthält Informationen, die das Ergebnis der Operation zusammenfassen.
  • Zusätzliche, weniger und/oder andere Felder und/oder Werte der Felder können enthalten sein.
  • Nachdem die Antwort gesetzt wurde, wird der Kanalpuffer in der Leerlaufzustand versetzt und kann erneut verwendet werden.
  • Das Abfragen in Bezug auf Arbeit (unter Verwendung z.B. der Kanalpuffer-suchen-Anweisung, wie vorstehend beschrieben) wird kontinuierlich systemweit (z.B. auf Konfigurationsbasis) durchgeführt. Zwar ermöglicht das Abfragen, Latenz und Gesamt-Befehlsverarbeitungszeit im Vergleich zu einem unterbrechungsgesteuerten Umschalten von Programmkontexten zu minimieren, benötigt jedoch Zeit. Daher wird gemäß einem oder mehreren Aspekten der vorliegenden Erfindung anstelle des systemweiten Abfragens das Abfragen an einzelnen Pufferzusammenfassungsgruppen durchgeführt. Zum Beispiel werden die Puffer in eine Mehrzahl von Pufferzusammenfassungsgruppen aufgeteilt (bei einem Beispiel in bis zu 32 Gruppen, bei anderen Ausführungsformen können jedoch zusätzliche oder weniger Gruppen vorliegen). Bei einem Beispiel steuert die Kopplungseinrichtung das Zuweisen von Puffern (mindestens ausgewählte Puffer wie z.B. primäre Empfängerpuffer) zu Pufferzusammenfassungsgruppen. Die Kopplungseinrichtung hat Kenntnis von der Konfigurationstopologie zur Prozessorauswahl und der Affinität zu Gruppen. Das System (z.B. Architektur wie z.B. Firmware) stellt die Fähigkeit bereit, Zustandsänderungen von Kopplungseinrichtungen zur Verarbeitung innerhalb jeder Gruppe zusammenzufassen und von anderen Gruppen zu trennen, wodurch der Wirkungsgrad des Abfragens verbessert wird. Beispielhaft beruht das Zuweisen zum Beispiel auf der Verwendung der Puffer durch die Prozessoren. Bei einem Beispiel nutzen Prozessoren, die sich in unmittelbarer Nähe befinden, Puffer gemeinsam, und diese Puffer werden einer gleichen Pufferzusammenfassungsgruppe zugewiesen. Dies erleichtert das Verwalten von Daten in den Caches, wodurch Latenz beim Aktualisieren der Caches verringert wird. Weitere Einzelheiten hinsichtlich der Verarbeitung eines primären Empfängerpuffers, in dem das Abfragen eingeschränkt ist, werden unter Bezugnahme auf 7B beschrieben.
  • Gemäß einem oder mehreren Aspekten wird anstelle des Abfragens der Kanalpuffer-suchen-Anweisung die Kanalpuffer-suchen-Anweisung erst ausgeführt 750, nachdem z.B. ein Befehl-aktiv-Zusammenfassungsindikator einer Pufferzusammenfassungsgruppe gesetzt wurde 752. Zum Beispiel wird das Befehl-aktiv-Zusammenfassungsbit geprüft (z.B. direkt, ohne dass eine entworfene Anweisung ausgeführt werden muss), und wenn es gesetzt ist, wird die Kanalpuffer-suchen-Anweisung für die Puffer ausgeführt, die der Pufferzusammenfassungsgruppe zugehörig sind, die den gesetzten Indikator aufweist. Auf der Grundlage des Feststellens, dass Arbeit in einem der Puffer der Pufferzusammenfassungsgruppe durchgeführt werden muss, d.h., ein Befehl ist eingetroffen 754, wird ein Nachrichtenbefehlsblock gespeichert 756, und ein Befehl-aktivIndikator wird gesetzt 758. Danach werden wie oben beschrieben die eingetroffenen Daten verschoben. Zum Beispiel wird eine Steuerblockdaten-mehrfach-verschieben-Anweisung ausgeführt 760, wenn die Daten eintreffen 762 und die Daten gespeichert werden 764. Wie bisher werden Adressliste und Wiederholungsversuche durch z.B. die Kanalhardware 766 abgearbeitet. Danach wird gemäß einem oder mehreren Aspekten der vorliegenden Erfindung in der entsprechenden Pufferzusammenfassungsgruppe ein Endgültige-Daten-aktiv-Zusammenfassungsindikator 770 gesetzt. Zum Beispiel wird bei Kanälen, die erfordern, dass z.B. alle Daten in dem Kanalpuffer empfangen werden müssen, bevor die Kanalpufferdaten-mehrfach-verschieben-Anweisung mit dem Bedingungscode 0 beendet wird und die Befehlsdaten synchron verschoben werden, das Endgültige-Daten-aktiv-/Daten-aktiv-Zusammenfassungsbit in dem Kanalpufferzusammenfassungs-Antwortbereich für die zum Zeitpunkt der Kanalpuffer-vorbereiten-Anweisung definierte Nummer der Pufferzusammenfassungsgruppe auf eins gesetzt, wenn alle Daten für den Befehl bei dem Kanalpuffer eingetroffen sind.
  • Das Kanal-Teilsystem setzt „Endgültige Daten aktiv“ 782 bei dem Kanalpuffer, um anzugeben, dass die Inhalte des Nachrichtendatenblocks im Hauptspeicher gültig sind und es sich um den letzten Nachrichtendatenblock handelt, der in Zusammenhang mit dem Befehl steht. Bei Kanälen, die nicht erfordern, dass z.B. alle Daten in dem Kanalpuffer vor der Ausführung der Kanalpufferdaten-mehrfach-verschieben-Anweisung empfangen werden müssen, wird das Endgültige-Daten-aktiv-/Daten-aktiv-Zusammenfassungsbit in dem Kanalpufferzusammenfassungs-Antwortbereich für die zum Zeitpunkt der Kanalpuffer-vorbereiten-Anweisung definierte Nummer der Pufferzusammenfassungsgruppe ebenfalls auf eins gesetzt, wenn alle Daten für den Befehl im Hauptspeicher gültig sind.
  • Auf der Grundlage dessen, dass der Zusammenfassungsindikator gesetzt ist 780, wird der Endgültige-Daten-Aktivindikator gesetzt 782, eine Kanalpuffer-signalisieren-Anweisung wird ausgeführt 784, und die Antwort wird gesendet 786.
  • Daher ist gemäß einem oder mehreren Aspekten der vorliegenden Erfindung bei einer bestimmten Ausführungsform die Kanalpuffer-suchen-Anweisung auf eine ausgewählte Pufferzusammenfassungsgruppe beschränkt, und das Abfragen von LCB wird durch das Prüfen eines Zusammenfassungsindikators (z.B. des Befehl-aktiv-Zusammenfassungsindikators) ersetzt, um zu ermitteln, ob die Puffer der ausgewählten Pufferzusammenfassungsgruppe in Bezug auf Arbeit geprüft werden sollen. Die Kanalpuffer-suchen-Anweisung wird auf der Grundlage einer bestätigten Zustandsänderung ausgeführt, wodurch Latenz gespart und die Verarbeitungsgeschwindigkeit verbessert werden. Bei einem weiteren Aspekt kann, wenn keine Angabe dahingehend vorliegt, dass Arbeit eingetroffen ist, „Kanalpuffer suchen“ für alle Puffer der Konfiguration wie bisher ausgeführt werden, um sicherzustellen, dass keine Nachrichten verloren gehen.
  • Ferner wird bei einem oder mehreren Aspekten die Verwendung von Vektoren erleichtert, um zu ermitteln, ob ein Ereignis aufgetreten ist. Eine Kopplungseinrichtung verwendet einen Vektor, bei dem es sich zum Beispiel um eine Anordnung von Bits handelt, um bestimmte Ereignisse anzugeben und/oder um festzustellen, dass bestimmte Ereignisse aufgetreten sind. Zum Beispiel kann eine Kopplungseinrichtung ein Vektorbit setzen, um anzugeben, dass sie sich an einem bestimmten Punkt in der Verarbeitung befindet, und eine weitere Kopplungseinrichtung, die zum Beispiel zum Verdoppeln der anderen Kopplungseinrichtung verwendet wird (z.B. Verwalten eines zweiten Exemplars von Daten und/oder Kopplungseinrichtungsstrukturen) kann das Vektorbit prüfen, um sicherzustellen, dass sie sich am gleichen Punkt befinden. Es bestehen außerdem andere Arten von Ereignissen, die durch Verwendung eines Vektors angegeben werden können.
  • Die Verwendung eines Vektors wird bei einem oder mehreren Aspekten der vorliegenden Erfindung erleichtert, indem Pufferzusammenfassungsgruppen und Zusammenfassungsindikatoren verwendet werden, um Latenz zu verringern und die Verarbeitungsgeschwindigkeit zu verbessern. Da die Kopplungseinrichtung nicht direkt auf den Vektor zugreifen kann, sondern stattdessen über das Ausführen einer Anweisung wie z.B. einer Vektoreinträge-testen-Anweisung zugreifen kann, wird die Verarbeitung verbessert, indem die Ausführung der Anweisung auf der Grundlage eines Zusammenfassungsindikators eingeschränkt wird, der angibt, dass eine Änderung an einem Vektoreintrag stattgefunden hat. Das Abfragen des Vektors unter Verwendung einer oder mehrerer Anweisungen ist nicht unbedingt erforderlich, kann aber bei Bedarf unter bestimmten Umständen bereitgestellt werden.
  • Ein oder mehrere Aspekte der vorliegenden Erfindung sind untrennbar mit der Computertechnologie verbunden und erleichtern die Verarbeitung in einem Computer, indem sie dessen Leistung verbessern. Durch Bereitstellen von Pufferzusammenfassungsgruppen und Zuweisen bestimmter Puffer (und daher bestimmter Prozessoren) zu den Pufferzusammenfassungsgruppen können Ereignisse erkannt werden, indem anstelle des Durchführens von Abfragen Zusammenfassungsindikatoren der Pufferzusammenfassungsgruppen überprüft werden, wodurch Latenz und Verwendung von Systemressourcen verringert und die Verarbeitungsgeschwindigkeit verbessert werden.
  • Weitere Einzelheiten einer Ausführungsform, die die Verarbeitung in einer Datenverarbeitungsumgebung erleichtert, da sie eine oder mehrere Aspekte der vorliegenden Erfindung betrifft, sind unter Bezugnahme auf die 8A bis 8B beschrieben.
  • Unter Bezugnahme auf 8A wird bei einer Ausführungsform auf eine Pufferzusammenfassungsgruppe einer Mehrzahl von Pufferzusammenfassungsgruppen zugegriffen 800. Die Pufferzusammenfassungsgruppe umfasst einen oder mehrere Zusammenfassungsindikatoren für einen oder mehrere Puffer, die der Pufferzusammenfassungsgruppe 802 zugewiesen sind. Ein Zusammenfassungsindikator des einen oder der mehreren Zusammenfassungsindikatoren der Pufferzusammenfassungsgruppe wird geprüft, um zu ermitteln, ob bei mindestens einem Puffer des einen oder der mehreren Puffer, die der Pufferzusammenfassungsgruppe 804 zugewiesen sind, ein Ereignis aufgetreten ist. Auf der Grundlage des Prüfens, das angibt, dass das Ereignis aufgetreten ist, werden eine oder mehrere Maßnahmen durchgeführt 806.
  • Beim Verwenden von Zusammenfassungsindikatoren in einer Pufferzusammenfassungsgruppe zum Prüfen in Bezug auf Arbeit oder Ereignisse erfolgt das Prüfen spezifisch für bestimmte Puffer, wodurch die Verwendung von Systemressourcen verringert, die Verarbeitungsgeschwindigkeit verbessert und die Systemverarbeitung erleichtert werden, unter anderem die Verarbeitung von Kopplungseinrichtungen. Ferner ist das Prüfen eines Indikators schneller und einfacher als das Ausführen einer Anweisung zum Prüfen, ob ein Puffer Arbeit zu erledigen hat.
  • Bei einer Ausführungsform werden der eine oder die mehreren Puffer zu der Pufferzusammenfassungsgruppe 808 zugewiesen. Das Zuweisen des einen oder der mehreren Puffer zu der Pufferzusammenfassungsgruppe umfasst zum Beispiel das Verwenden einer Kanalpuffer-vorbereiten-Anweisung, um den einen oder die mehreren Puffer zu der Pufferzusammenfassungsgruppe zuzuweisen und den einen oder die mehreren Puffer auf den Empfang einer oder mehrerer Nachrichten 810 vorzubereiten.
  • Bei einer Ausführungsform werden der eine oder die mehreren Puffer auf der Grundlage der Ausführung einer Nachricht-senden-Anweisung zu der Pufferzusammenfassungsgruppe 812 zugewiesen. Die Nachricht-senden-Anweisung soll einen Puffer des einen oder der mehreren Puffer verwenden, um eine Nachricht 814 zu senden.
  • Beispielhaft umfasst ein Ereignis den Empfang einer Nachricht in einem Puffer des einen oder der mehreren Puffer 816, und das Durchführen der einen oder der mehreren Maßnahmen umfasst das Durchführen einer Verarbeitung, die die in dem Puffer 818 enthaltene Nachricht betrifft.
  • Bei einem Beispiel umfasst unter Bezugnahme auf 8B ein Ereignis eine Angabe, dass die Verarbeitung von Daten im Zusammenhang mit der Nachricht beendet ist 820, und das Durchführen der einen oder der mehreren Maßnahmen umfasst das Senden einer Antwort, die angibt, dass die Daten verarbeitet wurden 822.
  • Bei einer Ausführungsform ersetzt das Prüfen eine Abfrageoperation über eine Anweisung zum Suchen nach Arbeit in Puffern der Datenverarbeitungsumgebung 824. Das Entfernen der Abfrageoperation erhöht die Verarbeitungsgeschwindigkeit und verringert die Verwendung von Systemressourcen.
  • Bei einer Ausführungsform wird eine Zuweisung eines ausgewählten Puffers des einen oder der mehreren Puffer dynamisch neu zugewiesen 826, wobei der ausgewählte Puffer aus einer Pufferzusammenfassungsgruppen der Mehrzahl von Pufferzusammenfassungsgruppen zu einer anderen Pufferzusammenfassungsgruppe der Mehrzahl von Pufferzusammenfassungsgruppen 828 neu zugewiesen wird. Die Neuzuweisung von Puffern zu Pufferzusammenfassungsgruppen stellt Flexibilität bereit und ermöglicht, dass ausgewählte Prozessoren gruppiert werden können, die die Puffer verwenden, wodurch erweiterte Zwischenspeicherungseinrichtungen bereitgestellt werden.
  • Beispielhaft gehören zu dem einen oder den mehreren Zusammenfassungsindikatoren ein Befehl-aktiv-Zusammenfassungsindikator, ein Sekundäres-Eintreffen-Zusammenfassungsindikator, ein Antwort-aktiv-Zusammenfassungsindikator, ein Endgültige-Daten-aktiv-Zusammenfassungsindikator und ein Primäre-Beendigung-Zusammenfassungsindikator 830.
  • Bei einer Ausführungsform ist ein Pufferzusammenfassungs-Antwortbereich an einem ausgewählten Speicherort 832 definiert, an dem der Pufferzusammenfassungs-Antwortbereich die Mehrzahl von Pufferzusammenfassungsgruppen 834 umfassen soll.
  • Andere Varianten und Ausführungsformen sind möglich.
  • Bei einem oder mehreren Aspekten können Puffervorgänge und neue Statusänderungsangaben auf mehrere Pufferzusammenfassungsgruppen aufgeteilt werden, bei denen es sich um eine Teilmenge der konfigurationsweiten Einrichtung handelt. Beispielhaft werden Empfängerpuffer zum Beispiel zum Zeitpunkt einer Kanalpuffer-vorbereiten-Anweisung einer bestimmten Pufferzusammenfassungsgruppe zugeordnet, und Verursacherpuffer werden zum Zeitpunkt jeder Nachricht-senden-Anweisung oder zum Zeitpunkt jeder Kanalpuffer-signalisieren-Anweisung einer bestimmten Pufferzusammenfassungsgruppe zugeordnet. Eine Erkennung eines empfangenen Befehls (z.B. einer Kanalpuffer-suchen-Anweisung) kann auf bestimmte Puffer beschränkt werden, die einer festgelegten Pufferzusammenfassungsgruppe zugewiesen sind. Auf diese Weise kann Arbeit gefunden und auf ausgewählte Prozessoren verteilt werden, wobei die Zuweisung einer Teilmenge von Prozessoren zu einer Pufferzusammenfassungsgruppe beibehalten wird.
  • Bei einem oder mehreren Aspekten wird eine Zusammenfassungsangabe für einen Befehl bereitgestellt, der bei einem Puffer empfangen wurde, der einer bestimmten Pufferzusammenfassungsgruppe zugewiesen ist, wodurch ermöglicht wird, das Abfragen der Kanalpuffer-suchen-Anweisung zu entfernen. Ferner wird eine Zusammenfassungsangabe von Zustandsänderungen bei Puffern bereitgestellt, die einer bestimmten Zusammenfassungsgruppe zugewiesen sind, wodurch das Abfragen auf zum Beispiel nur aktive Puffer beschränkt wird, die einer Pufferzusammenfassungsgruppe zugewiesen sind, wobei sichergestellt ist, dass mindestens ein Puffer verarbeitet werden muss. Das Abfragen von Programmen ist zum Beispiel auf eine einzelne Angabe und auf eine Auswertung z.B. nur dann beschränkt, wenn eine Änderung auftritt. Bei einem Beispiel wird eine Programmauswertung verwendet, um den/die bestimmten Puffer zu ermitteln, der/die einer Zustandsänderung unterlag/en, vorausgesetzt, dass möglicherweise mehrere Puffer vorliegen.
  • Bei einem oder mehreren Aspekten wird eine Zusammenfassungsangabe für registrierte Vektorzustandsänderungen für eine festgelegte Pufferzusammenfassungsgruppe bereitgestellt. Dies beschränkt das Abfolgen auf z.B. nur aktive Vektoren, die einer Pufferzusammenfassungsgruppe zugewiesen sind, wobei sichergestellt ist, dass mindestens ein Vektor verarbeitet werden muss.
  • Bei einem oder mehreren Aspekten werden Leistungsmessungen bereitgestellt, die zum Beispiel die einem Prozessor zugewiesene Pufferzusammenfassungsgruppe und/oder eine Festlegung der Anzahl der durch den Prozessor ausgelösten Befehle umfassen. Zusätzliche, weniger und/oder andere Leistungsmessungsinformationen können ebenfalls bereitgestellt werden.
  • Aspekte der vorliegenden Erfindung können durch viele Arten von Datenverarbeitungsumgebungen verwendet werden. Eine weitere Ausführungsform einer Datenverarbeitungsumgebung, bei der ein oder mehrere Aspekte der vorliegenden Erfindung einbezogen und verwendet werden, wird unter Bezugnahme auf 9A beschrieben. Bei diesem Beispiel enthält eine Datenverarbeitungsumgebung 36 zum Beispiel eine native Zentraleinheit (CPU) 37, einen Speicher 38 und eine oder mehrere Eingabe/Ausgabe-Einheiten und/oder Schnittstellen 39, die untereinander zum Beispiel über einen oder mehrere Busse 40 und/oder andere Verbindungen verbunden sind. Beispielhaft kann die Datenverarbeitungsumgebung 36 einen PowerPC®-Prozessor, der bei International Business Machines Corporation, Armonk, New York, erhältlich ist; einen HP Superdome mit Prozessoren des Typs Intel® Itanium® II, der bei Hewlett Packard Co., Palo Alto, Kalifornien, erhältlich ist; und/oder andere Computer enthalten, die auf Architekturen beruhen, die bei International Business Machines Corporation, Hewlett Packard, Intel Corporation, Oracle und/oder anderen erhältlich sind. PowerPC ist eine Marke oder eingetragene Marke von International Business Machines Corporation in mindestens einem juristischen Geltungsbereich. Intel und Itanium sind Marken oder eingetragene Marken von Intel Corporation oder deren Tochterunternehmen in den Vereinigten Staaten und anderen Ländern.
  • Die native Zentraleinheit 37 enthält ein oder mehrere native Register 41 wie z.B. ein oder mehrere Universalregister und/oder ein oder mehrere Spezialregister, die während der Verarbeitung innerhalb der Umgebung verwendet werden. Diese Register enthalten Informationen, die den Zustand der Umgebung zu einem beliebigen Zeitpunkt wiedergeben.
  • Darüber hinaus führt die native Zentraleinheit 37 Anweisungen und Code aus, die im Speicher 38 gespeichert sind. Bei einem bestimmten Beispiel führt die Zentraleinheit Emulatorcode 42 aus, der im Speicher 38 gespeichert ist. Dieser Code ermöglicht der in einer Architektur konfigurierten Datenverarbeitungseinheit, eine andere Architektur zu emulieren. Zum Beispiel ermöglicht der Emulatorcode 42 Computern, die auf anderen Architekturen als der z/Architecture-Anweisungssatzarchitektur beruhen, wie z.B. PowerPC-Prozessoren, HP-Superdome-Servern oder anderen, die z/Architecture-Anweisungssatzarchitektur zu emulieren und Software und Anweisungen auszuführen, die auf der Grundlage der z/Architecture-Anweisungssatzarchitektur entwickelt wurden.
  • Weitere Einzelheiten, die den Emulatorcode 42 betreffen, sind unter Bezugnahme auf 9B beschrieben. Im Speicher 38 gespeicherte Gastanweisungen 43 weisen Softwareanweisungen (die z.B. im Zusammenhang mit Maschinenanweisungen stehen) auf, die zur Ausführung in einer anderen Architektur als der der nativen CPU 37 entwickelt wurden. Zum Beispiel können die Gastanweisungen 43 entwickelt worden sein, um auf einem Prozessor ausgeführt zu werden, der auf der z/Architecture-Anweisungssatzarchitektur beruht, werden aber stattdessen auf der nativen CPU 37 emuliert, bei der es sich zum Beispiel um einen Intel-Itanium-II-Prozessor handeln kann. Bei einem Beispiel enthält der Emulatorcode 42 eine Anweisungsabrufroutine 44, um eine oder mehrere Gastanweisungen 43 aus dem Speicher 38 zu erhalten und wahlweise eine lokale Pufferung für die erhaltenen Anweisungen bereitzustellen. Außerdem enthält er eine Anweisungsübersetzungsroutine 45, um die Art von Gastanweisung zu ermitteln, die erhalten wurde, und die Gastanweisung in eine oder mehrere entsprechende native Anweisungen 46 zu übersetzen. Diese Übersetzung enthält zum Beispiel das Erkennen der Funktion, die durch die Gastanweisung durchzuführen ist, und das Auswählen der nativen Anweisung(en), um diese Funktion durchzuführen.
  • Ferner enthält der Emulatorcode 42 eine Emulationssteuerroutine 47, um zu bewirken, dass die nativen Anweisungen ausgeführt werden. Die Emulationssteuerroutine 47 kann die native CPU 37 veranlassen, eine Routine aus nativen Anweisungen auszuführen, die eine oder mehrere zuvor erhaltene Gastanweisungen emulieren, und zum Abschluss einer derartigen Ausführung die Steuerung an die Anweisungsabrufroutine zurückzugeben, um das Erhalten der nächsten Gastanweisung oder einer Gruppe von Gastanweisungen zu emulieren. Die Ausführung der nativen Anweisungen 46 kann das Laden von Daten aus dem Speicher 38 in ein Register; das Speichern von Daten aus einem Register zurück in den Speicher; oder das Durchführen einer bestimmten Art von Arithmetik- oder Logikoperation umfassen, die durch die Übersetzungsroutine ermittelt wurde.
  • Jede Routine ist zum Beispiel in Software realisiert, die im Speicher gespeichert ist und durch native Zentraleinheit 37 ausgeführt wird. Bei anderen Beispielen sind eine oder mehrere der Routinen oder Operationen in Firmware, Hardware, Software oder in einer bestimmten Kombination davon realisiert. Die Register des emulierten Prozessors können unter Verwendung der Register 41 der nativen CPU oder durch Verwendung von Speicherplätzen im Speicher 38 emuliert sein. Bei Ausführungsformen können sich Gastanweisungen 43, native Anweisungen 46 und Emulatorcode 42 im selben Speicher befinden oder auf unterschiedlichen Speichereinheiten ausgelagert sein.
  • Eine Anweisung, die emuliert werden kann, enthält die hierin gemäß einem oder mehreren Aspekten der vorliegenden Erfindung beschriebenen Anweisungen. Ferner können andere Anweisungen, Befehle, Funktionen, Operationen und/oder ein oder mehrere Aspekte der vorliegenden Erfindung gemäß einem oder mehreren Aspekten der vorliegenden Erfindung emuliert werden.
  • Die vorstehend beschriebenen Datenverarbeitungsumgebungen sind lediglich Beispiele von Datenverarbeitungsumgebungen, die verwendet werden können. Andere Umgebungen, unter anderem und auf diese beschränkt zu sein, nichtpartitionierte Umgebungen, partitionierte Umgebungen, Cloud-Umgebungen und/oder emulierte Umgebungen können verwendet werden; Ausführungsformen sind nicht auf eine beliebige Ausführungsform beschränkt. Zwar sind hierin verschiedene Beispiele von Datenverarbeitungsumgebungen beschrieben, es können jedoch ein oder mehrere Aspekte der vorliegenden Erfindung mit vielen Arten von Umgebungen verwendet werden. Die hierin bereitgestellten Datenverarbeitungsumgebungen sind lediglich beispielhaft.
  • Jede Datenverarbeitungsumgebung ist in der Lage, so konfiguriert zu werden, dass sie einen oder mehrere Aspekte der vorliegenden Erfindung umfasst.
  • Ein oder mehrere Aspekte können das Cloud-Computing betreffen.
  • Es versteht sich, dass diese Offenbarung zwar eine ausführliche Beschreibung des Cloud-Computing enthält, die Realisierung der hierin vorgestellten Lehren jedoch nicht auf eine Cloud-Computing-Umgebung beschränkt ist. Vielmehr können Ausführungsformen der vorliegenden Erfindung in Verbindung mit einer beliebigen anderen Art von Datenverarbeitungsumgebung realisiert werden, die gegenwärtig bekannt ist oder in Zukunft entwickelt wird.
  • Bei Cloud-Computing handelt es sich um ein Modell zur Bereitstellung von Diensten, um einen praktischen und bei Bedarf verfügbaren Netzwerkzugriff auf ein gemeinsam genutztes Reservoir konfigurierbarer Datenverarbeitungsressourcen (z.B. Netzwerke, Netzwerkbandbreite, Server, Verarbeitung, Hauptspeicher, Speicher, Anwendungen, virtuelle Maschinen und Dienste) zu ermöglichen, die bei minimalem Verwaltungsaufwand oder minimaler Interaktion mit einem Anbieter des Dienstes schnell bereitgestellt und freigegeben werden können. Dieses Cloud-Modell kann mindestens fünf Eigenschaften, mindestens drei Dienstmodelle und mindestens vier Einsatzmodelle umfassen.
  • Bei den Eigenschaften handelt es sich um die folgenden:
  • On-demand Self Service (Selbstzuweisung bei Bedarf): Ein Cloud-Kunde kann sich einseitig Datenverarbeitungsfunktionen wie z.B. Serverzeit und Netzwerkspeicher dem Bedarf entsprechend automatisch bereitstellen, ohne dass eine Interaktion von Menschen mit dem Anbieter des Dienstes erforderlich ist.
  • Broad Network Access (umfassender Netzwerkzugriff): Es stehen Funktionen über ein Netzwerk zur Verfügung, auf die der Zugriff über Standardmechanismen erfolgt, die die Verwendung durch heterogene Plattformen Thin- oder Thick-Client-Plattformen (z.B. Mobiltelefone, Notebook-Computer und PDAs) unterstützen.
  • Resource Pooling (Ressourcenbündelung): Die Datenverarbeitungsressourcen des Anbieters werden gebündelt, um mehrere Kunden unter Verwendung eines Mehrfachnutzermodells mit unterschiedlichen physischen und virtuellen Ressourcen zu bedienen, die entsprechend dem Bedarf dynamisch zugewiesen und neu zugewiesen werden. Es besteht eine gefühlte Standortunabhängigkeit in der Weise, dass der Kunde im Allgemeinen keine Kontrolle oder Kenntnis über den genauen Standort der bereitgestellten Ressourcen hat, aber möglicherweise in der Lage ist, den Standort auf einer höheren Abstraktionsebene (z.B. Land, Bundesstaat oder Datenverarbeitungszentrum) anzugeben.
  • Rapid Elasticity (rasche Elastizität): Funktionen können rasch und elastisch bereitgestellt werden, in einigen Fällen automatisch, um den Funktionsumfang schnell nach oben anzupassen, und schnell freigegeben werden, um den Funktionsumfang schnell nach unten anzupassen. Für den Kunden entsteht oftmals der Eindruck, dass die zum Bereitstellen verfügbaren Funktionen unbegrenzt sind und jederzeit in jeder beliebigen Menge gekauft werden können.
  • Measured Service (bemessener Dienst): Cloud-Systeme steuern und optimieren automatisch die Ressourcenverwendung durch Nutzung einer Bemessungsfunktion auf einer bestimmten Abstraktionsebene, die für die Art des Dienstes geeignet ist (z.B. Speicher, Verarbeitung, Bandbreite und aktive Benutzerkonten). Die Ressourcennutzung kann überwacht, gesteuert und gemeldet werden, sodass Transparenz sowohl für den Anbieter als auch den Kunden des genutzten Dienstes besteht.
  • Bei den Dienstmodellen handelt es sich um die folgenden:
  • Software as a Service (SaaS) (Software als Dienst): Die dem Kunden bereitgestellte Funktion besteht darin, die auf einer Cloud-Infrastruktur ausgeführten Anwendungen des Anbieters zu nutzen. Auf die Anwendungen kann von verschiedenen Client-Einheiten aus über eine Thin-Client-Schnittstelle wie z.B. über einen Web-Browser (z.B. auf dem Web beruhende eMail) zugegriffen werden. Der Kunde verwaltet oder steuert die zugrunde liegende Cloud-Infrastruktur, unter anderem Netzwerke, Server, Betriebssysteme, Speicherplatz oder sogar einzelne Anwendungsfähigkeiten, nicht, abgesehen von der möglichen Ausnahme eingeschränkter benutzerspezifischer Konfigurationseinstellungen von Anwendungen.
  • Platform as a Service (PaaS) (Plattform als Dienst): Die dem Kunden bereitgestellte Funktion besteht darin, auf der Cloud-Infrastruktur vom Kunden erzeugte oder erworbene Anwendungen einzusetzen, die unter Verwendung von Programmiersprachen und Programmierwerkzeugen erzeugt wurden, die durch den Anbieter unterstützt werden. Der Kunde verwaltet oder steuert die zugrunde liegende Cloud-Infrastruktur, unter anderem Netzwerke, Server, Betriebssysteme oder Speicherplatz, nicht, hat aber die Kontrolle über die eingesetzten Anwendungen und möglicherweise über Konfigurationen der Hosting-Umgebung der Anwendungen.
  • Infrastructure as a Service (laaS) (Infrastruktur als Dienst): Die dem Kunden bereitgestellte Funktion besteht darin, Verarbeitung, Speicherplatz, Netzwerke und andere grundlegende Datenverarbeitungsressourcen bereitzustellen, wobei der Kunde beliebige Software einsetzen und ausführen kann, zu der Betriebssysteme und Anwendungen gehören können. Der Kunde verwaltet oder steuert die zugrunde liegende Cloud-Infrastruktur nicht, hat aber die Kontrolle über Betriebssysteme, Speicherplatz sowie eingesetzte Anwendungen und möglicherweise eine eingeschränkte Kontrolle über ausgewählte Vernetzungskomponenten (z.B. Host-Firewalls).
  • Bei den Einsatzmodellen handelt es sich um die folgenden:
  • Private Cloud (private Cloud): Die Cloud-Infrastruktur wird ausschließlich für eine Organisation betrieben. Sie kann durch die Organisation oder einen Dritten verwaltet werden und in den Räumen der Organisation oder außerhalb davon vorhanden sein.
  • Community Cloud (Community-Cloud): Die Cloud-Infrastruktur wird von mehreren Organisationen genutzt und unterstützt eine bestimmte Benutzergemeinschaft, die gemeinsame Interessen hat (z.B. Gesichtspunkte im Zusammenhang mit einer Aufgabe, mit Sicherheitsanforderungen, Richtlinien und mit der Einhaltung von Gesetzen und Vorschriften). Sie kann durch die Organisationen oder einen Dritten verwaltet werden und in den Räumen der Organisation oder außerhalb davon vorhanden sein.
  • Public Cloud (öffentliche Cloud): Die Cloud-Infrastruktur wird der allgemeinen Öffentlichkeit oder einer großen Gruppe in einem Industriezweig zur Verfügung gestellt und ist Eigentum einer Organisation, die Cloud-Dienste verkauft.
  • Hybrid cloud (Hybrid-Cloud): Bei der Cloud-Infrastruktur handelt es sich um eine Mischung aus zwei oder mehreren Clouds (Private Cloud, Community Cloud oder Public Cloud), die eigenständige Entitäten bleiben, aber über eine standardisierte oder proprietäre Technologie miteinander verbunden sind, die die Portierbarkeit von Daten und Anwendungen ermöglicht (z.B. Cloud-Zielgruppenverteilung (Cloud Bursting) zum Lastausgleich zwischen Clouds).
  • Eine Cloud-Computing-Umgebung ist dienstorientiert, wobei der Schwerpunkt auf Zustandsunabhängigkeit, geringer Kopplung, Modularität und semantischer Interoperabilität liegt. Im Mittelpunkt des Cloud-Computing steht eine Infrastruktur, die ein Netzwerk aus untereinander verbundenen Knoten umfasst.
  • Unter Bezugnahme auf 10 ist dort eine veranschaulichende Cloud-Computing-Umgebung 50 dargestellt. Wie gezeigt ist, umfasst die Cloud-Computing-Umgebung 50 einen oder mehrere Cloud-Computing-Knoten 52, mit denen von Cloud-Kunden verwendete lokale Datenverarbeitungseinheiten wie z.B. ein Personal Digital Assistent (PDA) oder ein Mobiltelefon 54A, ein Desktop-Computer 54B, ein Notebook-Computer 54C und/oder ein Automobil-Computersystem 54N Daten austauschen können. Die Knoten 52 können untereinander Daten austauschen. Sie können physisch oder virtuell in einem oder mehreren Netzwerken wie z.B. in einer hierin vorstehend beschriebenen Private Cloud, Community Cloud, Public Cloud oder Hybrid Cloud oder in einer Kombination davon gruppiert sein (nicht gezeigt). Dies ermöglicht der Cloud-Computing-Umgebung 50, Infrastruktur, Plattformen und/oder Software als Dienste zu bieten, für die ein Cloud-Kunde keine Ressourcen auf einer lokalen Datenverarbeitungseinheit zu verwalten braucht. Es versteht sich, dass die Arten von in 10 gezeigten Datenverarbeitungseinheiten 54A bis N lediglich veranschaulichend sein sollen und dass die Datenverarbeitungsknoten 52 und die Cloud-Computing-Umgebung 50 über eine beliebige Art von Netzwerk und/oder über eine beliebige Art von Verbindung, die über ein Netzwerk aufgerufen werden kann (z.B. unter Verwendung eines Webbrowsers), mit einer beliebigen Art von computergestützter Einheit Daten austauschen können.
  • Nunmehr unter Bezugnahme auf 11 ist dort ein Satz funktionaler Abstraktionsschichten gezeigt, die durch die Cloud-Computing-Umgebung 50 (10) bereitgestellt werden. Es sollte von vornherein klar sein, dass die in 11 gezeigten Komponenten, Schichten und Funktionen lediglich veranschaulichend sein sollen und Ausführungsformen der Erfindung nicht darauf beschränkt sind. Wie bildlich dargestellt ist, werden die folgenden Schichten und entsprechenden Funktionen bereitgestellt:
  • Eine Hardware- und Softwareschicht 60 umfasst Hardware- und Softwarekomponenten. Zu Beispielen von Hardware-Komponenten gehören:
    • Großrechner 61; auf der RISC-Architektur (RISC = Reduced Instruction Set Computer) beruhende Server 62; Server 63; Blade-Server 64; Speichereinheiten 65; und Netzwerke und Vernetzungskomponenten 66. Bei einigen Ausführungsformen umfassen Softwarekomponenten eine Netzwerk-Anwendungsserversoftware 67 und eine Datenbanksoftware 68.
  • Eine Virtualisierungsschicht 70 stellt eine Abstraktionsschicht bereit, von der aus die folgenden Beispiele von virtuellen Einheiten bereitgestellt sein können: virtuelle Server 71; virtueller Speicher 72; virtuelle Netzwerke 73, unter anderem virtuelle private Netzwerke; virtuelle Anwendungen und Betriebssysteme 74; und virtuelle Clients 75.
  • Bei einem Beispiel kann eine Verwaltungsschicht 80 die nachstehend beschriebenen Funktionen bereitstellen. Eine Ressourcenbereitstellung 81 stellt eine dynamische Beschaffung von Datenverarbeitungsressourcen sowie anderen Ressourcen bereit, die genutzt werden, um Aufgaben innerhalb der Cloud-Computing-Umgebung durchzuführen. Eine Gebührenerfassung und Preisberechnung 82 stellt eine Kostenverfolgung bereit, während Ressourcen innerhalb der Cloud-Computing-Umgebung genutzt werden, sowie eine Abrechnung und Fakturierung der Inanspruchnahme dieser Ressourcen. Bei einem Beispiel können diese Ressourcen Anwendungssoftwarelizenzen umfassen. Eine Sicherheit stellt eine Identitätsüberprüfung für Cloud-Kunden und Aufgaben sowie einen Schutz für Daten und andere Ressourcen bereit. Ein Benutzerportal 83 stellt Kunden und Systemadministratoren einen Zugang zur Cloud-Computing-Umgebung bereit. Eine Dienstgüteverwaltung (Service Level Management) 84 stellt eine Zuordnung und Verwaltung von Cloud-Computing-Ressourcen bereit, sodass die jeweils erforderliche Dienstgüte erreicht wird. Eine Planung und Erfüllung von Dienstgütevereinbarungen 85 (Service Level Agreement (SLA), Servicevertrag) stellt die Vorausplanung für und die Beschaffung von Cloud-Computing-Ressourcen bereit, für die auf der Grundlage eines SLA zukünftige Anforderungen erwartet werden.
  • Eine Betriebslastschicht 90 stellt Beispiele von Funktionalitäten bereit, für die die Cloud-Computing-Umgebung genutzt werden kann. Zu Beispielen von Betriebslasten und Funktionen, die von dieser Schicht aus bereitgestellt werden können, gehören: Zuordnung und Navigation 91; Softwareentwicklung und -verwaltung 92 während des Lebenszyklus; Bereitstellung 93 von Schulungen in virtuellen Schulungsräumen; Verarbeitung 94 von Datenanalysen; Transaktionsverarbeitung 95; und Verarbeitung von Pufferzusammenfassungsgruppen 96.
  • Bei Aspekten der vorliegenden Erfindung kann es sich um ein System, ein Verfahren und/oder ein Computerprogrammprodukt in einem beliebigen möglichen Integrationsgrad technischer Einzelheiten handeln. Das Computerprogrammprodukt kann (ein) durch einen Computer lesbare(s) Speichermedium (oder -medien) enthalten, auf dem/denen durch einen Computer lesbare Programmanweisungen gespeichert ist/sind, um einen Prozessor zu veranlassen, Aspekte der vorliegenden Erfindung auszuführen.
  • Bei dem durch einen Computer lesbaren Speichermedium kann es sich um eine physische Einheit handeln, auf der Anweisungen zur Verwendung durch eine Einheit zur Ausführung von Anweisungen aufbewahrt und gespeichert sein können. Bei dem durch einen Computer lesbaren Speichermedium kann es sich zum Beispiel, ohne auf diese beschränkt zu sein, um eine elektronische Speichereinheit, eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiterspeichereinheit oder eine beliebige geeignete Kombination des Vorstehenden handeln. Eine nicht erschöpfende Liste genauerer Beispiele des durch einen Computer lesbaren Speichermediums umfasst Folgendes: eine transportable Computerdiskette, eine Festplatte, einen Direktzugriffsspeicher (RAM), einen Nur-Lese-Speicher (ROM), einen löschbaren programmierbaren Nur-Lese-Speicher (EPROM oder Flash-Speicher), einen statischen Direktzugriffsspeicher (SRAM), einen transportablen Nur-Lese-Speicher in Form einer Compact Disc (CD-ROM), eine Digital Versatile Disc (DVD), einen Speicherstick, eine Diskette, eine mechanisch codierte Einheit wie z.B. Lochkarten oder erhöhte Strukturen in einer Rille mit darauf aufgezeichneten Anweisungen oder beliebige geeignete Kombinationen des Vorstehenden. Ein durch einen Computer lesbares Speichermedium im hierin verwendeten Sinne ist nicht so auszulegen, dass es sich dabei um flüchtige Signale an sich handelt, beispielsweise um Funkwellen oder sich frei ausbreitende elektromagnetische Wellen, um elektromagnetische Wellen, die sich durch einen Hohlleiter oder andere Übertragungsmedien ausbreiten (z.B. ein Lichtwellenleiterkabel durchlaufende Lichtimpulse) oder um elektrische Signale, die über ein Kabel übertragen werden.
  • Hierin beschriebene durch einen Computer lesbare Programmanweisungen können über ein Netzwerk, zum Beispiel das Internet, ein lokales Netzwerk ein Weitverkehrsnetzwerk und/oder ein kabelloses Netzwerk von einem durch einen Computer lesbaren Speichermedium auf betreffende Datenverarbeitungs-/Verarbeitungseinheiten oder auf einen externen Computer oder eine externe Speichereinheit heruntergeladen werden. Das Netzwerk kann Kupferübertragungskabel, Lichtwellenübertragungsleiter, kabellose Übertragung, Router, Firewalls, Switches, Gateway-Computer und/oder Edge-Server aufweisen. Eine Netzwerkadapterkarte oder eine Netzwerkschnittstelle in der 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 jeweiligen Datenverarbeitungs-/Verarbeitungseinheit weiter.
  • Bei durch einen Computer lesbaren Programmanweisungen zum Ausführen von Operationen der vorliegenden Erfindung kann es sich um Assembler-Anweisungen, ISA-Anweisungen (ISA = 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 sind, unter anderem objektorientierte Programmiersprachen wie z.B. Smalltalk, C++ oder dergleichen sowie prozedurale Programmiersprachen wie z.B. 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 Softwarepaket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. Beim letztgenannten Szenario kann der entfernt angeordnete Computer mit dem Computer des Benutzers über eine beliebige Art von Netzwerk verbunden sein, unter anderem über ein lokales Netzwerk (Local Area Network, LAN) oder über ein Weitverkehrsnetzwerk (Wide Area Network, WAN), oder die Verbindung kann zu einem externen Computer hergestellt sein (zum Beispiel über das Internet unter Nutzung eines Internet-Dienstanbieters (Internet Service Provider)). Bei einigen Ausführungsformen können elektronische Schaltungen, zu denen beispielsweise programmierbare Logikschaltungen, vor Ort programmierbare Gatteranordnungen (Field-Programmable Gate Arrays, FPGA) oder programmierbare Logik-Arrays (PLA) gehören, die durch einen Computer lesbaren Programmanweisungen ausführen, indem Zustandsinformationen der durch einen Computer lesbaren Programmanweisungen genutzt werden, um die elektronische Schaltung zu personalisieren, sodass Aspekte der vorliegenden Erfindung durchgeführt werden.
  • Aspekte der vorliegenden Erfindung sind hierin unter Bezugnahme auf Flussdiagrammdarstellungen und/oder Blockschemata von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es wird klar sein, dass jeder Block der Flussdiagramme und/oder der Blockschemata und Kombinationen von Blöcken in den Flussdiagrammen und/oder Blockschemata mit Hilfe von durch einen Computer lesbaren Programmanweisungen realisiert werden kann bzw. können.
  • Diese Computerprogrammanweisungen können einem Prozessor eines Computers oder anderer programmierbarer Datenverarbeitungsvorrichtungen bereitgestellt werden, um eine Maschine zu erzeugen, sodass die Anweisungen, die über den Prozessor des Computers oder anderer programmierbarer Datenverarbeitungsvorrichtungen ausgeführt werden, Mittel schaffen, um die in einem Block bzw. in den Blöcken des Flussdiagramms bzw. der Flussdiagramme und/oder des Blockschemas bzw. der Blockschemata angegebenen Funktionen/Aktionen zu realisieren. Diese durch einen Computer lesbaren Programmanweisungen können ebenfalls in einem durch einen Computer lesbaren Medium gespeichert sein, das einen Computer, andere programmierbare Datenverarbeitungsvorrichtungen oder andere Einheiten anweisen kann, in einer bestimmten Weise zu funktionieren, sodass das durch einen Computer lesbare Medium mit darauf gespeicherten Anweisungen ein Erzeugnis aufweist, das Anweisungen enthält, die die in einem Block bzw. in den Blöcken der Flussdiagramme und/oder der Blockschemata angegebene Funktion/Aktion realisieren.
  • Die durch einen Computer lesbaren Programmanweisungen können auch in einen Computer, in andere programmierbare Datenverarbeitungsvorrichtungen oder in andere Einheiten geladen werden, um zu bewirken, dass auf dem Computer, auf anderen programmierbaren Vorrichtungen oder anderen Einheiten eine Reihe von Operationen ausgeführt wird, um einen mittels Computer realisierten Prozess zu schaffen, sodass die Anweisungen, die auf dem Computer, auf anderen programmierbaren Vorrichtungen oder Einheiten ausgeführt werden, die in einem Block bzw. in den Blöcken der Flussdiagramme und/oder der Blockschemata angegebenen Funktionen/Aktionen realisieren.
  • Die Flussdiagramme und Blockschemata in den Figuren veranschaulichen die Architektur, Funktionalität und Wirkungsweise möglicher Realisierungsformen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in den Flussdiagrammen bzw. in den Blockschemata ein Modul, ein Segment oder einen Abschnitt von Anweisungen darstellen, das bzw. der eine oder mehrere ausführbare Anweisungen zum Realisieren der angegebenen Logikfunktion bzw. Logikfunktionen aufweist. Bei einigen alternativen Realisierungsformen können die in dem Block angegebenen Funktionen in einer anderen als in der Reihenfolge ausgeführt werden, die in den Figuren angegeben ist. Zum Beispiel können zwei hintereinander gezeigte Blöcke tatsächlich als ein Schritt ausgeführt, gleichzeitig, Wesentlichen gleichzeitig, in einer teilweise oder vollständig zeitlich überlappenden Weise ausgeführt werden, oder die Blöcke können je nach der mit den Blöcken verbundenen Funktionalität manchmal in umgekehrter Reihenfolge ausgeführt werden. Darüber hinaus ist anzumerken, dass jeder Block der Blockschemata und/oder Flussdiagrammdarstellungen sowie Kombinationen von Blöcken in den Blockschemata und/oder Flussdiagrammdarstellungen mit Hilfe zweckgebundener hardwaregestützter Systeme zum Ausführen der angegebenen Funktionen bzw. Aktionen oder mit Hilfe von Kombinationen aus zweckgebundener Hardware und zweckgebundenen Computeranweisungen realisiert werden kann bzw. können.
  • Zusätzlich zu den vorstehenden Ausführungen können ein oder mehrere Aspekte durch einen Dienstanbieter bereitgestellt, angeboten, installiert, verwaltet, gewartet usw. werden, der die Verwaltung von Kundenumgebungen anbietet. Zum Beispiel kann der Dienstanbieter Computercode und/oder eine Computerinfrastruktur schaffen, aufrechterhalten, unterstützen usw., die für einen oder mehrere Kunden einen oder mehrere Aspekte durchführt. Im Gegenzug kann der Dienstanbieter beispielsweise im Rahmen einer Abonnements- und/oder Gebührenvereinbarung eine Bezahlung erhalten. Darüber hinaus oder alternativ kann der Dienstanbieter eine Bezahlung aus dem Verkauf von Werbeinhalten an einen oder mehrere Dritte erhalten.
  • Bei einem Aspekt kann eine Anwendung zum Durchführen einer oder mehrerer Ausführungsformen installiert sein. Um ein Beispiel zu nennen, weist das Installieren einer Anwendung das Bereitstellen einer Computerinfrastruktur auf, die funktionsmäßig so gestaltet ist, dass eine oder mehrere Ausführungsformen durchgeführt werden.
  • Als weiterer Aspekt kann eine Datenverarbeitungsinfrastruktur installiert sein, die das Integrieren von durch einen Computer lesbarem Code in ein Datenverarbeitungssystem aufweist, bei dem der Code in Kombination mit dem Datenverarbeitungssystem in der Lage ist, eine oder mehrere Ausführungsformen durchzuführen.
  • Gemäß einem noch weiteren Aspekt kann ein Prozess zum Integrieren einer Datenverarbeitungsinfrastruktur bereitgestellt sein, der das Integrieren von durch einen Computer lesbarem Code in ein Computersystem aufweist. Das Computersystem weist ein durch einen Computer lesbares Medium auf, bei dem das Computermedium ein oder mehrere Ausführungsformen aufweist. Der Code in Kombination mit dem Computersystem ist in der Lage, eine oder mehrere Ausführungsformen durchzuführen.
  • Zwar werden vorstehend verschiedene Ausführungsformen beschrieben, es handelt sich hierbei jedoch lediglich um Beispiele. Zum Beispiel können Datenverarbeitungsumgebungen anderer Architekturen verwendet werden, um einen oder mehrere Aspekte einzubeziehen und/oder zu verwenden. Ferner können andere Anweisungen, Funktionen und/oder Operationen verwendet werden. Darüber hinaus andere Arten von Registern und/oder andere Register verwendet werden. Viele Variationen sind möglich.
  • Verschiedene Aspekte sind hierin beschrieben. Ferner sind viele Variationen möglich, ohne dass diese eine Abweichung von Aspekten der vorliegenden Erfindung darstellen würden. Es sollte beachtet werden, dass jeder Aspekt oder jedes Merkmal, die hierin beschrieben sind, und Varianten davon mit einem beliebigen anderen Aspekt oder Merkmal kombinierbar sind, sofern diese nicht unvereinbar miteinander sind.
  • Ferner können andere Arten von Datenverarbeitungsumgebungen profitieren und verwendet werden. Beispielsweise ist ein Datenverarbeitungssystem verwendbar, das zum Speichern und/oder Ausführen von Programmcode geeignet ist, das mindestens zwei Prozessoren enthält, die über einen Systembus direkt oder indirekt mit Speicherelementen verbunden sind. Die Speicherelemente enthalten zum Beispiel lokalen Speicher, der während der eigentlichen Ausführung des Programmcodes genutzt wird, Massenspeicher und Cache, die eine zeitweilige Speicherung mindestens eines Teils des Programmcodes bereitstellen, um die Anzahl der Codeabrufe aus dem Massenspeicher während der Ausführung zu verringern.
  • Eingabe/Ausgabe-Einheiten bzw. E/A-Einheiten (unter anderem und ohne auf diese beschränkt zu sein, Tastaturen, Anzeigeeinheiten, Zeigeeinheiten, DASD, Band, CDs, DVDs, USB-Sticks und anderer Speichermedien usw.) können entweder direkt oder über zwischengeschaltete E/A-Steuereinheiten mit dem System verbunden sein. Netzwerkadapter können ebenfalls mit dem System verbunden sein, sodass das Datenverarbeitungssystem über zwischengeschaltete private oder öffentliche Netzwerke mit anderen Datenverarbeitungssystemen, entfernt angeordneten Druckern oder Speichereinheiten verbunden werden kann. Modems, Kabelmodems und Ethernet-Karten sind nur einige der erhältlichen Arten von Netzwerkadaptern.
  • Die hierin verwendete Terminologie dient ausschließlich zur Beschreibung bestimmter Ausführungsformen und ist nicht als Einschränkung gedacht. Im hierin verwendeten Sinne schließen die Einzahlformen „ein/eine“ und „der/die/das“ auch die Pluralformen ein, sofern im Kontext nicht ausdrücklich etwas anderes angegeben ist. Es versteht sich des Weiteren, dass die Begriffe „weist auf“ bzw. „aufweisen/aufweisend“ bei Verwendung in dieser Beschreibung das Vorhandensein angegebener Merkmale, Ganzzahlen, Schritte, Operationen, Elemente und/oder Komponenten bezeichnen, jedoch das Vorhandensein oder die Hinzufügung eines bzw. einer oder mehrerer anderer Merkmale, Ganzzahlen, Schritte, Operationen, Elemente, Komponenten und/oder Gruppen davon nicht ausschließen.
  • Die entsprechenden Strukturen, Materialien, Aktionen und Äquivalente aller Mittel bzw. Schritt-plus-Funktion-Elemente (Step plus Function Elements) in den folgenden Ansprüchen sollen gegebenenfalls alle Strukturen, Materialien oder Aktionen zur Ausführung der Funktion in Verbindung mit anderen ausdrücklich beanspruchten Elementen mit einschließen. Die Beschreibung einer oder mehrerer Ausführungsformen soll der Veranschaulichung und Beschreibung dienen, ist jedoch nicht als vollständig oder auf die offenbarte Form beschränkt gedacht. Viele Modifikationen und Variationen sind für Fachleute klar. Die Ausführungsform wurde gewählt und beschrieben, um verschiedene Aspekte und die praktische Anwendung auf bestmögliche Weise zu erklären und anderen Fachleuten das Verständnis verschiedener Ausführungsformen mit verschiedenen Abänderungen für die betreffende vorgeschlagene Verwendung zu ermöglichen.

Claims (20)

  1. Computerprogrammprodukt zum Erleichtern der Verarbeitung innerhalb einer Datenverarbeitungsumgebung, wobei das Computerprogrammprodukt aufweist: ein oder mehrere durch einen Computer lesbare Speichermedien und Programmanweisungen, die zusammen auf dem einen oder den mehreren durch einen Computer lesbaren Speichermedien gespeichert sind, um ein Verfahren durchzuführen, das aufweist: Zugreifen auf eine Pufferzusammenfassungsgruppe einer Mehrzahl von Pufferzusammenfassungsgruppen, wobei die Pufferzusammenfassungsgruppe einen oder mehrere Zusammenfassungsindikatoren für einen oder mehrere Puffer umfasst, die der Pufferzusammenfassungsgruppe zugewiesen sind; Prüfen eines Zusammenfassungsindikators des einen oder der mehreren Zusammenfassungsindikatoren der Pufferzusammenfassungsgruppe, um zu ermitteln, ob bei mindestens einem Puffer des einen oder der mehreren Puffer, die der Pufferzusammenfassungsgruppe zugewiesen sind, ein Ereignis aufgetreten ist; und Durchführen einer oder mehrerer Maßnahmen auf der Grundlage des Prüfens, das angibt, dass das Ereignis aufgetreten ist.
  2. Computerprogrammprodukt nach Anspruch 1, wobei das Verfahren ferner das Zuweisen des einen oder der mehreren Puffer zu der Pufferzusammenfassungsgruppe umfasst.
  3. Computerprogrammprodukt nach Anspruch 2, wobei das Zuweisen des einen oder der mehreren Puffer zu der Pufferzusammenfassungsgruppe das Verwenden einer Kanalpuffer-vorbereiten-Anweisung umfasst, um den einen oder die mehreren Puffer zu der Pufferzusammenfassungsgruppe zuzuweisen und den einen oder die mehreren Puffer auf den Empfang einer oder mehrerer Nachrichten vorzubereiten.
  4. Computerprogrammprodukt nach Anspruch 1, wobei der eine oder die mehreren Puffer zu der Pufferzusammenfassungsgruppe auf der Grundlage der Ausführung einer Nachricht-senden-Anweisung zugewiesen werden, wobei die Nachricht-senden-Anweisung einen Puffer des einen oder der mehreren Puffer verwenden muss, um die Nachricht senden.
  5. Computerprogrammprodukt nach Anspruch 1, wobei das Ereignis den Empfang einer Nachricht in einem Puffer des einen oder der mehreren Puffer umfasst und das Durchführen der einen oder der mehreren Maßnahmen das Durchführen einer Verarbeitung umfasst, die die in dem Puffer enthaltene Nachricht betrifft.
  6. Computerprogrammprodukt nach Anspruch 5, wobei das Ereignis eine Angabe umfasst, dass die Verarbeitung von Daten im Zusammenhang mit der Nachricht beendet ist, und das Durchführen der einen oder der mehreren Maßnahmen das Senden einer Antwort umfasst, die angibt, dass die Daten verarbeitet wurden.
  7. Computerprogrammprodukt nach Anspruch 1, wobei das Prüfen eine Abfrageoperation über eine Anweisung zum Suchen nach Arbeit in Puffern der Datenverarbeitungsumgebung ersetzt.
  8. Computerprogrammprodukt nach Anspruch 1, wobei das Verfahren ferner das dynamische Ändern einer Anweisung eines ausgewählten Puffers des einen oder der mehreren Puffer umfasst, wobei der ausgewählte Puffer aus einer Pufferzusammenfassungsgruppen der Mehrzahl von Pufferzusammenfassungsgruppen zu einer anderen Pufferzusammenfassungsgruppe der Mehrzahl von Pufferzusammenfassungsgruppen neu zugewiesen wird.
  9. Computerprogrammprodukt nach Anspruch 1, wobei die eine oder die mehreren Zusammenfassungsindikatoren einen Befehl-aktiv-Zusammenfassungsindikator, einen Sekundäres-Eintreffen-Zusammenfassungsindikator, einen Antwort-aktiv-Zusammenfassungsindikator, einen Endgültige-Daten-aktiv-Zusammenfassungsindikator und einen Primäre-Beendigung-Zusammenfassungsindikator umfassen.
  10. Computerprogrammprodukt nach Anspruch 1, wobei das Verfahren ferner das Definieren eines Pufferzusammenfassungs-Antwortbereichs an einem ausgewählten Speicherort umfasst, wobei der Pufferzusammenfassungs-Antwortbereich die Mehrzahl von Pufferzusammenfassungs-Gruppen umfasst.
  11. Computersystem zum Erleichtern der Verarbeitung innerhalb einer Datenverarbeitungsumgebung, wobei das Computersystem aufweist: einen Speicher; und mindestens einen Prozessor in Datenübertragungsverbindung mit dem Speicher, wobei das Computersystem so konfiguriert ist, dass es ein Verfahren durchführt, wobei das Verfahren umfasst: Zugreifen auf eine Pufferzusammenfassungsgruppe einer Mehrzahl von Pufferzusammenfassungsgruppen, wobei die Pufferzusammenfassungsgruppe einen oder mehrere Zusammenfassungsindikatoren für einen oder mehrere Puffer umfasst, die der Pufferzusammenfassungsgruppe zugewiesen sind; Prüfen eines Zusammenfassungsindikators des einen oder der mehreren Zusammenfassungsindikatoren der Pufferzusammenfassungsgruppe, um zu ermitteln, ob bei mindestens einem Puffer des einen oder der mehreren Puffer, die der Pufferzusammenfassungsgruppe zugewiesen sind, ein Ereignis aufgetreten ist; und Durchführen einer oder mehrerer Maßnahmen auf der Grundlage des Prüfens, das angibt, dass das Ereignis aufgetreten ist.
  12. Computersystem nach Anspruch 11, wobei das Verfahren ferner das Zuweisen des einen oder der mehreren Puffer zu der Pufferzusammenfassungsgruppe umfasst.
  13. Computersystem nach Anspruch 11, wobei das Ereignis den Empfang einer Nachricht in einem Puffer des einen oder der mehreren Puffer umfasst und das Durchführen der einen oder der mehreren Maßnahmen das Durchführen einer Verarbeitung umfasst, die die in dem Puffer enthaltene Nachricht betrifft.
  14. Computersystem nach Anspruch 11, wobei das Verfahren ferner das dynamische Ändern einer Anweisung eines ausgewählten Puffers des einen oder der mehreren Puffer umfasst, wobei der ausgewählte Puffer aus einer Pufferzusammenfassungsgruppen der Mehrzahl von Pufferzusammenfassungsgruppen zu einer anderen Pufferzusammenfassungsgruppe der Mehrzahl von Pufferzusammenfassungsgruppen neu zugewiesen wird.
  15. Computersystem nach Anspruch 11, wobei das Verfahren ferner das Definieren eines Pufferzusammenfassungs-Antwortbereichs an einem ausgewählten Speicherort umfasst, wobei der Pufferzusammenfassungs-Antwortbereich die Mehrzahl von Pufferzusammenfassungs-Gruppen umfasst.
  16. Mittels Computer realisiertes Verfahren zum Erleichtern der Verarbeitung in einer Datenverarbeitungsumgebung, wobei das mittels Computer realisierte Verfahren umfasst: Zugreifen auf eine Pufferzusammenfassungsgruppe einer Mehrzahl von Pufferzusammenfassungsgruppen, wobei die Pufferzusammenfassungsgruppe einen oder mehrere Zusammenfassungsindikatoren für einen oder mehrere Puffer umfasst, die der Pufferzusammenfassungsgruppe zugewiesen sind; Prüfen eines Zusammenfassungsindikators des einen oder der mehreren Zusammenfassungsindikatoren der Pufferzusammenfassungsgruppe, um zu ermitteln, ob bei mindestens einem Puffer des einen oder der mehreren Puffer, die der Pufferzusammenfassungsgruppe zugewiesen sind, ein Ereignis aufgetreten ist; und Durchführen einer oder mehrerer Maßnahmen auf der Grundlage des Prüfens, das angibt, dass das Ereignis aufgetreten ist.
  17. Mittels Computer realisiertes Verfahren nach Anspruch 16, das ferner das Zuweisen des einen oder der mehreren Puffer zu der Pufferzusammenfassungsgruppe umfasst.
  18. Mittels Computer realisiertes Verfahren nach Anspruch 16, wobei das Ereignis den Empfang einer Nachricht in einem Puffer des einen oder der mehreren Puffer umfasst und das Durchführen der einen oder der mehreren Maßnahmen das Durchführen einer Verarbeitung umfasst, die die in dem Puffer enthaltene Nachricht betrifft.
  19. Mittels Computer realisiertes Verfahren nach Anspruch 16, das ferner das dynamische Ändern einer Anweisung eines ausgewählten Puffers des einen oder der mehreren Puffer umfasst, wobei der ausgewählte Puffer aus einer Pufferzusammenfassungsgruppen der Mehrzahl von Pufferzusammenfassungsgruppen zu einer anderen Pufferzusammenfassungsgruppe der Mehrzahl von Pufferzusammenfassungsgruppen neu zugewiesen wird.
  20. Mittels Computer realisiertes Verfahren nach Anspruch 16, das ferner das Definieren eines Pufferzusammenfassungs-Antwortbereichs an einem ausgewählten Speicherort umfasst, wobei der Pufferzusammenfassungs-Antwortbereich die Mehrzahl von Pufferzusammenfassungs-Gruppen umfasst.
DE112022003144.1T 2021-07-29 2022-06-30 Systemübergreifende verarbeitung und nutzung von pufferzusammenfassungsgruppen Pending DE112022003144T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/388,127 US20230030241A1 (en) 2021-07-29 2021-07-29 Intersystem processing employing buffer summary groups
US17/388,127 2021-07-29
PCT/IB2022/056107 WO2023007276A1 (en) 2021-07-29 2022-06-30 Intersystem processing employing buffer summary groups

Publications (1)

Publication Number Publication Date
DE112022003144T5 true DE112022003144T5 (de) 2024-04-18

Family

ID=85039237

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112022003144.1T Pending DE112022003144T5 (de) 2021-07-29 2022-06-30 Systemübergreifende verarbeitung und nutzung von pufferzusammenfassungsgruppen

Country Status (6)

Country Link
US (1) US20230030241A1 (de)
CN (1) CN117693741A (de)
DE (1) DE112022003144T5 (de)
GB (1) GB2623280A (de)
TW (1) TWI813283B (de)
WO (1) WO2023007276A1 (de)

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2793399B2 (ja) * 1991-12-09 1998-09-03 日本電気株式会社 バッファ装置
US5706432A (en) * 1993-11-04 1998-01-06 International Business Machines Corporation Mechanism for receiving messages at a coupling facility
US5813042A (en) * 1997-02-19 1998-09-22 International Business Machines Corp. Methods and systems for control of memory
KR100765121B1 (ko) * 2001-11-24 2007-10-11 엘지전자 주식회사 송신버퍼의 프로토콜 데이터 유닛 폴링 방법
US6973552B2 (en) * 2003-05-12 2005-12-06 International Business Machines Corporation System and method to handle page validation with out-of-order fetch
US8031655B2 (en) * 2006-10-03 2011-10-04 Industrial Technology Research Institute Systems and methods for determining granularity level of information about buffer status
JP2008252748A (ja) * 2007-03-30 2008-10-16 Toshiba Corp 受信フレーム処理装置および受信フレーム処理システム
US8576861B2 (en) * 2007-05-21 2013-11-05 International Business Machines Corporation Method and apparatus for processing packets
JP4977554B2 (ja) * 2007-08-22 2012-07-18 株式会社日立製作所 キャッシュメモリ上のデータをバックアップする機能を備えたストレージシステム
US8560737B2 (en) * 2011-06-10 2013-10-15 International Business Machines Corporation Managing operator message buffers in a coupling facility
US20120331172A1 (en) * 2011-06-22 2012-12-27 International Business Machines Corporation Method And System For Improved Performance Of Network Communications With Interface Specific Buffers
CN102523199A (zh) * 2011-11-29 2012-06-27 深圳市中联创新自控系统有限公司 具有防伪认证的安防系统及其防伪认证方法
CN102523299B (zh) * 2011-12-22 2014-02-26 北京邮电大学 基于消息摘要进行内容标识的缓存方法
DE112012006148B4 (de) * 2012-03-28 2023-02-23 Intel Corporation Verfahren, Vorrichtung und Maschinenlesbares Medium zur gemeinsamen Benutzung von Puffern für Verarbeitungselemente bei einem Netzwerkgerät
US9823852B2 (en) * 2015-05-01 2017-11-21 Toshiba Memory Corporation Memory system with nonvolatile memory
CN110958706B (zh) * 2018-09-27 2021-07-30 维沃移动通信有限公司 一种缓存报告传输方法、终端及调度设备
US11204714B2 (en) * 2018-10-23 2021-12-21 Microsoft Technology Licensing, Llc Hybrid use of non-volatile memory as storage device and cache
CN111694848B (zh) * 2019-03-15 2023-04-25 阿里巴巴集团控股有限公司 使用引用计数更新数据缓冲的方法及装置

Also Published As

Publication number Publication date
WO2023007276A1 (en) 2023-02-02
TWI813283B (zh) 2023-08-21
GB2623280A (en) 2024-04-10
GB202401978D0 (en) 2024-03-27
CN117693741A (zh) 2024-03-12
TW202305593A (zh) 2023-02-01
US20230030241A1 (en) 2023-02-02

Similar Documents

Publication Publication Date Title
DE112015001977B4 (de) Synchronisieren von Aktualisierungen von Statusanzeigern in einer Datenverarbeitungsumgebung
DE102017217968A1 (de) Generieren eines Verschiebungsprotokolls für virtuelle Maschinen
DE112011103875T5 (de) Netzwerkschnittstelle zum Bereitstellen/erneuten Bereitstellen elner Partition in einer Cloud-Umgebung
DE102006009617B4 (de) Informationssystem und Verfahren zum Steuern von mehreren Hot Plug Vorgängen
DE112016001657T5 (de) Multi-Tenant-Sensitiver DHCP-Mechanismus für Cloud-Netzwerke
DE102016119298B4 (de) Zeitpunktkopieren mit klonen von ketten
DE112022003720T5 (de) Verwenden eines fernen pods in kubernetes
DE112018001124T5 (de) Verarbeitung von compare string durch decodiergestützte inline-erweiterung von mikrooperationen
DE112017005015T5 (de) Verarbeiten von gleichgeordneten Aufrufen (SIBLING CALLS)
DE112021001408T5 (de) Verwendung kohärent verbundener schnittstellen in einem netzwerkstapelrahmen
DE112022002736T5 (de) Übertragen von aufgabendaten zwischen edge-einheiten beim edge computing
DE112019000421T5 (de) Arbeitslastverwaltung mit datenzugriffserkennung in einem datenverarbeitungscluster
DE112021004290T5 (de) Gemeinsames nutzen von zwischengespeicherten klassendaten in einer containerisierten umgebung
DE112021005881T5 (de) Inline datenpakettransformationen
DE102013209643A1 (de) Mechanismus für optimierte Nachrichtenaustauschdatenübertragung zwischen Nodelets innerhalb eines Plättchens
DE112021002487T5 (de) Teilen einer geografisch konzentrierten arbeitslast zwischen benachbarten mec-hosts mehrerer netzbetreiber
DE112021005636T5 (de) Migrieren von komplexen legacy-anwendungen
DE112020004760T5 (de) Steuern von interaktionen mit einer skalierbaren anwendung
CN110402435B (zh) 具有松散耦合节点的多主数据库中的单调交易
DE112020005526T5 (de) Reservieren eines oder mehrerer sicherheitsmodule für einen sicheren gast
DE112018004415B4 (de) Optimierung von cloud-ressourcen bei operationen in mehrstufigem speicher auf richtliniengrundlage
DE112018002049T5 (de) Verfahren zum erkennen entfernt angeordneter knoten und zum überprüfen sowie verbinden von übertragungskanälen
DE102021124335A1 (de) Verwalten von ausfällen in edge-computing-umgebungen
DE112021004577T5 (de) Verwalten eines aufgabenablaufs in einer edge-datenverarbeitungsumgebung
DE112020006047T5 (de) Steuern von transaktionsanforderungen zwischen anwendungen und servern

Legal Events

Date Code Title Description
R012 Request for examination validly filed