DE112005002298B4 - Leistungssteigerung einer Adreßübersetzung unter Verwendung von Übersetzungstabellen, die große Adreßräume umfassen - Google Patents
Leistungssteigerung einer Adreßübersetzung unter Verwendung von Übersetzungstabellen, die große Adreßräume umfassen Download PDFInfo
- Publication number
- DE112005002298B4 DE112005002298B4 DE112005002298.6T DE112005002298T DE112005002298B4 DE 112005002298 B4 DE112005002298 B4 DE 112005002298B4 DE 112005002298 T DE112005002298 T DE 112005002298T DE 112005002298 B4 DE112005002298 B4 DE 112005002298B4
- Authority
- DE
- Germany
- Prior art keywords
- address
- page table
- sdz
- page
- field
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1036—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1081—Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/109—Address translation for multiple virtual address spaces, e.g. segmentation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
Vorrichtung, umfassend:ein Register (220), das einem Logikschaltkreis (224) ermöglicht, eine physische Gastadresse des Speicherdirektzugriffs (SDZ) in eine gegebene physische Hostadresse zu übersetzen; undeine Mehrebenen-Baumstruktur (222) von Seitentabellen (520, 530, 540),in der eine Vielzahl von Seitentabelleneinträgen (525, 535) in einer oder mehreren nicht zur niedrigsten Ebene gehörigen Seitentabellen (520, 530) gespeichert sind, wobei jeder Seitentabelleneintrag auf eine Seitentabelle auf einer niedrigeren Ebene in der Baumstruktur zeigt; undin der eine Vielzahl von physischen Hostadressen in einer oder mehreren Seitentabellen (540) auf der niedrigsten Ebene der Baumstruktur gespeichert sind, wobei zumindest ein erster Seitentabelleneintrag in der Vielzahl von Seitentabelleneinträgen (525, 535) auf eine erste virtuelle Maschinen-Domain zeigt, die eine erste Seitentabelle (540m) auf der niedrigsten Ebene aufweist, wobei zumindest ein zweiter Seitentabelleneintrag der Vielzahl von Seitentabelleneinträgen (525, 535) auf eine zweite virtuelle Maschinen-Domain zeigt, die eine zweite Seitentabelle (540o) auf der niedrigsten Ebene aufweist, wobei die erste und die zweite virtuelle Maschinen-Domain voneinander isoliert sind undwobei der Logikschaltkreis (224) eingerichtet ist, zu den Übersetzungszwecken die Baumstruktur (222) zu verwenden, um die physische Gastadresse des Speicherdirektzugriffs in die gegebene physische Hostadresse abzubilden.
Description
- 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.
- Figurenliste
- 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 Hostadresse 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 System100 veranschaulicht, in dem eine Ausführungsform der Erfindung praktiziert werden kann. Das System100 enthält einen Prozessor110 , einen Prozessorbus120 , einen Speichersteuerhub (SSH)130 , einen Systemspeicher140 , einen Eingabe/Ausgabe-Steuerhub (ESH)150 , einen Peripheriebus155 , ein Massenspeichergerät oder eine Massenspeicherschnittstelle170 und Eingabe/Ausgabe-Geräte 1801 bis 180K und 185. Es ist zu beachten, daß das System100 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 Prozessor110 mit anderen Prozessoren oder Geräten, zum Beispiel dem SSH130 , 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 Systemspeichers140 und des ESH150 . Der SSH130 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 SSH130 ist direkt oder über den ESH150 an den Peripheriebus155 angeschlossen. Aus Gründen der Übersichtlichkeit sind nicht alle Peripheriebusse gezeigt. Es wird in Betracht gezogen, daß das System100 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)-Neuabbildungsschaltkreis135 . Der SDZ-Neuabbildungsschaltkreis135 bildet ein E/A-Gerät (zum Beispiel eines der E/A-Geräte 1801 bis 180K und 185) in einen Bereich in dem Systemspeicher140 in einer E/A-Transaktion ab. Die E/A-Transaktion ist in der Regel eine SDZ-Anforderung. Der SDZ-Neuabbildungsschaltkreis135 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-Neuabbildungsschaltkreis135 kann auch in einem anderen Chipsatz als dem SSH130 enthalten sein, wie zum Beispiel dem ESH150 . Er kann auch ganz oder teilweise in dem Prozessor110 oder als ein separater Prozessor oder Koprozessor für andere Prozessoren oder Geräte implementiert sein. - Der Systemspeicher
140 speichert Systemcode und -daten. Der Systemspeicher140 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 BS142 oder der E/A-Treiber 145 kann durch Hardware, Software, Firmware, Mikrocode oder Kombinationen daraus implementiert sein. Der Systemspeicher140 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 ESH150 kann auch in einen Chipsatz zusammen mit oder separat von dem SSH130 integriert sein, um E/A-Funktionen auszuführen. Der ESH150 kann eine Anzahl von Schnittstellen- und E/A-Funktionen enthalten, wie zum Beispiel eine PCI-Busschnittstelle, um eine Schnittstelle zu dem Peripheriebus155 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 Massenspeicherschnittstelle170 kann mit einem Compact Disk (CD)-ROM172 , einer digitalen Video/Versatile-Disk (DVD)173 , einem Diskettenlaufwerk174 und einem Festplattenlaufwerk176 und sonstigen anderen magnetischen oder optischen Speichervorrichtungen verbunden sein. Das Massenspeichergerät oder die Massenspeicherschnittstelle170 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 ESH150 verbunden. Der Peripheriebus155 ist ein beliebiger Bus, der E/A-Transaktionen unterstützt. Zu Beispielen des Peripheriebusses155 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 Systemspeicher140 . Die Abbildung wird durch den SDZ-Neuabbildungsschaltkreis135 unterstützt. Als ein Beispiel wird das Gerät A 210 in den Bereich1 240 im Systemspeicher140 abgebildet. Der Bereich1 kann einen Treiber242 für das Gerät A 210 haben. Es können auch mehrere Treiber verwendet werden. - Der SDZ-Neuabbildungsschaltkreis
135 enthält einen Registersatz220 , eine SDZ-Neuabbildungsstruktur222 und einen Logikschaltkreis224 . Der Registersatz220 enthält eine Anzahl von Registern, die Steuerungs- oder Statusinformationen bereitstellen, die von der SDZ-Neuabbildungsstruktur222 , dem Logikschaltkreis224 und den Programmen oder Treibern für die E/A-Geräte verwendet werden. Die SDZ-Neuabbildungsstruktur222 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 Logikschaltkreis224 enthält einen Schaltungsaufbau, der die Neuabbildungs- oder Adreßübersetzungsoperationen und andere Schnittstellenfunktionen ausführt. Der SDZ-Neuabbildungsschaltkreis135 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-Neuabbildungsschaltkreis135 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-Neuabbildungsschaltkreis135 , einen VMM oder ein Host-BS320 , 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-Neuabbildungsschaltkreis135 bildet diese zwei Geräte direkt auf die VM340 und360 ohne spezifische Kenntnis des VMM oder Host-BS320 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 VMs340 und360 haben ähnliche Architekturkomponenten, sind aber vollständig voneinander isoliert. Sie sind mit dem VMM oder Host-BS320 verbunden, um auf die Systemhardware zuzugreifen. Die VM340 enthält Anwendungen342 und344 . Es können mehr oder weniger Anwendungen unterstützt werden. Sie hat ein Gast-BS346 und einen Treiber350 für das Gerät A. Der Treiber350 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 VM360 Anwendungen362 und364 . Es können mehr oder weniger Anwendungen unterstützt werden. Sie hat ein Gast-BS366 und einen Treiber370 für das Gerät B. Das Gast-BS366 kann das gleiche sein wie das Gast-BS346 in der VM340 oder kann ein anderes sein. Der Treiber370 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 Treiber350 und370 der Geräte A und B in dem VMM oder Host-BS320 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-BS320 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 Treiber350 und370 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-BS320 zum Absturz bringen. Dank dem SDZ-Neuabbildungsschaltkreis135 können die Treiber350 und370 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-Neuabbildungsschaltkreis135 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-Neuabbildungsschaltkreis135 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-Neuabbildungsschaltkreis135 , einen physischen Speicher420 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 Speicher420 zugeordnet sind. Der physische Speicher420 ordnet die Bereiche 1 422 und 424 und die Bereiche2 426 und428 zu. Es können mehr oder weniger zugeordnete Speichersektionen für diese Geräte zugeordnet werden. Die Bereiche1 422 und424 entsprechen dem Gerät1 410 , und die Bereiche2 424 und428 entsprechen dem Gerät1 412 . In dem in4 veranschaulichten Beispiel wird das Gerät1 410 in den Bereich1 422 abgebildet, und das Gerät 2 412 wird in den Bereich2 428 abgebildet oder dem Bereich2 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 Bereich1 442 entspricht den zwei Bereichen1 422 und424 in dem physischen Speicher420 . Der Bereich2 444 entspricht den zwei Bereichen2 426 und428 . Aus der Gastsicht440 entspricht nur ein einziger Bereich einem einzigen E/A-Gerät. Die SDZ_ADR-Adresse von dem Gerät1 410 wird in die SDZ_ADR1 abgebildet, die sich in dem Adreßraum von 0 bis L des Bereichs1 442 befindet. Gleichermaßen wird die SDZ_ADR-Adresse von dem Gerät2 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-Neuabbildungsschaltkreis135 ein. Der SDZ-Neuabbildungsschaltkreis135 übersetzt die PGA, die durch die Geräte410 und412 erzeugt wurde, in die entsprechenden HPAs. -
5 ist ein Schaubild, das eine SDZ-Neuabbildungsstruktur222 gemäß einer Ausführungsform der Erfindung veranschaulicht. Die SDZ-Neuabbildungsstruktur222 empfängt einen Quellenidentifikator510 und enthält eine Wurzeltabelle 520, eine Anzahl von Kontexttabellen 5300 bis 530U und eine Anzahl von Adreßübersetzungsstrukturen 5400 bis 540V. Die Neuabbildungsstruktur222 empfängt den Quellenidentifikator510 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 Quellenidentifikator510 ist das Attribut, das den Urheber einer E/A-Transaktion identifiziert. Der SDZ-Neuabbildungsschaltkreis135 kann den Quellenidentifikator510 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 Quellenidentifikator510 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 Funktionsnummer512 , eine Gerätenummer514 und eine Busnummer516 . In dem in5 veranschaulichten Beispiel ist die Funktionsnummer512 K Bit breit, die Gerätenummer 514 ist L Bit breit, und die Busnummer516 ist M Bit breit. Die Busnummer516 identifiziert den Bus, auf dem die E/A-Transaktion erzeugt wird. Die Gerätenummer514 identifiziert das konkrete Gerät auf dem identifizierten Bus. Die Funktionsnummer512 identifiziert die konkrete Funktion, die von dem E/A-Gerät angefordert wird. Der Quellenidentifikator510 dient dem Indexieren oder Nachschlagen in der Wurzeltabelle 520 und den Kontexttabellen 5300 bis 530U. In dem in5 veranschaulichten Beispiel gibt es zwei E/A-Transaktionen, die den Bus0 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 Busnummer516 des Quellenidentifikators510 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 Wurzeleintrag0 5250 entspricht der E/A-Transaktion, die den Bus0 verwendet. Der Wurzeleintrag m 520m entspricht der E/A-Transaktion, die den Bus m verwendet. Die Wurzeleinträge0 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 Funktionsnummer512 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 in4 gezeigten Beispiel sind die zwei Kontexteinträge für die zwei E/A-Transaktionen der Kontexteintrag 5350 in der Kontexttabelle 5300 und der Kontexteintrag 535m in 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 5400 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-Neuabbildungsschaltkreis135 eine Anzahl von Registern, die in dem Registersatz 220, der in2 gezeigt ist, enthalten sind. Der Registersatz220 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 Registersatz220 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)-Feld614 , ein Kontexteintragtabellenspeichertyp (KST)-Feld616 und ein Wurzeleintragtabellenspeichertyp (WST)-Feld618 . - 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-Feld614 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-Feld616 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-Feld618 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)-Feld624 . - 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 Logikschaltkreis224 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)-Feld634 . Das WTA-Feld632 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öße4 KB. Der SDZ-Neuabbildungsschaltkreis135 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-Feld634 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 Bits12 bis63 ) 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)-Feld656 , ein Fehlerverarbeitungsfeld660 und ein Bereichsidentifikator (BID)-Feld662 . 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-Neuabbildungsschaltkreis135 für das Durchlaufen der Seitentabellen zu verwenden ist. Der in diesem Feld angegebene Wert ist ein JGAB-Wert, der von dem SDZ-Neuabbildungsschaltkreis135 unterstützt wird und in einem Leistungsregister berichtet wird. Das Leistungsregister ist ein Register, das die Leistungsmerkmale anzeigt, die durch den SDZ-Neuabbildungsschaltkreis135 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-Neuabbildungsschaltkreis135 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 nichtdeterministischen 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 Registersatz220 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 in7 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 Registersatz220 , der Adreßfilterungsregister enthält, gemäß einer Ausführungsform der Erfindung veranschaulicht. Der Registersatz220 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)-Feld712 und ein Filterbitmapspeichertyp (BST)-Feld715 . Das BST-Feld715 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-Feld712 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)-Feld725 . Das FTB-Feld725 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)-Feld732 , ein Schreibpufferentleerungs (SPE)-Feld734 , ein Filtercacheungültigmachungs (FCU)-Feld736 und ein Filtertabellenschutz (FTS)-Feld738 . Das FHA-Feld732 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-Neuabbildungsschaltkreis135 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-Feld736 macht den Adreßfilterbitmapcache ungültig. Die Software drückt dieses Feld auf, um die Ungültigmachung des Adreßfiltercaches anzufordern. Der SDZ-Neuabbildungsschaltkreis135 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-Feld738 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-Neuabbildungsschaltkreis135 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)-Feld742 , ein Typ (T)-Feld 744 und ein Gültig (G)-Feld 746. Das FA-Feld742 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 Wurzeleintrag520 gemäß einer Ausführungsform der Erfindung veranschaulicht. Der Wurzeleintrag520 enthält ein Vorhanden (V)-Feld 810 und ein Kontexteintragstabellenzeiger (KEZ)-Feld815 . - 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 Kontexteintrag535 gemäß einer Ausführungsform der Erfindung veranschaulicht. Der Kontexteintrag535 enthält ein Vorhanden (V)-Feld 822, ein Mehrebenen (M)-Feld 830, ein Adreßraumwurzel (ARW)-Feld834 , ein Gastadressenbreiten (GAB)-Feld836 , ein Fehlerverarbeitungs (FV)-Feld840 und ein Bereichsidentifikator (BID)-Feld842 . Der Kontexteintrag535 hat Felder, die dem Standardvorgaberegister STA_REG 640 ähneln, das in6 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-Feld836 ähneln dem V-Feld 642, dem M-Feld 650, dem ARW-Feld654 bzw. dem GAB-Feld656 in dem Standardvorgaberegister (STA_REG 640), das in6 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-Neuabbildungsschaltkreis135 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 STE565 enthält ein Lesbar (L)-Feld 850, ein Beschreibbar (B)-Feld 852, ein Kohärent (K)-Feld 854, ein Superseiten (SS)-Feld856 und ein Adreß (ADR)-Feld860 . 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-Neuabbildungsschaltkreis135 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-Neuabbildungsschaltkreis135 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-Neuabbildungsschaltkreis135 beurteilt das SS-Feld856 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-Neuabbildungsschaltkreis135 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ßübersetzungsstruktur540 , die mit Mehrebenen-Tabellen arbeitet, gemäß einer Ausführungsform der Erfindung veranschaulicht. Die Adreßübersetzungsstruktur540 enthält den Kontexteintrag535 , eine justierte physische Gastadresse (JPGA)910 , eine Erstebenen-Seitentabelle 920, eine Zwischentabelle 930, eine Blattknotentabelle 940 und eine Seite950 . 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 JPGA910 enthält ein Versatzfeld912 , ein Blattknotenseitentabellenfeld914 , ein Zwischenseitentabellenfeld916 und ein Erstebenen-Seitentabellenfeld918 . 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 JPGA910 , 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 Eintrag8 Bytes. Das Erstebenen-Seitentabellenfeld918 wird durch einen Schieber922 um drei Bits verschoben und dann durch einen Addierer924 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 Eintrag8 Bytes groß ist, wird das Zwischenseitentabellenfeld918 durch einen Schieber932 um drei Bits verschoben und dann durch einen Addierer934 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 Eintrag8 Bytes groß ist, wird das Blattknotenseitentabellenfeld914 durch einen Schieber942 um drei Bits verschoben und dann durch einen Addierer944 zu der Blattknotenbasisadresse addiert, um einen Blattknotenindex für die Blattknotenseitentabelle 940 bereitzustellen. Der indexierte Blattknotenseitentabelleneintrag stellt die Host-Basisadresse für die Seite950 bereit. - Der Versatz
912 wird dann mit der Host-Basisadresse kombiniert, um die physische Hostadresse in der Seite950 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-Neuabbildungsschaltkreises135 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:
L = (GAB - p) MOD(p-q);
wenn (L = = 0) {
JGAB = GAB;
} sonst {
} JGAB = GAB + (p-q) - L;
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-Neuabbildungsschaltkreis135 SDZ-Anforderungen unterstützt, die Seitegrenzen überschreiten, und die PGA/LängenKombination 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-Neuabbildungsschaltkreis135 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 Schritt4 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-Neuabbildungsschaltkreis135 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.
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-Neuabbildungsschaltkreis135 SDZ-Anforderungen unterstützt, die Seitengrenzen überschreiten, und die PGA/LängenKombination 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-Neuabbildungsschaltkreis135 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 Schritt4 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-Neuabbildungsschaltkreis135 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.
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.
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.
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 BitPositionen 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 BitPositionen 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.
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.
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.
Claims (9)
- Vorrichtung, umfassend: ein Register (220), das einem Logikschaltkreis (224) ermöglicht, eine physische Gastadresse des Speicherdirektzugriffs (SDZ) in eine gegebene physische Hostadresse zu übersetzen; und eine Mehrebenen-Baumstruktur (222) von Seitentabellen (520, 530, 540), in der eine Vielzahl von Seitentabelleneinträgen (525, 535) in einer oder mehreren nicht zur niedrigsten Ebene gehörigen Seitentabellen (520, 530) gespeichert sind, wobei jeder Seitentabelleneintrag auf eine Seitentabelle auf einer niedrigeren Ebene in der Baumstruktur zeigt; und in der eine Vielzahl von physischen Hostadressen in einer oder mehreren Seitentabellen (540) auf der niedrigsten Ebene der Baumstruktur gespeichert sind, wobei zumindest ein erster Seitentabelleneintrag in der Vielzahl von Seitentabelleneinträgen (525, 535) auf eine erste virtuelle Maschinen-Domain zeigt, die eine erste Seitentabelle (540m) auf der niedrigsten Ebene aufweist, wobei zumindest ein zweiter Seitentabelleneintrag der Vielzahl von Seitentabelleneinträgen (525, 535) auf eine zweite virtuelle Maschinen-Domain zeigt, die eine zweite Seitentabelle (540o) auf der niedrigsten Ebene aufweist, wobei die erste und die zweite virtuelle Maschinen-Domain voneinander isoliert sind und wobei der Logikschaltkreis (224) eingerichtet ist, zu den Übersetzungszwecken die Baumstruktur (222) zu verwenden, um die physische Gastadresse des Speicherdirektzugriffs in die gegebene physische Hostadresse abzubilden.
- Vorrichtung nach
Anspruch 1 , weiter umfassend: ein Basisadressen-Register (630) zum Speichern einer Basisadresse (632) einer Wurzelseitentabelle (520), wobei die Wurzelseitentabelle eine Seitentabelle auf der höchsten Ebene der Mehrebenen-Baumstruktur umfasst. - Vorrichtung nach
Anspruch 1 , weiter umfassend: ein Leistungsregister (1010) zum Speichern einer maximalen unterstützten Größe (1026) der physischen Gastadresse. - Vorrichtung nach
Anspruch 1 , weiter umfassend: ein Leistungsregister (1010) zum Speichern eines Kohärenzsteuerungsbits (1020), wobei, wenn das Bit gesetzt wird, der Logikschaltkreis (224) die übersetzte physische Hostadresse snoopt, falls ein Kohärenz-Feld (854) in einem Seitentabelleneintrag (565), welcher der übersetzten physischen Hostadresse zugeordnet ist, aufgedrückt wird. - Verfahren, umfassend: Speichern einer Vielzahl von Seitentabelleneinträgen (525, 535) in eine oder mehrere nicht zur niedrigsten Ebene gehörigen Seitentabellen (520, 530) in einer Mehrebenen-Baumstruktur (222) von Seitentabellen (520, 530, 540), wobei jeder Seitentabelleneintrag auf einer Seitentabelle auf einer niedrigeren Ebene in der Baumstruktur zeigt; Speichern einer Vielzahl von physischen Hostadressen in eine oder mehrere Seitentabellen (540) auf der niedrigsten Ebene in der Baumstruktur von Seitentabellen; und Abbilden der physischen Gastadresse des Speicherdirektzugriffs in eine gegebene physische Hostadresse unter Verwendung der Baumstruktur (222), wobei zumindest ein erster Seitentabelleneintrag in der Vielzahl von Seitentabelleneinträgen (525, 535) auf eine erste virtuelle Maschinen-Domain zeigt, die eine erste Seitentabelle (540m) auf der niedrigsten Ebene aufweist, wobei zumindest ein zweiter Seitentabelleneintrag der Vielzahl von Seitentabelleneinträgen (525, 535) auf eine zweite virtuelle Maschinen-Domain zeigt, die eine zweite Seitentabelle (540o) auf der niedrigsten Ebene aufweist, wobei die erste und die zweite virtuelle Maschinen-Domain voneinander isoliert sind.
- Verfahren nach
Anspruch 5 , weiter umfassen: Setzen eines Registers (220) in einem Computersystem (100), um einem Logikschaltkreis (224) im Computersystem zu ermöglichen, die physische Gastadresse des Speicherdirektzugriffs (SDZ) in die gegebene physische Hostadresse durch Abbilden zu übersetzen. - Verfahren nach
Anspruch 5 , weiter umfassend: Speichern einer Basisadresse (632) einer Wurzelseitentabelle (520) in ein Basisadressen-Register (630), wobei die Wurzelseitentabelle eine Seitentabelle auf höchster Ebene der Mehrebenen-Baumstruktur umfasst. - Verfahren nach
Anspruch 5 , weiter umfassend: Speichern einer maximalen unterstützten Größe (1026) der physischen Gastadresse in ein Leistungsregister (1010) im Computersystem (100). - Verfahren nach
Anspruch 5 , weiter umfassend: Snoopen der übersetzten physischen Hostadresse, wenn ein Kohärenzsteuerungsbit in einem Leistungsregister (1010) im Computersystem gesetzt und ein Kohärenz-Feld (854) in einem Seitentabelleneintrag (565), der der übersetzten physischen Hostadresse zugeordnet ist, aufgedrückt wird.
Applications Claiming Priority (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US10/957,306 | 2004-09-30 | ||
| US10/957,306 US8843727B2 (en) | 2004-09-30 | 2004-09-30 | Performance enhancement of address translation using translation tables covering large address spaces |
| PCT/US2005/031471 WO2006039057A2 (en) | 2004-09-30 | 2005-09-01 | Performance enhancement of address translation using translation tables covering large address spaces |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| DE112005002298T5 DE112005002298T5 (de) | 2007-09-27 |
| DE112005002298B4 true DE112005002298B4 (de) | 2018-09-06 |
Family
ID=35789151
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| DE112005002298.6T Expired - Lifetime DE112005002298B4 (de) | 2004-09-30 | 2005-09-01 | Leistungssteigerung einer Adreßübersetzung unter Verwendung von Übersetzungstabellen, die große Adreßräume umfassen |
Country Status (7)
| Country | Link |
|---|---|
| US (2) | US8843727B2 (de) |
| JP (1) | JP4772795B2 (de) |
| CN (1) | CN100593160C (de) |
| DE (1) | DE112005002298B4 (de) |
| GB (1) | GB2432443B (de) |
| TW (1) | TWI321751B (de) |
| WO (1) | WO2006039057A2 (de) |
Families Citing this family (104)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20030069899A1 (en) * | 2001-10-04 | 2003-04-10 | International Business Machines Corporation | Method, system, and program for providing personal preference information when scheduling events |
| US8706942B2 (en) * | 2004-12-29 | 2014-04-22 | Intel Corporation | Direct memory access (DMA) address translation between peer-to-peer input/output (I/O) devices |
| US7487327B1 (en) | 2005-06-01 | 2009-02-03 | Sun Microsystems, Inc. | Processor and method for device-specific memory address translation |
| US7370137B2 (en) * | 2005-06-06 | 2008-05-06 | Intel Corporation | Inter-domain data mover for a memory-to-memory copy engine |
| US20060288130A1 (en) * | 2005-06-21 | 2006-12-21 | Rajesh Madukkarumukumana | Address window support for direct memory access translation |
| US7330958B2 (en) * | 2005-09-22 | 2008-02-12 | International Business Machines Corporation | Method and apparatus for translating a virtual address to a real address using blocks of contiguous page table entries |
| US7616218B1 (en) * | 2005-12-05 | 2009-11-10 | Nvidia Corporation | Apparatus, system, and method for clipping graphics primitives |
| US9658849B2 (en) * | 2006-07-06 | 2017-05-23 | Imperas Software Ltd. | Processor simulation environment |
| US8347064B1 (en) | 2006-09-19 | 2013-01-01 | Nvidia Corporation | Memory access techniques in an aperture mapped memory space |
| US8543792B1 (en) | 2006-09-19 | 2013-09-24 | Nvidia Corporation | Memory access techniques including coalesing page table entries |
| US8352709B1 (en) | 2006-09-19 | 2013-01-08 | Nvidia Corporation | Direct memory access techniques that include caching segmentation data |
| US8601223B1 (en) | 2006-09-19 | 2013-12-03 | Nvidia Corporation | Techniques for servicing fetch requests utilizing coalesing page table entries |
| US8707011B1 (en) | 2006-10-24 | 2014-04-22 | Nvidia Corporation | Memory access techniques utilizing a set-associative translation lookaside buffer |
| US8700883B1 (en) * | 2006-10-24 | 2014-04-15 | Nvidia Corporation | Memory access techniques providing for override of a page table |
| US8706975B1 (en) | 2006-11-01 | 2014-04-22 | Nvidia Corporation | Memory access management block bind system and method |
| US8607008B1 (en) | 2006-11-01 | 2013-12-10 | Nvidia Corporation | System and method for independent invalidation on a per engine basis |
| US8504794B1 (en) | 2006-11-01 | 2013-08-06 | Nvidia Corporation | Override system and method for memory access management |
| US8533425B1 (en) | 2006-11-01 | 2013-09-10 | Nvidia Corporation | Age based miss replay system and method |
| US8347065B1 (en) * | 2006-11-01 | 2013-01-01 | Glasco David B | System and method for concurrently managing memory access requests |
| US8700865B1 (en) | 2006-11-02 | 2014-04-15 | Nvidia Corporation | Compressed data access system and method |
| US7685401B2 (en) * | 2006-12-27 | 2010-03-23 | Intel Corporation | Guest to host address translation for devices to access memory in a partitioned system |
| JP4356765B2 (ja) * | 2007-04-20 | 2009-11-04 | ソニー株式会社 | 情報処理装置および方法、並びにプログラム |
| US8041923B2 (en) | 2008-01-11 | 2011-10-18 | International Business Machines Corporation | Load page table entry address instruction execution based on an address translation format control field |
| US8041922B2 (en) * | 2008-01-11 | 2011-10-18 | International Business Machines Corporation | Enhanced dynamic address translation with load real address function |
| US8095773B2 (en) * | 2008-02-26 | 2012-01-10 | International Business Machines Corporation | Dynamic address translation with translation exception qualifier |
| US8307180B2 (en) | 2008-02-28 | 2012-11-06 | Nokia Corporation | Extended utilization area for a memory device |
| US20100169673A1 (en) * | 2008-12-31 | 2010-07-01 | Ramakrishna Saripalli | Efficient remapping engine utilization |
| US20100228943A1 (en) * | 2009-03-04 | 2010-09-09 | Freescale Semiconductor, Inc. | Access management technique for storage-efficient mapping between identifier domains |
| US8473644B2 (en) * | 2009-03-04 | 2013-06-25 | Freescale Semiconductor, Inc. | Access management technique with operation translation capability |
| US8874824B2 (en) | 2009-06-04 | 2014-10-28 | Memory Technologies, LLC | Apparatus and method to share host system RAM with mass storage memory RAM |
| US8195917B2 (en) * | 2009-07-01 | 2012-06-05 | Advanced Micro Devices, Inc. | Extended page size using aggregated small pages |
| US8386745B2 (en) * | 2009-07-24 | 2013-02-26 | Advanced Micro Devices, Inc. | I/O memory management unit including multilevel address translation for I/O and computation offload |
| US7966433B2 (en) * | 2009-09-04 | 2011-06-21 | Silicon Motion Inc. | Method for enhancing performance of data access between a personal computer and a USB Mass Storage, associated personal computer, and storage medium storing an associated USB Mass Storage driver |
| US8489843B2 (en) * | 2010-04-20 | 2013-07-16 | Chip Memory Technology, Inc. | Configurable memory device |
| US8639858B2 (en) * | 2010-06-23 | 2014-01-28 | International Business Machines Corporation | Resizing address spaces concurrent to accessing the address spaces |
| US20120246381A1 (en) * | 2010-12-14 | 2012-09-27 | Andy Kegel | Input Output Memory Management Unit (IOMMU) Two-Layer Addressing |
| US9606936B2 (en) * | 2010-12-16 | 2017-03-28 | Advanced Micro Devices, Inc. | Generalized control registers |
| US8631212B2 (en) | 2011-09-25 | 2014-01-14 | Advanced Micro Devices, Inc. | Input/output memory management unit with protection mode for preventing memory access by I/O devices |
| US9417998B2 (en) | 2012-01-26 | 2016-08-16 | Memory Technologies Llc | Apparatus and method to provide cache move with non-volatile mass memory system |
| US10146545B2 (en) | 2012-03-13 | 2018-12-04 | Nvidia Corporation | Translation address cache for a microprocessor |
| JP5862408B2 (ja) * | 2012-03-27 | 2016-02-16 | 富士通株式会社 | エミュレーション装置、及びエミュレーションプログラム |
| US9880846B2 (en) | 2012-04-11 | 2018-01-30 | Nvidia Corporation | Improving hit rate of code translation redirection table with replacement strategy based on usage history table of evicted entries |
| US9311226B2 (en) | 2012-04-20 | 2016-04-12 | Memory Technologies Llc | Managing operational state data of a memory module using host memory in association with state change |
| US10241810B2 (en) | 2012-05-18 | 2019-03-26 | Nvidia Corporation | Instruction-optimizing processor with branch-count table in hardware |
| US20130326143A1 (en) * | 2012-06-01 | 2013-12-05 | Broadcom Corporation | Caching Frequently Used Addresses of a Page Table Walk |
| US8799746B2 (en) | 2012-06-13 | 2014-08-05 | Caringo, Inc. | Erasure coding and replication in storage clusters |
| US9104560B2 (en) | 2012-06-13 | 2015-08-11 | Caringo, Inc. | Two level addressing in storage clusters |
| US8762353B2 (en) | 2012-06-13 | 2014-06-24 | Caringo, Inc. | Elimination of duplicate objects in storage clusters |
| US9092359B2 (en) | 2012-06-14 | 2015-07-28 | International Business Machines Corporation | Identification and consolidation of page table entries |
| US9753860B2 (en) | 2012-06-14 | 2017-09-05 | International Business Machines Corporation | Page table entry consolidation |
| US9811472B2 (en) | 2012-06-14 | 2017-11-07 | International Business Machines Corporation | Radix table translation of memory |
| US9164804B2 (en) | 2012-06-20 | 2015-10-20 | Memory Technologies Llc | Virtual memory module |
| US9116820B2 (en) | 2012-08-28 | 2015-08-25 | Memory Technologies Llc | Dynamic central cache memory |
| US9058268B1 (en) | 2012-09-20 | 2015-06-16 | Matrox Graphics Inc. | Apparatus, system and method for memory management |
| US9355032B2 (en) | 2012-10-08 | 2016-05-31 | International Business Machines Corporation | Supporting multiple types of guests by a hypervisor |
| US9348757B2 (en) | 2012-10-08 | 2016-05-24 | International Business Machines Corporation | System supporting multiple partitions with differing translation formats |
| US9740624B2 (en) | 2012-10-08 | 2017-08-22 | International Business Machines Corporation | Selectable address translation mechanisms within a partition |
| US9600419B2 (en) | 2012-10-08 | 2017-03-21 | International Business Machines Corporation | Selectable address translation mechanisms |
| US9355040B2 (en) * | 2012-10-08 | 2016-05-31 | International Business Machines Corporation | Adjunct component to provide full virtualization using paravirtualized hypervisors |
| US9280488B2 (en) * | 2012-10-08 | 2016-03-08 | International Business Machines Corporation | Asymmetric co-existent address translation structure formats |
| US10241923B2 (en) * | 2012-11-06 | 2019-03-26 | International Business Machines Corporation | Configurable I/O address translation data structure |
| US20140189310A1 (en) | 2012-12-27 | 2014-07-03 | Nvidia Corporation | Fault detection in instruction translations |
| DE102013022169A1 (de) | 2013-03-14 | 2014-09-18 | Nvidia Corporation | Fehlerpuffer zur verfolgung von seitenfehlern in einem vereinheitlichten virtuellen speichersystem |
| US11487673B2 (en) | 2013-03-14 | 2022-11-01 | Nvidia Corporation | Fault buffer for tracking page faults in unified virtual memory system |
| US10108424B2 (en) | 2013-03-14 | 2018-10-23 | Nvidia Corporation | Profiling code portions to generate translations |
| TWI493342B (zh) * | 2013-04-12 | 2015-07-21 | Faraday Tech Corp | 記憶體管理裝置及管理方法 |
| US10509729B2 (en) * | 2016-01-13 | 2019-12-17 | Intel Corporation | Address translation for scalable virtualization of input/output devices |
| US10089090B2 (en) | 2016-06-07 | 2018-10-02 | Honeywell International Inc. | System and method for facilitating dynamic remapping of absolute addresses during software migration |
| US10048881B2 (en) | 2016-07-11 | 2018-08-14 | Intel Corporation | Restricted address translation to protect against device-TLB vulnerabilities |
| US10802986B2 (en) | 2016-07-18 | 2020-10-13 | International Business Machines Corporation | Marking to indicate memory used to back address translation structures |
| US10176110B2 (en) | 2016-07-18 | 2019-01-08 | International Business Machines Corporation | Marking storage keys to indicate memory used to back address translation structures |
| US10176111B2 (en) | 2016-07-18 | 2019-01-08 | International Business Machines Corporation | Host page management using active guest page table indicators |
| US10282305B2 (en) | 2016-07-18 | 2019-05-07 | International Business Machines Corporation | Selective purging of entries of structures associated with address translation in a virtualized environment |
| US10223281B2 (en) | 2016-07-18 | 2019-03-05 | International Business Machines Corporation | Increasing the scope of local purges of structures associated with address translation |
| US10241924B2 (en) | 2016-07-18 | 2019-03-26 | International Business Machines Corporation | Reducing over-purging of structures associated with address translation using an array of tags |
| US10169243B2 (en) | 2016-07-18 | 2019-01-01 | International Business Machines Corporation | Reducing over-purging of structures associated with address translation |
| US10168902B2 (en) | 2016-07-18 | 2019-01-01 | International Business Machines Corporation | Reducing purging of structures associated with address translation |
| US10180909B2 (en) | 2016-07-18 | 2019-01-15 | International Business Machines Corporation | Host-based resetting of active use of guest page table indicators |
| US10176006B2 (en) | 2016-07-18 | 2019-01-08 | International Business Machines Corporation | Delaying purging of structures associated with address translation |
| US10162764B2 (en) | 2016-07-18 | 2018-12-25 | International Business Machines Corporation | Marking page table/page status table entries to indicate memory used to back address translation structures |
| US10248573B2 (en) | 2016-07-18 | 2019-04-02 | International Business Machines Corporation | Managing memory used to back address translation structures |
| TW201818248A (zh) | 2016-11-15 | 2018-05-16 | 慧榮科技股份有限公司 | 可應用於資料儲存裝置之記憶體管理方法 |
| US10394711B2 (en) * | 2016-11-30 | 2019-08-27 | International Business Machines Corporation | Managing lowest point of coherency (LPC) memory using a service layer adapter |
| US10241925B2 (en) | 2017-02-15 | 2019-03-26 | Ati Technologies Ulc | Selecting a default page size in a variable page size TLB |
| US10282309B2 (en) | 2017-02-24 | 2019-05-07 | Advanced Micro Devices, Inc. | Per-page control of physical address space distribution among memory modules |
| US11200183B2 (en) * | 2017-03-31 | 2021-12-14 | Intel Corporation | Scalable interrupt virtualization for input/output devices |
| US10339068B2 (en) | 2017-04-24 | 2019-07-02 | Advanced Micro Devices, Inc. | Fully virtualized TLBs |
| US10228981B2 (en) | 2017-05-02 | 2019-03-12 | Intel Corporation | High-performance input-output devices supporting scalable virtualization |
| US10642751B2 (en) * | 2017-07-20 | 2020-05-05 | Vmware, Inc. | Hardware-assisted guest address space scanning in a virtualized computing system |
| US10169185B1 (en) | 2017-08-12 | 2019-01-01 | International Business Machines Corporation | Efficient testing of direct memory address translation |
| US10700711B1 (en) | 2017-11-03 | 2020-06-30 | Caringo Inc. | Multi-part upload and editing of erasure-coded objects |
| US11372787B2 (en) * | 2017-12-09 | 2022-06-28 | Intel Corporation | Unified address space for multiple links |
| CN109933553B (zh) * | 2019-02-28 | 2020-09-29 | 厦门码灵半导体技术有限公司 | 一种控制系统及其设计方法、一组控制系统、电子装置 |
| US10884948B2 (en) * | 2019-05-16 | 2021-01-05 | Advanced Micro Devices, Inc. | Replacing pointers with hashing in tree-based page table designs |
| CN118916302A (zh) * | 2019-06-21 | 2024-11-08 | 慧荣科技股份有限公司 | 闪存物理资源集合管理装置及方法及计算机可读取存储介质 |
| US10817433B2 (en) * | 2019-06-28 | 2020-10-27 | Intel Corporation | Page tables for granular allocation of memory pages |
| US11314674B2 (en) | 2020-02-14 | 2022-04-26 | Google Llc | Direct memory access architecture with multi-level multi-striding |
| CN111367831B (zh) * | 2020-03-26 | 2022-11-11 | 超睿科技(长沙)有限公司 | 翻译页表的深度预取方法、部件、微处理器及计算机设备 |
| GB2594258B (en) * | 2020-04-20 | 2022-07-20 | Advanced Risc Mach Ltd | Variable nesting control parameter for table structure providing access control information for controlling access to a memory system |
| US12326816B2 (en) * | 2020-12-21 | 2025-06-10 | Intel Corporation | Technologies for offload device fetching of address translations |
| US20220012195A1 (en) * | 2021-09-24 | 2022-01-13 | Intel Corporation | Enabling logic for flexible configuration of memory module data width |
| KR20230052479A (ko) | 2021-10-13 | 2023-04-20 | 삼성전자주식회사 | 보조 프로세서 및 이를 포함하는 전자 시스템 |
| CN115079957B (zh) * | 2022-07-20 | 2023-08-04 | 阿里巴巴(中国)有限公司 | 请求处理方法、装置、控制器、设备及存储介质 |
| US12481453B2 (en) * | 2023-08-02 | 2025-11-25 | Qualcomm Incorporated | Unmapping a write buffer portion for access during a write to a memory device |
Family Cites Families (36)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| FR2230258A5 (de) * | 1973-05-16 | 1974-12-13 | Honeywell Bull Soc Ind | |
| JPS60117350A (ja) * | 1983-11-30 | 1985-06-24 | Toshiba Corp | メモリマッピング装置 |
| JPS61148551A (ja) * | 1984-12-24 | 1986-07-07 | Hitachi Ltd | アドレス変換方式 |
| JPH0653659B2 (ja) * | 1985-07-22 | 1994-07-20 | ニチバン株式会社 | 粘膜付着製剤 |
| JPS6299844A (ja) * | 1985-10-28 | 1987-05-09 | Hitachi Ltd | アドレス変換装置 |
| JPS6356746A (ja) * | 1986-08-28 | 1988-03-11 | Nec Corp | 仮想計算機におけるペ−ジングバイパス方式 |
| JPS6417137A (en) * | 1987-07-13 | 1989-01-20 | Nippon Telegraph & Telephone | Control system for large-capacity page |
| JPH06105431B2 (ja) * | 1987-08-25 | 1994-12-21 | 富士通株式会社 | ベクトル・プロセッサにおける仮想計算機装置 |
| JP2507756B2 (ja) * | 1987-10-05 | 1996-06-19 | 株式会社日立製作所 | 情報処理装置 |
| JP2635058B2 (ja) * | 1987-11-11 | 1997-07-30 | 株式会社日立製作所 | アドレス変換方式 |
| JPH0331967A (ja) * | 1989-06-29 | 1991-02-12 | Fujitsu Ltd | ベクトル処理装置 |
| JP3369580B2 (ja) * | 1990-03-12 | 2003-01-20 | ヒューレット・パッカード・カンパニー | 直接メモリアクセスを行うためのインターフェース装置及び方法 |
| JPH04311233A (ja) * | 1991-04-09 | 1992-11-04 | Nec Corp | アドレス変換装置 |
| CA2083634C (en) * | 1991-12-30 | 1999-01-19 | Hung Ping Wong | Method and apparatus for mapping page table trees into virtual address space for address translation |
| US5526503A (en) * | 1993-10-06 | 1996-06-11 | Ast Research, Inc. | Virtual addressing buffer circuit |
| EP0674269B1 (de) * | 1994-03-24 | 2001-12-19 | Hewlett-Packard Company, A Delaware Corporation | Übersetzungsmechanismus für Ein-/Ausgabeadressen |
| JPH0981720A (ja) * | 1995-09-11 | 1997-03-28 | Toshiba Corp | イメージ処理装置 |
| WO1998014877A1 (en) | 1996-09-30 | 1998-04-09 | Cirrus Logic, Inc. | Virtual addressing for subsystem dma |
| US5809563A (en) * | 1996-11-12 | 1998-09-15 | Institute For The Development Of Emerging Architectures, Llc | Method and apparatus utilizing a region based page table walk bit |
| US6088780A (en) * | 1997-03-31 | 2000-07-11 | Institute For The Development Of Emerging Architecture, L.L.C. | Page table walker that uses at least one of a default page size and a page size selected for a virtual address space to position a sliding field in a virtual address |
| US6075938A (en) * | 1997-06-10 | 2000-06-13 | The Board Of Trustees Of The Leland Stanford Junior University | Virtual machine monitors for scalable multiprocessors |
| US6397242B1 (en) * | 1998-05-15 | 2002-05-28 | Vmware, Inc. | Virtualization system including a virtual machine monitor for a computer with a segmented architecture |
| US6446186B1 (en) * | 1999-10-27 | 2002-09-03 | Nvidia Corporation | Method, apparatus and article of manufacture for mapping physical memory in a virtual address system |
| US6233668B1 (en) * | 1999-10-27 | 2001-05-15 | Compaq Computer Corporation | Concurrent page tables |
| US6715063B1 (en) * | 2000-01-14 | 2004-03-30 | Advanced Micro Devices, Inc. | Call gate expansion for 64 bit addressing |
| JP2001209578A (ja) * | 2000-01-26 | 2001-08-03 | Nec Kofu Ltd | メモリ更新履歴管理方式 |
| EP1182564A3 (de) | 2000-08-21 | 2004-07-28 | Texas Instruments France | Lokaler Speicher mit Anzeigesbits zur Unterstützung von gleichzeitigem DMA- und CPU-Zugriff |
| US6715057B1 (en) * | 2000-08-31 | 2004-03-30 | Hewlett-Packard Development Company, L.P. | Efficient translation lookaside buffer miss processing in computer systems with a large range of page sizes |
| US6721848B2 (en) * | 2000-12-08 | 2004-04-13 | Hewlett-Packard Development Company,L.P. | Method and mechanism to use a cache to translate from a virtual bus to a physical bus |
| US6779049B2 (en) * | 2000-12-14 | 2004-08-17 | International Business Machines Corporation | Symmetric multi-processing system with attached processing units being able to access a shared memory without being structurally configured with an address translation mechanism |
| US6804741B2 (en) * | 2002-01-16 | 2004-10-12 | Hewlett-Packard Development Company, L.P. | Coherent memory mapping tables for host I/O bridge |
| US7127548B2 (en) * | 2002-04-16 | 2006-10-24 | Intel Corporation | Control register access virtualization performance improvement in the virtual-machine architecture |
| US6725289B1 (en) * | 2002-04-17 | 2004-04-20 | Vmware, Inc. | Transparent address remapping for high-speed I/O |
| US7953588B2 (en) * | 2002-09-17 | 2011-05-31 | International Business Machines Corporation | Method and system for efficient emulation of multiprocessor address translation on a multiprocessor host |
| US20050080934A1 (en) * | 2003-09-30 | 2005-04-14 | Cota-Robles Erik C. | Invalidating translation lookaside buffer entries in a virtual machine (VM) system |
| JP2005128963A (ja) * | 2003-10-27 | 2005-05-19 | Toshiba Information Systems (Japan) Corp | 記憶制御装置及びdma転送が可能な制御システム |
-
2004
- 2004-09-30 US US10/957,306 patent/US8843727B2/en active Active
-
2005
- 2005-09-01 WO PCT/US2005/031471 patent/WO2006039057A2/en not_active Ceased
- 2005-09-01 GB GB0704914A patent/GB2432443B/en not_active Expired - Lifetime
- 2005-09-01 JP JP2007534614A patent/JP4772795B2/ja not_active Expired - Fee Related
- 2005-09-01 DE DE112005002298.6T patent/DE112005002298B4/de not_active Expired - Lifetime
- 2005-09-01 CN CN200580032491A patent/CN100593160C/zh not_active Expired - Lifetime
- 2005-09-08 TW TW094130877A patent/TWI321751B/zh not_active IP Right Cessation
-
2009
- 2009-09-01 US US12/584,138 patent/US20100011187A1/en not_active Abandoned
Non-Patent Citations (1)
| Title |
|---|
| IA-32 Intel Architecture Softwaree Developer's Manual, Vol.3: System Programming Guide, 2001, S.2-12 bis 2-18. 3-20 bis 3-34 und 15-7 bis 15-11 |
Also Published As
| Publication number | Publication date |
|---|---|
| JP2008515093A (ja) | 2008-05-08 |
| US8843727B2 (en) | 2014-09-23 |
| GB0704914D0 (en) | 2007-04-25 |
| US20100011187A1 (en) | 2010-01-14 |
| US20060069899A1 (en) | 2006-03-30 |
| GB2432443B (en) | 2008-04-02 |
| GB2432443A (en) | 2007-05-23 |
| DE112005002298T5 (de) | 2007-09-27 |
| TWI321751B (en) | 2010-03-11 |
| TW200622885A (en) | 2006-07-01 |
| CN100593160C (zh) | 2010-03-03 |
| WO2006039057A2 (en) | 2006-04-13 |
| CN101027653A (zh) | 2007-08-29 |
| WO2006039057A3 (en) | 2006-06-29 |
| JP4772795B2 (ja) | 2011-09-14 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| DE112005002298B4 (de) | Leistungssteigerung einer Adreßübersetzung unter Verwendung von Übersetzungstabellen, die große Adreßräume umfassen | |
| DE112005002304B4 (de) | Adreßumsetzung für Eingabe/Ausgabe- Vorrichtungen mittels hierarchischer Umsetzungstabellen | |
| DE112005002405B4 (de) | Fehlerverarbeitung für Direktspeicherzugriffs-Adreßübersetzung | |
| DE112005002328T5 (de) | Cachespeicherungsunterstützung für Direktspeicherzugriffsadreßübersetzung | |
| DE102007062744B4 (de) | Guest-Host-Adressübersetzung für den Zugriff von Geräten auf einen Speicher in einem partitionierten System | |
| DE112006001642T5 (de) | Adressfensterunterstützung für Direktspeicherzugriffsumsetzung | |
| DE112017001027B4 (de) | Seitenfehlerbehebung | |
| DE112007001988T5 (de) | Gemeinsames Nutzen von Informationen durch Gäste in einer Virtuelle-Maschine-Umgebung | |
| DE3587960T2 (de) | Datenverarbeitungsanlage mit einem Speicherzugriffssteuergerät. | |
| DE69530776T2 (de) | Zweiwege set-assoziativer cache-speicher | |
| DE102018006756A1 (de) | Beschleuniger-Fabric | |
| DE102010035603A1 (de) | Bereitstellen von Hardwareunterstützung für gemeinsam benutzten virtuellen Speicher zwischen physischem Lokal- und Fernspeicher | |
| DE102014014076A1 (de) | Reduzierte Adressenkonvertierung mit mehreren Seitengrößen | |
| DE102019105879A1 (de) | Verwaltung von kohärenten Verknüpfungen und Mehr-Ebenen-Speicher | |
| DE202010017667U1 (de) | Datenspeichervorrichtung mit Flash-Speicherchips | |
| DE102009061252B3 (de) | Vorrichtung, Verfahren und System zur Verarbeitung einer Transaktion auf einem PCI-Bus mittels eines Root-Komplexes | |
| DE102009017496B4 (de) | Speicherzugriff in einem System mit Speicherschutz | |
| DE112016002356T5 (de) | Datenspeichersystemarchitektur | |
| DE112018002951T5 (de) | Verwenden eines spurformatcodes in einem cache-steuerblock für eine spur in einem cache, um lese- und schreibanforderungen in bezug auf die spur im cache zu verarbeiten | |
| DE102006061939B4 (de) | Verfahren und Vorrichtung zum Zugriff auf eine speicherabgebildete Vorrichtung durch einen Gast | |
| DE102010046892A1 (de) | Management und Implementierung von Metadaten in der Zentraleinheit unter Verwendung von Registererweiterungen | |
| DE69524916T2 (de) | Verfahren und Vorrichtung zur Datenübertragung im Bereich der Rechnersysteme | |
| DE10196440B4 (de) | Steuern des Zugriffs auf mehrere isolierte Speicher in einer isolierten Ausführungsumgebung | |
| DE102022107196A1 (de) | Sichere direkte Peer-to-Peer-Speicherzugriffsanforderung zwischen Geräten | |
| WO2013110736A1 (de) | Speichercontroller zur bereitstellung mehrerer definierter bereiche eines massenspeichermediums als unabhängige massenspeicher an einen master-betriebssystem - kern zur exklusiven bereitstellung an virutelle maschinen |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| OP8 | Request for examination as to paragraph 44 patent law | ||
| R016 | Response to examination communication | ||
| R018 | Grant decision by examination section/examining division | ||
| R020 | Patent grant now final | ||
| R081 | Change of applicant/patentee |
Owner name: TAHOE RESEARCH, LTD., IE Free format text: FORMER OWNER: INTEL CORPORATION, SANTA CLARA, CALIF., US |
|
| R082 | Change of representative |
Representative=s name: DENNEMEYER & ASSOCIATES S.A., DE Representative=s name: DENNEMEYER & ASSOCIATES RECHTSANWALTSGESELLSCH, DE |
|
| R082 | Change of representative |
Representative=s name: DENNEMEYER & ASSOCIATES RECHTSANWALTSGESELLSCH, DE |
|
| R071 | Expiry of right |