Warning: fopen(111data/log202002201841.log): failed to open stream: No space left on device in /home/pde321/public_html/header.php on line 107

Warning: flock() expects parameter 1 to be resource, boolean given in /home/pde321/public_html/header.php on line 108

Warning: fclose() expects parameter 1 to be resource, boolean given in /home/pde321/public_html/header.php on line 113
Leistungssteigerung einer Adreßübersetzung unter Verwendung von Übersetzungstabellen, die große Adreßräume umfassen - Dokument DE112005002298T5
 
PatentDe  


Dokumentenidentifikation DE112005002298T5 27.09.2007
Titel Leistungssteigerung einer Adreßübersetzung unter Verwendung von Übersetzungstabellen, die große Adreßräume umfassen
Anmelder Intel Corp., Santa Clara, Calif., US
Erfinder Schoinas, Ioannis, Portland, Oreg., US;
Neiger, Gilbert, Portland, Oreg., US;
Madukkarumukumana, Rajesh, Portland, Oreg., US;
King, Ku-jei, Taipei Hsien, TW;
Uhlig, Richard, Hillsboro, Oreg., US;
Zahir, Achmed, Menlo Park, Calif., US;
Yamada, Koichi, Los Gatos, Calif., US
Vertreter BOEHMERT & BOEHMERT, 28209 Bremen
DE-Aktenzeichen 112005002298
Vertragsstaaten AE, AG, AL, AM, AT, AU, AZ, BA, BB, BG, BR, BW, BY, BZ, CA, CH, CN, CO, CR, CU, CZ, DE, DK, DM, DZ, EC, EE, EG, ES, FI, GB, GD, GE, GH, GM, HR, HU, ID, IL, IN, IS, JP, KE, KG, KM, KP, KR, KZ, LC, LK, LR, LS, LT, LU, LV, MA, MD, MG, MK, MN, MW, MX, MZ, NA, NG, NI, NO, NZ, OM, PG, PH, PL, PT, RO, RU, SC, SD, SE, SG, SK, SL, SM, SY, TJ, TM, TN, TR, TT, TZ, UA, UG, US, UZ, VC, VN, YU, ZA, ZM, ZW, EP, AT, BE, BG, CH, CY, CZ, DE, DK, EE, ES, FI, FR, GB, GR, HU, IE, IS, IT, LT, LU, LV, MC, NL, PL, PT, RO, SE, SI, SK, TR, OA, BF, BJ, CF, CG, CI, CM, GA, GN, GQ, GW, ML, MR, NE, SN, TD, TG, AP, BW, GH, GM, KE, LS, MW, MZ, NA, SD, SL, SZ, TZ, UG, ZM, ZW, EA, AM, AZ, BY, KG, KZ, MD, RU, TJ, TM
WO-Anmeldetag 01.09.2005
PCT-Aktenzeichen PCT/US2005/031471
WO-Veröffentlichungsnummer 2006039057
WO-Veröffentlichungsdatum 13.04.2006
Date of publication of WO application in German translation 27.09.2007
Veröffentlichungstag im Patentblatt 27.09.2007
IPC-Hauptklasse G06F 12/10(2006.01)A, F, I, 20050901, B, H, DE

Beschreibung[de]
Allgemeiner Stand der Technik Gebiet der Erfindung

Ausführungsformen der Erfindung betreffen das Gebiet der Mikroprozessoren und insbesondere die Eingabe/Ausgabe (E/A)-Virtualisierung.

Beschreibung des Standes der Technik

In dem Maße, wie die Architektur von Mikroprozessoren zunehmend komplexer wird, um Hochleistungsanwendungen unterstützen zu können, wird die E/A-Verwaltung zu einer Herausforderung.

Die derzeitigen Techniken zur Lösung des Problems der E/A-Verwaltung haben eine Reihe von Nachteilen. Eine Technik arbeitet ausschließlich mit auf Software basierender E/A-Virtualisierung zum Unterstützen der E/A von virtuellen Maschinen (VM). Diese Technik hat begrenzte Funktionalität, Leistung und Zuverlässigkeit. Die Funktionalität, die durch das Betriebssystem (BS) und die Anwendungen des Gastes wahrgenommen wird, ist durch die Funktionalität begrenzt, die durch die virtuellen Geräte unterstützt wird, die in der VM-Monitor (VMM)-Software emuliert wird. Die Gast-E/A-Operationen werden durch den VMM erfaßt und durch den VMM als Proxy übersetzt oder emuliert, bevor sie der zugrundeliegenden Hardware des physischen Gerätes präsentiert werden, was zu einer schlechten Leistung führt. Außerdem arbeitet der Gerätetreiber für das Hardware-Gerät ganz oder teilweise als Teil der bevorrechtigten VMM-Software, was die Gesamtzuverlässigkeit der Plattform beeinträchtigen kann. Techniken, die mit spezialisierten Übersetzungsstrukturen arbeiten, können lediglich ein bestimmtes Gerät oder ein begrenztes Nutzungsmodell unterstützen. Allgemeine E/A-Speicherverwaltungseinheiten bieten nur Unterstützung für virtuelle E/A-Adreßräume von begrenzter Größe oder Komplexität.

Kurze Beschreibung der Zeichnungen

Die Ausführungsformen der Erfindung lassen sich am besten anhand der folgenden Beschreibung und der begleitenden Zeichnungen verstehen, die dazu dienen, Ausführungsformen der Erfindung zu veranschaulichen. Die Zeichnungen stellen Folgendes dar:

1 ist ein Schaubild, das ein System veranschaulicht, in dem eine Ausführungsform der Erfindung praktiziert werden kann.

2 ist ein Schaubild, das eine Eingabe/Ausgabe (E/A)-Gerätezuordnung gemäß einer Ausführungsform der Erfindung veranschaulicht.

3 ist ein Schaubild, das eine Virtualisierung unter Verwendung einer Speicherdirektzugriffs (SDZ)-Neuabbildung gemäß einer Ausführungsform der Erfindung veranschaulicht.

4 ist ein Schaubild, das eine E/A-Adreßübersetzung gemäß einer Ausführungsform der Erfindung veranschaulicht.

5 ist ein Schaubild, das eine SDZ-Neuabbildungsstruktur gemäß einer Ausführungsform der Erfindung veranschaulicht.

6 ist ein Schaubild, das einen Registersatz, der gemeinsame Register enthält, gemäß einer Ausführungsform der Erfindung veranschaulicht.

7 ist ein Schaubild, das einen Registersatz, der Adreßfilterungsregister enthält, gemäß einer Ausführungsform der Erfindung veranschaulicht.

8A ist ein Schaubild, das einen Wurzeleintrag gemäß einer Ausführungsform der Erfindung veranschaulicht.

8B ist ein Schaubild, das einen Kontexteintrag gemäß einer Ausführungsform der Erfindung veranschaulicht.

8C ist ein Schaubild, das einen Seitentabelleneintrag gemäß einer Ausführungsform der Erfindung veranschaulicht.

9A ist ein Schaubild, das eine Adreßübersetzungsstruktur, die Mehrebenen-Tabellen verwendet, gemäß einer Ausführungsform der Erfindung veranschaulicht.

9B ist ein Schaubild, das eine Adreßübersetzungsstruktur, die eine Einzeltabelle verwendet, gemäß einer Ausführungsform der Erfindung veranschaulicht.

9C ist ein Schaubild, das eine Adreßübersetzungsstruktur, die eine Basis- oder begrenzte Übersetzung verwendet, gemäß einer Ausführungsform der Erfindung veranschaulicht.

10 ist ein Schaubild, das einen Registersatz, der ein Leistungsregister verwendet, gemäß einer Ausführungsform der Erfindung veranschaulicht.

11A ist ein Schaubild, das eine Adreßübersetzungsstruktur, die Mehrfachtabellen und Stride verwendet, gemäß einer Ausführungsform der Erfindung veranschaulicht.

11B ist ein Schaubild, das eine Adreßübersetzungsstruktur, die Mehrfachtabellen und Superseiten verwendet, gemäß einer Ausführungsform der Erfindung veranschaulicht.

Beschreibung

Eine Ausführungsform der vorliegenden Erfindung betrifft ein Technik zur Steigerung der Adreßübersetzungsleistung. Ein Register speichert Leistungsindikatoren, um eine Leistung anzuzeigen, die durch einen Schaltkreis in einem Chipsatz zur Adreßübersetzung einer physischen Gastadresse in eine physische Hotadresse unterstützt. Mehrere Mehrebenen-Seitentabellen werden für einen Seitendurchlauf bei der Adreßübersetzung verwendet. Jede der Seitentabellen hat Seitentabelleneinträge. Jeder der Seitentabelleneinträge hat wenigstens einen Eintragsspezifikator, welcher der Leistung entspricht, die durch die Leistungsindikatoren angezeigt wird.

In der folgenden Beschreibung werden zahlreiche konkrete Details dargelegt. Es versteht sich jedoch, daß Ausführungsformen der Erfindung auch ohne diese konkreten Details praktiziert werden können. In anderen Fällen wurden einschlägig bekannte Schaltkreise, Strukturen und Techniken nicht gezeigt, um ein Erschweren des Verständnisses dieser Beschreibung zu vermeiden.

1 ist ein Schaubild, das ein System 100 veranschaulicht, in dem eine Ausführungsform der Erfindung praktiziert werden kann. Das System 100 enthält einen Prozessor 110, einen Prozessorbus 120, einen Speichersteuerhub (SSH) 130, einen Systemspeicher 140, einen Eingabe/Ausgabe-Steuerhub (ESH) 150, einen Peripheriebus 155, ein Massenspeichergerät oder eine Massenspeicherschnittstelle 170 und Eingabe/Ausgabe-Geräte 1801 bis 180K und 185. Es ist zu beachten, daß das System 100 mehr oder weniger Elemente als die oben genannten enthalten kann.

Der Prozessor 110 stellt eine zentrale Verarbeitungseinheit eines beliebigen Architekturtyps dar, wie zum Beispiel eingebettete Prozessoren, mobile Prozessoren, Mikrocontroller, digitale Signalprozessoren, superskalare Computer, Vektorprozessoren, Single Instruction Multiple Data (SIMD)-Computer, Complex Instruction Set-Computer (CISC), Reduced Instruction Set-Computer (RISC), eine Very Long Instruction Word (VLIW)- oder Hybridarchitektur.

Der Prozessorbus 120 gibt Schnittstellensignale aus, damit der Prozessor 110 mit anderen Prozessoren oder Geräten, zum Beispiel dem SSH 130, kommunizieren kann. Der Prozessorbus 120 kann eine Einprozessor- oder Mehrprozessorkonfiguration unterstützen. Der Prozessorbus 120 kann parallel, sequentiell, verknüpft, asynchron, synchron oder eine Kombination daraus sein.

Der SSH 130 besorgt die Steuerung und Konfiguration von Speicher- und Eingabe/Ausgabe-Geräten, wie zum Beispiel des Systemspeichers 140 und des ESH 150. Der SSH 130 kann in einen Chipsatz integriert sein, der mehrere Funktionalitäten integriert, wie zum Beispiel den isolierten Ausführungsmodus, die Host-zu-Peripheriebus-Schnittstelle und die Speichersteuerung. Der SSH 130 ist direkt oder über den ESH 150 an den Peripheriebus 155 angeschlossen. Aus Gründen der Übersichtlichkeit sind nicht alle Peripheriebusse gezeigt. Es wird in Betracht gezogen, daß das System 100 auch Peripheriebusse wie zum Beispiel Periphery Component Interconnect (PCI), PCI Express, Accelerated Graphics Port (AGP), Industry Standard Architecture (ISA)-Bus, Universal Serial Bus (USB) usw. enthalten kann.

Der SSH 130 enthält einen Speicherdirektzugriffs (SDZ)-Neuabbildungsschaltkreis 135. Der SDZ-Neuabbildungsschaltkreis 135 bildet ein E/A-Gerät (zum Beispiel eines der E/A-Geräte 1801 bis 180K und 185) in einen Bereich in dem Systemspeicher 140 in einer E/A-Transaktion ab. Die E/A-Transaktion ist in der Regel eine SDZ-Anforderung. Der SDZ-Neuabbildungsschaltkreis 135 bietet Hardware-Unterstützung, um die E/A-Gerätezuordnung und/oder die E/A-Geräteverwaltung zu ermöglichen oder zu verbessern. Der SDZ-Neuabbildungsschaltkreis 135 kann auch in einem anderen Chipsatz als dem SSH 130 enthalten sein, wie zum Beispiel dem ESH 150. Er kann auch ganz oder teilweise in dem Prozessor 110 oder als ein separater Prozessor oder Koprozessor für andere Prozessoren oder Geräte implementiert sein.

Der Systemspeicher 140 speichert Systemcode und -daten. Der Systemspeicher 140 ist in der Regel mit dynamischem Direktzugriffsspeicher (DRAM) oder statischem Direktzugriffsspeicher (SRAM) implementiert. Der Systemspeicher kann Programmcode oder Codesegmente enthalten, die eine Ausführungsform der Erfindung implementieren. Der Systemspeicher enthält ein Betriebssystem (BS) 142 oder einen Teil des BS oder einen Kernel und einen E/A-Treiber 145. Jedes der Elemente des BS 142 oder der E/A-Treiber 145 kann durch Hardware, Software, Firmware, Mikrocode oder Kombinationen daraus implementiert sein. Der Systemspeicher 140 kann auch andere Programme oder Daten enthalten, die nicht gezeigt sind.

Der ESH 150 hat eine Anzahl von Funktionalitäten, die dafür ausgelegt sind, E/A-Funktionen zu unterstützen. Der ESH 150 kann auch in einen Chipsatz zusammen mit oder separat von dem SSH 130 integriert sein, um E/A-Funktionen auszuführen. Der ESH 150 kann eine Anzahl von Schnittstellen- und E/A-Funktionen enthalten, wie zum Beispiel eine PCI-Busschnittstelle, um eine Schnittstelle zu dem Peripheriebus 155 zu bilden, eine Prozessorschnittstelle, einen Interrupt-Controller, einen Speicherdirektzugriffs (SDZ)-Controller, eine Energieverwaltungslogik, einen Zeitgeber, einen System Management Bus (SMBus), eine Universal Serial Bus (USB)-Schnittstelle, eine Massenspeicherschnittstelle, eine Low Pin Count (LPC)-Schnittstelle usw.

Das Massenspeichergerät oder die Massenspeicherschnittstelle 170 ermöglicht die Speicherung von Archivinformationen, wie zum Beispiel Code, Programmen, Dateien, Daten, Anwendungen und Betriebssystemen. Das Massenspeichergerät oder die Massenspeicherschnittstelle 170 kann mit einem Compact Disk (CD)-ROM 172, einer digitalen Video/Versatile-Disk (DVD) 173, einem Diskettenlaufwerk 174 und einem Festplattenlaufwerk 176 und sonstigen anderen magnetischen oder optischen Speichervorrichtungen verbunden sein. Das Massenspeichergerät oder die Massenspeicherschnittstelle 170 stellt einen Mechanismus zum Lesen von für Maschinen zugänglichen Medien bereit. Die für Maschinen zugänglichen Medien können computerlesbaren Programmcode zum Ausführen von Aufgaben enthalten, wie im Folgenden beschrieben wird.

Zu den E/A-Geräten 1801 bis 180K können jegliche E/A-Geräte zum Ausführen von E/A-Funktionen, einschließlich SDZ-Anforderungen, gehören. Sie sind mit dem Peripheriebus 155 verbunden. Zu Beispielen von E/A-Geräten 1801 bis 180K gehören Controller für Eingabegeräte (zum Beispiel Tastatur, Maus, Trackball, Zeigegerät), Medienkarten (zum Beispiel Audio, Video, Grafik), Netzwerkkarten und jegliche sonstige Peripherie-Controller. Das E/A-Gerät 185 ist direkt mit dem ESH 150 verbunden. Der Peripheriebus 155 ist ein beliebiger Bus, der E/A-Transaktionen unterstützt. Zu Beispielen des Peripheriebusses 155 gehören der PCI-Bus, PCI Express usw.

