-
ALLGEMEINER
STAND DER TECHNIK
-
1. Gebiet
-
Die
vorliegende Offenbarung betrifft das Gebiet der Informationsverarbeitung
und insbesondere das Gebiet der Virtualisierung von Ressourcen in
Informationsverarbeitungssystemen.
-
2. Beschreibung
des Standes der Technik
-
Generell
ermöglicht
es das Konzept der Virtualisierung von Ressourcen in Informationsverarbeitungssystemen
mehreren Instanzen eines oder mehrerer Betriebssysteme (jeweils
ein "OS" – Operating System"), auf einem einzelnen
Informationsverarbeitungssystem zu laufen, auch wenn jedes Betriebssystem
die Aufgabe hat, die vollständige,
direkte Kontrolle über
das System und seine Ressourcen auszuüben. Die Virtualisierung wird
in der Regel unter Verwendung von Software (zum Beispiel eines Virtual
Machine Monitor oder "VMM)
implementiert, um jedem OS eine "virtuelle
Maschine" ("VM") anzubieten, die
virtuelle Ressourcen besitzt, welche das OS vollständig und
direkt steuern kann, während
der VMM eine Systemumgebung zum Implementieren von Virtualisierungsvorschriften
aufrecht erhält,
wie zum Beispiel gemeinsames Nutzen und/oder Zuweisen der physikalischen
Ressourcen zwischen den VMs (die "Virtualisierungsumgebung"). Jedes OS und alle
sonstige Software, die auf einer VM läuft, wird als ein "Gast" oder als "Gastsoftware" bezeichnet, während ein "Host" oder "Hostsoftware" Software, wie zum
Beispiel ein VMM, ist, die außerhalb
der Virtualisierungsumgebung abläuft
und die Virtualisierungsumgebung kennen kann, aber nicht kennen muß.
-
Ein
Prozessor in einem Informationsverarbeitungssystem kann eine Virtualisierung
unterstützen,
indem er zum Beispiel einen Befehl zum Eintreten in eine Virtualisierungsumgebung unterstützt, um einen
Gast auf einer VM ablaufen zu lassen. In der Virtualisierungsumgebung
können
bestimmte Ereignisse, Operationen und Situationen, wie zum Beispiel externe
Interrupts oder Versuche, auf bevorrechtigte Register oder Ressourcen
zuzugreifen, "unterbrochen" werden, d. h. den
Prozessor veranlassen, die Virtualisierungsumgebung zu verlassen,
so daß ein VMM
zum Beispiel dahingehend tätig
sein kann, Virtualisierungsvorschriften zu implementieren. Ein Prozessor
kann auch andere Befehle für
das Aufrechterhalten einer Virtualisierungsumgebung unterstützen und
kann Registerbits enthalten, die Virtualisierungsfähigkeiten
des Prozessors anzeigen oder steuern.
-
Zu
den bevorrechtigten Ressourcen des Systems können I/O-Vorrichtungen (Input/Output – Eingabe/Ausgabe)
gehören,
auf die über
I/O-Transaktionen und/oder über
Speichertransaktionen zugegriffen werden kann, wobei die I/O-Vorrichtung
auf eine Speicheradresse abgebildet wurde (eine "speicherabgebildete Vorrichtung"). I/O-Transaktionen können unterbrochen
werden, um zu verhindern, daß ein
Gast direkt auf eine I/O-Vorrichtung zugreifen kann. Speichertransaktionen
zu speicherabgebildeten I/O-Vorrichtungen können in einer seitenbasierten
Speicherverwaltungsarchitektur unterbrochen werden, indem Seiten
markiert werden, auf die eine I/O-Vorrichtung als nicht vorhanden
oder nicht beschreibbar abgebildet wurde, wodurch ein Seitenfehlerintercept
bewirkt wird, wenn ein Gast versucht, auf die speicherabgebildete
Vorrichtung zuzugreifen.
-
KURZE
BESCHREIBUNG DER ZEICHNUNGEN
-
Die
vorliegende Erfindung wird beispielhaft und nicht-einschränkend in
den begleitenden Figuren veranschaulicht.
-
1 veranschaulicht
eine Virtualisierungsumgebung, in der eine Ausführungsform der vorliegenden
Erfindung arbeiten kann.
-
2 veranschaulicht
eine Ausführungsform
der vorliegenden Erfindung in einem Verfahren, mit dem ein VMM die
Unterstützung
für das
Zugreifen eines Gastes auf eine speicherabgebildete Vorrichtung
initialisiert.
-
3 veranschaulicht
eine Ausführungsform
der vorliegenden Erfindung in einem Verfahren, mit dem Gast auf
eine speicherabgebildete Vorrichtung zugreift.
-
DETAILLIERTE
BESCHREIBUNG
-
Im
Folgenden werden Ausführungsformen von
Vorrichtungen, Verfahren und Systemen für das Zugreifen eines Gastes
auf eine speicherabgebildete Vorrichtung beschrieben. In dieser
Beschreibung können
zahlreiche konkrete Details, wie zum Beispiel Komponenten- und Systemkonfigurationen,
dargelegt werden, um ein gründlicheres
Verstehen der vorliegenden Erfindung zu ermöglichen. Der Fachmann versteht
jedoch, daß die
Erfindung auch ohne diese konkreten Details praktiziert werden kann.
Des Weiteren wurden einige einschlägig bekannte Strukturen, Schaltkreise
und dergleichen nicht im Detail gezeigt, um die vorliegende Erfindung
nicht unnötig
in den Hintergrund treten zu lassen.
-
Die
Leistung einer Virtualisierungsumgebung kann verbessert werden,
wenn die Häufigkeit unterbrochener
Ereignisse minimiert wird. Ausführungsformen
der Erfindung können
zum Unterstützen der
Virtualisierung speicherabgebildeter Vorrichtungen verwendet werden
und können
wünschenswert sein,
um die Leistung in einer Virtualisierungsumgebung zu verbessern.
In einer Ausführungsform
können
sie dafür
verwendet werden, die Virtualisierung des Aufgabenprioritätsregisters
(Task Priority Register – "TPR") eines weiterentwickelten
programmierbaren Interrupt-Controllers (Advanced Programmable Interrupt
Controller – "APIC") in einem Prozessor der
Pentium®-Prozessorfamilie
zu unterstützen.
In dieser Ausführungsform
kann die Leistung im Vergleich zu einer Virtualisierungsumgebung,
in der alle Gastzugriffe auf das TPR durch einen VMM unterbrochen
werden, verbessert werden, indem ein VMM einige Gastzugriffe auf
das TPR nicht mehr zu unterbrechen braucht.
-
1 veranschaulicht
eine Virtualisierungsarchitektur 100, in der eine Ausführungsform
der vorliegenden Erfindung arbeiten kann. In 1 kann die reine
Plattformhardware 110 jede beliebige Datenverarbeitungsvorrichtung
sein, die in der Lage ist, ein beliebiges OS oder eine beliebige
VMM-Software auszuführen.
Zum Beispiel kann die reine Plattformhardware die eines Personalcomputers,
eines Großrechners,
eines tragbaren Computers, eines handgehaltenen Gerätes, einer
Set-Top-Box, eines Servers oder eines beliebigen sonstigen Computersystems sein.
Die reine Plattformhardware 110 enthält einen Prozessor 120,
einen Speicher 130, eine Eingabe/Ausgabe (I/O)-Vorrichtung 111 und
einen Chipsatz 112.
-
Der
Prozessor 120 kann ein beliebiger Prozessortyp sein, einschließlich eines
Allzweck-Mikroprozessors,
wie zum Beispiel ein Prozessor aus der Pentium®-Prozessorfamilie,
der Itanium®-Prozessorfamilie
oder einer anderen Prozessorfamilie von der Intel Corporation oder
ein sonstiger Prozessor von einer anderen Firma oder ein digitaler
Signalprozessor oder Mikrocontroller. Obgleich 1 nur
einen einzigen solchen Prozessor 120 zeigt, kann die reine Plattformhardware 110 jede
beliebige Anzahl von Prozessoren enthalten, einschließlich jeder
beliebigen Anzahl von Mehrkernprozessoren mit jeweils einer beliebigen
Anzahl von Ausführungskernen
und jeder beliebigen Anzahl von nebenläufigen Prozessoren mit jeweils
einer beliebigen Anzahl von Pfaden.
-
Der
Speicher 130 kann ein statischer oder dynamischer Direktzugriffsspeicher,
halbleiterbasierter Nurlese- oder Flash-Speicher, ein magnetischer oder
optischer Disk-Speicher, ein beliebiger sonstiger Typ eines durch
den Prozessor 120 lesbaren Speichermediums oder eine beliebige
Kombination solcher Speichermedien sein. Der Speicher 130 kann entsprechend
einer beliebigen Adressierungstechnik adressierbar sein, und jede
beliebige Vorrichtung, die in der reinen Plattformhardware 110 gezeigt
oder nicht gezeigt ist, kann auf eine Adresse innerhalb des Adreßbereichs
des Speichers 130 abgebildet werden.
-
Die
eine oder die mehreren I/O-Vorrichtungen 115 können jede
beliebige Anzahl von Peripheriegeräten oder I/O-Vorrichtungen
darstellen, wie zum Beispiel einen Monitor, eine Tastatur, eine
Maus, einen Drucker, eine Netzwerkschnittstelle, eine Informationsspeichereinrichtung
usw. Der Chipsatz 111 kann jede beliebige Anzahl von Komponenten
enthalten, die jede beliebige Anzahl von Aufgaben ausführen, wie
zum Beispiel Systemlogik, Bussteuerung, Busschnittstellen, Busüberbrückung, Speichersteuerung,
Peripheriegerätesteuerung,
Peripheriegerätefunktionen,
Systemkonfiguration usw. In einigen Ausführungsformen kann über einen
oder mehrere Adreßbereiche
unter Verwendung von Speicheradreßanweisungen, d. h. über eine
speicherabgebildete Schnittstelle, auf die eine oder die mehreren I/O-Vorrichtungen 115 zugegriffen
werden. Eine speicherabgebildete I/O-Vorrichtung hat wenigstens
einen solchen Adreßbereich, über den
auf sie zugegriffen werden kann.
-
Der
Prozessor 120, der Speicher 130, die eine oder
die mehreren I/O-Vorrichtungen 115 und der Chipsatz 111 können entsprechend
einer beliebigen bekannten Art und Weise miteinander verbunden sein
oder miteinander kommunizieren, wie zum Beispiel direkt oder indirekt über einen
oder mehrere Busse, eine Punkt-zu-Punkt- oder über sonstige verdrahtete oder
drahtlose Verbindungen. Die reine Plattformhardware 110 kann
außerdem
jede beliebige Anzahl zusätzlicher
Vorrichtungen oder Verbindungen enthalten.
-
Zusätzlich zu
der reinen Plattformhardware 110 veranschaulicht 1 einen
VMM 140, VMs 150 und 160 und Gast-OSs
und -Anwendungen 152, 154, 155, 162, 164 und 165.
-
Der
VMM 140 kann eine beliebige Software oder Firmware oder
ein beliebiger Hardwarehost sein, die bzw. der in der reinen Plattformhardware 110 installiert
ist oder für
die reine Plattformhardware 110 zugänglich ist, um für Gäste VMs,
d. h. Abstraktionen reiner Plattformhardware 110, darzustellen oder
auf sonstige Weise in der Virtualisierungsumgebung 100 VMs
zu erzeugen, VMs zu verwalten und Virtualisierungsvorschriften zu
implementieren. In anderen Ausführungsformen
kann ein Host ein beliebiger VMM, ein beliebiger Hypervisor, ein
beliebiges OS oder sonstige Software, Firmware oder Hardware sein,
der bzw. die die reine Plattformhardware 110 zu steuern
vermag. Ein Gast kann ein beliebiges OS, ein beliebiger VMM, einschließlich einer
anderen Instanz eines VMM 140, ein beliebiger Hypervisor
oder eine beliebige Anwendung oder sonstige Software sein.
-
Jeder
Gast erwartet, auf physikalische Ressourcen, wie zum Beispiel Prozessor-
und Plattformregister, Speicher und Eingabe/Ausgabe-Vorrichtungen,
der reinen Plattformhardware 110 entsprechend der in der
VM dargestellten Architektur des Prozessors und der Plattform zuzugreifen. 1 zeigt
zwei VMs, 150 und 160, mit dem Gast-OS 152 und
den Gastanwendungen 154 und 155, die in der VM 150 installiert
sind, und dem Gast-OS 162 und den Gastanwendungen 164 und 165,
die in der VM 160 installiert sind. Obgleich 1 nur
zwei VMs und zwei Anwendungen je VM zeigt, kann innerhalb des Geltungsbereichs
der vorliegenden Erfindung jede beliebige Anzahl von VMs erzeugt
werden, und jede beliebige Anzahl von Anwendungen kann auf jeder
VM laufen.
-
Eine
Ressource, auf die ein Gast zugreifen kann, kann entweder als eine "bevorrechtigte" oder eine "nicht-bevorrechtigte" Ressource klassifiziert werden.
Für eine
bevorrechtigte Ressource ermöglicht
der VMM 140 die vom Gast gewünschte Funktionalität, während sie
die letztendliche Kontrolle über die
Ressource behält.
Nicht-bevorrechtigte Ressourcen brauchen nicht durch den VMM 140 kontrolliert zu
werden, und ein Gast kann direkt auf sie zugreifen.
-
Des
Weiteren erwartet jede Gast-OS, verschiedene Ereignisse zu handhaben,
wie zum Beispiel Ausnahmen (zum Beispiel Seitenfehler und allgemeine
Schutzverletzungen), Interrupts (zum Beispiel Hardware-Interrupts
und Software-Interrupts) und Plattformereignisse (zum Beispiel Initialisierungs-
und Systemverwaltungsinterrupts). Diese Ausnahmen, Interrupts und
Plattformereignisse werden im vorliegenden Text zusammen und einzeln
als "Ereignisse" bezeichnet. Einige
dieser Ereignisse sind "bevorrechtigt", weil sie durch
den VMM 140 gehandhabt werden müssen, um den ordnungsgemäßen Betrieb
der VMs 150 und 160, den Schutz des VMM 140 vor
Gästen
und den Schutz von Gästen voreinander
zu gewährleisten.
-
Zu
jedem gegebenen Zeitpunkt kann der Prozessor 120 Befehle
von dem VMM 140 oder einem Gast ausführen, so daß der VMM 140 oder
der Gast in dem Prozessor 120 ablaufen oder unter der Kontrolle
des Prozessors 120 ablaufen kann. Wenn ein bevorrechtigtes
Ereignis eintritt oder ein Gast versucht, auf eine bevorrechtigte
Ressource zuzugreifen, so kann die Kontrolle vom Gast zum VMM 140 übergehen.
Die Übergabe
der Kontrolle von einem Gast zum VMM 140 wird im vorliegenden
Text als "VM-Ausstieg" bezeichnet. Nach
der entsprechenden Handhabung des Ereignisses oder dem entsprechenden
Ermöglichen
des Zugriffs auf die Ressource kann der VMM 140 die Kontrolle
an einen Gast zurückgeben.
Die Übergabe
der Kontrolle von dem VMM 140 an einen Gast wird im vorliegenden
Text als ein "VM-Einstieg" bezeichnet.
-
Bei
der Ausführungsform
von 1 steuert der Prozessor 120 den Betrieb
der VMs 150 und 160 gemäß Daten, die in einer Steuerstruktur
einer virtuellen Maschine (Virtual Machine Control Structure – "VMCS") 132 gespeichert
sind. Die VMCS 132 ist eine Struktur, die den Zustand eines
Gastes oder von Gästen,
den Zustand des VMM 140, Ausführungssteuerungsinformationen,
die anzeigen, wie der VMM 140 den Betrieb eines Gastes
oder von Gästen steuern
soll, Informationen bezüglich
VM-Ausstiegen und VM-Ausstiegen und sonstige derartige Informationen
enthalten kann. Der Prozessor 120 liest Informationen aus
der VMCS 132, um die Ausführungsumgebung einer VM zu
bestimmen und ihr Verhalten zu begrenzen. In dieser Ausführungsform
ist die VMCS 132 im Speicher 130 gespeichert.
In einigen Ausführungsformen
werden mehrere VMCSs verwendet, um mehrere VMs zu unterstützen. Obgleich 1 eine
VMCS 132 zeigt, die im Speicher 130 gespeichert
ist, ist das Speichern einer VMCS in einem Speicher keine Bedingung
für die
vorliegende Erfindung.
-
Der
Prozessor 120 kann eine speicherabgebildete Vorrichtung 122 mit
Registern oder sonstigen Steuerungs-, Konfigurations-, Status- oder
Informationsspeicherstrukturen oder -orten 123 und 124 enthalten.
Zum Beispiel kann die speicherabgebildete Vorrichtung 122 ein
APIC sein; ein Speicherort 123 kann ein TPR sein; und ein
Speicherort 124 kann ein beliebiges anderes APIC-Register
oder ein beliebiger anderer Abschnitt eines Registers sein. Der
Chipsatz 111 kann des Weiteren eine speicherabgebildete
Vorrichtung 122 mit Speicherorten 113 und 114 sein;
und die I/O-Vorrichtung 115 kann ebenfalls eine speicherabgebildete
Vorrichtung sein, die Speicherorte 116 und 117 enthält. Der
Prozessor 120 und/oder der Chipsatz 111 kann beliebige
weitere speicherabgebildete Vorrichtungen enthalten; jede andere
I/O-Vorrichtung kann eine speicherabgebildete Vorrichtung sein;
und/oder jeder andere Prozessor, jeder andere Chipsatz oder jede
andere Komponente, die nicht in 1 gezeigt
ist, kann eine speicherabgebildete Vorrichtung sein, auf die ein
Gast gemäß einer
Ausführungsform
der vorliegenden Erfindung zugreifen kann. Auf die Speicherorte 123, 124, 116 und 117 kann über I/O-Befehle und/oder
Speicherzugriffe zugegriffen werden, wie oben beschrieben. Darum
sind die folgenden Beschreibungen, wenn von Zugriffen auf einen
Speicherort die Rede ist, so zu verstehen, daß Zugriffe auf einen Speicherbereich
oder I/O-Ports, die dem Speicherort entsprechen, gemeint sind. Solche
Speicherungen können
durch einen Speicher in der I/O- Vorrichtung
abgesichert werden oder können
eine Schnittstelle zu Funktionen bereitstellen, welche die I/O-Vorrichtung
anbietet.
-
Der
Prozessor 120 enthält
des Weiteren eine Schnittstelle 121 zum Speicher 130,
bei der es sich um eine Buseinheit oder eine sonstige Einheit, einen sonstigen
Port oder eine sonstige Schnittstelle handeln kann, die es dem Prozessor 120 gestattet, über einem
beliebigen Typ eines Busses, einer Punkt-zu-Punkt- oder sonstigen
Verbindung direkt oder über
eine andere Komponente, wie zum Beispiel über den Chipsatz 111,
mit dem Speicher 130 zu kommunizieren.
-
Außerdem enthält der Prozessor 120 eine Steuerlogik 125 zum
Unterstützen
einer Virtualisierung, einschließlich der Virtualisierung des
Zugriffes auf speicherabgebildete Vorrichtungen wie zum Beispiel
die Vorrichtungen 122, 112 und 115. Die
Steuerlogik 125 kann Mikrocode, programmierbare Logik, hartcodierte
Logik oder eine sonstige andere Form einer Steuerlogik innerhalb
des Prozessors 120 sein. In anderen Ausführungsformen
kann die Steuerlogik 125 in jeder beliebigen Form von Hardware,
Software oder Firmware, wie zum Beispiel einer Prozessorabstraktionsschicht,
innerhalb eines Prozessors oder innerhalb einer Komponente, auf
die ein Prozessor zugreifen kann, oder eines Speichermediums, das durch
einen Prozessor gelesen werden kann, wie zum Beispiel einem Speicher 130,
implementiert sein.
-
Die
Steuerlogik 125 veranlaßt den Prozessor 120,
Verfahrensausführungsformen
der vorliegenden Erfindung auszuführen, wie zum Beispiel die
Verfahrensausführungsformen,
die in den 2 und 3 veranschaulicht
sind, indem sie den Prozessor 120 veranlaßt, die
Ausführung
einer oder mehrerer Mikrooperationen, zum Beispiel zum Unterstützen einer Virtualisierung,
in seiner Reaktion auf Virtualisierungsbefehle oder sonstige Befehle
von einem Host oder Gast aufzunehmen.
-
Die
Steuerlogik 125 enthält
die Schattenlogik 126, die Beurteilungslogik 127 und
die Ausstiegslogik 128. Die Schattenlogik 126 dient
der Schattierung einer speicherabgebildeten Vorrichtung, wie weiter
unten beschrieben. Die Beurteilungslogik 127 hat zu bestimmen,
ob einem Versuch eines Gastes, auf eine Speicherregion (zum Beispiel
den Speicherort einer spei cherabgebildeten Vorrichtung) zuzugreifen,
stattgegeben wird. Die Ausstiegslogik 128 ist dafür da, einen
VM-Ausstieg vorzubereiten und zu veranlassen, wenn dem Versuch nicht
stattgegeben wird. Jede dieser Logikeinheiten kann überdies
weitere Funktionen ausführen,
einschließlich
jener, die in dieser Beschreibung durch eine andere der Logikeinheiten ausgeführt werden,
und beliebige oder alle dieser Logikeinheiten können zu einer einzigen Logikeinheit integriert
sein.
-
Die
VMCS 132 kann Felder, Steuerbits oder sonstige Datenstrukturen
enthalten, um die Virtualisierung speicherabgebildeter Vorrichtungen,
wie zum Beispiel der Vorrichtungen 122, 112 und 115,
zu unterstützen.
Diese Datenstrukturen können
durch die Steuerlogik 125 überprüft werden, oder die Steuerlogik 125 kann
auf sonstige Weise auf diese Datenstrukturen zugreifen, um zu bestimmen,
wie eine VM-Umgebung zu verwalten ist. Zum Beispiel kann das Interceptsteuerbit 134 so
gesetzt werden, daß veranlaßt wird,
daß bestimmte
Versuche eines Gastes, auf eine schattierte – oder virtuelle – Kopie
eines Speicherortes in einer speicherabgebildeten Vorrichtung zuzugreifen,
zu einem VM-Ausstieg führen,
wie weiter unten beschrieben. In der Beschreibung dieser Ausführungsform
sind diese Steuerbits so gesetzt, daß sie einen gewünschten
Effekt ermöglichen oder
veranlassen, wobei "Setzen" das Schreiben einer
logischen Eins in das Bit meint, aber es kann innerhalb des Geltungsbereichs
der vorliegenden Erfindung jede beliebige Logikkonvention oder -nomenklatur
verwendet werden.
-
Des
Weiteren kann in der VMCS 132 das Schattenadreßfeld 135 verwendet
werden, um eine Adresse eines Speicherortes zu speichern, an dem eine
schatten – oder
virtuelle – Kopie
eines Speicherortes in einer speicherabgebildeten Vorrichtung gespeichert
werden kann. Wenn zum Beispiel der Speicherort 123 ein
TPR ist, so kann das Schattenadreßfeld 135 ein 64-Bit-Feld
sein, das den Ort einer 4 Kilobyte großen virtuellen APIC-Seite im
Speicher bestimmt, dergestalt, daß eine virtuelle Kopie der
Aufgabenpriorität
in den Bits 7:4 des TPR-Feldes am Versatz 80H der virtuellen APIC-Seite
gespeichert werden kann. In einer alternativen Ausführungsform kann
die VMCS 132 ein Feld enthalten, um eine Schattenkopie
eines Wertes, der im Speicherort 123 gespeichert werden
soll, direkt zu speichern, anstatt eines Zeigers zu einem Speicherort
für den
Wert. Zum Beispiel kann die VMCS 132 ein Vier-Bit-Feld enthalten, um
eine virtuelle Kopie eines Wertes direkt zu speichern, der in einem
TPR gespeichert werden soll.
-
2 und 3 veranschaulichen
Verfahrensausführungen
der vorliegenden Erfindung. Obgleich Verfahrensausführungen
diesbezüglich
nicht eingeschränkt
sind, beziehen wir uns auf die Virtualisierungsumgebung 100 von 1,
um die Verfahrensausführungen
der 2 und 3 zu beschreiben. Diese Beschreibung
verwendet die Begriffe "Zugriff
auf die speicherabgebildete Vorrichtung", "Zugriff auf
Speicher" und dergleichen,
wobei solche Begriffe meinen, daß diese Zugriffe über normale
Speicherzugriffsbefehle erfolgen.
-
2 veranschaulicht
eine Ausführungsform
der vorliegenden Erfindung in einem Verfahren, bei dem ein VMM eine
Unterstützung
initialisiert, damit ein Gast auf eine speicherabgebildete Vorrichtung
zugreifen kann.
-
Im
Kasten 210 von 2 erzeugt der VMM 140 von 1 eine
VMCS (zum Beispiel VMCS 132) für eine VM. In den Kästen 212 bis 216 konfiguriert der
VMM 140 die VMCS 132, die Virtualisierung einer speicherabgebildeten
Vorrichtung, wie zum Beispiel der speicherabgebildeten Vorrichtung 122,
zu implementieren.
-
Im
Kasten 214 wird eine Adresse eines Speicherortes zum Speichern
der Schattenkopie des Speicherortes 123 in das Adreßfeld 135 geschrieben. Wie
oben beschrieben, kann die Adresse eine Basisadresse sein, zu der
ein Versatz hinzugefügt
werden kann, um die Adresse des Speicherortes zu bestimmen, der
als ein Schattenort verwendet werden soll, oder die Adresse kann
die Adresse des Schattenortes sein. Alternativ kann der schattierte
Wert direkt in einer VMCS gespeichert werden, anstelle eines Zeigers
auf den schattierten Wert. In einer Ausführungsform kann der VMM 140 Speicher
zuweisen, um den Schattenwert zu speichern.
-
Im
Kasten 216 wird das Interceptsteuerbit 134 gesetzt,
um zu veranlassen, daß bestimmte
Versuche eines Gastes, auf die schattierte – oder virtuelle – Kopie
des Speicherortes 123 in der speicherabgebildeten Vorrichtung 122 zuzugreifen,
zu einem VM-Ausstieg führen,
wie unter Bezug auf 3 beschrieben. Es ist zu beachten,
daß in
dieser Ausführungsform,
wie unter Bezug auf 3 noch weiter beschrieben wird,
die speicherabgebildete Vorrichtung 122 des Weiteren einen
Speicherort 124 enthalten kann, der nicht schattiert ist.
-
3 veranschaulicht
eine Ausführungsform
der vorliegenden Erfindung in einem Verfahren, bei dem ein Gast
auf eine speicherabgebildete Vorrichtung zugreift.
-
Im
Kasten 310 von 3 wird ein VM-Einstieg ausgeführt, und
die Kontrolle geht an einen Gast über. Im Kasten 320 beginnt
der Gast – oder
der Gast fährt
fort –,
auf der VM zu laufen. Im Kasten 330 versucht der Gast einen
Speicherzugriff auf eine Adresse in einem Bereich von Speicheradressen,
die der speicherabgebildeten Vorrichtung 122 zugeordnet
sind. Der Speicherzugriff kann ein Lesevorgang, ein Schreibvorgang,
ein Ausführungsversuch
oder ein Lese-Modifizierungs-Schreib-Versuch sein. Der Speicherzugriff
kann spezielle Qualifikatoren, wie zum Beispiel Busverriegelungsanzeigen,
enthalten. Der Speicherzugriff kann explizit (zum Beispiel ein Datenzugriff,
ein Stapellesevorgang oder das Holen eines Befehls) sein, oder er
kann implizit sein (zum Beispiel das Holen von Seitentabellendaten
im Anschluß an
das Verpassen eines TLB, ein Schreiben von zugegriffenen oder beschädigten Bits
in die Seitentabellen oder ein Lesen eines Segmentdeskriptors).
Die Beurteilungslogik 127 kann den versuchten Zugriff unter
Verwendung von Adreßkomparatoren oder über eine
beliebige sonstige im Stand der Technik bekannte Art und Weise detektieren.
In einer Ausführungsform
kann das Detektieren der Speicheradresse mittels Analyse der physikalischen
Adressen ausgeführt
werden. In einer weiteren Ausführungsform
können
lineare oder virtuelle Adressen verwendet werden.
-
Eine
speicherabgebildete Vorrichtung kann als vollständig schattiert angesehen werden,
wenn ein Gast Zugriff auf Schatten- oder virtuelle Kopien aller
Speicherorte hat, die in der Vorrichtung verfügbar sind (wenn zum Beispiel
die speicherabgebildete Vorrichtung nur die Speicherorte 123 und 124 enthält und beide
schattiert werden). Eine speicherabgebildete Vorrichtung kann als
teilweise schattiert angesehen werden, wenn ein Gast Zugriff auf
eine Schatten- oder virtuelle Kopie wenigstens eines der Speicherorte
hat, die in der Vorrichtung verfügbar
sind (wenn zum Beispiel der Speicherort 123 schattiert
wird, aber nicht der Speicherort 124). In einigen Ausführungsformen
kann mehr als ein einziges Steuerbit überprüft werden, oder es können unterschiedliche
Steuerbits überprüft werden,
je nachdem, auf welchen Speicherort einer speicherabgebildeten Vorrichtung ein
Gast gerade zuzugreifen versucht.
-
Wenn
der Interceptmechanismus für
die speicherabgebildete Vorrichtung 122 im Kasten 340 nicht
aktiviert ist, so veranlaßt
in Kasten 390 die Ausstiegslogik 128 die Vornahme
eines VM-Ausstiegs, damit der VMM den Zugriff handhaben kann. Wenn jedoch
der Interceptmechanismus für
die speicherabgebildete Vorrichtung 122 im Kasten 340 aktiviert
ist, so schreitet das Verfahren 300 zum Kasten 360 voran.
Im Kasten 360 bestimmt die Beurteilungslogik 127,
ob der Zugriff gestattet werden soll. Wenn der Zugriff nicht gestattet
wird, so veranlaßt
im Kasten 390 die Ausstiegslogik 128 die Vornahme
eines VM-Ausstiegs, damit der VMM den Zugriff handhaben kann.
-
Wenn
jedoch das Interceptsteuerbit 134 im Kasten 350 aktiviert
ist, so schreitet das Verfahren 300 zum Kasten 360 voran.
Im Kasten 360 bestimmt die Beurteilungslogik 127,
ob der Zugriff gestattet werden soll. Wenn der Zugriff nicht gestattet
wird, so veranlaßt
im Kasten 390 die Ausstiegslogik 128 die Vornahme
eines VM-Ausstiegs, damit der VMM den Zugriff handhaben kann.
-
Die
Bestimmung, ob der Zugriff gestattet werden soll, kann auf die Art
des versuchten Zugriffs gestützt
werden. In einer Ausführungsform
können Lesezugriffe
erlaubt werden, aber Schreibzugriffe können untersagt werden. In einer
Ausführungsform können Ausführungsversuche
untersagt werden. In einer Ausführungsform
können
Lese-Modifizierungs-Schreib-Versuche
untersagt werden. In einigen Ausführungsformen können implizite
Zugriffe untersagt werden. Es sind auch andere Einschränkungen
auf der Grundlage der Zugriffsart möglich. In einer weiteren Ausführungsform
kann die Frage, ob der Zugriff gestattet werden soll, in Abhängigkeit
davon beantwortet werden, ob der Zugriff auf einen schattierten
Ort oder auf einen unschattierten oder einen teilweise schattierten
Ort erfolgt. Das heißt,
die Zugriffsart kann schattiert, unschattiert oder teilweise schattiert
sein. Wenn der Zugriff zum Beispiel auf einen schattierten Ort erfolgt,
wie zum Beispiel den Ort 123 in der Vorrichtung 122,
so kann der Zugriff gestattet werden; wenn aber der Zugriff auf
einen unschattierten Ort erfolgt, wie zum Beispiel den Ort 124 in
der Vorrichtung 122, oder auf einen teilweise schattierten
Ort erfolgt, wie zum Beispiel einen Ort, der sowohl den schattierten
Ort 123 als auch den unschattierten Ort 124 enthält, so kann
der Zugriff untersagt werden. Innerhalb des Geltungsbereichs der vorliegenden
Erfindung sind auch andere Zugriffsarten möglich.
-
Eine
Ausführungsform,
wo die speicherabgebildete Vorrichtung 122 ein APIC ist,
wird als ein zusätzliches
Beispiel beschrieben. Der versuchte Zugriff kann ein Befehl sein
zu versuchen, auf das TPR zuzugreifen (der Zugriff würde genau
genommen auf eine virtuelle Kopie des TPR ("V-TPR") erfolgen, da das TPR schattiert wird).
Ein solcher Befehl kann einen oder mehrere Zugriffe auf die virtuelle
APIC-Seite ("V-APIC") veranlassen. Wenn
der Befehl einen Lesevorgang aus dem V-TPR und keine weiteren Zugriffe
auf den V-APIC enthält,
so kann der Lesevorgang gestattet werden. Wenn der Befehl einen Schreibvorgang
in das V-TPR und keine weiteren Zugriffe auf die V-APIC-Seite enthält, so kann
der Schreibvorgang gestattet werden, und die Schattenlogik 126 gewährleistet,
daß die
Bits 127:8 des V-TPR-Feldes im Anschluß an den Schreibvorgang gelöscht werden
(d. h. die Schattenlogik führt
eine besondere Handhabung aus, wie weiter unten noch beschrieben
wird). Die vorangegangenen zwei Befehle in einer Ausführungsform,
die mit einem V-APIC arbeitet, können
als schattierte Zugriffe angesehen werden, wobei die Zugriffsart
schattiert, unschattiert oder teilweise schattiert sein kann, weil
das TPR schattiert ist. In einer Ausführungsform kann die Schattenlogik 126 entsprechende
Aktualisierungen an Abschnitten des schattierten Speichers oder
an anderen Speicherorten oder Maschinenregistern vornehmen. Zum
Beispiel können
in einer Ausführungsform
Schreibvorgänge
in Abschnitte schattierter Speicherorte ignoriert werden. In einer
weiteren Ausführungsform
können
Lesevorgänge
aus schattierten Speicherorten, die Nurlese-Orte sind, immer die
entsprechenden reservierten Werte, zum Beispiel Nullen, unabhängig von
den Werten, die in dem Schattenspeicher gespeichert sind, zurückmelden.
-
Ein
anderer Befehl in einer Ausführungsform,
die mit einem V-APIC arbeitet, kann als teilweise schattiert angesehen
werden. Wenn ein Befehl einen Zugriff auf das V-TPR und einen Zugriff
auf einen anderen Ort in dem V-APIC (der nicht schattiert ist), beinhaltet,
so erfolgt ein VM-Ausstieg.
-
Wenn
im Kasten 360 die Beurteilungslogik 127 bestimmt,
daß der
Zugriff gestattet werden soll, so bestimmt die Beurteilungslogik 127 im
Kasten 370, ob eine besondere Handhabung erforderlich ist. Zu
einer besonderen Handhabung kann jede beliebige Handhabung des versuchten
Zugriffs gehören, der
durch die Steuerlogik 125 ausgeführt wird. Ein Beispiel wurde
oben für
einen Befehl gegeben, der einen Schreibvorgang in ein V-TPR beinhaltet.
Ein weiteres Beispiel – ebenfalls
in einer Ausführungsform,
die mit einem V-APIC arbeitet – ist,
wenn ein Befehl mehr als einen einzigen Zugriff auf ein V-TPR beinhaltet.
In diesem Fall kann die besondere Handhabung darin bestehen, die
Ausführung
des Befehls zu gestatten, aber danach einen VM-Ausstieg zu veranlassen.
-
Wenn
im Kasten 370 die Beurteilungslogik 127 bestimmt,
daß keine
besondere Handhabung erforderlich ist, so veranlaßt im Kasten 352 die
Schattenlogik 126 die Ausführung des Gast-Zugriffs unter Verwendung
der virtuellen Version der speicherabgebildeten Vorrichtung 122,
und das Verfahren 300 kehrt zum Kasten 320 zurück, damit
der Gast weiter arbeitet. Wenn jedoch im Kasten 370 die
Beurteilungslogik 127 bestimmt, daß eine besondere Handhabung
erforderlich ist, so führt
im Kasten 372 die Steuerlogik 125 die besondere
Handhabung aus. Diese besondere Handhabung kann beinhalten, den Gast-Zugriff
unter Verwendung der virtuellen Version der speicherabgebildeten
Vorrichtung 122 ganz oder teilweise auszuführen, wie
weiter unten noch besprochen wird.
-
Im
Kasten 380 bestimmt die Steuerlogik 125, ob die
besondere Handhabung einen VM-Ausstieg beinhaltet.
Wenn das der Fall ist, so veranlaßt die Ausstiegslogik 128 im
Kasten 390 einen VM-Ausstieg. Wenn nicht, so kehrt das
Verfahren 300 zum Kasten 320 zurück, damit
der Gast weiter arbeitet.
-
In
einer Ausführungsform
kann eine besondere Handhabung ausgeführt werden, um eine Virtualisierung
des TPR in einem APIC zu unterstützen.
In dieser Ausführungsform
können
Schreibvorgänge
in das TPR immer erlaubt sein, um in den Schatten zu schreiben.
Wenn der geschriebene Wert kleiner ist als ein vom VMM vorgegebener
Schwellenwert (der zum Beispiel in einem Feld in der VMCS gespeichert ist),
so erfolgt ein VM-Ausstieg. Wie oben beschrieben, veranlassen Zugriffe,
die teilweise schattiert sind, wie zum Beispiel Schreibvor gänge, die
Adressen modifizieren – mit
Ausnahme des TPR-Feldes im V-APIC –, VM-Ausstiege. In einer weiteren Ausführungsform
wird gestattet, daß Schreibvorgänge in die virtuelle
Version der speicherabgebildeten Vorrichtung 122 vollendet
werden, wobei nach Vollendung des Befehls ein VM-Ausstieg erfolgt.
-
Innerhalb
des Geltungsbereichs der vorliegenden Erfindung können die
in den 2 und 3 veranschaulichten Verfahren
in einer anderen Reihenfolge ausgeführt werden, wobei veranschaulichte Kästen weggelassen
werden können,
weitere Kästen hinzugefügt werden
können,
oder mit einer Kombination aus umgeordneten, weggelassenen oder
zusätzlichen
Kästen.
Zum Beispiel kann eine VMCS Laststeuer- und Speichersteuerbits enthalten,
die in Verbindung mit Schattensteuer- und/oder Interceptsteuerbits
verwendet werden können,
um zu bestimmen, ob Lese- und/oder Schreibzugriffe gestattet sind.
-
Der
Prozessor 120 oder eine beliebige andere Komponente oder
ein beliebiger anderer Abschnitt einer Komponente, die gemäß einer
Ausführungsform
der vorliegenden Erfindung konstruiert sind, können vom Entwurf über die
Simulation bis hin zur Fabrikation in verschiedenen Stufen konstruiert
sein. Daten, die einen Entwurf darstellen, können den Entwurf in einer Anzahl
von Art und Weisen darstellen. Zuerst kann, wie es in Simulationen
nützlich
ist, die Hardware unter Verwendung einer Hardwarebeschreibungssprache
oder einer anderen Funktionsbeschreibungssprache dargestellt werden.
Zusätzlich
oder alternativ kann ein Schaltkreisebenenmodell mit Logik- und/oder
Transistorgattern auf einigen Stufen des Entwurfsprozesses erstellt
werden. Des Weiteren erreichen die meisten Entwürfe auf irgendeiner Stufe eine
Ebene, wo sie mit Daten modelliert werden können, welche die körperliche
Anordnung verschiedener Bauelemente darstellen. In dem Fall, wo
herkömmliche
Halbleiterfabrikationstechniken zum Einsatz kommen, können die
Daten, welche das Bauelementanordnungsmodell darstellen, die Daten
sein, die das Vorhandensein oder Fehlen verschiedener Strukturelemente
auf verschiedenen Maskenschichten für Masken spezifizieren, die
zur Herstellung eines integrierten Schaltkreises verwendet werden.
-
In
jeder beliebigen Darstellung des Entwurfs können die Daten in jeder beliebigen
Form eines maschinenlesbaren Speichermediums gespeichert werden.
Eine optische oder elektrische Wel le, die moduliert oder anderweitig
erzeugt wird, um solche Informationen zu übertragen, ein Speicher oder
ein magnetisches oder optisches Speichermedium, wie zum Beispiel
eine Disk, kann das maschinenlesbare Speichermedium sein. Jedes
dieser Speichermedien kann den Entwurf oder sonstige Informationen "tragen" oder "anzeigen", die in einer Ausführungsform der
vorliegenden Erfindung verwendet werden, wie zum Beispiel die Befehle
in einer Wiederherstellungsroutine nach dem Auftreten von Fehlern.
Wenn eine elektrische Trägerwelle,
welche die Informationen anzeigt oder trägt, übertragen wird, so wird in dem
Umfang, wie ein Kopieren, Puffern oder eine Neuübertragung des elektrischen
Signals ausgeführt wird,
eine neue Kopie erstellt. Somit können die Aktionen eines Kommunikationsanbieters
oder eines Netzwerkanbieters das Herstellen von Kopien eines Artikels,
zum Beispiel einer Trägerwelle,
darstellen, der die Techniken der vorliegenden Erfindung verkörpert.
-
Somit
wurden Vorrichtungen und Verfahren, die es einem Gast ermöglichen,
auf eine speicherabgebildete Vorrichtung zuzugreifen, offenbart.
Obgleich bestimmte Ausführungsformen
beschrieben und in den begleitenden Zeichnungen gezeigt wurden,
versteht es sich, daß solche
Ausführungsformen lediglich
die Erfindung im weitesten Sinne veranschaulichen und nicht einschränken und
daß diese Erfindung
nicht auf die konkret gezeigten und beschriebenen Bauweisen und
Anordnungen zu beschränken
ist, da dem Durchschnittsfachmann beim Studium dieser Offenbarung
verschiedene weitere Modifikationen einfallen. Auf einem technischen
Gebiet wie diesem, wo sich das Wachstum rasch vollzieht und der
weitere Fortschritt nur schwer vorherzusagen ist, lassen sich die
offenbarten Ausführungsformen
möglicherweise
leicht durch das Einbinden technischer Weiterentwicklungen in Anordnung
und Detail modifizieren, ohne daß von den Prinzipien der vorliegenden
Offenbarung abgewichen oder der Geltungsbereich der begleitenden
Ansprüche
verlassen wird.