-
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 2
p = P und 2
q = 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:
-
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.