Elemente einer Ausführungsform der Erfindung können durch Hardware, Firmware, Software oder Kombinationen daraus implementiert sein. Der Begriff "Hardware" meint allgemein ein Element mit einer physischen Struktur, wie zum Beispiel elektronische, elektromagnetische, optische, elektro-optische, mechanische, elektromechanische Teile usw. Der Begriff "Software" meint allgemein eine logische Struktur, ein Verfahren, ein Procedere, ein Programm, eine Routine, einen Prozeß, einen Algorithmus, eine Formel, eine Funktion, einen Ausdruck usw. Der Begriff "Firmware" meint allgemein eine logische Struktur, ein Verfahren, ein Procedere, ein Programm, eine Routine, einen Prozeß, einen Algorithmus, eine Formel, eine Funktion, einen Ausdruck usw., die/das/der in einer Hardware-Struktur implementiert oder verkörpert ist (zum Beispiel Flash-Speicher, Nurlesespeicher, löschbarer Nurlesespeicher). Zu Beispielen für Firmware können Mikrocode, beschreibbarer Steuerspeicher und eine mikroprogrammierte Struktur gehören. Bei Implementierung als Software oder Firmware sind die Elemente einer Ausführungsform der vorliegenden Erfindung im Wesentlichen die Codesegmente zum Ausführen der notwendigen Aufgaben. Die Software oder Firmware kann den eigentlichen Code zum Ausführen der Operationen, die in einer Ausführungsform der Erfindung beschrieben sind, oder Code, der die Operationen emuliert oder simuliert, enthalten. Die Programm- oder Codesegmente können in einem für einen Prozessor oder eine Maschine zugänglichen Medium gespeichert sein oder durch ein Computerdatensignal, das in einer Trägerwelle verkörpert ist, oder ein Signal, das durch einen Träger moduliert ist, über ein Übertragungsmedium übertragen werden. Zu dem "für einen Prozessor lesbaren oder zugänglichen Medium" oder "für eine Maschine lesbaren oder zugänglichen Medium" kann jedes Medium gehören, das Informationen speichern, übertragen oder übergeben kann. Zu Beispielen eines für einen Prozessor lesbaren oder für Maschinen zugänglichen Mediums gehören ein elektronischer Schaltkreis, ein Halbleiterspeicherbaustein, ein Nurlesespeicher (ROM), ein Flash-Speicher, ein löschbarer ROM(EROM), ein Diskette, ein Compact Disk (CD)-ROM, eine optische Disk, eine Festplatte, ein faseroptisches Medium, eine Hochfrequenz (HF)-Verbindung usw. Zu einem Computerdatensignal kann jedes Signal gehören, das sich über ein Übertragungsmedium ausbreiten kann, wie zum Beispiel elektronische Netzwerkkanäle, optische Fasern, Luft-, elektromagnetische, HF-Verbindungen usw. Die Codesegmente können über Computernetze wie zum Beispiel das Internet, Intranet usw. heruntergeladen werden. Das für Maschinen zugängliche Medium kann in einem hergestellten Gegenstand verkörpert sein. Das für Maschinen zugängliche Medium kann Daten enthalten, die, wenn durch eine Maschine auf sie zugegriffen wird, die Maschine veranlassen, die im Folgenden beschriebenen Operationen auszuführen. In dem für Maschinen zugänglichen Medium kann auch Programmcode eingebettet sein. Der Programmcode kann maschinenlesbaren Code zum Ausführen der im Folgenden beschriebenen Operationen enthalten. Der Begriff "Daten" meint hier jede Art von Informationen, die für maschinen-lesbare Zwecke codiert sind. Somit können dazu Programmcode, Daten, Dateien usw. gehören.

Die gesamte oder ein Teil einer Ausführungsform der Erfindung kann durch Hardware, Software oder Firmware oder Kombinationen daraus implementiert sein. Das Hardware-, Software- oder Firmware-Element kann mehrere Module aufweisen, die miteinander verbunden sind. Ein Hardware-Modul ist mit einem anderen Modul durch mechanische, elektrische, optische, elektromagnetische oder sonstige physische Verbindungen verbunden. Ein Software-Modul ist mit einem anderen Modul durch eine Funktion, ein Procedere, ein Verfahren, ein Unterprogramm, einen Subroutinenaufruf einen Sprung, eine Verknüpfung, einen Parameter, eine Variable, eine Argumentweitergabe, eine Funktionsrückgabe usw. verbunden. Ein Software-Modul ist mit einem anderen Modul verbunden, um Variablen, Parameter, Argumente, Zeiger usw. zu empfangen und/oder um Ergebnisse, aktualisierte Variablen, Zeiger usw. zu erzeugen oder weiterzugeben. Ein Firmware-Modul ist mit einem anderen Modul durch eine beliebige Kombination aus den oben genannten Hardware- und Softwareverbindungsverfahren verbunden. Ein Hardware-, Software- oder Firmware-Modul kann mit einem beliebigen der anderen Hardware-, Software- oder Firmware-Module verbunden sein. Ein Modul kann auch ein Software-Treiber oder eine Schnittstelle sein, um mit dem Betriebssystem, das auf der Plattform arbeitet, zu interagieren. Ein Modul kann auch ein Hardware-Treiber sein, um Daten zu und von einem Hardware-Gerät zu konfigurieren, einzurichten, zu initialisieren, zu senden und zu empfangen. Eine Vorrichtung kann eine beliebige Kombination aus Hardware-, Software- und Firmware-Modulen enthalten.

Eine Ausführungsform der Erfindung kann als ein Prozeß beschrieben werden, der in der Regel als ein Flußdiagramm, ein Flußschaubild, ein Strukturschaubild oder ein Blockschaubild dargestellt ist. Obgleich ein Flußdiagramm die Operationen als einen sequentiellen Prozeß beschreiben kann, können viele der Operationen parallel oder gleichzeitig ausgeführt werden. Außerdem kann die Reihenfolge der Operationen umgeordnet werden. Ein Prozeß wird beendet, wenn seine Operationen vollständig ausgeführt sind. Ein Prozeß kann einem Verfahren, einem Programm, einem Procedere, einem Herstellungs- oder Fertigungsverfahren usw. entsprechen.

In einer standardmäßigen Computerplattform fungieren die E/A-Teilsystemkomponenten als Teil eines einzelnen Bereichs und werden durch die Betriebssystemsoftware verwaltet. Eine Ausführungsform der Erfindung erbringt die Hardware-Unterstützung, die benötigt wird, um E/A-Geräte in einer Computerplattform mehreren Bereichen zuzuordnen.

Ein Bereich ist abstrakt als eine isolierte Umgebung in der Plattform definiert, der eine Teilmenge des physischen Host-Speichers zugeordnet ist. Der physische Host-Speicher ist in dem Systemspeicher 140 enthalten. E/A-Geräte, die direkt auf den physischen Speicher zugreifen dürfen, der einem Bereich zugeordnet ist, werden als die zugeordneten Geräte des Bereichs bezeichnet. Die Isolationseigenschaft eines Bereichs erreicht man durch Sperren des Zugangs zu seinem physischen Speicher von Ressourcen aus, die ihm nicht zugeordnet sind. Mehrere isolierte Bereiche werden unterstützt, indem gewährleistet wird, daß alle E/A-Geräte irgendeinem Bereich zugeordnet sind (möglicherweise einem standardmäßig vorgegebenen Bereich), und indem der Zugriff von jedem zugeordneten Gerät aus auf lediglich den physischen Speicher beschränkt wird, der seinem Bereich zugeordnet ist.

Jeder Bereich hat eine Sicht auf den physischen Speicher oder einen physischen Adreßraum, der sich von der Sicht des Systems auf den physischen Speicher unterschieden kann. Adressen, die von den Ressourcen eines Bereichs zum Zugreifen auf seinen physischen Adreßraum verwendet werden, werden als ihre physischen Gastadressen (PGA) bezeichnet. Die physische Hostadresse (PHA) bezieht sich auf die physische Adresse des Systems, die zum Zugreifen auf einen Speicher verwendet wird. Ein Bereich wird als "verschoben" betrachtet, wenn seine PGA in eine neue PHA übersetzt wird, um auf seinen zugeordneten physischen Systemsspeicher zuzugreifen. Ein Bereich wird als "nicht-verschoben" bezeichnet, wenn sein physischer Gastadreßraum derselbe wie der physische Hostadreßraum des Systems ist oder eine Teilmenge des physischen Hostadreßraums des Systems ist. Die logische Trennung von PGA und PHA bildet die Grundlage für die Durchsetzung des Speicherschutzes. Es bedarf einer Übersetzung der physischen Adresse und eines Schutzmechanismus', der physische Gastadressen validieren kann, die durch zugeordnete Geräte eines Bereichs erzeugt wurden, und sie in gültige physische Hostadressen übersetzen kann. Der SDZ-Neuabbildungsschaltkreis 135 bietet diese Hardware-Unterstützung.

Zum Zuordnen von E/A-Geräten zu Bereichen werden eine Übersetzung und ein Schutz der physischen Adresse für SDZ-Anforderungen von allen E/A-Geräten in der Plattform angewendet. Aus Gründen der Einfachheit wird die Funktionalität der physischen Adreßübersetzung für SDZ-Anforderungen von E/A-Geräten als SDZ-Neuabbildung bezeichnet.

2 ist ein Schaubild, das eine Eingabe/Ausgabe (E/A)-Gerätezuordnung gemäß einer Ausführungsform der Erfindung veranschaulicht. Die E/A-Gerätezuordnung ist eine Abbildung eines E/A-Gerätes auf einen Bereich im Systemspeicher 140. Die Abbildung wird durch den SDZ-Neuabbildungsschaltkreis 135 unterstützt. Als ein Beispiel wird das Gerät A 210 in den Bereich 1 240 im Systemspeicher 140 abgebildet. Der Bereich 1 kann einen Treiber 242 für das Gerät A 210 haben. Es können auch mehrere Treiber verwendet werden.

Der SDZ-Neuabbildungsschaltkreis 135 enthält einen Registersatz 220, eine SDZ-Neuabbildungsstruktur 222 und einen Logikschaltkreis 224. Der Registersatz 220 enthält eine Anzahl von Registern, die Steuerungs- oder Statusinformationen bereitstellen, die von der SDZ-Neuabbildungsstruktur 222, dem Logikschaltkreis 224 und den Programmen oder Treibern für die E/A-Geräte verwendet werden. Die SDZ-Neuabbildungsstruktur 222 stellt die grundlegende Struktur, den grundlegenden Speicher oder die grundlegenden Tabellen bereit, die bei der Neuabbildung oder Adreßübersetzung der physischen Gastadresse in die physische Hostadresse in einem entsprechenden Bereich verwendet wird. Der Logikschaltkreis 224 enthält einen Schaltungsaufbau, der die Neuabbildungs- oder Adreßübersetzungsoperationen und andere Schnittstellenfunktionen ausführt. Der SDZ-Neuabbildungsschaltkreis 135 kann unterschiedliche Implementierungen haben, um unterschiedliche Konfigurationen zu unterstützen und um unterschiedliche Fähigkeiten für die Neuabbildungs- oder Adreßübersetzungsoperationen bereitzustellen.

Die E/A-Gerätezuordnung und/oder -verwaltung unter Verwendung des SDZ-Neuabbildungsschaltkreises 135 ermöglicht eine Anzahl von Nutzungsmöglichkeiten oder Anwendungen. Zwei nützliche Anwendungen sind BS-Zuverlässigkeitsanwendungen und Virtualisierungsanwendungen.

BS-Zuverlässigkeitsanwendungen: Die Bereichsisolation hat mehrere Verwendungszwecke für Betriebssystemsoftware. Zum Beispiel kann ein BS einen Bereich definieren, der seine kritischen Code- und Datenstrukturen im Speicher enthält, und den Zugriff auf diesen Bereich von allen E/A-Geräten in dem System aus beschränken. Dadurch kann das BS eine irrtümliche oder unbeabsichtigte Beschädigung seiner Daten und seines Code durch falsche Programmierung von Geräten durch Gerätetreiber einschränken und dadurch seine Zuverlässigkeit erhöhen.

Bei einem anderen Verwendungszweck kann das BS Bereiche verwenden, um den SDZ von älteren 32-Bit-PCI-Geräten auf einen großen Speicher (über 4 GB) besser zu verwalten. Dies erreicht man, indem man 32-Bit-Geräte einem oder mehreren Bereichen zuordnet und den Mechanismus für die Übersetzung physischer E/A-Adressen so programmiert, daß der SDZ von diesen Geräten auf einen großen Speicher neu abgebildet wird. Ohne eine solche Unterstützung muß die Software auf ein Kopieren von Daten durch BS-Prellpuffer zurückgreifen.

Bei einem stärker eingebundenen Verwendungszweck kann ein BS E/A verwalten, indem mehrere Bereiche erstellt werden und den einzelnen Bereichen ein oder mehrere E/A-Geräte zugeordnet werden. Bei diesem Verwendungszweck registrieren die Gerätetreiber ausdrücklich ihre E/A-Puffer bei dem BS, und das BS weist diese E/A-Puffer bestimmten Bereichen zu, wobei Hardware zum Durchsetzen des SDZ-Bereichsschutzes verwendet wird. In diesem Modell verwendet das BS den E/A-Adreßübersetzungs- und -schutzmechanismus als eine E/A-Speicherverwaltungseinheit (E/A-SVE).

Virtualisierungsanwendungen: Die Virtualisierungstechnologie gestattet die Erstellung einer oder mehrerer virtueller Maschinen (VMs) in einem einzelnen System. Jede VM kann gleichzeitig arbeiten und dabei die zugrundeliegenden physischen Hardware-Ressourcen nutzen. Virtuelle Maschinen gestatten es mehreren Betriebssysteminstanzen, auf demselben Prozessor abzulaufen, was Vorteile wie zum Beispiel Systemkonsolidierung, Migration älterer Komponenten, Aktivitätspartitionierung und Sicherheit mit sich bringt.

Virtualisierungsarchitekturen beinhalten in der Regel zwei grundsätzliche Klassen von Software-Komponenten: (a) Virtuelle-Maschinen-Monitore (VMMs) und (b) Virtuelle Maschinen (VMs). Die VMM-Softwareschicht läuft auf der höchst-bevorrechtigten Ebene und ist in vollem Umfang für die zugrundeliegende System-Hardware zuständig. Der VMM ermöglicht es den VMs, die zugrundeliegende Hardware gemeinsam zu nutzen, und trennt dennoch die VMs voneinander.

Die Einschränkungen von ausschließlich auf Software basierenden Verfahren für die E/A-Virtualisierung können durch direkte Zuordnung von E/A-Geräten zu VMs unter Verwendung des SDZ-Neuabbildungsschaltkreises 135 beseitigt werden. Bei direkter Zuordnung von Geräten läuft der Treiber für ein zugeordnetes E/A-Gerät nur in der VM, der er zugeordnet ist, und kann direkt mit der Gerätehardware ohne Trapping zum VMM interagieren. Die Hardware-Unterstützung ermöglicht eine SDZ-Neuabbildung ohne eine gerätespezifische Kenntnis im VMM.

Bei diesem Modell beschränkt sich der VMM auf eine Steuerungsfunktion, wobei er explizit die Einrichtung und Beendigung von Gerätezuordnungen zu den VMs vornimmt. Anstatt eines Trapping zum VMM für alle Gast-E/A-Zugriffe, wie im Fall der ausschließlich auf Software basierenden Verfahren zur E/A-Virtualisierung, verlangt der VMM das Gast-E/A-Zugriffs-Trapping nur zum Schützen bestimmter Ressourcen wie zum Beispiel Gerätekonfigurationsraumzugriffe, Interruptverwaltung usw., die Einfluß auf die Systemfunktionalität haben.

Um die direkte Zuordnung von E/A-Geräten zu VMs zu unterstützen, verwaltet ein VMM den SDZ von E/A-Geräten. Der VMM kann sich selbst in einen Bereich abbilden und kann jede VM in einen unabhängigen Bereich abbilden. Die E/A-Geräte können Bereichen zugeordnet werden, und die Hardware zum Übersetzen der physischen Adressen, die durch den SDZ-Neuabbildungsschaltkreis 135 bereitgestellt wird, kann dafür verwendet werden, den SDZ von E/A-Geräten nur zu dem physischen Speicher zu gestatten, der seinem übergeordneten Bereich zugeordnet ist. Für VMs, die im physischen Speicher verschoben werden können (d. h. die PGA, die nicht mit der PHA identisch ist), kann der SDZ-Neuabbildungsschaltkreis 135 dafür programmiert werden, die notwendige PGA-zu-PHA-Übersetzung vorzunehmen.

Mit einer Hardware-Unterstützung für die E/A-Gerätezuordnung können VMM-Implementierungen eine Kombination von ausschließlich auf Software basierenden E/A-Virtualisierungsverfahren und direkter Gerätezuordnung zum Darstellen von E/A-Geräteressourcen für eine VM wählen.

3 ist ein Schaubild, das eine Virtualisierung unter Verwendung von Speicherdirektzugriffs (SDZ)-Neuabbildung gemäß einer Ausführungsform der Erfindung veranschaulicht. Die Virtualisierung enthält zwei Geräte A und B 310 und 312, den SDZ-Neuabbildungsschaltkreis 135, einen VMM oder ein Host-BS 320, VM0 340 und VMn 360.

Die zwei Geräte A und B 310 und 312 sind zwei E/A-Geräte, die durch die zwei VMs 340 bzw. 360 unterstützt werden. Der SDZ-Neuabbildungsschaltkreis 135 bildet diese zwei Geräte direkt auf die VM 340 und 360 ohne spezifische Kenntnis des VMM oder Host-BS 320 ab.

