[go: up one dir, main page]

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 PDF

Info

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
Application number
DE112005002298.6T
Other languages
English (en)
Other versions
DE112005002298T5 (de
Inventor
Ioannis Schoinas
Gilbert Neiger
Rajesh Madukkarumukumana
Ku-jei King
Richard Uhlig
Achmed Zahir
Koichi Yamada
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tahoe Research Ltd
Original Assignee
Intel Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE112005002298T5 publication Critical patent/DE112005002298T5/de
Application granted granted Critical
Publication of DE112005002298B4 publication Critical patent/DE112005002298B4/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1081Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/109Address 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 System 100 veranschaulicht, in dem eine Ausführungsform der Erfindung praktiziert werden kann. Das System 100 enthält einen Prozessor 110, einen Prozessorbus 120, einen Speichersteuerhub (SSH) 130, einen Systemspeicher 140, einen Eingabe/Ausgabe-Steuerhub (ESH) 150, einen Peripheriebus 155, ein Massenspeichergerät oder eine Massenspeicherschnittstelle 170 und Eingabe/Ausgabe-Geräte 1801 bis 180K und 185. Es ist zu beachten, daß das System 100 mehr oder weniger Elemente als die oben genannten enthalten kann.
  • Der Prozessor 110 stellt eine zentrale Verarbeitungseinheit eines beliebigen Architekturtyps dar, wie zum Beispiel eingebettete Prozessoren, mobile Prozessoren, Mikrocontroller, digitale Signalprozessoren, superskalare Computer, Vektorprozessoren, Single Instruction Multiple Data (SIMD)-Computer, Complex Instruction Set-Computer (CISC), Reduced Instruction Set-Computer (RISC), eine Very Long Instruction Word (VLIW)- oder Hybridarchitektur.
  • Der Prozessorbus 120 gibt Schnittstellensignale aus, damit der Prozessor 110 mit anderen Prozessoren oder Geräten, zum Beispiel dem SSH 130, kommunizieren kann. Der Prozessorbus 120 kann eine Einprozessor- oder Mehrprozessorkonfiguration unterstützen. Der Prozessorbus 120 kann parallel, sequentiell, verknüpft, asynchron, synchron oder eine Kombination daraus sein.
  • Der SSH 130 besorgt die Steuerung und Konfiguration von Speicher- und Eingabe/Ausgabe-Geräten, wie zum Beispiel des Systemspeichers 140 und des ESH 150. Der SSH 130 kann in einen Chipsatz integriert sein, der mehrere Funktionalitäten integriert, wie zum Beispiel den isolierten Ausführungsmodus, die Host-zu-Peripheriebus-Schnittstelle und die Speichersteuerung. Der SSH 130 ist direkt oder über den ESH 150 an den Peripheriebus 155 angeschlossen. Aus Gründen der Übersichtlichkeit sind nicht alle Peripheriebusse gezeigt. Es wird in Betracht gezogen, daß das System 100 auch Peripheriebusse wie zum Beispiel Periphery Component Interconnect (PCI), PCI Express, Accelerated Graphics Port (AGP), Industry Standard Architecture (ISA)-Bus, Universal Serial Bus (USB) usw. enthalten kann.
  • Der SSH 130 enthält einen Speicherdirektzugriffs (SDZ)-Neuabbildungsschaltkreis 135. Der SDZ-Neuabbildungsschaltkreis 135 bildet ein E/A-Gerät (zum Beispiel eines der E/A-Geräte 1801 bis 180K und 185) in einen Bereich in dem Systemspeicher 140 in einer E/A-Transaktion ab. Die E/A-Transaktion ist in der Regel eine SDZ-Anforderung. Der SDZ-Neuabbildungsschaltkreis 135 bietet Hardware-Unterstützung, um die E/A-Gerätezuordnung und/oder die E/A-Geräteverwaltung zu ermöglichen oder zu verbessern. Der SDZ-Neuabbildungsschaltkreis 135 kann auch in einem anderen Chipsatz als dem SSH 130 enthalten sein, wie zum Beispiel dem ESH 150. Er kann auch ganz oder teilweise in dem Prozessor 110 oder als ein separater Prozessor oder Koprozessor für andere Prozessoren oder Geräte implementiert sein.
  • Der Systemspeicher 140 speichert Systemcode und -daten. Der Systemspeicher 140 ist in der Regel mit dynamischem Direktzugriffsspeicher (DRAM) oder statischem Direktzugriffsspeicher (SRAM) implementiert. Der Systemspeicher kann Programmcode oder Codesegmente enthalten, die eine Ausführungsform der Erfindung implementieren. Der Systemspeicher enthält ein Betriebssystem (BS) 142 oder einen Teil des BS oder einen Kernel und einen E/A-Treiber 145. Jedes der Elemente des BS 142 oder der E/A-Treiber 145 kann durch Hardware, Software, Firmware, Mikrocode oder Kombinationen daraus implementiert sein. Der Systemspeicher 140 kann auch andere Programme oder Daten enthalten, die nicht gezeigt sind.
  • Der ESH 150 hat eine Anzahl von Funktionalitäten, die dafür ausgelegt sind, E/A-Funktionen zu unterstützen. Der ESH 150 kann auch in einen Chipsatz zusammen mit oder separat von dem SSH 130 integriert sein, um E/A-Funktionen auszuführen. Der ESH 150 kann eine Anzahl von Schnittstellen- und E/A-Funktionen enthalten, wie zum Beispiel eine PCI-Busschnittstelle, um eine Schnittstelle zu dem Peripheriebus 155 zu bilden, eine Prozessorschnittstelle, einen Interrupt-Controller, einen Speicherdirektzugriffs (SDZ)-Controller, eine Energieverwaltungslogik, einen Zeitgeber, einen System Management Bus (SMBus), eine Universal Serial Bus (USB)-Schnittstelle, eine Massenspeicherschnittstelle, eine Low Pin Count (LPC)-Schnittstelle usw.
  • Das Massenspeichergerät oder die Massenspeicherschnittstelle 170 ermöglicht die Speicherung von Archivinformationen, wie zum Beispiel Code, Programmen, Dateien, Daten, Anwendungen und Betriebssystemen. Das Massenspeichergerät oder die Massenspeicherschnittstelle 170 kann mit einem Compact Disk (CD)-ROM 172, einer digitalen Video/Versatile-Disk (DVD) 173, einem Diskettenlaufwerk 174 und einem Festplattenlaufwerk 176 und sonstigen anderen magnetischen oder optischen Speichervorrichtungen verbunden sein. Das Massenspeichergerät oder die Massenspeicherschnittstelle 170 stellt einen Mechanismus zum Lesen von für Maschinen zugänglichen Medien bereit. Die für Maschinen zugänglichen Medien können computerlesbaren Programmcode zum Ausführen von Aufgaben enthalten, wie im Folgenden beschrieben wird.
  • Zu den E/A-Geräten 1801 bis 180K können jegliche E/A-Geräte zum Ausführen von E/A-Funktionen, einschließlich SDZ-Anforderungen, gehören. Sie sind mit dem Peripheriebus 155 verbunden. Zu Beispielen von E/A-Geräten 1801 bis 180K gehören Controller für Eingabegeräte (zum Beispiel Tastatur, Maus, Trackball, Zeigegerät), Medienkarten (zum Beispiel Audio, Video, Grafik), Netzwerkkarten und jegliche sonstige Peripherie-Controller. Das E/A-Gerät 185 ist direkt mit dem ESH 150 verbunden. Der Peripheriebus 155 ist ein beliebiger Bus, der E/A-Transaktionen unterstützt. Zu Beispielen des Peripheriebusses 155 gehören der PCI-Bus, PCI Express usw.
  • Elemente einer Ausführungsform der Erfindung können durch Hardware, Firmware, Software oder Kombinationen daraus implementiert sein. Der Begriff „Hardware“ meint allgemein ein Element mit einer physischen Struktur, wie zum Beispiel elektronische, elektromagnetische, optische, elektro-optische, mechanische, elektromechanische Teile usw. Der Begriff „Software“ meint allgemein eine logische Struktur, ein Verfahren, ein Procedere, ein Programm, eine Routine, einen Prozeß, einen Algorithmus, eine Formel, eine Funktion, einen Ausdruck usw. Der Begriff „Firmware“ meint allgemein eine logische Struktur, ein Verfahren, ein Procedere, ein Programm, eine Routine, einen Prozeß, einen Algorithmus, eine Formel, eine Funktion, einen Ausdruck usw., die/das/der in einer Hardware-Struktur implementiert oder verkörpert ist (zum Beispiel Flash-Speicher, Nurlesespeicher, löschbarer Nurlesespeicher). Zu Beispielen für Firmware können Mikrocode, beschreibbarer Steuerspeicher und eine mikroprogrammierte Struktur gehören. Bei Implementierung als Software oder Firmware sind die Elemente einer Ausführungsform der vorliegenden Erfindung im Wesentlichen die Codesegmente zum Ausführen der notwendigen Aufgaben. Die Software oder Firmware kann den eigentlichen Code zum Ausführen der Operationen, die in einer Ausführungsform der Erfindung beschrieben sind, oder Code, der die Operationen emuliert oder simuliert, enthalten. Die Programm- oder Codesegmente können in einem für einen Prozessor oder eine Maschine zugänglichen Medium gespeichert sein oder durch ein Computerdatensignal, das in einer Trägerwelle verkörpert ist, oder ein Signal, das durch einen Träger moduliert ist, über ein Übertragungsmedium übertragen werden. Zu dem „für einen Prozessor lesbaren oder zugänglichen Medium“ oder „für eine Maschine lesbaren oder zugänglichen Medium“ kann jedes Medium gehören, das Informationen speichern, übertragen oder übergeben kann. Zu Beispielen eines für einen Prozessor lesbaren oder für Maschinen zugänglichen Mediums gehören ein elektronischer Schaltkreis, ein Halbleiterspeicherbaustein, ein Nurlesespeicher (ROM), ein Flash-Speicher, ein löschbarer ROM (EROM), ein Diskette, ein Compact Disk (CD)-ROM, eine optische Disk, eine Festplatte, ein faseroptisches Medium, eine Hochfrequenz (HF)-Verbindung usw. Zu einem Computerdatensignal kann jedes Signal gehören, das sich über ein Übertragungsmedium ausbreiten kann, wie zum Beispiel elektronische Netzwerkkanäle, optische Fasern, Luft-, elektromagnetische, HF-Verbindungen usw. Die Codesegmente können über Computernetze wie zum Beispiel das Internet, Intranet usw. heruntergeladen werden. Das für Maschinen zugängliche Medium kann in einem hergestellten Gegenstand verkörpert sein. Das für Maschinen zugängliche Medium kann Daten enthalten, die, wenn durch eine Maschine auf sie zugegriffen wird, die Maschine veranlassen, die im Folgenden beschriebenen Operationen auszuführen. In dem für Maschinen zugänglichen Medium kann auch Programmcode eingebettet sein. Der Programmcode kann maschinenlesbaren Code zum Ausführen der im Folgenden beschriebenen Operationen enthalten. Der Begriff „Daten“ meint hier jede Art von Informationen, die für maschinen-lesbare Zwecke codiert sind. Somit können dazu Programmcode, Daten, Dateien usw. gehören.
  • Die gesamte oder ein Teil einer Ausführungsform der Erfindung kann durch Hardware, Software oder Firmware oder Kombinationen daraus implementiert sein. Das Hardware-, Software- oder Firmware-Element kann mehrere Module aufweisen, die miteinander verbunden sind. Ein Hardware-Modul ist mit einem anderen Modul durch mechanische, elektrische, optische, elektromagnetische oder sonstige physische Verbindungen verbunden. Ein Software-Modul ist mit einem anderen Modul durch eine Funktion, ein Procedere, ein Verfahren, ein Unterprogramm, einen Subroutinenaufruf, einen Sprung, eine Verknüpfung, einen Parameter, eine Variable, eine Argumentweitergabe, eine Funktionsrückgabe usw. verbunden. Ein Software-Modul ist mit einem anderen Modul verbunden, um Variablen, Parameter, Argumente, Zeiger usw. zu empfangen und/oder um Ergebnisse, aktualisierte Variablen, Zeiger usw. zu erzeugen oder weiterzugeben. Ein Firmware-Modul ist mit einem anderen Modul durch eine beliebige Kombination aus den oben genannten Hardware- und Softwareverbindungsverfahren verbunden. Ein Hardware-, Software- oder Firmware-Modul kann mit einem beliebigen der anderen Hardware-, Software- oder Firmware-Module verbunden sein. Ein Modul kann auch ein Software-Treiber oder eine Schnittstelle sein, um mit dem Betriebssystem, das auf der Plattform arbeitet, zu interagieren. Ein Modul kann auch ein Hardware-Treiber sein, um Daten zu und von einem Hardware-Gerät zu konfigurieren, einzurichten, zu initialisieren, zu senden und zu empfangen. Eine Vorrichtung kann eine beliebige Kombination aus Hardware-, Software- und Firmware-Modulen enthalten.
  • Eine Ausführungsform der Erfindung kann als ein Prozeß beschrieben werden, der in der Regel als ein Flußdiagramm, ein Flußschaubild, ein Strukturschaubild oder ein Blockschaubild dargestellt ist. Obgleich ein Flußdiagramm die Operationen als einen sequentiellen Prozeß beschreiben kann, können viele der Operationen parallel oder gleichzeitig ausgeführt werden. Außerdem kann die Reihenfolge der Operationen umgeordnet werden. Ein Prozeß wird beendet, wenn seine Operationen vollständig ausgeführt sind. Ein Prozeß kann einem Verfahren, einem Programm, einem Procedere, einem Herstellungs- oder Fertigungsverfahren usw. entsprechen.
  • In einer standardmäßigen Computerplattform fungieren die E/A-Teilsystemkomponenten als Teil eines einzelnen Bereichs und werden durch die Betriebssystemsoftware verwaltet. Eine Ausführungsform der Erfindung erbringt die Hardware-Unterstützung, die benötigt wird, um E/A-Geräte in einer Computerplattform mehreren Bereichen zuzuordnen.
  • Ein Bereich ist abstrakt als eine isolierte Umgebung in der Plattform definiert, der eine Teilmenge des physischen Host-Speichers zugeordnet ist. Der physische Host-Speicher ist in dem Systemspeicher 140 enthalten. E/A-Geräte, die direkt auf den physischen Speicher zugreifen dürfen, der einem Bereich zugeordnet ist, werden als die zugeordneten Geräte des Bereichs bezeichnet. Die Isolationseigenschaft eines Bereichs erreicht man durch Sperren des Zugangs zu seinem physischen Speicher von Ressourcen aus, die ihm nicht zugeordnet sind. Mehrere isolierte Bereiche werden unterstützt, indem gewährleistet wird, daß alle E/A-Geräte irgendeinem Bereich zugeordnet sind (möglicherweise einem standardmäßig vorgegebenen Bereich), und indem der Zugriff von jedem zugeordneten Gerät aus auf lediglich den physischen Speicher beschränkt wird, der seinem Bereich zugeordnet ist.
  • Jeder Bereich hat eine Sicht auf den physischen Speicher oder einen physischen Adreßraum, der sich von der Sicht des Systems auf den physischen Speicher unterschieden kann. Adressen, die von den Ressourcen eines Bereichs zum Zugreifen auf seinen physischen Adreßraum verwendet werden, werden als ihre physischen Gastadressen (PGA) bezeichnet. Die physische Hostadresse (PHA) bezieht sich auf die physische Adresse des Systems, die zum Zugreifen auf einen Speicher verwendet wird. Ein Bereich wird als „verschoben“ betrachtet, wenn seine PGA in eine neue PHA übersetzt wird, um auf seinen zugeordneten physischen Systemsspeicher zuzugreifen. Ein Bereich wird als „nicht-verschoben“ bezeichnet, wenn sein physischer Gastadreßraum derselbe wie der physische Hostadreßraum des Systems ist oder eine Teilmenge des physischen Hostadreßraums des Systems ist. Die logische Trennung von PGA und PHA bildet die Grundlage für die Durchsetzung des Speicherschutzes. Es bedarf einer Übersetzung der physischen Adresse und eines Schutzmechanismus', der physische Gastadressen validieren kann, die durch zugeordnete Geräte eines Bereichs erzeugt wurden, und sie in gültige physische Hostadressen übersetzen kann. Der SDZ-Neuabbildungsschaltkreis 135 bietet diese Hardware-Unterstützung.
  • Zum Zuordnen von E/A-Geräten zu Bereichen werden eine Übersetzung und ein Schutz der physischen Adresse für SDZ-Anforderungen von allen E/A-Geräten in der Plattform angewendet. Aus Gründen der Einfachheit wird die Funktionalität der physischen Adreßübersetzung für SDZ-Anforderungen von E/A-Geräten als SDZ-Neuabbildung bezeichnet.
  • 2 ist ein Schaubild, das eine Eingabe/Ausgabe (E/A)-Gerätezuordnung gemäß einer Ausführungsform der Erfindung veranschaulicht Die E/A-Gerätezuordnung ist eine Abbildung eines E/A-Gerätes auf einen Bereich im Systemspeicher 140. Die Abbildung wird durch den SDZ-Neuabbildungsschaltkreis 135 unterstützt. Als ein Beispiel wird das Gerät A 210 in den Bereich 1 240 im Systemspeicher 140 abgebildet. Der Bereich 1 kann einen Treiber 242 für das Gerät A 210 haben. Es können auch mehrere Treiber verwendet werden.
  • Der SDZ-Neuabbildungsschaltkreis 135 enthält einen Registersatz 220, eine SDZ-Neuabbildungsstruktur 222 und einen Logikschaltkreis 224. Der Registersatz 220 enthält eine Anzahl von Registern, die Steuerungs- oder Statusinformationen bereitstellen, die von der SDZ-Neuabbildungsstruktur 222, dem Logikschaltkreis 224 und den Programmen oder Treibern für die E/A-Geräte verwendet werden. Die SDZ-Neuabbildungsstruktur 222 stellt die grundlegende Struktur, den grundlegenden Speicher oder die grundlegenden Tabellen bereit, die bei der Neuabbildung oder Adreßübersetzung der physischen Gastadresse in die physische Hostadresse in einem entsprechenden Bereich verwendet wird. Der Logikschaltkreis 224 enthält einen Schaltungsaufbau, der die Neuabbildungs- oder Adreßübersetzungsoperationen und andere Schnittstellenfunktionen ausführt. Der SDZ-Neuabbildungsschaltkreis 135 kann unterschiedliche Implementierungen haben, um unterschiedliche Konfigurationen zu unterstützen und um unterschiedliche Fähigkeiten für die Neuabbildungs- oder Adreßübersetzungsoperationen bereitzustellen.
  • Die E/A-Gerätezuordnung und/oder -verwaltung unter Verwendung des SDZ-Neuabbildungsschaltkreises 135 ermöglicht eine Anzahl von Nutzungsmöglichkeiten oder Anwendungen. Zwei nützliche Anwendungen sind BS-Zuverlässigkeitsanwendungen und Virtualisierungsanwendungen.
  • BS-Zuverlässigkeitsanwendungen: Die Bereichsisolation hat mehrere Verwendungszwecke für Betriebssystemsoftware. Zum Beispiel kann ein BS einen Bereich definieren, der seine kritischen Code- und Datenstrukturen im Speicher enthält, und den Zugriff auf diesen Bereich von allen E/A-Geräten in dem System aus beschränken. Dadurch kann das BS eine irrtümliche oder unbeabsichtigte Beschädigung seiner Daten und seines Code durch falsche Programmierung von Geräten durch Gerätetreiber einschränken und dadurch seine Zuverlässigkeit erhöhen.
  • Bei einem anderen Verwendungszweck kann das BS Bereiche verwenden, um den SDZ von älteren 32-Bit-PCI-Geräten auf einen großen Speicher (über 4 GB) besser zu verwalten. Dies erreicht man, indem man 32-Bit-Geräte einem oder mehreren Bereichen zuordnet und den Mechanismus für die Übersetzung physischer E/A-Adressen so programmiert, daß der SDZ von diesen Geräten auf einen großen Speicher neu abgebildet wird. Ohne eine solche Unterstützung muß die Software auf ein Kopieren von Daten durch BS-Prellpuffer zurückgreifen.
  • Bei einem stärker eingebundenen Verwendungszweck kann ein BS E/A verwalten, indem mehrere Bereiche erstellt werden und den einzelnen Bereichen ein oder mehrere E/A-Geräte zugeordnet werden. Bei diesem Verwendungszweck registrieren die Gerätetreiber ausdrücklich ihre E/A-Puffer bei dem BS, und das BS weist diese E/A-Puffer bestimmten Bereichen zu, wobei Hardware zum Durchsetzen des SDZ-Bereichsschutzes verwendet wird. In diesem Modell verwendet das BS den E/A-Adreßübersetzungs- und -schutzmechanismus als eine E/A-Speicherverwaltungseinheit (E/A-SVE).
  • Virtualisierungsanwendungen: Die Virtualisierungstechnologie gestattet die Erstellung einer oder mehrerer virtueller Maschinen (VMs) in einem einzelnen System. Jede VM kann gleichzeitig arbeiten und dabei die zugrundeliegenden physischen Hardware-Ressourcen nutzen. Virtuelle Maschinen gestatten es mehreren Betriebssysteminstanzen, auf demselben Prozessor abzulaufen, was Vorteile wie zum Beispiel Systemkonsolidierung, Migration älterer Komponenten, Aktivitätspartitionierung und Sicherheit mit sich bringt.
  • Virtualisierungsarchitekturen beinhalten in der Regel zwei grundsätzliche Klassen von Software-Komponenten: (a) Virtuelle-Maschinen-Monitore (VMMs) und (b) Virtuelle Maschinen (VMs). Die VMM-Softwareschicht läuft auf der höchst-bevorrechtigten Ebene und ist in vollem Umfang für die zugrundeliegende System-Hardware zuständig. Der VMM ermöglicht es den VMs, die zugrundeliegende Hardware gemeinsam zu nutzen, und trennt dennoch die VMs voneinander.
  • Die Einschränkungen von ausschließlich auf Software basierenden Verfahren für die E/A-Virtualisierung können durch direkte Zuordnung von E/A-Geräten zu VMs unter Verwendung des SDZ-Neuabbildungsschaltkreises 135 beseitigt werden. Bei direkter Zuordnung von Geräten läuft der Treiber für ein zugeordnetes E/A-Gerät nur in der VM, der er zugeordnet ist, und kann direkt mit der Gerätehardware ohne Trapping zum VMM interagieren. Die Hardware-Unterstützung ermöglicht eine SDZ-Neuabbildung ohne eine gerätespezifische Kenntnis im VMM.
  • Bei diesem Modell beschränkt sich der VMM auf eine Steuerungsfunktion, wobei er explizit die Einrichtung und Beendigung von Gerätezuordnungen zu den VMs vornimmt. Anstatt eines Trapping zum VMM für alle Gast-E/A-Zugriffe, wie im Fall der ausschließlich auf Software basierenden Verfahren zur E/A-Virtualisierung, verlangt der VMM das Gast-E/A-Zugriffs-Trapping nur zum Schützen bestimmter Ressourcen wie zum Beispiel Gerätekonfigurationsraumzugriffe, Interruptverwaltung usw., die Einfluß auf die Systemfunktionalität haben.
  • Um die direkte Zuordnung von E/A-Geräten zu VMs zu unterstützen, verwaltet ein VMM den SDZ von E/A-Geräten. Der VMM kann sich selbst in einen Bereich abbilden und kann jede VM in einen unabhängigen Bereich abbilden. Die E/A-Geräte können Bereichen zugeordnet werden, und die Hardware zum Übersetzen der physischen Adressen, die durch den SDZ-Neuabbildungsschaltkreis 135 bereitgestellt wird, kann dafür verwendet werden, den SDZ von E/A-Geräten nur zu dem physischen Speicher zu gestatten, der seinem übergeordneten Bereich zugeordnet ist. Für VMs, die im physischen Speicher verschoben werden können (d. h. die PGA, die nicht mit der PHA identisch ist), kann der SDZ-Neuabbildungsschaltkreis 135 dafür programmiert werden, die notwendige PGA-zu-PHA-Übersetzung vorzunehmen.
  • Mit einer Hardware-Unterstützung für die E/A-Gerätezuordnung können VMM-Implementierungen eine Kombination von ausschließlich auf Software basierenden E/A-Virtualisierungsverfahren und direkter Gerätezuordnung zum Darstellen von E/A-Geräteressourcen für eine VM wählen.
  • 3 ist ein Schaubild, das eine Virtualisierung unter Verwendung von Speicherdirektzugriffs (SDZ)-Neuabbildung gemäß einer Ausführungsform der Erfindung veranschaulicht. Die Virtualisierung enthält zwei Geräte A und B 310 und 312, den SDZ-Neuabbildungsschaltkreis 135, einen VMM oder ein Host-BS 320, VM0 340 und VMn 360.
  • Die zwei Geräte A und B 310 und 312 sind zwei E/A-Geräte, die durch die zwei VMs 340 bzw. 360 unterstützt werden. Der SDZ-Neuabbildungsschaltkreis 135 bildet diese zwei Geräte direkt auf die VM 340 und 360 ohne spezifische Kenntnis des VMM oder Host-BS 320 ab.
  • Der VMM oder das Host-BS 320 bietet Unterstützung für die zugrundeliegende Hardware der Plattform oder des Systems, auf der bzw. auf dem sie arbeiten. Die VMs 340 und 360 haben ähnliche Architekturkomponenten, sind aber vollständig voneinander isoliert. Sie sind mit dem VMM oder Host-BS 320 verbunden, um auf die Systemhardware zuzugreifen. Die VM 340 enthält Anwendungen 342 und 344. Es können mehr oder weniger Anwendungen unterstützt werden. Sie hat ein Gast-BS 346 und einen Treiber 350 für das Gerät A. Der Treiber 350 für das Gerät A ist ein Treiber, der das Gerät A 310 antreibt, steuert, verbindet oder unterstützt. Gleichermaßen enthält die VM 360 Anwendungen 362 und 364. Es können mehr oder weniger Anwendungen unterstützt werden. Sie hat ein Gast-BS 366 und einen Treiber 370 für das Gerät B. Das Gast-BS 366 kann das gleiche sein wie das Gast-BS 346 in der VM 340 oder kann ein anderes sein. Der Treiber 370 für das Gerät B ist ein Treiber, der das Gerät B 312 antreibt, steuert, verbindet oder unterstützt.
  • Bei dem ausschließlich auf Software basierenden Verfahren ohne den SDZ-Neuabbildungsschaltkreis 135 würden sich die Treiber 350 und 370 der Geräte A und B in dem VMM oder Host-BS 320 befinden. Die Funktionalität dieser zwei Treiber ist darum durch die Funktionalität begrenzt, die in dem VMM emuliert wird. Ohne SDZ-Neuabbildungsunterstützung muß die VMM Emulations- oder Proxy-Treiber bereitstellen, und das Gast-BS verwendet Gerätetreiber, die für das virtuelle Gerät spezifisch sind, das der VMM exponieren will. Es könnte ein Gerät sein, das zu dem echten Plattformgerät in keiner Beziehung steht, oder ein Gerät, das das gleiche ist wie das echte Plattformgerät. Im letzten Fall ist der VMM der Proxy für das echte Gerät. Außerdem kann die Leistung begrenzt werden, weil die Gast-E/A-Operationen durch den VMM oder das Host-BS 320 erfaßt und durch den VMM als Proxy übersetzt oder emuliert werden, bevor sie der zugrundeliegenden Hardware des physischen Gerätes präsentiert werden. Und weil schließlich die Treiber 350 und 370 der Geräte A und B ganz oder teilweise als Teil der bevorrechtigten VMM-Software arbeiten, kann die Zuverlässigkeit der Plattform insgesamt beeinträchtigt werden, besonders wenn diese Treiber Fehler erzeugen können, die den VMM oder das Host-BS 320 zum Absturz bringen. Dank dem SDZ-Neuabbildungsschaltkreis 135 können die Treiber 350 und 370 der Geräte A und B direkt mit den jeweiligen E/A-Geräten 310 und 312 interagieren und darum alle oben genannten Einschränkungen vermeiden.
  • Die SDZ-Neuabbildungsarchitektur, die durch den SDZ-Neuabbildungsschaltkreis 135 bereitgestellt wird, ermöglicht die Zuordnung von E/A-Geräten zu einer beliebigen Anzahl von Bereichen. Jeder Bereich hat einen physischen Adreßraum, der ein anderer sein kann als der physische Adreßraum des Systems. Die SDZ-Neuabbildung besorgt die Umwandlung der physischen Gastadresse (PGA) in SDZ-Anforderungen von einem E/A-Gerät in die entsprechende physische Hostadresse (PHA), die seinem Bereich zugeordnet ist.
  • Um dies zu unterstützen, kann die Plattform eine oder mehrere Hardware-Einheiten zur Übersetzung der physischen E/A-Adressen unterstützen. Jede Übersetzungshardware-Einheit unterstützt die Neuabbildung der E/A-Transaktionen, die ihrem Hardware-Umfeld entstammen. Zum Beispiel kann eine Desktop-Chipsatz-Implementierung eine einzelne SDZ-Neuabbildungshardware-Einheit exponieren, die alle E/A-Transaktionen in der Speichersteuerhub (SSH)-Komponente übersetzt. Eine Serverplattform mit einer oder mehreren Kernchipsatzkomponenten kann unabhängige Übersetzungshardware-Einheiten in jeder Komponente unterstützen, wobei jede SDZ-Anforderungen übersetzt, die ihrer E/A-Hierarchie entstammen. Die Architektur unterstützt Konfigurationen, wo diese Hardware-Einheiten je nach der Software-Programmierung dieselben Übersetzungsdatenstrukturen im Systemspeicher gemeinsam nutzen können oder unabhängige Strukturen verwenden können.
  • Der Chipsatz-SDZ-Neuabbildungsschaltkreis 135 behandelt die Adresse in einer SDZ-Anforderung als eine physische Gastadresse (PGA). Der SDZ-Neuabbildungsschaltkreis 135 kann die Adreßübersetzungsfunktion auf die ankommende Adresse anwenden, um sie in eine physische Hostadresse (PHA) vor einer weiteren Hardware-Verarbeitung umzuwandeln, wie zum Beispiel das Ausspähen von Prozessor-Caches oder das Weiterleiten an den Speicher-Controller.
  • In einem Virtualisierungskontext hängt die Adreßübersetzungsfunktion, die durch den SDZ-Neuabbildungsschaltkreis 135 implementiert wird, von der Verwaltung des physischen Speichers, die durch den VMM unterstützt wird, ab. Bei Anwendungen zum Beispiel, wo die Software die Zuordnung von physischem Host-Speicher als aneinandergrenzende Regionen vornimmt, kann die SDZ-Übersetzung zum Umwandeln von PGA in PHA eine einfache Versatzaddition sein. Bei Anwendungen, wo der VMM physischen Speicher auf Seitenauflösungsniveau verwaltet, kann der SDZ-Neuabbildungsschaltkreis 135 eine im Speicher befindliche Adreßübersetzungsdatenstruktur verwenden.
  • 4 ist ein Schaubild, das eine E/A-Adreßübersetzung gemäß einer Ausführungsform der Erfindung veranschaulicht. Die E/A-Adreßübersetzung enthält zwei E/A-Geräte 1 und 2 410 und 412, den SDZ-Neuabbildungsschaltkreis 135, einen physischen Speicher 420 und eine Gastsicht 440.
  • Die E/A-Geräte 1 und 2 410 und 412 sind zwei separaten Bereichen zugeordnet. Sie führen E/A-Anforderungen oder SDZ-Anforderungen an Adressen SDZ_ADR aus. Der SDZ-Neuabbildungsschaltkreis 135 bildet diese zwei Geräte auf entsprechende Bereiche ab, die in dem physischen Speicher 420 zugeordnet sind. Der physische Speicher 420 ordnet die Bereiche 1 422 und 424 und die Bereiche 2 426 und 428 zu. Es können mehr oder weniger zugeordnete Speichersektionen für diese Geräte zugeordnet werden. Die Bereiche 1 422 und 424 entsprechen dem Gerät 1 410, und die Bereiche 2 424 und 428 entsprechen dem Gerät 1 412. In dem in 4 veranschaulichten Beispiel wird das Gerät 1 410 in den Bereich 1 422 abgebildet, und das Gerät 2 412 wird in den Bereich 2 428 abgebildet oder dem Bereich 2 428 zugeordnet.
  • Die Gastsicht 440 ist eine logische Sicht von den Gast-E/A-Geräten aus. Sie enthält die Bereiche 1 442 und 2 444. Der Bereich 1 442 entspricht den zwei Bereichen 1 422 und 424 in dem physischen Speicher 420. Der Bereich 2 444 entspricht den zwei Bereichen 2 426 und 428. Aus der Gastsicht 440 entspricht nur ein einziger Bereich einem einzigen E/A-Gerät. Die SDZ_ADR-Adresse von dem Gerät 1 410 wird in die SDZ_ADR1 abgebildet, die sich in dem Adreßraum von 0 bis L des Bereichs 1 442 befindet. Gleichermaßen wird die SDZ_ADR-Adresse von dem Gerät 2 412 in die SDZ_ADR2 abgebildet, die sich in dem Adreßraum von 0 bis K des Bereichs 2 444 befindet.
  • Die Software, die für die Erstellung und Verwaltung der Bereiche verantwortlich ist, ordnet den physischen Speicher 420 für beide Bereiche zu und richtet die PGA-zu-PHA-Adreßübersetzungsfunktion in dem SDZ-Neuabbildungsschaltkreis 135 ein. Der SDZ-Neuabbildungsschaltkreis 135 übersetzt die PGA, die durch die Geräte 410 und 412 erzeugt wurde, in die entsprechenden HPAs.
  • 5 ist ein Schaubild, das eine SDZ-Neuabbildungsstruktur 222 gemäß einer Ausführungsform der Erfindung veranschaulicht. Die SDZ-Neuabbildungsstruktur 222 empfängt einen Quellenidentifikator 510 und enthält eine Wurzeltabelle 520, eine Anzahl von Kontexttabellen 5300 bis 530U und eine Anzahl von Adreßübersetzungsstrukturen 5400 bis 540V. Die Neuabbildungsstruktur 222 empfängt den Quellenidentifikator 510 und eine physische Gastadresse von dem E/A-Gerät und übersetzt das physische Gastgerät in ein physisches Hostgerät in einem zugeordneten Bereich. Die Übersetzung kann unter Verwendung von Übersetzungstabellen ausgeführt werden, die hierarchisch angeordnet sind. Der Übersetzungsmechanismus beginnt bei der Wurzeltabelle 520 und durchquert oder durchläuft die Kontexttabellen 5300 bis 530U und die Adreßübersetzungsstrukturen 5400 bis 540V.
  • Die Anfordereridentität der E/A-Transaktionen, die an dem SDZ-Neuabbildungsschaltkreis 135 ankommen, bestimmt das Ursprungsgerät und den Bereich, dem das Ursprungs-E/A-Gerät zugeordnet ist. Der Quellenidentifikator 510 ist das Attribut, das den Urheber einer E/A-Transaktion identifiziert. Der SDZ-Neuabbildungsschaltkreis 135 kann den Quellenidentifikator 510 einer Transaktion auf implementierungsspezifische Weise bestimmen. Zum Beispiel können einige E/A-Busprotokolle die Identität des Ursprungsgerätes als Teil jeder E/A-Transaktion übermitteln. In anderen Fällen, wie zum Beispiel bei chipsatzintegrierten Geräten, kann der Quellenidentifikator 510 auf der Grundlage der internen Implementierung des Chipsatzes impliziert werden.
  • Bei PCI Express-Geräten wird der Quellenidentifikator 510 auf den Anfordereridentifikator abgebildet, der als Teil des E/A-Transaktionsheaders übermittelt wird. Der Anfordereridentifikator eines Gerätes besteht aus seinen PCI-Bus-, Geräte- und Funktionsnummern, die durch die Konfigurationssoftware zugeordnet wurden, und identifiziert eindeutig die Hardware-Funktion, welche die E/A-Anforderung initiiert. In einer Ausführungsform enthält der Quellenidentifikator 510 eine Funktionsnummer 512, eine Gerätenummer 514 und eine Busnummer 516. In dem in 5 veranschaulichten Beispiel ist die Funktionsnummer 512 K Bit breit, die Gerätenummer 514 ist L Bit breit, und die Busnummer 516 ist M Bit breit. Die Busnummer 516 identifiziert den Bus, auf dem die E/A-Transaktion erzeugt wird. Die Gerätenummer 514 identifiziert das konkrete Gerät auf dem identifizierten Bus. Die Funktionsnummer 512 identifiziert die konkrete Funktion, die von dem E/A-Gerät angefordert wird. Der Quellenidentifikator 510 dient dem Indexieren oder Nachschlagen in der Wurzeltabelle 520 und den Kontexttabellen 5300 bis 530U. In dem in 5 veranschaulichten Beispiel gibt es zwei E/A-Transaktionen, die den Bus 0 und den Bus m verwenden.
  • Bei PCI Express-Geräten speichert die Wurzeltabelle 520 Wurzeleinträge 5250 bis 525M-1, die durch den Quellenidentifikator 510 oder die Busnummer 516 des Quellenidentifikators 510 indexiert werden. Die Wurzeleinträge fungieren als die Struktur der höchsten Ebene, um Geräte auf einem bestimmten Bus in ihren jeweiligen übergeordneten Bereich abzubilden. Der Wurzeleintrag 0 5250 entspricht der E/A-Transaktion, die den Bus 0 verwendet. Der Wurzeleintrag m 520m entspricht der E/A-Transaktion, die den Bus m verwendet. Die Wurzeleinträge 0 5250 und 525m zeigen auf die Kontexttabelle 5300 bzw. 530m. In einer Ausführungsform bilden diese Einträge die Basisadresse für die entsprechende Kontexttabelle.
  • Die Kontexttabellen 5300 bis 530U speichern Kontexteinträge 535K's, auf die durch die Wurzeleinträge verwiesen wird. Die Kontexteinträge 535K's bilden die E/A-Geräte auf ihren entsprechenden Bereich oder ihre entsprechenden Bereiche ab. Die Gerätenummer 514 und die Funktionsnummer 512 dienen dem Erhalten des Kontexteintrages, welcher der E/A-Transaktion entspricht. In einer Ausführungsform bilden sie einen Index, um auf die Kontexttabelle zu zeigen oder zu verweisen, auf die durch den entsprechenden Wurzeleintrag verwiesen wird. Es gibt 2M × 2L × 2K oder 2M+L+K Kontexteinträge. In einer Ausführungsform ist K = 3, L = 5 und M = 8, was zu insgesamt 64 K Einträgen führt, die als 2M (28 = 256) Kontexteintragtabellen organisiert sind. In dem in 4 gezeigten Beispiel sind die zwei Kontexteinträge für die zwei E/A-Transaktionen der Kontexteintrag 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-Neuabbildungsschaltkreis 135 eine Anzahl von Registern, die in dem Registersatz 220, der in 2 gezeigt ist, enthalten sind. Der Registersatz 220 wird in dem physischen Hostadreßraum durch ein Basisadreß (BAR)-Register lokalisiert. Das Übersetzungshardware-BAR-Register wird in einer implementierungsabhängigen Weise mit einer Software in Kontakt gebracht. Dies kann als ein PCI-Konfigurationsraumregister in einem der chipsatzintegrierten Geräte exponiert sein, wie zum Beispiel dem Speicher-Controllergerät. In einer Ausführungsform stellt das BAR-Register mindestens ein 4 K-Adreßfenster bereit. Ein Register in dem Registersatz 220 kann eine Anzahl Felder haben. Ein Feld kann aufgedrückt oder negiert werden. Wenn ein Feld aus nur einem einzigen Bit besteht, so bedeutet „Aufdrücken“, daß das Bit in einen definierten logischen Zustand versetzt wird (zum Beispiel WAHR, eine logische Eins), und „Negierung“ impliziert, daß das Bit in einen definierten logischen Zustand zurückgesetzt wird, der dem Zustand des Aufdrückens komplementär ist (zum Beispiel FALSCH, eine logische Null). Im Folgenden wird ein aufgedrückter oder ein negierter Zustand willkürlich verwendet. Ein Feld kann aufgedrückt werden, um einen ersten Zustand anzuzeigen, und kann negiert werden, um einen zweiten Zustand anzuzeigen, oder umgekehrt.
  • Ein Feld in einem Register kann durch den SDZ-Neuabbildungsschaltkreis 135 und/oder durch die Software programmiert, initialisiert oder konfiguriert werden. Es kann auch einem spezialisierten Hardwareschaltkreis oder einer Funktionalität entsprechen, die durch eine Datenstruktur, eine Funktion, eine Routine oder ein Verfahren implementiert wird. Im Folgenden werden Felder zu Registern gruppiert. Die Gruppierung, Formatierung oder Organisation dieser Felder oder Bits in den folgenden Registern dient veranschaulichenden Zwecken. Es kommen auch andere Möglichkeiten der Gruppierung, Formatierung oder Organisation dieser Felder in Betracht. Ein Feld kann auch in mehreren Registern dupliziert werden. Ein Register kann mehr oder weniger Felder haben, als hier beschrieben ist. Außerdem können Register auf vielfältige Weise implementiert sein, einschließlich als Datenlager- oder als Datenspeicherelemente.
  • 6 ist ein Schaubild, das einen Registersatz, der gemeinsame Register enthält, gemäß einer Ausführungsform der Erfindung veranschaulicht. Die gemeinsamen Register enthalten ein Berichtsregister vom Speichertyp (STYP_REG) 610, ein Globalbefehlsregister (GBEF_REG) 620, ein Wurzeleintragstabellenadreßregister (WTADR_REG) 630 und ein Standardvorgabekontextregister (STA_REG) 640.
  • Das STYP_REG 610 berichtet Speichertypen von Übersetzungsdatenstrukturen. Es enthält ein Fehlerprotokollspeichertyp (FST)-Feld 612, ein Seitentabellenspeichertyp (SST)-Feld 614, ein Kontexteintragtabellenspeichertyp (KST)-Feld 616 und ein Wurzeleintragtabellenspeichertyp (WST)-Feld 618.
  • Das FST-Feld 612 zeigt an, ob die Fehlerprotokollregion im Cache abgelegt werden kann. Wird es negiert, so zeigt es an, daß die Fehlerprotokollregion möglicherweise nicht im Cache abgelegt ist. Wird es aufgedrückt, so zeigt es an, daß sich die Fehlerprotokollregion möglicherweise in einer im Cache ablegbaren Region befindet. Das SST-Feld 614 zeigt an, ob die Seitentabellen im Cache ablegbar sind. Wird es negiert, so zeigt es an, daß sich die Seitentabellen möglicherweise in einer nicht im Cache abgelegten Speicherregion befinden. Wird es aufgedrückt, so zeigt es an, daß sich die Seitentabellen möglicherweise in einer im Cache ablegbaren Region befinden. Das KST-Feld 616 zeigt an, ob die Kontexttabellen im Cache ablegbar sind. Wird es negiert, so zeigt es an, daß sich die Kontexttabellen möglicherweise in einer nicht im Cache abgelegten Speicherregion befinden. Wird es aufgedrückt, so zeigt es an, daß sich die Kontexttabellen möglicherweise in einer im Cache ablegbaren Region befinden. Das WST-Feld 618 zeigt an, ob die Wurzeltabelle im Cache abgelegt werden kann. Wird es negiert, so zeigt es an, daß sich die Wurzeltabelle möglicherweise in einer nicht im Cache abgelegten Speicherregion befindet. Wird es aufgedrückt, so zeigt es an, daß sich die Wurzeltabelle möglicherweise in einer im Cache ablegbaren Region befindet.
  • Das GBEF_REG 620 steuert das Übersetzungsverhalten. Es enthält ein Übersetzungshardwareaktivierungs (HA)-Feld 622 und ein Schreibpufferentleerungs (SPE)-Feld 624.
  • Das HA-Feld 622 ist ein softwareprogrammierbares Steuerungsfeld, um die Übersetzungshardware zu aktivieren oder zu deaktivieren. Wird es negiert, so zeigt es an, die Übersetzungshardware zu deaktivieren. Wird es aufgedrückt, so zeigt es an, die Übersetzungshardware zu aktivieren. Wird dieses Feld aktualisiert, so muß die Software den Lesevorgang wiederholen und dieses Feld überprüfen, um den Aktivierungs-/Deaktivierungsstatus zu bestätigen.
  • Das SPE-Feld 624 wird zum Entleeren der chipsatzinternen Schreibpuffer verwendet. Dies geschieht, um zu gewährleisten, daß keine Aktualisierungen an Kontexttabellen oder Seitentabellen in internen Schreibablagepuffern gespeichert bleiben. Die Software drückt dieses Feld auf, um den Schreibpufferentleerungsbefehl auszugeben. Der Logikschaltkreis 224 negiert es, um eine Anzeige der Vollendung der Schreibpufferentleerung zu geben. Die Software muß den Lesevorgang wiederholen und das zu negierende Feld überprüfen, um die Vollendung der Entleerung zu bestätigen.
  • Das WTADR_REG 630 richtet die Basisadresse der im Speicher befindlichen Wurzeltabelle ein. Die Software muß dieses Register programmieren, indem sie in das niedrigere Doppelwort (DWORT) zuletzt schreibt. Es enthält ein Wurzeltabellenbasisadreß (WTA)-Feld 632 und ein Kontexteintragaktivierungs (KEA)-Feld 634. Das WTA-Feld 632 zeigt auf die Basis der seitenausgerichteten Wurzeltabelle von normaler Größe im Systemspeicher. Eine normale Größe kann jede beliebige zweckmäßige zuvor festgelegte Größe sein. In einer Ausführungsform ist die normale Größe 4 KB. Der SDZ-Neuabbildungsschaltkreis 135 braucht nur die geringstsignifikanten N Bits zu implementieren, wobei N die (Hostadressenbreite - 12) ist. Der Rest des Feldes kann als Nurleseabschnitt behandelt werden. Das KEA-Feld 634 ist ein Steuerfeld, um die Verwendung der Kontexteinträge zu aktivieren oder zu deaktivieren. Dies beeinflußt nicht die Verwendung des standardmäßig vorgegebenen Kontexts. Wird es negiert, so zeigt es die Deaktivierung der Verwendung des Kontexteintrages an. SDZ-Anforderungen werden auf der Grundlage der Programmierung des Standardvorgaberegisters verarbeitet. Wird es aufgedrückt, so zeigt es die Aktivierung der Verwendung des Kontexteintrages zum Verarbeiten von SDZ-Anforderungen an. Die Wurzel- und Kontexttabellen werden im Speicher eingerichtet, und die Basis der Wurzeltabelle wird in den oberen Bits (zum Beispiel Bits 12 bis 63) bereitgestellt.
  • Das STA_REG 640 spezifiziert den standardmäßig vorgegebenen Kontext. Jeder Kontexteintrag in den Kontexttabellen spezifiziert, wie SDZ-Anforderungen von einem bestimmten Gerät zu verwalten sind. Der standardmäßig vorgegebene Kontext stellt einen standardmäßig vorgegebenen Bereich dar, dem Geräte, die durch den SDZ-Neuabbildungsschaltkreis 135 verwaltet werden, anfänglich zugeordnet werden, bis die Software das Gerät auf Bereichsabbildungstabellen programmiert und das Nachschlagen dieser Tabellen ermöglicht. Zum Beispiel wird in dem Fall, daß ein E/A-Gerät bei laufendem System an das System angeschlossen wird und ein Kontext für dieses Gerät nicht durch Software vorprogrammiert ist, das Gerät dem standardmäßig vorgegebenen Bereich zugeordnet, bis die Software es ausdrücklich einem anderen Bereich zuordnet. Der standardmäßig vorgegebene Kontext wird durch das STA_REG 640 programmiert.
  • Die Übersetzungshardware überprüft den Quellenidentifikator in den SDZ-Anforderungen folgendermaßen. Wenn die Kontexteinträge aktiviert sind (zum Beispiel durch ein Globalbefehlsregister), so wird der Quellenidentifikator in der ankommenden SDZ-Anforderung verwendet, um ihren entsprechenden Wurzeleintrag und über den Wurzeleintrag den Kontexteintrag nachzuschlagen. In diesem Fall wird der SDZ entsprechend der Programmierung der Wurzel- und Kontexteinträge verarbeitet. Wenn die Kontexteinträge nicht aktiviert sind, so wird die SDZ-Anforderung entsprechend dem STA_REG 640 verarbeitet.
  • Ähnlich wie bei anderen Kontexteinträgen kann der standardmäßig vorgegebene Kontext dafür programmiert sein, bestimmte Typen von Übersetzungsfunktionen, wie zum Beispiel Sperren, Durchlassen, Adresse gefiltert, Adresse unter Verwendung einer Übersetzungsstruktur übersetzt usw., zu erzwingen.
  • Das STA_REG 640 enthält ein Vorhanden (V)-Feld 642, ein Ein-/Mehrebenentabellen (M)-Feld 650, ein Adreßraumwurzel (ARW)-Feld 654, ein Gastadressenbreiten (GAB)-Feld 656, ein Fehlerverarbeitungsfeld 660 und ein Bereichsidentifikator (BID)-Feld 662. In der Regel sind das V-Feld 642 und das M-Feld 650 Ein-Bit-Indikatoren.
  • Das V-Feld 642 ist bei der Verarbeitung von Transaktionen immer zu überprüfen. Wird es negiert, so zeigt es an, daß alle Transaktionen durch diesen Kontexteintrag gesperrt sind. Wird es aufgedrückt, so zeigt es Prozeßtransaktionen durch diesen Kontexteintrag auf der Grundlage der Programmierung anderer Felder an.
  • Das M-Feld 650 dient zum Anzeigen, ob eine Mehrebenentabellenübersetzung verwendet wird.
  • Wird es aufgedrückt, so zeigt es an, daß eine Einebenen-Seitentabelle, die für diese Kontexteintragsbits verwendet wird, zum Indexieren der Einträge in der Seitentabelle zu verwenden ist. Wird es negiert, so zeigt es an, daß eine Mehrebenen-Seitentabelle, die für diesen Kontexteintrag verwendet wird, zum Nachschlagen der Einträge in der Wurzeltabelle zu verwenden ist.
  • Das ARW-Feld 654 ist eine größenausgerichtete physische Hostadresse der Adreßraumwurzel. Bei Verwendung eines angrenzenden Adreßraums enthält dieses Feld die Basisadresse des physischen Adreßraums des Bereichs. Bei Verwendung von Seitentabellen (eine Ebene oder mehrere Ebenen) zeigt dieses Feld auf die Basis der Wurzeltabelle.
  • Das GAB-Feld 656 hat nur für Kontexteinträge Gültigkeit, die Ein- oder Mehrebenen-Seitentabellen spezifizieren. Bei Verwendung von Mehrebenen-Seitentabellen zeigt dieses Feld die justierte Gastadressenbreite (JGAB) an, die von dem SDZ-Neuabbildungsschaltkreis 135 für das Durchlaufen der Seitentabellen zu verwenden ist. Der in diesem Feld angegebene Wert ist ein JGAB-Wert, der von dem SDZ-Neuabbildungsschaltkreis 135 unterstützt wird und in einem Leistungsregister berichtet wird. Das Leistungsregister ist ein Register, das die Leistungsmerkmale anzeigt, die durch den SDZ-Neuabbildungsschaltkreis 135 unterstützt werden. Bei Verwendung von Einebenen-Seitentabellen zeigt dieses Feld die Gastadressenbreite des Bereichs an. Der in diesem Feld angegebene Wert liegt zwischen der kleinsten GAB für Einebenen-Seitentabellen und dem MGAB-Wert, der durch den SDZ-Neuabbildungsschaltkreis 135 in dem Leistungsregister berichtet wird.
  • Wenn der SDZ-Neuabbildungsschaltkreis 135 in diesem Feld einen Wert detektiert, der nicht durch die zugrundeliegende Implementierung unterstützt wird, so werden alle SDZ-Anforderungen durch diesen Kontexteintrag gesperrt, und es resultiert ein Übersetzungsfehler. Jede SDZ-Anforderung, die durch diesen Kontexteintrag verarbeitet wird und auf eine physische Gastadresse über 2GAB-1 zugreift (wobei GAB der Wert in diesem Feld ist), wird gesperrt und resultiert in einem Übersetzungsfehler.
  • Das FV-Feld 660 aktiviert oder deaktiviert die Aufzeichnung von Fehlern durch SDZ-Anforderungen, die durch diesen Kontexteintrag verarbeitet werden.
  • Das BID-Feld 662 zeigt den Bereichsidentifikator für den standardmäßig vorgegebenen Bereich an.
  • Adreßfilterung:
  • Die Adreßübersetzung auf der Basis der Mehrebenen-Seitentabellenstruktur bietet die meiste Flexibilität, indem sie es der Software gestattet, den Speicher mit einer normalen (zum Beispiel 4 KB großen) Seitenauflösung zu verwalten. Jedoch ist mit der Mehrebenen-Seitentabellenstruktur die meiste Adreßübersetzungslatenz verbunden, weil sie es erfordert, daß die Hardware die Seitentabellen durchläuft. Auch wenn Hardware-Implementierungen Übersetzungscachespeicher verwenden können, um den Übersetzungsverwaltungsaufwand zu verringern, sind die Seitedurchlauflatenzen, die bei Mißlingen des Zugriffs auf den E/A-Adreßkonvertierungsvorgriffspuffer (AKVP) entstehen, möglicherweise für bestimmte Arten von E/A-Verkehr ungeeignet. Zum Beispiel dürfen bei SDZ-Anforderungen von PCI Express-Geräten, wie zum Beispiel Hochgenauigkeitsaudio, die isochrone Kanäle verwenden, und bestimmten chipsatzintegrierten Geräten, wie zum Beispiel integrierter Grafik, keine 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 Registersatz 220 berichtet. Hardware-Implementierungen, wie zum Beispiel jene, die keine isochronen Kanäle unterstützen, die zur Adreßübersetzung von SDZ-Anforderungen von allen Geräten befähigt sind, brauchen keine Adreßfilterung zu unterstützen. Wenn eine Plattformkonfiguration mehrere SDZ-Neuabbildungshardware-Einheiten erfordert, wie zum Beispiel eine je Chipsatzkomponente oder PCI Express-Wurzelport, und wenn Adreßfilterungsunterstützung von einer der Einheiten benötigt wird, dann wird sie von allen Hardware-Einheiten unterstützt.
  • Für eine Adreßfilterung werden die Seiten in dem Speicher, die dem nicht-verschobenen Bereich zugeordnet sind, durch eine im Speicher befindliche Tabelle angezeigt, die als die Filterbitmaptabelle bezeichnet wird, wie in 7 gezeigt. Die Architektur unterstützt nur einen einzigen nicht-verschobenen Bereich und somit einen einzigen Filterbitmaptabellenzeiger je berichteter SDZ-Neuabbildungshardware. Der Ort und die Größe der Filterbitmaptabelle werden durch die Adreßfilterbasis- und -größenregister programmiert, wie in 7 gezeigt. Die Größe der Bitmaptabelle wird als (4 KB × 2S) berechnet, wobei S der Wert ist, der in das Adreßfiltergrößenregister programmiert wird. Jedes Bit in der Tabelle stellt eine 4 K große Hostseite dar, wobei das erste Bit den ersten 4 K großen physischen Hostadreßraum darstellt. Die kleinste Größe der Filterbitmaptabelle ist 4 KB, welche die erste 128 MB-Region des Hostspeichers abbildet.
  • Geräte, deren SDZ-Anforderungen nur durch Hardware einer Adreßfilterung unterzogen werden können, werden durch die Plattform-Firmware an die Software berichtet. Jegliches Programmieren der Kontexteinträge für diese Geräte muß gewährleisten, daß es auf den Adreßfilter und nicht auf den Block eingerichtet ist, damit die SDZ-Anforderungen durchgeleitet oder einer Adreßübersetzung unterzogen werden können.
  • Die E/A-Geräte, deren SDZ-Anforderungen ebenfalls einer Adreßübersetzung oder Adreßfilterung unterzogen werden können, können dem nicht-verschobenen Bereich zugeordnet werden, indem die entsprechenden Kontexteinträge dafür programmiert werden, eine Adreßfilterung anzuzeigen. Gleichermaßen könnte der nicht-verschobene Bereich mit dem standardmäßig vorgegebenen Bereich identisch gemacht werden, indem das Standardvorgabekontextregister so programmiert wird, daß eine Adreßfilterung angezeigt wird.
  • Wenn ein Kontexteintrag dafür programmiert wird, eine Adreßfilterung anzuzeigen, so wird der Rest der Kontexteintragsfelder (außer den Gültig-, Vorhanden- und Durchgangs-Feldern) durch den SDZ-Neuabbildungsschaltkreis 135 ignoriert.
  • Die SDZ-Anforderungen, die durch die Kontexteinträge verarbeitet werden, die eine Adreßfilterung spezifizieren, werden folgendermaßen durch den SDZ-Neuabbildungsschaltkreis 135 gehandhabt:
    1. 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. 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. 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. 4. Wenn alle der oben genannten Prüfungen bestanden werden, so schlägt der SDZ-Neuabbildungsschaltkreis 135 das Bitfeld nach, das der Seite entspricht, auf die die SDZ-Anforderung am Bitversatz [PGA>>12] in der Filterbitmaptabelle zugreift. Wenn das Bit aufgehoben ist, so wird die SDZ-Anforderung wie normal verarbeitet. Wenn das Bit gesetzt ist, so wird die SDZ-Anforderung gesperrt.
  • 7 ist ein Schaubild, das den Registersatz 220, der Adreßfilterungsregister enthält, gemäß einer Ausführungsform der Erfindung veranschaulicht. Der Registersatz 220 enthält ein Filtergrößenregister (FGRÖSSE_REG) 710, ein Filterbasisregister (FBASIS_REG) 720, ein Filtersteuerungsregister (FSTEU_REG) 730 und ein Filterfehlerregister (FFEHL_REG) 740.
  • Das FGRÖSSE_REG 710 zeigt die Größe der Adreßfilterungsbitmaptabelle an. Wenn der SDZ-Neuabbildungsschaltkreis 135 keine Adreßfilterung unterstützt, so wird dieses Register als reserviert behandelt (zum Beispiel werden Schreibvorgänge ignoriert, und Lesevorgänge melden 0 zurück). Es enthält ein Filtertabellengrößen (FTG)-Feld 712 und ein Filterbitmapspeichertyp (BST)-Feld 715. Das BST-Feld 715 zeigt an, ob die Bitmapregion im Cache abgelegt werden kann. Wird es negiert, so zeigt es an, daß die Bitmapregion nicht im Cache abgelegt ist. Schreibvorgänge in dieses Feld werden ignoriert. Wird es aufgedrückt, so zeigt es an, daß sich die Bitmapregion möglicherweise in einer im Cache ablegbaren Region befindet. Das FTG-Feld 712 zeigt die Größe der Adreßfiltertabelle an. Die Größe wird anhand der folgenden Formel berechnet: Tabellengröße = 4 K × 2FGRÖSSE_REG Bytes. Zum Beispiel 0000h: 4 KB-Tabelle unterstützt 128 MB Speicher, 0001h: 8 KB-Tabelle unterstützt 256 MB Hauptspeicher, 0005h: 128 KB-Tabelle unterstützt 4 GB Hauptspeicher usw.
  • Das FBASIS_REG 720 speichert den Zeiger zur Basisadresse der Adreßfilterungsbitmaptabelle. Wenn der SDZ-Neuabbildungsschaltkreis 135 keine Adreßfilterung unterstützt, so wird dieses Register als reserviert behandelt (zum Beispiel werden Schreibvorgänge ignoriert, und Lesevorgänge melden 0 zurück). Es enthält ein Filtertabellenbasis (FTB)-Feld 725. Das FTB-Feld 725 ist ein Zeiger zur Basisadresse der Adreßfiltertabelle in dem Speicher. Die Tabelle ist größenausgerichtet. Die kleinste Tabellengröße ist 128 K, die 4 GB Adressierbarkeit unterstützt.
  • Das FSTEU_REG 730 steuert die Cache-Speicherung der Adreßfilterbitmaptabelle. Wenn der SDZ-Neuabbildungsschaltkreis 135 keine Adreßfilterung unterstützt, so wird dieses Register als reserviert behandelt (zum Beispiel werden Schreibvorgänge ignoriert, und Lesevorgänge melden 0 zurück). Es enthält ein Filterhardwareaktivierungs (FHA)-Feld 732, ein Schreibpufferentleerungs (SPE)-Feld 734, ein Filtercacheungültigmachungs (FCU)-Feld 736 und ein Filtertabellenschutz (FTS)-Feld 738. Das FHA-Feld 732 ist ein softwareprogrammierbares Steuerfeld zum Aktivieren oder Deaktivieren der Adreßfilterungshardware. Wird es negiert, so zeigt es die Deaktivierung der Adreßfilterungshardware an. Jede SDZ-Anforderung, die ansonsten einer Adreßfilterung unterzogen wird, wird als Durchlauf verarbeitet. Wird es aufgedrückt, so zeigt es die Aktivierung der Adreßfilterungshardware an. Die Filterbasis- und -größenregister werden vor der Aktivierung der Adreßfilterungshardware durch dieses Feld programmiert. Das SPE-Feld 734 wird zum Entleeren der chipsatzinternen Schreibpuffer verwendet. Dies geschieht, um zu gewährleisten, daß keine Filterbitmaptabellenaktualisierungen in internen Schreibablagepuffern gespeichert sind. Die Software drückt dieses Feld auf, um den Schreibpufferentleerungsbefehl auszugeben. Der SDZ-Neuabbildungsschaltkreis 135 negiert es, um eine Anzeige der Vollendung der Schreibpufferentleerung zu geben. Die Software muß den Lesevorgang wiederholen und das zu negierende Feld überprüfen, um die Vollendung der Entleerung zu bestätigen. Das FCU-Feld 736 macht den Adreßfilterbitmapcache ungültig. Die Software drückt dieses Feld auf, um die Ungültigmachung des Adreßfiltercaches anzufordern. Der SDZ-Neuabbildungsschaltkreis 135 negiert es, um die Vollendung der Ungültigmachung anzuzeigen. Die Software muß den Lesevorgang wiederholen und dieses zu negierende Feld überprüfen, um die Vollendung der Ungültigmachung zu bestätigen. Das FTS-Feld 738 zeigt das Schützen der Adreßfilterbitmapregion an. Wenn es durch Software aufgedrückt wird, so beginnt die Hardware, die Adreßfilterbitmapregion vor Speicherdirektzugriffen zu schützen. Die Software muß dieses Feld lesen und überprüfen, daß es aufgedrückt wird, um zu bestätigen, daß die Adreßfilterbitmapregion geschützt ist. Wenn es durch Software negiert wird, so beendet der SDZ-Neuabbildungsschaltkreis 135 das Schützen der Adreßfilterbitmapregion vor Speicherdirektzugriffen.
  • Das FFEHL_REG berichtet Fehler, die durch Adreßfilterungshardware detektiert werden. Wenn der SDZ-Neuabbildungsschaltkreis 135 keine Adreßfilterung unterstützt, so wird dieses Register als reserviert behandelt (zum Beispiel werden Schreibvorgänge ignoriert, und Lesevorgänge melden 0 zurück). Es enthält ein Fehleradreß (FA)-Feld 742, ein Typ (T)-Feld 744 und ein Gültig (G)-Feld 746. Das FA-Feld 742 ist eine Rahmenadresse des Ortes, auf den die fehlerhafte SDZ-Anforderung zugreift. Das T-Feld 744 zeigt den Speicherzugriffstyp einer fehlerhaften SDZ-Anforderung an. Wird es negiert, so zeigt es einen SDZ-Schreibvorgang an. Wird es aufgedrückt, so zeigt es eine SDZ-Leseanforderung an. Das G-Feld 746 zeigt an, ob die Seitenrahmenadresse der fehlerhaften SDZ-Anforderung zwischengespeichert ist. Wenn es aufgedrückt wird, so ist die Seitenrahmenadresse der fehlerhaften SDZ-Anforderung im Fehleradreßfeld zwischengespeichert, und es werden keine weiteren Adreßfilterungsfehleradressen mehr zwischengespeichert. Die Software muß dieses Feld ausdrücklich durch Schreibvorgänge negieren, um eine Adreßfilterungsfehleraufzeichnung erneut zu aktivieren.
  • 8A ist ein Schaubild, das den Wurzeleintrag 520 gemäß einer Ausführungsform der Erfindung veranschaulicht. Der Wurzeleintrag 520 enthält ein Vorhanden (V)-Feld 810 und ein Kontexteintragstabellenzeiger (KEZ)-Feld 815.
  • Das V-Feld 810 zeigt an, ob der Wurzeleintrag vorhanden ist. Wird es negiert, so zeigt es an, daß der Wurzeleintrag nicht vorhanden ist und nicht zu verwenden ist. Der SDZ-Neuabbildungsschaltkreis 135 behandelt die SDZ-Anforderung, die durch diesen Wurzeleintrag verarbeitet wird, als Fehler. Wird es aufgedrückt, so zeigt es an, daß der Wurzeleintrag vorhanden ist und zum Verarbeiten der Transaktion verwendet werden kann.
  • Das KEZ-Feld 815 ist ein Zeiger zu der Kontexttabelle für diesen Bus. Die Kontexttabelle ist 4 KB groß und seitenausgerichtet.
  • 8B ist ein Schaubild, das den Kontexteintrag 535 gemäß einer Ausführungsform der Erfindung veranschaulicht. Der Kontexteintrag 535 enthält ein Vorhanden (V)-Feld 822, ein Mehrebenen (M)-Feld 830, ein Adreßraumwurzel (ARW)-Feld 834, ein Gastadressenbreiten (GAB)-Feld 836, ein Fehlerverarbeitungs (FV)-Feld 840 und ein Bereichsidentifikator (BID)-Feld 842. Der Kontexteintrag 535 hat Felder, die dem Standardvorgaberegister STA_REG 640 ähneln, das in 6 gezeigt ist. In der Regel sind das V-Feld 822 und das M-Feld 830 Ein-Bit-Indikatoren.
  • Das V-Feld 822, das M-Feld 830, das ARW-Feld 834 und das GAB-Feld 836 ähneln dem V-Feld 642, dem M-Feld 650, dem ARW-Feld 654 bzw. dem GAB-Feld 656 in dem Standardvorgaberegister (STA_REG 640), das in 6 gezeigt ist.
  • Das BID-Feld 842 ist ein Identifikator für den Bereich, zu dem dieser Kontexteintrag gehört. Die Software muß gewährleisten, daß alle Geräte dieselben Seitentabellenstrukturen verwenden und somit identisch übersetzte Adressen haben, die den gleichen Bereichsidentifikator in ihren Kontexteinträgen haben. Der SDZ-Neuabbildungsschaltkreis 135 kann den Bereichsidentifikator zum Markieren seiner im Cache abgelegten Einträge verwenden, wenn Cache-Unterstützung verwendet wird.
  • 8C ist ein Schaubild, das einen Seitentabelleneintrag (STE) 565 gemäß einer Ausführungsform der Erfindung veranschaulicht. Der STE 565 enthält ein Lesbar (L)-Feld 850, ein Beschreibbar (B)-Feld 852, ein Kohärent (K)-Feld 854, ein Superseiten (SS)-Feld 856 und ein Adreß (ADR)-Feld 860. Es ist zu beachten, daß auch mehr oder weniger dieser Felder definiert werden können.
  • Das L-Feld 850 zeigt an, ob eine Seite für einen SDZ lesbar ist. Wird es negiert, so zeigt es an, daß die Seite nicht für SDZ-Leseanforderungen zugänglich ist. SDZ-Leseanforderungen, die durch diesen Seitentabelleneintrag verarbeitet werden, werden gesperrt. Wenn Fehlerberichte aktiviert sind, so wird ein Übersetzungsfehler erzeugt. Wird es aufgedrückt, so zeigt es an, daß die Seite für SDZ-Leseanforderungen zugänglich ist.
  • Das B-Feld 852 zeigt an, ob die Seite für SDZ beschreibbar ist. Wird es negiert, so zeigt es an, daß die Seite nicht für SDZ-Schreibvorgangsanforderungen zugänglich ist. SDZ-Schreibvorgangsanforderungen, die durch diesen Seitentabelleneintrag verarbeitet werden, werden gesperrt. Wenn Fehlerberichte aktiviert sind, so wird ein Übersetzungsfehler erzeugt. Wird es aufgedrückt, so zeigt es an, daß die Seite für SDZ-Schreibvorgangsanforderungen zugänglich ist.
  • Das K-Feld 854 spezifiziert, ob der Zugriff auf die übersetzte physische Hostadresse kohärent ist oder nicht. Wird es negiert, so zeigt es an, daß der Speicherdirektzugriff auf die übersetzte physische Hostadresse dem Kohärenzattribut folgt, das in der E/A-Transaktion spezifiziert ist. Zum Beispiel greifen PCI X- oder PCI Express-Anforderungen mit gesetztem „No-snoop“-Attribut auf die übersetzte physische Hostadresse ohne vorheriges Ausspähen zu. Wird es aufgedrückt, so zeigt es an, daß der Speicherdirektzugriff auf die übersetzte physische Hostadresse als kohärent verarbeitet wird. Die Software muß gewährleisten, daß dieses Feld als reserviert (0) behandelt wird: in allen Seitentabelleneinträgen, wenn der SDZ-Neuabbildungsschaltkreis 135 nicht das aufgedrückte Setzen des K-Feldes (wie im Leistungsregister berichtet) unterstützt, und in Nicht-Blattseitentabelleneinträgen, wenn das SS-Feld negiert wird.
  • Das SS-Feld 856 zeigt dem SDZ-Neuabbildungsschaltkreis 135 an, daß dies ein Blattseitentabelleneintrag und ein vollständiger Seitendurchlauf ist. Wird es negiert, so zeigt es ein Fortsetzen des Seitendurchlaufs und die Verwendung der Tabelle der nächsten Ebene an. Wird es aufgedrückt, so zeigt es das Anhalten des Tabellendurchlaufs und das Bilden der physischen Hostadresse unter Verwendung der unbenutzten niederen Bits in der physischen Gastadresse für den Seitendurchlauf zusammen mit den oberen Bits der Seitenbasisadresse, die in dem ADR-Feld 860 enthalten ist, an. Der SDZ-Neuabbildungsschaltkreis 135 beurteilt das SS-Feld 856 nur in den Seitentabelleneinträgen, die den Superseitengrößen entsprechen, die er unterstützt, wie in dem Leistungsregister berichtet. Die Software muß dieses Feld als reserviert behandeln (zum Beispiel 0) in: (1) 4 KB-Blattseitentabelleneinträgen in Mehrebenen-Seitentabellen, (2) Nicht-Blattseitentabelleneinträgen in Mehrebenen-Seitentabellen, die Superseitengrößen entsprechende, die nicht durch den SDZ-Neuabbildungsschaltkreis 135 unterstützt werden, und (3) Seitentabelleneinträgen in Einebenen-Seitentabellen.
  • Das ADR-Feld 860 enthält die physische Hostadresse des Seitenframes, wenn dies ein Blattknoten ist. Andernfalls enthält es den Zeiger zu der Seitentabelle der nächsten Ebene. Dieses Feld ist größenausgerichtet.
  • Es ist zu beachten, daß weitere Felder definiert werden können, um die Attribute des Adreßübersetzungsmechanismus' weiter zu kennzeichnen. Zum Beispiel können die folgenden Attribute definiert werden: ein Basis/Begrenzungs-Attribut zum Aktivieren einer Basis- oder begrenzten Übersetzung, ein Stride-Attribut zum Anzeigen der Größe einer Seitentabelle der ersten Ebene in der Mehrebenentabellenübersetzung und ein Durchgangs-Attribut zum Anzeigen, ob die E/A-Transaktion ohne Übersetzung passieren darf.
  • Adreßübersetzungsmechanismen:
  • Um eine variierende Auflösung der Unterstützung für die Verwaltung des physischen Speichers durch Software zu unterstützen, definiert die SDZ-Neuabbildungsarchitektur drei Arten von Adreßübersetzungsstrukturen. Eine Chipsatz-Implementierung kann eine oder mehrere dieser Übersetzungsstrukturen unterstützen und die unterstützten Arten über ihr Leistungsregister berichten. Diese Mechanismen bieten unterschiedliche Kosten, Komplexität und Leistungskompromisse. Für Implementierungen, die mehrere Übersetzungsstrukturen unterstützen, kann jeder Kontexteintrag so programmiert sein, daß er verschiedene Übersetzungsstrukturarten verwendet.
  • Es sind die folgenden Adreßübersetzungsstrukturen definiert: (1) eine Mehrebenen-Seitentabellenstruktur zum Ermöglichen einer Zuordnung von Regionen in Seitenauflösung über mehrere Ebenen aus Seitentabellen in Seitengröße, die sich jeweils in Regionen in Seitengröße befinden; (2) eine Einebenen-Seitentabellenstruktur zum Ermöglichen einer Zuordnung von Regionen in Seitenauflösung über eine einzelne angrenzende Seitentabelle und (3) eine Basis- oder begrenzte Übersetzungsstruktur zum Ermöglichen einer Zuordnung einer angrenzenden Region zu Bereichen. Jede der oben genannten Übersetzungsstrukturen kann als standardmäßige Vorgabe oder als Option gewählt werden.
  • 9A ist ein Schaubild, das die Adreßübersetzungsstruktur 540, die mit Mehrebenen-Tabellen arbeitet, gemäß einer Ausführungsform der Erfindung veranschaulicht. Die Adreßübersetzungsstruktur 540 enthält den Kontexteintrag 535, eine justierte physische Gastadresse (JPGA) 910, eine Erstebenen-Seitentabelle 920, eine Zwischentabelle 930, eine Blattknotentabelle 940 und eine Seite 950. Die Mehrebenen-Tabellen enthalten eine Anzahl Übersetzungstabellen, die hierarchisch angeordnet sind.
  • Das ARW-Feld in dem Kontexteintrag 535 stellt die Basisadresse für die Erstebenen-Seitentabelle 920 bereit. Die JPGA 910 enthält ein Versatzfeld 912, ein Blattknotenseitentabellenfeld 914, ein Zwischenseitentabellenfeld 916 und ein Erstebenen-Seitentabellenfeld 918. Es ist anzumerken, daß die Anzahl der Ebenen in den Mehrebenen-Seitentabellen eine beliebige geeignete Anzahl sein kann, und zwar je nach der Breite der JPGA 910, dem Speicherraum, der Speicherverwaltungsvorschrift, der Wortlänge und sonstigen Implementierungsfaktoren.
  • Das Erstebenen-Seitentabellenfeld 918 wird mit der Erstebenen-Basisadresse kombiniert, die durch die ARW bereitgestellt wird, um die Erstebenen-Seitentabelle 920 zu indexieren. In einer Ausführungsform hat jeder Eintrag 8 Bytes. Das Erstebenen-Seitentabellenfeld 918 wird durch einen Schieber 922 um drei Bits verschoben und dann durch einen Addierer 924 zu der Erstebenen-Basisadresse addiert, um einen Erstebenenindex für die Erstebenen-Seitentabelle 920 bereitzustellen. Der indexierte Erstebenen-Seitentabelleneintrag stellt die Zwischenbasisadresse für die Zwischenebenen-Seitentabelle 930 bereit.
  • Das Zwischenseitentabellenfeld 916 wird mit der Zwischenbasisadresse kombiniert, um die Zwischenebenen-Seitentabelle 930 zu indexieren. Da jeder Eintrag 8 Bytes groß ist, wird das Zwischenseitentabellenfeld 918 durch einen Schieber 932 um drei Bits verschoben und dann durch einen Addierer 934 zu der Zwischenebenen-Basisadresse addiert, um einen Zwischenebenenindex für die Zwischenebenen-Seitentabelle 930 bereitzustellen. Der indexierte Zwischenebenen-Seitentabelleneintrag stellt die Blattknotenbasisadresse für die Blattknotenseitentabelle 940 bereit.
  • Das Blattknotenseitentabellenfeld 914 wird mit der Blattknotenbasisadresse kombiniert, um die Blattknotenseitentabelle 940 zu indexieren. Da jeder Eintrag 8 Bytes groß ist, wird das Blattknotenseitentabellenfeld 914 durch einen Schieber 942 um drei Bits verschoben und dann durch einen Addierer 944 zu der Blattknotenbasisadresse addiert, um einen Blattknotenindex für die Blattknotenseitentabelle 940 bereitzustellen. Der indexierte Blattknotenseitentabelleneintrag stellt die Host-Basisadresse für die Seite 950 bereit.
  • Der Versatz 912 wird dann mit der Host-Basisadresse kombiniert, um die physische Hostadresse in der Seite 950 zu erzeugen.
  • Die Mehrebenen-Seitentabellen gestatten es der Software, den physischen Host-Speicher in Seitenauflösung (zum Beispiel 4 K) zu verwalten und eine hierarchische Struktur mit Seitenverzeichnissen und Seitentabellen einzurichten. Der Logikschaltkreis 224 implementiert die Seitendurchlauflogik und durchquert diese Strukturen unter Verwendung der PGA, die in der SDZ-Transaktion vorhanden ist. Die maximale Anzahl an Seitentabellen-Ebenen, die durchquert werden müssen, um eine PGA in einer SDZ-Anforderung zu übersetzen, richtet sich nach der Gastadressenbreite des entsprechenden Kontexteintrages. Die Software kann die maximale Gastadressenbreite, die durch eine bestimmte Hardware-Implementierung des SDZ-Neuabbildungsschaltkreises 135 unterstützt wird, über ein Leistungsregister abfragen.
  • Nehmen wir an, daß S die normale Seitengröße ist. Nehmen wir an, daß Q die Anzahl der Bytes je Eintrag ist. Nehmen wir an, daß p und q so sind, daß 2p = S und 2q = Q. Die justierte Gastadressenbreite (JGAB) für einen Bereich ist ihre wertberichtigte Gastadressenbreite (GAB), dergestalt, daß (JGAB-p) ein Vielfaches von (p-q) ist. Die JGAB wird folgendermaßen bestimmt:
L = (GAB - p) MOD(p-q);

 wenn (L = = 0) {
             JGAB = GAB;
 } sonst {
 } JGAB = GAB + (p-q) - L;
  • Nehmen wir zum Beispiel an, daß S = 4 K und Q = 8, dann ist p = 12 und q = 3. Ein Bereich, dem 2 GB Speicher zugeordnet sind, hat eine GAB von 31. Die JGAB wird berechnet als: L = ( 31 12 )  mod  9 = 1
    Figure DE112005002298B4_0001
    JGAB = 31 + 9 1 = 39
    Figure DE112005002298B4_0002
  • 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. 1. Die PGA/Längen-Kombination, die in der SDZ-Anforderung spezifiziert ist, wird dementsprechend verwendet, ob der SDZ-Neuabbildungsschaltkreis 135 Seitengrenzenüberschreitung unterstützt oder nicht. Wenn der SDZ-Neuabbildungsschaltkreis 135 SDZ-Anforderungen unterstützt, die Seitegrenzen überschreiten, und die PGA/Lä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-Neuabbildungsschaltkreis 135 keine SDZ-Anforderungen unterstützt, die Seitengrenzen überschreiten, und die PGA/Längen-Kombination die SDZ-Anforderung anzeigt, die eine Seitengrenze überschreitet, so resultiert ein Adreßübersetzungsfehler.
    2. 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. 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. 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. 5. Der SDZ-Neuabbildungsschaltkreis 135 führt die normale Chipsatzadreßdecodierung der durch Schritt 4 erzeugten PHA aus und verarbeitet die SDZ-Anforderung entweder als einen Zugriff auf den Speicher oder als eine Peer-zu-Peer-Anforderung.
    6. 6. Wenn die übersetzte PHA decodiert wird, um an den Speicher geschickt zu werden, so wird auf die PHA entsprechend der Unterstützung für das Einstellen des Kohärenz (K)-Attributs zugegriffen. Wenn der SDZ-Neuabbildungsschaltkreis 135 nur die negierte Einstellung des Kohärenz (K)-Attributs in den Seitentabelleneinträgen unterstützt, so wird auf den Speicher entsprechend der Kohärenz zugegriffen, die in der SDZ-Anforderung spezifiziert ist (oder aus der SDZ-Anforderung hergeleitet wird). Wenn zum Beispiel die PCI Express-Anforderung die SDZ-Anforderung als nicht-ausgespäht spezifiziert hat, so wird auf den Speicher ohne Ausspähen zugegriffen. Wenn der SDZ-Neuabbildungsschaltkreis 135 die aufgedrückten und negierten Einstellungen des Kohärenz (K)-Attributs in den Seitentabelleneinträgen unterstützt, so wird auf den Speicher entsprechend der Programmierung des Kohärenz-Attributs in dem Blattseitentabelleneintrag zugegriffen, der zur Adreßübersetzung der SDZ-Anforderung verwendet wird.
  • 9B ist ein Schaubild, das die Adreßübersetzungsstruktur 540, die eine Einzeltabelle verwendet, gemäß einer Ausführungsform der Erfindung veranschaulicht. Die Adreßübersetzungsstruktur 540 enthält den Kontexteintrag 535, eine physische Gastadresse (PGA) 960, eine Einzelseitentabelle 970 und eine Seite 980.
  • Die Einebenen-Seitentabelle bietet der Software einen alternativen Mechanismus zum Erzeugen von Seitenzuordnungen mit einer Auflösung von 4 K ohne lange Seitedurchläufe, aber um den Preis der Reservierung einer großen aneinandergrenzenden Seitentabellenstruktur. Die Größe (zum Beispiel 64 Bits) und das Format eines Seitentabelleneintrags für die Einebenen-Seitentabelle sind ähnlich den Seitentabelleneinträgen für die Mehrebenenstruktur, die in vorangegangenen Abschnitten beschrieben wurde, außer daß das Stride-Feld als reserviert behandelt wird.
  • Die Größe der Seitentabelle hängt von der Größe des Adreßraums des Gastes ab. Für eine Gast-Adressierbarkeit von 1 GB (GAB = 30) zum Beispiel muß die Software eine 2 MB-Seitentabelle mit 218 Seitentabelleneinträgen zuordnen. Der E/A-Adreßkonvertierungsvorgriffspuffer (AKVP) ist auch auf SDZ-Adreßübersetzungen anwendbar, die eine Einebenen-Seitentabelle verwenden.
  • Die SDZ-Anforderungen, die durch Kontexteinträge verarbeitet werden, die Einebenen-Adreßübersetzungen spezifizieren, werden durch den SDZ-Neuabbildungsschaltkreis 135 folgendermaßen gehandhabt:
    1. 1. Die PGA/Längen-Kombination, die in der SDZ-Anforderung spezifiziert ist, wird dementsprechend verwendet, ob der SDZ-Neuabbildungsschaltkreis 135 Seitengrenzüberschreitung unterstützt oder nicht. Wenn der SDZ-Neuabbildungsschaltkreis 135 SDZ-Anforderungen unterstützt, die Seitengrenzen überschreiten, und die PGA/Lä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-Neuabbildungsschaltkreis 135 keine SDZ-Anforderungen unterstützt, die Seitengrenzen überschreiten, und die PGA/Längen-Kombination die SDZ-Anforderung anzeigt, welche die Seitengrenze überschreitet, so resultiert ein Adreßübersetzungsfehler.
    2. 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. 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. 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. 5. Der SDZ-Neuabbildungsschaltkreis 135 führt die normale Chipsatzadressendecodierung der durch Schritt 4 erzeugten PHA aus und verarbeitet die SDZ-Anforderung entweder als einen Zugriff auf den Speicher oder als eine Peer-zu-Peer-Anforderung.
    6. 6. Wenn die übersetzte PHA decodiert wird, um an den Speicher gesendet zu werden, so wird auf die PHA entsprechend der Unterstützung für die Einstellung des Kohärenz (K)-Attributs zugegriffen. Wenn der SDZ-Neuabbildungsschaltkreis 135 nur die negierte Einstellung des Kohärenz (K)-Attributs in den Seitentabelleneinträgen unterstützt, so wird auf den Speicher entsprechend der Kohärenz zugegriffen, die in der SDZ-Anforderung spezifiziert ist (oder aus der SDZ-Anforderung hergeleitet wird). Wenn zum Beispiel die PCI Express-Anforderung die SDZ-Anforderung als nicht-ausgespäht spezifiziert hat, so wird auf den Speicher ohne Ausspähen zugegriffen. Wenn der SDZ-Neuabbildungsschaltkreis 135 die aufgedrückten und negierten Einstellungen des Kohärenz (K)-Attributs in den Seitentabelleneinträgen unterstützt, so wird auf den Speicher entsprechend der Programmierung des Kohärenz-Attributs in dem Seitentabelleneintrag zugegriffen, der zur Adreßübersetzung der SDZ-Anforderung verwendet wird.
  • Das ARW-Feld des Kontexteintrages 535 stellt die Basisadresse bereit, um die Einzelseitentabelle 970 zu lokalisieren. Die PGA 960 enthält ein Versatzfeld 962 und ein Seitentabellenfeld 964. Die Einzelseitentabelle 970 enthält Seitentabelleneinträge, um auf die Seite der physischen Hostadresse zu zeigen, die der PGA 960 entspricht.
  • Um den entsprechenden Seitentabelleneintrag nachzuschlagen, wird das Seitentabellenfeld 964 mit der Basisadresse kombiniert, die durch das ARW-Feld bereitgestellt wird. Da jeder Eintrag 8 Bytes belegt, wird das Seitentabellenfeld 964 durch einen Schieber 972 um 3 Bits verschoben und dann durch einen Addierer 974 zu der ARW addiert, um den Index für die Einzelseitentabelle 970 bereitzustellen.
  • Der Seitentabelleneintrag, der dem Index entspricht, stellt dann die Basisadresse für die Seite 980 bereit. Das Versatzfeld 962 wird durch einen Addierer 984 zu dieser Basisadresse addiert, um die resultierende PHA in der Seite 980 bereitzustellen.
  • 9C ist ein Schaubild, das die Adreßübersetzungsstruktur 540, die die Basis- oder begrenzte Übersetzung verwendet, gemäß einer Ausführungsform der Erfindung veranschaulicht. Die Adreßübersetzungsstruktur 540 enthält den Kontexteintrag 535, eine physische Gastadresse (PGA) 960 und einen physischen Speicherraum 990.
  • Die Basisgrenzen bilden die einfachste Form der Adreßübersetzung, wobei die PGA in der SDZ-Anforderung als ein Versatz von der Basisadresse für diesen Bereich verwendet wird. Die Basisadresse des Bereichs ist eine physische Hostadresse und wird über das ARW-Feld 834 des Kontexteintrags 535 programmiert (8B). Die Gastadressenbreite (GAB) in dem Kontexteintrag zeigt das Versatzlimit an. Jede SDZ-Anforderung mit einer Gastadresse über dem Limit, das durch die GAB angezeigt wird, wird durch den SDZ-Neuabbildungsschaltkreis 135 gesperrt.
  • In einer Ausführungsform hat die physische Hostadresse 64 Bit. Für gültige Gastadressen (zum Beispiel Adressen innerhalb der GAB-Adressierbarkeit) führt der SDZ-Neuabbildungsschaltkreis 135 die folgenden Operationen aus, um die physische Hostadresse zu erzeugen: Physische Hostadresse  [ 63:GAB ] = Adreßraumwurzel  [ 63:GAB ]
    Figure DE112005002298B4_0003
    Physische Hostadresse  [ GAB 1:0 ] = Physische Gastadresse  [ GAB 1:0 ]
    Figure DE112005002298B4_0004
  • Leistungssteigerung:
  • Der oben beschriebene Adreßübersetzungsmechanismus kann optimiert werden, um die Leistung und/oder Flexibilität zu verbessern. Eine Optimierungstechnik besteht darin, über unterschiedliche Größen von Übersetzungstabellen zu verfügen, die in der Mehrebenen-Seitentabellenstruktur verwendet werden, einschließlich kleiner und großer Tabellen. Dies kann durch Verwenden eines Stride (S)-Feldes in dem Seitentabelleneintrag oder dem Standardvorgabekontextregister 640 bewerkstelligt werden. Das S-Feld kann eine beliebige Anzahl von Tabellengrößen und jede geeignete Tabellengröße spezifizieren. In einer Ausführungsform werden zwei Tabellengrößen verwendet: 4 KB und 2 MB. Eine 4 KB-Tabelle entspricht einem Stride von 9 Bit, und eine 2 MB-Tabelle entspricht einem Stride von 18 Bit. Es können kleine und große Strides während eines Durchlaufs oder einer Durchquerung der Seitentabellen ohne eine bestimmte Reihenfolge vermischt werden. Sie werden durch das Stride-Feld in dem vorangehenden Seitentabelleneintrag definiert.
  • Eine andere Optimierungstechnik besteht darin, eine Anzahl von Seitengrößen zu definieren, die durch den Chipsatz-Hardware unterstützt werden. Ein verallgemeinertes Superseiten-Feld ist in einem Seitentabelleneintrag definiert, um eine Vielzahl von Superseitengrößen jenseits von 2 MB zu ermöglichen. Das verallgemeinerte Superseiten-Feld eignet sich für Nutzungsmodelle, bei denen Speicher frühzeitig während des Boot-Prozesses zu VMs zugeordnet wird. Unmittelbare Leistungsgewinne können durch ein deutliches Verringern der Anzahl der Übersetzungsschritte erreicht werden. Außerdem kann der Speicherverwaltungsaufwand, der mit den Seitentabellen verbunden ist, deutlich verringert werden.
  • Das Superseiten-Feld in den Seitentabelleneinträgen ermöglicht größere Seitenzuordnungen. Wenn ein Seitentabelleneintrag mit aufgedrücktem Superseiten-Feld während eines Seitentabellendurchlaufs angetroffen wird, so wird die übersetzte Adresse sofort durch Kombinieren der Seiten-Basisadresse in dem Seitentabelleneintrag mit den ungenutzten Bits der physischen Gastadresse gebildet. Auf der Grundlage der Seitentabellenhierarchie-Ebene, auf der der Seitentabelleneintrag mit Superseiten Feld aufgedrückt wird, definiert die Architektur Superseiten mit den Größen 2 MB, 1 GB, 512 GB, 256 TB und 128 PB. Wie dem Fachmann bekannt ist, können auch alle anderen Superseitengrößen verwendet werden.
  • Die Leistung des Chipsatzes, der den SDZ-Neuabbildungsschaltkreis 135 enthält, der diese Leistungsverbesserungen und sonstigen Neuabbildungsoperationen unterstützt, kann in einem Leistungsregister berichtet werden. Die Software kann dieses Leistungsregister lesen, um die verschiedenen Leistungsmerkmale zu finden, die durch den Chipsatz oder den SDZ-Neuabbildungsschaltkreis 135 unterstützt werden.
  • 10 ist ein Schaubild, das den Registersatz 220, der ein Leistungsregister enthält, gemäß einer Ausführungsform der Erfindung veranschaulicht. Der Registersatz 220 enthält ein Leistungsregister (LEI_REG) 1010.
  • Das LEI_REG 1010 berichtet allgemeine Leistungsmerkmale von Übersetzungshardware. Es enthält eine Anzahl von Indikatoren zum Anzeigen der Leistung, die durch den SDZ-Neuabbildungsschaltkreis 135 unterstützt wird. Zu diesen Indikatoren gehören einem Einebenen-Seitentabellenunterstützungs (EE)-Feld 1012, ein Mehrebenen-Seitentabellenunterstützungs (ME)-Feld 1014, ein Benötigte-Schreibpufferentleerung (BSPE)-Feld 1016, ein Höhere-Fehlerprotokollierungsunterstützungs (HFP)-Feld 1018, ein Kohärenzsteuerungsunterstützungs (KU)-Feld 1020, ein Unterstützte-justierte-Gastadreßbreiten (UJGAB)-Feld 1022, ein Superseitenunterstützungs (SSU)-Feld 1024 und ein Maximale-Gastadreßbreiten (MGAB)-Feld 1026.
  • Das EE-Feld 1012 zeigt an, ob eine Einebenen-Seitentabelle unterstützt wird. Wird es negiert, so wird keine Einebenen-Seitentabelle unterstützt. Wird es aufgedrückt, so wird eine Einebenen-Seitentabelle unterstützt.
  • Das ME-Feld 1014 zeigt an, ob eine Mehrebenen-Seitentabelle unterstützt wird. Wird es negiert, so wird keine Mehrebenen-Seitentabelle unterstützt. Wird es aufgedrückt, so wird eine Mehrebenen-Seitentabelle unterstützt.
  • Das BSPE-Feld 1016 zeigt die benötigte Schreibpufferentleerung an. Wird es negiert, so zeigt es an, daß keine Schreibpufferentleerung benötigt wird, um Änderungen an im Speicher befindlichen Strukturen für den SDZ-Neuabbildungsschaltkreis 135 widerzuspiegeln. Wird es aufgedrückt, so zeigt es der Software an, daß die Implementierung des SDZ-Neuabbildungsschaltkreises 135 die Entleerung von Schreibpuffern (zum Beispiel durch das Globalbefehlsregister) erfordert, um Aktualisierungen, die an im Speicher befindlichen Strukturen vorgenommen wurden, für den SDZ-Neuabbildungsschaltkreis 135 widerzuspiegeln.
  • Das HFP-Feld 1018 zeigt eine höhere Fehlerprotokollierungsunterstützung an. Wird es negiert, so zeigt es an, daß eine höhere Fehlerprotokollierung durch ein im Speicher befindliches Fehlerprotokoll nicht unterstützt wird. Nur der erste detektierte Fehler wird durch das Fehleraufzeichnungsregister aufgezeichnet. Wird es aufgedrückt, so zeigt es an, daß eine höhere Fehlerprotokollierung unterstützt wird. Die höhere Fehlerprotokollierung wird über das Fehlerprotokollregister ermöglicht.
  • Das KU-Feld 1020 zeigt eine Kohärenzsteuerungsunterstützung an. Wird es negiert, so zeigt es an, daß nur die negierte Einstellung des Kohärenz (K)-Feldes in den Seitentabelleneinträgen durch den SDZ-Neuabbildungsschaltkreis 135 unterstützt wird. Wird es aufgedrückt, so zeigt es an, daß sowohl negierte als auch aufgedrückte Einstellungen des Kohärenz (K)-Feldes in den Seitentabelleneinträgen durch den SDZ-Neuabbildungsschaltkreis 135 unterstützt werden.
  • Das UJGAB-Feld 1022 zeigt die unterstützten justierten Gastadressenbreiten an, die wiederum die Ebenen von Seitentabellendurchläufen darstellen, die durch die zugrundeliegende Implementierung des SDZ-Neuabbildungsschaltkreises 135 unterstützt wird. Dieses Feld ist nur gültig, wenn eine Mehrebenen-Seitentabellenunterstützung durch eine aufgedrückte Einstellung des ME-Feldes 1014 angezeigt wird.
  • Ein aufgedrückter Wert in einem dieser Bits zeigt an, daß die entsprechende Gastadressenbreite unterstützt wird. In einer Ausführungsform sind die Gastadressenbreiten, die verschiedenen 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.
  • 11A ist ein Schaubild, das die Adreßübersetzungsstruktur 540, die Mehrebenen-Tabellen und Stride verwendet, gemäß einer Ausführungsform der Erfindung veranschaulicht. Die Adreßübersetzungsstruktur 540 enthält den Kontexteintrag 535, eine justierte physische Gastadresse (JPGA) 910, eine Erstebenen-Seitentabelle 1120, eine Blattknotenseitentabelle 1130 und eine Seite 1140.
  • Das ARW-Feld in dem Kontexteintrag 535 stellt die Basisadresse für die Erstebenen-Seitentabelle 1120 bereit. Die JPGA 910 enthält ein Versatzfeld 912, ein Blattknotenseitentabellenfeld 914 und ein Erstebenen-Seitentabellenfeld 916.
  • Das Erstebenen-Seitentabellenfeld 916 wird mit der Erstebenen-Basisadresse kombiniert, die durch das ARW-Feld bereitgestellt wird, um die Erstebenen-Seitentabelle 1120 zu indexieren. Da jeder Eintrag 8 Bytes groß ist, wird das Erstebenen-Seitentabellenfeld 916 durch einen Schieber 1122 um drei Bits verschoben und dann durch einen Addierer 1124 zu der Erstebenen-Basisadresse addiert, um einen Erstebenenindex für die Erstebenen-Seitentabelle 1120 bereitzustellen. Der indexierte Erstebenen-Seitentabelleneintrag stellt die Blattknotenbasisadresse für die Blattknotenseitentabelle 1130 bereit. Außerdem wird das S-Feld in dem indexierten Erstebenen-Seitentabelleneintrag aufgedrückt (zum Beispiel auf Eins gesetzt), um anzuzeigen, daß der Stride für die nächste Tabelle ein große Tabelle ist (zum Beispiel 2 MB).
  • Die Blattknotenseitentabelle 1130 hat eine Größe, die durch das S-Feld in dem indexierten Erstebenen-Seitentabelleneintrag angezeigt wird. In dem in 11A gezeigten Beispiel wird das S-Feld aufgedrückt, was anzeigt, daß die Größe der Blattknotenseitentabelle 1130 groß ist (zum Beispiel 2 MB). Das Blattknotenseitentabellenfeld 914 wird mit der Blattknotenbasisadresse kombiniert, um die Blattknotenseitentabelle 1130 zu indexieren. Da jeder Eintrag 8 Bytes groß ist, wird das Blattknotenseitentabellenfeld 914 durch einen Schieber 1132 um drei Bits verschoben und dann durch einen Addierer 1134 zu der Blattknotenbasisadresse addiert, um einen Blattknotenindex in der Blattknotenseitentabelle 1130 bereitzustellen. Der indexierte Blattknotenseitentabelleneintrag stellt die Host-Basisadresse für die Seite 1140 bereit.
  • Der Versatz 912 wird dann mit der Host-Basisadresse kombiniert, um die physische Hostadresse in der Seite 1140 zu erzeugen.
  • 11B ist ein Schaubild, das eine Adreßübersetzungsstruktur, die Mehrebenen-Tabellen und Superseiten verwendet, gemäß einer Ausführungsform der Erfindung veranschaulicht. Die Adreßübersetzungsstruktur 540 enthält den Kontexteintrag 535, eine justierte physische Gastadresse (JPGA) 910, eine Erstebenen-Seitentabelle 1150, eine Blattknotenseitentabelle 1160 und eine Seite 1170.
  • Das ARW-Feld in dem Kontexteintrag 535 stellt die Basisadresse für die Erstebenen-Seitentabelle 1150 bereit. Das JPGA 910 enthält ein Versatzfeld 912, ein Blattknotenseitentabellenfeld 914 und ein Erstebenen-Seitentabellenfeld 916.
  • Das Erstebenen-Seitentabellenfeld 916 wird mit der Erstebenen-Basisadresse kombiniert, die durch das ARW-Feld bereitgestellt wird, um die Erstebenen-Seitentabelle 1150 zu indexieren. Da jeder Eintrag 8 Bytes groß ist, wird das Erstebenen-Seitentabellenfeld 916 durch einen Schieber 1152 um drei Bits verschoben und dann durch einen Addierer 1154 zu der Erstebenen-Basisadresse addiert, um einen Erstebenenindex für die Erstebenen-Seitentabelle 1150 bereitzustellen. Der indexierte Erstebenen-Seitentabelleneintrag stellt die Blattknotenbasisadresse für die Blattknotenseitentabelle 1160 bereit. Außerdem wird das S-Feld in dem indexierten Erstebenen-Seitentabelleneintrag aufgedrückt (zum Beispiel auf Null gesetzt), um anzuzeigen, daß der Stride der nächsten Tabelle eine kleine Tabelle ist (zum Beispiel 4 KB).
  • Die Blattknotenseitentabelle 1160 hat eine Größe, die durch das S-Feld in dem indexierten Erstebenen-Seitentabelleneintrag angezeigt wird. In dem in 11B gezeigten Beispiel wird das S-Feld negiert, was anzeigt, daß die Größe der Blattknotenseitentabelle 1160 klein ist (zum Beispiel 4 KB). Das Blattknotenseitentabellenfeld 914 wird mit der Blattknotenbasisadresse kombiniert, um die Blattknotenseitentabelle 1160 zu indexieren. Da jeder Eintrag 8 Bytes groß ist, wird das Blattknotenseitentabellenfeld 914 durch einen Schieber 1162 um drei Bits verschoben und dann durch einen Addierer 1164 zu der Blattknotenbasisadresse addiert, um einen Blattknotenindex für die Blattknotenseitentabelle 1160 bereitzustellen. Der indexierte Blattknotenseitentabelleneintrag stellt die Host-Basisadresse für die Seite 1170 bereit. Außerdem wird das SS-Feld des indexierten Blattknotenseitentabelleneintrages aufgedrückt, was anzeigt, daß es die Blattknotentabelle ist.
  • Die Größe der Seite 1170 wird durch die Leistung bestimmt, die durch den Chipsatz entsprechend der Angabe im Leistungsregister unterstützt wird. In dem in 11B gezeigten Beispiel zeigt das Leistungsregister an, daß eine Superseitengröße von 2 MB unterstützt wird. Der Versatz 912 wird dann durch einen Addierer 1144 mit der Host-Basisadresse kombiniert, um die physische Hostadresse in der Seite 1170 zu erzeugen.
  • Obgleich die Erfindung anhand verschiedener Ausführungsformen beschrieben wurde, ist dem Durchschnittsfachmann klar, daß die Erfindung nicht auf die beschriebenen Ausführungsformen beschränkt ist, sondern mit Modifikationen und Änderungen im Rahmen des Geistes und Geltungsbereichs der angehängten Ansprüche praktiziert werden kann. Die Beschreibung ist somit nicht als einschränkend, sondern als veranschaulichend anzusehen.
  • Claims (9)

    1. 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.
    2. 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.
    3. Vorrichtung nach Anspruch 1, weiter umfassend: ein Leistungsregister (1010) zum Speichern einer maximalen unterstützten Größe (1026) der physischen Gastadresse.
    4. 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.
    5. 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.
    6. 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.
    7. 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.
    8. Verfahren nach Anspruch 5, weiter umfassend: Speichern einer maximalen unterstützten Größe (1026) der physischen Gastadresse in ein Leistungsregister (1010) im Computersystem (100).
    9. 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.
    DE112005002298.6T 2004-09-30 2005-09-01 Leistungssteigerung einer Adreßübersetzung unter Verwendung von Übersetzungstabellen, die große Adreßräume umfassen Expired - Lifetime DE112005002298B4 (de)

    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)

    * Cited by examiner, † Cited by third party
    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)

    * Cited by examiner, † Cited by third party
    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転送が可能な制御システム

    Non-Patent Citations (1)

    * Cited by examiner, † Cited by third party
    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