DE10393920B4 - Verfahren und Systeme zur Steuerung virtueller Maschinen - Google Patents

Verfahren und Systeme zur Steuerung virtueller Maschinen Download PDF

Info

Publication number
DE10393920B4
DE10393920B4 DE10393920T DE10393920T DE10393920B4 DE 10393920 B4 DE10393920 B4 DE 10393920B4 DE 10393920 T DE10393920 T DE 10393920T DE 10393920 T DE10393920 T DE 10393920T DE 10393920 B4 DE10393920 B4 DE 10393920B4
Authority
DE
Germany
Prior art keywords
virtual machine
machine control
control structure
vmss
component
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 - Lifetime
Application number
DE10393920T
Other languages
English (en)
Other versions
DE10393920T5 (de
Inventor
Gilbert Portland Neiger
Erik Portland Cota-Robles
Stalinselvaraj Beaverton Jeyasingh
Alain Portland Kagi
Michael Kozuch
Richard Hillsobor Uhlig
Erich Portland Boleyn
Scott Hillsboro Rodgers
Lawrence Beaverton Smith III
Steven Hillboro Bennett
Andrew Portland Glew
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 DE10393920T5 publication Critical patent/DE10393920T5/de
Application granted granted Critical
Publication of DE10393920B4 publication Critical patent/DE10393920B4/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • 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/45591Monitoring or debugging support

Abstract

Prozessor aus einer Familie von zwei Prozessortypen
a) die sich im Daten-Layout einer Virtuelle-Maschine-Steuerungsstruktur in einem Speicher (116) unterscheiden und
b) den Zugriff auf Daten einer Virtuelle-Maschine-Steuerungsstruktur durch einen Virtuelle-Maschine-Steuerungsstruktur-Zugriffsbefehl (119) unterstützen, wobei
c) bei einem Transfer der Kontrolle von einer Gastsoftware auf einen virtuellen Maschinen Monitor Komponenten des Prozessorstatus, die von der Gastsoftware verwendet werden, in der Virtuelle-Maschine-Steuerungsstruktur gespeichert werden,
d) der Virtuelle-Maschine-Steuerungsstruktur-Zugriffsbefehl (119) einen Virtuelle-Maschine-Steuerungsstruktur-Komponenten-Kennzeichner umfasst, der vom Prozessor verwendet wird, um eine Komponente der Virtuelle-Maschine-Steuerungsstruktur, auf die der Virtuelle-Maschine-Steuerungsstruktur-Zugriffsbefehl (119) zugreift, zu bestimmen und um die Speicheradresse der Komponente zu berechnen und
e) ein Virtuelle-Maschine-Steuerungsstruktur-Speicher-Zeiger-Befehl einen Zeiger auf den aktiven Virtuelle-Maschine-Steuerungsstruktur Bereich speichert.