Der VMM oder das Host-BS 320 bietet Unterstützung für die zugrundeliegende Hardware der Plattform oder des Systems, auf der bzw. auf dem sie arbeiten. Die VMs 340 und 360 haben ähnliche Architekturkomponenten, sind aber vollständig voneinander isoliert. Sie sind mit dem VMM oder Host-BS 320 verbunden, um auf die Systemhardware zuzugreifen. Die VM 340 enthält Anwendungen 342 und 344. Es können mehr oder weniger Anwendungen unterstützt werden. Sie hat ein Gast-BS 346 und einen Treiber 350 für das Gerät A. Der Treiber 350 für das Gerät A ist ein Treiber, der das Gerät A 310 antreibt, steuert, verbindet oder unterstützt. Gleichermaßen enthält die VM 360 Anwendungen 362 und 364. Es können mehr oder weniger Anwendungen unterstützt werden. Sie hat ein Gast-BS 366 und einen Treiber 370 für das Gerät B. Das Gast-BS 366 kann das gleiche sein wie das Gast-BS 346 in der VM 340 oder kann ein anderes sein. Der Treiber 370 für das Gerät B ist ein Treiber, der das Gerät B 312 antreibt, steuert, verbindet oder unterstützt.

Bei dem ausschließlich auf Software basierenden Verfahren ohne den SDZ-Neuabbildungsschaltkreis 135 würden sich die Treiber 350 und 370 der Geräte A und B in dem VMM oder Host-BS 320 befinden. Die Funktionalität dieser zwei Treiber ist darum durch die Funktionalität begrenzt, die in dem VMM emuliert wird. Ohne SDZ-Neuabbildungsunterstützung muß die VMM Emulations- oder Proxy-Treiber bereitstellen, und das Gast-BS verwendet Gerätetreiber, die für das virtuelle Gerät spezifisch sind, das der VMM exponieren will. Es könnte ein Gerät sein, das zu dem echten Plattformgerät in keiner Beziehung steht, oder ein Gerät, das das gleiche ist wie das echte Plattformgerät. Im letzten Fall ist der VMM der Proxy für das echte Gerät. Außerdem kann die Leistung begrenzt werden, weil die Gast-E/A-Operationen durch den VMM oder das Host-BS 320 erfaßt und durch den VMM als Proxy übersetzt oder emuliert werden, bevor sie der zugrundeliegenden Hardware des physischen Gerätes präsentiert werden. Und weil schließlich die Treiber 350 und 370 der Geräte A und B ganz oder teilweise als Teil der bevorrechtigten VMM-Software arbeiten, kann die Zuverlässigkeit der Plattform insgesamt beeinträchtigt werden, besonders wenn diese Treiber Fehler erzeugen können, die den VMM oder das Host-BS 320 zum Absturz bringen. Dank dem SDZ-Neuabbildungsschaltkreis 135 können die Treiber 350 und 370 der Geräte A und B direkt mit den jeweiligen E/A-Geräten 310 und 312 interagieren und darum alle oben genannten Einschränkungen vermeiden.

Die SDZ-Neuabbildungsarchitektur, die durch den SDZ-Neuabbildungsschaltkreis 135 bereitgestellt wird, ermöglicht die Zuordnung von E/A-Geräten zu einer beliebigen Anzahl von Bereichen. Jeder Bereich hat einen physischen Adreßraum, der ein anderer sein kann als der physische Adreßraum des Systems. Die SDZ-Neuabbildung besorgt die Umwandlung der physischen Gastadresse (PGA) in SDZ-Anforderungen von einem E/A-Gerät in die entsprechende physische Hostadresse (PHA), die seinem Bereich zugeordnet ist.

Um dies zu unterstützen, kann die Plattform eine oder mehrere Hardware-Einheiten zur Übersetzung der physischen E/A-Adressen unterstützen. Jede Übersetzungshardware-Einheit unterstützt die Neuabbildung der E/A-Transaktionen, die ihrem Hardware-Umfeld entstammen. Zum Beispiel kann eine Desktop-Chipsatz-Implementierung eine einzelne SDZ-Neuabbildungshardware-Einheit exponieren, die alle E/A-Transaktionen in der Speichersteuerhub (SSH)-Komponente übersetzt. Eine Serverplattform mit einer oder mehreren Kernchipsatzkomponenten kann unabhängige Übersetzungshardware-Einheiten in jeder Komponente unterstützen, wobei jede SDZ-Anforderungen übersetzt, die ihrer E/A-Hierarchie entstammen. Die Architektur unterstützt Konfigurationen, wo diese Hardware-Einheiten je nach der Software-Programmierung dieselben Übersetzungsdatenstrukturen im Systemspeicher gemeinsam nutzen können oder unabhängige Strukturen verwenden können.

Der Chipsatz-SDZ-Neuabbildungsschaltkreis 135 behandelt die Adresse in einer SDZ-Anforderung als eine physische Gastadresse (PGA). Der SDZ-Neuabbildungsschaltkreis 135 kann die Adreßübersetzungsfunktion auf die ankommende Adresse anwenden, um sie in eine physische Hostadresse (PHA) vor einer weiteren Hardware-Verarbeitung umzuwandeln, wie zum Beispiel das Ausspähen von Prozessor-Caches oder das Weiterleiten an den Speicher-Controller.

In einem Virtualisierungskontext hängt die Adreßübersetzungsfunktion, die durch den SDZ-Neuabbildungsschaltkreis 135 implementiert wird, von der Verwaltung des physischen Speichers, die durch den VMM unterstützt wird, ab. Bei Anwendungen zum Beispiel, wo die Software die Zuordnung von physischem Host-Speicher als aneinandergrenzende Regionen vornimmt, kann die SDZ-Übersetzung zum Umwandeln von PGA in PHA eine einfache Versatzaddition sein. Bei Anwendungen, wo der VMM physischen Speicher auf Seitenauflösungsniveau verwaltet, kann der SDZ-Neuabbildungsschaltkreis 135 eine im Speicher befindliche Adreßübersetzungsdatenstruktur verwenden.

4 ist ein Schaubild, das eine E/A-Adreßübersetzung gemäß einer Ausführungsform der Erfindung veranschaulicht. Die E/A-Adreßübersetzung enthält zwei E/A-Geräte 1 und 2 410 und 412, den SDZ-Neuabbildungsschaltkreis 135, einen physischen Speicher 420 und eine Gastsicht 440.

Die E/A-Geräte 1 und 2 410 und 412 sind zwei separaten Bereichen zugeordnet. Sie führen E/A-Anforderungen oder SDZ-Anforderungen an Adressen SDZ_ADR aus. Der SDZ-Neuabbildungsschaltkreis 135 bildet diese zwei Geräte auf entsprechende Bereiche ab, die in dem physischen Speicher 420 zugeordnet sind. Der physische Speicher 420 ordnet die Bereiche 1 422 und 424 und die Bereiche 2 426 und 428 zu. Es können mehr oder weniger zugeordnete Speichersektionen für diese Geräte zugeordnet werden. Die Bereiche 1 422 und 424 entsprechen dem Gerät 1 410, und die Bereiche 2 424 und 428 entsprechen dem Gerät 1 412. In dem in 4 veranschaulichten Beispiel wird das Gerät 1 410 in den Bereich 1 422 abgebildet, und das Gerät 2 412 wird in den Bereich 2 428 abgebildet oder dem Bereich 2 428 zugeordnet.

Die Gastsicht 440 ist eine logische Sicht von den Gast-E/A-Geräten aus. Sie enthält die Bereiche 1 442 und 2 444. Der Bereich 1 442 entspricht den zwei Bereichen 1 422 und 424 in dem physischen Speicher 420. Der Bereich 2 444 entspricht den zwei Bereichen 2 426 und 428. Aus der Gastsicht 440 entspricht nur ein einziger Bereich einem einzigen E/A-Gerät. Die SDZ_ADR-Adresse von dem Gerät 1 410 wird in die SDZ_ADR1 abgebildet, die sich in dem Adreßraum von 0 bis L des Bereichs 1 442 befindet. Gleichermaßen wird die SDZ_ADR-Adresse von dem Gerät 2 412 in die SDZ_ADR2 abgebildet, die sich in dem Adreßraum von 0 bis K des Bereichs 2 444 befindet.

Die Software, die für die Erstellung und Verwaltung der Bereiche verantwortlich ist, ordnet den physischen Speicher 420 für beide Bereiche zu und richtet die PGA-zu-PHA-Adreßübersetzungsfunktion in dem SDZ-Neuabbildungsschaltkreis 135 ein. Der SDZ-Neuabbildungsschaltkreis 135 übersetzt die PGA, die durch die Geräte 410 und 412 erzeugt wurde, in die entsprechenden HPAs.

5 ist ein Schaubild, das eine SDZ-Neuabbildungsstruktur 222 gemäß einer Ausführungsform der Erfindung veranschaulicht. Die SDZ-Neuabbildungsstruktur 222 empfängt einen Quellenidentifikator 510 und enthält eine Wurzeltabelle 520, eine Anzahl von Kontexttabellen 5300 bis 530 und eine Anzahl von Adreßübersetzungsstrukturen 5400 bis 540V. Die Neuabbildungsstruktur 222 empfängt den Quellenidentifikator 510 und eine physische Gastadresse von dem E/A-Gerät und übersetzt das physische Gastgerät in ein physisches Hostgerät in einem zugeordneten Bereich. Die Übersetzung kann unter Verwendung von Übersetzungstabellen ausgeführt werden, die hierarchisch angeordnet sind. Der Übersetzungsmechanismus beginnt bei der Wurzeltabelle 520 und durchquert oder durchläuft die Kontexttabellen 5300 bis 530U und die Adreßübersetzungsstrukturen 5400 bis 540V.

Die Anfordereridentität der E/A-Transaktionen, die an dem SDZ-Neuabbildungsschaltkreis 135 ankommen, bestimmt das Ursprungsgerät und den Bereich, dem das Ursprungs-E/A-Gerät zugeordnet ist. Der Quellenidentifikator 510 ist das Attribut, das den Urheber einer E/A-Transaktion identifiziert. Der SDZ-Neuabbildungsschaltkreis 135 kann den Quellenidentifikator 510 einer Transaktion auf implementierungsspezifische Weise bestimmen. Zum Beispiel können einige E/A-Busprotokolle die Identität des Ursprungsgerätes als Teil jeder E/A-Transaktion übermitteln. In anderen Fällen, wie zum Beispiel bei chipsatzintegrierten Geräten, kann der Quellenidentifikator 510 auf der Grundlage der internen Implementierung des Chipsatzes impliziert werden.

Bei PCI Express-Geräten wird der Quellenidentifikator 510 auf den Anfordereridentifikator abgebildet, der als Teil des E/A-Transaktionsheaders übermittelt wird. Der Anfordereridentifikator eines Gerätes besteht aus seinen PCI-Bus-, Geräte- und Funktionsnummern, die durch die Konfigurationssoftware zugeordnet wurden, und identifiziert eindeutig die Hardware-Funktion, welche die E/A-Anforderung initiiert. In einer Ausführungsform enthält der Quellenidentifikator 510 eine Funktionsnummer 512, eine Gerätenummer 514 und eine Busnummer 516. In dem in 5 veranschaulichten Beispiel ist die Funktionsnummer 512 K Bit breit, die Gerätenummer 514 ist L Bit breit, und die Busnummer 516 ist M Bit breit. Die Busnummer 516 identifiziert den Bus, auf dem die E/A-Transaktion erzeugt wird. Die Gerätenummer 514 identifiziert das konkrete Gerät auf dem identifizierten Bus. Die Funktionsnummer 512 identifiziert die konkrete Funktion, die von dem E/A-Gerät angefordert wird. Der Quellenidentifikator 510 dient dem Indexieren oder Nachschlagen in der Wurzeltabelle 520 und den Kontexttabellen 5300 bis 530U. In dem in 5 veranschaulichten Beispiel gibt es zwei E/A-Transaktionen, die den Bus 0 und den Bus m verwenden.

Bei PCI Express-Geräten speichert die Wurzeltabelle 520 Wurzeleinträge 5250 bis 525M-1, die durch den Quellenidentifikator 510 oder die Busnummer 516 des Quellenidentifikators 510 indexiert werden. Die Wurzeleinträge fungieren als die Struktur der höchsten Ebene, um Geräte auf einem bestimmten Bus in ihren jeweiligen übergeordneten Bereich abzubilden. Der Wurzeleintrag 0 5250 entspricht der E/A-Transaktion, die den Bus 0 verwendet. Der Wurzeleintrag m 520m entspricht der E/A-Transaktion, die den Bus m verwendet. Die Wurzeleinträge 0 5250 und 525m zeigen auf die Kontexttabelle 5300 bzw. 530m. In einer Ausführungsform bilden diese Einträge die Basisadresse für die entsprechende Kontexttabelle.

Die Kontexttabellen 5300 bis 530U speichern Kontexteinträge 535K's, auf die durch die Wurzeleinträge verwiesen wird. Die Kontexteinträge 535K's bilden die E/A-Geräte auf ihren entsprechenden Bereich oder ihre entsprechenden Bereiche ab. Die Gerätenummer 514 und die Funktionsnummer 512 dienen dem Erhalten des Kontexteintrages, welcher der E/A-Transaktion entspricht. In einer Ausführungsform bilden sie einen Index, um auf die Kontexttabelle zu zeigen oder zu verweisen, auf die durch den entsprechenden Wurzeleintrag verwiesen wird. Es gibt 2M × 2L × 2K oder 2M+L+K Kontexteinträge. In einer Ausführungsform ist K = 3, L = 5 und M = 8, was zu insgesamt 64 K Einträgen führt, die als 2M (28 = 256) Kontexteintragtabellen organisiert sind. In dem in 4 gezeigten Beispiel sind die zwei Kontexteinträge für die zwei E/A-Transaktionen der Kontexteintrag 535 in der Kontexttabelle 5300 und der Kontexteintrag 535min der Kontexttabelle 530m. Die Kontexteinträge 5350 und 535m zeigen auf die Adreßübersetzungsstrukturen 5400 bzw. 540m.

Die Adreßübersetzungsstrukturen 5400 bis 540V führen die Adreßübersetzung zu der physischen Hostadresse unter Verwendung der physischen Gastadresse aus, die der E/A-Transaktion entspricht. Jede der Adreßübersetzungsstrukturen 540 bis 540V kann eine Mehrfachtabelle 550, eine Einzeltabelle 560 oder eine Basis oder Begrenzung 570 sein, was den drei Übersetzungsmechanismen entspricht, die Mehrfachtabellen, eine Einzeltabelle bzw. Basis- oder begrenzte Übersetzungen verwenden. In der folgenden Beschreibung wird eine normale Seitengröße von 4 KB verwendet. Der Fachmann weiß, daß auch alle anderen Größen verwendet werden können.

Um eine softwareflexible Steuerung des SDZ-Neuabbildungsschaltkreises 135 zu ermöglichen, hat der SDZ-Neuabbildungsschaltkreis 135 eine Anzahl von Registern, die in dem Registersatz 220, der in 2 gezeigt ist, enthalten sind. Der Registersatz 220 wird in dem physischen Hostadreßraum durch ein Basisadreß (BAR)-Register lokalisiert. Das Übersetzungshardware-BAR-Register wird in einer implementierungsabhängigen Weise mit einer Software in Kontakt gebracht. Dies kann als ein PCI-Konfigurationsraumregister in einem der chipsatzintegrierten Geräte exponiert sein, wie zum Beispiel dem Speicher-Controllergerät. In einer Ausführungsform stellt das BAR-Register mindestens ein 4 K-Adreßfenster bereit. Ein Register in dem Registersatz 220 kann eine Anzahl Felder haben. Ein Feld kann aufgedrückt oder negiert werden. Wenn ein Feld aus nur einem einzigen Bit besteht, so bedeutet "Aufdrücken", daß das Bit in einen definierten logischen Zustand versetzt wird (zum Beispiel WAHR, eine logische Eins), und "Negierung" impliziert, daß das Bit in einen definierten logischen Zustand zurückgesetzt wird, der dem Zustand des Aufdrückens komplementär ist (zum Beispiel FALSCH, eine logische Null). Im Folgenden wird ein aufgedrückter oder ein negierter Zustand willkürlich verwendet. Ein Feld kann aufgedrückt werden, um einen ersten Zustand anzuzeigen, und kann negiert werden, um einen zweiten Zustand anzuzeigen, oder umgekehrt.

Ein Feld in einem Register kann durch den SDZ-Neuabbildungsschaltkreis 135 und/oder durch die Software programmiert, initialisiert oder konfiguriert werden. Es kann auch einem spezialisierten Hardwareschaltkreis oder einer Funktionalität entsprechen, die durch eine Datenstruktur, eine Funktion, eine Routine oder ein Verfahren implementiert wird. Im Folgenden werden Felder zu Registern gruppiert. Die Gruppierung, Formatierung oder Organisation dieser Felder oder Bits in den folgenden Registern dient veranschaulichenden Zwecken. Es kommen auch andere Möglichkeiten der Gruppierung, Formatierung oder Organisation dieser Felder in Betracht. Ein Feld kann auch in mehreren Registern dupliziert werden. Ein Register kann mehr oder weniger Felder haben, als hier beschrieben ist. Außerdem können Register auf vielfältige Weise implementiert sein, einschließlich als Datenlager- oder als Datenspeicherelemente.

