-
HINTERGRUND
-
Ein oder mehrere Aspekte beziehen sich im Allgemeinen auf ein Vereinfachen einer Verarbeitung innerhalb einer Datenverarbeitungsumgebung und insbesondere auf ein Vereinfachen einer zu einer Eingabe-/Ausgabeverarbeitung gehörenden Verarbeitung innerhalb der Datenverarbeitungsumgebung.
-
Eine Eingabe-/Ausgabeverarbeitung umfasst ein Übertragen von Daten zwischen einem Hauptspeicher eines Datenverarbeitungssystems und einer oder mehreren mit dem System verbundenen externen Einheiten. Um die Übertragung von Daten zu vereinfachen, werden eine oder mehrere Eingabe-/Ausgabeoperationen genutzt. Eingabe-/ Ausgabeoperationen werden verwendet, um Daten aus einer oder mehreren externen Speichereinheiten zu erhalten, eine oder mehrere Operationen an den Daten durchzuführen und die Ergebnisse in eine oder mehrere Speichereinheiten zurückzuspeichern.
-
Ein Typ von Operation, die an den Daten durchgeführt werden kann, ist eine Transformation. Um eine solche Operation durchzuführen, fordert ein System Daten aus einer externen Speichereinheit an, und die Daten werden aus der externen Speichereinheit über ein mit dem System und der externen Speichereinheit verbundenes Eingabe-/Ausgabe-Subsystem erhalten. Die aus der externen Speichereinheit erhaltenen Daten werden einer anderen Maschine, die sich außerhalb des Systems und des Eingabe-/Ausgabe-Subsystems befindet, bereitgestellt, welche die Transformation durchführt. Das transformierte Ergebnis wird dann durch das System erhalten und kann in einer externen Speichereinheit gespeichert werden.
-
KURZDARSTELLUNG
-
Durch die Bereitstellung eines Computerprogrammprodukts, das dazu dient, die Verarbeitung innerhalb einer Datenverarbeitungsumgebung zu vereinfachen, werden Unzulänglichkeiten nach dem Stand der Technik überwunden und zusätzliche Vorteile bereitgestellt. Das Computerprogrammprodukt umfasst 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 Erhalten, durch eine Transformation Engine, von zu transformierenden Daten und ein Feststellen, durch die Transformation Engine, einer auf die Daten anzuwendenden ausgewählten Transformation. Das Feststellen verwendet einen Eingabe-/Ausgabesteuerblock, und der Eingabe-/ Ausgabesteuerblock umfasst mindestens ein Feld, das beim Feststellen der anzuwendenden ausgewählten Transformation verwendet werden soll. Auf der Grundlage des Feststellens der anzuwendenden ausgewählten Transformation wird die ausgewählte Transformation durch die Transformation Engine durchgeführt.
-
Indem ein Eingabe-/Ausgabesteuerblock für Transformationen verwendet wird, werden eine Feststellung, ob eine Transformation angewendet werden soll, und eine Durchführung der etwaigen Transformation unabhängig von einer separaten Maschine, wie beispielsweise einem Host-Controller, der sich außerhalb des Datenverarbeitungssystems und eines mit dem Datenverarbeitungssystem verbundenen Eingabe-/Ausgabesubsystems befindet, durchgeführt. Dies verbessert die Eingabe/Ausgabeverarbeitung und daher die Systemleistung.
-
In einer einzelnen Ausführungsform beruht das Erhalten der Daten durch die Transformation Engine auf einer Anzeige, dass eine Transformation auf die Daten angewendet werden soll, und die Anzeige wird durch den Eingabe-/Ausgabesteuerblock bereitgestellt. Der Eingabe-/Ausgabesteuerblock wird zur Bereitstellung einer Funktion verwendet, um unterscheiden zu können, auf welche Operationen eine Umsetzung angewendet werden soll, und wenn ja, welche Umsetzung angewendet werden soll.
-
Als ein Beispiel wird die Anzeige, dass eine Transformation angewendet werden soll, durch das mindestens eine Feld des Eingabe-/Ausgabesteuerblocks bereitgestellt. Das mindestens eine Feld des Eingabe-/Ausgabesteuerblocks umfasst ein Umsetzungstyp-Feld, und das Umsetzungstyp-Feld wird verwendet, um festzustellen, ob die Transformation angewendet werden soll. Das Verwenden des Umsetzungstyp-Feldes vereinfacht die Feststellung, was die Verarbeitungs- und die Systemleistung verbessert.
-
In einer einzelnen Ausführungsform umfasst das mindestens eine Feld des Eingabe-/Ausgabesteuerblocks ein Umsetzungstyp-Feld, und das Feststellen der ausgewählten Transformation umfasst ein Prüfen des Umsetzungstyp-Feldes auf eine Anzeige der ausgewählten Transformation. Das Prüfen des Umsetzungstyp-Feldes vereinfacht ein Feststellen, welche Transformation angewendet werden soll, was die Verarbeitungs- und die Systemleistung verbessert.
-
In einer einzelnen Ausführungsform umfasst das mindestens eine Feld des Weiteren ein Umsetzungsuntertyp-Feld, und das Feststellen der ausgewählten Transformation umfasst des Weiteren ein Prüfen des Umsetzungsuntertyp-Feldes auf die Anzeige der ausgewählten Transformation. Indem ein Umsetzungsuntertyp-Feld bereitgestellt wird, wird eine weitere Unterteilung für ein Auswählen der Transformation bereitgestellt. Dies ermöglicht Flexibilität und vereinfacht die Verarbeitung, was die Systemleistung verbessert.
-
In einer einzelnen Ausführungsform handelt es sich bei dem Eingabe-/ Ausgabesteuerblock um ein Transportsteuerwort, das beim Transportieren der Daten zwischen einem Arbeitsspeicher eines Datenverarbeitungssystems und einer mit dem Datenverarbeitungssystem über ein Eingabe-/Ausgabe-Subsystem verbundenen, externen Speichereinheit verwendet wird.
-
Als Beispiel umfasst das Transportsteuerwort ein Umsetzungstyp-Feld und ein Umsetzungsuntertyp-Feld, und das Feststellen der ausgewählten Transformation umfasst ein Prüfen des Umsetzungstyp-Feldes und/oder des Umsetzungsuntertyp-Feldes. Indem das Transportsteuerwort verwendet wird, wird die Verarbeitung dadurch vereinfacht, dass man unterscheiden kann, auf welche Operationen eine Umsetzung angewendet werden soll, und wenn ja, welche Umsetzung angewendet werden soll. Des Weiteren wird, indem das Umsetzungstyp-Feld und/oder das Umsetzungsuntertyp-Feld geprüft wird, die Feststellung einer ausgewählten durchzuführenden Transformation vereinfacht, wodurch die Systemleistung verbessert, die Komplexität verringert und die zu verwendende Hardware verringert wird (z.B. keine separate Maschine, um das Prüfen durchzuführen).
-
In einer einzelnen Ausführungsform ist die ausgewählte Transformation ein Typ von Transformation einer Mehrzahl von Typen von Transformationen, die durch den Eingabe-/Ausgabesteuerblock angegeben werden. Als Beispiele umfasst die Mehrzahl der Typen von Transformationen eine Künstliche-Intelligenz-Transformation, einen Paketfilter, statistische Analyse, Telemetrie und Multicast-Replikation.
-
In einer einzelnen Ausführungsform wird mindestens das Feststellen inline mit der Verarbeitung der Daten zwischen einem Arbeitsspeicher eines Datenverarbeitungssystems und einer mit dem Datenverarbeitungssystem verbundenen, externen Speichereinheit durchgeführt. Dadurch entfällt die Verwendung einer separaten Maschine, um mindestens das Feststellen durchzuführen, wodurch die Verarbeitung verbessert und Kosten verringert werden.
-
Durch einen Computer ausgeführte Verfahren und Systeme, die sich auf einen oder mehrere Aspekte beziehen, sind ebenfalls hierin beschrieben und beansprucht. Des Weiteren sind Dienste, die sich auf einen oder mehrere Aspekte beziehen, ebenfalls hierin beschrieben und gegebenenfalls beansprucht.
-
Zusätzliche Merkmale und Vorteile werden durch die hierin beschriebenen Techniken realisiert. Weitere Ausführungsformen und Aspekte sind hierin ausführlich beschrieben und werden als ein Teil der beanspruchten Aspekte betrachtet.
-
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
Ein oder mehrere Aspekte werden in den Ansprüchen am Ende der Spezifikation besonders hervorgehoben und eindeutig als Beispiele beansprucht. Das Vorstehende sowie Aufgaben, Merkmale und Vorteile von einem oder mehreren Aspekten gehen aus der folgenden ausführlichen Beschreibung in Zusammenschau mit den beiliegenden Zeichnungen hervor, bei denen:
- 1 ein Beispiel einer Datenverarbeitungsumgebung darstellt, um einen oder mehrere Aspekte der vorliegenden Erfindung einzubinden und zu verwenden;
- 2 ein Beispiel eines Transportsteuerworts darstellt, das gemäß einem oder mehreren Aspekten der vorliegenden Erfindung verwendet wird;
- 3 ein Beispiel einer Verarbeitung, um festzustellen, ob eine Transformation angewendet werden soll, gemäß einem oder mehreren Aspekten der vorliegenden Erfindung darstellt;
- 4 ein Beispiel einer Verwendung einer Transformation Engine zum Durchführen von Transformationen gemäß einem oder mehreren Aspekten der vorliegenden Erfindung da rstellt;
- die 5A bis 5B eine einzelne Ausführungsform von Aspekten in Bezug auf ein Vereinfachen einer Verarbeitung innerhalb einer Datenverarbeitungsumgebung gemäß einem oder mehreren Aspekten der vorliegenden Erfindung darstellen;
- 6A ein weiteres Beispiel einer Datenverarbeitungsumgebung darstellt, um einen oder mehrere Aspekte der vorliegenden Erfindung einzubinden und zu verwenden;
- 6B ein Beispiel von weiteren Einzelheiten eines Arbeitsspeichers von 6A gemäß einem oder mehreren Aspekten der vorliegenden Erfindung darstellt;
- 6c ein weiteres Beispiel von weiteren Einzelheiten eines Arbeitsspeichers von 6A gemäß einem oder mehreren Aspekten der vorliegenden Erfindung darstellt;
- 7A ein weiteres Beispiel einer Datenverarbeitungsumgebung darstellt, um einen oder mehrere Aspekte der vorliegenden Erfindung einzubinden und zu verwenden;
- 7B weitere Einzelheiten des Arbeitsspeichers von 7A gemäß einem oder mehreren Aspekten der vorliegenden Erfindung darstellt;
- 8 eine einzelne Ausführungsform einer Cloud-Computing-Umgebung gemäß einem oder mehreren Aspekten der vorliegenden Erfindung darstellt; und
- 9 ein Beispiel von Abstraktionsmodellschichten gemäß einem oder mehreren Aspekten der vorliegenden Erfindung darstellt.
-
AUSFÜHRLICHE BESCHREIBUNG
-
In einem oder mehreren Aspekten wird eine Eingabe-/Ausgabe-(E/A-)Verarbeitung vereinfacht, indem Transformationen an Daten durchgeführt werden, welche zwischen einem Datenverarbeitungssystem und einer externen Speichereinheit inline mit der Datenverschiebung verschoben werden. Das heißt, eine Entscheidung, eine Transformation durchzuführen, und die Durchführung einer Transformation finden in einem direkten Pfad zwischen dem Datenverarbeitungssystem und der externen Speichereinheit statt. Als Beispiel stellen ein oder mehrere Mikrocontroller (und/oder Verarbeitungslogik) des Datenverarbeitungssystems und/oder des Eingabe-/Ausgabesystems fest, ob eine Transformation durchgeführt werden soll, und führen die Transformation dann unabhängig von einer zusätzlichen Maschine, wie beispielsweise einem Host-Controller, oder einer anderen Komponente, die sich außerhalb des Datenverarbeitungssystems und des Eingabe-/ Ausgabesystems befindet, durch.
-
Eine einzelne Ausführungsform einer Datenverarbeitungsumgebung zur Einbindung und Verwendung von einem oder mehreren Aspekten der vorliegenden Erfindung ist unter Bezugnahme auf 1 beschrieben. Als Beispiel beruht die Datenverarbeitungsumgebung von 1 auf der von der International Business Machines Corporation angebotenen z/Architecture®-Hardwarearchitektur. Eine einzelne Ausführungsform der z/Architecture-Hardwarearchitektur ist in „z/Architecture Principles of Operation“, IBM-Publikation Nr. SA22-7832-12, dreizehnte Ausgabe, September 2019, beschrieben. IBM und Z/ARCHITECTURE sind in mindestens einer Gerichtsbarkeit eingetragene Marken der International Business Machines Corporation. Die z/Architecture-Hardwarearchitektur ist jedoch lediglich eine Beispielarchitektur. Aspekte der Erfindung können auch auf anderen Architekturen beruhen, darunter, ohne darauf beschränkt zu sein, den x86-Architekturen von Intel, anderen Architekturen der International Business Machines Corporation und/oder Architekturen von anderen Unternehmen.
-
Unter Bezugnahme auf 1 umfasst eine Datenverarbeitungsumgebung 100 in einem Beispiel ein mit einem Eingabe-/Ausgabe-Subsystem 104 verbundenes Datenverarbeitungssystem 102. Als Beispiel umfasst das Datenverarbeitungssystem 102 einen oder mehrere mit einem Arbeitsspeicher 108 (der auch als Hauptspeicher, Systemspeicher, Massenspeicher, zentraler Speicher usw. bezeichnet wird) verbundene Prozessoren 106.
-
Die Prozessoren 106 sind über eine(n) oder mehrere Verbindungen oder Busse 112, wie beispielsweise eine oder mehrere Peripheral Component Interconnect Express-(PCIe-)Verbindungen mit dem E/A-Subsystem 104 verbunden. Andere Verbindungen oder Busse können ebenfalls verwendet werden.
-
Das E/A-Subsystem 104 umfasst ein oder mehrere Eingabe-/Ausgabefächer 120, und ein Eingabe-/Ausgabefach 120 umfasst zum Beispiel einen oder mehrere Switches 122 und einen oder mehrere Netzwerkadapter 124. In einem Beispiel ist ein Switch 122 mit einem Prozessor 106 und einem Netzwerkadapter 124 verbunden. Der Netzwerkadapter 124 ist zum Beispiel ein Converged Network Adapter (CNA), bei dem es sich zum Beispiel um eine einzelne Netzwerkschnittstellenkarte (NIC, network interface card) handelt, die sowohl einen Fibre Channel- (FC-)Hostbus-Adapter (HBA) als auch eine TCP/IP- (Transmission Control Protocol/Internet Protocol-)Ethernet-NIC enthält. Er verbindet Server mit FC-basierten Speicherbereichs-Netzwerken (SANs, Storage Area Networks) und Ethernet-basierten lokalen Netzen (LANs, Local Area Networks), als Beispiel.
-
Das Eingabe-/Ausgabe-Subsystem 104 ist mit einer oder mehreren externen Speichereinheiten 126 verbunden und wird verwendet, um Prozessoren 106 mit externen Speichereinheiten 126 zu verbinden. In den Speichereinheiten gespeicherte Daten 128 werden zwischen den Prozessoren und den externen Speichereinheiten über, zum Beispiel, Eingabe-/Ausgabeoperationen transportiert. Als Beispiel verwendet ein Betriebssystem, wie beispielsweise ein von der International Business Machines Corporation, Armonk, New York, angebotenes Betriebssystem z/OS® oder ein Linux®-Betriebssystem, das innerhalb eines Prozessors (z.B. des Prozessors 106) ausgeführt wird, eine oder mehrere Eingabe-/ Ausgabeoperationen, um Daten (z.B. die Daten 128) aus einer externen Speichereinheit (z.B. der externen Speichereinheit 126) entlang eines Pfades, wie beispielsweise eines Pfades 130, zu extrahieren. z/OS ist eine Marke oder eingetragene Marke der International Business Machines Corporation in mindestens einer Gerichtsbarkeit. Die eingetragene Marke Linux wird gemäß einer Unterlizenz von der Linux Foundation, dem exklusiven Lizenznehmer von Linus Torvalds, Eigentümer der Marke, weltweit verwendet. Andere Betriebssysteme können ebenfalls verwendet werden.
-
In einem Beispiel umfassen ein oder mehrere Prozessoren 106 einen oder mehrere Mikrocontroller 110, die gemäß einem oder mehreren Aspekten der vorliegenden Erfindung verwendet werden. Zum Beispiel, wie hierin beschrieben ist, werden ein oder mehrere Mikrocontroller 110 (und/oder Verarbeitungslogik des Datenverarbeitungssystems) verwendet, um festzustellen, ob eine Transformation auf Daten einer Eingabe-/AusgabeOperation angewendet werden soll, und um eine Transformation durchzuführen, falls eine Transformation angewendet werden soll. Der eine oder die mehreren Mikrocontroller (und/oder Verarbeitungslogik des Datenverarbeitungssystems) werden anstelle, zum Beispiel, eines Host-Controllers oder eines anderen Controllers verwendet, der mit dem E/A-Subsystem über eine oder mehrere, mit einem Switch (z.B. dem Switch 122) verbundene Verbindungen (z.B. PCle-Verbindungen) verbunden ist. Somit finden die Entscheidung und die Durchführung einer Transformation inline mit der Eingabe-/Ausgabe-Operation statt. Das heißt, die Entscheidung und die Durchführung der Transformation werden innerhalb des Pfades 130 unabhängig von einem Host-Controller oder einem anderen solchen Controller, der mit dem E/A-Subsystem außerhalb des Pfades 130 verbunden ist, durchgeführt.
-
In einer weiteren Ausführungsform können sich ein oder mehrere Mikrocontroller in dem Eingabe-/Ausgabe-Subsystem befinden und gemäß einem Aspekt der vorliegenden Erfindung verwendet werden, um festzustellen, ob eine Transformation angewendet werden soll, und/oder um eine solche Transformation auf der Grundlage einer Entscheidung, die Transformation anzuwenden, durchzuführen. Andere Ausführungsformen sind ebenfalls möglich.
-
Um festzustellen, ob eine Transformation für eine bestimmte Eingabe-/AusgabeOperation angewendet werden soll, wird gemäß einem Aspekt der vorliegenden Erfindung ein Steuerblock (der hierin als Eingabe-/Ausgabesteuerblock bezeichnet wird), wie beispielsweise ein Transportsteuerwort, verwendet. Ein Transportsteuerwort gibt einen Transportsteuerblock an, dessen Inhalt an eine E/A-Einheit (z.B. die externe Speichereinheit 126) zur Verarbeitung transportiert werden soll. Der Transportsteuerblock umfasst ein oder mehrere Einheitenbefehlswörter und zugehörige Optionen. Für ein Einheitenbefehlswort, das einen Befehl angibt, der die Übertragung von Daten (mit Ausnahme von in dem Transportbefehlsteuerblock enthaltenen Steuerdaten) startet, gibt das Transportsteuerwort einen oder mehrere Speicherbereiche an, in dem bzw. denen sich die Daten befinden.
-
Ein Beispiel eines Transportsteuerworts ist unter Bezugnahme auf 2 beschrieben. In einem Beispiel ist ein Transportsteuerwort 200 zum Beispiel ein 64-Byte-Steuerblock, der zum Beispiel an einer 64-Byte-Grenze angegeben ist. In einem Beispiel umfasst das Transportsteuerwort 200 eine Mehrzahl von Feldern, darunter zum Beispiel:
-
Format (F) 202: Dieses Feld (z.B. die Bits 0 bis 1 des Wortes 0) bildet ein Transportsteuerwortformat, das einen vorzeichenlosen ganzzahligen 2-Bit-Wert enthält, der das Layout des Transportsteuerwortes definiert. Der Wert dieses Feldes ist zum Beispiel null.
-
Flags 204: Dieses Feld (z.B. die Bytes 1 bis 3 des Wortes 0) enthält Informationen über das Transportsteuerwort. Zu Beispiel-Flags gehören zum Beispiel:
-
Indirektes Transport-Eingabedatenadressierungs-Flag (Input Transport Indirect Data Addressing flag) (z.B. Bit 5): Wenn dieses Flag den Wert null und ein Leseoperationen-Feld (z.B. das Bit 14 des Wortes 1) den Wert 1 hat, gibt das Eingabedatenadressfeld z.B. die absolute Adresse der Eingabeposition an. Wenn dieses Flag den Wert eins und das Leseoperationen-Feld den Wert eins hat, gibt das Eingabedatenadressfeld z.B. die absolute Adresse eines indirekten Transport-Datenadresswortes oder des ersten indirekten Transport-Datenadressworts einer Liste von indirekten Transport-Datenadresswörtern an, welche die Eingabespeicherposition bzw. -positionen angeben.
-
Wenn das Leseoperationen-Feld den Wert null hat, hat dieses Flag keine Bedeutung.
-
Indirektes Transport-Datenadressflag des Transportbefehlsteuerblocks (Transport Command Control Block Transport Indirect Data Address flag) (z.B. Bit 6): Wenn dieses Flag den Wert null hat, gibt das Transportbefehlsteuerblock-Adressfeld z.B. die absolute Adresse des Transportbefehlsteuerblocks für das Transportsteuerwort an. Wenn dieses Flag den Wert eins hat, gibt das Transportbefehlsteuerblock-Adressfeld z.B. die absolute Adresse eines indirekten Transport-Datenadresswortes oder einer Liste von indirekten Transport-Datenadresswörtern an, welche die Position bzw. Positionen des Transportsteuerblocks für das Transportsteuerwort angeben.
-
Indirektes Transport-Ausgabedatenadressierungs-Flag (Output Transport Indirect Data Addressing flag) (z.B. Bit 7): Wenn dieses Flag den Wert null und das Schreiboperationen-Feld (z.B. das Bit 15 des Wortes 1) den Wert eins hat, gibt das Ausgabedatenadressfeld eine Ausgabeposition in, z.B., dem absoluten Speicher an. Wenn dieses Flag den Wert eins und das Schreiboperationen-Feld den Wert eins hat, gibt das Ausgabedatenadressfeld z.B. die absolute Adresse eines indirekten Transport-Datenadresswortes oder einer Liste von indirekten Transport-Datenadresswörtern an, welche die Ausgabespeicherposition bzw. -positionen angeben.
-
Wenn das Schreiboperationen-Feld den Wert null hat, hat dieses Flag keine Bedeutung.
-
Transportbefehlsteuerblock-Länge (TCCBL, Transport Command Control Block Length) 206: Dieses Feld (z.B. die Bits 8 bis 13 des Wortes 1) mit zwei auf der rechten Seite angehängten Nullen gibt eine vorzeichenlose Ganzzahl an, deren Wert, wenn er zu einem ausgewählten Wert (z.B. 20) für unidirektionale Datenübertragungen oder zu einem anderen Wert (z.B. 24) für bidirektionale Datenübertragungen addiert wird, die Länge des Übertragungsbefehlssteuerblocks in Byte angibt.
-
Leseoperationen (R, Read Operations) 208: Wenn dieses Feld (z.B. das Bit 14 des Wortes 1) den Wert eins hat, ist die Eingabeanzahl (z.B. das Wort 11) gültig und enthält einen Wert ungleich null, der die in den Hauptspeicher zu übertragende Anzahl von Bytes anzeigt.
-
Schreiboperationen (W, Write Operations) 210: Wenn dieses Feld (z.B. das Bit 15 des Wortes 1) den Wert eins hat, ist die Ausgabeanzahl (z.B. das Wort 10) gültig und enthält einen Wert ungleich null, der die aus dem Hauptspeicher zu übertragende Anzahl von Bytes anzeigt.
-
Wenn sowohl das Leseoperationen-Feld als auch das Schreiboperationen-Feld den Wert null haben und die Einheit keine bidirektionale Datenübertragung unterstützt und ein Ausgewählte-Flags-Anzeiger (z.B. das Bit 10) den Wert null hat, wird eine Programmfehlerbedingung erkannt. Wenn das Schreiboperationen-Feld den Wert eins hat und das Transportsteuerwort ein Abfrage-Transportsteuerwort ist, wird eine Programmfehlerbedingung erkannt.
-
Ausgabedatenadresse (212): Wenn das Schreiboperationen-Feld den Wert eins und das Indirekte Transport-Ausgabedatenadressierungs-Flag des Flags-Feldes (z.B. das Bit 7) den Wert null hat, gibt dieses Feld (z.B. die Wörter 2 bis 3) eine 64-Bit-Ausgabeposition in, z.B., dem absoluten Speicher an. Wenn das Schreiboperationen-Feld den Wert eins und das Indirekte Transport-Ausgabedatenadress-Flag des Flags-Feldes den Wert eins hat, gibt dieses Feld eine 64-Bit-Position in, z.B., dem absoluten Speicher eines indirekten Transport-Datenadresswortes oder einer Liste von indirekten Transport-Datenadresswörtern an, welche die Ausgabespeicherposition oder -positionen angeben.
-
Eingabedatenadresse (214): Wenn das Leseoperationen-Feld den Wert eins und das Indirekte Transport-Eingabedatenadressierungs-Flag des Flags-Feldes (z.B. das Bit 5) den Wert null hat, gibt dieses Feld (z.B. die Wörter 4 bis 5) eine 64-Bit-Eingabeposition in, z.B., dem absoluten Speicher an. Wenn das Leseoperationen-Feld den Wert eins und das Indirekte Transport-Eingabedatenadressierungs-Flag des Flags-Feldes den Wert eins hat, gibt dieses Feld die 64-Bit-Position in, z.B., dem absoluten Speicher eines indirekten Transport-Datenadresswortes oder einer Liste von indirekten Transport-Datenadresswörtern an, welche die Eingabespeicherposition oder -positionen angeben.
-
Transportstatusblock-Adresse (216): Dieses Feld (z.B. die Wörter 6 bis 7) geben eine 64-Bit-Position in, z.B., dem absoluten Speicher eines Transportstatusblocks für das Transportsteuerwort an.
-
Transportbefehlsteuerblock-Adresse 218: Wenn das Indirekte Transport-Datenadress-Flag des Transportbefehlsteuerblocks (Bit 6 des Flags-Feldes) den Wert null hat, gibt dieses Feld (z.B. die Wörter 8 bis 9) eine 64-Bit-Position in, z.B., dem absoluten Speicher des Transportbefehlsteuerblocks an. Wenn das indirekte Transport-Datenadressfeld des Transportbefehlsteuerblocks den Wert null hat, wird der Transportbefehlsteuerblock als ein sich in einem zusammenhängenden Speicherbereich befindlicher Transportbefehlsteuerblock angegeben. Wenn das indirekte Transport-Datenadressfeld des Transportbefehlsteuerblocks den Wert eins hat, gibt dieses Feld eine 64-Bit-Position in, z.B., dem absoluten Speicher eines indirekten Transport-Datenadresswortes oder einer Liste von indirekten Transport-Datenadresswörtern an, welche die Position im absoluten Speicher des Transportbefehlsteuerblocks angeben. Wenn das Indirekte Transport-Datenadress-Flag des Transportbefehlsteuerblocks den Wert eins hat, kann der Transportbefehlsteuerblock als ein sich in einem nicht zusammenhängenden Speicherbereich befindlicher Transportbefehlsteuerblock angegeben werden.
-
Ein Transportbefehlsteuerblock hat eine variable Länge und umfasst zum Beispiel einen Header, einen Trailer und 1 bis 30 Einheitenbefehlswörter, die einen oder mehrere auszuführende Befehle angeben.
-
Ausgabeanzahl (220): Wenn das Schreiboperationen-Feld den Wert eins hat, umfasst dieses Feld (z.B. das Wort 10) eine Gesamtanzahl an Ausgabebytes für das Transportsteuerwort in Form einer vorzeichenlosen Ganzzahl.
-
Eingabeanzahl (222): Wenn das Leseoperationen-Feld den Wert eins hat, enthält dieses Feld (z.B. das Wort 11) eine Gesamtanzahl an Eingabebytes für das Transportsteuerwort in Form einer vorzeichenlosen Ganzzahl.
-
Umsetzungstyp (224): Dieses Feld (z.B. die Bits 0 bis 3 des Wortes 12) umfasst, gemäß einem Aspekt der vorliegenden Erfindung, eine Anzeige, ob eine Transformation (die hierin auch als Umsetzung bezeichnet wird) auf die Daten, die übertragen werden, angewendet werden soll, wie durch das Transportsteuerwort angezeigt, und wenn eine Transformation angewendet werden soll, welche Umsetzung angewendet werden soll. Zu Beispieltransformationen gehören:
-
0000-Keine Umsetzung anzuwenden
-
0001-Künstliche-Intelligenz-(KI-)Umsetzung
-
Es gibt verschiedene Beispiele von KI-Umsetzungen, darunter, ohne darauf beschränkt zu sein, eine map(func), die einen neuen verteilten Datensatz zurückgibt, der gebildet wird, indem jedes Element der Quelle durch eine Funktion func geleitet wird; filter(func), die einen neuen Datensatz zurückgibt, der gebildet wird, indem diejenigen Elemente der Quelle ausgewählt werden, auf denen func „wahr“ zurückgibt; eine union(other dataset), die einen neuen Datensatz zurückgibt, der die Vereinigung der Elemente in dem Quellendatensatz und das Argument enthält; intersection(other dataset), die einen neuen Datensatz zurückgibt, der die Schnittmenge der Elemente in dem Quellendatensatz und das Argument enthält; sowie viele andere Funktionen, darunter, ohne darauf beschränkt zu sein, join; sort; cogroup; cartesian; pipe; coalesce; repartition; aggregate; reduce; distinct; sample usw. Eine oder mehrere der Umsetzungen können zusammen verwendet werden.
-
0010-Paketfilter
-
Paketfilterung wird verwendet, um Pakete an, zum Beispiel, einer Netzwerkschnittstelle zuzulassen oder zu sperren. Dies wird zum Beispiel aus Sicherheitsgründen verwendet.
-
0011-Stats-Statistische Analyse
-
In der statistischen Analyse ist eine Datentransformation zum Beispiel eine Anwendung einer deterministischen mathematischen Funktion auf jeden Datenpunkt in einem Datensatz, so dass jeder Datenpunkt z durch einen transformierten Wert yi = f ersetzt wird, wobei f eine mathematische Funktion ist.
-
01xx-Telemetrietypen
-
Bei der Telemetrietransformation werden sensorische Daten durch das System erhalten und können zur leichteren Verwendung der sensorischen Daten transformiert werden. Andere Beispiele sind ebenfalls möglich.
-
1000-Multicasting
-
In einem Beispiel erfolgt das Multicasting für eine FICON-(Fibre Connection-)Replikation. Daten werden an einen zweiten Anschluss gespiegelt, um an ein Analyseprogramm angeschlossen zu werden. Der zweite Anschluss kann unverschlüsselt sein, so dass man sich die Daten während des Transfers (inflight) zur Fehlerbeseitigung anschauen kann, wobei der Verkehr abwärts an eine verschlüsselte Karte gesendet wird.
-
Ein weiteres Beispiel ist eine weitere Form einer Datensatzreplikation.
-
1001-Anschlussspiegel
-
1xxx-Undefiniert
-
Umsetzungsuntertyp (226): Dieses Feld (z.B. die Bits 4 bis 7 des Wortes 12) stellt gemäß einem Aspekt der vorliegenden Erfindung einen bestimmten Untertyp der für die bestimmte Operation anzuwendenden Umsetzung dar. Wenn das Typfeld zum Beispiel eine Künstliche-Intelligenz-Umsetzung anzeigt, zeigt dieses Feld einen bestimmten Typ der anzuwendenden Künstliche-Intelligenz-Umsetzung an (z.B. map, filter, union usw.). Andere Beispiele sind ebenfalls möglich.
-
Statusfeld (228): Dieses Feld (z.B. das Byte 1 des Wortes 12) zeigt gemäß einem Aspekt der vorliegenden Erfindung ein Ergebnis der Transformation an, ungeachtet dessen, ob sie ein Erfolg oder ein Misserfolg ist. In einem Beispiel zeigt dieses Feld einen Offset-Zeiger eines Statusfeldes an, bei dem es sich um eine Position weiterer Informationen darüber handelt, welcher etwaige Fehler während der Umsetzung aufgetreten ist. Eine Anzahl von x Byteblöcken, in denen sich der Status befindet, ab der Position des Transportsteuerworts.
-
Abfrage-Transportsteuerwortadresse (230): Dieses Feld (z.B. das Wort 15) wird verwendet, um gegebenenfalls eine Abfrageoperation zu starten.
-
Zwar werden bestimmte Felder, Positionen von Feldern, Größen von Feldern, Bits und Werte von Feldern oder Bits in einer einzelnen Ausführungsform hierin für das Transportsteuerwort beschrieben, doch können auch andere Felder, Positionen von Feldern, Größen von Feldern, Bits und/oder Werte von Feldern oder Bits verwendet werden, ohne von einem Umfang von einem oder mehreren Aspekten der Erfindung abzuweichen. Felder und/oder Unterfelder eines jeden der hierin nicht beschriebenen Felder können leer sein, einen vordefinierten Wert (z.B. null) haben und/oder Werte umfassen, die in einer einzelnen Ausführungsform ignoriert werden sollen. Des Weiteren kann das Transportsteuerwort zusätzliche, weniger und/oder andere Felder oder Unterfelder von Feldern umfassen, die bei der Eingabe/Ausgabeverarbeitung verwendet werden sollen. Es gibt viele Möglichkeiten.
-
Ein Beispiel für die Verwendung eines Transportsteuerworts, um festzustellen, ob eine Umsetzung angewendet werden soll, ist unter Bezugnahme auf 3 beschrieben. In einer einzelnen Ausführungsform erhält (z.B. empfängt, wird ihm bereitgestellt, ruft ab) ein Mikrocontroller (z.B. der Mikrocontroller 110) ein Datenpaket während einer Eingabe-/ Ausgabeoperation, SCHRITT 300, und führt eine zu dem Datenpaket gehörende Verarbeitung durch, SCHRITT 302. Zum Beispiel stellt der Mikrocontroller fest, ob an Daten des Datenpakets eine Transformation durchgeführt werden soll, ABFRAGE 304. Als Beispiel prüft der Mikrocontroller ein zu dem Datenpaket gehörendes Transportsteuerwort (z.B. das Transportsteuerwort 200), um festzustellen, ob eine Umsetzung auf die Daten angewendet werden soll. Zum Beispiel prüft der Mikrocontroller ein Umsetzungstyp-Feld 224, um festzustellen, ob eine Umsetzung auf die Daten angewendet werden soll. Wenn ein ausgewählter Wert (z.B. 0000) angezeigt wird, wird keine Umsetzung angewendet. Wenn jedoch ein anderer Wert angezeigt wird, zeigen das Umsetzungstyp-Feld 224 und/oder das Umsetzungsuntertyp-Feld 226 die bestimmte Transformation an, die an den Daten durchgeführt werden soll.
-
Wenn eine Umsetzung angewendet werden soll, führt der Mikrocontroller die Umsetzung an den Daten durch, SCHRITT 306. Wenn zum Beispiel eine KI-Transformation und insbesondere eine bestimmte KI-Funktion, wie beispielsweise die Filterfunktion, ausgewählt wird, führt der Mikrocontroller die angegebene Funktion an den Daten durch. Andere Transformationen werden in Abhängigkeit vom Typ der Transformation in ähnlicher Weise durchgeführt. Wenn jedoch keine Umsetzung angewendet werden soll, wird keine Transformation durchgeführt.
-
In einer einzelnen Ausführungsform werden das Prüfen, ob die Transformation durchgeführt werden soll, und das Feststellen der etwaigen Transformation, die durchgeführt werden soll, durch einen oder mehrere Mikrocontroller durchgeführt. Zum Beispiel kann derselbe Mikrocontroller sowohl das Prüfen als auch das Feststellen durchführen oder verschiedene Mikrocontroller können das Prüfen und das Feststellen durchführen. Als ein weiteres Beispiel kann das Prüfen durch einen Mikrocontroller oder durch Logik von, z.B., dem Datenverarbeitungssystem durchgeführt werden und auf der Grundlage des Prüfens führt ein ausgewählter Mikrocontroller die Transformation durch. Verschiedene Ausführungen sind möglich.
-
Weitere Einzelheiten zum Verwenden eines Mikrocontrollers, um eine Inline-Transformation an Daten durchzuführen, sind unter Bezugnahme auf 4 beschrieben, in der ein Speicherbefehl beschrieben ist. Eine ähnliche Verarbeitung wird für einen Abrufbefehl durchgeführt. Die Verarbeitung von 4 wird durch einen oder mehrere Prozessoren unter Verwendung von Hardware-Logik der Prozessoren und/oder einen oder mehrere Mikrocontroller durchgeführt. Die Zahlen neben den Pfeilen (z.B. die Zahlen 1 bis 20) entsprechen nachstehend beschriebenen beispielhaften Verarbeitungsschritten. Obgleich beispielhafte Verarbeitungsschritte beschrieben sind, können zusätzliche, weniger und/oder andere Schritte gemäß einem oder mehreren Aspekten der vorliegenden Erfindung durchgeführt werden.
- 1-PCI (z.B. der Netzwerkadapter 124) sendet einen Speicherbefehl an einen Datenrouter 400. Als Beispiel wird der Speicherbefehl durch einen E/A-Steuerblock (z.B. das Transportsteuerwort 200) definiert. Zum Beispiel fordert ein Programm (z.B. ein Betriebssystem) Daten (z.B. Daten 128) von einer externen Speichereinheit (z.B. der externen Speichereinheit 126) an, erstellt ein Transportsteuerwort, das den Speicherbefehl definiert, und sendet das Transportsteuerwort an das E/A-Subsystem (z.B. das E/A-Subsystem 104) zur Verarbeitung. Das E/A-Subsystem ruft die Daten ab, und der Speicherbefehl und die Daten werden, wie hierin beschrieben, in einer einzelnen Ausführungsform verarbeitet.
- 2-Speicherbefehl trifft mit Daten ein. Ein Befehl „Parsen“ 401 nimmt die Daten und speichert sie an einer nächsten freien Position in einem Empfangs-(RX-)Puffer 402 und zeichnet auf, wie viele Daten geschrieben und an welche Adresse des Empfangspuffers 402 sie geschrieben wurden.
- 3-Der Befehl „Parsen“ 401 liest einen Wert einer Anzahl aktueller aktiver Anforderungen in einem oder mehreren Arrays 404 der Anzahl aktiver Anforderungen für das Adresssteuerwort des PCI-Befehls und erhöht ihn um einen ausgewählten Wert, z.B. 1.
Bei der Anzahl aktiver Anforderungen handelt es sich um einen internen Zähler, den die Datenrouter-Hardware für jedes Adresssteuerwort verwaltet. Die Hardware erhöht diese Anzahl jedes Mal um einen ausgewählten Wert, z.B. eins, wenn eine Anforderung „Speichern“ (z.B. eine PCle-Anforderung „Speichern“), die dieses Adresssteuerwort zum Ziel hat, in ein Byte-Speicherarray geladen wird. Die Hardware verringert die Anzahl, wenn die Anforderung „Speichern“ abgeschlossen ist. Eine Anforderung „Speichern“ ist abgeschlossen, wenn die Speicheranforderungen an den Arbeitsspeicher für die PCIe-Anforderung abgeschlossen sind, sofern die Daten für das Datenverarbeitungssystem (z.B. das System 102) bestimmt waren; die Daten für diese PCIe-Anforderung wurden fallen gelassen, wenn ein Verwerfen-Anzeiger in dem Adresssteuerwort gesetzt ist; oder wenn der Header in dem Adresssteuerwort gespeichert ist, wenn die PCle-Anforderung lediglich einen Header übertragen hat.
- 4-Der Befehl „Parsen“ 401 liest das Adresssteuerwort aus einem Adresssteuerwort-Cache 406 und setzt ein Verarbeitungsabschlussbit auf einen ausgewählten Wert, z.B. 0.
- 5-Der Befehl „Parsen“ 401 fügt Speicherbefehlstabellen 408 einen neuen Eintrag hinzu, wobei er z.B. eine FIFO-Technik verwendet.
- 6-Eine Speichervergleichslogik 410 nimmt den nächsten Eintrag aus den Speicherbefehlstabellen 408.
- 7-Die Speichervergleichslogik 410 liest das Adresssteuerwort aus dem Adresssteuerwort-Cache 406, um verschiedene Felder zu prüfen, darunter zum Beispiel: „gültig“, „Steuerung“, „Validierung“, „Zustand“ und „nächster erwarteter Offset“. Die Speichervergleichslogik 410 aktualisiert auch den Zustand des Adresssteuerworts und das Touch-Bit des Adresssteuerworts.
- 8-Wenn alles zufriedenstellend ist, übergibt die Speichervergleichslogik 410 diesen Befehl einer Speicherbefehlslogik 412.
- 9-Die Speicherbefehlslogik 412 liest das Adresssteuerwort für die Adresse und Arbeitsanzahl der indirekten Transport-Datenadressliste.
- 9a-Wenn sich die indirekte Transport-Datenadressliste nicht in einem Cache 414 für indirekte Transport-Datenadresslisten befindet, soll die Speicherbefehlslogik 412 eine oder mehrere indirekte Transport-Datenadresslisten aus dem Hostspeicher (z.B. dem Arbeitsspeicher 108) abrufen. Sie ruft in einem Beispiel 8 indirekte Transport-Datenadresslisten auf einmal ab. Dies geschieht über einen an Data-Assist-Logik gerichteten Abruf hoher Priorität, die in einem Beispiel mit dem Datenrouter 400 verbunden ist.
- 9b-Data Assist schreibt die Informationen aus der indirekten Transport-Datenadressliste in einen Übertragungs-(TX-)Puffer 416.
- 9c-Data Assist antwortet mit einem „fertig“, was durch die Speicherbefehlslogik 412 abgefangen wird.
- 9d-Die Speicherbefehlslogik 412 liest den Übertragungspuffer 416, um die indirekte(n) Transport-Datenadressliste(n) abzurufen.
- 9e-Die Speicherbefehlslogik 412 schreibt die indirekten Transport-Datenadresslisten in den Cache 414 für indirekte Transport-Datenadresslisten.
- 10-Die Speicherbefehlslogik 412 ruft die indirekten Transport-Datenadresslisten aus dem Cache 414 für indirekte Transport-Datenadresslisten ab.
- 11-Die Speicherbefehlslogik 412 nimmt Speichereinreihungen in die Data Assist auf der Grundlage der Informationen aus den indirekten Transport-Datenadresslisten vor. Wenn mehr indirekte Transport-Datenadresslisten benötigt werden, ruft die Speicherbefehlslogik 412 weitere indirekte Transport-Datenadresslisten aus dem Hostspeicher (z.B. dem Arbeitsspeicher 108) ab.
- 12-Die Speicherbefehlslogik 412 informiert Speicherbefehlstabellen 420 darüber, wie viele Einreihungen vorgenommen und für diesen bestimmten PCI-Befehl vorgenommen wurden.
- 13-Die Speicherbefehlslogik 412 schreibt die restlichen Informationen aus den indirekten Transport-Datenadresslisten zurück in den Cache 414 für indirekte Transport-Datenadresslisten.
- 14-Die Speicherbefehlslogik 412 aktualisiert das Adresssteuerwort mit der nächsten Position des Caches 414 für indirekte Transport-Datenadresslisten und der neuen Arbeitsanzahl.
- 15-Data Assist versucht, den Empfangspuffer 402 zu lesen, um mit dem Speichern von Daten in den Hostspeicher (z.B. den Arbeitsspeicher 108) zu beginnen. Dies wird durch die Speicherbefehlstabellen 420 abgefangen und gestoppt.
- 16-Die Speicherbefehlstabellen 420 lesen das Adresssteuerwort für den aktuellen Wert und Zustand der zyklischen Blockprüfung (CRC, cyclic redundancy check). Die Speicherbefehlstabellen 420 prüfen auch einen entsprechenden Verarbeitungsanzeiger (z.B. eine oder mehrere Bits) des Transportsteuerworts, um festzustellen, ob eine Transformation auf die Daten angewendet werden soll. In der Folge lassen sie Data Assist dann den Empfangspuffer lesen. Wenn der Verarbeitungsanzeiger (z.B. das Umsetzungstyp-Feld 224) auf einen ausgewählten Wert gesetzt ist, der anzeigt, dass eine Transformation angewendet werden soll, durchlaufen die Daten eine Umsetzungsengine, wie beispielsweise eine generische Transformation Engine 430. Die Umsetzungsengine wird als generisch bezeichnet, da sie eine Mehrzahl von Transformationen durchführen kann. In einem Beispiel ist die Umsetzungsengine ein Mikrocontroller oder ist in einem Mikrocontroller enthalten (z.B. dem Mikrocontroller 110).
-
Die generische Transformation Engine 430 gemäß einem Aspekt der vorliegenden Erfindung stellt eine auf die Daten anzuwendende ausgewählte Transformation fest. Zum Beispiel prüft die generische Transformation Engine 430 das Umsetzungstyp-Feld 224 und/oder das Umsetzungsuntertyp-Feld 226, um die anzuwendende Transformation festzustellen. Die generische Transformation Engine 430 führt die angezeigte Transformation durch (sie führt zum Beispiel eine angegebene mathematische Funktion, Analyse und/oder eine andere Transformation auf der Grundlage der durchzuführenden ausgewählten Transformation durch) und gibt die Ergebnisse (z.B. transformierte Daten) aus.
-
Sobald die Verarbeitung durch die generische Transformation Engine 430 abgeschlossen ist, werden die Daten an die Data Assist weitergeleitet, wo eine neue zyklische Blockprüfung berechnet wird. Wenn die Data Assist mit dem Lesen des Empfangspuffers 402 fertig ist, schreiben die Speicherbefehlstabellen 200 den Wert und den Zustand der neuen zyklischen Blockprüfung in das Adresssteuerwort zurück.
-
17-Data Assist schickt einen Verarbeitungsabschluss/Verarbeitungsabschlüsse an den Datenrouter zurück, nachdem die Daten im Hostspeicher (z.B. dem Arbeitsspeicher 108) gespeichert wurden. Diese(r) Verarbeitungsabschluss/Verarbeitungsabschlüsse werden durch die Speicherbefehlstabellen 420 gesammelt.
-
In einer einzelnen Ausführungsform kann es eine Duplizierung der Daten geben, so dass es eine Kopie sowie eine Umsetzung der Daten gibt.
-
18-Wenn genug Verarbeitungsabschlüsse für einen PCI-Befehl empfangen wurden, zeigen die Speicherbefehlstabellen 420 der Befehlsparsinglogik 401 an, dass ein bestimmter PCI-Befehl fertig ist.
-
19-Der Befehl „Parsen“ 401 gibt mehr Empfangspufferspeicher frei und liest auch die Arrays 404 der Anzahl aktiver Anforderungen und verringert den Wert um einen ausgewählten Wert, z.B. eins. Dies muss geschehen, nachdem das Adresssteuerwort und das Hardwareantwort-Wort fertig sind und geschrieben wurden.
-
20-Der Befehl „Parsen“ 401 liest auch das Adresssteuerwort und aktualisiert bei Bedarf das Hardwareantwort-Wort und andere Bits des Adresssteuerworts.
-
Zwar ist Beispiellogik eines Datenrouters bereitgestellt, jedoch kann zusätzliche, weniger und/oder andere Logik für andere zu verarbeitende Befehle und/oder für andere Ausführungsformen verwendet werden. Die hierin beschriebene Logik ist lediglich ein Beispiel.
-
Wie hierin beschrieben ist, stellt ein Mikrocontroller (z.B. eine generische Transformation Engine) in einer einzelnen Ausführungsform eine ausgewählte Umsetzung fest, die auf Daten einer Eingabe-/Ausgabeoperation angewendet werden soll, und wendet die Umsetzung auf die Daten während einer Inline-Verarbeitung der Eingabe-/ Ausgabeoperation an. Dies wird unabhängig von einem separaten Host-Controller oder einer anderen mit dem Eingabe-/Ausgabesystem oder dem Datenverarbeitungssystem verbundenen Komponente durchgeführt. Dies verringert die Zeit, um die Eingabe-/ Ausgabeoperation durchzuführen, indem die Latenzzeit beim Wechsel zu einer anderen Maschine verringert und dadurch die Systemleistung erhöht wird.
-
Ein oder mehrere Aspekte der vorliegenden Erfindung sind untrennbar mit Computertechnologie verbunden und vereinfachen eine Verarbeitung, darunter eine Eingabe-/Ausgabeverarbeitung, innerhalb einer Datenverarbeitungsumgebung, was deren Performanz verbessert. Weitere Einzelheiten einer einzelnen Ausführungsform von Aspekten in Bezug auf ein Vereinfachen einer Verarbeitung innerhalb einer Datenverarbeitungsumgebung sind unter Bezugnahme auf die 5A bis 5B beschrieben.
-
Unter Bezugnahme auf 5A werden in einer einzelnen Ausführungsform zu transformierende Daten durch eine Transformation Engine erhalten (500). Eine Feststellung einer auf die Daten anzuwendenden ausgewählten Transformation wird durch die Transformation Engine getroffen (502). In einem Beispiel verwendet das Feststellen einen Eingabe-/Ausgabesteuerblock (504), der zum Beispiel mindestens ein Feld umfasst, das beim Feststellen der anzuwendenden ausgewählten Transformation verwendet werden soll (506). Auf der Grundlage des Feststellens der anzuwendenden ausgewählten Transformation wird die ausgewählte Transformation durch die Transformation Engine durchgeführt (508).
-
Indem ein Eingabe-/Ausgabesteuerblock für Transformationen verwendet wird, werden eine Feststellung, ob eine Transformation angewendet werden soll, und eine Durchführung der etwaigen Transformation unabhängig von einer separaten Maschine, wie beispielsweise einem Host-Controller, der sich außerhalb des Datenverarbeitungssystems und eines mit dem Datenverarbeitungssystem verbundenen Eingabe-/Ausgabesubsystems befindet, durchgeführt. Dies verbessert die Eingabe/Ausgabeverarbeitung und daher die Systemleistung.
-
In einer einzelnen Ausführungsform beruht das Erhalten der Daten durch die Transformation Engine auf einer Anzeige in, zum Beispiel, dem Eingabe-/ Ausgabesteuerblock, dass eine Transformation auf die Daten angewendet werden soll (510). Eine Funktion wird bereitgestellt, um zu unterscheiden, auf welche Operationen eine Umsetzung angewendet werden soll, und wenn ja, welche Umsetzung angewendet werden soll.
-
In einer einzelnen Ausführungsform wird die Anzeige, dass die Transformation angewendet werden soll, durch mindestens ein Feld des Eingabe-/Ausgabesteuerblocks bereitgestellt, und das mindestens eine Feld des Eingabe-/Ausgabesteuerblocks umfasst ein Umsetzungstyp-Feld (512). Das Umsetzungstyp-Feld wird verwendet, um festzustellen, ob die Transformation angewendet werden soll (514). Das Prüfen des Umsetzungstyp-Feldes vereinfacht die Feststellung, was die Verarbeitungs- und die Systemleistung verbessert.
-
In einer einzelnen Ausführungsform umfasst das Feststellen der ausgewählten Transformation ein Prüfen des Umsetzungstyp-Feldes auf eine Anzeige der ausgewählten Transformation (516). Das Prüfen des Umsetzungstyp-Feldes vereinfacht ein Feststellen, welche Transformation angewendet werden soll, was die Verarbeitungs- und die Systemleistung verbessert.
-
In einer einzelnen Ausführungsform umfasst das mindestens eine Feld des Weiteren ein Umsetzungsuntertyp-Feld (518), und das Feststellen der ausgewählten Transformation umfasst des Weiteren ein Prüfen des Umsetzungsuntertyp-Feldes auf die Anzeige der ausgewählten Transformation (520). Indem ein Umsetzungsuntertyp-Feld bereitgestellt wird, wird eine weitere Unterteilung für ein Auswählen der Transformation bereitgestellt. Dies ermöglicht Flexibilität und vereinfacht die Verarbeitung, was die Systemleistung verbessert.
-
Unter Bezugnahme auf 5B ist der Eingabe-/Ausgabesteuerblock in einem Beispiel ein Transportsteuerwort, das beim Transportieren der Daten zwischen einem Arbeitsspeicher eines Datenverarbeitungssystems und einer mit dem Datenverarbeitungssystem über ein Eingabe-/Ausgabe-Subsystem verbundenen, externen Speichereinheit verwendet wird (530). Das Transportsteuerwort umfasst zum Beispiel ein Umsetzungstyp-Feld und ein Umsetzungsuntertyp-Feld (532). In einer einzelnen Ausführungsform umfasst das Feststellen der ausgewählten Transformation ein Prüfen des Umsetzungstyp-Feldes und/oder des Umsetzungsuntertyp-Feldes (536). Indem das Transportsteuerwort verwendet wird, wird die Verarbeitung dadurch vereinfacht, dass man unterscheiden kann, auf welche Operationen eine Umsetzung angewendet werden soll, und wenn ja, welche Umsetzung angewendet werden soll. Des Weiteren wird, indem das Umsetzungstyp-Feld und/oder das Umsetzungsuntertyp-Feld geprüft wird, die Feststellung, ob eine Transformation durchgeführt werden soll, und, wenn ja, welche, vereinfacht, wodurch die Systemleistung verbessert, die Komplexität verringert und die zu verwendende Hardware verringert wird (z.B. keine separate Maschine, um das Prüfen durchzuführen).
-
In einer einzelnen Ausführungsform ist die ausgewählte Transformation ein Typ von Transformation einer Mehrzahl von Typen von Transformationen, die durch den Eingabe-/Ausgabesteuerblock angegeben werden (538). Die Mehrzahl der Typen von Transformationen umfasst als Beispiele eine Künstliche-Intelligenz-Transformation, einen Paketfilter, statistische Analyse, Telemetrie und Multicast-Replikation (540).
-
In einer einzelnen Ausführungsform wird mindestens das Feststellen inline mit der Verarbeitung der Daten zwischen einem Arbeitsspeicher eines Datenverarbeitungssystems und einer mit dem Datenverarbeitungssystem verbundenen, externen Speichereinheit durchgeführt (542). Dadurch entfällt die Verwendung einer separaten Maschine, um mindestens das Feststellen durchzuführen, wodurch die Verarbeitung verbessert und Kosten verringert werden.
-
Andere Varianten und Ausführungsformen sind möglich.
-
Eine Inline-Pakettransformation von einem oder mehreren Aspekten der vorliegenden Erfindung kann in viele Datenverarbeitungsumgebungen eingebunden und darin verwendet werden. Ein Beispiel einer Datenverarbeitungsumgebung zur Einbindung und Verwendung von einem oder mehreren Aspekten der vorliegenden Erfindung ist unter Bezugnahme auf 6A beschrieben. Als Beispiel beruht die Datenverarbeitungsumgebung von 6A auf der von der International Business Machines Corporation angebotenen z/Architecture®-Hardwarearchitektur. Die z/Architecture-Hardwarearchitektur ist jedoch lediglich eine Beispielarchitektur. Aspekte der Erfindung können auch auf anderen Architekturen beruhen, darunter, ohne darauf beschränkt zu sein, den x86-Architekturen von Intel, anderen Architekturen der International Business Machines Corporation und/oder Architekturen von anderen Unternehmen. Intel ist eine Marke oder eine eingetragene Marke der Intel Corporation und ihrer Tochtergesellschaften in den Vereinigten Staaten und anderen Ländern.
-
In einem Beispiel umfasst eine Datenverarbeitungsumgebung 600 eine zentrale Elektronik (CEC, central electronics complex) 602. Die CEC 602 umfasst eine Mehrzahl von Komponenten, wie zum Beispiel einen Arbeitsspeicher 604 (der auch als Systemspeicher, Hauptspeicher, zentraler Speicher, Massenspeicher bezeichnet wird), der mit einem oder mehreren Prozessoren (die auch als zentrale Verarbeitungseinheiten (CPUs) bezeichnet werden) 606 und einem Eingabe-/Ausgabe-(E/A-)Subsystem 608 verbunden ist.
-
Das E/A-Subsystem 608 kann ein Teil der zentralen Elektronik oder davon getrennt sein. Es steuert den Informationsfluss zwischen dem Hauptspeicher 604 und den Eingabe-/Ausgabe-Steuereinheiten 610 sowie den mit der zentralen Elektronik verbundenen Eingabe-/Ausgabe-(E/A)-Einheiten 612.
-
Viele Typen von E/A-Einheiten können verwendet werden. Ein bestimmter Typ ist eine Datenspeichereinheit 614. Die Datenspeichereinheit 614 kann ein oder mehrere Programme 616, eine oder mehrere durch einen Computer lesbare Programmanweisungen 618 und/oder Daten usw. speichern. Die durch einen Computer lesbaren Programmanweisungen können so konfiguriert sein, dass sie Funktionen von Ausführungsformen von Aspekten der Erfindung ausführen.
-
In einer einzelnen Ausführungsform umfassen ein oder mehrere der Prozessoren 606 einen oder mehrere Mikrocontroller 620. Wie hierin beschrieben ist, wird gemäß einem oder mehreren Aspekten der vorliegenden Erfindung ein Mikrocontroller verwendet, um festzustellen, ob eine Umsetzung auf ein Datenpaket einer Eingabe-/Ausgabeoperation angewendet werden soll, und um die Umsetzung durchzuführen, falls die Umsetzung angewendet werden soll.
-
In einer weiteren Ausführungsform können ein oder mehrere Mikrocontroller in dem E/A-Subsystem 608 enthalten sein, ebenso wie oder anstelle von ein(em) oder mehrere(n) Prozessoren 606. Andere Varianten sind ebenfalls möglich.
-
Die zentrale Elektronik 602 kann auswechselbare/nicht auswechselbare, flüchtige/nicht flüchtige Speichermedien eines Computersystems umfassen und/oder damit verbunden sein. Zum Beispiel kann sie einen nicht auswechselbaren, nicht flüchtigen magnetischen Datenträger (der üblicherweise als „Festplattenlaufwerk“ bezeichnet wird), ein Magnetplattenlaufwerk, um von einer auswechselbaren, nicht flüchtigen Magnetplatte (z.B. einer „Diskette“) zu lesen und auf sie zu schreiben, und/oder ein optisches Plattenlaufwerk, um von einer auswechselbaren, nicht flüchtigen optischen Platte, wie beispielsweise einem CD-ROM, DVD-ROM oder einem anderen optischen Medium, zu lesen oder auf sie zu schreiben, umfassen und/oder damit verbunden sein. Es sollte klar sein, dass andere Hardware- und/oder Software-Komponenten in Verbindung mit der zentralen Elektronik 602 verwendet werden könnten. Zu Beispielen gehören, ohne darauf beschränkt zu sein: Mikrocode, Einheitentreiber, redundante Verarbeitungseinheiten, externe Anordnungen von Plattenlaufwerken, RAID-Systeme, Bandlaufwerke sowie Speichersysteme zur Datenarchivierung usw.
-
Des Weiteren kann die zentrale Elektronik 602 mit zahlreichen anderen Universal- oder Spezialdatenverarbeitungssystemumgebungen oder -konfigurationen betrieben werden. Zu Beispielen für hinlänglich bekannte Datenverarbeitungssysteme, -umgebungen und/oder -konfigurationen, die gegebenenfalls zur Verwendung mit der zentralen Elektronik 602 geeignet sind, gehören, ohne darauf beschränkt zu sein, Personal Computer-(PC-)Systeme, Server-Computersysteme, Thin Clients, Thick Clients, Handheld- oder Laptop-Einheiten, Mehrprozessorsysteme, auf einem Mikroprozessor beruhende Systeme, Set-Top-Boxen, programmierbare Unterhaltungselektronik, Netzwerk-PCs, Minicomputersysteme, Mainframe-Computersysteme und verteilte Cloud-Computing-Umgebungen, die beliebige der vorstehenden Systeme oder Einheiten umfassen, und dergleichen.
-
Die zentrale Elektronik 602 stellt in einer oder mehreren Ausführungsformen Unterstützung für logische Partitionierung und/oder Virtualisierung bereit. In einer einzelnen Ausführungsformen, wie in 6B gezeigt, umfasst der Arbeitsspeicher 604 zum Beispiel eine oder mehrere logische Partitionen 670, einen Hypervisor 672, der die logischen Partitionen verwaltet, und Prozessorfirmware 674. Ein Beispiel des Hypervisors 672 ist der von der International Business Machines Corporation, Armonk, New York, angebotene Processor Resource/System Manager (PR/SM). In der Verwendung hierin umfasst Firmware z.B. den Mikrocode des Prozessors. Sie umfasst zum Beispiel die Anweisungen auf Hardwareebene und/oder Datenstrukturen, die bei der Ausführung von Maschinencode einer höheren Ebene verwendet werden. In einer einzelnen Ausführungsform umfasst sie zum Beispiel proprietären Code, der üblicherweise als Mikrocode geliefert wird, welcher vertrauenswürdige Software oder Mikrocode, der für die zugrunde liegende Hardware spezifisch ist, umfasst und den Betriebssystemzugriff auf die Systemhardware steuert.
-
Jede logische Partition 670 kann als eigenständiges System funktionieren. Das heißt, jede logische Partition kann unabhängig zurückgesetzt werden, ein Gast-Betriebssystem 676 wie beispielsweise das von der International Business Machines Corporation, Armonk, New York, angebotene Betriebssystem z/OS® oder einen anderen Steuercode 678 wie beispielsweise Coupling Facility Control Code (CFCC) ausführen und mit verschiedenen Programmen 680 arbeiten. Ein Betriebssystem oder ein Anwendungsprogramm, das in einer logischen Partition ausgeführt wird, scheint Zugriff auf ein ganzes und vollständiges System zu haben, doch steht in Wirklichkeit nur ein Teil davon zur Verfügung. Zwar werden ein Hypervisor „Processor Resource/System Manager“ und ein z/OS-Betriebssystem als Beispiele angeboten, doch können auch andere Hypervisors und/oder Betriebssysteme gemäß einem oder mehreren Aspekten der vorliegenden Erfindung verwendet werden.
-
Der Arbeitsspeicher 604 ist mit CPUs 606 (6A) verbunden, bei denen es sich um physische Prozessorressourcen handelt, die den logischen Partitionen zugeordnet werden können. Zum Beispiel umfasst eine logische Partition 670 einen oder mehrere logische Prozessoren, von denen jeder die gesamte oder einen Teil einer physischen Prozessorressource 606 darstellt, die der logischen Partition dynamisch zugeordnet werden kann.
-
In noch einer weiteren Ausführungsform stellt die zentrale Elektronik Unterstützung für virtuelle Maschinen bereit (entweder mit oder ohne Unterstützung logischer Partitionierung). Wie in 6C gezeigt ist, umfasst der Arbeitsspeicher 604 der zentralen Elektronik 602 zum Beispiel eine oder mehrere virtuelle Maschinen 690, einen VM-Manager wie beispielsweise einen Hypervisor 692, der die virtuellen Maschinen verwaltet, und Prozessorfirmware 694. Ein Beispiel des Hypervisors 692 ist der von der International Business Machines Corporation, Armonk, New York, angebotene Hypervisor z/VM®. Der Hypervisor wird mitunter als Host bezeichnet. PR/SM und z/VM sind Marken oder eingetragene Marken der International Business Machines Corporation in mindestens einer Gerichtsbarkeit.
-
Die Unterstützung virtueller Maschinen des CPC stellt die Möglichkeit bereit, eine große Anzahl an virtuellen Maschinen 690 zu betreiben, von denen jede mit verschiedenen Programmen 696 arbeiten und ein Gast-Betriebssystem 698, wie beispielsweise das Betriebssystem Linux oder ein anderes Betriebssystem ausführen kann. Jede virtuelle Maschine 690 kann als eigenständiges System funktionieren. Das heißt, jede virtuelle Maschine kann unabhängig zurückgesetzt werden, ein Gast-Betriebssystem ausführen und mit verschiedenen Programmen arbeiten. Ein Betriebssystem oder ein Anwendungsprogramm, das in einer virtuellen Maschine ausgeführt wird, scheint Zugriff auf ein ganzes und vollständiges System zu haben, doch steht in Wirklichkeit nur ein Teil davon zur Verfügung. Zwar werden ein z/VM-Hypervisor und ein Linux-Betriebssystem als Beispiele angeboten, doch können andere VM-Manager und/oder Betriebssysteme gemäß einem oder mehreren Aspekten der vorliegenden Erfindung verwendet werden.
-
Eine weitere Ausführungsform einer Datenverarbeitungsumgebung zur Einbindung und Verwendung von einem oder mehreren Aspekten der vorliegenden Erfindung ist unter Bezugnahme auf 7A beschrieben. In diesem Beispiel umfasst eine Datenverarbeitungsumgebung 10 zum Beispiel eine native zentrale Verarbeitungseinheit (CPU) 12, einen Arbeitsspeicher 14 und eine oder mehrere Eingabe-/Ausgabeeinheiten und/oder Schnittstellen 16, die zum Beispiel über einen oder mehrere Busse 18 und/oder andere Verbindungen miteinander verbunden sind. Als Beispiele kann die Datenverarbeitungsumgebung 10 einen von der International Business Machines Corporation, Armonk, New York, angebotenen PowerPC®-Prozessor; einen von der Hewlett Packard Co., Palo Alto, Kalifornien, angebotenen HP Superdome mit Itanium II-Prozessoren von Intel; und/oder andere Rechner umfassen, die auf von der International Business Machines Corporation, Hewlett Packard, Intel Corporation, Oracle oder anderen angebotenen Architekturen beruhen. PowerPC ist eine Marke oder eine eingetragene Marke der International Business Machines Corporation in mindestens einer Gerichtsbarkeit. Itanium ist eine Marke oder eine eingetragene Marke der Intel Corporation oder ihrer Tochtergesellschaften in den Vereinigten Staaten und anderen Ländern.
-
Die native zentrale Verarbeitungseinheit 12 umfasst ein oder mehrere native Register 20, wie beispielsweise ein oder mehrere Universalregister und/oder ein oder mehrere Spezialregister, die während der Verarbeitung innerhalb der Umgebung verwendet werden. Diese Register umfassen Informationen, die den Zustand der Umgebung zu irgendeinem bestimmten Zeitpunkt darstellen.
-
Überdies führt die native zentrale Verarbeitungseinheit 12 im Arbeitsspeicher 14 gespeicherte Anweisungen und Code aus. In einem bestimmten Beispiel führt die zentrale Verarbeitungseinheit im Arbeitsspeicher 14 gespeicherten Emulatorcode 22 aus. Dieser Code ermöglicht es der in einer Architektur konfigurierten Datenverarbeitungsumgebung, eine andere Architektur zu emulieren. Zum Beispiel ermöglicht der Emulatorcode 22 Rechnern, die auf anderen Architekturen als der Hardwarearchitektur „z/Architecture“ beruhen, wie beispielsweise PowerPC-Prozessoren, Superdome-Servern von HP oder anderen, die Hardwarearchitektur „z/Architecture“ zu emulieren sowie Software und Anweisungen auszuführen, die auf der Grundlage der Hardwarearchitektur „z/Architecture“ entwickelt wurden.
-
Weitere Einzelheiten in Bezug auf den Emulatorcode 22 sind unter Bezugnahme auf 7B beschrieben. Im Arbeitsspeicher 14 gespeicherte Gast-Anweisungen 30 weisen Software-Anweisungen (die z.B. mit Maschinenanweisungen korrelieren) auf, die für eine Ausführung in einer anderen Architektur als die der nativen CPU 12 entwickelt wurden. Beispielsweise wurden die Gast-Anweisungen 30 möglicherweise für eine Ausführung auf einem auf der Hardwarearchitektur „z/Architecture“ beruhenden Prozessor konzipiert, werden stattdessen aber auf der nativen CPU 12 emuliert, bei der es sich zum Beispiel um einen Itanium II-Prozessor von Intel handeln kann. In einem Beispiel umfasst der Emulatorcode 22 eine Anweisungsabrufroutine 32, um eine oder mehrere Gast-Anweisungen 30 aus dem Arbeitsspeicher 14 zu erhalten und um optional eine lokale Pufferung für die erhaltenen Anweisungen bereitzustellen. Er umfasst auch eine Anweisungsumsetzungsroutine 34, um den Typ der Gast-Anweisung festzustellen, die erhalten wurde, und um die Gast-Anweisung in eine oder mehrere entsprechende native Anweisungen 36 umzusetzen. Diese Umsetzung umfasst zum Beispiel ein Angeben der Funktion, die durch die Gast-Anweisung durchgeführt werden soll, und ein Wählen der nativen Anweisung(en), um diese Funktion durchzuführen.
-
Außerdem umfasst der Emulatorcode 22 eine Emulationssteuerungsroutine 40, um zu veranlassen, dass die nativen Anweisungen ausgeführt werden. Die Emulationssteuerungsroutine 40 kann die native CPU 12 dazu veranlassen, eine Routine nativer Anweisungen auszuführen, die eine oder mehrere zuvor erhaltene Gast-Anweisungen emulieren, und am Ende dieser Ausführung die Steuerung an die Anweisungsabrufroutine zurückzugeben, um das Erhalten der nächsten Gast-Anweisung oder einer Gruppe von Gast-Anweisungen zu emulieren. Eine Ausführung der nativen Anweisungen 36 kann ein Laden von Daten aus dem Arbeitsspeicher 14 in ein Register; ein Zurückspeichern von Daten aus einem Register in den Arbeitsspeicher; oder ein Durchführen von irgendeiner Art von arithmetischer oder logischer Operation, die von der Umsetzungsroutine bestimmt wird, umfassen.
-
Jede Routine ist zum Beispiel in Software ausgeführt, die im Arbeitsspeicher gespeichert und durch die native zentrale Verarbeitungseinheit 12 ausgeführt wird. In weiteren Beispielen sind eine oder mehrere der Routinen oder Operationen in Firmware, Hardware, Software oder einer Kombination daraus ausgeführt. Die Register des emulierten Prozessors können unter Verwendung der Register 20 der nativen CPU oder durch Verwendung von Speicherpositionen im Arbeitsspeicher 14 emuliert werden. In Ausführungsformen können sich die Gast-Anweisungen 30, die nativen Anweisungen 36 und der Emulatorcode 22 in demselben Arbeitsspeicher befinden oder auf verschiedene Speichereinheiten verteilt sein.
-
Bei den vorstehend beschriebenen Datenverarbeitungsumgebungen handelt es sich lediglich um Beispiele für Datenverarbeitungsumgebungen, die verwendet werden können. Weitere Ausführungsformen, darunter, ohne darauf beschränkt zu sein, nicht partitionierte Umgebungen, partitionierte Umgebungen, Cloud-Umgebungen und/oder emulierte Umgebungen, können verwendet werden; Ausführungsformen sind nicht auf eine einzelne Umgebung beschränkt. Obgleich verschiedene Beispiele von Datenverarbeitungsumgebungen hierin beschrieben sind, können ein oder mehrere Aspekte der vorliegenden Erfindung mit vielen Typen von Umgebungen verwendet werden. Bei den hierin bereitgestellten Datenverarbeitungsumgebungen handelt es sich lediglich um Beispiele.
-
Jede Datenverarbeitungsumgebung kann so konfiguriert werden, dass sie einen oder mehrere Aspekte der vorliegenden Erfindung umfasst. Zum Beispiel kann jede für eine Inline-Transformationsverarbeitung gemäß einem oder mehreren Aspekten der vorliegenden Erfindung konfiguriert werden.
-
Wie hierin beschrieben ist, wird in einem oder mehreren Aspekten eine Inline-Transformation bereitgestellt. In einem Aspekt wird ein Steuerblock, wie beispielsweise ein Transportsteuerwort, geprüft, um festzustellen, ob eine Umsetzung auf durch den Steuerblock angezeigte Daten angewendet werden soll. Wenn eine Umsetzung angewendet werden soll, wird eine durch den Steuerblock angezeigte Umsetzung angewendet, und ein Ergebnis wird zurückgegeben. Bei der angewendeten Umsetzung kann es sich um eine Umsetzung einer Mehrzahl von in dem Steuerblock angezeigten Umsetzungstypen handeln. In einem Beispiel ist ein Mikrocontroller mit mindestens der Fähigkeit konfiguriert, die anzuwendende Umsetzung festzustellen und die Umsetzung anzuwenden. Indem ein Mikrocontroller mit der Fähigkeit konfiguriert wird, eine etwaige anzuwendende Umsetzung festzustellen und die etwaige Umsetzung durchzuführen, wird kein sich außerhalb des Datenverarbeitungssystems und des Eingabe-/Ausgabesystems befindlicher Host-Controller benötigt, um die Umsetzung durchzuführen. Dies spart Zeit und verbessert die Leistungsfähigkeit innerhalb der Datenverarbeitungsumgebung.
-
Obgleich verschiedene Ausführungsformen hierin beschrieben sind, sind viele Varianten und weitere Ausführungsformen möglich, ohne von einem Umfang von Aspekten der vorliegenden Erfindung abzuweichen. Zum Beispiel können in einer weiteren Ausführungsform eine oder mehrere Umsetzungen auf die Daten angewendet werden, wobei jede anzuwendende Umsetzung in einem E/A-Steuerblock (z.B. dem Transportsteuerwort 200) angezeigt wird. Andere Varianten sind ebenfalls möglich. Es sollte angemerkt werden, dass, vorbehaltlich der Unvereinbarkeit, jeder hierin beschriebene Aspekt bzw. jedes hierin beschriebene Merkmal sowie Varianten davon gegebenenfalls mit einem beliebigen anderen Aspekt oder Merkmal kombiniert werden können.
-
Ein oder mehrere Aspekte können sich auf das Cloud-Computing beziehen.
-
Es sei von vornherein klargestellt, dass das Umsetzen der hierin angeführten Lehren nicht auf eine Cloud-Computing-Umgebung beschränkt ist, obwohl diese Offenbarung eine ausführliche Beschreibung von Cloud-Computing umfasst. Stattdessen können Ausführungsformen der vorliegenden Erfindung gemeinsam mit jeder beliebigen weiteren Art von jetzt bekannter oder später erfundener Datenverarbeitungsumgebung umgesetzt werden.
-
Cloud-Computing ist ein Servicebereitstellungsmodell zum Ermöglichen eines problemlosen bedarfsgesteuerten Netzwerkzugriffs auf einen gemeinsam genutzten Pool von konfigurierbaren Datenverarbeitungsressourcen (z.B. Netzwerken, Netzwerkbandbreite, Servern, Verarbeitung, Arbeitsspeichern, Speichern, Anwendungen, virtuellen Maschinen und Services), die mit minimalem Verwaltungsaufwand bzw. minimaler Interaktion mit einem Anbieter des Service schnell bereitgestellt und freigegeben werden können. Dieses Cloud-Modell kann mindestens fünf Eigenschaften umfassen, mindestens drei Dienstmodelle und mindestens vier Implementierungsmodelle.
-
Bei den Eigenschaften handelt es sich um die folgenden:
-
On-Demand Self-Service: Ein Cloud-Nutzer kann einseitig automatisch nach Bedarf für Datenverarbeitungsfunktionen wie Serverzeit und Netzwerkspeicher sorgen, ohne dass eine menschliche Interaktion mit dem Anbieter der Dienste erforderlich ist.
-
Broad Network Access: Es sind Funktionen über ein Netzwerk verfügbar, auf die durch Standardmechanismen zugegriffen wird, welche die Verwendung durch heterogene Thin- oder Thick-Client-Plattformen (z.B. Mobiltelefone, Laptops und PDAs) unterstützen.
-
Resource-Pooling: Die Datenverarbeitungsressourcen des Anbieters werden zusammengeschlossen, um mehreren Nutzern unter Verwendung eines Multi-Tenant-Modells zu dienen, wobei verschiedene physische und virtuelle Ressourcen dynamisch nach Bedarf zugewiesen und neu zugewiesen werden. Es gibt eine gefühlte Standortunabhängigkeit, da der Nutzer allgemein keine Kontrolle bzw. Kenntnis über den genauen Standort der bereitgestellten Ressourcen hat, aber in der Lage sein kann, einen Standort auf einer höheren Abstraktionsebene festzulegen (z.B. Land, Staat oder Rechenzentrum).
-
Rapid Elasticity: Funktionen können für eine schnelle horizontale Skalierung (scale out) schnell und elastisch bereitgestellt werden, in einigen Fällen auch automatisch, und für ein schnelles Scale-in schnell freigegeben werden. Für den Nutzer erscheinen die für das Bereitstellen verfügbaren Funktionen häufig unbegrenzt und sie können jederzeit in jeder beliebigen Menge gekauft werden.
-
Measured Service: Cloud-Systeme steuern und optimieren die Verwendung von Ressourcen automatisch, indem sie eine Messfunktion auf einer gewissen Abstraktionsebene nutzen, die für die Art von Dienst geeignet ist (z.B. Speicher, Verarbeitung, Bandbreite sowie aktive Benutzerkonten). Die Nutzung von Ressourcen kann überwacht, gesteuert und gemeldet werden, wodurch sowohl für den Anbieter als auch für den Nutzer des verwendeten Dienstes Transparenz geschaffen wird.
-
Bei den Servicemodellen handelt es sich um die folgenden:
-
Software as a Service (SaaS): Die dem Nutzer bereitgestellte Funktion besteht darin, die in einer Cloud-Infrastruktur laufenden Anwendungen des Anbieters zu verwenden. Die Anwendungen sind über eine Thin-Client-Schnittstelle wie einen Web-Browser (z.B. auf dem Web beruhende E-Mail) von verschiedenen Client-Einheiten her zugänglich. Der Nutzer verwaltet bzw. steuert die zugrunde liegende Cloud-Infrastruktur nicht, darunter das Netzwerk, Server, Betriebssysteme, Speicher bzw. sogar einzelne Anwendungsfunktionen, mit der möglichen Ausnahme von eingeschränkten benutzerspezifischen Anwendungskonfigurationseinstellungen.
-
Platform as a Service (PaaS): Die dem Nutzer bereitgestellte Funktion besteht darin, durch einen Nutzer erstellte bzw. erhaltene Anwendungen, die unter Verwendung von durch den Anbieter unterstützten Programmiersprachen und Tools erstellt wurden, in der Cloud-Infrastruktur einzusetzen. Der Nutzer verwaltet bzw. steuert die zugrunde liegende Cloud-Infrastruktur nicht, darunter Netzwerke, Server, Betriebssysteme bzw. Speicher, hat aber die Kontrolle über die eingesetzten Anwendungen und möglicherweise über Konfigurationen des Application Hosting Environment.
-
Infrastructure as a Service (laaS): Die dem Nutzer bereitgestellte Funktion besteht darin, das Verarbeiten, Speicher, Netzwerke und andere grundlegende Datenverarbeitungsressourcen bereitzustellen, wobei der Nutzer in der Lage ist, beliebige Software einzusetzen und auszuführen, zu der Betriebssysteme und Anwendungen gehören können. Der Nutzer verwaltet bzw. steuert die zugrunde liegende Cloud-Infrastruktur nicht, hat aber die Kontrolle über Betriebssysteme, Speicher, eingesetzte Anwendungen und möglicherweise eine eingeschränkte Kontrolle über ausgewählte Netzwerkkomponenten (z.B. Host-Firewalls).
-
Bei den Einsatzmodellen handelt es sich um die folgenden:
-
Private Cloud: Die Cloud-Infrastruktur wird einzig und allein für eine Organisation betrieben. Sie kann durch die Organisation oder einen Dritten verwaltet werden und kann sich in den eigenen Räumen oder in fremden Räumen befinden.
-
Community Cloud: Die Cloud-Infrastruktur wird von mehreren Organisationen gemeinsam genutzt und unterstützt eine spezielle Benutzergemeinschaft, die gemeinsame Angelegenheiten hat (z.B. Mission, Sicherheitsanforderungen, Richtlinien sowie Überlegungen bezüglich der Einhaltung von Vorschriften). Sie kann durch die Organisationen oder einen Dritten verwaltet werden und kann sich in den eigenen Räumen oder in fremden Räumen befinden.
-
Public Cloud: Die Cloud-Infrastruktur wird der allgemeinen Öffentlichkeit oder einer großen Industriegruppe zur Verfügung gestellt und sie gehört einer Cloud-Dienste verkaufenden Organisation.
-
Hybrid Cloud: Die Cloud-Infrastruktur ist eine Zusammensetzung aus zwei oder mehreren Clouds (privat, Benutzergemeinschaft oder öffentlich), die zwar einzelne Einheiten bleiben, aber durch eine standardisierte oder proprietäre Technologie miteinander verbunden sind, die Daten- und Anwendungsportierbarkeit ermöglicht (z.B. Cloud-Zielgruppenverteilung für den Lastenausgleich zwischen Clouds).
-
Eine Cloud-Computing-Umgebung ist dienstorientiert mit Fokus auf Statusunabhängigkeit, geringer Kopplung, Modularität und semantischer Interoperabilität. Im Herzen von Cloud-Computing liegt eine Infrastruktur, die ein Netzwerk aus zusammengeschalteten Knoten umfasst.
-
Unter Bezugnahme auf 8 ist 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-Nutzern verwendete lokale Datenverarbeitungseinheiten wie beispielsweise ein elektronischer Assistent (PDA, personal digital assistant) oder ein Mobiltelefon 54A, ein Desktop-Computer 54B, ein Laptop-Computer 54C und/oder ein Automobil-Computer-System 54N Daten austauschen können. Die Knoten 52 können miteinander Daten austauschen. Sie können physisch oder virtuell in ein oder mehrere Netzwerke wie private, Benutzergemeinschafts-, öffentliche oder hybride Clouds gruppiert werden (nicht gezeigt), wie vorstehend beschrieben wurde, oder in eine Kombination daraus. Dies ermöglicht es der Cloud-Computing-Umgebung 50, Infrastruktur, Plattformen und/oder Software als Dienste anzubieten, für die ein Cloud-Nutzer keine Ressourcen auf einer lokalen Datenverarbeitungseinheit vorhalten muss. Es sei darauf hingewiesen, dass die Arten der in 8 gezeigten Datenverarbeitungseinheiten 54A bis N lediglich veranschaulichend sein sollen und dass die Datenverarbeitungsknoten 52 und die Cloud-Computing-Umgebung 50 über eine beliebige Art Netzwerk und/oder über eine beliebige Art von über ein Netzwerk aufrufbarer Verbindung (z.B. unter Verwendung eines Web-Browsers) mit einer beliebigen Art von computergestützter Einheit Daten austauschen können.
-
Unter Bezugnahme auf 9 ist ein Satz von funktionalen Abstraktionsschichten gezeigt, die durch die Cloud-Computing-Umgebung 50 (8) bereitgestellt werden. Es sollte von vornherein klar sein, dass die in 9 gezeigten Komponenten, Schichten und Funktionen lediglich veranschaulichend sein sollen und Ausführungsformen der Erfindung nicht darauf beschränkt sind. Wie dargestellt ist, werden die folgenden Schichten und entsprechenden Funktionen bereitgestellt:
-
Eine Hardware- und Softwareschicht 60 umfasst Hardware- und Softwarekomponenten. Zu Beispielen für Hardware-Komponenten gehören: Mainframe-Computer 61; auf der RISC- (Reduced Instruction Set Computer) Architektur beruhende Server 62; Server 63; Blade-Server 64; Speichereinheiten 65; und Netzwerke sowie Netzwerkkomponenten 66. In einigen Ausführungsformen umfassen Softwarekomponenten eine Netzwerk-Anwendungsserver-Software 67 und eine Datenbanksoftware 68.
-
Eine Virtualisierungsschicht 70 stellt eine Abstraktionsschicht bereit, aus der die folgenden Beispiele für virtuelle Einheiten bereitgestellt werden können: virtuelle Server 71; virtueller Speicher 72; virtuelle Netzwerke 73, darunter virtuelle private Netzwerke; virtuelle Anwendungen und Betriebssysteme 74; und virtuelle Clients 75.
-
In einem Beispiel kann eine Verwaltungsschicht 80 die nachstehend beschriebenen Funktionen bereitstellen. Eine Ressourcen-Bereitstellung 81 stellt die dynamische Beschaffung von Datenverarbeitungsressourcen sowie anderen Ressourcen bereit, die zum Durchführen von Aufgaben innerhalb der Cloud-Computing-Umgebung verwendet werden. Ein Messen und eine Preisfindung 82 stellen die Kostenverfolgung beim Verwenden von Ressourcen innerhalb der Cloud-Computing-Umgebung sowie die Abrechnung oder Rechnungsstellung für den Verbrauch dieser Ressourcen bereit. In einem Beispiel können diese Ressourcen Anwendungssoftwarelizenzen umfassen. Eine Sicherheit stellt die Identitätsüberprüfung für Cloud-Nutzer und Aufgaben sowie Schutz für Daten und andere Ressourcen bereit. Ein Benutzerportal 83 stellt Nutzern und Systemadministratoren den Zugang zu der Cloud-Computing-Umgebung bereit. Eine Verwaltung des Dienstumfangs 84 stellt die Zuordnung und Verwaltung von Cloud-Computing-Ressourcen bereit, so dass die benötigten Dienstziele erreicht werden. Ein Planen und Erfüllen von Vereinbarungen zum Dienstumfang (SLA, Service Level Agreement) 85 stellt die Anordnung vorab und die Beschaffung von Cloud-Computing-Ressourcen, für die eine zukünftige Anforderung vorausgesehen wird, gemäß einem SLA bereit.
-
Eine Arbeitslastschicht 90 stellt Beispiele für die Funktionalität bereit, für welche die Cloud-Computing-Umgebung verwendet werden kann. Zu Beispielen für Arbeitslasten und Funktionen, die von dieser Schicht bereitgestellt werden können, gehören: Abbildung und Navigation 91; Software-Entwicklung und Lebenszyklusverwaltung 92; Bereitstellung von Ausbildung in virtuellen Klassenzimmern 93; Datenanalytikverarbeitung 94; Transaktionsverarbeitung 95; und Inline-Pakettransformationsverarbeitung 96.
-
Bei Aspekten der vorliegenden Erfindung kann es sich um ein System, ein Verfahren und/oder ein Computerprogrammprodukt auf jeder möglichen Integrationsstufe technischer Details handeln. Das Computerprogrammprodukt kann ein durch einen Computer lesbares Speichermedium (oder -medien) mit durch einen Computer lesbaren Programmanweisungen darauf umfassen, um einen Prozessor dazu zu veranlassen, Aspekte der vorliegenden Erfindung auszuführen.
-
Bei dem durch einen Computer lesbaren Speichermedium kann es sich um eine physische Einheit handeln, die Anweisungen zur Verwendung durch ein System zur Ausführung von Anweisungen behalten und speichern kann. Bei dem durch einen Computer lesbaren Speichermedium kann es sich zum Beispiel um eine elektronische Speichereinheit, eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiterspeichereinheit oder jede geeignete Kombination daraus handeln, ohne auf diese beschränkt zu sein. Zu einer nicht erschöpfenden Liste spezifischerer Beispiele des durch einen Computer lesbaren Speichermediums gehören die folgenden: eine auswechselbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM bzw. Flash-Speicher), ein statischer Direktzugriffsspeicher (SRAM), ein auswechselbarer Kompaktspeicherplatte-Nur-Lese-Speicher (CD-ROM), eine DVD (digital versatile disc), ein Speicher-Stick, eine Diskette, eine mechanisch kodierte Einheit wie zum Beispiel Lochkarten oder erhabene Strukturen in einer Rille, auf denen Anweisungen gespeichert sind, und jede geeignete Kombination daraus. Ein durch einen Computer lesbares Speichermedium soll in der Verwendung hierin nicht als flüchtige Signale an sich aufgefasst werden, wie zum Beispiel Funkwellen oder andere sich frei ausbreitende elektromagnetische Wellen, elektromagnetische Wellen, die sich durch einen Wellenleiter oder ein anderes Übertragungsmedium ausbreiten (z.B. Lichtwellenleiterkabel durchlaufende Lichtimpulse) oder durch einen Draht übermittelte elektrische Signale.
-
Hierin beschriebene, durch einen Computer lesbare Programmanweisungen können von einem durch einen Computer lesbaren Speichermedium auf jeweilige Datenverarbeitungs-/Verarbeitungseinheiten oder über ein Netzwerk wie zum Beispiel das Internet, ein lokales Netzwerk, ein Weitverkehrsnetz und/oder ein drahtloses Netzwerk auf einen externen Computer oder eine externe Speichereinheit heruntergeladen werden. Das Netzwerk kann Kupferübertragungskabel, Lichtwellenübertragungsleiter, drahtlose Übertragung, Leitwegrechner, Firewalls, Switches, Gateway-Computer und/oder Edge-Server aufweisen. Eine Netzwerkadapterkarte oder Netzwerkschnittstelle in jeder Datenverarbeitungs-/Verarbeitungseinheit empfängt durch einen Computer lesbare Programmanweisungen aus dem Netzwerk und leitet die durch einen Computer lesbaren Programmanweisungen zur Speicherung in einem durch einen Computer lesbaren Speichermedium innerhalb der entsprechenden Datenverarbeitungs-/Verarbeitungseinheit weiter.
-
Bei durch einen Computer lesbaren Programmanweisungen zum Ausführen von Arbeitsschritten der vorliegenden Erfindung kann es sich um Assembler-Anweisungen, ISA-Anweisungen (Instruction-Set-Architecture), Maschinenanweisungen, maschinenabhängige Anweisungen, Mikrocode, Firmwareanweisungen, zustandssetzende Daten, Konfigurationsdaten für eine integrierte Schaltung oder entweder Quellcode oder Objektcode handeln, die in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen geschrieben werden, darunter objektorientierte Programmiersprachen wie Smalltalk, C++ o.ä. sowie prozedurale Programmiersprachen wie die Programmiersprache „C“ oder ähnliche Programmiersprachen. Die durch einen Computer lesbaren Programmanweisungen können vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Softwarepaket, teilweise auf dem Computer des Benutzers und teilweise auf einem fernen Computer oder vollständig auf dem fernen Computer oder Server ausgeführt werden. In letzterem Fall kann der entfernt angeordnete Computer mit dem Computer des Benutzers durch einen beliebigen Typ Netzwerk verbunden sein, darunter ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetz (WAN), oder die Verbindung kann mit einem externen Computer hergestellt werden (zum Beispiel durch das Internet unter Verwendung eines Internet-Dienstanbieters). In einigen Ausführungsformen können elektronische Schaltungen, darunter zum Beispiel programmierbare Logikschaltungen, vor Ort programmierbare Gatter-Anordnungen (FPGA, field-programmable gate arrays) oder programmierbare Logikanordnungen (PLA, programmable logic arrays) die durch einen Computer lesbaren Programmanweisungen ausführen, indem sie Zustandsinformationen der durch einen Computer lesbaren Programmanweisungen nutzen, um die elektronischen Schaltungen zu personalisieren, um Aspekte der vorliegenden Erfindung durchzuführen.
-
Aspekte der vorliegenden Erfindung sind hierin unter Bezugnahme auf Ablaufpläne und/oder Blockschaltbilder bzw. Schaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es wird darauf hingewiesen, dass jeder Block der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder sowie Kombinationen von Blöcken in den Ablaufplänen und/oder den Blockschaltbildern bzw. Schaubildern mittels durch einen Computer lesbarer Programmanweisungen ausgeführt werden können.
-
Diese durch einen Computer lesbaren Programmanweisungen können einem Prozessor eines Computers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, so dass die über den Prozessor des Computers bzw. der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführten Anweisungen ein Mittel zur Umsetzung der in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder festgelegten Funktionen/Schritte erzeugen. Diese durch einen Computer lesbaren Programmanweisungen können auch auf einem durch einen Computer lesbaren Speichermedium gespeichert sein, das einen Computer, eine programmierbare Datenverarbeitungsvorrichtung und/oder andere Einheiten so steuern kann, dass sie auf eine bestimmte Art funktionieren, so dass das durch einen Computer lesbare Speichermedium, auf dem Anweisungen gespeichert sind, ein Herstellungsprodukt aufweist, darunter Anweisungen, welche Aspekte der/des in dem Block bzw. den Blöcken des Ablaufplans und/oder der Blockschaltbilder bzw. Schaubilder festgelegten Funktion/Schritts umsetzen.
-
Die durch einen Computer lesbaren Programmanweisungen können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder eine andere Einheit geladen werden, um das Ausführen einer Reihe von Prozessschritten auf dem Computer bzw. der anderen programmierbaren Vorrichtung oder anderen Einheit zu verursachen, um einen auf einem Computer ausgeführten Prozess zu erzeugen, so dass die auf dem Computer, einer anderen programmierbaren Vorrichtung oder einer anderen Einheit ausgeführten Anweisungen die in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder festgelegten Funktionen/Schritte umsetzen.
-
Die Ablaufpläne und die Blockschaltbilder bzw. Schaubilder in den Figuren veranschaulichen die Architektur, die Funktionalität und den Betrieb möglicher Ausführungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in dem Ablaufplan oder in den Blockschaltbildern bzw. Schaubildern ein Modul, ein Segment oder einen Teil von Anweisungen darstellen, das bzw. der eine oder mehrere ausführbare Anweisungen zur Ausführung der festgelegten logischen Funktion(en) aufweist. In einigen alternativen Ausführungen können die in den Blöcken angegebenen Funktionen in einer anderen Reihenfolge als in den Figuren gezeigt stattfinden. Zwei nacheinander gezeigte Blöcke können zum Beispiel in Wirklichkeit als ein Schritt durchgeführt, gleichzeitig ausgeführt, im Wesentlichen gleichzeitig ausgeführt, in einer sich teilweise oder ganz zeitlich überlappenden Weise ausgeführt werden, oder die Blöcke können manchmal je nach entsprechender Funktionalität in umgekehrter Reihenfolge ausgeführt werden. Es ist ferner anzumerken, dass jeder Block der Blockschaltbilder bzw. Schaubilder und/oder der Ablaufpläne sowie Kombinationen aus Blöcken in den Blockschaltbildern bzw. Schaubildern und/oder den Ablaufplänen durch spezielle auf Hardware beruhende Systeme umgesetzt werden können, welche die festgelegten Funktionen oder Schritte durchführen, oder Kombinationen aus Spezial-Hardware und Computeranweisungen ausführen.
-
Zusätzlich zu dem Vorstehenden können ein oder mehrere Aspekte durch einen Serviceanbieter, der eine Verwaltung von Kundenumgebungen anbietet, bereitgestellt, angeboten, eingesetzt, verwaltet, gewartet usw. werden. Zum Beispiel kann der Serviceanbieter Computer-Code und/oder eine Computerinfrastruktur, die einen oder mehrere Aspekte für einen oder mehrere Kunden durchführt, erstellen, pflegen, unterstützen usw. Der Serviceanbieter kann als Gegenleistung Zahlungen von dem Kunden im Rahmen eines Abonnement- und/oder Gebührenvertrags, als Beispiele, erhalten. Zusätzlich oder alternativ kann der Serviceanbieter Zahlungen aus dem Verkauf von Werbeinhalten an einen oder mehrere Dritte erhalten.
-
In einem Aspekt kann eine Anwendung zum Durchführen von einer oder mehreren Ausführungsformen eingesetzt werden. Als ein Beispiel weist das Einsetzen einer Anwendung ein Bereitstellen von Computerinfrastruktur auf, die so betrieben werden kann, dass sie eine oder mehrere Ausführungsformen durchführt.
-
Als ein weiterer Aspekt kann eine Datenverarbeitungsinfrastruktur eingesetzt werden, die ein Integrieren von durch einen Computer lesbarem Code in ein Datenverarbeitungssystem aufweist, wobei der Code in Verbindung mit dem Datenverarbeitungssystem eine oder mehrere Ausführungsformen durchführen kann.
-
Als noch ein weiterer Aspekt kann ein Prozess zum Integrieren einer Datenverarbeitungsinfrastruktur bereitgestellt werden, der ein Integrieren von durch einen Computer lesbarem Code in ein Computersystem aufweist. Das Computersystem weist einen durch einen Computer lesbaren Datenträger auf, wobei der Computer-Datenträger eine oder mehrere Ausführungsformen aufweist. Der Code in Verbindung mit dem Computersystem kann eine oder mehrere Ausführungsformen durchführen.
-
Zwar sind vorstehend verschiedene Ausführungsformen beschrieben, doch handelt es sich dabei lediglich um Beispiele. Zum Beispiel können Datenverarbeitungsumgebungen anderer Architekturen verwendet werden, um eine oder mehrere Ausführungsformen einzubinden und zu verwenden. Des Weiteren können verschiedene Steuerblöcke, Befehle oder Operationen verwendet werden. Zusätzlich können verschiedene Typen von Transformationen angegeben werden. Viele Varianten sind möglich.
-
Verschiedene Aspekte sind hierin beschrieben. Des Weiteren sind viele Variationen möglich, ohne von einem Umfang von Aspekten der vorliegenden Erfindung abzuweichen. Es sollte angemerkt werden, dass, vorbehaltlich der Unvereinbarkeit, jeder hierin beschriebene Aspekt bzw. jedes hierin beschriebene Merkmal sowie Varianten davon gegebenenfalls mit einem beliebigen anderen Aspekt oder Merkmal kombiniert werden können.
-
Des Weiteren können andere Arten von Datenverarbeitungsumgebungen profitieren und verwendet werden. Als ein Beispiel ist ein für die Speicherung und/oder Ausführung von Programmcode geeignetes Datenverarbeitungssystem verwendbar, das mindestens zwei Prozessoren umfasst, die durch einen Systembus direkt oder indirekt mit Speicherelementen verbunden sind. Zu den Speicherelementen gehört zum Beispiel lokaler Speicher, der während der tatsächlichen Ausführung des Programmcodes genutzt wird, Massenspeicher und Cachespeicher, die eine vorübergehende Speicherung von mindestens einem Teil des Programmcodes bereitstellen, um die Häufigkeit zu verringern, mit der Code während der Ausführung aus dem Massenspeicher abgerufen werden muss.
-
Eingabe-/Ausgabe- bzw. E/A-Einheiten (darunter, ohne darauf beschränkt zu sein, Tastaturen, Bildschirme, Zeigereinheiten, DASD, Band, CDs, DVDs, Thumb-Drives und andere Speichermedien usw.) können entweder direkt oder durch dazwischenliegende E/A-Controller mit dem System verbunden sein. Netzwerkadapter können ebenfalls mit dem System verbunden sein, damit das Datenverarbeitungssystem mit anderen Datenverarbeitungssystemen oder fernen Druckern oder Speichereinheiten durch dazwischenliegende private oder öffentliche Netzwerke verbunden werden kann. Modems, Kabelmodems und Ethernet-Karten sind lediglich ein paar der verfügbaren Arten von Netzwerkadaptern.
-
Die hierin verwendete Terminologie dient lediglich dazu, bestimmte Ausführungsformen zu beschreiben, und ist nicht als einschränkend zu verstehen. In der Verwendung hierin sollen die Singular-Formen „ein“, „eine“ und „der“, „die“, „das“ auch die Pluralformen umfassen, sofern der Kontext nicht eindeutig etwas anderes angibt. Es wird des Weiteren darauf hingewiesen, dass die Begriffe „aufweist“ und/oder „aufweisend“, wenn sie in dieser Spezifikation verwendet werden, das Vorhandensein von angegebenen Merkmalen, ganzen Zahlen, Schritten, Operationen, Elementen und/oder Komponenten bezeichnen, das Vorhandensein oder das Hinzufügen von einem oder mehreren anderen/weiteren Merkmalen, ganzen Zahlen, Schritten, Operationen, Elementen; Komponenten und/oder Gruppen davon jedoch nicht ausschließen.
-
Die entsprechenden Strukturen, Materialien, Vorgänge und Äquivalente von allen Mitteln oder Schritt-plus-Funktion-Elementen (step plus function elements) in den nachstehenden Ansprüchen, sofern vorhanden, sollen jedwede Struktur, jedwedes Material oder jedweden Vorgang zum Durchführen der Funktion in Verbindung mit anderen beanspruchten Elementen, die im Einzelnen beansprucht werden, umfassen. Die Beschreibung von einer oder mehreren Ausführungsformen erfolgte zum Zweck der Veranschaulichung und Erläuterung, sie soll aber weder erschöpfend noch auf die offenbarte Form beschränkt sein. Für den Fachmann sind viele Änderungen und Varianten erkennbar. Die Ausführungsform wurde gewählt und beschrieben, um die verschiedenen Aspekte und die praktische Anwendung bestmöglich zu erklären und um anderen Fachleuten das Verständnis verschiedener Ausführungsformen mit verschiedenen Änderungen, wie sie für die jeweilige vorgesehene Verwendung geeignet sind, zu ermöglichen.