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 PDFInfo
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1416—Protection 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/145—Protection 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1036—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address 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.
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-Umgebung100 , in welcher die vorliegende Erfindung betrieben werden kann. Bei diesem Ausführungsbeispiel weist die Plattform-Hardware116 eine Rechnerplattform auf, welche beispielsweise in der Lage sein kann, ein Standardbetriebssystem (OS; Operating System) oder einen Virtuelle-Maschine-Monitor (VMM), wie beispielsweise einen VMM112 auszuführen. Der VMM112 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 VMM112 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 Prozessor118 und einen Speicher120 ein. Der Prozessor118 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 Speicher120 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 Speicher120 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 VMs102 und114 . Die auf jeder VM ablaufende Gast-Software kann ein Gast-Betriebssystem, wie beispielsweise das Gast-Betriebssystem104 oder106 , und verschiedene Gast-Software-Anwendungen108 und110 einschließen. Die Gast-Betriebssysteme104 und106 erwarten, daß sie auf physikalische Ressourcen (beispielsweise Prozessorregister, Speicher und I/O-Einrichtungen) innerhalb der VMs102 und114 , auf welchen die Gast-Betriebssysteme104 und106 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 Anwendungen108 und110 ) zur Verfügung gestellt, eine Mehrzahl von Paging-Techniken verwendet wird, und so weiter. Bei einer Virtuelle-Maschine-Umgebung jedoch müssen der Prozessor118 und der VMM112 eine endgültige Kontrolle über Adreßübersetzungsoperationen haben, um den richtigen Betrieb der VMs102 und114 zu unterstützen und einen Schutz von und zwischen den VMs102 und114 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 Prozessor118 und dem VMM112 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 VMM112 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 VMM112 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 VM102 oder114 und dem VMM112 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 VM102 oder114 und dem VMM112 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 VMM112 modifiziert sein könnte) wiederhergestellt, und die Steuerung wird an das Gast-Betriebssystem104 oder106 oder die Gast-Anwendungen108 oder110 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-Systems200 . Das virtuelle TLB-System200 schließt eine Gast-Adreßübersetzungsdatenstruktur208 und einen virtuellen TLB202 ein. Die Gast-Adreßübersetzungsdatenstruktur208 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ßübersetzungsdatenstruktur208 wird von dem Gast-Betriebssystem verwaltet, welches auf einen Eintrag in der Gast-Adreßübersetzungsdatenstruktur208 zugreifen und diesen modifizieren kann. Einige Einträge in der Gast-Adreßübersetzungsdatenstruktur208 enthalten Felder, die speziell für Betriebszwecke der Software entwickelt wurden. Wie es in2 gezeigt ist, enthält ein Beispieleintrag212 in der Gast-Adreßübersetzungsdatenstruktur208 ein für Software zur Verfügung stehendes Feld216 , 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 TLB204 , der von dem Prozessor verwaltet wird, und eine aktive Adreßübersetzungsdatenstruktur206 , die von dem VMM verwaltet wird. Die aktive Adreßübersetzungsdatenstruktur206 und die Gast-Adreßübersetzungsdatenstruktur208 leiten ihre Formate aus einem von der Architektur definierten Format (zum Beispiel dem IA-32-Format) ab. Der physikalische TLB204 wird von dem Prozessor mit Adreßübersetzungen geladen, die aus der aktiven Adreßübersetzungsdatenstruktur206 abgeleitet sind. - Bei einem Ausführungsbeispiel erzeugt der VMM die aktive Adreßübersetzungsdatenstruktur
206 auf der Grundlage der Gast-Adreßübersetzungsdatenstruktur208 und modifiziert dann periodisch einen oder mehrere Einträge in der aktiven Adreßübersetzungsdatenstruktur206 derart, daß sie den entsprechenden Einträgen in der Gast-Adreßübersetzungsdatenstruktur208 entsprechen. Bei einem Ausführungsbeispiel modifiziert der VMM die aktive Adreßübersetzungsdatenstruktur206 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ßübersetzungsdatenstruktur206 und dem Inhalt der Gast-Adreßübersetzungsdatenstruktur ist. Ein derartiges Ereignis kann beispielsweise ein Versuch des Gast-Betriebssystems, den TLB204 zu manipulieren (zum Beispiel eine Anforderung der Gast-Software zum Ungültig-Machen cache-gespeicherter Adreßübersetzungen in dem TLB204 ) 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 Bitfelder216 aus der Gast-Adreßübersetzungsdatenstruktur208 in die aktive Adreßübersetzungsdatenstruktur206 zu kopieren, da die Bitfelder216 intern von der Gast-Software verwendet werden und für den VMM keine Bedeutung haben. Da demzufolge ein in einem Eintrag der aktiven Adreßübersetzungsdatenstruktur206 enthaltenes Bitfeld214 nicht mit Daten aus der Gast-Adreßübersetzungsdatenstruktur208 ü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 Eintrag210 ) der aktiven Adreßübersetzungsdatenstruktur206 , um Zugriffssteuerindikatoren214 zu speichern, die die Zugreifbarkeit eines von dem Eintrag210 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 Prozesses300 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 (Verarbeitungsblock302 ). 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 (Entscheidungskasten306 ). 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 Entscheidungskasten306 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 (Verarbeitungsblock308 ). 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-Systems400 , das eine Adreßübersetzung in der IA-32-ISA unterstützt. Das System400 enthält einen virtuellen TLB404 , der eine aktive Übersetzungsdatenstruktur enthält, die von einer aktiven Seitentabellenhierarchie406 und einem physikalischen TLB408 repräsentiert wird. Das System400 enthält außerdem eine Gast-Übersetzungsdatenstruktur, die von einer Gast-Seitentabellenhierarchie402 dargestellt wird. Die aktive Seitentabellenhierarchie406 und die Gast-Seitentabellenhierarchie402 leiten ihr Format aus dem von der IA-32-Architektur definierten Format ab. Die Einträge der Gast-Seiten-Tabellenhierarchie402 haben ein herkömmliches Format gemäß der IA-32-ISA. -
5 veranschaulicht das Format502 von Seitenverzeichniseinträgen (PDEs; Page Directory Entries) und das Format504 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 oder510 , welches anzeigt, ob die von dem Eintrag referenzierte Seite gültig ist oder nicht, das Benutzer/Supervisor-Flag (U/S; User/Supervisor)520 oder514 , welches Zugriffe auf die von dem Eintrag referenzierte Seite auf der Grundlage eines Privilegierungsniveaus steuert, und das Lese/Schreib-Flag (R/W-Flag)51 oder512 , 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"-Bits506 und508 . Die AVAIL-Bits506 und508 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-Seitentabellenhierarchie402 überschrieben, wenn der Inhalt der aktiven Seitentabellenhierarchie406 modifiziert wird. Bei einem Ausführungsbeispiel werden die AVAIL-Bits gesetzt, wenn die aktive Seitentabellenhierarchie406 erzeugt wird oder ein neuer Eintrag zu der aktiven Seitentabellenhierarchie406 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-Flags516 in jedem PDE und des P-Flags510 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 Seitentabellenhierarchie406 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-Seitentabellenhierarchie402 in die aktive Seitentabellenhierarchie406 , womit die aktive Seitentabellenhierarchie406 wieder gefüllt wird. Während des Neuauffüllens werden die AVAIL-Bits in der Gast-Seitentabellenhierarchie402 ignoriert (das heißt die AVAIL-Bits werden nicht in die aktive Seitentabellenhierarchie406 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 Seitentabellenhierarchie406 nicht immer mit der Gast-Seitentabellenhierarchie402 konsistent ist. Das heißt, die aktive Seitentabellenhierarchie406 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 Hierarchien402 und406 Probleme ergeben, gibt das Gast-Betriebssystem einen der Befehle416 an den physikalischen TLB408 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 Seitentabellenhierarchie406 (beispielsweise entfernt er die Einträge, auf die von der Gast-Software in dem ausgegebenen Befehl Bezug genommen wird, aus der aktiven Seitentabellenhierarchie406 ). Während der Modifikation werden die AVAIL-Bits in der Gast-Seitentabellenhierarchie402 nicht in die aktive Seitentabellenhierarchie406 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)
- 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. - Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass wenigstens einer der Zugriffssteuerindikatoren vor dem Modifizieren des Eintrags (
210 ) der aktiven Adressübersetzungsdatenstruktur gesetzt wird (302 ). - Verfahren nach Anspruch 2, dadurch gekennzeichnet, dass der Zugriffssteuerindikator gesetzt wird, wenn der Eintrag (
210 ) erzeugt wird. - Verfahren nach einem der Ansprüche 1–3, dadurch gekennzeichnet, dass die aktive Adressübersetzungsdatenstruktur (
206 ) eine aktive Seitentabellenhierarchie ist. - 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. - 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. - 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.
- 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.
- 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.
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)
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)
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 |
-
2002
- 2002-12-12 US US10/319,900 patent/US7073042B2/en not_active Expired - Fee Related
-
2003
- 2003-12-10 CN CNB2003101172967A patent/CN1282928C/zh not_active Expired - Fee Related
- 2003-12-10 DE DE10357804A patent/DE10357804B4/de not_active Expired - Fee Related
Non-Patent Citations (5)
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 |