-
HINTERGRUND
-
Ein oder mehrere Aspekte beziehen sich im Allgemeinen auf eine Verarbeitung innerhalb einer Datenverarbeitungsumgebung und im Besonderen auf ein Verwalten einer solchen Verarbeitung.
-
Möglichkeiten zum Verbessern des Betriebs von Computersystemen werden durch eine Reihe von Methoden zum Umschreiben von Code bereitgestellt. So kann mit dem Umschreiben von Code zum Beispiel Binärcode modifiziert werden, um bekannte Hardwarefehler zu vermeiden. In anderen Beispielen kann bestehender Code zum Verbessern einer Leistung modifiziert werden, indem Regionen von Hotspots entweder aus Binärcode oder aus zusätzlichen internen, durch den statischen Compiler gespeicherten Darstellungsformaten reoptimiert werden, mit denen Code reoptimiert werden kann, ohne dass der Binärcode hierfür dekompiliert werden muss.
-
Zum Umschreiben von Code sind verschiedene Offline-Optimierungseinheiten verwendet worden. Diese Optimierungseinheiten modifizieren die eigentliche Binärdatei und führen zu Fehlern von selbstreferenziellen Programmen wie z.B. Programmen, die zur Beurteilung der Richtigkeit Prüfsummen ihres eigenen Codes berechnen. Diese Offline-Optimierungseinheiten sind außerdem davon abhängig, ob sie Auslastungsstatistiken erhalten.
-
Andere Optimierungsmethoden, wie z.B. eine dynamische Code-Optimierung, schreiben Code ebenfalls um. Diese Methoden rekompilieren Code allerdings dynamisch und speichern den neu erzeugen Code in seiner Gesamtheit an anderen Speicherpositionen als denen des ursprünglichen Codes ab, um ein solches selbstreferenzielles Verhalten beizubehalten.
-
KURZDARSTELLUNG
-
Durch die Bereitstellung eines Computerprogrammprodukts zum Verwalten einer Migration von Partitionen werden Nachteile des Stands der Technik überwunden und Vorteile bereitgestellt. Das Computerprogrammprodukt beinhaltet ein computerlesbares Speichermedium, das von einer Verarbeitungsschaltung lesbar ist und Befehle zur Ausführung durch die Verarbeitungsschaltung speichert, um ein Verfahren durchzuführen. Das Verfahren beinhaltet zum Beispiel ein Erhalten einer Angabe durch eine in einem Prozessor ausgeführte Optimierungseinheit, nach der eine Partition, die eine Anwendung ausführt, welche eines oder mehrere erweiterte Betriebsartmerkmale verwendet, auf ein System migriert werden soll, in dem mindestens ein erweitertes Betriebsartmerkmal des einen oder der mehreren erweiterten Merkmale nicht unterstützt wird; und auf Grundlage eines Erhaltens der Angabe ein Entfernen von mindestens einem Teil des Code der Anwendung, um eine Migration der Partition auf das System zu ermöglichen, in dem mindestens ein erweitertes Betriebsartmerkmal nicht unterstützt wird.
-
Verfahren und Systeme, die sich auf eine oder mehrere Ausführungsformen beziehen, werden hier ebenfalls beschrieben und beansprucht. Des Weiteren werden hier auch Dienste, die sich auf eine oder mehrere Ausführungsformen beziehen, beschrieben und gegebenenfalls beansprucht.
-
Zusätzliche Merkmale und Vorteile werden realisiert. Weitere Ausführungsformen und Aspekte werden hier ausführlich beschrieben und als Bestandteil der beanspruchten Erfindung betrachtet.
-
KURZBESCHREIBUNG DER VERSCHIEDENEN ANSICHTEN DER ZEICHNUNGEN
-
Ein oder mehrere Aspekte werden besonders hervorgehoben und in den Ansprüchen am Schluss der Beschreibung ausdrücklich als Beispiele beansprucht. Die obigen Ausführungen sowie andere Gegenstände, Merkmale und Vorteile werden aus der folgenden ausführlichen Beschreibung in Verbindung mit den beigefügten Zeichnungen offensichtlich, bei denen:
-
1 ein Beispiel für eine Datenverarbeitungsumgebung darstellt, die einen oder mehrere Aspekte einer Partitionsmobilitätseinrichtung beinhaltet und verwendet;
-
2A ein weiteres Beispiel für eine Datenverarbeitungsumgebung darstellt, die einen oder mehrere Aspekte einer Partitionsmobilitätseinrichtung beinhaltet und verwendet;
-
2B ein Beispiel für eine Mehrzahl von Maschinen darstellt, auf denen eine oder mehrere Partitionen ausgeführt werden;
-
3A ein weiteres Beispiel für eine Datenverarbeitungsumgebung darstellt, die einen oder mehrere Aspekte einer Partitionsmobilitätseinrichtung beinhaltet und verwendet;
-
3B weitere Einzelheiten des Arbeitsspeichers aus 3A darstellt;
-
4 ein Beispiel für eine Datenverarbeitungsumgebung darstellt, die korrigierten Anwendungscode beinhaltet;
-
5 ein Beispiel für eine allgemeine Ansicht eines virtuellen Arbeitsspeichers veranschaulicht, der unter Verwendung einer Hash-Seitentabellenmethode einem physischen Arbeitsspeicher zugeordnet wird;
-
6 ein Beispiel darstellt, bei dem eine effektive Adresse in verschiedene physische Adressen umgesetzt werden kann;
-
7 eine Ausführungsform eines Adressumsetzungsprozesses darstellt;
-
8 eine Ausführungsform einer Logik darstellt, um eine effektive Adresse in eine virtuelle Adresse umzusetzen;
-
9 eine Ausführungsform bildhaft darstellt, mit der eine effektive Adresse in eine virtuelle Adresse umgesetzt wird;
-
10 ein Beispiel für eine Hash-Seitentabellen-Umsetzungsstruktur darstellt;
-
11 ein Beispiel für eine effektive Adresse darstellt, die in separate physische Adressen umgesetzt wird;
-
12 Beispiele für ein Umsetzen von effektiven Adressen in physische Adressen darstellt;
-
13A ein Beispiel für ein Steuerregister darstellt;
-
13B ein Beispiel für ein Maschinenzustandsregister darstellt;
-
13C ein Beispiel für einen Eintrag in einer Adressumsetzungsstruktur darstellt;
-
13D ein Beispiel für einen Seitentabelleneintrag darstellt;
-
13E ein Beispiel für einen Speicherschlüssel darstellt;
-
13F ein Beispiel für eine einzelne erweiterte Betriebsartsteuerung in einem Seitentabelleneintrag sowie für mehrere einzelne erweiterte Betriebsartsteuerungen in einem Steuerregister darstellt;
-
14A eine Ausführungsform von Logik zum Erzeugen eines optimierten Codes darstellt;
-
14B eine weitere Ausführungsform von Logik zum Erzeugen von optimiertem Code darstellt, der erweiterte Betriebsartmerkmale ermöglicht;
-
15 eine Ausführungsform eines Verwendens von optimiertem Code darstellt, der sich erweiterte Betriebsartmerkmale zunutze macht;
-
16A ein Beispielformat eines Befehls zum Verschieben aus einem Maschinenzustandsregister (move from machine state register, mfmsr) darstellt;
-
16B ein Beispielformat eines Befehls zum Verschieben in ein Maschinenzustandsregister (move to machine state register, mtmsr) darstellt;
-
17 eine Ausführungsform von Logik darstellt, um Zugriff auf erweiterte Betriebsartmerkmale zu erhalten und ihre Nutzung zu registrieren;
-
18 ein Beispiel für erzeugten Code unter Verwendung von erweiterten Betriebsartmerkmalen darstellt;
-
die 19A bis 19C Beispiele für erzeugten Code mit Mobilitätsbeschränkungen darstellen;
-
20 eine Ausführungsform von Logik darstellt, um ein Migrieren einer Partition vorzubereiten;
-
21 eine Ausführungsform von Logik darstellt, um einer Optimierungseinheit mitzuteilen, dass sie ein Migrieren einer Partition vorbereiten soll;
-
22 eine Ausführungsform von Logik darstellt, um Code zum Migrieren einer Partition zu modifizieren;
-
23 eine weitere Ausführungsform von Logik darstellt, um Code zum Migrieren einer Partition zu modifizieren;
-
24 ein Beispiel für erzeugten Code und für zulässige Umschaltpunkte zu nicht optimiertem Code darstellt;
-
25 eine Ausführungsform eines Computerprogrammprodukts darstellt;
-
26 eine Ausführungsform eines Host-Computersystems darstellt;
-
27 ein weiteres Beispiel für ein Computersystem darstellt;
-
28 ein weiteres Beispiel für ein Computersystem darstellt, das ein Computernetzwerk aufweist;
-
29 eine Ausführungsform verschiedener Elemente eines Computersystems darstellt;
-
30A eine Ausführungsform der Ausführungseinheit des Computersystems aus 29 darstellt;
-
30B eine Ausführungsform der Verzweigungseinheit des Computersystems aus
-
29 darstellt;
-
30C eine Ausführungsform der Lade-/Speichereinheit des Computersystems aus
-
29 darstellt;
-
31 eine Ausführungsform eines emulierten Host-Computersystems darstellt;
-
32 eine Ausführungsform eines Cloud-Datenverarbeitungsknotens darstellt;
-
33 eine Ausführungsform einer Cloud-Datenverarbeitungsumgebung darstellt; und
-
34 ein Beispiel für Abstraktionsmodellebenen darstellt.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Eine dynamische Code-Optimierung (DCO) eröffnet bedeutende Möglichkeiten zum Verbessern des Betriebs von Computersystemen. So kann bestehender Code zum Verbessern einer Leistung modifiziert werden, indem Regionen von Hotspots entweder aus Binärcode oder aus zusätzlichen internen, durch den statischen Compiler gespeicherten Darstellungsformaten reoptimiert werden, wodurch einer Reoptimierungskomponente ein Reoptimieren von Code ermöglicht wird, ohne dass der Binärcode hierfür dekompiliert werden muss. Eine dynamische Code-Optimierung kann zum Beispiel weiterhin dazu verwendet werden, Fehler zu vermeiden oder zu beheben, die Sicherheit zu verbessern, zusätzliche Merkmale bereitzustellen usw.
-
Gemäß einem oder mehreren Aspekten werden bei einer dynamischen Code-Optimierung ein oder mehrere Teile eines Anwendungscodes modifiziert (d.h. geändert, überarbeitet, verbessert, aktualisiert, optimiert usw.), wodurch der Anwendungscode als korrigiert gilt (d.h. bestehender Code wird gemeinsam mit den Modifizierungen verwendet). Ein Teil des zu modifizierenden Codes wird kopiert, modifiziert und in einer oder mehreren Arbeitsspeicherregionen (z.B. Seiten eines Arbeitsspeichers) gespeichert, die von den Arbeitsspeicherregionen, in denen der bestehende oder nicht modifizierte Anwendungscode gespeichert ist, getrennt sind.
-
Gemäß einem oder mehreren Aspekten wird beim Korrigieren von Code eine separate Adressumsetzung bereitgestellt, die zum Beispiel davon abhängig ist, ob die Umsetzung für einen Befehlsabruf oder einen Datenzugriff erfolgt. So werden Datenzugriffe (z.B. eine Adressumsetzung für Datenzugriffe) zum Beispiel an den nicht modifizierten Code (d.h. eine oder mehrere erste Arbeitspeicherregionen) geleitet, während eine Code-Umsetzung (z.B. eine Adressumsetzung für Befehlsabrufe) an den modifizierten Code (d.h. eine oder mehrere zweite Arbeitsspeicherregionen) geleitet wird. Zusätzlich werden Befehlsabrufe und Datenzugriffe für Code der Anwendung, der nicht kopiert wurde, an denselben bestehenden Code geleitet und in diesem Beispiel ebenfalls in der einen oder den mehreren Arbeitsspeicherregionen gespeichert. Diese separate Adressumsetzung wird zum Beispiel durch eine Hardware-Unterstützung erreicht, die selektiv eine separate Befehls- und Datenumsetzung innerhalb eines Prozessors verwaltet, so dass anstelle des gesamten Codes lediglich Teile (z.B. modifizierte Teile) des Code dupliziert werden können.
-
Gemäß einem oder mehreren Aspekten eröffnet eine dynamische Code-Optimierung die Möglichkeit, zusätzliche Merkmale oder Ausführungsarten (die hier als erweiterte Betriebsartmerkmale bezeichnet werden) zu nutzen, die von einer Maschine angeboten werden und die auf der Maschine ausgeführten (auch als Programme, Anwendungsprogramme usw. bezeichneten) Anwendungen andernfalls nicht verfügbar bzw. nicht bekannt wären oder von diesen nicht verwendet würden. So wird ein Anwendungsprogramm zum Beispiel über mehrere Generationen hinweg mit einer gemeinsamen Befehlssatzarchitektur (Instruction Set Architecture, ISA) entwickelt. Wenn eine spezifische Realisierung/Mikroarchitektur daher spezifische Möglichkeiten zur Optimierung bietet, werden diese Fähigkeiten aufgrund von Kompatibilitätserwägungen in der ISA oft nicht verfügbar gemacht. Selbst wenn neue Merkmale als Teil der ISA verfügbar gemacht werden, verwendet die Anwendung häufig eine frühere Version der ISA.
-
Gemäß einem oder mehreren Aspekten kann jedoch eine dynamische Code-Optimierung verwendet werden, um diese zusätzlichen Merkmale zu nutzen, die auf der Maschine ausgeführten Anwendungen andernfalls nicht verfügbar bzw. nicht bekannt wären bzw. von diesen nicht verwendet würden. Während dies erreicht wird, werden gleichzeitig andere Anwendungen davon abgehalten, eine ISA-Ebene zu nutzen, auf die sie keinen Zugriff haben sollen. Insbesondere werden gemäß einem Aspekt höhere oder erweiterte Funktionsebenen einem Anwendungscode verfügbar gemacht, der durch eine DCO-Komponente erzeugt wurde und mit einer normalen Anwendungs-Berechtigungsstufe ausgeführt wird, während andere Anwendungen am Ausführen solcher Befehle gehindert werden.
-
Gemäß einem weiteren Aspekt kann eine Anwendung, die optimierten Code mit einem oder mehreren erweiterten Betriebsartmerkmalen beinhaltet, innerhalb einer Partition ausgeführt werden, die auf einen weiteren Host (z.B. eine weitere Maschine, ein weiteres System usw.) migriert werden soll. In diesem Fall wird eine Einrichtung bereitgestellt, um sicherzustellen, dass der Host, auf den die Partition verschoben wird, die erweiterten Betriebsartmerkmale unterstützt; andernfalls werden Schritte durchgeführt, um diese Merkmale vor einer Migration auf den neuen Host zu entfernen. Dies wird hier als eine Partitionsmobilitätseinrichtung bezeichnet, die weiter unten ausführlich beschrieben wird.
-
Datenübertragungsumgebungen verschiedener Architekturen können einen oder mehrere Aspekte der hier bereitgestellten dynamischen Code-Optimierungsfähigkeit wie z.B. der Partitionsmobilitätseinrichtung beinhalten und verwenden. So können zum Beispiel Umgebungen auf Grundlage der auch als Power ISA bezeichneten PowerPC-Architektur, die von der International Business Machines Corporation (IBM®) angeboten und in der hier in ihrer Gesamtheit durch Bezugnahme mit aufgenommenen Spezifikation „Power ISATM Version 2.07“ vom 03. Mai 2013 beschrieben wird, einen oder mehrere Aspekte beinhalten, ebenso wie Datenverarbeitungsumgebungen anderer Architekturen, z.B. die von der International Business Machines Corporation angebotene und in „z/Architecture – Principles of Operation“, Publikation SA22-7932-09, 10. Auflage, September 2012, beschriebene z/Architecture, die hier in ihrer Gesamtheit durch Bezugnahme mit aufgenommen wird.
-
POWER, POWER ARCHITECTURE, POWERPC, Z/ARCHITECTURE, IBM, AIX, POWERVM, Z/OS und Z/VM (auf die hier Bezug genommen wird) sind eingetragene Handelsmarken der International Business Machines Corporation mit Sitz in Armonk, New York. Andere hier genannte Namen können eingetragene Handelsmarken, Handelsmarken oder Produktnamen der International Business Machines Corporation oder anderer Unternehmen sein.
-
Ein Beispiel für eine Datenverarbeitungsumgebung, die einen oder mehrere Aspekte der dynamischen Code-Optimierungsfähigkeit wie z.B. der Partitionsmobilitätseinrichtung beinhaltet und verwendet, wird unter Bezugnahme auf 1 beschrieben. In einem Beispiel beinhaltet eine Datenverarbeitungsumgebung 100 einen Prozessor (Zentraleinheit, CPU) 102, der mindestens eine Arbeitsspeicher-Verwaltungseinheit (Memory Management Unit, MMU) 104, eine oder mehrere Adressumsetzungsstrukturen 105 und einen oder mehrere Cachespeicher 106 beinhaltet. Der Prozessor 102 ist mit einem Arbeitsspeicherbereich 108 und einem Eingabe/Ausgabe-Teilsystem (E/A-Teilsystem) 112 kommunikativ gekoppelt. Der Arbeitsspeicherbereich 108 beinhaltet zum Beispiel einen oder mehrere Cachespeicher 110 und eine dynamische Code-Optimierungseinheit (Dynamic Code Optimizer, DCO) 111, die zum Optimieren von Anwendungen verwendet werden kann, welche in dem Prozessor ausgeführt werden. Das E/A-Teilsystem 112 ist mit externen E/A-Einheiten 114 kommunikativ gekoppelt, die zum Beispiel Dateneingabeeinheiten, Sensoren und/oder Ausgabeeinheiten wie Anzeigen beinhalten können.
-
Die Arbeitsspeicher-Verwaltungseinheit 104 wird zum Verwalten des Arbeitsspeicherbereichs 108 verwendet, unter anderem, um einen Zugriff auf den Arbeitsspeicher zu ermöglichen, indem eine Adressumsetzung bereitgestellt wird. Zum Verbessern der Adressumsetzung verwendet die Arbeitsspeicher-Verwaltungseinheit eine oder mehrere Adressumsetzungsstrukturen 105 wie zum Beispiel einen Adressumsetzpuffer (Translation Lookaside Buffer, TLB) und einen Segmentumsetzpuffer (Segment Lookaside Buffer, SLB), die sich bei einer Ausführungsform in der MMU befinden. Der TLB ist ein Cachespeicher mit zuvor umgesetzten Adressen. Wenn somit eine Anforderung für einen Arbeitsspeicherzugriff empfangen wird, der eine umzusetzende Adresse beinhaltet, wird zunächst der TLB überprüft. Wenn sich die Adresse und ihre Umsetzung in dem TLB befinden, ist kein weiterer Umsetzungsprozess auf Grundlage der Verwendung einer beliebigen Anzahl von Umsetzungsmethoden notwendig. Andernfalls wird die empfangene Adresse unter Verwendung einer beliebigen Anzahl von Umsetzungsmethoden umgesetzt.
-
Eine weitere Ausführungsform einer Datenverarbeitungsumgebung, die einen oder mehrere Aspekte der dynamischen Code-Optimierungsfähigkeit wie z.B. der Partitionsmobilitätseinrichtung beinhaltet und verwendet, ist in 2A dargestellt. Mit Bezug auf 2A beinhaltet eine Datenverarbeitungsumgebung 200 in einem Beispiel einen Zentralprozessorkomplex (Central Processor Complex, CPC) 202, der über eine oder mehrere Steuerungseinheiten 206 mit einer oder mehreren E/A-Einheiten 204 verbunden ist. Der Zentralprozessorkomplex 202 beinhaltet einen (auch als Hauptarbeitsspeicher, Hauptspeicher, Zentralspeicher bezeichneten) Prozessorarbeitsspeicher 208, der mit einem oder mehreren (auch als Zentraleinheiten oder CPUs bezeichneten) Zentralprozessoren 210 verbunden ist, und ein E/A-Teilsystem 212, die jeweils weiter unten ausführlicher beschrieben werden.
-
Der Prozessorarbeitsspeicher 208 beinhaltet eine oder mehrere virtuelle Maschinen 214 (in einem Beispiel Maschinen mit der PowerPC-Architektur) oder eine oder mehrere logische Partitionen 214 (in einem Beispiel Partitionen mit der z/Architecture) sowie Prozessorfirmware 216, die einen Hypervisor 218 und sonstige Prozessorfirmware 220 beinhaltet. In der hier vorliegenden Verwendungsform beinhaltet Firmware z.B. den Mikrocode und/oder Millicode des Prozessors. Sie beinhaltet z.B. die Befehle auf Hardware-Ebene und/oder Datenstrukturen, die für eine Realisierung von Maschinencode einer höheren Abstraktionsebene verwendet werden. Bei einer Ausführungsform beinhaltet sie zum Beispiel herstellerspezifischen Code, der üblicherweise als Mikrocode, welcher vertrauenswürdige Software enthält, oder als Mikrocode bereitgestellt wird, der für die darunter liegende Hardware spezifisch ist und einen Betriebssystemzugriff auf die Systemhardware steuert.
-
Jede virtuelle Maschine oder logische Partition 214 funktioniert als ein separates System und weist eine oder mehrere Anwendungen 222 sowie optional ein darin befindliches Betriebssystem 224 auf, das für jede virtuelle Maschine oder logische Partition unterschiedlich sein kann. Bei einer Ausführungsform ist das Betriebssystem das z/VM-Betriebssystem, das z/OS-Betriebssystem, das z/Linux-Betriebssystem, das TPF-Betriebssystem, das AIX-Betriebssystem, das Power Linux-Betriebssystem, das IBM i/OS-Betriebssystem oder ein weiteres Betriebssystem, das von der International Business Machines Corporation mit Sitz in Armonk, New York, angeboten wird, oder ein weiteres Betriebssystem, das von einem weiteren Unternehmen angeboten wird. Des Weiteren kann jede logische Partition oder virtuelle Maschine eine dynamische Code-Optimierungseinheit 225 oder eine andere Optimierungseinheit beinhalten, die als Teil des Betriebssystems, als Teil einer oder mehrerer Anwendungen oder eigenständig ausgeführt werden kann, um optimierten Anwendungscode bereitzustellen.
-
Die virtuellen Maschinen werden durch den Hypervisor 218 wie z.B. den von der International Business Machines Corporation mit Sitz in Armonk, New York, angebotenen PowerVM verwaltet; und die logischen Partitionen werden durch den Hypervisor 218 wie z.B. den von der Business Machines Corporation mit Sitz in Armonk, New York, angebotenen Processor Resource/System Manager (PR/SM) verwaltet.
-
Die Zentralprozessoren 210 sind physische Prozessorressourcen, die den virtuellen Maschinen zuweisbar oder den logischen Partitionen zugeordnet sind. Jede virtuelle Maschine oder logische Partition 214 beinhaltet zum Beispiel einen oder mehrere logische Prozessoren, von denen jeder für einen gesamten oder für einen Teil eines physischen Prozessors 210 steht, welcher der virtuellen Maschine oder Partition dynamisch zugeordnet werden kann. Ein Zentralprozessor kann eine Arbeitsspeicher-Verwaltungseinheit (MMU) 230 und eine oder mehrere Adressumsetzungsstrukturen 231, die eine Adressumsetzung wie hier beschrieben bereitstellen, sowie mindestens einen Cachespeicher 232 beinhalten.
-
Das Eingabe/Ausgabe-Teilsystem 212 lenkt den Datenfluss zwischen den Eingabe/Ausgabe-Einheiten 204 und dem Hauptarbeitsspeicher 208. Es ist insofern mit dem Server gekoppelt, als es ein Teil des Zentralverarbeitungskomplexes oder von diesem getrennt sein kann. Das E/A-Teilsystem enthebt die Zentralprozessoren der Aufgabe, direkt mit den Eingabe/Ausgabe-Einheiten Daten auszutauschen, und erlaubt eine gleichzeitige Datenverarbeitung und Eingabe/Ausgabe-Verarbeitung. Um eine Datenübertragung bereitzustellen, verwendet das E/A-Teilsystem E/A-Datenübertragungsadapter. Es gibt verschiedene Arten von Datenübertragungsadaptern wie zum Beispiel Kanäle, E/A-Adapter, PCI-Karten, Ethernet-Karten, SCSI-Karten (Small Computer Storage Interface) usw. Des Weiteren verwendet das E/A-Teilsystem einen oder mehrere Eingabe/Ausgabe-Pfade als Datenübertragungsverbindungen beim Verwalten des Datenflusses an die oder von den Eingabe/Ausgabe-Einheiten 204.
-
Gemäß einem Aspekt kann eine auf einer Maschine (oder einem System oder Host) ausgeführte Partition wie hier beschrieben auf eine andere Maschine migriert werden. In diesem Zusammenhang kann sich der Begriff „Partition“ zum Beispiel auf eine logische Partition oder auf eine virtuelle Maschine beziehen. Mit Bezug auf 2B beinhaltet eine erste Maschine 250 zum Beispiel eine Mehrzahl von Partitionen 260a bis 260n, und eine zweite Maschine 252 beinhaltet eine oder mehrere andere Partitionen 270. In einem Beispiel sollen Partition 1 und insbesondere die Anwendungen von Partition 1 von Maschine 1 auf Maschine 2 migriert werden, wie durch die gestrichelte Linie kenntlich gemacht wird. Eine Ausführungsform einer solchen Migration wird weiter unten beschrieben.
-
Eine weitere Ausführungsform einer Datenverarbeitungsumgebung, die einen oder mehrere Aspekte der dynamischen Code-Optimierungsfähigkeit wie z.B. der Partitionsmobilitätseinrichtung beinhaltet und verwendet, wird mit Bezug auf 3A beschrieben. In diesem Beispiel beinhaltet eine Datenverarbeitungsumgebung 300 zum Beispiel eine native Zentraleinheit (CPU) 302, einen Arbeitsspeicher 304 und eine oder mehrere Eingabe/Ausgabe-Einheiten und/oder -Schnittstellen 306, die zum Beispiel über einen oder mehrere Busse 308 und/oder andere Verbindungen miteinander verbunden sind. Die Datenverarbeitungsumgebung 300 kann zum Beispiel einen von der International Business Machines Corporation mit Sitz in Armonk, New York, angebotenen PowerPC-Prozessor oder einen Power Systems-Server; einen von Hewlett Packard Co. mit Sitz in Palo Alto, Kalifornien, angebotenen HP Superdome mit Intel-Itanium-II-Prozessoren; und/oder andere Maschinen auf Grundlage von Architekturen beinhalten, die von der International Business Machines Corporation, von Hewlett Packard, Intel, Oracle oder anderen angeboten werden.
-
Die native Zentraleinheit 302 beinhaltet ein oder mehrere native Register 310 wie z.B. ein oder mehrere Universalregister und/oder ein oder mehrere Spezialregister, die während einer Verarbeitung innerhalb der Umgebung verwendet werden sowie eine oder mehrere Adressumsetzungsstrukturen 311. Diese Register enthalten Daten, die für den Zustand der Umgebung zu jedem beliebigen Zeitpunkt stehen.
-
Darüber hinaus führt die native Zentraleinheit 302 Befehle und Code aus, die in dem Arbeitsspeicher 304 gespeichert sind. In einem bestimmten Beispiel führt die Zentraleinheit einen Emulatorcode 312 aus, der in dem Arbeitsspeicher 304 gespeichert wird. Anhand dieses Codes kann die in einer Architektur konfigurierte Datenverarbeitungsumgebung eine weitere Architektur emulieren. So ermöglicht der Emulatorcode 312 zum Beispiel Maschinen auf Grundlage von anderen Architekturen als der z/Architecture wie beispielsweise PowerPC-Prozessoren, Power Systems-Servern, HP-Superdome-Servern oder anderen, die z/Architecture zu emulieren und Software und Befehle auszuführen, die auf Grundlage der z/Architecture entwickelt wurden, oder er ermöglicht Maschinen auf Grundlage von anderen Architekturen als der Power Architecture wie beispielsweise HP Superdome-Servern oder anderen, die Power Architecture zu emulieren und Software und Befehle auszuführen, die auf Grundlage der Power Architecture entwickelt wurden.
-
Weitere Einzelheiten zu dem Emulatorcode 312 werden mit Bezug auf 3B beschrieben. In dem Arbeitsspeicher 304 gespeicherte Gastbefehle 350 weisen Softwarebefehle (die z.B. Maschinenbefehlen entsprechen) auf, die entwickelt wurden, um in einer anderen Architektur als derjenigen der nativen CPU 302 ausgeführt zu werden. Die Gastbefehle 350 können zum Beispiel für eine Ausführung in einem Power Architecture- oder z/Architecture-Prozessor 102 entworfen worden sein, werden jedoch stattdessen in der nativen CPU 302 emuliert, bei der es sich zum Beispiel um einen Itanium-II-Prozessor von Intel handeln kann. In einem Beispiel beinhaltet der Emulatorcode 312 eine Befehlsabrufroutine 352, um einen oder mehrere Gastbefehle 350 aus dem Arbeitsspeicher 304 zu erhalten und um optional ein lokales Puffern für die erhaltenen Befehle bereitzustellen. Er beinhaltet außerdem eine Befehlsumsetzungsroutine 354, um die Art des erhaltenen Gastbefehls zu ermitteln und den Gastbefehl in einen oder mehrere entsprechende native Befehle 356 umzusetzen. Diese Umsetzung beinhaltet zum Beispiel ein Identifizieren der Funktion, die durch den Gastbefehl durchgeführt werden soll, und ein Auswählen des/der nativen Befehls/Befehle, welche die Funktion ausführen soll/en.
-
Des Weiteren beinhaltet der Emulatorcode 312 eine Emulationssteuerungsroutine 360, um zu veranlassen, dass die nativen Befehle ausgeführt werden. Die Emulationssteuerungsroutine 360 kann die native CPU 302 dazu veranlassen, eine Routine mit nativen Befehlen auszuführen, die einen oder mehrere zuvor erhaltene Gastbefehle emulieren, und die nach Abschluss einer solchen Ausführung die Steuerung an die Befehlsabrufroutine zurückgeben, um das Erhalten des nächsten Gastbefehls oder einer Gruppe von Gastbefehlen zu emulieren. Eine Ausführung der nativen Befehle 356 kann beinhalten, Daten aus einem Arbeitsspeicher 304 in ein Register zu laden; Daten aus einem Register in einen Arbeitsspeicher zurück zu speichern; oder eine andere Art von arithmetischer oder logischer Operation durchzuführen, wie sie durch die Umsetzungsroutine bestimmt wird.
-
Jede Routine wird beispielsweise in Software realisiert, die im Arbeitsspeicher gespeichert und durch die native Zentraleinheit 302 ausgeführt wird. In anderen Beispielen werden eine oder mehrere Routinen oder Operationen in Firmware, Hardware, Software oder einer beliebigen Kombination hiervon realisiert. Die Register des emulierten Prozessors können unter Verwendung der Register 310 der nativen CPU oder unter Verwendung von Positionen in dem Arbeitsspeicher 304 emuliert werden. Bei Ausführungsformen können sich die Gastbefehle 350, die nativen Befehle 356 und der Emulatorcode 312 in demselben Arbeitsspeicher befinden, oder sie können auf verschiedene Arbeitsspeichereinheiten verteilt sein.
-
Die oben beschriebenen Datenverarbeitungsumgebungen sind lediglich Beispiele für Datenverarbeitungsumgebungen, die verwendet werden können. Andere Umgebungen wie beispielsweise, ohne darauf beschränkt zu sein, andere nicht partitionierte Umgebungen, andere partitionierte Umgebungen und/oder andere emulierte Umgebungen können verwendet werden; Ausführungsformen sind auf keine wie auch immer geartete einzelne Umgebung beschränkt.
-
Datenverarbeitungsumgebungen wie die oben beschriebenen werden durch die Aufnahme von Komponenten verbessert, die in den Umgebungen ausgeführte Anwendungsprogramme ändern, um diese Anwendungsprogramme mit zusätzlichen Merkmalen auszustatten. So kann zum Beispiel eine als dynamische Code-Optimierungseinheit (DCO) bezeichnete Komponente bereitgestellt werden, die Programme während des Ausführens überprüft, häufig ausgeführte Codesegmente erkennt und diese Segmente optimiert. Auch andere Arten von Optimierung sowie andere Arten von Komponenten sind möglich. Des Weiteren können aus anderen Gründen Änderungen an Programmen vorgenommen werden, z.B. um einen Fehler zu korrigieren, Umgehungen für bekannte Hardwarefehler bereitzustellen, die Sicherheit zu verbessern usw.
-
Ein Ändern eines Programms während des Ausführens ist kompliziert und kann zu Problemen führen. Wenn ein Programm z.B. auf sich selbst verweist, d.h. selbstreferenziell ist, kann es die Änderung erkennen und die Ausführung verweigern, oder die Änderung kann dazu führen, dass es aufgrund seiner Selbstreferenzierung nicht einwandfrei ausgeführt wird. Ein Beispiel für einen selbstreferenziellen Code kann ein Binärcode sein, der seine eigene Richtigkeit überprüft, indem er die Prüfsumme seines Programmcodes berechnet und das berechnete Ergebnis mit einem erwarteten Ergebnis vergleicht, um eine Manipulation zu verhindern. Somit wird gemäß einem Aspekt eine Fähigkeit bereitgestellt, mit der Anwendungen modifiziert werden können, während gleichzeitig die selbstreferenzielle Integrität bewahrt wird.
-
In einem Beispiel bleibt bei der dynamischen Code-Optimierung selten verwendeter Code unverändert, während häufig verwendeter, auch als Hotspot bezeichneter Code dynamisch in optimierten Code kompiliert wird, und der bestehende Code wird korrigiert, um den optimierten Code in den bestehenden Code zu integrieren und so korrigierten Code zu erzeugen. Um zu dem optimierten Code zu gelangen, wird der ursprüngliche Binärcode dann modifiziert (korrigiert), indem eine Sprunganweisung eingefügt wird, um zu dem optimierten Code zu springen, woraufhin eine weitere Sprunganweisung eingefügt wird, um zurück zu dem ursprünglichen Code zu springen.
-
Ein Beispiel für eine Datenverarbeitungsumgebung, die korrigierten Code beinhaltet, ist in 4 dargestellt. Diese Datenverarbeitungsumgebung hat zum Beispiel die von der International Business Machines Corporation angebotene PowerPC-Architektur zur Grundlage, wobei jedoch viele andere Systeme einen oder mehrere der hier beschriebenen Aspekte beinhalten und verwenden können. Wie gezeigt, beinhaltet eine Datenverarbeitungsumgebung 400 zum Beispiel einen Prozessor 402, der über einen oder mehrere Cachespeicher 406, 408 mit einem Arbeitsspeicher 404 verbunden ist. Der Arbeitsspeicher 404 ist zum Beispiel ein Direktzugriffsspeicher mit einer Mehrzahl von Bereichen wie beispielsweise einem Systemarbeitsspeicher 410, einem Datenarbeitsspeicher 412 und einem (auch als Befehlsarbeitsspeicher bezeichneten) Code-Arbeitsspeicher 414. In einem Beispiel beinhaltet der Systemarbeitsspeicher 410 Anwendungscode wie beispielsweise korrigierten Anwendungscode 420 und/oder Daten für eine oder mehrere Anwendungen; der Datenarbeitsspeicher 412 ist ein Arbeitsspeicher, der zum Beispiel durch eine Optimierungseinheit verwendet wird; und der Code-Arbeitsspeicher 414 ist zum Beispiel ein Code der Optimierungseinheit. Der Code-Arbeitsspeicher 414 ist mit dem Befehlsarbeitsspeicher 406 verbunden, auf den der Prozessor 402 zugreift; und der Datenarbeitsspeicher 412 sowie der Systemarbeitsspeicher 410 sind mit dem Datencachespeicher 408 verbunden, auf den der Prozessor 402 zugreift. Des Weiteren ist der Systemarbeitsspeicher 410 mit dem korrigierten Anwendungscode 420 auch mit dem Befehlscachespeicher 406 verbunden.
-
Im Besonderen beinhaltet bei einer Ausführungsform der Systemarbeitsspeicher 410 zum Beispiel Anwendungscode für eine oder mehrere Anwendungen wie beispielsweise den korrigierten Anwendungscode 420. Anwendungscode für eine bestimmte Anwendung wird zum Beispiel in einer oder mehreren Arbeitsspeicherregionen (z.B. Seiten) des Systemarbeitsspeichers 410 gespeichert. Wenn die bestimmte Anwendung modifiziert wird, wird sie als korrigierter Anwendungscode bezeichnet, was den bestehenden Code plus den modifizierten Code beinhaltet. Aus Arbeitsspeicherperspektive bleiben die Teile des korrigierten Anwendungscodes, die nicht modifiziert wurden, in denselben Arbeitsspeicherregionen gespeichert wie der bestehende Anwendungscode, und jeglicher duplizierte oder modifizierte Code wird in einer oder mehreren Arbeitsspeicherregionen des Systemspeichers 410 gespeichert, die von den Arbeitsspeicherregionen des bestehenden oder nicht modifizierten Anwendungscodes getrennt sind.
-
Da der korrigierte Anwendungscode modifizierten Code beinhaltet, der sich in einer oder mehreren separaten Arbeitsspeicherregionen befindet, und da bei einer Ausführungsform dieser modifizierte Code vor Datenzugriffen verborgen werden soll, werden separate Adressumsetzungen für Befehlsabrufe und Datenzugriffe in Zusammenhang mit dem modifizierten Code bereitgestellt, wie weiter unten beschrieben wird. Durch die Verwendung separater Adressumsetzungen für Befehls-/Datenzugriffe in Verbindung mit der Arbeitsspeicherzuordnung aus 4 kann der Abruffunktion die Sicht auf den Arbeitsspeicher versperrt werden, wodurch die Verwendung von korrigiertem Code bei gleichzeitiger Beibehaltung der referenziellen Integrität möglich wird.
-
Einzelheiten zu physischem Arbeitsspeicher, der durch eine oder mehrere der hier beschriebenen Datenverarbeitungsumgebungen verwendet wird, werden mit Bezug auf 5 beschrieben. Bekanntermaßen weist ein physischer Arbeitsspeicher eine definierte Größe auf, und um den physischen Arbeitsspeicher größer erscheinen zu lassen, als er ist, wird virtueller Arbeitsspeicher verwendet. Ein Beispiel für eine allgemeine Ansicht eines virtuellen Arbeitsspeichers 501, der einem physischen Arbeitsspeicher 503 (z.B. dem Arbeitsspeicher 108, 208, 304, 404 oder einem Teil hiervon) zugeordnet wird, ist in 5 dargestellt. In diesem Beispiel erfolgt das Zuordnen von einem virtuellen Arbeitsspeicher auf einen realen Arbeitsspeicher über eine Hash-Seitentabellenmethode 505 (Hash Page Table, HPT), um Seitentabelleneinträge (Page Table Entries, PTEs) ausfindig zu machen, wie sie z.B. von der Power ISA verwendet werden. In diesem Beispiel verwenden Programme nur Bereiche (oder Segmente) A und B des virtuellen Arbeitsspeichers. Jedes Segment des virtuellen Speichers wird einem Segmentkennungseintrag 507 (Segment ID, SID) zugeordnet, der durch eine effektive Segmentkennung (Effective Segment ID, ESID) identifiziert wird (einschließlich ESIDs für B und ESIDs für A). Eine von dem Programm verwendete „effektive Adresse“ 504 wählt einen SID-Eintrag aus, der den ESID-Wert sowie einen Wert einer virtuellen Segmentkennung 514 (Virtual Segment ID, VSID) enthält. Der VSID-Wert steht für höchstwertige Bits einer virtuellen Adresse, die von dem Hash-Algorithmus 505 verwendet wird, um die Hash-Seitentabelle zu durchsuchen. Ein Hash-Wert auf der Grundlage der VSID wird dazu verwendet, einen Seitentabelleneintrag (PTE) zu finden. Der Seitentabelleneintrag enthält eine Adresse 513 einer Seite des physischen Arbeitsspeichers 503.
-
Wie oben erwähnt, dient eine effektive Adresse dazu, eine physische Adresse zu erhalten, um auf eine bestimmte Arbeitsspeicherposition zuzugreifen. Wie in 6 dargestellt, kann gemäß einem Aspekt eine effektive Adresse 600 in einem effektiven Adressraum 602 in mehrere physische Adressen 604a, 604b eines physischen Adressraums 606 umgesetzt werden, abhängig davon, ob die Umsetzung für eine Befehlsumsetzung 608 oder eine Datenumsetzung 610 erfolgt. Insbesondere kann bei einer Ausführungsform in bestimmten Situationen eine separate Adressumsetzung (d.h. eine separate Befehls- und Datenumsetzung) verwendet werden, zum Beispiel, wenn Code modifiziert wurde, der modifizierte Code jedoch vor Datenzugriffen verborgen werden soll. In einer solchen Situation wird der modifizierte Code in einer separaten Arbeitsspeicherregion an einer anderen physischen Adresse als der nicht modifizierte Code platziert, und die physische Adresse der separaten Arbeitsspeicherregion wird für Befehlsabrufe über eine Adressumsetzung ermittelt. Der Zugriff auf den nicht modifizierten Code erfolgt dabei nach wie vor durch Datenzugriffe, die Adressumsetzungen für Datenzugriffe verwenden, welche auf eine weitere physische Adresse (d.h. den nicht modifizierten Code) verweisen. Auf diese Weise kann zum Beispiel die Sicht der Befehlsabruffunktion auf den Arbeitsspeicher von der Sicht auf die Datenzugriffe getrennt werden. In Situationen mit unverändertem Code zeigt die Adressumsetzung für Befehlsabrufe und für Datenzugriffe auf dieselben physischen Arbeitsspeicherpositionen. Diese Positionen werden als für Befehlsabrufe und Datenzugriffe gemeinsam genutzt bezeichnet.
-
Gemäß einem Aspekt wird eine Adressumsetzungsfähigkeit beschrieben, bei der die Adressumsetzung berücksichtigt, ob der Arbeitsspeicherzugriffe für einen Befehlsabruf oder einen Datenzugriff erfolgt. Eine Ausführungsform einer Adressumsetzung wird mit Bezug auf die 7 bis 10 beschrieben. Das hier beschriebene bestimmte Beispiel bezieht sich auf die PowerPC-Architektur; Aspekte der Adressumsetzungsfähigkeit sind jedoch nicht auf eine derartige Architektur beschränkt.
-
Mit Bezug auf 7 empfängt zunächst eine Arbeitsspeicher-Verwaltungseinheit (MMU) eines Prozessors eine effektive Adresse, die umgesetzt werden soll, SCHRITT 700. Die effektive Adresse ist z.B. eine 64-Bit-Adresse, die in einer Adressumsetzungsanforderung von dem Prozessor empfangen werden kann. Die Anforderung kann zum Beispiel von einer Befehlsabrufeinheit des Prozessors stammen, weshalb davon ausgegangen wird, dass die umzusetzende Adresse für einen Befehlsabruf gedacht ist, oder die Anforderung kann von einer Lade-/Speicher-Einheit des Prozessors stammen, weshalb davon ausgegangen wird, dass die umzusetzende Adresse für einen Datenzugriff gedacht ist. Bei anderen Ausführungsformen gibt eine Angabe in der Anforderung an, ob die Adressumsetzung für einen Befehlsabruf oder einen Datenzugriff gedacht ist. Die MMU setzt die effektive Adresse in eine virtuelle Adresse um, SCHRITT 702. In einem Beispiel verwendet die Umsetzung von der effektiven Adresse in die virtuelle Adresse einen Segmentumsetzpuffer (SLB), wie weiter unten beschrieben. Die MMU setzt die virtuelle Adresse dann in eine physische Adresse um, SCHRITT 704. In einem bestimmten Beispiel verwendet die Umsetzung von der virtuellen Adresse in die physische Adresse eine Hash-Seitentabelle, wie ebenfalls weiter unten beschrieben. Die MMU verwendet dann die physische Adresse, um auf die bestimmte Arbeitsspeicherposition zuzugreifen, SCHRITT 706.
-
Weitere Einzelheiten zum Umsetzen von der effektiven Adresse in die virtuelle Adresse, zum Beispiel durch die MMU, werden mit Bezug auf die 8 und 9 beschrieben. Beginnend mit 8 empfängt die MMU eine effektive Adresse zum Beispiel über eine Adressumsetzungsanforderung, die von einer bestimmten Einheit (z.B. einer Befehlsabrufeinheit oder Lade-/Speicher-Einheit) der CPU gesendet wird, SCHRITT 800. Auf Grundlage eines Empfangens der effektiven Adresse ermittelt die MMU, ob die Adresse für einen Befehlsabruf oder einen Datenzugriff gedacht ist. In einem Beispiel lässt sich dies beispielsweise auf Grundlage dessen ermitteln, von welcher Einheit (z.B. einer Abrufeinheit oder Lade-/Speicher-Einheit der CPU) die MMU die Adressumsetzungsanforderung empfangen hat, oder aber durch einen Anzeiger, welcher der Anforderung zugehörig ist. Wenn die Adressumsetzungsanforderung zum Beispiel von der Abrufeinheit gekommen ist, wird davon ausgegangen, dass die Anforderung für einen Befehlsabruf gedacht ist, und wenn sie von der Lade-/Speicher-Einheit gekommen ist, wird davon ausgegangen, dass sie für einen Datenzugriff gedacht ist. Auf Grundlage eines Empfangens der effektiven Adresse erhält die MMU eine effektive Segmentkennung aus der effektiven Adresse, SCHRITT 802. Die MMU verwendet dann die effektive Segmentkennung, um einen Segmentumsetzpuffer auf einen passenden Eintrag zu durchsuchen, SCHRITT 804.
-
Wie in 9 gezeigt, ist bei einer Ausführungsform eine effektive Adresse 900 insbesondere eine 64-Bit-Adresse, die eine effektive Segmentkennung (ESID) 902, ein Seiten-Offset 904 und ein Byte-Offset 906 enthält. Die effektive Segmentkennung 910 wird aus der effektiven Adresse gewonnen und wird dazu verwendet, einen Segmentumsetzpuffer (SLB) 912 auf einen passenden Eintrag 914 zu durchsuchen. Ein Segmentumsetzpuffer (SLB) 912 ist ein Cachespeicher mit Segmentkennungseinträgen, auf die kürzlich zugegriffen wurde. In einem Beispiel befindet er sich in der MMU, in anderen Beispielen jedoch an anderer Stelle. Er gibt die Zuordnung von effektiven Segmentkennungen (ESIDs) zu virtuellen Segmentkennungen (VSIDs) an. Die Anzahl von SLB-Einträgen (SLB Entry, SLBE) in einem SLB ist abhängig von der Realisierung und beinhaltet in einem Beispiel mindestens 32 Einträge. In einem Beispiel enthält der Segmentumsetzpuffer 912 eine Mehrzahl von SLB-Einträgen 914, und jeder SLB-Eintrag 914 ordnet eine ESID 902 einer VSID 916 zu. In einem Beispiel enthält der SLBE 914 die folgenden Felder:
die effektive Segmentkennung (ESID) 902 (Bits 0 bis 35);
einen Anzeiger 922 für einen gültigen Eintrag (V) (Bit 36), der angibt, ob der Eintrag gültig (V = 1) oder ungültig (V = 0) ist;
einen Segmentgrößenselektor (B) 924 (Bits 37 bis 38), der in einem Beispiel die folgende Bedeutung hat: 0b00 – 256 Megabyte (MB) (s = 28); 0b01 – 1 Terabyte (TB) (s = 40); 0b10 – 256 TB (s = 48); und 0b11 – reserviert;
die virtuelle Segmentkennung (VSID) 916 (Bits 39 bis 88);
einen Speicherschlüsselanzeiger (Ks) 928 für den Supervisorstatus (privilegiert) (Bit 89);
einen Speicherschlüsselanzeiger (Kp) 930 für den Problemstatus (Bit 90);
einen Anzeiger (N) 932 für ein als nicht ausführbar markiertes Segment, falls N = 1 (Bit 91); Befehle von einem als nicht ausführbar markierten Segment (N = 1) können nicht ausgeführt werden;
ein Bit 0 (L) 934 des Selektors für die virtuelle Seitengröße (Bit 92);
einen Klassenanzeiger (Class, C) 936 (Bit 93);
Das Klassenfeld des SLBE wird zum Beispiel zusammen mit Befehlen für das Ungültigmachen eines SLB-Eintrags (SLB invalidate entry, SLBIE) und Befehlen für das Ungültigmachen aller SLB-Einträge (SLB invalidate all, SLBIA) verwendet. „Klasse“ bezieht sich auf eine Gruppierung von SLB-Einträgen und realisierungsspezifischen Umsetzdaten, sodass nur Einträge in einer bestimmten Gruppe ungültig gemacht werden müssen und andere beibehalten werden können. Der Klassenwert, der einem aus dem SLB-Eintrag erhaltenen realisierungsspezifischen Umsetzungseintrag zugewiesen wird, muss mit dem Klassenwert des SLB-Eintrags übereinstimmen. Der Klasseneintrag, welcher einem realisierungsspezifischen Umsetzungseintrag zugewiesen wird, der nicht aus einem SLB-Eintrag erhalten wird (z.B. bei Real-Mode-Adressumsetzungen), ist 0.
-
Bits 1:2 (LP) 938 des Selektors für die virtuelle Seitengröße (Bits 95 und 96);
-
Segmente können verschiedene Seitengrößen enthalten. Die Bits L und LP geben die Basisgröße der virtuellen Seite an, die das Segment enthalten kann. Die SLB
L∪LP-Codierungen lauten in einem Beispiel wie weiter unten gezeigt. Die (auch als Basisseitengröße bezeichnete) virtuelle Basisseitengröße ist die kleinste virtuelle Seitenbgröße für das Segment. Die virtuelle Basisseitengröße beträgt 2 Bytes. Die tatsächliche Größe der virtuellen Seite (auch als tatsächliche Seitengröße oder virtuelle Seitengröße bezeichnet) wird durch PTE
L∪LP angegeben, wobei ∪ eine Verkettung der zwei Werte ist.
Codierung | Seitengröße |
0b000 | 4 KB |
0b101 | 64 KB |
-
Zusätzliche Werte1 2b Bytes, wobei b > 12 und b je nach Codierungswert variieren kann
-
1In einer Ausführungsform sind die „zusätzlichen Werte“ ebenso wie die zugehörigen Basisgrößen der virtuellen Seite von der jeweiligen Realisierung abhängig. Etwaige von einer gegebenen Realisierung nicht unterstützte Werte sind bei dieser Realisierung in mindestens einer Ausführungsform reserviert.
-
Der Nicht-Zugriffs-Anzeiger 940 (No Access, NOA) (Bits 97:98) mit NOA0 = Kein Befehl (No Instruction, NOI); NOA1 = Keine Daten (No Data, NOD); 0b00 – SLBE kann sowohl für Befehlsabrufe als auch für Datenzugriffe verwendet werden; 0b01 – SLBE kann nur für Befehlsabrufe verwendet werden; 0b10 – SLBE kann nur für Datenzugriffe verwendet werden; und 0b11 – ist reserviert.
-
Für jeden SLB-Eintrag muss die Software sicherstellen, dass die folgenden Anforderungen erfüllt sind.
- – L∪LP enthält einen durch die Realisierung unterstützten Wert.
- – Die durch die L- und LP-Felder ausgewählte Basisgröße der virtuellen Seite übersteigt nicht die durch das B-Feld ausgewählte Segmentgröße.
- – Wenn s = 40, dann enthalten die folgenden Bits des SLB-Eintrags Nullwerte (0).
- – ESID24:35
- – VSID39:49
-
Die Bits in den obigen zwei Elementen werden durch den Prozessor ignoriert.
-
Gemäß einem Aspekt gibt das NOA-Feld für jeden SLB-Eintrag an, ob der SLB-Eintrag dazu verwendet werden soll, eine effektive Arbeitsspeicheradresse in eine virtuelle Adresse für einen Befehlsabruf und Datenzugriff (NOA = 0b00 bei einer Codierung zulässiger Zugriffe für ein Segment gemäß einem Aspekt), für Datenzugriffe, jedoch nicht für einen Befehlsabruf (NOA = 0b10 bei einer Codierung zulässiger Zugriffe für ein Segment gemäß einem Aspekt) oder für einen Befehlsabruf, aber nicht für einen Datenzugriff (NOA = 0b01 bei einer Codierung zulässiger Zugriffe für ein Segment gemäß einem Aspekt) umzusetzen.
-
Mehrere Umsetzungen von effektiven in virtuelle Segmentkennungen sind zulässig, solange auf Grundlage der NOA-Bits nur eine Umsetzung als durchzuführen ausgewählt wird. Hierfür muss die Software sicherstellen, dass der SLB höchstens einen Eintrag enthält, der eine gegebene effektive Befehlsadresse umsetzt, und dass, wenn der SLB einen Eintrag enthält, der eine gegebene effektive Befehlsadresse umsetzt (NOA0 = 0), kein anderer Eintrag dieselbe Adresse für Befehlsabrufe umsetzen kann. Beim Installieren eines neuen SLB-Eintrags für eine oder mehrere Zugriffsarten (z.B. einen Befehlsabruf) muss die Software gemäß einem Aspekt sicherstellen, dass jeder zuvor vorhandene SLB-Umsetzungseintrag der effektiven Adresse, der eine Adresse für eine solche Zugriffsart umsetzen könnte, ungültig gemacht wurde. Ebenso muss die Software sicherstellen, dass der SLB höchstens einen Eintrag enthält, der eine gegebene effektive Datenadresse umsetzt (NOA1 = 0), und dass, wenn der SLB einen Eintrag enthält, der eine gegebene effektive Datenadresse umsetzt, jede zuvor vorhandene Umsetzung der effektiven Adresse für Datenzugriffe ungültig gemacht wurde. Ein Versuch, einen SLB-Eintrag zu erzeugen, der diese Anforderungen verletzt, kann einen Maschinenfehler verursachen. Gemäß einer Ausführungsform ist ein Maschinenfehler eine Unterbrechung mit hoher Priorität für eine Firmware, einen Hypervisor oder eine andere Supervisorkomponente, die angibt, dass Bedingungen für die Systemintegrität verletzt wurden.
-
Gemäß einer Ausführungsform darf die Software den Inhalt eines gültigen SLB-Eintrags ersetzen, ohne die durch den Eintrag angegebene Umsetzung ungültig zu machen, sofern die festgelegten Einschränkungen beachtet werden.
-
Wenn die Hardware den SLB durchsucht, werden alle Einträge auf eine Übereinstimmung mit der effektiven Adresse (EA) überprüft. Damit eine Übereinstimmung gegeben ist, müssen für angegebene Felder in dem SLBE die folgenden Bedingungen erfüllt sein.
- – V = 1 (d.h. das gültige Bit wird für einen Eintrag gesetzt)
- – ESID0:63-s = EA0:63-s, wobei der Wert von s durch das B-Feld in dem überprüften SLBE angegeben wird.
- – Die Suche ist eine Befehlsadress-Suche und NOI = 0, oder die Suche ist eine Datenadress-Suche und NOD = 0.
-
Insbesondere stimmt bei einer Ausführungsform ein Eintrag in dem SLB überein, wenn der Eintrag gültig ist, eine effektive Segmentkennung aufweist, die mit der effektiven Segmentkennung aus der effektiven Adresse übereinstimmt, und das Nicht-Zugriffs-Feld (NOA-Feld) des SLB für die Art des durchgeführten Arbeitsspeicherzugriffs gesetzt ist, z.B. für einen Befehlsabruf oder einen Datenzugriff. Das NOA-Feld enthält zum Beispiel zwei Bits, wobei ein Wert von 01 angibt, dass eine Adresse nur zum Abgleichen von Adressen verwendet werden kann, die einem Befehlszugriff zugehörig sind; wobei 10 angibt, dass ein Eintrag nur zum Abgleichen von Adressen verwendet werden kann, die einem Datenzugriff zugehörig sind; und wobei 00 angibt, dass ein Eintrag zum Abgleichen von Adressen verwendet werden kann, die sowohl Befehlsabrufen als auch Datenzugriffen zugehörig sind. Wenn das NOA-Feld für den angeforderten Zugriff gesetzt wird und die effektive SID mit der erhaltenen effektiven SID identisch ist, besteht eine Übereinstimmung.
-
Mit erneutem Bezug auf 8 wird ermittelt, ob in dem SLB ein übereinstimmender Eintrag gefunden wurde, ABFRAGE 806. Die Abgleichlogik wird insbesondere in Verbindung mit dem NOA-Feld aus 9 durchgeführt, das die Zugriffsarten angibt, die der jeweilige SLBE umsetzen darf. Wenn kein übereinstimmender Eintrag gefunden wurde, wird eine SLB-Fehlerausnahme gemeldet, welche die Steuerung an eine Software-Behandlungseinheit zum Behandeln der Ausnahme übergibt, SCHRITT 808. Bei mindestens einer Ausführungsform verwaltet die Software-Behandlungseinheit den SLB als einen Cachespeicher und lädt einen neuen SLB-Eintrag (SLBE) aus einer Tabelle mit SLBEs, die im Arbeitsspeicher verwaltet wird. Wenn jedoch ein übereinstimmender Eintrag gefunden wird, ABFRAGE 806, wird ermittelt, ob mehrere übereinstimmende Einträge gefunden wurden, ABFRAGE 810. Wenn mehrere Übereinstimmungen vorhanden sind, kann ein Maschinenfehler ausgelöst werden, SCHRITT 812, da keine mehrfachen Übereinstimmungen vorhanden sein sollten, oder es wird bei einer weiteren Ausführungsform einer der Einträge ausgewählt und verwendet.
-
Wenn jedoch eine einzige Übereinstimmung vorhanden ist (oder ausgewählt wird), wird eine virtuelle Segmentkennung (VSID) 916 (9) in dem SLB-Eintrag gewonnen 920 und als Teil der virtuellen Adresse verwendet. Die VSID wird mit dem Seiten-Offset 904 und dem Byte-Offset 906 aus der effektiven Adresse verkettet, um die virtuelle Adresse zu erzeugen. Diese virtuelle Adresse wird dann zurückgegeben, SCHRITT 814 (8).
-
Wie oben für die SLB-Suche beschrieben, schlägt die Suche fehl, wenn keine Übereinstimmung gefunden wird. Wenn eine einzige Übereinstimmung gefunden wird, ist die Suche erfolgreich. Wenn mehrere Übereinstimmungen gefunden werden, kann einer der übereinstimmenden Einträge verwendet werden, als wäre es der einzige übereinstimmende Eintrag, oder ein Maschinenfehler tritt ein. Wenn die SLB-Suche erfolgreich ist, wird die virtuelle Adresse (VA) wie folgt aus der EA und den übereinstimmenden SLB-Eintragsfeldern gebildet: VA = VSID0:77-s∪EA64-s:63. Die virtuelle Seitennummer (Virtual Page Number, VPN) besteht aus den Bits 0:77-p der virtuellen Adresse. Der Wert von p ist die tatsächliche virtuelle Seitengröße, die durch den PTE angegeben wird, der zum Umsetzen der virtuellen Adresse verwendet wird. Wenn SLBEN = 1, ist der für den Speicherzugriff verwendete N-Wert (noexecute) 1.
-
Wenn bei einem Befehlsabruf SLBEN = 1, kann eine Befehlsspeicher-Unterbrechung eintreten, ohne dass die Seitentabelle durchsucht wird. Wenn die SLB-Suche fehlschlägt, tritt ein Segmentfehler ein. Dabei handelt es sich um eine Befehlssegment-Ausnahme oder eine Datensegment-Ausnahme, je nachdem, ob die effektive Adresse für einen Befehlsabruf oder einen Datenzugriff gedacht ist.
-
Die aus einer Umsetzung der effektiven Adresse erzeugte virtuelle Adresse wird dann in eine (auch als reale Adresse bezeichnete) physische Adresse umgesetzt, wobei zum Beispiel eine Hash-Seitentabelle verwendet wird. Weitere Einzelheiten zur Umsetzung unter Verwendung einer Hash-Seitentabelle werden mit Bezug auf 10 beschrieben.
-
Insbesondere veranschaulicht 10 eine Umsetzungsstruktur mittels einer Hash-Seitentabelle (HPT), wie sie von der Power ISA verwendet wird. Ein ESID-Teil 1006 einer effektiven Adresse (EA) 1004 wird zum Auffinden eines Eintrags in einem SLB 1012 verwendet. Der Eintrag enthält ein VSID-Feld 1014. Der Wert des VSID-Felds 1014 und der Seitenteil 1008 der EA 1004 werden mit einer Hash-Funktion verarbeitet, um einen Hash-Wert zu erzeugen, der zum Auffinden einer Seitentabellen-Eintragsgruppe (PTE-Gruppe) 1052 in einer Hash-Seitentabelle (HPT) 1050 verwendet wird. (Bei einer anderen Ausführungsform können die VSID und der Seitenteil direkt aus der gebildeten virtuellen Adresse gewonnen werden, da die virtuelle Adresse zuvor erzeugt wurde.) Bei mindestens einer Ausführungsform wird die Hash-Seitentabelle durch eine Seitentabellen-Ursprungsadresse ausfindig gemacht, die von dem Prozessor bereitgestellt wird. Seitentabelleneinträge 1053 einer PTE-Gruppe 1052 werden durchsucht, um einen entsprechenden PTE mit einem Feld ausfindig zu machen, das mit einem Wert eines höchstwertigen Teils der VSID übereinstimmt. Wenn ein entsprechender PTE gefunden wird, wird die Adresse (z.B. die reale Adresse) der Seite des physischen Arbeitsspeichers in dem PTE dazu verwendet, auf den physischen Arbeitsspeicher zuzugreifen. Sobald ein PTE-Eintrag gefunden wird, werden zur Leistungsverbesserung der Seitenteil 1008 der EA 1004 und die Adresse der Seite des physischen Arbeitsspeichers, die in dem PTE gefunden wird, in einem TLB 1054 gespeichert, sodass weitere Zugriffe auf dieselbe EA-Seite einen Treffer in dem TLB 1054 erzielen und die PTE-Suche vermieden wird.
-
Wie oben beschrieben, wird in einem Beispiel eine Adressumsetzung auf Grundlage eines bestimmten Attributs wie beispielsweise der Art des Zugriffs durchgeführt:
Befehlsabruf oder Datenzugriff. Hierfür wird ein Mechanismus bereitgestellt, der ein Feld in dem SLB enthält, um zu verhindern, dass SLBEs für befehls- oder datenbezogene Zugriffe verwendet werden. Dieses Feld ist das oben erwähnte Nicht-Zugriffs-Feld (NOA-Feld). Das NOA-Feld gibt an, dass ein bestimmter, dem NOA-Feld zugehöriger SLBE nur für Befehlsabrufe, nur für Datenzugriffe oder sowohl für Befehlsabrufe als auch für Datenzugriffe verwendet werden kann (z.B. wenn der Code nicht modifiziert ist).
-
Gemäß einer Ausführungsform wird das NOA-Feld für jedes Segment in Zusammenhang mit einem SLB-Eintrag separat angegeben, wodurch einige effektive Adresssegmente (Arbeitsspeicherregionen der Eingangsadresse) in eine gemeinsame Segmentadresse für Befehls- und Datenzugriffe (Arbeitsspeicherregionen der Ausgangsadresse) umgesetzt werden können bzw. andere Segmente (Arbeitsspeicherregionen der Eingangsadresse) in separate Segmentadressen für Befehls- und Datenzugriffe (Arbeitsspeicherregionen der Ausgangsadresse) umgesetzt werden können, oder um eine Umsetzung für eine Zugriffsart (z.B. einen Befehlszugriff), nicht jedoch eine weitere Zugriffsart (z.B. einen Datenzugriff) bereitzustellen, indem ein entsprechender SLB-Eintrag für eine, nicht jedoch für eine weitere Zugriffsart geladen wird. Obwohl sich die Beschreibung auf das Vorhandensein eines Nicht-Zugriffs-Felds und einer spezifischen Codierung eines Nicht-Zugriffs-Felds in dem SLB bezog, sollte doch klar sein, dass auch andere Felder, andere Codierungen derartiger Felder oder beides verwendet werden können, um die zulässigen Zugriffsarten für eine Umsetzung kenntlich zu machen.
-
Wie hier gemäß einem oder mehreren Aspekten beschrieben, dient die Methode für eine separate Befehls-/Datenadressumsetzung zum Umleiten einer Adressumleitung an eine bestimmte Region eines Arbeitsspeichers, die modifizierten Code für Befehlsabrufe enthält, sowie an eine weitere Region eines Arbeitsspeichers, welche den nicht modifizierten Code für Datenzugriffe enthält, wie in 11 gezeigt. In einem oder mehreren Beispielen können wie oben beschrieben ein Mechanismus auf SLB-Grundlage bzw. andere Arten von Mechanismen verwendet werden, die zum Beispiel auf hierarchischen oder Radix-Adressumsetzungsstrukturen beruhen. Bei einer Ausführungsform wird in einem solchen auf einer Hierarchie beruhenden Mechanismus in einem Eintrag einer der Strukturen in der Hierarchie ein Attributanzeiger bereitgestellt, der festlegt, welcher Pfad beim Umsetzen einer Adresse genommen wird. Dieser Pfad kann z.B. „Nur Befehlszugriff“, „Nur Datenzugriff“ oder einen gemeinsamen Zugriff auswählen.
-
Mit Bezug auf 11 enthält in einem Beispiel der korrigierte Anwendungscode 420 einen modifizierten Teil, und der modifizierte Teil wird in einer oder mehreren Arbeitsspeicherregionen 1100 des Systemarbeitsspeichers 410 gespeichert. Der nicht modifizierte Teil verbleibt in anderen Arbeitsspeicherregionen 1102 des Systemarbeitsspeichers 410. Insbesondere enthalten die anderen Arbeitsspeicherregionen 1102 die Anwendung vor einer Modifizierung.
-
Bei dieser Ausführungsform dient eine effektive Adresse 600 zum Zugreifen auf die Arbeitsspeicherregion 1100 oder die Arbeitsspeicherregion 1102, je nachdem, ob die Adressumsetzung für einen Befehlsabruf 608 eines modifizierten Teils oder für einen Datenzugriff 610 eines nicht modifizierten Teils gedacht ist. Wenn die Umsetzung zum Beispiel für einen Befehlsabruf eines modifizierten Teils gedacht ist, wird die effektive Adresse 600 in die physische Adresse 604a umgesetzt, die auf die Arbeitsspeicherregion 1100 mit modifiziertem Code zeigt. Wenn die Adressumsetzung jedoch für einen Datenzugriff gedacht ist, wird die effektive Adresse 600 in die physische Adresse 604b umgesetzt, die auf die Arbeitsspeicherregion 1102 zeigt, welche den nicht modifizierten, bestehenden oder ursprünglichen Code enthält, der dem modifizierten Code entspricht.
-
Mit Bezug auf 12 kann bei einer weiteren Ausführungsform eine effektive Adresse 1200 eine gemeinsame Umsetzung 1202 verwenden, bei der ein und dieselbe Arbeitsspeicherregion 1204 für einen Befehlsabruf und einen Datenzugriff verwendet wird (da zum Beispiel der Codeteil nicht modifiziert wurde). In diesem Beispiel wird die effektive Adresse 1200 in eine physische Adresse 1206 umgesetzt, die auf die Arbeitsspeicherregion 1204 zeigt.
-
Die oben beschriebene Adressumsetzungsfähigkeit wird in einem oder mehreren Beispielen in Umgebungen verwendet, die eine dynamische Code-Optimierung bereitstellen. Eine dynamische (auch als dynamische Kompilierung und Optimierung bezeichnete) Code-Optimierung eröffnet bedeutende Möglichkeiten, um den Betrieb von Computersystemen zu verbessern. So kann zum Beispiel bestehender Code zur Verbesserung einer Leistung modifiziert werden, indem Hotspots reoptimiert werden, so dass Fehler vermieden werden, Fehler behoben werden, die Sicherheit verbessert oder verändert wird, zusätzliche Merkmale bereitgestellt werden usw. Gemäß einem Aspekt werden mit einer dynamischen Code-Optimierung erweiterte Betriebsartmerkmale für eine ausgewählte Anwendung genutzt, während zugleich andere Anwendungen davon abgehalten werden, die Merkmale zu nutzen. Das heißt, dass die Optimierungseinheit (z.B. die dynamische Code-Optimierungseinheit) eine oder mehrere Steuerungen auf einer Anwendungsebene setzt, um der Anwendung die Nutzung erweiterter Betriebsartmerkmale zu ermöglichen. Das Setzen der einen oder mehreren Steuerungen durch die Optimierungseinheit beinhaltet hier zum Beispiel, dass die Optimierungseinheit die Steuerungen setzt, sofern die Optimierungseinheit über eine solche Berechtigung verfügt, und/oder dass die Optimierungseinheit eine Komponente mit einer Berechtigung wie z.B. das Betriebssystem oder den Hypervisor anweist, den eigentlichen Setzvorgang durchzuführen, insbesondere dann, wenn die Optimierungseinheit nicht über eine solche Berechtigung verfügt.
-
Eine Optimierungseinheit bezieht sich hier zum Beispiel auf eine dynamische Code-Optimierungseinheit, einen Compiler, der eine Optimierung durchführt, wie z.B. einen Just-In-Time-Compiler (JIT-Compiler), Binärumsetzer sowie andere Komponenten, die eine Optimierung bereitstellen.
-
Die erweiterten Betriebsartmerkmale beinhalten zum Beispiel erweiterte ISA-Merkmale, bei denen DCO-erzeugter Code, der mit einer normalen Anwendungs-Berechtigungsstufe ausgeführt wird, Zugriff auf erweiterte Merkmale erhält, wobei es sich entweder um die Merkmale handelt, die über der ausgewählten ISA-Ebene einer Partition oder Anwendung liegen, oder um private, realisierungsspezifische und nicht architekturdefinierte Fähigkeiten wie beispielsweise Hochleistungsbetriebsarten, Hochleistungsbefehle und/oder Hochleistungsressourcen, die der Anwendung andernfalls nicht bekannt oder nicht verfügbar wären, wobei es sich hierbei lediglich um einige Beispiele handelt.
-
Ein Beispiel für eine ISA einer höheren Ebene besteht im Verwenden von Befehlen, die auf der ISA-Ebene, auf der die Anwendung ausgeführt wird, nicht verfügbar sind (z.B. im Verwenden von Vektor-Skalar-Befehlen (VSX-Befehlen), wenn die ISA-Ebene auf Power6 gesetzt wird, wodurch keine VSX-Befehle bereitgestellt wurden).
-
Ein Beispiel für eine Hochleistungsbetriebsart besteht in einer alternativen Betriebsart, in der eine andere ISA ausgeführt wird. Beispiele für solche ISAs können eine VLIW ISA (Very Long Instruction Words (VLIWs) bieten eine verbesserte Softwaresteuerung bei einer parallelen Verarbeitung, indem ein Compiler eine Mehrzahl von Befehlen angeben kann, die parallel ausgeführt werden sollen) oder eine Wide-Word Power ISA (WW-Power) sein, bei der jeder Power-Befehl mehr als 32 Bit aufweist, um zusätzliche Funktionen, größere Verschiebungen usw. zu ermöglichen.
-
Beispiele für nicht architekturdefinierte Hochleistungsbefehle sind zusätzliche Verschiebebefehle, um Daten direkt zwischen Registerdateien verschiedener Art zu verschieben, ein Befehl für eine Verzweigung zum Zieladressregister (Target Address Register, TAR) oder zusätzliche Vorablade-Steuerbefehle.
-
Ein Beispiel für Hochleistungsressourcen sind Erweiterungen, um zusätzliche Register bereitzustellen, entweder als Teil der Universalregister, der Gleitkommaregister oder der Vektor-Skalar-Registersätze oder aber als zusätzliche Spezialregister wie beispielsweise ein TAR.
-
Die oben beschriebenen Arten von Verbesserungen werden hier zusammenfassend als erweiterte Betriebsartmerkmale bezeichnet, wobei es sich um Merkmale handelt, die der Optimierungseinheit bekannt sind, die der Anwendung jedoch nur dann bekannt bzw. verfügbar sind, wenn sie durch die Optimierungseinheit aktiviert werden. Um nur einige Beispiele zu nennen, beinhalten diese erweiterten Betriebsartmerkmale hier wiederum erweiterte ISA-Merkmale (z.B. Merkmale auf einer höheren Ebene als der Ebene, auf der die Anwendung ausgeführt wird); alternative ISA-Betriebsarten; nicht architekturdefinierte Hochleistungsbefehle; Hochleistungsressourcen; usw. Auch andere hier beschriebene Merkmale können als erweiterte Betriebsartmerkmale betrachtet werden.
-
Gemäß einem oder mehreren Aspekten setzt die Optimierungseinheit eine oder mehrere Steuerungen, die z.B. als erweiterte Betriebsartsteuerungen bezeichnet werden, um erweiterte Betriebsartmerkmale für eine Anwendung selektiv bereitzustellen. Dabei können die erweiterten Betriebsartsteuerungen hier eine oder mehrere der folgenden Einrichtungen beinhalten: eine oder mehrere Einrichtungen zum Aktivieren einer erweiterten Betriebsart und/oder eine oder mehrere Einrichtungen zur Berechtigung einer erweiterten Betriebsartsteuerung, die jeweils weiter unten beschrieben werden.
-
Beispiele von Steuerungen, mit denen erweiterte Betriebsartmerkmale bereitgestellt werden können, werden mit Bezug auf die 13A bis 13F beschrieben. So werden zum Beispiel mit Bezug auf 13A in einem Steuerregister 1300 eine oder mehrere Steuerungen bereitgestellt. Das Steuerregister 1300 enthält ausgewählte Informationen wie beispielsweise eine oder mehrere erweiterte Betriebsartsteuerungen 1302, mit denen angegeben wird, ob für eine Anwendung erweiterte Betriebsartmerkmale verfügbar sind. Beispiele für ein solches Steuerregister beinhalten ein Maschinenzustandsregister (Machine State Register, MSR) und ein Programmstatuswort (Program Status Word, PSW).
-
Mit Bezug auf
13B enthält ein Maschinenzustandsregister
1310 in einem Beispiel ausgewählte Informationen wie z.B. eine oder mehrere erweiterte Betriebsartsteuerungen
1312. Bei einer bestimmten Ausführungsform ist das Maschinenzustandsregister (MSR) ein 64-Bit-Register, das den Zustand eines Threads definiert, und die ausgewählten Informationen beinhalten zum Beispiel die folgenden Definitionen:
Bit | Beschreibung |
0 | 64-Bit-Betriebsart (Sixty-Four, SF) |
0 | Der Thread befindet sich in einer 32-Bit-Betriebsart |
1 | Der Thread befindet sich in einer 64-Bit-Betriebsart |
1:2 | Reserviert |
3 | Hypervisorzustand (HV) |
0 | Der Thread befindet sich nicht im Hypervisorzustand. |
1 | Wenn MSRPR = 0, befindet sich der Thread im Hypervisorzustand; andernfalls befindet sich der Thread nicht im Hypervisorzustand. |
4 | Einrichtung zum Aktivieren einer erweiterten Betriebsart |
0 | Die erweiterte Betriebsart ist deaktiviert – Code, z.B. von der Optimierungseinheit erzeugter Code, kann die erweiterte Betriebsarteinrichtung nicht verwenden. |
1 | Die erweiterte Betriebsart ist aktiviert – Code, z.B. von der Optimierungseinheit erzeugter Code, ist zur Verwendung der erweiterten Betriebsarteinrichtung berechtigt. |
5 | Split Little Endian (SLE) |
0 | Befehls- und Datenspeicherzugriffe für den Thread sind identisch und verwenden den durch MSRLE angegebenen Wert. |
1 | Befehls- und Datenspeicherzugriffe für den Thread sind entgegengesetzt. Befehlsspeicherzugriffeverwenden den von MSRLE angegebenen Wert. Datenspeicherzugriffe verwenden den von -MSRLE angegebenen Wert. |
6 | Einrichtung zur Berechtigung einer erweiterten Betriebsartsteuerung |
0 | Die Anwendung (Benutzer-Betriebsart) darf keine Merkmale der erweiterten Betriebsartsteuerung verwenden, und die Einrichtung zum Aktivieren einer erweiterten Betriebsart kann nicht durch Code der Benutzer-Betriebsart gesetzt werden. |
1 | Die Anwendung (Benutzer-Betriebsart) darf Merkmale der erweiterten Betriebsartsteuerung verwenden, und die Einrichtung zum Aktivieren einer erweiterten Betriebsart kann durch Code der Benutzer-Betriebsart gesetzt werden. |
7:2 | Reserviert |
29:30 | Transaktionszustand (Transaction State, TS) [Kategorie: Transaktionsorientierter Arbeitsspeicher] |
00 | Nicht transaktionsorientiert |
01 | Ausgesetzt |
10 | Transaktionsorientiert |
11 | Reserviert |
31 | Transaktionsorientierter Arbeitsspeicher (Transactional Memory, TM) verfügbar [Kategorie: Transaktionsorientierter Arbeitsspeicher] |
0 | Der Thread kann keine transaktionsorientierte Arbeitsspeicherbefehle ausführen oder auf Register eines transaktionsorientierten Arbeitsspeichers zugreifen. |
1 | er Thread kann transaktionsorientierte Arbeitsspeicherbefehle ausführen und auf Register eines transaktionsorientierten Arbeitsspeichers zugreifen, sofern die Einrichtung für den transaktionsorientierten Arbeitsspeicher nicht durch ein anderes Register gesperrt wurde. |
32:37 | Reserviert |
38 | Vektor verfügbar (Vector Available, VEC) [Kategorie: Vektor] |
0 | Der Thread kann keine Vektorbefehle wie z.B. Vektor-Ladebefehle, -Speicherbefehle und -Verschiebebefehle ausführen. |
1 | Der Thread kann Vektorbefehle ausführen, sofern sie nicht durch ein anderes Register gesperrt wurden. |
39 | Reserviert |
40VSX | verfügbar (VSX) |
0 | Der Thread kann keine VSX-Befehle wie z.B. VSX-Ladebefehle, -Speicherbefehle und -Verschiebebefehle ausführen. |
1 | Der Thread kann VSX-Befehle ausführen, sofern sie nicht durch ein anderes Register gesperrt wurden. |
41:47 | Reserviert |
48 | Externe Unterbrechung aktiviert (External Interrupt Enable, EE) |
0 | Externe, Abwärtszähler-, Leistungsüberwacher-<S> und privilegierte „Türklingel“-Unterbrechungen <S.PC.> sind deaktiviert. |
1 | Externe, Abwärtszähler-, Leistungsüberwacher-<S> und privilegierte „Türklingel“-Unterbrechungen <S.PC.> sind aktiviert. |
49 | Problemzustand (Problem State, PR) |
0 | Der Thread befindet sich in einem privilegierten Zustand. |
1 | Der Thread befindet sich in einem Problemzustand. |
50 | Gleitkommaverfügbar (Floating Point, FP) [Kategorie: Gleitkomma] |
0 | Der Thread kann keine Gleitkommabefehle wie z.B. Gleitkomma-Ladebefehle, -Speicherbefehle und -Verschiebebefehle ausführen. |
1 | Der Thread kann Gleitkommabefehle ausführen, sofern sie nicht durch ein anderes Register gesperrt wurden. |
51 | Maschinenfehler-Unterbrechung aktiviert (Machine Check Interrupt Enable, ME) |
0 | Maschinenfehler-Unterbrechungen sind deaktiviert. |
1 | Maschinenfehler-Unterbrechungen sind aktiviert. |
52 | Gleitkomma-Ausnahmebetriebsart 0 (Floating Point Exception Mode 0, FE0) [Kategorie: Gleitkomma] |
| Siehe unten. |
53 | Einzelschritt-Trace aktiviert (Single Step Trace Enable, SE) [Kategorie: Trace] |
0 | Der Thread führt Befehle normal aus. |
1 | Nachdem die Ausführung des nächsten Befehls erfolgreich abgeschlossen wurde, erzeugt der Thread eine Trace-Unterbrechung des Einzelschritttyps, außer es handelt sich um einen definierten Befehl, der nicht verfolgt wird. „Erfolgreicher Abschluss“ bedeutet, dass der Befehl keine Unterbrechung verursacht hat und dass er, falls sich der Prozessor im Transaktionszustand <TM> befindet, keiner der Befehle ist, die im Transaktionszustand untersagt sind. |
54 | Verzweigungs-Trace aktiviert (Branche Trace Enable, BE) [Kategorie: Trace] |
0 | Der Thread führt Verzweigungsbefehle normal aus. |
1 | Nachdem die Ausführung eines Verzweigungsbefehls erfolgreich abgeschlossen wurde, erzeugt der Thread eine Trace-Unterbrechung des Verzweigungstyps, unabhängigdavon, ob die Verzweigung vorgenommen wird. |
-
Das Verzweigungs-Tracing muss nicht für alle Realisierungen unterstützt werden, welche die Trace-Kategorie unterstützen. Wenn die Funktion nicht realisiert ist, wird dieses Bit als reserviert behandelt.
55 | Gleitkomma-Ausnahmebetriebsart 1 (Floating Point Exception Mode 0, FE1) [Kategorie: Gleitkomma] |
-
Die Bits FE0 und FE1 der Gleitkomma-Ausnahmebetriebsart werden wie folgt interpretiert.
FE0 | FE1 | Betriebsart |
0 | 0 | Ausnahmen ignorieren |
0 | 1 | Ungenau Keine Rückkehrmöglichkeit |
1 | 0 | Ungenau Mit Rückkehrmöglichkeit |
1 | 1 | Genau |
56:57 | Reserviert |
58 | Anweisung verlagern (Instruction Relocate, IR) |
0 | Die Befehlsadressumsetzung ist deaktiviert. |
1 | Die Befehlsadressumsetzung ist aktiviert. |
59 | Daten verlagern (Data Relocate, DR) |
0 | Die Datenadressumsetzung ist deaktiviert. Ein effektiver Adress-Überlauf (Effective Address Overflow, EAO) findet nicht statt. |
1 | Die Datenadressumsetzung ist aktiviert. EAO verursacht eine Datenspeicher-Unterbrechung. |
60 |
Reserviert |
61 | Leistungsüberwachungsmarkierung (Performance Monitor Mark, PMM) [Kategorie: Server] |
-
Gibt an, ob bestimmte Leistungszählerereignisse für ausgewählte Prozesse zählen sollen.
62 | Unterbrechung mit Rückkehrmöglichkeit (Recoverable Interrupt, RI) |
0 | Es besteht keine Rückkehrmöglichkeit für die Unterbrechung. |
1 | Es besteht eine Rückkehrmöglichkeit für die Unterbrechung. |
63 | Little-Endian-Betriebsart (LE) |
0 | Befehls- und Datenspeicherzugriffe für den Thread verwenden die Big-Endian-Betriebsart, wenn MSRSLE = 0. Wenn MSRSLE = 1, verwenden Befehlsspeicherzugriffe die Big-Endian-Betriebsart und Datenspeicherzugriffe die Little-Endian-Betriebsart. |
1 | Befehls- und Datenspeicherzugriffe für den Thread verwenden die Little-Endian-Betriebsart, wenn MSRSLE = 0. Wenn MSRSLE = 1, verwenden Befehlsspeicherzugriffe die Little-Endian-Betriebsart und Datenspeicherzugriffe die Big-Endian-Betriebsart. |
-
Gemäß einer Ausführungsform werden Merkmale einer erweiterten Betriebsart (auch als Hochgeschwindigkeitsbetriebsart bezeichnet) durch eine Einrichtung zum Aktivieren einer erweiterten Betriebsart aktiviert, wie dies in einem Beispiel in Form einer Zuweisung zu einer Bitposition 4 eines Maschinenzustandsregisters gezeigt wird. Wenn dieses Bit auf 1 gesetzt ist, aktiviert es erweiterte Betriebsartmerkmale wie zum Beispiel eines oder mehrere der folgenden Merkmale:
- (1) Befehle, die in einer spezifischen Hardwarerealisierung verfügbar sind, jedoch deaktiviert werden, indem eine niedrigere virtuelle Architekturebene als die durch die vorliegende Realisierung verwendete Architekturebene festgelegt wird, z.B. unter Verwendung eines Prozessorkompatibilitätsregisters (Processor Compatibility Register, PCR) gemäß der Power ISA (Instruction Set Architecture) oder unter Verwendung einer Einstellung für eine virtuelle Architekturebene (Virtual Architecture Level, VAL) gemäß der System z ISA;
- (2) Befehle, die realisierungsspezifischen Erweiterungen entsprechen, welche nicht von einer entsprechenden ISA-Ebene bestimmt werden, z.B. Befehle, die im Allgemeinen zur Verwendung durch den Mikrocode reserviert sind;
- (3) Befehle, die auf eine Ausführung durch Mikrocode, Millicode, Firmware oder privilegierte Software beschränkt sind;
- (4) Befehle, die anderweitig Teil von separat gesteuerten Teilsätzen sind, z.B., ohne darauf beschränkt zu sein, diejenigen der FPU(Floating Point)-, VMX(Vector Media Extensions)- und VSX(Vector Scalar)-Einrichtungen gemäß der Power ISA oder die erweiterten Einrichtungen der Power ISA;
- (5) eine von der veröffentlichten ISA separate und/oder unterschiedene ISA wie eine VLIW oder WW_Power ISA usw.
-
Bei mindestens einer anderen Ausführungsform wird eine Mehrzahl von Einrichtungen zum Aktivieren einer erweiterten Betriebsart (z.B. eine Mehrzahl von Bits) bereitgestellt, und jede aus der Mehrzahl von Einrichtungen zum Aktivieren einer erweiterten Betriebsart bietet einen einzelnen Zugriff auf eines oder mehrere erweiterte Merkmale wie z.B., ohne darauf beschränkt zu sein, auf die hier beschriebenen Merkmale.
-
Gemäß einer Ausführungsform wird eine separate Einrichtung zur Berechtigung einer erweiterten Betriebsartsteuerung bereitgestellt, wie dies gemäß einer Ausführungsform gezeigt wird, bei der sie einer Bitposition 6 eines Maschinenzustandsregisters zugewiesen wird. Gemäß einer Ausführungsform wird eine Einrichtung zur Berechtigung einer erweiterten Betriebsartsteuerung bereitgestellt, um die Fähigkeit einer Anwendung zu steuern, die Einrichtung zum Aktivieren einer erweiterten Betriebsart zu modifizieren und dadurch Zugriff auf erweiterte Betriebsartmerkmale zu erhalten. Gemäß mindestens einem Aspekt ist nur für einige Anwendungen der Zugriff auf die Einrichtung zum Aktivieren einer erweiterten Betriebsart aktiviert. Bei einer Ausführungsform entsprechen diese Anwendungen einer oder mehreren der Anwendungen, die in Verbindung mit der dynamischen Code-Optimierung, der Binärumsetzung und der Just-in-Time-Kompilierung gemäß einem oder mehreren Aspekten verwendet werden.
-
Bei mindestens einer Ausführungsform befähigt die Einrichtung zur Berechtigung einer erweiterten Betriebsartsteuerung Anwendungen zum Steuern des Zugriffs, um eine oder mehrere eingeschränkte und separat gesteuerte Betriebsarten wie z.B. die durch MSR[FP], MSR[VEC] und MSR[VSX] gesteuerten Betriebsarten zu aktivieren. Wenn die Einrichtung zur Berechtigung einer erweiterten Betriebsartsteuerung aktiviert ist, sind bei mindestens einer Ausführungsform auch Benutzerebenen-Anwendungen dazu berechtigt, eine oder mehrere dieser Betriebsarten zu aktivieren.
-
Zusätzlich zu oder anstelle von einer oder mehreren erweiterten Betriebsartsteuerungen (z.B. einer oder mehreren Einrichtungen zum Aktivieren einer erweiterten Betriebsart und/oder einer oder mehreren Einrichtungen zur Berechtigung einer erweiterten Betriebsartsteuerung) in einem Steuerregister wie z.B. einem Maschinenzustandsregister, einem Programmzustandswort oder einer anderen Art von Steuerregister, können in verschiedenen Adressumsetzungsstrukturen erweiterte Betriebsartsteuerungen enthalten sein, wie in 13C gezeigt wird. So beinhaltet eine bestimmte Adressumsetzungsstruktur zum Beispiel eine Mehrzahl von Einträgen 1320, und jeder Eintrag 1320 beinhaltet verschiedene Informationen, die beim Umsetzen einer Adresse verwendet werden. Gemäß einem Aspekt können die Informationen des Weiteren eine oder mehrere erweiterte Betriebsartsteuerungen 1322 beinhalten, um anzugeben, ob Anwendungscode, welcher der umgesetzten Arbeitsspeicherregion entspricht, erweiterte Betriebsartmerkmale verwenden kann. Die erweiterten Betriebsartsteuerungen 1322 können zum Beispiel angeben, ob Anwendungscode, welcher der umgesetzten Arbeitsspeicherregion entspricht, über eine Berechtigung zum Verwenden erweiterter Betriebsartmerkmale (z.B. die Einrichtung zur Berechtigung einer erweiterten Betriebsartsteuerung) verfügen, und/oder ob die erweiterte Betriebsart für Anwendungscode aktiviert ist, welcher der umgesetzten Arbeitsspeicherregion entspricht (z.B. die Einrichtung zum Aktivieren einer erweiterten Betriebsart).
-
Bei einer Ausführungsform entsprechen eine oder mehrere der Steuerungen Anwendungscode mit einer Benutzer-Berechtigungsstufe, nicht jedoch Code mit einer Supervisor-Berechtigungsstufe. Bei einer Ausführungsform entsprechen eine oder mehrere der Steuerungen Code auf Partitionsebene (d.h. Code mit einer Benutzer- und Betriebssystem-Berechtigungsstufe), nicht jedoch Code mit einer Hypervisor-Berechtigungsstufe. Bei einer weiteren Ausführungsform entsprechen eine oder mehrere der Steuerungen Code mit einer Benutzer-, Betriebssystem- und Hypervisor-Berechtigungsstufe, nicht jedoch Code mit einer weiteren, vierten Berechtigungsstufe usw.
-
Eine besondere Adressumsetzungsstruktur besteht in einer Seitentabelle, und mit Bezug auf 13D wird ein Seitentabelleneintrag 1330 beschrieben, der ausgewählte Informationen wie z.B. eine oder mehrere erweiterte Betriebsartsteuerungen 1332 beinhaltet. In einem bestimmten Beispiel beinhalten die ausgewählten Informationen Adressinformationen (z.B. eine reale Adresse des Seitenrahmens), mit denen eine physische Adresse erzeugt wird, sowie Steuerungen, mit denen eine Ausführung der Seite gesteuert wird, die der physischen Adresse zugehörig ist. Diese Steuerungen sind zum Beispiel von der Systemarchitektur abhängig; gemäß einem Aspekt beinhalten jedoch eine oder mehrere der Steuerungen eine oder mehrere erweiterte Betriebsartsteuerungen 1332. Wie oben beschrieben, wird mit einer oder mehreren erweiterten Betriebsartsteuerungen 1332 angegeben, ob Anwendungscode, welcher der umgesetzten Arbeitsspeicherregion entspricht, erweiterte Betriebsartmerkmale verwenden kann. Die erweiterten Betriebsartsteuerungen 1322 können zum Beispiel angeben, ob Anwendungscode, welcher der umgesetzten Arbeitsspeicherregion entspricht, über eine Berechtigung zum Verwenden erweiterter Betriebsartmerkmale (z.B. die Einrichtung zur Berechtigung einer erweiterten Betriebsartsteuerung) verfügen, und/oder ob die erweiterte Betriebsart für Anwendungscode aktiviert ist, welcher der umgesetzten Arbeitsspeicherregion entspricht (z.B. die Einrichtung zum Aktivieren einer erweiterten Betriebsart).
-
In weiteren Beispielen können in anderen Adressumsetzungsstrukturen eine oder mehrere erweiterte Betriebsartsteuerungen enthalten sein, z.B. ein Segmenttabelleneintrag (Segment Table Entry, STE), Regionstabelleneinträge (Region Table Entry, RTE) und/oder andere Adressumsetzungseinträge, die bei einer Umsetzung sowie zum Steuern eines Arbeitsspeicherzugriffs verwendet werden.
-
In einem weiteren Beispiel können zusätzlich eine oder mehrere erweiterte Betriebsartsteuerungen in einem Speicherschlüssel enthalten sein, wovon ein Beispiel in 13E dargestellt ist. Ein Speicherschlüssel 1340 ist jeweils 4 KByte eines realen Speichers zugewiesen und dient zum Steuern des Zugriffs. In einem Beispiel beinhaltet er ausgewählte Informationen wie z.B. Zugriffssteuerungsbits, ein Abrufsperrbit, ein Referenzbit und ein Änderungsbit sowie eine erweiterte Betriebsartsteuerung 1342. Wenn die Steuerung zum Aktivieren einer erweiterten Betriebsart auf 0 gesetzt wird, ist die Verwendung von Merkmalen für eine erweiterte Betriebsartsteuerung auch hier deaktiviert, und wenn sie auf 1 gesetzt wird, ist die Verwendung von Merkmalen für eine erweiterte Betriebsartsteuerung aktiviert. Des Weiteren können die erweiterten Betriebsartsteuerungen 1342 auch eine Einrichtung zur Berechtigung einer erweiterten Betriebsartsteuerung beinhalten.
-
Anstelle erweiterte Betriebsartmerkmale als Ganzes zu aktivieren/deaktivieren, können bei einer weiteren Ausführungsform separate Steuerungen für einzelne Merkmale der erweiterten Betriebsartmerkmale vorhanden sein. In diesem Fall verfügt jedes Steuerregister, jeder Adressumsetzungseintrag oder Speicherschlüssel über mehrere erweiterte Betriebsartsteuerungen, d.h. eine für jedes Merkmal. So kann zum Beispiel eine Mehrzahl von Einrichtungen zum Aktivieren einer erweiterten Betriebsart vorhanden sein, d.h. eine für jedes Merkmal, so dass die Verwendung eines bestimmten Merkmals aktiviert/deaktiviert werden kann; und/oder es kann eine Mehrzahl von Einrichtungen zur Berechtigung einer erweiterten Betriebsartsteuerung vorhanden sein, d.h. eine für jedes Merkmal.
-
Um die Anzahl der z.B. in einem Adressumsetzungseintrag (z.B. PTE, STE, RTE, SLBe usw.) oder einem Speicherschlüssel verwendeten Bits zu optimieren, aber dennoch mehrere unabhängige Steuerungen zu aktivieren, wird ein einzelnes Bit verwendet, um anzugeben, ob eine spezifische Arbeitsspeicherregion (z.B. eine Seite, ein Segment, eine Region usw.) zum Verwenden der erweiterten Betriebsartmerkmale aktiviert ist, und danach wird ein sekundärer Satz von Bits zum Beispiel in einem Steuerregister (z.B. MSR, PSW) oder einem Spezialregister gespeichert, um zu bestimmten, welches Merkmal aus einer Mehrzahl von Merkmalen durch die DCO-Komponente aktiviert wird. Entsprechend kann ein einzelnes Bit in einer Adressumsetzungsstruktur oder einem Speicherschlüssel für die Einrichtung zur Berechtigung einer erweiterten Betriebsartsteuerung gespeichert werden, und danach kann ein sekundärer Satz von Bits in einem Steuerregister gespeichert werden, um zu bestimmen, welches Merkmal aus einer Mehrzahl von Merkmalen berechtigt wird.
-
Wie in 13F gezeigt wird, beinhaltet zum Beispiel ein Seitentabelleneintrag 1350 einen Anzeiger (z.B. ein Bit) 1352, der, wenn er auf 1 gesetzt wird, beispielsweise angibt, dass erweiterte Betriebsartsteuerungen für die Anwendung aktiviert sind, wobei die betreffenden für eine Verwendung aktivierten Merkmale 1354 jedoch zum Beispiel in einem Steuerregister wie z.B. einem Maschinenzustandsregister 1360 angegeben werden. Der Anzeiger 1352 kann auf ähnliche Art und Weise für die Einrichtung zur Berechtigung einer erweiterten Betriebsartsteuerung verwendet werden. Bei einer weiteren Ausführungsform kann die Steuerung 1352 zwei Bits beinhalten: eines für die Einrichtung zum Aktivieren einer erweiterten Betriebsart und ein weiteres für die Einrichtung einer erweiterten Betriebsartsteuerung, und danach enthält das Steuerregister einen sekundären Satz von Bits für jede dieser Einrichtungen.
-
Das Steuerregister, welches die ausgewählten erweiterten Betriebsartmerkmale angibt, wird zum Beispiel auf der Thread-Ebene verwaltet, und Kontextwechsel durch das Betriebssystem ermöglichen der DCO-Komponente eine separate Steuerung der Merkmale, die für jeden Anwendungsprozess aktiviert sind. Bei anderen Ausführungsformen werden die erweiterten Betriebsartsteuerungen von allen Threads innerhalb eines Prozesses oder von allen Prozessen innerhalb einer Partition oder von allen Threads innerhalb eines Kerns usw. gemeinsam genutzt, wodurch unterschiedliche Granularitätsstufen bereitgestellt werden.
-
Bei noch einer weiteren Ausführungsform wird die erweiterte Betriebsartsteuerung implizit in einem Eintrag eines Segmentumsetzpuffers (SLBe) bereitgestellt. So wird die erweiterte Betriebsartsteuerung zum Beispiel mit dem No-Data-Bit (NOA = D) des SLBe gemeinsam genutzt. Wenn also in einem Beispiel eine Seite bei einer Zuordnung nicht für Datenzugriffe verfügbar ist, was z.B. bei verborgenem Code der Fall ist, mit dem z.B. eine einwandfreie selbstreferenzielle Ausführung sichergestellt werden soll, werden zusätzliche Funktionen, die lediglich einem durch die DCO erzeugten Code verfügbar gemacht werden sollen, einem Code bereitgestellt, der aus solchen Seiten heraus ausgeführt wird. Gemäß einem Aspekt aktiviert die erweiterte Betriebsartsteuerung (z.B. ein einzelnes Bit) wie oben beschrieben eine Mehrzahl von Auswahlmöglichkeiten, die in einem MSR, PSW, CR oder SPR gespeichert sind. Gemäß einem anderen Aspekt gibt das No-Data-Zugriffsbit an, ob erweiterte Betriebsarten ohne weitere Auswahl verfügbar sind.
-
Ausführungsformen von Logik zum Durchführen einer Optimierung und zum optionalen Verwenden der erweiterten Betriebsartmerkmale werden mit Bezug auf die 14A bis 15 beschrieben. Insbesondere stellt 14A eine Ausführungsform eines Erzeugens von optimiertem Code ohne Verwendung der erweiterten Betriebsartsteuerung(en) dar, und 14B stellt eine Ausführungsform eines Erzeugens von optimiertem Code unter Verwendung der erweiterten Betriebsartsteuerung(en) dar. Des Weiteren stellt 15 eine Ausführungsform eines Erzeugens des optimiertem Codes mit der/den erweiterten Betriebsartsteuerung(en) dar.
-
Beginnend mit 14A wird (z.B. durch das Betriebssystem, durch eine Anwendung, durch die Einheit selbst usw.) eine dynamische Optimierungseinheit wie z.B. eine dynamische Code-Optimierungseinheit in einem Prozessor initiiert, SCHRITT 1400. Die Optimierungseinheit identifiziert Code, der korrigiert werden soll, SCHRITT 1402. So identifiziert die dynamische Code-Optimierungseinheit zum Beispiel Regionen oder Bereiche von Hotspots, in denen der Code optimiert werden kann. Auf Grundlage eines Identifizierens des zu modifizierenden Codes wird neuer Code erzeugt, SCHRITT 1404. Bei einer Ausführungsform beinhaltet dies ein Kopieren des Teils des zu modifizierenden Codes und danach ein Modifizieren des kopierten Teils, SCHRITT 1404. Anstelle die gesamte Anwendung zu kopieren, wird der Teil kopiert. Das heißt, dass nur der zu modifizierende Teil kopiert und in separaten Arbeitsspeicherregionen gespeichert wird. Das Modifizieren kann eine beliebige Anzahl von bekannten Optimierungsmethoden beinhalten, darunter, ohne darauf beschränkt zu sein, Rollout, Inline-Optimierung usw.
-
Nach dem Erzeugen des neuen, modifizierten Codes wird der Code in einen Systemarbeitsspeicher geschrieben und in Arbeitsspeicherpositionen gespeichert, die sich von den Arbeitsspeicherpositionen der Anwendung unterscheiden, SCHRITT 1406. Des Weiteren werden Seitenzuordnungen aktualisiert, um den modifizierten Code verfügbar zu machen, SCHRITT 1408. Dies beinhaltet zum Beispiel, der einen oder den mehreren Komponenten der Datenverarbeitungsumgebung wie z.B. dem Betriebssystem oder der MMU anzugeben, wo sich der modifizierte Code befindet, sowie welche Art von Zugriff für den Code zulässig ist. Die Optimierungseinheit gibt zum Beispiel an, dass sich der modifizierte Code in physischen Arbeitsspeicherregionen x bis x + n befindet und an effektiven Adressen y bis y + n verfügbar gemacht werden soll und dass es sich um eine auf Befehlsabrufe beschränkte Art des Zugriffs handelt, der in Verbindung mit einer bestehenden Zuordnung für Datenzugriffe verwendet werden soll, indem eine momentan bestehende Arbeitsspeicherregion für die Befehls-/Datenumsetzung in eine separate Arbeitsspeicherregion für die Befehls-/Datenumsetzung geändert wird, indem die bestehende gemeinsame Umsetzung für die Adressen y bis y + n durch eine Datenumsetzung in den zuvor verwendeten physischen Arbeitsspeicher ersetzt wird, wobei dies jedoch auf nur für Daten geltende Zugriffe in Verbindung beschränkt wird und wobei Befehlszugriffe für y bis y + n an die physischen Adressen x bis x + n geleitet werden. Gemäß einem weiteren Aspekt mindestens einer Ausführungsform wird eine nur für Befehle geltende Umsetzung zu einer bestehenden nur für Daten geltenden Umsetzung hinzugefügt. In einem Beispiel wird die Optimierungseinheit einer Schnittstelle bereitgestellt, um ein Bereitstellen dieser Informationen zu ermöglichen.
-
Bei einer Ausführungsform und gemäß einem Aspekt erzeugt der Prozessor wie beispielsweise die MMU auf Grundlage eines Empfangens der Zuordnungsinformationen SLBEs, die unter einer Steuerung einer Systemsoftware, welche so erweitert wird, dass sie separate SLBEs für Befehls- und Datenzugriffe initialisiert, zum Umsetzen auf die neuen Seiten verwendet werden sollen. So wird der momentane SLBE, der auf den Code vor dem Modifizieren zeigt, zum Beispiel kopiert, und die VSID wird aktualisiert, um die Speicherposition der neuen Seiten widerzuspiegeln, und das NOA-Feld wird so gesetzt, dass es ausschließlich Befehlszugriffe vorsieht. Des Weiteren werden das NOA-Feld und der auf den nicht modifizierten Code zeigende SLBE von einem gemeinsamen Zugriff auf „Nur Datenzugriff“ aktualisiert. Insbesondere wird in einem Beispiel ein neuer SLBE für einen auf Befehle beschränkten Zugriff erzeugt und in eine neue virtuelle Adresse umgesetzt. Seiten in dem neuen virtuellen Adressbereich werden auf die neu bereitgestellte Arbeitsspeicherregion initialisiert. Wenn nur ein Teil einer Arbeitsspeicherregion modifiziert wird, können Seiten innerhalb der neuen Arbeitsspeicherregion, die nicht auf eine neue, auf Befehlszugriffe beschränkte Seite initialisiert werden, so initialisiert werden, dass sie auf die Seiten mit nicht modifiziertem Code zeigen. Bei einer Ausführungsform werden diese Seiten initialisiert, wenn ein neuer virtueller Adressbereich in Verbindung mit einem auf Befehlszugriffe beschränkten SLBE erzeugt wird. Bei einer weiteren Ausführungsform werden sie auf verzögerte Art und Weise initialisiert, so dass bei Durchführung eines Zugriffs ein Seitenfehler gemeldet wird und die Initialisierung in Verbindung mit einem Verarbeiten des Seitenfehlers erfolgt.
-
Mit Bezug auf 14B berücksichtigt die Optimierung in einem Beispiel des Weiteren, ob eine oder mehrere erweiterte Betriebsartsteuerungen bereitgestellt werden. Mit Bezug auf 14B beginnt die Optimierungseinheit mit einem Erzeugen des optimierten Codes, SCHRITT 1450, und es wird ermittelt, ob sich der Code erweiterte Betriebsartmerkmale zunutze machen soll, ABFRAGE 1452. Wenn dies nicht der Fall ist, wird wie oben beschrieben konformer Code (d.h. Code, der mit der momentan aktiven Architekturebene konform ist) erzeugt, SCHRITT 1454. Wenn jedoch ermittelt wird, dass sich der Code erweiterte Betriebsartmerkmale zunutze machen soll, verwendet der erzeugte Code ein oder mehrere zusätzliche Merkmale, die auf Grundlage einer Auswahl durch die Optimierungseinheit verfügbar sind, SCHRITT 1456. Dies beinhaltet zum Beispiel ein Verwenden eines Befehls, der mehrere Befehle ersetzt, ein Verwenden eines höheren Architekturmodus oder andere Arten von Verbesserungen. Des Weiteren werden durch die Optimierungseinheit eine oder mehrere erweiterte Betriebsartsteuerungen für die Anwendung gesetzt, SCHRITT 1458. Die Optimierungseinheit fügt zum Beispiel Code ein, um erweiterte Betriebsartmerkmale vor der Verwendung zu aktivieren, wie mit Bezug auf 14B, SCHRITT 1460 beschrieben wird, oder sie führt optional Schritte durch, um anzugeben, dass die Anwendung oder ausgewählte Teile der Anwendung (z.B. nur DCO-erzeugter Code) erweiterte Code-Merkmale verwenden kann und/oder zu deren Verwendung berechtigt ist, indem die Anwendung z.B. dazu berechtigt ist, die erweiterten Betriebsartmerkmale zu verwenden (so wird durch ein Setzen von einem oder mehreren Steuerungsanzeigern in einem PTE z.B. angefordert, dass die Einrichtung zur Berechtigung einer erweiterten Betriebsartsteuerung aktiviert wird usw.), SCHRITT 1462.
-
Ein Beispiel für ein Einfügen von Code, um die Verwendung der erweiterten Betriebsartmerkmale zu aktivieren, wird mit Bezug auf 15 beschrieben. 15 stellt einen Beispielablauf eines Verwendens eines Steuerregisters dar, mit dem erweiterte Betriebsartmerkmale aktiviert werden.
-
Zunächst wird der nicht modifizierte Anwendungscode ausgeführt, SCHRITT 1500, und danach eine Verzweigung zu dem optimierten Anwendungscode durchgeführt, SCHRITT 1502. In einem Beispiel beinhaltet dies das Ausführen eines Befehlsabrufs unter Verwendung eines auf Befehlsabrufe beschränkten SLBE. In dem neuen Code setzt die Optimierungseinheit in einem Steuerregister die erweiterte Betriebsartsteuerung (z.B. die Einrichtung zum Aktivieren einer erweiterten Betriebsart), indem sie zum Beispiel eine Reihe von Befehlen verwendet, SCHRITT 1504. So wird zum Beispiel ein Befehl zum Verschieben aus einem Maschinenzustandsregister (mfmsr) verwendet den Inhalt des MSR-Registers zu entnehmen und den MSR-Inhalt in ein Register rx zu platzieren (wobei rx ein beispielhaftes Register ist, bei dem x jede Registernummer z.B. zwischen 0 und 31 sein kann, wobei dies abhängig von den in einer Architektur bereitgestellten Registern ist, die in Verbindung mit einer Architektur verwendet werden können). Danach wird ein ODER-Direktbefehl durchgeführt, um den Wert so zu setzen, dass er eine Aktivierung einer erweiterten Betriebsart angibt. Danach wird ein Befehl zum Verschieben in ein Maschinenzustandsregister (mtmsr) durchgeführt, um den Wert in das Maschinenzustandsregister zurück zu verschieben. Danach wird eine optimierte Codierung in der neuen Betriebsart durchgeführt, SCHRITT 1506, d.h. es werden nach Ermessen der Optimierungseinheit ein oder mehrere erweiterte Betriebsartmerkmale verwendet.
-
Wenn die Verarbeitung abgeschlossen ist, wird die erweiterte Betriebsartsteuerung (z.B. die Einrichtung zum Aktivieren einer erweiterten Betriebsart) wiederum unter Verwendung einer Anzahl von Befehlen auf „deaktiviert“ gesetzt, SCHRITT 1508. So wird zum Beispiel der mfmsr-Befehl ausgeführt und der Wert in dem MSR in ein Register rx verschoben, und ein UND-Direktbefehl wird durchgeführt, um die erweiterte Betriebsartsteuerung auf „deaktiviert“ zu setzen, und der Wert wird unter Verwendung z.B. des mtmsr-Befehls in das MSR verschoben. Danach kehrt die Verarbeitung zu dem nicht optimierten ursprünglichen Anwendungscode zurück, SCHRITT 1510. In einem Beispiel beinhaltet dies, eine Verzweigung zu einem Spezialregister wie z.B. einem Zieladressregister (TAR) zu verwenden. Zum Durchführen dieser Verzweigung wird die Rückkehradresse in ein Register rx geladen (wobei rx ein beispielhaftes Register ist, bei dem x jede Registernummer z.B. zwischen 0 und 31 sein kann, wobei dies abhängig von den in einer Architektur bereitgestellten Registern ist, die in Verbindung mit einer Architektur verwendet werden können, und wobei der Wert „Rückkehradresse“ entweder als ein direkt geladener Wert oder als ein Wert dargestellt wird, der unter Verwendung einer aus einer Vielfalt von möglichen Adressierungsarten, die durch Ladebefehle in einer Architektur gemeinsam verwendet werden, als ein Operand aus einem Arbeitsspeicher geladen wird), ein Befehl zum Verschieben in ein TAR wird ausgeführt, um den Wert von rx in das TAR zu kopieren, und ein bedingter Verzweigungsbefehl wird ausgeführt, um zu der Adresse in dem TAR zu verzweigen. Danach fährt die Verarbeitung mit dem nicht modifizierten Anwendungscode fort, SCHRITT 1512.
-
Gemäß einer Ausführungsform ist das TAR ein Zieladressregister, das in Verbindung mit Verzweigungsbefehlen als eine vom Register angegebene Zieladresse verwendet werden kann. Gemäß mindestens einer Ausführungsform ist die Verwendung des TAR auf DCO-Funktionen und andere Systemfunktionen beschränkt und steht nicht optimiertem Anwendungscode nicht zur Verfügung. Bei einer Ausführungsform steht das TAR für eine beispielhafte erweiterte Betriebsartfunktion, die von einer DCO-Komponente verwendet wird, um optimierten Code für ein Verzweigen zu nicht optimiertem Code zu erzeugen.
-
Bei einer Ausführungsform kann in den SCHRITTEN 1504 und 1508 anstelle einer Mehrzahl von Befehlen ein neuer Befehl erzeugt werden, der zum Beispiel als MTEM (Move to Extended Mode; in erweiterte Betriebsart wechseln) bezeichnet wird und der eine erweiterte Betriebsartsteuerung in einem Steuerregister setzt.
-
In dem oben beschriebenen Beispiel wird des Weiteren eine erweiterte Betriebsartsteuerung aktiviert, sodass die Anwendung Zugriff auf die erweiterten Betriebsartmerkmale erhält. Allerdings können bei anderen Ausführungsformen separate Steuerungen in den Steuerregistern und/oder an anderer Stelle für einzelne Merkmale aktiviert/deaktiviert werden. Auch andere Variationen sind möglich.
-
Ein Beispiel für einen Befehl zum Verschieben aus einem Maschinenzustandsregister wird mit Bezug auf 16A beschrieben. Bei einem Beispielformat beinhaltet ein Befehl 1600 zum Verschieben aus einem Maschinenzustandsregister eine Mehrzahl von Operationscodefeldern 1602a, 1602b, die eine Operation zum Verschieben aus einem Maschinenzustandsregister angeben, sowie ein Registerfeld (RT) 1604. Der Inhalt des MSR wird in dem Register platziert, das in dem RT-Feld 1604 angegeben wird.
-
Im Folgenden wird mit Bezug auf 16B ein Beispiel für einen Befehl zum Verschieben in ein Maschinenzustandsregister beschrieben. In einem Beispielformat beinhaltet ein Befehl 1650 zum Verschieben aus einem Maschinenzustandsregister eine Mehrzahl von Operationscodefeldern 1652a, 1652b, die eine Operation zum Verschieben in ein Maschinenzustandsregister angeben, ein Registerfeld (RS) 1654 und ein L-Feld 1656.
-
Wenn bei der Operation L = 0, dann
MSR48 β (RS)48 ξ (RS)49
MSR58 β (RS)58 ξ (RS)49
MSR59 β (RS)59 ξ (RS)49
MSR32:47 49:50 52:57 60:62 β (RS)32:47 49:50 52:57 60:62
sonst
MSR48 62 β (RS)48 62
-
Das MSR wird auf Grundlage des Inhalts des Registerfelds RS und des L-Felds gesetzt. L = 0:
-
Das Ergebnis der ODER-Bits 48 und 49 des Registerfelds RS wird im MSR48 platziert. Das Ergebnis der ODER-Bits 58 und 49 des Registerfelds RS wird im MSR58 platziert. Das Ergebnis der ODER-Bits 59 und 49 des Registerfelds RS wird im MSR59 platziert. Die Bits 32:47, 49:50, 52:57 und 60:62 des Registerfelds RS werden in den entsprechenden Bits des MSR platziert. L = 1:
-
Die Bits 48 und 62 des Registerfelds RS werden in den entsprechenden Bits des MSR platziert. Die übrigen Bits des MSR bleiben unverändert.
-
Bei L = 0 beinhaltet dieser Befehl eine Kontextsynchronisierung. Bei L = 1 beinhaltet dieser Befehl eine Ausführungssynchronisierung.
-
In den obigen Ausführungen wird eine Einrichtung beschrieben, bei der eine Optimierungseinheit einer Anwendung Merkmale einer erweiterten Betriebsart (auch als verbesserte oder spezielle Betriebsart bezeichnet) bereitstellen kann. Gemäß einem Aspekt beginnt eine Benutzerebenen-Anwendung z.B. damit, dass MSR-Bits derartige erweiterte Betriebsartmerkmale als deaktiviert aktivieren. Das Bit (bzw. die Bits) für die erweiterte Betriebsartsteuerung sind nicht für ein Setzen durch ein Anwendungsebenen-Programm aktiviert, und normalen Anwendungen wird keine Schnittstelle zur Supervisorsoftware bereitgestellt, um diese Einstellungen zu aktivieren. Wenn eine Anwendung daher versucht, solche Befehle zu verwenden, kommt es zu einem Fehler, welcher der Ausführung eines nicht zulässigen Befehls entspricht. Wenn die dynamische Optimierungseinheit dann optimierten Code erzeugt und einfügt, aktiviert die dynamische Optimierungseinheit die zusätzlichen Merkmale für eine Anwendung/einen Adressraum, wobei dies entweder über spezielle Berechtigungen erfolgt, die eine Hardware einer DCO-Komponente erteilt (z.B. eine separate Ausführungs-Berechtigungsstufe), oder durch eine Schnittstelle zwischen der DCO-Komponente und einer Supervisorsoftware, um diese MSR-Steuerungen zu aktivieren und für die vorliegende Anwendung gesetzt zu halten. Sobald dieses Bit oder eine Mehrzahl von Bits zum separaten Steuern verschiedener Fähigkeiten und Betriebsarten gesetzt werden, sind die Funktionen für die Anwendung verfügbar und bleiben beim Wechsel zwischen Aufgaben, die durch das Betriebssystem durchgeführt werden usw., für die Anwendung gesetzt.
-
Zusätzliche MSR-Bits wie FPU, VEC oder VSX können bereitgestellt werden, um Betriebsarten zu aktivieren, die für eine spezifische Anwendung jedoch deaktiviert zu sein scheinen.
-
Bei einer Ausführungsform steuert das Bit für die erweiterte Betriebsartsteuerung oder ein zusätzliches Bit auch einen Befehl für eine Verzweigung und einen Betriebsartwechsel, der durch die Hardware bereitgestellt werden kann, damit eine DCO-Komponente eine Steuerung von einem ursprünglichen Code an eine optimierte, dynamisch erzeugte Version des Code übergeben kann, der kompiliert wurde, um einen Hotspot zu optimieren und sich derartige Befehle oder Ressourcen für eine Hochleistungsbetriebsart zunutze zu machen – Verzweigung und Betriebsartwechsel zu X –, sowie einen zweiten Verzweigungsbefehl – Verzweigung und Betriebsartwechsel von X, wobei X einer spezifischen Betriebsart von einer oder mehreren Betriebsarten wie z.B. einer normalen Betriebsart und mindestens einer erweiterten Betriebsart entspricht.
-
Wie hier beschrieben, werden gemäß einem weiteren Aspekt Aktivierungsbits nicht mittels MSR-Bits einer ausgeführten Anwendung zugewiesen, sondern auf einer Anwendungsebene gesetzt. In Verbindung mit einer Ausführungsform enthält ein Seitentabelleneintrag ein oder mehrere Bits für die erweiterte Betriebsartsteuerung, die einer Seite zugehörig sind. Wenn die DCO-Komponente optimierten Code erzeugt und eine neue Seite mit solchem Code installiert, veranlasst sie, dass die Berechtigungen des Seitentabelleneintrags gesetzt werden, um zusätzliche Befehle, Ressourcen oder ISA-Ebenen zu aktivieren, die über die ISA-Ebene hinausgehen, welche durch das Prozessorkompatibilitätsregister (PCR) gemäß der hier durch Bezugnahme mit aufgenommenen Spezifikation der Power ISA v2.07 oder der hier durch Bezugnahme mit aufgenommenen VAL-Spezifikation gemäß der System z/Architecture oder durch eine beliebige andere Softwaresteuerung zum Setzen von softwaregesteuerten Architekturebenen gemäß einer Architektur gesetzt werden. Gemäß einem weiteren Aspekt von Bits für eine erweiterte Betriebsart, die einem Seitentabelleneintrag zugehörig sind, wählt das Betriebsart-Bit eine alternative Ausführungsart wie z.B. eine VLIW-(Very Long Instruction Word) oder eine WW-Power-Befehlssatzcodierung aus.
-
Gemäß einem Aspekt beinhaltet ein Prozessor einen Befehlszustandskontext (Instruction State Context, ISC), so dass der ISC eine Architekturebene einer Befehlssatzarchitektur (ISA_being used) angibt. Auf diese Weise kann ein Anwendungsprogramm eine ISA angeben, die für einen Teil des momentan ausgeführten Programms verwendet werden soll, indem es den ISC angibt.
-
Neben den obigen Ausführungen wird gemäß einem weiteren Aspekt eine Fähigkeit zum Aktivieren einer Partition bereitgestellt, die eine oder mehrere Anwendungen enthält, welche erweiterte Betriebsartmerkmale verwenden oder in der Lage sind, diese zu verwenden, und die auf einen weiteren Host migriert werden sollen. Um diese Migration zu ermöglichen, werden verschiedene Schritte durchgeführt, um sicherzustellen, dass die Partition erfolgreich verschoben werden kann, insbesondere, wenn in der Partition ausgeführte Anwendungen mit erweiterten Betriebsmerkmalen verbessert sind.
-
Ein Schritt, um eine Migration einer Partition zu ermöglichen, beinhaltet ein Registrieren einer Verwendung der erweiterten Betriebsarteinrichtung durch die Optimierungseinheit, sodass das Betriebssystem und/oder der Hypervisor die Anwendungen kennen und somit wissen, welche Partitionen an der erweiterten Betriebsarteinrichtung teilhaben. Wenn durch die Optimierungseinheit neue ISA-Fähigkeiten oder erweiterte Betriebsarten verwendet werden, die anderen Modellen womöglich nicht zur Verfügung stehen, und der durch die Optimierungseinheit erzeugte Code in einer Partition erzeugt wird, für die ansonsten eine Kompatibilität mit einer älteren ISA-Version eingestellt ist, registriert die Optimierungseinheit somit gemäß einem Aspekt, dass sie Fähigkeiten verwendet, die unter Umständen nicht migrierbar sind. Wenn erweiterte Betriebsartmerkmale, -befehle und -ressourcen verwendet werden, die nicht auf allen Systemen verfügbar sind, der Code jedoch in einer migrierbaren Partition erzeugt wird, registriert die Optimierungseinheit gemäß einem weiteren Aspekt ebenfalls, dass sie Fähigkeiten verwendet, die unter Umständen nicht migrierbar sind. In einem Beispiel erfolgt das Registrieren über ein Interagieren mit Supervisorsoftware wie z.B. dem Betriebssystem oder dem Hypervisor.
-
Eine Ausführungsform einer Logik zum Durchführen einer Registrierung wird mit Bezug auf die 17 beschrieben. Diese Logik wird zum Beispiel durch die Optimierungseinheit durchgeführt, wenn sie die erweiterte Betriebsarteinrichtung erstmals verwenden möchte.
-
Mit Bezug auf 17 ermittelt die Optimierungseinheit zunächst zum Beispiel auf Grundlage einer Analyse der Anwendungen, die sie optimiert, und der potenziellen erweiterten Betriebsartmerkmale, die verfügbar sind, ob die Verwendung der erweiterten Betriebsarteinrichtung von Nutzen wäre, ABFRAGE 1700. Wenn ermittelt wird, dass die Verwendung der erweiterten Betriebsarteinrichtung nicht von Nutzen wäre, verwendet die Optimierungseinheit die momentane Ebene der ISA-Architektur zum Erzeugen eines optimierten Codes, SCHRITT 1702. Wenn die Optimierungseinheit dagegen ermittelt, dass die Verwendung der erweiterten Betriebsarteinrichtung von Nutzen wäre, ABFRAGE 1700, wird des Weiteren ermittelt, ob die erweiterte Betriebsarteinrichtung für die Optimierungseinheit bereits aktiviert ist, d.h. ob die Optimierungseinheit bereits eine Registrierung für die erweiterte Betriebsarteinrichtung durchgeführt hat, ABFRAGE 1704. Wenn die Optimierungseinheit bereits eine Registrierung durchgeführt hat, kann die Optimierungseinheit ein oder mehrere Merkmale der erweiterten Betriebsarteinrichtung verwenden, SCHRITT 1710.
-
Wenn die Optimierungseinheit jedoch noch keine Registrierung für die erweiterte Betriebsarteinrichtung durchgeführt hat, ABFRAGE 1704, fordert die Optimierungseinheit eine Verwendung der erweiterten Betriebsarteinrichtung an, SCHRITT 1706, und registriert eine solche Verwendung, SCHRITT 1708. In einem Beispiel können das Anfordern einer Verwendung und das Registrieren einer Verwendung in einem einzigen Supervisoraufruf zusammengefasst werden. In einem besonderen Beispiel erfolgt der Supervisoraufruf von der Optimierungseinheit an das Betriebssystem, und das Betriebssystem führt danach eine Registrierung bei dem Hypervisor durch. In einem weiteren Beispiel kann die Optimierungseinheit auch in der Lage sein, die Anforderung direkt an den Hypervisor zu leiten (z.B. wenn die Optimierungseinheit dazu berechtigt wurde, mit dem Hypervisor Daten auszutauschen). Nach der Registrierung kann die Optimierungseinheit ein oder mehrere Merkmale der erweiterten Betriebsarteinrichtung verwenden, SCHRITT 1710.
-
Um das eine oder die mehreren Merkmale der erweiterten Betriebsarteinrichtung zu verwenden, erzeugt die Optimierungseinheit bei einer Ausführungsform Code und nimmt eines oder mehrere der erweiterten Betriebsartmerkmale in den optimierten Code auf. Insbesondere erstellt die Optimierungseinheit eine Kopie des zu modifizierenden ursprünglichen Codes, erzeugt den modifizierten Code und platziert einen Übergang wie z.B. eine Verzweigung in dem kopierten ursprünglichen Code zu dem modifizierten Code, wie in 18 gezeigt.
-
Mit Bezug auf 18 beinhaltet eine Anwendung 1800 zum Beispiel eine Mehrzahl von Coderegionen wie eine erste Region 1802, die zum Beispiel auf einer ersten Architekturebene beruht (z.B. Power7), und zwei durch die Optimierungseinheit erzeugte optimierte Regionen wie eine Region 1804, die durch eine Optimierungseinheit (z.B. eine dynamische Optimierungseinheit) unter Verwendung von Befehlen von einer anderen Architekturebene (z.B. einer verbesserten Ebene, Power8) kompiliert wurden, sowie eine weitere Region 1806, die unter Verwendung von Millicodebefehlen kompiliert wurde, die der Anwendung üblicherweise nicht zur Verfügung stehen. In die Anwendung 1802 werden Verzweigungen zu den beiden Regionen 1804 und 1806 (z.B. b opt_frag1 bzw. b opt_frag2) und von den Regionen zurück zu dem nicht optimierten Teil des Code (z.B. btar – Verzweigung zum Zieladressregister) platziert.
-
Bei einer Ausführungsform besteht die Verzweigungsdistanz zwischen dem ursprünglichen Code und dem optimierten Code zum Beispiel aus langen Distanzen, und die Verzweigung wird unter Verwendung eines Spezialregisters durchgeführt, das ausschließlich durch die Optimierungseinheit verwendet wird (z.B. ein Zieladressregister). Bei einer Ausführungsform erfolgen Übergänge von dem korrigierten ursprünglichen Code durch Verzweigungen, die neue Hochleistungsbetriebsarten (oder andere Betriebsarten, die durch den optimierten Code, nicht jedoch durch die Anwendung außerhalb des optimierten Codes verwendet werden) ermöglichen, und Übergänge zurück zu dem ursprünglichen Code verwenden Verzweigungen, die neue Hochleistungsbetriebsarten (oder andere Betriebsarten, die durch den optimierten Code, nicht jedoch durch die Anwendung außerhalb des optimierten Codes verwendet werden) deaktivieren und die zuvor erzwungene Anwendungsbetriebsart wiederherstellen.
-
Anwendungen wie z.B. die in 18 gezeigte Anwendung können in einer Partition ausgeführt werden, die von einem Host zu einem weiteren Host (z.B. einem System, einer Maschine usw.) migriert werden soll. Wenn eine Partition von einem Host auf einen weiteren Host verschoben werden soll, ermittelt in einem Beispiel der Hypervisor, ob die Zielmaschine die durch den optimierten Code verwendeten erweiterten Betriebsartmerkmale unterstützen kann. So soll mit Bezug auf die 19A bis 19C zum Beispiel eine Partition 1902 (19B) in einem System 1900 ausgeführt werden, das zum Beispiel auf einer Power8-Architekturebene betrieben wird. Darüber hinaus soll die Partition optimierten Code beinhalten, der zum Beispiel Millicodebefehle 1906 auf Grundlage von Power8 beinhaltet, sowie Code, der zum Beispiel Architekturmerkmale 1908 von Power8 verwendet. Der Hypervisor ermittelt, dass die Partition 1902 auf das System 1920 migriert werden kann (19A), wenn die Millicodebefehle 1906 entfernt werden, da diese durch das Power9-System nicht unterstützt werden. Der Code, welcher die Architekturmerkmale 1908 verwendet, wird jedoch unterstützt, da Power9 diese Architekturebene beinhaltet.
-
Entsprechend ermittelt der Hypervisor, dass die Partition nur dann auf das System 1930 migriert werden kann (19C), wenn sowohl die Millicodebefehle 1906 als auch die Architekturmerkmale 1908 entfernt werden, da beide nicht durch ein System unterstützt werden, das zum Beispiel auf einer Power7-Architekturebene betrieben wird.
-
Wenn eine Partition von einem Host auf einen weiteren Host verschoben werden soll (z.B. von einer Maschine auf eine weitere Maschine, von einem System auf ein weiteres System usw.) ermittelt der Hypervisor bei einer bestimmten Ausführungsform in einem Beispiel, ob die Optimierungseinheit die Verwendung von erweiterten Betriebsartmerkmalen registriert hat. Wenn dies der Fall ist, ermittelt der Hypervisor die Fähigkeiten der Zielmaschine, um zu ermitteln, ob die Zielmaschine die durch den optimierten Code verwendeten Merkmale unterstützen kann. Wenn die Zielmaschine die durch den optimierten Code verwendeten Merkmale unterstützen kann, wird die Partition migriert. Andernfalls wird bei einer Ausführungsform das Betriebssystem benachrichtigt.
-
In einem spezifischen Beispiel zählt das Betriebssystem alle Prozesse innerhalb der Partition auf, welche die Fähigkeiten verwenden, die über die Zielmaschinenebene hinausgehen, und benachrichtigt die diesen Prozessen zugehörige Optimierungseinheit, dass die Partition auf eine Maschine migriert werden soll, welche die erweiterten Betriebsartmerkmale nicht unterstützt. In einem Beispiel erfolgt diese Benachrichtigung über einen Rückruf von dem Betriebssystem an die Optimierungseinheit. Der Rückruf kann eine Angabe der unterstützten Merkmale beinhalten. Gemäß einer Ausführungsform entspricht ein Rückruf einer bekannten Adresse, die durch eine Optimierungseinheit einer weiteren Komponente wie zum Beispiel einem Betriebssystem bereitgestellt wird und an der eine Ausführung beginnen soll, wenn eine bestimmte Bedingung eintritt. Als Reaktion darauf, dass die Notwendigkeit eines Rückrufs ermittelt wird, beginnt das Betriebssystem mit dem Ausführen der Optimierungseinheit, an die der Rückruf gerichtet ist, und initialisiert den Programmzähler mit dem Wert der Rückrufadresse. Bei einer Ausführungsform wird der Rückruf als ein Signal gemäß dem POSIX-Standard realisiert.
-
Weitere Einzelheiten zum Vorbereiten einer Partitionsmigration wie z.B. ein Bereitstellen einer solchen Benachrichtigung werden mit Bezug auf 20 beschrieben. Mit Bezug auf 20 ermittelt der Hypervisor, ob die zu migrierende Partition etwaige erweiterte Betriebsarteinrichtungen verwendet, SCHRITT 2000. Diese Ermittlung kann zum Beispiel auf Grundlage früherer Registrierungen erfolgen, die angeben, welche Einrichtungen verwendet werden. Wenn ermittelt wird, dass die Partition keine erweiterten Betriebsarteinrichtungen verwendet, beginnt die Migration, sofern alle anderen Bedingungen für eine Migration erfüllt wurden, SCHRITT 2002. Wenn jedoch ermittelt wird, dass die Partition eventuell erweiterte Betriebsarteinrichtungen verwendet, erhält der Hypervisor eine Angabe dazu, welche spezifischen erweiterten Betriebsarteinrichtungen eventuell in der Partition verwendet werden, SCHRITT 2004. Darüber hinaus erhält der Hypervisor eine Angabe zu den Fähigkeiten des Zielsystems, SCHRITT 2006. In einem Beispiel kann der Hypervisor dies aus einer Liste von Fähigkeiten erhalten, die durch das Zielsystem verwaltet wird.
-
Es wird ermittelt, ob die erweiterten Betriebsarteinrichtungen der Partition durch die Zielmaschine unterstützt werden, ABFRAGE 2008. Dies kann zum Beispiel ermittelt werden, indem die in SCHRITT 2004 erhaltene Angabe der erweiterten Betriebsartmerkmale mit der in SCHRITT 2006 erhaltenen Angabe der unterstützten Fähigkeiten verglichen wird. Wenn in einem bestimmten Beispiel die migrierende Partition eine ISA-Ebene unterhalb der ISA-Ebene der Zielmaschine aufweist, unterstützt die Zielmaschine die erweiterten Betriebsartmerkmale einer verbesserten ISA. Wenn die Partition des Weiteren Codeverbesserungen wie z.B. Millicodemerkmale verwendet und der Code mit diesen Merkmalen auf der Zielmaschine korrekt ausgeführt werden kann, unterstützt die Zielmaschine diese Merkmale. Weitere Beispiele sind ebenfalls möglich. Wenn die erweiterten Betriebsarteinrichtungen der migrierenden Partition durch die Zielmaschine unterstützt werden, wird die Migration fortgesetzt, SCHRITT 2010.
-
Wenn zurück in ABFRAGE 2008 die Zielmaschine eines oder mehrere der erweiterten Betriebsartmerkmale der Partition nicht unterstützt, benachrichtigt der Hypervisor das Betriebssystem von einer anstehenden Migration und fordert die Durchführung von Schritten an, um die Partition migrierbar zu machen, SCHRITT 2012. In einem Beispiel benachrichtigt der Hypervisor das Betriebssystem, indem er einen Rückruf veranlasst. Zum Beispiel wird eine Rückrufschnittstelle (d.h. eine Schnittstelle, über welche der Hypervisor/die Supervisorsoftware eine nicht angeforderte Angabe senden können) verwendet, die zum Beispiel als eine Ausnahme realisiert wird.
-
Auf Grundlage der Anforderung führt das Betriebssystem Schritte durch, um die erweiterten Betriebsarteinrichtungen zu entfernen bzw. mindestens diejenigen zu entfernen, die durch das Zielsystem nicht unterstützt werden, SCHRITT 2014. So benachrichtigt das Betriebssystem zum Beispiel die Optimierungseinheit, und auf Grundlage der Benachrichtigung macht die Optimierungseinheit erzeugten Code mit den erweiterten Betriebsartmerkmalen ungültig. Bei einer Ausführungsform wird der gesamte von der Optimierungseinheit erzeugte Code eines Prozesses innerhalb der Partition ungültig gemacht, wenn der Code etwaige erweiterte Betriebsartmerkmale enthält. Bei einer weiteren Ausführungsform werden jedoch nur Codeteile (z.B. Coderegionen, Codesegmente, Codeseiten) ungültig gemacht, die erweiterte Betriebsartmerkmale enthalten.
-
Bei einer oder mehreren Ausführungsformen werden Anwendungen bis zu einem geeigneten Übergangspunkt weiter ausgeführt, an dem die Steuerung von erzeugtem Code, der erweiterte Betriebsartmerkmale verwendet, übergeben werden kann, wenn sich der Steuerungspunkt momentan in Code befindet, der durch die Optimierungseinheit erzeugt wurde und erweiterte Betriebsartmerkmale enthält. Bei einer Ausführungsform wird Code erzeugt, um die Ausführungsdauer bis zum Erreichen eines solchen Punkts zu begrenzen. An geeigneten Übergangspunkten führen in einem Beispiel Abfragesequenzen (optional ein einziger optimierter Befehl) eine Abfrage durch, ob eine Anforderung zum Ungültigmachen des momentanen Codefragments aussteht, und übergeben bei einer erfolgreichen Ermittlung die Steuerung an die Optimierungseinheit.
-
In einem weiteren Beispiel wird ein Zurücksetzen auf eine frühere Momentaufnahme oder einen früheren Prüfpunkt verwendet. Diese Momentaufnahme wird zum Beispiel unter Verwendung transaktionsorientierter Ausführungsmethoden erzeugt. Gemäß einer Ausführungsform sind alle optimierten Fragmente in eine Transaktion eingebettet, so dass ein Zurücksetzen auf den Anfang eines jeden Fragments durchgeführt werden kann, wobei der Anfang des Fragments einer Adresse in dem nicht modifizierten Code entspricht.
-
Wenn sämtlicher Code, der die Fähigkeiten der Zielmaschine übersteigt, gelöscht (d.h. von dem System entfernt) wurde, wird das Betriebssystem benachrichtigt. Wenn das Betriebssystem eine Benachrichtigung von allen Prozessen erhalten hat, wird der Hypervisor benachrichtigt. Daraufhin veranlasst der Hypervisor eine Migration. Wenn in einem Beispiel eine Optimierungseinheit nicht auf einen Betriebssystemrückruf zum Löschen reagiert, beendet das Betriebssystem die Anwendung.
-
Auf Grundlage des Rückrufs und des Löschens kann die Optimierungseinheit vor einer Migration neuen Code erzeugen, der mit dem Zielsystem kompatibel ist. Bei einer weiteren Ausführungsform wird der neue Code erst nach einer Migration erzeugt.
-
Obwohl in der hier enthaltenen Beschreibung der Hypervisor, das Betriebssystem und die Optimierungseinheit bestimmte Aufgaben durchführen, können die Aufgaben bei anderen Ausführungsformen durch andere Komponenten durchgeführt werden. So kann das Betriebssystem zum Beispiel die Aufgaben des Hypervisors durchführen, oder es können andere Supervisorkomponenten verwendet werden. Des Weiteren kann die Optimierungseinheit, sofern sie dazu berechtigt ist, eine oder mehrere der Aufgaben des Betriebssystems durchführen usw.
-
Weitere Einzelheiten zur Benachrichtigung der Optimierungseinheit und zu Schritten, die auf Grundlage der Benachrichtigung durchzuführen sind, werden mit Bezug auf 21 beschrieben. Bei einer Ausführungsform prüft das Betriebssystem (oder eine weitere Supervisorkomponente) zunächst, ob etwaige optimierte Prozesse etwaige erweiterte Betriebsartmerkmale verwenden, ABFRAGE 2100. Wenn zum Beispiel die eine oder mehreren Anwendungen einer Partition, die für eine Verwendung von erweitertem Code optimiert wurden, beendet wurden, verwenden momentan keine Prozesse erweiterte Betriebsartmerkmale. Wenn durch das Betriebssystem ermittelt wird, dass die optimierten Prozesse keine erweiterten Betriebsartmerkmale verwenden, benachrichtigt das Betriebssystem den Hypervisor, dass mit der Migration fortgefahren werden kann, SCHRITT 2102.
-
Wenn in ABFRAGE 2100 das Betriebssystem jedoch ermittelt, dass die optimierten Prozesse ein oder mehrere erweiterter Betriebsartmerkmale verwenden, benachrichtigt das Betriebssystem die Optimierungseinheit über die Migration und den Verlust der Fähigkeit, solche Merkmale zu verwenden, SCHRITT 2104. In einem Beispiel beinhaltet die Benachrichtigung eine Angabe der durch das Zielsystem unterstützten Architekturebene (ISA-Ebene) und/oder der jeweiligen erweiterten Betriebsartmerkmale, die unterstützt werden.
-
Auf Grundlage eines Empfangens dieser Benachrichtigung muss die Optimierungseinheit Maßnahmen ergreifen und z.B. den ungültig gemachten Code entfernen. So verfügt die Optimierungseinheit zum Beispiel über ein Zeitfenster, in dem sie diese Maßnahmen ergreifen und dem Betriebssystem eine Rückmeldung geben muss. In einem Beispiel wird das Zeitfenster durch einen Administrator gesetzt, z.B. auf Grundlage der Ursache für die Migration, beispielsweise eine Notsituation infolge eines Systemausfalls oder einer anderen Ursache, oder eine geplante Wartung. Es wird ermittelt, ob die Optimierungseinheit innerhalb des zulässigen Zeitrahmens die Maßnahmen ergriffen und eine Rückmeldung an das Betriebssystem gesendet hat, ABFRAGE 2106.
-
Wenn die Optimierungseinheit innerhalb des zulässigen Zeitrahmens einen Erfolg an das Betriebssystem zurückgemeldet hat, fährt die Verarbeitung mit dem Migrieren der Partition fort, SCHRITT 2108. Dies beinhaltet zum Beispiel zu überprüfen, ob weitere optimierte Prozesse ein oder mehrere erweiterte Betriebsartmerkmale verwenden, ABFRAGE 2110. Wenn es weitere Prozesse gibt, fährt die Verarbeitung mit SCHRITT 2104 fort. Andernfalls meldet das Betriebssystem dem Hypervisor, mit der Migration fortzufahren, SCHRITT 2112.
-
Wenn das Betriebssystem in ABFRAGE 2106 keine rechtzeitige Benachrichtigung von der Optimierungseinheit erhalten hat, wird zum Beispiel auf Grundlage eines Administrationsparameters des Weiteren ermittelt, ob die Migration abgebrochen oder die Anwendung beendet werden soll, ABFRAGE 2114.
-
Wenn ermittelt wird, dass die Migration abgebrochen werden soll, informiert das Betriebssystem den Hypervisor hiervon, SCHRITT 2116. Auf Grundlage einer Ermittlung, dass die Anwendung beendet werden soll, wird andernfalls die Anwendung beendet, SCHRITT 2118, und die Verarbeitung fährt mit SCHRITT 2110 fort.
-
Obwohl die obige Verarbeitung eine nacheinander erfolgende Verarbeitung der einzelnen Prozesse beschreibt, können die Prozesse bei anderen Ausführungsformen auch parallel verarbeitet werden.
-
Als Reaktion darauf, dass die Optimierungseinheit eine Benachrichtigung darüber erhält, dass optimierter Code ungültig gemacht werden soll, macht die Optimierungseinheit, wie oben erwähnt, den durch die Optimierungseinheit erzeugten Code ungültig. Dabei kann eine Reihe von Strategien für das Ungültigmachen zum Einsatz kommen. So wird zum Beispiel der gesamte von der Optimierungseinheit erzeugte Code eines Prozesses ungültig gemacht, wenn ein beliebiger Teil des Code unter Verwendung erweiterter Betriebsartmerkmale erzeugt wurde. Bei einer weiteren Ausführungsform werden lediglich Codeteile mit erweiterten Betriebsartmerkmalen ungültig gemacht. Weitere Einzelheiten zum Ungültigmachen von optimiertem Code durch eine Optimierungseinheit werden mit Bezug auf 22 beschrieben.
-
Mit Bezug auf 22 wird bei dieser Ausführungsform vorausgesetzt, dass es einen beliebigen Punkt in dem optimierten Code gibt, an dem der Übergang von dem optimierten Code zu dem nicht optimierten Code stattfinden soll. Bei einer Ausführungsform empfängt die Optimierungseinheit zunächst eine Benachrichtigung, den Code mit den erweiterten Betriebsartmerkmalen ungültig zu machen (z.B. zu verwerfen, zu entfernen, zu löschen), SCHRITT 2200. Daraufhin prüft die Optimierungseinheit, ob die Anwendung momentan nativen (nicht optimierten) Code oder optimierten Code ausführt, ABFRAGE 2202. Bei einer Ausführungsform wird dies auf Grundlage des Werts des Programmzählers ermittelt. Der Wert des Programmzählers gibt zum Beispiel an, ob die Anwendung in optimiertem oder nicht optimiertem Code ausgeführt wird.
-
Auf Grundlage eines Ermittelns, dass die Anwendung in nativem Code ausgeführt wird (d.h. sie wird in einer nicht optimierten Coderegion ausgeführt), können der optimierte Code oder zumindest die Teile, welche die nicht unterstützten erweiterten Betriebsartmerkmale beinhalten, entfernt werden, SCHRITT 2204. Wenn dies abgeschlossen ist, benachrichtigt die Optimierungseinheit das Betriebssystem, SCHRITT 2206, und die Anwendungsausführung wird fortgesetzt, SCHRITT 2208.
-
Wenn in ABFRAGE 2202 ermittelt wird, dass die Anwendung momentan in einem optimierten Code ausgeführt wird, wird des Weiteren geprüft, ob die Anwendung momentan Code ausführt, der erweiterte Betriebsartmerkmale enthält, die durch das Zielsystem nicht unterstützt werden, ABFRAGE 2210. Wenn die Anwendung momentan in Code ausgeführt wird, der nur erweiterte Betriebsartmerkmale verwendet, die durch das Zielsystem unterstützt werden, SCHRITT 2212, löscht die Optimierungseinheit den gesamten Code mit Merkmalen, welche die Zielebene übersteigen, SCHRITT 2214, und meldet dem Betriebssystem die erfolgreiche Durchführung, SCHRITT 2216. Die Anwendung wird weiter ausgeführt, SCHRITT 2218.
-
Wenn die Anwendung jedoch momentan Code ausführt, der erweiterte Betriebsartmerkmale benutzt, die auf dem Zielsystem nicht verfügbar sind, ABFRAGE 2210, wird an einem Umschaltpunkt in der Anwendung der native Zustand hergestellt, SCHRITT 2220. Dies kann zum Beispiel durch eine Zustandswiederherstellung oder eine Zustandsrücksetzung erfolgen. Bei einer Ausführungsform gemäß einer Zustandswiederherstellung ist die dynamische Optimierungseinheit in der Lage, den vollständigen Zustand entsprechend einer geeigneten, nicht optimierten Programmposition an definierten (und optional allen) Punkten des optimierten Codes wiederherzustellen. In einem Beispiel verwendet die Zustandswiederherstellung einen Ansatz, bei dem ein Zustand in ausreichendem Maße erhalten bleibt, um den Prozessorzustand neu zu berechnen, wenn ein unvorhergesehenes Ereignis wie z.B. ein Signal (synchrone Ausnahme) oder ein Wechsel von optimiertem Code zu nicht optimiertem Code einen andernfalls nicht verwendeten Prozessorzustand unter Umständen sichtbar macht. Methoden für die Zustandswiederherstellung sind bekannt, und ein Beispiel hierfür wird in der Publikation von M. Gschwind und E.R. Altman, „Precise Exception Semantics in Dynamic Optimization“, 2002 Symposium on Compiler Construction (CC 2002), Grenoble, Frankreich, April 2002, beschrieben, die hierin durch Bezugnahme in ihrer Gesamtheit mit aufgenommen wird.
-
Gemäß einer Ausführungsform, die auf einem Zurücksetzen von Zustandsaktualisierungen eines teilweise ausgeführten optimierten Codes beruht, wird der optimierte Code in eine Transaktion eingebettet, und wenn ein geeigneter Zustand mit Einhaltung der Operationsreihenfolge erforderlich ist und der nicht optimierte Programmzustand erzeugt werden soll, setzt ein Zurücksetzen aller Aktualisierungen des vorhandenen optimierten Codefragments eine Ausführung auf den Punkt zurück, an dem der Eintritt in das optimierte Codefragment erfolgte, wobei dies einem beispielhaften Zustand entspricht, in dem der Übergang zu optimiertem Code mit einer Verwendung einer erweiterten Betriebsart stattgefunden hat.
-
Des Weiteren wird ein Programmzähler auf den Umschaltpunkt in dem nativen ausführbaren Code gesetzt, d.h. auf den Wert der Befehlsadresse des nicht modifizierten Codes, der dem Zustand des erzeugten Zustands entspricht. Bei mindestens einer Ausführungsform fährt die Ausführung mit dem nicht modifizierten Code fort, wenn der Code, der erweiterte Betriebsartmerkmale verwendet und gelöscht werden soll, gelöscht wurde, SCHRITT 2222.
-
Zusätzlich wird der optimierte Code gelöscht, SCHRITT 2224. So werden zum Beispiel entweder der gesamte optimierte Code oder aber die Codeteile gelöscht, welche die nicht unterstützten externen Betriebsartmerkmale enthalten. Das Löschen kann auf verschiedene Arten erfolgen, zum Beispiel: durch Entfernen aller Verzweigungen von dem nativen Code zu dem optimierten Code; durch Ungültigmachen modifizierter nativer Codeseiten im Arbeitsspeicher, die Verzweigungen von dem nativen Code zu dem optimierten Code enthalten und ein bedarfsgesteuertes Laden von dem Binärcode (z.B. Erhalten eines Seitenfehlers) erzwingen; oder durch Entfernen von Codeseiten und Ersetzen durch Seiten mit Abfangbefehlen, indem in bestehende Seiten geschrieben wird oder indem Seitenumsetzungen so modifiziert werden, dass sie auf eine Seite mit Abfangbefehlen zeigen. Der Abschluss des Löschens wird dem Betriebssystem mitgeteilt, SCHRITT 2226, und die Anwendung wird ab dem neu berechneten Programmzähler weiter ausgeführt, SCHRITT 2228.
-
Eine weitere Ausführungsform von Logik zum Ungültigmachen von optimiertem Code durch eine Optimierungseinheit wird mit Bezug auf 23 beschrieben. Bei dieser Ausführungsform wird vorausgesetzt, dass es keinen beliebigen Punkt in dem optimierten Code gibt, an dem der Übergang von dem optimierten Code zu dem nicht optimierten Code stattfinden soll.
-
Mit Bezug auf 23 empfängt die Optimierungseinheit bei einer Ausführungsform zunächst eine Benachrichtigung, den Code mit den erweiterten Betriebsartmerkmalen ungültig zu machen (z.B. zu verwerfen, zu entfernen, zu löschen), SCHRITT 2300. Daraufhin prüft die Optimierungseinheit, ob die Anwendung momentan nativen Code oder optimierten Code ausführt, ABFRAGE 2302. Auf Grundlage eines Ermittelns, dass die Anwendung in nativem Modus ausgeführt wird (d.h. sie wird in einer nicht optimierten Coderegion ausgeführt), können der optimierte Code oder zumindest die Teile, welche die nicht unterstützten erweiterten Betriebsartmerkmale beinhalten, entfernt werden, SCHRITT 2304. Wenn dies abgeschlossen ist, benachrichtigt die Optimierungseinheit das Betriebssystem, SCHRITT 2306, und die Anwendungsausführung wird fortgesetzt, SCHRITT 2308.
-
Wenn zurück in ABFRAGE 2302 ermittelt wird, dass die Anwendung momentan in einem optimierten Code ausgeführt wird, wird des Weiteren geprüft, ob die Anwendung momentan Code ausführt, der erweiterte Betriebsartmerkmale enthält, die durch das Zielsystem nicht unterstützt werden, ABFRAGE 2310. Wenn die Anwendung momentan in Code ausgeführt wird, der nur erweiterte Betriebsartmerkmale verwendet, die durch das Zielsystem unterstützt werden, SCHRITT 2312, löscht die Optimierungseinheit den gesamten Code mit Merkmalen, welche die Zielebene übersteigen ,SCHRITT 2314, und meldet dem Betriebssystem die erfolgreiche Durchführung, SCHRITT 2316. Die Anwendung wird weiter ausgeführt, SCHRITT 2318.
-
Wenn die Anwendung jedoch momentan Code ausführt, der erweiterte Betriebsartmerkmale verwendet, die auf dem Zielsystem nicht verfügbar sind, ABFRAGE 2310, wartet bei dieser Ausführungsform die Verarbeitung auf einen geeigneten Prüfpunkt, SCHRITT 2320. Dabei sind zum Beispiel ein oder mehrere Prüfpunkte in den Code integriert, um einen Punkt bereitzustellen, an dem ein Übergang zu nicht optimiertem Code stattfinden kann. Wenn ein geeigneter Prüfpunkt erreicht wird, wird der native Zustand an einem Umschaltpunkt in der Anwendung wiederhergestellt, SCHRITT 2322.
-
Dies kann zum Beispiel durch eine Zustandswiederherstellung oder eine Zustandsrücksetzung erfolgen. Des Weiteren wird der Programmzähler auf den Umschaltpunkt in dem nativen ausführbaren Code gesetzt, SCHRITT 2324. Zusätzlich wird der optimierte Code gelöscht, SCHRITT 2326. So werden zum Beispiel entweder der gesamte optimierte Code oder aber die Codeteile gelöscht, welche die nicht unterstützten erweiterten Betriebsartmerkmale enthalten.
-
Der Abschluss des Löschens wird dem Betriebssystem mitgeteilt, SCHRITT 2328, und die Anwendung wird ab dem neu berechneten Programmzähler weiter ausgeführt, SCHRITT 2330.
-
Wie oben beschrieben, ist es von Vorteil, über geeignete Umschaltpunkte für einen Übergang zwischen optimiertem und nicht optimiertem Code zu verfügen. Beispiele für geeignete Umschaltpunkte sind in 24 dargestellt. In diesem Beispiel verfügt ein nicht optimierter Code 2400 über Verzweigungen zu einem optimierten Code 2402 und umgekehrt. Diese Verzweigungen stellen geeignete Umschaltpunkte bereit. Insbesondere gibt jeder in der Figur mit einer Adresse (a_) gekennzeichnete Befehl einen Umschaltpunkt an, der verwendet werden kann. In einem Beispiel kann die Optimierungseinheit an den angegebenen Punkten die Steuerung übernehmen, indem sie zum Beispiel Abfangpunkte bei Verzweigungen zu optimierten Gruppen setzt (z.B. a1, a3 und a5), indem sie Abfangpunkte bei Verzweigungen zwischen optimierten Gruppen setzt (z.B. a5) und indem sie Abfangpunkte bei btar (Verzweigung zum Zieladressregister) setzt (z.B. a2, a5, a6).
-
Um eine Verzweigung bei einer btar zu erzeugen, wird in einem Beispiel ein Befehlsabgleich verwendet, bei dem anhand eines Registers Befehlswörter verglichen werden. In einem weiteren Beispiel ist ein Steuerregister funktionsfähig mit Hardware verknüpft, das btar erkennt und ausführt. Auch andere Arten von Verzweigungen können verwendet werden, bei denen zum Beispiel eine neue Art von Verzweigung oder ein neues Verzweigungsfeld so gesetzt werden können, dass eine Abfangoperation ausgelöst oder ein Vergleich von Befehlswörtern durchgeführt wird.
-
Zudem können Prüfpunkte zu Schleifen mit langer Laufzeit hinzugefügt werden, um einen Punkt bereitzustellen, an dem die Optimierungseinheit die Steuerung übernehmen kann.
-
Bei Verwendung eines Prüfpunkts, mit dem an einem spezifischen Punkt die Steuerung übernommen werden soll, wird ein Prüfpunkt in den Code eingefügt, ein Prüfpunktbefehl prüft eine Markierung (z.B. in einem Steuerregister (wie MSR, PSW) oder im Arbeitsspeicher), und wenn die Markierung „Wahr“ ist, wird zu dem Prüfpunkt verzweigt. Beispiele für Prüfpunktbefehle sind: if (memory_flag) then goto checkpoint; LT (load and test) r2, mem; BZ (branch zero) checkpoint_found.
-
In den obigen Ausführungen wird eine Partitionsmobilitätseinrichtung (z.B. eine Live-Partitionsmobilitätseinrichtung) beschrieben, mit der eine Partition selbst dann von einem Host zu einem weiteren Host verschoben werden kann, wenn die Partition erweiterte Betriebsartmerkmale beinhaltet. Bei einer Ausführungsform wird das Zielsystem benachrichtigt, dass eine Partition mit erweiterten Betriebsarteinrichtungen zu dem Zielsystem verschoben wird. In einem Beispiel gibt das Quellsystem (das System, von dem die Partition verschoben wird) an, dass die Partition erweiterte Einrichtungen verwendet, und das Zielsystem empfängt eine Liste der erweiterten Einrichtungen. Wenn Seiten mit zusätzlichen Angaben zu Berechtigungen/Einrichtungen gekennzeichnet sind, werden diese Angaben bei einer Ausführungsform des Weiteren dem Zielsystem bereitgestellt. Auf dem Zielsystem werden Angaben für jede Seite den entsprechenden Angaben auf dem Zielsystem zugeordnet und zum Beispiel in zugehörigen Seitentabelleneinträgen (oder anderen Adressumsetzungsstrukturen) gespeichert.
-
Gemäß einem Aspekt unterstützt eine Supervisorkomponente wie z.B. ein Hypervisor eine Live-Partitionsmobilität. Eine Optimierungseinheit aktiviert erweiterte Betriebsartmerkmale, registriert die Verwendung der erweiterten Betriebsartmerkmale bei der Supervisorkomponente und empfängt Rückrufe, wenn eine Partitionsmigration ansteht.
-
Bei einer Ausführungsform löscht die Optimierungseinheit auf Grundlage des Rückrufs einen optimierten erzeugten Code (d.h. sie macht ihn ungültig). Das Löschen beinhaltet zum Beispiel, der Anwendung zu gestatten, die Ausführung bis zu einem geeigneten Übergangspunkt zu nicht optimiertem Code fortzusetzen.
-
Bei einer Ausführungsform wird der durch die Optimierungseinheit erzeugte Code so erzeugt, dass geeignete Übergangspunkte eingefügt und in dem erzeugten Code kenntlich gemacht werden. Des Weiteren wird bei einer Ausführungsform ein Anzeigerbefehl so konfiguriert, dass er eine Abfrage nach einem Rückrufereignis durchführt und die Steuerung an die Optimierungseinheit übergibt. Bei einer weiteren Ausführungseinheit beinhaltet das Löschen ein Zurücksetzen auf einen Prüfpunkt. Bei einer Ausführungsform wird der Code durch die Optimierungseinheit so erzeugt, dass (z.B. unter Verwendung von Transaktionen) geeignete Rücksetzpunkte erzeugt werden.
-
Bei einer weiteren Ausführungsform wird ermittelt, dass eine Live-Partitionsmigration durchgeführt werden soll, eine Zielmaschine wird ermittelt, die Ebene der durch die Zielmaschine unterstützten erweiterten Betriebsarten wird ermittelt, und auf Grundlage der von der Zielmaschine unterstützten verbesserten Merkmale wird ermittelt, ob der dynamisch erzeugte Code auf die Zielmaschine verschoben werden kann.
-
Wenn die Ermittlung negativ ausfällt, ist der von der Optimierungseinheit erzeugte Code in einem Beispiel nicht verfügbar, wodurch ein Löschen des Code-Cachespeichers veranlasst wird. In einem Beispiel erfolgt das Löschen unter Verwendung eines Rückrufs an die Optimierungskomponente. Bei einer weiteren Ausführungsform wird das Löschen in der Quellmaschine veranlasst, und die Codeerzeugung wird entweder auf eine gemeinsame Zielebene beschränkt und/oder so lange unterdrückt, bis die Migration abgeschlossen ist.
-
Mit Bezug auf 25 enthält in einem Beispiel ein Computerprogrammprodukt 2500 ein oder mehrere nicht flüchtige, computerlesbare Speichermedien 2502, um darauf computerlesbare Programmcodemittel, Logik und/oder Befehle 2504 zu speichern, um eine oder mehrere Ausführungsformen bereitzustellen und zu ermöglichen.
-
Die vorliegende Erfindung kann ein System, ein Verfahren und/oder ein Computerprogrammprodukt sein. Das Computerprogrammprodukt kann ein computerlesbares Speichermedium (oder -medien) mit darauf enthaltenen computerlesbaren Programmbefehlen beinhalten, um einen Prozessor zu veranlassen, Aspekte der vorliegenden Erfindung durchzuführen.
-
Das computerlesbare Speichermedium kann eine gegenständliche Einheit sein, die Befehle zur Verwendung durch eine Befehlsausführungseinheit beibehalten und speichern kann. Das computerlesbare Speichermedium kann z.B. eine elektronische Speichereinheit, eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiterspeichereinheit oder eine beliebige geeignete Kombination der vorgenannten Einheiten sein, ohne jedoch darauf beschränkt zu sein. Eine nicht vollständige Liste konkreterer Beispiele des computerlesbaren Speichermediums beinhaltet Folgendes: eine tragbare Computerdiskette, eine Festplatte, einen Direktzugriffsspeicher (RAM), einen Festwertspeicher (ROM), einen löschbaren, programmierbaren Nur-Lese-Speicher (EPROM- oder Flash-Speicher), einen statischen Direktzugriffsspeicher (SRAM), einen tragbaren CD-ROM, eine DVD, einen Speicher-Stick, eine Diskette, eine mechanisch codierte Einheit wie z.B. Lochkarten oder erhabene Strukturen in einer Rille mit darauf aufgezeichneten Befehlen sowie eine beliebige geeignete Kombination der vorgenannten Elemente. Bei einem computerlesbaren Speichermedium, wie es hier verwendet wird, ist nicht davon auszugehen, dass es sich per se um flüchtige Signale wie z.B. Funkwellen oder andere sich frei ausbreitende elektromagnetische Wellen, elektromagnetische Wellen, die sich durch einen Hohlleiter oder ein andere Übertragungsmedien ausbreiten (z.B. Lichtimpulse, die ein Lichtwellenleiterkabel durchlaufen), oder elektrische Signalen, die über eine Leitung übertragen werden, handelt.
-
Hier beschriebene computerlesbare Programmbefehle können über ein Netzwerk wie beispielsweise das Internet, ein lokales Netz (Local Area Network, LAN), ein Weitverkehrsnetz (Wide Area Network, WAN) und/oder ein drahtloses Netzwerk von einem computerlesbaren Speichermedium auf entsprechende Datenverarbeitungs-/Verarbeitungs-Einheiten oder auf einen externen Computer oder eine externe Speichereinheit heruntergeladen werden. Das Netzwerk kann Kupferübertragungskabel, Lichtwellenleiter, eine drahtlose Übertragung, Router, Firewalls, Switches, Gateway-Computer und/oder Edge-Server aufweisen. Eine Netzwerkadapterkarte oder Netzwerkschnittstelle in jeder Datenverarbeitungs-/Verarbeitungs-Einheit empfängt computerlesbare Programmbefehle von dem Netzwerk und leitet die computerlesbaren Programmbefehle zur Speicherung auf einem computerlesbaren Speichermedium innerhalb der betreffenden Datenverarbeitungs-/Verarbeitungs-Einheit weiter.
-
Bei computerlesbaren Programmbefehlen zum Durchführen von Operationen der vorliegenden Erfindung kann es sich um Assembler-Befehle, ISA-Befehle (Instruction-Set-Architecture), Maschinenbefehle, maschinenabhängige Befehle, Mikrocode, Firmware-Befehle, einen Zustand festlegende Daten oder aber entweder um Quellcode oder um Objektcode handeln, der in einer beliebigen Kombination von einer oder mehreren Programmiersprachen wie z.B. einer objektorientierten Programmiersprache wie Smalltalk, C++ oder dergleichen, sowie in herkömmlichen prozeduralen Programmiersprachen wie z.B. der Programmiersprache „C“ oder ähnlichen Programmiersprachen geschrieben ist. Die computerlesbaren Programmbefehle 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 aber vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. Im letztgenannten Szenario kann der entfernt angeordnete Computer über eine beliebige Art von Netzwerk, unter anderem ein LAN oder ein WAN, mit dem Computer des Benutzers verbunden sein, oder die Verbindung kann mit einem externen Computer (z.B. über das Internet unter Verwendung eines Internet-Dienstanbieters) hergestellt werden. Bei manchen Ausführungsformen kann ein elektronischer Schaltkreis wie z.B. ein programmierbarer Logikschaltkreis, Field-Programmable Gate Arrays (FPGAs) oder Programmable Logic Arrays (PLAs) die computerlesbaren Programmbefehle ausführen, indem er Zustandsdaten der computerlesbaren Programmbefehle verwendet, um die elektronische Schaltung zu personalisieren und Aspekte der vorliegenden Erfindung durchzuführen.
-
Aspekte der vorliegenden Erfindung werden hier unter Bezugnahme auf Darstellungen von Ablaufplänen und/oder Blockschaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Dabei dürfte klar sein, dass jeder Block der Ablaufplan-Darstellungen und/oder Blockschaubilder sowie Kombinationen von Blöcken in den Ablaufplan-Darstellungen und/oder Blockschaubildern durch computerlesbare Programmbefehle realisiert werden kann/können.
-
Diese computerlesbaren Programmbefehle können einem Prozessor eines Universalcomputers, Spezialcomputers oder einer anderweitigen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, so dass die Befehle, die über den Prozessor des Computers oder der anderweitigen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, ein Mittel erzeugen, mit dem die Funktionen/Handlungen realisiert werden können, die in dem Block bzw. den Blöcken des Ablaufplans und/oder des Blockschaubilds angegeben werden. Diese computerlesbaren Programmbefehle können auch auf einem computerlesbaren Speichermedium gespeichert sein, das einen Computer, eine programmierbare Datenverarbeitungsvorrichtung und/oder andere Einheiten anweisen kann, auf eine bestimmte Art und Weise zu funktionieren, so dass das computerlesbare Speichermedium mit darauf gespeicherten Befehlen einen Herstellungsartikel aufweist, der Befehle enthält, welche Aspekte der in dem Block bzw. den Blöcken des Ablaufplans und/oder des Blockschaubilds angegebenen Funktion/Handlung realisieren.
-
Die computerlesbaren Programmbefehle können zudem in einen Computer, eine anderweitige programmierbare Datenverarbeitungsvorrichtung oder eine andere Einheit geladen werden, um zu veranlassen, dass eine Reihe von Funktionsschritten auf dem Computer, der anderweitigen programmierbaren Datenvorrichtung oder der anderen Einheit ausgeführt wird, so dass die Befehle, die auf dem Computer, der anderweitigen Datenverarbeitungsvorrichtung oder der anderen Einheit ausgeführt werden, die in dem Block bzw. den Blöcken des Ablaufplans und/oder des Blockschaubilds angegebenen Funktionen/Handlungen realisieren.
-
Die Ablaufpläne und die Blockschaubilder in den Figuren stellen die Architektur, Funktionalität und den Betrieb möglicher Realisierungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung bereit. Somit kann jeder Block der Ablaufpläne oder Blockschaubilder ein Modul, Segment oder einen Teil von Befehlen darstellen, das/der einen oder mehrere ausführbare Befehle aufweist, mit denen sich die eine oder mehreren angegebenen logischen Funktionen realisieren lassen. Bei manchen alternativen Ausführungsformen können die in dem Block erwähnten Funktionen in einer anderen Reihenfolge als der in den Figuren genannten auftreten. So können zwei aufeinanderfolgend dargestellte Blöcke tatsächlich im Wesentlichen gleichzeitig stattfinden, oder die Blöcke können mitunter in umgekehrter Reihenfolge ausgeführt werden, wobei dies abhängig von der betreffenden Funktionalität ist. Zu erwähnen ist ebenfalls, dass jeder Block der Blockschaubilder und/oder der Ablaufplan-Darstellungen sowie Kombinationen von Blöcken in den Blockschaubildern und/oder Ablaufplan-Darstellungen durch Spezialsysteme auf Hardwaregrundlage, welche die angegebenen Funktionen oder Handlungen oder Kombinationen hiervon ausführen, oder durch Kombinationen von Spezial-Hardware- und Computerbefehlen realisiert bzw. durchgeführt werden kann/können.
-
Zusätzlich zu den obigen Ausführungen können ein oder mehrere Aspekte von einem Dienstanbieter, der eine Verwaltung von Kundenumgebungen anbietet, bereitgestellt, angeboten, implementiert, verwaltet, gewartet werden usw. So kann der Dienstanbieter zum Beispiel Computercode und/oder eine Computerinfrastruktur erzeugen, vorhalten, unterstützen usw., die einen oder mehrere Aspekte für einen oder mehrere Kunden durchführt. Der Dienstanbieter kann wiederum, beispielsweise im Rahmen eines Abonnementund/oder Gebührenvertrags, eine Zahlung von dem Kunden erhalten. Zusätzlich oder alternativ hierzu kann der Dienstanbieter eine Zahlung aus dem Verkauf von Werbeinhalt an einen oder mehrere Dritte erhalten.
-
Gemäß einem Aspekt kann eine Anwendung implementiert werden, um eine oder mehrere Ausführungsformen durchzuführen. So kann in einem Beispiel das Implementieren einer Anwendung ein Bereitstellen von Computerinfrastruktur aufweisen, die imstande ist, eine oder mehrere Ausführungsformen durchzuführen.
-
Gemäß einem weiteren Aspekt kann eine Datenverarbeitungsinfrastruktur implementiert werden, welche ein Integrieren eines computerlesbaren Codes in ein Datenverarbeitungssystem aufweist, bei dem der Code in Verbindung mit dem Datenverarbeitungssystem in der Lage ist, eine oder mehrere Ausführungsformen durchzuführen.
-
Gemäß noch einem weiteren Aspekt kann ein Prozess zum Integrieren einer Datenverarbeitungsinfrastruktur bereitgestellt werden, der ein Integrieren von computerlesbarem Code in ein Computersystem aufweist. Das Computersystem weist ein computerlesbares Medium auf, wobei das Computermedium eine oder mehrere Ausführungsformen aufweist. In Verbindung mit dem Computersystem ist der Code in der Lage, eine oder mehrere Ausführungsformen durchzuführen.
-
Obwohl oben verschiedene Ausführungsformen beschrieben werden, handelt es sich dabei lediglich um Beispiele. So können zum Beispiel Datenverarbeitungsumgebungen anderer Architekturen verwendet werden, um eine oder mehrere Ausführungsformen zu beinhalten und zu verwenden. Des Weiteren können andere Befehle, Befehlsformate, Befehlsfelder und/oder Befehlswerte verwendet werden. Des Weiteren können andere Arten von Adressumsetzung aus einem oder mehreren Aspekten Nutzen ziehen. Es sind viele Abwandlungen möglich.
-
Des Weiteren können andere Arten von Datenverarbeitungsumgebungen Nutzen ziehen und verwendet werden. So kann ein zum Speichern und/oder Ausführen von Programmcode geeignetes Datenverarbeitungssystem verwendet werden, das mindestens zwei Prozessoren enthält, die direkt oder indirekt über einen Systembus mit Arbeitsspeicherelementen verbunden sind. Die Arbeitsspeicherelemente beinhalten z.B. einen lokalen Arbeitsspeicher, der während der tatsächlichen Ausführung des Programmcodes verwendet wird, einen Massenspeicher und einen Cache-Arbeitsspeicher, der eine vorübergehende Speicherung von mindestens einem Teil des Programmcodes bereitstellt, um die Häufigkeit zu verringern, mit welcher Code während der Ausführung aus dem Massenspeicher abgerufen werden muss.
-
Eingabe/Ausgabe- oder E/A-Einheiten (einschließlich, ohne auf diese beschränkt zu sein, Tastaturen, Anzeigen, Zeigeeinheiten, Einheiten mit Direktzugriffsspeicher (Direct Access Storage Devices, DASDs), Band, CDs, DVDs, USB-Sticks und andere Arbeitsspeichermedien usw.) können entweder direkt oder über dazwischen geschaltete E/A-Steuereinheiten mit dem System verbunden sein. Außerdem können Netzwerkadapter mit dem System verbunden sein, um die Verbindung des Datenverarbeitungssystems mit anderen Datenverarbeitungssystemen oder mit entfernt angeordneten Druckern oder Speichereinheiten über dazwischen geschaltete private oder öffentliche Netzwerke zu ermöglichen. Modems, Kabelmodems und Ethernet-Karten sind nur einige der verfügbaren Arten von Netzwerkadaptern.
-
Mit Bezug auf 26 werden repräsentative Komponenten eines Host-Computersystems 5000 zum Realisieren einer oder mehrerer Ausführungsformen gezeigt. Der repräsentative Host-Computer 5000 weist eine oder mehrere CPUs 5001 auf, die mit einem Computerarbeitsspeicher (d.h. einem Zentralspeicher) 5002 Daten austauschen, sowie E/A-Schnittstellen zu Speichermedieneinheiten 5011 und Netzwerke 5010 zum Austauschen von Daten mit anderen Computern oder SANs und dergleichen. Die CPU 5001 ist mit einer Architektur konform, die einen architekturdefinierten Befehlssatz und eine architekturdefinierte Funktionalität aufweist. Die CPU 5001 kann eine Zugriffsregisterumsetzung (Access Register Translation, ART) 5012 aufweisen, die einen ART-Umsetzpuffer (ALB) 5013 beinhaltet, um für eine dynamische Adressumsetzung (Dynamic Address Translation, DAT) 5003 zu verwendenden Adressraum auszuwählen, um Programmadressen (virtuelle Adressen) in reale Adressen eines Arbeitsspeichers umzusetzen. Eine DAT beinhaltet üblicherweise einen Adressumsetzpuffer (Translation Lookaside Buffer, TLB) 5007 zum Zwischenspeichern von Umsetzungen, so dass spätere Zugriffe auf den Block des Computerarbeitsspeichers 5002 keine Verzögerung der Adressumsetzung benötigen. Üblicherweise wird zwischen dem Computerarbeitsspeicher 5002 und dem Prozessor 5001 ein Cachespeicher 5009 verwendet. Der Cachespeicher 5009 kann hierarchisch mit einem großen Cachespeicher, der mehreren CPUs zur Verfügung steht, sowie kleineren, schnelleren (auf einer unteren Ebene befindlichen) Cachespeichern zwischen dem großen Cachespeicher und jeder CPU aufgebaut sein. Bei manchen Realisierungen sind die Cachespeicher der unteren Ebene aufgeteilt, um separate Cachespeicher der unteren Ebene zum Abrufen von Befehlen und für Datenzugriffe bereitzustellen.
-
Bei einer Ausführungsform wird ein Befehl durch eine Befehlsabrufeinheit 5004 über einen Cachespeicher 5009 aus dem Arbeitsspeicher 5002 abgerufen. Der Befehl wird in einer Befehlsdecodierungseinheit 5006 decodiert und (bei einigen Ausführungsformen mit anderen Befehlen) einer oder mehreren Befehlsausführungseinheiten 5008 zugeteilt. Üblicherweise werden mehrere Ausführungseinheiten 5008 verwendet, zum Beispiel eine arithmetische Ausführungseinheit, eine Gleitkomma-Ausführungseinheit und eine Verzweigungsbefehl-Ausführungseinheit. Der Befehl wird durch die Ausführungseinheit ausgeführt, wobei nach Bedarf auf Operanden von durch den Befehl spezifizierten Registern oder Arbeitsspeicher zugegriffen wird. Wenn vom Arbeitsspeicher 5002 auf einen Operanden zugegriffen (dieser geladen oder gespeichert) werden soll, verarbeitet üblicherweise eine Lade-/Speichereinheit 5005 den Zugriff unter Steuerung durch den ausgeführten Befehl. Befehle können in Hardwareschaltungen oder in internem Mikrocode (Firmware) oder durch eine Kombination hiervon ausgeführt werden.
-
Wie erwähnt, beinhaltet ein Computersystem Informationen in einem lokalen (oder Haupt-)Speicher sowie eine Adressierungs-, Schutz- und eine Referenzierungs- sowie Änderungsaufzeichnung. Einige Aspekte der Adressierung beinhalten das Format von Adressen, das Konzept von Adressräumen, die verschiedenen Arten von Adressen und die Art und Weise, wie eine Adressart in eine weitere Adressart umgesetzt wird. Ein Teil des Hauptspeichers enthält dauerhaft zugewiesene Speicherpositionen. Der Hauptspeicher stellt dem System eine direkt adressierbare Schnellzugriffsspeicherung von Daten bereit. Daten wie auch Programme müssen (von Eingabeeinheiten) in den Hauptspeicher geladen werden, bevor sie verarbeitet werden können.
-
Der Hauptspeicher kann einen oder mehrere kleinere Pufferspeicher mit schnellerem Zugriff beinhalten, die mitunter als Cachespeicher bezeichnet werden. Ein Cachespeicher ist üblicherweise physisch einer CPU oder einem E/A-Prozessor zugehörig. Mit Ausnahme der Leistungsfähigkeit sind die Auswirkungen des physischen Aufbaus und der Verwendung von unterschiedlichen Speichermedien durch das Programm in der Regel nicht wahrnehmbar.
-
Für Befehle und für Datenoperanden können separate Cachespeicher vorgehalten werden. Informationen in einem Cachespeicher werden in zusammenhängenden Bytes an einer integralen Grenze vorgehalten, die als ein Cacheblock oder eine Cachezeile (kurz: Zeile) bezeichnet wird. Ein Modell kann einen „EXTRACT CACHE ATTRIBUTE“-Befehl bereitstellen, der wiederum die Größe einer Cachezeile in Bytes zurückgibt. Bei einer anderen Ausführungsform können diese Informationen von Firmware erhalten werden, z.B. gemäß Schnittstellen, die durch die „Power Architecture Platform Reference“-Spezifikation angegeben werden´. Ein Modell kann auch einen oder mehrere dcbt-Befehle (data cache block touch), „PREFETCH DATA“ und „PREFETCH DATA RELATIVE LONG“-Befehle bereitstellen, die das Vorabladen von Speicher in den Daten- oder Befehlscachespeicher oder das Freigeben von Daten aus dem Cachespeicher bewirken.
-
Dabei wird Speicherinhalt als eine lange horizontale Abfolge von Bits betrachtet. Bei den meisten Operationen finden Speicherzugriffe von links nach rechts statt. Die Bitfolge ist in Einheiten von acht Bits unterteilt. Eine Acht-Bit-Einheit wird als Byte bezeichnet, wobei es sich um den Grundbaustein aller Informationsformate handelt. Jede Byte-Position im Speicher ist durch eine eindeutige, nicht negative Ganzzahl kenntlich gemacht, bei der es sich um die Adresse der Byte-Position oder, einfach ausgedrückt, um die Byte-Adresse handelt. Benachbarte Byte-Positionen haben aufeinanderfolgende Adressen, beginnend links bei 0 und von links nach rechts fortschreitend. Adressen sind vorzeichenlose binäre Ganzzahlen und bestehen aus 24, 31 oder 64 Bits.
-
Informationen werden jeweils in Form eines Bytes oder einer Gruppe von Bytes zwischen dem Speicher und einer CPU oder einem Kanalteilsystem übertragen. Sofern nicht anderweitig angegeben, wird zum Beispiel bei der POWER ISA-Architektur und der z/Architecture eine Gruppe von Bytes im Speicher durch das äußerst linke Byte der Gruppe adressiert. Die Anzahl von Bytes in der Gruppe wird entweder implizit angenommen oder explizit durch die Operation festgelegt, die ausgeführt werden soll. Bei Verwendung in einer CPU-Operation wird eine Gruppe von Bytes als ein Feld bezeichnet. Innerhalb jeder Gruppe von Bytes werden zum Beispiel bei der POWER ISA-Architektur und der z/Architecture die Bits von links nach rechts nummeriert. Bei der POWER ISA-Architektur und der z/Architecture werden die äußerst linken Bits gelegentlich als die „höchstwertigen Bits“ und die äußerst rechten Bits als die „niedrigstwertigen“ Bits bezeichnet. Bei Bitnummern handelt es sich jedoch nicht um Speicheradressen. Nur Bytes können adressiert werden. Um auf einzelne Bits eines Bytes im Speicher einzuwirken, wird auf das gesamte Byte zugegriffen.
-
Die Bits in einem Byte sind (z. B. bei der z/Architecture) von links nach rechts von 0 bis 7 nummeriert. Die Bits in einer Adresse können für 24-Bit-Adressen von 8 bis 31 oder von 40 bis 63 oder für 31-Bit-Adressen von 1 bis 31 oder von 33 bis 63 nummeriert sein; für 64-Bit-Adressen sind sie von 0 bis 63 nummeriert. In einem Beispiel beziehen sich die Bits 8 bis 31 und 1 bis 31 auf Adressen, die sich an einer Position (z.B. einem Register) mit einer Breite von 32 Bits befinden, während die Bits 40 bis 63 und 33 bis 63 für Adressen an einer 64 Bit breiten Position befinden. Innerhalb jedes anderen Formats mit einer festen Länge aus mehreren Bytes werden die Bits, die das Format bilden, beginnend mit 0 aufeinanderfolgend nummeriert. Zum Zwecke der Fehlererkennung und vorzugsweise der Korrektur können mit jedem Byte oder mit einer Gruppe von Bytes ein oder mehrere Prüfbits übertragen werden. Derartige Prüfbits werden durch die Maschine automatisch erzeugt und können durch das Programm nicht direkt gesteuert werden. Speicherkapazitäten werden durch die Anzahl von Bytes ausgedrückt. Wenn die Länge eines Speicheroperandenfelds durch den Operationscode eines Befehls implizit festgelegt ist, bezeichnet man es als Feld mit fester Länge, wobei diese ein, zwei, vier, acht oder 16 Byte betragen kann. Für manche Befehle können größere Felder implizit festgelegt sein. Wenn die Länge eines Speicheroperandenfelds nicht impliziert, sondern explizit festgelegt ist, bezeichnet man es als ein Feld mit variabler Länge. Die Länge von Operanden mit variabler Länge kann in Stufen von einem Byte variieren (bei manchen Befehlen auch in Vielfachen von zwei Bytes oder anderen Vielfachen). Wenn Informationen im Speicher abgelegt werden, werden nur die Inhalte von den Byte-Positionen ersetzt, die in dem bezeichneten Feld enthalten sind, selbst wenn die Breite des physischen Pfads zum Speicher größer als die Länge des Felds ist, das gespeichert wird.
-
Bestimmte Informationseinheiten müssen sich an einer integralen Grenze im Speicher befinden. Eine Grenze wird für eine Informationseinheit als integral bezeichnet, wenn ihre Speicheradresse ein Vielfaches der Länge der Einheit in Bytes beträgt. Felder von 2, 4, 8, 16 und 32 Bytes an einer integralen Grenze erhalten spezielle Bezeichnungen. Ein Halbwort ist eine Gruppe von zwei aufeinanderfolgenden Bytes an einer Zwei-Byte-Grenze und bildet den Grundbaustein von Befehlen. Bei einem Wort handelt es sich um eine Gruppe von vier aufeinanderfolgenden Bytes an einer Vier-Byte-Grenze. Bei einem Doppelwort handelt es sich um eine Gruppe von acht aufeinanderfolgenden Bytes an einer Acht-Byte-Grenze. Bei einem Vierfachwort handelt es sich um eine Gruppe von 16 aufeinanderfolgenden Bytes an einer 16-Byte-Grenze. Bei einem Achtfachwort handelt es sich um eine Gruppe von 32 aufeinanderfolgenden Bytes an einer 32-Byte-Grenze. Wenn ein Speicher Halbwörter, Wörter, Doppelwörter, Vierfachwörter und Achtfachwörter anspricht, enthält die Binärdarstellung der Adresse jeweils ein, zwei, drei, vier bzw. fünf äußerst rechte Null-Bits. Befehle müssen sich an integralen Zwei-Byte-Grenzen befinden. Für die Speicheroperanden der meisten Befehle gelten keine Anforderungen in Bezug auf die Grenzausrichtung.
-
Bei Einheiten, die für Befehle und Datenoperanden separate Cachespeicher realisieren, kann eine beträchtliche Verzögerung auftreten, wenn das Programm in eine Cachezeile einspeichert, aus der danach Befehle abgerufen werden, unabhängig davon, ob der Speichervorgang die danach abgerufenen Befehle verändert.
-
In einem Beispiel kann die Ausführungsform durch Software realisiert sein (die gelegentlich als lizensierter interner Code, Firmware, Mikrocode, Millicode, Picocode oder dergleichen bezeichnet wird, wobei jede Bezeichnung mit einer oder mehreren Ausführungsformen in Einklang stünde). Mit Bezug auf 26 kann der Prozessor 5001 des Systems 5050 von Langzeit-Speichermedieneinheiten 5011 wie z.B. einem CD-ROM-Laufwerk, Bandlaufwerk oder Festplattenlaufwerk auf einen Softwareprogrammcode zugreifen, der einen oder mehrere Aspekte verkörpert. Der Softwareprogrammcode kann auf einem beliebigen aus einer Vielfalt von bekannten Medien enthalten sein, die mit einem Datenverarbeitungssystem verwendet werden, z.B. einer Diskette, einem Festplattenlaufwerk oder einem CD-ROM. Der Code kann auf derartigen Medien verteilt sein, oder er kann aus dem Computerarbeitsspeicher 5002 oder einem Speicher eines Computersystems über ein Netzwerk 5010 zu anderen Computersystemen an Benutzer verteilt werden, um von Benutzern solcher anderen Systeme verwendet zu werden.
-
Der Softwareprogrammcode beinhaltet ein Betriebssystem, das die Funktion und die Interaktion der verschiedenen Computerkomponenten und eines oder mehrerer Anwendungsprogramme steuert. Programmcode wird normalerweise aus der Speichermedieneinheit 5011 in den verhältnismäßig schnelleren Computerspeicher 5002 umgespeichert, wo er zur Verarbeitung durch den Prozessor 5001 zur Verfügung steht. Die Methoden und Verfahren zum Bereitstellen von Softwareprogrammcode in Arbeitsspeicher, auf physischen Medien und/oder das Verteilen von Softwarecode über Netzwerke sind bekannt und werden hier nicht weiter erläutert. Programmcode, der auf einem physischen Medium wie z.B., ohne darauf beschränkt zu sein, elektronischen Speichermodulen (RAM), Flash-Speicher, Compact Discs (CDs), DVDs, Magnetband und dergleichen erzeugt und gespeichert wird, wird häufig als ein „Computerprogrammprodukt“ bezeichnet. Das Computerprogrammprodukt-Medium ist üblicherweise durch eine Verarbeitungsschaltung vorzugsweise in einem Computersystem zur Ausführung durch die Verarbeitungsschaltung lesbar.
-
27 veranschaulicht ein repräsentatives Arbeitsstation- oder Server-Hardwaresystem, in dem eine oder mehrere Ausführungsformen umgesetzt sein können. Das System 5020 aus 27 weist ein repräsentatives Basis-Computersystem 5021 wie z.B. einen Personal Computer, eine Arbeitsstation oder einen Server mit optionalen peripheren Einheiten auf. Das Basis-Computersystem 5021 enthält einen oder mehrere Prozessoren 5026 und einen Bus, um den/die Prozessor/en 5026 mit den anderen Komponenten des Systems 5021 gemäß bekannten Techniken zu verbinden und eine Datenübertragung zu ermöglichen. Der Bus verbindet den Prozessor 5026 mit dem Arbeitsspeicher 5025 und dem Langzeitspeicher 5027, der beispielsweise eine Festplatte (z.B. einen Speicher mit einem magnetischen Medium, eine CD, eine DVD und einen Flash-Speicher) oder ein Bandlaufwerk beinhalten kann. Das System 5021 kann außerdem einen Benutzerschnittstellenadapter beinhalten, der den Mikroprozessor 5026 über den Bus mit einer oder mehreren Schnittstelleneinheiten wie z.B. einer Tastatur 5024, einer Maus 5023, einem Drucker/Scanner 5030 und/oder anderen Schnittstelleneinheiten verbindet, bei denen es sich um jede beliebige Schnittstelleneinheit wie z.B. um einen berührungsempfindlichen Bildschirm, einen Digitaleingabeblock usw. handeln kann. Der Bus verbindet zudem eine Anzeigeeinheit 5022 wie z.B. einen LCD-Bildschirm oder -Monitor über einen Anzeigeadapter mit dem Mikroprozessor 5026.
-
Das System 5021 kann über einen Netzwerkadapter, der mit einem Netzwerk 5029 Daten austauschen kann, mit anderen Computern oder Netzwerken von Computern Daten austauschen. Beispiele für Netzwerkadapter sind Datenübertragungskanäle, Token-Ring-Netzwerke oder Modems. Alternativ kann das System 5021 unter Verwendung einer drahtlosen Schnittstelle wie z.B. einer CDPD-Karte (Cellular Digital Packet Data) Daten austauschen. Das System 5021 kann anderen derartigen Computern in einem LAN oder einem WAN zugehörig sein, oder das System 5021 kann ein Client in einer Client/Server-Anordnung mit einem anderen Computer usw. sein. All diese Konfigurationen sowie die entsprechende Hardware und Software für die Datenübertragung sind nach dem Stand der Technik bekannt.
-
28 veranschaulicht ein Datenverarbeitungsnetzwerk 5040, in dem eine oder mehrere Ausführungsformen umgesetzt sein können. Das Datenverarbeitungsnetzwerk 5040 kann eine Mehrzahl von einzelnen Netzwerken wie z.B. ein drahtloses Netzwerk und ein drahtgebundenes Netzwerk beinhalten, die jeweils eine Mehrzahl von einzelnen Arbeitsplatzrechnern 5041, 5042, 5043, 5044 beinhalten können. Wie der Fachmann weiß, können zusätzlich ein oder mehrere LANs enthalten sein, wobei ein LAN eine Mehrzahl von intelligenten Arbeitsplatzrechnern aufweisen kann, die mit einem Host-Prozessor verbunden sind.
-
Weiter mit Bezug auf 28 können die Netzwerke auch Mainframe-Computer oder Server aufweisen, z.B. einen Gateway-Computer (Client-Server 5046) oder Anwendungsserver (entfernt angeordneter Server 5048, der auf ein Daten-Repository zugreifen kann und auf den wiederum ein Arbeitsplatzrechner 5045 zugreifen kann). Ein Gateway-Computer 5046 dient als Eingangspunkt in die einzelnen Netzwerke. Ein Gateway wird benötigt, wenn ein Netzwerkprotokoll mit einem weiteren Netzwerkprotokoll verbunden werden soll. Über eine Datenübertragungsverbindung kann der Gateway 5046 bevorzugt mit einem weiteren Netzwerk (wie z.B. dem Internet 5047) verbunden sein. Der Gateway 5046 kann auch über eine Datenübertragungsleitung direkt mit einem oder mehreren Arbeitsplatzrechnern 5041, 5042, 5043, 5044 verbunden sein. Der Gateway-Computer kann unter Verwendung eines IBM Power Systems-Servers und eines IBM eServer System z-Servers realisiert sein, die von der International Business Machines Corporation erhältlich sind.
-
Mit gleichzeitigem Bezug auf 27 und 28 kann der Prozessor 5026 des Systems 5050 von einem Langzeitspeichermedium 5027 wie z.B. einem CD-ROM-Laufwerk oder Festplattenlaufwerk auf einen Softwareprogrammcode 5031 zugreifen, der einen oder mehrere Aspekte verkörpern kann. Der Softwareprogrammcode kann auf einem beliebigen aus einer Vielfalt von bekannten Medien enthalten sein, die mit einem Datenverarbeitungssystem verwendet werden, z.B. einer Diskette, einem Festplattenlaufwerk oder einem CD-ROM. Der Code kann auf einem derartigen Medium verteilt sein oder er kann aus dem Arbeitsspeicher oder Speicher eines Computersystems über ein Netzwerk zu anderen Computersystemen an Benutzer 5050, 5051 verteilt werden, um von Benutzern solcher anderen Systeme verwendet zu werden.
-
Der Programmcode kann alternativ in dem Arbeitsspeicher 5025 enthalten sein, und auf ihn kann unter Verwendung des Prozessorbusses durch den Prozessor 5026 zugegriffen werden. Ein derartiger Programmcode beinhaltet ein Betriebssystem, das die Funktion und Interaktion der verschiedenen Computerkomponenten und eines oder mehrerer Anwendungsprogramme 5032 steuert. Programmcode wird normalerweise aus dem Speichermedium 5027 in den verhältnismäßig schnelleren Arbeitsspeicher 5025 umgespeichert, wo er zur Verarbeitung durch den Prozessor 5026 zur Verfügung steht. Die Methoden und Verfahren zum Bereitstellen von Softwareprogrammcode in Arbeitsspeicher, auf physischen Medien und/oder das Verteilen von Softwarecode über Netzwerke sind bekannt und werden hier nicht weiter erläutert. Programmcode, der auf einem physischen Medium wie z.B., ohne darauf beschränkt zu sein, elektronischen Speichermodulen (RAM), Flash-Speicher, Compact Discs (CDs), DVDs, Magnetband und dergleichen erzeugt und gespeichert wird, wird häufig als ein „Computerprogrammprodukt“ bezeichnet. Das Computerprogrammprodukt-Medium ist üblicherweise durch eine Verarbeitungsschaltung vorzugsweise in einem Computersystem zur Ausführung durch die Verarbeitungsschaltung lesbar.
-
Der Cachespeicher, der dem Prozessor am einfachsten zur Verfügung steht (und normalerweise schneller und kleiner als andere Cachespeicher des Prozessors ist), ist der Cachespeicher der untersten Ebene (L1-Cachespeicher oder Cachespeicher der Ebene 1), und der Hauptspeicher (Hauptarbeitsspeicher) ist der Cachespeicher der höchsten Ebene (L3-Cachespeicher, falls drei Ebenen vorhanden sind). Der Cachespeicher der unteren Ebene wird häufig in einen Befehls-Cachespeicher (I-Cache), der auszuführende Maschinenbefehle enthält, und einen Daten-Cachespeicher (D-Cache), der Datenoperanden enthält, unterteilt.
-
Mit Bezug auf 29 ist eine beispielhafte Prozessorausführungsform für den Prozessor 5026 dargestellt. Üblicherweise werden eine oder mehrere Ebenen eines Cachespeichers 5053 verwendet, um zum Verbessern der Prozessorleistung Arbeitsspeicherblöcke zu puffern. Der Cachespeicher 5053 ist ein Hochgeschwindigkeitspuffer, der Cachezeilen von Arbeitsspeicherdaten enthält, die wahrscheinlich verwendet werden. Übliche Cachezeilen enthalten 64, 128 oder 256 Bytes an Arbeitsspeicherdaten. Zum Zwischenspeichern von Befehlen und von Daten werden häufig separate Cachespeicher verwendet. Eine Cachespeicherkohärenz (Synchronisierung von Zeilenkopien im Arbeitsspeicher und in den Cachespeichern) wird häufig durch verschiedene „Snoop“-Algorithmen bereitgestellt, die nach dem Stand der Technik bekannt sind. Der Hauptarbeitsspeicher 5025 eines Prozessorsystems wird häufig als ein Cachespeicher bezeichnet. Bei einem Prozessorsystem mit vier Ebenen des Cachespeichers 5053 wird der Hauptspeicher 5025 gelegentlich als Cachespeicher der Ebene 5 (L5-Cachespeicher) bezeichnet, da er üblicherweise schneller ist und einen Teil des nicht flüchtigen Speichers (DASD, Band usw.) enthält, der einem Computersystem zur Verfügung steht. Der Hauptspeicher 5025 führt ein „Zwischenspeichern“ von Datenseiten durch, die durch das Betriebssystem in den Hauptspeicher 5025 eingeschrieben und aus diesem ausgelesen werden.
-
Ein Programmzähler (Befehlszähler) 5061 verfolgt die Adresse des aktuellen Befehls, der ausgeführt werden soll. In einem Prozessor der z/Architecture weist ein Programmzähler 64 Bits auf und kann auf 31 oder 24 Bits verkürzt sein, um frühere Adressierungsbeschränkungen zu unterstützen. In einem Power Architecture-Prozessor weist ein Programmzähler 64 Bits auf und kann auf 32 Bits verkürzt werden, um frühere Adressierungsbeschränkungen zu unterstützen. Ein Programmzähler ist üblicherweise in einem PSW (Programmstatuswort) eines Computers enthalten, so dass er bei einer Kontextumschaltung erhalten bleibt. Somit kann ein laufendes Programm, das einen Programmzählerwert aufweist, zum Beispiel durch das Betriebssystem unterbrochen werden (Kontextumschaltung von der Programmumgebung zur Betriebssystemumgebung). Das PSW des Programms hält den Programmzählerwert vor, während das Programm nicht aktiv ist, und der (in dem PSW vorhandene) Programmzähler des Betriebssystems wird verwendet, während das Betriebssystem ausgeführt wird. Der Programmzähler wird üblicherweise um einen Wert erhöht, der gleich der Anzahl von Bytes des aktuellen Befehls ist. RISC-(Reduced Instruction Set Computing)Befehle weisen üblicherweise eine feste Länge auf, während CISC-(Complex Instruction Set Computing)Befehle eine variable Länge haben. Bei Befehlen der IBM z/Architecture handelt es sich um CISC-Befehle mit einer Länge von 2, 4 oder 6 Byte. Bei Befehlen der IBM Power ISA-Architektur handelt es sich um CISC-Befehle mit einer Länge von 4 Byte. Der Programmzähler 5061 wird zum Beispiel durch eine Kontextumschaltungsoperation oder eine Verzweigungsausführungsoperation eines Verzweigungsbefehls modifiziert. Bei einer Kontextumschaltungsoperation wird der momentane Programmzählerwert zusammen mit anderen Zustandsinformationen über das ausgeführte Programm (z.B. Bedingungscodes) in dem Programmstatuswort gespeichert, und ein neuer Programmzählerwert wird geladen, der auf einen Befehl eines neuen Programmmoduls zeigt, das ausgeführt werden soll. Eine Verzweigungsausführungsoperation wird durchgeführt, damit das Programm Entscheidungen treffen oder innerhalb des Programms Schleifen ausführen kann, indem das Ergebnis des Verzweigungsbefehls in den Programmzähler 5061 geladen wird.
-
Üblicherweise wird eine Befehlsabrufeinheit 5055 verwendet, um für den Prozessor 5026 Befehle abzurufen. Die Abrufeinheit ruft entweder „nächste Folgebefehle“, Zielbefehle von Verzweigungsausführungsbefehlen oder erste Befehle eines Programms ab, das auf eine Kontextumschaltung folgt. Moderne Befehlsabrufeinheiten verwenden häufig Vorabladetechniken, um Befehle auf Grundlage der Wahrscheinlichkeit, dass die vorgeladenen Befehle verwendet werden könnten, im Vorhinein zu laden. So kann eine Abrufeinheit zum Beispiel 16 Bytes eines Befehls, der den nächsten Folgebefehl enthält, und zusätzliche Bytes weiterer Folgebefehle abrufen.
-
Die abgerufenen Befehle werden dann durch den Prozessor 5026 ausgeführt. Bei einer Ausführungsform werden der/die abgerufene/n Befehl/e an eine Zuteilungseinheit 5056 der Abrufeinheit geleitet. Die Zuteilungseinheit decodiert den/die Befehl/e und leitet Informationen über den/die decodierten Befehl/e an geeignete Einheiten 5057, 5058, 5060 weiter. Eine Ausführungseinheit 5057 empfängt üblicherweise Informationen über decodierte arithmetische Befehle von der Befehlsabrufeinheit 5055 und führt gemäß dem Operationscode des Befehls arithmetische Operationen an Operanden aus. Operanden werden der Ausführungseinheit 5057 vorzugsweise von dem Arbeitsspeicher 5025, von architekturdefinierten Registern 5059 oder von einem Direktfeld des ausgeführten Befehls bereitgestellt. Wenn Ergebnisse der Ausführung gespeichert werden, erfolgt dies entweder im Arbeitsspeicher 5025, in den Registern 5059 oder in anderer Maschinenhardware (z.B. Steuerregistern, PSW-Registern und dergleichen).
-
Virtuelle Adressen werden unter Verwendung einer dynamischen Adressumsetzung 5062 und optional unter Verwendung einer Zugriffsregisterumsetzung 5063 in reale Adressen umgesetzt.
-
Ein Prozessor 5026 verfügt üblicherweise über eine oder mehrere Einheiten 5057, 5058, 5060 zum Ausführen der Funktion des Befehls. Mit Bezug auf 30A kann eine Ausführungseinheit 5057 über eine Schnittstellenlogik 5071 mit den architekturdefinierten Allgemeinregistern 5059, einer Decodierungs-/Zuteilungseinheit 5056, einer Lade-/Speichereinheit 5060 und anderen Prozessoreinheiten 5065 Daten austauschen. Eine Ausführungseinheit 5057 kann mehrere Registerschaltungen 5067, 5068, 5069 verwenden, um Daten zu speichern, die von der arithmetischen Logikeinheit (Arithmetic Logic Unit, ALU) 5066 verarbeitet werden. Die ALU führt arithmetische Operationen wie z.B. Addieren, Subtrahieren, Multiplizieren und Dividieren sowie logische Funktionen wie UND, ODER und EXKLUSIV ODER (XOR), Drehen und Verschieben aus. Die ALU unterstützt vorzugsweise spezielle Operationen, die entwurfsabhängig sind. Andere Schaltungen können andere architekturdefinierte Einrichtungen 5072 wie z.B. Bedingungscodes und Logik zur Wiederherstellungsunterstützung bereitstellen. Das Ergebnis einer ALU-Operation wird üblicherweise in einem Ausgaberegister 5070 gespeichert, welches das Ergebnis an eine Vielfalt von anderen Verarbeitungsfunktionen weiterleiten kann. Es gibt viele Anordnungen von Prozessoreinheiten, wobei die vorliegende Beschreibung lediglich ein repräsentatives Verständnis einer Ausführungsform vermitteln soll.
-
Ein ADD-Befehl würde beispielsweise in einer Ausführungseinheit 5057 mit einer arithmetischen und logischen Funktionalität ausgeführt werden, während ein Gleitkommabefehl beispielsweise in einer Gleitkomma-Ausführung ausgeführt werden würde, die über eine spezielle Gleitkommafähigkeit verfügt. Eine Ausführungseinheit wirkt vorzugsweise an Operanden, die durch einen Befehl kenntlich gemacht werden, indem eine durch einen Operationscode definierte Funktion an den Operanden durchgeführt wird. Ein ADD-Befehl kann zum Beispiel durch eine Ausführungseinheit 5057 an Operanden ausgeführt werden, die sich in zwei Registern 5059 befinden, welche durch Registerfelder des Befehls kenntlich gemacht sind.
-
Die Ausführungseinheit 5057 führt die arithmetische Addition an zwei Operanden durch und speichert das Ergebnis in einem dritten Operanden, wobei der dritte Operand ein drittes Register oder eines der zwei Quellregister sein kann. Die Ausführungseinheit verwendet vorzugsweise eine ALU 5066, die in der Lage ist, eine Vielfalt von logischen Funktionen wie z.B. Verschieben, Rotieren, UND, ODER und XOR sowie eine Vielfalt von algebraischen Funktionen wie z.B. Addieren, Subtrahieren, Multiplizieren und Dividieren auszuführen. Einige ALUs 5066 sind für skalare Operationen und einige für Gleitkomma-Operationen ausgelegt. Je nach Architektur kann es sich bei Daten um Big-Endian-Daten (wobei sich das niedrigstwertige Byte an der höchsten Byte-Adresse befindet) oder um Little-Endian-Daten (wobei sich das niedrigstwertige Byte an der niedrigsten Byte-Adresse befindet) handeln. Die IBM z/Architecture verwendet Big-Endian-Daten. Die IBM Power ISA unterstützt sowohl Big-Endian- als auch Little-Endian-Ausführungsarten. Je nach Architektur kann es sich bei vorzeichenbehafteten Feldern um das Vorzeichen und den Betrag, ein Einer-Komplement oder ein Zweier-Komplement handeln. Eine Zweier-Komplement-Zahl ist insofern vorteilhaft, als die ALU keine Subtraktionsfähigkeit vorsehen muss, da sowohl ein negativer Wert als auch ein positiver Wert bei einem Zweier-Komplement in der ALU lediglich eine Addition erfordert. Zahlen werden im Allgemeinen in Kurzform beschrieben, wobei ein 12-Bit-Feld eine Adresse eines 4.096-Byte-Blocks definiert und im Allgemeinen beispielsweise als ein 4-KByte-(Kilobyte)Block beschrieben wird.
-
Mit Bezug auf 30B werden Verzweigungsbefehl-Informationen zum Ausführen eines Verzweigungsbefehls üblicherweise an eine Verzweigungseinheit 5058 gesendet, die häufig einen Algorithmus zur Verzweigungsvorhersage wie z.B. eine Verzweigungsverlaufstabelle 5082 (Branch History Table, BHT) verwendet, um das Ergebnis der Verzweigung vorherzusagen, bevor andere bedingte Operationen abgeschlossen sind. Der Zielwert des aktuellen Verzweigungsbefehls wird abgerufen und spekulativ ausgeführt, bevor die bedingten Operationen abgeschlossen sind. Wenn die bedingten Operationen abgeschlossen sind, werden die spekulativ ausgeführten Verzweigungsbefehle auf Grundlage der Bedingungen der bedingten Operation und des spekulativen Ergebnisses entweder abgeschlossen oder verworfen. Ein typischer Verzweigungsbefehl kann Bedingungscodes prüfen und zu einer Zieladresse verzweigen, wenn die Bedingungscodes die Verzweigungsanforderung des Verzweigungsbefehls erfüllen, wobei eine Zieladresse auf Grundlage mehrerer Zahlen berechnet werden kann, z.B. Zahlen, die sich in Registerfeldern oder in einem Direktfeld des Befehls befinden. Die Verzweigungseinheit 5058 kann eine ALU 5074 verwenden, die eine Mehrzahl von Eingaberegisterschaltungen 5075, 5076, 5077 und eine Ausgaberegisterschaltung 5080 aufweist. Die Verzweigungseinheit 5058 kann zum Beispiel mit den Allgemeinregistern 5059, der Decodierungs-/Zuteilungseinheit 5056 oder anderen Schaltungen 5073 Daten austauschen 5081.
-
Die Ausführung einer Gruppe von Befehlen kann aus verschiedenen Gründen unterbrochen werden, z.B. aufgrund einer Kontextumschaltung, die durch ein Betriebssystem ausgelöst wird, aufgrund einer Programmausnahme oder eines Programmfehlers, der eine Kontextumschaltung bewirkt, aufgrund eines E/A-Unterbrechungssignals, das eine Kontextumschaltung oder eine Multithreading-Aktivität einer Mehrzahl von Programmen (in einer Multithread-Umgebung) bewirkt. Eine Kontextumschaltungsaktion speichert vorzugsweise Zustandsinformationen über ein momentan ausgeführtes Programm und lädt dann Zustandsinformationen über ein weiteres Programm, das aufgerufen wird. Zustandsinformationen können zum Beispiel in Hardwareregistern oder im Arbeitsspeicher gespeichert werden. Zustandsinformationen weisen vorzugsweise einen Programmzählerwert, der auf einen nächsten auszuführenden Befehl zeigt, Bedingungscodes, Informationen zur Arbeitsspeicherumsetzung und den Inhalt architekturdefinierter Register auf. Eine Kontextumschaltungsaktivität kann durch Hardwareschaltungen, Anwendungsprogramme, Betriebssystemprogramme oder Firmwarecode (Microcode, Picocode oder lizensierter interner Code (LIC)) oder durch eine Kombination hiervon ausgeführt werden.
-
Ein Prozessor greift gemäß Verfahren, die durch einen Befehl definiert sind, auf Operanden zu. Der Befehl kann einen Direktoperanden bereitstellen, indem der Wert eines Teils des Befehls verwendet wird, und er kann ein oder mehrere Registerfelder bereitstellen, die explizit entweder auf Universalregister oder auf Spezialregister (zum Beispiel Gleitkommaregister) zeigen. Der Befehl kann implizit angegebene Register verwenden, die durch ein Operationscodefeld als Operanden gekennzeichnet werden. Der Befehl kann Arbeitsspeicherpositionen als Operanden verwenden. Eine Arbeitsspeicherposition eines Operanden kann durch ein Register, ein Direktfeld oder eine Kombination aus Registern und Direktfeld bereitgestellt werden, wie durch die Einrichtung mit langer Verschiebung der z/Architecture veranschaulicht wird, wobei der Befehl ein Basisregister, ein Indexregister und ein Direktfeld (Verschiebungsfeld) definiert, die addiert werden, um zum Beispiel die Adresse des Operanden in dem Arbeitsspeicher bereitzustellen; oder durch die Power ISA-Adressierungsarten, wobei D-Form-Adressen ein Basisregister und ein Direktfeld (Verschiebungsfeld) definieren, die addiert werden, um die Dresse des Operanden in dem Arbeitsspeicher bereitzustellen; und wobei X-Form-Adressen ein Basisregister und ein Indexregister definieren, die addiert werden, um die Adresse des Operanden in dem Arbeitsspeicher bereitzustellen. Sofern nicht anderweitig festgelegt, bedeutet Speicherposition hier implizit eine Position im Hauptarbeitsspeicher (Hauptspeicher).
-
Mit Bezug auf 30C greift ein Prozessor unter Verwendung einer Lade-/Speichereinheit 5060 auf einen Speicher zu. Die Lade-/Speichereinheit 5060 kann eine Ladeoperation durchführen, indem sie die Adresse des Zieloperanden im Arbeitsspeicher 5053 erhält und den Operanden in ein Register 5059 oder eine weitere Position des Arbeitsspeichers 5053 lädt, oder sie kann eine Speicheroperation durchführen, indem sie die Adresse des Zieloperanden in dem Arbeitsspeicher 5053 erhält und Daten, die von einem Register 5059 oder einer weiteren Position des Arbeitsspeichers 5053 erhalten werden, in dem Arbeitsspeicher 5053 speichert. Die Lade-/Speichereinheit 5060 kann spekulativ vorgehen und auf einen Arbeitsspeicher in einer Reihenfolge zugreifen, die nicht der Befehlsreihenfolge entspricht, wobei die Lade-/Speichereinheit 5060 Programmen allerdings weiterhin den Eindruck vermitteln soll, dass Befehle gemäß ihrer richtigen Reihenfolge ausgeführt werden. Eine Lade-/Speichereinheit 5060 kann mit Allgemeinregistern 5059, der Decodierungs-/Zuteilungseinheit 5056, der Cachespeicher-/Arbeitsspeicher-Schnittstelle 5053 oder anderen Elementen 5083 Daten austauschen 5084 und weist verschiedene Registerschaltungen 5086, 5087, 5088 und 5089, ALUs 5085 und Steuerlogik 5090 auf, um Speicheradressen zu berechnen und eine Reihenfolgeplanung für die Befehlskette bereitzustellen, damit die Operationsreihenfolge eingehalten wird. Einige Operationen können außerhalb der Reihenfolge durchgeführt werden, wobei die Lade-/Speichereinheit jedoch Funktionalität bereitstellt, um zu bewirken, dass die außerhalb der Reihenfolge durchgeführten Operationen für das Programm so erscheinen, als wären sie in der richtigen Reihenfolge ausgeführt worden, wie nach dem Stand der Technik bekannt ist.
-
Adressen, die ein Anwendungsprogramm „sieht“, werden vorzugsweise oft als virtuelle Adressen bezeichnet. Virtuelle Adressen werden gelegentlich als „logische Adressen“ und „effektive Adressen“ bezeichnet. Diese virtuellen Adressen sind insofern virtuell, als sie durch eine aus einer Vielfalt von DAT-Technologien an eine physische Arbeitsspeicherposition umgeleitet werden, wobei es sich bei diesen Technologien beispielsweise, ohne darauf beschränkt zu sein, um ein einfaches Voranstellen eines Offset-Werts vor einer virtuellen Adresse oder um ein Umsetzen der virtuellen Adresse mittels einer oder mehreren Umsetztabellen handelt, wobei die Umsetztabellen vorzugsweise mindestens eine Segmenttabelle und eine Seitentabelle oder eine Kombination hiervon aufweisen, und wobei die Segmenttabelle vorzugsweise einen Eintrag aufweist, der auf die Seitentabelle zeigt. Bei der z/Architecture wird eine Umsetzungshierarchie bereitgestellt, die eine erste Bereichstabelle, eine zweite Bereichstabelle, eine dritte Bereichstabelle, eine Segmenttabelle und eine optionale Seitentabelle beinhaltet. Die Leistungsfähigkeit der Adressumsetzung wird häufig durch Verwendung eines TLBs verbessert, der Einträge aufweist, die eine virtuelle Adresse auf eine zugehörige physische Arbeitsspeicherposition abbilden. Die Einträge werden erzeugt, wenn die DAT eine virtuelle Adresse unter Verwendung der Umsetztabellen umsetzt. Bei einer späteren Verwendung der virtuellen Adresse kann dann anstelle langsamer sequenzieller Zugriffe auf die Umsetztabelle der Eintrag des schnellen TLBs verwendet werden. Der TLB-Inhalt kann durch eine Vielfalt von Ersetzungsalgorithmen wie z.B. einen LRU-(Least Recently Used)Algorithmus verwaltet werden.
-
Wenn es sich bei dem Prozessor um einen Prozessor eines Mehrprozessorsystems handelt, ist jeder Prozessor dafür zuständig, gemeinsam genutzte Ressourcen vorzuhalten, z.B. E/A-Einheiten, Cachespeicher, TLBs und Arbeitsspeicher, die aus Gründen der Kohärenz gegenseitig gesperrt sind. Um eine Cachespeicherkohärenz aufrechtzuerhalten, werden üblicherweise „Snoop“-Technologien verwendet. In einer Snoop-Umgebung kann jede Cachezeile eine Kennzeichnung aufweisen, die besagt, dass sie sich in einem beliebigen gemeinsam genutzten Zustand, einem exklusiven Zustand, einem geänderten Zustand, einem ungültigen Zustand und dergleichen befindet, um eine gemeinsame Nutzung zu ermöglichen.
-
E/A-Einheiten 5054 (29) stellen dem Prozessor ein Mittel zum Verbinden mit peripheren Einheiten wie beispielsweise Bandlaufwerken, Platten, Druckern, Anzeigen und Netzwerken bereit. E/A-Einheiten werden dem Computerprogramm häufig durch Softwaretreiber bereitgestellt. Bei Mainframes wie z.B. dem System z von IBM® sind Kanaladapter und offene Systemadapter E/A-Einheiten des Mainframes, welche die Datenübertragung zwischen dem Betriebssystem und peripheren Einheiten bereitstellen. Bei RISC-Servern wie z.B. Power Systems von IBM® sind proprietäre Adapter und offene Systemadapter E/A-Einheiten, welche die Datenübertragung zwischen dem Betriebssystem und peripheren Einheiten bereitstellen.
-
Des Weiteren können andere Arten von Datenverarbeitungsumgebungen aus einem oder mehreren Aspekten Nutzen ziehen. So kann eine Umgebung z.B. einen Emulator (z.B. Software- oder andere Emulationsmechanismen) beinhalten, bei dem eine bestimmte Architektur (z.B. Befehlsausführung, architekturdefinierte Funktionen wie Adressumsetzung und architekturdefinierte Register) oder ein Teilsatz davon emuliert wird (z.B. auf einem nativen Computersystem, das über einen Prozessor und Arbeitsspeicher verfügt). In einer derartigen Umgebung können eine oder mehrere Emulationsfunktionen des Emulators eine oder mehrere Ausführungsformen realisieren, obwohl ein Computer, welcher den Emulator ausführt, eine andere Architektur aufweisen kann als die emulierten Fähigkeiten. In einem Beispiel wird der emulierte spezifische Befehl oder die emulierte spezifische Operation in der Emulationsbetriebsart decodiert, und eine geeignete Emulationsfunktion wird erstellt, um den einzelnen Befehl bzw. die einzelne Operation zu realisieren.
-
In einer Emulationsumgebung enthält ein Host-Computer zum Beispiel einen Arbeitsspeicher, um Befehle und Daten zu speichern; eine Befehlsabrufeinheit, um Befehle aus einem Arbeitsspeicher abzurufen und um optional eine lokale Pufferspeicherung für den abgerufenen Befehl bereitzustellen; eine Befehlsdecodierungseinheit, um die abgerufenen Befehle zu empfangen und die Art der Befehle zu ermitteln, die abgerufen wurden; und eine Befehlsausführungseinheit, um die Befehle auszuführen. Eine Ausführung kann beinhalten, Daten aus einem Arbeitsspeicher in ein Register zu laden; Daten aus einem Register in einen Arbeitsspeicher zurück zu speichern; oder eine andere Art von arithmetischer oder logischer Operation durchzuführen, wie sie durch die Decodierungseinheit bestimmt wird. In einem Beispiel ist jede Einheit in Software realisiert. So werden die von den Einheiten durchgeführten Operationen z.B. als eine oder mehrere Teilroutinen innerhalb einer Emulatorsoftware durchgeführt.
-
Insbesondere verwenden Programmierer, bei denen es sich heutzutage gewöhnlich um „C“-Programmierer handelt, bei einem Mainframe architekturdefinierte Maschinenbefehle oft unter Einsatz einer Compiler-Anwendung. Diese in dem Speichermedium gespeicherten Befehle können nativ in einem IBM® Server der Power Systems-Architektur oder der z/Architecture oder alternativ in Maschinen, die andere Architekturen ausführen, ausgeführt werden. Sie können in den bestehenden und in künftigen IBM® Mainframe-Servern, Power Systems-Servern und auf anderen Maschinen von IBM® (z.B. System x-Servern) emuliert werden. Sie können in Maschinen ausgeführt werden, die Linux auf einer großen Vielfalt von Maschinen unter Verwendung von Hardware ausführen, die von IBM®, Intel®, AMD und anderen hergestellt wird. Neben der Ausführung auf dieser Hardware unter einer Power Architecture oder z/Architecture können Linux sowie Maschinen verwendet werden, die eine Emulation durch Hercules, UMX oder FSI (Fundamental Software, Inc) verwenden, bei denen die Ausführung im Allgemeinen in einer Emulationsbetriebsart stattfindet. In der Emulationsbetriebsart wird Emulationssoftware durch einen nativen Prozessor ausgeführt, um die Architektur eines emulierten Prozessors zu emulieren.
-
Der native Prozessor führt üblicherweise Emulationssoftware aus, die entweder Firmware oder ein natives Betriebssystem aufweist, um eine Emulation des emulierten Prozessors durchzuführen. Die Emulationssoftware ist für ein Abrufen und Ausführen von Befehlen der emulierten Prozessorarchitektur zuständig. Die Emulationssoftware verwaltet einen emulierten Programmzähler, um Befehlsgrenzen zu verfolgen. Die Emulationssoftware kann jeweils einen oder mehrere emulierte Maschinenbefehle abrufen und den einen oder die mehreren emulierten Maschinenbefehle zur Ausführung durch den nativen Prozessor in eine entsprechende Gruppe von nativen Maschinenbefehlen übersetzen. Diese umgesetzten Befehle können zwischengespeichert werden, so dass eine schnellere Umsetzung realisiert werden kann. Dessen ungeachtet muss die Emulationssoftware die Architekturregeln der emulierten Prozessorarchitektur einhalten, um sicherzustellen, dass Betriebssysteme und Anwendung, die für den emulierten Prozessor geschrieben wurden, korrekt arbeiten. Die Emulationssoftware muss des Weiteren Ressourcen bereitstellen, die durch die emulierte Prozessorarchitektur kenntlich gemacht werden, z.B., ohne darauf beschränkt zu sein, Steuerregister, Universalregister, Gleitkommaregister, eine DAT-Funktion wie z.B. Segmenttabellen und Seitentabellen, Unterbrechungsmechanismen, Kontextumschaltungsmechanismen, Tageszeitgeber (Time of Day, TOD) und architekturdefinierte Schnittstellen zu E/A-Teilsystemen, so dass ein Betriebssystem oder ein Anwendungsprogramm, das für eine Ausführung auf dem emulierten Prozessor entworfen wurde, auf dem nativen Prozessor mit der Emulationssoftware ausgeführt werden können.
-
Ein spezifischer Befehl, der emuliert wird, wird decodiert, und eine Teilroutine wird aufgerufen, um die Funktion des betreffenden Befehls durchzuführen. Eine Funktion der Emulationssoftware, die eine Funktion eines emulierten Prozessors emuliert, wird z.B. in einer „C“-Teilroutine oder in einem Treiber realisiert, oder es wird ein anderweitiges Verfahren zum Bereitstellen eines Treibers für die spezifische Hardware realisiert, wie einem Fachmann klar sein dürfte, nachdem er sich mit der Beschreibung der bevorzugten Ausführungsform befasst hat. Verschiedene Patentschriften zum Thema Software- und Hardware-Emulation wie beispielsweise, ohne darauf beschränkt zu sein
US-Patentschrift Nr. 5 551 013 mit dem Titel „Multiprocessor for Hardware Emulation“ von Beausoleil et al.; und
US-Patentschrift Nr. 6 009 261 mit dem Titel „Preprocessing of Stored Target Routines for Emulating Incompatible Instructions on a Target Processor“ von Scalzi et al.; und
US-Patentschrift 5 574 873 mit dem Titel „Decoding Guest Instruction to Directly Access Emulation Routines that Emulate the Guest Instructions“ von Davidian et al.; und
US-Patentschrift Nr. 6 308 255 mit dem Titel „Symmetrical Multiprocessing Bus and Chipset Used for Coprocessor Support Allowing Non-Native Code to Run in a System“ von Gorishek et al.; und
US-Patentschrift Nr. 6 463 582 mit dem Titel „Dynamic Optimizing Object Code Translator for Architecture Emulation and Dynamic Optimizing Object Code Translation Method“ von Lethin et al.; und
US-Patentschrift Nr. 5 790 825 mit dem Titel „Method for Emulating Guest Instructions on a Host Computer Through Dynamic Recompilation of Host Instructions“ von Eric Traut sowie viele andere veranschaulichen eine Vielfalt von bekannten, dem Fachmann zur Verfügung stehenden Möglichkeiten, um eine Emulation eines für eine andere Maschine konzipierten Befehlsformats für eine Zielmaschine zu realisieren.
-
In 31 wird ein Beispiel für ein emuliertes Host-Computersystem 5092 bereitgestellt, das ein Host-Computersystem 5000' einer Host-Architektur emuliert. In dem emulierten Host-Computersystem 5092 ist der Host-Prozessor (CPU) 5091 ein emulierter Host-Prozessor (oder ein virtueller Host-Prozessor) und weist einen Emulationsprozessor 5093 auf, der über eine andere native Befehlssatz-Architektur verfügt als der Prozessor 5091 des Host-Computers 5000'. Das emulierte Host-Computersystem 5092 verfügt über einen Arbeitsspeicher 5094, auf den der Emulationsprozessor 5093 zugreifen kann. In der beispielhaften Ausführungsform ist der Arbeitsspeicher 5094 in einen Teil mit einem Hostcomputer-Arbeitsspeicher 5096 und einen Teil mit Emulationsroutinen 5097 partitioniert. Der Hostcomputer-Arbeitsspeicher 5096 steht Programmen des emulierten Host-Computers 5092 gemäß einer Host-Computerarchitektur zur Verfügung. Der Emulationsprozessor 5093 führt native Befehle eines architekturdefinierten Befehlssatzes einer anderen Architektur als derjenigen des emulierten Prozessors 5091, d.h. die aus dem Emulationsroutinen-Arbeitsspeicher 5097 erhaltenen nativen Befehle, aus und kann auf einen Host-Befehl zur Ausführung von einem Programm in dem Hostcomputer-Arbeitsspeicher 5096 zugreifen, indem er einen oder mehrere Befehle verwendet, die in einer Sortier- und Zugriffs-/Decodierroutine erhalten werden, die den/die Host-Befehl(e) decodieren kann, auf den/die zugegriffen wird, um eine Routine zur Ausführung nativer Befehle zu ermitteln, um die Funktion des Host-Befehls, auf den zugegriffen wird, zu emulieren. Andere Einrichtungen, die für die Architektur des Host-Computersystems 5000' definiert sind, können durch architekturdefinierte Einrichtungsroutinen emuliert werden, darunter z.B. Einrichtungen wie Universalregister und Steuerregister, eine dynamische Adressumsetzung, eine E/A-Teilsystemunterstützung sowie einen Prozessor-Cachespeicher. Die Emulationsroutinen können sich auch Funktionen zu Nutze machen, die in dem Emulationsprozessor 5093 verfügbar sind (z.B. Allgemeinregister und eine dynamische Umsetzung von virtuellen Adressen), um die Leistung der Emulationsroutinen zu verbessern. Spezial-Hardware und Auslagerungseinheiten können ebenfalls bereitgestellt werden, um den Prozessor 5093 beim Emulieren der Funktion des Host-Computers 5000' zu unterstützen.
-
Bei einer weiteren Ausführungsform beziehen sich ein oder mehrere Aspekte auf die Cloud-Datenverarbeitung. Obwohl diese Offenbarung eine ausführliche Beschreibung der Cloud-Datenverarbeitung beinhaltet, sollte vorab klar sein, dass die Realisierung der hier dargelegten Lehren nicht auf eine Cloud-Datenverarbeitungsumgebung beschränkt ist. Vielmehr können Ausführungsformen der vorliegenden Erfindung in Verbindung mit jeder anderen Art von Datenverarbeitungsumgebung nach dem derzeitigen oder künftigen Stand der Technik realisiert werden.
-
Eine Cloud-Datenverarbeitung ist ein Modell einer Dienstbereitstellung, um einen komfortablen, bedarfsgesteuerten Netzwerkzugriff auf einen gemeinsam genutzten Vorrat von konfigurierbaren Datenverarbeitungsressourcen (z.B. Netzwerke, Netzwerkbandbreite, Server, Verarbeitung, Arbeitsspeicher, Speicher, Anwendungen, virtuelle Maschinen und Dienste) zu ermöglichen, die mit möglichst geringem Verwaltungsaufwand und möglichst wenig Interaktion mit einem Anbieter des Dienstes schnell bereitgestellt und freigegeben werden können. Dieses Cloud-Modell kann z.B. mindestens fünf Merkmale, mindestens drei Dienstmodelle und mindestens vier Bereitstellungsmodelle beinhalten.
-
Merkmale lauten wie folgt:
Bedarfsgesteuerte Selbstbedienung: Ein Cloud-Verbraucher kann sich einseitig und automatisch nach Bedarf Datenverarbeitungsfähigkeiten wie z.B. Server-Zeit und Netzwerkspeicher bereitstellen, ohne dass hierfür eine menschliche Interaktion mit dem Anbieter des Dienstes notwendig ist.
-
Breiter Netzwerkzugriff: Fähigkeiten werden über ein Netzwerk zur Verfügung gestellt und über Standardmechanismen zugeordnet, die eine Verwendung durch verschiedenartige Thin- oder Thick-Client-Plattformen ermöglichen (z.B. Mobiltelefone, Laptops und PDAs).
-
Ressourcenbündelung: Die Datenverarbeitungsressourcen des Anbieters sind gebündelt, um unter Verwendung eines Multi-Tenant-Modells mehreren Verbrauchern bereitzustehen, wobei verschiedene physische und virtuelle Ressourcen dynamisch nach Bedarf zugewiesen bzw. neu zugewiesen werden. Standortunabhängigkeit ist insofern gegeben, als der Verbraucher im Allgemeinen den genauen Standort der bereitgestellten Ressourcen weder kontrolliert noch kennt, jedoch unter Umständen in der Lage ist, auf einer höheren Abstraktionsebene (z.B. Land, Bundesland oder Rechenzentrum) einen Standort festzulegen.
-
Flexible Anpassungsfähigkeit: Fähigkeiten lassen sich schnell und elastisch (in einigen Fällen automatisch) bereitstellen, um eine rasche Skalierung nach oben zu ermöglichen, sowie – für eine rasche Skalierung nach unten – schnell wieder freigegeben zu werden. Für den Verbraucher scheinen die zur Bereitstellung verfügbaren Fähigkeiten häufig unbegrenzt zu sein und können jederzeit in jeder beliebigen Menge erworben werden.
-
Dienstmessung: Cloud-Systeme kontrollieren und optimieren die Ressourcennutzung automatisch, indem sie in einer bestimmten, der Art des Dienstes angemessenen Abstraktionsschicht eine Messfunktion nutzen (z.B. Speicherung, Verarbeitung, Bandbreite und aktive Benutzerkonten). Die Ressourcennutzung kann überwacht, kontrolliert und protokolliert werden, wodurch sowohl für den Anbieter als auch für den Verbraucher des genutzten Dienstes Transparenz bereitgestellt wird.
-
Dienstmodelle lauten wie folgt:
Software as a Service (SaaS): Die dem Verbraucher bereitgestellte Fähigkeit besteht darin, die in einer Cloud-Infrastruktur ausgeführten Anwendungen des Anbieters zu verwenden. Der Zugriff auf die Anwendungen kann über eine Thin-Client-Schnittstelle wie z.B. einen Web-Browser von verschiedenen Client-Einheiten aus erfolgen (z.B. eine eMail-Nachricht auf Grundlage des Webs). Mit Ausnahme beschränkter benutzerspezifischer Einstellungen der Anwendungskonfiguration wird die darunterliegende Cloud-Infrastruktur wie Netzwerk, Server, Betriebssysteme, Speicher oder auch einzelne Anwendungsfunktionen vom Verbraucher weder verwaltet noch kontrolliert.
-
Platform as a Service (PaaS): Die dem Verbraucher bereitgestellte Fähigkeit besteht darin, vom Benutzer erzeugte oder erworbene Anwendungen, die anhand von vom Anbieter bereitgestellten Programmiersprachen und Werkzeugen erstellt wurden, in der Cloud-Infrastruktur bereitzustellen. Die darunterliegende Infrastruktur wie Netzwerke, Server, Betriebssysteme oder Speicher wird vom Verbraucher weder verwaltet noch kontrolliert, er hat jedoch die Kontrolle über die bereitgestellten Anwendungen und möglicherweise über Konfigurationen der Hosting-Umgebung für die Anwendungen.
-
Infrastructure as a Service (IaaS): Die dem Verbraucher bereitgestellte Fähigkeit besteht darin, Verarbeitung, Speicher, Netzwerke und andere grundlegende Datenverarbeitungsressourcen bereitzustellen, wobei der Verbraucher in der Lage ist, frei wählbare Software wie z.B. Betriebssysteme und Anwendungen bereitzustellen und auszuführen. Die darunterliegende Cloud-Infrastruktur wird vom Verbraucher weder verwaltet noch kontrolliert, er hat jedoch die Kontrolle über Systeme und Einheiten (z.B. Betriebssysteme, Speicher, bereitgestellte Anwendungen usw.) und möglicherweise eingeschränkte Kontrolle über ausgewählte Netzwerkkomponenten (z.B. Host-Firewalls).
-
Bereitstellungsmodelle lauten wie folgt:
Private Cloud: Die Cloud-Infrastruktur wird für lediglich eine Organisation betrieben. Sie kann von der Organisation selbst oder von einem Dritten verwaltet werden und sich an Ort und Stelle oder an einem anderen Ort befinden.
-
Gemeinschafts-Cloud: Die Cloud-Infrastruktur wird von mehreren Organisationen gemeinsam genutzt und unterstützt eine spezifische Gemeinschaft mit gemeinsamen Anliegen (z.B. Aufgabe, Sicherheitsanforderungen, Richtlinie und Einhaltung von Gesetzen und Richtlinien). Sie kann von den Organisationen selbst oder von einem Dritten verwaltet werden und sich an Ort und Stelle oder an einem anderen Ort befinden.
-
Öffentliche Cloud: Die Cloud-Infrastruktur wird der allgemeinen Öffentlichkeit oder einer großen Branchengruppe bereitgestellt und ist Eigentum einer Organisation, die Cloud-Dienste verkauft.
-
Hybrid-Cloud: Die Cloud-Infrastruktur ist eine Zusammensetzung aus zwei oder mehreren (privaten, Gemeinschafts- oder öffentlichen) Clouds, die eigenständige Einheiten bleiben, aber durch eine standardisierte oder herstellerspezifische Technologie miteinander verbunden sind, die eine Portierbarkeit von Daten und Anwendungen ermöglicht (z.B. das Cloud Bursting für den Lastausgleich zwischen Clouds).
-
Eine Cloud-Datenverarbeitungsumgebung ist dienstorientiert, wobei der Schwerpunkt auf Zustandslosigkeit, geringer Kopplung, Modularität und semantischer Kompatibilität liegt. Im Mittelpunkt einer Cloud-Datenverarbeitung steht eine Infrastruktur, die ein Netzwerk von miteinander verbundenen Knoten aufweist.
-
32 ist eine schematische Darstellung eines Beispiels für einen Cloud-Datenverarbeitungsknoten. Ein Cloud-Datenverarbeitungsknoten 6010 ist lediglich ein Beispiel für einen geeigneten Cloud-Datenverarbeitungsknoten und nicht als eine wie auch immer geartete Beschränkung von Verwendungsumfang oder Funktionalität von Ausführungsformen der hier beschriebenen Erfindung gedacht. Unabhängig davon kann der Cloud-Datenverarbeitungsknoten 6010 mit jeder hier dargelegten Funktionalität realisiert sein und/oder diese durchführen.
-
In dem Cloud-Datenverarbeitungsknoten 6010 gibt es ein Computersystem/einen Server 6012, das bzw. der mit zahlreichen anderen Universal- oder Spezialsystemumgebungen oder -konfigurationen betrieben werden kann. Beispiele bekannter Datenverarbeitungssysteme, -umgebungen und/oder -konfigurationen, die für eine Verwendung mit einem Computersystem/Server 6012 geeignet sein könnten, sind, ohne darauf beschränkt zu sein, Personal-Computersysteme, Server-Computersysteme, Thin Clients, Thick Clients, Taschen- oder Laptop-Einheiten, Mehrprozessorsysteme, Systeme auf der Grundlage von Mikroprozessoren, Set-Top-Boxen, programmierbare Unterhaltungselektronik, Netzwerk-PCs, Mini-Computersysteme, Mainframe-Computersysteme sowie verteilte Cloud-Datenverarbeitungsumgebungen, die eines/eine der obigen Systeme oder Einheiten beinhalten, und dergleichen.
-
Das Computersystem/der Server 6012 lässt sich im allgemeinen Zusammenhang von Befehlen beschreiben, die durch ein Computersystem ausführbar sind, wie z.B. Programmmodule, die von einem Computersystem ausgeführt werden. Allgemein können Programmmodule Routinen, Programme, Objekte, Komponenten, Logik, Datenstrukturen usw. beinhalten, die bestimmte Aufgaben durchführen oder bestimmte abstrakte Datentypen realisieren. Das Computersystem/der Server 6012 kann in verteilten Cloud-Datenverarbeitungsumgebungen eingesetzt werden, wo Aufgaben von entfernt angeordneten Verarbeitungseinheiten durchgeführt werden, die über ein Datenübertragungsnetzwerk miteinander verbunden sind. In einer verteilten Cloud-Datenverarbeitungsumgebung können sich Programmmodule sowohl in lokalen als auch in entfernt angeordneten Computersystem-Speichermedien wie beispielsweise Arbeitsspeichereinheiten befinden.
-
32 zeigt das Computersystem/den Server 6012 in dem Cloud-Datenverarbeitungsknoten 6010 als eine Universal-Datenverarbeitungseinheit. Die Komponenten des Computersystems/Servers 6012 können einen oder mehrere Prozessoren oder Verarbeitungseinheiten 6016, einen Systemarbeitsspeicher 6028 und einen Bus 6018 beinhalten, der verschiedene Systemkomponenten wie z.B. den Systemarbeitsspeicher 6028 mit dem Prozessor 6016 verbindet, ohne jedoch darauf beschränkt zu sein.
-
Der Bus 6018 steht für mindestens eine von mehreren Arten von Busstrukturen, z.B. ein Speicherbus oder eine Arbeitsspeicher-Steuereinheit, ein Peripheriebus, ein Accelerated Graphics Port (AGP) und ein Prozessor- oder lokaler Bus, wobei eine beliebige aus einer Vielfalt von Busarchitekturen verwendet werden kann. Beispielhaft und nicht als Beschränkung zu verstehen, beinhalten derartige Architekturen den ISA-Bus (Industry Standard Architecture), den MCA-Bus (Micro Channel Architecture), den EISA-Bus (Enhanced ISA), den lokalen VESA-Bus (Video Electronics Standards Association) und den PCI-Bus (Peripheral Component Interconnect).
-
Das Computersystem/der Server 6012 beinhaltet üblicherweise eine Vielfalt von Medien, die von einem Computersystem gelesen werden können. Derartige Medien können beliebige verfügbare Medien sein, auf die das Computersystem/der Server 6012 zugreifen kann, und zu ihnen zählen sowohl flüchtige als auch nicht flüchtige, entfernbare und nicht entfernbare Medien.
-
Der Systemarbeitsspeicher 6028 kann ein von einem Computersystem lesbares Medium in Form eines flüchtigen Arbeitsspeichers wie z.B. eines Direktzugriffsspeichers (Random Access Memory, RAM) 6030 und/oder eines Cachespeichers 6032 beinhalten. Das Computersystem/der Server 6012 kann des Weiteren andere entfernbare/nicht entfernbare, flüchtige/nicht flüchtige Computersystem-Speichermedien beinhalten. Nur beispielgebend kann ein Speichersystem 6034 zum Lesen von und Schreiben auf ein nicht entfernbares, nicht flüchtiges magnetisches Medium (das nicht abgebildet ist und das üblicherweise als ein Festplattenlaufwerk bezeichnet wird) bereitgestellt werden. Obwohl hier nicht abgebildet, können ein Magnetplattenlaufwerk zum Lesen von und Schreiben auf eine entfernbare, nicht flüchtige Magnetplatte (z.B. eine Diskette) sowie ein optisches Plattenlaufwerk zum Lesen von oder Schreiben auf eine entfernbare, nicht flüchtige optische Platte wie z.B. einen CD-ROM, einen DVD-ROM oder ein anderes optisches Medium bereitgestellt werden. In diesen Fällen kann jedes Laufwerk über ein oder mehrere Datenmedienschnittstellen mit dem Bus 6018 verbunden sein. Wie weiter unten ausführlicher dargestellt und beschrieben, kann der Arbeitsspeicher 6028 mindestens ein Programmprodukt mit einem Satz von (z.B. mindestens einem) Programmmodulen beinhalten, wobei diese so konfiguriert sind, dass sie die Funktionen von Ausführungsformen der Erfindung durchführen.
-
Ein Programm/Dienstprogramm 6040 mit einem Satz von (mindestens einem) Programmmodulen 6042 kann beispielsweise, und ohne als Beschränkung verstanden zu werden, im Arbeitsspeicher 6028 gespeichert sein, ebenso wie ein Betriebssystem, ein oder mehrere Anwendungsprogramme, andere Programmmodule und Programmdaten. Das Betriebssystem, das eine oder die mehreren Anwendungsprogramme, die anderen Programmmodule und die Programmdaten oder eine Kombination hiervon können jeweils eine Realisierung einer Netzwerkumgebung beinhalten. Die Programmmodule 6042 führen im Allgemeinen die Funktionen und/oder Verfahrensweisen von Ausführungsformen der hier beschriebenen Erfindung aus.
-
Das Computersystem/der Server 6012 kann zudem mit einer oder mehreren externen Einheiten 6014 Daten austauschen, z.B. mit einer Tastatur, einer Zeigeeinheit, einer Anzeige 6024 usw.; mit einer oder mehreren Einheiten, die einem Benutzer gestatten, mit dem Computersystem/Server 6012 zu interagieren; und/oder mit beliebigen Einheiten (z.B. Netzwerkkarte, Modem usw.), die dem Computersystem/Server 6012 ermöglichen, mit einer oder mehreren anderen Datenübertragungseinheiten Daten auszutauschen. Ein derartiger Datenaustausch kann über Eingabe/Ausgabe-Schnittstellen (E/A-Schnittstellen) 6022 erfolgen. Des Weiteren kann das Computersystem/der Server 6012 über einen Netzwerkadapter 6020 mit einem oder mehreren Netzwerken Daten austauschen, z.B. einem LAN, einem WAN und/oder einem öffentlichen Netz (z.B. dem Internet). Wie dargestellt, tauscht der Netzwerkadapter 6020 über den Bus 6018 Daten mit den anderen Komponenten des Computersystems/Servers 6012 aus. Dabei sollte klar sein, dass – obwohl sie hier nicht abgebildet sind – auch andere Hardware- und/oder Softwarekomponenten in Verbindung mit dem Computersystem/Server 6012 verwendet werden könnten. Beispiele hierfür sind, ohne darauf beschränkt zu sein, Mikrocode, Einheitentreiber, redundante Verarbeitungseinheiten, externe Plattenlaufwerksstapel, RAID-Systeme, Bandlaufwerke und Datenarchivierungsspeichersysteme usw.
-
33 ist eine veranschaulichende Cloud-Datenverarbeitungsumgebung 6050 dargestellt. Wie gezeigt, weist die Cloud-Datenverarbeitungsumgebung 6050 einen oder mehrere Cloud-Datenverarbeitungsknoten 6010 auf, mit denen lokale Datenverarbeitungseinheiten wie z.B. ein persönlicher digitaler Assistent (Personal Digital Assistent, PDA) oder ein Mobiltelefon 6054A, ein Desktop-Computer 6054B, ein Laptop-Computer 6054C und/oder ein Automobil-Computersystem 6054N Daten austauschen können. Die Knoten 6010 können untereinander Daten austauschen. Sie können in einem oder mehreren Netzwerken, z.B. in privaten, Gemeinschafts-, öffentlichen oder Hybrid-Clouds, wie sie hier weiter oben beschrieben sind, oder in einer Kombination hiervon, physisch oder virtuell zusammengefasst sein (nicht abgebildet). Auf diese Weise kann die Cloud-Datenverarbeitungsumgebung 6050 Infrastruktur, Plattformen und/oder Software als Dienste anbieten, für die ein Cloud-Verbraucher keine Ressourcen auf einer lokalen Datenverarbeitungseinheit vorhalten muss. Dabei sollte klar sein, dass die in 33 gezeigten Arten von Datenverarbeitungseinheiten 6054A bis N lediglich zur Veranschaulichung gedacht sind und dass die Datenverarbeitungsknoten 6010 und die Cloud-Datenverarbeitungsumgebung 6050 mit jeder Art von computergestützter Einheit über jede Art von Netzwerk und/oder netzwerkadressierbarer Verbindung (z.B. unter Verwendung eines Webbrowsers) Daten austauschen können.
-
34 wird ein Satz von funktionsbezogenen Abstraktionsschichten gezeigt, der von der Cloud-Datenverarbeitungsumgebung 6050 33) bereitgestellt wird. Dabei sollte vorab klar sein, dass die in 34 gezeigten Komponenten, Schichten und Funktionen lediglich zur Veranschaulichung dienen sollen und Ausführungsformen der Erfindung nicht darauf beschränkt sind. Wie dargestellt, werden die folgenden Schichten und zugehörigen Funktionen bereitgestellt:
Eine Hardware- und Softwareschicht 6060 enthält Hardware- und Softwarekomponenten. Beispiele für Hardwarekomponenten beinhalten Mainframes wie beispielsweise IBM® zSeries®-Systeme; Server auf der Grundlage der RISC-Architektur (Reduced Instruction Set Computer) wie beispielsweise IBM pSeries®-Systeme; IBM xSeries®-Systeme; IBM BladeCenter®-Systeme; Speichereinheiten; Netzwerke und Netzwerkkomponenten. Beispiele für Softwarekomponenten beinhalten Software für Netzwerk-Anwendungsserver wie beispielsweise IBM WebSphere®-Anwendungsserver-Software; sowie Datenbanksoftware wie z.B. IBM DB2®-Datenbanksoftware. (IBM, zSeries, pSeries, xSeries, BladeCenter, WebSphere und DB2 sind Handelsmarken der International Business Machines Corporation, die in vielen Rechtsbereichen weltweit eingetragen sind.)
-
Eine Virtualisierungsschicht 6062 stellt eine Abstraktionsschicht bereit, welche die folgenden Beispiele für virtuelle Einheiten zur Verfügung stellen kann: virtuelle Server; virtueller Speicher; virtuelle Netzwerke wie z.B. virtuelle private Netzwerke; virtuelle Anwendungen und Betriebssysteme; sowie virtuelle Clients.
-
In einem Beispiel kann eine Verwaltungsschicht 6064 die im Folgenden beschriebenen Funktionen bereitstellen. Die Ressourcenbereitstellung stellt eine dynamische Beschaffung von Datenverarbeitungs- und anderen Ressourcen bereit, mit denen Aufgaben innerhalb der Cloud-Datenverarbeitungsumgebung durchgeführt werden. Messungs- und Preisermittlungsfunktionen stellen eine Kostenerfassung bei der Nutzung von Ressourcen innerhalb der Cloud-Datenverarbeitungsumgebung sowie eine Fakturierung bzw. Abrechnung für den Verbrauch dieser Ressourcen bereit. In einem Beispiel können diese Ressourcen Lizenzen für Anwendungssoftware aufweisen. Eine Sicherheitsfunktion stellt eine Identitätsprüfung für Cloud-Verbraucher und -Aufgaben sowie einen Schutz für Daten und andere Ressourcen bereit. Eine Benutzerportalfunktion stellt Verbrauchern und Systemadministratoren einen Zugriff auf die Cloud-Datenverarbeitungsumgebung bereit. Eine Dienstgüteverwaltungsfunktion stellt eine Zuordnung und Verwaltung von Cloud-Datenverarbeitungsressourcen bereit, so dass erforderliche Dienstgütestufen erreicht werden. Eine Planungs- und Ausführungsfunktion von Dienstgütevereinbarungen (Service Level Agreement, SLA) stellt eine Vorabfestlegung und Beschaffung von Cloud-Datenverarbeitungsressourcen bereit, für die gemäß einer SLA eine künftige Anforderung erwartet wird.
-
Eine Auslastungsschicht 6066 stellt Beispiele einer Funktionalität bereit, für welche die Cloud-Datenverarbeitungsumgebung genutzt werden kann. Beispiele für Auslastungen und Funktionen, die von dieser Schicht bereitgestellt werden können, lauten:
Zuordnung und Navigation; Software-Entwicklung und Lebenszyklusverwaltung; Bereitstellung von virtuellen Schulungen; Datenanalyseverarbeitung; und Transaktionsverarbeitung.
-
Die hier verwendete Begrifflichkeit dient lediglich zur Beschreibung bestimmter Ausführungsformen und ist nicht als Beschränkung gedacht. Im hier verwendeten Sinne sollen die Singularformen „ein/e/r" und "der/die/das" auch die Pluralformen beinhalten, sofern der Kontext dies nicht eindeutig anderweitig vorgibt. Ebenso offensichtlich dürfte sein, dass die Verben „weist auf“ und/oder „aufweisend“ in dieser Patentschrift das Vorhandensein der genannten Merkmale, Ganzzahlen, Schritte, Vorgänge, Elemente und/oder Komponenten angeben, ohne jedoch das Vorhandensein oder die Hinzufügung ein oder mehrerer anderer Merkmale, Ganzzahlen, Schritte, Vorgänge, Elemente, Komponente und/oder Gruppen derselben auszuschließen.
-
Die betreffenden Strukturen, Materialien, Handlungen und Äquivalente aller Mittel oder Schritte zusätzlich zu den Funktionselementen (sofern vorhanden) in den nachstehenden Ansprüchen sollen sämtliche Strukturen, Materialien oder Handlungen beinhalten, mit denen die Funktion in Verbindung mit anderen beanspruchten Elementen durchgeführt werden kann, wie sie hier ausdrücklich beansprucht sind. Die Beschreibung einer oder mehrerer Ausführungsformen wurde zum Zwecke der Veranschaulichung und Erläuterung vorgelegt und ist mit Bezug auf die offenbarte Form nicht als vollständig oder beschränkend zu verstehen. Der Fachmann weiß, dass zahlreiche Änderungen und Abwandlungen möglich sind. Die Ausführungsform wurde ausgewählt und beschrieben, um die verschiedenen Aspekte und die praktische Anwendung bestmöglich zu erläutern und um anderen Fachleuten die Möglichkeit zu geben, verschiedene Ausführungsformen mit verschiedenen Abwandlungen zu verstehen, wie sie für die jeweilige, in Erwägung gezogene Verwendung geeignet sind.