Description

  • Technisches Gebiet
  • Ausführungsformen der vorliegsenden Erfindung betreffen im allgemeinen Computersysteme und insbesondere die Funktionssteuerung virtueller Maschinen in Computersystemen.
  • Hintergrund
  • Durch die Architektur einer virtuellen Maschine wird eine physikalische Maschine logisch partitioniert, so daß die zugrunde liegende Hardware der Maschine zeitanteilig geteilt wird und als eine oder mehrere unabhängig voneinander arbeitende virtuelle Maschinen (VM) erscheint. Ein Virtuelle-Maschine-Monitor (VMM) läuft auf einem Computer und erleichtert anderer Software die Abstrahierung einer oder mehrerer VMn. Jede VM kann als eine eigenständige Plattform funktionieren, auf der ihr eigenes Betriebssystem (OS) und Anwendungssoftware läuft. Die in einer VM laufende Software wird hier kollektiv als Gast-Software bezeichnet.
  • Die Gast-Software erwartet so zu arbeiten, als ob sie auf einem zweckbestimmten Computer und nicht in einer VM laufen würde. Das bedeutet, daß die Gast-Software erwartet, verschiedene Ereignisse zu steuern und auf Hardware-Ressourcen auf dem Rechner (z. B. der physikalischen bzw. realen Maschine) zuzugreifen. Die Hardware-Ressourcen der realen Maschine können einen oder mehrere Prozessoren, sich auf den Prozessoren befindende Ressourcen (z. B. Steuerungsregister, Caches und andere), Speicher (und sich in einem Speicher befindende Strukturen, wie z. B. Deskriptortabellen) und andere Ressourcen (wie z. B. Eingabe-Ausgabevorrichtungen) umfassen, die sich in der realen Maschine befinden. Die Ereignisse können Interrupts (Programmunterbrechungen), Exceptions (Ausnahmen), Plattformereignisse (z. B. Initialisierungs- (INIT) oder Systemverwaltungsinterrupts (SMIs) und dergleichen) umfassen.
  • Der VMM kann Gast-Softwarezustände in und aus den Vorrichtungen, dem Speicher und den Registern der realen Maschine je nach Bedarf umlagern. Der VMM kann die Leistungsfähig keit einer VM erhöhen, indem ein direkter Zugriff auf die zugrundeliegende physikalische Maschine zugelassen wird. Das kann insbesondere dann zweckmäßig sein, wenn in der Gast-Software ein Betrieb in einem nicht privilegierten Modus ausgeführt wird, wodurch der Zugriff der Software auf die physikalische Maschine eingeschränkt ist, oder wenn Operationen Hardwareressourcen in der physikalischen Maschine nicht verwenden, über welche der VMM die Kontrolle behalten möchte.
  • Der VMM erlangt die Kontrolle dann wieder, wenn ein Gast-Vorgang bzw. -Programmschritt bzw. -Operation die korrekte Ausführung des VMM oder einer beliebigen der nicht ausführenden VMn beeinflußt. Gewöhnlich prüft der VMM derartige Vorgänge, wobei er bestimmt, ob ein Problem besteht, bevor das Fortschreiten des Vorgangs zur zugrundeliegenden physikalischen Maschine zugelassen wird, oder er den Vorgang im Auftrag eines Gastes emuliert. Beispielsweise kann es notwendig sein, daß der VMM die Kontrolle wiedererlangt, wenn der Gast auf I/O-Vorrichtungen zugreift, wenn er versucht, die Maschinenkonfiguration (z. B. durch Ändern der Steuerregisterwerte) zu ändern, wenn er versucht, auf bestimmte Speicherbereiche zuzugreifen, und dergleichen.
  • Bestehende Systeme, bei welchen ein VM-Betrieb unterstützt wird, steuern die Ausführungsumgebung einer VM unter Verwendung einer Struktur mit festem Format, auf die hierin als Virtuelle-Maschine-Steuerungsstruktur (Virtual Machine Control Structure, VMSS) Bezug genommen wird. Die VMSS ist in einem Speicherbereich gespeichert und enthält beispielsweise den Zustand des Gastes, den Zustand des VMM und die Steuerungsinformation, die angibt, unter welchen Bedingungen der VMM die Kontrolle während der Gastausführung wiedererlangen möchte. Der Prozessor (die Prozessoren) in der physikalischen Maschine liest (lesen) Informationen von der VMSS, um die Ausführungsumgebung der VM und des VMM zu bestimmen, und um das Verhalten der Gast-Software unter der Steuerung des VMM einzuschränken.
  • Bei herkömmlichen Architekturen wird die VMSS im Speicher der physikalischen bzw. realen Maschine angeordnet und wird dem VMM der Zugriff darauf unter Verwendung gewöhnlicher Speicherlese- und Schreibbefehle gewährt. Aus diesem Grund muß das Format der VMSS architektonisch in der Prozessorbefehlssatzarchitektur definiert werden (und ähnlich wie bei anderen Systemstrukturen und Befehlskodierungen in Beschreibungen und Anleitungen dokumentiert werden). Der VMM ist direkt für diese Spezifizierungen kodiert. Durch diese Strukturierung wird die Flexibilität bei der Implementierung des (der) Prozessors (Prozessoren), welche den VMM unterstützen, eingeschränkt. Da die Form der VMSS Architektur-definiert ist, kann die Mikroarchitektur einer speziellen Prozessorimplementierung keine Änderung am Format, an den Inhalten, der Organisation oder den Speicheranforderungen der VMSS-Daten aus Gründen der Leistungsfähigkeit, Erweiterbarkeit, Kompatibilität, Sicherheit und dergleichen vornehmen, ohne daß ebenfalls entsprechende Modifizierungen an der installierten Basis der VMM-Implementierungen erforderlich sind.
  • Daher besteht ein Bedarf an flexibleren Implementierungen von Architekturen für virtuelle Maschinen, die nicht starr mit der zugrundeliegenden Implementierung der realen Maschinen gekoppelt sind.
  • US 6,397,242 B1 offenbart ein Virtualisierungssystem mit einem virtuellen Maschinenmonitor für einen Computer mit einer segmentierten Architektur. Daraus ist bekannt, dass ein virtueller Maschinenmonitor eine Architekturkompatibilität zwischen unterschiedlichen Prozessorarchitekturen unter Zuhilfenahme einer binären Emulation oder binären Translation herstellen kann.
  • Es ist die Aufgabe der vorliegenden Erfindung, einen Prozessor bereitzustellen, der unabhängig vom Datenlayout einer virtuellen Maschinensteuerungsstruktur Zugriffe auf die virtuelle Maschinensteuerungsstruktur durch einen virtuellen Maschinenmonitor ohne die Notwendigkeit einer Anpassung des virtuellen Maschinenmonitors an eine jeweilige virtuelle Maschinensteuerungsstruktur zulässt sowie ein entsprechendes Verfahren.
  • Die Aufgabe wird gelöst durch einen Prozessor mit den Merkmalen gemäß Anspruch 1 sowie durch ein Verfahren mit den Merkmalen gemäß Anspruch 4. Ausführungsformen der Erfindung sind in den Unteransprüchen angegeben.
  • Kurzbeschreibung der Zeichnungen
  • 1 ist ein Diagramm einer VM-Architektur gemäß einer Ausführungsform der Erfindung.
  • 2 ist ein Ablaufdiagramm eines Verfahrens zur Steuerung einer VM gemäß einer Ausführungsform der Erfindung.
  • 3 ist ein Diagramm eines VMSS-Zugriffsbefehls gemäß einer Ausführungsform der Erfindung.
  • 4 ist ein Ablaufdiagramm eines Verfahrens zum Lesen von Daten von einer VMSS gemäß einer Ausführungsform der Erfindung.
  • 5 ist ein Ablaufdiagramm eines Verfahrens zum Schreiben von Daten in eine VMSS gemäß einer Ausführungsform der Erfindung.
  • Beschreibung der Ausführungsformen
  • Es wird eine neuartige VM-Steuerungsarchitektur beschrieben. In der vorliegenden detaillierten Beschreibung der Ausführungsformen wird auf die begleitenden Zeichnungen Bezug genommen, die einen Teil davon bilden und in welchen für Darstellungszwecke, jedoch ohne Beschränkung, spezielle ausführbare Ausführungsformen der Erfindung gezeigt sind. Diese Ausführungsformen werden mit ausreichenden Einzelheiten beschrieben, die einem Durchschnittsfachmann ihr Verständnis und ihre Implementierung ermöglichen. Es ist jedoch zu beachten, daß andere Ausführungsformen verwendet werden können und daß strukturelle, logische und elektrische Änderungen daran vorgenommen werden können, ohne von der Idee und vom Umfang der vorliegenden Offenbarung abzuweichen. Die folgende detaillierte Beschreibung ist daher nicht in einem beschränkenden Sinn zu verstehen und der Umfang der Ausführungsformen der hier offenbarten Erfindungen wird lediglich durch die beigefügten Ansprüche definiert.
  • Ein VMM stellt für andere Software (wie z. B. „Gast-Software", „Gäste" oder einfach „Gast") die Abstraktion einer oder mehrere VMn dar. Der VMM kann den verschiedenen Gästen dieselbe oder verschiedene Abstraktionen bieten. Jeder Gast erwartet, daß ihm sämtliche Möglichkeiten (facilities) der in der VM dargestellten Hardwareplattform für seinen Gebrauch zur Verfügung stehen. Beispielsweise erwartet der Gast, daß er Zugriff auf alle Register, Caches, Strukturen, I/O-Vorrichtungen, Speicher und dergleichen gemäß der Architektur des Prozessors und der in der VM dargestellten Plattform hat. Des weiteren erwartet jeder Gast, daß er verschiedene Ereignisse, wie beispielsweise Ausnahmen (exceptions), Interrupts und Plattformereignisse, wie z. B. die Initialisierung (INIT) und Systemverwaltungsinterrupts (SMIs) behandeln kann.
  • Einige dieser Ressourcen und Ereignisse sind „privilegiert", da sie vom VMM verwaltet werden müssen, um einen korrekten Betrieb der VMn sicherzustellen und den VMM und andere VMn zu schützen. Für die privilegierten Ressourcen und Ereignisse vereinfach der VMM die von der Gast-Software gewünschte Funktionalität, während er die letztendliche Kontrolle über diese Ressourcen und Ereignisse beibehält. Der Vorgang des Vereinfachens der Funktionalität für die Gast-Software kann eine Vielzahl von Aktivitäten auf der Seite des VMM umfassen. Die Aktivitäten des VMM sowie seine Eigenschaften begrenzen nicht den Umfang der verschiedenen Ausführungsformen der vorliegenden Erfindung.
  • Wenn eine Gast-Software auf privilegierte Ressourcen zugreift oder falls ein privilegiertes Ereignis auftritt, kann die Kontrolle bzw. Steuerung auf den VMM übertragen werden. Der Transfer der Kontrolle von der Gast-Software auf den VMM wird als ein VM-Austritt (exit) bezeichnet. Nachdem der Ressourcenzugriff erleichtert ist oder das Ereignis in entsprechender Weise behandelt wurde, kann der VMM die Kontrolle an die Gast-Software zurückgeben. Der Transfer der Kontrolle vom VMM an die Gast-Software wird als ein VM-Eintritt (entry) bezeichnet.
  • Die Virtuelle-Maschine-Steuerungsstruktur (VMSS) ist eine architektonisch definierte Struktur, die beispielsweise den Zustand der Gast-Software, den Zustand des VMM, Steuerunginformationen, die angeben, unter welchen Bedingungen der VMM wünscht, den Gast von einer Ausführung abzuhalten, und Informationen, welche den kürzlichsten bzw. letzten VM-Austritt betreffen, umfaßt. Bei gängigen Systemen befindet sich eine Darstellung der VMSS, die mit der architektonisch definierten Struktur exakt übereinstimmt, im Speicher. Der Prozessor in der physikalischen Maschine liest die Informationen von der VMSS, um die Ausführungsumgebung der VM zu bestimmen und ihr Verhalten zu beschränken.
  • Während der Gast-Ausführung fragt der Prozessor die Kontrollinformationen in der VMSS ab, um zu bestimmen, welche Gast-Aktionen (z. B. die Ausführung bestimmter Befehle, das Auftreten bestimmter Ausnahmen etc.) und Ereignisse (z. B. externe Interrupts) VM-Austritte verursachen. Wenn ein VM-Austritt auftritt, werden Komponenten des Prozessorstatus, die von der Gast-Software verwendet werden, in der VMSS gespeichert und Komponenten des Prozessorstatus, die vom VMM angefordert werden, von der VMSS geladen. Wenn ein VM-Austritt auftritt, wird die Steuerung an den VMM 120 unter Verwendung beliebiger dem Durchschnittsfachmann bekannter Mechanismen weitergegeben.
  • Wenn ein VM-Eintritt erfolgt, wird der Prozessorstatus, der beim VM-Austritt gespeichert wurde (und der durch den VMM modifiziert sein kann) wiederhergestellt und die Steuerung an die Gast-Software zurückgegeben. Um den ersten VM-Eintritt für einen Gast zu erleichtern, schreibt der VMM einen geeigneten Gast-Status in die VMSS. Während ein VM-Austritt verarbeitet wird, kann der VMM einen Gast-Status in der VMSS ändern. Bei einigen Ausführungsformen werden mehrere VMSS-Strukturen, die mehrere VMn unterstützen, von einem einzigen VMM auf einer einzigen physikalischen Maschine verwaltet. Die VMSSen müssen nicht die gesamte oben beschriebene Information umfassen und können zusätzlich Informationen umfassen, die bei der Steuerung der VM unterstützen. Bei einigen Ausführungsformen kann eine VMSS einen beträchtlichen Umfang an zusätzlichen Informationen umfassen.
  • 1 veranschaulicht ein Diagramm einer VM-Architektur 100 gemäß einer Ausführungsform der Erfindung. Die VM-Architektur 100 umfaßt eine Basishardwareplattform 110 (z. B. eine physikalische Maschine). Die Basishardwareplattform 110 umfaßt einen oder mehrere Prozessoren 112, die jeweils Zugriff auf einen flüchtigen und/oder nicht flüchtigen Speicher 116 haben. Zusätzlich können andere Elemente von der Basishardwareplattform umfaßt sein, die in 1 nicht gezeigt sind (wie z. B. Eingabe-Ausgabe-Vorrichtungen). Die VM-Architektur 100 umfaßt auch einen VMM 120, der ein oder mehrere VMn (z. B. 130, 140 und 150) verwaltet, wobei jede VM (z. B. 130, 140 und 150) eines oder mehrere OSe (z. B. 150, 160 und 170) und Anwendungen (z. B. 152, 162 und 172) unterstützt. Die Prozessoren 112 können von jeder Art eines Prozessors sein, der sich zur Ausführung von Software eignet, wie beispielsweise ein Mikroprozessor, ein digitaler Signalprozessor, ein Mikrokontroller oder dergleichen. Die Prozessoren 112 können einen Mikrocode, eine programmierbare Logik oder eine festkodierte Logik zur Durchführung der Ausführung von Verfahrensausführungsformen der vorliegenden Erfindung umfassen.
  • Bei dem Speicher 116 kann es sich um eine Festplatte, eine Floppydisc, einen Direktzugriffsspeicher (RAM), einen Lese-Nur-Speicher (ROM), einen Flash-Speicher und um Kombinationen der oben genannten Vorrichtungen oder um jede beliebige andere Art eines mittels eines Prozessors 112 lesbaren Maschinenmediums handeln. Im Speicher 116 können Befehle oder Daten zur Durchführung der Ausführung von Verfahrensausführungsformen der vorliegenden Erfindung gespeichert sein.
  • Der Speicher 116 umfaßt einen VMSS-Bereich 118 zur Verwendung durch den Prozessor 112 beim Aufrechterhalten des Status der VMSS, wie in weiteren Einzelheiten nachfolgend beschrieben ist.
  • Die Prozessoren 112 können von jeder Art eines Prozessors sein, der sich zur Ausführung von Software eignet, wie beispielsweise ein Mikroprozessor, ein Digitalsignalprozessor, ein Mikrokontroller oder dergleichen. Jeder Prozessor 12 kann einen VMSS-Cache 114 umfassen, der in weiteren Einzelheiten im folgenden beschrieben ist. Die Prozessoren 112 können Mikrocode, eine programmierbare Logik oder eine festkodierte Logik zur Durchführung der Ausführung von Verfahrensausführungsformen der vorliegenden Erfindung umfassen.
  • Falls er vorhanden ist, kann der VMSS-Cache 114 zur temporären Speicherung oder zur Speicherung während der gesamten Lebensdauer einiger oder aller VMSS-Stati verwendet werden. Der VMSS-Cache 114 kann Register, einen Cache-Speicher oder jeden beliebigen anderen Speicher umfassen. In 1 ist der VMSS-Cache 114 als Teil des Prozessors 112 gezeigt. Er kann sich jedoch auch außerhalb des Prozessors 112 in jeder beliebigen Komponente der bloßen Plattformhardware 110 befinden. In der folgenden Erläuterung wird der VMSS-Cache 114 auch als „Prozessor-interner Speicher" oder „Prozessor-interne Ressourcen" bezeichnet. Man beachte jedoch, daß sich dieser Speicher auch in anderen Plattformkomponenten als dem Prozessor 112 befinden. Der VMSS-Cache 114 ist für die Implementierung der erfindungsgemäßen Verfahren nicht zwingend erforderlich.
  • Herkömmlicherweise würde ein VMM auf eine VMSS im Speicher unter Verwendung gewöhnlicher Lese- und Schreibbefehle zugreifen. In der VM-Architektur 100 aus 1 greift der VMM 120 jedoch indirekt durch eine Gruppe vom Prozessor bereitgestellter VMSS-Zugriffsbefehle 119 auf den VMSS-Bereich 118 zu. Die VMSS-Zugriffsbefehle 114 verwenden den VMSS-Bereich 118 und irgendeinen beliebigen verfügbaren VMSS-Cache 114. Bei einer Ausführungsform umfassen die VMSS-Zugriffsbefehle 119 einen Operanden, der ein Kennzeichner der VMSS-Komponente ist, auf die zugegriffen wird. Der Kennzeichner wird hier als ein „Komponenten-Kennzeichner" bezeichnet. Der VMM 120 muß nicht in Kenntnis darüber sein, daß irgendeine spezielle VMSS-Komponente im VMSS-Bereich 118 oder im VMSS-Cache 114 gespeichert ist. Die VM-Architektur 100 gewährleistet des weiteren, daß unvorhersehbare Ergebnisse auftreten können, falls gewöhnliche Lese- und Schreibbefehle zum Zugriff auf den VMS-Bereich 118 verwendet werden. Die Verwendung der VMSS-Zugriffsbefehle 119 gewährt dem Prozessor 112 Freiheiten bezüglich seines Gebrauchs eines verfügbaren Prozessor-internen bzw. -integrierten und Speicher-basierten Speichers (z. B. der VMSS-Bereich 118) und läßt auch eine Vielzahl von Leistungsoptimierungen zu.
  • Bei einigen Ausführungsformen werden die VMSS-Zugriffsbefehle 119 durch die Prozessormikroarchitektur durch Lesen von und Schreiben in Speicher im VMSS-Bereich 118 implementiert. Bei anderen Ausführungsformen können die VMSS-Zugriffsbefehle 119 prozessorinterne Ressourcen lesen und/oder in diese schreiben. Der VMM 120 muß nicht darüber unterrichtet sein, wie die zugrunde liegende physikalische Maschinenmikroarchitektur die VMSS unterstützt. Auf diese Weise kann die zugrunde liegende Prozessorimplementierung zur Berücksichtigung der Leistung, Sicherheit, Zuverlässigkeit oder anderer Betrachtungen modifiziert werden, ohne den VMM 120 mit der zugrunde liegenden Prozessorimplementierung inkompatibel zu machen, und es können für jede Prozessorimplementierung individualisierte VMSS-Implementierungen entwickelt werden.
  • Das folgende Beispiel veranschaulicht den Nachteil einer VM-Architektur, bei der keine VMSS-Zugriffsbefehle 119 verwendet werden. Falls eine Prozessorimplementierung VMSS- Daten in einem Prozessor-internen Speicher temporär speichern kann, erfolgt ein Schreiben von Daten in den speicherinternen VMSS-Bereich lediglich dann, wenn ein spezielles Ereignis auftritt. Während der Zeitperiode, in der die VMSS-Daten zwischengespeichert sind, gibt ein gewöhnliches Lesen an den VMSS-Bereich 118 einen Stale-Wert (einen inkorrekten Wert) zurück. Ein gewöhnliches Schreiben in den VMSS-Bereich 118 aktualisiert nicht die Daten im prozessorinternen Speicher, sofern keine speziellen Vorkehrungen mittels der Prozessorimplementierung getroffen werden, um den Schreibvorgang richtig auf den Speicher abzubilden. Ohne die Verwendung der VMSS-Zugriffsbefehle 119 muß die Prozessorimplementierung den VMSS-Bereich mit jedem temporären oder in prozessorinternen Ressourcen zwischengespeicherten Status konsistent halten. Das kann bestimmte Leistungsoptimierungen, Erweiterungen der VM-Architektur etc., wie in weiteren Einzelheiten im nachfolgenden erläutert wird, ausschließen. Im Gegensatz zu den gewöhnlichen Speicheroperationen geben VMSS-Lesebefehle gegebenenfalls einen prozessorintern gespeicherten Wert zurück und VMSS-Schreibbefehle aktualisieren den VMSS-Zustand korrekt, wo auch immer er sich befindet. Diese Befehle werden in Einzelheiten im nachfolgenden beschrieben.
  • Um die VMSS-Zugriffsbefehle 119 zu vereinfachen, wird jedes Element der VMSS durch eine architektonisch definierte Konstante identifiziert, die die Komponente der VMSS identifiziert. Diese Konstanten-Werte werden hier als „Komponenten-Kennzeichner" bezeichnet. Bei einer Ausführungsform handelt es sich bei dem Komponenten-Kennzeichner um einen 16-Bit-Wert, der jedoch bei anderen Ausführungsformen größer oder kleiner sein kann.
  • Bei der folgenden Erläuterung wird eine Anzahl von Feldern in der VMSS bei Beschreibungen verschiedener Ausführungsformen der Erfindung verwendet. Beispielsweise ist GUEST_EIP das Feld, das den Befehlszeiger für die Gast-Software enthält, VM_CONTROLS das Feld, das Bits enthält, die die VM-Ausführungsumgebung steuern, etc. Ein Verständnis der Syntax und Semantik der verschiedenen Felder ist für das Verständnis der hier beschriebenen Erfindung nicht notwendig. Zusätzlich sind den Feldern spezifische architektonisch definierte Komponenten-Kennzeichner gegeben. Die speziellen bei den Beispielen verwendeten Felder und Werte der Komponenten-Kennzeichner beschränken in keiner Weise die Anwendbarkeit der Erfindung.
  • Eine Darstellung des Vorteils der Verwendung der VMSS-Befehle 119 ist wie folgt. Man beachte, daß eine Prozessorimplementierung das im VMSS-Bereich 118 gespeicherte Daten layout von einer Prozessorimplementierung zu einer anderen ändern kann. Beispielsweise kann bei einer ersten Prozessorimplementierung das GUEST_EIP-Feld des VMSS-Bereichs beginnend beim 28. Byte des VMSS-Bereichs gespeichert sein. Bei einer zweiten Prozessorimplementierung kann dasselbe VMSS-Feld beim 16. Byte im VMSS-Bereich gespeichert sein. Ein VMM 120, der für eine Anfangsimplementierung geschrieben ist und die VMSS-Zugriffsbefehle 119 verwendet, ist auch auf der letzteren Implementierung des Prozessors 112 funktional, obwohl sich das Layout des VMSS-Bereichs 118 geändert hat. Diese Kompatibilität wird erreicht, da die Implementierung der VMSS-Zugriffsbefehle in den beiden Prozessorimplementierungen das Layout des verwendeten VMSS-Bereichs 118 verstehen und entsprechend auf die notwendigen Daten zugreifen.
  • Bei einigen Ausführungsformen kann es zur Vereinfachung der VMSS-Zugriffsbefehle 119 erforderlich sein, dem VMM 120 einen Speicherbereich (z. B. den VMSS-Bereich 118) zur Seite zu stellen, um den gesamten oder einen Teil des vom Prozessor 112 für die VMSS benötigten Speichers unterzubringen. Bei diesen Ausführungsformen der Erfindung ermöglicht es ein vom Prozessor gelieferter Befehl, daß der VMM 120 einen Zeiger oder eine Adresse des VMSS-Bereichs 118 zum Prozessor 112 liefert. Bei einer Ausführungsform ist die Adresse eine physikalische Adresse. Bei anderen Ausführungsformen können virtuelle oder lineare Adressen verwendet werden. Die dem Prozessor 112 unter Verwendung dieses Befehls zur Verfügung gestellte Adresse wird im nachfolgenden als ein VMSS-Zeiger bezeichnet. Dieser Befehl informiert den Prozessor 112 über den Ort des VMSS-Bereichs 224. Dieser neue Befehl aktiviert eine VMSS, die vom Prozessor 112 insgesamt oder zum Teil in mit dem VMSS-Zeiger bezeichneten VMSS-Bereich 118 gespeichert sein kann.
  • Gemäß einer weiteren Ausführungsform kann ein Mechanismus bereitgestellt werden, der es ermöglicht, daß der VMM 120 den Speicherumfang 116 herausfinden kann, der für einen VMSS-Bereich 118 reserviert werden muß. Beispielsweise kann in der Prozessorbefehlssatzarchitektur (ISA) des Intel Pentium IV (auf die hier als die IA-32 ISA Bezug genommen wird) ein modellspezifisches Register (MSR) bereitgestellt werden, das die erforderliche VMSS-Bereichsgröße umfaßt. Gemäß einer weiteren Ausführungsform wird ein Befehl bereitgestellt, der die erforderliche VMSS-Bereichsgröße zurückgibt. Jeder andere verfügbare Mechanismus kann verwendet werden, um diese Information zum VMM zu übertragen. Auf diese Weise kann sich die Größe des erforderlichen Speicherbereichs 118 von einer Prozes sorimplementierung zu einer anderen ändern, ohne daß eine Umgestaltung oder Umkompilierung des VMM 120 zwingend wäre.
  • Beispielsweise sei angenommen, daß ein erster Prozessor 112 für den VMSS-Bereich 118 im Speicher 116 64 Byte benötigt. Dieses Erfordernis wird dem VMM 120, wie oben beschrieben, berichtet. Ein VMM 120 wird unter Verwendung des oben beschriebenen Mechanismus zur Bestimmung, wieviel Speicher 116 dem VMSS-Bereich 118 zuzuweisen ist, so geschrieben, daß er auf dieser Prozessorimplementierung läuft. Eine zweite Prozessorimplementierung wird erzeugt, die nun 128 Byte für einen VMSS-Speicher im Speicher 116 benötigt. Der für die erste Prozessorimplementierung geschriebene VMM 120 wird auch auf der zweiten Implementierung korrekt funktionieren, da er den für den VMSS-Bereich 118 korrekten Speicherumfang zuweisen wird.
  • Während der VMSS-Zeiger aktiv ist, kann der Prozessor 112 den gesamten oder einen Teil der VMSS im VMSS-Bereich 118 oder alternativ in sich auf dem Prozessor 112 befindenden Ressourcen oder an jedem beliebigen anderen verfügbaren Ort (d. h. im VMSS-Cache 114) speichern. Zusätzlich kann der Prozessor 112 nicht architektonische Statusinformation im VMSS-Bereich 118 oder in prozessorinternen Ressourcen speichern. Beispielsweise kann der Prozessor 112 temporäre Variablen, mikroarchitektonische, einer VM (z. B. 130, 140 oder 150) zugeordnete Stati, Indikatoren des Status der VM (z. B. 130, 140 oder 150) und dergleichen speichern. Die Software verwendet keine gewöhnlichen Speicherlese- und Schreibvorgänge, um auf den VMSS-Bereich zuzugreifen, während der VMSS-Zeiger aktiv ist. Diese Beschränkung stellt die Korrektheit des Betriebs des VMM 120 und der dem VMSS zugeordneten VM (z. B. 130, 140 oder 150) sicher.
  • Ein weiterer vom Prozessor bereitgestellter Befehl schreibt beliebige VMSS-Daten, die in prozessorinternen Ressourcen zwischengespeichert waren, in den VMSS-Bereich 118, invalidiert die entsprechenden Daten im prozessorinternen Speicher und deaktiviert des weiteren den VMSS-Zeiger. Gemäß einer Ausführungsform kann die VMSS beispielsweise durch Schreiben eines Statusindikators, der architektonisch oder nicht architektonisch definiert ist, in den VMSS-Bereich als inaktiv markiert werden. Gemäß einer anderen Ausführungsform kann der prozessorinterne Speicher einfach entleert und der prozessorinterne Status für die VMSS deaktiviert (invalidiert) werden. Dieser Befehl wird vor jedem Versuch des VMM 120, die Inhalte des VMSS-Bereichs 118 zu bewegen, ausgeführt. Wenn ein VMM 120 versucht, den VMSS-Bereich 118 zu bewegen, kann er dies mit einer einzigen Datenblockbewegung ausführen, da das VMSS-Format beibehalten wird und nur der Prozessorimplementierung bekannt ist. Zusätzlich ist diese Blockbewegung möglich, da der VMM über die Größe des VMSS-Bereichs unterrichtet ist (er hat den Speicher basierend auf den hier beschriebenen Mechanismen zugewiesen). Individuelle Elemente der VMSS müssen für den VMM 120 nicht erkennbar sein.
  • Bei einigen Ausführungsformen kann ein für eine spezielle Ausführungsform spezifischer Mechanismus es zulassen, daß der VMM 120 die Prozessorimplementierung identifiziert, die eine spezielle VMSS eingerichtet hat. Der VMM 120 kann diese Prozessoridentifizierung dazu verwenden, um zu bestimmen, ob die VMSS mit einer anderen Prozessorimplementierung kompatibel ist. Bei einer Ausführungsform befindet sich dieser Kennzeichner in den ersten vier Bytes des VMSS-Bereichs 118 und wird an den VMM 120 beispielsweise in einer MSR oder mit Hilfe jedes anderen Verfahrens berichtet. Vor dem ersten Gebrauch einer VMSS kann es erforderlich sein, daß der VMM 120 diesen Kennzeichner an die geeignete Stelle in der VMSS schreibt und somit kann das Format dieses Teils des VMSS-Bereichs 118 architektonisch definiert werden. Bei einigen Ausführungsformen ist es ersterbenswert, daß alle Implementierungen identische, architektonisch definierte Teile des VMSS-Bereichs 118 definieren.
  • Bei anderen Ausführungsformen können neue architektonisch definierte Teile des VMSS-Bereichs 118 definiert sein, vorausgesetzt, daß vorherige Ausführungsformen die neu definierten Bereiche undefiniert gelassen haben und die neu definierten Bereiche nicht mit dem Betrieb eines VMM 120 interferieren, der keinen expliziten Gebrauch davon macht. Auf diese Weise sind beliebige für diese Ausführungsformen geschriebene VMMe 120 auf den neueren Implementierungen betriebsfähig.
  • Bei einigen Ausführungsformen umfassen die vom Prozessor bereitgestellten Befehle 119 eine Zahl unterschiedlicher Befehle:
    • – ein VMSS-Lade-Zeiger-Befehl umfaßt eine Speicheradresse als einen Operanden. Diese Adresse ist der Ort, an dem der Prozessor 120 die VMSS (die z. B. den Beginn des VMSS-Bereichs 118) speichern kann. Die dieser Adresse zugeordnete VMSS wird durch den Befehl aktiviert. Dieser Befehl ermöglicht auch die Aktivierung einer VM (z. B. 130, 140 oder 150), die der VMSS zugeordnet und von dieser gesteuert wird, und den Gebrauch verschiedener anderer nachfolgend beschriebener Befehle. Bei einer Ausführungsform handelt es sich bei der Adresse um eine physikalische Adresse. Bei anderen Ausführungsformen kann eine virtuelle oder lineare Adresse verwendet werden.
    • – ein VMSS-Speicher-Zeiger-Befehl speichert einen Zeiger auf den aktiven VMSS-Bereich 118 in einem Register (z. B. im Prozessor 112) oder an einem Speicherort (z. B. im Speicher 116). Die Stelle eines derartigen Speicherorts kann dem Befehl als Operand zur Verfügung gestellt werden.
    • – ein VMSS in ein Register (ein VMSS-Lesebefehl liest eine Komponente der z. B. im Prozessor 112) oder einen Speicherort (z. B. im Speicher 116). Der Befehl kann eine Zahl von Parameter einschließlich eines Komponenten-Kennzeichners umfassen, der die VMSS-Komponente, die von der VMSS gelesen werden soll, und den Ort bezeichnet (z. B. das Register oder den Speicherort), an dem die von bzw. aus der VMSS gelesenen Daten gespeichert werden sollen.
    • – ein VMSS-Schreibbefehl lädt eine Komponente der VMSS aus einem Register (z. B. im Prozessor 112) oder von einem Speicherort (z. B. im Speicher 116). Ähnlich wie der VMSS-Lesebefehl kann ein VMSS-Schreibbefehl Operanden für den VMSS-Komponenten-Kennzeichner umfassen. Zusätzlich kann er einen den Ort (z. B. das Register oder den Speicherort) der in die VMSS zu schreibenden Daten beschreibenden Operanden umfassen.
    • – ein VMSS-Löschungsbefehl stellt sicher, daß die Inhalte der gesamten prozessorinternen, der VMSS zugeordneten Speicherung in den VMSS-Bereich 118 zurückgespeichert werden, invalidiert Daten in den prozessorinternen Ressourcen und deaktiviert des weiteren den VMSS-Zeiger. Dieser Befehl kann ohne Operanden arbeiten, wobei ein momentan aktiver VMSS-Zeiger beseitigt und deaktiviert wird, oder kann bei einer alternativen Ausführungsform den VMSS-Zeiger, für den das Beseitigen und die Deaktivierung erforderlich ist, als Operanden nehmen. Bei einer Ausführungsform kann ein VMSS-Löschungsbefehl die VMSS durch Schreiben eines architektonisch oder nicht-architektonisch definierten Statusindikators in den VMSS-Bereich als inaktiv markieren.
  • Schließlich bewirkt ein VMSS-Eingabebefehl einen Transfer der Steuerung (d. h. einen VM-Eintritt) zur durch die aktive VMSS definierten VM (z. B. 130, 140 oder 150) durch Laden eines Prozessorstatus entsprechend der Semantik der VM-Architektur 100 und des Inhalts der VMSS. Alternativ kann der Befehl ein einzugebendes Argument zusammen mit dem VMSS-Zeiger (oder dem Ort dieses Zeigers) umfassen.
  • Die oben beschriebenen, vom Prozessor gelieferten Befehle 119 geben lediglich eine Ausführungsform wieder, da eine Vielzahl verschiedener oder alternativer Befehle 119 vorgesehen werden kann. Beispielsweise kann der VMSS-Löschungsbefehl bei einigen Ausführungsformen VMSS-Daten von einem prozessorinternen Speicher in den VMSS-Bereich 118 kopieren, ohne daß der VMSS-Zeiger deaktiviert wird. Operanden können explizit oder implizit sein. Andere Befehle 119 (oder Varianten der oben dargelegten Befehle 119), die auf alle im Prozessor 112 aktiven VMSS-Zeiger wirken und dergleichen können vorgesehen werden.
  • Wie für den Fachmann erkennbar ist, umfassen herkömmliche VM-Architekturen eine statische, architektonisch definierte Form für die VMSS im Speicher. Dadurch ist die Fähigkeit der Prozessorimplementierungen, die Größe, die Organisation oder die Inhalte der VMSS zu erweitern oder zu ändern, begrenzt, da Änderungen an der VMSS entsprechende Änderungen der VMM-Implementierungen erfordern würden. Zusätzlich weist die Prozessorimplementierung bei der Zuweisung von Speicher der VMSS-Daten zu prozessorinternen Ressourcen eine geringere Flexibilität auf, da herkömmliche VMMe unter Verwendung gewöhnlicher Speicher-Lese- und Schreiboperationen auf herkömmliche VMSSen zugreifen. Beispielsweise kann es sein, daß der Prozessor nicht in der Lage ist, bestimmte Teile der VMSS in prozessorinternen Ressourcen während eines VM-Austritts zum VMM zwischenzuspeichern, da der Prozessor Schwierigkeiten bei der Erfassung, ob der VMM Modifizierungen an den entsprechenden Bereichen der VMSS im Speicher ausgeführt hat, haben kann. Dieses Unvermögen, die Kohärenz zwischen den prozessorinternen Ressourcen und den speicherinternen VMSS-Bildern zu bestätigen, verkompliziert die Fehler- und Konsistenzprüfung, die vor dem Ausführen von Gast-Software in der Folge eines VM-Eintritts erforderlich sein kann.
  • Jedoch greifen bei verschiedenen Ausführungsformen der vorliegenden Erfindung die VMMe 120 nicht direkt auf das VMSS-Speicherbild unter Verwendung gewöhnlicher Speicher-Lese- und Schreiboperationen zu, verwenden kein vordefiniertes Format für die VMSS im Speicher 116 und bestimmen die erforderliche Speichergröße für die VMSS im Speicher 116 in Laufzeit.
  • Das Binden von VMSS-Speichererfordernissen in Laufzeit und die Verwendung von vom Prozessor gelieferten Befehlen 119, wie oben beschreiben wurde, ist in 2 dargestellt. 2 veranschaulicht den Zustand des VMSS-Zeigers durch eine Vielzahl von Aktivitäten im VMM. Die Verarbeitung beginnt im Block 210. Zu diesem Zeitpunkt gibt es keinen aktiven VMSS-Zeiger. Im Block 210 bestimmt der VMM die Größe des vom Prozessor zur Unterstützung der VMSS benötigten Speicherbereichs. Wie oben beschrieben, kann dies beispielsweise durch Lesen eines bestimmten MSR erreicht werden.
  • Im Block 220 ordnet der VMM den benötigten Speicher zu. Der VMSS-Zeiger ist immer noch inaktiv. Obwohl dieser Speicherbereich optimalerweise im physikalischen Speicher benachbart bzw. nahtlos ist, ist für den Fachmann erkennbar, daß dieses Erfordernis bei dieser Ausführungsform nicht erforderlich ist. Der VMM aktiviert die VMSS durch Liefern der Adresse des VMSS-Bereichs zum Prozessor unter Verwendung des VMSS-Lade-Zeiger-Befehls, der oben beschrieben wurde (Eintritt in Block 230). An diesem Punkt wird der VMSS-Zeiger als ein arbeitender VMSS-Zeiger bezeichnet. Nachdem der VMSS-Zeiger aktiv ist, kann der VMM Komponenten der VMSS unter Verwendung der geeigneten VMSS-Zugriffsbefehle (die in 1 als 119 und in 2 als 232 und 234 gezeigt sind) lesen und schreiben. Auf diese Lese- oder Schreiboperationen folgend bleibt der VMSS-Zeiger aktiv.
  • Wenn der VMM beabsichtigt, dem Gast die Ausführung zu erlauben, verwendet er den VM-Eintrittsbefehl, um den Gast in die Maschine zu laden (Eintritt in Block 240). Nach dem VM-Eintritt ist der VMSS-Zeiger immer noch aktiv, wobei er jedoch nun als ein steuernder VMSS-Zeiger funktioniert, der vom Prozessor dazu verwendet wird, die Umgebung und das Verhalten der Gast-Ausführung zu bestimmen.
  • Wenn ein VM-Austritt erfolgt, kehrt die Steuerung zum VMM zurück (unter Rückkehr vom Block 240 zum Block 230). Der VMSS-Zeiger bleibt wieder als ein arbeitender VMSS-Zeiger aktiv. Der VMM kann VMSS-Felder (Pfeile 232 und 234) in geeigneter Weise lesen und schreiben und kann den Gast wiederum unter Verwendung des VM-Eintrittsbefehls (unter Rückkehr zum Block 240) einführen. Alternativ kann der VMM den VMSS-Zeiger unter Verwendung des VM-Löschungsbefehls deaktivieren, wobei zu diesem Zeitpunkt der VMSS-Zeiger inaktiv wird (unter Rückkehr zum Zustand 220).
  • Man beachte, daß das Verfahren 200 nicht auf eine bestimmte Folge von Arbeitsschritten beschränkt ist, da der VMM zu jedem beliebigen Zeitpunkt eine Vielzahl von Arbeitsschritten ausführen kann (z. B. VM-Lesen, VM-Schreiben, VM-Eintritt, etc.). Zusätzlich kann zu jedem beliebigen Zeitpunkt, in dem ein gegebener Prozessor das Verfahren 200 verwendet, ein einzelner VMSS-Zeiger oder eine Vielzahl von VMSS-Zeigern aktiv oder inaktiv sein. Bei einigen Ausführungsformen können mehrere VMSSs in einem gegebenen Prozessor zu einem beliebigen Zeitpunkt aktiv sein. Auf diese Weise kann ein VMM zwischen VMn umschalten, ohne einen VMSS-Löschungsbefehl auszuführen, wodurch die Verarbeitungseffizienz der VM verbessert wird.
  • Bei einer Ausführungsform kann ein zusätzlicher vom Prozessor gelieferter Befehl den VMM in die Lage versetzen, die Zahl gleichzeitiger oder paralleler VMSSen, die zu einem bestimmten Zeitpunkt aktiv sein können, abzufragen und zu erhalten. Bei anderen Ausführungsformen kann ein MSR bereitgestellt werden, das der VMM lesen kann, um diese Information zu erhalten. Bei einer alternativen Ausführungsform kann die Zahl der VMSS-Zeiger, die gleichzeitig aktiv sein können (und daher beispielsweise in prozessorinternen Ressourcen zwischengespeichert sein können), für die VMM-Software nicht direkt erkennbar sein, wobei die Prozessorimplementierung Überlaufbedingungen automatisch behandelt, wenn ein VMM mehr VMSS-Zeiger aktiviert, als der Prozessor in prozessorinternen Ressourcen speichern kann. In diesem Fall kann der Prozessor geeignete VMSS-Daten zu zugeordneten VMSS-Bereichen im Speicher automatisch entleeren. Bei einigen Ausführungsformen können in einer Anzahl der vom Prozessor gelieferten und oben anhand der Erläuterung der 1 beschriebenen Befehle explizite VMSS-Zeigerargumente erforderlich sein.
  • Bei bestimmten Ausführungsformen der vorliegenden Erfindung werden Anforderungen an die Software, die mit der Verwaltung der prozessorinternen und speicherinternen Speicherung der VMSS-Daten verbundenen Details zu bewältigen, beseitigt. Somit verwaltet der VMM jede der VMn, die seiner Steuerung unterliegt, auf einem höheren Abstraktionsniveau. Diese Strategie ermöglicht, daß die oben in Verbindung mit 1 und 2 erläuterten vom Prozessor gelieferten Befehle die Details der VMSS-Speicherung verwalten, so daß die VM-Ausführung durch Hinzufügen oder Modifizieren der vom Prozessor gelieferten Befehle günstiger und optimaler geändert oder erweitert werden kann, ohne die bestehende VMM-Software zu ändern.
  • 3 ist ein Diagramm, in dem der Gebrauch der VMSS-Lese-/Schreib-Befehle bei einer Ausführungsform der vorliegenden Erfindung abgebildet ist. Es ist das architektonische VMSS-Format 305 gezeigt, obwohl es nicht explizit vom VMM verwendet wird. Vielmehr wird der VMM unter Kenntnis der VMSS-Komponenten-Kennzeichner, Feldgrößen und Feldsemantik programmiert, jedoch nicht mit einer architektonischen Definition der Form der VMSS-Speicherung im Speicher. Wenn ein VMM auf ein Feld in der architektonischen VMSS 305 zugreifen möchte, führt er ein VMSS-Lesen (oder gegebenenfalls VMSS-Schreiben) durch. In 3 ist zur Veranschaulichung lediglich das VMSS-Lesen gezeigt. Ein Parameter für den VMSS-Lese-Befehl 310 ist ein Komponenten-Kennzeichner, wobei es sich um eine architektonisch definierte Konstante handelt, die die Komponente der VMSS definiert. Der Prozessor verwendet den Komponenten-Kennzeichner je nach Zweckmäßigkeit zur Abbildung auf prozessorinterne (z. B. den VMSS-Cache 322) oder speicherinterne Ressourcen (z. B. den VMSS-Bereich 324), um auf die VMSS-Daten im Auftrag des VMM unter Verwendung einer Abbildefunktion 320 zuzugreifen. Falls die im VMSS-Bereich oder im VMSS-Cache gespeicherten Daten nicht im architektonisch definierten Format vorliegen, werden die Daten in geeigneter Weise unter Verwendung einer Umformatierungsfunktion 323 für eine Anpassung umformatiert.
  • Zwei beispielhafte VMSS-Zugriffsbefehle sind in 3 gezeigt. Obwohl beide Beispiele sich auf VMSS-Lesebefehle beziehen, tritt eine ähnliche Gruppe von Aktivitäten für VMSS-Schreib-Befehle auf, wie in den nachfolgenden Erläuterungen mit Bezug auf 5 in Einzelheiten angegeben ist.
  • Unter Bezugnahme auf 3 greift ein erster beispielhafter VMSS-Lese-Befehl 310 auf die GUEST_EIP-Komponente zu, die eine architektonisch definierte Kodierung von 0 × 4032 aufweist. Die Prozessorimplementierung hält Daten für diese Komponente im VMSS-Bereich 324 aufrecht, wie durch die Abbildefunktion 320 bestimmt ist. Der Prozessor liest die entsprechenden Komponentendaten vom VMSS-Bereich 324 unter Verwendung eines Speicherlesevorgangs 330. Der Lesevorgang 330 versteht den Ort der Komponente im VMSS-Bereich 324 (wie wiederum durch die Abbildefunktion 320 bestimmt ist; bei diesem Beispiel befindet er sich beim Offset 12 im VMSS-Bereich). Der Prozessor gibt dann den Datenwert zum VMM zurück (wie als Pfeil 331 gezeigt ist).
  • Ein zweiter beispielhafter VMSS-Lese-Befehl 350 greift auf die VM_CONTROLS-Komponente zu, die eine architektonisch definierte Kodierung von 0 × 1076 aufweist. Diese Prozessorimplementierung behält diese Komponente im VMSS-Cache 322 bei (wie durch die Abbildefunktion 320 bestimmt ist). Der Prozessor greift auf den VMSS-Cache 322 zu, um die Daten wiederzugewinnen. In diesem Fall werden die Daten prozessorintern in einer Form gespeichert, die nicht mit der architektonischen Definition der VM_CONTROLS-Komponente zusammenpaßt (z. B. die Daten werden prozessorintern als ein umgeordnetes 8-Byte-Objekt gespeichert, während die architektonische Definition des VM_CONTROLS-Feldes ein 4-Byte-Objekt ist). Der Prozessor formatiert die VM_CONTROLS-Daten vor einer Rückgabe der Daten zur VM unter Verwendung der Umformatierungsfunktion 323 um, so daß sie mit der architektonischen Definition des Feldes übereinstimmen. Dieser umformatierte Wert (d. h. der Wert, der mit der architektonischen Definition der angeforderten Komponente zusammenpaßt) wird zum VMM zurückgegeben (wie als Pfeil 326 gezeigt ist).
  • Unter Verwendung dieser VMSS-Zugriffsbefehle ist ein VMM, der eine oder mehrere VMn verwaltet, von welchen jede durch eine separate VMSS identifiziert ist, zur Verwaltung der einer VMSS zugeordneten Speicherung nicht erforderlich, da sie vom Speicher in prozessorinternen Ressourcen zwischengespeichert wird. Zusätzlich muß der VMM sich ändernde Einzelheiten bezüglich der Prozessorimplementierung, wie beispielsweise die Formatierung von Daten im Speicher oder in prozessorinternen Ressourcen, nicht bewältigen. Somit können Prozessorentwickler die VMSS-Zugriffsbefehle ändern oder modifizieren, um die Leistungsfähigkeit der VM zu verbessern und die Fähigkeiten der VM zu erweitern, ohne den Betrieb bestehender VMMe oder VMn nachteilig zu beeinflussen. Bestehende VMMe und VMn können jedoch von derartigen Änderungen profitieren, da die Leistungsfähigkeit, Zuverlässigkeit, Skalierbarkeit oder andere Verbesserungen an neue Implementierungen der VM-Architektur weitergegeben werden.
  • 4 ist ein Ablaufdiagramm eines Verfahrens 400 zur Ausführung eines VMSS-Lese-Befehls gemäß einer Ausführungsform der vorliegenden Erfindung. In 410 wird eine VMSS-Lese-Aufforderung (read request) von einem VMM empfangen. In 420 wird der VMSS-Komponenten-Kennzeichner von der VMSS-Leseaufforderung erfaßt. Beim Komponenten- Kennzeichner handelt es sich um eine architektonisch definierte Konstante, die die gewünschte Komponente der VMSS identifiziert.
  • Ein Prozessor überprüft den Komponenten-Kennzeichner in 430, um zu bestimmen, ob die dem Komponenten-Kennzeichner zugeordnete VMSS-Komponente sich im Speicher befindet. Falls die VMSS-Komponente im Speicher gespeichert ist, wird die Adresse der Speicherstelle in 440 berechnet und werden die der VMSS-Komponente zugeordneten VMSS-Daten in 450 erfaßt. Falls jedoch die VMSS-Komponente nicht im Speicher gespeichert ist, erhält der Prozessor die der VMSS-Komponente zugeordneten VMSS-Daten aus dem prozessorinternen Speicher in 460. Auf diese Weise verwendet der Prozessor den Komponenten-Kennzeichner, um die Leseaufforderung auf den VMSS-Komponentenspeicher abzubilden, wenn sie sich im Speicher oder im prozessorinternen Speicher befindet.
  • In 470 wird eine Überprüfung durch den Prozessor durchgeführt, um zu bestimmen, ob ein Umformatieren der VMSS-Daten erforderlich ist, bevor die VMSS-Daten an den VMM zurückgegeben werden. Falls die VMSS-Daten im Format gespeichert sind (entweder im VMSS-Bereich oder in prozessorinternen Ressourcen), das sich vom architektonisch definierten Datenformat für die VMSS-Komponente unterscheidet (d. h. die VMSS-Komponente ist in einem für die Implementierung spezifischen Datenformat gespeichert, das sich vom architektonisch definierten Format unterscheidet), wird in 480 auf eine Umformatierungsfunktion zugegriffen, um die für die Implementierung spezifischen VMSS-Daten in ein architektonisch definiertes Datenformat zu übertragen. Falls die VMSS-Daten im architektonisch definierten Datenformat für die VMSS-Komponente gespeichert sind (entweder im VMSS-Bereich oder in prozessorinternen Ressourcen), ist keine Umformatierungsfunktion oder Übersetzung für die VMSS-Daten erforderlich. Schließlich werden in 490 die VMSS-Daten (die sich nunmehr im architektonisch definierten Datenformat befinden) zum VMM zurückgegeben.
  • 5 ist ein Ablaufdiagramm eines Verfahrens 500 zur Ausführung eines VMSS-Schreib-Befehls gemäß einer Ausführungsform der vorliegenden Erfindung. In 505 erhält ein Prozessor eine VMSS-Schreibaufforderung (write request) von einem VMM. Der Prozessor ermittelt als einen der Operanden der Schreibaufforderung den Komponenten-Kennzeichner, wie in 510 dargestellt ist. Darüber hinaus ermittelt der Prozessor in 515 als einen weiteren Operanden die Schreibdaten, die in die VMSS geschrieben werden sollen. Diesen Schreibdaten lie gen in einem architektonisch definierten Datenformat für die geschriebene VMSS-Komponente vor.
  • In 520 wird eine Überprüfung durchgeführt, um zu bestimmen, ob die VMSS-Komponente in einem architektonisch definierten Datenformat vom Prozessor gespeichert wird (im VMSS-Bereich oder in prozessorinternen Ressourcen). Dementsprechend wird, falls die VMSS-Komponente nicht im architektonisch definierten Datenformat gespeichert ist, in 520 die geeignete Umformatierung der Daten ausgeführt, so daß die Daten im geeigneten für die Implementierung spezifischen Datenformat vorliegen, das der VMSS-Komponente, auf die zugegriffen wird, zugeordnet ist. Das Format, in dem die Daten gespeichert werden, kann identisch zum architektonisch definierten Format sein oder sich davon bezüglich der Größe oder der Organisation unterscheiden.
  • Als nächstes wird in 530 eine weitere Überprüfung durchgeführt, um den Ort zu bestimmen, an dem die VMSS-Komponente vom Prozessor gespeichert wird. Unter Verwendung des Komponenten-Kennzeichners bestimmt der Prozessor, wo sich der Speicher für die VMSS-Komponente befindet. Falls sich der Speicherort im Speicher befindet, wird in 535 die Speicheradresse berechnet und werden in 540 die Schreibdaten an den Speicherort geschrieben. Falls sich jedoch der Speicherort nicht im Speicher befindet, wird in 545 der richtige Ort im prozessorinternen Speicher bestimmt und werden die Schreibdaten in den prozessorinternen Speicher geschrieben. Die in den Speicher geschriebenen Daten liegen im für die Implementierung spezifischen Datenformat vor, bei dem es sich abhängig von der fraglichen VMSS-Komponente, der Prozessorimplementierung und bei einigen Ausführungsformen abhängig davon, ob die fragliche Komponente momentan in prozessorinternen Ressourcen oder im VMSS-Bereich gespeichert ist, um dasselbe oder ein anderes als das architektonisch definierte Format handeln kann.
  • Der in den Prozessen 400 und 500 verwendete Mechanismus zur Bestimmung des Speicherortes für eine bestimmte VMSS-Komponente und zur Bestimmung, ob die VMSS-Komponente im architektonisch definierten Datenformat vom Prozessor gespeichert wurde, sind für die Implementierung spezifisch. Bei einer Ausführungsform wird vom Prozessor eine Lookup-Tabelle verwendet, die mittels des Komponenten-Kennzeichners indiziert ist. Zusätzlich ist zu beachten, daß, falls mehrere VMSS-Zeiger gleichzeitig aktiv sind, diese Bestimmungen davon abhängen können, auf welche VMSS zugegriffen wird.
  • Der Fachmann wird nach dem Lesen und Begreifen dieser Offenbarung verstehen, wie die Erfindung in einem auf einem Computer basierenden System implementiert werden kann, um die hier offenbarten Verfahren durchzuführen. Die Erfindung kann unter Verwendung von Software (wie sie auf einem allgemein verwendbaren Computersystem oder einer zweckbestimmten Maschine verwendet wird), Hardware (Schaltungsanordnungen, zweckbestimmter Logik, programmierbarer Logik, Mikrocode, etc.) oder einer Kombination aus Hardware und Software implementiert sein.
  • Es ist zu beachten, daß die oben angegebene Beschreibung der Veranschaulichung dient und nicht als Beschränkung anzusehen ist. Dem Fachmann ergeben sich bei der Durchsicht der oben angegebenen Beschreibung viele andere Ausführungsformen. Der Umfang der erfindungsgemäßen Ausführungsformen sollte daher unter Bezugnahme auf die beigefügten Ansprüche zusammen mit dem gesamten Umfang der Äquivalente, der durch diese Ansprüche berechtigt ist, bestimmt werden.
  • Es wird betont, daß die Zusammenfassung den 37 C.F.R. § 1.72(b) erfüllt, der eine Zusammenfassung erfordert, die es dem Leser ermöglicht, rasch die Natur und das Wesentliche der technischen Offenbarung bestimmen zu können. Sie sollte jedoch nicht zur Auslegung oder Beschränkung des Umfangs oder der Bedeutung der Ansprüche verwendet werden.
  • Bei der vorhergehenden Beschreibung der Ausführungsformen sind verschiedene Merkmale in einer einzelnen Ausführungsform zur Rationalisierung der Offenbarung gruppiert. Diese Art der Offenbarung sollte nicht dahingehend interpretiert werden, daß dadurch beabsichtigt wird, daß die beanspruchten Ausführungsformen der Erfindung mehr Merkmale erfordern als im jeweiligen Anspruch ausdrücklich genannt sind. Vielmehr liegt der Gegenstand der Erfindung, wie durch die folgenden Ansprüche wiedergegeben wird, in weniger als allen Merkmalen einer einzelnen offenbarten Ausführungsform. Somit werden die folgenden Ansprüche hiermit in die Beschreibung der Ausführungsformen miteinbezogen, wobei jeder Anspruch für sich als eine getrennte beispielhafte Ausführungsform anzusehen ist.

Claims (16)

  1. Prozessor aus einer Familie von zwei Prozessortypen a) die sich im Daten-Layout einer Virtuelle-Maschine-Steuerungsstruktur in einem Speicher (116) unterscheiden und b) den Zugriff auf Daten einer Virtuelle-Maschine-Steuerungsstruktur durch einen Virtuelle-Maschine-Steuerungsstruktur-Zugriffsbefehl (119) unterstützen, wobei c) bei einem Transfer der Kontrolle von einer Gastsoftware auf einen virtuellen Maschinen Monitor Komponenten des Prozessorstatus, die von der Gastsoftware verwendet werden, in der Virtuelle-Maschine-Steuerungsstruktur gespeichert werden, d) der Virtuelle-Maschine-Steuerungsstruktur-Zugriffsbefehl (119) einen Virtuelle-Maschine-Steuerungsstruktur-Komponenten-Kennzeichner umfasst, der vom Prozessor verwendet wird, um eine Komponente der Virtuelle-Maschine-Steuerungsstruktur, auf die der Virtuelle-Maschine-Steuerungsstruktur-Zugriffsbefehl (119) zugreift, zu bestimmen und um die Speicheradresse der Komponente zu berechnen und e) ein Virtuelle-Maschine-Steuerungsstruktur-Speicher-Zeiger-Befehl einen Zeiger auf den aktiven Virtuelle-Maschine-Steuerungsstruktur Bereich speichert.
  2. Kontrollsystem für eine virtuelle Maschine (130, 140, 150), umfassend: einen Virtuelle-Maschine-Monitor (120), der zumindest eine virtuelle Maschine durch Zugreifen auf zumindest eine Virtuelle-Maschine-Steuerungsstruktur (118) zur Steuerung der Ausführungsumgebung der virtuellen Maschine auf einem Computer mit einem Prozessor steuert, wobei die virtuelle Maschine durch eine Virtuelle-Maschine-Steuerungsstruktur (118) gesteuert wird; einen Prozessor (112) nach Anspruch 1 mit Zugriff auf einen Speicher (116), wobei der Speicher der Virtuelle-Maschine-Steuerungsstruktur (118) zugeordnete Speicherorte umfaßt; und wobei der Virtuelle-Maschine-Monitor (120) vom Prozessor bereitgestellte Virtuelle-Maschine-Steuerungsstruktur-Zugriffsbefehle (119) für einen Zugriff auf jede der Virtuelle-Maschine-Steuerungsstrukturen (118) verwendet.
  3. System nach Anspruch 2, wobei der Speicher (116) zumindest einen von einem Speicher (118) und einem Cache (114) umfaßt.
  4. Verfahren zur Unterstützung des Zugriffs auf Daten einer Virtuelle-Maschine-Steuerungsstruktur durch einen Virtuelle-Maschine-Steuerungsstruktur-Zugriffsbefehl (119) durch einen Prozessor aus einer Familie von zwei Prozessortypen, die sich im Daten-Layout der Virtuelle-Maschine-Steuerungsstruktur in einem Speicher (116) unterscheiden, umfassend die Schritte: a) Speichern von Komponenten des Prozessorstatus, die von einer Gastsoftware verwendet werden, in der Virtuelle-Maschine-Steuerungsstruktur bei einem Transfer der Kontrolle von der Gast-Software auf einen Virtuellen-Maschinen-Monitor, b) Verwenden eines Virtuelle-Maschine-Steuerungsstruktur-Komponenten-Kennzeichners, der vom Virtuelle-Maschine-Steuerungsstruktur-Zugriffsbefehl (119) umfasst ist, durch den Prozessor, um eine Komponente der Virtuelle-Maschine-Steuerungsstruktur, auf die der Virtuelle-Maschine-Steuerungsstruktur-Zugriffsbefehl (119) zugreift, zu bestimmen und um die Speicheradresse der Komponente zu berechnen, und c) Speichern eines Zeigers auf den aktiven Virtuelle-Maschine-Steuerungsstruktur-Bereich (119) durch einen Virtuelle-Maschine-Steuerungsstruktur-Speicher-Zeiger-Befehl.
  5. Verfahren nach Anspruch 4, wobei beim Zugreifen auf die Komponente der Virtuelle-Maschine-Steuerungsstruktur-Komponenten-Kennzeichner zumindest einer von einem expliziten Operanden für den Virtuelle-Maschine-Steuerungsstruktur-Zugriffsbefehl (119) und einem impliziten Operanden für den Virtuelle-Maschine-Steuerungsstruktur-Zugriffsbefehl (119) ist.
  6. Verfahren nach Anspruch 5, wobei beim Ausführen des Virtuelle-Maschine-Steuerungsstruktur–Zugriffsbefehls (119) der Virtuelle-Maschine-Steuerungsstruktur-Zugriffsbefehl (119) zumindest einer von einem Lesebefehl von der Komponente und einem Schreibbefehl zur Komponente ist.
  7. Verfahren nach Anspruch 6, wobei beim Ausführen des Virtuelle-Maschine-Steuerungsstruktur-Zugriffsbefehls (119) der Virtuelle-Maschine-Steuerungsstruktur-Zugriffsbefehl (119) ein Schreibbefehl zur Komponente ist und der Virtuelle-Maschine-Steuerungsstruktur-Zugriffsbefehl (119) einen Schreibdatenwert als einen Operanden umfaßt.
  8. Verfahren nach Anspruch 7, wobei beim Ausführen des Virtuelle-Maschine-Steuerungsstruktur-Zugriffsbefehls (119) der Schreibdatenwert in einem architektonisch definierten Datenformat vorliegt.
  9. Verfahren nach Anspruch 8, das des weiteren ein Schreiben des Schreibdatenwerts zur Komponente umfaßt.
  10. Verfahren nach Anspruch 4, das des weiteren umfaßt: Bestimmen, daß der Virtuelle-Maschine-Steuerungsstruktur-Komponenten-Kennzeichner der Komponente zugeordnet ist, die sich im Speicher (116) befindet; Berechnen eines Speicherorts für die Komponente, die sich im Speicher (116) befindet; und Zugreifen auf die Komponente, die sich im Speicher (116) befindet.
  11. Verfahren nach Anspruch 4, das des weiteren umfaßt: Bestimmen, daß der Virtuelle-Maschine-Steuerungsstruktur-Komponenten-Kennzeichner der Virtuelle-Maschine-Steuerungsstruktur-Komponente zugeordnet ist, die sich in einem prozessorinternen Speicher (114) befindet; und Zugreifen auf die Virtuelle-Maschine-Steuerungsstruktur-Komponente, die sich im prozessorinternen Speicher (114) befindet.
  12. Verfahren nach Anspruch 4, wobei beim Ausführen des Virtuelle-Maschine-Steuerungsstruktur-Zugriffsbefehls der Virtuelle-Maschine-Steuerungsstruktur- Zugriffsbefehl (119) ein Lesebefehl von der Virtuelle-Maschine-Steuerungsstruktur-Komponente ist und das Zugreifen auf die Virtuelle-Maschine-Steuerungsstruktur-Komponente des weiteren ein Lesen von der Virtuelle-Maschine-Steuerungsstruktur-Komponente zugeordneten Daten und Zurückgeben der der Virtuelle-Maschine-Steuerungsstruktur-Komponente zugeordneten Daten zum Virtuelle-Maschine-Monitor (120) umfaßt.
  13. Verfahren nach Anspruch 12, wobei beim Zurückgeben der der Virtuelle-Maschine-Steuerungsstruktur-Komponente zugeordneten Daten zum Virtuelle-Maschine-Monitor (120) das Zurückgeben der Daten ein Umformatieren der der Virtuelle-Maschine-Steuerungsstruktur-Komponente zugeordneten Daten, so daß diese einem architektonisch definierten Datenformat für die Virtuelle-Maschine-Steuerungsstruktur-Komponente entsprechen, ein Produzieren eines Rückgabedatenwerts und ein Zurückgeben des Rückgabedatenwerts an den Virtuelle-Maschine-Monitor (120) umfaßt.
  14. Verfahren nach Anspruch 12, wobei beim Zurückgeben der der Virtuelle-Maschine-Steuerungsstruktur-Komponente zugeordneten Daten zum Virtuelle-Maschine-Monitor (120) die Daten in einem Format vorliegen, das zumindest eines von einem selben Format wie ein architektonisch definiertes Datenformat für die Virtuelle-Maschine-Steuerungsstruktur-Komponente und einem sich vom architektonisch definierten Datenformat für die Virtuelle-Maschine-Steuerungsstruktur-Komponente unterscheidenden Format ist.
  15. Verfahren nach Anspruch 14, das des weiteren umfaßt: Umformatieren der Schreibdaten, so daß sie einem für die Implementierung spezifischen Datenformat für die Virtuelle-Maschine-Steuerungsstruktur-Komponente entsprechen, woraus ein umformatierter Schreibdatenwert resultiert; und Schreiben des umformatierten Schreibdatenwerts zur Virtuelle-Maschine-Steuerungsstruktur-Komponente.
  16. Verfahren nach Anspruch 15, wobei beim Umformatieren der Schreibdaten das für die Implementierung spezifische Datenformat für die Virtuelle-Maschine-Steuerungsstruktur-Komponente zumindest eines von demselben Format wie das architektonisch definierte Format für die Virtuelle-Maschine-Steuerungsstruktur-Komponente und einem sich vom architektonisch-definierten Format für die Virtuelle-Maschine-Steuerungsstruktur-Komponente unterscheidenden Format ist.
DE10393920T 2002-12-17 2003-11-12 Verfahren und Systeme zur Steuerung virtueller Maschinen Expired - Lifetime DE10393920B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/322,003 2002-12-17
US10/322,003 US7318141B2 (en) 2002-12-17 2002-12-17 Methods and systems to control virtual machines
PCT/US2003/036306 WO2004061645A2 (en) 2002-12-17 2003-11-12 Methods and systems to control virtual machines

Publications (2)

Publication Number Publication Date
DE10393920T5 DE10393920T5 (de) 2005-12-29
DE10393920B4 true DE10393920B4 (de) 2009-02-19

Family

ID=32507184

Family Applications (1)

Application Number Title Priority Date Filing Date
DE10393920T Expired - Lifetime DE10393920B4 (de) 2002-12-17 2003-11-12 Verfahren und Systeme zur Steuerung virtueller Maschinen

Country Status (8)

Country Link
US (1) US7318141B2 (de)
JP (2) JP2006516769A (de)
KR (1) KR100847613B1 (de)
CN (1) CN100504789C (de)
AU (1) AU2003290857A1 (de)
DE (1) DE10393920B4 (de)
TW (1) TWI273493B (de)
WO (1) WO2004061645A2 (de)

Families Citing this family (89)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6976162B1 (en) 2000-06-28 2005-12-13 Intel Corporation Platform and method for establishing provable identities while maintaining privacy
US6907600B2 (en) * 2000-12-27 2005-06-14 Intel Corporation Virtual translation lookaside buffer
US7035963B2 (en) * 2000-12-27 2006-04-25 Intel Corporation Method for resolving address space conflicts between a virtual machine monitor and a guest operating system
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
US7024555B2 (en) 2001-11-01 2006-04-04 Intel Corporation Apparatus and method for unilaterally loading a secure operating system within a multiprocessor environment
US7631196B2 (en) 2002-02-25 2009-12-08 Intel Corporation Method and apparatus for loading a trustable operating system
US7069442B2 (en) * 2002-03-29 2006-06-27 Intel Corporation System and method for execution of a secured environment initialization instruction
US7127548B2 (en) * 2002-04-16 2006-10-24 Intel Corporation Control register access virtualization performance improvement in the virtual-machine architecture
US20030229794A1 (en) * 2002-06-07 2003-12-11 Sutton James A. System and method for protection against untrusted system management code by redirecting a system management interrupt and creating a virtual machine container
US7142674B2 (en) * 2002-06-18 2006-11-28 Intel Corporation Method of confirming a secure key exchange
US7124327B2 (en) * 2002-06-29 2006-10-17 Intel Corporation Control over faults occurring during the operation of guest software in the virtual-machine architecture
US6996748B2 (en) * 2002-06-29 2006-02-07 Intel Corporation Handling faults associated with operation of guest software in the virtual-machine architecture
US20040117532A1 (en) * 2002-12-11 2004-06-17 Bennett Steven M. Mechanism for controlling external interrupts in a virtual machine system
US7073042B2 (en) * 2002-12-12 2006-07-04 Intel Corporation Reclaiming existing fields in address translation data structures to extend control over memory accesses
US7318141B2 (en) * 2002-12-17 2008-01-08 Intel Corporation Methods and systems to control virtual machines
US7900017B2 (en) 2002-12-27 2011-03-01 Intel Corporation Mechanism for remapping post virtual machine memory pages
US8079034B2 (en) 2003-09-15 2011-12-13 Intel Corporation Optimizing processor-managed resources based on the behavior of a virtual machine monitor
US7424709B2 (en) * 2003-09-15 2008-09-09 Intel Corporation Use of multiple virtual machine monitors to handle privileged events
US7739521B2 (en) * 2003-09-18 2010-06-15 Intel Corporation Method of obscuring cryptographic computations
US7610611B2 (en) * 2003-09-19 2009-10-27 Moran Douglas R Prioritized address decoder
US7237051B2 (en) * 2003-09-30 2007-06-26 Intel Corporation Mechanism to control hardware interrupt acknowledgement in a virtual machine system
US20050108534A1 (en) * 2003-11-19 2005-05-19 Bajikar Sundeep M. Providing services to an open platform implementing subscriber identity module (SIM) capabilities
US8156343B2 (en) * 2003-11-26 2012-04-10 Intel Corporation Accessing private data about the state of a data processing machine from storage that is publicly accessible
US8037314B2 (en) 2003-12-22 2011-10-11 Intel Corporation Replacing blinded authentication authority
US20050133582A1 (en) * 2003-12-22 2005-06-23 Bajikar Sundeep M. Method and apparatus for providing a trusted time stamp in an open platform
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
US20050216920A1 (en) * 2004-03-24 2005-09-29 Vijay Tewari Use of a virtual machine to emulate a hardware device
US7356735B2 (en) * 2004-03-30 2008-04-08 Intel Corporation Providing support for single stepping a virtual machine in a virtual machine environment
US7620949B2 (en) 2004-03-31 2009-11-17 Intel Corporation Method and apparatus for facilitating recognition of an open event window during operation of guest software in a virtual machine environment
US20050288056A1 (en) * 2004-06-29 2005-12-29 Bajikar Sundeep M System including a wireless wide area network (WWAN) module with an external identity module reader and approach for certifying the WWAN module
US7607011B1 (en) * 2004-07-16 2009-10-20 Rockwell Collins, Inc. System and method for multi-level security on a network
US7840962B2 (en) * 2004-09-30 2010-11-23 Intel Corporation System and method for controlling switching between VMM and VM using enabling value of VMM timer indicator and VMM timer value having a specified time
US8146078B2 (en) 2004-10-29 2012-03-27 Intel Corporation Timer offsetting mechanism in a virtual machine environment
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
KR100638476B1 (ko) * 2004-12-22 2006-10-26 삼성전자주식회사 버추얼 플랫폼 기반의 시스템 온 칩 개발 환경 및 개발 방법
US8533777B2 (en) 2004-12-29 2013-09-10 Intel Corporation Mechanism to determine trust of out-of-band management agents
US7886126B2 (en) * 2005-01-14 2011-02-08 Intel Corporation Extended paging tables to map guest physical memory addresses from virtual memory page tables to host physical memory addresses in a virtual machine system
US7395405B2 (en) 2005-01-28 2008-07-01 Intel Corporation Method and apparatus for supporting address translation in a virtual machine environment
US20070006178A1 (en) * 2005-05-12 2007-01-04 Microsoft Corporation Function-level just-in-time translation engine with multiple pass optimization
US7496495B2 (en) * 2005-05-12 2009-02-24 Microsoft Corporation Virtual operating system device communication relying on memory access violations
US9785485B2 (en) 2005-07-27 2017-10-10 Intel Corporation Virtualization event processing in a layered virtualization architecture
US9176741B2 (en) 2005-08-29 2015-11-03 Invention Science Fund I, Llc Method and apparatus for segmented sequential storage
US7644258B2 (en) 2005-08-29 2010-01-05 Searete, Llc Hybrid branch predictor using component predictors each having confidence and override signals
US8275976B2 (en) 2005-08-29 2012-09-25 The Invention Science Fund I, Llc Hierarchical instruction scheduler facilitating instruction replay
US8296550B2 (en) 2005-08-29 2012-10-23 The Invention Science Fund I, Llc Hierarchical register file with operand capture ports
US20070083735A1 (en) 2005-08-29 2007-04-12 Glew Andrew F Hierarchical processor
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
CN101154130B (zh) * 2006-09-30 2012-07-04 联想(北京)有限公司 一种虚拟机系统及其电源管理方法
US8185893B2 (en) * 2006-10-27 2012-05-22 Hewlett-Packard Development Company, L.P. Starting up at least one virtual machine in a physical machine by a load balancer
US8296760B2 (en) * 2006-10-27 2012-10-23 Hewlett-Packard Development Company, L.P. Migrating a virtual machine from a first physical machine in response to receiving a command to lower a power mode of the first physical machine
US9092250B1 (en) * 2006-10-27 2015-07-28 Hewlett-Packard Development Company, L.P. Selecting one of plural layouts of virtual machines on physical machines
US8732699B1 (en) 2006-10-27 2014-05-20 Hewlett-Packard Development Company, L.P. Migrating virtual machines between physical machines in a define group
JP4780327B2 (ja) * 2006-12-01 2011-09-28 日本電気株式会社 パーティション・コンテキスト制御装置及び方法、並びにコンピュータ
CN101206582B (zh) * 2006-12-22 2010-10-06 联想(北京)有限公司 一种虚拟机系统及其处理方法
US20080235000A1 (en) * 2007-03-22 2008-09-25 Searete Llc, A Limited Liability Corporation Of The State Of Delaware Implementing security control practice omission decisions from service emulation indications
US9558019B2 (en) 2007-03-22 2017-01-31 Invention Science Fund I, Llc Coordinating instances of a thread or other service in emulation
US7984483B2 (en) 2007-04-25 2011-07-19 Acxess, Inc. System and method for working in a virtualized computing environment through secure access
WO2009058042A1 (en) * 2007-10-29 2009-05-07 Intel Corporation A method of external performance monitoring for virtualized environments
US8341626B1 (en) 2007-11-30 2012-12-25 Hewlett-Packard Development Company, L. P. Migration of a virtual machine in response to regional environment effects
CN101470668B (zh) * 2007-12-24 2011-01-26 联想(北京)有限公司 一种计算机及计算机上配置高速缓存控制策略的方法
US8719936B2 (en) * 2008-02-01 2014-05-06 Northeastern University VMM-based intrusion detection system
US8904383B2 (en) * 2008-04-10 2014-12-02 Hewlett-Packard Development Company, L.P. Virtual machine migration according to environmental data
CN102077170A (zh) * 2008-06-27 2011-05-25 Nxp股份有限公司 元语言程序代码执行的中断方法
WO2010023052A2 (en) 2008-08-26 2010-03-04 International Business Machines Corporation A method, apparatus and computer program for provisioning a storage volume to a virtual server
US20100115509A1 (en) * 2008-10-31 2010-05-06 International Business Machines Corporation Power optimization via virtualization opportunity
US20100175108A1 (en) * 2009-01-02 2010-07-08 Andre Protas Method and system for securing virtual machines by restricting access in connection with a vulnerability audit
KR101571880B1 (ko) * 2009-02-02 2015-11-25 삼성전자 주식회사 전자장치와 가상머신 제공장치 및 이를 이용한 가상머신 서비스 이용 방법
JP4961459B2 (ja) * 2009-06-26 2012-06-27 株式会社日立製作所 仮想計算機システムおよび仮想計算機システムにおける制御方法
US8479196B2 (en) * 2009-09-22 2013-07-02 International Business Machines Corporation Nested virtualization performance in a computer system
CN101876954B (zh) * 2009-12-23 2012-08-15 中国科学院计算技术研究所 一种虚拟机控制系统及其工作方法
US9003104B2 (en) 2011-02-15 2015-04-07 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for a file-level cache
US8874823B2 (en) 2011-02-15 2014-10-28 Intellectual Property Holdings 2 Llc Systems and methods for managing data input/output operations
US9201677B2 (en) * 2011-05-23 2015-12-01 Intelligent Intellectual Property Holdings 2 Llc Managing data input/output operations
WO2013019185A1 (en) 2011-07-29 2013-02-07 Hewlett-Packard Development Company, L.P. Migrating virtual machines
CN104025074A (zh) * 2011-12-30 2014-09-03 英特尔公司 作为中间件的平台无关isa仿真器
US10359972B2 (en) 2012-08-31 2019-07-23 Sandisk Technologies Llc Systems, methods, and interfaces for adaptive persistence
US9116812B2 (en) 2012-01-27 2015-08-25 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for a de-duplication cache
US10339056B2 (en) 2012-07-03 2019-07-02 Sandisk Technologies Llc Systems, methods and apparatus for cache transfers
CN103036975B (zh) * 2012-12-13 2016-03-09 深信服网络科技(深圳)有限公司 虚拟机控制方法及装置
US9189411B2 (en) 2012-12-28 2015-11-17 Intel Corporation Logging in secure enclaves
US9223602B2 (en) * 2012-12-28 2015-12-29 Intel Corporation Processors, methods, and systems to enforce blacklisted paging structure indication values
US9842053B2 (en) 2013-03-15 2017-12-12 Sandisk Technologies Llc Systems and methods for persistent cache logging
US9772867B2 (en) * 2014-03-27 2017-09-26 International Business Machines Corporation Control area for managing multiple threads in a computer
US9389897B1 (en) 2014-12-18 2016-07-12 International Business Machines Corporation Exiting multiple threads of a simulation environment in a computer
US20210026950A1 (en) * 2016-03-07 2021-01-28 Crowdstrike, Inc. Hypervisor-based redirection of system calls and interrupt-based task offloading
CN106293873B (zh) * 2016-07-29 2019-11-05 北京北信源软件股份有限公司 一种准确获取虚拟机控制块(vmcs)中关键数据位置的方法
US10311057B2 (en) * 2016-08-08 2019-06-04 International Business Machines Corporation Attribute value information for a data extent
CN107341115B (zh) * 2017-06-30 2021-07-16 联想(北京)有限公司 虚拟机内存访问方法、系统和电子设备

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6397242B1 (en) * 1998-05-15 2002-05-28 Vmware, Inc. Virtualization system including a virtual machine monitor for a computer with a segmented architecture

