DE10393679B4 - Prozessor, der einen Übergang zwischen einem virtuellen Maschinen Betriebsmodus (VM) und einem virtuellen Maschinen Monitor Betriebsmodus (VMM) unterstützt - Google Patents

Prozessor, der einen Übergang zwischen einem virtuellen Maschinen Betriebsmodus (VM) und einem virtuellen Maschinen Monitor Betriebsmodus (VMM) unterstützt Download PDF

Info

Publication number
DE10393679B4
DE10393679B4 DE10393679T DE10393679T DE10393679B4 DE 10393679 B4 DE10393679 B4 DE 10393679B4 DE 10393679 T DE10393679 T DE 10393679T DE 10393679 T DE10393679 T DE 10393679T DE 10393679 B4 DE10393679 B4 DE 10393679B4
Authority
DE
Germany
Prior art keywords
processor
machine
state
vmcs
value
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE10393679T
Other languages
English (en)
Other versions
DE10393679B9 (de
DE10393679T5 (de
Inventor
Steven Hillsboro Bennett
Gilbert Portland Neiger
Erik Portland Cota-Rob-Les
Stalinselvaraj Beaverton Jeyasingh
Alain Portland Kagi
Michael Kozuch
Richard Hillsboro Uhlig
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE10393679T5 publication Critical patent/DE10393679T5/de
Application granted granted Critical
Publication of DE10393679B4 publication Critical patent/DE10393679B4/de
Publication of DE10393679B9 publication Critical patent/DE10393679B9/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

Prozessor, der einen Übergang zwischen einem Virtuellen Maschinen (VM) Betriebmodus und einem Virtuellen Maschinen Monitor (VMM) Betriebsmodus unterstützt,
mit einer Virtuellen-Maschinen-Steuerungsstruktur (VMCS), in die der Prozessor (112) den Maschinenzustand des ersten der Getriebemodi beim Übergang in den zweiten Betriebsmodus speichert und aus der der Prozessor (112) den Maschinenzustand des zweiten der Betriebsmodi bei diesem Übergang liest,
wobei beim Übergang zwischen den Betriebsmodi eine Steuerungslogik des Prozessors (112) in Abhängigkeit von einem Steuerungsindikatorwert für ein Element eines Maschinenzustands den Wert des Elements entweder
a) aus der Virtuellen Machinen-Steuerungsstruktur (VMCS) liest und einem entsprechenden Register zuweist, oder
b) aus anderen Werten von Elementen der Virtuellen-Maschinen-Steuerungsstruktur (VMCS) berechnet und einem entsprechenden Register zuweist.