6 ist ein Schaubild, das einen Registersatz, der gemeinsame Register enthält, gemäß einer Ausführungsform der Erfindung veranschaulicht. Die gemeinsamen Register enthalten ein Berichtsregister vom Speichertyp (STYP_REG) 610, ein Globalbefehlsregister (GBEF_REG) 620, ein Wurzeleintragstabellenadreßregister (WTADR_REG) 630 und ein Standardvorgabekontextregister (STA_REG) 640.

Das STYP_REG 610 berichtet Speichertypen von Übersetzungsdatenstrukturen. Es enthält ein Fehlerprotokollspeichertyp (FST)-Feld 612, ein Seitentabellenspeichertyp (SST)-Feld 614, ein Kontexteintragtabellenspeichertyp (KST)-Feld 616 und ein Wurzeleintragtabellenspeichertyp (WST)-Feld 618.

Das FST-Feld 612 zeigt an, ob die Fehlerprotokollregion im Cache abgelegt werden kann. Wird es negiert, so zeigt es an, daß die Fehlerprotokollregion möglicherweise nicht im Cache abgelegt ist. Wird es aufgedrückt, so zeigt es an, daß sich die Fehlerprotokollregion möglicherweise in einer im Cache ablegbaren Region befindet. Das SST-Feld 614 zeigt an, ob die Seitentabellen im Cache ablegbar sind. Wird es negiert, so zeigt es an, daß sich die Seitentabellen möglicherweise in einer nicht im Cache abgelegten Speicherregion befinden. Wird es aufgedrückt, so zeigt es an, daß sich die Seitentabellen möglicherweise in einer im Cache ablegbaren Region befinden. Das KST-Feld 616 zeigt an, ob die Kontexttabellen im Cache ablegbar sind. Wird es negiert, so zeigt es an, daß sich die Kontexttabellen möglicherweise in einer nicht im Cache abgelegten Speicherregion befinden. Wird es aufgedrückt, so zeigt es an, daß sich die Kontexttabellen möglicherweise in einer im Cache ablegbaren Region befinden. Das WST-Feld 618 zeigt an, ob die Wurzeltabelle im Cache abgelegt werden kann. Wird es negiert, so zeigt es an, daß sich die Wurzeltabelle möglicherweise in einer nicht im Cache abgelegten Speicherregion befindet. Wird es aufgedrückt, so zeigt es an, daß sich die Wurzeltabelle möglicherweise in einer im Cache ablegbaren Region befindet.

Das GBEF_REG 620 steuert das Übersetzungsverhalten. Es enthält ein Übersetzungshardwareaktivierungs (HA)-Feld 622 und ein Schreibpufferentleerungs (SPE)-Feld 624.

Das HA-Feld 622 ist ein softwareprogrammierbares Steuerungsfeld, um die Übersetzungshardware zu aktivieren oder zu deaktivieren. Wird es negiert, so zeigt es an, die Übersetzungshardware zu deaktivieren. Wird es aufgedrückt, so zeigt es an, die Übersetzungshardware zu aktivieren. Wird dieses Feld aktualisiert, so muß die Software den Lesevorgang wiederholen und dieses Feld überprüfen, um den Aktivierungs-/Deaktivierungsstatus zu bestätigen.

Das SPE-Feld 624 wird zum Entleeren der chipsatzinternen Schreibpuffer verwendet. Dies geschieht, um zu gewährleisten, daß keine Aktualisierungen an Kontexttabellen oder Seitentabellen in internen Schreibablagepuffern gespeichert bleiben. Die Software drückt dieses Feld auf, um den Schreibpufferentleerungsbefehl auszugeben. Der Logikschaltkreis 224 negiert es, um eine Anzeige der Vollendung der Schreibpufferentleerung zu geben. Die Software muß den Lesevorgang wiederholen und das zu negierende Feld überprüfen, um die Vollendung der Entleerung zu bestätigen.

Das WTADR_REG 630 richtet die Basisadresse der im Speicher befindlichen Wurzeltabelle ein. Die Software muß dieses Register programmieren, indem sie in das niedrigere Doppelwort (DWORT) zuletzt schreibt. Es enthält ein Wurzeltabellenbasisadreß (WTA)-Feld 632 und ein Kontexteintragaktivierungs (KEA)-Feld 634. Das WTA-Feld 632 zeigt auf die Basis der seitenausgerichteten Wurzeltabelle von normaler Größe im Systemspeicher. Eine normale Größe kann jede beliebige zweckmäßige zuvor festgelegte Größe sein. In einer Ausführungsform ist die normale Größe 4 KB. Der SDZ-Neuabbildungsschaltkreis 135 braucht nur die geringstsignifikanten N Bits zu implementieren, wobei N die (Hostadressenbreite – 12) ist. Der Rest des Feldes kann als Nurleseabschnitt behandelt werden. Das KEA-Feld 634 ist ein Steuerfeld, um die Verwendung der Kontexteinträge zu aktivieren oder zu deaktivieren. Dies beeinflußt nicht die Verwendung des standardmäßig vorgegebenen Kontexts. Wird es negiert, so zeigt es die Deaktivierung der Verwendung des Kontexteintrages an. SDZ-Anforderungen werden auf der Grundlage der Programmierung des Standardvorgaberegisters verarbeitet. Wird es aufgedrückt, so zeigt es die Aktivierung der Verwendung des Kontexteintrages zum Verarbeiten von SDZ-Anforderungen an. Die Wurzel- und Kontexttabellen werden im Speicher eingerichtet, und die Basis der Wurzeltabelle wird in den oberen Bits (zum Beispiel Bits 12 bis 63) bereitgestellt.

Das STA_REG 640 spezifiziert den standardmäßig vorgegebenen Kontext. Jeder Kontexteintrag in den Kontexttabellen spezifiziert, wie SDZ-Anforderungen von einem bestimmten Gerät zu verwalten sind. Der standardmäßig vorgegebene Kontext stellt einen standardmäßig vorgegebenen Bereich dar, dem Geräte, die durch den SDZ-Neuabbildungsschaltkreis 135 verwaltet werden, anfänglich zugeordnet werden, bis die Software das Gerät auf Bereichsabbildungstabellen programmiert und das Nachschlagen dieser Tabellen ermöglicht. Zum Beispiel wird in dem Fall, daß ein E/A-Gerät bei laufendem System an das System angeschlossen wird und ein Kontext für dieses Gerät nicht durch Software vorprogrammiert ist, das Gerät dem standardmäßig vorgegebenen Bereich zugeordnet, bis die Software es ausdrücklich einem anderen Bereich zuordnet. Der standardmäßig vorgegebene Kontext wird durch das STA_REG 640 programmiert.

Die Übersetzungshardware überprüft den Quellenidentifikator in den SDZ-Anforderungen folgendermaßen. Wenn die Kontexteinträge aktiviert sind (zum Beispiel durch ein Globalbefehlsregister), so wird der Quellenidentifikator in der ankommenden SDZ-Anforderung verwendet, um ihren entsprechenden Wurzeleintrag und über den Wurzeleintrag den Kontexteintrag nachzuschlagen. In diesem Fall wird der SDZ entsprechend der Programmierung der Wurzel- und Kontexteinträge verarbeitet. Wenn die Kontexteinträge nicht aktiviert sind, so wird die SDZ-Anforderung entsprechend dem STA_REG 640 verarbeitet.

Ähnlich wie bei anderen Kontexteinträgen kann der standardmäßig vorgegebene Kontext dafür programmiert sein, bestimmte Typen von Übersetzungsfunktionen, wie zum Beispiel Sperren, Durchlassen, Adresse gefiltert, Adresse unter Verwendung einer Übersetzungsstruktur übersetzt usw., zu erzwingen.

Das STA_REG 640 enthält ein Vorhanden (V)-Feld 642, ein Ein-/Mehrebenentabellen (M)-Feld 650, ein Adreßraumwurzel (ARW)-Feld 654, ein Gastadressenbreiten (GAB)-Feld 656, ein Fehlerverarbeitungsfeld 660 und ein Bereichsidentifikator (BID)-Feld 662. In der Regel sind das V-Feld 642 und das M-Feld 650 Ein-Bit-Indikatoren.

Das V-Feld 642 ist bei der Verarbeitung von Transaktionen immer zu überprüfen. Wird es negiert, so zeigt es an, daß alle Transaktionen durch diesen Kontexteintrag gesperrt sind. Wird es aufgedrückt, so zeigt es Prozeßtransaktionen durch diesen Kontexteintrag auf der Grundlage der Programmierung anderer Felder an.

Das M-Feld 650 dient zum Anzeigen, ob eine Mehrebenentabellenübersetzung verwendet wird.

Wird es aufgedrückt, so zeigt es an, daß eine Einebenen-Seitentabelle, die für diese Kontexteintragsbits verwendet wird, zum Indexieren der Einträge in der Seitentabelle zu verwenden ist. Wird es negiert, so zeigt es an, daß eine Mehrebenen-Seitentabelle, die für diesen Kontexteintrag verwendet wird, zum Nachschlagen der Einträge in der Wurzeltabelle zu verwenden ist.

Das ARW-Feld 654 ist eine größenausgerichtete physische Hostadresse der Adreßraumwurzel. Bei Verwendung eines angrenzenden Adreßraums enthält dieses Feld die Basisadresse des physischen Adreßraums des Bereichs. Bei Verwendung von Seitentabellen (eine Ebene oder mehrere Ebenen) zeigt dieses Feld auf die Basis der Wurzeltabelle.

Das GAB-Feld 656 hat nur für Kontexteinträge Gültigkeit, die Ein- oder Mehrebenen-Seitentabellen spezifizieren. Bei Verwendung von Mehrebenen-Seitentabellen zeigt dieses Feld die justierte Gastadressenbreite (JGAB) an, die von dem SDZ-Neuabbildungsschaltkreis 135 für das Durchlaufen der Seitentabellen zu verwenden ist. Der in diesem Feld angegebene Wert ist ein JGAB-Wert, der von dem SDZ-Neuabbildungsschaltkreis 135 unterstützt wird und in einem Leistungsregister berichtet wird. Das Leistungsregister ist ein Register, das die Leistungsmerkmale anzeigt, die durch den SDZ-Neuabbildungsschaltkreis 135 unterstützt werden. Bei Verwendung von Einebenen-Seitentabellen zeigt dieses Feld die Gastadressenbreite des Bereichs an. Der in diesem Feld angegebene Wert liegt zwischen der kleinsten GAB für Einebenen-Seitentabellen und dem MGAB-Wert, der durch den SDZ-Neuabbildungsschaltkreis 135 in dem Leistungsregister berichtet wird.

Wenn der SDZ-Neuabbildungsschaltkreis 135 in diesem Feld einen Wert detektiert, der nicht durch die zugrundeliegende Implementierung unterstützt wird, so werden alle SDZ-Anforderungen durch diesen Kontexteintrag gesperrt, und es resultiert ein Übersetzungsfehler. Jede SDZ-Anforderung, die durch diesen Kontexteintrag verarbeitet wird und auf eine physische Gastadresse über 2GAB - 1 zugreift (wobei GAB der Wert in diesem Feld ist), wird gesperrt und resultiert in einem Übersetzungsfehler.

Das FV-Feld 660 aktiviert oder deaktiviert die Aufzeichnung von Fehlern durch SDZ-Anforderungen, die durch diesen Kontexteintrag verarbeitet werden.

Das BID-Feld 662 zeigt den Bereichsidentifikator für den standardmäßig vorgegebenen Bereich an.

Adreßfilterung:

Die Adreßübersetzung auf der Basis der Mehrebenen-Seitentabellenstruktur bietet die meiste Flexibilität, indem sie es der Software gestattet, den Speicher mit einer normalen (zum Beispiel 4 KB großen) Seitenauflösung zu verwalten. Jedoch ist mit der Mehrebenen-Seitentabellenstruktur die meiste Adreßübersetzungslatenz verbunden, weil sie es erfordert, daß die Hardware die Seitentabellen durchläuft. Auch wenn Hardware-Implementierungen Übersetzungscachespeicher verwenden können, um den Übersetzungsverwaltungsaufwand zu verringern, sind die Seitedurchlauflatenzen, die bei Mißlingen des Zugriffs auf den E/A-Adreßkonvertierungsvorgriffspuffer (AKVP) entstehen, möglicherweise für bestimmte Arten von E/A-Verkehr ungeeignet. Zum Beispiel dürfen bei SDZ-Anforderungen von PCI Express-Geräten, wie zum Beispiel Hochgenauigkeitsaudio, die isochrone Kanäle verwenden, und bestimmten chipsatzintegrierten Geräten, wie zum Beispiel integrierter Grafik, keine nicht-deterministischen SDZ-Neuabbildungslatenzen entstehen.

Bei Hardware-Implementierungen, die E/A-Geräte unterstützen, die durch die SDZ-Neuabbildungslatenzen negativ beeinflußt werden könnten, definiert die Architektur die Zuordnung von Geräten zu einem nicht-verschobenen Bereich durch SDZ-Adreßfilterung (anstelle von Adreßübersetzung). Ein nicht-verschobener Bereich ist ein Bereich, dessen physischer Gastadreßraum eine Teilmenge des physischen Hostadreßraums des Systems ist. Die Adreßfilterungshardware wahrt die Software-Flexibilität zum Verwalten von Hostspeicher in normal (zum Beispiel 4 KB) großen Seiten und läßt nur minimalen Verwaltungsaufwand entstehen.

Eine Unterstützung für die Adreßfilterung wird durch den SDZ-Neuabbildungsschaltkreis 135 über das Leistungsregister in dem Registersatz 220 berichtet. Hardware-Implementierungen, wie zum Beispiel jene, die keine isochronen Kanäle unterstützen, die zur Adreßübersetzung von SDZ-Anforderungen von allen Geräten befähigt sind, brauchen keine Adreßfilterung zu unterstützen. Wenn eine Plattformkonfiguration mehrere SDZ-Neuabbildungshardware-Einheiten erfordert, wie zum Beispiel eine je Chipsatzkomponente oder PCI Express-Wurzelport, und wenn Adreßfilterungsunterstützung von einer der Einheiten benötigt wird, dann wird sie von allen Hardware-Einheiten unterstützt.

Für eine Adreßfilterung werden die Seiten in dem Speicher, die dem nicht-verschobenen Bereich zugeordnet sind, durch eine im Speicher befindliche Tabelle angezeigt, die als die Filterbitmaptabelle bezeichnet wird, wie in 7 gezeigt. Die Architektur unterstützt nur einen einzigen nicht-verschobenen Bereich und somit einen einzigen Filterbitmaptabellenzeiger je berichteter SDZ-Neuabbildungshardware. Der Ort und die Größe der Filterbitmaptabelle werden durch die Adreßfilterbasis- und -größenregister programmiert, wie in 7 gezeigt. Die Größe der Bitmaptabelle wird als (4 KB × 2S) berechnet, wobei S der Wert ist, der in das Adreßfiltergrößenregister programmiert wird. Jedes Bit in der Tabelle stellt eine 4 K große Hostseite dar, wobei das erste Bit den ersten 4 K großen physischen Hostadreßraum darstellt. Die kleinste Größe der Filterbitmaptabelle ist 4 KB, welche die erste 128 MB-Region des Hostspeichers abbildet.

Geräte, deren SDZ-Anforderungen nur durch Hardware einer Adreßfilterung unterzogen werden können, werden durch die Plattform-Firmware an die Software berichtet. Jegliches Programmieren der Kontexteinträge für diese Geräte muß gewährleisten, daß es auf den Adreßfilter und nicht auf den Block eingerichtet ist, damit die SDZ-Anforderungen durchgeleitet oder einer Adreßübersetzung unterzogen werden können.

Die E/A-Geräte, deren SDZ-Anforderungen ebenfalls einer Adreßübersetzung oder Adreßfilterung unterzogen werden können, können dem nicht-verschobenen Bereich zugeordnet werden, indem die entsprechenden Kontexteinträge dafür programmiert werden, eine Adreßfilterung anzuzeigen. Gleichermaßen könnte der nicht-verschobene Bereich mit dem standardmäßig vorgegebenen Bereich identisch gemacht werden, indem das Standardvorgabekontextregister so programmiert wird, daß eine Adreßfilterung angezeigt wird.

Wenn ein Kontexteintrag dafür programmiert wird, eine Adreßfilterung anzuzeigen, so wird der Rest der Kontexteintragsfelder (außer den Gültig-, Vorhanden- und Durchgangs-Feldern) durch den SDZ-Neuabbildungsschaltkreis 135 ignoriert.

