DE112004001652B4 - Vektorieren eines Interrupt oder einer Ausnahme bei Wiederaufnahme des Betriebes einer virtuellen Maschine - Google Patents

Vektorieren eines Interrupt oder einer Ausnahme bei Wiederaufnahme des Betriebes einer virtuellen Maschine Download PDF

Info

Publication number
DE112004001652B4
DE112004001652B4 DE112004001652.5T DE112004001652T DE112004001652B4 DE 112004001652 B4 DE112004001652 B4 DE 112004001652B4 DE 112004001652 T DE112004001652 T DE 112004001652T DE 112004001652 B4 DE112004001652 B4 DE 112004001652B4
Authority
DE
Germany
Prior art keywords
error
vmm
virtual machine
vmcs
processor
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.)
Active
Application number
DE112004001652.5T
Other languages
English (en)
Other versions
DE112004001652T5 (de
Inventor
Stephen Bennett
Andrew Anderson
Stalinselvaraj Jeyasingh
Alain Kagi
Gilbert Neiger
Richard Uhlig
Michael Kozuch
Lawrence Smith
Scott Rodgers
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 DE112004001652T5 publication Critical patent/DE112004001652T5/de
Application granted granted Critical
Publication of DE112004001652B4 publication Critical patent/DE112004001652B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors

Abstract

Bei einer Ausführungsform wird eine Anforderung für einen Übergang der Steuerung an eine virtuelle Maschine (VM) von einem Monitor einer virtuellen Maschine (VMM) erhalten, und es wird festgestellt, ob der VMM die Übermittlung eines Fehlers an die VM angefordert hat. Wenn die Feststellung positiv ist, so wird der Fehler an die VM übermittelt, wenn die Steuerung an die VM übergeht.

Description

  • Technisches Gebiet
  • Ausführungsformen der Erfindung betreffen allgemein virtuelle Maschinen und insbesondere die Handhabung von Fehlern in der Umgebung einer virtuellen Maschine.
  • Allgemeiner Stand der Technik
  • Ein herkömmlicher Monitor einer virtuellen Maschine (Virtual Machine Monitor – VMM) läuft in der Regel auf einem Computer und stellt für andere Software die Abstraktion einer oder mehrerer virtueller Maschinen dar. Jede virtuelle Maschine kann als eine eigenständige Plattform fungieren und ihr eigenes ”Gastbetriebssystem” (d. h. ein Betriebssystem (BS), dessen Host der VMM ist) und andere Software ablaufen lassen, die kollektiv als Gast-Software bezeichnet wird. Die Gast-Software erwartet, so zuarbeiten, als liefe sie nicht in einer virtuellen Maschine, sondern auf einem eigenen Computer. Das heißt, die Gast-Software erwartet, verschiedene Ereignisse zu steuern und auf Hardware-Ressourcen zugreifen zu können. Zu den Hardware-Ressourcen können auf dem Prozessor befindliche Ressourcen (beispielsweise Steuerregister), Ressourcen, die sich in einem Speicher befinden (beispielsweise Deskriptortabellen), und Ressourcen, die sich auf einer zugrundeliegenden Hardware-Plattform befinden (beispielsweise Eingabe-Ausgabe-Geräte), gehören. Zu den Ereignissen können interne Interrupts, externe Interrupts, Ausnahmen, Plattformereignisse (beispielsweise Initialisierungsinterrupts (INIT) oder Systemverwaltungsinterrupts (SMIs)) und dergleichen gehören.
  • In der Umgebung einer virtuellen Maschine sollte der VMM die letztendliche Kontrolle über die Ereignisse und Hardware-Ressourcen, die im vorangegangenen Absatz beschrieben wurden, haben, um für einen korrekten Betrieb der Gast-Software, die in den virtuellen Maschinen läuft, und für den Schutz vor und für Gast-Software, die auf den virtuellen Maschinen läuft, zu sorgen. Um dies zu erreichen, erhält der VMM in der Regel die Kontrolle, wenn Gast-Software auf eine geschützte Ressource zugreift oder wenn sonstige Ereignisse (wie beispielsweise Interrupts oder Ausnahmen) eintreten. Wenn beispielsweise eine Operation in einer virtuellen Maschine, die von dem VMM unterstützt wird, eine Systemvorrichtung veranlaßt, einen Interrupt zu erzeugen, so wird die momentan laufende virtuelle Maschine unterbrochen, und die Kontrolle über den Prozessor geht an den VMM über. Der VMM erhält dann den Interrupt und handhabt den Interrupt selbst oder aktiviert eine entsprechende virtuelle Maschine und übergibt den Interrupt an diese virtuelle Maschine.
  • WO 02/052404 A offenbart einen für Gast-Software vorgesehenen Prozessor. Der Prozessor ermöglicht es der Gast-Software auf einer priviligierten Ebene zu arbeiten, die von der Gast-Software gewünscht ist. Wenn die Gast-Software versucht, eine durch den Prozessormodus beschränkte Operation auszuführen, wird der Prozessormodus verlassen, um die Steuerung der Operation auf einen virtuellen Maschinenmonitor zu übertragen, der außerhalb dieses Prozessormodus läuft.
  • Der Artikel ”VM/4: ACOS-4 virtual machine architecture von S. Nanba et al. in. ACM SIGRAPH Computer Architecture News, vol. 13, iss. 3 (Juni 1985), S. 171–178 offenbart eine Architektur einer virtuellen Maschine mit einem Dispatcher zum Dispatchen einer virtuellen Maschine und einem Steuerungsprogramm, das entsprechend einer erfassten Ausnahme eine Nachricht verfasst und ein Ausnahme-Flag einem Steuerungsblock eines virtuellen Prozessors setzt. Sobald der virtuelle Prozessor die Steuerung eines realen Prozessors erhält, beginnt der virtuelle Prozessor mit der Verarbeitung der Ausnahme durch Prüfen des Ausnahme-Flags und unter Einbeziehung der Nachricht.
  • Es ist die Aufgabe der vorliegenden Erfindung, ein Verfahren zur Unterstützung eines Prozessors bei der Handhabung von Fehlern in der Umgebung einer virtuellen Maschine mit einer Rechenplattform, die einen Monitor einer virtuellen Maschine und eine oder mehrere virtuelle Maschinen repräsentierende Gast-Software ausführt, bereitzustellen, mit dem einem Eintreten von zusätzlichen Fehlern entgegengewirkt werden kann, sowie eine entsprechende Vorrichtung.
  • Die Erfindung ist definiert durch ein Verfahren mit den Merkmalen gemäß Anspruch 1 sowie eine Vorrichtung mit den Merkmalen gemäß Anspruch 7.
  • Kurze Beschreibung der Zeichnungen
  • Die Erfindung kann am besten unter Bezug auf die folgende Beschreibung und die begleitenden Zeichnungen verstanden werden, die der Veranschaulichung der Ausführungsformen der Erfindung dienen.
  • 1 veranschaulicht eine Ausführungsform einer Umgebung einer virtuellen Maschine, in der einige Ausführungsformen der vorliegenden Erfindung arbeiten können.
  • 2 ist ein Flußdiagramm einer Ausführungsform eines Prozesses zur Handhabung von Fehlern in einer Umgebung einer virtuellen Maschine.
  • 3 veranschaulicht ein beispielhaftes Format eines VMCS-Feldes, das Fehleridentifizierungsinformationen speichert.
  • 4 ist ein Flußdiagramm einer Ausführungsform eines Prozesses zur Handhabung eines Fehlers in der Umgebung einer virtuellen Maschine unter Verwendung von Fehlerinformationen, die von einem VMM kommen.
  • Beschreibung von Ausführungsformen
  • Es werden ein Verfahren und eine Vorrichtung zur Handhabung eines Fehlers in der Umgebung einer virtuellen Maschine unter Verwendung von Fehlerinformationen, die von einem VMM kommen, beschrieben. In der folgenden Beschreibung werden zum Zweck der Erläuterung zahlreiche konkrete Details dargelegt. Dem Fachmann ist jedoch klar, daß Ausführungsformen der Erfindung auch ohne diese konkreten Details praktiziert werden können.
  • Einige Abschnitte der folgenden detaillierten Beschreibungen sind anhand von Algorithmen und symbolischen Darstellungen von Operationen an Datenbits innerhalb der Register oder Speicher eines Computersystems. Diese algorithmischen Beschreibungen und Darstellungen sind die vom Datenverarbeitungsfachmann verwendeten Mittel, um anderen Fachleuten das Wesentliche ihrer Arbeit auf die effektivste Weise zu übermitteln. Unter einem Algorithmus versteht man hier – und allgemein – eine in sich schlüssige Abfolge von Operationen, die zu einem gewünschten Ergebnis führt. Die Operationen sind jene, die physikalische Manipulationen von physikalischen Quantitäten erfordern. Gewöhnlich – wenn auch nicht notwendigerweise – haben diese Quantitäten die Form von elektrischen oder magnetischen Signalen, die gespeichert, übertragen, kombiniert, verglichen und anderweitig gehandhabt werden können. Es hat sich mitunter als zweckmäßig erwiesen, vor allem aus Gründen des allgemein verbreiteten Gebrauchs, diese Signale als Bits, Werte, Elemente, Symbole, Zeichen, Terme, Zahlen oder dergleichen zu bezeichnen.
  • Man sollte jedoch bedenken, daß alle diese und ähnliche Begriffe den entsprechenden physikalischen Quantitäten zuzuordnen sind und lediglich zweckmäßige Etiketten sind, die diesen Quantitäten aufgeklebt werden. Sofern nicht ausdrücklich etwas anderes angegeben ist, wie den folgenden Besprechungen zu entnehmen ist, versteht es sich, daß Besprechungen, die Begriffe wie beispielsweise ”Verarbeitung” oder ”Berechnen” oder ”Errechnen” oder ”Feststellen” oder dergleichen verwenden, sich auf die Aktionen und Prozesse eines Computersystems oder einer ähnlichen elektronischen Rechenvorrichtung beziehen können, die Daten, welche als physikalische (elektronische) Quantitäten innerhalb der Register und Speicher des Computersystems dargestellt sind, in andere Daten, die in ähnlicher Weise als physikalische Quantitäten innerhalb der Speicher und Register des Computersystems oder sonstiger derartiger Informationsspeicher-, -übertragungs- oder -anzeigevorrichtungen dargestellt sind, handhabt und umwandelt.
  • In der folgenden detaillierten Beschreibung der Ausführungsformen wird auf die begleitenden Zeichnungen Bezug genommen. In den Zeichnungen bezeichnen gleiche Zahlen in den verschiedenen Ansichten im wesentlichen gleiche Komponenten. Es können andere Ausführungsformen verwendet und strukturelle, logische und elektrische Änderungen vorgenommen werden, ohne den Geltungsbereich der vorliegenden Erfindung zu verlassen. Des Weiteren versteht es sich, daß die verschiedenen Ausführungsformen der Erfindung zwar voneinander verschieden sind, sich aber nicht unbedingt gegenseitig ausschließen. Beispielsweise kann ein bestimmtes Merkmal, eine bestimmte Struktur oder ein bestimmtes Charakteristikum, das bei einer Ausführungsform beschrieben wird, auch in anderen Ausführungsformen enthalten sein.
  • Obgleich die folgenden Beispiele Ausführungsformen der vorliegenden Erfindung im Kontext von Ausführungseinheiten und Logikschaltungen beschreiben können, können auch andere Ausführungsformen der vorliegenden Erfindung mittels Software realisiert werden. Beispielsweise kann in einigen Ausführungsformen die vorliegende Erfindung als ein Computerprogrammprodukt oder eine Software bereitgestellt sein, die eine maschinen- oder computerlesbares Speichermedium enthält, auf dem Anweisungen gespeichert sind, die dafür verwendet werden können, einen Computer (oder sonstige elektronische Vorrichtungen) darauf zu programmieren, einen Prozeß gemäß der vorliegenden Erfindung auszuführen. In anderen Ausführungsformen könnten Schritte der vorliegenden Erfindung durch spezifische Hardware-Komponenten ausgeführt werden, die eine festverdrahtete Logik zum Ausführen der Schritte enthalten, oder durch eine beliebige Kombination aus programmierten Computerkomponenten und speziellen Hardware-Komponenten.
  • So kann ein maschinenlesbares Speichermedium einen beliebigen Mechanismus zum Speichern oder Übertragen von Informationen in einer Form enthalten, die von einer Maschine (beispielsweise einem Computer) gelesen werden kann, en (beispielsweise einer Computer), einschließlich beispielsweise Disketten, optische Disks, Compact-Disk-Nurlesespeicher (CD-ROMs) und magnetooptische Disks, Nurlesespeicher (ROMs), Direktzugriffsspeicher (RAM), löschbare programmierbare Nurlesespeicher (EPROM), elektrisch löschbare programmierbare Nurlesespeicher (EEPROM), magnetische oder optische Karten, Flash-Speicher, eine Übertragung über das Internet, elektrische, optische, akustische oder anderen Formen von ausgebreiteten Signalen (beispielsweise Trägerwellen, Infrarotsignale, digitale Signale usw.) oder dergleichen.
  • Des Weiteren kann ein Design mehrere Stufen durchlaufen – vom Entwurf über die Simulation bis hin zur Fertigung. Daten, die ein Design darstellen, können das Design auf verschiedene Weisen darstellen. Als erstes – wie es für Simulationen nützlich ist – kann die Hardware mittels einer Hardwarebeschreibungssprache oder einer anderen Funktionsbeschreibungssprache dargestellt werden. Außerdem kann ein Schaltkreisebenenmodell mit Logik- und/oder Transistorgattern auf einigen Stufen des Designprozesses erstellt werden. Des Weiteren erreichen die meisten Designs auf irgend einer Stufe eine Datenebene, welche die physikalische Anordnung von verschiedenen Vorrichtungen in dem Hardwaremodell darstellt. In dem Fall, wo herkömmliche Halbleiterfertigungstechniken eingesetzt werden, können Daten, die ein Hardwaremodell darstellen, die Daten sein, die das Vorhandensein oder Fehlen verschiedener Merkmale auf unterschiedlichen Maskenschichten für Masken, die zur Herstellung des integrierten Schaltkreises verwendet werden, spezifizieren. In jeder beliebigen Darstellung des Designs können die Daten in einer beliebigen Form eines maschinenlesbaren Speichermediums gespeichert sein. Eine optische oder elektrische Welle, die moduliert oder anderweitig erzeugt wurde, um derartige Informationen zu übertragen, ein Speicher oder ein magnetisches oder optisches Datenlager wie beispielsweise eine Disk kann das maschinenlesbare Speichermedium sein. Jedes dieser Speichermedien kann die Design- oder Software-Informationen ”tragen” oder ”anzeigen”. Wenn eine elektrische Trägerwelle, die den Code oder das Design anzeigt oder trägt, so übertragen wird, daß ein Kopieren, Puffern oder eine Neuübertragung des elektrischen Signals stattfindet, wird eine Kopie erstellt. Somit kann ein Kommunikationsanbieter oder ein Netzwerkanbieter Kopien eines Artikels (einer Trägerwelle) anfertigen, in dem Techniken der vorliegenden Erfindung verkörpert sind.
  • 1 veranschaulicht die Umgebung 100 einer virtuellen Maschine, in der einige Ausführungsformen der vorliegenden Erfindung arbeiten können. In der Umgebung 100 einer virtuellen Maschine umfaßt die reine Plattformhardware 110 eine Rechenplattform, die beispielsweise in der Lage sein kann, ein standardmäßiges Betriebssystem (BS) und/oder einen Monitor einer virtuellen Maschine (VMM), wie beispielsweise einen VMM 112, auszuführen. Obgleich der VMM 112 in der Regel in Software implementiert ist, kann er eine reine Maschinenschnittstelle emulieren und in eine Software einer höheren Ebene exportieren. Solche Software einer höheren Ebene kann ein standardmäßiges oder Echtzeit-BS umfassen, kann eine stark verschlankte Betriebsumgebung mit begrenzter Betriebssystemfunktionalität sein oder braucht gar keine traditionellen BS-Einrichtungen zu enthalten. Alternativ kann beispielsweise der VMM 112 innerhalb oder auf einem anderen VMM laufen. VMMs und ihre typischen Merkmale und Funktionen sind dem Fachmann allgemein bekannt und können beispielsweise in Software, Firmware, Hardware oder mittels einer Kombination verschiedener Techniken implementiert sein.
  • Die Plattform-Hardware 110 enthält einen Prozessor 118 und einen Speicher 120. Der Prozessor 118 kann von einem beliebigen Typ sein, der in der Lage ist, Software auszuführen, wie beispielsweise ein Mikroprozessor, ein digitaler Signalprozessor, ein Mikro-Controller oder dergleichen. Obgleich in 1 nur ein einziger Prozessor 118 gezeigt ist, kann die Plattform-Hardware 110 einen oder mehrere solcher Prozessoren enthalten.
  • Der Speicher 120 kann von einem beliebigen Typ eines beschreibbaren/nicht-beschreibbaren Speichermediums (beispielsweise ein Direktzugriffsspeicher (RAM), ein Nurlesespeicher (ROM), ein magnetisches Diskspeichermedium, ein optisches Speichermedium, ein Flash-Speicherbaustein usw.) sowie eine elektrische, optische, akustische oder andere Form von ausgebreiteten Signalen (beispielsweise Trägerwellen, Infrarotsignale, digitale Signale usw.), eine beliebige Kombination der obigen Mittel oder irgend ein sonstiger Typ eines Maschinenspeichermediums sein, das von dem Prozessor 118 gelesen werden kann. Der Speicher 120 kann Anweisungen zur Vornahme der Ausführung von Verfahrensausführungsformen der vorliegenden Erfindung speichern.
  • Die Plattform-Hardware 110 kann von einem Personalcomputer (PC), einem Großrechner, einem handgehaltenen Gerät, einem tragbaren Computer, einer Settopbox oder einem sonstigen Rechensystem gebildet werden.
  • Der VMM 112 stellt für andere Software (d. h. ”Gast”-Software) die Abstraktion einer oder mehrerer virtueller Maschinen (VMs) dar, welche die gleiche Abstraktion oder andere Abstraktionen für die verschiedenen ”Gäste” darstellen können. 1 zeigt drei VMs, 130, 140 und 150. Die Gast-Software, die auf jeder VM läuft, kann ein Gast-BS enthalten, wie beispielsweise ein Gast-BS 154, 160 oder 170, und verschiedene Gast-Software-Anwendungen 152, 162 und 172.
  • Die Gast-BS 154, 160 und 170 erwarten, auf physikalischen Ressourcen (beispielsweise Prozessorregister, Speicher und Eingabe-Ausgabe(E/A)-Vorrichtungen) innerhalb entsprechender VMs (beispielsweise VM 130, 140 und 150), auf denen die Gast-BS laufen, zuzugreifen und sonstige Funktionen auszuführen. Beispielsweise erwartet die Gast-BS, Zugriff auf sämtliche Register, Caches, Strukturen, E/A-Geräte, Speicher und dergleichen je nach der Architektur des Prozessors und der Plattform, die in der VM dargestellt sind, zu haben. Die Ressourcen, auf die die Gast-Software zugreifen kann, kann als ”bevorrechtigt” oder ”nicht-bevorrechtigt” klassifiziert werden. Für bevorrechtigte Ressourcen ermöglicht der VMM 112 Funktionen, die von Gast-Software gewünscht wird, während er gleichzeitig die letztendliche Kontrolle über diese bevorrechtigten Ressourcen behält. Nicht-bevorrechtigte Ressourcen brauchen nicht unter der Kontrolle des VMM 112 zu stehen und sind der Gast-Software frei zugänglich.
  • Des Weiteren erwartet jede Gast-BS, verschiedene Fehlerereignisse zu handhaben, wie beispielsweise Ausnahmen (beispielsweise Seitenfehler, allgemeine Schutzfehler usw.), Interrupts (beispielsweise Hardware-Interrupts, Software-Interrupts) und Plattformereignisse (beispielsweise Initialisierungsinterrupts (INIT) und Systemverwaltungsinterrupts (SMIs)). Einige dieser Fehlerereignisse sind ”bevorrechtigt”, weil sie von dem VMM 112 gehandhabt werden müssen, um den ordnungsgemäßen Betrieb der VMs 130 bis 150 und den Schutz vor und für Gast-Software zu gewährleisten.
  • Wenn es zu einem bevorrechtigten Fehlerereignis kommt oder Gast-Software versucht, auf eine bevorrechtigte Ressource zuzugreifen, so kann die Kontrolle an den VMM 112 übertragen werden. Die Übertragung der Kontrolle von einer Gast-Software an den VMM 112 wird im vorliegenden Text als ein VM-Ausstieg bezeichnet. Nachdem er den Zugriff auf die Ressource ermöglicht hat oder das Ereignis entsprechend gehandhabt hat, kann der VMM 112 die Kontrolle an die GastSoftware zurückgeben. Die Übertragung der Kontrolle von dem VMM 112 an Gast-Software wird als ein VM-Einstieg bezeichnet. Bei einer Ausführungsform fordert der VMM 112 den Prozessor 118 auf, durch Ausführen einer VM-Einstiegsanweisung einen VM-Einstieg durchzuführen.
  • Bei einer Ausführungsform steuert der Prozessor 118 den Betrieb der VMs 130, 140 und 150 gemäß Daten, die in einer Steuerungsstruktur einer virtuellen Maschine (Virtual Machine Control Structure – VMCS) 126 gespeichert. Die VMCS 126 ist eine Struktur, die den Zustand von Gast-Software, den Zustand des VMM 112, Ausführungssteuerungsinformationen, die anzeigen, wie der VMM 112 den Betrieb von Gast-Software zu steuern wünscht, Informationen, welche die Übergänge zwischen dem VMM 112 und einer VM steuern, usw. enthalten. Bei einer Ausführungsform ist die VMCS im Speicher 120 gespeichert. Bei einigen Ausführungsformen werden mehrere VMCS-Strukturen verwendet, um mehrere VMs zu unterstützen.
  • Wenn ein bevorrechtigtes Fehlerereignis eintritt, so kann der VMM 112 den Fehler selbst handhaben, oder er kann entscheiden, daß der Fehler durch eine entsprechende VM gehandhabt werden muß. Wenn der VMM 112 entscheidet, daß der Fehler durch eine VM gehandhabt werden soll, so fordert der VMM 112 den Prozessor 118 auf, diese VM aufzurufen und den Fehler an diese VM zu übergeben. Bei einer Ausführungsform bewerkstelligt der VMM 112 dies durch Setzen eines Fehlerindikators auf einen Übergabewert und Erzeugen einer VM-Einstiegsanforderung. Bei einer Ausführungsform ist der Fehlerindikator in der VMCS 126 gespeichert.
  • Erfindungsgemäß enthält der Prozessor 118 eine Fehlerübergabelogik 124, welche die Anforderung der VMM 112 für einen VM-Einstieg erhält und feststellt, ob der VMM 122 die Übergabe eines Fehler an die VM angefordert hat. Die Fehlerübergabelogik 124 nimmt diese Feststellung anhand des momentanen Wertes des in der VMCS 126 gespeicherten Fehlerindikators vor. Wenn die Fehlerübergabelogik 124 feststellt, daß der VMM die Übergabe des Fehlers an die VM angefordert hat, so übergibt sie den Fehler an die VM, wenn die Kontrolle an diese VM übergeht.
  • Bei einer Ausführungsform beinhaltet die Übergabe des Fehlers die Suche nach einer Umleitungsstruktur für einen Eintrag, der dem übergebenen Fehler zugeordnet ist; das Extrahieren eines Deskriptors des Speicherortes einer Routine, die dafür vorgesehen ist, diesen Fehler zu handhaben, aus diesem Eintrag; und das Springen an den Anfang der Routine unter Verwendung des Deskriptors. Routinen, die dafür vorgesehen sind, entsprechende Interrupts, Ausnahmen oder sonstige Fehler zu handhaben, werden als ”Verarbeiter” bezeichnet. Bei einigen Anweisungssatzarchitekturen (ISAs) werden einigen Fehlern Fehlercodes zugeordnet, die möglicherweise auf den Stapel geschoben werden müssen (oder in einem Hardware-Register oder über sonstige Mittel bereitgestellt werden müssen), bevor an den Anfang des Verarbeiters gesprungen wird.
  • Während der Übergabe eines Fehlers kann der Prozessor 118 eine oder mehrere Adressübersetzungen ausführen, wobei eine Adresse aus einer virtuellen in eine physikalische Form umgewandelt wird. Beispielsweise kann die Adresse der Interrupttabelle oder die Adresse des zugehörigen Verarbeiters eine virtuelle Adresse sein. Der Prozessor muß möglicherweise auch verschiedene Überprüfungen während der Übergabe eines Fehlers ausführen. Beispielsweise kann der Prozessor Übereinstimmungsüberprüfungen wie beispielsweise die Validierung von Segmentierungsregistern und Zugriffsadressen (was zu Grenzverletzungsfehlern, ”Segment-nicht-vorhanden”-Fehlern, Stapelfehlern usw. führen kann), Erlaubnisebenenüberprüfungen, die zu Schutzfehlern (beispielsweise allgemeinen Schutzfehlern) führen können, usw. ausführen.
  • Adreßübersetzungen und Überprüfungen während der Fehlervektorierung können zu einer Vielfalt von Fehlern führen, wie beispielsweise Seitenfehlern, allgemeinen Schutzfehlern usw. Einige Fehler, zu denen es während der Übergabe eines momentanen Fehlers kommt, können einen VM-Ausstieg verursachen. Wenn beispielsweise der VMM 112 VM-Ausstiege wegen Seitenfehlern anfordert, um den physikalischen Speicher zu schützen und zu virtualisieren, so führt ein Seitenfehler, zu dem es während der Übergabe eines momentanen Fehlers an die VM kommt, zu einem VM-Ausstieg.
  • Die Fehlerübergabelogik 124 wirkt dem oben angesprochenen möglichen Eintreten von zusätzlichen Fehlern entgegen, indem sie überprüft, ob die Übergabe des momentanen Fehlers erfolgreich war. Wenn die Fehlerübergabelogik 124 feststellt, daß die Übergabe nicht erfolgreich war, so stellt sie des Weiteren fest, ob ein resultierender zusätzlicher Fehler einen VM-Ausstieg verursacht. Wenn ja, so generiert die Fehlerübergabelogik 124 einen VM-Ausstieg. Wenn nicht, so übergibt die Fehlerübergabelogik 124 den zusätzlichen Fehler an die VM.
  • 2 ist ein Flußdiagramm eines Prozesses 200 zur Handhabung von Fehlern in einer Umgebung einer virtuellen Maschine. Der Prozeß kann durch eine Verarbeitungslogik ausgeführt werden, die Hardware (beispielsweise Schaltkreise, dedizierte Logik, programmierbare Logik, Mikrocode usw.), Software (wie beispielsweise jene, die auf einem Allzweckcomputersystem oder einer dedizierten Maschine läuft) oder eine Kombination aus beidem umfaßt. Erfindungsgemäß wird der Prozeß 200 durch die Fehlerübergabelogik 124 von 1 ausgeführt.
  • Wenden wir uns 2 zu, wo der Prozeß 200 damit beginnt, daß die Verarbeitungslogik eine Anforderung für den Übergang der Kontrolle an eine VM von einem VMM erhält (Verarbeitungsblock 202). Bei einer Ausführungsform wird die Anforderung für einen Übergang der Kontrolle über eine VM-Einstiegsanweisung erhalten, die von dem VMM ausgeführt wird.
  • Am Entscheidungskasten 204 stellt die Verarbeitungslogik fest, ob der VMM eine Übergabe eines Fehlers an die VM, die aufgerufen werden soll, angefordert hat. Ein Fehler kann ein interner Interrupt (beispielsweise ein Software-Interrupt), ein externer Interrupt (beispielsweise ein Hardware-Interrupt), eine Ausnahme (beispielsweise ein Seitenfehler), ein Plattformereignis (beispielsweise Initialisierungsinterrupts (INIT) oder Systemverwaltungsinterrupts (SMIs)) oder irgend ein sonstiges Fehlerereignis sein. Bei einer Ausführungsform stellt die Verarbeitungslogik fest, ob der VMM die Übergabe eines Fehlers angefordert hat, indem sie den momentanen Wert eines durch den VMM verwalteten Fehlerindikators liest Der Fehlerindikator kann sich in der VMCS oder in irgend eine sonstigen Datenstruktur befinden, auf die der VMM und die Verarbeitungslogik 200 zugreifen können. Wenn – bei einer Ausführungsform – der VMM einen Fehler an eine VM übergeben haben möchte, so setzt der VMM den Fehlerindikator auf den Übergabewert und erzeugt dann eine Anforderung für eine Übertragung der Kontrolle an diese VM. Wenn während eines VM-Einstiegs keine Fehlerübergabe benötigt wird, so setzt der VMM den Fehlerindikator auf einen Nicht-Übergabewert, bevor er die Übertragung der Kontrolle an die VM anfordert. Dies wird weiter unten unter Bezug auf 3 besprochen.
  • Wenn die Verarbeitungslogik feststellt, daß der VMM eine Übergabe eines Fehlers angefordert hat, so übergibt die Verarbeitungslogik den Fehler an die VM, während die Kontrolle an die VM übergeht (Verarbeitungsblock 206). Die Verarbeitungslogik überprüft dann, ob die Übergabe des Fehlers erfolgreich war (Entscheidungskasten 208). Wenn ja, so endet der Prozeß 200. Wenn nicht, so stellt die Verarbeitungslogik fest, ob ein resultierender zusätzlicher Fehler einen VM-Ausstieg verursacht (Entscheidungskasten 210). Wenn ja, so erzeugt die Verarbeitungslogik einen VM-Ausstieg (Verarbeitungsblock 212). Wenn nicht, so übergibt die Verarbeitungslogik den zusätzlichen Fehler an die VM (Verarbeitungsblock 214), und überprüft – unter Rückkehr zum Verarbeitungsblock 208 –, ob dieser zusätzliche Fehler erfolgreich übergeben wurde. Wenn ja, so endet der Prozeß 200. Wenn nicht, so kehrt die Verarbeitungslogik zum Entscheidungskasten 210 zurück.
  • Wenn die Verarbeitungslogik feststellt, daß der VMM keine Übergabe eines Fehlers angefordert hat, so überträgt die Verarbeitungslogik die Kontrolle an die VM, ohne fehlerbezogene Operationen auszuführen (Verarbeitungsblock 218).
  • Wenn bei einer Ausführungsform die Verarbeitungslogik einen Fehler an eine VM übergeben muß, so sucht sie eine Umleitungsstruktur (beispielsweise die Interrupt-Deskriptorentabelle in der Anweisungssatzarchitektur (ISA) des Intel® Pentium® 4 (im vorliegenden Text als die IA-32 ISA) bezeichnet) für einen Eintrag, der dem übergebenen Fehler zugeordnet ist, extrahiert aus diesem Eintrag einen Deskriptor eines Verarbeiters, der diesem Fehler zugeordnet ist, und springt unter Verwendung des Deskriptors an den Anfang des Verarbeiters. Die Interrupt-Deskriptorentabelle kann unter Verwendung von Fehleridentifizierungsinformationen, wie beispielsweise eines Fehleridentifikators und eines Fehlertyps (beispielsweise eines externes Interrupts, eines internen Interrupts, eines nicht-maskierbaren Interrupts (NMI), einer Ausnahme usw.) durchsucht werden. Bei einer Ausführungsform sind bestimmte Fehler (beispielsweise einige Ausnahmen) Fehlercodes zugeordnet, die auf den Stapel geschoben werden müssen (oder in einem Hardware-Register oder über sonstige Mittel bereitgestellt werden müssen), bevor an den Anfang des Verarbeiters gesprungen wird. Bei einer Ausführungsform werden die Fehleridentifizierungsinformationen und der zugehörige Fehlercode durch den VMM unter Verwendung einer bezeichneten Datenstruktur bereitgestellt. Bei einer Ausführungsform ist die bezeichnete Datenstruktur Teil der VMCS. 3 veranschaulicht ein beispielhaftes Format eines VMCS-Feldes, das Fehleridentifizierungsinformationen speichert. Dieses VMCS-Feld wird als ein Fehlerinformationsfeld bezeichnet.
  • Wenden wir uns 3 zu. Bei einer Ausführungsform ist das Fehlerinformationsfeld ein 32-Bit-Feld, in dem die ersten 8 Bits einen Identifikator eines Fehlers (beispielsweise eines Interrupts oder einer Ausnahme) speichern, die nächsten 2 Bits den Fehlertyp (beispielsweise externer Interrupt, Software-Interrupt, NMI, Ausnahme usw.) kennzeichnen, Bit 11 anzeigt, ob gegebenenfalls ein Fehlercode, der diesem Fehler zugeordnet ist, einem entsprechenden Verarbeiter zur Verfügung zu stellen ist (durch Schieben auf den Stapel, in einem Hardware-Register gespeichert usw.), und Bit 31 ein Fehlerindikator ist, der angibt, ob ein Fehler an auf eine VM zu übergeben ist, wie oben besprochen.
  • Wenn Bit 11 des Fehlerinformationsfeldes anzeigt, daß dem Verarbeiter ein Fehlercode zur Verfügung zu stellen ist, so wird auf ein zweites VMCS-Feld zugegriffen, um den Fehlercode zu erhalten, der diesem Fehler zugeordnet ist. Das zweite VMCS-Feld wird als ein Fehlercodefeld bezeichnet.
  • Wenn bei einer Ausführungsform der VMM einen Fehler an eine VM übergeben haben möchte, so speichert der VMM den Fehleridentifikator und den Fehlertyp in dem Fehlerinformationsfeld und setzt den Fehlerindikator (Bit 31) auf einen Übergabewert (beispielsweise Bit 31 = 1). Wenn der Fehler einem Fehlercode zugeordnet ist, der dem Verarbeiter zur Verfügung zu stellen ist, so setzt der VMM außerdem Bit 11 auf einen Übergabewert (beispielsweise Bit 11 = 1) und speichert den Fehlercodewert im Fehlercodefeld in der VMCS.
  • 4 ist ein Flußdiagramm eines Prozesses 400 zur Handhabung eines Fehlers in der Umgebung einer virtuellen Maschine unter Verwendung von Fehlerinformationen, die von einem VMM kommen. Der Prozeß kann durch eine Verarbeitungslogik ausgeführt werden, die Hardware (beispielsweise Schaltkreise, dedizierte Logik, programmierbare Logik, Mikrocode usw.), Software (wie beispielsweise jene, die auf einem Allzweckcomputersystem oder einer dedizierten Maschine läuft) oder eine Kombination aus beidem umfaßt. Der Prozeß 400 kann durch die Fehlerübergabelogik 124 von 1 ausgeführt werden.
  • Wenden wir uns 4 zu. Der Prozeß 400 beginnt damit, daß eine Verarbeitungslogik eine Ausführung einer VM-Einstiegsanweisung durch die VMM erkennt (Verarbeitungsblock 402). In Reaktion darauf greift die Verarbeitungslogik auf ein Fehlerindikatorbit zu, das durch den VMM kontrolliert wird (Verarbeitungsblock 403), und stellt fest, ob ein Fehler an die VM, die aufgerufen werden soll, zu übergeben ist (Entscheidungskasten 404). Wenn nicht, so ignoriert die Verarbeitungslogik übrigen Fehlerinformationen und führt den angeforderten VM-Einstieg aus (Verarbeitungsblock 406). Wenn ja, so erlangt die Verarbeitungslogik Fehlerinformationen aus einem Fehlerinformationsfeld in der VMCS (Verarbeitungsblock 408) und stellt fest, ob ein Fehlercode, der diesem Fehler zugeordnet ist, an den Verarbeiter des Fehlers zu übergeben ist (Entscheidungskasten 410). Wenn ja, so erlangt die Verarbeitungslogik den Fehlercode aus einem Fehlercodefeld in der VMCS (Verarbeitungsblock 412). Wenn nicht, so schreitet die Verarbeitungslogik direkt zum Verarbeitungsblock 414 voran.
  • Beim Verarbeitungsblock 414 übergibt die Verarbeitungslogik den Fehler an die VM, während der VM-Einstieg ausgeführt wird. Die Verarbeitungslogik überprüft dann, ob die Übergabe des Fehler erfolgreich war (Entscheidungskasten 416). Wenn ja, so endet der Prozeß 400. Wenn nicht, so stellt die Verarbeitungslogik fest, ob ein resultierender zusätzlicher Fehler einen VM-Ausstieg verursacht (Entscheidungskasten 418). Wenn ja, so generiert die Verarbeitungslogik einen VM-Ausstieg (Verarbeitungsblock 420). Wenn nicht, so übergibt Verarbeitungslogik den zusätzlichen Fehler an die VM (Verarbeitungsblock 422) und überprüft – unter Rückkehr zum Verarbeitungsblock 416 –, ob dieser zusätzliche Fehler erfolgreich übergeben wurde. Wenn ja, so endet der Prozeß 400. Wenn nicht, so kehrt die Verarbeitungslogik zum Entscheidungskasten 418 zurück.
  • Damit wurden nun ein Verfahren und eine Vorrichtung zur Handhabung von Fehlern in einer Umgebung einer virtuellen Maschine beschrieben. Es versteht sich, daß die obige Beschreibung veranschaulichen und nicht einschränken soll. Dem Fachmann werden beim Lesen und Verstehen der obigen Beschreibung viele weitere Ausführungsformen einfallen. Der Geltungsbereich der Erfindung ist somit anhand der begleitenden Ansprüche zusammen mit dem vollen Geltungsbereich von Äquivalenten, zu denen diese Ansprüche berechtigt sind, zu bestimmen.

Claims (9)

  1. Verfahren zur Unterstützung eines Prozessors bei der Handhabung von Fehlern in der Umgebung einer virtuellen Maschine (VM) mit einer Rechenplattform, die einen Monitor einer virtuellen Maschine (VMM) und eine oder mehrere virtuelle Maschinen (VM) repräsentierende Gast-Software ausführt, sowie einer vom VMM separaten Fehlerübergabelogik des Prozessors, wobei die Fehlerübergabelogik Folgendes ausführt: – Erhalten (202) einer Anforderung von dem VMM für den Übergang der Kontrolle an eine virtuelle Maschine (VM); – Zugreifen auf eine von dem VMM kontrollierte Steuerungsstruktur einer virtuellen Maschine (VMCS) zum Bestimmen eines momentanen Werts eines in der VMCS enthaltenen Fehlerindikators, wobei der momentane Wert des Fehlerindikators spezifiziert, ob der VMM eine Übergabe eines Fehlers an die VM angefordert hat; – wenn der VMM die Übergabe des Fehlers an die VM angefordert hat, Übergeben (206) des Fehlers an die VM, wenn die Kontrolle an die VM übergeht, wobei die Fehlerübergabelogik den Fehler an die VM unter Verwendung von Fehleridentifizierungsinformationen liefert, die durch den VMM in der VMCS in Verbindung mit dem Fehlerindikator gespeichert sind; – Feststellen (208), ob die Übergabe des Fehlers an die VM erfolgreich war, und – wenn die Übergabe des Fehlers an die VM nicht erfolgreich war, Feststellen (210), ob ein resultierender zusätzliche Fehler einen VM-Austritt verursacht, und – wenn der resultierende zusätzliche Fehler keinen VM-Austritt verursacht, Übergeben (214) des resultierenden zusätzlichen Fehlers an die VM und – wenn der resultierende zusätzliche Fehler einen VM-Austritt verursacht, Generieren (212) eines VM-Austritts.
  2. Verfahren nach Anspruch 1, wobei die Anforderung für einen Übergang der Kontrolle an die VM über eine Anweisung erhalten wird, die von dem VMM ausgeführt wird.
  3. Verfahren nach Anspruch 1, das des weiteren Folgendes umfasst: – Feststellen eines Identifikators des Fehlers und eines Fehlertyps anhand der Fehleridentifizierungsinformationen; und – Feststellen, ob der Fehler einem Fehlercode zugeordnet ist, der einem Verarbeiter, der dem Fehler zugeordnet ist, zur Verfügung zu stellen ist, auf der Grundlage eines Fehlercodeübergabeindikators, der durch den VMM in der VMCS in Verbindung mit den Fehleridentifizierungsinformationen gespeichert ist.
  4. Verfahren nach Anspruch 3, das des weiteren umfasst: – Abrufen des Fehlercodes aus der VMCS und Bereitstellen des Fehlercodes an den Verarbeiter, wenn der Fehler die Übergabe des Fehlercodes an den Verarbeiter, der dem Fehler zugeordnet ist, verlangt.
  5. Verfahren nach Anspruch 3, wobei: – der Fehlerindikator, der Fehleridentifikator, der Fehlertyp und der Fehlerübergabeindikator in einem ersten Feld in der VMCS gespeichert sind; und – der Fehlercode in einem zweiten Feld in der VMCS gespeichert ist.
  6. Verfahren nach Anspruch 5, wobei das erste Feld und das zweite Feld in der Steuerungsstruktur einer virtuellen Maschine (VMCS) enthalten sind.
  7. Vorrichtung zur Handhabung von Fehlern, die zur Durchführung des Verfahrens nach einem der Ansprüche 1 bis 6 geeignet ist und Folgendes umfasst: – einen Speicher (120) mit einer Datenstruktur, die durch einen VMM (112) kontrolliert wird, wobei die Datenstruktur einen Fehlerindikator und entsprechende Fehleridentifizerungsinformationen speichert; und – einen mit dem Speicher gekoppelten Prozessor (118), wobei der Prozessor (118) eine vom VMM (112) separate Fehlerübergabelogik (124) aufweist.
  8. Vorrichtung nach Anspruch 7, wobei: – der Fehlerindikator, der Fehleridentifikator, der Fehlertyp und der Fehlerübergabeindikator in einem ersten Feld in der Datenstruktur gespeichert sind; und – der Fehlercode in einem zweiten Feld in der Datenstruktur gespeichert ist.
  9. Vorrichtung nach Anspruch 8, wobei das erste Feld und das zweite Feld in einer Steuerungsstruktur, einer virtuellen Maschine (VMCS) enthalten sind.
DE112004001652.5T 2003-09-15 2004-09-15 Vektorieren eines Interrupt oder einer Ausnahme bei Wiederaufnahme des Betriebes einer virtuellen Maschine Active DE112004001652B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/663,205 2003-09-15
US10/663,205 US7287197B2 (en) 2003-09-15 2003-09-15 Vectoring an interrupt or exception upon resuming operation of a virtual machine
PCT/US2004/030387 WO2005029327A1 (en) 2003-09-15 2004-09-15 Vectoring an interrupt or exception upon resuming operation of a virtual machine

Publications (2)

Publication Number Publication Date
DE112004001652T5 DE112004001652T5 (de) 2006-06-22
DE112004001652B4 true DE112004001652B4 (de) 2015-03-12

Family

ID=34274309

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112004001652.5T Active DE112004001652B4 (de) 2003-09-15 2004-09-15 Vektorieren eines Interrupt oder einer Ausnahme bei Wiederaufnahme des Betriebes einer virtuellen Maschine

Country Status (6)

Country Link
US (1) US7287197B2 (de)
JP (1) JP2007506162A (de)
CN (1) CN100585562C (de)
DE (1) DE112004001652B4 (de)
GB (1) GB2420207B (de)
WO (1) WO2005029327A1 (de)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7222203B2 (en) * 2003-12-08 2007-05-22 Intel Corporation Interrupt redirection for virtual partitioning
US8127098B1 (en) * 2004-05-11 2012-02-28 Globalfoundries Inc. Virtualization of real mode execution
US7305592B2 (en) * 2004-06-30 2007-12-04 Intel Corporation Support for nested fault in a virtual machine environment
US20070074067A1 (en) * 2005-09-29 2007-03-29 Rothman Michael A Maintaining memory reliability
WO2007065307A2 (en) * 2005-12-10 2007-06-14 Intel Corporation Handling a device related operation in a virtualization environment
US7900204B2 (en) * 2005-12-30 2011-03-01 Bennett Steven M Interrupt processing in a layered virtualization architecture
US8286162B2 (en) 2005-12-30 2012-10-09 Intel Corporation Delivering interrupts directly to a virtual processor
US20080034193A1 (en) * 2006-08-04 2008-02-07 Day Michael N System and Method for Providing a Mediated External Exception Extension for a Microprocessor
US7533207B2 (en) * 2006-12-06 2009-05-12 Microsoft Corporation Optimized interrupt delivery in a virtualized environment
US8151264B2 (en) * 2007-06-29 2012-04-03 Intel Corporation Injecting virtualization events in a layered virtualization architecture
CN101383688B (zh) * 2007-09-06 2013-12-04 艾优克服务有限公司 数据通信装置及保持数据通信装置高可用性的方法
US7840839B2 (en) * 2007-11-06 2010-11-23 Vmware, Inc. Storage handling for fault tolerance in virtual machines
US8566492B2 (en) * 2009-12-31 2013-10-22 Intel Corporation Posting interrupts to virtual processors
US9262195B2 (en) * 2012-02-28 2016-02-16 Red Hat Israel, Ltd. Manageable external wake of virtual machines
KR101679947B1 (ko) 2012-06-06 2016-12-06 인텔 코포레이션 입력/출력 에러-억제 이벤트 후의 복구
CN102902599B (zh) * 2012-09-17 2016-08-24 华为技术有限公司 虚拟机内部故障处理方法、装置及系统
US9842015B2 (en) * 2013-09-27 2017-12-12 Intel Corporation Instruction and logic for machine checking communication
US9910699B2 (en) 2014-10-28 2018-03-06 Intel Corporation Virtual processor direct interrupt delivery mechanism
US11080088B2 (en) * 2018-12-19 2021-08-03 Intel Corporation Posted interrupt processing in virtual machine monitor

Family Cites Families (130)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3699532A (en) 1970-04-21 1972-10-17 Singer Co Multiprogramming control for a data handling system
US3996449A (en) 1975-08-25 1976-12-07 International Business Machines Corporation Operating system authenticator
US4162536A (en) * 1976-01-02 1979-07-24 Gould Inc., Modicon Div. Digital input/output system and method
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
US4276594A (en) * 1978-01-27 1981-06-30 Gould Inc. Modicon Division Digital computer with multi-processor capability utilizing intelligent composite memory and input/output modules and method for performing the same
US4207609A (en) 1978-05-08 1980-06-10 International Business Machines Corporation Method and means for path independent device reservation and reconnection in a multi-CPU and shared device access system
JPS5823570B2 (ja) 1978-11-30 1983-05-16 国産電機株式会社 液面検出装置
JPS5576447A (en) * 1978-12-01 1980-06-09 Fujitsu Ltd Address control system for software simulation
US4307447A (en) * 1979-06-19 1981-12-22 Gould Inc. Programmable controller
US4319323A (en) * 1980-04-04 1982-03-09 Digital Equipment Corporation Communications device for data processing system
US4419724A (en) 1980-04-14 1983-12-06 Sperry Corporation Main bus interface package
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
US4403283A (en) 1980-07-28 1983-09-06 Ncr Corporation Extended memory system and method
DE3034581A1 (de) 1980-09-13 1982-04-22 Robert Bosch Gmbh, 7000 Stuttgart Auslesesicherung bei einchip-mikroprozessoren
JPS58140862A (ja) 1982-02-16 1983-08-20 Toshiba Corp 相互排他方式
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 複合プロセツサ・システムのアクセス制御方式
US4759064A (en) * 1985-10-07 1988-07-19 Chaum David L Blind unanticipated signature systems
US4975836A (en) 1984-12-19 1990-12-04 Hitachi, Ltd. Virtual computer system
JPS61206057A (ja) 1985-03-11 1986-09-12 Hitachi Ltd アドレス変換装置
FR2592510B1 (fr) * 1985-12-31 1988-02-12 Bull Cp8 Procede et appareil pour certifier des services obtenus a l'aide d'un support portatif tel qu'une carte a memoire
FR2601525B1 (fr) * 1986-07-11 1988-10-21 Bull Cp8 Dispositif de securite interdisant le fonctionnement d'un ensemble electronique apres une premiere coupure de son alimentation electrique
FR2601535B1 (fr) * 1986-07-11 1988-10-21 Bull Cp8 Procede pour certifier l'authenticite d'une donnee echangee entre deux dispositifs connectes en local ou a distance par une ligne de transmission
FR2601476B1 (fr) * 1986-07-11 1988-10-21 Bull Cp8 Procede pour authentifier une donnee d'habilitation externe par un objet portatif tel qu'une carte a memoire
FR2618002B1 (fr) * 1987-07-10 1991-07-05 Schlumberger Ind Sa Procede et systeme d'authentification de cartes a memoire electronique
US5007082A (en) * 1988-08-03 1991-04-09 Kelly Services, Inc. Computer software encryption apparatus
US5079737A (en) * 1988-10-25 1992-01-07 United Technologies Corporation Memory management unit for the MIL-STD 1750 bus
US5434999A (en) * 1988-11-09 1995-07-18 Bull Cp8 Safeguarded remote loading of service programs by authorizing loading in protected memory zones in a terminal
FR2640798B1 (fr) * 1988-12-20 1993-01-08 Bull Cp8 Dispositif de traitement de donnees comportant une memoire non volatile electriquement effacable et reprogrammable
JPH02171934A (ja) 1988-12-26 1990-07-03 Hitachi Ltd 仮想計算機システム
JPH02208740A (ja) 1989-02-09 1990-08-20 Fujitsu Ltd 仮想計算機制御方式
US5442645A (en) * 1989-06-06 1995-08-15 Bull Cp8 Method for checking the integrity of a program or data, and apparatus for implementing this method
JP2590267B2 (ja) * 1989-06-30 1997-03-12 株式会社日立製作所 仮想計算機における表示制御方式
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
JP2825550B2 (ja) 1989-09-21 1998-11-18 株式会社日立製作所 多重仮想空間アドレス制御方法および計算機システム
CA2010591C (en) * 1989-10-20 1999-01-26 Phillip M. Adams Kernels, description tables and device drivers
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
US5108590A (en) * 1990-09-12 1992-04-28 Disanto Dennis Water dispenser
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
US5317705A (en) * 1990-10-24 1994-05-31 International Business Machines Corporation Apparatus and method for TLB purge reduction in a multi-level machine system
US5287363A (en) 1991-07-01 1994-02-15 Disk Technician Corporation System for locating and anticipating data storage media failures
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
US5453003A (en) * 1991-01-09 1995-09-26 Pfefferle; William C. Catalytic method
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
US5319760A (en) * 1991-06-28 1994-06-07 Digital Equipment Corporation Translation buffer for virtual machines with address space match
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
US5574936A (en) 1992-01-02 1996-11-12 Amdahl Corporation Access control mechanism controlling access to and logical purging of access register translation lookaside buffer (ALB) in a computer system
US5486529A (en) * 1992-04-16 1996-01-23 Zeneca Limited Certain pyridyl ketones for treating diseases involving leukocyte elastase
US5421006A (en) * 1992-05-07 1995-05-30 Compaq Computer Corp. Method and apparatus for assessing integrity of computer system software
US5237616A (en) 1992-09-21 1993-08-17 International Business Machines Corporation Secure computer system having privileged and unprivileged memories
US5293424A (en) * 1992-10-14 1994-03-08 Bull Hn Information Systems Inc. Secure memory card
US5796835A (en) * 1992-10-27 1998-08-18 Bull Cp8 Method and system for writing information in a data carrier making it possible to later certify the originality of this information
JP2765411B2 (ja) * 1992-11-30 1998-06-18 株式会社日立製作所 仮想計算機方式
US5668971A (en) 1992-12-01 1997-09-16 Compaq Computer Corporation Posted disk read operations performed by signalling a disk read complete to the system prior to completion of data transfer
JPH06187178A (ja) * 1992-12-18 1994-07-08 Hitachi Ltd 仮想計算機システムの入出力割込み制御方法
US5483656A (en) 1993-01-14 1996-01-09 Apple Computer, Inc. System for managing power consumption of devices coupled to a common bus
US5469557A (en) 1993-03-05 1995-11-21 Microchip Technology Incorporated Code protection in microcontroller with EEPROM fuses
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.
FR2704341B1 (fr) * 1993-04-22 1995-06-02 Bull Cp8 Dispositif de protection des clés d'une carte à puce.
JPH06348867A (ja) * 1993-06-04 1994-12-22 Hitachi Ltd マイクロコンピュータ
FR2706210B1 (fr) * 1993-06-08 1995-07-21 Bull Cp8 Procédé d'authentification d'un objet portatif par un terminal hors ligne, objet portatif et terminal correspondants.
US5555385A (en) 1993-10-27 1996-09-10 International Business Machines Corporation Allocation of address spaces within virtual machine compute system
US5825880A (en) 1994-01-13 1998-10-20 Sudia; Frank W. Multi-step digital signature method and system
US5459869A (en) * 1994-02-17 1995-10-17 Spilo; Michael L. Method for providing protected mode services for device drivers and other resident software
US5604805A (en) 1994-02-28 1997-02-18 Brands; Stefanus A. Privacy-protected transfer of electronic information
FR2717286B1 (fr) * 1994-03-09 1996-04-05 Bull Cp8 Procédé et dispositif pour authentifier un support de données destiné à permettre une transaction ou l'accès à un service ou à un lieu, et support correspondant.
US5684881A (en) * 1994-05-23 1997-11-04 Matsushita Electric Industrial Co., Ltd. Sound field and sound image control apparatus and method
US5539828A (en) * 1994-05-31 1996-07-23 Intel Corporation Apparatus and method for providing secured communications
US5473692A (en) * 1994-09-07 1995-12-05 Intel Corporation Roving software license for a hardware agent
US5978481A (en) * 1994-08-16 1999-11-02 Intel Corporation Modem compatible method and apparatus for encrypting data that is transparent to software applications
JPH0883211A (ja) 1994-09-12 1996-03-26 Mitsubishi Electric Corp データ処理装置
US6058478A (en) * 1994-09-30 2000-05-02 Intel Corporation Apparatus and method for a vetted field upgrade
FR2725537B1 (fr) * 1994-10-11 1996-11-22 Bull Cp8 Procede de chargement d'une zone memoire protegee d'un dispositif de traitement de l'information et dispositif associe
US5903752A (en) * 1994-10-13 1999-05-11 Intel Corporation Method and apparatus for embedding a real-time multi-tasking kernel in a non-real-time operating system
US5606617A (en) * 1994-10-14 1997-02-25 Brands; Stefanus A. Secret-key certificates
US5564040A (en) * 1994-11-08 1996-10-08 International Business Machines Corporation Method and apparatus for providing a server function in a logically partitioned hardware machine
US5560013A (en) 1994-12-06 1996-09-24 International Business Machines Corporation Method of using a target processor to execute programs of a source architecture that uses multiple address spaces
US5555414A (en) 1994-12-14 1996-09-10 International Business Machines Corporation Multiprocessing system including gating of host I/O and external enablement to guest enablement at polling intervals
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
FR2731536B1 (fr) * 1995-03-10 1997-04-18 Schlumberger Ind Sa Procede d'inscription securisee d'informations dans un support portable
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 インターナショナル・ビジネス・マシーンズ・コーポレーション 二つの別個の命令セット・アーキテクチャへの拡張をサポートすることができるアーキテクチャ・モード制御を備えたマイクロプロセッサ
US5684948A (en) 1995-09-01 1997-11-04 National Semiconductor Corporation Memory management circuit which provides simulated privilege levels
US5633929A (en) 1995-09-15 1997-05-27 Rsa Data Security, Inc Cryptographic key escrow system having reduced vulnerability to harvesting attacks
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エレクトロニクス株式会社 フラッシュメモリ内蔵マイクロコンピュータ及びそのテスト方法
IL116708A (en) * 1996-01-08 2000-12-06 Smart Link Ltd Real-time task manager for a personal computer
US5657445A (en) * 1996-01-26 1997-08-12 Dell Usa, L.P. Apparatus and method for limiting access to mass storage devices in a computer system
US5835594A (en) * 1996-02-09 1998-11-10 Intel Corporation Methods and apparatus for preventing unauthorized write access to a protected non-volatile storage
US5978892A (en) * 1996-05-03 1999-11-02 Digital Equipment Corporation Virtual memory allocation in a virtual address space having an inaccessible gap
US5809546A (en) 1996-05-23 1998-09-15 International Business Machines Corporation Method for managing I/O buffers in shared storage by structuring buffer table having entries including storage keys for controlling accesses to the buffers
US6175925B1 (en) * 1996-06-13 2001-01-16 Intel Corporation Tamper resistant player for scrambled contents
US5729760A (en) * 1996-06-21 1998-03-17 Intel Corporation System for providing first type access to register if processor in first mode and second type access to register if processor not in first mode
US5740178A (en) 1996-08-29 1998-04-14 Lucent Technologies Inc. Software for controlling a reliable backup memory
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
US5844986A (en) * 1996-09-30 1998-12-01 Intel Corporation Secure BIOS
US5937063A (en) * 1996-09-30 1999-08-10 Intel Corporation Secure boot
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
US5901225A (en) * 1996-12-05 1999-05-04 Advanced Micro Devices, Inc. System and method for performing software patches in embedded systems
US5757919A (en) * 1996-12-12 1998-05-26 Intel Corporation Cryptographically protected paging subsystem
US5818939A (en) * 1996-12-18 1998-10-06 Intel Corporation Optimized security functionality in an electronic system
US5953502A (en) * 1997-02-13 1999-09-14 Helbig, Sr.; Walter A Method and apparatus for enhancing computer system security
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)
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
US5970147A (en) * 1997-09-30 1999-10-19 Intel Corporation System and method for configuring and registering a cryptographic device
US6061794A (en) * 1997-09-30 2000-05-09 Compaq Computer Corp. System and method for performing secure device communications in a peer-to-peer bus architecture
US6085296A (en) * 1997-11-12 2000-07-04 Digital Equipment Corporation Sharing memory pages and page tables among computer processes
US6173417B1 (en) * 1998-04-30 2001-01-09 Intel Corporation Initializing and restarting operating systems
US6496847B1 (en) * 1998-05-15 2002-12-17 Vmware, Inc. System and method for virtualizing computer systems
US7225333B2 (en) * 1999-03-27 2007-05-29 Microsoft Corporation Secure processor architecture for use with a digital rights management (DRM) system on a computing device
US6158546A (en) * 1999-06-25 2000-12-12 Tenneco Automotive Inc. Straight through muffler with conically-ended output passage
JP3710671B2 (ja) * 2000-03-14 2005-10-26 シャープ株式会社 1チップマイクロコンピュータ及びそれを用いたicカード、並びに1チップマイクロコンピュータのアクセス制御方法
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
US7631160B2 (en) * 2001-04-04 2009-12-08 Advanced Micro Devices, Inc. Method and apparatus for securing portions of memory
US7676430B2 (en) * 2001-05-09 2010-03-09 Lenovo (Singapore) Ptd. Ltd. System and method for installing a remote credit card authorization on a system with a TCPA complaint chipset
US7191464B2 (en) * 2001-10-16 2007-03-13 Lenovo Pte. Ltd. Method and system for tracking a secure boot in a trusted computing environment
US7103771B2 (en) * 2001-12-17 2006-09-05 Intel Corporation Connecting a virtual token to a physical token
US7308576B2 (en) * 2001-12-31 2007-12-11 Intel Corporation Authenticated code module
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
US8079034B2 (en) * 2003-09-15 2011-12-13 Intel Corporation Optimizing processor-managed resources based on the behavior of a virtual machine monitor

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Coffing,C.L.: An x86 Protected Mode Virtual Machine Monitor for the MIT Exokernel. Thesis. Department of Electrical Engineering and Computer Science. Massachusetts Institute of Technology, May 21, 1999, S.63-75, [recherchiert am 04.08.08] *
Coffing,C.L.: An x86 Protected Mode Virtual Machine Monitor for the MIT Exokernel. Thesis. Department of Electrical Engineering and Computer Science. Massachusetts Institute of Technology, May 21, 1999, S.63-75, <http://pdos.csail.mit.edu/papers/exo:coffing-meng.ps> [recherchiert am 04.08.08]
Nanba, S. et al: VM/4: ACOS-4 virtual machine architecture. In: ACM SIGRAPH Computer Architecture News, Vol. 13, iss. 3 (June 1985), pp. 171-178 *