Description

  • TECHNISCHES GEBIET
  • Ausführungsformen der vorliegenden Erfindung betreffen im Allgemeinen Computersysteme und insbesondere die Betriebsverwaltung und/oder Steuerung von Operationen virtueller Maschinen innerhalb von Computersystemen.
  • STAND DER TECHNIK
  • Ein Virtuelles-Maschinen-System gestattet ein derartiges Unterteilen einer gegenständlichen Maschine, daß die zugrundeliegende Hardware der Maschine als eine oder mehrere unabhängig arbeitende Virtuelle Maschinen (VMs) erscheint. Ein Virtueller-Maschinen-Monitor (VMM) läuft auf einem Computer und präsentiert anderer Software eine Abstraktion einer oder mehrerer VMs. Jede VM kann als eine sich selbst enthaltende Plattform fungieren, welche ihr eigenes Betriebssystem (OS) und/oder ihre eigene Anwendungs-Software ablaufen läßt. Software, die innerhalb einer VM ausgeführt wird, wird als Gast-Software bezeichnet. Es wird auf Hall, J. S. Virtualizing the VAX architecture. In: Proceedings of the 28th International Symposium an Computer Architecture, 1991, pp 380-389 hingewiesen.
  • Die Gast-Software erwartet, daß so arbeiten zu könnnen, als wenn sie auf einem dedizierten Computer durchgeführt würde, statt auf einer VM. Das bedeutet, daß die Gast-Software erwartet, daß sie verschiedene Ereignisse steuert und Zugriff auf Hardware-Ressourcen des Computers (z.B. der gegenständlichen Maschine) besitzt. Die Hardware-Ressourcen der gegenständlichen Maschine können einen oder mehrere Prozessoren, auf dem(den) Prozessor(en) befindliche Betriebsmittel (z.B. Steuerungsregister, Cache-Speicher und anderes), Speicher (und Strukturen, welche sich im Speicher befinden, z.B. Deskriptor- Tabellen) und andere Betriebsmittel (z.B. Eingabe-Ausgabe-Vorrichtungen) umfassen, die sich in der gegenständlichen Maschine befinden. Die Ereignisse können Unterbrechungen, Ausnahmebehandlungen, Plattformereignisse (z.B. Initialisierungs- (INIT) oder Systemverwaltungsunterbrechungen (SMIs)) und dergleichen umfassen.
  • Der VMM kann einen Gast-Software-Zustand bedarfsweise in dem(den) Prozessor(en), den Vorrichtungen, dem Speicher und den Registern der gegenständlichen Maschine hin- und hertauschen. Der(die) Prozessor(en) kann (können) einen beliebigen Zustand während Übergängen zwischen einer VM und dem VMM hin- und hertauschen. Der VMM kann das Leistungsvermögen einer VM in manchen Situationen durch Gestatten eines unmittelbaren Zugriffs auf die zugrundeliegende gegenständliche Maschine verbessern. Dies kann insbesondere angebracht sein, wenn eine Operation im nicht privilegierten Modus in der Gast-Software durchgeführt wird, der den Zugriff auf die gegenständliche Maschine einschränkt, oder wenn Operationen keine Hardware-Ressourcen in der gegenständlichen Maschine verwenden, für die der VMM die Steuerung behalten möchte. Der VMM wird als der Host der VMs betrachtet.
  • Der VMM gewinnt die Steuerung zurück, wann immer eine Gast-Operation die korrekte Ausführung des VMM oder einer der nicht ausgeführten VM beeinträchtigen kann. Gewöhnlich untersucht der VMM derartige Operationen, wobei er bestimmt, ob ein Problem existiert, bevor er gestattet, daß die Operation mit der zugrundeliegenden gegenständlichen Maschine fortgesetzt oder die Operation im Namen eines Gasts emuliert wird. Beispielsweise kann der VMM ein Zurückgewinnen der Steuerung benötigen, wenn der Gast auf E/A-Vorrichtungen zugreift, wenn er versucht die Maschinenkonfiguration zu verändern (z.B. durch Verändern von Steuerungsregisterwerten), wenn er versucht auf bestimmte Speicherbereiche zuzugreifen und dergleichen.
  • Existierende gegenständliche Maschinen, die eine Operation einer VM unterstützen, steuern die Ausführungsumgebung einer VM unter Verwendung einer Struktur, die hier als eine Virtuelle-Maschinen-Steuerungsstruktur (VMCS) bezeichnet wird. Die VMCS wird in einem Speicherbereich gespeichert und enthält beispielsweise den Zustand des Gastes, den Zustand des VMM und Steuerungsinformationen, die bezeichnen, unter welchen Bedingungen der VMM während einer Ausführung des Gastes die Steuerung zurückgewinnen möchte. Der eine oder die mehreren Prozessoren in der gegenständlichen Maschine lesen Informationen aus der VMCS aus, um die Ausführungsumgebung der VM und des VMM zu bestimmen und um das entsprechende Verhalten der Gast-Software zu erzwingen.
  • Der(die) Prozessor(en) der gegenständlichen Maschine lädt (laden) und speichert (speichern) den Maschinenzustand, wenn ein Übergang in (d.h. Eintritt) oder aus (d.h. Austritt) einer VM auftritt. Herkömmliche Architekturen führen aus, daß ein vorbestimmter Zustandssatz, wie in den Prozessor-Spezifikationen definiert, in einer ähnlichen Weise wie andere Systemstrukturen, Befehlscodierungen und Maschinenverhaltensweisen geladen und gespeichert wird. Der VMM ist unmittelbar nach diesen Spezifikationen codiert. Diese Strukturierung schränkt die Flexibilität der Implementierung des VMM ein.
  • Deshalb gibt es einen Bedarf an verbesserten Implementierungen von Verfahren zum Eintritt in und zum Austritt aus VMs. Diese Implementierungen und Verfahren sollten eine bessere Verwaltung und Steuerung der Operationen von VM gestatten.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • 1 ist ein Diagramm einer VM-Architektur gemäß einer Ausführungsform der Erfindung.
  • 2A ist ein Ablaufdiagramm eines Verfahrens zum Verwalten einer VM-Übergangsoperation gemäß einer Ausführungsform der Erfindung.
  • 2B ist ein Ablaufdiagramm eines Verfahrens zum Laden eines Maschinenzustands während einer VM-Übergangsoperation gemäß einer Ausführungsform der Erfindung.
  • 2C ist ein Ablaufdiagramm eines Verfahrens zum Speichern eines Maschinenzustands während einer VM-Übergangsoperation gemäß einer Ausführungsform der Erfindung.
  • 3 ist ein Ablaufdiagramm eines Verfahrens zum Durchführen von Ladeoperationen während eines VM-Übergangs gemäß einer Ausführungsform der Erfindung.
  • 4 ist ein Ablaufdiagramm eines Verfahrens zum Durchführen von Speicheroperationen während eines VM-Übergangs gemäß einer Ausführungsform der Erfindung.
  • 5 ist ein Ablaufdiagramm eines Verfahrens zum Bestimmen eines Werts eines Zustandsaktionsindikators während einer VM-Übergangsoperation gemäß einer Ausführungsform der Erfindung.
  • BESCHREIBUNG DER AUSFÜHRUNGSFORMEN
  • Es werden neue Verfahren, Vorrichtungen und Systeme zum Verwalten von Übergängen während einer Operation einer VM beschrieben. In der folgenden ausführlichen Beschreibung der Ausführungsformen wird auf die beiliegenden Zeichnungen Bezug genommen, die ein Teil der Beschreibung bilden und bei denen auf dem Wege der Darstellung insbesondere spezifische Ausführungsformen der Erfindung gezeigt werden, die in die Praxis umgesetzt werden können. Diese Ausführungsformen werden ausreichend ausführlich beschrieben, um Durchschnittfachleuten zu ermöglichen sie zu verstehen und zu implementieren, es versteht sich, daß andere Ausführungsformen eingesetzt werden können und daß bauliche, logische und elektrische Veränderungen vorgenommen werden können, ohne den Gedanken und den Schutzumfang der vorliegenden Offenbarung zu verlassen. Die folgende ausführliche Beschreibung ist deshalb nicht in einem einschränkenden Sinn zu verstehen, und der Schutzumfang der Ausführungsformen der hier offenbarten Erfindungen wird nur von den angefügten Ansprüchen definiert.
  • 1 illustriert eine Ausführungsform einer Virtuellen-Maschinen-Umgebung 100, in der die vorliegende Erfindung arbeiten kann. Bei dieser Ausführungsform umfaßt eine gegenständliche Maschine 110 eine Rechnerplattform, welche beispielsweise in der Lage sein kann, ein Standard-Betriebssystem (OS) oder einen Virtuellen-Maschinen-Monitor (VMM), wie beispielsweise einen VMM 125, auszuführen. Der VMM 125 kann, obwohl er typischerweise in Software implementiert wird, eine Maschinenschnittstelle für eine Software höherer Ebene emulieren und exportieren. Eine derartige Software höherer Ebene kann ein Standard- oder Echtzeit-OS umfassen, kann eine hochgradig abgespeckte Betriebsumgebung mit begrenzter OS-Funktionalität sein, und braucht keine herkömmlichen OS-Einrichtungen und dergleichen umfassen. Ersatzweise kann der VMM 125 beispielsweise innerhalb oder auf einem anderen VMM aufgesetzt laufen. Der VMM 125 kann beispielsweise als Hardware, Software und Firmware oder durch eine Kombination verschiedener Verfahren implementiert werden. VMMs und ihre typischen Merkmale und Funktionalität sind Durchschnittsfachleuten wohlbekannt.
  • Die gegenständliche Maschine 110 kann ein Personal-Computer (PC), ein Mainframe-Computer, ein tragbares Gerät, ein tragbarer Computer, eine Set-Top-Box, ein intelligentes Gerät oder ein beliebiges anderes Rechnersystem oder -Vorrichtung sein. Die gegenständliche Maschine 110 umfaßt einen Prozessor 112 und einen Speicher 120. Zusätzlich kann die gegenständliche Maschine 110 verschiedene andere nicht gezeigte Eingabe/Ausgabe-Vorrichtungen umfassen.
  • Der Prozessor 112 kann ein beliebiger Prozessortyp sein, der in der Lage ist, Software auszuführen, wie beispielsweise ein Mikroprozessor, ein digitaler Signalprozessor, ein Mikrosteuergerät oder dergleichen. Der Prozessor 112 kann Mikrocode, Makrocode, Software, programmierbare Logik oder hart codierte Logik zum Durchführen der Ausführung von Ausführungsformen für Verfahren der vorliegenden Erfindung umfassen. Obwohl in 1 nur ein derartiger Prozessor 112 gezeigt wird, versteht es sich, daß ein oder mehrere Prozessoren in einem System vorhanden sein können.
  • Der Speicher 120 kann eine Festplatte, eine Diskette, ein Schreib-/Lesespeicher (RAM), ein Nur-Lese-Speicher (ROM), ein Flash-Speicher, ein beliebiges anderes Maschinenmedium, die durch Prozessor 112 lesbar ist, oder eine Kombination der oben stehenden Vorrichtungen sein. Der Speicher 120 kann Befehle und/oder Daten zum Durchführen der Ausführung der Verfahrensausführungsformen der vorliegenden Erfindung speichern.
  • Der VMM 125 präsentiert anderer Software (d.h. der "Gast-" Software) die Abstraktion einer oder mehrerer virtuellen Maschinen (VMs), die den verschiedenen Gästen die gleichen oder unterschiedliche Abstraktionen bereitstellen kann. 1 zeigt drei VM 132, 142 und 152. Die Gast-Software, die auf jeder VM abläuft, kann ein Gast-OS, wie beispielsweise ein Gast-OS 134, 144 oder 154, und verschiedene Gast-Software-Anwendungen 136, 146 und 156 umfassen. Jedes der Gast-OS 134, 144 und 154 erwartet, daß es innerhalb der VMs 132, 142 und 152, auf denen die Gast-OS 134, 144 oder 154 laufen, auf gegenständliche Betriebsmittel (z.B. Register des Prozessors 112, Speicher 120 und E/A-Vorrichtungen) zugreift und verschiedene Ereignisse, einschließlich Unterbrechungen, welche von Systemvorrichtungen während des Betriebs der VMs 132, 142 und 152 erzeugt wurden, behandelt.
  • Der Prozessor 112 steuert den Betrieb der VMs 132, 142 und 152 gemäß Daten, die in der VMCS 122 gespeichert sind. Die VMCS 122 kann im Speicher 120 (wie in 1 gezeigt), innerhalb des Prozessors 112, in einem beliebigen anderen Ort oder in jeder Kombination von Speicherorten gespeichert sein. Die VMCS 122 stellt eine Speicherung für den Maschinenzustand des VMM 125 und der Gast-Software bereit. Zusätzlich kann sie Indikatoren umfassen, um den Betrieb einer VM einzuschränken oder auf andere Weise zu steuern und um Übergänge zwischen einer VM und dem VMM 125 zu steuern. Die VMCS 122 ist durch den VMM 125 zugänglich. Die VMCS muß kein zusammenhängender Speicherbereich oder Speicherungsbereich sein. Deshalb kann die VCMS bei manchen Ausführungsformen logisch aus mehreren Speichern oder Speicherungsorten zusammengesetzt und es kann darauf zugegriffen werden.
  • Ein Übergang von dem VMM 125 an die Gast-Software wird "VM-Eintritt" genannt. Ein Übergang aus einer Gast-Software zu dem VMM 120 wird "VM-Austritt" genannt. Zusammen werden VM-Eintritte und VM-Austritte als "VM-Übergänge" bezeichnet. Bei einer Ausführungsform kann ein VMM 125 einen VM-Eintritt durch Ausführen eines bestimmten Befehls zu initiieren, um den VM-Eintritt zu bewirken. Bei einer Ausführungsform können VM-Austritte explizit von der VM verlangt werden (z.B. durch Ausführen eines speziellen Befehls zum Bewirken des VM-Austritts). Bei manchen Ausführungsformen verlangt die VM einen Übergang nicht unmittelbar, sondern statt dessen erfordert irgendein Ereignis (z.B. eine Schutzverletzung, eine Unterbrechung und dergleichen) oder ein Befehl, welcher von einer VM ausgeführt wird, einen VM-Austritt, wie es durch Steuerungen in der VMCS 122 oder durch die Architektur des Virtuellen-Maschinen-Systems bestimmt wird (z.B. wenn ein bestimmtes Steuer-Bit in der VMCS gesetzt ist, dann bewirken Ausführungen des INVLPG-Befehls VM-Austritte; jedes Auftreten einer nicht maskierbaren Unterbrechung bewirkt einen VM-Austritt).
  • Während VM-Übergängen kann der Prozessor 112 aufgrund verschiedener Elemente des Maschinenzustands handeln. Wie Durchschnittsfachleute erkennen, können einem Maschinenzustand verschiedene architektonische Komponenten beispielsweise in dem(den) Prozessor(en), den E/A-Vorrichtungen, dem Chipsatz usw. zugeordnet sein. Dementsprechend verwenden Beschreibungen verschiedener Ausführungsformen der vorliegenden Erfindung den Ausdruck "Maschinenzustand" im Rahmen seiner herkömmlichen Bedeutung, welche um einige Komponenten erweitert wurde, welche traditionell nicht als architektonisch angesehen werden. Folglich kann ein Maschinenzustand Universal- und Fließkommaregister (z.B. in der Befehlssatzarchitektur (ISA) des Pentium IV von Intel, welcher als IA-32 ISA, EAX, EDX, ST3 und dergleichen bezeichnet wird), Steuerregister (z.B. im IA-32 ISA, CR0, CR3 und dergleichen), Befehlszeiger (z.B. im IA-32 ISA, EIP), Verarbeitungskennzeichen (z.B. im IA-32 ISA, EFLAGS und dergleichen), Modell-spezifische Register (MRSs)(z.B. im IA-32 ISA, DEBUGCTL, MTRRs, TSC und dergleichen), Segmentregister (z.B. im IA-32 ISA, CS, SS, TR und dergleichen, welche Selektor-, Basis-, Begrenzungs- und AT-Byte-Felder umfassen), einen zusätzlichen internen (architektonischen oder nicht architektonischen) Maschinenzustand (z.B. Schlafzustand, Unterbrechbarkeitsinformationen, Ablaufmaschinenzustand), einen Zustand, welcher die Speicherverwaltung betrifft (z.B. PDPTRs, Inhalte eines Translation-Look-Aside-Puffers (TLB), Chipsatz-Register, einen E/A-Vorrichtungszustand und anderes umfassen. Entsprechend ist nicht vorgesehen, daß die Beispielliste der oben stehend präsentierten Informationen erschöpfend ist, und sie kann durch andere Informationen erweitert werden. Weiterhin erkennen Durchschnittsfachleute die hier präsentierten Akronyme unmittelbar.
  • Das VM-System 100 stellt eine flexible Architektur zum Implementieren von Mechanismen bereit, die verwendet werden, wenn das Laden und/oder das Speichern eines Maschinenzustands während Übergängen (z.B. Eintritten und Austritten) zwischen Gast-VM (z.B. 132, 142 und 152) und einem Host-VMM 125 verwaltet werden.
  • 2A illustriert ein Ablaufdiagramm eines Verfahrens 200 zum Verwalten von VM-Übergangsoperationen gemäß einer Ausführungsform der Erfindung. Der Prozeß kann durch Verarbeitungslogik durchgeführt werden, die Hardware (z.B. einen Schaltkomplex, dedizierte Logik, programmierbare Logik, Mikrocode usw.), Software (welche z.B. auf einem Universal-Computersystem oder einer dedizierten Maschine ausgeführt wird) oder eine Kombination aus beidem umfassen kann.
  • Bei 210 erkennt der Prozessor 112, daß gerade ein VM-Übergang stattfindet. Der VM-Übergang kann ein VM-Austritt oder ein VM-Eintritt sein. Dementsprechend wird bei 220 eine Prüfung durchgeführt um zu bestimmen, ob der VM-Übergang eine VM-Austrittsoperation ist.
  • Falls der Prozessor 112 einen VM-Eintritt ausführt, kann der Prozessor 112 eine Anzahl an Operationen zur Vorbereitung der Steuerungsübergabe von einem VMM zu einer VM durchführen. Beispielsweise kann der Prozessor 112 bei 230 den VMM-Maschinenzustand speichern, bei 240 den VM-Maschinenzustand laden und schließlich bei 250 die Steuerung an die VM übergeben.
  • Falls der Prozessor 112 einen VM-Austritt behandelt, kann der Prozessor 112 eine Anzahl an Operationen zur Vorbereitung der Steuerungsübergabe an einen VMM von einer VM durchführen. Beispielsweise kann der Prozessor 112 bei 260 einen VM-Maschinenzustand speichern, bei 270 einen VMM-Maschinenzustand laden und schließlich bei 280 die Steuerung an den VMM übergeben.
  • Ausführungsformen von Verfahren zum Laden (z.B. bei 240 und/oder bei 270 in 2) und zum Speichern (z.B. bei 230 und/oder bei 260 in 2) eines Maschinenzustands während VM-Übergängen werden in 2B bzw. 2C illustriert.
  • Es versteht sich, daß andere Aktionen während der Verarbeitung eines VM-Eintritts oder eines VM-Austritts auftreten können, welche in der 2A, 2B und 2C nicht dargestellt sind. Beispielsweise kann es nötig sein, daß die Gültigkeit und die Konsistenz des Zustands, welcher gerade bei einem VM-Eintritt oder VM-Austritt geladen wird, sichergestellt werden müssen.
  • 2B illustriert ein Verfahren 202 zum Laden eines Zustands während eines VM-Übergangs. Das Verfahren kann durch Verarbeitungslogik durchgeführt werden, die Hardware (z.B. einen Schaltkomplex, dedizierte Logik, programmierbare Logik, Mikrocode und dergleichen), Software (welche z.B. auf einem Universal-Computersystem oder auf einer dedizierten Maschine ausgeführt wird) oder eine Kombination aus beidem umfassen kann.
  • Anfänglich wird bei 222 bestimmt, ob irgendwelche Elemente des Maschinenzustands verblieben sind, die verarbeitet werden müssen. Falls keine Elemente des Maschinenzustands zur Verarbeitung verblieben sind, wird das Verfahren beendet. Andernfalls wird bei 232 ein Wert eines Steuer-Bits bestimmt. Diese Steuer-Bits und ihre Bestimmungen werden nachfolgend ausführlich diskutiert. Wenn, wie bei 242 bestimmt, das Bit nicht gesetzt ist (das Bit einen Wert von 0 aufweist), kehrt die Steuerung zu 222 zurück. Andernfalls (das Bit ist mit einem Wert von 1 gesetzt) wird bei 252 ein Wert, der dem Element des Maschinenzustands entspricht, bestimmt. Die Bestimmung des Werts wird nachfolgend diskutiert. Dieser Wert wird dann bei 262 in dem Maschinenzustand installiert. Die Steuerung kehrt dann zu 222 zurück, um zu bestimmen, ob weitere Elemente des Maschinenzustands verblieben sind.
  • 2C illustriert ein Verfahren 204 zum Speichern eines Maschinenzustands während eines VM-Übergangs. Das Verfahren kann durch Verarbeitungslogik durchgeführt werden, die Hardware (z.B. einen Schaltkomplex, dedizierte Logik, programmierbare Logik, Mikrocode und dergleichen), Software (welche z.B. auf einem Universal-Computersystem oder einer dedizierten Maschine ausgeführt wird) oder eine Kombination aus beidem umfassen kann.
  • Zunächst wird bei 224 bestimmt, ob irgendwelche Elemente des Maschinenzustands verblieben sind, die verarbeitet werden müssen. Falls keine Elemente des Maschinenzustands zur Verarbeitung verblieben sind, wird das Verfahren terminiert. Andernfalls wird bei 234 ein Wert eines Steuer-Bits bestimmt. Diese Steuer-Bits und ihre Bestimmungen werden nachfolgend ausführlich diskutiert. Wenn, wie bei 244 bestimmt, das Bit nicht gesetzt ist (das Bit einen Wert von 0 aufweist), kehrt die Steuerung zu 224 zurück. Andernfalls (das Bit ist mit einem Wert von 1 gesetzt) wird bei 254 ein Wert, welcher dem Element des Maschinenzustands entspricht, bestimmt. Die Bestimmung des Werts wird nachfolgend diskutiert. Dieser Wert wird dann bei 264 gespeichert. Die Steuerung kehrt dann zu 224 zurück, um zu bestimmen, ob weitere Elemente des Maschinenzustands verblieben sind.
  • Bei einer Ausführungsform umfaßt die VMCS zwei Sätze von Steuer-Bits, die der Steuerung des VMM unterliegen. Diese Steuer-Bits werden als VM-Eintrittssteuerungen und VM-Austrittssteuerungen bezeichnet. Die VM-Eintrittssteuerungen informieren den Prozessor während eines VM-Eintritts darüber, welcher VMM-Maschinenzustand gespeichert werden soll und welcher VM-Maschinenzustand geladen werden soll. Die VM-Austrittssteuerungen informieren den Prozessor während eines VM-Austritts darüber, welcher VM-Maschinenzustand gespeichert werden soll und welcher VMM-Maschinenzustand geladen werden soll.
  • Nur beispielhaft können die VM-Eintrittssteuerungen als eine Bit-Folge mit einer Länge von 6 dargestellt werden, wobei jeder Bit-Ort innerhalb der Bit-Folge eine Aktion oder Nicht-Aktion auf einem bestimmten Element des Maschinenzustands identifiziert oder repräsentiert. Beispielsweise können der Bit-Ort innerhalb der Folge und das zugeordnete Element des Maschinenzustands wie folgt dargestellt werden:
    Bit-Ort Prozessor-Aktion und zugeordnetes Element des Maschinenzustands
    0 Speichern-VMM-DR7
    1 Speichern-VMM-CR3
    2 Speichern-VMM-CR4
    3 Laden-Gast-DR7
    4 Laden-Gast-CR3
    5 Laden-Gast CR4
  • In einer ähnlichen Weise können die VM-Austrittssteuerungen als eine Bit-Folge innerhalb der VMCS mit einer Länge von 4 dargestellt werden. Genauso können der Bit-Ort innerhalb der Folge und die zugeordnete Aktion für das Element des Maschinenzustands wie folgt dargestellt werden:
    Bit-Ort Prozessor-Aktion und zugeordnetes Element des Maschinenzustands
    0 Speichern-Gast-CR3
    1 Speichern-Gast-CR4
    2 Laden-VMM-CR3
    3 Laden-VMM-CR4
  • Falls der VMM bei einem VM-Eintritt in den VM-Eintrittssteuerungen (Bit-Nummer 0) das "Speichern-VMM-DR7"-Bit gesetzt aufweist, speichert der Prozessor dann den aktuellen Wert des DR7-Registers. Bei einer Ausführungsform wird der Wert des DR7-Registers in der VMCS gespeichert. Falls umgekehrt das "Speichern-VMM-DR7"-Bit in den VM-Eintrittssteuerungen gelöscht ist, speichert der Prozessor dann den DR7-Registerwert nicht. Die VM-Eintrittssteuer-Bits "Speichern-VMM-CR3" und "Speichern-VMM-CR4" (z.B. Bit-Nummer 1 bzw. 2) verhalten sich in einer ähnlichen Weise.
  • Falls genauso der VMM das VM-Eintrittssteuer-Bit "Speichern-Gast-DR7" (z.B. Bit-Nummer 4) gesetzt aufweist, lädt der Prozessor dann das DR7-Register. Bei einer Ausführungsform ist der geladene Wert im DR7-Feld der Gast-VM in der VMCS eingeschlossen. Falls das VM-Eintrittssteuer-Bit "Laden-DR7" gelöscht ist, lädt der Prozessor das DR7-Register dann nicht. Wieder verhalten sich die Steuer-Bits "Laden-Gast-CR3" und "Laden-Gast-CR4" (z.B. Bit-Nummer 4 bzw. 5) in einer entsprechenden Weise. Die VM-Austrittssteuer-Bits arbeiten auf ähnlichen Wegen zum Steuern des Speicherns des Maschinenzustands der Gast-VM und des Ladens des Maschinenzustands des Host-VMM beim VM-Austritt.
  • Bei diesem Beispiel steuern die VM-Eintritts- und VM-Austrittssteuerungen nicht die gleichen Elemente des Maschinenzustands; da die VM-Eintrittssteuerungen Bits umfassen, welche DR7 repräsentieren, und die VM-Austrittssteuerungen keine umfassen. Wie Durchschnittsfachleute jedoch unmittelbar anerkennen, können die VM-Eintritts- und VM-Austrittssteuerungen die gleichen Elemente des Maschinenzustands steuern, und es ist vorgesehen, daß derartige Repräsentationen innerhalb des Schutzumfangs der verschiedenen Ausführungsformen für die vorliegende Erfindung fallen. Außerdem sollte die bestimmte Auswahl des Maschinenzustands, der dieses Beispiel repräsentiert, nicht als einschränkend angesehen werden.
  • Obwohl das oben stehend präsentierte Beispiel eine Darstellung zum Verstehen einer Ausführungsform der vorliegenden Erfindung bereitstellt, ist es nicht vorgesehen, daß die Erfindung derartig eingeschränkt wird. In allen Szenarien muß beispielsweise der geladene Wert kein Wert in der VMCS sein, und der gespeicherte Wert muß kein Wert unmittelbar aus dem Maschinenzustand sein (wie es bei den oben stehend beschriebenen Ausführungsformen der Fall ist).
  • Bei dem oben stehend gegebenen Beispiel kann der Prozessor einen Wert für ein Element des Maschinenzustands aus oder in der VMCS laden oder speichern. Ersatzweise kann der Prozessor einen Festwert für ein Element des Maschinenzustands laden oder speichern. Weiterhin kann der Prozessor einen Wert laden oder speichern, der dynamisch berechnet wurde. Schließlich kann der Prozessor keine Aktion hinsichtlich eines Elements des Maschinenzustands vornehmen (es wird kein Wert geladen oder gespeichert). Diese alternativen Mechanismen zum Bestimmen des Werts, welcher geladen oder gespeichert werden soll, werden nachfolgend beschrieben.
  • Der Prozessor kann einen festen (d.h. konstanten oder vorbestimmten) Wert für ein Element des Maschinenzustands laden oder speichern. Beispielsweise kann der Prozessor bei einem VM-Austritt einen Festwert in das EFLAGS-Register laden. Das bedeutet, daß es keine VMM-EFLAGS gibt, die in der VMCS repräsentiert ist. Statt dessen erzwingt der Prozessor vor einem Übergang der Steuerung an den VMM, daß das EFLAGS-Register in dem Prozessor einen Festwert oder einen vorbestimmten Wert (z.B. 0×2 oder andere Werte) aufweist. Auf diese Weise "erzwingt" der Prozessor den Wert eines Elements des Maschinenzustands. In gleicher Weise kann der Prozessor einen Wert erzwingen, der beim VM-Eintritt in der VMCS gespeichert wurde, einen Wert erzwingen, der beim VM-Eintritt in den Maschinenzustand geladen wurde, und/oder einen Wert erzwingen, der beim VM-Austritt in der VMCS gespeichert wurde.
  • Auf diese Weise müssen nicht alle Elemente des Maschinenzustands explizit in der VMCS repräsentiert sein. Dieses Verfahren stellt einen flexiblen Mechanismus zum Abdecken zusätzlicher Elemente des Maschinenzustands bereit, ohne eine große oder schwerfällige VMCS zu erzeugen. Zusätzlich kann dieses Erzwingen eines Maschinenzustands oder gespeicherter Werte das Leistungsvermögen der Implementierung eines VM-Austritts und eines VM-Eintritts durch ein Reduzieren der Anzahl an Zugriffen, die auf die VMCS nötig sind, und durch ein Reduzieren einer Konsistenz- und Fehlerprüfung verbessern, welche beim VM-Eintritt und/oder beim VM-Austritt erforderlich ist.
  • Weiter kann der Prozessor einen Wert berechnen, der dann in den Maschinenzustand geladen oder in der VMCS gespeichert wird. Dieser berechnete Wert wird auf der Grundlage des Werts von einem oder mehreren Elementen des Maschinenzustands, der Werte, die innerhalb der VMCS eingeschlossen sind, und dergleichen dynamisch bestimmt. Beispielsweise kann der Wert, der beim VM-Austritt in das EIP-Register geladen wird, durch Laden eines VMM-EIP-Feldwerts aus der VMCS und Laden des EIP-Registers mit diesem EIP-Wert, der durch irgendeinen berechneten Wert erhöht wurde, wobei der berechnete Wert von der Ursache des VM-Austritts abhängt, berechnet werden.
  • Eine dynamische Berechnung eines Elements des Maschinenzustands kann eine effizientere Implementierung eines VMM gestatten. Bei dem obenstehend gegebenen Beispiel gestattet die dynamische Berechnung des EIP beim VM-Austritt beispielsweise dem VMM, Handler für individuelle VM-Austrittsquellen aufzubauen, wobei die Notwendigkeit, den Austrittsgrund in der VMM-Software zu decodieren, entfällt.
  • Schließlich kann der Prozessor während eines VM-Übergangs keine Aktion hinsichtlich eines Elements des Maschinenzustands vornehmen. Beispielsweise kann der Prozessor die Werte der Universalregister (z.B. im IA-32 ISA, EAX, EDX und dergleichen) unverändert lassen, wenn ein Übergang aus einer VM zum VMM stattfindet.
  • Der Prozessor bestimmt die entsprechende Aktion, die während eines VM-Übergangs hinsichtlich eines Elements des Maschinenzustands vorzunehmen ist, indem ein "Zustandsaktionsindikator" evaluiert wird. Der Zustandsaktionsindikator bestimmt, welche Aktion vorgenommen werden soll. Der Wert eines Zustandsaktionsindikators ("Zustandsaktionsindikatorwert") kann den Prozessor anweisen, Zustandsinformationen aus der VMCS zu laden oder Zustandsinformationen in der VMCS zu speichern. Der Zustandsaktionsindikatorwert kann den Prozessor auch anweisen, zu erzwingen, daß ein fester oder vorbestimmter Wert geladen oder gespeichert wird, keine Aktion hinsichtlich eines bestimmten, betrachteten Elements des Maschinenzustands vorzunehmen oder einen berechneten Wert zu laden oder zu speichern.
  • Die oben stehend diskutierten VM-Eintritts- und VM-Austrittssteuerungen sind Beispiele von Zustandsaktionsindikatoren. Bei diesem Beispiel verwendet der Prozessor Felder der VMCS als Zustandsaktionsindikatoren. Jedes Bit in der VM-Eintritts- oder VM-Austrittssteuerung entspricht einem einzelnen Element des Maschinenzustands. Wenn ein Bit gesetzt ist, zeigt es dem Prozessor an, daß das Element des Maschinenzustands aus/in der VMCS geladen/gespeichert werden soll; Wenn es gelöscht ist, wird das Element des Maschinenzustands ignoriert. Bei alternativen Ausführungsformen kann ein einzelnes Bit bestimmen, ob ein Element des Maschinenzustands geladen werden soll oder auf einen Festwert gezwungen werden soll. Bei noch weiteren Ausführungsformen können die Zustandsaktionsindikatoren mehr als ein einzelnes Bit sein, und sie können ein komplexeres Verhalten codieren. Beispielsweise kann der Zustandsaktionsindikator 2 Bits sein, die 4 Werte gestatten, um die oben stehend beschriebenen Mechanismen des Ladens, des Erzwingens, des Berechnens und des Ignorierens zu unterscheiden.
  • Ein Zustandsaktionsindikator kann einem bestimmten VM-Übergang (z.B. allen VM-Austritten), einem bestimmten Element des Maschinenzustands (wie bei der oben stehend ausführlich erklärten Ausführungsform der VM-Eintritts- und VM-Austrittssteuerung) und/oder mehreren Elementen des Maschinenzustands (z.B. einem einzelnen Zustandsaktionsindikator, der beim VM-Austritt das Laden aller Universalregister in den Prozessor steuert) zugeordnet sein.
  • Ein Zustandsaktionsindikatorwert kann aus einem Wert bestimmt werden, der aus der VMCS erfaßt wurde (wie bei den oben stehenden Beispielen), kann ein Festwert (d.h. ein vorbestimmter Wert) sein oder kann ein dynamisch berechneter Wert sein. Nachfolgend wird jede dieser Möglichkeiten diskutiert.
  • Ein Zustandsaktionsindikator kann unter der Steuerung des VMM in der VMCS gespeichert werden. Beispiele von Zustandsaktionsindikatoren, welche in der VMCS gespeichert werden, wurden oben stehend ausführlich diskutiert.
  • Ein Zustandsaktionsindikator kann vorbestimmt sein. Wenn der Wert des Zustandsaktionsindikators ein fester oder ein vorbestimmter Wert ist, weist der VMM keine unmittelbare Steuerung über die Aktionen auf, die der Prozessor bei VM-Übergängen an einem entsprechenden Element des Maschinenzustands vornimmt. Beispielsweise kann der Prozessor den Wert des EIP-Registers während einer VM-Eintrittsverarbeitung durchgehend nicht speichern, einen Gast-Wert für das EIP-Register aus der VMCS während einer VM-Eintrittsverarbeitung durchgehend laden und/oder das EIP-Register während einer VM-Austrittsverarbeitung durchgehend laden.
  • Ein Zustandsaktionsindikator kann dynamisch berechnet werden. Falls der Zustandsaktionsindikator ein dynamisch berechneter Wert ist, kann der Zustandsaktionsindikator dann von einem oder mehreren Werten abhängen, welche einem oder mehreren Elementen des Maschinenzustands, einem oder mehreren Feldern in der VMCS und dergleichen zugeordnet sind.
  • Wenn beispielsweise der Prozessor in dem IA-32 ISA gegenständliche Adreßerweiterungen (im PAE-Modus) auf einen VM-Eintritt oder VM-Austritt nachfolgend verwendet, lädt der Prozessor die Einträge für die Seitenverzeichniszeiger-Tabellen (PDPTRs) aus der VMCS. Wenn der Prozessor sich nicht in einem PAE-Modus befindet, werden die PDTRs in dem Prozessor dann auf 0 gezwungen. Zum Bestimmen, ob sich der Prozessor im PAE-Modus befindet, untersucht der Prozessor das PAE-Bit in dem CR4-Register. Folglich kann gesagt werden, daß der Prozessor eine dynamische Bestimmung oder Berechnung des Zustandsaktionsindikatorwerts vorgenommen hat. Wenn das PAE-Bit gesetzt ist, weist der Zustandsaktionsindikator den Prozessor dann an, "aus der VMCS zu laden". Wenn das PAE-Bit gelöscht ist, weist der Zustandsaktionsindikator den Prozessor dann an, "einen Wert zu erzwingen" (z.B. einen Wert von 0 zu erzwingen). Es ist zu beachten, daß das hier beschriebene Verarbeiten zum Bestimmen, ob sich der Prozessor im PAE-Modus befindet, vereinfacht ist, um verschiedene Ausführungsformen der vorliegenden Erfindung deutlich zu erklären. Ein weiteres Verarbeiten kann erforderlich sein, um diese Bestimmung vorzunehmen, was von Durchschnittsfachleuten unmittelbar erkannt und verstanden wird.
  • Bei einem anderen Beispiel kann der Prozessor die Basis- und Begrenzungsfelder für ein Segmentregister laden, wenn der Wert eines Selektors eines Segments nicht null ist oder falls sich der Prozessor im V86-Modus befindet. Um diese Bestimmung vorzunehmen, untersucht der Prozessor zwei Teile der Maschinenzustandsinformationen: den Wert des Selektors für das betrachtete Segment und den Wert eines VM-Bits in einem EFLAGS-Register. Wenn der Selektor nicht null ist oder wenn das VM-Bit im EFLAGS gesetzt ist, dann wird der Prozessor angewiesen, auf andere Weise "aus der VMCS zu laden", der Prozessor nimmt keine Aktion vor. Es ist zu beachten, daß die hier beschriebene Verarbeitung zum Bestimmen, ob es nötig ist, die Basis- und Begrenzungsfelder zu laden, vereinfacht ist, um verschiedene Ausführungsformen der vorliegenden Erfindung deutlich zu erklären. Es kann weitere Verarbeitung erforderlich sein, um diese Bestimmung vorzunehmen, was von Durchschnittsfachleuten unmittelbar erkannt und verstanden wird.
  • Wie dem Durchschnittsfachleuten jetzt offenkundig ist, können die hier beschriebenen Verfahren zur dynamischen Steuerung des Ladens und des Speicherns des Maschinenzustands während eines Übergangs zwischen einem VMM und VMs verwendet werden. Übergänge in und aus einem VMM treten unter Verwendung einer VMCS und eines Prozessors mit flexibler Befehlslogik auf, wie oben stehend beispielhaft präsentiert wurde. Weiterhin muß nicht jedes Element des Maschinenzustands und nicht jede Aktion, welche der Prozessor vorgenommen hat, allein innerhalb der VMCS bejahend deklariert oder repräsentiert werden.
  • 3 illustriert ein Ablaufdiagramm eines Verfahrens 300 zum Durchführen des Ladens eines Elements des Maschinenzustands während eines VM-Übergangs gemäß einer Ausführungsform der Erfindung. 3 kann innerhalb des Entwurfs eines Prozessors für eine Maschine implementiert werden. Das Verfahren kann durch Verarbeitungslogik durchgeführt werden, welche Hardware (z.B. einen Schaltkomplex, dedizierte Logik, programmierbare Logik, Mikrocode und dergleichen), Software (die z.B. auf einem Universal-Computersystem oder einer dedizierten Maschine ausgeführt wird) oder eine Kombination aus beidem umfassen kann.
  • Bei 310 bestimmt der Prozessor den Zustandsaktionsindikator für das betrachtete Element des Maschinenzustands. Bei 320 untersucht der Prozessor den Zustandsaktionsindikator. Wenn der Zustandsaktionsindikatorwert anzeigt, daß das betrachtete Element des Maschinenzustands aus der VMCS geladen werden muß, wird bei 330 der Wert für das Element des Maschinenzustands geladen und bei 335 in das entsprechende betrachtete Element des Maschinenzustands installiert. Wenn der Zustandsaktionsindikatorwert jedoch anzeigt, daß, wie bei 340 bestimmt, das betrachtete Element des Maschinenzustands erzwungen werden muß, installiert der Prozessor bei 350 den vorbestimmten oder erzwungenen Wert in dem entsprechenden Element des Maschinenzustands. Weiterhin kann der Zustandsaktionsindikatorwert anzeigen, daß von dem Prozessor keine Aktion hinsichtlich des betrachteten Elements des Maschinenzustands bei 360 vorgenommen werden muß, so daß der Prozessor keine Aktion vornimmt (der Prozessor modifiziert das betrachtete Element des Maschinenzustands nicht).
  • Wenn die Evaluierung des Zustandsaktionsindikators bei 360 negativ ist (er nicht anzeigt, daß keine Aktion hinsichtlich des betrachteten Elements des Maschinenzustands erforderlich ist), dann kann gefolgert werden, daß eine dynamische Berechnung erforderlich ist. Natürlich kann bei manchen Ausführungsformen eine affirmative Prüfung des Zustandsaktionsindikators vorgenommen werden, um zu bestimmen, ob eine Berechnung notwendig ist, ohne irgendeine Störung dieses zu bewirken. Dementsprechend wird ein Wert für das betrachtete Element des Maschinenzustands bei 370 berechnet und bei 380 innerhalb des Elements des Maschinenzustands installiert. Der Prozessor kann den Wert für das Element des Maschinenzustands durch Untersuchen eines oder mehrerer Elemente des Maschinenzustands, durch Untersuchen eines Werts in der VMCS und/oder durch Untersuchen eines Steuerungsindikatorwerts und so weiter dynamisch berechnen. Wenn die Untersuchung weiterhin einmal vorgenommen wurde, kann der Prozessor eine oder mehrere Transformationen (z.B. eine Berechnung) durchführen, um den Wert für das betrachtete Element des Maschinenzustands herzustellen. Folglich kann der Prozessor verschiedene Daten verwenden und führt verschiedene Aktionen durch, um den Wert für das Element des Maschinenzustands zu erzeugen.
  • Das Verfahren 300 wird für jedes Element des Maschinenzustands wiederholt, obwohl dies in 3 nicht dargestellt wird. Zusätzlich können, wie oben stehend diskutiert, jedem Zustandsaktionsindikator ein oder mehrere Elemente des Maschinenzustands zugeordnet sein.
  • 4 illustriert ein Ablaufdiagramm eines Verfahrens 400 zum Durchführen des Speicherns eines Elements des Maschinenzustands während eines VM-Übergangs gemäß einer Ausführungsform der Erfindung. Das Verfahren 400 wird innerhalb der Prozessorarchitekturen implementiert. Das Verfahren kann durch Verarbeitungslogik durchgeführt werden, welche Hardware (z.B. einen Schaltkomplex, dedizierte Logik, programmierbare Logik, Mikrocode und dergleichen), Software (welche beispielsweise auf einem Universal-Computersystem oder einer dedizierten Maschine läuft) oder eine Kombination aus beidem umfassen kann.
  • Bei 410 bestimmt der Prozessor 112 den Zustandsaktionsindikator für das betrachtete Element des Maschinenzustands. Bei 420 untersucht der Prozessor 112 den Zustandsaktionsindikator. Wenn der Zustandsaktionsindikator eine Speicherung des betrachteten Elements des Maschinenzustands in der VMCS erfordert, wird das betrachtete Element des Maschinenzustands bei 430 in einem oder mehreren Feldern der VMCS gespeichert. Wenn dies nicht der Fall ist, wird bei 440 der Zustandsaktionsindikatorwert geprüft, um zu bestimmen, ob ein Festwert in der VMCS gespeichert werden muß, und wenn dies so ist, wird der Festwert bei 450 in einem oder mehreren Feldern der VMCS gespeichert. Unter manchen Umständen kann der Zustandsaktionsindikatorwert den Prozessor anweisen, keine Aktion durchzuführen, wie bei 460 dargestellt.
  • Bei 470 wird entsprechend dem Element des Maschinenzustands ein Wert dynamisch bestimmt. Der berechnete Wert wird dann in einem oder mehreren Feldern der VMCS bei 480 gespeichert. Der Prozessor kann den Wert durch Untersuchen eines oder mehrerer Elemente des Maschinenzustands, durch Untersuchen eines Werts in der VMCS und/oder durch Untersuchen eines Steuerungsindikatorwerts usw. dynamisch berechnen. Wenn die Untersuchung weiterhin einmal vorgenommen wurde, kann der Prozessor eine oder mehrere Transformationen (z.B. eine Berechnung) durchführen, um den berechneten Wert herzustellen, welcher in dem einen oder den mehreren Feldern der VMCS gespeichert ist.
  • Folglich kann der Prozessor verschiedene Daten verwenden, und er führt verschiedene Aktionen durch, um den berechneten Wert zu erzeugen.
  • Das Verfahren 400 kann für jedes Element des Maschinenzustands wiederholt werden, obwohl dies in 4 nicht dargestellt wird. Zusätzlich können, wie oben stehend diskutiert, jedem Zustandsaktionsindikator ein oder mehrere Elemente des Maschinenzustands zugeordnet werden.
  • 5 illustriert ein Ablaufdiagramm eines Verfahrens 500 zum Bestimmen eines Werts eines Zustandsaktionsindikators während einer VM-Übergangsoperation (z.B. Block 310 in 3 und Block 410 in 4) gemäß einer Ausführungsform der Erfindung. Das Verfahren kann durch Verarbeitungslogik durchgeführt werden, welche Hardware (z.B. einen Schaltkomplex, dedizierte Logik, programmierbare Logik, Mikrocode und dergleichen), Software (welche beispielsweise auf einem Universal-Computersystem oder einer dedizierten Maschine läuft) oder eine Kombination aus beidem umfassen kann.
  • Bei 505 bestimmt der Prozessor 112 das betrachtete Element des Maschinenzustands, den Typ des verarbeiteten VM-Übergangs und ob ein Laden oder Speichern eines Zustands verarbeitet wird. Auf der Grundlage der bestimmten Informationen bestimmt der Prozessor bei 507, ob die Architektur vorschreibt, daß der Zustandsaktionsindikator, welcher diesem Element des Maschinenzustands zugeordnet ist, ein Festwert ist, aus der VMCS geladen oder berechnet wurde.
  • Falls der Zustandsaktionsindikator bei 510 ein Festwert ist, wird dann bei 520 der feste Zustandsaktionsindikatorwert bestimmt.
  • Wenn der Zustandsaktionsindikator bei 530 aus der VMCS erfaßt werden muß, wird bei 540 der Zustandsaktionsindikatorwert aus der VMCS geladen.
  • Wenn der Zustandsaktionsindikator bei 550 dynamisch bestimmt oder berechnet muß, werden bei 550 die Berechnungen durchgeführt, um den Zustandsaktionsindikatorwert zu bestimmen. Die dynamische Bestimmung oder Berechnung kann beispielsweise ein Laden verschiedener Felder innerhalb der VMCS (einschließlich der Steuerungsvektorfeldwerte), ein Untersuchen verschiedener Elemente des Maschinenzustands, ein Untersuchen verschiedener Elemente eines VM- und/oder VMM-Zustands, ein Untersuchen ein oder mehrerer Steuerungsindikatorwerte und/oder ein Transformieren (z.B. ein Durchführen von Berechnungen) auf der Grundlage der untersuchten Informationen umfassen.
  • Bei manchen Ausführungsformen können die Bestimmung des Zustandsaktionsindikatorwerts und die Evaluierung nicht explizit sein. Der Prozessor kann mit dem Wissen entworfen sein, daß eine bestimmte Situation eine bestimmte Aktion verlangt. Beispielsweise kann die Logik in einem Prozessor ein Element des Maschinenzustands unbedingt auf einen bestimmten Wert zwingen, ohne irgendeinen Zustandsaktionsindikatorwert explizit zu evaluieren. Folglich sollte das explizite Prüfen, welches hinsichtlich der 5 beschrieben wurde, nicht als einschränkend angesehen werden.
  • Die Ausführungsformen der vorliegenden Erfindung stellen ein verbessertes Verarbeiten von VM-Übergängen bereit. Dies wird durch ein flexibles Verkörpern des Verarbeitens innerhalb des Prozessors erzielt, welcher eine VMCS verwendet, muß jedoch nicht vollständig auf Informationen angewiesen sein, die innerhalb der VMCS zum Durchführen eines VM-Übergangs bereitgestellt werden.
  • Durchschnittsfachleute erkennen jetzt an, daß die Implementierung eines Prozessors gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung das Laden und das Speichern eines Maschinenzustands während VM-Übergängen verwalten und steuern kann. Insbesondere stellen diese Ausführungsformen dem VMM die Flexibilität bereit, um die Semantik des Ladens und des Speicherns eines Maschinenzustands während VM-Übergängen vorzuschreiben, wie es von der Architektur gestattet wird. Dies muß nicht mit einer starren VMCS erzielt werden, welche alle Instanzen von Elementen des Maschinenzustands berücksichtigt, und nicht alles Speichern und Laden eines Maschinenzustands bei VM-Übergängen muß explizit durch den VMM durch Steuerungen in der VMCS geleitet werden.
  • Es versteht sich, daß oben stehende Beschreibung beispielhaft und nicht restriktiv gedacht ist. Durchschnittsfachleuten werden beim Durchsehen der oben stehenden Beschreibung viele andere Ausführungsformen offenkundig werden. Der Schutzumfang der Ausführungsformen der Erfindung sollte deshalb unter Bezugnahme auf die angefügten Ansprüche, zusammen mit dem vollen Schutzumfang der Äquivalente, zu denen diese Ansprüche berechtigen, bestimmt werden.
  • In der vorangehenden Beschreibung der Ausführungsformen werden verschiedene Merkmale zum Zweck der Rationalisierung der Offenbarung zusammen in einer einzelnen Ausführungsform gruppiert. Dieses Offenbarungsverfahren darf nicht so interpretiert werden, daß es eine Absicht wiedergibt, daß die beanspruchten Ausführungsformen der Erfindung mehr Merkmale erfordern, als ausdrücklich in jedem Anspruch dargestellt sind. Statt dessen liegt, wie die folgenden Ansprüche wiedergeben, der erfinderische Gegenstand in weniger als allen Merkmalen einer einzelnen offenbarten Ausführungsform. Folglich werden die folgenden Ansprüche hiermit in die Beschreibung der Ausführungsformen einbezogen, wobei jeder Anspruch für sich selbst als eine separate beispielhafte Ausführungsform steht.

Claims (6)

  1. Prozessor, der einen Übergang zwischen einem Virtuellen Maschinen (VM) Betriebmodus und einem Virtuellen Maschinen Monitor (VMM) Betriebsmodus unterstützt, mit einer Virtuellen-Maschinen-Steuerungsstruktur (VMCS), in die der Prozessor (112) den Maschinenzustand des ersten der Getriebemodi beim Übergang in den zweiten Betriebsmodus speichert und aus der der Prozessor (112) den Maschinenzustand des zweiten der Betriebsmodi bei diesem Übergang liest, wobei beim Übergang zwischen den Betriebsmodi eine Steuerungslogik des Prozessors (112) in Abhängigkeit von einem Steuerungsindikatorwert für ein Element eines Maschinenzustands den Wert des Elements entweder a) aus der Virtuellen Machinen-Steuerungsstruktur (VMCS) liest und einem entsprechenden Register zuweist, oder b) aus anderen Werten von Elementen der Virtuellen-Maschinen-Steuerungsstruktur (VMCS) berechnet und einem entsprechenden Register zuweist.
  2. Prozessor nach Anspruch 1, dadurch gekennzeichnet dass der Prozessor (112) auf die VMCS zugreift, die zwei Sätze von Steuer-Bits umfaßt, wobei der erste Satz von Steuer-Bits bei einem Eintritt in die VM von dem Prozessor (112) zum Identifizieren von Elementen des Zustands der Maschine und zum Speichern von Elementen des Zustands der Maschine zum Anlegen an einen Eingang der VM verwendet wird und wobei der zweite Satz von Steuer-Bits bei einem Austritt aus der VM von dem Prozessor (112) zum Identifizieren von Elementen des Maschinenzustands der Maschine zu deren Speicherung und von Elementen des Maschinezustands zum Lesen aus einem Ausgang der VM verwendet wird.
  3. Prozessor nach Anspruch 1 oder 2, dadurch gekennzeichnet, dass das Speichern der einen oder der mehreren zugeordneten Elemente des Maschinenzustands weiter die folgende Schritte umfasst: Speichern des einen oder der mehreren zugeordneten Elemente des Maschinenzustands in einem oder mehreren Feldern in der VMCS; Speichern eines oder mehrerer Festwerte in dem einen oder den mehreren Feldern in der VMCS; und Speichern eines oder mehrerer berechneter Werte in dem einen oder den mehreren Feldern in der VMCS.
  4. Prozessor nach Anspruch 3, dadurch gekennzeichnet, dass beim Speichern des einen oder der mehreren berechneten Werte der eine oder die mehreren berechneten Werte durch folgende Schritte bestimmt werden: Untersuchen der Werte von mindestens einem Element des Maschinenzustands; einem Wert in der VMCS; und einem Steuerungsindikator; und Transformieren der untersuchten Werte, um den einen oder die mehreren berechneten Werte zu bilden.
  5. Prozessor nach Anspruch 1, gekennzeichnet dass das Einlesen des einen oder der mehreren zugeordneten Zustandselements weiter umfasst: Einlesen des einen oder der mehreren zugeordneten Elemente des Zustands der Maschine aus einem oder mehreren Feldern der VMCS in das eine oder die mehreren zugeordneten Elemente des Maschinenzustands, Einlesen eines oder mehrerer berechneter Werte in das eine oder die mehreren zugeordneten Elemente des Maschinenzustands; und Einlesen eines oder mehrerer Festwerte in das eine oder die mehreren zugeordneten Elemente des Maschinenzustands.
  6. Prozessor nach Anspruch 5, dadurch gekennzeichnet, dass beim Lesen des einen oder der mehreren berechneten Werte der eine oder die mehreren berechneten Werte durch folgende Schritte bestimmt werden: Untersuchen der Werte von mindestens einem Element des Maschinenzustands; einem Wert in der VMCS; und einem Steuerungsindikatorwert; und Transformieren der untersuchten Werte, um den einen oder die mehreren berechneten Werte zu bilden.
DE10393679.3T 2002-12-19 2003-12-04 Prozessor, der einen Übergang zwischen einem virtuellen Maschinen Betriebsmodus (VM) und einem virtuellen Maschinen Monitor Betriebsmodus (VMM) unterstützt Expired - Fee Related DE10393679B9 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/324,591 US7793286B2 (en) 2002-12-19 2002-12-19 Methods and systems to manage machine state in virtual machine operations
US10/324,591 2002-12-19
PCT/US2003/038728 WO2004061659A2 (en) 2002-12-19 2003-12-04 Methods and systems to manage machine state in virtual machine operations

Publications (3)

Publication Number Publication Date
DE10393679T5 DE10393679T5 (de) 2005-10-20
DE10393679B4 true DE10393679B4 (de) 2008-05-29
DE10393679B9 DE10393679B9 (de) 2015-12-10

Family

ID=32593494

Family Applications (1)

Application Number Title Priority Date Filing Date
DE10393679.3T Expired - Fee Related DE10393679B9 (de) 2002-12-19 2003-12-04 Prozessor, der einen Übergang zwischen einem virtuellen Maschinen Betriebsmodus (VM) und einem virtuellen Maschinen Monitor Betriebsmodus (VMM) unterstützt

Country Status (8)

Country Link
US (1) US7793286B2 (de)
JP (4) JP4937514B2 (de)
KR (1) KR100737666B1 (de)
CN (2) CN101488097B (de)
AU (1) AU2003298951A1 (de)
DE (1) DE10393679B9 (de)
TW (1) TWI253585B (de)
WO (1) WO2004061659A2 (de)