Family Cites Families (108)

* 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 仮想計算機システム制御装置
US4674038A (en) * 1984-12-28 1987-06-16 International Business Machines Corporation Recovery of guest virtual machines after failure of a host real machine
JPH0833851B2 (ja) * 1986-03-15 1996-03-29 株式会社日立製作所 仮想計算機のモニタリング方式
US4916608A (en) * 1986-05-30 1990-04-10 International Business Machines Corporation Provision of virtual storage resources to an operating system control program
JPH01263836A (ja) * 1988-04-15 1989-10-20 Nec Corp 仮想計算機システムの情報移送方式
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
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
US5230069A (en) * 1990-10-02 1993-07-20 International Business Machines Corporation Apparatus and method for providing private and shared access to host address and data spaces by guest programs in a virtual machine computer system
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
JPH04348434A (ja) 1991-05-27 1992-12-03 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
US5293424A (en) 1992-10-14 1994-03-08 Bull Hn Information Systems Inc. Secure memory card
JP2765411B2 (ja) 1992-11-30 1998-06-18 株式会社日立製作所 仮想計算機方式
EP0600112A1 (de) 1992-11-30 1994-06-08 Siemens Nixdorf Informationssysteme Aktiengesellschaft Datenverarbeitungsanlage mit virtueller Speicheradressierung und schlüsselgesteuertem Speicherzugriff
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 マイクロコンピュータ
JPH07129419A (ja) * 1993-11-08 1995-05-19 Nec Corp 仮想計算機システム
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
US5621912A (en) * 1994-12-29 1997-04-15 International Business Machines Corporation Method and apparatus for enabling monitoring of guests and native operating systems
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エレクトロニクス株式会社 フラッシュメモリ内蔵マイクロコンピュータ及びそのテスト方法
US6205467B1 (en) * 1995-11-14 2001-03-20 Advanced Micro Devices, Inc. Microprocessor having a context save unit for saving context independent from interrupt requests
JP2000503154A (ja) 1996-01-11 2000-03-14 エムアールジェイ インコーポレイテッド デジタル所有権のアクセスと分配を制御するためのシステム
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
IL117085A (en) 1996-02-08 2005-07-25 Milsys Ltd Secure 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
US6175925B1 (en) 1996-06-13 2001-01-16 Intel Corporation Tamper resistant player for scrambled contents
US6205550B1 (en) 1996-06-13 2001-03-20 Intel Corporation Tamper resistant methods and apparatus
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
US6148401A (en) 1997-02-05 2000-11-14 At&T Corp. System and method for providing assurance to a host that a piece of software possesses a particular property
US5953502A (en) 1997-02-13 1999-09-14 Helbig, Sr.; Walter A Method and apparatus for enhancing computer system security
EP0970411B1 (de) 1997-03-27 2002-05-15 BRITISH TELECOMMUNICATIONS public limited company Datenkopierschutz
US6802062B1 (en) * 1997-04-01 2004-10-05 Hitachi, Ltd. System with virtual machine movable between virtual machine systems and control method
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)
US6188995B1 (en) 1997-07-28 2001-02-13 Apple Computer, Inc. Method and apparatus for enforcing software licenses
DE19735948C1 (de) 1997-08-19 1998-10-01 Siemens Nixdorf Inf Syst Verfahren zur Verbesserung der Steuerungsmöglichkeit in Datenverarbeitungsanlagen mit Adreßübersetzung
US6128641A (en) * 1997-09-12 2000-10-03 Siemens Aktiengesellschaft Data processing unit with hardware assisted context switching capability
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
US6134602A (en) * 1997-09-24 2000-10-17 Microsoft Corporation Application programming interface enabling application programs to group code and data to control allocation of physical memory in a virtual memory system
US6085296A (en) 1997-11-12 2000-07-04 Digital Equipment Corporation Sharing memory pages and page tables among computer processes
US6219787B1 (en) 1997-12-22 2001-04-17 Texas Instruments Incorporated Method and apparatus for extending security model to native code
US6192455B1 (en) 1998-03-30 2001-02-20 Intel Corporation Apparatus and method for preventing access to SMRAM space through AGP addressing
US6339826B2 (en) 1998-05-05 2002-01-15 International Business Machines Corp. Client-server system for maintaining a user desktop consistent with server application user access permissions
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
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
JP2000076139A (ja) 1998-08-28 2000-03-14 Nippon Telegr & Teleph Corp <Ntt> 携帯型情報記憶媒体
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
US6732220B2 (en) * 1999-02-17 2004-05-04 Elbrus International Method for emulating hardware features of a foreign architecture in a host operating system environment
WO2000062232A1 (en) 1999-04-12 2000-10-19 Digital Media On Demand, Inc. (Dmod, Inc.) Secure electronic commerce system
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
GB9923804D0 (en) 1999-10-08 1999-12-08 Hewlett Packard Co Electronic commerce system
GB9923802D0 (en) 1999-10-08 1999-12-08 Hewlett Packard Co User authentication
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
EP1269425A2 (de) 2000-02-25 2003-01-02 Identix Incorporated Sicheres transaktionssystem
AU2001243365A1 (en) 2000-03-02 2001-09-12 Alarity Corporation System and method for process protection
CA2341931C (en) 2000-03-24 2006-05-30 Contentguard Holdings, Inc. System and method for protection of digital works
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
US6507904B1 (en) 2000-03-31 2003-01-14 Intel Corporation Executing isolated mode instructions in a secure system running in privilege rings
US6760815B1 (en) * 2000-06-02 2004-07-06 Sun Microsystems, Inc. Caching mechanism for a virtual heap
JP2002041305A (ja) * 2000-07-26 2002-02-08 Hitachi Ltd 仮想計算機システムにおける計算機資源の割当て方法および仮想計算機システム
US20020062452A1 (en) 2000-08-18 2002-05-23 Warwick Ford Countering credentials copying
US7272831B2 (en) * 2001-03-30 2007-09-18 Intel Corporation Method and apparatus for constructing host processor soft devices independent of the host processor operating system
JP2004537095A (ja) 2001-04-24 2004-12-09 ヒューレット・パッカード・カンパニー 情報セキュリティシステム
US7318141B2 (en) * 2002-12-17 2008-01-08 Intel Corporation Methods and systems to control virtual machines

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6397242B1 (en) * 1998-05-15 2002-05-28 Vmware, Inc. Virtualization system including a virtual machine monitor for a computer with a segmented architecture

