DE10357804B4 - Neu-Beanspruchung vorhandener Felder in Adressübersetzungsdatenstrukturen zum Erweitern der Kontrolle über Speicherzugriffe - Google Patents

Neu-Beanspruchung vorhandener Felder in Adressübersetzungsdatenstrukturen zum Erweitern der Kontrolle über Speicherzugriffe Download PDF

Info

Publication number
DE10357804B4
DE10357804B4 DE10357804A DE10357804A DE10357804B4 DE 10357804 B4 DE10357804 B4 DE 10357804B4 DE 10357804 A DE10357804 A DE 10357804A DE 10357804 A DE10357804 A DE 10357804A DE 10357804 B4 DE10357804 B4 DE 10357804B4
Authority
DE
Germany
Prior art keywords
address translation
data structure
guest
entry
translation data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE10357804A
Other languages
English (en)
Other versions
DE10357804A1 (de
Inventor
Richard Hillsboro Uhlig
Gilbert Portland Neiger
Erik Portland Cota-Robles
Stalinselvaraj Portland Jeyasingh
Alain Portland Kagi
Michael Kozuch
Steven M. Hillsboro Bennett
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 DE10357804A1 publication Critical patent/DE10357804A1/de
Application granted granted Critical
Publication of DE10357804B4 publication Critical patent/DE10357804B4/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/145Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being virtual, e.g. for virtual blocks or segments before a translation mechanism
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]

Abstract

Verfahren (300), wobei:
festgestellt wird (306), dass eine Modifikation des Inhalts einer von einem Virtuelle-Maschine-Monitor (VMM) verwalteten aktiven Adressübersetzungsdatenstruktur (206) erforderlich ist, wobei der Inhalt der aktiven Adressübersetzungsdatenstruktur (206) von einem Prozessor verwendet wird, um daraus Adress-Übersetzungen abzuleiten und in einem Übersetzungsnachschlagepuffer (TLB) (204) cache-zu-speichern;
ein Eintrag (210) in der aktiven Adressübersetzungsdatenstruktur (206) modifiziert wird, so dass der Eintrag (210) mit Ausnahme eines Teils (214) einem entsprechenden Eintrag (212) in einer Gast-Adressübersetzungsdatenstruktur (208) entspricht, wobei die Gast-Adressübersetzungsdatenstruktur (208) von einer Gast-Software für Adressübersetzungsoperationen verwendet wird,
wobei der Teil (214) des Eintrags (210), der nicht modifiziert wird (308), einem für eine betriebliche Verwendung durch die Gast-Software vorgesehenen Feld (216) innerhalb des Eintrags (212) der Gast-Adressübersetzungsdatenstruktur (208) entspricht und einen oder mehrere Zugriffssteuerindikatoren einschließt.