Families Citing this family (57)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8631066B2 (en) * 1998-09-10 2014-01-14 Vmware, Inc. Mechanism for providing virtual machines for use by multiple users
US7516453B1 (en) 1998-10-26 2009-04-07 Vmware, Inc. Binary translator with precise exception synchronization mechanism
US7130949B2 (en) * 2003-05-12 2006-10-31 International Business Machines Corporation Managing input/output interruptions in non-dedicated interruption hardware environments
US20050044408A1 (en) * 2003-08-18 2005-02-24 Bajikar Sundeep M. Low pin count docking architecture for a trusted platform
US8079034B2 (en) 2003-09-15 2011-12-13 Intel Corporation Optimizing processor-managed resources based on the behavior of a virtual machine monitor
US20050132122A1 (en) * 2003-12-16 2005-06-16 Rozas Carlos V. Method, apparatus and system for monitoring system integrity in a trusted computing environment
US7802085B2 (en) * 2004-02-18 2010-09-21 Intel Corporation Apparatus and method for distributing private keys to an entity with minimal secret, unique information
US7356735B2 (en) * 2004-03-30 2008-04-08 Intel Corporation Providing support for single stepping a virtual machine in a virtual machine environment
US7937700B1 (en) * 2004-05-11 2011-05-03 Advanced Micro Devices, Inc. System, processor, and method for incremental state save/restore on world switch in a virtual machine environment
US7490070B2 (en) * 2004-06-10 2009-02-10 Intel Corporation Apparatus and method for proving the denial of a direct proof signature
WO2006011994A2 (en) * 2004-06-26 2006-02-02 Transvirtual Systems, Llc System for emulating wang vs programs
US20060004667A1 (en) * 2004-06-30 2006-01-05 Microsoft Corporation Systems and methods for collecting operating system license revenue using an emulated computing environment
US7562179B2 (en) 2004-07-30 2009-07-14 Intel Corporation Maintaining processor resources during architectural events
US20060064699A1 (en) * 2004-09-21 2006-03-23 Bonk Ted J Method and system for processing resource allocations
US8924728B2 (en) 2004-11-30 2014-12-30 Intel Corporation Apparatus and method for establishing a secure session with a device without exposing privacy-sensitive information
US8627315B2 (en) 2004-12-31 2014-01-07 Intel Corporation Apparatus and method for cooperative guest firmware
US7904903B2 (en) * 2005-06-30 2011-03-08 Intel Corporation Selective register save and restore upon context switch using trap
CN100420202C (zh) * 2005-10-20 2008-09-17 联想(北京)有限公司 计算机管理系统以及计算机管理方法
US7877485B2 (en) * 2005-12-02 2011-01-25 International Business Machines Corporation Maintaining session states within virtual machine environments
WO2007065307A2 (en) * 2005-12-10 2007-06-14 Intel Corporation Handling a device related operation in a virtualization environment
US7900204B2 (en) * 2005-12-30 2011-03-01 Bennett Steven M Interrupt processing in a layered virtualization architecture
US8014530B2 (en) 2006-03-22 2011-09-06 Intel Corporation Method and apparatus for authenticated, recoverable key distribution with no database secrets
US8099730B2 (en) * 2006-03-30 2012-01-17 Intel Corporation Heterogeneous virtualization of host and guest OS having different register sizes using translation layer to extract device port numbers for host OS system memory addresses
US8607228B2 (en) * 2006-08-08 2013-12-10 Intel Corporation Virtualizing performance counters
CN101154130B (zh) * 2006-09-30 2012-07-04 联想(北京)有限公司 一种虚拟机系统及其电源管理方法
CN101206582B (zh) * 2006-12-22 2010-10-06 联想(北京)有限公司 一种虚拟机系统及其处理方法
US8291410B2 (en) * 2006-12-29 2012-10-16 Intel Corporation Controlling virtual machines based on activity state
US8380987B2 (en) * 2007-01-25 2013-02-19 Microsoft Corporation Protection agents and privilege modes
US7765374B2 (en) * 2007-01-25 2010-07-27 Microsoft Corporation Protecting operating-system resources
US8296775B2 (en) * 2007-01-31 2012-10-23 Microsoft Corporation Efficient context switching of virtual processors by managing physical register states in a virtualized environment
CN101267334B (zh) * 2007-03-13 2011-01-26 联想(北京)有限公司 一种动态分配设备的方法及装置
US8099274B2 (en) * 2007-03-30 2012-01-17 International Business Machines Corporation Facilitating input/output processing of one or more guest processing systems
US7975267B2 (en) * 2007-03-30 2011-07-05 Bennett Steven M Virtual interrupt processing in a layered virtualization architecture
US8046540B2 (en) * 2007-04-26 2011-10-25 Sap Ag Shared closures on demand
US20090007100A1 (en) * 2007-06-28 2009-01-01 Microsoft Corporation Suspending a Running Operating System to Enable Security Scanning
US8151264B2 (en) * 2007-06-29 2012-04-03 Intel Corporation Injecting virtualization events in a layered virtualization architecture
CN101334751B (zh) * 2007-06-29 2010-04-14 联想(北京)有限公司 虚拟机监视器识别客户操作系统中进程的方法及装置
DE102007053474A1 (de) 2007-11-09 2009-05-14 Giesecke & Devrient Gmbh Datenträger und Verfahren zum Betreiben eines Mikroprozessors eines Datenträgers
US8839237B2 (en) * 2007-12-31 2014-09-16 Intel Corporation Method and apparatus for tamper resistant communication in a virtualization enabled platform
US8261028B2 (en) * 2007-12-31 2012-09-04 Intel Corporation Cached dirty bits for context switch consistency checks
US20100115509A1 (en) * 2008-10-31 2010-05-06 International Business Machines Corporation Power optimization via virtualization opportunity
JP4961459B2 (ja) * 2009-06-26 2012-06-27 株式会社日立製作所 仮想計算機システムおよび仮想計算機システムにおける制御方法
US20110153909A1 (en) * 2009-12-22 2011-06-23 Yao Zu Dong Efficient Nested Virtualization
CN101916207B (zh) * 2010-08-28 2013-10-09 华为技术有限公司 桌面虚拟化环境下的节能方法、装置及系统
US9223611B2 (en) 2010-12-28 2015-12-29 Microsoft Technology Licensing, Llc Storing and resuming application runtime state
CN102609314A (zh) * 2012-01-18 2012-07-25 浪潮(北京)电子信息产业有限公司 一种虚拟机量化管理方法和系统
US9146762B2 (en) * 2012-08-23 2015-09-29 Citrix Systems, Inc. Specialized virtual machine to virtualize hardware resource for guest virtual machines
JP5608797B2 (ja) * 2013-07-31 2014-10-15 株式会社日立製作所 仮想化プログラム、仮想計算機システム及び計算機システム制御方法
US10146570B2 (en) * 2015-09-25 2018-12-04 Intel Corporation Nested virtualization for virtual machine exits
US20210026950A1 (en) * 2016-03-07 2021-01-28 Crowdstrike, Inc. Hypervisor-based redirection of system calls and interrupt-based task offloading
US10243746B2 (en) 2017-02-27 2019-03-26 Red Hat, Inc. Systems and methods for providing I/O state protections in a virtualized environment
US11580234B2 (en) 2019-06-29 2023-02-14 Intel Corporation Implicit integrity for cryptographic computing
US11403234B2 (en) 2019-06-29 2022-08-02 Intel Corporation Cryptographic computing using encrypted base addresses and used in multi-tenant environments
US11575504B2 (en) 2019-06-29 2023-02-07 Intel Corporation Cryptographic computing engine for memory load and store units of a microarchitecture pipeline
CN111273969B (zh) * 2020-01-20 2021-08-10 腾讯科技(深圳)有限公司 状态切换方法、装置、设备和存储介质
US11580035B2 (en) 2020-12-26 2023-02-14 Intel Corporation Fine-grained stack protection using cryptographic computing
US11669625B2 (en) 2020-12-26 2023-06-06 Intel Corporation Data type based cryptographic computing

