-
GEBIET DER ERFINDUNG
-
Die
vorliegende Erfindung betrifft allgemein Mikroprozessoren. Insbesondere
betrifft die vorliegende Erfindung die Eingabe/Ausgabe(I/O)-Virtualisierung.
-
ALLGEMEINER STAND DER TECHNIK
-
In
dem Maße,
wie die Architekturen von Mikroprozessoren immer komplexer werden,
um Hochleistungsanwendungen zu unterstützen, wird die I/O-Verwaltung
immer anspruchsvoller. Bestehende Techniken, die sich dem Problem
der I/O-Verwaltung widmen, sind mit einer Reihe von Nachteilen behaftet.
Eine Technik arbeitet ausschließlich
mit auf Software basierender I/O-Virtualisierung, um die I/O einer virtuellen
Maschine (VM) zu unterstützen.
Diese Technik hat nur begrenzte Funktionalität, Leistung und Zuverlässigkeit.
-
Die
Funktionalität,
die von dem Gast-Betriebssystem (OS) und den Gast-Anwendungen gesehen
wird, ist durch die Funktionalität
begrenzt, die durch die virtuellen Geräte unterstützt wird, die in der VM-Monitor(VMM)-Software
emuliert wird. Die Gast-I/O-Operationen werden durch die VMM erfaßt und stellvertretend
ausgeführt
oder emuliert, bevor sie an die zugrundeliegende Hardware der physischen
Geräte übergeben
wird, was zu einer schlechten Leistung führt.
-
Außerdem arbeitet
der Gerätetreiber
für das Hardware-Gerät ganz oder
teilweise als Teil der bevorrechtigten VMM-Software, was die Gesamtzuverlässigkeit
der Plattform beeinträchtigen
kann. Techniken, die spezialisierte Umsetzungsstrukturen verwenden,
können
nur ein bestimmtes Gerät
oder ein begrenztes Nutzungsmodell unterstützen. Allgemeine I/O-Speicherverwaltungseinheiten
bieten nur Unterstützung
für virtuelle
I/O-Adreßräume von
begrenzter Größe oder
Komplexität.
-
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
Die
vorliegende Erfindung wird anhand der folgenden detaillierten Beschreibung
und anhand der begleitenden Zeichnungen verschiedener Ausführungsformen
der Erfindung besser verstanden. Die Zeichnungen dürfen jedoch
nicht so ausgelegt werden, als würden
sie die Erfindung auf die konkreten Ausführungsformen beschränken, sondern
sie dienen lediglich der Erläuterung
und dem Verstehen.
-
1 veranschaulicht
eine Ausführungsform
eines Computersystems.
-
2 veranschaulicht
eine Ausführungsform
einer Eingabe/Ausgabe(I/O)-Gerätezuweisung.
-
3 veranschaulicht
eine Ausführungsform
einer Virtualisierung unter Verwendung einer Direktspeicherzugriffs(DMA)-Neuabbildung.
-
4 veranschaulicht
eine Ausführungsform
einer I/O-Adreßumsetzung.
-
5 veranschaulicht
eine Ausführungsform
einer DMA-Neuabbildungsstruktur.
-
6 veranschaulicht
eine Ausführungsform
eines Adreßfensterseitentabelleneintragsformats.
-
7 veranschaulicht
eine Ausführungsform
eines Prozesses zur adreßfensterbasierten DMA-Adreßumsetzung.
-
8 veranschaulicht
eine Ausführungsform
eines Adreßfenstertabellenformats.
-
9 veranschaulicht
eine Ausführungsform
von Adreßfensterlöschregistern.
-
10 veranschaulicht
eine Ausführungsform
eines Adreßfensterlöschregisterformats.
-
11 veranschaulicht
ein Flußdiagramm für eine Ausführungsform
einer DMA-Umsetzung.
-
12 veranschaulicht
eine weitere Ausführungsform
eines Computersystems.
-
DETAILLIERTE BESCHREIBUNG
-
Es
wird eine Architektur für
eine Direktspeicherzugriffs(DMA)-Umsetzung, die eine adreßfensterbasierte
Umsetzung implementiert, beschrieben. Wenn in der Spezifikation
von "eine Ausführungsform" die Rede ist, so
bedeutet das, daß ein
bestimmtes Merkmal, eine bestimmte Struktur oder eine bestimmte
kennzeichnende Eigenschaft, die in Verbindung mit der Ausführungsform
beschrieben wird, in mindestens einer Ausführungsform der Erfindung enthalten
ist. Das Vorkommen der Wendung "in
einer Ausführungsform" an verschiedenen
Stellen in der Spezifikation bezieht sich nicht immer unbedingt
auf dieselbe Ausführungsform.
-
In
der folgenden Beschreibung werden zahlreiche Details dargelegt.
Dem Fachmann leuchtet jedoch ein, daß die vorliegende Erfindung
auch ohne diese konkreten Details praktiziert werden kann. In anderen
Fällen
werden bestens bekannte Strukturen und Geräte in Blockschaubildform anstatt
im Detail gezeigt, um die vorliegende Erfindung nicht in den Hintergrund
treten zu lassen.
-
1 veranschaulicht
eine Ausführungsform
eines Computersystems 100. Das Computersystem 100 enthält einen
Prozessor 110, einen Prozessorbus 120, einen Speichersteuerhub
(MCH) 130, einen Systemspeicher 140, einen Eingabe/Ausgabe-Steuerhub
(ICH) 150, einen Peripheriebus 155, eine Massenspeichergerät/schnittstelle 170 und
Eingabe/Ausgabe-Geräte 1801 bis 180K und 185.
Es ist zu beachten, daß das
System 100 auch mehr oder weniger Elemente als die oben
genannten enthalten kann.
-
Der
Prozessor 110 stellt eine zentrale Verarbeitungseinheit
eines beliebigen Architekturtyps dar, wie zum Beispiel eingebettete
Prozessoren, mobile Prozessoren, Mikrocontroller, digitale Signalprozessoren,
superskalare Prozessoren, nebenläufige
Prozessoren, Mehrkernprozessoren, Vektorprozessoren, Single Instruction
Multiple Data(SIMD)-Computer, Complex Instruction Set-Computer (CISC),
Reduced Instruction Set-Computer (RISC), Very Long Instruction Word(VLIW)-
oder Hybridarchitekturen.
-
Der
Prozessorbus 120 gibt Schnittstellensignale aus, um es
dem Prozessor 110 zu ermöglichen, mit anderen Prozessoren
oder Geräten
zu kommunizieren, zum Beispiel dem MCH 130. Der Prozessorbus 120 kann
eine Einprozessor- oder Multiprozessorkonfiguration unterstützen. Der
Prozessorbus 120 kann parallel, sequentiell, in einer Pipeline
angeordnet, asynchron, synchron oder eine beliebige Kombination
daraus sein.
-
Der
MCH 130 besorgt die Steuerung und Konfiguration von Speicher-
und Eingabe/Ausgabe-Geräten
wie zum Beispiel dem Systemspeicher 140 und dem ICH 150.
Der MCH 130 kann in einen Chipsatz integriert sein, der
mehrere Funktionen integriert, wie zum Beispiel den isolierten Ausführungsmodus,
Host-zu-Peripherie-Busschnittstelle und Speichersteuerung. Der MCH 130 ist
mit dem Peripheriebus 155 direkt oder über den ICH 150 verbunden.
Im Interesse einer besseren Übersichtlichkeit sind
nicht alle Peripheriebusse gezeigt. Es wird in Betracht gezogen,
daß das
System 100 auch Peripheriebusse wie zum Beispiel einen
Peripheral Component Interconnect(PCI)-, einen PCI Express-, einen Accelerated
Graphics Port(AGP)- oder
einen Industry Standard Architecture(ISA)-Bus und einen Universal
Serial Bus (USB) usw. enthalten kann.
-
Der
MCH 130 enthält
eine Direktspeicherzugriffs(DMA)-Neuabbildungsschaltung 135.
Die DMA-Neuabbildungsschaltung 135 bildet ein I/O-Gerät (zum Beispiel
eines der I/O-Geräte 1801 bis 180K und 185)
in einen Bereich in dem Systemspeicher 140 in einer I/O-Transaktion
ab. Die I/O-Transaktion ist in der Regel eine DMA-Anforderung. Die DMA-Neuabbildungsschaltung 135 bietet
Hardware-Unterstützung
zum Ermöglichen
oder Optimieren der I/O-Gerätezuweisung
und/oder -verwaltung. Die DMA-Neuabbildungsschaltung 135 kann
auch in einem anderen Chipsatz als dem MCH 130, wie zum Beispiel
dem ICH 150, enthalten sein. Sie kann auch, ganz oder teilweise,
in dem Prozessor 110 oder als ein separater Prozessor oder
Co-Prozessor für
andere Prozessoren oder Geräte
implementiert sein.
-
Der
Systemspeicher 140 speichert Systemcode und -daten. Der
Systemspeicher 140 ist in der Regel mit dynamischem Direktzugriffsspeicher (DRAM)
oder statischem Direktzugriffsspeicher (SRAM) implementiert. Der
Systemspeicher kann Programmcode oder -codesegmente enthalten, die eine
Ausführungsform
der Erfindung implementieren. Der Systemspeicher enthält ein Betriebssystem
(OS) 142, oder einen Teil des OS, oder einen Kernel, und einen
I/O-Treiber 145. Jedes der Elemente des OS 142 oder
der I/O-Treiber 145 können
durch Hardware, Soft ware, Firmware, Mikrocode oder eine beliebige
Kombination daraus implementiert sein. Der Systemspeicher 140 kann
auch andere Programme oder Daten enthalten, die nicht gezeigt sind.
-
Der
ICH 150 hat eine Anzahl von Funktionen, die dazu dienen,
I/O-Funktionen zu unterstützen.
Der ICH 150 kann auch in einen Chipsatz zusammen mit – oder separat
von – dem
MCH 130 zum Ausführen von
I/O-Funktionen integriert sein. Der ICH 150 kann einen
Anzahl von Schnittstellen- und I/O-Funktionen enthalten, wie zum
Beispiel eine PCI-Busschnittstelle zum Verbinden mit dem Peripheriebus 155,
eine Prozessorschnittstelle, einen Interrupt-Controller, einen Direktspeicherzugriffs(DMA)-Controller,
eine Energieverwaltungslogik, einen Timer, einen Systemverwaltungsbus
(SMBus), eine Universal Serial Bus(USB)-Schnittstelle, eine Massenspeicherschnittstelle,
eine Low Pin Count(LPC)-Schnittstelle usw.
-
Die
Massenspeichergerät/schnittstelle 170 ermöglicht die
Speicherung von Archivinformationen wie zum Beispiel Code, Programmen,
Dateien, Daten, Anwendungen und Betriebssysteme. Die Massenspeichergerät/schnittstelle 170 kann
mit einer Compact Disk(CD)-ROM 172, einer digitalen Video/Versatile-Disk
(DVD) 173, einem Diskettenlaufwerk 174 und einem
Festplattenlaufwerk 176 und beliebigen anderen magnetischen
oder optischen Speichervorrichtungen verbunden sein. Die Massenspeichergerät/schnittstelle 170 stellt
einen Mechanismus zum Lesen von maschinenzugänglichen Medien dar. Zu den
maschinenzugänglichen
Medien kann computerlesbarer Programmcode zum Ausführen von Aufgaben
gehören,
wie im Folgenden beschrieben wird.
-
Zu
I/O-Geräten 1801 bis 180K können beliebige
I/O-Geräte
zum Ausführen
von I/O-Funktionen, einschließlich DMA-Anforderungen,
gehören.
Sie sind mit dem Peripheriebus 155 verbunden. Zu Beispielen
von I/O-Geräten 1801 bis 180K gehören Controller
für Eingabegeräte (zum
Beispiel Tastatur, Maus, Trackball, Zeigegeräte), Medienkarten (zum Beispiel
Audio, Video, Grafik), Netzwerkkarten und beliebige andere Peripherie-Controller.
Das I/O-Gerät 185 ist
direkt mit dem ICH 150 verbunden. Der Peripheriebus 155 ist
ein beliebiger Bus, der I/O-Transaktionen
unterstützt.
Zu Beispielen des Peripheriebusses 155 gehören der
PCI-Bus, PCI Express usw.
-
Elemente
einer Ausführungsform
der Erfindung können
durch Hardware, Firmware, Software oder eine beliebige Kombination
daraus implementiert sein. Der Begriff "Hardware" bezieht sich allgemein auf ein Element
mit einer physischen Struktur, wie zum Beispiel elektro nischen,
elektromagnetischen, optischen, elektro-optischen, mechanischen, elektromechanischen
Teilen usw. Der Begriff "Software" bezieht sich allgemein
auf eine logische Struktur, ein Verfahren, eine Vorgehensweise,
ein Programm, eine Routine, einen Prozeß, einen Algorithmus, eine
Formel, eine Funktion, einen Ausdruck usw. Der Begriff "Firmware" bezieht sich allgemein auf
eine logische Struktur, ein Verfahren, eine Vorgehensweise, ein
Programm, eine Routine, einen Prozeß, einen Algorithmus, eine
Formel, eine Funktion, eine Ausdruck usw., die in einer Hardware-Struktur implementiert
oder verkörpert
sind (zum Beispiel Flash-Speicher, Nurlesespeicher, löschbarer
Nurlesespeicher). Zu Beispielen von Firmware können Mikrocode, ein beschreibbarer
Steuerspeicher oder eine mikroprogrammierte Struktur gehören. Bei
Implementierung in Software oder Firmware sind die Elemente einer
Ausführungsform
der vorliegenden Erfindung im Wesentlichen die Codesegmente zum
Ausführen
der erforderlichen Aufgaben. Die Software/Firmware kann den eigentlichen
Code enthalten, um die in einen Ausführungsform der Erfindung beschriebenen
Operationen auszuführen,
oder kann Code enthalten, der die Operationen emuliert oder simuliert.
Die Programm- oder Codesegmente können in einem prozessor- oder
maschinenzugänglichen Medium
gespeichert sein oder können
durch ein Computerdatensignal, das in einer Trägerwelle verkörpert ist,
oder ein durch einen Träger
moduliertes Signal über
ein Übertragungsmedium übertragen werden.
Bei dem "prozessorlesbaren
oder -zugänglichen
Medium" oder "maschinenlesbaren
oder -zugänglichen
Medium" kann es
sich um ein beliebiges Medium handeln, das Informationen speichern,
senden oder übertragen
kann. Zu Beispielen des prozessorlesbaren oder maschinenzugänglichen
Mediums gehören
eine elektronische Schaltung, ein Halbleiterspeicherbaustein, ein
Nurlesespeicher (ROM), ein Flash-Speicher,
ein löschbarer
ROM (EROM), eine Diskette, eine Compact Disk(CD)-ROM, eine optischen
Disk, eine Festplatte, ein faseroptisches Medium, eine Hochfrequenz(HF)-Verbindung
usw. Bei dem Computerdatensignal kann es sich um ein beliebiges
Signal handeln, das sich über
ein Übertragungsmedium
ausbreiten kann, wie zum Beispiel elektronische Netzwerkkanäle, optische
Fasern, Luft, Elektromagnetismus, HF-Verbindungen usw. Die Codesegmente
können über Computernetzwerke wie
zum Beispiel das Internet, Intranet usw. heruntergeladen werden.
Das maschinenzugängliche
Medium kann in einem Produktionsgegenstand verkörpert sein. Das maschinenzugängliche
Medium kann Daten enthalten, die, wenn eine Maschine auf sie zugreift,
die Maschine zum Ausführen
der im Folgenden beschriebenen Operationen veranlassen. In dem maschinenzugänglichen
Medium kann auch Programmcode eingebettet sein. Der Programmcode kann
maschinenlesbaren Code zum Ausführen
der im Folgenden beschriebenen Operationen enthalten. Der Begriff "Daten" bezieht sich hier
auf einen beliebigen Typ von Informationen, die für Maschinenlesezwecke
codiert sind. Somit können
also Programme, Code, Daten, Dateien usw. dazu gehören.
-
Eine
Ausführungsform
der Erfindung kann ganz oder teilweise durch Hardware, Software,
Firmware oder eine beliebige Kombination daraus implementiert sein.
Das Hardware-, Software- oder Firmware-Element kann mehrere miteinander
verbundene Module aufweisen. Ein Hardware-Modul ist durch mechanische,
elektrische, optische, elektromagnetische oder andere physische
Verbindungen mit einem anderen Modul verbunden. Ein Software-Modul
ist mit einem anderen Modul durch einen Funktions-, Procedere-,
Verfahrens-, Unterprogramm- oder
Subroutinen-Aufruf, einen Sprung, eine Verknüpfung, einen durchgehenden
Parameter, eine durchgehende Variable und ein durchgehendes Argument,
eine Funktionsrückmeldung
usw. verbunden. Ein Software-Modul ist mit einem anderen Modul verbunden,
um Variablen, Parameter, Argumente, Zeiger usw. zu empfangen und/oder
Ergebnisse, aktualisierte Variablen, Zeiger usw. zu erzeugen oder
weiterzugeben. Ein Firmware-Modul ist mit einem anderen Modul durch
eine beliebige Kombination der oben beschriebenen Hardware- und
Software-Verbindungsverfahren
verbunden. Ein Hardware-, Software- oder Firmware-Modul kann mit
einem beliebigen anderen Hardware-, Software- oder Firmware-Modul
verbunden sein. Ein Modul kann auch ein Software-Treiber oder eine
Schnittstelle sein, um mit dem Betriebssystem zu interagieren, das
auf der Plattform arbeitet. Ein Modul kann auch ein Hardware-Treiber
sein, um Daten zu bzw. von einem Hardware-Gerät zu konfigurieren, einzurichten,
zu initialisieren, zu senden und zu empfangen. Eine Vorrichtung
kann eine beliebige Kombination aus Hardware-, Software- und Firmware-Modulen
enthalten.
-
Eine
Ausführungsform
der Erfindung kann als ein Prozeß beschrieben werden, der üblicherweise
als ein Flußdiagramm,
einen Flußschaubild,
ein Strukturdiagramm oder ein Blockschaubild dargestellt wird. Obgleich
ein Flußdiagramm
die Operationen als einen sequentiellen Prozeß beschreiben kann, können viele
der Operationen parallel oder gleichzeitig ausgeführt werden.
Außerdem
kann die Reihenfolge der Operationen umgestellt werden. Ein Prozeß ist beendet,
wenn seine Operationen ausgeführt
sind. Ein Prozeß kann
einem Verfahren, einem Programm, einer Vorgehensweise, einem Fertigungs-
oder Produktionsverfahren usw. entsprechen.
-
In
einer standardmäßigen Rechnerplattform fungieren
die I/O-Teilsystemkomponenten als Teil eines einzelnen Bereichs
und werden durch die Betriebssystemsoftware verwaltet. Eine Ausführungsform
der Erfindung stellt die Hardware-Unterstützung zur Verfügung, die
benötigt
wird, um I/O-Geräte
in einer Rechnerplattform mehreren Bereichen zuzuweisen.
-
Ein
Bereich ist abstrakt als eine isolierte Umgebung in der Plattform
definiert, dem eine Teilmenge des physischen Host-Speichers zugewiesen
wird. Der physische Host-Speicher ist in dem Systemspeicher 140 enthalten.
I/O-Geräte,
die direkt auf den physischen Speicher zugreifen dürfen, der
einem Bereich zugeordnet ist, werden als die zugewiesenen Geräte des Bereichs
bezeichnet. Die Isolationseigenschaft eines Bereichs wird erreicht,
indem der Zugriff auf seinen physischen Speicher durch ihm nicht
zugewiesene Ressourcen gesperrt wird. Mehrere isolierte Bereiche
werden unterstützt,
indem gewährleistet
wird, daß alle
I/O-Geräte
einem Bereich (möglicherweise
einem standardmäßig vorgegebenem
Bereich) zugewiesen sind, und indem der Zugriff durch jedes zugewiesene
Gerät nur
auf den physischen Speicher beschränkt wird, der seinem Bereich
zugewiesen ist. Bereiche können
Ressourcen (zum Beispiel Speicher, I/O-Geräte)
gemeinsam nutzen oder können
im Ermessen der Software oder einer anderen Entität, welche
die Partitionierung ausführt,
vollständig
voneinander isoliert sein.
-
Jeder
Bereich hat eine Sicht des physischen Speichers, oder einen physischen
Adreßraum,
die bzw. der sich von der System-Sicht des physischen Speichers
unterscheiden kann. Eine Adresse, die von den Ressourcen eines Bereichs
benutzt wird, um auf seinen physischen Adreßraum zuzugreifen, wird als
eine physische Gast-Adresse (GPA) bezeichnet. Die physische Host-Adresse
(HPA) bezieht sich auf die physische Systemadresse, die für einen
Zugriff auf einen Speicher benutzt wird. Ein Bereich wird als umverlagert
angesehen, wenn eine oder mehrere seiner GPAs zu einer neuen HPA,
die sich von der GPA unterscheidet, umgesetzt werden müssen, um auf
seinen zugewiesenen physischen Systemspeicher zugreifen zu können. Ein
Bereich wird als nicht-umverlagert bezeichnet, wenn alle seine physischen
Gastadressen die gleichen sind wie die physischen Hostadressen,
die verwendet werden, um auf seinen zugewiesenen physischen Systemspeicher zuzugreifen.
Sowohl den umverlagerten als auch den nicht-umverlagerten Bereichen kann eine Teilmenge des
verfügbaren
physischen Systemspeichers zugewiesen werden, und sie können daran
gehindert werden, auf bestimmte Teile des Speichers zuzugreifen. Schutz
und Partitionierung von physischem Speicher erfordern einen Mechanismus
zum Umsetzen physischer Adressen und einen Schutzmechanismus, der physische
Gastadressen validieren kann, die durch die zugewiesenen Geräte eines
Bereichs erzeugt werden, einschließlich Prozessoren und I/O-Geräte, und
sie in gültige
physische Hostadressen umsetzen kann. Die DMA-Neuabbildungsschaltung 135 bietet diese
Unterstützung.
-
Um
Bereichen I/O-Geräte
zuzuweisen, werden Umsetzung und Schutz physischer Adressen für DMA-Anforderungen
von allen I/O-Geräten
in der Plattform angewendet. Der Einfachheit halber wird die Funktionalität der physischen
Adreßumsetzung für DMA-Anforderungen
von I/O-Geräten
als DMA-Neuabbildung bezeichnet. Für die folgenden Besprechungen
ist zu beachten, daß der
Begriff "Neuabbildung" neben der Abbildung
von Adressen von einem Adreßraum
in einen anderen Adreßraum (zum
Beispiel physische Gastadressen zu physischen Hostadressen) auch
Schutzmechanismen enthält.
-
2 ist
ein Schaubild, das eine Ausführungsform
einer I/O-Gerätezuweisung
veranschaulicht. Die I/O-Gerätezuweisung
ist eine Abbildung eines I/O-Gerätes
auf einen Bereich in dem Systemspeicher 140. Die Abbildung
wird durch die DMA-Neuabbildungsschaltung 135 unterstützt. Zum Beispiel
wird das Gerät
A 210 in den Bereich 1 240 in dem Systemspeicher 140 abgebildet.
Der Bereich 1 kann zwei Treiber 242 und 244 für das Gerät A 210 haben.
-
Die
DMA-Neuabbildungsschaltung 135 enthält einen Registersatz 220,
eine DMA-Neuabbildungsstruktur 222 und
eine Logik-Schaltung 224. Der Registersatz 220 enthält eine
Anzahl von Registern, die Steuer- oder Statusinformationen bereitstellen,
die durch die DMA-Neuabbildungsstruktur 222, die
Logik-Schaltung 224 und die Programme oder Treiber für die I/O-Geräte verwendet
werden. Die DMA-Neuabbildungsstruktur 222 stellt die Basisstruktur,
den Basisspeicher oder die Basistabellen bereit, die bei der Neuabbildung
oder Adreßumsetzung
der physischen Gast-Adresse in die physische Host-Adresse in einem
geeigneten Bereich verwendet werden. Die Logik-Schaltung 224 enthält Schaltungen,
welche die Neuabbildungs- oder Adreßumsetzungsoperationen und
andere Schnittstellenfunktionen ausführen. Die DMA-Neuabbildungsschaltung 135 kann
verschiedene Implementierungen haben, um verschiedene Konfigurationen
zu unterstützen und
um verschiedene Fähigkeiten
für die
Neuabbildungs- oder Adreßumsetzungsoperationen
bereitzustellen.
-
Eine
I/O-Gerätezuweisung
und/oder -verwaltung unter Verwendung der DMA-Neuabbildungsschaltung 135 bietet
eine Anzahl von Nutzungsmöglichkeiten
oder Anwendungen. Zwei nützliche
Anwendungen sind Anwendungen zum Erhöhen der Zuverlässigkeit
eines OS und Virtualisierungsanwendungen.
-
Anwendungen
zum Erhöhen
der Zuverlässigkeit
eines OS: Die Bereichsisolation hat mehrere Verwendungsmöglichkeiten
für Betriebssystem-Software.
Zum Beispiel kann ein OS einen Bereich definieren, die seinen kritischen
Code und seine kritischen Datenstrukturen im Speicher enthält, und
den Zugriff zu diesem Bereich durch alle I/O-Geräte in dem System untersagen.
Dies ermöglicht
es dem OS, eine irrtümliche
oder versehentliche Beschädigung
von Daten und Code durch falsche Programmierung von Geräten durch
Gerätetreiber
oder bestimmte Klassen von Gerätstörungen zu
begrenzen, wodurch seine Zuverlässigkeit
verbessert wird. Alternativ kann ein OS es einer Teilmenge vertrauenswürdiger Geräte gestatten,
auf kritischen Code und kritische Datenstrukturen im Speicher zuzugreifen,
aber den Zugriff durch andere Geräte verbieten.
-
Bei
einer anderen Verwendung kann das OS Bereiche verwenden, um einen
DMA von älteren 32-Bit-PCI-Geräten auf
hohen Speicher (oberhalb 4 GB) zu verwalten. Dies erreicht man durch
Zuweisen von 32-Bit-Geräten
zu einem oder mehreren Bereichen und Programmieren des Mechanismus
zum Umsetzen physischer I/O-Adressen auf das Neuabbilden des DMA
von diesen Geräte
auf hohen Speicher. Ohne eine solche Unterstützung muß die Software auf ein Kopieren
von Daten durch OS-Prellpuffer zurückgreifen.
-
Bei
einer stärker
einbezogenen Verwendung kann ein OS die I/O durch Erzeugen mehrerer
Bereiche und Zuweisen eines oder mehrerer I/O-Geräte zu den
einzelnen Bereichen verwalten. Bei dieser Verwendung registrieren
die Gerätetreiber
ihre I/O-Puffer explizit bei dem OS, und das OS weist diese I/O-Puffer
konkreten Bereichen zu und verwendet dabei Hardware, um den DMA-Bereichsschutz
durchzusetzen. In diesem Model verwendet das OS den I/O-Adreßumsetzungs-
und -schutzmechanismus als eine I/O-Speicherverwaltungseinheit (I/O-MMU).
-
Virtualisierungsanwendungen:
Die Virtualisierungstechnologie gestattet die Erzeugung einer oder
mehrerer virtueller Maschinen (VMs) in einem einzelnen System. Jede
VM kann gleichzeitig unter Nutzung der zugrundeliegenden physischen
Hardware-Ressourcen arbeiten. Virtuelle Maschinen ermöglichen
es mehreren Betriebssysteminstanzen, im selben Prozessor zu laufen,
wodurch Nutzeffekte wie zum Beispiel Systemkonsolidierung, Migration älterer Systeme,
Aktivitätenpartitionierung
und Sicherheit realisiert werden.
-
Virtualisierungsarchitekturen
beinhalten in der Regel zwei grundsätzliche Klassen von Software-Komponenten:
(a) Virtuelle-Maschinen-Monitore (VMMs) und (b) Virtuelle Maschinen
(VMs). Die VMM-Software-Schicht läuft auf der höchst-bevorrechtigten
Ebene und hat die volle Zuständigkeit
für die
zugrundeliegende System-Hardware. Die VMM ermöglicht den VMs die gemeinsame
Nutzung der zugrundeliegenden Hardware und sorgt dennoch für eine Isolation
zwischen VMs.
-
Die
Einschränkungen
von ausschließlich
auf Software basierenden Verfahren zur I/O-Virtualisierung lassen sich durch direkte
Zuweisung von I/O-Geräten
zu VMs unter Verwendung der DMA-Neuabbildungsschaltung 135 beseitigen.
Bei der direkten Zuweisung von Geräten arbeitet der Treiber für ein zugewiesenes
I/O-Gerät
nur in der VM, der er zugewiesen ist, und darf direkt mit der Geräte-Hardware
interagieren, ohne von der VMM erfaßt zu werden. Die Hardware-Unterstützung ermöglicht eine
DMA-Neuabbildung ohne gerätespezifische Kenntnis
in dem VMM.
-
In
diesem Modell beschränkt
sich der VMM auf eine Steuerfunktion, in der er explizit das Aufbauen
und Abbauen von Gerätezuweisungen
zu den VMs vornimmt. Anstatt des Erfassens in dem VMM für I/O-Gastzugriffe
wie im Fall von ausschließlich
auf Software basierenden Verfahren zur I/O-Virtualisierung verlangt
der VMM das Erfassen der I/O-Gastzugriffe
nur zum Schutz bestimmter Ressourcen, wie zum Beispiel Gerätekonfigurationsraumzugriffe,
Interrupt-Verwaltung usw., die sich auf die Systemfunktionalität auswirken.
-
Zum
Unterstützen
einer direkten Zuweisung von I/O-Geräten zu VMs verwaltet ein VMM
die DMA durch I/O-Geräte.
Der VMM kann selbst in einen Bereich abbilden und jede VM in einen
unabhängigen Bereich
abbilden. Die I/O-Geräte
können
Bereichen zugewiesen werden, und die durch die DMA-Neuabbildungsschaltung 135 bereitgestellte
Hardware zur physischen Adreßumsetzung
kann verwendet werden, um die DMA durch I/O-Geräte nur auf den physischen Speicher
zuzulassen, der dem Bereich der zugewiesenen VM zugewiesen ist.
Bei VMs, die im physischen Speicher umverlagert werden können (d. h.
die GPA, die nicht mit der HPA identisch ist), kann die DMA-Neuabbildungsschaltung 135 so
programmiert werden, daß sie
die erforderliche GPA-zu-HPA-Umsetzung vornimmt.
-
Mit
Hardware-Unterstützung
für die
I/O-Gerätezuweisung
können
VMM-Implementierungen eine
Kombination von ausschließlich
auf Software basierenden I/O- Virtualisierungsverfahren
und direkter Gerätezuweisung
wählen,
um einer VM I/O-Geräteressourcen
darzustellen.
-
3 ist
ein Schaubild, das eine Ausführungsform
der Virtualisierung unter Verwendung einer DMA-Neuabbildung veranschaulicht.
Die Virtualisierung enthält
zwei Geräte
A und B 310 und 312, die DMA-Neuabbildungsschaltung 135,
einen VMM oder ein Host-OS 320, VM0 340 und
VMn 360. Die zwei Geräte A und
B 310 und 312 sind zwei I/O-Geräte, die
durch die zwei VM 340 bzw. 360 unterstützt werden.
Die DMA-Neuabbildungsschaltung 135 bildet diese zwei Geräte direkt
auf die jeweiligen VMs 340 und 360 ohne konkrete
Kenntnis des VMM oder Host-OS 320 ab. Es können mehr
oder weniger I/O-Geräte
und VMs unterstützt
werden.
-
Der
VMM oder das Host-OS 320 bietet Unterstützung für die zugrundeliegende Hardware
der Plattform oder des Systems, auf der bzw. in dem sie ausgeführt werden.
Die VMs 340 und 360 haben ähnliche architektonische Komponenten,
sind aber vollständig
voneinander isoliert. Sie sind mit dem VMM oder Host-OS 320 verbunden,
um auf die System-Hardware zuzugreifen. Die VM 340 enthält Anwendungen 342 und 344.
Es können
mehr oder weniger Anwendungen unterstützt werden. Sie hat ein Gast-OS 346 und
einen Gerät-A-Treiber 350.
Der Gerät-A-Treiber 350 ist
ein Treiber, der das Gerät
A 310 antreibt, steuert, verbindet oder unterstützt. Gleichermaßen enthält die VM 360 Anwendungen 362 und 364.
Es können
mehr oder weniger Anwendungen unterstützt werden. Sie hat ein Gast-OS 366 und einen
Gerät-B-Treiber 370.
Das Gast-OS 366 kann das gleiche wie das Gast-OS 346 in
der VM 340 oder ein anderes sein. Der Gerät-B-Treiber 370 ist
einen Treiber, der das Gerät
B 312 antreibt, steuert, verbindet oder unterstützt.
-
Die
durch die DMA-Neuabbildungsschaltung 135 bereitgestellte
DMA-Neuabbildungsarchitektur ermöglicht die
Zuweisung von I/O-Geräten
zu einer beliebigen Anzahl von Bereichen. Jeder Bereich hat einen
physischen Adreßraum,
der sich von dem physischem Systemadresseraum unterscheiden kann. Die
DMA-Neuabbildung besorgt die Umwandlung von physischen Gast-Adressen
(GPA) in DMA-Anforderungen von einem I/O-Gerät in eine entsprechende physische
Host-Adresse (HPA), die ihrem Bereich zugewiesen ist.
-
Um
dies zu unterstützen,
kann die Plattform eine oder mehrere Hardware-Einheiten zur physischen
I/O-Adreßumsetzung
unterstützen.
Jede Umsetzungshardware-Einheit unterstützt die Neuabbildung der I/O-Transaktionen,
die ihrem Hardware-Umfang entstammen. Zum Beispiel kann eine Desktop-Chipsatz-Implementierung
eine einzelne DMA-Neuabbildungshardware-Einheit aufweisen, die alle I/O-Transaktionen
in dem Speichersteuerhub(MCH)-Komponente umsetzt. Eine Server-Plattform
mit einem oder mehreren Kern-Chipsatz-Komponenten kann unabhängigen Umsetzungshardware-Einheiten
in jeder Komponente unterstützen, die
jeweils DMA-Anforderungen umsetzen, die ihrer I/O-Hierarchie entstammen.
Die Architektur unterstützt
Konfigurationen, bei denen diese Hardware-Einheiten je nach Software-Programmierung dieselben
Umsetzungsdatenstrukturen im Systemspeicher gemeinsam nutzen können oder
unabhängige
Strukturen verwenden können.
-
Die
Chipsatz-DMA-Neuabbildungsschaltung 135 behandelt die Adressen
in DMA-Anforderungen als
physische Gastadressen (GPA). Die DMA-Neuabbildungsschaltung 135 kann
die Adreßumsetzungsfunktion
auf die ankommende Adresse anwenden, um sie in eine physische Host-Adresse
(HPA) umzuwandeln, bevor eine weitere Hardware-Verarbeitung ausgeführt wird,
wie zum Beispiel Ausforschen von Prozessor-Cachespeichern oder Weiterleiten
an den Speicher-Controller.
-
In
einem Virtualisierungskontext hängt
die durch die DMA-Neuabbildungsschaltung 135 implementierte
Adreßumsetzungsfunktion
von der durch den VMM unterstützten
Verwaltung des physischen Speichers ab. In Anwendungen zum Beispiel,
wo die Software Zuweisungen von physischem Host-Speicher als aneinandergrenzende
Regionen vornimmt, kann die DMA-Umsetzung
zum Umwandeln einer GPA in eine HPA eine einfache Versatzaddition
sein. In Anwendungen, wo der VMM physischen Speicher auf Seitenauflösung verwaltet,
kann die DMA-Neuabbildungsschaltung 135 eine im Speicher
befindliche Adreßumsetzungsdatenstruktur
verwenden.
-
4 ist
ein Schaubild, das eine Ausführungsform
einer I/O-Adreßumsetzung
veranschaulicht. Die I/O-Adreßumsetzung
enthält
zwei I/O-Geräte
1 und 2 410 und 412, die DMA-Neuabbildungsschaltung 135,
einen physischen Speicher 420 und eine Gastsicht 430.
Die I/O-Geräte 1 und
2 410 und 412 sind zwei separaten Bereichen zugewiesen.
Sie führen
I/O-Anforderungen
oder DMA-Anforderungen zu Adressen DMA_ADR aus.
-
Die
DMA-Neuabbildungsschaltung 135 bildet diese zwei Geräte in entsprechende
Bereiche ab, die in dem physischen Speicher 420 zugewiesen sind.
Der physische Speicher 420 ist in Speichersegmente 422 und 424 und
Speichersegmente 426 und 428 partitioniert. Es
können mehr
oder weniger zugewiesene Speichersegmente zu einem oder mehreren der
Bereiche zugewiesen sein. In 4 sind Speichersegmente 422 und 424 dem
Bereich 1 442 zugewiesen und entsprechen dem Gerät 1 410,
und Speichersegmente 424 und 428 sind dem Bereich
2 444 zugewiesen und entsprechen dem Gerät 1 412.
In dem in 4 veranschaulichten Beispiel
wird das Gerät
1 410 in den Bereich 1 422 abgebildet, und das Gerät 2 412 wird
in den Bereich 2 428 abgebildet oder zugewiesen.
-
Die
Gastsicht 430 ist eine logischen Sicht aus der Perspektive
der Gast-I/O-Geräte.
Sie enthält den
Bereich 1 442 und den Bereich 2 444. Der Bereich
1 442 entspricht den zwei Speichersegmenten 422 und 424 in
dem physischen Speicher 420. Der Bereich 2 444 entspricht
dem zwei Speichersegmenten 426 und 428. Für einen
bestimmten Gast können Bereichen
Teile der Gastsicht 430 des physischen Speichers zugewiesen
werden. Jeder der Bereiche kann einem oder mehreren I/O-Geräten zugewiesen werden.
Die DMA_ADR-Adresse von dem Gerät
1 410 wird auf die DMA_ADR1, die sich in dem Adreßraum befindet,
von 0 zu L des Bereichs 1 442 abgebildet. Gleichermaßen wird
die DMA_ADR-Adresse von dem Gerät
2 412 auf die DMA_ADR2, die sich in dem Adreßraum befindet,
von 0 zu K des Bereichs 2 444 abgebildet.
-
Die
für die
Erzeugung und Verwaltung der Bereiche zuständige Software weist den physischen Speicher 420 für beide
Bereiche zu und richtet die GPA-zu-HPA-Adreßumsetzungsfunktion in der DMA-Neuabbildungsschaltung 135 ein.
Die DMA-Neuabbildungsschaltung 135 setzt die durch die
Geräte 410 und 412 erzeugten
GPAs in entsprechende HPAs um.
-
5 ist
ein Schaubild, das eine Ausführungsform
einer DMA-Neuabbildungsstruktur 222 veranschaulicht. Die
DMA-Neuabbildungsstruktur 222 empfängt einen Quellenidentifikator 510 und
enthält
eine Wurzeltabelle 520, eine Anzahl von Kontexttabellen,
von denen zwei – 5300 und 530m – gezeigt sind,
und eine Anzahl von Adreßumsetzungsstrukturen,
von denen zwei – 5400 und 540m – gezeigt
sind. Die Neuabbildungsstruktur 222 empfängt den
Quellenidentifikator 510 und eine physische Gast-Adresse
von dem I/O-Gerät
und setzt die physische Gast-Adresse in einem zugewiesenen Bereich
in eine physische Host-Adresse um. Die Umsetzung kann unter Verwendung
von Umsetzungstabellen ausgeführt
werden, die in einer hierarchischen Weise angeordnet sind. Der Umsetzungsmechanismus
beginnt aus der Wurzeltabelle 520 heraus und durchquert
oder durchlauft die Kontexttabellen (zum Beispiel 5300 und 530m )
und die Adreßumsetzungsstrukturen
(zum Beispiel 5400 und 540m ).
-
Die
Anforderer-Identität
der I/O-Transaktionen, die in der DMA-Neuabbildungsschaltung 135 erscheint,
bestimmt das Ursprungsgerät
und den Bereich, dem das I/O-Ursprungsgerät zugewiesen ist. Der Quellenidentifikator 510 ist
das Attribut, das den Absender einer I/O-Transaktion identifiziert. Die DMA-Neuabbildungsschaltung 135 kann
den Quellenidentifikator 510 einer Transaktion in implementierungsspezifischer
Weise bestimmen. Zum Beispiel können
einige I/O-Bus-Protokolle die Identität des Ursprungsgerätes als
Teil jeder I/O-Transaktion übermitteln.
In anderen Fällen,
wie zum Beispiel bei Chipsatz-integrierten Geräten, kann der Quellenidentifikator 510 auf
der Basis der Architektur oder Implementierung des Chipsatzes impliziert
werden.
-
Bei
PCI Express-Geräten
wird der Quellenidentifikator 510 auf den Anforderer-Identifikator abgebildet,
der als Teil des I/O-Transaktionskopfes übermittelt wird. Der Anforderer-Identifikator
eines Gerätes
enthält
seine PCI-Bus/Gerät/Funktions-Nummern,
die durch die Konfigurations-Software zugewiesen wurden, und identifiziert
eindeutig die Hardware-Funktion, welche die I/O-Anforderung anfordert.
In einer Ausführungsform
enthält
der Quellenidentifikator 510 eine Funktionsnummer 512,
eine Gerätenummer 514 und
eine Busnummer 516. In dem in 5 veranschaulichten
Beispiel ist die Funktionsnummer 512 K Bit breit, die Gerätenummer 514 ist
L Bit breit, und die Busnummer 516 ist M Bit breit. Die
Busnummer 516 identifiziert den Bus, auf dem die I/O-Transaktion
erzeugt wird. Die Gerätenummer 514 identifiziert
das konkrete Gerät
an dem identifizierten Bus. Die Funktionsnummer 512 identifiziert die
konkrete Funktion des I/O-Gerätes.
Der Quellenidentifikator 510 wird verwendet, um die Wurzeltabelle 520 und
die Kontexttabellen (zum Beispiel 5300 und 530m ) zu indexieren oder darin nachzuschlagen. In
dem in 5 veranschaulichten Beispiel werden ihre Wege
durch die DMA-Neuabbildungsstruktur 222 für zwei I/O-Transaktionen
unter Verwendung von Bus 0 bzw. Bus m veranschaulicht.
-
Bei
PCI Express-Geräten
speichert die Wurzeltabelle 520 Wurzeleinträge 5250 bis 5252^M-1 ,
die durch den Quellenidentifikator 510 indexiert werden, oder
die Busnummer 516 des Quellenidentifikators 510.
Die Wurzeleinträge
fungieren als die Struktur der obersten Ebene zum Abbilden von Geräten an einem
bestimmten Bus auf ihren jeweiligen übergeordneten Bereich. Der
Wurzeleintrag 0 5250 entspricht der
I/O-Transaktion, die den Bus 0 verwendet. Der Wurzeleintrag m 525m entspricht der I/O-Transaktion, die
den Bus m verwendet. Die Wurzeleinträge 0 5250 und 525m zeigen auf die Kontexttabellen 5300 bzw. 530m .
In einer Ausführungsform
stellen diese Einträge
die Basisadresse für
die entsprechende Kontexttabelle bereit.
-
Die
Kontexttabellen 530 (zum Beispiel 5300 und 530m ) speichern Kontexteinträge 535 (zum
Beispiel 5350 und 535m ), auf die durch die Wurzeleinträge verwiesen
wird. Die Kontexteinträge 535 bilden die
I/O-Geräte
auf ihren entsprechenden Bereich oder ihre entsprechenden Bereiche
ab. Die Gerätenummer 514 und
die Funktionsnummer 512 werden verwendet, um den Kontexteintrag
zu erhalten, welcher der I/O-Transaktion entspricht. In einer Ausführungsform
bilden sie einen Index, um zu der Kontexttabelle zu zeigen oder
auf die Kontexttabelle zu verweisen, auf die durch den entsprechenden
Wurzeleintrag verwiesen wird. Es gibt 2M × 2L × 2K oder 2M+L+K Kontexteinträge in allen
Kontexttabellen. In einer Ausführungsform
ist K = 3, L = 5 und M = 8, was zu insgesamt 64K Einträgen führt, die
als 2M (28 = 256)
Kontexttabellen organisiert sind. In dem in 4 gezeigten
Beispiel sind die zwei Kontexteinträge für die zwei I/O-Transaktionen der
Kontexteintrag 5350 in der Kontexttabelle 5300 und der Kontexteintrag 535m in der Kontexttabelle 530m . Die Kontexteinträge 5350 und 535m zeigen auf die Adreßumsetzungsstrukturen 5400 bzw. 540m .
-
Die
Adreßumsetzungsstrukturen 540 (zum Beispiel 5400 und 540m )
besorgen die Adreßumsetzung
in die physische Host-Adresse unter Verwendung der physischen Gast-Adresse, die der I/O-Transaktion
entspricht. Jede der Adreßumsetzungsstrukturen
kann eine Mehrfachtabelle 550, eine Einzeltabelle 560 oder
eine Basis/Grenze 570 sein, was den drei Umsetzungsmechanismen
entspricht, die Mehrfachtabellen-, Einzeltabellen- bzw. Basis/Grenz-Umsetzungen verwenden.
In der folgenden Beschreibung wird eine reguläre Seitengröße von 4 KB verwendet. Wie
dem Fachmann bekannt ist, können
auch beliebige andere Größe verwendet werden.
-
Um
eine Software-flexible Steuerung der DMA-Neuabbildungsschaltung 135 zu
ermöglichen, weist
die DMA-Neuabbildungsschaltung 135 eine Anzahl von Registern
auf, die in dem in 2 gezeigten Registersatz 220 enthalten
sind. Der Registersatz 220 befindet sich durch ein Basisadreßregister (BAR)
in dem physischen Host-Adresseraum. Die Umsetzungs-Hardware BAR
wird in einer implementierungsabhängigen Weise mit Software verbunden. Dies
kann in Form eines PCI-Konfigurationsraumregisters in einem der
Chipsatz-integrierten Geräte,
wie zum Beispiel dem Speichersteuergerät, geschehen. In einer Ausführungsform
stellt das BAR ein mindestens 4K großes Adreßfenster bereit. Ein Register
in dem Registersatz 220 kann eine Anzahl von Feldern haben.
Ein Feld kann aufgedrückt
oder negiert werden. Wenn ein Feld aus nur einem einzigen Bit besteht,
so impliziert das Aufdrücken,
daß das
Bit in einen definierten logischen Zustand gesetzt wird (zum Beispiel
WAHR, eine logische Eins), und eine Negierung impliziert, daß das Bit
auf einen definierten logischen Zustand zurückgesetzt wird, der zu dem
Zustand des Aufdrückens
komplementär
ist (zum Beispiel FALSCH, eine logische Null). Im Folgenden ist die
Verwendung eines aufgedrückten
oder negierten Zustands beliebig. Ein Feld kann aufgedrückt werden,
um einen ersten Zustand anzuzeigen, und kann negiert werden, um
einen zweiten Zustand anzuzeigen, oder umgekehrt.
-
Ein
Feld in einem Register kann durch die DMA-Neuabbildungsschaltung 135 und/oder
durch die Software programmiert, initialisiert oder konfiguriert
werden. Es kann auch einer spezialisierten Hardware-Schaltung oder
einer Funktionalität
entsprechen, die durch eine Datenstruktur, eine Funktion, eine Routine
oder ein Verfahren implementiert wird. Im Folgenden sind die Felder
in Registern gruppiert. Die Gruppierung, Formatierung oder Organisation
dieser Felder oder Bits in den folgenden Registern dient der Veranschaulichung.
Es können
auch andere Arten der Gruppierung, Formatierung oder Organisation
dieser Felder verwendet werden. Ein Feld kann auch in mehreren Registern
dupliziert werden. Ein Register kann mehr oder weniger Felder als die
beschriebenen Felder haben. Außerdem
können Register
auf verschiedene Weisen implementiert werden, darunter als Datenlagerelemente
oder Speicherelemente.
-
Die
oben beschriebene DMA-Neuabbildungsarchitektur enthält DMA,
die unter Verwendung von Einzel- oder Mehrebenen-Seitentabellen
(TLBs) umgesetzt werden, wie in 5 gezeigt.
Eine solche Architektur eignet sich zur Verwendung bei der Nutzung älterer Software
(zum Beispiel, wo das OS oder der VMM nicht über die Treiber-DMA-Nutzungen
Bescheid wissen). Des Weiteren können
Einzel- oder Mehrebenen-Seitentabellenumsetzungen eine gute bis
durchschnittliche DMA-Leistung für
die meisten I/O-Geräte
bieten (gemessen am DMA-Durchsatz). Jedoch
hat ein solches System Einschränkungen.
-
Eine
Einschränkung
ist, daß die
Schlimmstfall-Latenz, die durch mehrere sequentielle Speicherzugriffe
für den
Seitendurchlauf bei TLB-Zugriffsmißlingen hervorgerufen wird,
für I/O-Geräte, deren
Leistung von einer garantierten Schlimmstfall-DMA-Leistung (isochronen
DMA-Leistung) abhängt,
inakzeptabel hoch ist. Zu Beispielen dieser Art von Geräten gehören PCI
Express-Geräte,
die isochrone DMA unterstützen
(wie zum Beispiel ein Hochleistungs-Audiocontroller), Anzeigemaschinen von
Grafikgeräten und
USB-Controller-Geräte.
-
Eine
weitere Einschränkung
ist, daß für Nutzungen,
bei denen keine ältere
Software verwendet wird (zum Beispiel neuere OSs und VMMs), die über eine
bessere Kenntnis der Treiber-DMA-Anwendungen verfingen, die derzeitige
Architektur keinerlei Mittel bereitstellt, damit Software DMA-Nutzungshinweise
geben kann, um die DMA-Neuabbildungsleistung zu verbessern.
-
Und
schließlich
nehmen die Speicherzugriffslatenzen für Seitendurchläufe in dem
Maße zu, wie
sich zum Beispiel die Plattformkonfigurationen hin zu Speicher-Controllern
entwickeln, die innerhalb des Prozessorkomplexes implementiert sind.
-
Adreßfensterbasierte DMA-Adreßumsetzung
-
Auf
der Basis der oben beschriebenen Einschränkungen der DMA-Neuabbildungsarchitektur
ist die DMA-Neuabbildungsschaltung 135 dafür konfiguriert,
neben der auf Einzel- und Mehrebenen-Seitentabellen basierenden
Adreßumsetzung
auch eine adreßfensterbasierte
Adreßumsetzung
zu unterstützen.
Das heißt,
jede DMA-Neuabbildungsschaltung 135 kann eine Anzahl von
Adreßfenstern
unterstützen,
wobei die genaue Anzahl der unterstützten Adreßfenster von der Hardware-Implementierung
abhängt.
In einer Ausführungsform
weist die System-Firmware einen Adreßfenster(AW)-Bereich (Anfangs-
und End-AW-Nummern) für
jede DMA-Neuabbildungsschaltung 135 zu.
-
In
einer weiteren Ausführungsform
unterstützt
der Chipsatz eine zusätzliche
Cachespeicherstruktur zusätzlich
zu den vorhandenen Cachespeicherstrukturen der Neuabbildungsschaltung 135. Diese
zusätzlichen
Strukturen werden als AWPTR-Tabellen bezeichnet, die für Adreßfensterumsetzungen
implementiert werden. AWPTR-Tabellen werden weiter unten eingehender
besprochen.
-
Gemäß einer
Ausführungsform
bezieht sich eine physische Geräteadresse
(DPA) auf eine Zieladresse, die durch I/O-Geräte in ihren DMA-Anforderungen
spezifiziert werden. In einer Ausführungsform spannt sich der
DPA-Adreßraum über sämtliche I/O-Geräte in dem
Computersystem und ist in mehrere AWs unterteilt. In einer solchen
Ausführungsform deckt
jedes AW eine aneinandergrenzende 2 MB-Region an DPA-Raum ab. Zum
Beispiel kann eine AW0 DPA 0 bis 2 MB abdecken, ein AW 1 kann DPA
2 MB bis 4 MB abdecken, usw. Für
eine beliebige DPA wird die AW-Nummer durch Untersuchen von Bits
in der DPA bestimmt (zum Beispiel AW-Nummer = DPA[63:21]).
-
In
einer weiteren Ausführungsform
wird jedes AW durch eine DPA-zu-HPA-Umsetzungsstruktur im Speicher beschrieben,
die als eine Adreßfensterseitentabelle
(AWPT) bezeichnet wird. Die Einträge in einer AWPT heißen AW-Seitentabelleneinträge (AWPTE).
Jeder AWPTE besorgt die Umsetzung für eine 4 KB-Region (als ein "Schlitz" bezeichnet) innerhalb
des AW. Somit gibt es 512 Schlitze in einem AW, und die AWPT, die
zu jedem AW gehört,
ist 4 KB groß (mit
512 AWPTEs). Gemäß einer
Ausführungsform sind
AWPTEs 64 Bits groß und
haben das in 6 veranschaulichte Format. In
einer Ausführungsform enthält ein AWPTE
Zugriffssteuerbits, wie zum Beispiel Bits ("Lesen" und "Schreiben"), die spezifizieren, ob Lesezugriffe
und/oder Schreibzugriffe auf die DPA gestattet sind, die für den Zugriff
auf den AWPTE verwendet wird. In einer Ausführungsform spezifiziert das
Adreßfeld
("ADDR") die Abbildung einer Teilmenge
der Bits in der DPA auf die HPA. In einer Ausführungsform können die
verbliebenen Bits (zum Beispiel Bits [11:0]) unmodifiziert von der
DPA zu der HPA weitergeleitet werden. Viele weitere Konfigurationen
sind möglich
und schränken
nicht den Geltungsbereich der Erfindung ein.
-
Die
System-Software kann ein oder mehrere AWs an bestimmte I/O-Geräte binden.
Dafür registriert
der Treiber seine DMA-Puffer (zum Beispiel in dem physischen Host-Adresseraum) bei
dem an das Gerät
gebundenen AW, um eine DPA-Abbildung zu erzeugen. Der Treiber für ein Gerät identifiziert
seine Zielpuffer gegenüber
der Geräte-Hardware
unter Verwendung seiner DPA. Adressen in DMA-Anforderungen von dem
Gerät sind
DPAs, die durch die Neuabbildungsschaltung 135 auf der
Basis des an das Gerät
gebundenen AW und der DPA-zu-HPA-Umsetzungen für das Adreßfenster umgesetzt werden.
-
7 veranschaulicht
eine Ausführungsform
eines Prozesses zum Umsetzen von DMA-Adressen in Gegenwart von Adreßfenstern. 7 veranschaulicht
die Verwendung von AWPTs und AWPTR-Tabellen zum Ausführen der
Umsetzung. In einer Ausführungsform
hat die AWPTR-Tabelle in der Neuabbildungsschaltung 135 so
viele Einträge
wie die Anzahl der Adreßfenster,
die durch ihre Neuabbildungsschaltung 135 unterstützt werden.
Einträge
in einer AWPTR-Tabelle sind einem konkreten AW zugeordnet, das in
seiner Neuabbildungsschaltung 135 konfiguriert ist.
-
Des
Weiteren enthält
jeder AWPTR-Tabelleneintrag die HPA zur Basis der AWPT für das bestimmte
AW. Jeder AWPTR-Tabelleneintrag ist mit der Gerätekennung des I/O-Gerätes markiert,
dem das zugehörige
AW zugewiesen ist. In einer Ausführungsform
wird die AWPTR-Tabellenstruktur
in einen Speicher abgebildet, damit Software darin befindliche Einträge ändern kann.
Die Basisadresse der AWPTR-Tabelle wird als AWPTR_TABLE_BASE bezeichnet.
AWPTR-Tabelleneinträge
heißen
AWPTRs, und ein bestimmter Eintrag an einem bestimmten Index in
dem Cache wird als AWPTR[index] bezeichnet.
-
8 veranschaulicht
eine Ausführungsform
einer AWPTR-Tabellenstruktur für
einen Chipsatz, der zwei Neuabbildungsschaltungen 135 implementiert,
wobei jeder dafür
konfiguriert ist, zwei AWs (4 bis 5 bzw. 6 bis 7) zu unterstützen. Obgleich
gemäß einer
Ausführungsform
die AWPTR-Tabelle in Registern gespeichert wird, scheint die Tabelle
sich aus Sicht der Software an einer Adresse zu befinden, die durch
AWPTR_TABLE_BASE spezifiziert wird.
-
Des
Weiteren enthält
in einer Ausführungsform
jeder Eintrag in der AWPTR-Tabelle ein Gültig-, ein Markierungs- und
ein Daten-Feld. Das Gültig-Feld
zeigt an, ob ein Eintrag gültig
ist. In einer weiteren Ausführungsform
gibt es kein gültiges
Bit, und die Neuabbildungsschaltung 135 behandelt alle AWPTR-Tabelleneinträge als gültig. Das
Markierungs-Feld zeigt die konkrete Gerätekennung an, welcher der Eintrag
zugeordnet ist. Zum Beispiel hat Software in 8 das AW
4 an ein I/O-Gerät
mit der Gerätekennung 11 gebunden
und das AW 6 an ein I/O-Gerät
mit der Gerätekennung 18 gebunden.
In einer Ausführungsform
kann die Identifikation eines Gerätes, das einen Zugriff erzeugt
(zum Beispiel die Feststellung der Gerätekennung), Informationen zum Bus,
zum Gerät
und zur Funktion innerhalb des Gerätes enthalten. Der Absender
einer DMA-Anforderung wird im vorliegenden Text als ein "Gerät" oder als "anforderndes I/O-Gerät" bezeichnet und wird durch
eine "Gerätekennung" identifiziert. Es
versteht sich jedoch, daß in
anderen Ausführungsformen
ein einzelnes physisches Gerät
durch eine oder mehrere Gerätekennungen
identifiziert sein kann.
-
Gemäß einer
weiteren Ausführungsform
unterstützt
die Neuabbildungsschaltung 135 einen Satz von in Speicher
abgebildeten 16-Bit-Registern, die als AW_FLUSH-Register bezeichnet
werden. 9 veranschaulicht eine Ausführungsform
von AW_FLUSH-Löschregistern.
Die AW_FLUSH-Löschregister
sind als ein Mechanismus implementiert, der es ermöglicht,
daß Software
Umsetzungen ungültig machen
kann, die durch ein oder mehrere Elemente der Neuabbildungsschaltung 135 cache-gespeichert werden
können.
In einer Ausfüh rungsform
ist ein AW_FLUSH-Löschregister
für jedes
AW implementiert, das durch eine Neuabbildungsschaltung 135 unterstützt wird.
-
In
einer Ausführungsform
wird die Basisadresse dieses in Speicher abgebildeten Registerbereichs
(AW_FLUSH_BASE) durch Plattform-Firmware initialisiert. Wenn zum
Beispiel, wie in 9 veranschaulicht, eine Chipsatz-Komponente
zwei Neuabbildungsschaltungen 135 unterstützt und
die Neuabbildungsschaltungen 135 AWs 4 bis 5 bzw. 6 zu
7 unterstützen,
so unterstützt
der Chipsatz insgesamt 4 AW_FLUSH-Register. 10 veranschaulicht
eine Ausführungsform
eines Formats für
jedes AW_FLUSH-Register.
-
Wenden
wir uns wieder 7 zu. Es erfolgt eine adreßfensterbasierte
Umsetzung, wenn dies in dem Kontexteintrag für ein I/O-Gerät spezifiziert
ist. In einer Ausführungsform
können
die Kontexteinträge
durch die Neuabbildungsschaltung 135 cache-gespeichert
werden, wodurch nicht auf einen Speicher zugegriffen werden muß, um diese
Feststellung zu treffen. In einer weiteren Ausführungsform kann Software direkt
auf die Kontexteintrag-Cachespeicherstruktur zugreifen, wodurch
Software den Cache vorbefüllen
kann, um die Latenzen für
den ersten Zugriff auf einen Kontexteintrag zu verringern. Auf diese Weise
kann Software garantieren, daß das Schlimmstfall-Speicherzugriffsverhalten
für bestimmte
Geräte
auf einen einzigen Speicherzugriff begrenzt ist, wie unten beschrieben.
-
Wenn
eine adreßfensterbasierte
Umsetzung spezifiziert ist, so überprüft die Neuabbildungsschaltung 135,
ob das AW, zu dem die DPA in der DMA-Anforderung gehört, eines
der AWs ist, die an das spezifizierte Gerät gebunden sind. Gemäß einer Ausführungsform
führt die
Neuabbildungsschaltung 135 diese Überprüfung aus, indem sie zuerst
die Adreßfensternummer
(AW-Nummer) findet, die der DPA in der DMA-Anforderung entspricht
(zum Beispiel berechnet durch AW-Nummer = DPA[(HAW – 1):21],
wobei HAW die unterstützte
physische Adreßbreite
des Systems ist).
-
Anschließend wird
festgestellt, ob die AW-Nummer der Neuabbildungsschaltung 135 zugewiesen
ist, welche die DMA-Anforderung umsetzt. Wenn die AW-Nummer nicht
der Neuabbildungsschaltung 135 zugewiesen ist, so kommt
es zu einem Umsetzungsfehler. In einer Ausführungsform kann ein Umsetzungsfehler
einen Interrupt an den Prozessor erzeugen. In einer anderen Ausführungsform
ist Software, welche die Neuabbildungsschaltung 135 verwaltet,
dafür verantwortlich,
die Neuabbildungsschaltung 135 periodisch abzufragen, um
festzustellen, ob es zu Umsetzungsfehlern gekommen ist. Wenn die
AW-Nummer gültig
ist, so wird der zugehörige
AW-Tabelleneintragsindex gefunden (berechnet durch INDEX = AW-Nummer – START_AW).
Als nächstes
wird auf den AW-Tabelleneintrag bei AWPTR[INDEX] zugegriffen, und
es wird festgestellt, ob er mit der Gerätekennung in der DMA-Anforderung markiert
ist. Wenn die Überprüfung erfolgreich
ist, so zeigt der AWPTR-Wert die Basis der AW-Seitentabelle an.
Der Wert im DPA[21:12]-Feld wird verwendet, um den entsprechenden
AWPTE in der AW-Seitentabelle
zu holen.
-
Auf
der Basis der Programmierung des AWPTE wird die DMA-Anforderung
entweder zu der HPA komplettiert, die in der AWPTE spezifiziert,
oder sie wird blockiert. Die AWPTE-Verarbeitung ähnelt der Art und Weise, wie
die Blatt-PTEs in der Neuabbildungsschaltung 135 für die beschriebenen
Mehrebenen-I/O-Seitentabellen verarbeitet werden. Wenn die Umsetzung
erfolgreich ist, so wird sie in einer Ausführungsform durch die Neuabbildungsschaltung 135 in
einem I/O-Umsetzungvorgriffspuffer (I/O-TLB) cache-gespeichert.
-
Wie
oben besprochen, führt
die Neuabbildungsschaltungen 135 zusätzlich zur auf Einzel- und Mehrebenen-Seitentabellen
basierenden Adreßumsetzung
auch eine adreßfensterbasierte
Umsetzung aus. 11 ist ein Flußdiagramm,
das eine Ausführungsform
des Betriebes einer Neuabbildungsschaltung 135 veranschaulicht,
die eine adreßfensterbasierte
Umsetzung und eine auf Einzel- und Mehrebenen-Seitentabellen basierende
Adreßumsetzung ausführt.
-
Am
Verarbeitungsblock 1110 erzeugt ein I/O-Gerät eine DMA-Anforderung.
Am Verarbeitungsblock 1120 wird die DMA-Anforderung in
herkömmlicher
Form über
eine Neuabbildungsschaltung 135 verarbeitet. Am Entscheidungsblock 1130 wird
festgestellt, ob eine Umsetzung für die in der DMA-Anforderung
spezifizierte (zum Beispiel mit der Gerätekennung in der Transaktion
markierte) Adresse in dem I/O-TLB gefunden wird. Wenn die Umsetzung
für die in
der DMA-Anforderung spezifizierte Adresse in dem I/O-TLB gefunden
wird, so wird die Umsetzung ohne einen Speicherzugriff ausgeführt (Verarbeitungsblock 1140).
Dazu gehören
DMA, die unter Verwendung von Einzel- oder Mehrebenen-Seitentabellen oder
durch Adreßfenster
umgesetzt werden können.
-
Wenn
die Umsetzung für
die in der DMA-Anforderung spezifizierte Adresse nicht in dem I/O-TLB gefunden
wird (wenn zum Beispiel ein Zugriffsmißlingen detektiert wird), so
wird im Kontextcache nachgeschlagen, um das Umsetzungsverhalten
für das Gerät zu ermitteln
(Verar beitungsblock 1150). Am Entscheidungsblock 1160 wird
festgestellt, ob die Umsetzung zu blockieren oder durch Einzelebenen- oder
Mehrebenen-Seitentabellen zu verarbeiten ist. Wenn die Umsetzung
zu blockieren oder durch Einzelebenen- oder Mehrebenen-Seitentabellen
zu verarbeiten ist, so wird die Anforderung, wie beschrieben, in
der herkömmlichen
Architektur der Neuabbildungsschaltung 135 verarbeitet,
die oben mit Bezug auf die 1-5 beschrieben
wurde (Verarbeitungsblock 1170). Wenn jedoch die Umsetzung
nicht zu blockieren oder durch Einzelebenen- oder Mehrebenen-Seitentabellen
zu verarbeiten ist, so spezifiziert der Kontexteintrag für das Gerät eine adreßfensterbasierte
Umsetzung. Folglich wird eine adreßfensterbasierte Umsetzung
ausgeführt,
wie oben mit Bezug auf 7 beschrieben (Verarbeitungsblock 1180).
-
12 veranschaulicht
eine weitere Ausführungsform
des Computersystems 100. In dieser Ausführungsform enthält der Chipsatz
einen einzelnen Steuerhub 1230 anstelle eines separaten
MCH und ICH. Außerdem
befindet sich die Speichersteuerung im Prozessor 110. Folglich
ist der Systemspeicher 140 mit dem Prozessor 110 verbunden.
In einer Ausführungsform
ist die Neuabbildungsschaltung 135 in dem Steuerhub 1230 enthalten.
In einer weiteren Ausführungsform
ist die Neuabbildungsschaltung 135 im Prozessor 110 oder
im Systemspeicher 140 enthalten.
-
Die
oben beschriebene Neuabbildungsarchitektur ermöglicht DMA-Adreßumsetzungen
mit einer Auflösung
von 4K ähnlich
wie bei Mehrebenen-Seitentabellen und bietet trotzdem die Schlimmstfall-Leistungsgarantie,
die auf den Verwaltungsaufwand beschränkt ist, der mit einem einzelnen
Nachschlagen im Speicher verbunden ist.
-
Zwar
fallen dem Fachmann nach dem Studium der vorangegangenen Beschreibung
zweifellos Änderungen
und Modifikationen der vorliegenden Erfindung ein, doch es versteht
sich, daß die
zu Veranschaulichungszwecken gezeigten und beschriebenen konkreten
Ausführungsformen
in keiner Weise als einschränkend
anzusehen sind. Darum sollen Verweise auf Details verschiedener
Ausführungsformen
nicht den Geltungsbereich der Ansprüche einschränken, die selbst lediglich
jene Merkmale darlegen, die als die Erfindung erachtet werden.
-
Zusammenfassung
-
Es
wird eine Vorrichtung offenbart. Die Vorrichtung enthält eine
Neuabbildungsschaltung zum Ermöglichen
eines Zugriffs durch ein oder mehrere I/O-Geräte auf eine Speichervorrichtung
für Direktspeicherzugriffs(DMA)-Transaktionen.
Die Neuabbildungsschaltung enthält
einen Umsetzungsmechanismus zum Ausführen von Speicheradreßumsetzungen
für I/O-DMA-Transaktionen über adreßfensterbasierte
Umsetzungen.