Die SDZ-Anforderungen, die durch die Kontexteinträge verarbeitet werden, die eine Adreßfilterung spezifizieren, werden folgendermaßen durch den SDZ-Neuabbildungsschaltkreis 135 gehandhabt:

  • 1. Die SDZ-Anforderung wird validiert, um zu gewährleisten, daß sie über die normale Chipsatz-SDZ-Adreßdecodierungslogik auf den Speicher zugreift. Wenn die SDZ-Anforderung als Peer-zu-Peer decodiert wird, so wird die SDZ-Anforderung gesperrt.
  • 2. Wenn die SDZ-Anforderung an den Speicher gerichtet ist, so wird der Speicherort, auf den die SDZ-Anforderung abzielt, darauf validiert, innerhalb einer 4 K-Seite zu liegen.
  • 3. Wenn die oben genannten zwei Prüfungen bestanden werden, so wird die PGA in der SDZ-Anforderung darauf validiert, innerhalb des Adreßraums des nicht-verschobenen Bereichs zu liegen. Jede SDZ-Anforderung, die versucht, auf Speicherorte über der Adresse (2(V + 27) –1) zuzugreifen, wird gesperrt, wobei V der Wert ist, der in das Filterbitmapgrößenregister programmiert ist.
  • 4. Wenn alle der oben genannten Prüfungen bestanden werden, so schlägt der SDZ-Neuabbildungsschaltkreis 135 das Bitfeld nach, das der Seite entspricht, auf die die SDZ-Anforderung am Bitversatz [PGA>>12] in der Filterbitmaptabelle zugreift. Wenn das Bit aufgehoben ist, so wird die SDZ-Anforderung wie normal verarbeitet. Wenn das Bit gesetzt ist, so wird die SDZ-Anforderung gesperrt.

7 ist ein Schaubild, das den Registersatz 220, der Adreßfilterungsregister enthält, gemäß einer Ausführungsform der Erfindung veranschaulicht. Der Registersatz 220 enthält ein Filtergrößenregister (FGRÖSSE_REG) 710, ein Filterbasisregister (FBASIS_REG) 720, ein Filtersteuerungsregister (FSTEU_REG) 730 und ein Filterfehlerregister (FFEHL_REG) 740.

Das FGRÖSSE_REG 710 zeigt die Größe der Adreßfilterungsbitmaptabelle an. Wenn der SDZ-Neuabbildungsschaltkreis 135 keine Adreßfilterung unterstützt, so wird dieses Register als reserviert behandelt (zum Beispiel werden Schreibvorgänge ignoriert, und Lesevorgänge melden 0 zurück). Es enthält ein Filtertabellengrößen (FTG)-Feld 712 und ein Filterbitmapspeichertyp (BST)-Feld 715. Das BST-Feld 715 zeigt an, ob die Bitmapregion im Cache abgelegt werden kann. Wird es negiert, so zeigt es an, daß die Bitmapregion nicht im Cache abgelegt ist. Schreibvorgänge in dieses Feld werden ignoriert. Wird es aufgedrückt, so zeigt es an, daß sich die Bitmapregion möglicherweise in einer im Cache ablegbaren Region befindet. Das FTG-Feld 712 zeigt die Größe der Adreßfiltertabelle an. Die Größe wird anhand der folgenden Formel berechnet: Tabellengröße = 4 K × 2FGRÖSSE_REG Bytes. Zum Beispiel 0000h: 4 KB-Tabelle unterstützt 128 MB Speicher, 0001h: 8 KB-Tabelle unterstützt 256 MB Hauptspeicher, 0005h: 128 KB-Tabelle unterstützt 4 GB Hauptspeicher usw.

Das FBASIS_REG 720 speichert den Zeiger zur Basisadresse der Adreßfilterungsbitmaptabelle. Wenn der SDZ-Neuabbildungsschaltkreis 135 keine Adreßfilterung unterstützt, so wird dieses Register als reserviert behandelt (zum Beispiel werden Schreibvorgänge ignoriert, und Lesevorgänge melden 0 zurück). Es enthält ein Filtertabellenbasis (FTB)-Feld 725. Das FTB-Feld 725 ist ein Zeiger zur Basisadresse der Adreßfiltertabelle in dem Speicher. Die Tabelle ist größenausgerichtet. Die kleinste Tabellengröße ist 128 K, die 4 GB Adressierbarkeit unterstützt.

Das FSTEU_REG 730 steuert die Cache-Speicherung der Adreßfilterbitmaptabelle. Wenn der SDZ-Neuabbildungsschaltkreis 135 keine Adreßfilterung unterstützt, so wird dieses Register als reserviert behandelt (zum Beispiel werden Schreibvorgänge ignoriert, und Lesevorgänge melden 0 zurück). Es enthält ein Filterhardwareaktivierungs (FHA)-Feld 732, ein Schreibpufferentleerungs (SPE)-Feld 734, ein Filtercacheungültigmachungs (FCU)-Feld 736 und ein Filtertabellenschutz (FTS)-Feld 738. Das FHA-Feld 732 ist ein softwareprogrammierbares Steuerfeld zum Aktivieren oder Deaktivieren der Adreßfilterungshardware. Wird es negiert, so zeigt es die Deaktivierung der Adreßfilterungshardware an. Jede SDZ-Anforderung, die ansonsten einer Adreßfilterung unterzogen wird, wird als Durchlauf verarbeitet. Wird es aufgedrückt, so zeigt es die Aktivierung der Adreßfilterungshardware an. Die Filterbasis- und -größenregister werden vor der Aktivierung der Adreßfilterungshardware durch dieses Feld programmiert. Das SPE-Feld 734 wird zum Entleeren der chipsatzinternen Schreibpuffer verwendet. Dies geschieht, um zu gewährleisten, daß keine Filterbitmaptabellenaktualisierungen in internen Schreibablagepuffern gespeichert sind. Die Software drückt dieses Feld auf, um den Schreibpufferentleerungsbefehl auszugeben. Der SDZ-Neuabbildungsschaltkreis 135 negiert es, um eine Anzeige der Vollendung der Schreibpufferentleerung zu geben. Die Software muß den Lesevorgang wiederholen und das zu negierende Feld überprüfen, um die Vollendung der Entleerung zu bestätigen. Das FCU-Feld 736 macht den Adreßfilterbitmapcache ungültig. Die Software drückt dieses Feld auf, um die Ungültigmachung des Adreßfiltercaches anzufordern. Der SDZ-Neuabbildungsschaltkreis 135 negiert es, um die Vollendung der Ungültigmachung anzuzeigen. Die Software muß den Lesevorgang wiederholen und dieses zu negierende Feld überprüfen, um die Vollendung der Ungültigmachung zu bestätigen. Das FTS-Feld 738 zeigt das Schützen der Adreßfilterbitmapregion an. Wenn es durch Software aufgedrückt wird, so beginnt die Hardware, die Adreßfilterbitmapregion vor Speicherdirektzugriffen zu schützen. Die Software muß dieses Feld lesen und überprüfen, daß es aufgedrückt wird, um zu bestätigen, daß die Adreßfilterbitmapregion geschützt ist. Wenn es durch Software negiert wird, so beendet der SDZ-Neuabbildungsschaltkreis 135 das Schützen der Adreßfilterbitmapregion vor Speicherdirektzugriffen.

Das FFEHL_REG berichtet Fehler, die durch Adreßfilterungshardware detektiert werden. Wenn der SDZ-Neuabbildungsschaltkreis 135 keine Adreßfilterung unterstützt, so wird dieses Register als reserviert behandelt (zum Beispiel werden Schreibvorgänge ignoriert, und Lesevorgänge melden 0 zurück). Es enthält ein Fehleradreß (FA)-Feld 742, ein Typ (T)-Feld 744 und ein Gültig (G)-Feld 746. Das FA-Feld 742 ist eine Rahmenadresse des Ortes, auf den die fehlerhafte SDZ-Anforderung zugreift. Das T-Feld 744 zeigt den Speicherzugriffstyp einer fehlerhaften SDZ-Anforderung an. Wird es negiert, so zeigt es einen SDZ-Schreibvorgang an. Wird es aufgedrückt, so zeigt es eine SDZ-Leseanforderung an. Das G-Feld 746 zeigt an, ob die Seitenrahmenadresse der fehlerhaften SDZ-Anforderung zwischengespeichert ist. Wenn es aufgedrückt wird, so ist die Seitenrahmenadresse der fehlerhaften SDZ-Anforderung im Fehleradreßfeld zwischengespeichert, und es werden keine weiteren Adreßfilterungsfehleradressen mehr zwischengespeichert. Die Software muß dieses Feld ausdrücklich durch Schreibvorgänge negieren, um eine Adreßfilterungsfehleraufzeichnung erneut zu aktivieren.

8A ist ein Schaubild, das den Wurzeleintrag 520 gemäß einer Ausführungsform der Erfindung veranschaulicht. Der Wurzeleintrag 520 enthält ein Vorhanden (V)-Feld 810 und ein Kontexteintragstabellenzeiger (KEZ)-Feld 815.

Das V-Feld 810 zeigt an, ob der Wurzeleintrag vorhanden ist. Wird es negiert, so zeigt es an, daß der Wurzeleintrag nicht vorhanden ist und nicht zu verwenden ist. Der SDZ-Neuabbildungsschaltkreis 135 behandelt die SDZ-Anforderung, die durch diesen Wurzeleintrag verarbeitet wird, als Fehler. Wird es aufgedrückt, so zeigt es an, daß der Wurzeleintrag vorhanden ist und zum Verarbeiten der Transaktion verwendet werden kann.

Das KEZ-Feld 815 ist ein Zeiger zu der Kontexttabelle für diesen Bus. Die Kontexttabelle ist 4 KB groß und seitenausgerichtet.

8B ist ein Schaubild, das den Kontexteintrag 535 gemäß einer Ausführungsform der Erfindung veranschaulicht. Der Kontexteintrag 535 enthält ein Vorhanden (V)-Feld 822, ein Mehrebenen (M)-Feld 830, ein Adreßraumwurzel (ARW)-Feld 834, ein Gastadressenbreiten (GAB)-Feld 836, ein Fehlerverarbeitungs (FV)-Feld 840 und ein Bereichsidentifikator (BID)-Feld 842. Der Kontexteintrag 535 hat Felder, die dem Standardvorgaberegister STA_REG 640 ähneln, das in 6 gezeigt ist. In der Regel sind das V-Feld 822 und das M-Feld 830 Ein-Bit-Indikatoren.

Das V-Feld 822, das M-Feld 830, das ARW-Feld 834 und das GAB-Feld 836 ähneln dem V-Feld 642, dem M-Feld 650, dem ARW-Feld 654 bzw. dem GAB-Feld 656 in dem Standardvorgaberegister (STA_REG 640), das in 6 gezeigt ist.

Das BID-Feld 842 ist ein Identifikator für den Bereich, zu dem dieser Kontexteintrag gehört. Die Software muß gewährleisten, daß alle Geräte dieselben Seitentabellenstrukturen verwenden und somit identisch übersetzte Adressen haben, die den gleichen Bereichsidentifikator in ihren Kontexteinträgen haben. Der SDZ-Neuabbildungsschaltkreis 135 kann den Bereichsidentifikator zum Markieren seiner im Cache abgelegten Einträge verwenden, wenn Cache-Unterstützung verwendet wird.

8C ist ein Schaubild, das einen Seitentabelleneintrag (STE) 565 gemäß einer Ausführungsform der Erfindung veranschaulicht. Der STE 565 enthält ein Lesbar (L)-Feld 850, ein Beschreibbar (B)-Feld 852, ein Kohärent (K)-Feld 854, ein Superseiten (SS)-Feld 856 und ein Adreß (ADR)-Feld 860. Es ist zu beachten, daß auch mehr oder weniger dieser Felder definiert werden können.

Das L-Feld 850 zeigt an, ob eine Seite für einen SDZ lesbar ist. Wird es negiert, so zeigt es an, daß die Seite nicht für SDZ-Leseanforderungen zugänglich ist. SDZ-Leseanforderungen, die durch diesen Seitentabelleneintrag verarbeitet werden, werden gesperrt. Wenn Fehlerberichte aktiviert sind, so wird ein Übersetzungsfehler erzeugt. Wird es aufgedrückt, so zeigt es an, daß die Seite für SDZ-Leseanforderungen zugänglich ist.

Das B-Feld 852 zeigt an, ob die Seite für SDZ beschreibbar ist. Wird es negiert, so zeigt es an, daß die Seite nicht für SDZ-Schreibvorgangsanforderungen zugänglich ist. SDZ-Schreibvorgangsanforderungen, die durch diesen Seitentabelleneintrag verarbeitet werden, werden gesperrt. Wenn Fehlerberichte aktiviert sind, so wird ein Übersetzungsfehler erzeugt. Wird es aufgedrückt, so zeigt es an, daß die Seite für SDZ-Schreibvorgangsanforderungen zugänglich ist.

Das K-Feld 854 spezifiziert, ob der Zugriff auf die übersetzte physische Hostadresse kohärent ist oder nicht. Wird es negiert, so zeigt es an, daß der Speicherdirektzugriff auf die übersetzte physische Hostadresse dem Kohärenzattribut folgt, das in der E/A-Transaktion spezifiziert ist. Zum Beispiel greifen PCI X- oder PCI Express-Anforderungen mit gesetztem "No-snoop"-Attribut auf die übersetzte physische Hostadresse ohne vorheriges Ausspähen zu. Wird es aufgedrückt, so zeigt es an, daß der Speicherdirektzugriff auf die übersetzte physische Hostadresse als kohärent verarbeitet wird. Die Software muß gewährleisten, daß dieses Feld als reserviert (0) behandelt wird: in allen Seitentabelleneinträgen, wenn der SDZ-Neuabbildungsschaltkreis 135 nicht das aufgedrückte Setzen des K-Feldes (wie im Leistungsregister berichtet) unterstützt, und in Nicht-Blattseitentabelleneinträgen, wenn das SS-Feld negiert wird.

Das SS-Feld 856 zeigt dem SDZ-Neuabbildungsschaltkreis 135 an, daß dies ein Blattseitentabelleneintrag und ein vollständiger Seitendurchlauf ist. Wird es negiert, so zeigt es ein Fortsetzen des Seitendurchlaufs und die Verwendung der Tabelle der nächsten Ebene an. Wird es aufgedrückt, so zeigt es das Anhalten des Tabellendurchlaufs und das Bilden der physischen Hostadresse unter Verwendung der unbenutzten niederen Bits in der physischen Gastadresse für den Seitendurchlauf zusammen mit den oberen Bits der Seitenbasisadresse, die in dem ADR-Feld 860 enthalten ist, an. Der SDZ-Neuabbildungsschaltkreis 135 beurteilt das SS-Feld 856 nur in den Seitentabelleneinträgen, die den Superseitengrößen entsprechen, die er unterstützt, wie in dem Leistungsregister berichtet. Die Software muß dieses Feld als reserviert behandeln (zum Beispiel 0) in: (1) 4 KB-Blattseitentabelleneinträgen in Mehrebenen-Seitentabellen, (2) Nicht-Blattseitentabelleneinträgen in Mehrebenen-Seitentabellen, die Superseitengrößen entsprechende, die nicht durch den SDZ-Neuabbildungsschaltkreis 135 unterstützt werden, und (3) Seitentabelleneinträgen in Einebenen-Seitentabellen.

Das ADR-Feld 860 enthält die physische Hostadresse des Seitenframes, wenn dies ein Blattknoten ist. Andernfalls enthält es den Zeiger zu der Seitentabelle der nächsten Ebene. Dieses Feld ist größenausgerichtet.

Es ist zu beachten, daß weitere Felder definiert werden können, um die Attribute des Adreßübersetzungsmechanismus' weiter zu kennzeichnen. Zum Beispiel können die folgenden Attribute definiert werden: ein Basis/Begrenzungs-Attribut zum Aktivieren einer Basis- oder begrenzten Übersetzung, ein Stride-Attribut zum Anzeigen der Größe einer Seitentabelle der ersten Ebene in der Mehrebenentabellenübersetzung und ein Durchgangs-Attribut zum Anzeigen, ob die E/A-Transaktion ohne Übersetzung passieren darf.

Adreßübersetzungsmechanismen:

Um eine variierende Auflösung der Unterstützung für die Verwaltung des physischen Speichers durch Software zu unterstützen, definiert die SDZ-Neuabbildungsarchitektur drei Arten von Adreßübersetzungsstrukturen. Eine Chipsatz-Implementierung kann eine oder mehrere dieser Übersetzungsstrukturen unterstützen und die unterstützten Arten über ihr Leistungsregister berichten. Diese Mechanismen bieten unterschiedliche Kosten, Komplexität und Leistungskompromisse. Für Implementierungen, die mehrere Übersetzungsstrukturen unterstützen, kann jeder Kontexteintrag so programmiert sein, daß er verschiedene Übersetzungsstrukturarten verwendet.

Es sind die folgenden Adreßübersetzungsstrukturen definiert: (1) eine Mehrebenen-Seitentabellenstruktur zum Ermöglichen einer Zuordnung von Regionen in Seitenauflösung über mehrere Ebenen aus Seitentabellen in Seitengröße, die sich jeweils in Regionen in Seitengröße befinden; (2) eine Einebenen-Seitentabellenstruktur zum Ermöglichen einer Zuordnung von Regionen in Seitenauflösung über eine einzelne angrenzende Seitentabelle und (3) eine Basis- oder begrenzte Übersetzungsstruktur zum Ermöglichen einer Zuordnung einer angrenzenden Region zu Bereichen. Jede der oben genannten Übersetzungsstrukturen kann als standardmäßige Vorgabe oder als Option gewählt werden.

9A ist ein Schaubild, das die Adreßübersetzungsstruktur 540, die mit Mehrebenen-Tabellen arbeitet, gemäß einer Ausführungsform der Erfindung veranschaulicht. Die Adreßübersetzungsstruktur 540 enthält den Kontexteintrag 535, eine justierte physische Gastadresse (JPGA) 910, eine Erstebenen-Seitentabelle 920, eine Zwischentabelle 930, eine Blattknotentabelle 940 und eine Seite 950. Die Mehrebenen-Tabellen enthalten eine Anzahl Übersetzungstabellen, die hierarchisch angeordnet sind.

Das ARW-Feld in dem Kontexteintrag 535 stellt die Basisadresse für die Erstebenen-Seitentabelle 920 bereit. Die JPGA 910 enthält ein Versatzfeld 912, ein Blattknotenseitentabellenfeld 914, ein Zwischenseitentabellenfeld 916 und ein Erstebenen-Seitentabellenfeld 918. Es ist anzumerken, daß die Anzahl der Ebenen in den Mehrebenen-Seitentabellen eine beliebige geeignete Anzahl sein kann, und zwar je nach der Breite der JPGA 910, dem Speicherraum, der Speicherverwaltungsvorschrift, der Wortlänge und sonstigen Implementierungsfaktoren.

Das Erstebenen-Seitentabellenfeld 918 wird mit der Erstebenen-Basisadresse kombiniert, die durch die ARW bereitgestellt wird, um die Erstebenen-Seitentabelle 920 zu indexieren. In einer Ausführungsform hat jeder Eintrag 8 Bytes. Das Erstebenen-Seitentabellenfeld 918 wird durch einen Schieber 922 um drei Bits verschoben und dann durch einen Addierer 924 zu der Erstebenen-Basisadresse addiert, um einen Erstebenenindex für die Erstebenen-Seitentabelle 920 bereitzustellen. Der indexierte Erstebenen-Seitentabelleneintrag stellt die Zwischenbasisadresse für die Zwischenebenen-Seitentabelle 930 bereit.

Das Zwischenseitentabellenfeld 916 wird mit der Zwischenbasisadresse kombiniert, um die Zwischenebenen-Seitentabelle 930 zu indexieren. Da jeder Eintrag 8 Bytes groß ist, wird das Zwischenseitentabellenfeld 918 durch einen Schieber 932 um drei Bits verschoben und dann durch einen Addierer 934 zu der Zwischenebenen-Basisadresse addiert, um einen Zwischenebenenindex für die Zwischenebenen-Seitentabelle 930 bereitzustellen. Der indexierte Zwischenebenen-Seitentabelleneintrag stellt die Blattknotenbasisadresse für die Blattknotenseitentabelle 940 bereit.

Das Blattknotenseitentabellenfeld 914 wird mit der Blattknotenbasisadresse kombiniert, um die Blattknotenseitentabelle 940 zu indexieren. Da jeder Eintrag 8 Bytes groß ist, wird das Blattknotenseitentabellenfeld 914 durch einen Schieber 942 um drei Bits verschoben und dann durch einen Addierer 944 zu der Blattknotenbasisadresse addiert, um einen Blattknotenindex für die Blattknotenseitentabelle 940 bereitzustellen. Der indexierte Blattknotenseitentabelleneintrag stellt die Host-Basisadresse für die Seite 950 bereit.

Der Versatz 912 wird dann mit der Host-Basisadresse kombiniert, um die physische Hostadresse in der Seite 950 zu erzeugen.

Die Mehrebenen-Seitentabellen gestatten es der Software, den physischen Host-Speicher in Seitenauflösung (zum Beispiel 4 K) zu verwalten und eine hierarchische Struktur mit Seitenverzeichnissen und Seitentabellen einzurichten. Der Logikschaltkreis 224 implementiert die Seitendurchlauflogik und durchquert diese Strukturen unter Verwendung der PGA, die in der SDZ-Transaktion vorhanden ist. Die maximale Anzahl an Seitentabellen-Ebenen, die durchquert werden müssen, um eine PGA in einer SDZ-Anforderung zu übersetzen, richtet sich nach der Gastadressenbreite des entsprechenden Kontexteintrages. Die Software kann die maximale Gastadressenbreite, die durch eine bestimmte Hardware-Implementierung des SDZ-Neuabbildungsschaltkreises 135 unterstützt wird, über ein Leistungsregister abfragen.

Nehmen wir an, daß S die normale Seitengröße ist. Nehmen wir an, daß Q die Anzahl der Bytes je Eintrag ist. Nehmen wir an, daß p und q so sind, daß 2p = S und 2q = Q. Die justierte Gastadressenbreite (JGAB) für einen Bereich ist ihre wertberichtigte Gastadressenbreite (GAB), dergestalt, daß (JGAB-p) ein Vielfaches von (p–q) ist. Die JGAB wird folgendermaßen bestimmt:

Nehmen wir zum Beispiel an, daß S = 4 K und Q = 8, dann ist p = 12 und q = 3. Ein Bereich, dem 2 GB Speicher zugeordnet sind, hat eine GAB von 31. Die JGAB wird berechnet als: L = (31 – 12)mod 9 = 1 JGAB = 31 + 9 – 1 = 39

Die justierte Gastadressenbreite (JGAB) zeigt die Anzahl der Ebenen des Seitendurchlaufs an. Der SDZ-Neuabbildungsschaltkreis 135 unterstützt eine definierte JGAB, wobei die entsprechende GAB gleich der Hostadressenbreite ist. Bei Verwendung von Mehrebenen-Seitentabellen für einen Bereich berechnet die Software die justierte Gastadressenbreite (JGAB) wie oben beschrieben. Die Software verwendet die JGAB beim Einrichten der Mehrebenen-Seitentabellenstrukturen. Sie programmiert die GAB und JGAB des Bereichs in Kontexteinträgen für alle Geräte, die diesem Bereich zugeordnet sind.

Der SDZ-Neuabbildungsschaltkreis 135 kann auch kleinere justierte Gastadressenbreiten unterstützen. Er kann die unterstützten justierten Gastadressenbreiten über das Leistungsregister berichten. Die Software muß gewährleisten, daß sie eine JGAB verwendet, die durch die zugrundeliegende Hardware-Implementierung unterstützt wird, wenn Mehrebenen-Seitentabellen für einen Bereich eingerichtet werden. Die Software muß auch die JGAB des Bereichs in den Kontexteinträgen für Geräte programmieren, die diesem Bereich zugeordnet sind.

Die SDZ-Anforderungen, die durch Kontexteinträge verarbeitet werden, die Mehrebenen-Adreßübersetzungen spezifizieren, werden durch den SDZ-Neuabbildungsschaltkreis 135 folgendermaßen gehandhabt:

  • 1. Die PGA/Längen-Kombination, die in der SDZ-Anforderung spezifiziert ist, wird dementsprechend verwendet, ob der SDZ-Neuabbildungsschaltkreis 135 Seitengrenzenüberschreitung unterstützt oder nicht. Wenn der SDZ-Neuabbildungsschaltkreis 135 SDZ-Anforderungen unterstützt, die Seitegrenzen überschreiten, und die PGA/Längen-Kombination die SDZ-Anforderung anzeigt, welche die Seitengrenze überschreitet, dann wird jede Seitenregion, auf die die SDZ-Anforderung abzielt, unabhängig adressenübersetzt. Wenn der SDZ-Neuabbildungsschaltkreis 135 keine SDZ-Anforderungen unterstützt, die Seitengrenzen überschreiten, und die PGA/Längen-Kombination die SDZ-Anforderung anzeigt, die eine Seitengrenze überschreitet, so resultiert ein Adreßübersetzungsfehler.
  • 2. Wenn das GAB-Feld, das in dem Kontexteintrag programmiert ist, keine justierte Gastadressenbreite hat, die durch den SDZ-Neuabbildungsschaltkreis 135 unterstützt wird, die in dem Leistungsregister berichtet wird, dann wird die SDZ-Anforderung gesperrt, und es resultiert ein Adreßübersetzungsfehler.
  • 3. Die PGA in der SDZ-Anforderung wird darauf validiert, innerhalb des physischen Gastadreßraumes des Bereichs zu liegen, dem das Gerät zugeordnet ist. Eine SDZ-Anforderung, die versucht, auf Speicherorte über der Adresse (2X – 1) zuzugreifen, wird gesperrt, wobei X die Gastadressenbreite ist, die in dem Kontexteintrag programmiert ist, der zur Verarbeitung dieser SDZ-Anforderung verwendet wird.
  • 4. Wenn die oben genannten Prüfungen erfolgreich sind, so wird die PGA in der SDZ-Anforderung auf X Bits justiert, um eine justierte physische Gastadresse (JPGA) zu bilden, wobei X die Gastadressenbreite ist, die in dem Kontexteintrag programmiert ist, der zur Verarbeitung dieser SDZ-Anforderung verwendet wird. Die SDZ-Anforderung an die JPGA wird entsprechend der Programmierung der Mehrebenen-Seitentabellenstrukturen entweder gesperrt oder in eine gültige PHA übersetzt.
  • 5. Der SDZ-Neuabbildungsschaltkreis 135 führt die normale Chipsatzadreßdecodierung der durch Schritt 4 erzeugten PHA aus und verarbeitet die SDZ-Anforderung entweder als einen Zugriff auf den Speicher oder als eine Peer-zu-Peer-Anforderung.
  • 6. Wenn die übersetzte PHA decodiert wird, um an den Speicher geschickt zu werden, so wird auf die PHA entsprechend der Unterstützung für das Einstellen des Kohärenz (K)-Attributs zugegriffen. Wenn der SDZ-Neuabbildungsschaltkreis 135 nur die negierte Einstellung des Kohärenz (K)-Attributs in den Seitentabelleneinträgen unterstützt, so wird auf den Speicher entsprechend der Kohärenz zugegriffen, die in der SDZ-Anforderung spezifiziert ist (oder aus der SDZ-Anforderung hergeleitet wird). Wenn zum Beispiel die PCI Express-Anforderung die SDZ-Anforderung als nicht-ausgespäht spezifiziert hat, so wird auf den Speicher ohne Ausspähen zugegriffen. Wenn der SDZ-Neuabbildungsschaltkreis 135 die aufgedrückten und negierten Einstellungen des Kohärenz (K)-Attributs in den Seitentabelleneinträgen unterstützt, so wird auf den Speicher entsprechend der Programmierung des Kohärenz-Attributs in dem Blattseitentabelleneintrag zugegriffen, der zur Adreßübersetzung der SDZ-Anforderung verwendet wird.

9B ist ein Schaubild, das die Adreßübersetzungsstruktur 540, die eine Einzeltabelle verwendet, gemäß einer Ausführungsform der Erfindung veranschaulicht. Die Adreßübersetzungsstruktur 540 enthält den Kontexteintrag 535, eine physische Gastadresse (PGA) 960, eine Einzelseitentabelle 970 und eine Seite 980.

Die Einebenen-Seitentabelle bietet der Software einen alternativen Mechanismus zum Erzeugen von Seitenzuordnungen mit einer Auflösung von 4 K ohne lange Seitedurchläufe, aber um den Preis der Reservierung einer großen aneinandergrenzenden Seitentabellenstruktur. Die Größe (zum Beispiel 64 Bits) und das Format eines Seitentabelleneintrags für die Einebenen-Seitentabelle sind ähnlich den Seitentabelleneinträgen für die Mehrebenenstruktur, die in vorangegangenen Abschnitten beschrieben wurde, außer daß das Stride-Feld als reserviert behandelt wird.

Die Größe der Seitentabelle hängt von der Größe des Adreßraums des Gastes ab. Für eine Gast-Adressierbarkeit von 1 GB (GAB = 30) zum Beispiel muß die Software eine 2 MB-Seitentabelle mit 218 Seitentabelleneinträgen zuordnen. Der E/A-Adreßkonvertierungsvorgriffspuffer (AKVP) ist auch auf SDZ-Adreßübersetzungen anwendbar, die eine Einebenen-Seitentabelle verwenden.

Die SDZ-Anforderungen, die durch Kontexteinträge verarbeitet werden, die Einebenen-Adreßübersetzungen spezifizieren, werden durch den SDZ-Neuabbildungsschaltkreis 135 folgendermaßen gehandhabt:

  • 1. Die PGA/Längen-Kombination, die in der SDZ-Anforderung spezifiziert ist, wird dementsprechend verwendet, ob der SDZ-Neuabbildungsschaltkreis 135 Seitengrenzüberschreitung unterstützt oder nicht. Wenn der SDZ-Neuabbildungsschaltkreis 135 SDZ-Anforderungen unterstützt, die Seitengrenzen überschreiten, und die PGA/Längen-Kombination die SDZ-Anforderung anzeigt, welche die Seitengrenze überschreitet, so wird jede Seitenregion, auf die die SDZ-Anforderung abzielt, unabhängig adressenübersetzt. Wenn der SDZ-Neuabbildungsschaltkreis 135 keine SDZ-Anforderungen unterstützt, die Seitengrenzen überschreiten, und die PGA/Längen-Kombination die SDZ-Anforderung anzeigt, welche die Seitengrenze überschreitet, so resultiert ein Adreßübersetzungsfehler.
  • 2. Wenn sich das GAB-Feld, das in dem Kontexteintrag programmiert ist, nicht zwischen einem kleinsten Wert, zum Beispiel 21, und der maximalen Gastadressenbreite (MGAB), die durch den SDZ-Neuabbildungsschaltkreis 135 in dem Leistungsregister berichtet wird, befindet, so wird die SDZ-Anforderung gesperrt, und es resultiert ein Adreßübersetzungsfehler.
  • 3. Die SDZ-Anforderung wird darauf validiert, auf Adressen in dem physischen Gastadreßraum des Bereichs zuzugreifen, dem das Gerät zugeordnet ist. Jede SDZ-Anforderung, die versucht, auf Speicherorte über (2X – 1) zuzugreifen, wird gesperrt, wobei X die Gastadressenbreite (das GAB-Feld) ist, die in dem Kontexteintrag programmiert ist, der zum Verarbeiten dieser SDZ-Anforderung verwendet wird.
  • 4. Wenn die oben genannten Prüfungen erfolgreich sind, so verwendet der SDZ-Neuabbildungsschaltkreis 135 Bits (X – 1):12 zum Nachschlagen des Seitentabelleneintrags in der Einebenen-Seitentabelle. Die SDZ-Anforderung wird entsprechend der Programmierung des Seitentabelleneintrags entweder gesperrt oder in eine gültige PHA übersetzt.
  • 5. Der SDZ-Neuabbildungsschaltkreis 135 führt die normale Chipsatzadressendecodierung der durch Schritt 4 erzeugten PHA aus und verarbeitet die SDZ-Anforderung entweder als einen Zugriff auf den Speicher oder als eine Peer-zu-Peer-Anforderung.
  • 6. Wenn die übersetzte PHA decodiert wird, um an den Speicher gesendet zu werden, so wird auf die PHA entsprechend der Unterstützung für die Einstellung des Kohärenz (K)-Attributs zugegriffen. Wenn der SDZ-Neuabbildungsschaltkreis 135 nur die negierte Einstellung des Kohärenz (K)-Attributs in den Seitentabelleneinträgen unterstützt, so wird auf den Speicher entsprechend der Kohärenz zugegriffen, die in der SDZ-Anforderung spezifiziert ist (oder aus der SDZ-Anforderung hergeleitet wird). Wenn zum Beispiel die PCI Express-Anforderung die SDZ-Anforderung als nicht-ausgespäht spezifiziert hat, so wird auf den Speicher ohne Ausspähen zugegriffen. Wenn der SDZ-Neuabbildungsschaltkreis 135 die aufgedrückten und negierten Einstellungen des Kohärenz (K)-Attributs in den Seitentabelleneinträgen unterstützt, so wird auf den Speicher entsprechend der Programmierung des Kohärenz-Attributs in dem Seitentabelleneintrag zugegriffen, der zur Adreßübersetzung der SDZ-Anforderung verwendet wird.

Das ARW-Feld des Kontexteintrages 535 stellt die Basisadresse bereit, um die Einzelseitentabelle 970 zu lokalisieren. Die PGA 960 enthält ein Versatzfeld 962 und ein Seitentabellenfeld 964. Die Einzelseitentabelle 970 enthält Seitentabelleneinträge, um auf die Seite der physischen Hostadresse zu zeigen, die der PGA 960 entspricht.

Um den entsprechenden Seitentabelleneintrag nachzuschlagen, wird das Seitentabellenfeld 964 mit der Basisadresse kombiniert, die durch das ARW-Feld bereitgestellt wird. Da jeder Eintrag 8 Bytes belegt, wird das Seitentabellenfeld 964 durch einen Schieber 972 um 3 Bits verschoben und dann durch einen Addierer 974 zu der ARW addiert, um den Index für die Einzelseitentabelle 970 bereitzustellen.

Der Seitentabelleneintrag, der dem Index entspricht, stellt dann die Basisadresse für die Seite 980 bereit. Das Versatzfeld 962 wird durch einen Addierer 984 zu dieser Basisadresse addiert, um die resultierende PHA in der Seite 980 bereitzustellen.

9C ist ein Schaubild, das die Adreßübersetzungsstruktur 540, die die Basis- oder begrenzte Übersetzung verwendet, gemäß einer Ausführungsform der Erfindung veranschaulicht. Die Adreßübersetzungsstruktur 540 enthält den Kontexteintrag 535, eine physische Gastadresse (PGA) 960 und einen physischen Speicherraum 990.

Die Basisgrenzen bilden die einfachste Form der Adreßübersetzung, wobei die PGA in der SDZ-Anforderung als ein Versatz von der Basisadresse für diesen Bereich verwendet wird. Die Basisadresse des Bereichs ist eine physische Hostadresse und wird über das ARW-Feld 834 des Kontexteintrags 535 programmiert (8B). Die Gastadressenbreite (GAB) in dem Kontexteintrag zeigt das Versatzlimit an. Jede SDZ-Anforderung mit einer Gastadresse über dem Limit, das durch die GAB angezeigt wird, wird durch den SDZ-Neuabbildungsschaltkreis 135 gesperrt.

In einer Ausführungsform hat die physische Hostadresse 64 Bit. Für gültige Gastadressen (zum Beispiel Adressen innerhalb der GAB-Adressierbarkeit) führt der SDZ-Neuabbildungsschaltkreis 135 die folgenden Operationen aus, um die physische Hostadresse zu erzeugen:

Physische Hostadresse [63:GAB] = Adreßraumwurzel [63:GAB]

Physische Hostadresse [GAB-1:0] = Physische Gastadresse [GAB-1:0]

Leistungssteigerung:

Der oben beschriebene Adreßübersetzungsmechanismus kann optimiert werden, um die Leistung und/oder Flexibilität zu verbessern. Eine Optimierungstechnik besteht darin, über unterschiedliche Größen von Übersetzungstabellen zu verfügen, die in der Mehrebenen-Seitentabellenstruktur verwendet werden, einschließlich kleiner und großer Tabellen. Dies kann durch Verwenden eines Stride (S)-Feldes in dem Seitentabelleneintrag oder dem Standardvorgabekontextregister 640 bewerkstelligt werden. Das S-Feld kann eine beliebige Anzahl von Tabellengrößen und jede geeignete Tabellengröße spezifizieren. In einer Ausführungsform werden zwei Tabellengrößen verwendet: 4 KB und 2 MB. Eine 4 KB-Tabelle entspricht einem Stride von 9 Bit, und eine 2 MB-Tabelle entspricht einem Stride von 18 Bit. Es können kleine und große Strides während eines Durchlaufs oder einer Durchquerung der Seitentabellen ohne eine bestimmte Reihenfolge vermischt werden. Sie werden durch das Stride-Feld in dem vorangehenden Seitentabelleneintrag definiert.

Eine andere Optimierungstechnik besteht darin, eine Anzahl von Seitengrößen zu definieren, die durch den Chipsatz-Hardware unterstützt werden. Ein verallgemeinertes Superseiten-Feld ist in einem Seitentabelleneintrag definiert, um eine Vielzahl von Superseitengrößen jenseits von 2 MB zu ermöglichen. Das verallgemeinerte Superseiten-Feld eignet sich für Nutzungsmodelle, bei denen Speicher frühzeitig während des Boot-Prozesses zu VMs zugeordnet wird. Unmittelbare Leistungsgewinne können durch ein deutliches Verringern der Anzahl der Übersetzungsschritte erreicht werden. Außerdem kann der Speicherverwaltungsaufwand, der mit den Seitentabellen verbunden ist, deutlich verringert werden.

Das Superseiten-Feld in den Seitentabelleneinträgen ermöglicht größere Seitenzuordnungen. Wenn ein Seitentabelleneintrag mit aufgedrücktem Superseiten-Feld während eines Seitentabellendurchlaufs angetroffen wird, so wird die übersetzte Adresse sofort durch Kombinieren der Seiten-Basisadresse in dem Seitentabelleneintrag mit den ungenutzten Bits der physischen Gastadresse gebildet. Auf der Grundlage der Seitentabellenhierarchie-Ebene, auf der der Seitentabelleneintrag mit Superseiten Feld aufgedrückt wird, definiert die Architektur Superseiten mit den Größen 2 MB, 1 GB, 512 GB, 256 TB und 128 PB. Wie dem Fachmann bekannt ist, können auch alle anderen Superseitengrößen verwendet werden.

Die Leistung des Chipsatzes, der den SDZ-Neuabbildungsschaltkreis 135 enthält, der diese Leistungsverbesserungen und sonstigen Neuabbildungsoperationen unterstützt, kann in einem Leistungsregister berichtet werden. Die Software kann dieses Leistungsregister lesen, um die verschiedenen Leistungsmerkmale zu finden, die durch den Chipsatz oder den SDZ-Neuabbildungsschaltkreis 135 unterstützt werden.

10 ist ein Schaubild, das den Registersatz 220, der ein Leistungsregister enthält, gemäß einer Ausführungsform der Erfindung veranschaulicht. Der Registersatz 220 enthält ein Leistungsregister (LEI_REG) 1010.

Das LEI_REG 1010 berichtet allgemeine Leistungsmerkmale von Übersetzungshardware. Es enthält eine Anzahl von Indikatoren zum Anzeigen der Leistung, die durch den SDZ-Neuabbildungsschaltkreis 135 unterstützt wird. Zu diesen Indikatoren gehören einem Einebenen-Seitentabellenunterstützungs (EE)-Feld 1012, ein Mehrebenen-Seitentabellenunterstützungs (ME)-Feld 1014, ein Benötigte-Schreibpufferentleerung (BSPE)-Feld 1016, ein Höhere-Fehlerprotokollierungsunterstützungs (HFP)-Feld 1018, ein Kohärenzsteuerungsunterstützungs (KU)-Feld 1020, ein Unterstützte justierte-Gastadreßbreiten (UJGAB)-Feld 1022, ein Superseitenunterstützungs (SSU)-Feld 1024 und ein Maximale-Gastadreßbreiten (MGAB)-Feld 1026.

Das EE-Feld 1012 zeigt an, ob eine Einebenen-Seitentabelle unterstützt wird. Wird es negiert, so wird keine Einebenen-Seitentabelle unterstützt. Wird es aufgedrückt, so wird eine Einebenen-Seitentabelle unterstützt.

Das ME-Feld 1014 zeigt an, ob eine Mehrebenen-Seitentabelle unterstützt wird. Wird es negiert, so wird keine Mehrebenen-Seitentabelle unterstützt. Wird es aufgedrückt, so wird eine Mehrebenen-Seitentabelle unterstützt.

Das BSPE-Feld 1016 zeigt die benötigte Schreibpufferentleerung an. Wird es negiert, so zeigt es an, daß keine Schreibpufferentleerung benötigt wird, um Änderungen an im Speicher befindlichen Strukturen für den SDZ-Neuabbildungsschaltkreis 135 widerzuspiegeln. Wird es aufgedrückt, so zeigt es der Software an, daß die Implementierung des SDZ-Neuabbildungsschaltkreises 135 die Entleerung von Schreibpuffern (zum Beispiel durch das Globalbefehlsregister) erfordert, um Aktualisierungen, die an im Speicher befindlichen Strukturen vorgenommen wurden, für den SDZ-Neuabbildungsschaltkreis 135 widerzuspiegeln.

Das HFP-Feld 1018 zeigt eine höhere Fehlerprotokollierungsunterstützung an. Wird es negiert, so zeigt es an, daß eine höhere Fehlerprotokollierung durch ein im Speicher befindliches Fehlerprotokoll nicht unterstützt wird. Nur der erste detektierte Fehler wird durch das Fehleraufzeichnungsregister aufgezeichnet. Wird es aufgedrückt, so zeigt es an, daß eine höhere Fehlerprotokollierung unterstützt wird. Die höhere Fehlerprotokollierung wird über das Fehlerprotokollregister ermöglicht.

Das KU-Feld 1020 zeigt eine Kohärenzsteuerungsunterstützung an. Wird es negiert, so zeigt es an, daß nur die negierte Einstellung des Kohärenz (K)-Feldes in den Seitentabelleneinträgen durch den SDZ-Neuabbildungsschaltkreis 135 unterstützt wird. Wird es aufgedrückt, so zeigt es an, daß sowohl negierte als auch aufgedrückte Einstellungen des Kohärenz (K)-Feldes in den Seitentabelleneinträgen durch den SDZ-Neuabbildungsschaltkreis 135 unterstützt werden.

Das UJGAB-Feld 1022 zeigt die unterstützten justierten Gastadressenbreiten an, die wiederum die Ebenen von Seitentabellendurchläufen darstellen, die durch die zugrundeliegende Implementierung des SDZ-Neuabbildungsschaltkreises 135 unterstützt wird. Dieses Feld ist nur gültig, wenn eine Mehrebenen-Seitentabellenunterstützung durch eine aufgedrückte Einstellung des ME-Feldes 1014 angezeigt wird.

Ein aufgedrückter Wert in einem dieser Bits zeigt an, daß die entsprechende Gastadressenbreite unterstützt wird. In einer Ausführungsform sind die Gastadressenbreiten, die verschiedenen Bit-Positionen innerhalb dieses Feldes entsprechen:

  • 0: 21 Bit-Gastadressenbreite (1-Ebenen-Seitentabelle)
  • 1: 30 Bit-Gastadressenbreite (2-Ebenen-Seitentabelle)
  • 2: 39 Bit-Gastadressenbreite (3-Ebenen-Seitentabelle)
  • 3: 48 Bit-Gastadressenbreite (4-Ebenen-Seitentabelle)
  • 4: 57 Bit-Gastadressenbreite (5-Ebenen-Seitentabelle)

Der SDZ-Neuabbildungsschaltkreis 135 unterstützt die Gastadressenbreite, welche die zugrundeliegende Hostadressenbreite abdeckt. Zum Beispiel unterstützt eine Implementierung, die eine 40 Bit-Hostadressenbreite unterstützt, eine 48 Bit-Gastadressenbreite. Der SDZ-Neuabbildungsschaltkreis 135 kann auch optional kleinere Gastadressenbreiten unterstützen. Die Software muß gewährleisten, daß die justierte Gastadressenbreite, die zum Einrichten der Seitentabellen verwendet wird, eine der unterstützten Gastadressenbreiten ist, die in diesem Feld berichtet wird.

Das SSU-Feld 1024 zeigt die unterstützten Superseitengrößen an, die durch die zugrundeliegende Implementierung des SDZ-Neuabbildungsschaltkreises 135 unterstützt werden. Das Feld ist nur gültig, wenn eine Mehrebenen-Seitentabelleunterstützung durch das aufgedrückte ME-Feld 1014 angezeigt wird.

Ein aufgedrückter Wert in einem dieser Bits zeigt an, daß die entsprechende Superseitengröße unterstützt wird. In einer Ausführungsform sind die Superseitengrößen, die verschiedenen Bit-Positionen in diesem Feld entsprechen:

  • 0: 2 MB-Superseiten (21 Bit-Versatz zum Seitenframe)
  • 1: 1 GB-Superseiten (30 Bit-Versatz zum Seitenframe)
  • 2: 512 GB-Superseiten (39 Bit-Versatz zum Seitenframe)
  • 3: 256 TB-Superseiten (48 Bit-Versatz zum Seitenframe)
  • 4: 128 PB-Superseiten (57 Bit-Versatz zum Seitenframe)

Wenn alle Bits negiert werden, so wird eine normale Seitengröße unterstützt. Der SDZ-Neuabbildungsschaltkreis 135 kann optional eine oder mehrere Superseitengrößen unterstützen.

Das MGAB-Feld 1026 zeigt die maximale Gastadressenbreite an, die durch den SDZ-Neuabbildungsschaltkreis 135 unterstützt wird, wenn eine Einebenen-Seitentabellenübersetzung verwendet wird. Dieses Feld ist nur gültig, wenn eine Einebenen-Seitentabellenunterstützung durch die aufgedrückte Einstellung des EE-Feldes 1012 angezeigt wird.

11A ist ein Schaubild, das die Adreßübersetzungsstruktur 540, die Mehrebenen-Tabellen und Stride verwendet, gemäß einer Ausführungsform der Erfindung veranschaulicht. Die Adreßübersetzungsstruktur 540 enthält den Kontexteintrag 535, eine justierte physische Gastadresse (JPGA) 910, eine Erstebenen-Seitentabelle 1120, eine Blattknotenseitentabelle 1130 und eine Seite 1140.

Das ARW-Feld in dem Kontexteintrag 535 stellt die Basisadresse für die Erstebenen-Seitentabelle 1120 bereit. Die JPGA 910 enthält ein Versatzfeld 912, ein Blattknotenseitentabellenfeld 914 und ein Erstebenen-Seitentabellenfeld 916.

Das Erstebenen-Seitentabellenfeld 916 wird mit der Erstebenen-Basisadresse kombiniert, die durch das ARW-Feld bereitgestellt wird, um die Erstebenen-Seitentabelle 1120 zu indexieren. Da jeder Eintrag 8 Bytes groß ist, wird das Erstebenen-Seitentabellenfeld 916 durch einen Schieber 1122 um drei Bits verschoben und dann durch einen Addierer 1124 zu der Erstebenen-Basisadresse addiert, um einen Erstebenenindex für die Erstebenen-Seitentabelle 1120 bereitzustellen. Der indexierte Erstebenen-Seitentabelleneintrag stellt die Blattknotenbasisadresse für die Blattknotenseitentabelle 1130 bereit. Außerdem wird das S-Feld in dem indexierten Erstebenen-Seitentabelleneintrag aufgedrückt (zum Beispiel auf Eins gesetzt), um anzuzeigen, daß der Stride für die nächste Tabelle ein große Tabelle ist (zum Beispiel 2 MB).

Die Blattknotenseitentabelle 1130 hat eine Größe, die durch das S-Feld in dem indexierten Erstebenen-Seitentabelleneintrag angezeigt wird. In dem in 11A gezeigten Beispiel wird das S-Feld aufgedrückt, was anzeigt, daß die Größe der Blattknotenseitentabelle 1130 groß ist (zum Beispiel 2 MB). Das Blattknotenseitentabellenfeld 914 wird mit der Blattknotenbasisadresse kombiniert, um die Blattknotenseitentabelle 1130 zu indexieren. Da jeder Eintrag 8 Bytes groß ist, wird das Blattknotenseitentabellenfeld 914 durch einen Schieber 1132 um drei Bits verschoben und dann durch einen Addierer 1134 zu der Blattknotenbasisadresse addiert, um einen Blattknotenindex in der Blattknotenseitentabelle 1130 bereitzustellen. Der indexierte Blattknotenseitentabelleneintrag stellt die Host-Basisadresse für die Seite 1140 bereit.

Der Versatz 912 wird dann mit der Host-Basisadresse kombiniert, um die physische Hostadresse in der Seite 1140 zu erzeugen.

11B ist ein Schaubild, das eine Adreßübersetzungsstruktur, die Mehrebenen-Tabellen und Superseiten verwendet, gemäß einer Ausführungsform der Erfindung veranschaulicht. Die Adreßübersetzungsstruktur 540 enthält den Kontexteintrag 535, eine justierte physische Gastadresse (JPGA) 910, eine Erstebenen-Seitentabelle 1150, eine Blattknotenseitentabelle 1160 und eine Seite 1170.

Das ARW-Feld in dem Kontexteintrag 535 stellt die Basisadresse für die Erstebenen-Seitentabelle 1150 bereit. Das JPGA 910 enthält ein Versatzfeld 912, ein Blattknotenseitentabellenfeld 914 und ein Erstebenen-Seitentabellenfeld 916.

Das Erstebenen-Seitentabellenfeld 916 wird mit der Erstebenen-Basisadresse kombiniert, die durch das ARW-Feld bereitgestellt wird, um die Erstebenen-Seitentabelle 1150 zu indexieren. Da jeder Eintrag 8 Bytes groß ist, wird das Erstebenen-Seitentabellenfeld 916 durch einen Schieber 1152 um drei Bits verschoben und dann durch einen Addierer 1154 zu der Erstebenen-Basisadresse addiert, um einen Erstebenenindex für die Erstebenen-Seitentabelle 1150 bereitzustellen. Der indexierte Erstebenen-Seitentabelleneintrag stellt die Blattknotenbasisadresse für die Blattknotenseitentabelle 1160 bereit. Außerdem wird das S-Feld in dem indexierten Erstebenen-Seitentabelleneintrag aufgedrückt (zum Beispiel auf Null gesetzt), um anzuzeigen, daß der Stride der nächsten Tabelle eine kleine Tabelle ist (zum Beispiel 4 KB).

