-
Diese
Erfindung betrifft im Allgemeinen die Verarbeitung in einer Datenverarbeitungsumgebung
und insbesondere das Ungültigmachen
von einem oder mehreren Einträgen
im Speicher und das Löschen
von einem oder mehreren Einträgen
im Pufferspeicher sowie einen Befehl hierfür.
-
Vorhandene
Datenverarbeitungsumgebungen verwenden einen virtuellen Speicher,
der normalerweise im Zusatzspeicher verwaltet wird, um die Größe des verfügbaren Speichers
zu erhöhen.
Wenn auf eine Seite des virtuellen Speichers verwiesen wird, wird
die beim Verweis auf die Seite verwendete virtuelle Adresse mittels
dynamischer Adressenumsetzung in eine reale Speicheradresse umgesetzt.
Bei erfolgreicher Umsetzung ist dann der virtuelle Speicher gültig; andernfalls
ist er ungültig.
Eine Seite des virtuellen Speichers wird von einem Ungültig-Bit
in einem Seitentabelleneintrag als gültig oder ungültig gekennzeichnet,
der eine reale Speicheradresse enthält, wenn die Seite gültig ist.
-
Speicherseiten
können
jeweils seitenweise ungültig
gemacht werden. In einer Datenverarbeitungsumgebung, die auf der
z/Architecture beruht, welche von der International Business Machines
Corporation angeboten wird, wird beispielsweise eine Seite des Speichers
mit einem Befehl, der als Invalidate-Page-Table-Entry-(IPTE-)Befehl (Befehl zum
Ungültigmachen
eines Seitentabelleneintrags) bezeichnet wird, ungültig gemacht.
Beim Ungültigmachen
wird ein Ungültig-Anzeiger
in einer Steuerstruktur, die zu dem virtuellen Speicher gehört und sich
im physischen Hauptspeicher befindet, gesetzt, um anzuzeigen, dass
eine virtuelle Adresse eines Speicherplatzes in dem virtuellen Speicher
nicht mittels dynamischer Adressenumsetzung in eine physikalische
Adresse des Hauptspeichers, die auch als reale Adresse bezeichnet
wird, umgesetzt werden kann. Überdies
wird der Befehl zum Löschen
von internen Rechnerpufferspeicher-Einträgen verwendet, die zu der Seite
gehören
und die während
der dynamischen Adressenumsetzung verwendet werden können, um
zu verhindern, dass auf die Steuerstrukturen im physischen Hauptspeicher
zugegriffen wird. Bei der z/Architecture beispielsweise werden während der
dynamischen Adressenumsetzung von virtuellen Adressen in reale Adressen
Adressenumsetzungs-Pufferspeicher
(Translation Lookaside Buffers (TLBs) verwendet. Wenn eine Seite des
Speichers ungültig
gemacht wird, werden die zu dieser Seite gehörenden Einträge auch
aus den entsprechenden Pufferspeichern gelöscht.
-
Es
gibt auch Befehle, mit denen der gesamte Inhalt von Adressenumsetzungs-Pufferspeichern
gelöscht
werden kann. Bei der z/Architecture beispielsweise löscht ein
Befehl, der als Compare-and-Swap-and-Purge-(CSP-)Befehl bezeichnet
wird, alle Einträge
von Adressenumsetzungs-Pufferspeichern.
-
Obgleich
es also Befehle gibt, die dazu dienen, eine Seite des Speichers
ungültig
zu machen und Einträge
in Pufferspeichern, die zu dieser Seite gehören, zu löschen, sowie Befehle, die dazu
dienen, den gesamten Inhalt von Pufferspeichern zu löschen, besteht
nach wie vor Bedarf an Befehlen, die selektiv verschiedene Größen von
Speicherungseinheiten ungültig
machen und/oder Einträge
in Pufferspeichern, die zu diesen Einheiten gehören, löschen können. Beispielsweise besteht
Bedarf an einem Befehl, der es ermöglicht, eine ausgewählte Speicherungseinheit,
die größer als
eine Seite ist und ungültig
gemacht werden soll, anzugeben und/oder Einträge in Pufferspeichern, die
zu der Einheit gehören,
zu löschen.
Es besteht darüber
hinaus Bedarf an einem Befehl, der es ermöglicht, Einträge in Pufferspeichern
für ausgewählte Speicherungseinheiten zu
löschen,
ohne dass sich dies auf Pufferspeicher-Einträge für andere Speicherungseinheiten
auswirkt.
-
Die
vorliegende Erfindung stellt ein Verfahren zum Ungültigmachen
des Inhalts eines Speichers einer Datenverarbeitungsumgebung nach
Anspruch 1 bereit.
-
Vorzugsweise
stellt die vorliegende Erfindung ein Verfahren bereit, das dazu
dient, den Inhalt des Speichers einer Datenverarbeitungsumgebung
ungültig
zu machen. Das Verfahren beinhaltet beispielsweise die Angabe einer
Speicherungseinheit, die ungültig
gemacht werden soll, wobei die Speicherungseinheit eine Vielzahl
von Speicherseiten umfasst, und wobei die Angabe die Bereitstellung
eines Deskriptors der Speicherungseinheit beinhaltet, sowie das
Ungültigmachen
der Speicherungseinheit.
-
Vorzugsweise
stellt die vorliegende Erfindung ein Verfahren bereit, mit dem sich
der Inhalt von Pufferspeichern einer Datenverarbeitungsumgebung
leichter löschen
lässt.
Das Verfahren beinhaltet beispielsweise die Kennzeichnung einer
Speicherungseinheit, für
die ein oder mehrere Einträge
aus einem oder mehreren Pufferspeichern gelöscht werden sollen, wobei die
Speicherungseinheit eine Vielzahl von Speicherseiten umfasst; und
das Löschen
von einem oder mehreren Einträgen
des einen oder der mehrfach vorhandenen Pufferspeicher, die zu der
gekennzeichneten Speicherungseinheit gehören, wobei ein oder mehrere
Einträge,
die zu einer anderen Speicherungseinheit gehören, nicht gelöscht werden.
-
Vorzugsweise
wird ein Befehl bereitgestellt, der in einer Datenverarbeitungsumgebung
ausgeführt werden
soll. Der Befehl enthält
beispielsweise einen Operationscode, um einen auszuführenden
Befehl zu kennzeichnen; eine Ungültigmachungs-Kennzeichnung, um
Informationen anzugeben, die zu einer Speicherungseinheit gehören, die
ungültig
gemacht werden soll, wobei die Speicherungseinheit eine Vielzahl
von Speicherseiten umfasst; eine weitere Kennzeichnung, um zusätzliche
Informationen zur Verwendung durch den Befehl anzugeben; und eine
Lösch-Kennzeichnung,
um Informationen anzugeben, die zu der einen Speicherungseinheit
und zu einer anderen Speicherungseinheit gehören, für die ein oder mehrere Einträge aus einem oder
mehreren Pufferspeichern gelöscht
werden sollen, wobei eine oder mehrere Komponenten von einer oder mehreren
der Ungültigmachungs-Kennzeichnungen,
die weitere Kennzeichnung und die Lösch-Kennzeichnung als Nulloperationen
konfiguriert werden können.
-
Vorzugsweise
wird ein Befehl bereitgestellt, der in einer Datenverarbeitungsumgebung
ausgeführt werden
soll. Der Befehl enthält
beispielsweise einen Operationscode, um einen auszuführenden
Befehl zu kennzeichnen; und mindestens eines von Folgendem: eine
erste Ungültigmachungs-Kennzeichnung,
um Informationen anzugeben, die zu einer Speicherungseinheit gehören, die
ungültig
gemacht werden soll, wobei die Speicherungseinheit eine Vielzahl
von Speicherseiten umfasst; eine zweite Ungültigmachungs-Kennzeichnung,
um zusätzliche
Informationen anzugeben, die zu der Speicherungseinheit, die ungültig gemacht
werden soll, gehören;
und eine Lösch-Kennzeichnung, um
Informationen anzugeben, die zu der einen Speicherungseinheit und
zu einer anderen Speicherungseinheit gehören, für die ein oder mehrere Einträge aus einem
oder mehreren Pufferspeichern gelöscht werden sollen, wobei die
von der Lösch-Kennzeichnung
angegebenen Informationen nicht zu mindestens einer anderen Speichereinheit
gehören,
für die
ein oder mehrere Einträge nicht
gelöscht
werden sollen.
-
System-
und Rechnerprogrammprodukte, die den vorstehend zusammengefassten
Verfahren entsprechen, werden hier ebenfalls beschrieben und beansprucht.
-
Weitere
Funktionen und Vorteile werden durch die Verfahren der vorliegenden
Erfindung realisiert. Andere Ausführungs- und Erscheinungsformen
der Erfindung werden hier ausführlich
beschrieben und gelten als Teil der beanspruchten Erfindung.
-
Der
Erfindungsgegenstand wird in den Ansprüchen im Anschluss an die Beschreibung
ausführlich
dargelegt und eindeutig beansprucht. Die vorstehenden und andere
Aufgaben, Funktionen und Vorteile der Erfindung gehen aus der folgenden
ausführlichen
Beschreibung in Verbindung mit den Begleitzeichnungen hervor, in
denen:
-
1 eine
Ausführungsform
einer Datenverarbeitungsumgebung zeigt, die eine oder mehrere Erscheinungsformen
der vorliegenden Erfindung enthält
und verwendet;
-
2 eine
Ausführungsform
von weiteren Einzelheiten in Verbindung mit einer Steuereinheit
von 1 gemäß einer
Erscheinungsform der vorliegenden Erfindung zeigt;
-
3 eine
Ausführungsform
eines Host-Rechners gemäß einer
Erscheinungsform der vorliegenden Erfindung zeigt; der einen anderen
Rechner nachbilden kann;
-
4 eine
Ausführungsform
der Logik in Verbindung mit dem Ungültigmachen des Speicherinhalts gemäß einer
Erscheinungsform der vorliegenden Erfindung zeigt;
-
5 eine
Ausführungsform
der Logik in Verbindung mit dem Löschen von Einträgen in Pufferspeichern
gemäß einer
Erscheinungsform der vorliegenden Erfindung zeigt;
-
6a eine
Ausführungsform
eines Formats eines Invalidate-Dynamic-Address-Translation-Table-Entry-(IDTE-)Befehls
(Befehl zum Ungültigmachen
eines Eintrags in der dynamischen Adressenumsetzungstabelle) gemäß einer
Erscheinungsform der vorliegenden Erfindung zeigt;
-
6b eine
Ausführungsform
der Felder in Verbindung mit dem allgemeinen Register R1 des IDTE-Befehls
von 6a gemäß einer
Erscheinungsform der vorliegenden Erfindung zeigt;
-
6c eine
Ausführungsform
der Felder in Verbindung mit dem allgemeinen Register R2 des IDTE-Befehls
von 6a gemäß einer
Erscheinungsform der vorliegenden Erfindung zeigt;
-
6d eine
Ausführungsform
der Felder in Verbindung mit dem allgemeinen Register R3 des IDTE-Befehls
von 6a gemäß einer
Erscheinungsform der vorliegenden Erfindung zeigt;
-
7a bis 7d eine Ausführungsform der Logik in Verbindung
mit dem IDTE-Befehl gemäß einer Erscheinungsform
der vorliegenden Erfindung zeigen;
-
8a eine
Ausführungsform
der Felder des allgemeinen Registers R1, das für eine alternative Operation
des IDTE-Befehls
verwendet wird, gemäß einer
Erscheinungsform der vorliegenden Erfindung zeigt;
-
8b eine
Ausführungsform
der Felder des allgemeinen Registers R2, das für eine alternative Operation
des IDTE- Befehls
verwendet wird, gemäß einer
Erscheinungsform der vorliegenden Erfindung zeigt;
-
8c eine
Ausführungsform
der Felder des allgemeinen Registers R3, das für eine alternative Operation
des IDTE-Befehls
verwendet wird, gemäß einer
Erscheinungsform der vorliegenden Erfindung zeigt; und
-
9 eine
Ausführungsform
der Logik in Verbindung mit der alternativen Operation des IDTE-Befehls gemäß einer
Erscheinungsform der vorliegenden Erfindung zeigt.
-
Gemäß einer
Erscheinungsform der vorliegenden Erfindung wird ein angegebener
Teil des Speichers (zum Beispiel des virtuellen Speichers) ungültig gemacht.
Zum Beispiel wird ein Segment des Speichers, das eine Vielzahl von
Speicherseiten enthält,
oder ein Bereich des Speichers, der eine Vielzahl von Speichersegmenten
enthält,
ausgewählt,
um ungültig
gemacht zu werden. Das Ungültigmachen
wird vereinfacht, indem Ungültigmachungs-Anzeiger
gesetzt werden, die sich in Datenstruktur-Einträgen befinden, welche den Speicherungseinheiten
entsprechen, die ungültig
gemacht werden sollen. In einer weiteren Erscheinungsform der vorliegenden
Erfindung werden Einträge
im Pufferspeicher (z.B. Einträge
im Adressenumsetzungs-Pufferspeicher), die zu dem Speicher, dessen
Inhalt ungültig
gemacht wird, oder zu einem anderen Speicher gehören, gelöscht. In einer weiteren Erscheinungsform
der vorliegenden Erfindung werden darüber hinaus Einträge im Pufferspeicher,
die zu ausgewählten
Adressräumen
gehören,
aus Pufferspeichern gelöscht,
ohne dass sich dies auf Pufferspeicher-Einträge von nicht ausgewählten Adressräumen auswirkt
und ohne dass Einträge
ungültig
gemacht werden. In einem Beispiel wird ein Befehl, der hier als
Invalidate-Dynamic-Address-Translation-(DAT-)Table-Entry-(IDTE)-Befehl
bezeichnet wird, von der z/Architecture von IBM® zur
Durchführung
von einer oder mehreren der vorstehenden Operationen verwendet.
-
Eine
Ausführungsform
einer Datenverarbeitungsumgebung 100, die eine oder mehrere
Erscheinungsformen der vorliegenden Erfindung enthält und verwendet,
wird mit Bezug auf 1 beschrieben. Die Datenverarbeitungsumgebung 100 beruht
zum Beispiel auf der von der International Business Machines Corporation mit
Sitz in Armonk, New York, angebotenen z/Architecture. Die z/Architecture
ist in einer Publikation von IBM® mit
dem Titel "z/Architecture
Principles of Operation",
IBM Publication Nr. SA22-7832-00, Dezember 2000, beschrieben, die
durch Bezugnahme in ihrer Gesamtheit Bestandteil hiervon ist (IBM® ist
ein eingetragenes Warenzeichen der International Business Machines
Corporation mit Sitz in Armonk, New York, U.S.A. Andere hier verwendete
Namen können
eingetragene Warenzeichen, Warenzeichen oder Produktnamen der International Business
Machines Corporation oder anderer Unternehmen sein). In einem Beispiel
beinhaltet eine auf der z/Architecture beruhende Datenverarbeitungsumgebung
einen eServer der "zSeries", der von der International Business
Machines Corporation, Armonk, New York, angeboten wird.
-
Als
Beispiel beinhaltet die Datenverarbeitungsumgebung 100 einen
Zentralprozessorkomplex (CPC) 102, der mit einer Steuereinheit 120 verbunden
ist. Der Zentralprozessorkomplex 102 enthält zum Beispiel
eine oder mehrere Partitionen 104 (z.B. die logischen Partitionen
LP1 bis LPn), einen oder mehrere Zentralprozessoren 106 (z.B.
CP1 bis CPm) und einen Hypervisor 108 (z.B. einen Manager
für die
logischen Partitionen), die alle nachstehend beschrieben werden.
-
Jede
logische Partition 104 kann als eigenes System funktionieren.
Das heißt,
jede logische Partition kann unabhängig von den anderen zurückgesetzt
werden, auf Wunsch kann in jede logische Partition anfangs ein Betriebssystem
geladen werden, und sie kann mit verschiedenen Programmen arbeiten.
Ein Betriebssystem oder ein Anwendungsprogramm, das in einer logischen
Partition läuft,
scheint Zugriff auf ein vollständiges System
zu haben, aber in Wirklichkeit steht nur ein Teil des Systems zur
Verfügung.
Eine Kombination aus Hardware und Licensed Internal Code (der gemeinhin
als Mikrocode bezeichnet wird) verhindert, dass sich ein Programm
in einer logischen Partition störend
auf ein Programm in einer anderen logischen Partition auswirkt. Dadurch
können
mehrere unterschiedliche logische Partitionen auf einem einzigen
oder auf mehreren physikalischen Prozessoren im Zeitscheibenverfahren
betrieben werden. In diesem bestimmten Beispiel verfügt jede
logische Partition über
ein ständig
vorhandenes Betriebssystem 110, das bei einer oder mehreren
logischen Partitionen unterschiedlich sein kann. In einer Ausführungsform
ist das Betriebssystem 110 das Betriebssystem z/OS, das
von der International Business Machines Corporation, Armonk, New
York, angeboten wird.
-
Die
Zentralprozessoren 106 sind physische Prozessor-Ressourcen,
die den logischen Partitionen zugeordnet sind. Eine logische Partition 104 enthält beispielsweise
einen oder mehrere logische Prozessoren, von denen jeder die ganze
oder einen Teil der physischen Prozessor-Ressource 106 darstellt,
die der Partition zugeordnet ist. Die logischen Prozessoren einer
bestimmten Partition 104 können dieser Partition entweder ausschließlich zugeordnet
sein, so dass die zugrunde liegende Prozessor-Ressource für diese Partition reserviert
ist, oder sie können
gemeinsam mit einer anderen Partition verwendet werden, so dass
die zugrunde liegende Prozessor-Ressource möglicherweise auch einer anderen
Partition zur Verfügung
steht.
-
Die
logischen Partitionen 104 werden vom Hypervisor 108 verwaltet,
der mittels Mikrocode realisiert ist, welcher auf den Prozessoren 106 ausgeführt wird.
Die logischen Partitionen 104 und der Hypervisor 108 umfassen
jeweils ein oder mehrere Programme, die sich in jeweiligen Teilen
des Zentralspeichers befinden, der zu den Zentralprozessoren gehört. Ein
Beispiel des Hypervisor 108 ist der Processor Resource/Systems Manager
(PR/SM), der von der International Business Machines Corporation,
Armonk, New York, angeboten wird.
-
Die
Steuereinheit 120, die mit dem Zentralprozessorkomplex
verbunden ist, enthält
zentralisierte Logik, die für
die möglichst
gerechte Zuteilung von Ressourcen (Arbitrierung) unter verschiedenen
Prozessoren, die Anforderungen ausgeben, verantwortlich ist. Wenn
die Steuereinheit 120 beispielsweise eine Anforderung empfängt, stellt
sie fest, dass der Anfordernde der Hauptprozessor (Master-Prozessor)
für diese
Anforderung ist und dass die anderen Prozessoren untergeordnete
Prozessoren (Slave-Prozessoren) sind; sie versendet Nachrichten
im Rundsendeverfahren, und im Übrigen
wickelt sie Anforderungen ab. Ein Beispiel für eine Steuereinheit ist in
der US-Patentschrift Nr. 6 199 219 beschrieben. Weitere Einzelheiten
sind mit Bezug auf 2 ebenfalls beschrieben. 2 veranschaulicht
ein Beispiel einer Steuereinheit 200, die mit einer Vielzahl
von Zentralprozessoren (CPUs) 201 verbunden ist. In diesem
Beispiel sind zwei Zentralprozessoren dargestellt. Es versteht sich
jedoch, dass mehr als zwei Prozessoren mit der Steuereinheit 200 verbunden
sein können.
-
Die
Steuereinheit 200 enthält
verschiedene Steuerelemente, unter anderem beispielsweise die Systemserialisierungs-Steuerelemente 202.
Mit den Systemserialisierungs-Steuerelementen wird sichergestellt, dass
Operationen, die zeitlich aufeinander folgend durchgeführt (serialisiert)
werden sollen, wie zum Beispiel Ungültigmachungs-Befehle, auch
tatsächlich
zeitlich aufeinander folgend durchgeführt werden, insofern als nur jeweils
ein solcher Befehl in der Datenverarbeitungsumgebung ausgeführt wird.
Die Steuereinheit 200 überwacht
auch die Reihenfolge der Ereignisse für diese Operation.
-
Die
Steuereinheit 200 ist mit jedem Zentralprozessor über verschiedene
Schnittstellen verbunden. Zum Beispiel verwendet der Licensed Internal
Code in einem Zentralprozessor eine Schnittstelle 204,
um "Steuer"-Befehle, die eine
durchzuführende
Aktion angeben, an die Steuereinheit zu senden und um "Abfrage"-Befehle zu senden, auf die Informationen
von der Steuereinheit zurückgesendet
werden. Eine weitere Schnittstelle ist ein Antwortbus 206, über den
Informationen von der Steuereinheit auf die "Abfrage"-Befehle hin zurückgesendet werden. Der Antwortbus
wird auch verwendet, um den Befehlsstatus für "Steuer"-Befehle zu übertragen, und er kann von
einer Vielzahl von Quellen innerhalb der Steuereinheit, einschließlich der
Systemserialisierungs-Steuerelemente, gesetzt werden. Ein Zentralprozessor
kann über
diese Schnittstelle den Zustand der Systemserialisierungs-Steuerelemente
in der Steuereinheit 200 abfragen.
-
Eine
weitere Schnittstelle ist die Schnittstelle 208, die von
der Steuereinheit verwendet wird, um Befehle an jede CPU zu senden.
Dies kann ebenfalls von einer Vielzahl von Quellen innerhalb der
Steuereinheit einschließlich
der Systemserialisierungs-Steuerelemente 202 gesteuert
werden. Noch eine weitere Schnittstelle ist die Schnittstelle 210,
die den Cachespeicher-Steuerelementen 212 des Zentralprozessors 201 Signale
bereitstellt. Als Reaktion auf die Signale verarbeiten die Cachespeicher-Steuerelemente 212 Befehle.
In einem Beispiel verarbeiten die Cachespeicher-Steuerelemente 212 Befehle,
die sich auf einen oder mehrere Pufferspeicher wie zum Beispiel
die Adressenumsetzungs-Pufferspeicher (TLBs) 213 auswirken,
was nachstehend ausführlicher
beschrieben wird.
-
Neben
den Cachespeicher-Steuerelementen 212 enthält der Zentralprozessor 201 verschiedene
andere Steuerelemente, unter anderem beispielsweise die Unterbrechungs-Steuerelelemente 220 und
die Ausführungs-Steuerelemente 222.
Als Reaktion auf bestimmte Ereignisse bewirken die Unterbrechungs-Steuerelemente 220,
dass in der CPU eine interne Unterbrechung ansteht, die wiederum
bewirkt, dass die Ausführungs-Steuerelemente 222 die
Verarbeitung von Programmbefehlen an dem nächsten unterbrechbaren Punkt vorübergehend
einstellen. Als Reaktion auf die Unterbrechung rufen die Ausführungs-Steuerelemente 222 eine
Licensed-Internal-Code-Routine auf, um einen Signalspeicher "Rundsendeoperation
erlaubt" 224 so
zu setzen, dass er den Cachespeicher-Steuerelementen 212 die
Verarbeitung von anstehenden Befehlen ermöglicht.
-
Der
Zentralprozessor 201 enthält auch einen Signalspeicher "CPU-stillgelegt" 226, der
anzeigt, ob der Zentralprozessor stillgelegt wurde.
-
Die
vorstehend beschriebene Datenverarbeitungsumgebung ist lediglich
ein Beispiel. Eine oder mehrere Partitionen können beispielsweise in verschiedenen
Architektur-Modi ausgeführt
werden. Als weiteres Beispiel braucht die Umgebung nicht auf der
z/Architecture zu basieren, sondern kann stattdessen auf einer anderen
Architektur beruhen, die von Intel, Sun Microsystems sowie anderen
Herstellern angeboten wird. Überdies
kann eine Umgebung einen Emulator (z.B. Software- oder andere Emulations-Mechanismen) enthalten,
in dem eine bestimmte Architektur oder ein Teil dieser Architektur
nachgebildet wird. In einer solchen Umgebung können ein oder mehrere Emulationsfunktionen
des Emulators eine oder mehrere Erscheinungsformen der vorliegenden
Erfindung realisieren, obgleich ein Rechner, der den Emulator ausführt, eine
andere Architektur haben kann als die Funktionen, die nachgebildet
werden. Zum Beispiel wird der jeweilige Befehl oder die jeweilige
Operation, die gerade nachgebildet wird, im Emulationsmodus decodiert,
und eine entsprechende Emulationsfunktion wird erstellt, um den
einzelnen Befehl oder die einzelne Operation auszuführen.
-
Weitere
Einzelheiten einer Emulationsumgebung werden mit Bezug auf 3 beschrieben.
Beispielsweise ist der Host-Rechner 300 in der Lage, eine
andere Architektur, einen anderen Rechner und/oder Verarbeitungsfunktionen
eines anderen Rechners nachzubilden. Der Host-Rechner 300 kann
zum Beispiel auf einer Intel-Architektur, einer RISC-Architektur
wie dem PowerPC, einer SPARC-Architektur, die von Sun Microsystems
angeboten wird, oder auf einer anderen Architektur beruhen und die
z/Architecture von IBM® oder eine andere Architektur
von IBM® oder
einem anderen Hersteller nachbilden.
-
Der
Host-Rechner 300 enthält
beispielsweise einen Speicher 302, um Befehle und Daten
zu speichern; eine Befehlsabrufeinheit 304, um Befehle
aus dem Speicher 302 abzurufen und um die abgerufenen Befehle
optional lokal im Pufferspeicher abzulegen; eine Befehlsdecodiereinheit 306,
um Befehle von der Befehlsabrufeinheit 304 zu empfangen
und um die Art der abgerufenen Befehle festzustellen; sowie eine
Befehlsausführungseinheit 308,
um die Befehle auszuführen.
Die Ausführung
kann das Laden der Daten aus dem Speicher 302 in ein Register,
die Rückspeicherung
der Daten aus einem Register in den Speicher oder die Ausführung einer
bestimmten Art einer arithmetischen oder logischen Operation beinhalten,
was von der Decodiereinheit festgelegt wird.
-
In
einem Beispiel wird jede vorstehend beschriebene Einheit in Software
realisiert. Die von den Einheiten durchgeführten Operationen werden beispielsweise
als eine oder mehrere Teilroutinen in der Emulator-Software ausgeführt. In
einem anderen Beispiel werden eine oder mehrere der Operationen
in Firmware, Hardware, Software oder einer Kombination daraus realisiert.
-
Obgleich 3 mit
Bezug auf eine Emulation beschrieben wird, braucht die Umgebung
von 3 überdies
keine Emulationsumgebung zu sein. In einem weiteren Beispiel werden
Befehle in der ursprünglichen Umgebung
ausgeführt,
und die Operationen werden in Hardware, Firmware, Software oder
einer Kombination daraus durchgeführt.
-
Eine
Datenverarbeitungsumgebung kann sowohl einen virtuellen Speicher
als auch einen Hauptspeicher enthalten. Der virtuelle Speicher kann
die Größe des in
der Konfiguration vorhandenen Hauptspeichers bei weitem überschreiten
und wird normalerweise im Zusatzspeicher verwaltet. Der virtuelle
Speicher wird als ein aus Adressblöcken bestehender Speicher betrachtet,
welche als Seiten bezeichnet werden. Die Seiten des virtuellen Speichers,
auf die zuletzt verwiesen wurde, werden zur Belegung von Blöcken des
physischen Hauptspeichers zugewiesen. Wenn ein Benutzer auf Seiten
des virtuellen Speichers verweist, die nicht im Hauptspeicher erscheinen,
werden die virtuellen Seiten geladen, um die Seiten im Hauptspeicher
zu ersetzen, auf die mit geringerer Wahrscheinlichkeit zugegriffen
wird. Das Aus- und Wiedereinlagern von Seiten aus dem beziehungsweise
in den Speicher kann vom Betriebssystem ohne Kenntnis des Benutzers
vorgenommen werden.
-
Die
Adressen, die verwendet werden, um Speicherplätze im virtuellen Speicher
zu kennzeichnen, werden als virtuelle Adressen bezeichnet. Ein Block
von fortlaufenden virtuellen Adressen, die beispielsweise bis zu
4 KByte umfassen, wird als Seite bezeichnet. Ebenso wird ein Block
von fortlaufenden virtuellen Seiten, der beispielsweise bis zu 1
MByte umfasst, als ein Segment bezeichnet, und ein Block von fortlaufenden
virtuellen Segmenten, der beispielsweise bis zu 2 GByte umfasst,
wird als Bereich bezeichnet. Ferner wird eine Folge von virtuellen
Adressen, die zu dem virtuellen Speicher gehören, auf den ein Adressraum-Steuerelement
(ASCE) zeigt, als Adressraum bezeichnet. Mit Adressräumen können Trennungsgrade
zwischen Benutzern vorgesehen werden. Ein Adressraum kann einen
oder mehrere Bereiche, ein oder mehrere Segmente, eine oder mehrere
Seiten oder eine Kombination daraus enthalten.
-
Zu
den verschiedenen Arten der Speicherungseinheiten (z.B. Bereiche,
Segmente, Seiten) gehören Datenstrukturen,
die bei der Verarbeitung in Verbindung mit den Speicherungseinheiten
zu verwenden sind. Zu Bereichen gehören zum Beispiel Bereichstabellen,
zu Segmenten gehören
Segmenttabellen, und zu Seiten gehören Seitentabellen. Diese Tabellen
werden beispielsweise während
der Umsetzung (z.B. einer dynamischen Adressumsetzung) einer virtuellen
Adresse in eine reale Adresse benutzt, die für den Zugriff auf den Hauptspeicher
verwendet wird. Die bei der Umsetzung zu verwendenden Tabellen,
die hier als Umsetzungstabellen bezeichnet werden, werden von einem
Adressraum-Steuerelement (ASCE) gekennzeichnet. Dieses Element ist
in einer Publikation von IBM® mit dem Titel "z/Architecture Principles
of Operation", IBM
Publication Nr. SA22-7832-00, Dezember 2000, ausführlicher
beschrieben. Eine Einheit des virtuellen Speichers, die dem Hauptspeicher
gerade nicht zugeordnet ist, wird als ungültig bezeichnet. Der Zustand "ungültig" einer Einheit des
virtuellen Speichers wird von einem Ungültig-Anzeiger in der Datenstruktur
angegeben, die zu der Einheit gehört.
-
Der
Mechanismus der dynamischen Adressumsetzung wird in einer Ausführungsform
so ausgeführt, dass
die von den Umsetzungstabellen (z.B. Bereichstabellen, Segmenttabellen
und/oder Seitentabellen) durch den DAT-Prozess abgeleiteten Daten
in einem oder mehreren Pufferspeichern, die sich in den Prozessoren
befinden und hier als Adressenumsetzungs-Pufferspeicher bezeichnet werden, verwaltet
werden, um die Leistungsfähigkeit
der Adressenumsetzung zu verbessern. Das heißt, die Pufferspeicher werden
während der
Umsetzung auf die benötigten
Daten geprüft,
und wenn sich die Daten nicht in den Pufferspeichern befinden, wird
auf eine oder mehrere der Umsetzungstabellen zugegriffen.
-
In
einer Ausführungsform
wird ein Eintrag im Pufferspeicher als einer von drei Arten betrachtet:
ein kombinierter Bereichs- und Segmenttabelleneintrag im TLB, ein
TLB-Seitentabelleneintrag oder ein Eintrag im realen TLB-Raum, von
denen jeder nachstehend erklärt
wird.
-
Ein
kombinierter Bereichs- und Segmenttabelleneintrag (CRSTE) im TLB
enthält
sowohl die aus dem Tabelleneintrag oder den Tabelleneinträgen im realen
oder absoluten Speicher abgerufenen Daten als auch die Attribute,
die zum Abruf dieser Daten aus dem Speicher verwendet werden. In
einem Beispiel enthält
ein kombinierter Bereichs- und Segmenttabelleneintrag (CRSTE) im
TLB die folgenden Felder:
- TO:
- den Tabellenursprung
im Adressraum-Steuerelement, der verwendet wird, um den Eintrag
anzulegen;
- RX:
- den Bereichsindex
der virtuellen Adresse, der verwendet wird, um den Eintrag anzulegen;
- SX:
- den Segmentindex der
virtuellen Adresse, der verwendet wird, um den Eintrag anzulegen;
- PTO:
- den aus dem Segmenttabelleneintrag
im realen oder im absoluten Speicher abgerufene Seitentabellenursprung;
- C:
- das aus dem Segmenttabelleneintrag
im realen oder im absoluten Speicher abgerufene Bit für das gemeinsame
Segment; und
- P:
- das aus dem Segmenttabelleneintrag
im realen oder im absoluten Speicher abgerufene Seitenschutzbit.
- V:
- Das Gültigkeitsbit
gibt an, ob der Eintrag im TLB gültig
ist, und es kann somit verwendet werden, um nach nachfolgenden Einträgen zu suchen.
-
Ein
TLB-Seitentabelleneintrag enthält
die aus dem Tabelleneintrag oder den Tabelleneinträgen im realen
oder im absoluten Speicher abgerufenen Daten und die Attribute,
die verwendet werden, um diese Daten aus dem Speicher abzurufen.
In einem Beispiel enthält
ein TLB-Seitentabelleneintrag Folgendes:
- TO:
- in Abhängigkeit
davon, wie der Eintrag angelegt wurde, entweder den Tabellenursprung
im Adressraum-Steuerelement oder den kombinierten Bereichs- und
Segmenttabelleneintrag im TLB, der verwendet wurde, um den Eintrag
anzulegen;
- PTO:
- den Seitentabellenursprung,
der verwendet wurde, um den Eintrag anzulegen;
- PX:
- den Seitenindex der
virtuellen Adresse, die verwendet wurde, um den Eintrag anzulegen;
- PFRA:
- die reale Adresse
des Seitenrahmens, die aus dem Seitentabelleneintrag im realen oder
im absoluten Speicher abgerufen wurde; und
- P:
- das aus dem Segmenttabelleneintrag
im realen oder im absoluten Speicher abgerufene Seitenschutzbit.
- V:
- Das Gültigkeitsbit
gibt an, ob der Eintrag im TLB gültig
ist, und es kann somit verwendet werden, um nach nachfolgenden Einträgen zu suchen.
-
Zuweilen
muss eine Speicherungseinheit ungültig gemacht werden. Um diesen
Vorgang zu vereinfachen, wird die zu dieser Speicherungseinheit
gehörende
Umsetzungstabelle verwendet, wie hier beschrieben wird. Als Reaktion
auf das Ungültigmachen
des Speicherinhalts können
außerdem
auch die entsprechenden Einträge
im Pufferspeicher gelöscht
werden. Um zum Beispiel eine Seite des Speichers ungültig zu
machen, wird ein Ungültig-Bit
eines Seitentabelleneintrags gesetzt. In einem Beispiel werden überdies
die entsprechenden Einträge
in einem oder in mehreren TLBs atomar gelöscht. In einem ganz bestimmten
Beispiel wird das Ungültigmachen
und das Löschen
von Einträgen,
die zu Speicherseiten gehören,
von einem Befehl "Invalidate Page
Table Entry (IPTE)" durchgeführt.
-
Neben
dem Ungültigmachen
von Speicherseiten können
gemäß einer
Erscheinungsform der vorliegenden Erfindung Segmente und/oder Bereiche
des Speichers ungültig
gemacht werden. Bei diesem Vorgang des Ungültigmachens werden zum Beispiel
Segment- und/oder
Bereichstabellen verwendet. Eine Ausführungsform der Logik in Verbindung
mit dem Ungültigmachen
von einer bestimmten Speicherungseinheit wird mit Bezug auf 4 beschrieben.
-
Im
SCHRITT 400 wird zunächst
eine Bereichs- oder Segmenttabelle, in der ein oder mehrere Einträge ungültig gemacht
werden sollen, gekennzeichnet. In einem Beispiel beinhaltet dies
die Bereitstellung eines Bereichstabellen- oder Segmenttabellenursprungs.
Anschließend
wird ein Eintrag in der gekennzeichneten Bereichs- oder Segmenttabelle,
der ungültig
gemacht werden soll, gekennzeichnet, SCHRITT 402, und im SCHRITT 404 wird
der Eintrag dann ungültig
gemacht. In einem Beispiel erfolgt die Kennzeichnung, indem ein Bereichsindex
oder ein Segmentindex (Bits einer virtuellen Adresse) bereitgestellt
wird, der einen Eintrag in der gekennzeichneten Tabelle auswählt, und
das Ungültigmachen
beinhaltet das Setzen eines Ungültig-Anzeigers
in dem Eintrag. Als Reaktion auf das Setzen des Ungültig-Anzeigers
wird eine entsprechende Speicherungseinheit (z.B. ein Bereich oder
ein Segment) ungültig
gemacht.
-
Anschließend wird
festgestellt, ob es weitere Einträge gibt, die ungültig gemacht
werden sollen, ANFRAGE 406. Wenn weitere Einträge ungültig gemacht
werden sollen, wird die Verarbeitung mit dem SCHRITT 402 fortgesetzt.
Andernfalls ist die Verarbeitung abgeschlossen.
-
Neben
dem Ungültigmachen
von einem oder mehreren Einträgen
in einer Bereichs- oder einer Segmenttabelle und folglich dem Ungültigmachen
dieser Speicherungseinheiten können
die entsprechenden (oder andere) Einträge aus einem oder mehreren
Pufferspeichern auf einem oder mehreren Prozessoren in der Umgebung
gelöscht
werden. Eine Ausführungsform
der Logik in Verbindung mit diesem Löschvorgang wird mit Bezug auf 5 ausführlicher
beschrieben.
-
Zunächst wird
festgestellt, ob ein Bereichs- oder Segmenttabellenursprung angegeben
ist, ANFRAGE 500. Wenn ja, wird in einem oder in mehreren
Pufferspeichern ein Eintrag gelöscht,
der von dem Bereichs- oder Segmentindex angegeben wird, welcher
mit dem Bereichs- oder Segmentursprung übereinstimmt, SCHRITT 502.
Daraufhin wird festgestellt, ob es weitere zu löschende Einträge gibt,
ANFRAGE 504. Wenn ja, wird die Verarbeitung mit dem SCHRITT 502 fortgesetzt.
Andernfalls ist die Verarbeitung abgeschlossen.
-
Zur
ANFRAGE 500 zurück
kommend wird, wenn der Bereichs- oder Segmenttabellenursprung nicht angegeben
ist, ein von dem Bereichs- oder Segmentindex angegebener Eintrag
in einem oder in mehreren Pufferspeichern gelöscht, SCHRITT 508.
Anschließend
wird festgestellt, ob es weitere zu löschende Einträge gibt,
ANFRAGE 510. Wenn ja, wird die Verarbeitung mit dem SCHRITT 508 fortgesetzt.
Andernfalls ist die Verarbeitung abgeschlossen.
-
In
einem Beispiel werden die Ungültigmachungs-
und die Löschoperation
von einem einzigen Befehl durchgeführt. Der Befehl macht die ausgewählten Einträge einer
Segment- oder Bereichstabelle ungültig und löscht atomar mindestens die
entsprechenden (oder andere) Einträge aus den TLBs auf den Prozessoren
der Konfiguration. In einem Beispiel werden die Einträge aus allen
TLBs auf allen Prozessoren, ungeachtet dessen, ob es sich um physische,
virtuelle oder nachgebildete Prozessoren handelt, von Software gelöscht. Wenn eine
TLB-Struktur mit
mehreren Ebenen vorhanden ist, werden in einem Beispiel alle Ebenen
gelöscht.
Wenn in dem System mehrere logische Partitionen vorhanden sind,
werden TLB-Einträge
auf diesem und auf anderen Prozessoren gelöscht, die für die logische Partition angelegt
wurden, in der der aktuelle IDTE-Befehl
gerade ausgeführt
wird.
-
Dieser
Befehl kann in vielen Architekturen ausgeführt werden, und er kann nachgebildet
werden. Der Befehl kann zum Beispiel in Hardware von einem Prozessor
oder durch Nachbildung des Befehlssatzes, der diesen Befehl enthält, oder
von Software ausgeführt
werden, die auf einem Rechner mit einem anderen ursprünglichen
Befehlssatz läuft.
In einem ganz bestimmten Beispiel wird der Befehl in der z/Architecture
ausgeführt
und hier als ein Invalidate-Dynamic-Address-Translation-(DAT-)Table-Entry-(IDTE-)Befehl
bezeichnet.
-
IDTE
stellt beispielsweise eine Option zum Ungültigmachen und Löschen bereit,
bei der eine oder mehrere Bereiche oder Segmente des Speichers über einen
oder mehrere Einträge
einer Bereichstabelle oder einer Segmenttabelle ungültig gemacht
und mindestens die entsprechenden (oder andere) Einträge aus den TLBs
(z.B. aus allen TLBs) in der Konfiguration gelöscht werden. Der Befehl gibt
eine Mindestmenge von zu löschenden
TLB-Einträgen an.
In einer weiteren Ausführung
können
nach der Ausführung
des IDTE-Befehls noch mehr Einträge
oder sogar alle TLB-Einträge
gelöscht
werden.
-
Eine
Ausführungsform
des Formats eines Invalidate-DAT-Table-Entry-(IDTE-)Befehls wird mit Bezug auf 6a beschrieben.
In einem Beispiel enthält
ein IDTE-Befehl 600 zum Beispiel einen Operationscode 602,
der den Invalidate-DAT-Table-Entry-Befehl (z.B. 'B98E'x)
kennzeichnet, und eine Vielzahl von Registern 604 bis 608.
Jedes der Register wird nachstehend mit Bezug auf die 6b bis 6d ausführlicher
beschrieben.
-
Bezug
nehmend auf 6b hat das Register 606,
bei dem es sich um das allgemeine Register R1 handelt, zum Beispiel
ein Format, bei dem ein Adressraum-Steuerelement mit einem Tabellenursprung
(z.B. die Bits 0 bis 51) und ein Kennzeichnungstyp-Steuerelement
(die Bits 60 und 61) verwendet werden. Die Bits 52 bis 59, 62 und
63 werden ignoriert. Im Einzelnen enthält R1 zum Beispiel einen Bereichstabellen-
oder Segmenttabellenursprung für
das Ungültigmachen 610,
der die Umsetzungstabelle kennzeichnet, von der ein oder mehrere
Einträge
ungültig
gemacht werden sollen, und ein Kennzeichnungstyp-Steuerelement (DT) 612,
das den Typ dieser Tabelle (z.B. Bereichstabelle oder Segmenttabelle)
angibt.
-
Das
Register 608 (6c), bei dem es sich um das
allgemeine Register R2 handelt, enthält einen Erstbereich-Index 614,
der eine Bereichstabelle der ersten Ebene angibt, einen Zweitbereich-Index 616,
der eine Bereichstabelle zweiter Ebene angibt, und einen Drittbereich-Index 618,
der eine Bereichstabelle dritter Ebene angibt. Das heißt, um großen virtuellen
Adressen gerecht zu werden, werden drei Ebenen von Bereichstabellen
verwendet. Das Register R2 enthält
auch einen Segmentindex 620, bei dem es sich um einen Index in
eine Segmenttabelle handelt, einen Modus-Anzeiger 621,
der die auszuführende
Funktion bestimmt, und einen Anzeiger 622 für zusätzliche
Einträge,
der angibt, wie viele Einträge
ungültig
gemacht werden sollen. Die Bits 53 bis 63 des allgemeinen Registers
R2 enthalten beispielsweise eine ganze Binärzahl, die die Anzahl der zusätzlichen
Tabelleneinträge
angibt, die ungültig
gemacht werden sollen. In einem Beispiel beträgt die Anzahl der Einträge, die
ungültig
gemacht werden sollen, 1 bis 2048, was dem Bitwert 53 bis 63 von
0 bis 2047 entspricht. Die Bits 44 bis 51 des allgemeinen Registers
R2 sind Nullen; andernfalls wird eine Spezifikationsausnahmebedingung
erkannt. Folglich haben die Bits 0 bis 43 des allgemeinen Registers
R2 das Format des Bereichs- und des Segmentindex einer virtuellen
Adresse. Der Teil der Bits 0 bis 43, der von der DAT verwendet wird,
um einen Eintrag in dem Tabellentyp auszuwählen, der vom allgemeinen Register
R1 gekennzeichnet wird, wird als Effective Invalidation Index bezeichnet
und nachstehend ausführlicher
beschrieben.
-
Das
Register 604 (6d),
bei dem es sich um das allgemeine Register R3 handelt, hat zum Beispiel ein
Format eines Adressraum-Steuerelements, bei dem der Tabellenursprung,
die Bits 0 bis 51, verwendet wird, wenn es ungleich null ist. Dieser
Tabellenursprung wird zur Auswahl von TLB-Einträgen verwendet, die gelöscht werden
sollen, und die Art von Tabelle, die er kennzeichnet, ist von den
Bits 60 und 61 des allgemeinen Registers R1 unabhängig. Die
Bits 52 bis 63 des allgemeinen Registers R3 werden ignoriert. Wenn
R3 den Wert null hat, wird der gesamte Inhalt des allgemeinen Registers
0 ignoriert. In einem Beispiel können
sich die zu löschenden
Einträge
mit den Einträgen,
die ungültig
gemacht werden, decken oder von diesen abweichen.
-
Eine
Ausführungsform
der Logik in Verbindung mit einer Ungültigmachungs- und Löschoperation
wird mit Bezug auf die 7a und 7b beschrieben.
In einem Beispiel wird eine Ungültigmachungs-
und Löschoperation
angegeben, wenn das Bit 52 des allgemeinen Registers R2 den Wert
null hat. Bei dieser Operation wird der gekennzeichnete Bereichstabellen-
oder Segmenttabelleneintrag im Speicher oder ein Bereich von Einträgen, die
mit dem gekennzeichneten Eintrag beginnen, ungültig gemacht, und die zugehörigen (oder
andere) Einträge
in den Adressenumsetzungs-Pufferspeichern (TLBs) in den CPUs der
Konfiguration werden gelöscht.
In einem Beispiel werden alle Ebenen der Pufferspeicher, sofern
diese mehrere Ebenen haben, in allen CPUs gelöscht.
-
Bezug
nehmend auf 7a wird zunächst ein Bereichstabellen- oder ein Segmenttabellenursprung, der
eine Bereichstabelle oder eine Segmenttabelle kennzeichnet, aus
der ein oder mehrere Einträge
ungültig gemacht
werden sollen, angegeben, SCHRITT 700. In einem Beispiel
wird dies im allgemeinen Register R1 angegeben. Darüber hinaus
wird ein Tabelleneintrag im Speicher, der ungültig gemacht werden soll, ausgewählt, SCHRITT 702.
In einem Beispiel wird ein Tabelleneintrag gekennzeichnet, indem
der Tabellenursprung im allgemeinen Register R1 und der gültige Ungültigmachungs-Index
im allgemeinen Register R2 hinzugefügt und verschiedene Regeln
befolgt werden, wie hier beschrieben wird.
-
Die
Bits 60 und 61 des allgemeinen Registers R1 geben wie folgt einen
Tabellentyp und einen gültigen Ungültigmachungs-Index
an:
- (Der
Teil der Bits 0 bis 43 rechts des gültigen Invalidierungsindex
wird ignoriert.)
-
Mit
Bezug auf die vorstehende Tabelle wird, wenn die Bits 60 und 61
den Binärwert
11 haben, der Erstbereich-Indexteil von R2 in Verbindung mit dem
Erstbereich-Tabellenursprung von R1 zur Auswahl eines Eintrags in
einer Erstbereichtabelle verwendet. Der Tabellenursprung wird als
eine 64-Bit-Adresse behandelt.
-
Die
64-Bit-Adresse des Eintrags in der Erstbereichtabelle im realen
oder im absoluten Speicher erhält man,
indem man rechts der Bits 0 bis 51 der Kennzeichnung der Erstbereichtabelle
zwölf Nullen
anfügt
und dem Erstbereich-Index drei äußerste rechte
und fünfzig äußerste linke
Nullen anfügt.
Diese Hinzufüge-Operation
wird entsprechend den Regeln für
die 64-Bit-Adressenarithmetik ungeachtet des aktuellen Adressierungsmodus,
der von den Bits 31 und 32 des aktuellen Programmstatusworts (PSW)
angegeben wird, durchgeführt. Wenn
während
der Hinzufüge-Operation
ein Übertrag
der Bitstelle Null stattfindet, wird sie ignoriert. Die aus diesen beiden
Komponenten gebildete Adresse ist eine reale oder absolute Adresse.
Ungeachtet dessen, ob das aktuelle PSW den 24-Bit-, den 31-Bit-
oder den 64-Bit-Adressierungsmodus angibt, werden alle 64 Bits der
Adresse verwendet.
-
In
einem Beispiel wird der gesamte Eintrag der Erstbereichtabelle gleichzeitig
aus dem Speicher abgerufen, was von anderen CPUs beobachtet wird.
Der Abrufzugriff auf den Eintrag unterliegt dem schlüsselgesteuerten
Schutz, und der Speicherzugriff unterliegt dem schlüsselgesteuerten
Schutz und dem Schutz von niedrigen Adressen. Wenn die Speicheradresse,
die für
den Abruf des Eintrags der Erstbereichtabelle erzeugt wurde, einen
Speicherplatz kennzeichnet, der in der Konfiguration nicht verfügbar ist,
wird eine Adressierungs-Ausnahmebedingung erkannt, und die Operationseinheit
wird unterdrückt.
-
Wenn
die Bits 60 und 61 den Binärwert
10 haben, wird der Zweitbereich-Index von R2 in Verbindung mit dem
Ursprung der Zweitbereichtabelle von R1 zur Auswahl eines Eintrags
aus der Zweitbereichtabelle verwendet. Der Tabellensuchvorgang in
der Zweitbereichtabelle ist ähnlich
dem Tabellensuchvorgang in der Erstbereichtabelle. Wenn keine Ausnahmebedingungen
erkannt werden, kennzeichnet der aus der Zweitbereichtabelle abgerufene
Eintrag den Anfang und gibt den Offset und die Länge der entsprechenden Drittbereichtabelle
an.
-
Wenn
die Bits 60 und 61 den Binärwert
01 haben, wird der Drittbereich-Indexteil von R2 in Verbindung mit
dem Ursprung der Drittbereichtabelle von R1 zur Auswahl eines Eintrags
aus der Drittbereichtabelle verwendet. Der Tabellensuchvorgang in
der Drittbereichtabelle ist ähnlich
dem Tabellensuchvorgang in der Erstbereichtabelle. Wenn keine Ausnahmebedingungen
erkannt werden, kennzeichnet der aus der Drittbereichtabelle abgerufene
Eintrag den Anfang und gibt den Längen-Offset der entsprechenden
Segmenttabelle an.
-
Wenn
die Bits 60 und 61 den Binärwert
00 haben, wird der Segmentindexteil von R2 in Verbindung mit dem
Ursprung der Segmenttabelle von R1 zur Auswahl eines Eintrags aus
der Segmenttabelle verwendet. Der Tabellensuchvorgang in der Segmenttabelle
ist ähnlich
dem Tabellensuchvorgang in der Erstbereichtabelle. Wenn keine Ausnahmebedingungen
erkannt werden, kennzeichnet der aus der Segmenttabelle abgerufene Eintrag
den Anfang der entsprechenden Seitentabelle.
-
In
einem Beispiel wird der ganze Tabelleneintrag gleichzeitig aus dem
Speicher abgerufen. Daraufhin wird der Eintrag ungültig gemacht,
SCHRITT 704. In einem Beispiel wird der Eintrag ungültig gemacht,
indem das Bit 58 des Eintrags auf den Binärwert 1 gesetzt wird. Durch
das Ungültigmachen
dieses Eintrags wird die entsprechende Speicherungseinheit ungültig gemacht.
-
Anschließend wird
festgestellt, ob weitere Einträge
ungültig
gemacht werden sollen, ANFRAGE 706. In einem Beispiel wird
dies festgestellt, indem die Bits 53 bis 63 des allgemeinen Registers
R2 geprüft
werden. Wenn die Bits 53 bis 63 des allgemeinen Registers R2 nicht
alle den Wert null haben, müssen
weitere Einträge ungültig gemacht
werden. Folglich wird dem zuvor verwendeten Wert des wirksamen Ungültigmachungs-Index eine "1" hinzugefügt, und die Verarbeitung wird
mit dem Schritt 700 fortgesetzt. Dies wird wiederholt,
so dass die Anzahl der Einträge,
die ungültig
gemacht werden, um eins höher
als die von den Bits 53 bis 63 angegebene Anzahl ist. Ein Übertrag
der äußersten
linken Bitstelle des gültigen
Ungültigmachungs-Index
wird ignoriert, und in diesem Fall findet ein Tabellenumlauf statt.
Der Inhalt des allgemeinen Registers R2 bleibt unverändert.
-
Nachdem
der eine oder mehrere Einträge
ungültig
gemacht worden sind, löscht
diese CPU entsprechend einer weiteren Erscheinungsform 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 in jedem TLB mindestens diejenigen Einträge aus der
kombinierten Bereichs- und Segmenttabelle (CRSTEs) gelöscht, die
die folgenden Bedingungen erfüllen:
Der
gültige
Ungültigmachungs-Index
und die Bits links des Index im allgemeinen Register R2 und der
gleiche Teil des Bereichs- und Segmentindexfelds im TLB-Eintrag
stimmen überein.
(Wenn diese Felder Segmentindexfelder enthalten, können in
einer Ausführungsform
beliebige CRSTEs ungeachtet ihrer Bereichsindexfelder oder alle
CRSTEs gelöscht
werden. Wenn die Felder keine Segmentindexfelder enthalten, können alle
CRSTEs gelöscht
werden.) Es sei angemerkt, dass der gültige Invalidierungsindex erhöht wird
und ein Übertrag
der äußersten
linken Bitstelle des Index verloren geht, wenn mehrere Tabelleneinträge aufgrund
der Bits 53 bis 63 des allgemeinen Registers R2 ungültig gemacht
werden.
-
Entweder
hat R3 den Wert null, oder das Tabellenursprungsfeld im allgemeinen
Register R3 stimmt mit dem Tabellenursprungsfeld im TLB-Eintrag überein.
-
Wenn
der ungültig
gemachte Eintrag ein Eintrag einer Segmenttabelle ist, stimmt das
Seitentabellenursprungs-Feld in dem ungültig gemachten Eintrag mit
dem Seitentabellenursprungs-Feld in dem TLB-Eintrag überein.
(In einer Ausführungsform
kann ein TLB-Eintrag
unabhängig
von dem Seitentabellenursprung in dem Eintrag gelöscht werden.) Außerdem werden
in jedem TLB mindestens diejenigen Seitentabelleneinträge gelöscht, bei
denen das Seitentabellenursprungs-Feld mit dem Seitentabellenursprungs-Feld
in (1) dem ungültig gemachten
Segmenttabelleneintrag übereinstimmt,
wenn ein Segmenttabelleneintrag ungültig gemacht wurde, oder (2)
in einem beliebigen kombinierten Bereichs- und Segmenttabelleneintrag übereinstimmt,
der in demselben TLB gelöscht
wurde (er befindet sich in dem Satz, der gelöscht werden soll). (In einer
weiteren Ausführungsform
kann ein Seitentabelleneintrag ungeachtet des Seitentabellenursprungs
in dem Eintrag gelöscht werden.
Das heißt,
alle Seitentabelleneinträge
können
gelöscht
werden.)
-
Eine
Ausführungsform
der Logik in Verbindung mit dem Löschen von Einträgen aus
einem TLB wird mit Bezug auf 7b beschrieben.
In einem Beispiel ist dies eine Fortsetzung der vom IDTE durchgeführten Verarbeitung,
und sie wird im Vergleich zum Vorgang des Ungültigmachens atomar durchgeführt, was
von dieser CPU und anderen CPUs in dem System beobachtet wird.
-
Bezug
nehmend auf 7b wird zunächst festgestellt, ob R3 den
Wert null hat, ANFRAGE 720. Wenn R3 ungleich null ist,
wird im Register R3 ein Bereichstabellen- oder ein Segmenttabellenursprung
für das
Löschen
angegeben, und damit ein TLB-Eintrag gelöscht werden kann, muss der
im Register R3 gekennzeichnete Bereichs-/Segmenttabellenursprung mit dem Bereichs-/Segmenttabellenursprung übereinstimmen,
der verwendet wurde, um den Eintrag anzulegen, SCHRITT 722.
Wenn R3 den Wert null hat, wird der Inhalt des Registers R3 (des
Registers 0) ignoriert, und ein Eintrag wird ungeachtet des Bereichs-/Segmenttabelleneintrags
gelöscht,
der verwendet wurde, um den Eintrag anzulegen, SCHRITT 724.
-
Alle
Einträge,
die von dem im Register R2 angegebenen Bereichs-/Segmentindex aufgeführt werden, werden im TLB auf
allen Prozessoren im System gelöscht,
SCHRITT 726. In einem Beispiel werden mindestens die kombinierten
Bereichs- und Segmenttabelleneinträge im TLB gelöscht, bei
denen beispielsweise der wirksame Ungültigmachungs-Index und die
Bits links des Index im allgemeinen Register R2 und der gleiche Teil
der Bereichs- und Segmentindextabelle im TLB-Eintrag übereinstimmen.
Um einen Eintrag zu löschen, wird
zum Beispiel das V-Bit ausgeschaltet.
-
Wenn
ein Segmenttabelleneintrag ungültig
gemacht wird, werden in den TLBs auf allen Prozessoren in dem System
außerdem
die Seitentabelleneinträge
gelöscht,
bei denen der Seitentabellenursprung in dem Eintrag gleich dem Seitentabellenursprung
im TLB ist, SCHRITT 728. Wenn ein Segmenttabelleneintrag
ungültig
gemacht wird, werden überdies
mindestens diejenigen Seitentabelleneinträge in den TLBs gelöscht, bei denen
das Seitentabellenursprungs-Feld mit dem Seitentabellenursprungs-Feld
in einem beliebigen CRSTE übereinstimmt,
der (zum Beispiel notwendigerweise) in demselben TLB gelöscht worden
ist, SCHRITT 730. Dieser Löschvorgang wird für mehrere
Einträge
wiederholt, deren Zahl um eins höher
als die Zahl der Einträge ist,
die im Feld 622 für
zusätzliche
Einträge
von 6c angegeben ist, SCHRITT 732.
-
Anschließend wird
festgestellt, ob die Ungültigmachungs--
und Löschoperation
abgeschlossen ist, ANFRAGE 734. In einem Beispiel ist der
IDTE-Befehl auf dem ausgebenden Prozessor erst abgearbeitet, wenn die
gekennzeichneten TLB-Einträge
auf dieser CPU gelöscht
worden sind und alle anderen CPUs in dem System Speicherzugriffe
unter Verwendung des in diesem Befehl angegebenen TLB-Eintrags abgeschlossen
haben. In einem Beispiel ist es die Stilllegungs-Steuereinheit (quiesce
controller), die diesem ausgebenden Prozessor anzeigt, ob die anderen
Prozessoren ihre Zugriffsoperationen abgeschlossen haben. Das heißt, der ausgebende
Prozessor gilt als der Hauptprozessor, und alle untergeordneten Prozessoren,
die von dem IDTE-Befehl betroffen sind, melden der Steuereinheit
ihren Zustand. Als Reaktion darauf, dass die Steuereinheit den entsprechenden
Zustand von den untergeordneten Prozessoren empfängt, zeigt sie dem Hauptprozessor die
Fertigstellung an. Falls die Verarbeitung abgeschlossen ist, ist
der Befehl abgearbeitet, SCHRITT 736. Andernfalls wartet
der Prozessor eine vorher festgelegte Zeitspanne und prüft den Status
erneut, oder ihm wird die Fertigstellung signalisiert, ANFRAGE 734.
-
In
einer Ausführungsform
kann das Speichern in dem Bereichs- oder Segmenttabelleneintrag
und das Löschen
von TLB-Einträgen
wahlweise stattfinden oder nicht stattfinden, wenn das Ungültig-Bit
in dem Bereichs- oder Segmenttabelleneintrag bereits den Wert "1" hatte.
-
Zwar
werden TLB-Einträge
in der vorstehend beschriebenen Ausführungsform erst gelöscht, wenn alle
gewünschten
Einträge
ungültig
gemacht worden sind, doch können
TLB-Einträge
in anderen Ausführungsformen
gelöscht
werden, nachdem ein einzelner TLB-Eintrag ungültig gemacht worden ist oder
nachdem mehrere ausgewählte
Einträge
ungültig
gemacht worden sind.
-
In
einer weiteren Erscheinungsform der vorliegenden Erfindung kann
der IDTE-Befehl alternativ zum Löschen
von TLB-Einträgen
verwendet werden, die zu einem Adressraum gehören (beispielsweise einem Adressraum,
der von einem Adressraum-Steuerelement (ASCE) gekennzeichnet wird).
In einem Beispiel wird diese Option angezeigt, indem das Bit 52
des allgemeinen Registers R2 auf 1 gesetzt wird. Bei dieser Option werden
der Inhalt des allgemeinen Registers R1 (siehe 8a)
sowie die Bits 0 bis 43 und die Bits 53 bis 63 des allgemeinen Registers
R2 (siehe 8b) ignoriert. Der Inhalt des
allgemeinen Registers R3 hat das Format eines Adressraum-Steuerelements,
wobei der Tabellenursprung, die Bits 0 bis 51, verwendet wird (8c).
Die Bits 52 bis 63 des allgemeinen Registers R3 werden ignoriert.
R3 kann den Wert null oder einen Wert ungleich null haben; das heißt, jedes
allgemeine Register einschließlich
des Registers 0 kann gekennzeichnet werden. Diese Operation macht
den Speicherinhalt nicht ungültig,
löscht
aber mindestens diejenigen kombinierten Bereichs- und Segmenttabelleneinträge und Seitentabelleneinträge aus den
TLBs der CPUs in der Konfiguration, bei denen das Tabellenursprungsfeld
mit dem Tabellenursprungsfeld im allgemeinen Register R3 übereinstimmt.
(In einer weiteren Ausführungsform
kann unabhängig
vom Tabellenursprung in dem Eintrag ein Seitentabelleneintrag gelöscht werden.
Das heißt,
alle Seitentabelleneinträge
können
gelöscht
werden.)
-
Eine
Ausführungsform
der Logik in Verbindung mit dem Löschen einer ASCE-Operation
wird mit Bezug auf 9 beschrieben. Zunächst wird
ein Bereichstabellen- oder ein Segmenttabellenursprung angegeben,
der eine Bereichstabelle oder eine Segmenttabelle kennzeichnet,
für die
entsprechende TLB-Einträge
gelöscht
werden sollen, SCHRITT 900. In einem Beispiel wird dies
in den Bits 0 bis 51 des allgemeinen Registers R3 angegeben. Daraufhin
werden mindestens die kombinierten Bereichs- und Segmenttabelleneinträge sowie Seitentabelleneinträge, die
dem in R3 angegebenen Tabellenursprung entsprechen, auf allen Prozessoren
in dem System gelöscht,
SCHRITT 902.
-
Anschließend wird
festgestellt, ob der IDTE-Befehl vollständig ausgeführt worden ist, ANFRAGE 904. In
einer Ausführungsform
ist der IDTE-Befehl auf dem ausgebenden Prozessor erst abgearbeitet,
wenn die TLB-Einträge,
die den angegebenen Parametern entsprechen, auf der ausgebenden
CPU gelöscht
worden sind und die anderen CPUs in der Konfiguration jedwede Speicherzugriffe
einschließlich
der Aktualisierung der Änderungs-
und Referenzbits unter Verwendung der TLB-Einträge, die den angegebenen Parametern
entsprechen, abgeschlossen haben. Wenn die Einträge gelöscht wurden und die Speicherzugriffe
abgeschlossen sind, ist die Ausführung
des IDTE-Befehls
abgeschlossen, SCHRITT 906. Andernfalls wartet der Prozessor eine
vorher festgelegte Zeitspanne und prüft den Status erneut, oder
ihm wird die Fertigstellung signalisiert, ANFRAGE 904.
-
Die
Verarbeitung in Verbindung mit einem IDTE-Befehl wurde vorstehend
ausführlich
beschrieben. In einer Ausführungsform
wirken sich die Operationen nicht unbedingt auf Einträge im realen
TLB-Raum aus. Im Folgenden werden weitere Informationen, Verbesserungen
und/oder Ausführungsformen
in Verbindung mit der Verarbeitung einer Ausführungsform eines IDTE-Befehls
beschrieben.
- 1. Das selektive Löschen von
TLB-Einträgen
kann in Abhängigkeit
von dem Modell oder der ausgewählten Ausführungsform
unterschiedlich vorgenommen werden. Im Allgemeinen können zum
Beispiel mehr Einträge
als die angegebene Mindestzahl gelöscht werden. Wenn die Ungültigmachungs-
und Löschoperation durchgeführt wird,
können
alle kombinierten Bereichs- und Segmenttabelleneinträge (CRSTEs),
die einen Segmentindex enthalten, der gleich einem wirksamen Ungültigmachungs-Index
ist, bei dem es sich um einen Segmentindex handelt, gelöscht werden,
oder alle CRSTEs können
gelöscht
werden, wenn der gültige Ungültigmachungs-Index
kein Segmentindex ist. Außerdem
kann ein CRSTE oder ein Seitentabelleneintrag ungeachtet des Seitentabellenursprungs
in dem Eintrag gelöscht
werden. Wenn die Operation, bei der das Löschen mittels ASCE erfolgt,
durchgeführt
wird, kann ein Seitentabelleneintrag ungeachtet des Tabellenursprungs
in dem Eintrag gelöscht
werden. Wenn in derselben Ausführungsform
sowohl die eine als auch die andere Operation durchgeführt wird,
kann die genaue Mindestzahl der erforderlichen Einträge gelöscht werden.
- 2. Ein Adressraum-Steuerelement kann anstelle eines Bereichstabellen-
oder Segmenttabellenursprungs einen Ursprung in Form von einem Kennzeichen
des realen Adressraums enthalten. Ein Tabellenursprung im allgemeinen
Register R3 kann nicht von einem Kennzeichen-Ursprung in dem Register
unterschieden werden.
- 3. Wenn die Ungültigmachungs-
und Löschoperation
angegeben ist, kann beim Löschen
von TLB-Einträgen
vom Seitentabellenursprung in einem Segmenttabelleneintrag Gebrauch
gemacht werden. Wenn der Segmenttabelleneintrag im zugeordneten
Zustand einen Seitentabellenursprung enthielt, der vom aktuellen Wert
abweicht, können
folglich Kopien der Einträge,
die die vorherigen Werte enthalten, im TLB bleiben.
- 4. Wenn die Ungültigmachungs-
und Löschoperation
angegeben ist, ist die Adresse des DAT-Tabelleneintrags für den IDTE
eine 64-Bit-Adresse,
und die Adressenarithmetik wird durchgeführt, indem die normalen Regeln
für die
64-Bit-Adressenarithmetik mit einem Umlauf bei 264 – 1 befolgt
werden. Auch das Offset- und das Längenfeld werden nicht benutzt.
Folglich muss bei den DAT-Tabellen kein Umlauf von den höchsten Speicherplätzen zum
Speicherplatz 0 angegeben werden, und der erste gekennzeichnete
Eintrag und alle weiteren Einträge,
die von den Bits 63–63
des allgemeinen Registers R3 angegeben werden, sollten innerhalb
der gekennzeichneten Tabelle liegen.
- 5. Der IDTE-Befehl wird unter SIE abgefangen. In einer Ausführungsform
wird das System so für
eine zeitlich aufeinander folgende Verarbeitung ausgelegt (serialisiert),
dass der Prozessor, der den IDTE-Befehl ausführt, erst mit der Operation
beginnen kann, wenn die anderen Prozessoren die anzugebenden TLB-Einträge nicht
mehr verwenden. Außerdem
setzt der Prozessor, der den IDTE-Befehl ausführt, die weitere Ausführung erst
fort, wenn die entsprechenden Einträge aus den TLBs aller Prozessoren
in dem System gelöscht
worden sind.
- 6. Eine Serialisierungsfunktion wird vor dem Beginn der Operation
und nochmals nach Abschluss der Operation ausgeführt. Die Serialisierung gilt
für diese
CPU; andere CPUs werden nicht unbedingt serialisiert.
-
Vorstehend
wurde ein Beispiel eines Befehls, der Einträge einer Segment- oder einer
Bereichstabelle ungültig
machen und mindestens die entsprechenden (oder andere) Einträge aus einem
oder mehreren Adressenumsetzungs-Pufferspeichern atomar löschen kann,
ausführlich
beschrieben. Zwar wurde hier ein bestimmter Befehl beschrieben,
doch können
an dem Befehl viele Veränderungen
vorgenommen werden, ohne vom Wesen der vorliegenden Erfindung abzuweichen.
Es können
zum Beispiel andere Operationscodes, andere Felder, andere Register
oder sogar keine Register, andere Bits usw. verwendet werden. Beispielsweise
können
andere Architekturen von Befehlssätzen einen gleichwertigen Befehl
in etwas anderer Weise festlegen (es werden z.B. andere Operationscodes,
andere Felder in dem Befehl, andere Register verwendet usw.), während nach
wie vor eine oder mehrere Erscheinungsformen der vorliegenden Erfindung
Anwendung finden. Wie vorstehend beschrieben wurde, lassen sich
eine oder mehrere Erscheinungsformen der vorliegenden Erfindung
genauso gut auf eine Software-Emulation einer Zielarchitektur wie
zum Beispiel der z/Architecture von IBM anwenden. In diesem Fall
kann es sich bei den vorstehend erörterten TLBs um eine Matrix
oder um eine andere Datenstruktur handeln, die von dem Software-Emulator
realisiert wird, um die zuletzt durchgeführten Abbildungen von virtuellen
in reale Adressen zu speichern. Es ist auch möglich, dass die Emulator-Software keine einem
TLB entsprechende Struktur realisiert. In diesem Fall findet gegebenenfalls
nur der Vorgang des Ungültigmachens
von Einträgen
im Speicher Anwendung.
-
Folglich
wird hier ein Befehl bereitgestellt, der den Speicherinhalt ungültig machen,
den Speicherinhalt ungültig
machen und Einträge
im Pufferspeicher atomar löschen
oder aber nur Einträge
im Pufferspeicher löschen
kann. Es wird daher gesagt, dass ein oder mehrere Register des Befehls
als Nulloperationen ("no-ops") konfiguriert werden
können.
Das heißt,
die Informationen in diesen Registern, sofern vorhanden, die zu
einer bestimmten Operation (z.B. Ungültigmachen, Löschen usw.)
gehören,
die nicht stattfindet, werden entweder ignoriert oder zeigen an,
dass die Operation nicht durchgeführt wird.
-
Zwar
wurde vorstehend ein bestimmter Befehl beschrieben, bei dem Einträge ungültig gemacht,
ungültig
gemacht und gelöscht
oder nur gelöscht
werden, doch kann der Befehl abgeändert werden, oder es können andere
Befehle realisiert werden, die lediglich eine oder mehrere Erscheinungsformen
der von dem IDTE-Befehl durchgeführten
Operationen ausführen.
Zum Beispiel könnte
ein Befehl lediglich den Inhalt des Speichers ungültig machen.
Als ein weiteres Beispiel könnte
der Befehl lediglich Einträge
aus Pufferspeichern löschen,
die zu bestimmten Segment- oder Bereichstabellen gehören. Als
noch ein weiteres Beispiel könnte ein
Befehl ausgeführt
werden, der Einträge
nur auf der Grundlage des Adressraums löscht.
-
Bei
einer für
kommerziellen Anwendungen ausgelegten Ausführung des von der Rechnerarchitektur vorgegebenen
Formats des Befehls zum Ungültigmachen
und/oder Löschen
von Einträgen
werden die Befehle von Programmierern wie zum Beispiel von Programmierern
von Betriebssystemen verwendet, die in der Assembler-Sprache programmieren.
Diese auf einem Speichermedium gespeicherten Befehlsformate können in ihrer
ursprünglichen
Form auf einem IBM-Server
mit z/Architecture ausgeführt
werden oder alternativ auf Rechnern laufen, die andere Architekturen
ausführen.
Sie können
in vorhandenen und in zukünftigen IBM-Großrechnern
und auf anderen Rechnern von IBM (z.B. Servern der pSeries und der
xSeries) nachgebildet werden. Sie können auf Rechnern, auf denen
Linux läuft,
oder auf einer Vielzahl von anderen Rechnern, die von IBM, Intel,
AMD, Sun Microsystems und anderen hergestellte Hardware nutzen,
ausgeführt
werden. Neben der Ausführung
auf Hardware unter der z/Architecture kann Linux verwendet werden,
und es können auch
andere Rechner eingesetzt werden, bei denen die Emulation mit Hercules,
UMX, FXI oder Platform Solutions durchgeführt wird und die Ausführung im
Allgemeinen in einem Emulationsmodus stattfindet.
-
Im
Emulationsmodus wird der jeweilige Befehl, der nachgebildet wird,
decodiert, und eine Unterroutine wird erstellt, um den einzelnen
Befehl auszuführen,
wie dies zum Beispiel bei einer Unterroutine oder einem Treiber
in C der Fall ist, oder es wird ein anderes Verfahren eingesetzt,
um einen Treiber für
die jeweilige Hardware bereitzustellen; das im Einzelfall gewählte verfahren
liegt im Ermessen des Fachmanns, nachdem dieser die Beschreibung
einer Ausführungsform
der Erfindung gelesen hat. Verschiedene Patentschriften zum Thema Software-
und Hardware-Emulation,
darunter die US-Patentschrift Nr. 5 551 013, die US-Patentschrift Nr.
6 009 261, der US-Patentschrift Nr. 5 574 873, die US-Patentschrift
Nr. 6 308 255, die US-Patentschrift Nr. 6 463 582 und die US-Patentschrift
Nr. 5 790 825, jedoch nicht auf diese beschränkt, veranschaulichen eine
Vielfalt bekannter Möglichkeiten,
mit denen sich das Format eines Befehls nachbilden lässt, dessen
Architektur für
einen anderen Rechner oder für
einen dem Fachmann zur Verfügung
stehenden Zielrechner ausgelegt ist, und mit denen sich die vorstehend
beschriebenen kommerziellen Software-Verfahren umsetzen lassen,
die von den vorstehend Genannten angewendet werden.
-
Vorteilhafterweise
verbessern ein oder mehrere Erscheinungsformen der vorliegenden
Erfindung die Systemleistung. Indem man beispielsweise Einträge selektiv
aus Pufferspeichern löscht,
statt den gesamten Inhalt der Pufferspeicher zu löschen, wird
die Systemleistung dadurch erhöht,
dass die Notwendigkeit, Einträge neu
zu erstellen, entfällt.
Das heißt,
man benötigt
mindestens 20 und bis zu Hunderten von Zyklen, um einen TLB-Eintrag
zu erstellen, und indem man Einträge selektiv löscht, müssen Einträge nicht
unnötigerweise
neu erstellt werden.
-
Ein
weiterer Vorteil besteht darin, dass in dem Fall, in dem der gesamte
Inhalt des TLB gelöscht
werden soll, die gegebene Art der Ausführung die Möglichkeit bietet, Einträge im Übermaß zu löschen. Überdies kann
der TLB-Teil als ein Nullbefehl behandelt werden, wenn ein TLB zum
Beispiel nicht verwendet wird. Vorteilhafterweise kann der IDTE-Befehl
in Hardware, Firmware, Software oder einer Kombination daraus ausgeführt werden,
oder er kann in einem Emulator eines Befehlssatzes eines Zielrechners
verwendet werden.
-
An
der vorstehend beschriebenen Umgebung sind viele Veränderungen
möglich,
ohne vom Wesen der vorliegenden Erfindung abzuweichen. So sind zum
Beispiel eine oder mehrere Erscheinungsformen der vorliegenden Erfindung
gleichermaßen
auf beispielsweise eine Emulation einer virtuellen Maschine anwendbar,
bei der eine oder mehrere auslagerbare Entitäten (z.B. Gäste) Operationen auf einem
oder mehreren Prozessoren ausführen.
Auslagerbare Gäste
werden beispielsweise von der Start-Interpretive-Execution-(SIE-) Architektur
definiert, wobei ein Beispiel dieser Architektur in einer IBM®-Publikation
mit dem Titel "IBM
System/370 Extended Architecture",
IBM Publication Nr. SA22-7095 (1985) beschrieben ist.
-
Obgleich
SIE und die z/Architecture vorstehend erwähnt wurden, sind eine oder
mehrere Erscheinungsformen der vorliegenden Erfindung genauso auf
andere Architekturen und/oder Umgebungen anwendbar, die auslagerbare
Entitäten
oder ähnliche
Konstrukte verwenden.
-
Die
verschiedenen vorstehend beschriebenen Ausführungsformen haben außerdem lediglich
Beispielcharakter. An diesen Ausführungsformen können viele Änderungen
vorgenommen werden, ohne vom Wesen der vorliegenden Erfindung abzuweichen.
Obgleich in diesem Schriftstück
beispielsweise eine logisch unterteilte Umgebung beschrieben ist,
dient diese Umgebung lediglich als Beispiel. Erscheinungsformen
der Erfindung sind für
viele Arten von Umgebungen einschließlich anderer Umgebungen, die über eine
Vielzahl von Zonen verfügen,
und Umgebungen, die nicht unterteilt sind, von Vorteil. Darüber hinaus
kann es anstelle von Zentralprozessorkomplexen mehrere miteinander
verbundene Prozessoren geben. Auch sind eine oder mehrere Erscheinungsformen
der Erfindung auf Umgebungen mit nur einem Prozessor anwendbar.
-
Obgleich
hier bestimmte Umgebungen beschrieben wurden, können an diesen Umgebungen viele Änderungen
vorgenommen werden, ohne vom Wesen der vorliegenden Erfindung abzuweichen.
Wenn die Umgebung zum Beispiel logisch unterteilt ist, können mehr
oder weniger logische Partitionen in die Umgebung aufgenommen werden.
Außerdem
kann es mehrere miteinander verbundene Zentralprozessorkomplexe
geben. Dies sind nur einige der Änderungen,
die vorgenommen werden können.
Darüber
hinaus sind noch weitere abweichende Gestaltungsformen möglich. Obgleich
die hier beschriebene Steuereinheit den Befehl serialisiert, so
dass nur jeweils ein IDTE-Befehl ausgeführt wird, können in einer anderen Ausführungsform
beispielsweise mehrere Befehle gleichzeitig ausgeführt werden.
Auch kann die Umgebung mehrere Steuereinheiten enthalten. Ferner
besteht die Möglichkeit,
dass in dem System mehrere Stilllegungsanforderungen (von einer
oder mehreren Steuereinheiten) gleichzeitig anstehen. Weitere Variationen
sind ebenfalls möglich.
-
Der
Begriff "Verarbeitungseinheit" in der hier verwendeten
Weise beinhaltet auslagerbare Entitäten wie zum Beispiel Gäste, Prozessoren,
Emulatoren und/oder andere ähnliche
Komponenten. Darüber
hinaus beinhaltet das Konstrukt "von
einer/durch eine Verarbeitungseinheit" die Bedeutung "im Namen beziehungsweise im Auftrag
einer Verarbeitungseinheit".
Der Begriff "Pufferspeicher" beinhaltet einen
Bereich des Speichers sowie verschiedene Arten von Datenstrukturen
einschließlich
Matrizen, jedoch nicht auf diese beschränkt; und der Begriff "Tabelle" kann andere Datenstrukturen
als Datenstrukturen vom Typ Tabelle beinhalten. Ein Befehl kann
außerdem
nicht nur Register zur Kennzeichnung von Informationen beinhalten.
Ferner können
eine Seite, ein Segment und/oder ein Bereich eine andere Größe als die
hier beschriebene aufweisen.
-
Eine
oder mehrere Funktionen der vorliegenden Erfindung können in
Software, Firmware, Hardware oder einer Kombination daraus ausgeführt werden. Überdies
können
eine oder mehrere der Funktionen nachgebildet werden.
-
Eine
oder mehrere Erscheinungsformen der vorliegenden Erfindung können in
einen Herstellungsgegenstand (z.B. in ein oder in mehrere Rechnerprogrammprodukte)
integriert werden, der zum Beispiel über einen rechnerlesbaren Datenträger verfügt. Auf
dem Datenträger
befindet sich zum Beispiel ein rechnerlesbares Programmcode-Mittel
oder eine rechnerlesbare Logik (z.B. Anweisungen, Code, Befehle
usw.), um die Funktionen der vorliegenden Erfindung bereitzustellen
und zu vereinfachen. Der Herstellungsgegenstand kann als Teil eines
Rechnersystems enthalten sein oder separat zum Verkauf angeboten
werden.
-
Überdies
kann mindestens eine Programmspeichereinheit bereitgestellt werden,
die von einem Rechner gelesen werden kann, der mindestens ein Programm
mit Befehlen enthält,
die von dem Rechner ausgeführt
werden können,
um die Funktionen der vorliegenden Erfindung auszuführen.
-
Bei
den hier gezeigten Flussdiagrammen handelt es sich lediglich um
Beispiele. An diesen Diagrammen oder den darin beschriebenen Schritten
(oder Operationen) können
viele Änderungen
vorgenommen werden. Beispielsweise kann die Reihenfolge der Schritte
geändert
werden, oder Schritte können
hinzugefügt,
gelöscht
oder geändert
werden.
-
Eine
Vorrichtung, die dazu dient, den Inhalt des Speichers einer Datenverarbeitungsumgebung
ungültig
zu machen, wobei die Vorrichtung Folgendes umfasst:
Ein Mittel,
um über
einen Befehl eine Speicherungseinheit anzugeben, die ungültig gemacht
werden soll, wobei die Speicherungseinheit eine Vielzahl von Speicherseiten
umfasst; und
ein Mittel, um die Speicherungseinheit ungültig zu
machen.
-
ZUSAMMENFASSUNG
-
Ausgewählte Speicherungseinheiten
wie zum Beispiel Speichersegmente oder Speicherbereiche werden ungültig gemacht.
Das Ungültigmachen
wird dadurch vereinfacht, dass Ungültigmachungs-Anzeiger gesetzt
werden, die sich in den Datenstruktur-Einträgen befinden, welche den Speicherungseinheiten,
die ungültig
gemacht werden sollen, entsprechen. Ferner werden Einträge in Pufferspeichern,
die zu den ungültig
gemachten Speicherungseinheiten oder anderen gewählten Speicherungseinheiten
gehören,
gelöscht.
Ein Befehl zur Durchführung
der Ungültigmachungs-
und/oder Löschoperation
wird bereitgestellt. Darüber
hinaus werden Einträge
in Pufferspeichern, die zu einem bestimmten Adressraum gehören, gelöscht, ohne
ungültig gemacht
zu werden. Dies wird ebenfalls von dem Befehl durchgeführt. Der
Befehl kann in Software, Hardware, Firmware oder einer Kombination
daraus ausgeführt
oder emuliert werden.