Also Published As

Publication number Publication date
WO2004061645A2 (en) 2004-07-22
US20040117539A1 (en) 2004-06-17
AU2003290857A8 (en) 2004-07-29
JP2009054169A (ja) 2009-03-12
US7318141B2 (en) 2008-01-08
KR100847613B1 (ko) 2008-07-21
DE10393920T5 (de) 2005-12-29
WO2004061645A3 (en) 2006-03-30
AU2003290857A1 (en) 2004-07-29
CN1833225A (zh) 2006-09-13
JP2006516769A (ja) 2006-07-06
TW200416604A (en) 2004-09-01
CN100504789C (zh) 2009-06-24
KR20050085699A (ko) 2005-08-29
TWI273493B (en) 2007-02-11
JP4981006B2 (ja) 2012-07-18

Similar Documents

Publication Publication Date Title
DE10393920B4 (de) Verfahren und Systeme zur Steuerung virtueller Maschinen
DE102006061939B4 (de) Verfahren und Vorrichtung zum Zugriff auf eine speicherabgebildete Vorrichtung durch einen Gast
DE69723286T2 (de) Echtzeitprogramm-sprachbeschleuniger
DE10357804B4 (de) Neu-Beanspruchung vorhandener Felder in Adressübersetzungsdatenstrukturen zum Erweitern der Kontrolle über Speicherzugriffe
DE10393679B4 (de) Prozessor, der einen Übergang zwischen einem virtuellen Maschinen Betriebsmodus (VM) und einem virtuellen Maschinen Monitor Betriebsmodus (VMM) unterstützt
DE102007063960B3 (de) Synchronisieren eines Übersetzungspufers (TLB) mit einer erweiterten Seitenwechseltabelle
DE69534867T2 (de) Verfahren und System zur Lieferung geschützter Gerätetreiber
DE112010003554B4 (de) Symmetrische Direktmigration von Virtuellen Maschinen
DE112005002298B4 (de) Leistungssteigerung einer Adreßübersetzung unter Verwendung von Übersetzungstabellen, die große Adreßräume umfassen
DE102007062744B4 (de) Guest-Host-Adressübersetzung für den Zugriff von Geräten auf einen Speicher in einem partitionierten System
DE112005003098B4 (de) Verfahren und Vorrichtung zum Zugreifen auf einen physikalischen Speicher von einer CPU oder einem Prozessorelement mit hoher Leistung
DE102007025397B4 (de) System mit mehreren Prozessoren und Verfahren zu seinem Betrieb
DE69811474T2 (de) Rechnerarchitektur zur aufschiebung von exceptions statischer spekulativer befehle
DE112006000807B4 (de) Verwaltung von Sequenzer-Adressen
DE112010005821T5 (de) Kontextwechsel
DE112017001027B4 (de) Seitenfehlerbehebung
DE112004000464T5 (de) Ungültigmachen von Speichereinträgen, Löschen von Pufferspeicher-Einträgen
EP2807558B1 (de) Speichercontroller zur bereitstellung mehrerer definierter bereiche eines massenspeichermediums als unabhängige massenspeicher an einen master-betriebssystem-kern zur exklusiven bereitstellung an virutelle maschinen
DE60210434T2 (de) Betriebssystemselektor und Datenplattenspeicher
DE102010035603A1 (de) Bereitstellen von Hardwareunterstützung für gemeinsam benutzten virtuellen Speicher zwischen physischem Lokal- und Fernspeicher
DE112005002304T5 (de) Adreßumsetzung für Eingabe/Ausgabe- Vorrichtungen mittels hierarchischer Umsetzungstabellen
DE2517276A1 (de) Datenverarbeitungssystem
DE102009050983A1 (de) Eine Technik, um Interrupts in einem Computersystem zu kommunizieren
DE112016004297T5 (de) Technologien für mehrstufige virtualisierung
DE69839113T2 (de) Direkte Vectoremulation eines geerbten Befehlssatzes

Legal Events

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

Ref document number: 10393920

Country of ref document: DE

Date of ref document: 20051229

Kind code of ref document: P

8364 No opposition during term of opposition
R071 Expiry of right