Die Blattknotenseitentabelle 1160 hat eine Größe, die durch das S-Feld in dem indexierten Erstebenen-Seitentabelleneintrag angezeigt wird. In dem in 11B gezeigten Beispiel wird das S-Feld negiert, was anzeigt, daß die Größe der Blattknotenseitentabelle 1160 klein ist (zum Beispiel 4 KB). Das Blattknotenseitentabellenfeld 914 wird mit der Blattknotenbasisadresse kombiniert, um die Blattknotenseitentabelle 1160 zu indexieren. Da jeder Eintrag 8 Bytes groß ist, wird das Blattknotenseitentabellenfeld 914 durch einen Schieber 1162 um drei Bits verschoben und dann durch einen Addierer 1164 zu der Blattknotenbasisadresse addiert, um einen Blattknotenindex für die Blattknotenseitentabelle 1160 bereitzustellen. Der indexierte Blattknotenseitentabelleneintrag stellt die Host-Basisadresse für die Seite 1170 bereit. Außerdem wird das SS-Feld des indexierten Blattknotenseitentabelleneintrages aufgedrückt, was anzeigt, daß es die Blattknotentabelle ist.

Die Größe der Seite 1170 wird durch die Leistung bestimmt, die durch den Chipsatz entsprechend der Angabe im Leistungsregister unterstützt wird. In dem in 11B gezeigten Beispiel zeigt das Leistungsregister an, daß eine Superseitengröße von 2 MB unterstützt wird. Der Versatz 912 wird dann durch einen Addierer 1144 mit der Host-Basisadresse kombiniert, um die physische Hostadresse in der Seite 1170 zu erzeugen.

Obgleich die Erfindung anhand verschiedener Ausführungsformen beschrieben wurde, ist dem Durchschnittsfachmann klar, daß die Erfindung nicht auf die beschriebenen Ausführungsformen beschränkt ist, sondern mit Modifikationen und Änderungen im Rahmen des Geistes und Geltungsbereichs der angehängten Ansprüche praktiziert werden kann. Die Beschreibung ist somit nicht als einschränkend, sondern als veranschaulichend anzusehen.

ZUSAMMENFASSUNG

Eine Ausführungsform der vorliegenden Erfindung betrifft eine Technik zur Steigerung der Adreßübersetzungsleistung. Ein Register speichert Leistungsindikatoren, um eine Leistung anzuzeigen, die von einem Schaltkreis in einem Chipsatz zur Adreßübersetzung einer physischen Gastadresse in eine physische Hostadresse unterstützt wird. Mehrere Mehrebenen-Seitentabellen werden zum Seitendurchlauf in der Adreßübersetzung verwendet. Jede der Seitentabellen hat Seitentabelleneinträge. Jeder der Seitentabelleneinträge hat wenigstens einen Eintragsspezifikator, welcher der Leistung entspricht, die durch die Leistungsindikatoren angezeigt wird.


Anspruch[de]
Vorrichtung, die umfaßt:

ein Register zum Speichern von Leistungsindikatoren zum Anzeigen einer Leistung, die von einem Schaltkreis in einem Chipsatz zur Adreßübersetzung einer physischen Gastadresse in eine physische Hostadresse unterstützt wird; und

mehrere Mehrebenen-Seitentabellen für den Seitendurchlauf in der Adreßübersetzung, wobei jede der Seitentabellen Seitentabelleneinträge aufweist, wobei jeder der Seitentabelleneinträge wenigstens einen Eintragsspezifikator aufweist, welcher der Leistung entspricht, die durch die Leistungsindikatoren angezeigt werden.
Vorrichtung nach Anspruch 1, wobei die Leistungsindikatoren eine Einebenen-Seitentabellenunterstützung und/oder eine Mehrebenen-Seitentabellenunterstützung und/oder eine benötigte Schreibpufferentleerung und/oder eine verbesserte Fehlerprotokollierungsunterstützung und/oder eine Kohärenzsteuerungsunterstützung und/oder eine unterstützte justierte Gastadressenbreite und/oder eine Superseitenunterstützung und/oder eine maximale Gastadressenbreite (MGAB) enthalten. Vorrichtung nach Anspruch 2, wobei der Superseitenindikator eine normale Seitengröße oder eine Superseitengröße anzeigt, die in der Adreßübersetzung verwendet wird. Vorrichtung nach Anspruch 2, wobei die Superseitengröße bis zu 128 Petabyte (PB) reicht. Vorrichtung nach Anspruch 3, wobei der wenigstens eine Eintragsspezifikator ein Stride-Feld oder ein Superseiten-Feld enthält, wobei das Stride-Feld die Anzahl der Gastadressenbits bestimmt, die zum Indexieren einer Tabelle der nächsten Ebene in den Mehrebenen-Seitentabellen verwendet werden, wobei das Superseiten-Feld anzeigt, ob jeder der Seitentabelleneinträge ein Blattseitentabelleneintrag ist. Vorrichtung nach Anspruch 5, wobei der Seitendurchlauf fortgesetzt wird, wenn die Superseite anzeigt, daß jeder der Seitentabelleneinträge ein Nicht-Blattseitentabelleneintrag ist. Vorrichtung nach Anspruch 5, wobei der Seitendurchlauf angehalten wird und die physische Hostadresse in einer Seite mit einer Seitengröße gebildet wird, die durch den Superseitenindikator angezeigt wird, wenn das Superseiten-Feld anzeigt, daß jeder der Seitentabelleneinträge ein Blattseitentabelleneintrag ist. Vorrichtung nach Anspruch 5, wobei das Stride-Feld beurteilt wird, wenn der Großseitentabellenindikator anzeigt, daß mehrere Seitengrößen unterstützt werden. Vorrichtung nach Anspruch 5, wobei die Anzahl der Gastadressenbits, die zum Indexieren der Seitentabelle der nächsten Ebene verwendet werden, einer normalen Seitengröße oder einer großen Seitengröße entspricht. Vorrichtung nach Anspruch 1, wobei die Leistungsindikatoren nur gelesen werden können. Verfahren, das umfaßt:

Speichern von Leistungsindikatoren in einem Register zum Anzeigen der Leistung, die von einem Schaltkreis in einem Chipsatz zur Adreßübersetzung einer physischen Gastadresse in eine physische Hostadresse unterstützt wird; und

Durchlaufen mehrerer Mehrebenen-Seitentabellen in der Adreßübersetzung, wobei jede der Seitentabellen Seitentabelleneinträge aufweist, wobei jeder der Seitentabelleneinträge wenigstens einen Eintragsspezifikator aufweist, welcher der Leistung entspricht, die durch die Leistungsindikatoren angezeigt wird.
Verfahren nach Anspruch 11, wobei die Leistungsindikatoren eine Einebenen-Seitentabellenunterstützung und/oder eine Mehrebenen-Seitentabellenunterstützung und/oder eine benötigte Schreibpufferentleerung und/oder eine verbesserte Fehlerprotokollierungsunterstützung und/oder eine Kohärenzsteuerungsunterstützung und/oder eine unterstützte justierte Gastadressenbreite und/oder eine Superseitenunterstützung und/oder eine maximale Gastadressenbreite (MGAB) enthalten. Verfahren nach Anspruch 12, wobei der Superseitenindikator eine normale Seitengröße oder eine Superseitengröße anzeigt, die in der Adreßübersetzung verwendet wird. Verfahren nach Anspruch 12, wobei die Superseitengröße bis zu 128 Petabyte (PB) reicht. Verfahren nach Anspruch 13, wobei der wenigstens eine Eintragsspezifikator ein Stride-Feld oder ein Superseiten-Feld enthält, wobei das Stride-Feld die Anzahl der Gastadressenbits bestimmt, die zum Indexieren einer Tabelle der nächsten Ebene in den Mehrebenen-Seitentabellen verwendet werden, wobei das Superseiten-Feld anzeigt, ob jeder der Seitentabelleneinträge ein Blattseitentabelleneintrag ist. Verfahren nach Anspruch 15, wobei das Durchlaufen umfaßt:

das Fortsetzen des Durchlaufens, wenn die Superseite anzeigt, daß jeder der Seitentabelleneinträge ein Nicht-Blattseitentabelleneintrag ist.
Verfahren nach Anspruch 15, wobei das Durchlaufen umfaßt:

Bilden der physischen Hostadresse in einer Seite mit einer Seitengröße, die durch den Superseitenindikator angezeigt wird, wenn das Superseiten-Feld anzeigt, daß jeder der Seitentabelleneinträge ein Blattseitentabelleneintrag ist.
Verfahren nach Anspruch 15, wobei das Durchlaufen umfaßt:

Beurteilen des Stride-Feldes, wenn der Großseitentabellenindikator anzeigt, daß mehrere Seitengrößen unterstützt werden.
Verfahren nach Anspruch 15, wobei die Anzahl der Gastadressenbits, die zum Indexieren der Seitentabelle der nächsten Ebene verwendet werden, einer normalen Seitengröße oder einer großen Seitengröße entspricht. Verfahren nach Anspruch 11, wobei das Speichern umfaßt:

Speichern von Leistungsindikatoren zur zum Lesen.
System, das umfaßt:

einen Speicher;

ein Eingabe/Ausgabe (E/A)-Gerät, das eine physische Gastadresse in einer Anforderung zum Zugriff auf den Speicher erzeugt; und

einen Chipsatz, der mit dem E/A-Gerät und dem Speicher verbunden ist, wobei der Chipsatz einen Schaltkreis enthält, wobei der Schaltkreis Folgendes umfaßt:

ein Register zum Speichern von Leistungsindikatoren zum Anzeigen der Leistung, die durch den Chipsatz für die Adreßübersetzung der physischen Gastadresse in die physische Hostadresse unterstützt wird, und

mehrere Mehrebenen-Seitentabellen für den Seitendurchlauf in der Adreßübersetzung, wobei jede der Seitentabellen Seitentabelleneinträge hat, wobei jeder der Seitentabelleneinträge wenigstens einen Eintragsspezifikator hat, welcher der Leistung entspricht, die durch die Leistungsindikatoren angezeigt wird.
System nach Anspruch 21, wobei die Leistungsindikatoren eine Einebenen-Seitentabellenunterstützung und/oder eine Mehrebenen-Seitentabellenunterstützung und/oder eine benötigte Schreibpufferentleerung und/oder eine höhere Fehlerprotokollierungsunterstützung und/oder eine Kohärenzsteuerungsunterstützung und/oder eine unterstützte justierte Gastadressenbreite und/oder eine Superseitenunterstützung und/oder eine maximale Gastadressenbreite (MGAB) enthalten. System nach Anspruch 22, wobei der Superseitenindikator eine normale Seitengröße oder eine Superseitengröße anzeigt, die in der Adreßübersetzung verwendet wird. System nach Anspruch 22, wobei die Superseitengröße bis zu 128 Petabyte (PB) reicht. System nach Anspruch 23, wobei der wenigstens eine Eintragsspezifikator ein Stride-Feld oder ein Superseiten-Feld enthält, wobei das Stride-Feld die Anzahl der Gastadressenbits bestimmt, die zum Indexieren einer Tabelle der nächsten Ebene in den Mehrebenen-Seitentabellen verwendet werden, wobei das Superseiten-Feld anzeigt, ob jeder der Seitentabelleneinträge ein Blattseitentabelleneintrag ist. System nach Anspruch 25, wobei der Seitendurchlauf fortgesetzt wird, wenn die Superseite anzeigt, daß jeder der Seitentabelleneinträge ein Nicht-Blattseitentabelleneintrag ist. System nach Anspruch 25, wobei der Seitendurchlauf angehalten wird und die physische Hostadresse in einer Seite mit einer Seitengröße gebildet wird, die durch den Superseitenindikator angezeigt wird, wenn das Superseiten-Feld anzeigt, daß jeder der Seitentabelleneinträge ein Blattseitentabelleneintrag ist. System nach Anspruch 25, wobei das Stride-Feld beurteilt wird, wenn der Großseitentabellenindikator anzeigt, daß mehrere Seitengrößen unterstützt werden. System nach Anspruch 25, wobei die Anzahl der Gastadressenbits, die zum Indexieren der Seitentabelle der nächsten Ebene verwendet werden, einer normalen Seitengröße oder einer großen Seitengröße entspricht. System nach Anspruch 21, wobei die Leistungsindikatoren nur gelesen werden können. Herstellungsgegenstand, der umfaßt:

ein für Maschinen zugängliches Medium, das Daten enthält, die, wenn eine Maschine auf sie zugreift, die Maschine veranlassen, Operationen auszuführen, die umfassen:

Speichern von Leistungsindikatoren in einem Register zum Anzeigen der Leistung, die von einem Schaltkreis in einem Chipsatz für die Adreßübersetzung einer physischen Gastadresse in eine physische Hostadresse unterstützt wird; und

Durchlaufen mehrerer Mehrebenen-Seitentabellen in der Adreßübersetzung, wobei jede der Seitentabellen Seitentabelleneinträge aufweist, wobei jeder der Seitentabelleneinträge wenigstens einen Eintragsspezifikator aufweist, welcher der Leistung entspricht, durch die Leistungsindikatoren angezeigt wird.
Herstellungsgegenstand nach Anspruch 31, wobei die Leistungsindikatoren eine Einebenen-Seitentabellenunterstützung und/oder eine Mehrebenen-Seitentabellenunterstützung und/oder eine benötigte Schreibpufferentleerung und/oder eine verbesserte Fehlerprotokollierungsunterstützung und/oder eine Kohärenzsteuerungsunterstützung und/oder eine unterstützte justierte Gastadressenbreite und/oder eine Superseitenunterstützung und/oder eine maximale Gastadressenbreite (MGAB) enthalten. Herstellungsgegenstand nach Anspruch 32, wobei der Superseitenindikator eine normale Seitengröße oder eine Superseitengröße anzeigt, die in der Adreßübersetzung verwendet wird. Herstellungsgegenstand nach Anspruch 32, wobei die Superseitengröße bis zu 128 Petabyte (PB) reicht. Herstellungsgegenstand nach Anspruch 33, wobei der wenigstens eine Eintragsspezifikator ein Stride-Feld oder ein Superseiten-Feld enthält, wobei das Stride-Feld die Anzahl der Gastadressenbits bestimmt, die zum Indexieren einer Tabelle der nächsten Ebene in den Mehrebenen-Seitentabellen verwendet werden, wobei das Superseiten-Feld anzeigt, ob jeder der Seitentabelleneinträge ein Blattseitentabelleneintrag ist. Herstellungsgegenstand nach Anspruch 35, wobei das Durchlaufen umfaßt:

das Fortsetzen des Durchlaufens, wenn die Superseite anzeigt, daß jeder der Seitentabelleneinträge ein Nicht-Blattseitentabelleneintrag ist.
Herstellungsgegenstand nach Anspruch 35, wobei die Daten, welche die Maschine veranlassen, das Durchlaufen auszuführen, Daten umfassen, welche die Maschine veranlassen, Operationen auszuführen, die Folgendes umfassen:

Bilden der physischen Hostadresse in einer Seite mit einer Seitengröße, die durch den Superseitenindikator angezeigt wird, wenn das Superseiten-Feld anzeigt, daß jeder der Seitentabelleneinträge ein Blattseitentabelleneintrag ist.
Herstellungsgegenstand nach Anspruch 35, wobei die Daten, welche die Maschine veranlassen, das Durchlaufen auszuführen, Daten umfassen, welche die Maschine veranlassen, Operationen auszuführen, die Folgendes umfassen:

Beurteilen des Stride-Feldes, wenn der Großseitentabellenindikator anzeigt, daß mehrere Seitengrößen unterstützt werden.
Herstellungsgegenstand nach Anspruch 35, wobei die Anzahl der Gastadressenbits, die zum Indexieren der Seitentabelle der nächsten Ebene verwendet werden, einer normalen Seitengröße oder einer großen Seitengröße entspricht. Herstellungsgegenstand nach Anspruch 31, wobei die Daten, welche die Maschine veranlassen, das Speichern auszuführen, Daten umfassen, welche die Maschine veranlassen, Operationen auszuführen, die Folgendes umfassen:

Speichern der Leistungsindikatoren zur zum Lesen.






IPC
A Täglicher Lebensbedarf
B Arbeitsverfahren; Transportieren
C Chemie; Hüttenwesen
D Textilien; Papier
E Bauwesen; Erdbohren; Bergbau
F Maschinenbau; Beleuchtung; Heizung; Waffen; Sprengen
G Physik
H Elektrotechnik

Anmelder
Datum

Patentrecherche

Patent Zeichnungen (PDF)

Copyright © 2008 Patent-De Alle Rechte vorbehalten. eMail: info@patent-de.com