Description

  • Die Erfindung betrifft ein Verfahren zum Modifizieren eines Eintrags einer von einem Virtuelle-Maschine-Monitor (VMM) verwalteten Adreßübersetzungsdatenstruktur durch den Inhalt eines entsprechenden Eintrags einer Gast-Adreßübersetzungsdatenstruktur.
  • Ein Computerprozessor greift auf einen Systemspeicher zu, um Daten in dem Systemspeicher zu lesen oder in ihn zu speichern. Insbesondere verwendet der Prozessor die physikalische Adresse der Daten in dem Speicher, um die Daten zu identifizieren und auf sie zuzugreifen. Jedoch ist die physikalische Adresse, an der die Daten in dem Speicher gespeichert sind, nicht diejenige Adresse, die der Prozessor verwendet, um die Daten während interner Manipulationen zu indexieren. Statt dessen weist der Prozessor den Daten, die in Übereinstimmung mit Programmbefehlen verarbeitet werden, eine virtuelle Adresse zu. Somit erfordern Speicherzugriffe oftmals die Übersetzung von virtuellen Adressen in physikalische Adressen.
  • Ein herkömmlicher Adreßübersetzungsmechanismus basiert üblicherweise auf einem Übersetzungsnachschlagepuffer (TLB; Translation Lookaside Buffer), einer prozessor-internen Struktur, die als Cache für zuvor bearbeitete Adreßübersetzungen dient. Beispielsweise wird bei der Prozessorbefehlssatzarchitektur (ISA; Instruction Set Architecture) der 32-Bit-Intel®-Architektur (hier als IA-32-ISA bezeichnet) die Adreßübersetzung von einem TLB und einer Seitentabellenhierarchie gesteuert. Die Seitentabellenhierarchie, auf welche mit Hilfe des Steuerregisters CR3 des Prozessors Bezug genommen wird, ist eine Übersetzungsdatenstruktur, die verwendet wird, um eine virtuelle Speicheradresse (auch als lineare Speicheradresse im Kontext der IA-32-ISA bezeichnet) in eine physikalische Speicheradresse zu übersetzen, wenn ein Paging freigegeben ist.
  • Eine Seitentabellenhierarchie schließt ein Seitenverzeichnis (PD; Page Directory), einen Satz von Seitentabellen (PTs; Page Tables) und mehrere Seitenrahmen (PFs; Page Frames) ein. Üblicherweise beginnt die Übersetzung einer virtuellen Speicheradresse in eine physikalische Speicheradresse mit einem Durchsuchen des TLB unter Verwendung entweder der oberen 20 Bits (für eine 4KB-Seite) oder der oberen 10 Bits (für eine 4MB-Seite) der virtuellen Adresse. Sofern eine Übereinstimmung gefunden wird, werden die oberen Bits eines physikalischen Seitenrahmens, die in dem TLB enthalten sind, mit den unteren Bits der virtuellen Adresse verbunden, um eine physikalische Adresse zu bilden. Wenn keine Übereinstimmung gefunden wird, konsultiert der Prozessor die Seitentabellenhierarchie, um die virtuell-zu-physikalische Übersetzung zu bestimmen, welche dann in dem TLB cache-gespeichert wird.
  • Jeder Eintrag in der PD und den PTs enthält üblicherweise verschiedene Felder, die die Zugreifbarkeit der Speicherseiten steuern. Beispiele derartiger Felder umfassen das Vorhanden-Flag (P-Flag; Present-Flag), welches anzeigt, ob die durch den Eintrag referenzierte Seite gültig ist, das User/Supervisor-Flag (U/S-Flag), das Zugriffe auf die durch den Eintrag referenzierte Seite auf der Grundlage von Privilegniveaus steuert, und das Lese/Schreib-Flag (R/W-Flag), das Zugriffe auf der Grundlage der Zugriffsart (das heißt Lesen oder Schreiben) steuert.
  • Adreßübersetzungsdatenstrukturen (Seitentabellenhierarchien) sind beispielsweise in Intel, „Microprocessor and Peripheral Handbook", Volume I: „Microprocessor", 1988, Seiten 4–48 bis 4–54, in Klaus-Dieter Thies, „80486 – Systemsoftware-Entwicklung – Ein Lehr- und Arbeitsbuch zur Intel-Mikroprozessortechnik", Carl Hanser Verlag München Wien, 1992, Seiten 557 bis 563, sowie in Hans-Peter Messmer, „PC-Hardwarebuch-Aufbau, Funktionsweise, Programmierung", 5. Auflage, Addison-Wesley, 1998, Seiten 129 bis 137, beschrieben.
  • Der Artikel von Judith S. Hall und Paul T. Robinson, „Virtualizing the VAX architecture", ACM SIGARCH Comp. Arch. News, Vol. 19, Nr. 3. Mai 1991, Seiten 380 bis 389, beschreibt Modifikationen an der VAX-Architektur derart, daß diese virtuelle Maschinen unterstützen kann. Die Druckschrift geht zunächst kurz auf die Theorie der virtuellen Maschinen ein, beschreibt dann einige Merkmale der VAX-Architektur, insbesondere die Fragen der Schutzringe, des Speichermanagaments und die bei der Virtualisierung auftretenden Probleme, und befaßt sich dann mit Änderungen an der Architektur, die zum Unterstützen eines VMM und zum Ausführen virtueller Maschinen vorgenommen wurden. Die Druckschrift schlägt zunächst vor, eine Ringkompression vorzunehmen, wobei die vier Zugriffsmodi User, Supervisor, Executive und Kernel der virtuellen Maschine auf drei Zugriffsmodi der realen Maschine abgebildet werden, indem die Modi Executive und Kernel auf dem Modus Executive abgebildet werden. Nur dem VMM wird gestattet, tatsächlich im Kernel-Modus zu arbeiten. Da die VAX-Architektur im Speichermanagement mit Seitentabellen arbeitet, bei denen die Seitentabellen-Einträge unter anderem ein Schutzfeld enthalten, ist aufgrund der Ringkompression eine Modifikation der Seitentabellenverwaltung erforderlich. Der VMM erzeugt und verwaltet Schattenseitentabellen des Betriebssystems der virtuellen Maschinen. Diese Schattenseitentabellen des VMM sind die normalen VAX-Seitentabellen der herkömmlichen Architektur und die einzigen Tabellen, die dem Mikrocode bekannt sind. Die Schattenseitentabellen enthalten die tatsächlichen physikalischen Seitennummern und übersetzte Schutzfelder, die den physikalischen Seitennummern und den Schutzfeldern der Seitentabelleneinträge der VM entsprechen. Die Übersetzung der Schutzfelder der Seitentabelleneinträge der VMs muß in Übereinstimmung mit dem Ringkompressionsschema erfolgen. Da die VAX-Architektur vorgibt, daß eine Hardware den Schutzcode eines Seitentabelleneintrags selbst dann überprüft, wenn das Gültig-Bit gelöscht ist, jedoch die Schutzbits eines nicht aktualisierten Schattenseitentabelleneintrags keine sinnvollen Werte enthalten, schlägt der Artikel vor, die Seitentabelleneinträge der Schattenseitentabelle mit Null-Seitentabelleneinträgen zu initialisieren. Die Null-Seitentabelleneinträge gestatten sowohl Lese- als auch Schreibzugriffe bei sämtlichen Modi und sind ungültig (invalid). Wenn somit die virtuelle Maschine (VM) eine Seite tangiert, deren Seitentabelleneintrag ein Null-Seitentabelleneintrag ist, ist die Schutzüberprüfung stets erfolgreich und die Maschine liefert einen Seitenfehler an den VMM. Der VMM aktualisiert dann den Schattenseitentabelleneintrag gemäß den Inhalten des Seitentabelleneintrags der VM und versucht die Referenz erneut. Der Schattenseitentabelleneintrag wird stets durch vollständige Übernahme des Eintrags der Seitentabelle des VM aktualisiert.
  • Der Erfindung liegt die Aufgabe zugrunde, die Möglichkeiten der Zugriffssteuerung zu erweitern.
  • Diese Aufgabe wird erfindungsgemäß durch ein Verfahren mit den Merkmalen des Patentanspruchs 1 gelöst.
  • Im folgenden wird die Erfindung anhand von in den Zeichnungen dargestellten bevorzugten Ausführungsformen näher beschrieben. In den Zeichnungen zeigen:
  • 1 ein Ausführungsbeispiel einer Virtuelle-Maschine-Umgebung, in welcher die vorliegende Erfindung betrieben werden kann;
  • 2 eine Blockdarstellung einer Ausführungsform eines virtuellen TLB-Systems;
  • 3 ein Ablaufdiagramm eines Ausführungsbeispiels eines Prozesses zum Neu-Beanspruchen (Reclaiming) vorhandener Felder einer Adreßübersetzungsdatenstruktur zum Erweitern der Kontrolle über Speicherzugriffe in einer Virtuelle-Maschine-Umgebung;
  • 4 eine Blockdarstellung eines Ausführungsbeispiels eines virtuellen TLB-Systems, das die Adreßübersetzung in der IA-32-ISA unterstützt; und
  • 5 die Formate der Seitenverzeichniseinträge (PDEs) und Seitentabelleneinträge (PTEs) in einer herkömmlichen Seitentabellenhierarchie für die IA-32-ISA.
  • Es wird ein Verfahren zum Neu-Beanspruchen (Reclaiming) vorhandener Bits in einer Adreßübersetzungsdatenstruktur zum Erweitern der Kontrolle über Speicherzugriffe in einer Virtuelle-Maschine-Umgebung beschrieben.
  • 1 veranschaulicht ein Ausführungsbeispiel einer Virtuelle-Maschine-Umgebung 100, in welcher die vorliegende Erfindung betrieben werden kann. Bei diesem Ausführungsbeispiel weist die Plattform-Hardware 116 eine Rechnerplattform auf, welche beispielsweise in der Lage sein kann, ein Standardbetriebssystem (OS; Operating System) oder einen Virtuelle-Maschine-Monitor (VMM), wie beispielsweise einen VMM 112 auszuführen. Der VMM 112 kann, obwohl üblicherweise in Software implementiert, eine Maschinenschnittstelle für eine Software einer höheren Ebene emulieren und exportieren. Eine derartige Software einer höheren Ebene kann ein Standard- oder ein Echtzeit-Betriebssystem, eine in hohem Maße abgerüstete Betriebsumgebung mit beschränkter Betriebssystemfunktionalität sein oder kann auch herkömmliche Betriebssystemmöglichkeiten nicht enthalten. Alternativ kann der VMM 112 beispielsweise innerhalb oder auf einem weiteren VMM laufen. VMMs und ihre typischen Merkmale und Funktionalitäten sind Fachleuten gut bekannt und können beispielsweise in Software, Firmware oder einer Kombination verschiedener Techniken implementiert sein.
  • Die Plattform-Hardware 116 schließt einen Prozessor 118 und einen Speicher 120 ein. Der Prozessor 118 kann ein Prozessor eines beliebigen Typs sein, der in der Lage ist, Software auszuführen, wie beispielsweise ein Mikroprozessor, ein digitaler Signalprozessor, ein Mikrocontroller oder dergleichen. Der Speicher 120 kann eine Festplatte, eine Diskette, ein Speicher mit wahlfreiem Zugriff (RAM), ein Nur-Lese-Speicher (ROM), ein Flash-Speicher oder eine beliebige Kombination der genannten Einrichtungen oder irgendeine Art eines Maschinenmediums, das von dem Prozessor lesbar ist, sein. Der Speicher 120 kann Kanäle zur Durchführung der Ausführung des Verfahrensausführungsbeispiels der vorliegenden Erfindung speichern.
  • Die Plattform-Hardware 116 kann ein Personalcomputer (PC), ein Großrechner, ein Handheld-Gerät, ein transportabler Computer, eine Set-Top-Box oder irgendein anderes Rechnersystem sein.
  • Der VMM 112 präsentiert für andere Software (das heißt „Gast"-Software) die Abstraktion einer oder mehrerer virtuel ler Maschinen (VMs), welche dieselbe oder andere Abstraktionen an die verschiedenen Gäste zur Verfügung stellen können. 1 zeigt zwei VMs 102 und 114. Die auf jeder VM ablaufende Gast-Software kann ein Gast-Betriebssystem, wie beispielsweise das Gast-Betriebssystem 104 oder 106, und verschiedene Gast-Software-Anwendungen 108 und 110 einschließen. Die Gast-Betriebssysteme 104 und 106 erwarten, daß sie auf physikalische Ressourcen (beispielsweise Prozessorregister, Speicher und I/O-Einrichtungen) innerhalb der VMs 102 und 114, auf welchen die Gast-Betriebssysteme 104 und 106 laufen, zugreifen können und weitere Funktionen ausführen können. Während der Adreßübersetzungsoperationen erwartet das Gast-Betriebssystem beispielsweise, daß physikalischer Speicher zugeteilt, Schutz auf und zwischen Software-Anwendungen (zum Beispiel Anwendungen 108 und 110) zur Verfügung gestellt, eine Mehrzahl von Paging-Techniken verwendet wird, und so weiter. Bei einer Virtuelle-Maschine-Umgebung jedoch müssen der Prozessor 118 und der VMM 112 eine endgültige Kontrolle über Adreßübersetzungsoperationen haben, um den richtigen Betrieb der VMs 102 und 114 zu unterstützen und einen Schutz von und zwischen den VMs 102 und 114 zur Verfügung zu stellen. Bei einem Ausführungsbeispiel wird ein Adreßübersetzungssystem, das hier als System eines virtuellen Übersetzungsnachschlagepuffers (TLB) bezeichnet wird, zur Verfügung gestellt, das Versuche des Betriebssystems zum Steuern der Adreßübersetzung toleriert und unterstützt, während es dem Prozessor 118 und dem VMM 112 ermöglicht, die endgültige Kontrolle über die Adreßübersetzungsoperationen zu behalten. Einige Ausführungsformen des virtuellen TLB-Systems werden unten detaillierter beschrieben.
  • Die Ressourcen, auf die von der Gast-Software zugegriffen werden kann, können entweder als „privilegiert" oder als „nicht-privilegiert" klassifiziert werden. Bei privilegierten Ressourcen erleichtert der VMM 112 die von der Gast-Software gewünschte Funktionalität, während er die endgültige Kontrolle über diese privilegierten Ressourcen beibehält. Nicht-privilegierte Ressourcen brauchen nicht von dem VMM 112 kon trolliert zu werden; auf sie kann von der Gast-Software zugegriffen werden.
  • Bei einem Ausführungsbeispiel wird dann, wenn die Gast-Software versucht, auf eine privilegierte Ressource zuzugreifen, die Kontrolle auf den VMM 112 übertragen. In Erwiderung dessen gestattet der VMM 112 entweder der Gast-Software, auf die privilegierte Ressource zuzugreifen, oder er emuliert die von der Gast-Software gewünschte Funktionalität und überträgt dann die Kontrolle zurück an die Gast-Software. Bei einem Ausführungsbeispiel wird die Übertragung der Kontrolle zwischen der VM 102 oder 114 und dem VMM 112 durch Ausführen eines speziellen Befehls erreicht. Die Kontrolle der Gast-Software über diesen Mechanismus wird hier als VMX-Operation bezeichnet und die Übertragung der Kontrolle von der Gast-Software auf den VMM wird hier als VM-Verlassen (VM Exit) bezeichnet. Bei einem anderen Ausführungsbeispiel wird die Übertragung der Kontrolle zwischen den VM 102 oder 114 und dem VMM 112 durch Nicht-Befehls-Ereignisse, wie beispielsweise ein asynchrones Hardware-Interrupt oder einen Seitenfehler, initiiert.
  • Bei einem Ausführungsbeispiel werden dann, wenn ein VM-Verlassen auftritt, Komponenten des Prozessorzustands, die von der Gast-Software verwendet werden, gesichert und Komponenten des Prozessorzustands, die von dem VMM 112 benötigt werden, geladen. Dieses Sichern und Laden des Prozessorzustands kann in Abhängigkeit von der Prozessorbefehlssatzarchitektur (ISA; Instruction Set Architecture) die Wirkung eines Wechseln des aktiven Adreßraums haben. Bei der ISA der 32-Bit-Intel®-Architektur (hier als IA-32-ISA bezeichnet) beispielsweise wird der aktive Adreßraum von den Werten in den Steuerregistern bestimmt, welche bei einem VM-Verlassen gesichert und wiederhergestellt werden können.
  • Bei einem Ausführungsbeispiel wird dann, wenn ein Übergang aus dem VMM 112 zu der Gast-Software auftritt, der Prozessorzustand, der bei dem VM-Verlassen gesichert wurde (und welcher von dem VMM 112 modifiziert sein könnte) wiederhergestellt, und die Steuerung wird an das Gast-Betriebssystem 104 oder 106 oder die Gast-Anwendungen 108 oder 110 zurückgegeben.
  • Es sei angemerkt, daß ein beliebiger anderer Mechanismus, der im Stand der Technik bekannt ist, zur Übertragung der Kontrolle zwischen der Gast-Software und dem VMM 112 ohne einen Verlust an Allgemeingültigkeit verwendet werden kann.
  • 2 ist eine Blockdarstellung eines Ausführungsbeispiels eines virtuellen TLB-Systems 200. Das virtuelle TLB-System 200 schließt eine Gast-Adreßübersetzungsdatenstruktur 208 und einen virtuellen TLB 202 ein. Die Gast-Adreßübersetzungsdatenstruktur 208 zeigt an, wie das Gast-Betriebssystem (OS) beabsichtigt, virtuelle Speicheradressen in physikalische Speicheradressen zu übersetzen. Ein Beispiel einer solchen Adreßübersetzungsdatenstruktur ist eine Seitentabellenhierarchie, die bei der IA-32-ISA verwendet wird. Die Gast-Adreßübersetzungsdatenstruktur 208 wird von dem Gast-Betriebssystem verwaltet, welches auf einen Eintrag in der Gast-Adreßübersetzungsdatenstruktur 208 zugreifen und diesen modifizieren kann. Einige Einträge in der Gast-Adreßübersetzungsdatenstruktur 208 enthalten Felder, die speziell für Betriebszwecke der Software entwickelt wurden. Wie es in 2 gezeigt ist, enthält ein Beispieleintrag 212 in der Gast-Adreßübersetzungsdatenstruktur 208 ein für Software zur Verfügung stehendes Feld 216, das ein oder mehrere Bits enthält, die für eine betriebliche Verwendung durch Gast-Software ausgelegt sind (das heißt, die Gastsoftware kann Werte in diese Bitfelder für irgendwelche gewünschten Zwecke bringen). Es sei angemerkt, daß die Einträge, welche die für die Software zur Verfügung stehenden Bitfelder enthalten, und die Anzahl der Bits in den für die Software zur Verfügung stehenden Felder, die in jedem Eintrag vorhanden sind, in Abhängigkeit von der ISA variieren können. Bei der Seitentabellenhierarchie der IA-32-ISA beispielsweise enthält jeder Eintrag in einem Seitenverzeichnis und einer Seitentabelle drei für Software zur Verfügung stehende Bits („AVAIL"-Bits available bits), bei denen durch die Architektur garantiert wird, daß sie für eine Verwendung durch Systemprogrammierer zur Verfügung stehen. Im Ergebnis dürfen diese Bits von der Hardware nicht verwendet oder interpretiert werden (zum Beispiel um ir gendwelche spezielle Aktionen oder Schutzmechanismen zu bewirken).
  • Der virtuelle TLB 202 enthält einen physikalischen TLB 204, der von dem Prozessor verwaltet wird, und eine aktive Adreßübersetzungsdatenstruktur 206, die von dem VMM verwaltet wird. Die aktive Adreßübersetzungsdatenstruktur 206 und die Gast-Adreßübersetzungsdatenstruktur 208 leiten ihre Formate aus einem von der Architektur definierten Format (zum Beispiel dem IA-32-Format) ab. Der physikalische TLB 204 wird von dem Prozessor mit Adreßübersetzungen geladen, die aus der aktiven Adreßübersetzungsdatenstruktur 206 abgeleitet sind.
  • Bei einem Ausführungsbeispiel erzeugt der VMM die aktive Adreßübersetzungsdatenstruktur 206 auf der Grundlage der Gast-Adreßübersetzungsdatenstruktur 208 und modifiziert dann periodisch einen oder mehrere Einträge in der aktiven Adreßübersetzungsdatenstruktur 206 derart, daß sie den entsprechenden Einträgen in der Gast-Adreßübersetzungsdatenstruktur 208 entsprechen. Bei einem Ausführungsbeispiel modifiziert der VMM die aktive Adreßübersetzungsdatenstruktur 206 bei Empfang einer Kontrolle über ein Ereignis, das von der Gast-Software initiiert wird, und beim Bestimmen, daß die wahrscheinliche Ursache des Ereignisses eine Inkonsistenz zwischen dem Inhalt der aktiven Adreßübersetzungsdatenstruktur 206 und dem Inhalt der Gast-Adreßübersetzungsdatenstruktur ist. Ein derartiges Ereignis kann beispielsweise ein Versuch des Gast-Betriebssystems, den TLB 204 zu manipulieren (zum Beispiel eine Anforderung der Gast-Software zum Ungültig-Machen cache-gespeicherter Adreßübersetzungen in dem TLB 204) oder ein von dem Prozessor in Erwiderung einer von der Gast-Software ausgeführten Operation erzeugter Seitenfehler sein (zum Beispiel ein Seitenfehler, der in Erwiderung einer Anforderung der Gast-Software zum Schreiben in einen Speicherbereich erzeugt wird, der als Nur-Lese-Bereich in der aktiven Adreßübersetzungsdatenstruktur markiert ist, während er als beschreibbar in der Gast-Adreßübersetzungsdatenstruktur markiert ist.
  • Wenn der Inhalt der aktiven Adreßübersetzungsdatenstruktur 206 modifiziert wird, unterläßt es der VMM, die für die Soft ware zur Verfügung stehenden Bitfelder 216 aus der Gast-Adreßübersetzungsdatenstruktur 208 in die aktive Adreßübersetzungsdatenstruktur 206 zu kopieren, da die Bitfelder 216 intern von der Gast-Software verwendet werden und für den VMM keine Bedeutung haben. Da demzufolge ein in einem Eintrag der aktiven Adreßübersetzungsdatenstruktur 206 enthaltenes Bitfeld 214 nicht mit Daten aus der Gast-Adreßübersetzungsdatenstruktur 208 überschrieben wird, ist der VMM in der Lage, diese Bitfelder für seine eigenen Zwecke neu zu beanspruchen. Bei einem Ausführungsbeispiel verwendet der VMM ein Bitfeld innerhalb eines Eintrags (zum Beispiel dem Eintrag 210) der aktiven Adreßübersetzungsdatenstruktur 206, um Zugriffssteuerindikatoren 214 zu speichern, die die Zugreifbarkeit eines von dem Eintrag 210 referenzierten Speicherbereichs steuern. Beispiele der Zugriffssteuerindikatoren und ihre Verwendung in einer Virtuelle-Maschine-Umgebung werden unten detaillierter erläutert.
  • 3 ist ein Ablaufdiagramm eines Ausführungsbeispiels eines Prozesses 300 für eine Neu-Beanspruchung vorhandener Felder einer Adreßübersetzungsdatenstruktur zum Erweitern der Kontrolle oder Steuerung von Speicherzugriffen in einer Umgebung einer virtuellen Maschine. Der Prozeß kann durch Verarbeitungslogik ausgeführt werden, die Hardware (zum Beispiel Schaltungen, spezielle Logik, programmierbare Logik, Mikrocode, etc.), Software (wie beispielsweise auf einer speziellen Maschine oder einem Mehrzweckcomputersystem ablaufende) oder eine Kombination von beidem umfassen kann.
  • Gemäß 3 beginnt der Prozeß 300 damit, daß die Verarbeitungslogik Zugriffssteuerindikatoren in einem oder in mehreren Einträgen einer aktiven Adreßübersetzungsdatenstruktur setzt (Verarbeitungsblock 302). Die Verarbeitungslogik setzt die Zugriffssteuerindikatoren, wenn sie einen Eintrag in der aktiven Adreßübersetzungsdatenstruktur erzeugt. Bei einem Ausführungsbeispiel wird ein Eintrag erzeugt, wenn die Verarbeitungslogik die gesamte aktive Adreßübersetzungsdatenstruktur auf der Grundlage einer Gast-Adreßübersetzungsdatenstruktur, die von dem Gast-Betriebssystem für Adreßübersetzungsoperatio nen verwendet wird, erzeugt. Alternativ erzeugt die Verarbeitungslogik einen Eintrag in der aktiven Adreßübersetzungsdatenstruktur, nachdem ein neuer Eintrag zu der Gast-Adreßübersetzungsdatenstruktur hinzugefügt worden ist. Bei einem Ausführungsbeispiel kann die Verarbeitungslogik, sobald die Zugriffssteuerindikatoren gesetzt sind, diese zu einem beliebigen Zeitpunkt modifizieren, sobald dies erforderlich ist.
  • Als nächstes, am Verarbeitungsblock 304 erfaßt die Verarbeitungslogik eine Übertragung der Kontrolle an den VMM, welche von einem Ereignis verursacht worden ist, das von der Gast-Software initiiert wurde (zum Beispiel einen Versuch der Gast-Software zum Manipulieren des TLB oder ein Seitenfehler, der in Erwiderung einer von der Gast-Software ausgeführten Operation erzeugt worden ist), und bewertet dieses Ereignis. Auf der Grundlage dieser Bewertung bestimmt die Verarbeitungslogik, ob dieses Ereignis eine Modifikation der aktiven Adreßübersetzungsdatenstruktur erfordert (Entscheidungskasten 306). Diese Feststellung kann beispielsweise davon abhängen, ob der Seitenfehler aufgrund der Inkonsistenz zwischen dem Inhalt der aktiven Adreßübersetzungsdatenstruktur und dem Inhalt der Gast-Adreßübersetzungsdatenstruktur oder aus irgendeinem anderen Grunde erzeugt wurde.
  • Sofern die am Entscheidungskasten 306 getroffene Feststellung negativ ist, endet der Prozeß 300. Alternativ, wenn die am Entscheidungskasten 306 getroffene Feststellung positiv ist, sieht die Verarbeitungslogik davon ab, die Zugriffssteuerindikatoren zu überschreiben, während der übrige Inhalt der aktiven Adreßübersetzungsdatenstruktur derart modifiziert wird, daß er mit dem Inhalt der Gast-Adreßübersetzungsdatenstruktur übereinstimmt (Verarbeitungsblock 308). Im Ergebnis werden die Zugriffssteuerindikatoren in der aktiven Adreßübersetzungsdatenstruktur zur Verwendung durch den Prozessor während Adreßübersetzungsoperationen aufrechterhalten.
  • Eine beispielhafte Funktionalität der Zugriffssteuerindikatoren wird jetzt unter Bezugnahme auf spezielle Merkmale der IA-32-ISA beschrieben. Es sei jedoch angemerkt, daß die Zugriffssteuerindikatoren für verschiedene Zwecke verwendet werden können, die von den unten erörterten abweichen, und mit verschiedenen Prozessoren, die keine IA-32-Prozessoren sind.
  • 4 ist eine Blockdarstellung eines Ausführungsbeispiels eines virtuellen TLB-Systems 400, das eine Adreßübersetzung in der IA-32-ISA unterstützt. Das System 400 enthält einen virtuellen TLB 404, der eine aktive Übersetzungsdatenstruktur enthält, die von einer aktiven Seitentabellenhierarchie 406 und einem physikalischen TLB 408 repräsentiert wird. Das System 400 enthält außerdem eine Gast-Übersetzungsdatenstruktur, die von einer Gast-Seitentabellenhierarchie 402 dargestellt wird. Die aktive Seitentabellenhierarchie 406 und die Gast-Seitentabellenhierarchie 402 leiten ihr Format aus dem von der IA-32-Architektur definierten Format ab. Die Einträge der Gast-Seiten-Tabellenhierarchie 402 haben ein herkömmliches Format gemäß der IA-32-ISA.
  • 5 veranschaulicht das Format 502 von Seitenverzeichniseinträgen (PDEs; Page Directory Entries) und das Format 504 von Seitentabelleneinträgen (PTEs; Page Table Entries) in einer herkömmlichen Seitentabellenhierarchie für die IA-32-ISA. Jeder PDE und PTE enthält einen Satz von Bits, die die Zugreifbarkeit der Speicherseiten steuern. Diese Bits umfassen beispielsweise das Vorhanden-Flag (P-Flag) 516 oder 510, welches anzeigt, ob die von dem Eintrag referenzierte Seite gültig ist oder nicht, das Benutzer/Supervisor-Flag (U/S; User/Supervisor) 520 oder 514, welches Zugriffe auf die von dem Eintrag referenzierte Seite auf der Grundlage eines Privilegierungsniveaus steuert, und das Lese/Schreib-Flag (R/W-Flag) 51 oder 512, das Zugriffe auf der Grundlage des Zugriffstyps (das heißt Lesen oder Schreiben) steuert. Darüber hinaus enthält jeder PDE und PTE drei „AVAIL"-Bits 506 und 508. Die AVAIL-Bits 506 und 508 sind Bits, bei denen von der Architektur garantiert wird, daß sie zur Verwendung durch Systemprogrammierer zur Verfügung stehen. Das heißt, eine Software kann Werte in die Bits AVAIL für irgendeinen gewünschten Zweck bringen (zum Beispiel zum Aufzeichnen von Informationen, die einer gegebenen Seite zugeordnet sind). Im Ergebnis darf eine Hardware diese Bits für keinen anderen Zweck interpretieren oder verwenden (zum Beispiel für neue Schutzmechanismen auf Seitenebene). Wenn aber diese Felder nicht von Software verwendet werden, sind sie überflüssig.
  • Kehren wir zur 4 zurück; die AVAIL-Bits in jedem PDE und PTE werden von dem VMM gesetzt und nicht mit Daten aus der Gast-Seitentabellenhierarchie 402 überschrieben, wenn der Inhalt der aktiven Seitentabellenhierarchie 406 modifiziert wird. Bei einem Ausführungsbeispiel werden die AVAIL-Bits gesetzt, wenn die aktive Seitentabellenhierarchie 406 erzeugt wird oder ein neuer Eintrag zu der aktiven Seitentabellenhierarchie 406 hinzugefügt wird.
  • Bei einem Ausführungsbeispiel werden sämtliche Einträge in der aktiven Seitentabellenhierarchie 406 anfänglich als ungültig markiert (unter Verwendung des P-Flags 516 in jedem PDE und des P-Flags 510 in jedem PTE), um den Initialisierungszustand des TLB, in dem der TLB keine Einträge aufweist, zu emulieren. Nachfolgend, wenn die Gast-Software eine virtuelle Adresse dem Prozessor präsentiert, findet der Prozessor nur ungültige Einträge in der aktiven Seitentabellenhierarchie 406 und es wird ein Seitenfehler erzeugt. Der Seitenfehler überträgt die Kontrolle aus dem Gast-Betriebssystem an den VMM. Der VMM kopiert dann zugehörige Einträge aus der Gast-Seitentabellenhierarchie 402 in die aktive Seitentabellenhierarchie 406, womit die aktive Seitentabellenhierarchie 406 wieder gefüllt wird. Während des Neuauffüllens werden die AVAIL-Bits in der Gast-Seitentabellenhierarchie 402 ignoriert (das heißt die AVAIL-Bits werden nicht in die aktive Seitentabellenhierarchie 406 kopiert).
  • Der Gast-Software wird es ermöglicht, die Gast-Seitentabellenhierarchie 402 einschließlich Änderungen der Virtuell-Zu-Physikalisch-Abbildung, Genehmigungen, etc. frei zu modifizieren. Demzufolge kann es sein, daß die aktive Seitentabellenhierarchie 406 nicht immer mit der Gast-Seitentabellenhierarchie 402 konsistent ist. Das heißt, die aktive Seitentabellenhierarchie 406 kann veraltet sein, bei spielsweise kann sie zu viele Zugriffe auf ihre Einträge gestatten, falsche Virtuell-Zu-Physikalische-Adreßabbildungen zur Verfügung stellen, etc. Wenn sich aus einer Inkonsistenz zwischen den Hierarchien 402 und 406 Probleme ergeben, gibt das Gast-Betriebssystem einen der Befehle 416 an den physikalischen TLB 408 aus. Diese Befehle führen zu einer Übertragung der Kontrolle von dem Gast-Betriebssystem an den VMM. Der VMM bestimmt dann die Ursache des Befehls und modifiziert den Inhalt der aktiven Seitentabellenhierarchie 406 (beispielsweise entfernt er die Einträge, auf die von der Gast-Software in dem ausgegebenen Befehl Bezug genommen wird, aus der aktiven Seitentabellenhierarchie 406). Während der Modifikation werden die AVAIL-Bits in der Gast-Seitentabellenhierarchie 402 nicht in die aktive Seitentabellenhierarchie 406 kopiert.
  • Da die AVAIL-Bits in der aktiven Seitentabellenhierarchie 406 ungeändert bleiben, können sie von dem VMM neu beansprucht werden. Sobald sie neu beansprucht sind, können die AVAIL-Bits auf verschiedene Weise verwendet werden. Beispielsweise kann eines der AVAIL-Bits ein Gast/Host-Zugriffsbit (G/H-Zugriffsbit) sein, das den Zugriff auf die Seite durch Gast-Software steuert. Das heißt, der Prozessor könnte einen Zugriff auf die von dem PTE referenzierte Seite nur dann gestatten, wenn der VMM (der Host) abläuft oder abgearbeitet wird, sofern das „G/H"-Bit in einem aktiven PTE gelöscht ist. Sofern das „G/H"-Bit gesetzt ist, kann der Prozessor den Zugriff auf die Seite gestatten, wenn entweder der VMM oder die Gast-Software abgearbeitet werden (laufen).
  • Das G/H-Bit kann verwendet werden, um Adreßraumkonflikte zwischen dem VMM und einem Gast-Betriebssystem zu lösen. Bei der gegenwärtigen IA-32-ISA tritt ein Adreßraumkonflikt typischerweise auf, weil vorhandene Prozessoren (zum Beispiel IA-32-Mikroprozessoren) es dem VMM nicht gestatten, eine Kontrolle über ein Ereignis zu empfangen, das von dem Gast-Betriebssystem initiiert worden ist (zum Beispiel ein Versuch des Gast-Betriebssystems, auf eine privilegierte Hardware-Ressource zuzugreifen), solange nicht ein Teil des VMM-Codes und/oder der Datenstrukturen in demselben virtuellen Adreßraum wie das Gast-Betriebssystem angeordnet ist. Da jedoch das Gast-Betriebssystem nicht erwartet, daß sich VMM-Code und/oder -Datenstrukturen in demselben Adreßraum aufhalten, könnte es versuchen, auf einen Bereich zuzugreifen, der in diesem Adreßraum von dem VMM belegt wird, was einen Adreßraumkonflikt zwischen Gast-Betriebssystem und dem VMM bewirkt. Dieser Konflikt könnte zu einem abnormen Abbruch von von dem VMM oder dem Gast-Betriebssystem durchgeführten Operationen führen.
  • Das „G/H"-Bit verhindert das Auftreten eines Adreßraumkonflikts zwischen dem Gast-Betriebssystem und dem VMM. Insbesondere mit dem „G/H"-Bit findet der VMM einen Platz in dem virtuellen Adreßraum des Gast-Betriebssystems, um seinen Code und seine Datenstrukturen abzubilden, und sichert, daß das zughörige „G/H"-Bit gelöscht wird, um den VMM-Code und die VMM-Datenstrukturen gegenüber Zugriffen durch das Gast-Betriebssystem zu schützen. Wenn ein Versuch des Gast-Betriebssystems zum Zugreifen auf den von dem VMM belegten Adreßraum erfaßt wird, werden der VMM-Code und die Datenstrukturen in einen nicht benutzten Bereich innerhalb des virtuellen Adreßraums des Gast-Betriebssystems neu abgebildet, und das Gast-Betriebssystem ist in der Lage, auf den gewünschten Adreßraum zuzugreifen.
  • Das „G/H"-Bit kann auch verwendet werden, um Adreßumschaltungen in den ISAs zu vereinfachen, die nicht erfordern, daß ein Teil des VMM-Codes und/oder der Datenstrukturen sich in dem Adreßraum des Gast-Betriebssystems aufhalten, um eine Kontrolle über ein von dem Gast-Betriebssystem initiiertes Ereignis zu erhalten. Wenn beispielsweise die Gast-Software von einer VMX-Operation gesteuert wird, bewirkt ein VM-Verlassen (Exit), daß ein vollständiges Adreßraumumschalten vor dem Übertragen der Kontrolle an dem VMM auftritt, so daß kein Erfordernis vorhanden ist, daß ein Teil des VMM-Codes und/oder der VMM-Datenstrukturen sich in dem Adreßraum des Gast-Betriebssystems aufhält. Jedoch ist die Ausführung einer vollständigen Adreßumschaltung für jedes VM-Verlassen aufwendig. Dementsprechend kann die Leistungsfähigkeit optimiert werden, indem ein Teil des VMM-Codes und/oder der VMM-Datenstrukturen in dem Adreßraum des Gast-Betriebssystems abgearbeitet wird und das G/H-Bit verwendet wird, um den VMM-Code und die Datenstrukturen gegenüber Zugriffen aus dem Gast-Betriebssystem zu schützen, wie es oben erörtert wurde.
  • Bei einem anderen Beispiel könnten zwei der AVAIL-Bits von dem Prozessor als Ausführungs-Privileg-Bit "X" (Execute) und Lese-Privileg-Bit "R" (Read) interpretiert werden, während das vorhandene „R/W"-Bit als Schreib-Privileg-Bit „W" (Write) neu interpretiert werden könnte. Im Ergebnis können verschiedene Arten von Seitenzugriffen unabhängig gesteuert werden. Beispielsweise könnte der Prozessor die Ausführung irgendwelcher Befehle aus der Seite verhindern, wenn das X-Bit gelöscht ist, und die Ausführung von Befehlen aus der Seite erlauben, wenn das X-Bit gesetzt ist. In ähnlicher Weise könnte das R-Bit Datenlesezugriffe auf die Seite steuern und das W-Bit könnte Datenschreibzugriffe auf die Seite steuern.
  • Die Kombination von unabhängig setzbaren R-, W- und X-Bits kann bei einer Verwendung mit dynamischen binären Übersetzern vorteilhaft sein, welche Befehlsbinärzahlen für verschiedene Zwecke, wie beispielsweise eine Befehlssatzemulation, ein Adreß-Tracing, etc. modifizieren. Beispielsweise könnte die Kombination der R-, W- und X-Bits eine Behandlung von selbstmodifizierenden Code (SMC) und selbst-überprüfenden Code (SEC) durch einen dynamischen binären Übersetzer auf IA-32-Prozessoren vereinfachen. Das heißt ein dynamischer binärer Übersetzer könnte die Kombination der R-, W- und X-Bits 001 auf einer Seite setzen, die übersetzte Befehle hält, womit die Ausführung des Codes durch den Prozessor gestattet wird, während Versuche des Codes erfaßt werden, die Befehlsbits des Codes zu modifizieren oder zu lesen (welche sich von den ursprünglichen Befehlen des Codes infolge der Übersetzung oder von Patching-Aktionen des binären Übersetzers unterscheiden können). Bei Seiten, die eine Mischung von Befehlen und Daten halten, kann ein binärer Übersetzer die Bits R und W in geeigneter Weise setzen, aber das X-Bit auf 0 halten, so daß der Code direkt auf Daten auf der Seite zugreifen kann, aber nicht in der Lage ist, Befehle auf der Seite auszuführen. Ein Ver such zum Ausführen von Befehlen auf der Seite bewirkt einen Übergang zu dem VMM, welcher dann die fehlgeschlagenen Befehle emulieren kann.
  • Die Kombination der Bits R, W und X könnte außerdem eine sichere Ausführung von Code gestatten, der einen eingebetteten geheimen Schlüssel oder Algorithmus enthält. Das heißt, der VMM könnte den einen eingebetteten geheimen Schlüssel oder Algorithmus enthaltenden Code auf eine Seite abbilden, die durch einen Eintrag referenziert wird mit der Kombination der Bits R, W und X, die auf 001 gesetzt ist. Im Ergebnis kann der sichere Code aufgerufen und ausgeführt werden, und gleichzeitig sind der eingebettete geheime Schlüssel oder Algorithmus gegenüber Lesen oder Modifizieren durch anderen Code, der im gleichen Adreßraum abläuft, geschützt.
  • Die Kombination der Bits R, W und X kann ferner verwendet werden, um Debugging-Operationen zu unterstützen. Insbesondere können vorhandene Seiten, die Daten halten, mit einer Kombination der Bits R, W und X abgebildet werden, die entweder auf 010 oder auf 110 von einem sich in dem VMM aufhaltenden Debugger abgebildet werden können. Mit diesen Schutzmechanismen kann der Debugger sofort feststellen, wenn problematischer Code versehentlich damit begonnen hat, Daten so auszuführen, als ob sie Befehle wären.
  • In noch einem anderen Beispiel könnte eines der AVAIL-Bits mit dem vorhandenen U/S-Bit kombiniert werden, um anzuzeigen, ob eine gegebene Seite durch einen Code zugreifbar ist, der auf einem bestimmten Privilegierungsniveau abläuft. Der VMM kann dann zwei Bits verwenden, um das höchste Privilegierungsniveau zu spezifizieren, auf welchem eine gegebene Seite zugreifbar ist. Beispielsweise könnte der Wert 00 anzeigen, daß nur der Code, der auf dem Privilegierungsniveau 0 abläuft, auf eine gegebene Seite zugreifen kann, der Wert 01 anzeigen, daß der Code, der auf den Privilegierungsniveaus 0 oder 1 abläuft, auf die Seite zugreifen kann, der Wert 10 anzeigen, daß der Code, der auf den Privilegierungsniveaus 0, 1 oder 2 abläuft, auf die Seite zugreifen kann, und der Wert 11 anzeigen, daß der Code, der auf einem beliebigen Privilegierungsniveau ab läuft, auf die Seite zugreifen kann. Die Verwendung von zwei Bits zum Steuern des Privilegierungsniveaus des zugreifenden Codes schafft einen höheren Grad der Flexibilität, macht es beispielsweise möglich, daß Gerätetreiber auf dem Privilegierungsniveau 1 und der Rest des Betriebssystem-Kernels auf dem Privilegierungsniveau 0 abgearbeitet wird, während Schutzmechanismen auf Seitenebene zum Schützen des Ring-0-Kernels gegen bösartige oder fehlerhafte Ring-1-Gerätetreiber verwendet werden. Diese Schutzmechanismen auf Seitenniveau sind mit dem vorhandenen U/S-Bit nicht möglich, welches die Ring 0, 1 und 2 zusammen als Supervisor(S)-Privilegniveau und Ring 3 als Benutzer(U)-Privilegniveau kennzeichnet.
  • Die oben unter Bezugnahme auf das G/H-Bit, die unabhängig setzbaren R-, W- und X-Bits und die Kombination des U/S-Bits mit einem AVAIL-Bit beschriebene Funktionalität kann gleichzeitig erreicht werden, indem die Bedeutungen der drei vorhandenen P-, R/W und U/S-Bits neu definiert werden und sie mit den drei neu beanspruchten AVAIL-Bits kombiniert werden. Insbesondere können drei der sich ergebenden sechs Bits als unabhängig setzbare R-, W- und X-Bits verwendet werden, zwei der verbleibenden drei Bits können verwendet werden, um den höchsten Ring zu kennzeichnen, auf welchen der Code Zugriffsrechte hat, und das letzte Bit kann als G/H-Bit verwendet werden. Für diese Interpretation der Bits könnte die Seite als „nicht vorhanden" angesehen werden, wenn die Kombination der Bits R, W und X eine Einstellung von 000 aufweist.
  • Es sei angemerkt, daß die vorhandenen Felder innerhalb der aktiven Adreßübersetzungsdatenstrukturen auf verschiedenartigste Weise interpretiert und verwendet werden können, die von den oben beschriebenen Möglichkeiten abweichen.

Claims (9)

  1. Verfahren (300), wobei: festgestellt wird (306), dass eine Modifikation des Inhalts einer von einem Virtuelle-Maschine-Monitor (VMM) verwalteten aktiven Adressübersetzungsdatenstruktur (206) erforderlich ist, wobei der Inhalt der aktiven Adressübersetzungsdatenstruktur (206) von einem Prozessor verwendet wird, um daraus Adress-Übersetzungen abzuleiten und in einem Übersetzungsnachschlagepuffer (TLB) (204) cache-zu-speichern; ein Eintrag (210) in der aktiven Adressübersetzungsdatenstruktur (206) modifiziert wird, so dass der Eintrag (210) mit Ausnahme eines Teils (214) einem entsprechenden Eintrag (212) in einer Gast-Adressübersetzungsdatenstruktur (208) entspricht, wobei die Gast-Adressübersetzungsdatenstruktur (208) von einer Gast-Software für Adressübersetzungsoperationen verwendet wird, wobei der Teil (214) des Eintrags (210), der nicht modifiziert wird (308), einem für eine betriebliche Verwendung durch die Gast-Software vorgesehenen Feld (216) innerhalb des Eintrags (212) der Gast-Adressübersetzungsdatenstruktur (208) entspricht und einen oder mehrere Zugriffssteuerindikatoren einschließt.
  2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass wenigstens einer der Zugriffssteuerindikatoren vor dem Modifizieren des Eintrags (210) der aktiven Adressübersetzungsdatenstruktur gesetzt wird (302).
  3. Verfahren nach Anspruch 2, dadurch gekennzeichnet, dass der Zugriffssteuerindikator gesetzt wird, wenn der Eintrag (210) erzeugt wird.
  4. Verfahren nach einem der Ansprüche 1–3, dadurch gekennzeichnet, dass die aktive Adressübersetzungsdatenstruktur (206) eine aktive Seitentabellenhierarchie ist.
  5. Verfahren nach Anspruch 4, dadurch gekennzeichnet, dass der Eintrag (210) in der aktiven Adressübersetzungsdatenstruktur (206) ein Seitentabelleneintrag oder ein Seitenverzeichniseintrag ist, und dass der wenigstens eine Zugriffssteuerindikator wenigstens ein der System-Software zur Verfügung stehendes AVAIL-Bit (506; 508) ist.
  6. Verfahren nach Anspruch 5, dadurch gekennzeichnet, dass eines der AVAIL-Bits (506; 508) ein Gast/Host-Zugriffsbit ist, das einen Zugriff auf eine entsprechende Seite in der Seitentabellenhierarchie durch die Gast-Software steuert.
  7. Verfahren nach einem der Ansprüche 4 bis 6, dadurch gekennzeichnet, dass die Zugriffssteuerindikatoren einen Ausführungsprivilegindikator, der eine Ausführung von Befehlen aus einer zugehörigen Seite in der Seitentabellenhierarchie steuert, und einen Leseprivilegindikator, der Lesezugriffe auf die zugehörige Seite in der Seitentabellenhierarchie steuert, einschließen.
  8. Verfahren nach Anspruch 7, dadurch gekennzeichnet, dass ein Lese/Schreibbit als Schreibprivilegindikator neu interpretiert wird, der Schreibzugriffe auf die zugehörige Seite in der Seitentabellenhierarchie steuert.
  9. Verfahren nach einem der Ansprüche 4 bis 8, dadurch gekennzeichnet, dass der wenigstens eine Zugriffssteuerindikator einen Privilegniveauzugriffsindikator einschließt, der Zugriffe auf eine zugehörige Seite in der Seitentabellenhierarchie durch einen auf dem spezifizierten Privilegniveau abgearbeiteten Befehlscode kontrolliert.
DE10357804A 2002-12-12 2003-12-10 Neu-Beanspruchung vorhandener Felder in Adressübersetzungsdatenstrukturen zum Erweitern der Kontrolle über Speicherzugriffe Expired - Fee Related DE10357804B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/319900 2002-12-12
US10/319,900 US7073042B2 (en) 2002-12-12 2002-12-12 Reclaiming existing fields in address translation data structures to extend control over memory accesses
US10/319,900 2002-12-12

Publications (2)

Publication Number Publication Date
DE10357804A1 DE10357804A1 (de) 2004-07-08
DE10357804B4 true DE10357804B4 (de) 2008-11-13

Family

ID=32506732

Family Applications (1)

Application Number Title Priority Date Filing Date
DE10357804A Expired - Fee Related DE10357804B4 (de) 2002-12-12 2003-12-10 Neu-Beanspruchung vorhandener Felder in Adressübersetzungsdatenstrukturen zum Erweitern der Kontrolle über Speicherzugriffe

Country Status (3)

Country Link
US (1) US7073042B2 (de)
CN (1) CN1282928C (de)
DE (1) DE10357804B4 (de)

Families Citing this family (84)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6199152B1 (en) 1996-08-22 2001-03-06 Transmeta Corporation Translated memory protection apparatus for an advanced microprocessor
US7069442B2 (en) 2002-03-29 2006-06-27 Intel Corporation System and method for execution of a secured environment initialization instruction
US7111145B1 (en) * 2003-03-25 2006-09-19 Vmware, Inc. TLB miss fault handler and method for accessing multiple page tables
US7111146B1 (en) 2003-06-27 2006-09-19 Transmeta Corporation Method and system for providing hardware support for memory protection and virtual memory address translation for a virtual machine
US20050044408A1 (en) * 2003-08-18 2005-02-24 Bajikar Sundeep M. Low pin count docking architecture for a trusted platform
US7836450B2 (en) 2003-08-28 2010-11-16 Mips Technologies, Inc. Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts
US20050050305A1 (en) * 2003-08-28 2005-03-03 Kissell Kevin D. Integrated mechanism for suspension and deallocation of computational threads of execution in a processor
US7849297B2 (en) * 2003-08-28 2010-12-07 Mips Technologies, Inc. Software emulation of directed exceptions in a multithreading processor
US9032404B2 (en) * 2003-08-28 2015-05-12 Mips Technologies, Inc. Preemptive multitasking employing software emulation of directed exceptions in a multithreading processor
US7870553B2 (en) * 2003-08-28 2011-01-11 Mips Technologies, Inc. Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts
US7594089B2 (en) * 2003-08-28 2009-09-22 Mips Technologies, Inc. Smart memory based synchronization controller for a multi-threaded multiprocessor SoC
US7321965B2 (en) * 2003-08-28 2008-01-22 Mips Technologies, Inc. Integrated mechanism for suspension and deallocation of computational threads of execution in a processor
US7418585B2 (en) 2003-08-28 2008-08-26 Mips Technologies, Inc. Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts
US7711931B2 (en) * 2003-08-28 2010-05-04 Mips Technologies, Inc. Synchronized storage providing multiple synchronization semantics
US7222221B1 (en) 2004-02-06 2007-05-22 Vmware, Inc. Maintaining coherency of derived data in a computer system
US7562179B2 (en) 2004-07-30 2009-07-14 Intel Corporation Maintaining processor resources during architectural events
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
US8214830B2 (en) * 2005-01-19 2012-07-03 Intel Corporation Performance in a virtualization architecture with a processor abstraction layer
US7647589B1 (en) 2005-02-07 2010-01-12 Parallels Software International, Inc. Methods and systems for safe execution of guest code in virtual machine context
US8522253B1 (en) 2005-03-31 2013-08-27 Guillermo Rozas Hardware support for virtual machine and operating system context switching in translation lookaside buffers and virtually tagged caches
US20070234330A1 (en) * 2006-03-01 2007-10-04 Microsoft Corporation Prevention of executable code modification
WO2007143278A2 (en) 2006-04-12 2007-12-13 Soft Machines, Inc. Apparatus and method for processing an instruction matrix specifying parallel and dependent operations
US7555628B2 (en) 2006-08-15 2009-06-30 Intel Corporation Synchronizing a translation lookaside buffer to an extended paging table
EP2527972A3 (de) 2006-11-14 2014-08-06 Soft Machines, Inc. Vorrichtung und Verfahren zum Verarbeiten von komplexen Anweisungsformaten in einer Multi-Thread-Architektur, die verschiedene Kontextschaltungsmodi und Visualisierungsschemen unterstützt
US8370559B2 (en) * 2007-09-28 2013-02-05 Intel Corporation Executing a protected device model in a virtual machine
US8078792B2 (en) * 2008-01-22 2011-12-13 Advanced Micro Devices, Inc. Separate page table base address for minivisor
US8095773B2 (en) * 2008-02-26 2012-01-10 International Business Machines Corporation Dynamic address translation with translation exception qualifier
US8667504B2 (en) 2008-06-20 2014-03-04 Netapp, Inc. System and method for achieving high performance data flow among user space processes in storage system
US8689349B2 (en) * 2010-05-05 2014-04-01 Intel Corporation Information flow tracking and protection
EP2416251B1 (de) * 2010-08-06 2013-01-02 Alcatel Lucent Verfahren zum Verwalten eines Computerspeichers, entsprechendes Computerprogrammprodukt und Datenspeichervorrichtung dafür
KR101685247B1 (ko) 2010-09-17 2016-12-09 소프트 머신즈, 인크. 조기 원거리 분기 예측을 위한 섀도우 캐시를 포함하는 단일 사이클 다중 분기 예측
CN108376097B (zh) 2011-03-25 2022-04-15 英特尔公司 用于通过使用由可分割引擎实例化的虚拟核来支持代码块执行的寄存器文件段
US9274793B2 (en) 2011-03-25 2016-03-01 Soft Machines, Inc. Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines
US9766893B2 (en) 2011-03-25 2017-09-19 Intel Corporation Executing instruction sequence code blocks by using virtual cores instantiated by partitionable engines
US9442772B2 (en) 2011-05-20 2016-09-13 Soft Machines Inc. Global and local interconnect structure comprising routing matrix to support the execution of instruction sequences by a plurality of engines
WO2012162188A2 (en) 2011-05-20 2012-11-29 Soft Machines, Inc. Decentralized allocation of resources and interconnect structures to support the execution of instruction sequences by a plurality of engines
US8700879B2 (en) * 2011-08-31 2014-04-15 Micron Technology, Inc. Concurrent memory operations
IN2014CN03678A (de) 2011-11-22 2015-09-25 Soft Machines Inc
US20150039859A1 (en) 2011-11-22 2015-02-05 Soft Machines, Inc. Microprocessor accelerated code optimizer
US9152570B2 (en) * 2012-02-27 2015-10-06 Vmware, Inc. System and method for supporting finer-grained copy-on-write page sizes
US8930674B2 (en) 2012-03-07 2015-01-06 Soft Machines, Inc. Systems and methods for accessing a unified translation lookaside buffer
US9430410B2 (en) 2012-07-30 2016-08-30 Soft Machines, Inc. Systems and methods for supporting a plurality of load accesses of a cache in a single cycle
US9229873B2 (en) 2012-07-30 2016-01-05 Soft Machines, Inc. Systems and methods for supporting a plurality of load and store accesses of a cache
US9710399B2 (en) 2012-07-30 2017-07-18 Intel Corporation Systems and methods for flushing a cache with modified data
US9740612B2 (en) 2012-07-30 2017-08-22 Intel Corporation Systems and methods for maintaining the coherency of a store coalescing cache and a load cache
US9916253B2 (en) 2012-07-30 2018-03-13 Intel Corporation Method and apparatus for supporting a plurality of load accesses of a cache in a single cycle to maintain throughput
US9678882B2 (en) 2012-10-11 2017-06-13 Intel Corporation Systems and methods for non-blocking implementation of cache flush instructions
US9223602B2 (en) * 2012-12-28 2015-12-29 Intel Corporation Processors, methods, and systems to enforce blacklisted paging structure indication values
KR102063656B1 (ko) 2013-03-15 2020-01-09 소프트 머신즈, 인크. 블록들로 그룹화된 멀티스레드 명령어들을 실행하기 위한 방법
US9886279B2 (en) 2013-03-15 2018-02-06 Intel Corporation Method for populating and instruction view data structure by using register template snapshots
US9811342B2 (en) 2013-03-15 2017-11-07 Intel Corporation Method for performing dual dispatch of blocks and half blocks
US10275255B2 (en) 2013-03-15 2019-04-30 Intel Corporation Method for dependency broadcasting through a source organized source view data structure
US9569216B2 (en) 2013-03-15 2017-02-14 Soft Machines, Inc. Method for populating a source view data structure by using register template snapshots
US10140138B2 (en) 2013-03-15 2018-11-27 Intel Corporation Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation
WO2014150806A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for populating register view data structure by using register template snapshots
US9891924B2 (en) 2013-03-15 2018-02-13 Intel Corporation Method for implementing a reduced size register view data structure in a microprocessor
US9904625B2 (en) 2013-03-15 2018-02-27 Intel Corporation Methods, systems and apparatus for predicting the way of a set associative cache
KR20150130510A (ko) 2013-03-15 2015-11-23 소프트 머신즈, 인크. 네이티브 분산된 플래그 아키텍처를 이용하여 게스트 중앙 플래그 아키텍처를 에뮬레이션하는 방법
WO2014150991A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for implementing a reduced size register view data structure in a microprocessor
WO2014150971A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for dependency broadcasting through a block organized source view data structure
US9251088B2 (en) * 2013-10-30 2016-02-02 Globalfoundries Inc. Mechanisms for eliminating a race condition between a hypervisor-performed emulation process requiring a translation operation and a concurrent translation table entry invalidation
US10176111B2 (en) 2016-07-18 2019-01-08 International Business Machines Corporation Host page management using active guest page table indicators
US10162764B2 (en) 2016-07-18 2018-12-25 International Business Machines Corporation Marking page table/page status table entries to indicate memory used to back address translation structures
US10176110B2 (en) 2016-07-18 2019-01-08 International Business Machines Corporation Marking storage keys to indicate memory used to back address translation structures
US10168902B2 (en) 2016-07-18 2019-01-01 International Business Machines Corporation Reducing purging of structures associated with address translation
US10169243B2 (en) 2016-07-18 2019-01-01 International Business Machines Corporation Reducing over-purging of structures associated with address translation
US10180909B2 (en) 2016-07-18 2019-01-15 International Business Machines Corporation Host-based resetting of active use of guest page table indicators
US10802986B2 (en) 2016-07-18 2020-10-13 International Business Machines Corporation Marking to indicate memory used to back address translation structures
US10248573B2 (en) 2016-07-18 2019-04-02 International Business Machines Corporation Managing memory used to back address translation structures
US10282305B2 (en) 2016-07-18 2019-05-07 International Business Machines Corporation Selective purging of entries of structures associated with address translation in a virtualized environment
US10241924B2 (en) 2016-07-18 2019-03-26 International Business Machines Corporation Reducing over-purging of structures associated with address translation using an array of tags
US10176006B2 (en) 2016-07-18 2019-01-08 International Business Machines Corporation Delaying purging of structures associated with address translation
US10223281B2 (en) 2016-07-18 2019-03-05 International Business Machines Corporation Increasing the scope of local purges of structures associated with address translation
US10713177B2 (en) * 2016-09-09 2020-07-14 Intel Corporation Defining virtualized page attributes based on guest page attributes
US10467159B2 (en) 2017-07-14 2019-11-05 Arm Limited Memory node controller
US10353826B2 (en) 2017-07-14 2019-07-16 Arm Limited Method and apparatus for fast context cloning in a data processing system
US10565126B2 (en) 2017-07-14 2020-02-18 Arm Limited Method and apparatus for two-layer copy-on-write
US10489304B2 (en) * 2017-07-14 2019-11-26 Arm Limited Memory address translation
US10592424B2 (en) 2017-07-14 2020-03-17 Arm Limited Range-based memory system
US10534719B2 (en) 2017-07-14 2020-01-14 Arm Limited Memory system for a data processing network
US10613989B2 (en) 2017-07-14 2020-04-07 Arm Limited Fast address translation for virtual machines
CN109710267B (zh) * 2017-10-25 2022-02-08 康烁 基于二进制翻译自修改代码检测方法和装置
US10884850B2 (en) 2018-07-24 2021-01-05 Arm Limited Fault tolerant memory system
US11113094B1 (en) * 2019-08-28 2021-09-07 Parallels International Gmbh Physical memory management for virtual machines

Family Cites Families (153)

* 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
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
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
JPH0883211A (ja) * 1994-09-12 1996-03-26 Mitsubishi Electric Corp データ処理装置
EP0706275B1 (de) * 1994-09-15 2006-01-25 International Business Machines Corporation System und Verfahren zur sicheren Speicherung und Verteilung von Daten unter Verwendung digitaler Unterschriften
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
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
US6093213A (en) * 1995-10-06 2000-07-25 Advanced Micro Devices, Inc. Flexible implementation of a system management mode (SMM) in a processor
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エレクトロニクス株式会社 フラッシュメモリ内蔵マイクロコンピュータ及びそのテスト方法
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
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
US5757604A (en) * 1996-06-27 1998-05-26 Raychem Corporation Surge arrester having grooved and ridged terminals
US5944821A (en) * 1996-07-11 1999-08-31 Compaq Computer Corporation Secure software registration and integrity assessment in a computer system
US6199152B1 (en) * 1996-08-22 2001-03-06 Transmeta Corporation Translated memory protection apparatus for an advanced microprocessor
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
US5935242A (en) * 1996-10-28 1999-08-10 Sun Microsystems, Inc. Method and apparatus for initializing a device
JPH10134008A (ja) * 1996-11-05 1998-05-22 Mitsubishi Electric Corp 半導体装置およびコンピュータシステム
US5852717A (en) 1996-11-20 1998-12-22 Shiva Corporation Performance optimizations for computer networks utilizing HTTP
US5757919A (en) * 1996-12-12 1998-05-26 Intel Corporation Cryptographically protected paging subsystem
US5953502A (en) * 1997-02-13 1999-09-14 Helbig, Sr.; Walter A Method and apparatus for enhancing computer system security
JP4000654B2 (ja) * 1997-02-27 2007-10-31 セイコーエプソン株式会社 半導体装置及び電子機器
US6272637B1 (en) * 1997-04-14 2001-08-07 Dallas Semiconductor Corporation Systems and methods for protecting access to encrypted information
US6044478A (en) * 1997-05-30 2000-03-28 National Semiconductor Corporation Cache with finely granular locked-down regions
US6075938A (en) * 1997-06-10 2000-06-13 The Board Of Trustees Of The Leland Stanford Junior University Virtual machine monitors for scalable multiprocessors
US6175924B1 (en) * 1997-06-20 2001-01-16 International Business Machines Corp. Method and apparatus for protecting application data in secure storage areas
US6035374A (en) * 1997-06-25 2000-03-07 Sun Microsystems, Inc. Method of executing coded instructions in a multiprocessor having shared execution resources including active, nap, and sleep states in accordance with cache miss latency
US5919257A (en) * 1997-08-08 1999-07-06 Novell, Inc. Networked workstation intrusion detection system
DE19735948C1 (de) * 1997-08-19 1998-10-01 Siemens Nixdorf Inf Syst Verfahren zur Verbesserung der Steuerungsmöglichkeit in Datenverarbeitungsanlagen mit Adreßübersetzung
US5935247A (en) * 1997-09-18 1999-08-10 Geneticware Co., Ltd. Computer system having a genetic code that cannot be directly accessed and a method of maintaining the same
US6182089B1 (en) * 1997-09-23 2001-01-30 Silicon Graphics, Inc. Method, system and computer program product for dynamically allocating large memory pages of different sizes
US6085296A (en) * 1997-11-12 2000-07-04 Digital Equipment Corporation Sharing memory pages and page tables among computer processes
US6108644A (en) * 1998-02-19 2000-08-22 At&T Corp. System and method for electronic transactions
US6131166A (en) * 1998-03-13 2000-10-10 Sun Microsystems, Inc. System and method for cross-platform application level power management
US6192455B1 (en) * 1998-03-30 2001-02-20 Intel Corporation Apparatus and method for preventing access to SMRAM space through AGP addressing
US6397242B1 (en) * 1998-05-15 2002-05-28 Vmware, Inc. Virtualization system including a virtual machine monitor for a computer with a segmented architecture
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
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
US6609199B1 (en) * 1998-10-26 2003-08-19 Microsoft Corporation Method and apparatus for authenticating an open system application to a portable IC device
US7194092B1 (en) * 1998-10-26 2007-03-20 Microsoft Corporation Key-based secure storage
US6282650B1 (en) * 1999-01-25 2001-08-28 Intel Corporation Secure public digital watermark
US7111290B1 (en) * 1999-01-28 2006-09-19 Ati International Srl Profiling program execution to identify frequently-executed portions and to assist binary translation
US6560627B1 (en) * 1999-01-28 2003-05-06 Cisco Technology, Inc. Mutual exclusion at the record level with priority inheritance for embedded systems using one semaphore
US6188257B1 (en) * 1999-02-01 2001-02-13 Vlsi Technology, Inc. Power-on-reset logic with secure power down capability
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
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
US6615278B1 (en) * 1999-03-29 2003-09-02 International Business Machines Corporation Cross-platform program, system, and method having a global registry object for mapping registry equivalent functions in an OS/2 operating system environment
US6684326B1 (en) * 1999-03-31 2004-01-27 International Business Machines Corporation Method and system for authenticated boot operations in a computer system of a networked computing environment
US6275933B1 (en) * 1999-04-30 2001-08-14 3Com Corporation Security system for a computerized apparatus
US6301646B1 (en) * 1999-07-30 2001-10-09 Curl Corporation Pointer verification system and method
US6529909B1 (en) * 1999-08-31 2003-03-04 Accenture Llp Method for translating an object attribute converter in an information services patterns environment
US6374317B1 (en) * 1999-10-07 2002-04-16 Intel Corporation Method and apparatus for initializing a computer interface
US6292874B1 (en) * 1999-10-19 2001-09-18 Advanced Technology Materials, Inc. Memory management method and apparatus for partitioning homogeneous memory and restricting access of installed applications to predetermined memory ranges
AU2001251701A1 (en) * 2000-02-25 2001-09-03 Identix Incorporated Secure transaction system
JP3710671B2 (ja) * 2000-03-14 2005-10-26 シャープ株式会社 1チップマイクロコンピュータ及びそれを用いたicカード、並びに1チップマイクロコンピュータのアクセス制御方法
US6678825B1 (en) * 2000-03-31 2004-01-13 Intel Corporation Controlling access to multiple isolated memories in an isolated execution environment
GB0020416D0 (en) * 2000-08-18 2000-10-04 Hewlett Packard Co Trusted system
US7631160B2 (en) * 2001-04-04 2009-12-08 Advanced Micro Devices, Inc. Method and apparatus for securing portions of memory
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
US20030126453A1 (en) * 2001-12-31 2003-07-03 Glew Andrew F. Processor supporting execution of an authenticated code instruction
US7107460B2 (en) * 2002-02-15 2006-09-12 International Business Machines Corporation Method and system for securing enablement access to a data security device
US7343493B2 (en) * 2002-03-28 2008-03-11 Lenovo (Singapore) Pte. Ltd. Encrypted file system using TCPA
US7318141B2 (en) * 2002-12-17 2008-01-08 Intel Corporation Methods and systems to control virtual machines

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
ACM SIGARCH Comp. Arch. News, Vol.19, Nr.3, Mai 1991, S.380-389 *
Hans-Peter Messmer, PC-Hardwarebuch, 5. Auflage, Addison-Wesley, 1998, S. 129-137 *
Intel, Microprocessor and Peripheral Handbook, Vol. 1 Microprocessors, 1988, S. 4-48 bis 4-54 *
Klaus-Dieter Thies, 80486 Systemsoftware-Entwick- lung, Carl Hanser Verlag München Wien, 1992, S. 557-563
Klaus-Dieter Thies, 80486 Systemsoftware-Entwicklung, Carl Hanser Verlag München Wien, 1992, S. 557-563 *

Also Published As

Publication number Publication date
CN1506847A (zh) 2004-06-23
DE10357804A1 (de) 2004-07-08
CN1282928C (zh) 2006-11-01
US7073042B2 (en) 2006-07-04
US20040117593A1 (en) 2004-06-17

Similar Documents

Publication Publication Date Title
DE10357804B4 (de) Neu-Beanspruchung vorhandener Felder in Adressübersetzungsdatenstrukturen zum Erweitern der Kontrolle über Speicherzugriffe
DE102007063960B3 (de) Synchronisieren eines Übersetzungspufers (TLB) mit einer erweiterten Seitenwechseltabelle
US10684800B2 (en) Facilitating processing within computing environments supporting pageable guests
DE112005003859B4 (de) Verwalten von Prozessorressourcen während Architekturereignissen
DE10197121B4 (de) Neuer Prozessormodus zum Begrenzen des Betriebes von auf einer virtuellen Maschine laufender Gast-Software mit Unterstützung eines Virtuelle-Maschine-Monitors
DE102006061939B4 (de) Verfahren und Vorrichtung zum Zugriff auf eine speicherabgebildete Vorrichtung durch einen Gast
DE10393920B4 (de) Verfahren und Systeme zur Steuerung virtueller Maschinen
DE102006015106B4 (de) Bereitstellen eines erweiterten Speicherschutzes
DE10297433B4 (de) Speicherverwaltungseinheit, Verfahren zum Bereitstellen einer Speicherzugriffssicherheit auf der Basis einer linearen Adresse und Prozessor
DE112017001027B4 (de) Seitenfehlerbehebung
US5230069A (en) Apparatus and method for providing private and shared access to host address and data spaces by guest programs in a virtual machine computer system
US8490085B2 (en) Methods and systems for CPU virtualization by maintaining a plurality of virtual privilege leves in a non-privileged mode of a processor
DE69721590T2 (de) Ein bereichsbasiertes seiten-table-walk-bit verwendendes verfahren sowie vorrichtung
KR102294562B1 (ko) 페이지 테이블 데이터 관리
DE112007001988T5 (de) Gemeinsames Nutzen von Informationen durch Gäste in einer Virtuelle-Maschine-Umgebung
DE112015006934T5 (de) Verschachtelte Virtualisierung für virtuelle Maschinenexits
DE102014014076A1 (de) Reduzierte Adressenkonvertierung mit mehreren Seitengrößen
DE112004000464T5 (de) Ungültigmachen von Speichereinträgen, Löschen von Pufferspeicher-Einträgen
DE112013006590T5 (de) Handhabung von Speicherzugriffsvorgängen in einer Datenverarbeitungsvorrichtung
DE112016004297T5 (de) Technologien für mehrstufige virtualisierung
DE112016005919T5 (de) Verfahren und Vorrichtung zum Sub-Seiten-Schreibschutz
DE112016004476T5 (de) Technologien für einen nur-ausführungs-transaktionsarbeitsspeicher
DE112010003942T5 (de) Einrichtung zum Setzen von Schlüsseln ohne Stilllegung
US10120709B2 (en) Guest initiated atomic instructions for shared memory page host copy on write
DE4040992C2 (de) Datenverarbeitungssystem

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8364 No opposition during term of opposition
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee

Effective date: 20140701