Family Cites Families (94)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4037214A (en) * 1976-04-30 1977-07-19 International Business Machines Corporation Key register controlled accessing system
US4247905A (en) * 1977-08-26 1981-01-27 Sharp Kabushiki Kaisha Memory clear system
US4278837A (en) * 1977-10-31 1981-07-14 Best Robert M Crypto microprocessor for executing enciphered programs
JPS5576447A (en) 1978-12-01 1980-06-09 Fujitsu Ltd Address control system for software simulation
US4366537A (en) * 1980-05-23 1982-12-28 International Business Machines Corp. Authorization mechanism for transfer of program control or data between different address spaces having different storage protect keys
US4521852A (en) * 1982-06-30 1985-06-04 Texas Instruments Incorporated Data processing device formed on a single semiconductor substrate having secure memory
JPS59111561A (ja) 1982-12-17 1984-06-27 Hitachi Ltd 複合プロセツサ・システムのアクセス制御方式
JPS6057438A (ja) * 1983-09-08 1985-04-03 Hitachi Ltd 仮想計算機システム制御装置
JPS61184644A (ja) * 1985-02-12 1986-08-18 Hitachi Ltd 仮想計算機システム制御方式
US4740893A (en) * 1985-08-07 1988-04-26 International Business Machines Corp. Method for reducing the time for switching between programs
JPH0814795B2 (ja) * 1986-01-14 1996-02-14 株式会社日立製作所 マルチプロセッサ仮想計算機システム
JPH0754470B2 (ja) * 1986-03-24 1995-06-07 株式会社日立製作所 仮想計算機システムの制御方法
JP2523653B2 (ja) * 1987-07-08 1996-08-14 株式会社日立製作所 仮想計算機システム
JPS6474632A (en) * 1987-09-16 1989-03-20 Fujitsu Ltd Control transfer system for virtual computer
US5079737A (en) * 1988-10-25 1992-01-07 United Technologies Corporation Memory management unit for the MIL-STD 1750 bus
US5781753A (en) * 1989-02-24 1998-07-14 Advanced Micro Devices, Inc. Semi-autonomous RISC pipelines for overlapped execution of RISC-like instructions within the multiple superscalar execution units of a processor having distributed pipeline control for speculative and out-of-order execution of complex instructions
US5016161A (en) * 1989-04-12 1991-05-14 Sun Microsystems, Inc. Method and apparatus for the flow control of devices
US5022077A (en) * 1989-08-25 1991-06-04 International Business Machines Corp. Apparatus and method for preventing unauthorized access to BIOS in a personal computer system
CA2027799A1 (en) 1989-11-03 1991-05-04 David A. Miller Method and apparatus for independently resetting processors and cache controllers in multiple processor systems
US5075842A (en) * 1989-12-22 1991-12-24 Intel Corporation Disabling tag bit recognition and allowing privileged operations to occur in an object-oriented memory protection mechanism
JP2902746B2 (ja) * 1990-07-27 1999-06-07 富士通株式会社 仮想計算機制御方式
US5437033A (en) * 1990-11-16 1995-07-25 Hitachi, Ltd. System for recovery from a virtual machine monitor failure with a continuous guest dispatched to a nonguest mode
US5255379A (en) 1990-12-28 1993-10-19 Sun Microsystems, Inc. Method for automatically transitioning from V86 mode to protected mode in a computer system using an Intel 80386 or 80486 processor
JPH04308940A (ja) * 1991-04-05 1992-10-30 Hitachi Ltd 仮想計算機システムにおける資源の自動割当て管理方式
US5319760A (en) 1991-06-28 1994-06-07 Digital Equipment Corporation Translation buffer for virtual machines with address space match
US5522075A (en) 1991-06-28 1996-05-28 Digital Equipment Corporation Protection ring extension for computers having distinct virtual machine monitor and virtual machine address spaces
US5455909A (en) * 1991-07-05 1995-10-03 Chips And Technologies Inc. Microprocessor with operation capture facility
JPH06236284A (ja) 1991-10-21 1994-08-23 Intel Corp コンピュータシステム処理状態を保存及び復元する方法及びコンピュータシステム
US5627987A (en) 1991-11-29 1997-05-06 Kabushiki Kaisha Toshiba Memory management and protection system for virtual memory in computer system
US5421006A (en) * 1992-05-07 1995-05-30 Compaq Computer Corp. Method and apparatus for assessing integrity of computer system software
JPH0695898A (ja) * 1992-09-16 1994-04-08 Hitachi Ltd 仮想計算機の制御方法および仮想計算機システム
US5293424A (en) * 1992-10-14 1994-03-08 Bull Hn Information Systems Inc. Secure memory card
EP0600112A1 (de) 1992-11-30 1994-06-08 Siemens Nixdorf Informationssysteme Aktiengesellschaft Datenverarbeitungsanlage mit virtueller Speicheradressierung und schlüsselgesteuertem Speicherzugriff
JP2765411B2 (ja) * 1992-11-30 1998-06-18 株式会社日立製作所 仮想計算機方式
FR2703800B1 (fr) * 1993-04-06 1995-05-24 Bull Cp8 Procédé de signature d'un fichier informatique, et dispositif pour la mise en Óoeuvre.
JPH06348867A (ja) * 1993-06-04 1994-12-22 Hitachi Ltd マイクロコンピュータ
JPH0793221A (ja) * 1993-09-28 1995-04-07 Hitachi Ltd 仮想計算機システム及びその制御方法
US5459869A (en) * 1994-02-17 1995-10-17 Spilo; Michael L. Method for providing protected mode services for device drivers and other resident software
US5684881A (en) * 1994-05-23 1997-11-04 Matsushita Electric Industrial Co., Ltd. Sound field and sound image control apparatus and method
US5473692A (en) * 1994-09-07 1995-12-05 Intel Corporation Roving software license for a hardware agent
US5539828A (en) * 1994-05-31 1996-07-23 Intel Corporation Apparatus and method for providing secured communications
US5978481A (en) * 1994-08-16 1999-11-02 Intel Corporation Modem compatible method and apparatus for encrypting data that is transparent to software applications
US6058478A (en) * 1994-09-30 2000-05-02 Intel Corporation Apparatus and method for a vetted field upgrade
US5615263A (en) * 1995-01-06 1997-03-25 Vlsi Technology, Inc. Dual purpose security architecture with protected internal operating system
US5764969A (en) * 1995-02-10 1998-06-09 International Business Machines Corporation Method and system for enhanced management operation utilizing intermixed user level and supervisory level instructions with partial concept synchronization
US5717903A (en) 1995-05-15 1998-02-10 Compaq Computer Corporation Method and appartus for emulating a peripheral device to allow device driver development before availability of the peripheral device
JP3451595B2 (ja) 1995-06-07 2003-09-29 インターナショナル・ビジネス・マシーンズ・コーポレーション 二つの別個の命令セット・アーキテクチャへの拡張をサポートすることができるアーキテクチャ・モード制御を備えたマイクロプロセッサ
US5737760A (en) * 1995-10-06 1998-04-07 Motorola Inc. Microcontroller with security logic circuit which prevents reading of internal memory by external program
JP3693721B2 (ja) * 1995-11-10 2005-09-07 Necエレクトロニクス株式会社 フラッシュメモリ内蔵マイクロコンピュータ及びそのテスト方法
WO1997025798A1 (en) * 1996-01-11 1997-07-17 Mrj, Inc. System for controlling access and distribution of digital property
US5657445A (en) * 1996-01-26 1997-08-12 Dell Usa, L.P. Apparatus and method for limiting access to mass storage devices in a computer system
US5835594A (en) * 1996-02-09 1998-11-10 Intel Corporation Methods and apparatus for preventing unauthorized write access to a protected non-volatile storage
US5978892A (en) 1996-05-03 1999-11-02 Digital Equipment Corporation Virtual memory allocation in a virtual address space having an inaccessible gap
US6178509B1 (en) * 1996-06-13 2001-01-23 Intel Corporation Tamper resistant methods and apparatus
US6205550B1 (en) * 1996-06-13 2001-03-20 Intel Corporation Tamper resistant methods and apparatus
US6175925B1 (en) * 1996-06-13 2001-01-16 Intel Corporation Tamper resistant player for scrambled contents
US5729760A (en) 1996-06-21 1998-03-17 Intel Corporation System for providing first type access to register if processor in first mode and second type access to register if processor not in first mode
US6055637A (en) * 1996-09-27 2000-04-25 Electronic Data Systems Corporation System and method for accessing enterprise-wide resources by presenting to the resource a temporary credential
US5937063A (en) * 1996-09-30 1999-08-10 Intel Corporation Secure boot
US5844986A (en) * 1996-09-30 1998-12-01 Intel Corporation Secure BIOS
JPH10134008A (ja) * 1996-11-05 1998-05-22 Mitsubishi Electric Corp 半導体装置およびコンピュータシステム
US5852717A (en) * 1996-11-20 1998-12-22 Shiva Corporation Performance optimizations for computer networks utilizing HTTP
US5757919A (en) * 1996-12-12 1998-05-26 Intel Corporation Cryptographically protected paging subsystem
US5953502A (en) * 1997-02-13 1999-09-14 Helbig, Sr.; Walter A Method and apparatus for enhancing computer system security
US6272637B1 (en) * 1997-04-14 2001-08-07 Dallas Semiconductor Corporation Systems and methods for protecting access to encrypted information
US6075938A (en) * 1997-06-10 2000-06-13 The Board Of Trustees Of The Leland Stanford Junior University Virtual machine monitors for scalable multiprocessors
US5987557A (en) * 1997-06-19 1999-11-16 Sun Microsystems, Inc. Method and apparatus for implementing hardware protection domains in a system with no memory management unit (MMU)
US6014745A (en) * 1997-07-17 2000-01-11 Silicon Systems Design Ltd. Protection for customer programs (EPROM)
DE19735948C1 (de) * 1997-08-19 1998-10-01 Siemens Nixdorf Inf Syst Verfahren zur Verbesserung der Steuerungsmöglichkeit in Datenverarbeitungsanlagen mit Adreßübersetzung
US6282657B1 (en) * 1997-09-16 2001-08-28 Safenet, Inc. Kernel mode protection
US6148379A (en) * 1997-09-19 2000-11-14 Silicon Graphics, Inc. System, method and computer program product for page sharing between fault-isolated cells in a distributed shared memory system
US6182089B1 (en) * 1997-09-23 2001-01-30 Silicon Graphics, Inc. Method, system and computer program product for dynamically allocating large memory pages of different sizes
US6085296A (en) * 1997-11-12 2000-07-04 Digital Equipment Corporation Sharing memory pages and page tables among computer processes
US6192455B1 (en) * 1998-03-30 2001-02-20 Intel Corporation Apparatus and method for preventing access to SMRAM space through AGP addressing
US6795966B1 (en) * 1998-05-15 2004-09-21 Vmware, Inc. Mechanism for restoring, porting, replicating and checkpointing computer systems using state extraction
US6496847B1 (en) * 1998-05-15 2002-12-17 Vmware, Inc. System and method for virtualizing computer systems
US6397242B1 (en) * 1998-05-15 2002-05-28 Vmware, Inc. Virtualization system including a virtual machine monitor for a computer with a segmented architecture
US6505279B1 (en) * 1998-08-14 2003-01-07 Silicon Storage Technology, Inc. Microcontroller system having security circuitry to selectively lock portions of a program memory address space
US6339815B1 (en) * 1998-08-14 2002-01-15 Silicon Storage Technology, Inc. Microcontroller system having allocation circuitry to selectively allocate and/or hide portions of a program memory address space
US6230248B1 (en) * 1998-10-12 2001-05-08 Institute For The Development Of Emerging Architectures, L.L.C. Method and apparatus for pre-validating regions in a virtual addressing scheme
EP1030237A1 (de) 1999-02-15 2000-08-23 Hewlett-Packard Company Vertrautes Hardware-Gerät in einem Rechner
US6272533B1 (en) * 1999-02-16 2001-08-07 Hendrik A. Browne Secure computer system and method of providing secure access to a computer system including a stand alone switch operable to inhibit data corruption on a storage device
US6321314B1 (en) * 1999-06-09 2001-11-20 Ati International S.R.L. Method and apparatus for restricting memory access
US6158546A (en) * 1999-06-25 2000-12-12 Tenneco Automotive Inc. Straight through muffler with conically-ended output passage
US6301646B1 (en) * 1999-07-30 2001-10-09 Curl Corporation Pointer verification system and method
US6374317B1 (en) * 1999-10-07 2002-04-16 Intel Corporation Method and apparatus for initializing a computer interface
US6292874B1 (en) * 1999-10-19 2001-09-18 Advanced Technology Materials, Inc. Memory management method and apparatus for partitioning homogeneous memory and restricting access of installed applications to predetermined memory ranges
US20010027527A1 (en) * 2000-02-25 2001-10-04 Yuri Khidekel Secure transaction system
WO2001065366A1 (en) * 2000-03-02 2001-09-07 Alarity Corporation System and method for process protection
US6507904B1 (en) 2000-03-31 2003-01-14 Intel Corporation Executing isolated mode instructions in a secure system running in privilege rings
US6795905B1 (en) 2000-03-31 2004-09-21 Intel Corporation Controlling accesses to isolated memory using a memory controller for isolated execution
US6990579B1 (en) 2000-03-31 2006-01-24 Intel Corporation Platform and method for remote attestation of a platform
GB0022949D0 (en) * 2000-09-19 2000-11-01 Sgs Thomson Microelectronics Processing instruction words
US7818808B1 (en) * 2000-12-27 2010-10-19 Intel Corporation Processor mode for limiting the operation of guest software running on a virtual machine supported by a virtual machine monitor

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
HALL,J.S., et.al.: Virtualizing the VAX architec- ture. In: Proceedings of the 18th International Symposium on Computer Architecture. Toronto, CA, 1991, pp.380-389
HALL,J.S., et.al.: Virtualizing the VAX architecture. In: Proceedings of the 18th International Symposium on Computer Architecture. Toronto, CA, 1991, pp.380-389 *