Also Published As

Publication number Publication date
US20050060703A1 (en) 2005-03-17
WO2005029327A1 (en) 2005-03-31
GB0603362D0 (en) 2006-03-29
US7287197B2 (en) 2007-10-23
GB2420207A (en) 2006-05-17
GB2420207B (en) 2008-04-16
JP2007506162A (ja) 2007-03-15
CN1849586A (zh) 2006-10-18
CN100585562C (zh) 2010-01-27
DE112004001652T5 (de) 2006-06-22

Similar Documents

Publication Publication Date Title
DE112004001652B4 (de) Vektorieren eines Interrupt oder einer Ausnahme bei Wiederaufnahme des Betriebes einer virtuellen Maschine
DE112004003080B4 (de) Verwendung mehrerer Monitore virtueller Maschinen zur Abwicklung privilegierter Ereignisse
DE102018000886A1 (de) Virtuelle Maschinenkommunikation auf Hardware-Basis
DE10393679B4 (de) Prozessor, der einen Übergang zwischen einem virtuellen Maschinen Betriebsmodus (VM) und einem virtuellen Maschinen Monitor Betriebsmodus (VMM) unterstützt
DE10392320B4 (de) Verfahren und Vorrichtung zum Laden eines vertrauenswürdigen Betriebssystems
DE102014003798B4 (de) Verfahren zum Booten eines heterogenen Systems und Präsentieren einer symmetrischen Kernansicht
DE102006061939B4 (de) Verfahren und Vorrichtung zum Zugriff auf eine speicherabgebildete Vorrichtung durch einen Gast
DE112015006934T5 (de) Verschachtelte Virtualisierung für virtuelle Maschinenexits
DE112017003483T5 (de) Eingeschränkte adressumsetzung zum schutz vor vorrichtungs-tlb-anfälligkeiten
DE102015002582A1 (de) Architekturübergreifendes Kompatibilitätsmodul, um zuzulassen, dass ein Codemodul einer Architektur ein Bibliotheksmodul einer anderen Architektur verwendet
DE102014003690A1 (de) Prozessoren, Verfahren und Systeme zur Befehlsemulation
DE112005002347T5 (de) Zeitgeber-Versetzungsmechanismus in der Umgebung einer virtuellen Maschine
DE102014003705A1 (de) Prozessoren, Verfahren und Systeme zur Befehlsemulation
DE112011100323T5 (de) Architekturübergreifende Migration virtueller Maschinen
DE112016005823T5 (de) Überwachen des betriebs eines prozessors
DE112016004297T5 (de) Technologien für mehrstufige virtualisierung
DE112007001466T5 (de) Behandlung von Adressübersetzungen und Ausnahmen einer Heterogenen Ressource
DE112012005209T5 (de) Brückenfunktion zwischen Virtual Machine Monitor und Bare-Metal-Bootvorgang
DE112016005571T5 (de) Aufrufergeschützte stapelrücksprungadresse in einer hardware-verwalteten stapelarchitektur
DE102018125817A1 (de) Systeme und Verfahren zum Laden eines Kachelregisterpaars
DE202017007430U1 (de) Erkennen von Bussperrbedingungen und Vermeiden von Bussperren
DE112007001245T5 (de) Fehlererkennung mit redundanten virtuellen Maschinen
DE112011103845T5 (de) Verwalten einer verschachtelten virtualisierten Umgebung
DE202019005683U1 (de) Prozessorkern mit Unterstützung einer Befehlssatzarchitektur für heterogene Systeme
DE112019006898T5 (de) Dynamisches umschalten zwischen ept- und schattenseitentabellen zur laufzeitprozessorverifikation

Legal Events

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

Ref document number: 112004001652

Country of ref document: DE

Date of ref document: 20060622

Kind code of ref document: P

R019 Grant decision by federal patent court
R020 Patent grant now final