-
Diese
Erfindung betrifft im Allgemeinen die Verarbeitung in einer Datenverarbeitungsumgebung
und insbesondere einen oder mehrere der Vorgänge der Ungültigkeitserklärung von
Speicher, des Löschens
von Puffereinträgen
und einen Befehl hierzu.
-
Bestehende
Datenverarbeitungsumgebungen verwenden einen virtuellen Speicher,
der normalerweise in einem zusätzlichen
Speicher verwaltet wird, um die Größe des verfügbaren Speichers zu erhöhen. Wenn eine
Bezugnahme auf eine Seite von virtuellem Speicher erfolgt, wird
die bei der Bezugnahme auf die Seite verwendete virtuelle Adresse
durch dynamische Adressumsetzung in eine reale Speicheradresse umgesetzt. Im
Falle einer erfolgreichen Umsetzung ist der virtuelle Speicher gültig; andernfalls
ist er ungültig.
Eine Seite von virtuellem Speicher wird durch ein Ungültigkeitsbit
in einem Seitentabelleneintrag als gültig oder ungültig angezeigt,
wobei dieser Eintrag eine reale Speicheradresse enthält, falls
die Seite gültig
ist.
-
Zu
einem bestimmten Zeitpunkt kann immer nur eine Speicherseite für ungültig erklärt werden.
In einer Datenverarbeitungsumgebung auf der Grundlage der von International
Business Machines Corporation angebotenen z/Architektur wird beispielsweise
ein als "Seitentabelleneintrag
für ungültig erklären (Invalidate
Page Table Entry – IPTE)
bezeichneter Befehl verwendet, um eine Speicherseite für ungültig zu
erklären.
Zur Ungültigkeitserklärung gehört das Setzen
eines Ungültigkeitsanzeigers
in einer Steuerstruktur, die dem virtuellen Speicher zugeordnet
ist und sich im physischen Hauptspeicher befindet, um anzuzeigen,
dass eine virtuelle Adresse einer Position im virtuellen Speicher
nicht durch dynamische Adressumsetzung in eine auch als reale Adresse
bezeichnete physische Hauptspeicheradresse umgesetzt werden kann.
Außerdem
wird der Befehl zum Löschen
von der Seite zugeordneten internen Maschinenpuffereinträgen verwendet,
die während
der dynamischen Adressumsetzung verwendet werden können, um
einen Zugriff auf die Steuerstrukturen im physischen Hauptspeicher
zu vermeiden. In der z/Architektur gibt es beispielsweise Adressumsetzpuffer
(Translation Lookaside Buffers), die während der dynamischen Adressumsetzung
von virtuellen Adressen in reale Adressen verwendet werden. Wenn
eine Speicherseite für
ungültig
erklärt
wird, werden auch dieser Seite zugeordnete Einträge aus den entsprechenden Puffern
gelöscht.
-
Außerdem gibt
es Befehle, die das Löschen
von ganzen Adressumsetzpuffern ermöglichen. In der z/Architektur
löscht
beispielsweise ein als "Vergleichen
und Auslagern und Löschen" (Compare and Swap
ans Purge – CSP)
bezeichneter Befehl alle Einträge
von Adressumsetzpuffern.
-
US-A-5 946 717 (Uchibori
Katsuaki), 31. August 1999, und "Enterprise
Systems Architecture/390 Principles of Operation" SA22-7201-07, [Online] 31. Juli 2001,
XP002294122, am 24.08.2004 aus dem Internet abgerufen, URL: http://publibz.boulder.ibm.com/epubs/pdf/dz9ar007.pdf>, beschreiben Datenverarbeitungsumgebungen,
die eine Ungültigkeitserklärung von
Tabelleneinträgen
und ein Löschen
von Puffern ausführen.
-
Obwohl
es Befehle zur Ungültigkeitserklärung einer
Speicherseite und zum Löschen
von dieser Seite zugeordneten Einträgen aus Puffern sowie Befehle
zum Löschen
ganzer Puffer gibt, besteht folglich noch immer ein Bedarf an Befehlen,
die verschiedene Größen von
Speichereinheiten selektiv für
ungültig
erklären und/oder
diesen zugeordnete Einträge
aus Puffern löschen
können.
Beispielsweise besteht ein Bedarf an einem Befehl, der die Angabe
einer ausgewählten
Speichereinheit ermöglicht,
die größer ist
als eine für
ungültig zu
erklärende
Seite und/oder eine Seite, bei der zugeordnete Puffereinträge gelöscht wurden.
Außerdem
besteht ein Bedarf an einem Befehl, der das Löschen von Puffereinträgen für ausgewählte Speichereinheiten
ermöglicht,
ohne Puffereinträge
für andere
Speichereinheiten zu beeinträchtigen.
-
Die
vorliegende Erfindung stellt ein Verfahren zur Ungültigkeitserklärung von
Speicher einer Datenverarbeitungsumgebung bereit, wie es in Anspruch
1 beansprucht wird.
-
Vorzugsweise
stellt die vorliegende Erfindung ein Verfahren zur Ungültigkeitserklärung von
Speicher einer Datenverarbeitungsumgebung bereit. Das Verfahren
beinhaltet beispielsweise die Angabe einer für ungültig zu erklärenden Speichereinheit,
wobei die Speichereinheit eine Vielzahl von Speicherseiten enthält und wobei
zur Angabe die Bereitstellung eines Deskriptors der Speichereinheit
gehört;
und die Ungültigkeitserklärung der
Speichereinheit.
-
Vorzugsweise
stellt die vorliegende Erfindung ein Verfahren zum Ermöglichen
des Löschens
von Puffern einer Datenverarbeitungsumgebung bereit. Das Verfahren
beinhaltet beispielsweise das Kennzeichnen einer Speichereinheit,
für die
ein Löschen
von einem oder mehreren Einträgen
aus einem oder mehreren Puffern ausgeführt werden muss, wobei die
Speichereinheit eine Vielzahl von Speicherseiten enthält; und
das Löschen
von einem oder mehreren Einträgen
aus dem einen oder den mehreren der gekennzeichneten Speichereinheit
zugeordneten Puffer, wobei ein oder mehrere einer anderen Speichereinheit
zugeordnete Einträge nicht
gelöscht
werden.
-
Vorzugsweise
wird ein in einer Datenverarbeitungsumgebung auszuführender
Befehl bereitgestellt. Der Befehl enthält beispielsweise einen Operationscode
zum Kennzeichnen eines auszuführenden
Befehls; eine Ungültigkeitserklärungs-Kennzeichnung (invalidation
designation) zum Angeben von Daten, die einer für ungültig zu erklärenden Speichereinheit
zugeordnet sind, wobei die Speichereinheit eine Vielzahl von Speicherseiten
enthält;
eine andere Kennzeichnung zum Angeben zusätzlicher Daten zur Verwendung
durch den Befehl; und eine Löschkennzeichnung
(clearing designation) zum Angeben von Daten, die einer Speichereinheit
und einer anderen Speichereinheit zugeordnet sind, bei der ein oder
mehrere Einträge
aus einem oder mehreren Puffern gelöscht werden müssen, wobei
eine oder mehrere Komponenten der Ungültigkeitserklärungs-Kennzeichnung,
der anderen Kennzeichnung oder der Löschkennzeichnung als Nicht-Vorgänge konfigurierbar
sind.
-
Vorzugsweise
wird ein in einer Datenverarbeitungsumgebung auszuführender
Befehl bereitgestellt. Der Befehl enthält beispielsweise einen Operationscode
zum Kennzeichnen eines auszuführenden
Befehls; und mindestens eine von folgenden Kennzeichnungen: eine
erste Ungültigkeitserklärungs-Kennzeichnung zum
Angeben von Daten, die einer für
ungültig
zu erklärenden
Speichereinheit zugeordnet sind, wobei die Speichereinheit eine
Vielzahl von Speicherseiten enthält;
eine zweite Ungültigkeitserklärungs-Kennzeichnung zum
Angeben von zusätzlichen
Daten, die der für
ungültig
zu erklärenden
Speichereinheit zugeordnet sind; und eine Löschkennzeichnung zum Angeben
von Daten, die einer Speichereinheit und einer anderen Speichereinheit
zugeordnet sind, für
die ein oder mehrere Einträge
aus einem oder mehreren Puffern gelöscht werden müssen, wobei
die durch die Löschkennzeichnung
angegebenen Daten nicht mindestens einer anderen Speichereinheit
zugeordnet sind, für
die ein oder mehrere Einträge
nicht gelöscht
werden müssen.
-
Ein
System und Computerprogrammprodukte entsprechend der oben zusammengefassten
Verfahren werden ebenfalls hierin beschrieben und beansprucht.
-
Zusätzliche
Merkmale und Vorteile werden durch die Verfahren der vorliegenden
Erfindung realisiert. Andere Ausführungsformen und Aspekte der
Erfindung werden hierin ausführlich
beschrieben und als Teil der beanspruchten Erfindung betrachtet.
-
Das
als die Erfindung betrachtete Hauptthema wird insbesondere in den
Ansprüchen
am Schluss der Beschreibung dargelegt und eindeutig beansprucht.
Die vorhergehenden und andere Aufgaben, Merkmale und Vorteile der
Erfindung gehen aus der folgenden ausführlichen Beschreibung hervor,
wenn sie in Verbindung mit den begleitenden Zeichnungen gelesen
wird, in denen:
-
1 eine
Ausführungsform
einer Datenverarbeitungsumgebung darstellt, die einen oder mehrere Aspekte
der vorliegenden Erfindung beinhaltet und verwendet;
-
2 eine
Ausführungsform
von weiteren einer Steuereinheit von 1 zugeordneten
Einzelheiten gemäß einem
Aspekt der vorliegenden Erfindung darstellt;
-
3 eine
Ausführungsform
eines Host-Computers, der einen anderen Computer emulieren kann,
gemäß einem
Aspekt der vorliegenden Erfindung darstellt;
-
4 eine
Ausführungsform
der der Ungültigkeitserklärung von
Speicher zugeordneten Logik gemäß einem
Aspekt der vorliegenden Erfindung darstellt;
-
5 eine
Ausführungsform
der dem Löschen
von Puffereinträgen
zugeordneten Logik gemäß einem Aspekt
der vorliegenden Erfindung darstellt;
-
6a eine
Ausführungsform
eines Formats eines Befehls "Dynamischen
Adressumsetzungstabelleneintrag für ungültig erklären" (Invalidate Dynamic Address Translation
Table Entry – IDTE)
gemäß einem Aspekt
der vorliegenden Erfindung darstellt;
-
6b eine
Ausführungsform
der dem Allgemeinregister R1 des IDTE-Befehls von 6A zugeordneten
Felder gemäß einem
Aspekt der vorliegenden Erfindung darstellt;
-
6c eine
Ausführungsform
der dem Allgemeinregister R2 des IDTE-Befehls von 6A zugeordneten
Felder gemäß einem
Aspekt der vorliegenden Erfindung darstellt;
-
6d eine
Ausführungsform
der dem Allgemeinregister R3 des IDTE-Befehls von 6A zugeordneten
Felder gemäß einem
Aspekt der vorliegenden Erfindung darstellt;
-
7a bis 7b eine
Ausführungsform
der dem IDTE-Befehl zugeordneten Logik gemäß einem Aspekt der vorliegenden
Erfindung darstellen;
-
8a eine
Ausführungsform
der dem Allgemeinregister R1 zugeordneten Felder, die für einen
alternativen Vorgang des IDTE-Befehls verwendet werden, gemäß einem
Aspekt der vorliegenden Erfindung darstellt;
-
8b eine
Ausführungsform
der dem Allgemeinregister R2 zugeordneten Felder, die für einen
alternativen Vorgang des IDTE-Befehls verwendet werden, gemäß einem
Aspekt der vorliegenden Erfindung darstellt;
-
8c eine
Ausführungsform
der dem Allgemeinregister R3 zugeordneten Felder, die für einen
alternativen Vorgang des IDTE-Befehls verwendet werden, gemäß einem
Aspekt der vorliegenden Erfindung darstellt;
-
9 eine
Ausführungsform
der dem alternativen Vorgang des IDTE-Befehls zugeordneten Logik
gemäß einem
Aspekt der vorliegenden Erfindung darstellt.
-
Unter
einem Aspekt der vorliegenden Erfindung wird ein angegebener Teil
eines Speichers (z. B. virtueller Speicher) für ungültig erklärt. Beispielsweise wird ein
Speichersegment, das eine Vielzahl von Speicherseiten enthält, oder
ein Speicherbereich, der eine Vielzahl von Speichersegmenten enthält, zur
Ungültigkeitserklärung ausgewählt. Die
Ungültigkeitserklärung wird
durch das Setzen von Ungültigkeitserklärungsanzeigern
ermöglicht,
die sich in Datenstruktureinträgen
befinden, die den für
ungültig
zu erklärenden
Speichereinheiten entsprechen. Unter einem weiteren Aspekt der vorliegenden
Erfindung werden Puffereinträge
(z. B. Adressumsetzpuffereinträge),
die dem für
ungültig
erklärten
Speicher oder einem anderen Speicher zugeordnet sind, gelöscht. Unter
einem weiteren Aspekt der vorliegenden Erfindung werden ausgewählten Adressräumen zugeordnete
Puffereinträge
aus Puffern gelöscht,
ohne dass Puffereinträge
von nichtausgewählten Adressräumen beeinflusst
werden und ohne dass eine Ungültigkeitserklärung ausgeführt wird.
In einem Beispiel wird ein hierin als "Dynamischen Adressumsetzungstabelleneintrag
für ungültig erklären" (Invalidate Dynamic
Address Translation (DAT) Table Entry (IDTE)" bezeichneter Befehl aus der z/Architektur
von IBM® verwendet,
um einen oder mehrere der obigen Vorgänge auszuführen.
-
Eine
Ausführungsform
einer Datenverarbeitungsumgebung 100, die einen oder mehrere
Aspekte der vorliegenden Erfindung beinhaltet und verwendet, wird
mit Bezugnahme auf 1 beschrieben. Die Datenverarbeitungsumgebung 100 beruht
beispielsweise auf der von International Business Machines Corporation, Armonk,
New York, angebotenen z/Architektur. Die z/Architektur wird in einer
Veröffentlichung
von IBM® mit dem
Titel "z/Architecture
Principles of Operation",
IBM Veröffentlichung
Nr. SA22-7832-00, Dezember 2000, beschrieben (IBM® ist
ein eingetragenes Warenzeichen von International Business Machines
Corporation, Armonk, New York, USA. Andere hierin verwendete Namen
können
eingetragene Warenzeichen, Warenzeichen oder Produktnamen von International
Business Machines Corporation oder anderen Firmen sein.) In einem Beispiel
beinhaltet eine Datenverarbeitungsumgebung auf der Grundlage der
z/Architektur einen von International Business Machines Corporation,
Armonk, New York, angebotenen eServer der z-Serie.
-
Beispielsweise
gehört
zur Datenverarbeitungsumgebung 100 ein mit einer Steuereinheit 120 verbundener
zentraler Prozessorkomplex (central processor complex – CPC) 102.
Der zentrale Prozessorkomplex 102 beinhaltet beispielsweise
eine oder mehrere Partitionen 104 (z. B. die logischen
Partitionen LP1 bis LPn), einen oder mehrere zentrale Prozessoren 106 (z.
B. CP1 bis CPm) und einen Hypervisor 108 (z. B. eine logische
Partitionsverwaltungseinrichtung), die allesamt im Folgenden beschrieben
werden.
-
Jede
logische Partition 104 kann als gesondertes System fungieren.
Das heißt,
jede logische Partition kann unabhängig zurückgesetzt, auf Wunsch anfänglich mit
einem Betriebssystem geladen werden und mit verschiedenen Programmen
arbeiten. Ein in einer logischen Partition ausgeführtes Betriebssystem
oder Anwendungsprogramm scheint Zugriff auf ein vollständiges System
zu haben, in der Realität
ist jedoch nur ein Teil von diesem verfügbar. Eine Kombination aus
Hardware und lizensiertem internem Code (Licensed Internal Code)
(im Allgemeinen als Microcode bezeichnet) verhindert, dass ein Programm
in einer logischen Partition ein Programm in einer anderen logischen
Partition beeinträchtigt.
Dadurch wird es möglich,
dass mehrere verschiedene logische Partitionen in einem einzigen
oder mehreren physischen Prozessoren in zugeteilten Zeitintervallen
(in a time sliced manner) betrieben werden. In diesem bestimmten
Beispiel weist jede logische Partition ein Betriebssystem 110 auf,
das für
eine oder mehrere logische Partitionen unterschiedlich sein kann.
In einer Ausführungsform
ist das Betriebssystem 110 das von International Business
Machines Corporation, Armonk, New York, angebotene Betriebssystem
z/OS.
-
Die
Prozessoren 106 sind physische Prozessorressourcen, die
den logischen Partitionen zugeordnet werden. Beispielsweise gehören zu einer
logischen Partition 104 ein oder mehrere logische Prozessoren,
von denen jeder die gesamte oder einen Teil einer der Partition
zugeordneten physischen Prozessorressource 106 darstellt.
Die logischen Prozessoren einer bestimmten Partition 104 können entweder
der Partition zugeordnet werden, so dass die zugrundeliegende Prozessorressource
für diese
Partition reserviert ist; oder mit einer anderen Partition gemeinsam
genutzt werden, so dass die zugrundeliegende Prozessorressource
möglicherweise
für eine
andere Partition verfügbar
ist.
-
Die
logischen Partitionen 104 werden vom Hypervisor 108 verwaltet,
der von dem in den Prozessoren 106 ausgeführten Mikrocode
realisiert wird. Die logischen Partitionen 104 und der
Hypervisor 108 umfassen jeweils ein oder mehrere Programme,
die sich in entsprechenden Teilen des den zentralen Prozessoren
zugeordneten zentralen Speichers befinden. Ein Beispiel eines Hypervisors 108 ist
Processor Resource/Systems Manager (PR/SM) von International Business
Machines Corporation, Armonk, New York.
-
Die
mit dem zentralen Prozessorkomplex verbundene Steuereinheit
120 beinhaltet
eine zentralisierte Logik, die für
die Prioritätenvergabe
(arbitrating) zwischen verschiedenen Anforderungen ausgebenden Prozessoren
zuständig
ist. Wenn die Steuereinheit
120 eine Anforderung empfängt, stellt
sie beispielsweise fest, dass der Anforderer der Hauptprozessor
für diese
Anforderung ist und dass die anderen Prozessoren untergeordnete
Prozessoren sind; sie rundsendet Nachrichten; und bearbeitet andernfalls
Anforderungen. Ein Beispiel einer Steuereinheit wird in der
US-Patentschrift Nr. 6 199 219 beschrieben.
Weitere Einzelheiten werden außerdem
mit Bezugnahme auf
2 beschrieben.
2 zeigt
ein Beispiel einer Steuereinheit
200, die mit einer Vielzahl
von Zentraleinheiten (CPUs)
201 verbunden ist. In diesem
Beispiel werden zwei Zentraleinheiten gezeigt. Es versteht sich
jedoch von selbst, dass mehr als zwei Prozessoren mit der Steuereinheit
200 verbunden
werden können.
-
Die
Steuereinheit 200 beinhaltet verschiedene Steuervorgänge, darunter
beispielsweise Systemserialisierungssteuerungen (system serialization
controls) 202. Die Systemserialisierungssteuerungen werden verwendet,
um sicherzustellen, dass zu serialisierende Vorgänge, beispielsweise Ungültigkeitserklärungsbefehle,
insofern serialisiert werden, als zu einem bestimmten Zeitpunkt
nur ein solcher Befehl in der Datenverarbeitungsumgebung ausgeführt wird.
Außerdem überwacht
sie die Abfolge von Ereignissen für diesen Vorgang.
-
Die
Steuereinheit 200 ist über
verschiedene Schnittstellen mit jeder Zentraleinheit verbunden.
Beispielsweise wird eine Schnittstelle 204 vom lizensierten
internen Code in einer Zentraleinheitverwendet, um "Steuer"-Befehle an die Steuereinheit
zu übertragen,
die eine zu ergreifende Maßnahme
angeben, und um "Abfrage"-Befehle ("sense" commands) zu übertragen,
die Daten von der Steuereinheit rückübertragen. Eine andere Schnittstelle
ist ein Antwortbus 206, der zum Rückübertragen von Daten von der
Steuereinheit für
die "Abfrage"-Befehle verwendet
wird. Der Antwortbus wird außerdem
zum Übertragen
des Befehlsstatus für "Steuer"-Befehle verwendet
und kann von einer Vielzahl von Quellen innerhalb der Steuereinheit
gesetzt werden, unter anderem von den Systemserialisierungssteuerungen.
Eine Zentraleinheit kann diese Schnittstelle zum Abfragen des Status
der Systemserialisierungssteuerungen in der Steuereinheit 200 verwenden.
-
Eine
weitere Schnittstelle ist die Schnittstelle 208, die von
der Steuereinheit zum Übertragen
von Befehlen an jede CPU verwendet wird. Dies kann außerdem von
einer Vielzahl von Quellen innerhalb der Steuereinheit gesteuert
werden, unter anderem von Systemserialisierungssteuerungen 202.
Noch eine weitere Schnittstelle ist die Schnittstelle 210,
die Signale an Cachespeichersteuerungen 212 des zentralen
Prozessors 201 überträgt. Auf
die Signale hin verarbeiten die Cachespeichersteuerungen 212 Befehle.
In einem Beispiel verarbeiten die Cachespeichersteuerungen 212 Befehle,
die einen oder mehrere Puffer betreffen, beispielsweise die Adressumsetzpuffer
(TLBs) 213, wie im Folgenden ausführlicher beschrieben wird.
-
Neben
den Cachespeichersteuerungen 212 beinhaltet die Zentraleinheit 201 verschiedene
andere Steuerungen, darunter beispielsweise die Unterbrechungssteuerungen 220 und
die Ausführungssteuerungen 222.
Auf bestimmte Ereignisse hin bewirken die Unterbrechungssteuerungen 220 eine
in der CPU anstehende interne Unterbrechung, die ihrerseits veranlasst,
dass die Ausführungssteuerungen 222 die
Programmbefehlsverarbeitung an der nächsten unterbrechbaren Stelle
aussetzen. Auf die Unterbrechung hin rufen die Ausführungssteuerungen 222 eine
Routine des lizensierten internen Code auf, um ein Register 224 "Rundsendevorgang
gestattet" (broadcast
Operation allowed latch) zu setzen, um den Cachespeichersteuerungen 212 die Verarbeitung
anstehender Anforderungen zu ermöglichen.
-
Die
Zentraleinheit 201 beinhaltet außerdem ein Register 226 "CPU im Wartemodus" (CPU quiesced latch),
das anzeigt, ob die Zentraleinheit sich im Wartemodus befindet.
-
Die
oben beschriebene Datenverarbeitungsumgebung ist nur ein Beispiel.
Eine oder mehrere Partitionen können
beispielsweise in verschiedenen Architekturarten ausgeführt werden.
Als weiteres Beispiel muss die Umgebung außerdem nicht auf der z/Architektur,
sondern kann auf anderen Architekturen beruhen, wie sie von Intel,
Sun Microsystems und anderen angeboten werden. Außerdem kann
eine Umgebung einen Emulator beinhalten (z. B. Software oder andere
Emulationsmechanismen), in dem eine bestimmte Architektur oder ein Teil
von dieser emuliert wird.
-
In
einer solchen Umgebung können
eine oder mehrere Emulationsfunktionen des Emulators einen oder
mehrere Aspekte der vorliegenden Erfindung realisieren, selbst wenn
ein den Emulator ausführender Computer
möglicherweise
eine andere Architektur als die emulierten Funktionseigenschaften
aufweist. Beispielsweise wird der spezifische emulierte Befehl oder
Vorgang im Emulationsmodus decodiert und eine geeignete Emulationsfunktion
erstellt, um den einzelnen Befehl oder Vorgang zu realisieren.
-
Weitere
Einzelheiten einer Emulationsumgebung werden mit Bezugnahme auf 3 beschrieben. Beispielsweise
kann der Host-Computer 300 eine andere Architektur, einen
anderen Computer und/oder Verarbeitungsfähigkeiten eines anderen Computers
emulieren. Beispielsweise beruht der Host-Computer 300 auf einer
Intel-Architektur; einer RISC-Architektur, zum Beispiel PowerPC;
einer von Sun Microsystems angebotenen SPARC-Architektur; oder einer
anderen Architektur und kann die z/Architektur von IBM® oder
eine andere Architektur von IBM® oder
einer anderen Einheit emulieren.
-
Zum
Host-Computer 300 gehören
beispielsweise ein Speicher 302 zum Speichern von Befehlen
und Daten; eine Befehlsabrufeinheit 304 zum Abrufen von
Befehlen aus dem Speicher 302 und wahlweise zur Bereitstellung
einer lokalen Zwischenspeicherung der abgerufenen Befehle; eine
Befehlsdecodiereinheit 306 zum Empfangen von Befehlen von
der Befehlsabrufeinheit 304 und zum Feststellen des Typs
von abgerufenen Befehlen; und eine Befehlsausführungseinheit 308 zum
Ausführen
der Befehle. Die Ausführung
beinhaltet möglicherweise
das Laden von Daten aus dem Speicher 302 in ein Register;
das Speichern von Daten aus einem Register zurück in den Speicher; oder das
Ausführen eines
Typs von arithmetischem oder logischem Vorgang, wie von der Decodiereinheit
festgestellt wird.
-
In
einem Beispiel wird jede oben beschriebene Einheit in Form von Software
ausgeführt.
Beispielsweise werden die von den Einheiten ausgeführten Vorgänge als
eine oder mehrere Teilroutinen innerhalb der Emulatorsoftware realisiert.
In einem anderen Beispiel werden ein oder mehrere der Vorgänge in Form
von Firmware, Hardware, Software oder einer Kombination aus diesen
realisiert.
-
Obwohl 3 in
Bezug auf Emulation beschrieben wird, muss die Umgebung von 3 außerdem nicht
unbedingt eine Emulationsumgebung sein. In einem anderen Beispiel
werden Befehle in einer systemspezifischen Umgebung ausgeführt, und
die Vorgänge
werden Form von Hardware, Firmware, Software oder einer Kombination
aus diesen realisiert.
-
Eine
Datenverarbeitungsumgebung kann einen virtuellen Speicher sowie
einen Hauptspeicher beinhalten. Der virtuelle Speicher kann die
Größe von in
der Konfiguration verfügbarem
Hauptspeicher weit übersteigen
und wird normalerweise in zusätzlichem
Speicher verwaltet. Es wird davon ausgegangen, dass der virtuelle
Speicher aus als Seiten bezeichneten Adressenblöcken zusammengesetzt ist. Die
Seiten von virtuellem Speicher, auf die zuletzt Bezug genommen wurde,
werden zuordnet, um Blöcke
von physischem Hauptspeicher zu belegen. Wenn ein Benutzer auf Seiten
von virtuellem Speicher Bezug nimmt, die nicht im Hauptspeicher
erscheinen, werden die virtuellen Seiten hineingebracht, um die
Seiten im Hauptspeicher zu ersetzen, die mit geringerer Wahrscheinlichkeit
verwendet werden. Der Austausch von Seiten im Speicher kann ohne
Wissen des Benutzers vom Betriebssystem ausgeführt werden.
-
Die
zum Bezeichnen von Positionen im virtuellen Speicher verwendeten
Adressen werden als virtuelle Adressen bezeichnet. Ein Block von
sequenziellen virtuellen Adressen, die beispielsweise bis zu 4 Kilobyte umfassen,
wird als eine Seite bezeichnet. Ähnlich
wird ein Block von sequenziellen virtuellen Seiten, die beispielsweise
bis zu 1 Megabyte umfassen, als ein Segment bezeichnet; und ein
Block von sequenziellen virtuellen Segmenten, die beispielsweise
bis zu 2 Gigabyte umfassen, wird als ein Bereich bezeichnet. Außerdem wird
eine Folge von virtuellen Adressen, die einem virtuellen Speicher
zugeordnet sind, auf den ein Adressraum-Steuerelement (address space
control element – ASCE)
zeigt, als Adressraum bezeichnet. Adressräume können zum Bereitstellen von
Isolationsgraden zwischen Benutzern verwendet werden. Ein Adressraum
kann einen oder mehrere Bereiche, ein oder mehrere Segmente, eine
oder mehrere Seiten oder eine Kombination aus diesen enthalten.
-
Den
verschiedenen Typen von Speichereinheiten (z. B. Bereiche, Segmente,
Seiten) werden Datenstrukturen zugeordnet, die bei der den Speichereinheiten
zugeordneten Verarbeitung verwendet werden. Beispielsweise werden
Bereichen Bereichstabellen (region tables) zugeordnet; Segmenten
werden Segmenttabellen (segment tables) zugeordnet; und Seiten werden
Seitentabellen (page tables) zugeordnet. Diese Tabellen werden beispielsweise
während
einer Umsetzung (z. B. einer dynamischen Adressumsetzung) einer
virtuellen Adresse in eine zum Zugriff auf den Hauptspeicher verwendete
reale Adresse verwendet. Die bei der Umsetzung zu verwendenden Tabellen,
hierin als Umsetzungstabellen bezeichnet, werden durch ein Adressraum-Steuerelement (ASCE)
gekennzeichnet. Dies wird in einer Veröffentlichung von IBM® mit
dem Titel "z/Architecture
Principles of Operation",
IBM Veröffentlichung
Nr. SA22-7832-00,
Dezember 200, ausführlicher
beschrieben. Eine Einheit von virtuellem Speicher, die momentan
nicht dem Hauptspeicher zugeordnet ist, wird als ungültig bezeichnet.
Der ungültige
Status einer Einheit von virtuellem Speicher wird durch einen Ungültigkeitsanzeiger
in der der Einheit zugeordneten Datenstruktur angezeigt.
-
Der
Mechanismus der dynamischen Adressumsetzung wird in einer Ausführungsform
so ausgeführt, dass
die durch den DAT-Prozess aus den Umsetzungstabellen (z. B. Bereichstabellen,
Segmenttabellen und/oder Seitentabellen) abgeleiteten Daten in einem
oder mehreren in den Prozessoren befindlichen, hier als Adressumsetzpuffer
bezeichneten Puffern aufbewahrt werden, um die Leistungsfähigkeit
der Adressumsetzung zu steigern. Das heißt, während der Umsetzung werden
die Puffer auf die benötigten
Daten überprüft, und
falls die Daten sich nicht in den Puffern befinden, wird auf eine
oder mehrere der Umsetzungstabellen zugegriffen.
-
In
einer Ausführungsform
wird ein Puffereintrag als einer von drei Typen betrachtet: ein
kombinierter TLB-Bereichs- und Segmenttabelleneintrag; ein TLB-Seitentabelleneintrag;
oder ein realer TLB-Speicherbereichseintrag, die allesamt im Folgenden
beschrieben werden.
-
Ein
kombinierter TLB-Bereichs- und Segmenttabelleneintrag (combined
region-and-segment-table entry – CRSTE)
enthält
sowohl die aus dem Tabelleneintrag oder Einträgen im realen oder absoluten
Speicher erhaltenen Daten als auch die zum Abrufen dieser Daten
aus dem Speicher verwendeten Attribute. In einem Beispiel enthält ein kombinierter
TLB-Bereichs- und Segmenttabelleneintrag (CRSTE) die folgenden Felder:
- TO
- der Tabellenursprung
im Adressraum-Steuerelement, der zum Erzeugen des Eintrags verwendet
wurde;
- RX
- der Bereichsindex
der virtuellen Adresse, die zum Erzeugen des Eintrags verwendet
wurde;
- SX
- der Segmentindex der
virtuellen Adresse, die zum Erzeugen des Eintrags verwendet wurde;
- PTC
- der aus dem Segmenttabelleneintrag
im realen oder absoluten Speicher abgerufene Seitentabellenursprung;
- C
- das aus dem Segmenttabelleneintrag
im realen oder absoluten Speicher abgerufene allgemeine Segmentbit
(common segment bit); und
- P
- das aus dem Segmenttabelleneintrag
im realen oder absoluten Speicher abgerufene Seitenschutzbit (page
protection bit).
- V
- Das Gültigkeitsbit
(validity bit) zeigt an, ob der Eintrag im TLB gültig ist und kann daher zum
Suchen nachfolgender Einträge
verwendet werden.
-
Ein
Seitentabellen-TLB-Eintrag enthält
die aus dem Tabelleneintrag oder Einträgen im realen oder absoluten
Speicher erhaltenen Daten und die zum Abrufen dieser Daten aus dem
Speicher verwendeten Attribute. In einem Beispiel enthält ein TLB-Seitentabelleneintrag
Folgendes:
- TO
- den Tabellenursprung
im Adressraum-Steuerelement oder im kombinierten TLB-Bereichs- und
Segmenttabelleneintrag, der zum Erzeugen des Eintrags verwendet
wurde, in Abhängigkeit
davon, wie der Eintrag erzeugt wurde;
- PTO
- den zum Erzeugen des
Eintrags verwendeten Seitentabel1enursprung;
- PX
- den Seitenindex der
zum Erzeugen des Eintrags verwendeten virtuellen Adresse;
- PFRA
- die aus dem Seitentabelleneintrag
im realen oder absoluten Speicher abgerufene reale Seitenrahmenadresse
(page-frame real address); und
- P
- das aus dem Seitentabelleneintrag
im realen oder absoluten Speicher abgerufene Seitenschutzbit.
- V
- Das Gültigkeitsbit
zeigt an, ob der Eintrag im TLB gültig ist und kann daher zum
Suchen nachfolgender Einträge
verwendet werden.
-
Gelegentlich
muss eine Speichereinheit für
ungültig
erklärt
werden. Um diese Ungültigkeitserklärung zu
ermöglichen,
wird die dieser Speichereinheit zugeordnete Umsetzungstabelle verwendet,
wie hierin beschrieben wird. Außerdem
können
auf die Ungültigkeitserklärung des
Speichers hin auch entsprechende Puffereinträge gelöscht werden. Beispielsweise
wird ein Ungültigkeitsbit
eines Seitentabelleneintrags gesetzt, um eine Speicherseite für ungültig zu
erklären.
Zusätzlich
werden in einem Beispiel die entsprechenden Einträge in einem
oder mehreren TLBs gelöscht.
In einem bestimmten Beispiel werden die Ungültigkeitserklärung und das
Löschen
von Speicherseiten zugeordneten Einträgen durch einen Befehl "Seitentabelleneintrag
für ungültig erklären" (Invalidate Page
Table Entry – IPTE)
ausgeführt.
-
Unter
einem Aspekt der vorliegenden Erfindung können neben der Ungültigkeitserklärung von
Speicherseiten Speichersegmente und/oder Speicherbereiche für ungültig erklärt werden.
Beispielsweise werden bei dieser Ungültigkeitserklärung Segment-
und/oder Bereichstabellen verwendet. Eine Ausführungsform der einer Ungültigkeitserklärung einer
bestimmten Speichereinheit zugeordneten Logik wird mit Bezugnahme
auf 4 beschrieben.
-
Anfänglich wird
eine Bereichs- oder Segmenttabelle, in der ein oder mehrere Einträge für ungültig erklärt werden
müssen,
ermittelt, SCHRITT 400. In einem Beispiel beinhaltet dies
die Bereitstellung eines Bereichstabellenursprungs oder eines Segmenttabellenursprungs.
Anschließend
wird ein Eintrag in der vorgesehenen Bereichs- oder Segmenttabelle
zur Ungültigkeitserklärung gekennzeichnet,
SCHRITT 402, und der Eintrag wird für ungültig erklärt, SCHRITT 404. In
einem Beispiel erfolgt die Kennzeichnung durch die Bereitstellung
eine Bereichsindexes oder eines Segmentindexes (Bits einer virtuellen
Adresse), der einen Eintrag in der gekennzeichneten Tabelle auswählt, und
die Ungültigkeitserklärung beinhaltet
das Setzen eines Ungültigkeitsanzeigers
in den Eintrag. Auf das Setzen des Ungültigkeitsanzeigers hin wird
eine entsprechende Speichereinheit (z. B. ein Bereich oder ein Segment)
für ungültig erklärt.
-
Anschließend wird
festgestellt, ob es weitere für
ungültig
zu erklärende
Einträge
gibt, ANFRAGE 406. Falls es weitere für ungültig zu erklärende Einträge gibt,
geht die Verarbeitung weiter mit dem SCHRITT 402. Andernfalls
ist die Verarbeitung beendet.
-
Um
den einen oder die mehreren Einträge in einer Bereichs- oder Segmenttabelle
und folglich jene Speichereinheiten für ungültig zu erklären, können darüber hinaus
die entsprechenden Einträge
(oder andere Einträge)
aus einem oder mehreren Puffern in einem oder mehreren Prozessoren
in der Umgebung gelöscht werden.
Eine Ausführungsform
der diesem Löschvorgang
zugeordneten Logik wird mit Bezugnahme auf 5 ausführlicher
beschrieben.
-
Anfänglich wird
festgestellt, ob ein Bereichs- oder Segmenttabellenursprung angegeben
wird, ANFRAGE 500. Wenn ein Bereichs- oder Segmenttabellenursprung
angegeben wird, wird ein Eintrag, der von dem mit dem Bereichs-
oder Segmentursprung übereinstimmenden
Bereichs- oder Segmentindex angegeben wird, aus einem oder mehreren
Puffern gelöscht,
SCHRITT 502. Anschließend
wird festgestellt, ob es weitere zu löschende Einträge gibt,
ANFRAGE 504. Ist dies der Fall, geht die Verarbeitung weiter
mit SCHRITT 502. Andernfalls ist die Verarbeitung beendet.
-
Falls
mit erneuter Bezugnahme auf ANFRAGE 500 der Bereichs- oder Segmenttabellenursprung
nicht angegeben wird, wird ein vom Bereichs- oder Segmentindex angegebener
Eintrag aus einem oder mehreren Puffern gelöscht, SCHRITT 508.
Anschließend
wird festgestellt, ob es weitere zu löschende Einträge gibt,
ANFRAGE 510. Falls es weitere zu löschende Einträge gibt,
geht die Verarbeitung mit SCHRITT 508 weiter. Andernfalls
ist die Verarbeitung beendet.
-
In
einem Beispiel werden die Ungültigkeitserklärung und
das Löschen
von einem Befehl ausgeführt. Der
Befehl macht die ausgewählten
Einträge
einer Segment- oder Bereichstabelle ungültig und löscht zumindest die entsprechenden
Einträge
(oder andere Einträge)
aus den TLBs in den Prozessoren der Konfiguration. In einem Beispiel
werden die Einträge
aus allen TLBs in allen Prozessoren gelöscht, ob sie nun physisch oder virtuell
sind oder von Software emuliert werden. Wenn eine TLB-Struktur mit
mehreren Ebenen (multi-level TLB structure) vorhanden ist, werden
in einem Beispiel alle Ebenen gelöscht. Wenn mehrere logische
Partitionen im System vorliegen, werden TLB-Einträge, die
für die
logische Partition erzeugt wurden, in der der aktuelle IDTE-Befehl
ausgeführt
wird, in diesem und anderen Prozessoren gelöscht.
-
Dieser
Befehl kann in vielen Architekturen ausgeführt und kann emuliert werden.
Beispielsweise kann der Befehl in Hardware von einem Prozessor ausgeführt werden;
oder durch Emulation des Befehlssatzes, der diesen Befehl enthält, durch
Software, die in einem Computer mit einem anderen ursprünglichen
Befehlssatz ausgeführt
wird. In einem bestimmten Beispiel wird der Befehl in der z/Architektur
ausgeführt
und wird hierin als ein Befehl "Dynamischen
Adressumsetzungstabelleneintrag für ungültig erklären" (IDTE) bezeichnet.
-
IDTE
stellt beispielsweise eine Möglichkeit
zur Ungültigkeitserklärung und
zum Löschen
bereit, bei der ein oder mehrere Speicherbereiche oder -segmente über einen
oder mehrere Einträge
einer Bereichstabelle oder Segmenttabelle für ungültig erklärt werden und zumindest die
entsprechenden Einträge
(oder andere Einträge)
aus den TLBs (z. B. allen TLBs) in der Konfiguration gelöscht werden.
Der Befehl gibt einen Mindestsatz von zu löschenden TLB-Einträgen an.
In einer weiteren Ausführung
können
bei der Ausführung
des IDTE-Befehls mehr oder sogar alle TLB-Einträge gelöscht werden.
-
Eine
Ausführungsform
des Formates eines Befehls "DAT-Tabelleneintrag für ungültig erklären" (IDTE) wird mit
Bezugnahme auf 6a beschrieben. In einem Beispiel
enthält
ein IDTE-Befehl 600 beispielsweise einen Operationscode 602,
der den Befehl "DAT-Tabelleneintrag
für ungültig erklären" bezeichnet (z. B. 'B98E'x), und eine Vielzahl
von Registern 604 bis 608. Jedes der Register
wird im Folgenden mit Bezugnahme auf die 6b bis 6d ausführlicher
beschrieben.
-
Mit
Bezugnahme auf 6b weist das Register 606,
bei dem es sich um das Allgemeinregister R1 handelt, beispielsweise
ein Format eines Adressraum-Steuerelementes auf, wobei ein Tabellenursprung
(z. B. Bits 0 bis 51) und eine Kennzeichnungstypsteuerung (designation
type control) (Bits 60 und 61) verwendet werden. Die Bits 52 bis
59, 62 und 63 werden ignoriert. Insbesondere enthält R1 beispielsweise
einen Bereichstabellen- oder Segmenttabellenursprung zur Ungültigkeitserklärung 610,
der die Umsetzungstabelle bezeichnet, von der ein oder mehrere Einträge für ungültig erklärt werden
müssen;
und eine Kennzeichnungstypsteuerung (DT) 612, die den Typ
dieser Tabelle angibt (z. B. Bereichstabelle oder Segmenttabelle).
-
Das
Register 608 (6c), bei dem es sich um das
Allgemeinregister R2 handelt, enthält Folgendes: einen ersten
Bereichsindex 614, der eine Bereichstabelle der ersten
Ebene angibt; einen zweiten Bereichsindex 616, der eine
Bereichstabelle der zweiten Ebene angibt; und einen dritten Bereichsindex 618,
der eine Bereichstabelle der dritten Ebene angibt. Das heißt, um große virtuelle
Adressen unterbringen zu können,
werden drei Ebenen von Bereichstabellen verwendet. Außerdem enthält das Register
R2 Folgendes: einen Segmentindex 620, bei dem es sich um
einen Index in eine Segmenttabelle handelt; einen Modusanzeiger 621,
der die auszuführende
Funktion festlegt; und einen Anzeiger 622 für zusätzliche
Einträge,
der anzeigt, wie viele Einträge
für ungültig erklärt werden
müssen.
Beispielsweise enthalten die Bits 53 bis 63 des Allgemeinregisters R2
eine binäre
ganze Zahl, die die Anzahl von zusätzlichen, für ungültig zu erklärenden Tabelleneinträgen angibt.
In einem Beispiel beträgt
die Anzahl von für
ungültig
zu erklärenden
Einträgen
1 bis 2048, was einem Wert in den Bits 53 bis 63 von 0 bis 2047
entspricht. Die Bits 44 bis 51 des Allgemeinregisters R2 sind Nullen;
andernfalls wird ein Spezifikationsfehler erkannt. Folglich haben
die Bits 0 bis 43 des Allgemeinregisters R2 das Format des Bereichsindexes
und des Segmentindexes einer virtuellen Adresse. Der von der DAT
verwendete Teil der Bits 0 bis 43 zum Auswählen eines Eintrags in dem
vom Allgemeinregister R1 bezeichneten Typ von Tabelle wird als tatsächlicher
Ungültigkeitserklärungsindex
(Effective Invalidation Index) bezeichnet und im Folgenden ausführlicher
beschrieben.
-
Das
Register 604 (6d),
bei dem es sich um das Allgemeinregister R3 handelt, hat beispielsweise ein
Format eines Adressraum-Steuerelements, wobei der Tabellenursprung,
die Bits 0 bis 51, verwendet wird, falls er verschieden von null
ist. Dieser Tabellenursprung wird zum Auswählen zu löschender TLB-Einträge verwendet,
und der Typ von Tabelle, den er bezeichnet, ist unabhängig von
den Bits 60 und 61 des Allgemeinregisters R1. Die Bits 52 bis 63
des Allgemeinregisters R3 werden ignoriert. Falls R3 null ist, wird
der gesamte Inhalt des Allgemeinregisters 0 ignoriert. In einem
Beispiel können
die zu löschenden
Einträge
gleich den oder verschieden von den für ungültig erklärten Einträgen sein.
-
Eine
Ausführungsform
der einem Ungültigkeitserklärungs- und
Löschvorgang
zugeordneten Logik wird mit Bezugnahme auf die 7a bis 7b beschrieben.
In einem Beispiel wird ein Ungültigkeitserklärungs- und
Löschvorgang
angegeben, wenn das Bit 52 des Allgemeinregisters R2 null ist. Bei
diesem Vorgang wird der bezeichnete Bereichstabelleneintrag oder
Segmenttabelleneintrag im Speicher oder ein Bereich von Einträgen beginnend
mit dem bezeichneten Eintrag für
ungültig
erklärt,
und die zugeordneten Einträge
(oder andere Einträge)
werden aus den Adressumsetzpuffern (TLBs) in den CPUs der Konfiguration
gelöscht.
In einem Beispiel werden im Falle von mehreren Ebenen alle Ebenen
der Puffer in allen CPUs gelöscht.
-
Mit
Bezugnahme auf 7a wird anfangs ein Bereichstabellen- oder Segmenttabellenursprung
angegeben, der eine Bereichstabelle oder Segmenttabelle bezeichnet,
aus der ein oder mehrere Einträge
für ungültig erklärt werden
müssen,
SCHRITT 700. In einem Beispiel wird dies im Allgemeinregister R1
angegeben. Außerdem
wird ein Tabelleneintrag im Speicher zur Ungültigkeitserklärung ausgewählt, SCHRITT 702.
In einem Beispiel wird ein Tabelleneintrag gekennzeichnet, indem
der Tabelleneintrag im Allgemeinregister R1 hinzugefügt wird
und der tatsächliche
Ungültigkeitserklärungsindex
im Allgemeinregister R2 gesetzt wird, wobei verschiedene Regeln
befolgt werden, wie hierin beschrieben wird.
-
Die
Bits 60 und 61 des Allgemeinregisters R1 geben folgendermaßen einen
Tabellentyp und einen tatsächlichen
Ungültigkeitserklärungsindex
an:
Bits
60 und 61 von Reg. R1 | Tabellentyp | Tatsächlicher
Ungültigkeitserklärungsindex
im Register R2 |
11 | Erste
Bereichstabelle | Erster
Bereichsindex (Bits 0 bis 10) |
10 | Zweite
Bereichstabelle | Zweiter
Bereichsindex (Bits 11 bis 21) |
01 | Dritte
Bereichstabelle | Dritter
Bereichsindex (Bits 22 bis 32) |
00 | Segmenttabelle | Segmentindex
(Bits 33 bis 43) |
-
(Der
Teil der Bits 0 bis 43 rechts vom tatsächlichen Ungültigkeitserklärungsindex
wird ignoriert.)
-
Mit
Bezugnahme auf die obige Tabelle wird der Teil des ersten Bereichsindexes
von R2 in Verbindung mit dem ersten Bereichstabellenursprung von
R1 zum Auswählen
eines Eintrags in einer ersten Bereichstabelle verwendet, wenn die
Bits 60 und 61 den binären
Wert 11 haben. Der Tabellenursprung wird als 64-Bit-Adresse behandelt.
-
Die
64-Bit-Adresse des ersten Bereichstabelleneintrags in realem oder
absolutem Speicher wird durch Anhängen von zwölf Nullen rechts an die Bits
0 bis 51 der Bezeichnung der ersten Bereichstabelle und Addieren
des ersten Bereichsindexes erhalten, wobei drei niedrigstwertige
und fünfzig
höchstwertige
Nullen angehängt
werden. Diese Addition wird gemäß den Regeln
für eine
64-Bit-Arithmetik ausgeführt,
unabhängig
vom aktuellen Adressiermodus, der von den Bits 31 und 32 des aktuellen
Programmstatuswortes (Program Status Word – PSW) angegeben wird. Wenn
während
der Addition eine Übertragausgabe
der Bitposition null stattfindet, wird sie ignoriert. Die aus diesen
beiden Komponenten gebildete Adresse ist eine reale oder absolute Adresse.
Alle 64 Bits der Adresse werden verwendet, ungeachtet dessen, ob
das aktuelle PSW den 24-Bit-, den 31-Bit- oder den 64-Bit-Adressiermodus
angibt.
-
In
einem Beispiel wird der gesamte erste Bereichstabelleneintrag gleichzeitig
aus dem Speicher abgerufen, wie von anderen CPUs beobachtet wird.
Der Abrufzugriff auf den Eintrag ist einem schlüsselgesteuerten Schutz unterworfen,
und der Speicherzugriff ist einem schlüsselgesteuerten Schutz und
einem Startadressenschutz (low address protection) unterworfen.
Wenn die zum Abrufen des ersten Bereichstabelleneintrags erzeugte
Speicheradresse eine Position bezeichnet, die in der Konfiguration
nicht verfügbar
ist, wird ein Adressierfehler erkannt und die Arbeitseinheit unterdrückt.
-
Wenn
die Bits 60 und 61 den binären
Wert 10 haben, wird der zweite Bereichsindex von R2 in Verbindung
mit dem zweiten Bereichstabellenursprung von R1 verwendet, um einen
Eintrag aus der zweiten Bereichstabelle auszuwählen. Der Suchprozess in der
zweiten Bereichstabelle ist ähnlich
wie der Suchprozess in der ersten Bereichstabelle. Wenn keine Fehler
erkannt werden, kennzeichnet der aus der zweiten Bereichstabelle abgerufene
Eintrag den Beginn und gibt den Versatz (offset) und die Länge der
entsprechenden dritten Bereichstabelle an.
-
Wenn
die Bits 60 und 61 den binären
Wert 01 haben, wird der Teil des dritten Bereichsindexes von R2 in
Verbindung mit dem dritten Bereichstabellenursprung von R1 verwendet,
um einen Eintrag aus der dritten Bereichstabelle auszuwählen. Die
Suchprozess in der dritten Bereichstabelle ist ähnlich wie der Suchprozess in
der ersten Bereichstabelle. Wenn keine Fehler erkannt werden, kennzeichnet
der aus der dritten Bereichstabelle abgerufene Eintrag den Beginn
und gibt den Versatz und die Länge
der entsprechenden Segmenttabelle an.
-
Wenn
die Bits 60 und 61 den binären
Wert 00 haben, wird der Segmentindexteil von R2 in Verbindung mit
dem Segmenttabellenursprung von R1 verwendet, um einen Eintrag aus
der Segmenttabelle auszuwählen. Die
Suchprozess in der Segmenttabelle ist ähnlich wie der Suchprozess
in der ersten Bereichstabelle. Wenn keine Fehler erkannt werden,
kennzeichnet der aus der Segmenttabelle abgerufene Eintrag den Beginn
der entsprechenden Seitentabelle.
-
In
einem Beispiel wird der gesamte Tabelleneintrag gleichzeitig aus
dem Speicher abgerufen. Anschließend wird der Eintrag für ungültig erklärt, SCHRITT 704.
In einem Beispiel wird der Eintrag durch Setzen von Bit 58 des Eintrags
auf eine binäre
1 für ungültig erklärt. Durch
die Ungültigkeitserklärung dieses
Eintrags wird die entsprechende Speichereinheit für ungültig erklärt.
-
Anschließend wird
festgestellt, ob weitere Einträge
für ungültig erklärt werden
müssen,
ANFRAGE 706. In einem Beispiel wird dies durch Überprüfen der
Bits 53 bis 63 des Allgemeinregisters R2 festgestellt. Falls die
Bits 53 bis 63 des Allgemeinregisters R2 nicht alle null sind, müssen weitere
Einträge
für ungültig erklärt werden.
Folglich wird zu dem zuvor verwendeten Wert des tatsächlichen
Ungültigkeitserklärungsindexes eine
1 addiert, und die Verarbeitung geht weiter mit dem SCHRITT 700.
Dies wird wiederholt, so dass ein Eintrag mehr als die von den Bits
53 bis 63 angegebene Anzahl von Einträgen für ungültig erklärt werden. Eine Übertragausgabe
der höchstwertigen
Bitposition des tatsächlichen
Ungültigkeitserklärungsindexes
wird ignoriert, und in diesem Fall erfolgt eine zyklische Aufeinanderfolge
(wraparound) in der Tabelle. Der Inhalt des Allgemeinregisters R2
bleibt unverändert.
-
Im
Anschluss an die Ungültigkeitserklärung des
einen oder der mehreren Einträge
löscht
diese CPU gemäß einem
weiteren Aspekt der vorliegenden Erfindung ausgewählte Einträge aus ihrem
TLB und signalisiert den anderen CPUs in der Konfiguration, ausgewählte Einträge aus ihren
TLBs zu löschen,
SCHRITT 708. In einem Beispiel werden zumindest jene kombinierten
Bereichs- und Segmenttabelleneinträge (Combined Region
and Segment Table entries – CRSTEs)
aus jedem TLB gelöscht,
die die folgenden Bedingungen erfüllen:
Der tatsächliche
Ungültigkeitserklärungsindex
und die Bits links von diesem im Allgemeinregister R2 sowie der gleiche
Teil des Bereichs- und Segmentindexfeldes im TLB-Eintrag stimmen überein.
(Falls diese Felder Segmentindexfelder beinhalten, können in
einer Ausführungsform
CRSTEs entweder unabhängig
von ihren Bereichsindexfeldern gelöscht werden oder alle CRSTEs
können
gelöscht
werden. Falls die Felder keine Segmentindexfelder beinhalten, können alle
CRSTEs gelöscht
werden.) Es sei darauf hingewiesen, dass der tatsächliche
Ungültigkeitserklärungsindex
erhöht
wird und eine Übertragausgabe
der höchstwertigen
Bitposition des Indexes verloren geht, wenn mehrere Tabelleneinträge auf der
Grundlage der Bits 53 bis 63 des Allgemeinregisters R2 für ungültig erklärt werden.
-
Entweder
ist R3 gleich null oder das Tabellenursprungsfeld im Allgemeinregister
R3 stimmt mit dem Tabellenursprungsfeld im TLB-Eintrag überein.
-
Falls
der für
ungültig
erklärte
Eintrag ein Segmenttabelleneintrag ist, stimmt das Seitentabellenursprungsfeld
im für
ungültig
erklärten
Eintrag mit dem Seitentabellenursprungsfeld im TLB-Eintrag überein.
(In einer Ausführungsform
kann ein TLB-Eintrag ungeachtet des Seitentabellenursprungs im Eintrag
gelöscht
werden.)
-
Außerdem werden
aus jedem TLB zumindest jene Seitentabelleneinträge gelöscht, in denen das Seitentabellenursprungsfeld
mit dem Seitentabellenursprungsfeld in (1) dem für ungültig erklärten Segmenttabelleneintrag,
falls ein Segmenttabelleneintrag für ungültig erklärt wurde, oder (2) jedem kombinierten
Bereichs- und Segmenttabelleneintrag,
der im gleichen TLB gelöscht
wurde (er befindet sich in dem zu löschenden Satz). (In einer anderen
Ausführungsform
kann die Ausführung
einen Seitentabelleneintrag ungeachtet des Seitentabellenursprungs
im Eintrag löschen.)
Das heißt,
alle Seitentabelleneinträge
können
gelöscht
werden.
-
Eine
Ausführungsform
der dem Löschen
von Einträgen
aus einem TLB zugeordneten Logik wird mit Bezugnahme auf 7b beschrieben.
Beispielsweise ist dies eine Fortsetzung der vom IDTE ausgeführten Verarbeitung
und wird zur Ungültigkeitserklärung ausgeführt, wie
von dieser CPU und anderen CPUs im System beobachtet wird.
-
Mit
Bezugnahme auf 7b erfolgt anfänglich eine
Feststellung, ob R3 gleich null ist, ANFRAGE 720. Falls
R3 verschieden von null ist, wird ein Bereichstabellen- oder ein
Segmenttabellenursprung zum Löschen im
Register R3 angezeigt, und zum Löschen
eines TLB-Eintrags muss der im Register R3 bezeichnete Bereichs-/Segmenttabellenursprung
mit dem zum Erzeugen des Eintrags verwendeten Bereichs-/Segmenttabellenursprung übereinstimmen,
SCHRITT 722. Falls R3 null ist, wird der Inhalt des Registers
R3 (Register 0) ignoriert, und ein Eintrag wird ungeachtet des zum
Erzeugen des Eintrags verwendeten Bereichs-/Segmenttabellenursprungs
gelöscht,
SCHRITT 724.
-
Jene
Einträge,
die von dem im Register R2 angegebenen Bereichs-/Segmentindex angegeben
werden, werden in allen Prozessoren im System aus dem TLB gelöscht, SCHRITT 726.
In einem Beispiel werden zumindest jene kombinierten Bereichs- und Segmenttabelleneinträge aus dem
TLB gelöscht,
in denen zum Beispiel der tatsächliche
Ungültigkeitserklärungsindex
und die Bits links von diesem im Allgemeinregister R2 sowie der
gleiche Teil der Bereichs- und Segmentindextabelle im TLB-Eintrag übereinstimmen.
Um einen Eintrag zu löschen,
wird beispielsweise das V-Bit abgeschaltet.
-
Falls
ein Segmenttabelleneintrag für
ungültig
erklärt
wird, werden aus den TLBs in allen Prozessoren im System außerdem Seitentabelleneinträge gelöscht, in
denen der Seitentabellenursprung im Eintrag gleich dem Seitentabellenursprung
im TLB ist, SCHRITT 728. Falls ein Segmenttabelleneintrag
für ungültig erklärt wird,
werden außerdem
zumindest jede Seitentabelleneinträge aus den TLBs gelöscht, in
denen das Seitentabellenursprungsfeld mit dem Seitentabellenursprungsfeld
in jedem CRSTE übereinstimmt,
der (z. B. notwendigerweise) im gleichen TLB gelöscht wurde, SCHRITT 730.
Dieser Löschprozess
wird für
einen Eintrag mehr als die im Feld 622 "Zusätzliche
Einträge" von 6c angegebene
Anzahl von Einträgen
wiederholt, SCHRITT 732.
-
Anschließend erfolgt
eine Feststellung, ob der Ungültigkeitserklärungs- und
Löschvorgang
beendet ist, ANFRAGE 734. In einem Beispiel ist der IDTE-Befehl
im ausgebenden Prozessor erst beendet, wenn die gekennzeichneten
TLB-Einträge
in dieser CPU gelöscht
wurden und alle anderen CPUs im System alle Speicherzugriffe unter
Verwendung des in diesem Befehl angegebenen TLB-Eintrags beendet
haben. In einem Beispiel zeigt die im Wartemodus befindliche Steuereinheit
diesem ausgebenden Prozessor an, ob die anderen Prozessoren ihre
Zugriffe beendet haben. Das heißt,
der ausgebende Prozessor wird als Hauptprozessor betrachtet, und
alle vom IDTE-Befehl betroffenen untergeordneten Prozessoren zeigen
der Steuereinheit ihren Status an. Auf den Empfang des entsprechenden
Status von den untergeordneten Prozessoren hin zeigt die Steuereinheit
dem Hauptprozessor die Beendigung an. Falls die Verarbeitung beendet
ist, endet der Befehl, SCHRITT 736. Andernfalls wartet
der Prozessor eine festgelegte Zeitspanne und überprüft den Status erneut oder wird
hinsichtlich der Beendigung benachrichtigt, ANFRAGE 734.
-
In
einer Ausführungsform
finden das Speichern im Bereichs- oder
Segmenttabelleneintrag und das Löschen
von TLB-Einträgen
möglicherweise
nicht statt, falls das Ungültigkeitsbit
im Bereichs- oder Segmenttabelleneintrag bereits eins war.
-
Obwohl
in der oben beschriebenen Ausführungsform
das Löschen
der TLB-Einträge
im Anschluss an die Ungültigkeitserklärung der
gewünschten
Einträge
ausgeführt
wird, kann das Löschen
von TLB-Einträgen in
anderen Ausführungsformen
nach jeder Ungültigkeitserklärung, nach
einer ausgewählten
Anzahl von Ungültigkeitserklärungen usw.
erfolgen.
-
Unter
einem weiteren Aspekt der vorliegenden Erfindung kann der IDTE-Befehl
alternativ zum Löschen
von TLB-Einträgen
verwendet werden, die einem Adressraum zugeordnet sind (der z. B.
von einem Adressraum-Steuerelement (ASCE) bezeichnet wird). In einem
Beispiel wird diese Möglichkeit
durch das Setzen des Bit 52 des Allgemeinregisters R2 auf 1 angezeigt.
Bei dieser Möglichkeit
werden der Inhalt des Allgemeinregisters R1 (siehe 8a)
sowie die Bits 0 bis 43 und 53 bis 63 des Allgemeinregisters R2
(siehe 8b) ignoriert. Der Inhalt des
Allgemeinregisters R3 hat das Format eines Adressraum-Steuerelements, wobei
der Tabellenursprung, die Bits 0 bis 51, verwendet werden (8c).
Die Bits 52 bis 63 des Allgemeinregisters R3 werden ignoriert. R3
kann null oder verschieden von null sein; das heißt, jedes
das Register 0 enthaltende Allgemeinregister kann gekennzeichnet
werden. Dieser Vorgang führt
keine Ungültigkeitserklärung von
Speicher aus, sondern löscht
mindestens jene kombinierten Bereichs- und Segmenttabelleneinträge und Seitentabelleneinträge, in denen
das Tabellenursprungsfeld mit dem Tabellenursprungsfeld im Allgemeinregister
R3 übereinstimmt,
aus den TLBs der CPUs. (In einer weiteren Ausführungsform kann die Ausführung einen
Seitentabelleneintrag ungeachtet des Tabellenursprungs im Eintrag
löschen.
Das heißt,
alle Seitentabelleneinträge
können
gelöscht
werden.)
-
Eine
Ausführungsform
der einem Löschvorgang
durch einen ASCE-Vorgang
zugeordneten Logik wird mit Bezugnahme auf 9 beschrieben.
Zu Beginn wird ein Bereichstabellen- oder Segmenttabellenursprung angegeben,
der eine Bereichstabelle oder Segmenttabelle kennzeichnet, für die entsprechende
TLB-Einträge gelöscht werden
müssen,
SCHRITT 900. In einem Beispiel wird dies in den Bits 0
bis 51 des Allgemeinregisters R3 angegeben. Anschließend werden
zumindest die kombinierten Bereichs- und Segmenttabelleneinträge und die
Seitentabelleneinträge,
die dem in R3 angegebenen Tabellenursprung entsprechen, in allen
Prozessoren im System gelöscht,
SCHRITT 902.
-
Anschließend erfolgt
eine Feststellung, ob die Ausführung
des IDTE-Befehls beendet ist, ANFRAGE 904. In einer Ausführungsform
ist der IDTE-Befehl im ausgebenden Prozessor erst beendet, wenn
die den angegebenen Parametern entsprechenden TLB-Einträge in der
ausgebenden CPU gelöscht
wurden und die anderen CPUs in der Konfiguration alle Speicherzugriffe,
einschließlich
der Aktualisierung von Änderungs-
und Bezugsbits, unter Verwendung von den angegebenen Parametern
entsprechenden TLB-Einträgen
beendet haben. Falls die Einträge
gelöscht
wurden und die Speicherzugriffe beendet sind, ist die Ausführung des
IDTE-Befehls beendet,
SCHRITT 906. Andernfalls wartet der Prozessor eine festgelegte
Zeitspanne und prüft den
Status erneut oder wird hinsichtlich der Beendigung benachrichtigt,
ANFRAGE 904.
-
Die
mit einem IDTE-Befehl verbundene Verarbeitung wird oben ausführlich beschrieben.
In einer Ausführungsform
wirken sich die Vorgänge
nicht unbedingt auf TLB-Einträge
im realen Speicher aus. Im Folgenden werden zusätzliche Informationen, Verbesserungen
und/oder der Verarbeitung einer Ausführungsform eines IDTE-Befehls
zugeordnete Ausführungsformen
bereitgestellt.
- 1. Das selektive Löschen von
TLB-Einträgen
kann in Abhängigkeit
vom Modell oder der ausgewählten
Ausführungsform
auf verschiedene Arten ausgeführt
werden. Im Allgemeinen können
beispielsweise mehr Einträge
als die angegebene Mindestanzahl gelöscht werden. Wenn der Ungültigkeitserklärungs- und
Löschvorgang
ausgeführt
wird, können
alle kombinierten Bereichs- und Segmenttabelleneinträge (CRSTEs)
gelöscht
werden, die einen Segmentindex enthalten, der gleich einem tatsächlichen
Ungültigkeitserklärungsindex
ist, bei dem es sich um einen Segmentindex handelt, oder alle CRSTEs
können
gelöscht
werden, wenn der tatsächliche
Ungültigkeitserklärungsindex
kein Segmentindex ist. Außerdem
kann ein CRSTE oder ein Seitentabelleneintrag ungeachtet des Seitentabellenursprungs
im Eintrag gelöscht werden.
Wenn der Vorgang des Löschens
durch einen ASCE-Vorgang
ausgeführt
wird, kann ein Seitentabelleneintrag ungeachtet des Tabellenursprungs
im Eintrag gelöscht
werden. In einer Ausführungsform
kann bei der Ausführung
des Vorgangs die genaue erforderliche Mindestanzahl von Einträgen gelöscht werden.
- 2. Ein Adressraum-Steuerelement kann einen Token-Ursprung im
realen Speicher statt eines Bereichstabellen- oder Segmenttabellenursprungs
enthalten. Ein Tabellenursprung im Allgemeinregister R3 ist von
einem Token-Usprung im Register nicht zu unterscheiden.
- 3. Wenn der Ungültigkeitserklärungs- und
Löschvorgang
angegeben wird, kann beim Löschen
von TLB-Einträgen
der Seitentabellenursprung in einem Segmenttabelleneintrag verwendet
werden. Falls der Segmenttabelleneintrag im verbundenen Zustand
einen Seitentabellenursprung enthielt, der sich vom aktuellen Wert
unterscheidet, können
daher Kopien von Einträgen,
die die vorherigen Werte enthalten, im TLB verbleiben.
- 4. Wenn der Ungültigkeitserklärungs- und
Löschvorgang
angegeben wird, ist die Adresse des DAT-Tabelleneintrags für den IDTE
eine 64-Bit-Adresse, und die Adressarithmetik wird durch Befolgen
der normalen Regeln für
eine 64-Bit-Adressarithmetik
ausgeführt
mit einer zyklischen Aufeinanderfolge bei 264 – 1. Außerdem werden
die Versatz- und
Längenfelder
nicht verwendet. Dementsprechend müssen die DAT-Tabellen nicht
von maximalen Speicherpositionen bis zur Position 0 angegeben werden,
und der erste gekennzeichnete Eintrag und alle zusätzlichen
durch die Bits 63 bis 63 des Allgemeinregisters R3 angegebenen Einträge müssen in
der gekennzeichneten Tabelle liegen.
- 5. Der IDTE-Befehl wird unter SIE erfasst. In einer Ausführungsform
wird das System serialisiert, so dass der den IDTE-Befehl ausführende Prozessor
den Vorgang erst beginnen kann, wenn die anderen Prozessoren die
Verwendung der anzugebenden TLB-Einträge gestoppt haben. Außerdem setzt
der den IDTE-Befehl ausführende
Prozessor die weitere Ausführung
erst fort, wenn die entsprechenden Einträge aus den TLBs aller Prozessoren
im System gelöscht
wurden.
- 6. Eine Serialisierungsfunktion wird vor dem Beginn des Vorgangs
und erneut nach Beendigung des Vorgangs ausgeführt. Die Serialisierung wird
auf diese CPU angewandt; andere CPUs werden nicht notwendigerweise
serialisiert.
-
Oben
wird ein Beispiel eines Befehls, der Einträge einer Segment- oder einer
Bereichstabelle für
ungültig
erklären
und zumindest die entsprechenden Einträge (oder andere Einträge) aus
einem oder mehreren Adressumsetzpuffern löschen kann, ausführlich beschrieben.
Es können
andere Operationscodes, andere Felder, andere Register oder auch
keine Register, andere Bits usw. verwendet werden. Beispielsweise
können andere
Befehlssatzarchitekturen einen gleichwertigen Befehl auf andere
Art und Weise definieren (z. B. Verwendung anderer Operationscodes,
anderer Felder im Befehl, anderer Register usw.), ein oder mehrere
Aspekte der vorliegenden Erfindung finden dennoch Anwendung. Wie
oben beschrieben wird, finden ein oder mehrere Aspekte der vorliegenden
Erfindung außerdem gleichermaßen Anwendung
bei einer Softwareemulation einer Zielarchitektur, beispielsweise
der z/Architektur von IBM. In diesem Fall kann es sich bei den oben erläuterten
TLBs um ein Feld oder eine andere Datenstruktur handeln, die vom
Softwareemulator realisiert wird, um neue Abbildungen von virtuellen
auf reale Adressen zwischenzuspeichern. Außerdem ist es möglich, dass
die Emulatorsoftware keine einem TLB entsprechende Struktur realisiert.
In diesem Fall ist möglicherweise
nur die Ungültigkeitserklärung von
Einträgen
im Speicher anwendbar.
-
Folglich
wird hierin ein Befehl bereitgestellt, der Speicher für ungültig erklären, Speicher
für ungültig erklären und
Puffereinträge
löschen
oder Puffereinträge
löschen
kann. Daher sind ein oder mehrere Register des Befehls als Nicht-Vorgänge (no-ops)
konfigurierbar. Das heißt,
die Daten in jenen Registern, die einem bestimmten Vorgang (z. B.
Ungültigkeitserklärung, Löschen usw.)
zugeordnet sind, der nicht bereitgestellt wird, werden gegebenenfalls
ignoriert oder zeigen an, dass der Vorgang nicht ausgeführt wird.
-
Obwohl
oben ein bestimmter Befehl beschrieben wird, bei dem eine Ungültigkeitserklärung, eine
Ungültigkeitserklärung und
ein Löschvorgang
oder ein Löschvorgang
bereitgestellt werden, kann der Befehl geändert oder andere Befehle können ausgeführt werden,
die nur einen oder mehrere Aspekte der von IDTE vorgesehen Vorgänge ausführen. Beispielsweise
kann ein Befehl lediglich die Ungültigkeitserklärung von
Speicher ausführen.
Als weiteres Beispiel kann der Befehl lediglich Einträge aus Puffern
löschen,
die bestimmten Segment- oder Bereichstabellen zugeordnet sind. Als
noch ein weiteres Beispiel kann ein Befehl ausgeführt werden,
der lediglich Einträge
auf der Grundlage von Adressraum löscht.
-
In
einer handelsüblichen
Ausführung
des computerarchitekturdefinierten Befehlsformates der Ungültigkeitserklärungs- und/oder
Löscheinrichtung
werden die Befehle von Programmierern verwendet, beispielsweise
von Betriebssystemprogrammierern, die sich der Sprache Assembler
bedienen. Diese in einem Speichermedium gespeicherten Befehlsformate
können
ursprünglich
in einem IBM Server mit einer z/Architektur oder alternativ in Maschinen
mit anderen Architekturen ausgeführt
werden. Sie können
in vorhandenen und in künftigen
Großrechnerservern
von IBM und in anderen Maschinen von IBM (z. B. Servern der P-Serie
und X-Serie) emuliert werden. Sie können in Maschinen mit dem Betriebssystem
Linux in einer großen
Vielfalt von Maschinen unter Verwendung von Hardware, die von IBM,
Intel, AMD, Sun Microsystems u. a. hergestellt wird, ausgeführt werden.
Neben der Ausführung
in der Hardware unter der z/Architektur kann Linux verwendet werden
sowie Maschinen, die eine Emulation von Hercules, UMX, FXI oder
Platform Solutions verwenden, wobei die Ausführung im Allgemeinen in einem
Emulationsmodus erfolgt.
-
Im
Emulationsmodus wird der emulierte spezifische Befehl decodiert
und eine Teilroutine erstellt, um den einzelnen Befehl auszuführen, wie
in einer C-Teilroutine oder einem Treiber, oder es wird ein anderes
Verfahren verwendet, um einen Treiber für die spezifische Hardware
bereitzustellen, was für
Fachleute nach dem Verständnis
der Beschreibung einer Ausführungsform
der Erfindung möglich
ist. Verschiedene Patente der Software- und Hardwareemulation, darunter – jedoch nicht
ausschließlich – das
US-Patent Nr. 5 551 013 ,
das
US-Patent Nr. 6 009 261 , das
US-Patent Nr. 5 574 873 ,
das
US-Patent Nr. 6 308 255 , das
US-Patent Nr. 6 463 582 und
das
US-Patent Nr. 5 790 825 , zeigen
eine Vielfalt bekannter Möglichkeiten
zum Ausführen
der Emulation eines Befehlsformates, dessen Architektur für eine andere
Maschine definiert ist, für
eine Fachleuten zur Verfügung
stehende Zielmaschine sowie jene handelsüblichen Softwareverfahren,
die von den oben Genannten verwendet werden.
-
Ein
oder mehrere Aspekte der vorliegenden Erfindung steigern vorteilhafterweise
die Systemleistung. Durch das selektive Löschen von Einträgen aus
Puffern statt eines vollständigen
Löschens
der Puffer wird die Systemleistung beispielsweise erhöht, indem
kein unnötiges
erneutes Erstellen von Einträgen
erforderlich wird. Das heißt,
zum Erstellen eines TLB-Eintrags werden 20 bis hunderte von Zyklen
benötigt,
und durch das selektive Löschen
fällt das
unnötige
erneute Erstellen von Einträgen
weg.
-
Ein
weiterer Vorteil besteht darin, dass die Ausführung ein Überlöschen ermöglicht, falls ein kompletter TLB-Löschvorgang
gewünscht
wird. Außerdem
kann der TLB-Teil als Nicht-Vorgang behandelt werden, falls ein
TLB beispielsweise nicht verwendet wird. Vorteilhafterweise kann
der IDTE-Befehl in Form von Hardware, Firmware, Software oder einer
Kombination aus diesen ausgeführt
werden, oder er kann in einem Emulator eines Zielcomputerbefehlssatzes
verwendet werden.
-
Ein
oder mehrere Aspekte der vorliegenden Erfindung finden beispielsweise
gleichermaßen
Anwendung bei der Emulation virtueller Maschinen, wobei eine oder
mehrere auslagerbare Einheiten (pageable entities) (z. B. Gäste) in
einem oder mehreren Prozessoren ablaufen. Beispielsweise werden
auslagerbare Gäste von
der Architektur "Start
Interpretive Execution (SIE)" definiert,
wobei ein Beispiel hierfür
in einer Veröffentlichung
von IBM mit dem Titel "IBM
System/370 Extended Architecture",
IBM Veröffentlichung
Nr. SA22-7095 (1985), beschrieben wird.
-
Obwohl
SIE und die z/Architektur oben erwähnt wurden, können ein
oder mehrere Aspekte der vorliegenden Erfindung gleichermaßen in anderen
Architekturen und/oder Umgebungen, die auslagerbare Einheiten oder ähnliche
Konstrukte verwenden, angewandt werden.
-
Außerdem sind
die verschiedenen oben beschriebenen Ausführungsformen lediglich Beispiele.
Obwohl hierin eine logisch partitionierte Umgebung beschrieben wird,
ist dies lediglich ein Beispiel. Aspekte der Erfindung sind für viele
Typen von Umgebungen nützlich,
darunter andere Umgebungen, die eine Vielzahl von Zonen aufweisen,
sowie nichtpartitionierte Umgebungen. Außerdem sind möglicherweise
keine Zentralprozessorkomplexe vorhanden, sondern mehrere miteinander
verbundene Prozessoren. Außerdem
sind ein oder mehrere Aspekte der Erfindung auf Umgebungen mit einem
einzigen Prozessor anwendbar.
-
Obwohl
hierin bestimmte Umgebungen beschrieben werden, können viele Änderungen
an diesen Umgebungen vorgenommen werden. Falls die Umgebung logisch
partitioniert ist, können
beispielsweise mehr oder weniger logische Partitionen in die Umgebung
aufgenommen werden. Außerdem
können
mehrere miteinander verbundene Zentralprozessorkomplexe vorliegen.
-
Dies
sind nur einige der Änderungen,
die vorgenommen werden können.
Andere zusätzliche Änderungen
sind möglich.
Obwohl die hierin beschriebene Steuereinheit den Befehl so serialisiert,
dass zu einem bestimmten Zeitpunkt ein IDTE-Befehl ausgeführt wird,
können
in einer anderen Ausführungsform
beispielsweise mehrere Befehle gleichzeitig ausgeführt werden.
Außerdem
kann die Umgebung mehrere Steuereinheiten beinhalten. Oder aber
mehrere im Wartemodus befindliche Anforderungen (quiesce requests)
(von einer oder mehreren Steuereinheiten) können gleichzeitig im System
ausstehend sein. Weitere Änderungen
sind möglich.
-
Gemäß der vorliegenden
Verwendung beinhaltet der Begriff "Verarbeitungseinheit" auslagerbare Einheiten, beispielsweise
Gäste;
Prozessoren; Emulatoren; und/oder andere ähnliche Komponenten. Außerdem bedeutet
der Begriff "durch
eine Verarbeitungseinheit" im
Auftrag einer Verarbeitungseinheit. Der Begriff "Puffer" beinhaltet einen Speicherbereich sowie
verschiedene Typen von Datenstrukturen, darunter – jedoch
nicht ausschließlich – Felder;
und der Begriff "Tabelle" kann andere Datenstrukturen
als Strukturen vom Tabellentyp beinhalten. Außerdem kann der Befehl andere
Strukturen als Register zum Kennzeichnen von Daten enthalten. Außerdem kann
eine Seite, ein Segment und/oder ein Bereich eine andere Größe als die
hierin beschriebene haben.
-
Eine
oder mehrere Funktionseigenschaften der vorliegenden Erfindung können in
Form von Software, Firmware, Hardware oder einer Kombination aus
diesen ausgeführt
werden. Außerdem
können
eine oder mehrere der Funktionseigenschaften emuliert werden.
-
Ein
oder mehrere Aspekte der vorliegenden Erfindung können in
einem hergestellten Gegenstand (z. B. einem oder mehreren Computerprogrammprodukten)
enthalten sein, der beispielsweise in einem Computer verwendbare
Medien aufweist. Die Medien enthalten beispielsweise ein computerlesbares
Programmcodemittel (z. B. Befehle, einen Code usw.) zum Bereitstellen
und Ermöglichen
der Funktionseigenschaften der vorliegenden Erfindung. Der hergestellte
Gegenstand kann als Teil eines Computersystems enthalten sein oder
gesondert verkauft werden.
-
Außerdem kann
mindestens eine Programmspeichereinheit bereitgestellt werden, die
von einer Maschine gelesen werden kann, die mindestens ein Programm
mit in der Maschine ausführbaren
Befehlen enthält,
um die Funktionseigenschaften der vorliegenden Erfindung auszuführen.
-
Die
hierin gezeigten Flussdiagramme sind lediglich Beispiele. An diesen
Diagrammen oder an den darin beschriebenen Schritten (oder Vorgängen) können viele Änderungen
vorgenommen werden. Beispielsweise können die Schritte in einer
anderen Reihenfolge ausgeführt
werden, oder es können
Schritte hinzugefügt, gelöscht oder
geändert
werden.