Also Published As

Publication number Publication date
CN100472454C (zh) 2009-03-25
AU2003298951A8 (en) 2004-07-29
CN101488097B (zh) 2013-12-25
JP4937514B2 (ja) 2012-05-23
AU2003298951A1 (en) 2004-07-29
JP2006510120A (ja) 2006-03-23
KR100737666B1 (ko) 2007-07-09
DE10393679B9 (de) 2015-12-10
JP5384605B2 (ja) 2014-01-08
WO2004061659A2 (en) 2004-07-22
JP2012074074A (ja) 2012-04-12
TWI253585B (en) 2006-04-21
US20040123288A1 (en) 2004-06-24
TW200411537A (en) 2004-07-01
JP5068778B2 (ja) 2012-11-07
CN101488097A (zh) 2009-07-22
CN1726470A (zh) 2006-01-25
DE10393679T5 (de) 2005-10-20
KR20050085766A (ko) 2005-08-29
JP2013214325A (ja) 2013-10-17
WO2004061659A3 (en) 2005-07-28
US7793286B2 (en) 2010-09-07
JP5746275B2 (ja) 2015-07-08
JP2009163751A (ja) 2009-07-23

Similar Documents

Publication Publication Date Title
DE10393679B4 (de) Prozessor, der einen Übergang zwischen einem virtuellen Maschinen Betriebsmodus (VM) und einem virtuellen Maschinen Monitor Betriebsmodus (VMM) unterstützt
DE10393920B4 (de) Verfahren und Systeme zur Steuerung virtueller Maschinen
DE10197121B4 (de) Neuer Prozessormodus zum Begrenzen des Betriebes von auf einer virtuellen Maschine laufender Gast-Software mit Unterstützung eines Virtuelle-Maschine-Monitors
DE112004003080B4 (de) Verwendung mehrerer Monitore virtueller Maschinen zur Abwicklung privilegierter Ereignisse
DE112011100323T5 (de) Architekturübergreifende Migration virtueller Maschinen
DE10357804B4 (de) Neu-Beanspruchung vorhandener Felder in Adressübersetzungsdatenstrukturen zum Erweitern der Kontrolle über Speicherzugriffe
DE102007006190B4 (de) Techniken zur Verwendung von Speicher-Attributen
DE112005003098T5 (de) Verfahren und Vorrichtung zum Zugreifen auf einen physikalischen Speicher von einer CPU oder einem Prozessorelement mit hoher Leistung
DE102015002582A1 (de) Architekturübergreifendes Kompatibilitätsmodul, um zuzulassen, dass ein Codemodul einer Architektur ein Bibliotheksmodul einer anderen Architektur verwendet
DE102006061939A1 (de) Verfahren und Vorrichtung zum Zugriff auf eine speicherabgebildete Vorrichtung durch einen Gast
DE102009050983A1 (de) Eine Technik, um Interrupts in einem Computersystem zu kommunizieren
DE102010055267A1 (de) Gemeinsames Benutzen von Ressourcen zwischen einer CPU und GPU
DE102010001985A1 (de) Vorrichtung zum Schalten des Betriebs einer virtuellen Maschine zwischen mehreren Computern, die der gleichen Computerplattform zugeordnet sind, und entsprechende Schaltverfahren
DE112007001714T5 (de) Virtualisieren von Leistungszählern
DE202019005682U1 (de) Hardwaregestützte Paging-Mechanismen
DE112004001652B4 (de) Vektorieren eines Interrupt oder einer Ausnahme bei Wiederaufnahme des Betriebes einer virtuellen Maschine
DE2948285A1 (de) Adressensteuersystem fuer softwaresimulation
DE112013002956T5 (de) Vorabladen von Verzweigungsvorhersagen
DE112016004297T5 (de) Technologien für mehrstufige virtualisierung
DE112013000656T5 (de) System und Verfahren zum Verringern der Speichernutzung durch optimales Platzieren von virtuellen Maschinen in einem virtualisierten Rechenzentrum
DE112010005821T5 (de) Kontextwechsel
DE102014003705A1 (de) Prozessoren, Verfahren und Systeme zur Befehlsemulation
DE102010001339A1 (de) Verwalten von Anforderungen von Betriebssystemen, die in virtuellen Maschinen ablaufen
DE102012217315A1 (de) Verwenden von nativen Routinen an Stelle von emulierten Routinen in einer emulierten Anwendung
DE202019005683U1 (de) Prozessorkern mit Unterstützung einer Befehlssatzarchitektur für heterogene Systeme

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law

Ref document number: 10393679

Country of ref document: DE

Date of ref document: 20051020

Kind code of ref document: P

8364 No opposition during term of opposition
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee