DE112005002405T5 - Fehlerverarbeitung für Direktspeicherzugriffs-Adreßübersetzung - Google Patents

Fehlerverarbeitung für Direktspeicherzugriffs-Adreßübersetzung Download PDF

Info

Publication number
DE112005002405T5
DE112005002405T5 DE112005002405T DE112005002405T DE112005002405T5 DE 112005002405 T5 DE112005002405 T5 DE 112005002405T5 DE 112005002405 T DE112005002405 T DE 112005002405T DE 112005002405 T DE112005002405 T DE 112005002405T DE 112005002405 T5 DE112005002405 T5 DE 112005002405T5
Authority
DE
Germany
Prior art keywords
error
address
domain
register
page
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.)
Granted
Application number
DE112005002405T
Other languages
English (en)
Other versions
DE112005002405B4 (de
Inventor
Rajesh Portland Madukkarumukumana
Ioannis Portland Schoinas
Ku-Jei Linkou King
Balaji Folsom Vembu
Gilbert Portland Neiger
Richard Hillsboro Uhlig
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.)
Intel Corp
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 DE112005002405T5 publication Critical patent/DE112005002405T5/de
Application granted granted Critical
Publication of DE112005002405B4 publication Critical patent/DE112005002405B4/de
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0712Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a virtual computing platform, e.g. logically partitioned systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/073Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0745Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in an input/output transactions management context
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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; CALCULATING OR 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; CALCULATING OR 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/151Emulated environment, e.g. virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/651Multi-level translation tables

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Mathematical Physics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Storage Device Security (AREA)
  • Bus Control (AREA)

Abstract

Vorrichtung umfassend:
eine Registergruppe zum Speichern von globaler Steuer- oder Statusinformation zur Fehlerverarbeitung eines Fehlers, der durch eine von einer E/A-Vorrichtung angeforderte Eingabe/Ausgabe-(E/A)-Transaktion erzeugt wurde; und
eine Adressübersetzungsstruktur zum Übersetzen einer physischen Gastadresse in eine physische Hostadresse, wobei die physische Gastadresse der E/A-Transaktion entspricht und auf eine Domain abgebildet ist, und wobei die Adressübersetzungsstruktur mindestens einen Eintrag, welcher der Domain zugeordnet ist, und domainspezifische Steuerinformation für die Fehlerverarbeitung aufweist.

Description

  • ALLGEMEINER STAND DER TECHNIK
  • ERFINDUNGSGEBIET
  • Ausführungsformen der Erfindung betreffen das Gebiet von Mikroprozessoren und insbesondere die Eingabe/Ausgabe-(E/A)-Virtualisierung.
  • BESCHREIBUNG DES VERWANDTEN STANDS DER TECHNIK
  • Mit immer komplexer werdenden Mikroprozessorarchitekturen zur Unterstützung von Hochleistungsanwendungen wird die E/A-Verwaltung zu einer Herausforderung.
  • Bestehende Techniken, die sich auf das Problem der E/A-Verwaltung richten, weisen eine Reihe von Nachteilen auf. Eine Technik verwendet nur Software-E/A-Virtualisierung, um virtuelle Maschinen-(VM)-E/A zu unterstützen. Diese Technik weist eine beschränkte Funktionalität, Leistung und Robustheit auf. Die für das Gastbetriebssystem (BS) und die Anwendungen verfügbare Funktionalität wird durch die Funktionalität beschränkt, welche von den in der VM-Monitor-(VMM)-Software nachgeahmten virtuellen Vorrichtungen unterstützt wird. Die Gast-E/A-Vorgänge werden durch den VMM abgefangen und ersetzt oder nachgeahmt, bevor sie der zugrundeliegenden physischen Vorrichtungshardware zugeführt werden, was zu schlechter Leistung führt. Außerdem laufen alle oder ein Teil der Vorrichtungstreiber für die Hardwarevorrichtung als Teil der privilegierten VMM-Software, was die Gesamtrobustheit der Plattform beeinträchtigen kann. Techniken, welche spezialisierte Übersetzungsstrukturen verwenden, können nur eine spezifische Vorrichtung oder ein beschränktes Nutzungsmodell unterstützen. Allgemeine E/A-Speicherverwaltungseinheiten stellen nur Unterstützung für E/A-virtuelle Adressräume beschränkter Größe oder Komplexität bereit.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Die Ausführungsformen der Erfindung sind am besten durch Bezugnahme auf die folgende Beschreibung und beigefügten Zeichnungen verständlich, welche verwendet werden, um die Ausführungsformen der Erfindung zu veranschaulichen. In den Zeichnungen ist:
  • 1 ein Diagramm, das ein System zeigt, in dem eine Ausführungsform der Erfindung ausgeführt werden kann.
  • 2 ein Diagramm, das eine Eingabe/Ausgabe-(E/A)-Vorrichtungszuweisung gemäß einer Ausführungsform der Erfindung zeigt.
  • 3 ein Diagramm, das die Virtualisierung unter Verwendung von Direktspeicherzugriffs-(DMA)-Neuabbildung gemäß einer Ausführungsform der Erfindung zeigt.
  • 4 ein Diagramm, das die E/A-Adressübersetzung gemäß einer Ausführungsform der Erfindung zeigt.
  • 5 ein Diagramm, das eine DMA-Neuabbildungsstruktur gemäß einer Ausführungsform der Erfindung zeigt.
  • 6 ein Diagramm, das eine Registergruppe zeigt, welche allgemeine Register gemäß einer Ausführungsform der Erfindung enthält.
  • 7 ein Diagramm, das eine Registergruppe zeigt, welche Adressfilterregister gemäß einer Ausführungsform der Erfindung enthält.
  • 8A ein Diagramm, das einen Root-Eintrag gemäß einer Ausführungsform der vorliegenden Erfindung zeigt.
  • 8B ein Diagramm, das einen Kontexteintrag gemäß einer Ausführungsform der Erfindung zeigt.
  • 8C ein Diagramm, das einen Seitentabelleneintrag gemäß einer Ausführungsform der Erfindung zeigt.
  • 9A ein Diagramm, das eine Mehrfachebenentabellen verwendende Adressübersetzungsstruktur gemäß der Erfindung zeigt.
  • 9B ein Diagramm, das eine eine Einfachseitentabelle verwendende Adressübersetzungsstruktur gemäß der Erfindung zeigt.
  • 9C ein Diagramm, das eine Base/Bound-Übersetzung verwendende Adressübersetzungsstruktur gemäß einer Ausführungsform der Erfindung zeigt.
  • 10 ein Diagramm, das eine Fehlerverarbeitungsregister enthaltende Registergruppe gemäß einer Ausführungsform der Erfindung zeigt.
  • 11 ein Diagramm, das einen Fehleraufzeichnung gemäß einer Ausführungsform der Erfindung zeigt.
  • 12 ein Ablaufdiagramm, das einen Prozess zur Ausführung von Fehlerverarbeitung gemäß einer Ausführungsform der Erfindung zeigt.
  • 13 ein Ablaufdiagramm, das einen Prozess zum Protokollieren von Fehleraufzeichnung gemäß einer Ausführungsform der Erfindung zeigt.
  • BESCHREIBUNG
  • Eine Ausführungsform der vorliegenden Erfindung ist eine Technik zur Verarbeitung von Fehlern in einer Direktspeicherzugriff-Adressübersetzung. Eine Registergruppe speichert globale Steuer- oder Statusinformation zur Fehlerverarbeitung eines Fehlers, der durch eine von einer E/A-Vorrichtung angeforderte Eingabe/Ausgabe-(E/A)-Transaktion erzeugt wurde. Eine Adressübersetzungsstruktur übersetzt eine physische Gastadresse in eine physische Hostadresse. Die physische Gastadresse entspricht der E/A-Transaktion und wird auf eine Domain abgebildet. Die Adressübersetzungsstruktur weist mindestens einen mit der Domain assoziierten Eintrag und domainspezifische Steuerinformation für die Fehlerverarbeitung auf.
  • In der folgenden Beschreibung sind zahlreiche spezifische Einzelheiten dargelegt. Es versteht sich jedoch, dass Ausführungsformen der Erfindung ohne diese spezifischen Einzel heiten ausgeführt werden können. In anderen Fällen wurden wohlbekannte Schaltungen, Strukturen und Techniken nicht gezeigt, um eine Behinderung des Verständnisses dieser Beschreibung zu vermeiden.
  • 1 ist ein Diagramm, das ein System 100 zeigt, in dem eine Ausführungsform der Erfindung ausgeführt werden kann. Das System enthält einen Prozessor 110, einen Prozessorbus 120, einen Speichersteuerhub (MCH) 130, einen Systemspeicher 140, einen Eingabe/Ausgabe-Steuerhub (ICH) 150, einen peripheren Bus 155, eine Massenspeichervorrichtung/Schnittstelle 170 und Eingabe/Ausgabe-Vorrichtungen 1801 bis 180K und 185. Es sei darauf hingewiesen, dass das System 100 mehr oder weniger Elemente als die oben genannten enthalten kann.
  • Der Prozessor 110 stellt eine zentrale Verarbeitungseinheit jeder Art von Architektur dar, wie eingebettete Prozessoren, mobile Prozessoren, Mikrosteuerungen, Digitalsignalprozessoren, superskalare Computer, Vektorprozessoren, SIMD-(Single Instruction Multiple Data)-Computer, CISC-(Complex Instruction Set Computers)-Computer, RISC-(Reduced Instruction Set Computers)-Computer, VLIW-(Very Long Instruction Word)-Computer oder Hybridarchitekturen.
  • Der Prozessorbus 120 stellt Schnittstellensignale bereit, um dem Prozessor 110 die Kommunikation mit anderen Prozessoren oder Vorrichtungen zu gestatten, beispielsweise dem MCH 130. Der Prozessorbus 120 kann eine Einfachprozessor- oder Mehrfachprozessorarchitektur unterstützen. Der Prozessorbus 120 kann parallel, sequentiell, mit Pipelines, asynchron, synchron oder jede Kombination daraus sein.
  • Der MCH 130 stellt Steuerung und Konfiguration von Speicher- und Eingabe/Ausgabe-Vorrichtungen bereit, wie dem Systemspeicher 140 und dem ICH 150. Der MCH 130 kann in ein Chipset integriert sein, welches mehrere Funktionalitäten integriert, wie beispielsweise den isolierten Ausführungsmodus, Host-zu-Peripherie-Bus-Schnittstelle, Speichersteuerung. Der MCH 130 stellt eine Schnittstelle direkt zum peripheren Bus 155 oder über den ICH 150 bereit. Der Klarheit halber sind nicht alle peripheren Busse gezeigt. Es wird berücksichtigt, dass das System 100 auch Peripheriebusse enthalten kann, wie PCI (Peripheral Component Interconnect), PCI Express, AGP (Accelerated Graphics Port), ISA-(Industry Standard Architectures) und USB-(Universal Serial)-Bus usw.
  • Der MCH 130 enthält eine DMA-(Direct Memory Access)-Neuabbildungsschaltung 135. Die DMA-Neuabbildungsschaltung 135 bildet eine E/A-Vorrichtung (z.B. eine der E/A-Vorrichtungen 1801 bis 180K und 185) auf eine Domain in dem Systemspeicher 140 in einer E/A-Transaktion ab. Die E/A-Transaktion ist in der Regel eine DMA-Anforderung. Die DMA-Neuabbildungsschaltung 135 stellt Hardwareunterstützung bereit, um die E/A-Vorrichtungszuweisung und/oder -verwaltung zu erleichtern oder zu verstärken. Die DMA-Neuabbildungsschaltung 135 kann auch in einem anderen Chipset als dem MCH 130 enthalten sein, wie dem ICH 150. Sie kann auch zum Teil oder vollständig in dem Prozessor 110 oder als separater Prozessor oder Co-Prozessor oder als andere Prozessoren oder Vorrichtungen implementiert sein.
  • Der Systemspeicher 140 speichert Systemcode und -daten. Der Systemspeicher 140 ist in der Regel mit einem DRAM (Dynamic Random Access Memory) oder SRAM (Static Random Access Memory) 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 ein Kernel und einen E/A-Treiber 145. Jedes der Elemente des BS 142 oder des E/A-Treibers 145 kann durch Hardware, Software, Firmware, Mikrocode oder jede Kombination daraus implementiert sein. Der Systemspeicher 140 kann auch andere Programme oder Daten enthalten, die nicht gezeigt sind.
  • Der ICH 150 weist eine Reihe von Funktionalitäten auf, die dazu ausgelegt sind, E/A-Funktionen zu unterstützen. Der ICH 150 kann auch zusammen mit dem oder getrennt von dem MCH 130 in ein Chipset integriert sein, um E/A-Funktionen auszuführen. Der ICH 150 kann eine Reihe von Schnittstellen- und E/A-Funktionen, wie PCI-Bus-Schnittstelle zu Schnittstelle zu dem peripheren Bus 155, Prozessorschnittstelle und Interrupt-Steuerung, DMA-(Direct Memory Access)-Steuerung, Leistungsverwaltungslogik, Timer, SM-(System Management)-Bus, USB-(Universal Serial Bus)-Schnittstelle, Massenspeicherschnittstelle, LPC-(Low Pin Count)-Schnittstelle usw. enthalten.
  • Die Massenspeichervorrichtung/Schnittstelle 170 stellt die Speicherung von Archivinformation bereit, wie Code, Programme, Dateien, Daten, Anwendungen und Betriebssysteme. Die Massenspeichervorrichtung/Schnittstelle 170 kann eine Schnittstelle mit einer CD- (Compact Disk)-ROM 172, einer DVD (Digital Video/Versatile Disc) 173, einem Diskettenlaufwerk 176 und einer Festplatte 176 bilden und jede andere Art von magnetischen oder optischen Speichervorrichtungen. Die Massenspeichervorrichtung/Schnittstelle 170 stellt einen Mechanismus bereit, um maschinenzugängliche Medien zu lesen. Die maschinenzugänglichen Medien können computerlesbare Programmcodes zum Ausführen von Aufgaben wie im Folgenden beschrieben enthalten.
  • Die E/A-Vorrichtungen 1801 bis 180k können alle E/A-Vorrichtungen enthalten, um E/A-Funktionen auszuführen, einschließlich der DMA-Anforderungen. Sie bilden eine Schnittstelle mit dem peripheren Bus 155. Zu Beispielen von E/A-Vorrichtungen 1801 bis 180K gehören Steuerungen für Eingabevorrichtungen (z.B. Tastatur, Maus, Trackball, Zeigevorrichtung), Medienkarte (z.B. Audio, Video, Graphik), Netzwerkkarte und jede andere Art von Peripheriesteuerungen. Die E/A-Vorrichtung 185 bildet eine Schnittstelle direkt mit dem ICH 150. Der Peripheriebus 155 ist jeder Bus, der E/A-Transaktionen unterstützt. Zu Beispielen des Peripheriebus 155 gehört der PCI-Bus, PCI Express usw.
  • Elemente einer Ausführungsform der Erfindung können durch Hardware, Firmware, Software oder jede Kombination daraus implementiert werden. Der Begriff Hardware betrifft allgemein ein Element, das eine physische Struktur aufweist, wie elektronische, elektromagnetische, optische, elektrooptische, mechanische, elektromechanische Teile usw. Der Begriff Software betrifft allgemein eine logische Struktur, ein Verfahren, eine Prozedur, ein Programm, eine Routine, einen Prozess, einen Algorithmus, eine Formel, eine Funktion, einen Ausdruck usw. Der Begriff Firmware betrifft allgemein eine logische Struktur, ein Verfahren, eine Prozedur, ein Programm, eine Routine, einen Prozess, einen Algorithmus, eine Formel, eine Funktion, einen Ausdruck usw., die in einer Hardwarestruktur implementiert oder ausgeführt sind (z.B. Flashspeicher, Nur-Lese-Speicher, Löschbarer Nur-Lese-Speicher). Zu Beispielen von Firmware gehören Mikrocodes, beschreibbarer Steuerspeicher, mikroprogrammierte Struktur. Die Elemente einer Ausführungsform der vorliegenden Erfindung sind im Wesentlichen, wenn sie in Software oder Firmware implementiert sind, die Codesegmente zum Ausführen der notwendigen Aufgaben. Die Software/Firmware kann den aktuellen Code enthalten, um die in einer Ausführungsform der Erfindung beschriebenen Vorgänge auszuführen oder einen Code, der diese Vorgänge nachahmt oder simuliert. Die Programm- oder Codesegmente können in einem Prozessor oder einem maschinenlesbaren Medium gespeichert oder über ein in einer Trägerwelle ausgeführtes Computerdatensignal oder ein durch einen Träger moduliertes Signal über ein Sendungsmedium gesendet werden. Das „prozessorlesbare oder -zugängliche Medium" oder „maschinenlesbare oder -zugängliche Medium" kann jedes Medium enthalten, welches Information speichern, senden oder übertragen kann. Zu Beispielen des prozessorlesbaren oder maschinenzugänglichen Mediums gehören eine elektronische Schaltung, eine Halbleiterspeichervorrichtung, ein ROM (Read Only Memory), ein Flashspeicher, ein löschbarer ROM (EROM), eine Diskette, ein CD-(Compact Disk)-ROM, eine optische Diskette, eine Festplatte, ein faseroptisches Medium, eine Hochfrequenz-(HF)-Strecke, usw. Das Computerdatensignal kann jedes Signal enthalten, welches sich über ein Sendemedium, wie elektronische Netzwerkkanäle, optische Fasern, Luft, elektromagnetische, HF-Strecken usw. verbreiten kann. Die Codesegmente können über Computernetzwerke wie dem Internet, Intranet usw. heruntergeladen werden. Das maschinenzugängliche Medium kann in einem Herstellungsartikel ausgeführt sein. Das maschinenzugängliche Medium kann Daten enthalten, die, wenn die Maschine auf sie zugreift, bewirken, dass die Maschine die im Folgenden beschriebenen Vorgänge ausführt. Das maschinenzugängliche Medium kann auch darin eingebetteten Programmcode enthalten. Der Programmcode kann maschinenlesbaren Code enthalten, um die im Folgenden beschriebenen Vorgänge auszuführen. Der hierin verwendete Begriff „Daten" bezieht sich auf jede Art von Information, die für maschinenlesbare Zwecke codiert sind. Er kann daher Programm, Code, Daten, Datei usw. umfassen.
  • Eine Ausführungsform der Erfindung kann ganz oder teilweise durch Hardware, Software, Firmware oder jede Kombination davon implementiert sein. Das Hardware-, Software- oder Firmwaremodul kann verschiedene miteinander gekoppelte Module aufweisen. Ein Hardwaremodul wird mit einem anderen Modul durch mechanische, elektrische, optische, elektromagnetische oder andere physische Verbindungen gekoppelt. Ein Softwaremodul wird mit einem anderen Modul über eine Funktion, Prozedur, Verfahren, Unterprogramm- oder Unterroutinenaufruf, einen Sprung, einen Link, ein Weiterleiten eines Parameters, einer Variable und eines Arguments, eine Funktionswiederkehr usw. verbunden. Ein Softwaremodul ist mit einem anderen Modul gekoppelt, um Variablen, Parameter, Argumente, Zeiger, usw. zu empfangen und/oder Ergebnisse, aktualisierte Variablen, Zeiger usw. zu erzeugen oder weiterzuleiten. Ein Firmwaremodul ist mit einem anderen Modul durch jede Kombination von oben beschriebenen Hardware- oder Softwarekopplungsverfahren verbunden. Ein Hardware-, Software- oder Firmwaremodul kann mit einem anderen Hardware-, Software- oder Firmwaremodul gekoppelt sein. Ein Modul kann auch ein Softwaretreiber oder eine Schnittstelle zur Interaktion mit dem auf der Plattform laufenden Betriebssystem sein. Ein Modul kann auch ein Hardwaretreiber zum Konfigurieren, Einrichten, Initialisieren, Senden und Empfangen von Daten zu und von einer Hardwarevorrichtung sein. Eine Vorrichtung kann jede Kombination aus Hardware-, Software- und Firmwaremodulen enthalten.
  • Eine Ausführungsform der Erfindung kann als ein Prozess beschrieben werden, welcher in der Regel als Flussdiagramm, Ablaufdiagramm, Strukturdiagramm oder Blockdiagramm dargestellt ist. Obwohl ein Flussdiagramm die Vorgänge als einen sequentiellen Prozess beschreibt, können viele der Vorgänge parallel oder gleichzeitig ausgeführt werden. Außerdem kann die Reihenfolge der Vorgänge neu geordnet werden. Ein Prozess ist abgeschlossen, wenn seine Vorgänge abgeschlossen sind. Ein Prozess kann einem Verfahren, einem Programm, einer Prozedur, einem Herstellungs- oder Fertigungsverfahren usw. entsprechen.
  • In einer Standardcomputerplattform fungieren die E/A-Subsystemkomponenten als Teil einer einzigen Domain und werden durch die Betriebssystemsoftware verwaltet. Eine Ausführungsform der Erfindung stellt den Hardwaresupport bereit, der nötig ist, um E/A-Vorrichtungen in einer Computerplattform an mehrere Domains zuzuweisen.
  • Eine Domain wird abstrakt als isolierte Umgebung in der Plattform definiert, der eine Teilmenge des physischen Hostspeichers zugeteilt wird. Der physische Hostspeicher ist in dem Systemspeicher 140 enthalten. E/A-Vorrichtungen, denen der direkte Zugriff auf den einer Domain zugewiesenen physischen Speicher erlaubt ist, werden als die zugewiesenen Vorrichtungen der Domain bezeichnet. Die Isolationseigenschaft einer Domain wird durch Blockieren des Zugriffs auf ihren physischen Speicher von ihr nicht zugewiesenen Ressourcen erreicht. Mehrere isolierte Domains werden dadurch unterstützt, dass sichergestellt wird, dass alle E/A-Vorrichtung einer Domain (möglicherweise eine voreingestellte Domain) zugewiesen sind und indem der Zugriff von jeder zugewiesenen Vorrichtung nur auf den ihrer Domain zugewiesenen physischen Speicher eingeschränkt wird.
  • Jede Domain hat eine Sicht auf den physischen Speicher oder einen physischen Adressraum, der anders sein kann als die Systemsicht auf den physischen Speicher. Die von den Ressourcen einer Domain zum Zugriff auf ihren physischen Adressraum verwendeten Adressen werden als ihre physische Gastadresse (GPA) bezeichnet. Die physische Hostadresse (HPA) bezieht sich auf die physische Adresse des Systems, die verwendet wird, um auf den Speicher zuzugreifen. Eine Domain wird als neu angeordnet angesehen, wenn ihre GPA in eine neue HPA übersetzt wird, um auf ihren zugewiesenen physischen Systemspeicher zuzugreifen. Eine Domain wird als nicht neu angeordnet bezeichnet, wenn ihr physischer Gastadressraum der gleiche oder eine Teilmenge des physischen Hostadressraums des Systems ist. Die logische Trennung zwischen GPA und HPA stellt die Basis zum Durchsetzen von Speicherschutz bereit. Sie erfordert eine physische Adressübersetzung und einen Schutzmechanismus, der physische Gastadressen, die durch die einer Domain zugewiesenen Vorrichtungen erzeugt wurden, validieren kann und sie in eine gültige physische Hostadresse übersetzen kann. Die DMA-Neuabbildungsschaltung 135 stellt diesen Hardwaresupport bereit.
  • Für das Zuweisen von E/A-Vorrichtungen an Domains werden physische Adressübersetzung und Schutz für DMA-Anforderungen von allen E/A-Vorrichtungen in der Plattform angelegt. Zur Vereinfachung wird die physische Adressübersetzungsfunktionalität für E/A-Vorrichtungen für DMA-Anforderungen als DMA-Neuabbildung bezeichnet.
  • 2 ist ein Diagramm, das die Eingabe/Ausgabe-(E/A)-Vorrichtungszuweisung gemäß einer Ausführungsform der Erfindung zeigt. Die E/A-Vorrichtungszuweisung ist eine Abbildung einer E/A-Vorrichtung auf eine Domain in dem Systemspeicher 140. Die Abbildung wird durch die DMA-Neuabbildungsschaltung 135 unterstützt. Als ein Beispiel wird die Vorrichtung A 210 auf die Domain 1 240 in dem Systemspeicher 140 abgebildet. Die Domain 1 kann einen Treiber 242 für die Vorrichtung A 210 aufweisen. Es kann auch mehr als ein Treiber verwendet werden.
  • Die DMA-Neuabbildungsschaltung 135 enthält eine Registergruppe 220, eine DMA-Neuabbildungsstruktur 222 und eine logische Schaltung 224. Die Registergruppe 220 enthält eine Reihe von Registern, die Steuer- oder Statusinformation bereitstellen, welche von der DMA-Neuabbildungsstruktur 222, der logischen Schaltung 224 und den Programmen oder Treibern für die E/A-Vorrichtungen verwendet werden. Die DMA-Neuabbildungsstruktur 222 stellt die Basisstruktur, die Speicherung oder die Tabellen bereit, die bei dem Neuabbilden oder der Adressübersetzung der physischen Gastadresse in die physische Hostadresse in einer entsprechenden Domain verwendet werden. Die logische Schaltung 224 enthält Schaltungen, die die Neuabbildungs- oder Adressübersetzungsvorgänge und andere Schnittstellenfunktionen durchführen. Die DMA-Neuabbildungsschaltung 135 kann unterschiedliche Implementationen aufweisen, um unterschiedliche Konfigurationen zu unterstützten und unterschiedliche Fähigkeiten für die Neuabbildungs- oder Adressübersetzungsvorgänge bereitzustellen.
  • Die E/A-Vorrichtungszuweisung und/oder -verwaltung unter Verwendung der DMA-Neuabbildungsschaltung 135 stellt eine Reihe von Verwendungen oder Anwendungen bereit. Zwei nützliche Anwendungen sind BS-Robustheitsanwendungen und Virtualisierungsanwendungen.
  • BS-Robustheitsanwendungen: Die Domainisolierung hat mehrere Verwendungen für die Betriebssystemsoftware. Ein BS kann beispielsweise eine Domain definieren, die seinen kritischen Code und Datenstrukturen in dem Speicher enthält, und den Zugriff auf diese Domain von allen E/A-Vorrichtungen in dem System beschränken. Dies ermöglicht es dem BS, die fehlerhafte oder unbeabsichtigte Korruption seiner Daten und seines Codes durch unkorrektes Programmieren der Vorrichtungen durch Vorrichtungstreiber zu beschränken, wodurch seine Robustheit verbessert wird.
  • In einer anderen Verwendung kann das BS Domains verwenden, um DMA von alten 32-Bit-PCI-Vorrichtungen für hohe Speicherleistung (über 4 GB) besser zu verwalten. Dies wird dadurch erzielt, dass 32-Bit-Vorrichtungen an eine oder mehrere Domains zugewiesen werden und die Übersetzungsmechanismen der physischen E/A-Adresse so programmiert werden, dass der DMA von diesen Vorrichtungen auf große Speicher neu abgebildet wird. Ohne eine solche Unterstützung muss die Software auf Datenkopieren durch BS-Zwischenspeicher zurückgreifen.
  • Bei einer involvierteren Verwendung kann ein BS E/A durch Bilden mehrerer Domains und Zuweisen einer oder mehrerer E/A-Vorrichtung an die einzelnen Domains verwalten. In dieser Verwendung registrieren die Vorrichtungstreiber ihre E/A-Puffer explizit im BS und das BS weist diese E/A-Puffer unter Verwendung von Hardware zur Verstärkung des DMA-Domainschutzes spezifischen Domains zu. In diesem Modell verwendet das BS die E/A-Adressübersetzung und den Schutzmechanismus als eine E/A-Speicherverwaltungseinheit (E/A MMU).
  • Virtualisierungsanwendungen: Die Virtualisierungstechnologie ermöglicht die Bildung einer oder mehrerer virtueller Maschinen (VM) in einem einzigen System. Jede VM kann gleichzeitig unter Verwendung der zugrundeliegenden physischen Hardwareressourcen laufen. Virtuelle Maschinen gestatten es mehreren Betriebssystemvorgängen, auf demselben Prozessor zu laufen, wodurch Vorteile, wie Systemkonsolidierung, Altlastmigration, Aktivitätsunterteilung und Sicherheit geboten werden.
  • Virtualisierungsarchitekturen enthalten in der Regel zwei Hauptklassen von Softwarekomponenten: (a) Virtuelle Maschinenüberwacher (VMM) und (b) Virtuelle Maschinen (VM). Die VMM-Softwareschicht läuft auf der Ebene mit höchstem Privileg und verfügt über vollständigen Besitz der zugrundeliegenden Systemhardware. Der VMM ermöglicht es den VMs, die zugrundeliegende Hardware gemeinsam zu nutzen und stellt doch Isolation zwischen den VMs bereit.
  • Die Beschränkungen von nur auf Software gestützten Verfahren zur E/A-Virtualisierung können durch Direktzuweisung von E/A-Vorrichtungen an VM unter Verwendung der DMA-Neuabbildungsschaltung 135 entfernt werden. Bei Direktzuweisung von Vorrichtungen läuft der Treiber für eine zugewiesene E/A-Vorrichtung nur auf der VM, der er zugewiesen und für die er für die direkte Interaktion mit der Vorrichtungshardware zugelassen ist, ohne an dem VMM zu haften. Die Hardwareunterstützung ermöglicht die DMA-Neuabbildung ohne vorrichtungsspezifische Kenntnis in dem VMM.
  • In diesem Modell beschränkt sich der VMM selbst auf eine Steuerfunktion, in der er explizit den Aufbau und den Abbau der Zuweisung von Vorrichtungen an VMs vornimmt. Statt bei allen Gast-E/A-Zugriffen an dem VMM zu haften, wie bei den nur auf Software gestützten Verfahren zur E/A-Virtualisierung, macht der VMM das Haften des Gast-E/A-Zugriffs nur nötig, um spezifische Ressourcen, wie die Vorrichtungskonfigurationsraumzugriffe, Interrupt-Management usw. zu schützen, die die Systemfunktionalität beeinflussen.
  • Zur Unterstützung der Direktzuweisung von E/A-Vorrichtungen an VMs verwaltet ein VMM DMA von E/A-Vorrichtungen. Der VMM kann sich selbst auf eine Domain abbilden und jede VM auf eine unabhängige Domain abbilden. Die E/A-Vorrichtungen können Domains zugewiesen werden und die physische Adressübersetzungshardware, die von der DMA-Neuabbildungsschaltung 135 bereitgestellt wird, kann verwendet werden, um den DMA von E/A-Vorrichtungen nur auf den seiner Stammdomain zugewiesenen physischen Speicher zu ermöglichen. Bei VMs, die im physischen Speicher neu angeordnet werden können (d.h. die GPA ist nicht identisch mit der HPA), kann die DMA-Neuabbildungsschaltung 135 so programmiert werden, dass sie die notwendige GPA-zu-HPA-Übersetzung vornimmt.
  • Bei Hardwareunterstützung für E/A-Vorrichtungszuweisung können VMM-Implementationen eine Kombination aus nur auf Software beruhenden Verfahren zur E/A-Virtualisierung und Direktzuweisung von Vorrichtungen wählen, um einer VM E/A-Vorrichtungsressourcen zu bieten.
  • 3 ist ein Diagramm, das die Virtualisierung von Direktspeicherzugriffs-(DMA)-Neuabbildung gemäß einer Ausführungsform der Erfindung zeigt. Die Virtualisierung enthält zwei Vorrichtungen A und B 310 und 312, die DMA-Neuabbildungsschaltung 135, einen VMM oder hosting-BS 320, VM0 340 und VMn 360.
  • Die beiden Vorrichtungen A und B 310 und 312 sind zwei E/A-Vorrichtungen, die jeweils von den beiden VM 340 und 360 unterstützt werden. Die DMA-Neuabbildungsschaltung 135 bildet diese beiden Vorrichtungen direkt auf die jeweilige VM 340 und 360 ab, ohne spezifische Kenntnis des VMM oder des hosting-BS 320 zu haben.
  • Der VMM oder das hosting-BS 320 stellt Unterstützung für die zugrundeliegende Hardware der Plattform oder des Systems, auf dem sie läuft, bereit. Die VMs 340 und 360 weisen ähnliche Architekturkomponenten auf, sind aber voneinander vollständig isoliert. Sie bilden eine Schnittstelle zu dem VMM oder hosting-BS 320, um auf die Systemhardware zuzugreifen. Die VM 340 enthält Anwendungen 342 und 344. Mehr oder weniger Anwendungen können unterstützt werden. Sie weisen Gast-BS 346 und ein Vorrichtungs-A-Treiber 350 auf. Der Vorrichtungs-A-Treiber 350 ist ein Treiber, der die Vorrichtung A 310 treibt, steuert, eine Schnittstelle zu ihr bildet oder sie unterstützt. Analog enthält die VM 360 Anwendungen 362 und 364. Mehr oder weniger Anwendungen können unterstützt werden. Sie weist Gast-OS 366 und einen Vorrichtungs-B-Treiber 370 auf. Das Gast-BS 366 kann dasselbe oder ein anderes als das Gast-BS 346 in der VM 340 sein. Der Vorrichtungs-B-Treiber 370 ist ein Treiber, der die Vorrichtung B 312 treibt, steuert, eine Schnittstelle dazu bildet oder sie unterstützt.
  • In dem nur auf Software beruhenden Verfahren ohne die DMA-Neuabbildungsschaltung 135 wären der Vorrichtungs-A- und B-Treiber 350 und 370 in dem VMM oder dem hosting BS 320 ansässig. Die Funktionalität dieser beiden Treiber ist daher durch die in dem VMM nachgeahmte Funktionalität beschränkt. Ohne die DMA- Neuabbildungsunterstützung muss der VMM Nachahmungs-/Ersatztreiber bereitstellen und das Gast-BS verwendet Vorrichtungstreiber, die für die virtuellen Vorrichtungen, für deren Offenlegung der VMM sich entscheidet, spezifisch sind. Es könnte sich um eine Vorrichtung handeln, die mit der echten Plattformvorrichtung nicht verbunden ist, oder eine Vorrichtung, die gleich der echten Plattformvorrichtung ist. Im letzteren Fall ersetzt der VMM die echte Vorrichtung. Außerdem kann die Leistung beschränkt sein, weil die Gast-E/A-Vorgänge an dem VMM oder dem hosting-BS 320 haften und ersetzt oder nachgeahmt werden, bevor sie an die zugrundeliegende physische Vorrichtungshardware weitergegeben werden. Schließlich kann die Gesamtrobustheit der Plattform beeinträchtigt werden, da ein Teil oder die Gesamtheit der Vorrichtungs-A- und -B-Treiber 350 und 370 als Teil der privilegierten VMM-Software laufen, insbesondere, wenn diese Treiber Fehler (Error) erzeugen, die Abbrüche des VMM oder des hosting-BS 320 bewirken. Bei der DMA-Neuabbildungsschaltung 135 können die Vorrichtungs-A- und -B-Treiber 350 und 370 direkt mit den jeweiligen E/A-Vorrichtungen 310 und 312 interagieren und somit alle oben genannten Einschränkungen vermeiden.
  • Die durch die DMA-Neuabbildungsschaltung 135 bereitgestellte DMA-Neuabbildungsarchitektur erleichtert das Zuweisen von E/A-Vorrichtungen an eine willkürliche Anzahl von Domains. Jede Domain weist einen physischen Adressraum auf, der anders sein kann, als der physische Adressraum des Systems. Die DMA-Neuabbildung stellt die Transformation der physischen Gastadresse (GPA) in DMA-Anforderungen von einer E/A-Vorrichtung an die entsprechende physische Host-Adresse (HPA), die ihrer Domain zugewiesen ist, bereit.
  • Um dies zu unterstützen, kann die Plattform eine oder mehrere Hardwareeinheiten zur Übersetzung von physischen E/A-Adressen unterstützen. Jede Übersetzungshardwareeinheit unterstützt das Neuabbilden der von innerhalb ihres Hardwarebereichs ausgehenden E/A-Transaktionen. Eine Desktop-Chipset-Implementation kann beispielsweise eine einzige DMA-Neuabbildungs-Hardwareeinheit offen legen, welche alle E/A-Transaktionen an der Speichersteuerhub-(MCH)-Komponente übersetzt. Eine Serverplattform mit einer oder mehreren Kernchipsetfunktionen kann unabhängige Übersetzungshardwareeinheiten in jeder Komponente unterstützen, wobei jede die DMA-Anforderungen übersetzt, welche innerhalb ihrer E/A-Hierarchie ihren Ursprung haben. Die Architektur unterstützt Konfigurationen, in denen diese Hardwareeinheiten dieselben Übersetzungsdatenstrukturen im Systemspeicher verwenden oder unabhängige Strukturen verwenden, abhängig von der Softwareprogrammierung.
  • Die Chipset-DMA-Neuabbildungsschaltung 135 behandelt die Adresse in einer DMA-Anforderung als physische Gastadresse (GPA). Die DMA-Neuabbildungsschaltung 135 kann die Adressübersetzungsfunktion an die eingehende Adresse anlegen, um sie in eine physische Hostadresse (HPA) umzuwandeln, bevor sie weiter hardwareverarbeitet wird, wie durch Aufspüren der Prozessorcaches oder Weiterleiten der Speichersteuerung.
  • In einem Virtualisierungskontext hängt die Adressübersetzungsfunktion, die durch die DMA-Neuabbildungsschaltung 135 implementiert wird, von der durch den VMM unterstützten physischen Speicherverwaltung ab. In Verwendungen, in denen die Software keine physische Speicherzuweisungen als zusammenhängende Gebiete hat, kann die DMA-Übersetzung zum Umwandeln von GPA in HPA beispielsweise eine einfache Addition sein. In Verwendungen, in denen VMM physischen Speicher in Seitengranularität verwaltet, kann die DMA-Neuabbildungsschaltung 135 eine in dem Speicher ansässige Adressverwaltungsstruktur verwenden.
  • 4 ist ein Diagramm, das eine E/A-Adressübersetzung gemäß einer Ausführungsform der Erfindung zeigt. Die E/A-Adressübersetzung enthält zwei E/A-Vorrichtungen 1 und 2 410 und 412, die DMA-Neuabbildungsschaltung 135, einen physischen Speicher 420 und eine Gastansicht 440.
  • Die E/A-Vorrichtungen 1 und 2 410 und 412 werden zwei separaten Domains zugewiesen. Sie führen E/A-Anforderungen oder DMA-Anforderungen an Adressen DMA_ADR durch. DMA-Neuabbildungsschaltung 135 bildet diese beiden Vorrichtungen auf entsprechende Domains ab, die dem physischen Speicher 420 zugewiesen sind. Der physische Speicher 420 weist die Domains 1 422 und 424 und Domains 2 426 und 428 zu. Mehr oder weniger zugewiesene Speicherabschnitte können für diese Vorrichtungen zugewiesen werden. Die Domains 1 422 und 424 entsprechen der Vorrichtung 1 410 und die Domains 2 424 und 428 entsprechen der Vorrichtung 1 412. In dem in 4 dargestellten Beispiel ist die Vorrichtung 1 410 auf die Domain 1 422 abgebildet und die Vorrichtung 2 412 ist auf die Domain 2 428 abgebildet oder ihr zugewiesen.
  • Die Gastansicht 440 ist eine logische Ansicht von den E/A-Gastvorrichtungen. Sie enthält die Domains 1 442 und 2 444. Die Domain 1 442 entspricht den beiden Domains 1 422 und 424 in dem physischen Speicher 422. Die Domain 2 444 entspricht den beiden Domains 2 426 und 428. Von der Gastansicht 440 gibt es nur eine Domain, die einer E/A-Vorrichtung entspricht. DMA_ADR-Adresse der Vorrichtung 1 410 wird auf die innerhalb des Adressraums von 0 bis L der Domain 1 442 lokalisierte DMA_ADR 1 abgebildet. Analog wird die DMA_ADR-Adresse der Vorrichtung 2 412 auf die innerhalb des Adressraums von 0 bis K der Domain 2 444 lokalisierte DMA_ADR 2 abgebildet.
  • Die für die Schaffung und Verwaltung der Domains verantwortliche Software weist den physischen Speicher 420 für beide Domains zu und richtet die GPA-zu-HPA-Adressübersetzungsfunktion in der DMA-Neuabbildungsschaltung 135 ein. Die DMA-Neuabbildungsschaltung 135 übersetzt die durch die Vorrichtungen 410 und 412 erzeugte GPA in die geeigneten HPAs.
  • 5 ist ein Diagramm, das eine DMA-Neuabbildungsstruktur 222 gemäß einer Ausführungsform der Erfindung zeigt. Die DMA-Neuabbildungsstruktur 222 empfängt eine Quellkennung 510 und enthält eine Root-Tabelle 520, eine Anzahl von Kontexttabellen 530 bis 530 und eine Anzahl von Adressübersetzungsstrukturen 5400 bis 540V . Die Neuabbildungsstruktur 222 empfängt die Quellkennung 510 und eine physische Gastadresse von der E/A-Vorrichtung und übersetzt die physische Gastvorrichtung in eine physische Hostvorrichtung in einer zugewiesenen Domain. Die Übersetzung kann unter Verwendung von Übersetzungstabellen ausgeführt werden, die auf eine hierarchische Weise angeordnet sind. Der Übersetzungsmechanismus beginnt von der Root-Tabelle 520 und durchquert oder durchläuft die Kontexttabellen 5300 bis 530U und die Adressübersetzungsstrukturen 5400 bis 540V .
  • Die Anfrageridentität der E/A-Transaktionen, die an der DMA-Neuabbildungsschaltung 135 erscheint, bestimmt die Ursprungsvorrichtung und die Domain, der die Ursprungs-E/A-Vorrichtung zugewiesen ist. Die Quellkennung 510 ist das Attribut, das den Urheber einer E/A-Transaktion identifiziert. Die DMA-Neuabbildungsschaltung 135 kann die Quellkennung 510 einer Transaktion auf implementationsspezifische Arten bestimmen. Einige E/A-Busprotokolle können beispielsweise die Ursprungsvorrichtungsidentität als Teil jeder E/A-Transaktion bereitstellen. In anderen Fällen, wie bei integrierten Chipset- Vorrichtungen kann die Quellkennung 510 aufgrund der internen Implementation des Chipsets impliziert werden.
  • Für PCI-Expressvorrichtungen wird die Quellkennung 510 auf die Anfragerkennung, die als Teil des E/A-Transaktionskopfes bereitgestellt wird, abgebildet. Die Anfragerkennung einer Vorrichtung besteht aus ihren durch die Konfigurationssoftware zugewiesenen PCI-Bus-/Vorrichtungs-/Funktionsnummern und identifiziert die Hardwarefunktion eindeutig, welche die E/A-Anfrage initiiert. In einer Ausführungsform enthält die Quellkennung 510 eine Funktionsnummer 512, eine Vorrichtungsnummer 514 und eine Busnummer 516. In dem in 5 dargestellten Beispiel ist die Funktionsnummer K Bit breit, die Vorrichtungsnummer 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 Vorrichtungsnummer 514 identifiziert die spezifische Vorrichtung auf dem identifizierten Bus. Die Funktionsnummer 512 identifiziert die spezifische Funktion, die durch die E/A-Vorrichtung angefragt wird. Die Quellkennung 510 wird verwendet, um die Root-Tabelle 520 und die Kontexttabellen 5300 bis 530U zu indizieren oder nachzuschlagen. In dem in 5 dargestellten Beispiel gibt es zwei E/A-Transaktionen, die Bus 0 und Bus m verwenden.
  • Bei PCI-Express-Vorrichtungen speichert die Root-Tabelle 520 Root-Einträge 5250 bis 525M-1 , die durch die Quellkennung 510 indiziert sind, oder die Busnummer 516 der Quellkennung 510. Die Root-Einträge fungieren als die Struktur oberster Ebene, um Vorrichtungen auf einem spezifischen Bus auf ihre jeweiligen Stammdomains (parent domains) abzubilden. Der Root-Eintrag 0 5250 entspricht der E/A-Transaktion, die Bus 0 verwendet. Der Root-Eintrag 520m entspricht der E/A-Transaktion, die Bus m verwendet. Die Root-Einträge 0 5250 und 525m zeigen auf die Kontexttabelle 5300 bzw. 530m . In einer Ausführungsform stellen diese Einträge die Basisadresse für die entsprechende Kontexttabelle bereit.
  • Die Kontexttabellen 5300 bis 530U speichern Kontexteinträge 535k , auf die durch die Root-Einträge verwiesen wird. Die Kontexteinträge 535k bilden die E/A-Vorrichtungen auf ihre entsprechende Domain(s) ab. Die Vorrichtungsnummer 514 und die Funktionsnummer 512 werden verwendet, um den Kontexteintrag zu erhalten, der der E/A-Transaktion entspricht. In einer Ausführungsform bilden sie einen Index, um auf die Kontexttabelle zu zeigen oder auf sie zu verweisen, auf die durch den entsprechenden Root-Eintrag verwiesen wird. Es gibt 2M·2L·2K oder 2M+L+K Kontexteinträge. In einer Ausführungsform gilt K = 3, L = 5 und M = 8, was zu einer Gesamtzahl von 64K Einträgen führt, welches als 2M (28 = 256) Kontexteinträgetabellen organisiert wird. In dem in 4 gezeigten Beispiel handelt es sich bei den beiden Kontexteinträgen für die beiden E/A-Transaktionen um den Kontexteintrag 5350 in der Kontexttabelle 5300 und den Kontexteintrag 535m in der Kontexttabelle 530m . Die Kontexteinträge 5350 und 535m zeigen auf die Adressübersetzungsstruktur 5400 bzw. 540m .
  • Die Adressübersetzungsstrukturen 5400 bis 540V stellen die Adressübersetzung in die physische Hostadresse, die die physische Gastadresse verwendet, welche der E/A-Adresse entspricht, bereit. Jede der Adressübersetzungsstrukturen 5400 bis 540V kann eine Mehrfachtabellen- 550, eine Einfachtabellen- 560 oder eine Base/Bound- 570 Struktur sein, entsprechend den drei Übersetzungsmechanismen, die Mehrfachtabellen, Einfachtabellen und Base/Bound-Übersetzungen verwenden. In der folgenden Beschreibung wird eine regelmäßige Seitengröße von 4 KB verwendet. Einem Fachmann wird klar sein, dass auch andere Größen verwendet werden können.
  • Zur Bereitstellung von flexibler Softwaresteuerung der DMA-Neuabbildungsschaltung 135, weist die DMA-Neuabbildungsschaltung 135 eine Reihe von in der in 2 gezeigten Registergruppe 220 enthaltenen Registern auf. Die Registergruppe 220 wird durch ein Basis-Adressen-(BAR)-Register in den physischen Hostadressenraum lokalisiert. Das Übersetzungshardware-BAR-Register ist auf eine von der Implementation abhängige Weise der Software ausgesetzt. Dies kann als ein PCI-Konfigurationsraumregister in einer der integrierten Chipsetvorrichtungen offengelegt sein, wie die Speichersteuervorrichtung. In einer Ausführungsform stellt das BAR-Register ein Minimum von 4K-Adressfenstern bereit. Ein Register in der Registergruppe 220 kann eine Reihe von Feldern aufweisen. Ein Feld kann bestätigt oder negiert werden. Wenn ein Feld aus nur einem einzigen Bit besteht, impliziert die Bestätigung, dass das Bit in einen definierten logischen Zustand gebracht wird (z.B. WAHR, logische Eins), und eine Negierung impliziert, dass das Bit auf einen definierten logischen Zustand zurückgestellt wird, der komplementär zu dem Bestätigungszustand ist (z.B. FALSCH, logisch Null). Im Folgenden ist die Verwendung eines bestätigten oder negierten Zustands willkürlich. Ein Feld kann bestätigt werden, um einen ersten Zustand anzuzeigen, und negiert werden, um einen zweiten Zustand anzuzeigen, oder umgekehrt.
  • Ein Feld in einem Register kann durch die DMA-Neuabbildungsschaltung 135 und/oder durch die Software programmiert, initialisiert oder konfiguriert werden. Es kann auch einer spezialisierten Hardwareschaltung oder einer durch Datenstrukturen implementierten Funktionalität, einer Funktion, einer Routine oder einem Verfahren entsprechen. Im Folgenden werden die Felder in Register gruppiert. Die Gruppierung, Formatierung oder Organisation dieser Felder oder Bits in den folgenden Registern geschieht zu Veranschaulichungszwecken. Andere Arten von Gruppierung, Formatierung oder Organisation dieser Felder können verwendet werden. Ein Feld kann auch in mehr als einem Register dupliziert werden. Ein Register kann mehr oder weniger der Felder wie beschrieben aufweisen. Außerdem können Register auf eine Reihe von Arten implementiert werden, einschließlich als Speicherelemente.
  • 6 ist ein Diagramm, das eine Registergruppe zeigt, welche gemeinsame Register gemäß einer Ausführungsform der Erfindung enthalten. Die gemeinsamen Register enthalten ein Speicherart-Berichtregister (MTYPE_REG) 610, ein globales Befehlsregister (GCMD_REG) 620, ein Root-Eintragstabellenadressregsiter (RTADDR_REG) 630 und ein Voreinstellungskontextregister (DEF_REG) 640.
  • Das MTYPE_REG 610 berichtet Speicherarten von Übersetzungsdatenstrukturen. Es enthält ein Fehlerprotokollspeichertyp-(FMT)-Feld 612, ein Seitentabellenspeichertyp-(PMT)-Feld 614, ein Kontexteintragstabellenspeichertyp-(CMT)-Feld 616 und ein Root-Eintragstabellenspeichertyp-(RMT)-Feld 618.
  • Das FMT-Feld 612 zeigt an, ob der Fehlerprotokollbereich gecacht werden kann. Wenn dies negiert wird, wird angezeigt, dass der Fehlerprotokollbereich nicht gecacht werden kann. Wenn dies bestätigt wird, wird angezeigt, dass der Fehlerprotokollbereich sich in einem cachebaren Bereich befinden kann. Das PMT-Feld 614 zeigt an, ob die Seitentabellen cachebar sind. Wenn dies negiert wird, zeigt dies an, dass die Seitentabellen sich in einem nicht gecachten Speicherbereich befinden können. Wenn dies bestätigt wird, zeigt dies an, dass die Seitentabellen sich in einem cachebaren Bereich befinden können. Das CMT-Feld 616 zeigt an, ob die Kontexttabellen cachebar sind. Wenn dies negiert wird, zeigt dies an, dass sich die Kontexttabellen in einem nicht gecachten Speicherbereich befinden, und zeigt an, dass die Kontexttabellen sich in einem cachebaren Bereich befinden. Das RMT-Feld 618 zeigt an, ob die Root-Tabelle gecacht werden kann. Wenn dies negiert wird, zeigt dies an, dass sich die Root-Tabelle in einem nicht gecachten Speicherbereich befinden kann. Wenn dies bestätigt wird, zeigt dies an, dass sich die Root-Tabelle in einem cachebaren Bereich befinden kann.
  • Das GCMD_REG 620 steuert das Übersetzungsverhalten. Es enthält ein Übersetzungshardwareaktivierungs-(HE)-Feld 622 und ein Schreibpufferflush-(WBF)-Feld 624.
  • Das HE-Feld 622 ist ein softwareprogrammierbares Steuerfeld zur Aktivierung oder Deaktivierung der Übersetzungshardware. Wenn es negiert wird, zeigt es an, dass Übersetzungshardware deaktiviert wird. Wenn es bestätigt wird, zeigt es an, dass die Übersetzungshardware aktiviert wird. Beim Aktualisieren dieses Felds sollte die Software das Feld wieder lesen und prüfen, um den Aktivieren/Deaktivieren-Status zu bestätigen.
  • Das WBF-Feld 624 wird verwendet, um die chipsetinternen Schreibpuffer zu flushen. Dies erfolgt um sicherzustellen, dass etwaige Aktualisierungen für Kontext- oder Seitentabellen nicht in einem internen Schreibpostingpuffer gehalten werden Die Software bestätigt dieses Feld, um den Schreibpufferflushenbefehl auszugeben. Die Logikschaltung 224 negiert es, um eine Anzeige des Abschlusses des Schreibpufferflush bereitzustellen. Die Software sollte das zu negierende Feld wieder lesen und prüfen, um den Abschluss des Flushens zu bestätigen.
  • Das RTADDR_REG 630 richtet die Basisadresse der in dem Speicher lokalisierten Root-Tabelle ein. Die Software sollte dieses Register programmieren, indem sie das geringste doppelte Wort (DWORD) zuletzt schreibt. Sie enthält ein Root-Tabellenbasisadress-(RTA)-Feld 632 und ein Kontexteinträge-Aktivieren-(ECE)-Feld 634. Das RTA-Feld 632 zeigt auf eine Basis einer ausgerichteten Seite einer Root-Tabelle regulärer Größe in dem Systemspeicher. Eine reguläre Größe kann jede zweckmäßige vordefinierte Größe sein. In einer Ausführungsform beträgt die Regulärgröße 4 KB. Die DMA-Neuabbildungsschaltung 135 kann nur die am wenigsten signifikanten N Bits implementieren, wenn N die (Hostadressbreite – 12) ist. Die übrigen Felder können als Nur-Lese-Felder behandelt werden. Das ECE-Feld 634 ist ein Steuerfeld zur Aktivieren oder Deaktivierung der Verwendung der Kontexteinträge. Dies beeinträchtigt den Gebrauch des voreingestellten Kontextes nicht. Wenn es negiert wird, zeigt es an, dass die Verwendung der Kontexteinträge deaktiviert wird. DMA-Anforderungen werden auf der Basis der Programmierung der Voreinstellungsregister verarbeitet. Wenn es bestätigt wird, zeigt es an, dass die Verwendung der Kontexteinträge zur Verarbeitung der DMA-Anforderungen aktiviert ist. Die Root- und Kontexttabellen werden in dem Speicher eingerichtet und die Basis der Root-Tabelle wird in den oberen Bits bereitgestellt (z.B. Bits 12 bis 63).
  • Das DEF_REG 640 spezifiziert den voreingestellten Kontext. Jeder Kontexteintrag in den Kontexttabellen spezifiziert, wie DMA-Anforderungen von einer spezifischen Vorrichtung verwaltet werden sollen. Der voreingestellte Kontext stellt eine voreingestellte Domain dar, an die Vorrichtungen, die durch die DMA-Neuabbildungsschaltung 135 verwaltet werden, anfänglich zugewiesen werden, bis die Software die Vorrichtung zu Domainabbildungstabellen programmiert und das Nachschlagen dieser Tabellen aktiviert. Nach einem Hot-Plug einer E/A-Vorrichtung in das System, wenn ein Kontext für diese Vorrichtung durch Software nicht vorprogrammiert ist, wird diese Vorrichtung beispielsweise der voreingestellten Domain zugewiesen, bis die Software sie explizit einer anderen Domain zuweist. Der voreingestellte Kontext wird durch das DEF_REG 640 programmiert.
  • Die Übersetzungshardware prüft die Quellkennung in den DMA-Anforderungen wie folgt. Wenn die Kontexteinträge aktiviert sind (z.B. durch ein globales Befehlsregister), wird die Quellkennung in der eingehenden DMA-Anforderung verwendet, um ihren entsprechenden Root-Eintrag nachzuschlagen, und durch den Root-Eintrag den Kontexteintrag. In diesem Fall wird die DMA entsprechend der Programmierung der Root- und Kontexteinträge verarbeitet. Wenn die Kontexteinträge nicht aktiviert sind, wird die DMA-Anforderung gemäß der DEF_REG 640 verarbeitet.
  • Ähnlich wie für andere Kontexteinträge kann der voreingestellte Kontext programmiert werden, um spezifische Arten von Übersetzungsfunktionen durchzusetzen, wie beispielsweise Blockieren, Durchleiten, Adressfiltern, Adressübersetzen unter Verwendung einer Übersetzungsstruktur usw.
  • Das DEF_REG 640 enthält ein Vorhanden-(P)-Feld 642, ein Einfach-/Mehrfachebenentabellen-(M)-Feld 650, ein Adressraum-Root-(ASR)-Feld 654, ein Gastadressenbreiten-(GAW)-Feld 656, ein Fehlerverarbeitungsfeld 660 und ein Domainerkennungs-(DID)-Feld 662. In der Regel handelt es sich bei dem P-Feld 642 und dem M-Feld 650 um Ein-Bit-Indikatoren.
  • Das P-Feld 642 sollte beim Verarbeiten von Transaktionen immer geprüft werden. Wenn es negiert wird, zeigt es an, dass alle Transaktionen durch diesen Kontexteintrag bloc kiert sind. Wenn es bestätigt ist, zeigt es an Verarbeitungstransaktionen durch diesen Kontexteintrag auf der Basis des Programmierens anderer Felder.
  • Das M-Feld 650 wird verwendet, um anzuzeigen, ob eine Mehrfachebenentabellenübersetzung verwendet wird. Wenn es bestätigt wird, zeigt es an, dass eine Einfachebenenseitentabelle für diese Kontexteintragsbits zum Indizieren der Einträge der Seitentabelle verwendet werden sollte. Wenn es negiert wird, zeigt es eine Mehrfachebenenseitentabelle (mehrstufige Seitentabelle (multi-level page table)) an, die für diesen Kontexteintrag verwendet werden sollte, um die Einträge in der Root-Tabelle nachzuschlagen.
  • Das ASR-Feld 654 ist eine in der Größe ausgerichtete physische Hostadresse der Adressraum-Root. Wenn ein zusammenhängender Adressraum verwendet wird, enthält dieses Feld die Basisadresse des physischen Adressraums der Domain. Wenn Seitentabellen (Einfachebenen- oder Mehrfachebenenseitentabellen) verwendet werden, zeigt dieses Feld auf der Basis der Root-Tabelle.
  • Das GAW-Feld 656 gilt nur für Kontexteinträge, die Einfach- oder Mehrfachebenen-Seitentabellen spezifizieren. Wenn Mehrfachebenenseitentabellen verwendet werden, zeigt dieses Feld die angepasste Gastadressenbreite (AGAW) an, die von der DMA-Neuabbildungschaltung 135 für den Seitentabellendurchlauf verwendet werden sollte. Der in diesem Feld spezifizierte Wert ist ein AGAW-Wert, der durch die DMA-Neuabbildungsschaltung 135 unterstützt wird und in einem Kapazitätsregister berichtet wird. Das Kapazitätsregister ist ein Register, das die Kapazität, die durch die DMA-Neuabbildungsschaltung 135 unterstützt wird, anzeigt. Wenn Einfachebenenseitentabellen verwendet werden, zeigt dieses Feld die Gastadressenbreite der Domain an. Der in diesem Feld spezifizierte Wert befindet sich zwischen dem Mindest-GAW für Einfachebenenseitentabellen und dem MGAW-Wert, der von der DMA-Neuabbildungsschaltung 135 in dem Kapazitätsregister berichtet wird.
  • Wenn die DMA-Neuabbildungsschaltung 135 einen Wert in diesem Feld erfasst, der nicht durch die zugrundeliegenden Implementation unterstützt wird, werden alle DMA-Anforderungen durch diesen Kontexteintrag blockiert, und es folgt ein Übersetzungsfehler. Jede durch diesen Kontexteintrag verarbeitete DMA-Anforderung und zugreifende physische Gastadresse oberhalb von 2GAW-1 (wobei GAW der Wert in diesem Feld ist) wird blockiert und führt zu einem Übersetzungsfehler.
  • Das FP-Feld 660 aktiviert oder deaktiviert das Aufzeichnen von Fehlern durch DMA-Anforderungen, die durch diesen Kontexteintrag verarbeitet werden.
  • Das DID-Feld 662 zeigt die Domainkennung für die voreingestellte Domain an.
  • Adressfiltern
  • Die auf der Mehrfachebenenseitentabelle als Struktur basierte Adressübersetzung stellt die meiste Flexibilität bereit, indem sie es der Software ermöglicht, den Speicher bei einer regelmäßigen Seitengranularität (z.B. 4 KB) zu verwalten. Die Mehrfachebenenseitentabellenstruktur führt jedoch zu der größten Adressübersetzungslatenz, da sie erfordert, dass die Hardware die Seitentabellen durchläuft. Obwohl Hardwareimplementationen Übersetzungscaches verwenden können, um die Übersetzungsoverheads zu reduzieren, können die Seitendurchlauflatenzen, die aus E/A-TLB-(Translation Lookaside Bus)-Verlusten entstehen, für bestimmte Arten von E/A-Traffic ungeeignet sein. DMA-Anforderungen von PCI-Express-Vorrichtungen, wie High-Definition-Audio, die isochrone Kanäle und bestimmte chipsetintegrierte Vorrichtungen, wie integrierte Graphik, verwenden, können beispielsweise nicht zu den -deterministischen DMA-Neuabbildungslatenz führen.
  • Bei Hardwareimplementationen, die E/A-Vorrichtungen unterstützen, welche durch die DMA-Neuabbildungslatenzen beeinträchtigt werden können, definiert die Architektur die Zuweisung von Vorrichtung an eine nicht neu angeordnete Domain durch DMA-Adressfiltern (statt Adressübersetzung). Eine nicht neu angeordnete Domain, deren physischer Gastadressenraum eine Teilmenge des physischen Hostadressraums ist. Die Adressfilterhardware wahrt die Softwareflexibilität, um den Hostspeicher in Seiten regelmäßiger Größe (z.B. 4 KB) zu verwalten und führt nur zu einem Minimum an Overhead.
  • Unterstützung für Adressfiltern wird durch die DMA-Neuabbildungsschaltung 135 durch das Kapazitätsregister in der Registergruppe 220 berichtet. Hardwareimplementationen, wie solche, die keine isochronen Kanäle unterstützen, die in der Lage sind, Adressen für DMA-Anforderungen von allen Vorrichtungen zu übersetzen, sind zur Unterstützung von Adressfiltern nicht erforderlich. Wenn eine Plattformkonfiguration mehrere DMA-Neuabbildungshardwareeinheiten benötigt, wie beispielsweise eine pro Chipsetkomponete oder PCI-Express-Root-Port, und wenn Adressfilterunterstützung von einer der Einheiten erforderlich ist, wird sie durch alle Hardwareeinheiten unterstützt.
  • Für das Adressfiltern werden die Seiten in dem Speicher, der der nicht neu angeordneten Domain zugewiesen ist, durch eine in dem Speicher ansässige Tabelle angezeigt, die als die Filter-Bitmap-Tabelle bezeichnet wird, wie in 7 gezeigt. Die Architektur unterstützt nur eine einzige nicht neu angeordnete Domain und somit einen einzigen Filter-Bitmap-Tabelle-Zeiger pro berichteter DMA-Neuabbildungshardware. Die Stelle und Größe der Filterbitmaptabelle wird durch das Adressfilterbasis- und Größenregister wie in 7 gezeigt programmiert. Die Größe der Bitmaptabelle wird als (4KB·2S) berechnet, wobei S der in das Adressfiltergrößenregister programmierte Wert ist. Jedes Bit in der Tabelle stellt eine 4K-Hostseite dar, wobei das erste Bit den ersten 4K physischen Hostadressraum darstellt. Die Mindestgröße der Filterbitmaptabelle ist 4KB, was den ersten 128MB-Bereich des Hostspeichers abbildet.
  • Vorrichtungen, deren DMA-Anforderungen nur durch Hardware adressgefiltert werden können, werden durch die Plattfirmware an die Software berichtet. Jedes Programmieren der Kontexteinträge für diese Vorrichtungen sollte sicherstellen, dass ein Adressfilter, und keine Blöcke, eingerichtet werden, um eine Durchleiten oder Adressübersetzen der DMA-Anforderungen zu ermöglichen.
  • Die E/A-Vorrichtungen, deren DMA-Anforderungen adressübersetzt oder adressgefiltert werden können, können an die nicht neu angeordnete Domain zugewiesen werden, indem die entsprechenden Kontexteinträge programmiert werden, um das Adressfiltern anzuzeigen. Analog könnte die nicht neu angeordnete Domain gleich der voreingestellten Domain gemacht werden, indem das voreingestellte Kontextregister programmiert wird, um das Adressfiltern anzuzeigen.
  • Wenn ein Kontexteintrag programmiert wird, um das Adressfiltern anzuzeigen, wird der Rest der Kontexteintragsfelder (andere als das Gültig-, Vorhanden- und Durchleitenfeld) von der DMA-Neuabbildungsschaltung 135 ignoriert.
  • Die DMA-Anforderungen, die durch die Kontexteinträge verarbeitet werden, welche das Adressfiltern spezifizieren, werden durch die DMA-Neuabbildungsschaltung 135 wie folgt gehandhabt:
    • 1. Die DMA-Anforderung wird validiert, um sicherzustellen, dass sie über die normale Chipset-DMA-Adress-Decodierlogik auf den Speicher zugreift. Wenn die DMA-Anforderung peer-to-peer decodiert wird, wird die DMA-Anforderung blockiert.
    • 2. Wenn die DMA-Anforderung an den Speicher erfolgt, wird die Speicherstelle, auf die die DMA-Anforderung abzielt, so validiert, dass sie sich innerhalb einer 4K-Seite befindet.
    • 3. Wenn die obigen beiden Prüfungen durchlaufen sind, wird die GPA in der DMA-Anforderung so validiert, dass sie sich innerhalb des Adressraums der nicht neu angeordneten Domain befindet. Jede DMA-Anforderung, die versucht, auf Speicherstellen oberhalb von Adresse (2(P+27) – 1) zuzugreifen, wird blockiert, wobei P der in dem Filterbitmapgrößenregister programmierte Wert ist.
    • 4. Wenn alle der obigen Prüfungen durchlaufen sind, schlägt die DMA-Neuabbildungsschaltung 135 das Bitfeld nach, welches der Seite entspricht, auf die die DMA-Anforderung bei Bit-Offset [GPA>>12] in der Filterbitmaptabelle zugreift. Wenn das Bit leer ist, wird die DMA-Anforderung normal verarbeitet. Wenn das Bit gesetzt ist, wird die DMA-Anforderung blockiert.
  • 7 ist ein Diagramm, das die Registergruppe 220 zeigt, welche Adressfilterregister gemäß einer Ausführungsform der Erfindung enthält. Die Registergruppe 220 enthält ein Filtergrößenregister (FSIZE_REG) 710, ein Filterbasisregister (FBASE_REG) 720, ein Filtersteuerregister (FCTL_REG) 730 und ein Filterfehlerregister (FFLT_REG) 740.
  • Das FSIZE_REG 710 zeigt die Größe der Adressfilterbitmaptabelle an. Wenn die DMA-Neuabbildungsschaltung 135 Adressfiltern nicht unterstützt, wird dieses Register als reserviert behandelt (z.B. werden Einträge ignoriert und Lesungen ergeben 0). Es enthält ein Filtertabellengrößen-(FTS)-Feld 712 und ein Filterbitmapspeichertyp-(BMT)-Feld 715. Das BMT-Feld 715 zeigt an, ob der Bitmapbereich cachebar ist. Wenn dies negiert wird, zeigt es an, dass der Bitmapbereich nicht gecacht ist. Einträge in dieses Feld werden ignoriert. Wenn es bestätigt wird, zeigt es an, dass sich der Bitmapbereich in einem cachebaren Bereich befinden kann. Das FTS-Feld 712 zeigt die Größe der Adressfiltertabelle an. Die Größe wird durch die folgende Formel berechnet. Tabellen Größe = 4K·2FSIZE_REG Bytes. Zum Beispiel: 0000h: 4KB Tabelle unterstützt 123MB-Speicher, 0001h: 8KB-Tabelle unterstützt 256MB-Hauptspeicher, 0005h: 128KB-Tabelle unterstützt 4GB-Hauptspeicher usw.
  • Das FBASE_REG 720 hält den Zeiger auf die Basisadresse der Adressfilterbitmaptabelle. Wenn die DMA-Neuabbildungsschaltung 135 Adressfiltern nicht unterstützt, wird dieses Register als reserviert behandelt (z.B. Einträge werden ignoriert und Lesungen ergeben 0). Es enthält ein Filtertabellenbasis-(FTB)-Feld 725. Das FTP-Feld 725 ist ein Zeiger auf Basisadresse der Adressfiltertabelle in dem Speicher. Die Tabelle ist in der Größe ausgerichtet. Die kleinste Tabellengröße beträgt 128K und unterstützt 4GB-Adressierbarkeit.
  • Das FCTL_REG 730 steuert das Cachen der Adressfiltertabelle. Wenn die DMA-Neuabbildungsschaltung 135 Adressfiltern nicht unterstützt, wird dieses Register als reserviert behandelt (z.B. Einträge werden ignoriert und Lesungen ergeben 0). Es enthält ein Filterhardware-Aktivieren-(FHE)-Feld 723, ein Schreibpufferflush-(WBF)-Feld 734, ein Filtercache-Invalidieren-(FCI)-Feld 736 und eine Filtertabelle-Schützen-(FTP)-Feld 738. Das FHE-Feld 732 ist ein softwareprogrammierbares Steuerfeld zur Aktivierung oder Deaktivierung der Adressfilterhardware. Wenn es negiert wird, zeigt es das Deaktivieren der Adressfilterhardware an. Jede DMA-Anforderung, die anderweitig adressgefiltert wird, wird als Durchlass verarbeitet. Wenn es bestätigt wird, zeigt es das Aktivieren der Adressfilterhardware an. Die Filterbasis- und Größenregister werden programmiert, bevor die Adressfilterhardware durch dieses Feld aktiviert wird. Das WBF-Feld 734 wird verwendet, um die chipsetinternen Schreibpuffer zu flushen. Dies erfolgt, um sicherzustellen, dass die Bitmaptabellenaktualisierungen nicht in einem internen Schreibpuffer gehalten werden. Die Software bestätigt dieses Feld, um den Schreibpufferflash-Befehl auszugeben. Die DMA-Neuabbildungsschaltung 135 negiert es, um eine Anzeige des Abschlusses des Schreibpufferflushs bereitzustellen. Die Software sollte dieses Feld zu negierende Feld wieder lesen und prüfen, um den Abschluss des Flushs zu bestätigen. Das FCI-Feld 736 invalidiert den Adressfilterbitmapcache. Die Software bestätigt dieses Feld, um die Invalidierung des Adressfiltercaches anzufordern. Die DMA-Neuabbildungsschaltung 135 negiert es, um den Abschluss der Invalidierung anzuzeigen. Die Software sollte dieses zu negierende Feld wieder lesen und prüfen, um den Abschluss der Invalidierung zu bestätigen. Das FTP-Feld 738 zeigt das Schützen des Adressfilterbitmapbereichs an. Wenn es durch Software bestätigt wird, beginnt die Hardware mit dem Schützen des Adressfilterbitmapbereichs vor DMA-Zugriffen. Die Software sollte dieses zu bestätigende Feld wieder lesen und prüfen, um zu bestätigen, dass der Adressfilterbitmapbereich geschützt ist. Wenn es durch Software negiert wird, stoppt die DMA-Neuabbildungsschaltung 135 das Schützen des Adressfilterbitmapbereichs vor DMA-Zugriffen.
  • Das FFLT_REG bereichtet durch Adressfilterhardware erfasste Fehler. Wenn die DMA-Neuabbildungsschaltung 135 Adressfiltern nicht unterstützt, wird dieses Register als reserviert behandelt (z.B. Einträge werden ignoriert und Lesungen ergeben 0). Es enthält ein Fehler-Adresse-(FA)-Feld 742, ein Typ-(T)-Feld 744 und ein Gültig-(V)-Feld 746. Das FA-Feld 742 ist eine Frameadresse der Stellen, auf die durch die fehlfunktionierende DMA-Anforderung zugegriffen wird. Das T-Feld 744 zeigt die Speicherzugriffsart der fehlerbehafteten DMA-Anforderung. Wenn es negiert wird, zeigt es DMA-Schreiben an. Wenn es bestätigt wird, zeigt es eine DMA-Leseanforderung an. Das V-Feld 746 zeigt an, wenn die Seitenrahmenadresse der fehlerbehafteten DMA-Anforderungen gesperrt ist. Wenn es bestätigt wird, wird die Seitenrahmenadresse der fehlerbehafteten DMA-Anforderung in dem fehlerbehafteten Adressfeld gesperrt und keine weiteren Adressfilterfehleradressen werden gesperrt. Die Software sollte dieses Feld explizit durch Einträge negieren, um das Adressfilternfehleraufzeichnen wieder zu aktivieren.
  • 8A ist ein Diagramm, das den Root-Eintrag 520 gemäß einer Ausführungsform der Erfindung zeigt. Der Root-Eintrag 520 enthält ein Vorhanden-(P)-Feld 810 und ein Kontexteintragtabellenzeiger-(CEP)-Feld 815.
  • Das P-Feld 810 zeigt an, wenn der Root-Eintrag vorhanden ist. Wenn es negiert wird, zeigt es an, dass der Root-Eintrag nicht vorhanden ist und nicht verwendet werden sollte. Die DMA-Neuabbildungsschaltung 135 erzeugt einen Fehler für die durch diesen Root-Eintrag verarbeitete DMA-Anforderung. Wenn es bestätigt wird, zeigt es an, dass der Root-Eintrag vorhanden ist und verwendet werden kann, um die Transaktion zu verarbeiten.
  • Das CEP-Feld 815 ist ein Zeiger auf die Kontexttabelle für diesen Bus. Die Kontexttabelle hat eine Größe von 4KB und ist seitenausgerichtet.
  • 8B ist ein Diagramm, das den Kontexteintrag 535 gemäß einer Ausführungsform der Erfindung zeigt. Der Kontexteintrag 535 enthält ein Vorhanden-(P)-Feld 822, ein Mehrfachebenen-(M)-Feld 830, ein Adressraum-Root-(ASR)-Feld 834, ein Gastadressenbreiten(GAW)-Feld 836, ein Fehlerverarbeitungs-(FP)-Feld 840 und ein Domainkennungs-(DID)-Feld 842. Der Kontexteintrag 535 weist Felder auf, die ähnlich dem in 6 gezeigten Voreinstellungsregister DEF_REG 640 sind. In der Regel handelt es sich bei dem P-Feld 822 und dem M-Feld 830 um Ein-Bit-Indikatoren.
  • Das P-Feld 822, das M-Feld 830, das ASR-Feld 834 und das GAW-Feld 836 sind jeweils ähnlich dem P-Feld 842, dem M-Feld 650, dem ASR-Feld 654 und dem GAW-Feld 656 in dem in 6 gezeigten Voreinstellungsregister (DEF_REG 640).
  • Das DID-Feld 842 ist eine Kennung für die Domain, zu der dieser Kontexteintrag gehört. Die Software sollte sicherstellen, dass alle Vorrichtungen dieselben Seitentabellenstrukturen verwenden und somit die Adressen identisch übersetzt werden und dieselbe Domainkennung in ihrem Kontexteintrag haben. Die DMA-Neuabbildungsschaltung 135 kann die Domainkennung zum Taggen ihrer gecachten Einträge verwenden, wenn Cacheunterstützung verwendet wird.
  • 8C ist ein Diagramm, das einen Seitentabelleneintrag (PTE) 565 gemäß einer Ausführungsform der Erfindung zeigt. Der PTE 565 enthält ein Lesbares-(R)-Feld 850, ein Schreibbares-(W)-Feld 852, ein Kohärentes-(C)-Feld 854, ein Superseiten-(SP)-Feld 856 und ein Adress-(ADDR)-Feld 860. Es sei darauf hingewiesen, dass mehr oder weniger Felder als diese Felder definiert sein können.
  • Das R-Feld 850 zeigt an, ob eine Seite für DMA lesbar ist. Wenn dies negiert wird, zeigt es an, dass die Seite für DMA-Leseanforderungen nicht zugreifbar ist. Durch diesen Seitentabelleneintrag verarbeitete DMA-Leseanforderungen werden blockiert. Wenn Fehlerberichten aktiviert ist, wird ein Übersetzungsfehler erzeugt. Wenn es bestätigt wird, zeigt es an, dass die Seite für DMA-Leseanforderungen zugreifbar ist.
  • Das W-Feld 852 zeigt an, ob eine Seite für DMA schreibbar ist. Wenn dies negiert wird, zeigt es an, dass die Seite für DMA-Schreibanforderungen nicht zugreifbar ist. Durch diesen Seitentabelleneintrag verarbeitete DMA-Schreibanforderungen werden blockiert. Wenn Fehlerberichten aktiviert ist, wird ein Übersetzungsfehler erzeugt. Wenn es bestätigt wird, zeigt es an, dass die Seite für DMA-Schreibanforderungen zugreifbar ist.
  • Das C-Feld 854 spezifiziert, ob der Zugriff auf die übersetzte physische Hostadresse kohärent ist oder nicht. Wenn dies negiert wird, zeigt es an, dass der DMA-Zugriff auf die übersetzte physische Hostadresse dem in der E/A-Transaktion spezifizierten Kohärenzattribut folgt. PCI-X- oder PCI-Express-Anforderungen mit „nicht Aufspüren"-Attribut stellen beispielsweise den Zugriff auf die übersetzte physische Hostadresse ein, ohne aufgespürt zu werden. Wenn dies bestätigt wird, zeigt es an, dass der DMA-Zugriff auf die übersetzte physische Hostadresse als kohärent verarbeitet wird. Die Software sollte sicherstellen, dass dieses Feld als reserviert (0) behandelt wird, wenn: in allen Seitentabelleneinträgen, wenn die DMA-Neuabbildungsschaltung 135 die bestätigte Einstellung des C-Felds nicht unterstützt (wie in dem Kapazitätsregister berichtet) und in Nicht-Blatt-Seitentabelleneinträgen mit negiertem SP-Feld.
  • Das SP-Feld 854 zeigt der DMA-Neuabbildungsschaltung 135 an, dass dies ein Blattseitentabelleneintrag und ein vollständiger Seitendurchlauf ist. Wenn es negiert wird, zeigt es Fortfahren mit dem Seitendurchlauf und Verwenden der Tabelle der nächsten Ebene an. Wenn es bestätigt wird, zeigt es Anhalten des Tabellendurchlaufs und Bilden der physischen Hostadresse unter Verwendung der nicht verwendeten geringeren Bits in der physischen Gastadresse für den Seitendurchlauf zusammen mit oberen Bits der Seitenbasisadresse, die in dem ADDR-Feld 860 bereitgestellt wird, an. Die DMA-Neuabbildungsschaltung 135 wertet das SP-Feld 854 nur in den Seitentabelleneinträgen aus, die den Superseitengrößen entsprechen, welche sie als in dem Kapazitätsregister berichtet unterstützt. Die Software sollte dieses Feld als reserviert behandeln (z.B. 0) in: (1) 4KB Blattseitentabelleneinträge in Mehrfachebenenseitentabellen, (2) kein Blatt Seitentabelleneinträge in Mehrfachebenenseitentabellen entsprechend Superseitengrößen, die durch die DMA-Neuabbildungsschaltung 135 nicht unterstützt wird, und (3 Seitentabelleneinträge in Einfachebenenseitentabellen.
  • Das ADDR-Feld 860 enthält die physische Hostadresse des Seitenrahmens, wenn es sich um einen Blattknoten handelt. Andernfalls enthält es den Zeiger auf die Seitentabelle der nächsten Ebene. Dieses Feld ist größenausgerichtet.
  • Es sei darauf hingewiesen, dass zusätzliche Felder definiert werden können, um die Attribute des Adressübersetzungsmechanismus weiter zu kennzeichnen. Beispielsweise können die folgenden Attribute definiert werden: ein Base/Bound-Attribut zum Aktivieren der Base/Bound-Übersetzung, ein Schrittattribut zum Anzeigen der Größe einer Seitentabelle der ersten Ebene in einer Mehrfachebenentabellenüberetzung und ein Durchlaufen-Attribut, um anzuzeigen, wenn die E/A-Transaktion ohne Übersetzung durchlaufen kann.
  • Adressübersetzungsmechanismen
  • Zur Unterstützung variierender Granularität der physischen Speicherverwaltungsunterstützung durch die Software definiert die DMA-Neuabbildungsarchitektur drei Arten von Adressübersetzungsstrukturen. Eine Chipsetimplementation kann eine oder mehrere dieser Übersetzungsstrukturen unterstützen und die unterstützten Arten durch ihr Kapazitätsregister berichten. Diese Mechanismen bieten variierende Kosten, Komplexität und Leistungskompromisse. Bei Implementationen, die Mehrfachübersetzungsstrukturen unterstützen, kann jeder Kontexteintrag programmiert werden, um verschiedene Übersetzungsstrukturarten zu verwenden.
  • Die folgenden Adressübersetzungsstrukturen sind definiert: (1) Mehrfachebenenseitentabellenstruktur zum Aktivieren von seitengranularer Zuweisung von Bereichen durch Mehrfachebenen von seitengroßen Seitentabellen jeweils innerhalb von seitengroßen Bereichen, (2) Einfachebenenseitentabellenstrukturen zum Aktivieren von seitengranularer Zuweisung von Bereichen durch eine zusammenhängende Einfachseitentabelle und (3) Base/Bound-Übersetzungsstrukturen zum Aktivieren einer zusammenhängenden Bereichszuweisung an Domains. Jede der obigen Übersetzungsstrukturen kann als Voreinstellung oder optional ausgeführt sein.
  • 9A ist ein Diagramm, das die Adressübersetzungsstruktur 540 unter Verwendung von Mehrfachebenentabellen gemäß einer Ausführungsform der Erfindung zeigt. Die Adressübersetzungsstruktur 540 enthält den Kontexteintrag 535, eine angepasste physische Gastadresse (AGPA) 910, eine Erste-Ebene-Seitentabelle 920, eine Zwischentabelle 930, eine Blattknotentabelle 940 und eine Seite 950. Die Mehrfachebenentabellen enthalten eine Anzahl von Übersetzungstabellen, die auf eine hierarchische Weise angeordnet sind.
  • Das ASR-Feld in dem Kontexteintrag 535 stellt die Basisadresse für die Erste-Ebene-Seitentablle 920 bereit. Das AGPA 910 enthält ein Offsetfeld 912, ein Blattknotenseitentabellenfeld 914, ein Zwischenseitentabellenfeld 916 und ein Erste-Ebene-Seitentabellenfeld 918. Es sei darauf hingewiesen, dass die Anzahl von Ebenen in den Mehrfachebenenseitentabellen jede geeignete Anzahl abhängig von der Breite des AGPA 910, des Speicherraums, der Speicherverwaltungsrichtlinie, der Wortlänge und allen anderen Implentationsfaktoren ist.
  • Das Erste-Ebene-Seitentabellenfeld 918 wird mit der Erste-Ebene-Basisadresse kombiniert, welche durch das ASR bereitgestellt wird, um die Erste-Ebene-Seitentabelle 920 zu indizieren. In einer Ausführungsform beträgt jeder Eintrag 8 Byte, das Erste-Ebene-Seitentabellenfeld 918 wird von einem Schieber 922 um 3 Bits verschoben und dann zu der Erste-Ebene-Basisadresse durch einen Addierer 924 addiert, um einen Erste-Ebene-Index für die Erste-Ebene-Seitentabelle 920 bereitzustellen. Der indizierte Erste-Ebene-Seitentabelleneintrag stellt die Zwischenbasisadresse für die Zwischenebenenseitentabelle 930 bereit.
  • Das Zwischenseitentabellenfeld 916 wird mit der Zwischenbasisadresse kombiniert, um die Zwischenebenenseitentabelle 930 zu indizieren. Da jeder Eintrag 8 Bit beträgt, wird das Zwischenseitentabellenfeld 918 von einem Schieber 932 um drei Bits geschoben und dann zu der Zwischenebenenbasisadresse durch einen Addierer 934 addiert, um einen Zwischenebenenindex für die Zwischenebenenseitentabelle 930 bereitzustellen. Der indizierte Zwischenebenenseitentabelleneintrag stellt die Blattknotenbasisadresse für die Blattknotenseitentabelle 940 bereit.
  • Das Blattknotenseitentabellenfeld 914 wird mit der Blattknotenbasisadresse kombiniert, um die Blattknotenseitentabelle 940 zu indizieren. Da jeder Eintrag 8 Bytes umfasst, wird das Blattknotenseitentabellenfeld 914 durch einen Schieber 942 um 3 Bits verschoben und dann zu der Blattknotenbasisadresse durch einen Addierer 944 addiert, um einen Blattknotenindex für die Blattknotenseitentabelle 9Da jeder Eintrag 8 Bytes umfasst, wird das Blattknotenseitentabellenfeld 914 durch einen Schieber 942 um 3 Bits verschoben und dann zu der Blattknotenbasisadresse durch einen Addierer 944 addiert, um einen Blattknotenindex für die Blattknotenseitentabelle 940 bereitzustellen. Der indizierte Blattknotenseitentabelleneintrag stellt die Hostbasisadresse für die Seite 950 bereit.
  • Der Offset 912 wird dann mit der Hostbasisadresse kombiniert, um die physische Hostadresse in der Seite 950 zu erzeugen.
  • Die Mehrfachebenenseitentabellen gestatten es der Software, den physischen Hostspeicher bei Seiten-(z.B. 4K)-Granularität zu verwalten und eine hierarchische Struktur mit Seiteninhaltsverzeichnissen und Seitentabellen aufzustellen. Die logische Schaltung 224 implementiert die Seitendurchlauflogik und durchquert diese Strukturen unter Verwendung der in der DMA-Transaktion bereitgestellten GPA. Die Höchstzahl von Seitentabellenebenen, die durchquert werden muss, um eine GPA- in eine DMA-Anforderung zu übersetzen, ist eine Funktion der Gastadressenbreite des entsprechenden Kontexteintrags. Die Software kann die Maximalgastadressenbreite anfragen, unterstützt von einer gegebenen Hardwareimplementation der DMA-Neuabbildungsschaltung 135 durch ein Kapazitätsregister.
  • P sei die reguläre Seitengröße. Q sei die Anzahl von Bytes pro Eintrag. p und q seien so, dass 2p = P und 2q = Q. Die angepasste Gastadressbreite (AGAW) für eine Domain ist ihre Gastadressenbreite (GAW) mit angepasstem Wert, so dass (AGAW-p) ein Vielfaches von (p-q) ist. Die AGAW wird wie folgt bestimmt:
    Figure 00310001
  • Zum Beispiel wird angenommen, dass P = 4K und Q = 8, dann gilt p = 12 und q = 3. Eine Domain, der 2GB Speicher zugewiesen wird, weist eine GAW von 31 auf. Die AGAW wird berechnet als:
    R = (31 – 12) mod 9 = 1
    AGAW = 31 + 9 – 1 = 39
  • Die angepasste Gastadressenbreite (AGAW) zeigt die Anzahl von Ebenen des Seitendurchlaufs an. Die DMA-Neuabbildungschaltung 135 unterstützt eine definierte AGAW, wobei die entsprechende GAW gleich der Hostadressbreite ist. Wenn Mehrfach ebenenseitentabellen für eine Domain verwendet werden, berechnet die Software die angepasste Gastadressenbreite AGAW wie oben beschrieben. Die Software verwendet die AGAW beim Einrichten von Mehrfachebenenseitentabellenstrukturen. Sie programmiert die GAW und AGAW der Domains in Kontexteinträgen für alle Vorrichtungen, die dieser Domain zugewiesen sind.
  • Die DMA-Neuabbildungsschaltung 135 kann auch kleinere angepasste Gastadressenbreiten unterstützen. Sie kann die unterstützten angepassten Gastadressenbreiten durch das Kapazitätsregister berichten. Die Software sollte sicherstellen, dass sie eine AGAW verwendet, welche durch die zugrundeliegende Hardwareimplementation unterstützt wird, wenn sie Mehrfachebenenseitentabellen für eine Domain einrichtet. Die Software sollte auch die AGAW der Domain in den Kontexteinträgen für dieser Domain zugewiesene Vorrichtungen programmieren.
  • Die DMA-Anforderungen, die durch Kontexteinträge verarbeitet werden, welche die Mehrfachebenenadressübersetzungen spezifizieren, werden durch die DMA-Neuabbildungsschaltung 135 wie folgt gehandhabt:
    • 1. Die GPA/Längenkombination, die in der DMA-Anforderung spezifiziert ist, wird verwendet, abhängig davon, ob die DMA-Neuabbildungsschaltung 135 das Überschreiten der Seitengrenze unterstützt oder nicht. Wenn die DMA-Neuabbildungsschaltung 135 DMA-Anforderungen unterstützt, die die Seitengrenze überschreiten und die GPA/Längenkombination, die die DMA-Anforderung, die die Seitengrenze überschreitet, anzeigt, wird jeder Seitenbereich, auf den durch die DMA-Anforderungen abgezielt wird, unabhängig adressübersetzt. Wenn die DMA-Neuabbildungsschaltung 135 DMA-Anforderungen nicht unterstützt, die die Seitengrenze überschreiten und die GPA/Längenkombination die DMA-Anforderungen anzeigt, welche die Seitengrenze überschreitet, entsteht ein Adressübersetzungsfehler.
    • 2. Wenn das GAW-Feld, welches in den Kontexteintrag programmiert ist, sich nicht zwischen einem Mindestwert, z.B. 21, und der Maximumgastadressenbreite (GAW), die durch die DMA-Neuabbildungsschaltung 135 in dem Kapazitätsregister berichtet wird, wird die DMA-Anforderung blockiert und es entsteht ein Adressübersetzungsfehler.
    • 3. Die DMA-Anforderung wird so validiert, dass sie innerhalb des physischen Gastadressraums der Domain, der diese Vorrichtung zugewiesen ist, sich befindet. Jede DMA-Anforderung, die den Zugriff auf Speicherstellen oberhalb der Adresse (2X-1) versucht, wird blockiert, wobei X die Gastadressenbreite ist, die indem zur Verarbeitung dieser DMA-Anforderung verwendeten Kontexteintrag programmiert ist.
    • 4. Wenn die obigen Prüfungen erfolgreich sind, wird die GPA in der DMA-Anforderung auf X Bits angepasst, um eine angepasste physische Gastadresse (AGPA) zu bilden, wobei X die Gastadressenbreite, die in dem zur Verarbeitung dieser DMA-Anforderung verwendeten Kontexteintrag programmiert ist. Die DMA-Anforderung auf den AGPA wird entweder blockiert zu einer gültigen HPA gemäß der Programmierung der Mehrfachebenenseitentabellenstrukturen übersetzt.
    • 5. DMA-Neuabbildungsschaltung 135 führt das normale Chipsetadressdecodieren der bei Schritt 4 erzeugten HPA durch und verarbeitete die DMA-Anforderung entweder als einen Zugriff auf den Speicher oder eine peer-to-peer-Anforderung.
    • 6. Wenn die übersetzte HPA decodiert wird, um für den Speicher bestimmt zu sein, wird gemäß der Unterstützung des Einstellens des Kohärenz-(C)-Attributs auf die HPA zugegriffen. Wenn die DMA-Neuabbildungsschaltung 135 nur die negierte Einstellung des Kohärenz-(C)-Attributs in den Seitentabelleneinträgen unterstützt, wird gemäß der Kohärenz, die in der DMA-Anforderung spezifiziert (oder daraus abgeleitet) auf den Speicher zugegriffen. Wenn die PCI-Express-Anforderung die DMA-Anforderung als nicht-aufgespürt spezifiziert hat, wird beispielsweise auf den Speicher zugegriffen, ohne aufgespürt zu werden. Wenn die DMA-Neuabbildungsschaltung 135 bestätigten und negierten Einstellungen des Kohärenz-C-Attributs in den Seitentabelleneinträgen unterstützt, wird gemäß der Programmierung des Kohärenzattributs in dem zur Adressübersetzung der DMA-Anforderung verwendeten Blatt-Seitentabelleneinträgen auf den Speicher zugegriffen.
  • 9B ist ein Diagramm, das die Adressübersetzungsstruktur 540 unter Verwendung einer Einfachtabelle gemäß einer Ausführungsform der Erfindung zeigt. Die Adressübersetzungsstruktur 540 enthält den Kontexteintrag 535, eine physische Gastadresse (GPA) 960, eine Einfachseitentabelle 970 und eine Seite 980.
  • Die Einfachebenenseitentabelle bietet der Software einen alternativen Mechanismus, um 4K-granulare Seitenzuweisungen bereitzustellen, ohne lange Seitendurchläufe, aber auf Kosten des Reservierens einer großen zusammenhängenden Seitentabellenstruktur. Die Seitentabelleneintragsgröße (z.B. 64 Bits) und das Format für die Einfachebenenseitentabelle sind ähnlich denen der Seitentabelleneinträge für die Mehrfachebenenstruktur, wie in vorheri gen Abschnitten beschrieben wurde, mit der Ausnahme, dass das Schrittfeld als reserviert behandelt wird.
  • Die Größe der Seitentabelle hängt von der Größe des Gastadressraums ab. Für eine Gastadressierbarkeit von 1 GB (GAW = 30) muss die Software beispielsweise eine 2-MB-Seitentabelle mit 218 Seitentabelleneinträgen zuweisen. Der E/A-TLB (Translation Lookaside Buffer) ist auch DMA-Adressübersetzungen anwendbar, die Einfachebenenseitentabellen verwenden.
  • Die durch die Kontexteinträge, die Einfachebenenadressübersetzungen spezifizieren, verarbeiteten DMA-Anforderungen werden wie folgt durch die DMA-Neuabbildungsschaltung 135 gehandhabt:
    • 1. Die GPA/Längenkombination, die in der DMA-Anforderung spezifiziert ist, wird verwendet, abhängig davon, ob die DMA-Neuabbildungsschaltung 135 das Überschreiten der Seitengrenze unterstützt oder nicht. Wenn die DMA-Neuabbildungsschaltung 135 DMA-Anforderungen unterstützt, die die Seitengrenze überschreiten und die GPA/Längenkombination, die die DMA-Anforderung, die die Seitengrenze überschreitet, anzeigt, wird jeder Seitenbereich, auf den durch die DMA-Anforderungen abgezielt wird, unabhängig adressübersetzt. Wenn die DMA-Neuabbildungsschaltung 135 DMA-Anforderungen nicht unterstützt, die die Seitengrenze überschreiten und die GPA/Längenkombination die DMA-Anforderungen anzeigt, welche die Seitengrenze überschreitet, entsteht ein Adressübersetzungsfehler.
    • 2. Wenn das GAW-Feld, welches in den Kontexteintrag programmiert ist, keine angepasste Gastadressenbreite aufweist, welche durch die DMA-Neuabbildungsschaltung 135 unterstützt wird, welche in dem Kapazitätsregister berichtet wird, dann wird die DMA-Anforderung blockiert und es entsteht ein Adressübersetzungsfehler.
    • 3. Die DMA-Anforderung wird so validiert, dass sie innerhalb des physischen Gastadressraums der Domain, der diese Vorrichtung zugewiesen ist, sich befindet. Jede DMA-Anforderung, die den Zugriff auf Speicherstellen oberhalb der Adresse (2X-1) versucht, wird blockiert, wobei X die Gastadressenbreite ist, die in dem zur Verarbeitung dieser DMA-Anforderung verwendeten Kontexteintrag programmiert ist.
    • 4. Wenn die obigen Prüfungen erfolgreich sind, verwendet die DMA-Anforderung (X-1):12 Bits, um den Seitentabelleneintrag in der Einfachebenentabelle nachzuschlagen. Die DMA-Anforderung wird entweder blockiert zu einer gültigen HPA gemäß der Programmierung des Seitentabelleneintrags übersetzt.
    • 5. DMA-Neuabbildungsschaltung 135 führt das normale Chipsetadressdecodieren der bei Schritt 4 erzeugten HPA durch und verarbeitet die DMA-Anforderung entweder als einen Zugriff auf den Speicher oder eine peer-to-peer-Anforderung.
    • 6. Wenn die übersetzte HPA decodiert wird, um für den Speicher bestimmt zu sein, wird gemäß der Unterstützung des Einstellens des Kohärenz-(C)-Attributs auf die HPA zugegriffen. Wenn die DMA-Neuabbildungsschaltung 135 nur die negierte Einstellung des Kohärenz-(C)-Attributs in den Seitentabelleneinträgen unterstützt, wird gemäß der Kohärenz, die in der DMA-Anforderung spezifiziert (oder daraus abgeleitet) auf den Speicher zugegriffen. Wenn die PCI-Express-Anforderung die DMA-Anforderung als nicht-aufgespürt spezifiziert hat, wird beispielsweise auf den Speicher zugegriffen, ohne aufgespürt zu werden. Wenn die DMA-Neuabbildungsschaltung 135 bestätigten und negierten Einstellungen des Kohärenz-C-Attributs in den Seitentabelleneinträgen unterstützt, wird gemäß der Programmierung des Kohärenzattributs in dem zur Adressübersetzung der DMA-Anforderung verwendeten Blatt-Seitentabelleneinträgen auf den Speicher zugegriffen.
  • Das ASR-Feld des Kontexteintrags 535 stellt die Basisadresse bereit, um die Einfachseitentabelle 970 zu lokalisieren. Die GPA 960 enthält ein Offsetfeld 962 und ein Seitentabellenfeld 964. Die Einfachseitentabelle 970 enthält Seitentabelleneinträge, um auf die Seite der physischen Hostadresse, die der GPA 960 entspricht, zu zeigen.
  • Um den entsprechenden Seitentabelleneintrag nachzuschlagen, wird das Seitentabellenfeld 964 mit der durch das ASR-Feld bereitgestellten Basisadresse kombiniert. Da jeder Eintrag 8 Byte einnimmt, wird das Seitentabellenfeld 964 von einem Schieber 972 um drei Bits verschoben und dann durch einen Addierer 974 zu ASR addiert, um den Index der Einfachseitentabelle 970 bereitzustellen.
  • Der dem Index entsprechende Seitentabelleneintrag, stellt dann die Basisadresse für die Seite 980 bereit. Das Offsetfeld 962 wird durch Addierer 984 zu dieser Basisadresse addiert und stellt die sich ergebende HPA in der Seite 980 bereit.
  • 9C ist ein Diagramm, das die Adressübersetzungsstruktur 540, welche die Base/Bound-Übersetzung gemäß einer Ausführungsform der zeigt. Die Adressübersetzungs struktur 540 enthält den Kontexteintrag 535, eine physische Gastadresse (GPA) 960 und einen physischen Speicherraum 990.
  • Base/Bounds bilden die einfachste Form von Adressübersetzung, wobei die GPA in der DMA-Anforderung als ein Offset von der Basisadresse für diese Domain verwendet wird. Die Basisadresse der Domain ist eine physische Hostadresse und wird durch das ASR-Feld 834 des Kontexteintrags 535 programmiert (8B). Die Gastadressenbreite (GAW) in dem Kontexteintrag zeigt die Offsetgrenze an. Jede DMA-Anforderung mit Gastadressen oberhalb der Grenze, die durch GAW angezeigt wird, wird durch die GMA-Neuabbildungsschaltung 135 blockiert.
  • In einer Ausführungsform beträgt die physische Hostadresse 64 Bit. Für gültige Gastadressen (z.B. Adressen innerhalb der GAW-Adressierbarkeit) führt die DMA-Neuabbildungsschaltung 135 die folgenden Vorgänge aus, um die physische Hostadresse zu erzeugen:
    Physische Hostadresse [63:GAW] = Adressraum-Root [63:GAW]
    Physische Hostadresse [GAW-1:0] = Physische Gastadresse [GAW-1:0]
  • Fehlerverarbeitung:
  • Die durch die DMA-Neuabbildungsschaltung 134 blockierte DMA-Anforderung führt zu Fehlern. Die DMA-Neuabbildungsschaltung 135 definiert zwei Arten von Fehlern: (a) Adressübersetzungsfehler und (b) Adressfilterfehler. DMA-Anforderungen, die in dem Prozess der GPA-zu-HPA-Adressübersetzung blockiert werden, führen zu Adressübersetzungsfehlern. Blockierte DMA-Anforderungen von Vorrichtungen, die einer nicht neu angeordneten Domain zugewiesen sind, und somit adressgefiltert werden, führen zu Adressfilterfehlern.
  • Adressübersetzungsfehler sind Fehler, die durch die DMA-Neuabbildungsschaltung 135 in dem Prozess der GPA-zu-HPA-Übersetzung erfasst werden. Die Adressübersetzungsfehler können unter jeder der folgenden Bedingungen auftreten: (1) Das Vorhanden-(P)-Feld in dem Kontexteintrag, welcher zur Verarbeitung der DMA-Anforderung verwendet wird, ist negiert. Dies könnte ein Kontexteintrag in einer der Kontexttabellen oder der voreingestellte Kontext sein. (2) Die DMA-Anforderung versucht, auf eine GPA außerhalb des physischen Gastadressenraums von 2GAW-1, wobei GAW das Gastadressenbreitenfeld in dem Kontexteintrag, der die zu verarbeitende DMA-Anforderung verwendet, ist (z.B. das GAW-Feld 836 in 8B). (3) Die DMA-Anforderung versucht auf physische Gastadressen über eine 4KB-Seitengrenze zuzugreifen. (4) Das Vorliegen-(P)-Feld in einem Seitentabelleneintrag, der für die GPA-zu-HPA-Übersetzung der DMA-Anforderung verwendet wird, ist negiert. (5) Das Lesen/Schreiben-(R/W)-Feld (z.B. das RW-Feld 856 in 8C) in einem Seitentabelleneintrag, der für die GPA-zu-HPA-Übersetzung der DMA-Anforderung verwendet wird, ist negiert und zeigt an, dass nur DMA-Lesungen zugelassen sind und dass die DMA-Anforderung ein Schreiben ist.
  • Übersetzungsfehler werden durch Aufzeichnen der Fehlerinformation und ihren Berichten an die Software verarbeitet. Die Fehleraufzeichnung wird durch ein in dem Speicher ansässigen Fehlerprotokoll definiert. Von der Software wird erwartet, dass sie die Basis des seitenausgerichteten 4KB-großen Fehlerprotokollbereichs zu dem Fehlerprotokollregister programmiert.
  • Die DMA-Neuabbildungsschaltung 135 kann sich zu jeder Zahl von Fehlerberichten in dem Fehlerprotokoll einloggen. In einer Ausführungsform ist diese Anzahl 256. Jede Fehleraufzeichnung enthält die folgenden Felder: (1) Fehlergrund: Das Fehlergrundfeld zeigt die spezifische Bedingung an, die den Übersetzungsfehler verursacht hat; (2) Typ: Das Typfeld stellt den Typ (z.B. Schreibe- oder Leseanforderung) der fehlerbehafteten DMA-Anforderung bereit; (3) Quellkennung: Das Quellkennungsfeld stellt die Anfordererkennung in der fehlerbehafteten DMA-Anforderung bereit; (4) Adresse: Das Adressfeld stellt die GPA in der fehlerbehafteten DMA-Anforderung bereit; (5) Länge: Das Längenfeld stellt die Größe der Datennutzlast (z.B. Anzahl von DWORDs) in der fehlerbehafteten DMA-Anforderung bereit.
  • Die DMA-Neuabbildungsschaltung 135 verwaltet den aktuellen Zeiger auf den nächsten schreibbaren Eintrag in dem Fehlerprotokoll. Wenn die DMA-Neuabbildungsschaltung 135 einen neuen Fehler erfasst, während das Fehlerprotokoll voll ist, wird der Fehler nicht aufgezeichnet und das Fehlerprotokolloverflowstatus-(FLO)-Feld in dem Error-Statusregister wird bestätigt. Zukünftige Fehler werden nicht aufgezeichnet, bis die Software das Fehlerprotokollregister neu initialisiert hat.
  • Die Software kann das Aufzeichnen aller Adressübersetzungsfehler durch das Fehlerprotokollregister aktivieren oder deaktivieren. Wenn Fehleraufzeichnungen in dem Fehlerprotokollregister aktiviert ist, wird das Fehleraufzeichnen durch das Fehlerverarbeitungsfeld in dem Kontexteintrag, der zur Verarbeitung der DMA-Anforderung verwendet wird (z.B. das Fehlerverarbeitungsfeld 840 in dem Kontexteintrag 535 in 8B) gesteuert.
  • Fehlerereignisse werden an die Software unter Verwendung eines Message-Signaled-Interrupt (durch eine Nachricht signalisierter Interrupt, MSI) berichtet. Die Fehlerereignisse werden durch das Fehlerereignissteuerregister gesteuert. Die Fehlerereignisinformation, wie beispielsweise Interrupt-Vektor, Liefermodus, Adresse usw. werden durch die Fehlerereignisdaten und Fehlerereignisadresse programmiert.
  • Die DMA-Neuabbildungsschaltung 135 erzeugt die Fehlerereignis-Interruptnachricht, wenn der erste Fehler in dem Fehlerprotokoll aufgezeichnet ist. Die Interruptnachricht wird automatisch deaktiviert und erfordert, dass die Software die Interrupt-Erzeugung explizit neu „scharfschaltet" (re-arm). Die DMA-Neuabbildungsschaltung 135 kann Fehler verarbeiten und sie in das Fehlerprotokoll protokollieren, bevor das Fehlerereignis von dem ersten Fehler empfangen wird und durch Software verarbeitet wird. Um es der DMA-Neuabbildungsschaltung 135 zu gestatten, mit dem Aufzeichnen von Fehlern fortzufahren, wird von der Software erwartet, dass sie das Fehlerprotokollregister mit einem neuen Fehlerprotokollbereich programmiert, bevor die in dem Fehlerprotokoll berichteten Fehler verarbeitet werden.
  • Adressfilterfehler sind Fehler, die durch die DMA-Neuabbildungsschaltung 135 erfasst werden, wenn Adressfilter von DMA-Anforderungen von E/A-Vorrichtungen einer nicht neu angeordneten Domain zugewiesen sind. Eine DMA-Anforderung, die durch Kontexteinträge in dem Adressfilter-(AF)-Feld verarbeitet werden, können Adressfilterfehler unter jeder der folgenden Bedingungen bewirken:
    • 1. Das Adressdecodieren der physischen Adresse, die in den DMA-Anforderungen angezeigt ist, identifiziert sie als peer-to-peer-Anforderung.
    • 2. Die Anforderung versucht, auf den Speicher über eine 4-KB-Seitengrenze zuzugreifen.
    • 3. Die DMA-Anforderung greift auf den Speicherbereich zu, der die Filterbitmaptabelle hostet und das Filtertabellenschutz-(FTP)-Feld wird in dem Filtersteuerregister bestätigt.
    • 4. Die DMA-Anforderung versucht, auf eine GPA außerhalb des physischen Adressraums der Domain von (2(P+27) – 1) zuzugreifen, wobei P der in dem Filterbitmapgrößenregister programmierte Wert ist.
    • 5. Der Filterbitmaptabelleneintrag, der der Seite entspricht, auf die die DMA-Anforderung zugreift, wird bestätigt, wodurch angezeigt wird, dass der Zugriff der Seite blockiert wird.
  • Anders als Adressübersetzungsfehler, die in dem Fehlerprotokoll aufgezeichnet werden können, werden die Adressfilterfehler durch das Filterfehlerregister berichtet. Das Filterfehlerregister zeichnet Information über den ersten erfassten Adressfilterfehler auf.
  • Zusätzlich zu den Übersetzungs- und Adressfilterfehlern kann es andere Error-Bedingungen geben. Die DMA-Neuabbildungsschaltung 135 kann die folgenden anderen Arten von Errors antreffen: (1) Fehlerhaftes Programmieren der DMA-Neuabbildungsregister wird durch Hardware erfasst. Beispielsweise Programmieren von Hardwareregistern, um Merkmale zu verwenden, die als nicht durch das Kapazitätsregister unterstützt berichtet werden. Die DMA-Neuabbildungsschaltung 135 kann diese Arten von allgemeinen Programmierfehlern durch das Error-Statusregister berichten. DMA-Anforderungen von einer oder mehreren Vorrichtungen können beeinträchtigt werden, bis die Error-Bedingung behoben ist; (2) Fehlerhaftes Programmieren der Datenstrukturen, wie der Kontexttabelleneinträge oder der Seitentabelleneinträge, um Merkmale außerhalb dieser durch das Kapazitätsregister berichtete zu verwenden. Diese Arten von Fehlern können durch die DMA-Neuabbildungsschaltung 135 als Teil einer Kontexteintragslast oder während eines Seitentabellendurchlaufs erfasst werden. Da diese in der Regel als Teil einer Verarbeitung einer DMA-Anforderung erfasst werden, werden sie als Übersetzungsfehler behandelt. Die Fehlergrundcodes in der Fehleraufzeichnung identifizieren die Error-Arten.
  • 10 ist ein Diagramm, das die Registergruppe 220 zeigt, welche Fehlerverarbeitungsregister gemäß einer Ausführungsform der Erfindung enthält. Die Registergruppe 220 enthält ein Fehlerereignissteuerregister (FEVENT_CTL_REG) 1010, ein Fehlerereignisdatenregister (FEVENT_DAT_REG) 1020, ein Fehlerereignisadressregister (FEVENT_ADDR_REG) 1030, ein Fehlerereignis-Oberes-Adressregister (FEVENT_UADDR_REG) 1040, ein Fehlerprotokollregister (FLOG_REG) 1050, ein Error-Statusregister (ERR_REG) 1060 und die Fehlerverarbeitungsfelder 1070.
  • Das REVENT_CTL_REG 1010 spezifiziert die Fehlerereignis-Interruptnachricht-Steuerbits. Es enthält ein Interruptnachricht-Aktivieren-(IE)-Feld 1012, ein Interruptnachricht-Neuscharfschalte-(IR)-Feld 1014 und ein Interruptnachricht-Masken-(IM)-Feld 1016 und ein Interruptnachricht-Ausstehend-(IP)-Feld (interrupt message pending field) 1018.
  • Das Interruptnachricht-Aktivieren-(IE)-Feld zeigt an, wenn der Interrupt-Dienst verfügbar ist. Wenn es negiert wird, zeigt es an, dass die Hardware keine Interruptnachricht-Anforderungen aufgeben darf. Das Feld wird beim Wiedereinstellen negiert. Wenn es bestätigt wird, zeigt es an, dass der Interrupt-Dienst verfügbar ist. Wenn eine einen Fehler erzeugende Bedingung erfasst wird, kann die DMA-Neuabbildungsschaltung 135 eine Interrupt-Anforderung ausgeben unter Verwendung der Fehlerereignisdaten und Fehlerereignisfehlerregisterwerte abhängig von dem Zustand der Interrupt-Maske und der ausstehenden (pending) Bits. Unabhängig von der Einstellung dieses Felds werden Übersetzungsfehler während der Verarbeitung einer DMA-Anforderung nur dann berichtet, wenn die zum Bearbeiten des Fehlers verwendete Fehleraufzeichnung das Fehleraufzeichnungssteuer-(FRC)-Feld negiert hat.
  • Das IR-Feld 1014 zeigt an, wenn die Fehlerereigniserzeugung auto-deaktiviert ist. Wenn eine Interruptnachricht erzeugt wird, bestätigt die DMA-Neuabbildungsschaltung 135 dieses Feld, um anzuzeigen, dass die Fehlerereigniserzeugung auto-deaktiviert ist. Die Software muss dieses Feld explizit negieren, um die Fehlerereignisse neu scharfzuschalten (re-arm).
  • Das IM-Feld 1016 zeigt die Interrupt-Maskierung an. Wenn es negiert wird, zeigt es an, dass keine Interrupt-Maskierung erfolgt. Wenn es bestätigt wird, zeigt es an, dass Software den Interrupt maskiert hat. Dei DMA-Neuabbildungsschaltung 135 darf die Interruptnachricht nicht senden.
  • Das IP-Feld 1018 zeigt einen anhängigen (pending) Interrupt an. Während das IM-Feld 1016 bestätigt ist, darf die DMA-Neuabbildungsschaltung 135 die Interruptnachricht nicht senden. Stattdessen bestätigt die DMA-Neuabbildungsschaltung 135 das IP-Feld 1018, wann immer es andernfalls die Interruptnachricht gesendet hätte. Wenn die Software den Interrupt demaskiert und wenn das IP-Feld 1018 bestätigt ist, sollte die DMA-Neuab bildungsschaltung 135 das Senden der Interruptnachricht einteilen und dieses Feld negieren, sobald die Interruptnachricht gesendet wurde.
  • Das FEVENT_DATA_REG 1020 spezifiziert die Interruptnachricht-Daten. Es enthält ein Interruptnachricht-Daten-(ID)-Feld 1025. Das ID-Feld 1025 enthält einen Datenwert in der Fehlerereignis-Interruptnachricht.
  • Das FEVENT_ADDR_REG 1030 spezifiziert die Interruptnachricht-Adresse. Die Software sollte dieses Register dadurch programmieren, dass sie in das geringere DWORD zuletzt schreibt. Es enthält ein Nachrichtenadress-(MA)-Feld 1035. Wenn Fehlerereignisse aktiviert sind, spezifiziert der Inhalt dieses Registers die DWORD-ausgerichtete Adresse für die Message Signaled Interrupt-(MSI)-Speicherschreibtransaktion.
  • Das FEVENT_UADDR_REG 1040 spezifiziert die Interruptnachricht-Adresse. Die Software sollte dieses Register programmieren, indem sie auf das geringere DWORD zuletzt schreibt. Die obere Nachrichtenadress-(MUA)-Funktion muss nur dann implementiert sein, wenn die DMA-Neuabbildungsschaltung 135 64-Bit-Nachrichtenadressen unterstützt. Wenn sie implementiert ist, spezifiziert der Inhalt dieses Registers die oberen 32 Bit einer 64-Bit-MSI-Schreibtransaktion. Wenn die DMA-Neuabbildungsschaltung 135 64-Bit-Nachrichten nicht unterstützt, wird das Register als Nur-Lese-Register behandelt.
  • Das FLOG_REG 1050 stellt die Basisadresse eines in dem Speicher ansässigen Fehlerprotokollbereichs ein. Die Software sollte dieses Register programmieren, indem sie in das geringere DWORD zuletzt schreibt. Sie enthält ein Fehlerprotokollbereichzeiger-(FLP)-Feld 1052 und ein Aktivieren-Fehler-Protokoll-(EFL)-Feld 1054. Das FLP-Feld 1052 zeigt auf die Basis eines seitenausgerichteten 4-KB-großen Fehlerprotokollbereich in dem Systemspeicher. Das EFL-Feld 1044 ist ein Steuerfeld zur Aktivierung oder Deaktivierung des Fehlerprotokolls. Wenn es negiert wird, zeigt es das Deaktivieren des Fehlerprotokolls an. Wenn dieses Feld negiert ist, wird das Fehlerprotokollbereichzeigerfeld ignoriert und die einen Fehler erzeugenden DMA-Anforderungen werden nicht aufgezeichnet. Wenn es bestätigt ist, zeigt es das Aktivieren der Verwendung des Kontexteintrags zur Verarbeitung von DMA-Anforderungen an. Die Root- und Kontexttabellen sollten im Speicher eingerichtet werden und die Basis der Root-Tabelle sollte in dem FLP-Feld 1052 bereitgestellt werden.
  • Das ERR_REG 1060 zeigt den Hardwareerror-Status an. Einträge in dieses Register negieren das Feld. Es hat ein Fehlerstatus-(FS)-Feld 1062, ein Fehlerprotokolloverflow-(FIO)-Feld 1064, und ein ungültige Programmierung (INV)-Feld 1068. Das FS-Feld 1062 wird durch die DMA-Neuabbildungsschaltung 135 bestätigt, um Fehler anzuzeigen, wenn das Fehlerprotokoll nicht aktiviert ist. Ein Softwareeintrag in das ERR_REG 1060 negiert das Feld. Das FLO-Feld 1064 wird durch die DMA-Neuabbildungsschaltung 135 bestätigt, um eine Fehlerprotokolloverflowbedingung anzuzeigen. Ein Softwareeintrag in das ERR_REG 1060 negiert dieses Feld. Das INV-Feld 1068 wird bestätigt, um ungültiges Programmieren eines Registers in der DMA-Neuabbildungsschaltungsregistern 135 anzuzeigen. Ein Softwareeintrag in das ERR_REG 1060 negiert dieses Feld.
  • Die Fehlerverarbeitungsfelder 1070 enthalten ein Fehlerverarbeitungsdeaktivierungsfeld (FPD) 1072, ein Nur-Ersten-Fehler-Verarbeiten-(PFFO)-Feld 1074, ein Blockieren-bei-Erstem-Fehler (BOFF)-Feld 1076 und ein Anhängiger-Fehler-Status-(FPS)-Feld 1078.
  • Das FPD-Feld 1072 aktiviert oder deaktiviert die Verarbeitung von Fehlern von DMA-Anforderungen, die durch den entsprechenden Kontexteintrag verarbeitet werden. Wen es negiert ist, zeigt es an, dass die Fehlerverarbeitung für DMA-Anforderungen, die durch diesen Kontexteintrag verarbeitet werden, aktiviert ist. Die DMA-Neuabbildungsschaltung 135 verarbeitet die Fehler basierend auf der Programmierung des PFFO-Felds 1074. Wenn es bestätigt ist, zeigt es an, dass die Fehlerverarbeitung für DMA-Anforderungen, die durch diesen Kontexteintrag verarbeitet sind, deaktiviert ist.
  • Das PFFO-Feld 1074 wird verwendet, um der DMA-Neuabbildungsschaltung 135 zu spezifizieren, dass sie nur die ersten Fehler für DMA-Anforderungen, die durch den entsprechenden Kontexteintrag verarbeitet werden, aufzeichnet und berichtet. Die DMA-Abbildungsschaltung 135 verwendet das Anhängiger-Fehler-Status-(FPS)-Feld 1078, um dieses Verhalten bereitzustellen. Wenn es negiert wird, zeichnet die DMA-Neuabbildungsschaltung 135 alle Fehler auf. Wenn es bestätigt wird, prüft die DMA-Neuabbildungsschaltung 135 das FPS-Feld, um zu bestimmen, ob die Fehler aufgezeichnet werden sollten. Wenn das FPS-Feld 1078 bestätigt ist, wird der Fehler ignoriert. Wenn das FPS-Feld 1078 negiert wird, wird der Fehler wie folgt verarbeitet: Bestätigen des FPS-Felds 1078, dann, wenn das Fehlerprotokollregister spezifiziert, dass das Fehlerprotokoll aktiviert ist, und das Fehlerprotokoll nicht voll ist, wird der Fehler in das Fehlerprotokoll aufgezeichnet. Wenn das Fehlerprotokoll voll ist, wird das FLO-Feld 1064 in dem Error-Statusregister bestätigt.
  • Das BOFF-Feld 1076 ist nur gültig, wenn das PFFO-Feld 1074 bestätigt ist. Bei Fehlern wertet die DMA-Neuabbildungsschaltung 135 dieses Feld nach Auswerten des PFFO-Felds 1074 aus. Wenn es negiert ist, wird der Fehler gemäß der Einstellung des PFFO-Felds 1074 verarbeitet. Wenn es bestätigt ist, wenn die Verarbeitung des PFFO-Felds 1074 das Bestätigen des FPS-Felds 1078 bewirkt, wird das P-Feld in dem Kontexteintrag negiert. Die DMA-Neuabbildungsschaltung 135 stellt sicher, dass die Aktualisierung an dem vorhandenen P-Feld für die Verarbeitung aller folgenden DMA-Anforderungen unter Verwendung dieses Kontexteintrags sichtbar ist.
  • Das FPS-Feld 1078 wird in Verbindung mit dem PFFO-Feld 1074 verwendet. Wenn das PFFO-Feld 1074 bestätigt ist und das FPS-Feld 1078 bestätigt ist, ignoriert die DMA-Neuabbildungsschaltung 135 alle Fehler, die erfasst sind, wenn die DMA-Anforderungen unter Verwendung des entsprechenden Kontexteintrags verarbeitet werden. Die Software negiert dieses Feld und flusht den Kontexteintragcache, um das Aufzeichnen von Fehlern für durch diesen Kontexteintrag verarbeitete DMA-Anforderungen neu zu starten. Wenn das PFFO-Feld 1074 bestätigt ist und das FPS-Feld 1078 negiert ist, bestätigt die DMA-Neuabbildungsschaltung 135 das FPS-Feld 1078, wenn der erste Fehler von einer DMA-Anforderung, die durch diesen Kontexteintrag verarbeitet wird, erfasst wird.
  • 11 ist ein Diagramm, das ein Fehleraufzeichner 1100 gemäß einer Ausführungsform der Erfindung zeigt. Die Fehleraufzeichnung 1100 enthält ein ADDR-Feld 1110, ein Längen-(L)-Feld 1120, ein Typ-(T)-Feld 1130, ein Fehlergrund-(FR)-Feld 1140 und ein Quellkennungs-(SID)-Feld 1160.
  • Das ADDR-Feld 110 ist die Adresse in der fehlerbehafteten DMA-Anforderung. Das am wenigsten signifikante Hostadressenbreitenbit enthält die einen Fehler erzeugende Adresse. Das L-Feld 1120 ist eine Datennutzlastgröße (z.B. Anzahl von DWORDs) in der einen Fehler erzeugenden DMA-Anforderung. Das T-Feld 1130 ist eine Speicherzugriffsart einer fehlerbehafteten DMA-Anforderung. Wenn es negiert ist, zeigt es ein DMA-Schreiben an. Wenn es bestätigt ist, zeigt es ein DMA-Lesen an. Das FR-Feld 1140 zeigt einen Grund dafür an, daß die DMA-Anforderung einen Fehler erzeugt. Es enthält eine blockierte Transaktion bei Kontext 1142, einen überschrittenen Speicherplatz 1144, eine blockierte Transaktion bei Seitentabelle 1146, ein untersagtes Lesen/Schreiben 1148, eine ungültige Kontexteintragprogrammierung 1150, eine ungültige Seitentabelleneintragprogrammierung 1152 und eine überschrittene Seitengrenze 1154. Das SID-Feld 1160 ist eine Anfordererkennung in der fehlerbehafteten DMA-Anforderung.
  • 12 ist ein Flussdiagramm, das einen Prozess 1200 zur Ausführung von Fehlerverarbeitung gemäß einer Ausführungsform der Erfindung zeigt.
  • Bei START detektiert der Prozess 1200 einen Fehler auf einer E/A-Transaktion mit einer Quellkennung SID und der Adresse GPA (Block 1210). Dann bestimmt der Prozess 1210, ob das Fehlerprotokollieren aktiviert ist (Block 1215). Wenn nicht, wird der Prozess 1200 angehalten. Andernfalls bestimmt der Prozess 1200, ob es einen anhängigen (pending) Fehler gibt (Block 1220). Wenn ja, wird der Block angehalten 1200. Andernfalls bestimmt der Block 1200, ob es erwünscht ist, nur den ersten Fehler zu protokollieren (Block 1225). Wenn nein, schreitet der Prozess 1200 zu Block 1250 voran. Andernfalls setzt der Prozess 1200 einen Fahne oder Statusindikator, um anzuzeigen, dass der Fehler aussteht (Block 1230).
  • Dann bestimmt der Prozess 1200, ob es gewünscht ist, den ersten Fehler zu blockieren (Block 1235). Wenn nein, schreitet der Prozess 12000 zu Block 1250 voran. Andernfalls markiert der Prozess 1200 den Seitentabelleneintrag als „nicht vorhanden" (Block 1240). Als nächstes schreibt der Prozess 1200 den Kontexteintrag mit dem anhängigen Fehler und vorhandenen Feldern in den Speicher (Block 1245). Dann protokolliert der Prozess 1200 die Fehleraufzeichnungen (Block 1250) und wird dann abgeschlossen.
  • 13 ist ein Flussdiagramm, das den Prozess 1250 zum Protokollieren von Fehleraufzeichnen gemäß einer Ausführungsform der Erfindung zeigt.
  • Bei START bestimmt der Prozess 1250, ob das Fehlerprotokoll vol ist (Block 1310). Wenn ja, bestätigt der Prozess 1250 einen Prozessoverflowstatus oder Fahne (Block 1315) und wird dann abgeschlossen. Andernfalls bestimmt der Prozess 1250, ob der Fehler durch dieselbe Vorrichtung oder an dieselbe Adresse erzeugt wurde, Block 1320. Dies kann durch Vergleichen der aktuellen SID mit der vorher gesicherten SID oder der aktuellen GPA mit der vorher gesicherten GPA erfolgen. Wenn der Fehler durch dieselbe Vorrichtung oder an dieselbe Adresse verursacht wird, inkrementiert der Prozess 1250 die Fehlerzählung für die Vorrichtung oder die Adresse oder aktualisiert sie (Block 1325). Als nächstes aktualisiert der Prozess 1250 die Fehlerzählung in der aktuellen Fehleraufzeichnung (Block 1330) und wird dann abgeschlossen. Wenn der Fehler nicht durch dieselbe Vorrichtung oder dieselbe Adresse bewirkt wird, setzt der Prozess 1250 den Fehlerzähler auf 1 (Block 1335. Als nächstes aktualisiert der Prozess 1250 die SID, die GPA und den Fehlerprotokollzeiger für den aktuellen Fehler (Block 1340). Dann schreibt der Prozess 150 die Fehleraufzeichnung in das Fehlerprotokoll (Block 1345) und wird dann abgeschlossen.
  • Während die Erfindung mit Bezug auf verschiedene Ausführungsformen beschrieben worden ist, wird es einem Durchschnittsfachmann klar sein, dass die Erfindung nicht auf die beschriebenen Ausführungsformen beschränkt ist, sondern mit Modifikationen und Änderungen innerhalb der Idee und des Umfangs der beigefügten Ansprüche ausgeführt werden kann. Die Beschreibung wird somit als veranschaulichend statt als einschränkend angesehen.
  • ZUSAMMENFASSUNG
  • Eine Ausführungsform der vorliegenden Erfindung ist eine Technik zur Verarbeitung von Fehlern in einer Direktzugriffsspeicher-Adressübersetzung. Eine Registergruppe speichert globale Steuer- oder Statusinformation für die Fehlerverarbeitung eines Fehlers, der durch eine von einer E/A-Vorrichtung angeforderte Eingabe/Ausgabe-(E/A)-Transaktion erzeugt wird. Eine Adressübersetzungsstruktur übersetzt eine physische Gastadresse in eine physische Hostadresse. Die physische Gastadresse entspricht der E/A-Transaktion und wird auf eine Domain abgebildet. Die Adressübersetzungsstruktur weist mindestens einen mit der Domain assozoiierten Eintrag und domainspezifische Steuerinformation für die Fehlerverarbeitung auf.

Claims (56)

  1. Vorrichtung umfassend: eine Registergruppe zum Speichern von globaler Steuer- oder Statusinformation zur Fehlerverarbeitung eines Fehlers, der durch eine von einer E/A-Vorrichtung angeforderte Eingabe/Ausgabe-(E/A)-Transaktion erzeugt wurde; und eine Adressübersetzungsstruktur zum Übersetzen einer physischen Gastadresse in eine physische Hostadresse, wobei die physische Gastadresse der E/A-Transaktion entspricht und auf eine Domain abgebildet ist, und wobei die Adressübersetzungsstruktur mindestens einen Eintrag, welcher der Domain zugeordnet ist, und domainspezifische Steuerinformation für die Fehlerverarbeitung aufweist.
  2. Vorrichtung nach Anspruch 1, wobei die Registergruppe umfasst: ein Fehlerprotokollregister zum Speichern von Aufzeichungssteuerinformation, um Fehlerinformation in einem Fehlerprotokoll aufzuzeichnen; und ein Fehlerberichtregister zum Speichern von Berichtsteuerinformation zum Berichten des Fehlers.
  3. Vorrichtung nach Anspruch 2, wobei das Fehlerprotokollregister umfasst: ein Fehlerprotokollaktivierungsfeld zum Aktivieren des Aufzeichnens der Fehlerinformation; und ein Fehlerprotokollzeiger zum Zeigen auf einen Fehlerprotokollbereich in einem Speicher, der die Fehlerinformation speichert.
  4. Vorrichtung nach Anspruch 2, wobei die Fehlerinformation eine Quellkennung, welche die E/A-Vorrichtung identifiziert, einen Fehlergrund, eine Zugriffsart, eine Datenlänge in der E/A-Transaktion und/oder eine Adresse der E/A-Transaktion enthalten.
  5. Vorrichtung nach Anspruch 4, wobei das Fehlerberichtregister umfasst: ein Fehlerereignissteuerregister zum Speichern von Interruptnachricht-Steuerinformation; ein Fehlerereignisdatenregister zum Speichern von Interruptnachricht-Daten; und ein Fehlerereignisadressregister zum Speicher der Speicheradresse für eine Interruptnachricht-Schreibaktion.
  6. Vorrichtung nach Anspruch 2, wobei die Registergruppe ferner umfasst: ein Error-Statusregister zum Speichern von Error-Statusinformation.
  7. Vorrichtung nach Anspruch 1, wobei die Adressübersetzungsstruktur umfasst: eine Root-Tabelle zum Speichern von Root-Einträgen, die durch eine Quellkennung, die die E/A-Vorrichtung identifiziert, indiziert sind; und eine Kontexttabelle, die mit der Root-Tabelle gekoppelt ist, um Kontexteinträge zu speichern, auf die durch die Root-Einträge verwiesen wird, wobei die Kontexteinträge den mindestens einen Eintrag einschließen.
  8. Vorrichtung nach Anspruch 7, wobei die Adressübersetzungsstruktur ferner umfasst: eine Mehrzahl von Mehrfachebenen-Seitentabellen, wobei jede eine konfigurierbare Größe aufweist und Seitentabelleneinträge enthält, wobei jeder der Seitentabelleneinträge eine Basis für eine Seitentabelle der nächsten Ebene oder eine Basis für die Seite der physischen Hostadresse bereitstellt.
  9. Vorrichtung nach Anspruch 7, wobei die Adressübersetzungsstruktur ferner umfasst: eine einzige Seitentabelle mit einer Größe, die von der Seitengröße und einer physischen Gastadressgröße abhängt, wobei die einzige Seitentabelle Seitentabelleneinträge enthält, wobei jeder der Seitentabelleneinträge eine Basis der Seite der physischen Hostadresse bereitstellt.
  10. Vorrichtung nach Anspruch 7, wobei jeder der Kontexteinträge umfasst: eine Domainkennung zum Identifizieren der Domain; eine Adressraum-Root zum Definieren einer Basis der physischen Hostadresse der Domain oder einer Seitentabelle in der Adressübersetzungsstruktur; mindestens ein Übersetzungsattribut zum Kennzeichnen eines Übersetzungsmechanismus, der durch die Adressübersetzungsstruktur verwendet wird; und mindestens ein Fehlerverarbeitungsattribut zum Kennzeichnen der domainspezifischen Steuerinformation für die durch den Domainspezifizierer spezifizierte Domain.
  11. Vorrichtung nach Anspruch 10, wobei die Adressübersetzungsstruktur ferner umfasst: einen Base/Bound-Übersetzungsmechanismus, der die Adressraum-Root als Basis der Seite der physischen Hostadresse verwendet.
  12. Vorrichtung nach Anspruch 10, wobei die domainspezifische Steuerinformation ein Anhängiger-Fehler-Statusfeld, ein Blockieren-bei-Erstem-Fehler-Feld, ein Ersten-Fehler-Verarbeiten-Feld und ein Fehlerverarbeitungs-Deaktivierungsfeld enthält.
  13. Vorrichtung nach Anspruch 10, wobei jeder der Kontexteinträge ferner umfasst: ein Adressfilterfeld zum Ermöglichen eines Adressfilterns unter Verwendung einer Bitmaptabelle.
  14. Vorrichtung nach Anspruch 13, wobei es sich bei dem Fehler um einen Adressübersetzungsfehler oder einen Adressfilterfehler handelt.
  15. Verfahren umfassend: Speichern globaler Steuer- oder Statusinformation in einer Registergruppe zur Fehlerverarbeitung eines Fehlers, der durch eine von einer E/A-Vorrichtung angeforderte Eingabe/Ausgabe-(E/A)-Transaktion erzeugt wurde; und Übersetzen einer physischen Gastadresse in eine physische Hostadresse unter Verwendung einer Adressübersetzungsstruktur, wobei die physische Gastadresse der E/A-Transaktion entspricht und auf eine Domain abgebildet wird, wobei die Adressübersetzungsstruktur mindestens einen der Domain zugeordneten Eintrag und domainspezifische Steuerinformation für die Fehlerverarbeitung aufweist.
  16. Verfahren nach Anspruch 15, wobei das Speichern der globalen Steuer- und Statusinformation umfasst: Speichern von Aufzeichnungssteuerinformation in einem Fehlerprotokollregister zum Aufzeichnen von Fehlerinformation in einem Fehlerprotokoll; und Speichern von Berichtsteuerinformation in einem Fehlerberichtregister zum Berichten des Fehlers.
  17. Verfahren nach Anspruch 16, wobei das Speichern von Aufzeichnungssteuerinformation umfasst: Aktivieren des Aufzeichnens der Fehlerinformation unter Verwendung eines Fehlerprotokollaktivierungsfelds; und Zeigen auf einen Fehlerprotokollbereich in einem Speicher, der die Fehlerinformation speichert, unter Verwendung eines Fehlerprotokollzeigers.
  18. Verfahren nach Anspruch 16, wobei die Fehlerinformation eine Quellkennung, die die E/A-Vorrichtung identifiziert, einen Fehlergrund, eine Zugriffsart, eine Datenlänge in der E/A-Transaktion und/oder eine Adresse der E/A-Transaktion enthält.
  19. Verfahren nach Anspruch 18, wobei das Speichern von Berichtsteuerinformation umfasst: Speichern von Interruptnachricht-Steuerinformation in einem Fehlerereignissteuerregister; Speichern von Interruptnachricht-Daten in einem Fehlerereignisdatenregister; und Speichern der Speicheradresse für eine Interruptnachricht-Schreibtransaktion in einem Fehlerereignisadressregister.
  20. Verfahren nach Anspruch 16, wobei das Speichern globaler Steuer- oder Statusinformation ferner umfasst: Speichern von Error-Statusinformation in einem Error-Statusregister.
  21. Verfahren nach Anspruch 15, wobei das Übersetzen umfasst: Speichern von Root-Einträgen, die durch eine die E/A-Vorrichtung indentifizierende Quellkennung indiziert werden, in einer Root-Tabelle; und Speichern von Kontexteinträgen, auf die durch die Root-Einträge verwiesen wird, in einer Kontexttabelle, wobei die Kontexteinträge den mindestens einen Eintrag enthalten.
  22. Verfahren nach Anspruch 21, wobei das Übersetzen ferner umfasst: Bereitstellen einer Basis für eine Seitentabelle der nächsten Ebene oder einer Basis für eine Seite der physischen Hostadresse unter Verwendung jedes Seitentabelleneintrags in einer Mehrzahl von Mehrfachebenen-Seitentabellen, wobei jede der Seitentabellen eine konfigurierbare Größe aufweist.
  23. Verfahren nach Anspruch 21, wobei das Übersetzen ferner umfasst: Bereitstellen einer Basis einer Seite der physischen Hostadresse unter Verwendung jedes Seitentabelleneintrags in einer einfachen Seitentabelle mit einer Größe, die von der Seitengröße und einer physischen Gastadressengröße abhängt.
  24. Verfahren nach Anspruch 21, wobei das Speichern der Kontexteinträge umfasst: Identifizieren der Domain unter Verwendung einer Domainkennung; Definieren einer Basis der physischen Hostadresse der Domain oder einer Seitentabelle in der Adressübersetzungsstruktur unter Verwendung einer Adressraum-Root; Kennzeichnen eines von der Adressübersetzungsstruktur verwendeten Übersetzungsmechanismus unter Verwendung mindestens eines Übersetzungsattributs; und Kennzeichnen der domainspezifischen Steuerinformation für die durch den Domainspezifizierer spezifizierte Domain unter Verwendung mindestens eines Fehlerverarbeitungsattributs.
  25. Verfahren nach Anspruch 24, wobei das Übersetzen ferner umfasst: Verwenden der Adressraum-Root als Basis der Seite der physischen Hostadresse in einem Base/Bound-Übersetzungsmechanismus.
  26. Verfahren nach Anspruch 24, wobei die domainspezifische Steuerinformation ein Anhängiger-Fehler-Feld, ein Blockieren-bei-Erstem-Fehler-Feld, ein Ersten-Fehler-Verarbeiten-Feld und ein Fehlerverarbeitungsdeaktivierungsfeld enthalten.
  27. Verfahren nach Anspruch 24, wobei das Speichern der Kontexteinträge ferner umfasst: Ermöglichen von Adressfilterung unter Verwendung einer Bitmap-Tabelle in einem Adressfilterfeld.
  28. Verfahren nach Anspruch 27, wobei der Fehler ein Adressübersetzungsfehler oder ein Adressfilterfehler ist.
  29. System, umfassend: einen Speicher; eine Eingabe/Ausgabe-(E/A)-Vorrichtung, die eine physische Gastadresse in einer E/A-Transaktion erzeugt, um auf den Speicher zuzugreifen; und ein mit der E/A-Vorrichtung und dem Speicher gekoppeltes Chipset, wobei das Chipset eine Schaltung enthält, wobei die Schaltung umfasst: eine Registergruppe zum Speichern globaler Steuer- oder Statusinformation für die Fehlerverarbeitung eines Fehlers, der durch die E/A-Transaktion erzeugt wurde; und eine Adressübersetzungstruktur zum Übersetzen der physischen Gastadresse in eine physische Hostadresse, wobei die physische Gastadresse der E/A-Transaktion entspricht und auf eine Domain abgebildet wird, wobei die Adressübersetzungsstruktur mindestens einen der Domain zugeordneten Eintrag und domainspezifische Steuerinformation für die Fehlerverarbeitung aufweist.
  30. System nach Anspruch 29, wobei die Registergruppe umfasst: ein Fehlerprotokollregister zum Speichern von Aufzeichnungssteuerinformation zum Aufzeichnen von Fehlerinformation in einem Fehlerprotokoll; und ein Fehlerberichtregister zum Speichern von Berichtsteuerinformation zum Berichten des Fehlers.
  31. System nach Anspruch 30, wobei das Fehlerprotokollregister umfasst: ein Fehlerprotokollaktivierungsfeld zum Aktivieren des Aufzeichnens der Fehlerinformation; und einen Fehlerprotokollzeiger zum Zeigen auf einen Fehlerprotokollbereich in einem Speicher, der die Fehlerinformation speichert.
  32. System nach Anspruch 30, wobei die Fehlerinformation eine Quellkennung, die die E/A-Vorrichtung identifiziert, einen Fehlergrund, eine Zugriffsart, eine Datenlänge in der E/A-Transaktion und/oder eine Adresse der E/A-Transaktion enthält.
  33. System nach Anspruch 32, wobei das Fehlerberichtregister umfasst: ein Fehlersteuerregister zum Steuern von Interruptnachricht-Steuerinformation; ein Fehlerereignisdatenregister zum Speichern von Interruptnachricht-Daten; ein Fehlerereignisadressregister zum Speichern der Speicheradresse für eine Interruptnachricht-Schreibtransaktion.
  34. System nach Anspruch 30, wobei die Registergruppe ferner umfasst: ein Error-Statusregister zum Speichern von Error-Statusinformation.
  35. System nach Anspruch 29, wobei die Adressübersetzungsstruktur umfasst: eine Root-Tabelle zum Speichern von Root-Einträgen, die durch eine die E/A-Vorrichtung identifizierende Quellkennung indiziert sind; und Kontexttabelle, die mit der Root-Tabelle gekoppelt ist, um Kontexteinträge zu speichern, auf die durch die Root-Einträge verwiesen wird, wobei die Kontexteinträge den mindestens einen Eintrag enthalten.
  36. System nach Anspruch 35, wobei die Adressübersetzungsstruktur ferner umfasst: eine Mehrzahl von Mehrfachebenen-Seitentabellen, wobei jede eine konfigurierbare Größe aufweist und Seitentabelleneinträge enthält, wobei jeder der Seitentabelleneinträge eine Basis eine Seitentabelle der nächsten Ebene oder eine Basis einer Seite der physischen Hostadresse zur Verfügung stellt.
  37. System nach Anspruch 35, wobei die Adressübersetzungsstruktur ferner umfasst: eine einzelne Seitentabelle mit einer Größe, die von der Seitengröße und der physischen Gastadressengröße abhängt, wobei die einzelnen Seitentabelle Seitentabelleneinträge enthält, wobei jeder der Seitentabelleneinträge eine Basis einer Seite der physischen Hostadresse bereitstellt.
  38. System nach Anspruch 35, wobei jeder der Kontexteinträge umfasst: eine Domainkennung zum Identifzieren der Domain; eine Adressraum-Root zum Definieren der Basis der physischen Hostadresse der Domain oder einer Seitentabelle in der Adressübersetzungsstrukur; mindestens ein Übersetzungsattribut zum Kennzeichnen eines Übersetzungsmechanismus, der von der Adressübersetzungsstruktur verwendet wird; und mindestens ein Fehlerverarbeitungsattribut zum Kennzeichnen der domainspezifischen Steuerinformation für die durch den Domainspezifizierer spezifizierten Domain.
  39. System nach Anspruch 38, wobei die Adressübersetzungsstruktur weiterhin umfasst: einen Base/Bound-Übersetzungsmechanismus, welcher die Adressraum-Root als Basis einer Seite der physischen Hostadresse verwendet.
  40. System nach Anspruch 38, wobei die domainspezifische Steuerinformation ein Anhängiger-Fehler-Statusfeld, ein Blockieren-bei-Erstem-Fehler-Feld, ein Ersten-Fehler-Verarbeiten-Feld und ein Fehlerverarbeitungs-Deaktivierungsfeld enthalten.
  41. System nach Anspruch 38, wobei jeder der Kontexteinträge ferner umfasst: ein Adressfilterfeld zum Ermöglichen des Adressfilterns unter Verwendung einer Bitmaptabelle.
  42. System nach Anspruch 41, wobei der Fehler ein Adressübersetzungsfehler oder ein Adressfilterfehler ist.
  43. Herstellungsartikel, umfassend: ein maschinen-zugängliches Medium, das Daten enthält, die, wenn auf sie durch eine Maschine zugegriffen wird, bewirken, dass die Maschine Operationen ausführt, die umfassen: Speichern globaler Steuer- oder Statusinformation in einer Registergruppe für die Fehlerverarbeitung eines Fehlers, der durch eine von einer E/A-Vorrichtung angeforderten Eingabe/Ausgabe-(E/A)-Transaktion erzeugt wird; und Übersetzen einer physischen Gastadresse in eine physische Hostadresse unter Verwendung einer Adressübersetzungsstruktur, wobei die physische Gastadresse der E/A-Transaktion entspricht und auf eine Domain abgebildet wird, wobei die Adressübersetzungsstruktur mindestens einen der Domain zugeordneten Eintrag und domainspezifische Steuerinformation für die Fehlerverarbeitung aufweist.
  44. Herstellungsartikel nach Anspruch 43, wobei die Daten, die bewirken, dass die Maschine das Speichern der globalen Steuer- und Statusinformation ausführt, Daten umfassen, die bewirken, dass die Maschine Operationen ausführt, die umfassen: Speichern von Aufzeichnungssteuerinformation in einem Fehlerprotokollregister zum Aufzeichnen von Fehlerinformation in einem Fehlerprotokoll; und Speichern von Berichtsteuerinformation in einem Fehlerberichtregister, um den Fehler zu berichten.
  45. Herstellungsartikel nach Anspruch 44, wobei die Daten, die bewirken, dass die Maschine das Speichern der Aufzeichnungssteuerinformation ausführt, Daten umfassen, die bewirken, dass die Maschine Operationen ausführt, die umfassen: Aktivieren des Aufzeichnens der Fehlerinformation unter Verwendung eines Fehlerprotokollaktivierungsfelds; und Zeigen auf einen Fehlerprotokollbereich in einem Speicher, der Fehlerinformation speichert, unter Verwendung eines Fehlerprotokollzeigers.
  46. Herstellungsartikel nach Anspruch 44, wobei die Fehlerinformation eine die E/A-Vorrichtung identifizierende Quellkennung, einen Fehlergrund, eine Zugriffsart, eine Datenlänge in der E/A-Transaktion und eine Adresse der E/A-Transaktion enthalten.
  47. Herstellungsartikel nach Anspruch 46, wobei die Daten, die bewirken, dass die Maschine das Speichern von Aufzeichnungssteuerinformation ausführt, Daten umfassen, die bewirken, dass die Maschine Operationen ausführt, die umfassen: Speichern von Interruptnachricht-Steuerinformation in einem Fehlerereignissteuerregister; Speichern von Interruptnachricht-Daten in einem Fehlerereignisdatenregister; und Speichern einer Speicheradresse für eine Interruptnachricht-Schreibtransaktion in einem Fehlerereignisadressregister.
  48. Herstellungsartikel nach Anspruch 44, wobei die Daten, die bewirken, dass die Maschine das Speichern der globalen Steuer- oder Statusinformation ausführt, ferner Daten umfassen, die bewirken, dass die Maschine Operationen ausführt, die umfassen: Speichern von Error-Statusinformation in einem Error-Statusregister.
  49. Herstellungsartikel nach Anspruch 43, wobei die Daten, die bewirken, dass die Maschine eine Übersetzung ausführt, Daten umfassen, die bewirken, dass die Maschine Operationen ausführt, die umfassen: Speichern von Root-Einträgen, die durch eine die E/A-Vorrichtung identifizierende Quellkennung indiziert werden, in eine Root-Tabelle; und Speichern von Kontexteinträgen, auf die durch die Root-Einträge verwiesen wird, in eine Kontexttabelle, wobei die Kontexttabelle den mindestens einen Eintrag umfasst.
  50. Herstellungsartikel nach Anspruch 49, wobei die Daten, die bewirken, dass die Maschine eine Übersetzung ausführt, ferner Daten umfassen, die bewirken, dass die Maschine Operationen ausführt, die umfassen: Bereitstellen einer Basis einer Seitentabelle der nächsten Ebene oder einer Basis einer Seite der physischen Hostadresse unter Verwendung jedes Seiteneintrags in einer Mehrzahl von Mehrfachebenen-Seitentabellen, wobei jede der Seitentabellen eine konfigurierbare Größe aufweist.
  51. Herstellungsartikel nach Anspruch 49, wobei die Daten, die bewirken, dass die Maschine eine Übersetzung ausführt, ferner Daten umfassen, die bewirken, dass die Maschine Operationen ausführt, die umfassen: Bereitstellen einer Basis einer Seite der physischen Hostadresse unter Verwendung jedes der Seitentabelleneinträge in einer einzelnen Seitentabelle mit einer Größe, die von der Seitengröße und der Größe der physischen Gastadresse abhängt.
  52. Herstellungsartikel nach Anspruch 49, wobei die Daten, die bewirken, dass die Maschine das Speichern der Kontexteinträge ausführt, Daten umfasst, die bewirken, dass die Maschine Operationen ausführt, die umfassen: Identifizieren der Domain unter Verwendung einer Domainkennung; Definieren einer Basis der physischen Hostadresse der Domain oder einer Seitentabelle in der Adressübersetzungsstruktur unter Verwendung einer Adressraum-Root; Kennzeichnen eines Übersetzungsmechanismus, der von der Adressübersetzungsstruktur verwendet wird, unter Verwendung mindestens eines Übersetzungsattributs; und Kennzeichnen der domainspezifischen Steuerinformation für die durch den Domainspezifizierer spezifizierten Domain unter Verwendung mindestens eines Fehlerverarbeitungsattributs.
  53. Herstellungsartikel nach Anspruch 52, wobei die Daten, die bewirken, dass die Maschine eine Übersetzung ausführt, ferner Daten umfassen, die bewirken, dass die Maschine Operationen ausführt, die umfassen: Verwenden der Adressraum-Root als Basis einer Seite der physischen Hostadresse in einem Base/Bound-Übersetzungsmechanismus.
  54. Herstellungsartikel nach Anspruch 52, wobei die domainspezifische Steuerinformation ein Anhängiger-Fehler-Statusfeld, ein Blockieren-bei-Erstem-Fehler-Feld, ein Ersten-Fehler-Bearbeiten-Feld und ein Fehlerverarbeitungsdeaktivierungsfeld enthalten.
  55. Herstellungsartikel nach Anspruch 52, wobei die Daten, die bewirken, dass die Maschine das Speichern der Kontexteinträge ausführt, ferner Daten umfasst, die bewirken, dass die Maschine Operationen ausführt, die umfassen: Aktivieren eines Adressfilterns unter Verwendung einer Bitmap-Tabelle in einem Adressfilterfeld.
  56. Herstellungsartikel nach Anspruch 55, wobei der Fehler ein Adressübersetzungsfehler oder ein Adressfilterfehler ist.
DE112005002405.9T 2004-09-30 2005-09-21 Fehlerverarbeitung für Direktspeicherzugriffs-Adreßübersetzung Expired - Fee Related DE112005002405B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/956,630 US7340582B2 (en) 2004-09-30 2004-09-30 Fault processing for direct memory access address translation
US10/956,630 2004-09-30
PCT/US2005/033933 WO2006039177A1 (en) 2004-09-30 2005-09-21 Fault processing for direct memory access address translation

Publications (2)

Publication Number Publication Date
DE112005002405T5 true DE112005002405T5 (de) 2007-08-16
DE112005002405B4 DE112005002405B4 (de) 2018-05-09

Family

ID=35480953

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112005002405.9T Expired - Fee Related DE112005002405B4 (de) 2004-09-30 2005-09-21 Fehlerverarbeitung für Direktspeicherzugriffs-Adreßübersetzung

Country Status (9)

Country Link
US (1) US7340582B2 (de)
JP (1) JP4688879B2 (de)
KR (1) KR100915714B1 (de)
CN (1) CN100498726C (de)
DE (1) DE112005002405B4 (de)
GB (1) GB2432244B (de)
HK (1) HK1098223A1 (de)
TW (1) TWI315846B (de)
WO (1) WO2006039177A1 (de)

Families Citing this family (79)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7127566B2 (en) * 2003-12-18 2006-10-24 Intel Corporation Synchronizing memory copy operations with memory accesses
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
US7886126B2 (en) * 2005-01-14 2011-02-08 Intel Corporation Extended paging tables to map guest physical memory addresses from virtual memory page tables to host physical memory addresses in a virtual machine system
US7428626B2 (en) * 2005-03-08 2008-09-23 Microsoft Corporation Method and system for a second level address translation in a virtual machine environment
US20060288130A1 (en) * 2005-06-21 2006-12-21 Rajesh Madukkarumukumana Address window support for direct memory access translation
US20070074067A1 (en) * 2005-09-29 2007-03-29 Rothman Michael A Maintaining memory reliability
US7555628B2 (en) * 2006-08-15 2009-06-30 Intel Corporation Synchronizing a translation lookaside buffer to an extended paging table
US7590817B2 (en) * 2006-10-17 2009-09-15 International Business Machines Corporation Communicating with an I/O device using a queue data structure and pre-translated addresses
US7506084B2 (en) * 2006-10-17 2009-03-17 International Business Machines Corporation Method for communicating with an I/O adapter using cached address translations
US8769168B2 (en) * 2006-10-17 2014-07-01 International Business Machines Corporation Method for communicating with a network adapter using a queue data structure and cached address translations
US7685401B2 (en) * 2006-12-27 2010-03-23 Intel Corporation Guest to host address translation for devices to access memory in a partitioned system
US8239657B2 (en) * 2007-02-07 2012-08-07 Qualcomm Incorporated Address translation method and apparatus
US7689733B2 (en) * 2007-03-09 2010-03-30 Microsoft Corporation Method and apparatus for policy-based direct memory access control
US8161243B1 (en) * 2007-09-28 2012-04-17 Intel Corporation Address translation caching and I/O cache performance improvement in virtualized environments
US20090235004A1 (en) * 2008-03-14 2009-09-17 International Business Machines Corporation Message Signal Interrupt Efficiency Improvement
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
US9069672B2 (en) * 2009-06-12 2015-06-30 Intel Corporation Extended fast memory access in a multiprocessor computer system
US8473661B2 (en) * 2009-08-14 2013-06-25 Cadence Design Systems, Inc. System and method for providing multi-process protection using direct memory mapped control registers
GB2474250B (en) * 2009-10-07 2015-05-06 Advanced Risc Mach Ltd Video reference frame retrieval
DE102011014450B4 (de) * 2010-03-31 2013-03-28 Intel Corporation Aktiven Speicher für virtuelle Maschinen mit gerichtetem I/O im laufenden Betrieb tauschen (Hot-Swapping)
US8645611B2 (en) 2010-03-31 2014-02-04 Intel Corporation Hot-swapping active memory for virtual machines with directed I/O
US8505032B2 (en) 2010-06-23 2013-08-06 International Business Machines Corporation Operating system notification of actions to be taken responsive to adapter events
US8639858B2 (en) * 2010-06-23 2014-01-28 International Business Machines Corporation Resizing address spaces concurrent to accessing the address spaces
US8745292B2 (en) 2010-06-23 2014-06-03 International Business Machines Corporation System and method for routing I/O expansion requests and responses in a PCIE architecture
US8621112B2 (en) 2010-06-23 2013-12-31 International Business Machines Corporation Discovery by operating system of information relating to adapter functions accessible to the operating system
US8478922B2 (en) 2010-06-23 2013-07-02 International Business Machines Corporation Controlling a rate at which adapter interruption requests are processed
US8635430B2 (en) 2010-06-23 2014-01-21 International Business Machines Corporation Translation of input/output addresses to memory addresses
US8549182B2 (en) 2010-06-23 2013-10-01 International Business Machines Corporation Store/store block instructions for communicating with adapters
US9342352B2 (en) 2010-06-23 2016-05-17 International Business Machines Corporation Guest access to address spaces of adapter
US8645767B2 (en) 2010-06-23 2014-02-04 International Business Machines Corporation Scalable I/O adapter function level error detection, isolation, and reporting
US8510599B2 (en) 2010-06-23 2013-08-13 International Business Machines Corporation Managing processing associated with hardware events
US9213661B2 (en) 2010-06-23 2015-12-15 International Business Machines Corporation Enable/disable adapters of a computing environment
US8918573B2 (en) 2010-06-23 2014-12-23 International Business Machines Corporation Input/output (I/O) expansion response processing in a peripheral component interconnect express (PCIe) environment
US8683108B2 (en) 2010-06-23 2014-03-25 International Business Machines Corporation Connected input/output hub management
US8504754B2 (en) 2010-06-23 2013-08-06 International Business Machines Corporation Identification of types of sources of adapter interruptions
US8645606B2 (en) 2010-06-23 2014-02-04 International Business Machines Corporation Upbound input/output expansion request and response processing in a PCIe architecture
US8615622B2 (en) 2010-06-23 2013-12-24 International Business Machines Corporation Non-standard I/O adapters in a standardized I/O architecture
US9195623B2 (en) 2010-06-23 2015-11-24 International Business Machines Corporation Multiple address spaces per adapter with address translation
US8650337B2 (en) 2010-06-23 2014-02-11 International Business Machines Corporation Runtime determination of translation formats for adapter functions
US8572635B2 (en) 2010-06-23 2013-10-29 International Business Machines Corporation Converting a message signaled interruption into an I/O adapter event notification
US8468284B2 (en) 2010-06-23 2013-06-18 International Business Machines Corporation Converting a message signaled interruption into an I/O adapter event notification to a guest operating system
US8626970B2 (en) 2010-06-23 2014-01-07 International Business Machines Corporation Controlling access by a configuration to an adapter function
US8615645B2 (en) 2010-06-23 2013-12-24 International Business Machines Corporation Controlling the selectively setting of operational parameters for an adapter
US8650335B2 (en) 2010-06-23 2014-02-11 International Business Machines Corporation Measurement facility for adapter functions
US8566480B2 (en) 2010-06-23 2013-10-22 International Business Machines Corporation Load instruction for communicating with adapters
US8635385B2 (en) * 2010-07-16 2014-01-21 Advanced Micro Devices, Inc. Mechanism to handle peripheral page faults
US20120072638A1 (en) * 2010-09-16 2012-03-22 Unisys Corp. Single step processing of memory mapped accesses in a hypervisor
EP2732397B1 (de) * 2011-07-12 2020-02-26 Hewlett-Packard Development Company, L.P. Computervorrichtung mit einem port und einer gastdomäne
CN103827776B (zh) 2011-09-30 2017-11-07 英特尔公司 通过pci高速组件减少功耗的活动状态功率管理(aspm)
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
US10241810B2 (en) 2012-05-18 2019-03-26 Nvidia Corporation Instruction-optimizing processor with branch-count table in hardware
US20140189310A1 (en) 2012-12-27 2014-07-03 Nvidia Corporation Fault detection in instruction translations
US9015400B2 (en) * 2013-03-05 2015-04-21 Qualcomm Incorporated Methods and systems for reducing the amount of time and computing resources that are required to perform a hardware table walk (HWTW)
US9330026B2 (en) 2013-03-05 2016-05-03 Qualcomm Incorporated Method and apparatus for preventing unauthorized access to contents of a register under certain conditions when performing a hardware table walk (HWTW)
US10108424B2 (en) 2013-03-14 2018-10-23 Nvidia Corporation Profiling code portions to generate translations
US9424138B2 (en) 2013-06-14 2016-08-23 Nvidia Corporation Checkpointing a computer hardware architecture state using a stack or queue
US9965320B2 (en) * 2013-12-27 2018-05-08 Intel Corporation Processor with transactional capability and logging circuitry to report transactional operations
US9329946B2 (en) 2014-02-27 2016-05-03 International Business Machines Corporation Salvaging hardware transactions
US9336097B2 (en) 2014-02-27 2016-05-10 International Business Machines Corporation Salvaging hardware transactions
US9645879B2 (en) * 2014-02-27 2017-05-09 International Business Machines Corporation Salvaging hardware transactions with instructions
US9733847B2 (en) * 2014-06-02 2017-08-15 Micron Technology, Inc. Systems and methods for transmitting packets in a scalable memory system protocol
US9753793B2 (en) * 2014-06-30 2017-09-05 Intel Corporation Techniques for handling errors in persistent memory
US9514058B2 (en) * 2014-12-22 2016-12-06 Texas Instruments Incorporated Local page translation and permissions storage for the page window in program memory controller
GB2536199B (en) 2015-03-02 2021-07-28 Advanced Risc Mach Ltd Memory management
GB2536200B (en) * 2015-03-02 2021-08-18 Advanced Risc Mach Ltd Memory management
US10776192B2 (en) 2015-09-17 2020-09-15 Hewlett Packard Enterprise Development Lp Memory store error check
US10061714B2 (en) * 2016-03-18 2018-08-28 Oracle International Corporation Tuple encoding aware direct memory access engine for scratchpad enabled multicore processors
US10048881B2 (en) 2016-07-11 2018-08-14 Intel Corporation Restricted address translation to protect against device-TLB vulnerabilities
US10541044B2 (en) 2016-10-31 2020-01-21 Qualcomm Incorporated Providing efficient handling of memory array failures in processor-based systems
US10394711B2 (en) * 2016-11-30 2019-08-27 International Business Machines Corporation Managing lowest point of coherency (LPC) memory using a service layer adapter
US11372787B2 (en) * 2017-12-09 2022-06-28 Intel Corporation Unified address space for multiple links
US11893423B2 (en) 2019-09-05 2024-02-06 Nvidia Corporation Techniques for configuring a processor to function as multiple, separate processors
US11579925B2 (en) 2019-09-05 2023-02-14 Nvidia Corporation Techniques for reconfiguring partitions in a parallel processing system
US11249905B2 (en) * 2019-09-05 2022-02-15 Nvidia Corporation Techniques for configuring a processor to function as multiple, separate processors
US11663036B2 (en) 2019-09-05 2023-05-30 Nvidia Corporation Techniques for configuring a processor to function as multiple, separate processors
CN114780283B (zh) * 2022-06-20 2022-11-01 新华三信息技术有限公司 一种故障处理的方法及装置

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4926322A (en) 1987-08-03 1990-05-15 Compag Computer Corporation Software emulation of bank-switched memory using a virtual DOS monitor and paged memory management
JPH06242977A (ja) * 1993-02-16 1994-09-02 Mitsubishi Electric Corp 1チップマイクロプロセッサ
US5685011A (en) * 1995-05-15 1997-11-04 Nvidia Corporation Apparatus for handling failures to provide a safe address translation in an improved input/output architecture for a computer system
US5931954A (en) * 1996-01-31 1999-08-03 Kabushiki Kaisha Toshiba I/O control apparatus having check recovery function
AUPO648397A0 (en) * 1997-04-30 1997-05-22 Canon Information Systems Research Australia Pty Ltd Improvements in multiprocessor architecture operation
US6507898B1 (en) * 1997-04-30 2003-01-14 Canon Kabushiki Kaisha Reconfigurable data cache controller
JP4298006B2 (ja) * 1997-04-30 2009-07-15 キヤノン株式会社 画像プロセッサ及びその画像処理方法
US6414687B1 (en) * 1997-04-30 2002-07-02 Canon Kabushiki Kaisha Register setting-micro programming system
US6279050B1 (en) * 1998-12-18 2001-08-21 Emc Corporation Data transfer apparatus having upper, lower, middle state machines, with middle state machine arbitrating among lower state machine side requesters including selective assembly/disassembly requests
US6625688B1 (en) * 1999-05-10 2003-09-23 Delphi Technologies, Inc. Method and circuit for analysis of the operation of a microcontroller using signature analysis of memory
US6594785B1 (en) * 2000-04-28 2003-07-15 Unisys Corporation System and method for fault handling and recovery in a multi-processing system having hardware resources shared between multiple partitions
US6708291B1 (en) * 2000-05-20 2004-03-16 Equipe Communications Corporation Hierarchical fault descriptors in computer systems

Also Published As

Publication number Publication date
US20060075285A1 (en) 2006-04-06
GB2432244A (en) 2007-05-16
KR100915714B1 (ko) 2009-09-04
CN100498726C (zh) 2009-06-10
GB2432244B (en) 2008-10-08
TWI315846B (en) 2009-10-11
TW200627270A (en) 2006-08-01
JP2008515057A (ja) 2008-05-08
WO2006039177A1 (en) 2006-04-13
DE112005002405B4 (de) 2018-05-09
CN101031888A (zh) 2007-09-05
HK1098223A1 (en) 2007-07-13
GB0704416D0 (en) 2007-04-18
KR20070047845A (ko) 2007-05-07
US7340582B2 (en) 2008-03-04
JP4688879B2 (ja) 2011-05-25

Similar Documents

Publication Publication Date Title
DE112005002405B4 (de) Fehlerverarbeitung für Direktspeicherzugriffs-Adreßübersetzung
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
DE112005002328T5 (de) Cachespeicherungsunterstützung für Direktspeicherzugriffsadreßübersetzung
DE112018002951B4 (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
DE10297433B4 (de) Speicherverwaltungseinheit, Verfahren zum Bereitstellen einer Speicherzugriffssicherheit auf der Basis einer linearen Adresse und Prozessor
DE102006061939B4 (de) Verfahren und Vorrichtung zum Zugriff auf eine speicherabgebildete Vorrichtung durch einen Gast
DE112006001642T5 (de) Adressfensterunterstützung für Direktspeicherzugriffsumsetzung
DE3688978T2 (de) Seitenspeicherverwaltungseinheit mit der fähigkeit nach wahl mehrere adressräume zu unterstützen.
DE602004011018T2 (de) Ungültigkeitserklärung eines speichers und löschen von puffereinträgen
DE112017001027B4 (de) Seitenfehlerbehebung
DE102007062744B4 (de) Guest-Host-Adressübersetzung für den Zugriff von Geräten auf einen Speicher in einem partitionierten System
DE112007001988T5 (de) Gemeinsames Nutzen von Informationen durch Gäste in einer Virtuelle-Maschine-Umgebung
DE69029504T2 (de) Verfahren zum Übersetzen und Kopieren von Adressen
DE69732181T2 (de) Verfahren und gerät zum zwischenspeichern von systemverwaltungsinformationen mit anderen informationen
DE102019105879A1 (de) Verwaltung von kohärenten Verknüpfungen und Mehr-Ebenen-Speicher
DE102014014076A1 (de) Reduzierte Adressenkonvertierung mit mehreren Seitengrößen
DE102010035603A1 (de) Bereitstellen von Hardwareunterstützung für gemeinsam benutzten virtuellen Speicher zwischen physischem Lokal- und Fernspeicher
DE102016001591A1 (de) System und Verfahren für Copy-On-Write auf einer SSD
DE202010018020U1 (de) Opportunistische Verbesserung einer MMIO-Anfrageabwicklung aufgrund eines Zielberichts von Raumerfordernissen
DE102009049078A1 (de) Verwendung von Ausführer-Wissen über Speicherregion-Ordnungsanforderungen zum Modifizieren von Transaktionsattributen
DE102013209643A1 (de) Mechanismus für optimierte Nachrichtenaustauschdatenübertragung zwischen Nodelets innerhalb eines Plättchens
DE112021005873T5 (de) Speichermigration in einer multi-host-datenverarbeitungsumgebung
DE10297686B4 (de) System und Verfahren zum Steuern der Zugriffe zwischen einzelnen Geräten innerhalb eines Computersystems
DE102021127104A1 (de) Anwendung eines Cache-Kohärenzprotokolls mit default shared state

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
R016 Response to examination communication
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee