DE3587039T2 - Computer mit virtuellem maschinenmodus und mehrfachen schutzringen. - Google Patents

Computer mit virtuellem maschinenmodus und mehrfachen schutzringen.

Info

Publication number
DE3587039T2
DE3587039T2 DE8585402639T DE3587039T DE3587039T2 DE 3587039 T2 DE3587039 T2 DE 3587039T2 DE 8585402639 T DE8585402639 T DE 8585402639T DE 3587039 T DE3587039 T DE 3587039T DE 3587039 T2 DE3587039 T2 DE 3587039T2
Authority
DE
Germany
Prior art keywords
processor
virtual
mode
operating
privileged
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
DE8585402639T
Other languages
English (en)
Other versions
DE3587039D1 (de
Inventor
Paul A Karger
Timothy E Leonard
Andrew H Mason
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.)
Digital Equipment Corp
Original Assignee
Digital Equipment 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 Digital Equipment Corp filed Critical Digital Equipment Corp
Publication of DE3587039D1 publication Critical patent/DE3587039D1/de
Application granted granted Critical
Publication of DE3587039T2 publication Critical patent/DE3587039T2/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/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1491Protection against unauthorised use of memory or access to memory by checking the subject access rights in a hierarchical protection system, e.g. privilege levels, memory rings
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45566Nested virtual machines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Storage Device Security (AREA)

Description

    Hintergrund der Erfindung 1. Gebiet der Erfindung
  • Die vorliegende Erfindung betrifft allgemein das Gebiet digitaler Datenverarbeitungssysteme (Computer) und insbesondere Computersysteme, die in einem virtuellen Modus arbeiten, um eine oder mehrere virtuelle Maschinen bereit zustellen, und die mehr als zwei Schutzringe haben, die in einer Hierarchie angeordnet sind, den Zugriff auf Stellen im Speicher steuern und die Ausführbarkeit bestimmter Befehle steuern. Es ist erwünscht, Computer zu haben, die den privilegiertesten Schutzring für den realen Modus reservieren, um einen ordnungsgemäßen Übergang und eine ordnungsgemäße Zuweisung von Quellen des Computersystems unter den Benutzern im virtuellen Modus zu erlauben. Mittels der vorliegenden Erfindung werden zumindest zwei Schutzringe des virtuellen Modus komprimiert, d. h. sie werden derart ausgebildet, daß sie einem einzigen Schutzring entsprechen, der vom Prozessor verwendet wird, während in einem realen (nicht virtuellen) Modus gearbeitet wird. Die Kompression ist derart, daß zumindest der privilegierteste Ring der Maschine, der im realen Modus arbeitet, keinen entsprechenden Ring im virtuellen Modus hat. Anders ausgedrückt entspricht der privilegierteste Ring des Prozessors, der im virtuellen Modus arbeitet, einem weniger als maximal privilegierten Ring des Prozessors, wenn er im realen Modus arbeitet, wobei zwei der Ringe des virtuellen Modus einem der Ringe des realen Modus entsprechen. Dementsprechend ermöglicht die Kompression, daß der Computer erscheint, zumindest soviele Schutzringe im virtuellen Modus zu haben als im realen Modus vorgesehen sind.
  • 2. Beschreibung des Stands der Technik
  • Ein digitales Datenverarbeitungssystem enthält im allgemeinen einen Prozessor, einen Speicher und ein oder mehrere Eingangs/Ausgangs-Einheiten, von denen alle durch einen oder mehrere Busse miteinander verbunden sind. Der Speicher speichert die Daten in adressierbaren Speicherstellen. Diese Daten enthalten sowohl Operanden als auch Befehle zum Verarbeiten der Operanden. Der Prozessor bewirkt, daß Daten zu der Speichereinheit übertragen werden oder von der Speichereinheit geholt werden, interpretiert die ankommenden Daten als entweder Befehle oder als Operanden und verarbeitet die Operanden in Übereinstimmung mit den Befehlen. Die Ergebnisse werden dann in adressierbaren Stellen im Speicher abgespeichert. Die Eingang/Ausgangs-Einheiten können auch mit dem Speicher kommunizieren, um Daten in das System hinein zu übertragen und um verarbeitete Daten von ihm zu erhalten. Die Eingangs/Ausgangs-Einheiten arbeiten normalerweise in Übereinstimmung mit Steuerinformationen, die ihnen vom Prozessor zugeführt werden. Die Eingangs/Ausgangs-Einheiten können z. B. Drucker, Fernschreiber oder Video-Anzeigeterminals enthalten und sie können auch Sekundär-Datenspeichervorrichtungen, wie z. B. Plattenlaufwerke oder Bandlaufwerke, umfassen.
  • Die ersten verfügbaren Computersysteme waren relativ groß, teuer und signifikant langsamer, als aktuelle Systeme. Typische frühe Systeme verarbeiteten ein Programm zu einem Zeitpunkt, und zwar vom anfänglichen Empfangen der Befehle und Daten, über die Verarbeitung von Operationen zum letztendlichen Ausdrucken der Ergebnisse, bevor ein anderes Programm gestartet wurde.
  • Mit abnehmenden Kosten von Speicher- und Logikschaltungen und mit schneller werdenden Logikschaltungen wurden die Speicher immer größer und die Verarbeitungsgeschwindigkeiten stiegen an. Im Ergebnis wurden Computersysteme entwickelt, in denen mehrere Programme gleichzeitig in den Speicher geladen werden konnten und in einer verschachtelten Weise verarbeitet wurden. Wenn z. B. ein Programm eine Systemquelle verwenden mußte, wie z. B. eine langsame Eingangs/Ausgangs-Vorrichtung, wie ein Drucker oder ein Plattenlaufwerk, die dann für ein weiteres Programm verwendet wurde, konnten die Verwaltungsprogramme des Computersystems, d. h. das Betriebssystem, die Verarbeitung von Abschnitten anderer Programme einplanen, bis die Vorrichtung verfügbar war. Wenn die Quelle verfügbar wurde, ging das Betriebssystem zurück zur Verarbeitung des ersten Programms. Dieses "Multi-Programming" ließ eine kontinuierlichere Ausnutzung aller Computerquellen zu, indem zwischen den Programmen geschaltet wurde, wenn benötigte Quelleneinrichtungen nicht sofort verfügbar waren.
  • Mit Hinsicht auf die aufwendigen frühen Computersysteme, waren die Benutzer nicht dazu in der Lage, die Kosten für ein gesamtes Computersystem zu rechtfertigen. Die Computersysteme wurden deshalb entwickelt, die den Benutzern erlaubten, auf sie in einer "time sharing" Basis zuzugreifen. In solchen Teilnehmersystemen kann eine Anzahl von Benutzern gleichzeitig unterschiedliche Anwendungen in einem einzigen System laufen lassen. Das Betriebssystem hält mit den Daten und den Befehlen von jedem Benutzer schritt, plant die Abarbeitung der Anwendungsprogramme auf einer umlaufenden Basis ein und überträgt die verarbeiteten Daten zu den Benutzern, nachdem die Verarbeitung abgeschlossen wurde.
  • Ein Problem bei typischen Teilnehmersystemen besteht darin, daß sie im allgemeinen ein einziges Time-Sharing-Betriebssystem verwenden, unter dem alle Anwendungsprogrammen laufen. Einige Typen von Anwendungsprogrammen laufen unter bestimmten Betriebssystemen besser als andere, aber die Betriebssysteme, die in Time-Sharing-Systemen verwendet wurden, haben die Auswahl anderer Betriebssysteme nicht zugelassen, die für bestimmte Anwendungen besser gewesen wären.
  • Des weiteren lassen typische Time-Sharing-Systeme einen geeigneten direkten Zugriff des Benutzers auf die Systemquellen-Einrichtungen nicht zu. Z.B., obwohl ein reelles Computersystem identifizierbare Eingangs/Ausgangs-Einheiten enthielten, wie z. B. Plattenlaufwerke und Bandlaufwerke, Drucker usw. und virtuelle oder zuordenbare Speicher, die identifizierbare Seiten und/oder Segmente enthalten, blieben diese Einrichtungen gegenüber dem Benutzer des Betriebssystems verborgen. Der Benutzer war nicht dazu in der Lage, auf eine bestimmte Stelle auf der Platte oder auf eine bestimmte Stelle im Speicher in einem Time-Sharing-System zuzugreifen.
  • Um den Benutzern zu ermöglichen, unter verschiedenen Betriebssystemen auszuwählen und um derart zu arbeiten, daß sie direkten Zugriff auf die System-Quellen-Einrichtungen haben, wurden Architekturen virtueller Maschinen entwickelt, in denen ein Virtuell-Maschinen-Monitor bzw. ein Überwachungssystem im wesentlichen System-Quellen-Einrichtungen zwischen einer Anzahl von Benutzern gemultiplext hat. Der Virtuell-Maschinen-Monitor, ein Programm, versah jeden Benutzer mit einer Virtuell-Maschine, die dem Benutzer derart erschien, als würde sie Quellen- Einrichtungen, wie ein gesamtes Computersystem, aufweisen. Solche virtuellen Maschinen konnten entsprechend den Quellen-Einrichtungen des Computersystems sein oder die Quellen-Einrichtung des Computersystems haben, einen Untersatz der Quellen- Einrichtungen des Computersystems oder zusätzliche Quellen-Einrichtungen haben, die nicht physikalisch im Computersystem vorhanden waren, und sie konnten ziemlich unterschiedlich in der Architektur zu dem Computersystem sein, das die virtuellen Maschinen bereitstellt. Tatsächlich konnten die virtuellen Maschinen unterschiedliche Befehlssätze zu den Befehlssätzen des tatsächlichen Computersystems haben, das die virtuelle Maschinen bereitstellt. Das Computersystem selbst, einschließlich des Virtuell-Maschinen-Monitors wurde als "reale" Maschine bezeichnet, oder als eine Maschine, die im "realen" Modus arbeitet, wohingegen der Satz von Quellen-Einrichtungen, der für den Benutzer verfügbar war, als "virtuelle" Maschine bezeichnet wurde, oder als eine Maschine, die im "virtuell" Modus arbeitet. Ein Benutzer einer virtuellen Maschine konnte direkt jedes der Betriebssystemprogramme und Anwendungsprogramme verwenden, die auch auf der realen Maschine liefen und es schien so, daß er direkten Zugriff auf die Systemquellen-Einrichtungen hatte, die der virtuellen Maschine durch den virtuellen Maschinen-Monitor bereitgestellt wurden.
  • Da Computersysteme von mehreren Benutzern zur gleichen Zeit verwendet werden können, enthalten sie allgemein Einrichtungen, die eine Barriere zwischen den Anwendungsprogrammen der Benutzer und den System Quellen-Einrichtungen erzeugen, um die System-Quellen-Einrichtungen gegenüber einer möglichen Beschädigung durch die Benutzerprogramme zu schützen. Viele Systeme enthalten Einrichtungs-Quellen, wie z. B. Compiler und Interpreter zum Umwandeln von Programmen, die in einer höheren Programmiersprache geschrieben sind, in einen Maschinencode, der vom Prozessor ausführbar ist. Es ist allgemein nicht erwünscht, einem Benutzerprogramm zu erlauben, direkt auf Speicherstellen zuzugreifen, die den Compilern oder Interpretern zugewiesen sind. Ähnlich ist es allgemein unerwünscht, einem Benutzerprogramm zu erlauben, direkt auf privilegierte Bereiche des Speichers zuzugreifen, die Programme enthalten, oder "privilegierte" Befehle zu verwenden, die von dem Betriebssystem verwendet werden, um die Quellen-Einrichtungen des Computersystems zu verwalten. Z.B. ist es nicht erwünscht, einem Benutzerprogramm zu erlauben, den Prozessor anzuhalten, und ein solcher vergleichbarer Befehl ist privilegiert. D.h., daß der Befehl nur in einem Betriebssystemprogramm sein kann, mit dem der Prozessor in einem privilegierten Betriebsmodus arbeitet.
  • Dementsprechend sind die Computersysteme mit "Schutzringen" versehen worden, die eine Hierarchie von Schutzniveaus haben, die Programme, welche System-Quellen-Einrichtungen steuern, gegenüber anderen Programmen abschirmen, wie z. B. Benutzerprogrammen, und die Zugriff zu diesen Programmen nur in einer kontrollierten Art und Weise erlauben. Einige Computersysteme, wie z. B. jene, die von der International Business Machines Corporation (IBM) verkauft werden, haben zwei Schutzringe, die als Überwachungsmodus und als Problem-Modus implementiert sind. Der Problem-Modus erlaubt die Ausführung von Anwendungsprogrammen und der Überwachungs-Modus erlaubt die Ausführung aller anderen Typen von Programmen.
  • Andere Computersysteme, z. B. die VAX-11 Familie der Systeme, die vom Anmelder der vorliegenden Erfindung verkauft werden, haben mehrere Schutzringe, die verschiedene Schutzniveaus bereitstellen. In der zuvor erwähnten VAX-11 Familie sind vier Schutzringe vorgesehen, die als Kernbetriebsmodus, Ausführungsbetriebsmodus, Überwachungsbetriebsmodus und Benutzerbetriebsmodus bezeichnet werden, und zwar in dieser Reihenfolge mit abnehmenden Privileg. Die Eingangs/Ausgangsfunktionen und Übertragungen zu und aus dem Speicher werden im Kernmodus durchgeführt, der der einzige Modus ist, in dem privilegierte Befehle ausgeführt werden können. Verschiedene Systemquellen, wie z. B. Compiler und Interpreter, und einige Programme, die Videoanzeige-Terminals steuern, können von Programmen verwaltet werden, die in den Ausführungs- und Überwachungsmodi ausgeführt werden. Die Anwendungsprogramme werden im Benutzermodus verarbeitet.
  • Die VAX-11 Systeme verwenden die Betriebsmodi in zwei Arten. In der ersten Art, wenn ein Programmbefehl ein privilegierter Befehl ist, bestimmt der Prozessor dann, ob er in einem Modus arbeitet, der allgemein der Kernmodus sein muß, in dem er den Befehl ausführen kann, bevor er tatsächlich den Befehl ausführt. Wenn er im erforderlichen Betriebsmodus ist, führt er den Befehl aus, und unterbricht ansonsten zu einer Ausnahmeroutine.
  • Der zweite Art, wie er die Betriebsmodi verwendet, besteht, darin, zu überprüfen, ob das gegenwärtige Programm von einer Stelle im Speicher lesen und/oder in eine Stelle des Speichers einschreiben kann, d. h. auf eine Speicherstelle zugreifen kann. Jede Stelle im Speicher, oder genauer jede Seite, ist nur zugreifbar, wenn der Prozessor in einem vorgegebenen Betriebsmodus ist, da die VAX-11 einen seitenweisen, virtuellen Speicher hat. Desweiteren kann jede Seite in einer bestimmten Art und Weise zugreifbar sein. Z.B. kann eine Seite durch Programme in bestimmten Betriebsmodi gelesen werden, aber nicht beschrieben werden, oder sie kann gelesen werden und/oder durch Programme beschrieben werden in verschiedenen Kombinationen von Betriebsmodi. Wenn der Prozessor z. B. Programme in einem anderen als dem Kernmodus verarbeitet, darf er nicht dazu in der Lage sein, auf Abschnitte des Speichers, die für Programme reserviert sind, die im Kernmodus arbeiten, zuzugreifen. In einigen Fällen jedoch können Abschnitte des Speichers, die von Programmen beschrieben werden können, die im Kernbetriebsmodus verarbeitet werden, auch gelesen werden, aber nicht beschrieben werden, oder sowohl gelesen als auch beschrieben werden von Programmen, die in anderen Betriebsmodi verarbeitet werden.
  • Eine virtuelle Maschine in einem Computersystem mit Schutzringen vorzusehen, hat sich als schwierig herausgestellt, außer im reduzierten Fall von nur zwei Schutzringen, wie bei den Systemen, die von der IBM geliefert werden. In den IBM Systemen wird der virtuell-Maschinen-Monitor im Überwachungsmodus gefahren, und alle anderen Programme, einschließlich der Betriebssystemprogramme werden im Problemmodus der realen Maschine gefahren.
  • Kein bekanntes Computersystem mit mehr als zwei Schutzringen ist jedoch auch mit einem virtuellen Betriebsmodus versehen worden. Eine Anzahl von Techniken ist vorgeschlagen worden, um einen solchen virtuellen Modus bereit zustellen, und zwar einschließlich:
  • 1. Die virtuellen Ringe werden gleichen realen Ringen zugeordnet und alle Befehle, die in dem privilegiertesten Ring der virtuellen Maschine ausgeführt werden, werden dazu gezwungen, zu dem Virtuell-Maschinen-Monitor zu unterbrechen. Der Virtuell-Maschinen-Monitor würde dann diese Befehle emulieren. Dies würde jedoch in einer inpraktikablen Erweiterung des Virtuell- Maschinen-Monitors resultieren, da der Virtuell-Maschinen-Monitor Emulationsroutinen für alle Befehle im Befehlssatz des Prozessors haben müßte, unabhängig davon, ob die Befehle privilegiert sind oder nicht und ob die Prozedur, die vom Prozessor verwendet wird, um die Befehle auszuführen, durch das Hinzufügen der Virtuell-Maschinen-Eigenschaft geändert wird oder nicht. Desweiteren würde ein Emulation aller Befehle im privilegiertesten Ring in einer wesentlichen Reduktion der Leistungsfähigkeit bzw. Geschwindigkeit des Systems resultieren, da die Emulation der Befehle wesentlich mehr Zeit als die direkte Ausführung durch den Prozessor erfordert.
  • 2. Ein Ring-Verschiebungsregister wird dem Computersystem hinzugefügt, um eine Konstante jeder virtuellen Ringnummer hinzuzufügen, um die entsprechende Ringnummer zu erhalten, wie sie vom Computersystem gesehen wird. Die virtuelle Maschine würde jedoch mit weniger Schutzringen als die reale Maschine versehen sein, wobei der Unterschied durch den Wert in dem Ringverschiebungsregister bestimmt wird. Dies ist nicht erwünscht, wenn es beabsichtigt ist, der virtuellen Maschine zu erlauben, die reale Maschine zu emulieren, was erfordert, daß die virtuelle Maschine die gleiche Anzahl von Ringen wie die reale Maschine hat.
  • 3. Ein virtueller Rings wird dem nächst höheren benummerten realen Ring (d. h. dem nächsten, weniger privilegierten, realen Ring) zugeordnet, aber zwei benachbarte virtueller Ringe werden dem gleichen realen Ring zugeordnet. Dies wurde als schwierig betrachtet, wegen der potentiellen Sichtbarkeit der Ringnummer für das Programm, das verarbeitet wird. Ein weiteres wesentliches Problem, das mit der absoluten Interpretation der physikalischen Ringnummer in Verbindung mit gewissen Befehlen zu tun hat. In der zuvor erwähnten VAX-11 Architektur sind die Ringnummern in den CHANGE MODE Befehlen sichtbar, die den momentanen Betriebsmodus zwischen dem Kernmodus, dem Ausführungsmodus, dem Überwachungsmodus und dem Benutzerbetriebsmodus ändern. [Siehe z. B. R.P. Goldberg, Architectural Principles für Virtual Computer Systems (Ph.D. Thesis, Harvard University, Cambridge, Mass., ESD-TR-73-105, HQ Electronics Systems Division, Hanscom Field, Bedford, Mass., Februar 1973].
  • Wie angemerkt wurde, werden die Schutzringe dazu verwendet, den Zugriff auf Seiten im Speicher zu steuern, und den Prozessor zu sperren, gewisse privilegierte Befehle auszuführen, wenn er nicht in einem vorgegebenen Betriebsmodus ist. Somit, wenn der Prozessor die Verarbeitung eines des Befehls beginnt, muß er zwei Bestimmungen machen, zuerst muß der Prozessor bestimmen, ob der Befehl in dem gegenwärtigen Betriebsmodus ausführbar ist. Zweitens muß der Prozessor bestimmen, ob die Operanden, wenn welche vorhanden sind, im Speicher sind, und ob sie in Seiten sind, die für den Betriebsmodus verfügbar sind, unter dem das Programm läuft. D.h., der Prozessor bestimmt, daß ein Seitenfehler oder eine Zugriffsverletzung nicht auftritt, wenn er versucht, die Operanden zu lesen. Diese beiden Operationen werden als "Überprüfungen (probes)" bezeichnet. In der VAX-11 ist der Zugriffscode, der die Verfügbarkeit der Seiten, die die Operanden enthalten, im Seitentabelleneintrag vorgesehen, der zum Umsetzen der virtuellen Adressen in physikalische Adressen verwendet wird.
  • In allen bekannten Prozessoren bestimmen die Prozessoren zuerst, ob sie einen Befehlen ausführen können, bevor sie die Zugreifbarkeit von Operanden testen. Wenn der Prozessor jedoch zu einem Virtuell-Maschinen-Monitor unterbricht, um den Befehl zu emulieren, muß der Monitor die Zugreifbarkeit der Seiten, die Operanden enthalten, bestimmen. Die Verwendung dieser Fähigkeit in einem Virtuell-Maschinen-Monitor ist jedoch stark redundant bezüglich der gleichen Fähigkeit im Prozessor.
  • Überblick über die Erfindung
  • Gemäß einem kurzen Überblick schafft die Erfindung einen Prozessor, wie er im Anspruch 1 beansprucht wird. Der Prozessor weist mehr als zwei Schutzringe auf, die eine Hierarchie aus Schutzniveaus definieren, von denen jedes mit einem Betriebsmodus verbunden ist, und enthält weiterhin einen Virtuell-Maschinen-Monitor, der virtuelle Maschinen, die das tatsächliche Computersystem mit dem Prozessor aufweisen, der in einem virtuellen Modus arbeitet, einer Vielzahl von Benutzern zur Verfügung stellt. Zwei oder mehr Betriebsmodi des Prozessors im virtuellen Modus werden derart komprimiert, daß sie als einzelner Modus im realen oder nicht-virtuellen Modus behandelt werden, so daß (1) der privilegierteste Betriebsmodus im Realmodus keinen entsprechenden virtuellen Betriebsmodus hat und der privilegierteste Betriebsmodus im virtuellen Modus weniger privilegiert als der privilegierteste Betriebsmodus im realen Modus ist und so daß (2) der am wenigsten privilegierte Betriebsmodus des virtuellen Modus wenigstens so privilegiert wie der am wenigsten privilegierte Betriebsmodus des Realmodus ist.
  • In einer Ausführungsform wird der privilegierteste und der zweitprivilegierteste virtuelle Betriebsmodus komprimiert, um dem zweitprivilegiertesten physikalischen Betriebsmodus zu entsprechen. Dies wird, wie folgt durchgeführt. Ein separates Statuswort wird für den virtuellen Modus vorgesehen und ein separater Stapelzeiger wird vorgesehen, der für einen der komprimierten virtuellen Betriebsmodi verwendet wird. Der Virtuell- Maschinen-Monitor kann einen Befehl emulieren und, wenn er die Zugreifbarkeit auf eine Speicherstelle für Programme, die in dem privilegiertesten Betriebsmodus arbeiten, überprüft, testet er tatsächlich die Zugreifbarkeit der Stellen für die Programme, die in dem zweitprivilegiertesten Betriebsmodus arbeiten. Für ein Programm, das vom Prozessor im virtuellen Modus verarbeitet wird, erscheint der Prozessor derart, daß er die volle Anzahl von Schutzringen enthält, die von der realen Maschine bereitgestellt werden.
  • Gemäß einem weiteren Aspekt der vorliegenden Erfindung überprüft der Prozessor immer dann, wenn ein Befehl gelesen wird, und bestimmt, ob die Operanden im Speicher sind und für das Programm im gegenwärtigen Betriebsmodus zugreifbar sind. Wenn sie dies sind, überprüft der Prozessor den Betriebscode, um zu bestimmen, ob der Befehl im gegenwärtigen Betriebsmodus ausgeführt werden kann. Wenn er ausgeführt werden kann, liest der Prozessor die Operanden und führt den Befehl aus. Wenn der Prozessor im virtuellen Modus arbeitet, und insbesondere in seinem privilegiertesten Betriebsmodus, kann er zum Virtuell-Maschinen-Monitor unterbrechen, um den Befehl zu behandeln. Die Reihenfolge, mit der die Operanden und die Befehle überprüft werden, erlaubt es, daß der Virtuell-Maschinen-Monitor vereinfacht werden kann, da er nicht bestimmen muß, ob die Operanden durch das Programm im gegenwärtigen Betriebsmodus nach der Unterbrechung zum Monitor zugreifbar sind.
  • Kurzbeschreibung der Zeichnungen
  • Die vorliegende Erfindung wird in Einzelheiten durch die anhängenden Ansprüche weitergebildet. Die obenstehenden und weiteren Vorteile der vorliegenden Erfindung können besser durch Bezug auf die nachfolgende Beschreibung in Verbindung mit den beiliegenden Zeichnungen verstanden werden, in denen:
  • Fig. 1A in allgemeiner Blockdiagrammform ein Computersystem zeigt, das in Übereinstimmung mit der vorliegenden Erfindung aufgebaut ist;
  • Fig. 1B die Zuweisung von Quelleneinrichtungen des Computersystems, das in Fig. 1A gezeigt wird, für drei virtuelle Computersysteme zeigt;
  • Fig. 2A ein Diagramm ist, das verschiedene Betriebsmodi zeigt, die auf der realen Maschine und der virtuellen Maschine verfügbar sind, und das die priviliegierte Beziehung zwischen unterschiedlichen Betriebsmodi zeigt;
  • Fig. 2B eine Tabelle ist, die die Korrespondenz zwischen Betriebsmodinummern und den verschiedenen Betriebsmodi, die in Figur 2A gezeigt werden, zeigt;
  • Fig. 2C und 2D Diagramme sind, die zur Erläuterung spezifischer Computersysteme zum Ausführen der vorliegenden Erfindung nützlich sind;
  • Fig. 3A bis 3C die Register zeigen, die in dem Computersystem nach Fig. 1A vorgesehen sind;
  • Fig. 3D-1 und 3D-2 verschiedene Felder in einem Prozessor- Statuslangwort und in einem Virtuell-Maschinen-Statuslangwort des Computersystems nach Fig. 1A zeigen;
  • Fig. 4 ein Flußdiagramm ist, das die Schritte zeigt, die von dem Computersystem nach Fig. 1A beim Überprüfen der Operanden und Betriebscodes eines Befehls durchgeführt werden, um zu bestimmen, ob auf die Operanden zugegriffen werden kann und ob die Befehle vom Computersystem in verschiedenen Betriebsmodi ausgeführt werden können;
  • Fig. 5 bis 9 die Operationen zeigen, die vom Prozessor nach Fig. 1A beim Verarbeiten verschiedener Befehle durchgeführt werden.
  • Detaillierte Beschreibung einer erläuternden Ausführungsform 1. Allgemeine Beschreibung
  • Die vorliegende Erfindung wird in Verbindung mit einem VAX-11 Computersystem, das vom Anmelder der vorliegenden Anmeldung verkauft wird, beschrieben. Ein bekanntes- VAX-11 Computersystem, das die vorliegende Erfindung nicht enthält, wird in dem VAX-11 Architecture Reference Manual, Veröffentlichungsnummer EK-VAXAR-RM-001, Revision 6.1, 20. Mai 1982 beschrieben, das vom Anmelder der vorliegenden Anmeldung verkauft wird.
  • Wie in der Fig. 1A exemplarisch dargestellt ist, weist ein Computersystem, das in Übereinstimmung mit der vorliegenden Erfindung aufgebaut ist, eine zentrale Verarbeitungseinheit 10, einen Speicher 11 und ein oder mehrere Eingangs/Ausgangseinheiten 12 auf. Der Prozessor 10 führt Befehle aus, die in adressierbaren Speicherstellen des Speichers 11 gespeichert sind. Die Befehle identifizieren Operationen, die bezüglich Operanden durchgeführt werden sollen, die ebenfalls in adressierbaren Speicherstellen im Speicher abgespeichert sind. Die Befehle und Operanden werden vom Prozessor 10 geholt, wenn sie benötigt werden, und verarbeitete Daten werden an den Speicher zur Speicherung zurückgegeben.
  • Der Prozessor überträgt auch Steuerinformationen zu den Eingangs/Ausgangs-Einheiten, die sie dazu freigeben, ausgewählte Operationen durchzuführen, wie z. B. die Übertragung von Daten zu oder das Auswählen von Daten von dem Speicher 11. Diese Daten können Befehle, Operanden, die zum Speicher für die spätere Verarbeitung durch den Prozessor 10 übertragen werden können, oder verarbeitete Daten enthalten, die aus dem Speicher zur Speicherung, zur Anzeige oder zur Übertragung zu anderen Systemen ausgelesen werden.
  • Die Konsole des Operators (nicht gezeigt), die mit dem Prozessor 10 verbunden ist, dient als Schnittstelle des Operators. Sie erlaubt dem Operator, Daten zu überprüfen und abzulegen, den Betrieb des Prozessors anzuhalten oder den Prozessor durch eine Sequenz von Befehlen schrittweise durchlaufen zu lassen und die Antworten des Prozessors in Antwort darauf zu bestimmen. Sie ermöglicht dem Operator auch das System über eine Hochladeprozedur (bootstrap procedure) hochzuladen und verschiedene Diagnosetests für das gesamte Datenverarbeitungssystem durchzuführen.
  • Das Datenverarbeitungssystem kann verschiedene Typen von Eingangs/Ausgangs-Einheiten enthalten, die z. B. Sekundärspeichereinheiten, wie z. B. Plattenlaufwerke 13, Drucker 14 und Kommunikationsschnittstellen 15, die die Übertragung von Daten zu oder den Empfang von Daten von Telefonleitungen oder Mikrowellenverbindungen oder ähnlichem erlauben, enthalten, wobei alle Einheiten mit der CPU und mit dem Speicher über ein oder mehrere Schnittstellen 16 verbunden sind. Zudem enthalten die Eingangs/Ausgangs-Einheiten 12 ein oder mehrere Videoanzeigeterminals 16, die auch mit dem Prozessor und dem Speicher über Schnittstellen 17 verbunden sind, um den Benutzern zu erlauben, das System zu verwenden.
  • Das System, das in der Fig. 1A dargestellt ist, enthält auch einen Virtuell-Maschinen-Monitor 20, der die Quelleneinrichtungen, die durch die CPU 10, den Speicher 11 und die Speicher- Kommunikation- und Druckeinheiten, die mit diesen verbunden sind, bereitgestellt werden, und andere Quelleneinrichtungen, die nicht physikalisch in diesen Einheiten vorhanden sind, aber durch diese emuliert werden können, für Benutzer an den verschiedenen Videoanzeigeterminals 17 verfügbar macht. Mittels des Virtuell-Maschinen-Monitors 20 erscheint das System, das in Fig. 1A dargestellt ist, so, als würden mehrere separate Systeme, die als "virtuelle Maschinen" bezeichnet werden, wie in Fig. 1B gezeigt wird, vorhanden sein, die unterschiedliche Quelleneinrichtungen und Betriebssysteme haben können.
  • Fig. 1B zeigt die Quelleneinrichtungen, die von drei exemplarischen virtuellen Maschinen bereitgestellt werden, die tatsächlich durch das Computersystem nach Fig. 1A bereitgestellt werden. Die virtuellen Maschinen, die mit dem Buchstaben "A", "B" und "C" benannt sind, haben jeweils eine CPU, einen Speicher und verschiedene Abschnitte von Eingangs/Ausgangs-Einheiten 12 (Fig. 1A), und jede von ihnen enthält ein oder mehrere Videoanzeigeterminals 17. Z.B. enthält die virtuelle Maschine "A" (Fig. 1B) ein einziges Videoanzeigeterminal 17, das über eine Schnittstelle 18A verbunden ist, und ein Betriebssystem OP SYS1 laufen läßt. Die virtuelle Maschine "A" stellt die Quelleneinrichtungen einer CPU 10A zur Verfügung, die der CPU 10 entsprechen kann. Sie stellt als Quelleneinrichtungen auch einen Speicher 11A, eine Eingangs/Ausgangs-Schnittstelle 16A, eine Platteneinrichtung 13A, eine Druckereinrichtung 14A und Kommunikationen über eine Kommunikationsschnittstelleneinrichtung 15A zur Verfügung. Der Speicher 11A kann dem Speicher 11 entsprechen, d. h., so viele Stellen wie der Speicher 11 haben, oder er kann einem Untersatz des Speichers 11 in der realen Maschine, die in Fig. 1A gezeigt wird, entsprechen, oder er kann scheinbar mehr Stellen haben als die reale Maschine. Der Virtuell-Maschinen-Monitor kann die zusätzlichen Speicherstellen emulieren, indem er ungebrauchte Daten auf den Plattenlaufwerken 13 der realen Maschine speichert. Ähnlich kann die Platteneinrichtung 13A einer Platte 13 der Fig. 1A entsprechen, oder sie kann ein oder mehreren Sektoren, Spuren oder Zylindern von einer oder mehreren Platten 13 in einer realen Maschine, die in Fig. 1A gezeigt wird, entsprechen. Ähnlich kann die virtuelle Maschine "A" eine Druckereinrichtung 14A enthalten. Die Druckereinrichtung 14A repräsentiert die Verwendung durch die virtuelle Maschine "A" des Druckers 14 (Fig. 1A) durch die virtuelle Maschine "A". Ähnlich kann die Kommunikationsschnittstelleneinrichtung 15A die Verwendung durch die virtuelle Maschine A der Kommunikationsschnittstelle 15 wiedergeben.
  • Die virtuelle Maschine B enthält eine CPU 10B und einen Speicher 11B, die mit zwei Videoanzeigeterminals 17 über eine Schnittstelle 18B kommunizieren. Auf der virtuellen Maschine B läuft das Betriebssystem OP SYS 2. Sie enthält zwei Plattenlaufwerke 13B und 13B und ein Druckergerät 14B, die über eine Eingangs/Ausgangs-Schnittstelle 16A verbunden sind. Sie hat zwei Kommunikationsschnittstellen. Es ist anzumerken, daß die Größen- und Steuererfordernisse der Plattenlaufwerke 13B und 13A unterschiedlich sein können und daß die Verfügbarkeit der Druckereinrichtungen 14A und 14B für die Benutzer der virtuellen Maschinen auch unterschiedlich sein kann.
  • Die virtuelle Maschine "C" enthält eine CPU 10C, einen Speicher 11C, eine Eingangs/Ausgangsschnittstelle 16C, zwei Platteneinrichtungen 13C, eine Druckereinrichtung 14C, eine Kommunikationsschnittstelleneinrichtung 15C und eine Bandeinrichtung 21C. Die virtuelle Maschine kann die Bandeinrichtung im realen Speicher 11 oder z. B. ein reales Plattenlaufwerk 13 emulieren. Die virtuelle Maschine "C" enthält auch drei Videoanzeigeterminals 17, die mit der CPU und dem Speicher über eine VDT Schnittstelleneinrichtung 18C verbunden sind. Auf der virtuellen Maschine "C" läuft das Betriebssystem OP SYS 3, das gegenüber dem Betriebssystem OP SYS 1 und OP SYS 2 unterschiedlich sein kann.
  • Es wird von Fachleuten geschätzt werden, daß die CPU Einrichtungen 10A, 10B und 10C von dem Prozessor 10 (Fig. 1A) in der realen Maschine bereitgestellt werden, außer, daß die CPU-Einrichtungen langsamer sind, da die virtuellen Systeme tatsächlich auf dem System, das in Fig. 1A dargestellt ist, gemultiplext werden. Die CPU-Einrichtungen können den gleichen Befehlssatz und die Register-Quellen haben und sie können Daten auf die gleiche Art und Weise wie der Prozessor 10 verarbeiten, wie für die Benutzer ersichtlich ist, oder sie können Emulationen von Prozessoren sein, die andere Befehlssätze und Register- Quellen haben, und sie können Daten in einer unterschiedlichen Art und Weise als der Prozessor 10 verarbeiten.
  • Die Speichereinrichtungen 11A, 11B und 11C können identisch zum Speicher 11 sein, geeignete Untersätze des Speichers 11 sein, oder, wie zuvor angemerkt wurde, sie können derart erscheinen, daß sie mehr Stellen als der reale physikalische Speicher haben. Ähnlich können die Platteneinrichtungen 13A, 13B und 13C spezifischen Platten 13 der Fig. 1A entsprechen oder sie können einem oder mehreren Sektoren, Spuren oder Zylindern der physikalischen Platten 13 des Systems nach Fig. 1A entsprechen. Zudem können die Druckereinrichtungen 14A, 14B und 14C einem realem Drucker oder Bereichen im Speicher 11 oder auf den Platten 13 entsprechen, und die Kommunikationsschnittstelleneinrichtung 15A und 15C können auch gewissen Leitungen der Kommunikationsschnittstellen 15 oder Bereichen der Platten 13 in der Fig. 1A entsprechen.
  • Die VDT Schnittstelleneinrichtungen 18A, 18B und 18C entsprechen auch Abschnitten der VDT Schnittstelle 18 des Systems nach Fig. 1A für jedes Terminal 17.
  • Die Virtuell-Maschinen-Einrichtungen in den virtuellen Maschinen "A", "B" und "C" werden vom Virtuell-Maschinen-Monitor 20 verwaltet. Die Art und Weise, mit der ein typischer Virtuell- Maschinen-Monitor arbeitet, ist für Fachleute bekannt. Vergleiche z. B. Madnick und Donovan, Operating Systems (McGraw Hill, 1974) Seiten 549 usw. und Kapitel 2. Schutzringe und Betriebsmodi.
  • Gemäß Fig. 2A hat das Computersystem nach Fig. 1A vier Betriebsmodi, die Schutzringe bilden, welche eine Hierarchie aus privilegierten Niveaus mit nummerischen Referenzidentifikationen, wie in Fig. 2B dargelegt ist, haben. Die Schutzringe verhindern, daß Programme in einem äußeren, d. h., in einem weniger privilegierten Ring, Programme oder Daten in einem relativ inneren, d. h., privilegierteren Ring, stören. Das Computersystem hat zwei Sätze von Betriebsmodi, einen Satz für den virtuellen Modus und den anderen Satz für den realen (nicht virtuellen) Modus, wobei der privilegierteste Betriebsmodus des realen Modus auch von dem System verwendet wird, wenn es im virtuellen Modus ist. Z.B. darf ein Programm im realen Benutzerbetriebsmodus nicht auf Stellen im Speicher zugreifen, die einem realen Überwachungsmodus, Ausführungsmodus oder Kernmodus zugewiesen sind, aber es kann Programme in diesen Betriebsmodi für eine Dienstleistung aufrufen, damit sie verschiedene Operationen für das Programm durchführen.
  • Die Verwendung von Schutzringen und die Wahl der Zuordnung von Programmen zu spezifischen Ringen ist im Stand der Technik bekannt. In einer spezifischen Ausführungsform enthält der reale Kern Programme, die System-Quellen-Einrichtungen verwalten, einschließlich Programme, die Eingangs/Ausgangs-Einheiten 12 und verschiedene Quellen-Einrichtungen des Prozessors 10 und des Speichers 11 verwalten. Insbesondere, wenn ein Programm Befehle enthält, die versuchen z. B. auf Steuerstellen in den Plattenlaufwerken 13, dem Drucker 14 oder der Kommunikationsschnittstelle 15 zuzugreifen, wird der Befehl nicht ausgeführt, wenn der Prozessor nicht im realen Kernmodus arbeitet. Ähnlich werden bestimmte Befehle, wie z. B. HALT, der den Prozessor 10 dazu zwingt, anzuhalten oder Operationen zu stoppen, nicht ausgeführt, wenn der Prozessor nicht im realen Kernmodus arbeitet. Wenn ein Programm, das im virtuellen Modus ausgeführt wird, einen solchen Befehl enthält, emuliert der Virtuell-Maschinen-Monitor den Befehl. Im Fall des HALT-Befehls hält der Virtuell- Maschinen-Monitor den Betrieb nur der virtuellen Maschine an, deren Programme den Befehl enthalten, wodurch es den anderen virtuellen Maschinen ermöglicht wird, den Betrieb fortzuführen.
  • Die Programme, die dem Überwacher und dem Ausführer des Betriebssystems zugewiesen sind, hängen von technischen Überlegungen ab. Ein Compiler und ein Interpreter können z. B. im Ausführungsring sein, und Programme, die die Anzeigeterminals 17 verwalten, können z. B. im Überwachungsring sein. Die Benutzerprogramme können z. B. Anwendungsprogramme enthalten, wie z. B. Textverarbeitung, Buchhaltung oder computerunterstützte Designprogramme oder ähnliches.
  • In Übereinstimmung mit der vorliegenden Erfindung stellt der Virtuell-Maschinen-Monitor 20 auch virtuelle Betriebsmodi bereit, die vier Schutzringe aufweisen, einschließlich eines virtuellen Benutzerrings, der dem realen Benutzerring entspricht, einem virtuellen Überwachungsring, der dem realen Überwachungsring entspricht, und einem virtuellen Ausführungs- und virtuellen Kernring, die beide komprimiert sind, so daß sie dem realen Ausführungsring entsprechen. Wenn der Prozessor 10 in dem virtuellen Modus arbeitet, und insbesondere im virtuellen Kernbetriebsmodus, und versucht, einen privilegierten Befehl auszuführen, der nur verarbeitet werden kann, wenn der Prozessor im Kernmodus ist, führt der Prozessor den Befehl unter Verwendung eines Mikrocodes oder von Software-Routinen aus, die zuerst bestimmen, ob der Prozessor im virtuellen Modus oder im realen Modus arbeitet, da der Betrieb des Prozessors in Abhängigkeit davon variiert, ob er im virtuellen Modus oder im realen Modus arbeitet. Wenn die Routinen in Software sind, bilden sie einen Teil des Virtuell-Maschinen-Monitors und werden dazu verwendet, den Befehl zu emulieren. Beispiel für Routinen, die dafür verwendet werden, um mehrerer solcher Befehle in der VAX-11 Architektur auszuführen, werden in den Fig. 5 bis 9 angegeben, die untenstehend beschrieben werden.
  • In Übereinstimmung mit der vorliegenden Erfindung, wenn der Prozessor im virtuellen Modus einen Befehl im Kernbetriebsmodus ausführt, wenn der Befehl einen Zugriff auf den Speicher erfordert, bestimmt der Prozessor, ob er auf die Speicherstelle zugreifen kann, auf der Basis der Zugreifbarkeit der Stelle für den Ausführungsbetriebsmodus. Wenn der Prozessor im virtuellen Ausführungsbetriebsmodus ist und wenn er einen Befehl ausführt, der einen Zugriff auf den Speicher erfordert, bestimmt der Prozessor auch, ob er auf die Speicherstelle zugreifen kann, und zwar auf der Basis der Zugreifbarkeit auf die Stelle für den Ausführungsbetriebsmodus. Somit liefert der virtuelle Kernbetriebsmodus und der virtuelle Ausführungsbetriebsmodus den gleichen Schutz wie der reale Ausführungsbetriebsmodus, und Programme, die im virtuellen Kernbetriebsmodus arbeiten, sind nicht dazu in der Lage, auf Stellen im Speicher für den realen Kernbetriebsmodus zuzugreifen.
  • 3. Spezifische Erläuterungen von Systemen
  • Zwei Systeme zum Ausführen der Erfindung werden in Verbindung mit den Fig. 2C und 2D beschrieben. Gemäß Fig. 2C enthält ein Prozessor 150 eine Verarbeitungsschaltung 151, die herkömmliche Datenwege und Steuerschaltungen zum Ausführen von Befehlen enthält. Die Befehle und Daten werden aus dem Speicher 152 mittels einer Schnittstellenschaltung 153 in Antwort auf Nachfragen danach von der Verarbeitungsschaltung 151 ausgelesen.
  • Wie bekannt ist, enthält der Speicher 152 ein Vielzahl von adressierbaren Speicherstellen (nicht gezeigt), in denen Daten und Befehle gespeichert sind. Mit jeder Stelle ist ein Speicherregister für ein privilegiertes Niveau verbunden, wobei deren Ansammlung durch das Bezugszeichen 154 angegeben ist, und die im Speicher oder im Prozessor untergebracht sein können. Das Speicherregister für das privilegierte Niveau speichert das privilegierte Niveau, das dafür erforderlich ist, die Stelle zu lesen oder zu lesen/zu beschreiben. In dem System nach Fig. 2C sind die Speicherregister für das privilegierte Niveau als im Prozessor 150 untergebracht gezeigt.
  • Wenn die Schnittstellenschaltung die Inhalte einer Stelle im Speicher 152 liest oder Daten in die Stelle im Speicher 152 schreibt, überträgt sie auch ADRS Adreßsignale, die die Stelle im Speicher 152, die gelesen oder beschrieben wird, identifizieren, zu den privilegierten Registern 154. Die Inhalte des Registers, das mit der Adresse verbunden ist, werden als PRIV LVL Signale für privilegiertes Niveau zu einem Eingangsanschluß des Komparators 155 übertragen.
  • Der Prozessor 150 enthält auch ein Betriebsmodusregister 156, das den Betriebsmodus, in dem der Prozessor arbeitet, anzeigt, und ein Virtuell-Modus-Register 157, das anzeigt, ob der Prozessor in einem virtuellen oder in einem realen Modus arbeitet, d. h. in einem nicht-virtuellen Modus. Die Inhalte des Betriebsmodusregisters werden als OP MODE Betriebsmodussignale einer Kompressionsschaltung 160 und einem Eingangsanschluß des Multiplexers 161 zugeführt. Der andere Eingangsanschluß des Multiplexers ist mit einem Ausgangsanschluß der Kompressionsschaltung 160 verbunden, um COMP MOD komprimierte Modussignale von ihm zu erhalten.
  • Die COMP MOD komprimierten Modussignale von der Kompressionsschaltung 160 werden vom Prozessor 155 verwendet, wenn er im virtuellen Modus ist, um zu bestimmen, ob der Prozessor auf die adressierte Stelle im Speicher 152 zugreifen kann. Wenn der Prozessor im virtuellen Modus ist, geben die Inhalte des Virtuell-Modus-Registers den Multiplexer 181 dazu frei, die COMP MOD komprimierten Modussignale als SEL MOD ausgewählte Modussignale dem Komparator 155 zuzuführen. Wenn jedoch der Prozessor nicht im virtuellen Modus ist, geben die Inhalte des virtuellen Modusregisters dem Multiplexer 161 dazu frei, die nicht komprimierten OP MOD Betriebsmodussignale als SEL MOD ausgewählte Modussignale mit dem Komparator 155 zu koppeln.
  • Der Komparator 155 empfängt auch die PRIV LVL Signale für privilegiertes Niveau von den privilegierten Registern 154 aus und gibt ein COMP OK Vergleichserfüllungssignal aus, wenn das SEL MOD Signal angibt, daß der Prozessor das erforderliche Betriebsmodusniveau dafür hat, auf die adressierte Stelle zugreifen zu können. Wenn das COMP OK Signal ausgegeben wird, ist die Verarbeitungsschaltung 151 dazu freigegeben, den Befehl aus zuführen. Ansonsten ist die Verarbeitungsschaltung für die Ausführung des Befehls gesperrt.
  • Die Kompressionsschaltung 160 erzeugt die COMP MOD komprimierten Modussignale in Übereinstimmung mit einer Kompressionsfunktion "F", die die Elemente eines Satzes A = (0, 1, . . .,N), die die privilegierten Niveaus des Prozessorsbetriebs im virtuellen Modus wiedergeben, einem Satz B = (0, 1, . . .., N), der die privilegierten Niveaus wiedergibt, die von dem Prozessor erzwungen werden, zuordnet, wobei "N" größer oder gleich "2" ist (d. h., daß mindestens drei privilegierte Niveaus vorhanden sind). In beiden Sätzen repräsentieren die hintereinander folgenden Elemente die Niveaus mit abnehmendem Privileg, wie in der Fig. 2B gezeigt wird. In Übereinstimmung mit der vorliegenden Erfindung kann die Funktion "F" irgendeine Funktion sein, die die nachfolgenden Bedingungen erfüllt:
  • i. F (0) ist größer als "0", und
  • ii. wenn "i" und "j" Elemente des Satzes "A" sind, so daß "i" größer als oder gleich "j" ist, dann ist F (i) größer als oder gleich F (j).
  • In der Ausführungsform der vorliegenden Erfindung, die obenstehend in Verbindung mit den Fig. 2A und 2B beschrieben wird, wird die nachfolgende Kompressionsfunktion verwendet:
  • i. F (0) = 1, und
  • ii. wenn "i" größer als "0" ist und kleiner als oder gleich "N" ist, dann ist F (i) gleich i.
  • Somit, wenn der Prozessor im virtuellen Modus und im Kernbetriebsmodus (der das privilegierte Niveau "0" hat, wie in Fig. 2B gezeigt wird) auf eine Stelle im Speicher zugreifen will, muß die Stelle für Programme zugreifbar sein, die im Ausführungsmodus arbeiten (der das privilegierte Niveau "1" hat). Wenn der Prozessor im virtuellen Modus und im Ausführungsmodus, im Überwachungsmodus oder im Benutzerbetriebsmodus (die die privilegierten Niveaus "1", "2" bzw. "3" haben) auf eine Stelle im Speicher zugreifen will, muß die Stelle für Programme zugreifbar sein, die im Ausführungsmodus, im Überwachungsmodus bzw. im Benutzermodus arbeiten.
  • Es ist für Fachleute ersichtlich, daß die privilegierten Register 154 im Speicher anstatt im Prozessor untergebracht sein können, und daß die Schnittstellenschaltung 153 die Inhalte des Registers, das mit der Stelle verbunden ist, die ausgelesen werden soll, vor dem Auslesen der Stelle liest. Das kann insbesondere nützlich in Verbindung mit Systemen sein, in denen der Speicher ein virtueller Speicher ist, da die privilegierten Register einen Teil des Umsetzsystems bilden können, das virtuelle Adressen in physikalische Adressen umsetzt.
  • Als eine Alternative zum System, das in Fig. 2C dargestellt ist, kann das System in den privilegierten Registern 154 das komprimierte privilegierte Niveau speichern, für das die verbundenen Stellen zugreifbar sind. Wenn dies getan wird, muß die Kompressionsoperation nicht für jeden Speicherzugriff durchgeführt werden. Diese Alternative wird in Verbindung mit der Figur 2D und in Verbindung mit einem virtuellen Speicher mit Abrufseiten unter Verwendung der VAX-11 Architektur als ein Beispiel nachfolgend beschrieben.
  • Die VAX-11 Architektur, die in dem zuvor erwähnten VAX-11 Architecture Reference Manual beschrieben wird, hat einen seitenabrufbaren, virtuellen Speicher, in dem Programme auf Speicherstellen Bezug nehmen, d. h., auf virtuelle Adressen, um Stellen im virtuellen Speicherraum zu identifizieren, und das VAX-11 Computersystem übersetzt diese Adressen in physikalische Adressen, die tatsächliche Stellen im physikalischen Speicher, in denen die gewünschten Daten gespeichert sind, identifizieren. Der virtuelle Speicherraum wird in Seiten mit einer vorgegebenen Anzahl von Bytestellen unterteilt, wobei in einer Ausführungsform 512 Byte-Stellen vorhanden sind, und der physikalische Speicher wird in Blöcke einer gleichen Anzahl von Stellen unterteilt. Wenn ein Programm einen Zugriff auf eine solche Stelle in dem virtuellen Speicherraum anfordert, nimmt das Computersystem auf eine Seitentabelle Bezug, die eine Vielzahl von Einträgen hat, d. h. "PTE". Jeder PTE enthält eine Seitenrahmennummer, die dazu verwendet wird, die Blöcke im physikalischen Speicher zu identifizieren, in dem die Bezug genommene Seite des virtuellen Speicherraums vorhanden ist. Jeder Eintrag hat auch ein A/R Zugriffsrechtfeld, das die Betriebsmodi identifiziert, die einen Zugriff auf die Stellen innerhalb des Blocks haben, und wie auf diese Stellen zugegriffen werden kann, d. h., ob Programme in den Betriebsmodi die Stellen lesen oder beschreiben dürfen.
  • Jeder Eintrag hat auch ein V Gültigkeitsfeld, das angibt, daß der Eintrag ein gültiger Eintrag ist, und zum Umsetzen verwendet werden kann, und ein M Modifizierungsfeld, das, wenn es in einem vorgegebenen Zustand ist, angibt, daß eine Stelle im Block durch einen Schreibbetrieb in den Speicher modifiziert worden ist. Die Seitentabellen werden auf eine bekannte Art und Weise durch Speicherverwaltungsprogramme im Betriebssystem des Computers eingerichtet.
  • Gemäß Fig. 2D, wenn das Computersystem im virtuellen Modus ist, erzeugt das Betriebssystem, z. B. OP SYS 1, OP SYS 2 und OP SYS 3, wie in Fig. 1B gezeigt wird, Virtuell-Modus-Seitentabellen, wie obenstehend beschrieben wurde, die dazu verwendet werden, zwischen Virtuell-Speicher-Räumen von Programmen, die darunter laufen, und einem physikalischen Adreßraum im virtuellen Modus zu übersetzen. Es wird angemerkt, daß der physikalische Adreßraum im virtuellen Modus nicht der Adreßraum des Computersystems ist, sondern statt dessen eine Emulation eines physikalischen Adreßraums ist, der von dem Virtuell-Maschinen-Motor erzeugt wird. Wie obenstehend angemerkt wurde, kann der physikalische Adreßraum im virtuellen Modus dem physikalischen Adreßraum des Computersystems entsprechen, oder einem Untersatz des physikalischen Adreßraums des Computersystems oder einem Adreßraum entsprechen, der größer als der reale physikalische Adreßraum des Computersystems ist.
  • Der Virtuell-Maschinen-Monitor erzeugt auch und verwendet eine VMM physikalische Adreßzuordnung, die VMM, VME Virtuell-Maschinen-Monitor-Zuordnungseinträge enthält. Der Virtuell-Maschinen- Monitor richtet eine physikalische Adressenzuordnung für jede virtuelle Maschine, die er bearbeitet, ein. Die VMM Zuordnungseinträge sind allgemein ähnlich zu den Einträgen in den Seitentabellen, die vom Betriebssystem erzeugt werden. Wie in der Figur 2D gezeigt wird, enthält dieser VMM PTE ein A/R Zugriffsrechtfeld und ein PFN Seitenrahmennummernfeld. Das Zugriffsrechtfeld in den Zuordnungseinträgen gibt nur an, ob die virtuelle Maschine den angezeigten Block im Speicher lesen oder lesen/beschreiben kann. Der virtuelle Maschinen-Monitor verwendet die VMM Zuordnungseinträge zum Übersetzen der Adressen des physikalischen Adreßraums im virtuellen Modus in die Adressen des physikalischen Adreßraums des realen Modus.
  • Wenn der Prozessor einen Zugriff auf eine Stelle in einem Speicher X des VM virtuellen Adreßraums benötigt, liest er somit zuerst den Seitentabellen-Eintrag für die Seite aus der VM Seitentabelle (PTE: PG X). Wenn das Gültigkeitsfeld V angibt, daß die Seite im Speicher ist, und das Zugriffsrechtfeld angibt, daß der Prozessor in einem Betriebsmodus ist, in dem die nachgefragte Leseoperation oder Schreiboperation durchgeführt werden kann, verwendet der Prozessor die Seitenrahmennummer (PFN), um die Adresse im VM "physikalischen" Adreßraum des Blocks im Speicher, und zwar den Block A, zu erhalten, dem gegenwärtig die Daten für die Seite X des VM virtuellen Adreßraums zugeordnet sind.
  • Der Prozessor bestimmt dann die Adresse der entsprechenden Stelle im realen, physikalischen Speicher. Zuerst liest er den Zuordnungseintrag für den Block A im VM physikalischen Adreßraum aus der VMM physikalischen Adreßzuordnung (ME: BLK A). Wenn das Zugriffrechtsfeld angibt, daß die nachgefragte Leseoperation oder Schreiboperation durchgeführt werden kann, verwendet der Prozessor die Seitenrahmennummer, um die Adresse im realen physikalischen Speicher für den Block im Speicher zu erhalten, und zwar für den Block Q, der tatsächlich die Daten für die Seite X des VM virtuellen Adreßraums speichert.
  • Der Virtuell-Maschinen-Monitor hat auch einen virtuellen Adreßraum, und der Prozessor macht Gebrauch von einer VMM Seitentabelle um die Adressen im VMM virtuellen Adreßraum in die Adressen im realen physikalischen Speicher zu übersetzen. Die VMM Seitentabelleneinträge (VMM PTE) sind ähnlich zu den VM PTE und enthalten ein V Gültigkeitsfeld, ein A/R Zugriffrechtsfeld, ein M Modifizierungsfeld und ein PFN Seitenrahmennummernfeld, die alle auf die gleiche Art und Weise verwendet werden, wie die entsprechenden Felder der VM PTE. Das Ergebnis der Umsetzung einer Adresse in z. B. einer Seite Y des VMM virtuellen Adreßraumes unter Verwendung des VMM Seitentabelleneintrags entsprechend der Adresse (VMM PTE: PG Y) ist eine Adresse im Block R des realen, physikalischen Speichers.
  • Wie bekannt ist, richtet das Computersystem, insbesondere der Virtuell-Maschinen-Monitor, nach dem Einrichten einer VMM physikalischen Adreßzuordnung eine Schatten-Seitentabelle oder eine Zusammensetzung aus einer VM Seitentabelle, die von dem Betriebssystem, das auf dem Computer läuft, erzeugt wird, und der VMM physikalischen Adreßzuordnung ein. Die Schatten-Seitentabelle erlaubt eine direkte Umsetzung zwischen dem Virtuell- Adreßraum im virtuellen Modus und dem realen physikalischen Adreßraum, wodurch die Anzahl der Umsetzungen, die zwischen einem Programmbezug auf den Speicher und dem tatsächlichen Speicherzugriff erforderlich sind, reduziert werden. Die Schatten- Seitentabelle enthält Seiten-Tabelleneinträge mit Feldern mit identischer Bedeutung, wie z. B. die VM und VMM Seitentabellen.
  • In Übereinstimmung mit der Erfindung, wenn der virtuelle Maschinen-Monitor eine Schatten-Seitentabelle erzeugt, verwendet er die gleiche Kompressionsfunktion, die oben in Verbindung mit der Fig. 2C beschrieben wurde, um die Inhalte der A/R Zugriffrechtsfelder in den SPT PT zu bestimmen. Für die spezifische Ausführungsform die in Verbindung mit der Fig. 2C beschrieben wurde, wenn die Inhalte des A/R-Zugriffrechtsfelds in VM Seitentabelle angeben, daß der Block in dem VM physikalischen Adreßraum lesbar oder lesbar/beschreibbar durch Programme in dem Benutzer- und Überwachungs- und Ausführungsbetriebsmodi ist, und wenn die VMM ME angeben, daß der Block im realen physikalischen Speicher lesbar oder lesbar/beschreibbar durch die virtuelle Maschine ist, gibt das A/R Zugriffsrechtfeld in den SPT PTE auch an, daß die entsprechenden Blöcke in dem realen physikalischen Adreßraum für die Programme in dem Benutzer-, Überwachungs- oder Ausführungsbetriebsmodi verfügbar sind.
  • Wenn die Inhalte des A/R Zugriffrechtfelds in der VM Seitentabelle jedoch angeben, daß der Block für Programme im Kernbetriebsmodus verfügbar ist, da das Computersystem im virtuellen Modus ist, gibt der PTE an, daß der entsprechende Block im realen physikalischen Adreßraum für die Programme im Ausführungsbetriebsmodus verfügbar ist. Die Stellen im Speicher, die mit dem Kernbetriebsmodus des Prozessors verbunden sind, wenn er im virtuellen Modus arbeitet, sind für Programme verfügbar, die im Ausführungsbetriebsmodus arbeiten.
  • Fachleute werden es schätzen, daß es die VMM Adreßumsetzung erlaubt, daß Daten gemeinsam zwischen mehreren virtuellen Maschinen in einer gesteuerten Art und Weise verwendet werden. Z.B. können mehrere VMM ME, die zu verschiedenen virtuellen Maschinen gehören, den gleichen Block im realen physikalischen Adreßraum identifizieren und dadurch einen gleichzeitigen Zugriff für Programme erlauben, die auf beiden virtuellen Maschinen laufen. Die Zugriffsrechte auf den Block für Programme, die auf unterschiedlichen virtuellen Maschinen laufen, sind jedoch unterschiedlich. Z.B. können die Programme, die auf einer virtuellen Maschine laufen, dazu in der Lage sein, sowohl die Stellen in einem Block auszulesen als auch zu beschreiben, während Programme, die auf einer anderen virtuellen Maschine laufen, nur dazu in der Lage sein können, die Stellen zu lesen. Zudem kann ein Block für Programme unter einem Betriebssystem verfügbar sein, die in dem Überwachungsmodus und dem privilegierten Betriebsmodus arbeiten, und nicht verfügbar für den Benutzerbetriebsmodus sein, und der gleiche Block kann auch für Benutzerbetriebsmodus-Programme verfügbar sein, die unter einem anderen Betriebssytem laufen. Somit kann der Zugriff auf gemeinsame Daten durch den Virtuell-Maschinen-Monitor geregelt werden.
  • Es ist weiter von Vorteil, daß ähnliche Kompressionsfunktionen verwendet werden können, wenn es gewünscht wird, den virtuellen Maschinen zu erlauben, mehr oder weniger Ringe zu haben als die realen Maschinen. Insbesondere kann, wenn die virtuelle Maschine mehr Ringe haben soll als die reale Maschine, irgendeine Kompressionsfunktion F dazu verwendet werden, um den Satz A = (0, 1, . . . ,N) aus privilegierten Niveaus in der virtuellen Maschine einem Satz B = (0, 1,..., M) von privilegierten Niveaus in der realen Maschine zuzuordnen, wobei die hintereinanderfolgenden Elemente der Sätze hintereinanderfolgenden weniger privilegierten Ringen entsprechen, wobei N größer als M und M größer "1" ist, solange wie die Funktion die folgende Beziehung erfüllt:
  • i. F (0) ist größer als "0";
  • ii. F (N) ist kleiner als oder gleich M; und
  • iii. wenn "i" und "j" Elemente des Satzes "A" sind, so daß "i"
  • größer als oder gleich "j" ist, dann ist F (i) größer als oder gleich F (j).
  • Da die Anzahl der Schutzringe im virtuellen Modus (insbesondere ist die Anzahl der Ringe gleich "N+1") größer ist als die Anzahl der Ringe im realen Modus ("M+1"), um diese Bedingungen zu erfüllen, muß die Kompressionsfunktion zumindest zwei der virtuellen Ringe komprimieren, um einem Signal-Realring zu entsprechen. Ähnlich muß, wenn die virtuelle Maschine weniger Ringe als die reale Maschine haben soll, d. h., N ist kleiner als M und M ist größer als "1", die Funktion die folgenden Beziehungen erfüllen:
  • i. F (0) ist größer als "0";
  • ii. wenn "i" größer als oder gleich "j" ist, dann ist F (i) größer als oder gleich F (j);
  • iii. für zumindest ein "i" und "j", wobei "i" nicht gleich "j" ist, ist F (i) gleich F (j); und
  • iv. wenn "i" und "j" Elemente des Satzes "A" sind, so daß "i" größer als oder gleich "j" ist, dann ist F (i) größer oder gleich F (j).
  • Da die Anzahl der Schutzringe im virtuellen Modus (insbesondere ist die Anzahl der Ringe gleich ("N+1") kleiner als die Anzahl der Ringe im realen Modus ("M+1") ist, muß die letzte Bedingung (iv) beachtet werden, um eine Kompression zu erreichen.
  • Für jemanden, der mit der VAX-11 Architektur, wie sie im zuvor erwähnten VAX-11 Architecture Reference Manual erläutert ist, vertraut ist, ist es von Vorteil, daß der VAX-11 virtuelle Speicherraum in eine Vielzahl von Bereichen unterteilt ist, einschließlich Systemraum und zwei Per-Prozeßräume, und daß die Umsetzeinrichtung, die in Verbindung mit der Fig. 2D beschrieben wurde, die Umsetzung für den Systemraum betrifft. Die Umsetzung der Per-Prozeßräume ist analog.
  • 4. Registersätze
  • Die Fig. 3A bis 3C zeigen Register, die in dem Prozessor 10 zum Verarbeiten von Programmen verwendet werden. Die Fig. 3A zeigt die Register, die vom Prozessor 10 beim Verarbeiten von Programmen in entweder dem realen Modus oder dem virtuellen Modus verwendet werden. Diese Register enthalten Register R0 bis R13 für allgemeine Zwecke, ein Stapelzeiger-Register R14, einen Programmzähler R15, ein Benutzer-Stapelzeiger-Register 50, ein Überwachungs-Stapelzeiger-Register 51 und ein Ausführungs-Stapelzeiger-Register 52. Die Register R0 bis R13 können als Zeiger, als arithmetische Akkumulatoren oder für irgendwelche anderen Funktionen allgemeinen Zwecks verwendet werden. Das Stapelzeiger-Register R14 enthält den Stapelzeiger, der gegenwärtig verwendet wird. Das Programmzähler-Register R15 identifiziert die Stelle im Speicher 11 des nächsten Befehls, der vom Prozessor verarbeitet werden soll. Die Benutzer-, Überwachungs- und Ausführungs-Stapelzeiger-Register 50 bis 52 identifizieren die Stellen im Speicher der Stapel für die jeweiligen Modi, außer, wenn der Prozessor im entsprechenden Betriebsmodus ist. Zu dieser Zeit wird der Betriebsmodus-Stapel durch die Inhalte des Stapelzeiger-Registers R14 identifiziert, die von dem entsprechenden Betriebsmodus-Stapelzeiger-Register erhalten werden, wenn der Prozessor die Betriebsmodi ändert.
  • Fig. 3B zeigt zusätzliche Register, die vom Prozessor 10 im realen Betriebsmodus verwendet werden. Diese Register enthalten einen Kern-Stapelzeiger 53, ein Niveau-Register 54 für eine asynchrone Systemunterbrechung (AST) (system trap), ein Interrupt-Stapelzeiger-Register 55, ein Interrupt-Zusammenfassungs- Register 56, ein Interrupt-Nachfrage-Register 57 und ein Prozessorstatus-Langwort-Register 60. Das Kern-Stapelzeiger-Register 53 ist ähnlich in der Funktion zu den Benutzer-Überwachungs- und Ausführungs-Stapelzeiger-Registern 50 bis 52.
  • Das AST Niveau-Register 54 identifiziert den Betriebsmodus für das privilegierteste Niveau, für den eine asynchrone Systemunterbrechung anhängig ist. Z.B. ist es unerwünscht, wenn eine asynchrone Systemunterbrechung für ein Programm anhängig ist, das in einem realen Überwachungsniveau arbeitet, und wenn der Prozessor 10 im Kernmodus arbeitet, die Unterbrechung (trap) zu bedienen, bis der Prozessor zumindest in den Überwachungsmodus zurückkehrt. Wenn der Prozessor die Modi wechselt, kann er die Inhalte des AST-Niveau-Registers 54 überprüfen, um zu bestimmen, ob eine Unterbrechung in dem neuen oder privilegierteren Betriebsmodus anhängig ist, und zu diesem Zeitpunkt unterbrechen.
  • Das Interrupt-Stapelzeiger-Register 55 wird dafür verwendet, die Stelle im Speicher des Interrupt-Stapels zu identifizieren, die typischerweise zum Stapelzeiger-Register R14 übertragen wird, wenn der Prozessor damit anfängt, einen Interrupt zu bedienen. Wenn der Prozessor das Bedienen eines Interrupts beendet, werden die Inhalte des Stapelzeiger-Registers R14 in das Interrupt-Stapelzeiger-Register 55 übertragen, nachdem die Register auf herkömmliche Art und Weise zurückgesetzt wurden.
  • Das Interrupt-Zusammenfassungs-Register 56 wird in Verbindung mit den Interrupt-Nachfragen verwendet. Der Prozessor 10 hat eine Vielzahl von Interrupt-Prioritätsniveaus und das Interrupt-Zusammenfassungsregister identifiziert die Interrupt-Prioritätsniveaus, auf denen Interrupts anhängig sind.
  • Das Interrupt-Nachfrage-Register 57 kann von dem ausführenden Programm dazu verwendet werden, nach einer Interrupt-Bedienung nachzufragen. Die Daten, die in das Register eingeschrieben sind, spezifizieren das Interrupt-Prioritätsniveau des nachgefragten Interrupts. Das Prioritätsniveau, das in das Register 57 geladen ist, wird dann im Interrupt-Zusammenfassungs-Register 56 wiedergegeben.
  • Das Prozessor-Statuslangwort 60, das nachfolgend in Verbindung mit der Fig. 3D-1 beschrieben wird, enthält Statusinformationen in Verbindung mit dem gegenwärtig ausgeführten Programm.
  • Um den Prozessor 10 dazu freizugeben, in einem virtuellen Modus zu arbeiten, enthält der Prozessor auch eine Vielzahl von Registern, die hier als virtuelle Register bezeichnet werden und in der Fig. 3-C gezeigt werden. Wenn der Prozessor in einem virtuellen Modus arbeitet, verwendet er die Register, die in Fig. 3A gezeigt werden, und die Register, die in Fig. 3C gezeigt werden. Die virtuellen Register enthalten ein VM (virtuelle Maschine) Kern-Stapelzeiger-Register 61, ein VM-AST Niveau-Register 62, ein VM Interrupt-Stapelzeiger-Register 63, ein VM-Interrupt-Zusammenfassungs-Register 64, ein VM-Interrupt-Nachfrage-Register 65 und ein VM-Prozessor-Statuslangwort-Register 66. Jedes der virtuellen Register, die in Fig. 3C dargestellt sind, entspricht einem Register im realen Registersatz, der in Fig. 3B dargestellt ist, und der Prozessor verwendet die Register 61 bis 66 in der gleichen Art und Weise, wie er die Register 53 bis 57 und 60 verwendet, wenn er im realen Modus ist.
  • Die Modus- und Interrupt-Stapelzeiger-Register, und zwar das Stapelzeiger-Register R14, die Modus-Stapelzeiger-Register 50 bis 53 und 61 und die Interrupt-Stapelzeiger-Register 55 und 63, werden verwendet, wenn der Prozessor die Betriebsmodi wechselt, wie untenstehend in Verbindung mit den Fig. 8A-1 und 8A-2 erläutert wird, und im Falle des Interrupt-Stapelzeiger- Registers, wenn der Prozessor mit der Verarbeitung eines Interrupts beginnt oder von der Verarbeitung eines Interrupts zurückkehrt. Kurz gesagt, wenn der Prozessor die Verarbeitung eines Interrupts beginnt, überträgt er typischerweise die Inhalte des Stapelzeiger-Registers R14 zu dem Modus-Stapelzeiger-Registern 50 bis 53 oder 61 entsprechend dem momentanen Betriebsmodus. Die Inhalte des Interrupt-Stapelzeiger-Registers 55 oder, wenn der Prozessor in dem virtuellen Modus ist, des VM-Interrupt-Stapelzeiger-Registers 63, werden zum Stapelzeiger-Register 14 übertragen, und die Inhalte der ausgewählten Register werden zum Interrupt-Stapel im Speicher übertragen, der durch die Inhalte des Stapelzeiger-Registers identifiziert wird. Wenn der Prozessor von einem Interrupt zurückkehrt, wobei die Sequenz dafür in den Fig. 7A-1 bis 7E enthalten ist, wird der Prozeß im wesentlichen umgekehrt.
  • Die Inhalte des Prozessor-Statuslangworts 60 und des VM Prozessor-Statuslangworts 66 im Prozessor 10, der in Übereinstimmung mit vorliegender Erfindung aufgebaut ist, werden in Verbindung mit den Fig. 3D-1 und 3D-2 beschrieben. Es ist hervorzuheben, daß der Prozessor getrennte Prozessor-Statuslangworte 60 und 62 für den virtuellen Modus und den realen Modus hat, wobei beide viele gemeinsame Felder haben.
  • Beide Prozessor-Status-Langwörter enthalten eine Vielzahl von Feldern 70 bis 77 und 70A bis 77A, die verschiedene Bedingungen identifizieren, welche die Ergebnisse vorheriger arithmetischer Berechnungen betreffen, und die den Prozessor dazu freigeben, verschiedene Ausnahme- oder Unterbrechungsoperationen in Antwort darauf durchzuführen. Die Felder sind nicht relevant für die vorliegende Erfindung und werden deshalb hier nicht weiter behandelt.
  • Beide Prozessor-Statuslangwörter 60 und 66 enthalten auch IPL Interrupt-Prioritätsniveau-Felder 80 und 80A, die das Interrupt-Prioritätsniveau identifizieren, auf dem der Prozessor arbeitet. Der Prozessor kann die Inhalte dieser Felder und die Inhalte der realen oder virtuellen Interrupt-Zusammenfassung- Register 56 bzw. 64 dazu verwenden, um zu bestimmen, ob ein Interrupt mit einem höheren Prioritätsniveau als dem gegenwärtigen Arbeitsniveau anhängig ist, wie in den IPL Interrupt-Prioritätsniveaufeldern 80 und 80A angegeben wird, und, wenn das der Fall ist, verarbeitet er die Interrupt-Nachfrage.
  • Die Momentan-Modus-Felder 81 und 81A und die Felder 82 und 82A für den früheren Modus identifizieren den momentanen Betriebsmodus bzw. den vorhergehenden Betriebsmodus (siehe Fig. 2B), und insbesondere enthalten sie den Code, der in Fig. 2B dargestellt ist, der entweder den Kern-, Ausführungs-, Überwachungs- oder Benutzerbetriebsmodus identifiziert. Diese Felder zeigen nicht an, ob der Prozessor im virtuellen oder realen (nicht virtuellen) Modus ist.
  • Ein VM Virtuell-Modus-Feld 84, das nur im Prozessor-Statuslangwort 60 enthalten ist, wenn es gesetzt ist, zeigt an, daß der Prozessor gegenwärtig in einem virtuellen Modus arbeitet, um dadurch den Prozessor dazu freizugeben, die Register 61 bis 66 zu verwenden. Wenn das Feld 84 gelöscht ist, arbeitet der Prozessor im realen (nicht virtuellen) Modus und verwendet die Register 53 bis 57 und 60.
  • Ein IS Interrupt-Stapelfeld 83 oder 83A zeigt an, daß der Prozessor an seinem Interrupt-Stapel arbeitet. D.h., daß die Inhalte des Stapelzeiger-Registers R14 von den Inhalten entweder des Interrupt-Stapelzeigers 55 oder des VM Interrupt-Stapelzeigers 63 in Abhängigkeit vom Zustand des VM Feldes 84 im Prozessor-Statuslangwort 60 abgeleitet sind. Da die Inhalte des Stapelzeige-Registers R14 geändert worden sein könnten, wenn die Inhalte der anderen Register zum Interrupt-Stapel übertragen worden sind, können die Inhalte des Registers R14 nicht exakt die gleichen sein, wie die Inhalte des Registers 55 oder 63.
  • Es ist für die Fachleute hervorzuheben, daß eine virtuelle Maschine, d. h. ein Computersystem (Fig. 1A), dessen Prozessor im virtuellen Modus arbeitet, selbst einen Virtuell-Maschinen-Monitor laufen lassen kann, der ein zweites Niveau der Virtualisierung bereitstellt. Wenn das auftritt, wird ein weiterer Register-Satz ähnlich zu den Registern 61 bis 66 typischerweise vorgesehen. Jedes dieser zusätzlichen Register kann physikalisch in entweder dem Prozessor 10 oder im Speicher 11 (Fig. 1A) angeordnet sein. Das VM Prozessor-Statuslangwort 66 benötigt kein VM Feld entsprechend dem Feld 84 im Prozessor-Statuslangwort 60, um dieses zweite Niveau der Virtualisierung auszuführen.
  • Es ist weiterhin hervorzuheben, daß zusätzliche virtuelle Stapelzeiger-Register für verschiedene virtuelle Betriebsmodi vorgesehen werden können, wenn die Schutzringe unterschiedlich zu der speziellen, hier beschriebenen Ausführungsform komprimiert werden. Wie obenstehend in Verbindung mit den Fig. 2C und 2D erläutert wurde, kann die Kompressionsfunktion, die in einem spezifischen System verwendet wird, in einer Kompression unterschiedlicher Betriebsmodi im virtuellen Modus zu dem Kern und dem Ausführer in einen einzigen Operationsmodus im realen Modus resultieren. Wenn z. B. die Ausführungs- und Überwachungsbetriebsmodi im virtuellen Modus in den Überwachungsbetriebsmodus im realen Modus komprimiert werden und der Kernbetriebsmodus im virtuellen Modus dem Ausführungsbetriebsmodus im realen Modus entspricht, kann die virtuelle Maschine das Ausführungs-Stapelzeiger-Register, das auch von der realen Maschine verwendet wird, verwenden, und ein zusätzliches Register muß für den Ausführungsbetriebsmodus im virtuellen Modus vorgesehen werden. Ähnlich, wenn die Kern-, Ausführungs- und Überwachungsbetriebsmodi im virtuellen Modus alle komprimiert werden, mit dem Benutzerbetriebsmodus im virtuellen Modus, um dem Benutzerbetriebsmodus im realen Modus zu entsprechen, müssen zusätzliche Stapelzeiger-Register für die Kern-, Ausführungs-, und Überwachungsbetriebsmodi im virtuellen Modus vorgesehen werden.
  • 5. Überprüfen der Operanden und Befehle
  • Es ist angemerkt worden, daß gewisse Befehle privilegiert sind, d. h., daß sie vom Prozessor 10 (Fig. 1A) nur ausgeführt werden, wenn er im Kernbetriebsmodus (Fig. 2A) ist. Zudem ist es erwünscht, dem Prozessor 10 dafür zu sperren, auf Daten, die im Speicher 11 gespeichert sind, zuzugreifen, die für Programme in privilegierteren Betriebsmodi sind, wenn der Prozessor in einem weniger privilegierten Betriebsmodus arbeitet.
  • Dementsprechend führt die CPU einen PROBE Überprüfungsbetrieb bezüglich der Operanden und des Operationscode jedes Befehls aus, bevor der Befehl ausgeführt wird, und bevor irgendein Operand und irgendein Befehl ausgelesen wird.
  • Gemäß Fig. 4, wenn die CPU 10 einen Befehl ausliest, der den Betriebscode (OP CODE) und Operandenspezifizierer (Schritt 100) enthält, überprüft sie zuerst die Speicherstellen, die die Operanden enthalten und die durch die Operandenspezifizierer in den Befehl identifiziert werden, um zu bestimmen, ob sie für das Programm in den Prozessor in seinem gegenwärtigen Betriebsmodus (Schritt 101) zugreifbar sind. Wenn sie nicht zugreifbar sind, muß ein Fehler aufgetreten sein.
  • Wenn jedoch die Operanden für das Programm im gegenwärtigen Betriebsmodus (Schritt 101) zugreifbar sind, bestimmt dann der Prozessor, ob die Operation, die von dem Befehl angefordert wird, privilegiert ist, d. h., ob der Befehl ein privilegierter Befehl ist, der nur im Kernmodus (Schritt 102) ausführbar ist. Wenn der Befehl nicht privilegiert ist, liest der Prozessor die Operanden und führt den Befehl aus (Schritt 103).
  • Wenn der Prozessor jedoch beim Schritt 102 herausfindet, daß der Befehl privilegiert war, fährt der Prozessor beim Schritt 104 fort, um das Momentan-Modusfeld 81 in jedem Prozessor-Statuslangwort zu überprüfen. Wenn der Prozessor im virtuellen Modus arbeitet, testet er das momentan Modusfeld im VM Prozessor- Statuslangwort 66, und ansonsten testet er das entsprechende Feld im Prozessor-Statuslangwort-Register 60. Wenn der Prozessor nicht im Kernbetriebsmodus (Schritt 104) arbeitet signalisiert er einen Fehler.
  • Wenn der Prozessor jedoch beim Schritt 104 herausgefunden hat, daß er im Kernbetriebsmodus war, testet er das VM Virtuell-Modus-Feld 84 des Prozessor-Statuslangwort-Registers 60, um herauszufinden, ob der Prozessor in einem virtuellen Modus (Schritt 105) arbeitet. Wenn der Prozessor in einem virtuellen Modus arbeitet, kann der Prozessor den Befehl direkt ausführen oder der Virtuell-Maschinen-Monitor kann den Befehl (Schritt 106) emulieren. Wenn der Prozessor nicht im virtuellen Modus arbeitet, führt der Prozessor den Befehl direkt (Schritt 107) aus. Die Schritte, die vom Virtuell-Maschinen-Monitor durchgeführt werden, um Befehle zu emulieren, sind herkömmlich bekannt, und werden deshalb hier im Detail nicht weiter beschrieben.
  • Da der Prozessor, wenn er einen Befehl liest, zuerst den Operanden überprüft, bevor er bestimmt, ob der Befehl privilegiert ist, kann er zum Virtuell-Maschinen-Monitor unterbrechen, und zwar in dem Fall, daß der Befehl eine Emulation anfordert, und der Virtuell-Maschinen-Monitor muß dann nicht selbst die Operanden überprüfen, um zu bestimmen, ob sie für das Programm zugreifbar sind. Das hat mehrere Vorteile, die eine Vereinfachung des Virtuell-Maschinen-Monitors einschließen, da er nicht Routinen zum Durchführen der Operation enthalten muß, und die Reduktion der Wahrscheinlichkeit von Fehlern einschließen, die ansonsten in dem Virtuell-Maschinen-Monitor in dem Falle vorkommen, daß eine Seite nicht im Speicher vorhanden ist. Wenn die Operanden-Überprüfungsoperation feststellt, daß eine Seite, die die Operanden enthält, nicht im Speicher ist, nimmt der Prozessor einen Seitenfehler an. In der vorliegenden Erfindung geschieht dies, bevor der Prozessor zu dem Virtuell-Maschinen- Monitor für eine Emulation des Befehls unterbricht.
  • 6. Privilegierte Befehlsausführung
  • Die Fig. 5 bis 9 enthalten Flußdiagramme, die die Operationen des Prozessors 10 beim Ausführen einiger der privilegierten Befehle der VAX-11 erläutern. Die Befehle und weitere, die den VAX-11 Befehlssatz bilden, werden in dem zuvor erwähnten VAX-11 Archtitectur Reference Manual für einen Prozessor beschrieben, der keinen virtuellen Modus hat. Die Figuren geben die Operationen des Prozessors 10 im Detail an, der sowohl einen realen (nicht virtuellen) als auch einen virtuellen Modus hat.
  • Wie zuvor angemerkt wurde, können die privilegierten Befehle emuliert werden, wenn der Prozessor im virtuellen Modus arbeitet, oder sie können durch den Prozessor direkt in Antwort auf einen Mikrocode oder einen ähnlichen Steuermechanismus in dem Prozessor ausgeführt werden. In einer Ausführungsform der Erfindung, in der ein Mikrocode verwendet wird, um die internen Operationen des Prozessors beim Ausführen von Befehlen zu steuern, werden die Befehle in Mikrocode in dem Ausmaß einer Mikrocode- Speicherung in vorexistierenden Prozessoren, die in Übereinstimmung mit der VAX-11 Architektur aufgebaut sind, realisiert, und Befehle, die nicht derart realisiert werden, werden von dem Virtuell-Maschinen-Monitor emuliert. Alternativerweise kann ein mikrokodierter Prozessor alle Befehle in Mikrocode aufweisen und sie direkt ausführen, oder alle Befehle können durch den Virtuell-Maschinen-Monitor emuliert werden, was von der Größe des Mikrocode-Steuerspeichers im Prozessor abhängt. In einem Prozessor, der durch kombinatorische Logik gesteuert wird, kann die Logik den Betrieb des Prozessors beim Verarbeiten eines privilegierten Befehls steuern, oder die Befehle können durch den Virtuell-Maschinen-Monitor emuliert werden. Die genauen Operationen, die von dem Prozessor 10, sowohl im virtuellen Modus als auch im realen Modus durchgeführt werden, sind in den Flußdiagrammen der Fig. 5 bis 9 enthalten, und werden hier nicht im Detail wiederholt. Kurze Kommentare zu den Schritten, die beim Verarbeiten der Befehle verwendet werden, werden jedoch nachfolgend angegeben.
  • Halt-Befehl
  • Der Halt-Befehl wird verwendet, um den Prozessor anzuhalten. Wenn der Prozessor den Halt-Befehl in Verbindung mit einem Programm in einer virtuellen Maschine empfängt, wenn die virtuelle Maschine im Kernmodus ist, hält der Befehl diese virtuelle Maschine an, und nicht den Prozessor insgesamt. Danach kann der Prozessor 10 die Ausführung in einem realen Modus oder als irgendeine andere virtuelle Maschine fortsetzten, die in einem virtuellen Modus laufen kann.
  • Bewege Prozessor-Statuslangwort zu (Zielort)
  • Der Befehl BEWEGE PROZESSOR STATUSLANGWORT zu einem ausgewählten Zielort, wobei der Zielort durch den Operandenspezifizierer identifiziert wird, der den Befehl begleitet, wird im Detail in Fig. 6 gezeigt. In Antwort auf den Befehl muß der Prozessor bestimmen, wenn er in einem virtuellen Modus arbeitet, ob die Inhalte des Prozessor-Statuslangworts im Register 60 (Fig. 3B) oder die Inhalte des VM Prozessor-Statuslangworts 66 (Fig. 3C) bewegt werden sollen.
  • Rückkehr von Ausnahme oder Interrupt
  • Beim Verarbeiten eines Rückkehr von Ausnahme oder Interrupt-Befehls, der in den Fig. 7A-1 bis 7E gezeigt wird, testet der Prozessor 10 zuerst das Virtuell-Modus-Feld 84 des momentanen Prozessor-Statuslangworts, d. h. die Inhalte des Prozessor-Statuslangworts 60, das verwendet wird, wenn der Prozessor den Interrupt oder die Ausnahme bedient, und das Prozessor-Statuslangwort, das aus dem Stapel in Antwort auf diesen Befehl hin ausgelesen wird.
  • In Abhängigkeit vom Zustand des VM Feldes 84 in den zwei Prozessor-Statuslangwörtern kann der Prozessor
  • (1) von einem Interrupt oder einer Ausnahme oder einem Ausnahmedienst in einem realen Modus zur Verarbeitung in einen realen Modus zurückkehren, wenn die VM Felder des momentanen und des ausgelesenen Prozessor-Statuslangworts gelöscht sind;
  • (2) von einem Interrupt oder einer Ausnahme oder einem Ausnahmedienst in einem realen Modus zu der Verarbeitung in einem virtuellen Modus zurückkehren, wenn das VM Feld des momentanen Prozessor-Statuslangworts gelöscht ist und das VM Feld des ausgewählten Prozessor-Statuslangworts gesetzt ist;
  • (3) von einem Interrupt oder einer Ausnahme oder einer Ausnahmebedienung in einem virtuellen Modus zu der Verarbeitung eines virtuellen Modus zurückkehren, wenn das VM Feld des Momentan- Prozessor-Statuslangworts gesetzt ist und das VM Feld des ausgelesenen Prozessor-Statuslangworts gelöscht ist; und
  • (4) von einem Interrupt oder einer Ausnahme oder einem Ausnahmedienst in einem virtuellen Modus zu der Verarbeitung in einem zweiten Niveau der Virtualisierung zurückkehren, wenn die VM Felder sowohl des momentanen Prozessor-Statuslangworts als auch des ausgelesenen Statuslangworts gesetzt sind.
  • Wenn das VM Feld 84 keines der Prozessor-Statuslangwörter gesetzt ist, d. h. wenn der Prozessor nicht im virtuellen Modus gearbeitet hat (d. h., daß er im realen Modus gearbeitet hat), als er den Interrupt oder die Ausnahme bedient hat, und wenn er in einen realen Modus zurückkehrt, kehrt der Prozessor auf herkömmliche Art und Weise zurück.
  • Wenn der Interrupt oder die Ausnahme von dem Prozessor im realen Modus bedient wurde, aber der Prozessor in einen virtuellen Modus (Fig. 7A-2) (Fall 2) zurückkehrt, werden die Inhalte des VM Prozessor-Statuslangworts 66 und des gelesenen Prozessor- Statuslangworts miteinander verglichen, um sicherzustellen, daß sie entsprechend sind, d. h. daß die Felder des Prozessor-Statuslangworts, das aus dem Stapel gelesen wird, mit entsprechenden Feldern, des VM Statuslangwort-Registers verglichen werden, um sicherzustellen, daß das ausgelesene Prozessor-Statuslangwort ein "sicheres Äquivalent" des VM Prozessor-Statuslangworts ist. Um ein "sicheres Äquivalent" des Prozessor-Statuslangworts zu bilden, sollten die arithmetischen Felder 70 bis 76 und das Spurenzeichen 77 gleich sein dem ausgelesenen Prozessor-Statuslangwort, sollten das Interrupt oder Ausnahme-Prioritätsniveaufeld 80 und das Interrupt oder Ausnahme-Stapelfeld 83 beide gelöscht sein und das vorhergehende und das momentane Betriebsmodusfeld 81 und 82 sollten auch die gleichen wie das ausgelesene Prozessor-Statuslangwort sein, außer wenn eines den Kernbetriebsmodus anzeigt, sollte es modifiziert werden, um den Ausführungsbetriebsmodus anzuzeigen. Das VM (virtueller Modus) Feld 84 des gelesenen Prozessor-Statuslangworts sollte auch gesetzt sein. Nach dem Verifizieren des gelesenen Prozessor-Statuslangworts fährt der Prozessor mit dem Zurückkehren auf herkömmliche Art und Weise fort.
  • Wenn der Interrupt oder die Ausnahme in einem virtuellen Modus verarbeitet wurde, aber das Prozessor-Statuslangwort, das aus dem Stapel gelesen wurde, anzeigt, daß der Prozessor in einen realen Modus (Fall 3) zurückkehrt, wird das gelesene Prozessor- Statuslangwort in einem VM Prozessor Statuslangwort-Register 66 gespeichert, und ein neues "sicheres Äquivalent" Prozessor-Statuslangwort wird daraus für die Speicherung im Prozessor Statuslangwort-Registers 60 gebildet. Die Sequenz zum Bilden des neuen Prozessor-Statuslangworts für das Register 60 ist in Fig. 7D dargelegt. Nach dem Verifizieren des gelesenen Prozessor-Statuslangworts, fährt der Prozessor mit der Rückkehr auf herkömmliche Art und Weise fort.
  • Schließlich, wenn die VM Felder sowohl des momentanen als auch des gelesenen Prozessor-Statuslangworts gesetzt sind (Fall 4), unterbricht der Prozessor zu dem Virtuell-Maschinen-Monitor.
  • Ändere Betriebsmodus Befehl
  • Der Ändere-Betriebsmodus-Befehl, der in den Fig. 8A-1 und 8A-2 dargestellt ist, wird vorgesehen, um dem Programm zu erlauben, die Betriebsmodi zwischen dem Kern (kernel), dem Ausführer (executive), dem Überwacher (supervisor) und dem Benutzer (user) von einem weniger privilegierten Betriebsmodus zu einem privilegierteren Betriebsmodus (Fig. 2B) zu wechseln. Wenn das getan wird, bestimmt der Prozessor zuerst den neuen Modus, sichert dann die Inhalte des Stapelzeiger-Registers R14 in dem Momentanmodus-Stapelzeiger, lädt in das Stapelzeiger-Register R14 die Inhalte des Stapelzeigers für den neuen Modus und speichert die Inhalte der ausgewählten Register und den Operanden des Befehls in den Stapel, der durch den neuen Stapelzeiger identifiziert wird. Wenn der Prozessor z. B. vom Benutzerbetriebsmodus in den Überwachungsbetriebsmodus überwechselt, werden die Inhalte des Stapelzeiger-Registers R14 zu dem Benutzer-Stapelzeiger-Register 50 übertragen und durch die Inhalte des Überwachungs-Stapelzeiger-Registers 51 ersetzt.
  • Wenn der Änderungsmodus zu dem Kernbetriebsmodus hin oder von dem Kernbetriebsmodus aus ist, testet der Prozessor die Inhalte des VM Felds 84 des Prozessor-Statuslangworts, um zu bestimmen, welches von den Kern-Stapelzeiger-Register 53 oder des VM Kern- Stapelzeiger-Registers 61 bei der Verarbeitung des Befehls verwendet wird.
  • Der Prozessor testet dann die Zugreifbarkeit auf die Speicherstelle, die durch die neuen Inhalte des Stapelzeiger-Registers in dem neuen Betriebsmodus identifiziert wird. Wenn der neue Betriebsmodus jedoch der Kern-Betriebsmodus ist, und wenn der Prozessor in einem virtuellen Modus arbeitet, muß die Stelle durch den Ausführungsmodus zugreifenbar sein. Gemäß Fig. 2A, wenn der Prozessor im virtuellen Modus ist, und der gegenwärtige Betriebsmodus der Kernmodus ist, müssen somit Stellen im Speicher durch den Prozessor zugreifbar sein, wenn er im realen Ausführungsmodus arbeitet. Somit werden der virtuelle Ausführungsbetriebsmodus und der virtuelle Kernbetriebsmodus in den realen Ausführungsmodus komprimiert, wie in den Fig. 2A dargestellt ist.
  • Überprüfe Zugreifbarkeit der Speicherstelle
  • Der PROBE Befehl, der in Fig. 9 dargestellt ist, überprüft die Lese- oder Schreib-Zugreifbarkeit einer oder mehrerer Stellen im Speicher, die durch die Operanden des Befehls spezifiziert werden.
  • Weitere Befehle
  • Die Operationssequenzen zum Ausführen weiterer privilegierter Befehle, die einen Lade-Prozeßkontext-Befehl, einen Sichere- Kontext-Befehl und einen Bewege-Zu- und Bewege-Von- Prozessor- Registerbefehle einschließen, werden auch durch die Sequenzen, die in dem VAX-11 Architecture Reference Manual dargestellt werden, modifiziert, um an den virtuellen Modus anzupassen. Alle diese Befehle bewegen die Inhalte gewisser Prozessor-Register zum Speicher, oder die Inhalte gewisser Speicherstellen zu identifizierten Registern. Für den Lade-Prozeß-Kontextbefehl und den Bewege-Zu-Prozessor-Registerbefehl stellen die Modifikationen sicher, daß die gelesenen Daten in den korrekten Satz von Registern geladen werden, und für den Sichere-Prozeß-Kontextbefehl und den Bewege-Von-Prozessor-Registerbefehl werden die Daten von den richtigen Registern aus bewegt.

Claims (18)

1. Prozessor, der aufweist: (a) eine CPU, die in einem realen Modus oder einem virtuellen Modus arbeitet, wobei die CPU im realen Modus und virtuellen Modus einen Satz von Betriebsmodi hat, die Schutzringe bilden, welche eine Hierarchie von priviligierten Niveaus definieren, wobei die Schutzringe verhindern, daß Prozesse eines äußeren, weniger priviligierten Rings Prozesse in einem relativ inneren, priviligierteren Ring stören; (b) ein Überwachungssystem für eine virtuelle Maschine (VVM); (c) eine Speichereinrichtung, die eine Vielzahl von adressierbaren Speicherstellen zum Speichern von Befehlen enthält, die einen Zugriff auf die Speicherstellen erfordern, wobei die Speichereinrichtung weiterhin mehrere Gruppen von Speicherstellen enthält und die Anzahl der Speicherstellen in jeder Speichergruppe variieren kann, wobei jede Speichergruppe ein zugeordnetes priviligiertes Mittel zum Identifizieren der Schutzring-Betriebsmodi hat, in denen der Prozessor auf irgendeine Speicherstelle der Gruppe zugreifen kann; (d) eine Einrichtung, die mit der CPU und der Speichereinrichtung zum schrittweisen Lesen von Befehlen aus der Speichereinrichtung verbunden ist; (e) eine Anzeigeeinrichtung für den virtuellen Modus zum Anzeigen, ob die CPU im virtuellen Modus arbeitet oder nicht; (f) eine Anzeigeeinrichtung für den Betriebsmodus zum Identifizieren des priviligierten Niveaus des gegenwärtigen Schutzring-Betriebsmodus der CPU; und (g) eine Einrichtung zum Freigeben des Zugriffs auf die Speichereinrichtung in Abhängigkeit von Informationen von der Anzeigeeinrichtung für den virtuellen Modus und von der Anzeigeeinrichtung für den Betriebsmodus; wobei der Prozessor weiterhin aufweist:
(A) Die CPU zum Verarbeiten von Befehlen in zumindest drei Schutzring-Betriebsmodi, von denen jeder mit einem priviligierten Niveau der Hierarchie verbunden ist;
(B) eine Kompressionseinrichtung, die mit der Anzeigeeinrichtung für den Betriebsmodus verbunden ist, zum Identifizieren eines virtuellen Betriebsmodus in Antwort auf die gegenwärtige Schutzring-Anzeigeeinrichtung, wobei die Kompressionseinrichtung in Übereinstimmung mit einer Kompressionsfunktion "F" arbeitet, die einen Satz A = (0,1 ,..., N) in einen Satz B = (0,1,..., N) abbildet, wobei jedes Element des Satzes A eines der priviligierten Niveaus identifiziert, wenn der Prozessor im virtuellen Modus arbeitet, und wobei jedes Element des Satzes B eines der priviligierten Niveaus identifiziert, wenn der Prozessor nicht in dem virtuellen Modus arbeitet, wobei die hintereinanderfolgenden Elemente jedes Satzes Schutzringen fortschreitend niedrigerer Privilegien entsprechen, so daß in jedem Satz "0" das priviligierteste Niveau identifiziert, wobei die Kompressionsfunktion "F" zumindest das Nullniveau des Satzes A einem Nicht-Nullniveau des Satzes B zuordnet;
(C) eine Auswahleinrichtung, die mit der Anzeigeeinrichtung für den Betriebsmodus, der Anzeigeeinrichtung für den virtuellen Modus und der Kompressionseinrichtung verbunden ist, zum selektiven Übertragen des priviligierten Niveaus als eine Ausgabe, das von der Kompressionseinrichtung in Antwort darauf identifiziert wurde, daß die Anzeigeeinrichtung für den virtuellen Modus anzeigt, daß der Prozessor in einem virtuellen Modus arbeitet, und ansonsten zum Übertragen des priviligierten Niveaus, das von der Anzeigeeinrichtung für den Betriebsmodus identifiziert wurde;
(D) eine Vergleichseinrichtung zum Vergleichen des Ausgangs der Auswahleinrichtung mit dem priviligierten Mittel der Stelle in dem Speicher, auf die der Prozessor einen Zugriff benötigt, um zu bestimmen, ob der Prozessor auf die erforderliche Speicherstelle zugreifen kann;
(E) eine Einrichtung, die auf einen erfolgreichen Vergleich durch die Vergleichseinrichtung reagiert, zum Freigeben der Verarbeitungseinrichtung, auf die erforderliche Speicherstelle zuzugreifen und den Befehl auszuführen.
2. Prozessor nach Anspruch 1, worin die Kompressionsfunktion F die folgenden Bedingungen erfüllt:
I. F (0) = 1 und
ii . Wenn "i" großer als "0" ist und kleiner oder gleich "N" ist, dann F (i) = i.
3. Prozessor nach Anspruch 1, worin die Kompressionsfunktion F die folgenden Bedingungen erfüllt:
i. F (0) ist größer als "0" und
ii . Wenn "i" und "j" Elemente des Satzes "A" sind, so daß "" größer oder gleich F (j) ist, dann ist F (i) größer oder gleich F (j).
4. Prozessor, der aufweist: (a) eine CPU, die in einem realen Modus oder einem virtuellen Modus arbeitet, wobei die CPU im realen Modus und virtuellen Modus einen Satz von Betriebsmodi hat, die Schutzringe bilden, welche eine Hierarchie von privilgierten Niveaus definieren, wobei die Schutzringe verhindern, daß Prozesse eines äußeren, weniger priviligierten Rings Prozesse in einem relativ inneren, priviligierteren Ring stören; (b) ein Überwachungssystem für eine virtuelle Maschine (VVM); (c) eine Speichereinrichtung, die eine Vielzahl von adressierbaren Speicherstellen zum Speichern von Befehlen enthält, die einen Zugriff auf die Speicherstellen erfordern, wobei die Speichereinrichtung weiterhin mehrere Gruppen von Speicherstellen enthält und die Anzahl der Speicherstellen in jeder Speichergruppe variieren kann, wobei jede Speichergruppe ein zugeordnetes priviligiertes Mittel zum Identifizieren der Schutzring-Betriebsmodi hat, in denen der Prozessor auf irgendeine Speicherstelle der Gruppe zugreifen kann; (d) eine Einrichtung, die mit der CPU und der Speichereinrichtung zum schrittweisen Lesen von Befehlen aus der Speichereinrichtung verbunden ist; (e) eine Anzeigeeinrichtung für den virtuellen Modus zum Anzeigen, ob die CPU im virtuellen Modus arbeitet oder nicht; (f) eine Anzeigeeinrichtung für den Betriebsmodus zum Identifizieren des priviligierten Niveaus des gegenwärtigen Schutzring-Betriebsmodus der CPU; und (g) eine Einrichtung zum Freigeben des Zugriffs auf die Speichereinrichtung in Abhängigkeit von Informationen von der Anzeigeeinrichtung für den virtuellen Modus und von der Anzeigeeinrichtung für den Betriebsmodus; wobei der Prozessor weiterhin aufweist:
(A) die CPU zum Verarbeiten von Befehlen in "N" Schutzring- Betriebsmodi, von denen jeder mit einem von priviligierten Niveaus einer Hierarchie verbunden ist, wobei "N" zumindest drei ist;
(B) eine Kompressionseinrichtung zum Einrichten eines priviligierten Niveaus zum Speichern in dem priviligierten Mittel für den virtuellen Modus in Antwort auf den gegenwärtigen Schutzring-Betriebsmodus, der von der Anzeigerichtung für den Betriebsmodus identifiziert wurde, wobei die Kompressionseinrichtung in Übereinstimmung mit einer Kompressionsfunktion "F" arbeitet, die einen Satz A = (0,1,..., N) in einen zweiten Satz B = (0,1,..., N) abbildet, wobei jedes Element des Satzes A eines der priviligierten Niveaus identifiziert, wenn der Prozessor in dem virtuellen Modus arbeitet, und wobei jedes Element des Satzes B eines der priviligierten Niveaus identifiziert, wenn der Prozessor nicht in dem virtuellen Modus arbeitet, wobei hintereinanderfolgende Elemente jedes Satzes Schutzringen mit fortschreitend niedrigerem Privileg entsprechen, so daß in jedem Satz "0" das priviligierteste Niveau identifiziert und "N" das am wenigsten priviligierte Niveau identifiziert, wobei die Kompressionsfunktion "F" zumindest das Nullniveau des Satzes A einem Nicht-Nullniveau des Satzes B zuordnet.
5. Prozessor nach Anspruch 4, worin die Kompressionsfunktion "F" die folgenden Bedingungen erfüllt:
F (0) = 0 und
ii. Wenn "i " größer ist als "0" und kleiner oder gleich "N" ist, dann F(i) = i
6. Prozessor nach Anspruch 4, worin die Kompressionsfunktion "F" die folgenden Bedingungen erfüllt:
i. F (0) ist größer als "0" und
ii. Wenn "i" und "j" Elemente des Satzes A sind, so daß "i" größer oder gleich "j" ist, dann ist F(i) größer oder gleich F (j).
7. Prozessor, der aufweist: (a) eine CPU, die in einem realen Modus oder einem virtuellen Modus arbeitet, wobei die CPU im realen Modus und virtuellen Modus einen Satz von Betriebsmodi hat, die Schutzringe bilden, welche eine Hierarchie von priviligierten Niveaus definieren, wobei die Schutzringe verhindern, daß Prozesse eines äußeren, weniger priviligierten Rings Prozesse in einem relativ inneren, priviligierteren Ring stören; (b) ein Überwachungssystem für eine virtuelle Maschine (VVM); (c) eine Speichereinrichtung, die eine Vielzahl von adressierbaren Speicherstellen zum Speichern von Befehlen enthält, die einen Zugriff auf die Speicherstellen erfordern, wobei die Speichereinrichtung weiterhin mehrere Gruppen von Speicherstellen enthält und die Anzahl der Speicherstellen in jeder Speichergruppe variieren kann, wobei jede Speichergruppe eine zugeordnete priviligierte Einrichtung zum Identifizieren der Schutzring-Betriebsmodi hat, in denen der Prozessor auf irgendeine Speicherstelle der Gruppe zugreifen kann; (d) eine Einrichtung, die mit der CPU und der Speichereinrichtung zum schrittweisen Lesen von Befehlen aus der Speichereinrichtung verbunden ist; (e) eine Anzeigeeinrichtung für den virtuellen Modus zum Anzeigen, ob die CPU im virtuellen Modus arbeitet oder nicht; (f) eine Anzeigeeinrichtung für den Betriebsmodus zum Identifizieren des priviligierten Niveaus des gegenwärtigen Schutzring-Betriebsmodus der CPU; und (g) eine Einrichtung zum Freigeben des Zugriffs auf die Speichereinrichtung in Abhängigkeit von Informationen von der Anzeigeeinrichtung für den virtuellen Modus und von der Anzeigeeinrichtung für den Betriebsmodus; wobei der Prozessor weiterhin aufweist:
(A) die CPU zum Verarbeiten von Befehlen in zumindest drei Schutzring-Betriebsmodi, wobei jeder mit einem priviligierten Niveau einer Hierarchie verbunden ist;
(B) eine Kompressionseinrichtung, die mit der Anzeigeeinrichtung für den Betriebsmodus verbunden ist, zum Identifizieren des virtuellen Betriebsmodus in Antwort auf den gegenwärtigen Schutzring-Betriebsmodus, der von der Anzeigeeinrichtung für den Betriebsmodus identifiziert wurde, wobei die Kompressionseinrichtung in Übereinstimmung mit einer Kompressionsfunktion "F" arbeitet, die einen Satz A = (0, 1,..., N) in einen zweiten Satz B = (0, 1,...., M) abbildet, wobei jedes Element des Satzes A eines der priviligierten Niveaus identifiziert, wenn der Prozessor im virtuellen Modus arbeitet, und wobei jedes Element des Satzes B eines der priviligierten Niveaus identifiziert, wenn der Prozessor nicht im virtuellen Modus arbeitet, wobei die hintereinanderfolgenden Elemente jedes Satzes Schutzringen von fortschreitend niedrigerem Privileg entsprechen, so daß in jedem Satz "0" das priviligierteste Niveau identifiziert und "N" und "M" das am wenigsten priviligierte Niveau identifizieren, wobei die Kompressionsfunktion "F" zumindest das Nullniveau des Satzes A einem Nicht- Nullniveau des Satzes B zuordnet.
8. Prozessor nach Anspruch 7, worin die Kompressionsfunktion "F" die folgenden Bedingungen erfüllt:
i. F (0) ist größer als "0";
ii. F(N) ist kleiner oder gleich M; und
iii . Wenn "i" und "j" Elemente des Satzes A sind, so daß größer oder gleich "j" ist, dann ist F (i) größer oder gleich F (j).
9. Prozessor nach Anspruch 7, worin die Kompressionsfunktion "F" die folgenden Bedingungen erfüllt:
i. F(0) ist größer als "0";
ii. Wenn "i" größer oder gleich "j" ist, dann ist F(i) größer oder gleich F(j);
iii . Für zumindest ein "i" und "j", wobei "i" nicht gleich "j" ist, ist F (i) gleich F(j); und
iv. Wenn "i" und "j" Elemente des Satzes A sind, so daß "i" größer oder gleich "j" ist, dann ist F (i) größer oder gleich F(j).
10. Prozessor nach Anspruch 8 oder 9, wobei der Prozessor weiterhin aufweist:
(A) eine Auswahleinrichtung, die mit der Anzeigeeinrichtung für den Betriebsmodus, der Anzeigeeinrichtung für den virtuellen Modus und der Kompressionseinrichtung verbunden ist, zum selektiven Übertragen des priviligierten Niveaus als eine Ausgabe, das von der Kompressionseinrichtung in Antwort darauf identifiziert wurde, daß die Anzeigeeinrichtung für den virtuellen Modus anzeigt, daß der Prozessor in einem virtuellen Modus arbeitet, und ansonsten zum Übertragen des priviligierten Niveaus, das von der Anzeigeeinrichtung für den Betriebsmodus identifiziert wurde;
(B) eine Vergleichseinrichtung zum Vergleichen des Ausgangs der Auswahleinrichtung mit dem priviligierten Mittel der Stelle in dem Speicher, auf die der Prozessor einen Zugriff benötigt, um zu bestimmen, ob der Prozessor auf die erforderliche Speicherstelle zugreifen kann;
(C) eine Einrichtung, die auf einen erfolgreichen Vergleich durch die Vergleichseinrichtung reagiert, zum Freigeben der Verarbeitungseinrichtung, auf die erforderliche Speicherstelle zuzugreifen und den Befehl auszuführen.
11. Prozessor, wie in Anspruch 4 oder Anspruch 7 definiert, weiterhin aufweisend eine Einrichtung, die mit der Kompressionseinrichtung und mit dem priviligierten Mittel für den virtuellen Modus verbunden ist, zum Speichern des virtuellen Niveaus, das von der Kompressionseinrichtung erzeugt wird, in dem priviligierten Mittel für den virtuellen Modus.
12. Prozessor, wie in Anspruch 11 definiert, worin der Prozessor eine Anzeigeeinrichtung für den virtuellen Modus zum Anzeigen enthält, ob der Prozessor in einem virtuellen Modus arbeitet oder nicht, wobei die CPU weiterhin aufweist:
A. eine interne Registereinrichtung, die enthält:
i. reale Registereinrichtungen;
ii. virtuelle Registereinrichtungen;
B. eine Arithmetik- und Logikeinrichtung, die mit den realen Registereinrichtungen und den virtuellen Registereinrichtungen verbunden ist, zum selektiven Ausführen von Operationen bezüglich deren Inhalte; und
C. eine Steuereinrichtung, die mit den realen Registereinrichtungen, den virtuellen Registereinrichtungen, der Arithmetik- und Logikeinrichtung und der Anzeigeeinrichtung für den virtuellen Modus verbunden ist, zum Freigeben der Arithmetik- und Logikeinrichtung, Operationen mit den Inhalten ausgewählter realer Registereinrichtungen oder virtueller Registereinrichtungen in Antwort auf den Zustand der Anzeigeeinrichtung für den virtuellen Modus durchzuführen.
13. Prozessor, wie in Anspruch 12 definiert, worin die interne Registereinrichtung weiterhin Registereinrichtungen für allgemeine Zwecke enthält, wobei die Steuereinrichtung die Arithmetik- und Logikeinrichtung freigibt, Operationen mit den Inhalten ausgewählter Registereinrichtungen für allgemeine Zwecke unabhängig vom Zustand der Anzeigeeinrichtung für den virtuellen Modus durchzuführen.
14. Prozessor, wie in Anspruch 12 definiert, worin die interne Registereinrichtung weiterhin eine Statusregistereinrichtung enthält, die aufweist:
A. eine Prozessorstatus-Registereinrichtung und
B. eine Registereinrichtung für den virtuellen Status; wobei die Steuereinrichtung selektiv die Inhalte der Prozessorstatus- Registereinrichtung oder der Registereinrichtung für den virtuellen Status in Antwort auf den Zustand der Anzeigeeinrichtung für den virtuellen Modus verwendet.
15. Prozessor, wie in Anspruch 4 oder Anspruch 7 definiert, worin die CPU enthält:
A. eine interne Registereinrichtung, die aufweist:
i. reale Registereinrichtungen;
ii. virtuelle Registereinrichtungen;
B. eine Arithmetik- und Logikeinrichtung, die mit den realen Registereinrichtungen und den virtuellen Registereinrichtungen verbunden ist, zum selektiven Durchführen von Operationen mit deren Inhalten; und
C. eine Steuereinrichtung, die mit den realen Registereinrichtungen und den virtuellen Registereinrichtungen, der Arithmetik- und Logikeinrichtung und der Anzeigeeinrichtung für den virtuellen Modus verbunden ist, zum Freigeben der Arithmetik- und Logikeinrichtung, Operationen mit den Inhalten von ausgewählten realen Registereinrichtungen oder virtuellen Registereinrichtungen in Antwort auf den Zustand der Anzeigeeinrichtung für den virtuellen Modus durchzuführen.
16. Prozessor, wie in Anspruch 12 definiert, worin die interne Registereinrichtung weiterhin Registereinrichtungen für allgemeine Zecke enthält, wobei die Steuereinrichtung die Arithmetik- und Logikeinrichtung freigibt, Operationen mit den Inhalten einer ausgewählten der Registereinrichtungen für allgemeine Zwecke unabhängig von dem Zustand der Anzeigeeinrichtung für den virtuellen Modus durchzuführen.
17. Prozessor, wie in Anspruch 12 definiert, worin die interne Registereinrichtung weiterhin eine Statusregistereinrichtung enthält, die aufweist:
A. eine Prozessorstatus-Registereinrichtung und
B. eine Registereinrichtung für den virtuellen Status; wobei die Steuereinrichtung selektiv die Inhalte der Prozessorstatus-Registereinrichtung oder der Registereinrichtung für den virtuellen Status in Antwort auf den Zustand der Anzeigeeinrichtung für den virtuellen Modus verwendet.
18. Prozessor, wie in Anspruch 7 definiert, worin "N" größer als "M" ist.
DE8585402639T 1985-01-04 1985-12-26 Computer mit virtuellem maschinenmodus und mehrfachen schutzringen. Expired - Fee Related DE3587039T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US06/688,702 US4787031A (en) 1985-01-04 1985-01-04 Computer with virtual machine mode and multiple protection rings

Publications (2)

Publication Number Publication Date
DE3587039D1 DE3587039D1 (de) 1993-03-11
DE3587039T2 true DE3587039T2 (de) 1993-08-19

Family

ID=24765434

Family Applications (1)

Application Number Title Priority Date Filing Date
DE8585402639T Expired - Fee Related DE3587039T2 (de) 1985-01-04 1985-12-26 Computer mit virtuellem maschinenmodus und mehrfachen schutzringen.

Country Status (6)

Country Link
US (1) US4787031A (de)
EP (2) EP0480546A3 (de)
JP (1) JPS61275949A (de)
AU (1) AU584961B2 (de)
CA (1) CA1252572A (de)
DE (1) DE3587039T2 (de)

Families Citing this family (88)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS625441A (ja) * 1985-02-18 1987-01-12 Nec Corp 情報処理装置
JPS61190638A (ja) * 1985-02-20 1986-08-25 Hitachi Ltd 仮想計算機のフアイル制御方式
US5023773A (en) * 1988-02-10 1991-06-11 International Business Machines Corporation Authorization for selective program access to data in multiple address spaces
WO1990005338A1 (en) * 1988-11-02 1990-05-17 Hitachi, Ltd. Virtual computer system having extended memory
US5095420A (en) * 1988-11-21 1992-03-10 International Business Machines Method and system for performing virtual address range mapping in a virtual storage data processing system
US5051894A (en) * 1989-01-05 1991-09-24 Bull Hn Information Systems Inc. Apparatus and method for address translation of non-aligned double word virtual addresses
US5117491A (en) * 1989-03-31 1992-05-26 Bull Hn Information Systems Inc. Ring reduction logic using parallel determination of ring numbers in a plurality of functional units and forced ring numbers by instruction decoding
EP0470163A1 (de) * 1989-04-28 1992-02-12 COWSLEY, Christopher William Sicherheit für maschinenschreibbare datenspeichersysteme
US5057996A (en) * 1989-06-29 1991-10-15 Digital Equipment Corporation Waitable object creation system and method in an object based computer operating system
US5463778A (en) * 1989-11-16 1995-10-31 Texas Instruments Incorporated User controlled trap handler
US5522075A (en) * 1991-06-28 1996-05-28 Digital Equipment Corporation Protection ring extension for computers having distinct virtual machine monitor and virtual machine address spaces
US5319760A (en) * 1991-06-28 1994-06-07 Digital Equipment Corporation Translation buffer for virtual machines with address space match
US5596755A (en) * 1992-11-03 1997-01-21 Microsoft Corporation Mechanism for using common code to handle hardware interrupts in multiple processor modes
WO1994012923A2 (en) * 1992-11-30 1994-06-09 Base 10 Systems, Inc. A safety critical processor and processing method for a data processing system
US5428806A (en) * 1993-01-22 1995-06-27 Pocrass; Alan L. Computer networking system including central chassis with processor and input/output modules, remote transceivers, and communication links between the transceivers and input/output modules
US5555385A (en) * 1993-10-27 1996-09-10 International Business Machines Corporation Allocation of address spaces within virtual machine compute system
US5596739A (en) * 1994-02-08 1997-01-21 Meridian Semiconductor, Inc. Method and apparatus for detecting memory segment violations in a microprocessor-based system
US5530804A (en) * 1994-05-16 1996-06-25 Motorola, Inc. Superscalar processor with plural pipelined execution units each unit selectively having both normal and debug modes
US5901312A (en) * 1994-12-13 1999-05-04 Microsoft Corporation Providing application programs with unmediated access to a contested hardware resource
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
US5612865A (en) * 1995-06-01 1997-03-18 Ncr Corporation Dynamic hashing method for optimal distribution of locks within a clustered system
US5699500A (en) * 1995-06-01 1997-12-16 Ncr Corporation Reliable datagram service provider for fast messaging in a clustered environment
US5950221A (en) * 1997-02-06 1999-09-07 Microsoft Corporation Variably-sized kernel memory stacks
US6012129A (en) * 1997-03-31 2000-01-04 International Business Machines Corporation Apparatus and method allocating virtual memory upon demand
US6360244B1 (en) * 1997-04-11 2002-03-19 Fujitsu Limited System and method for multi-level memory domain protection
DE19735948C1 (de) * 1997-08-19 1998-10-01 Siemens Nixdorf Inf Syst Verfahren zur Verbesserung der Steuerungsmöglichkeit in Datenverarbeitungsanlagen mit Adreßübersetzung
US6070224A (en) 1998-04-02 2000-05-30 Emc Corporation Virtual tape system
US6260110B1 (en) 1998-04-02 2001-07-10 Emc Corporation Virtual tape system with variable size
US6496847B1 (en) 1998-05-15 2002-12-17 Vmware, Inc. System and method for virtualizing computer systems
US6397242B1 (en) 1998-05-15 2002-05-28 Vmware, Inc. Virtualization system including a virtual machine monitor for a computer with a segmented architecture
CN1151488C (zh) * 1998-10-02 2004-05-26 国际商业机器公司 通过一般分层对象进行有效语音导航的结构框架
US7516453B1 (en) * 1998-10-26 2009-04-07 Vmware, Inc. Binary translator with precise exception synchronization mechanism
US6199159B1 (en) * 1998-12-22 2001-03-06 Intel Corporation Booting an operating system
EP2320318A1 (de) * 1999-01-28 2011-05-11 ATI Technologies ULC Ausführung von Programmen für eine erste Rechnerarchitektur auf einem Rechner mit einer zweiten Architektur
US7213247B1 (en) * 2000-01-10 2007-05-01 Wind River Systems, Inc. Protection domains for a computer operating system
US7082615B1 (en) * 2000-03-31 2006-07-25 Intel Corporation Protecting software environment in isolated execution
US6990579B1 (en) * 2000-03-31 2006-01-24 Intel Corporation Platform and method for remote attestation of a platform
US7818808B1 (en) * 2000-12-27 2010-10-19 Intel Corporation Processor mode for limiting the operation of guest software running on a virtual machine supported by a virtual machine monitor
JP4291964B2 (ja) * 2001-04-19 2009-07-08 株式会社日立製作所 仮想計算機システム
US7055038B2 (en) * 2001-05-07 2006-05-30 Ati International Srl Method and apparatus for maintaining secure and nonsecure data in a shared memory system
US7478394B1 (en) * 2001-06-04 2009-01-13 Hewlett-Packard Development Company, L.P. Context-corrupting context switching
US7103529B2 (en) * 2001-09-27 2006-09-05 Intel Corporation Method for providing system integrity and legacy environment emulation
US7200144B2 (en) * 2001-10-18 2007-04-03 Qlogic, Corp. Router and methods using network addresses for virtualization
US7130951B1 (en) * 2002-04-18 2006-10-31 Advanced Micro Devices, Inc. Method for selectively disabling interrupts on a secure execution mode-capable processor
US20080008202A1 (en) * 2002-10-31 2008-01-10 Terrell William C Router with routing processors and methods for virtualization
GB2411027B (en) * 2002-11-18 2006-03-15 Advanced Risc Mach Ltd Control of access to a memory by a device
US7278030B1 (en) 2003-03-03 2007-10-02 Vmware, Inc. Virtualization system for computers having multiple protection mechanisms
WO2004104825A1 (en) 2003-05-15 2004-12-02 Applianz Technologies, Inc. Systems and methods of creating and accessing software simulated computers
US7421689B2 (en) * 2003-10-28 2008-09-02 Hewlett-Packard Development Company, L.P. Processor-architecture for facilitating a virtual machine monitor
TWI259398B (en) * 2004-02-04 2006-08-01 Sunplus Technology Co Ltd Device and method using operation mode in processor to switch register
US8024730B2 (en) * 2004-03-31 2011-09-20 Intel Corporation Switching between protected mode environments utilizing virtual machine functionality
US7401230B2 (en) * 2004-03-31 2008-07-15 Intel Corporation Secure virtual machine monitor to tear down a secure execution environment
US7937700B1 (en) 2004-05-11 2011-05-03 Advanced Micro Devices, Inc. System, processor, and method for incremental state save/restore on world switch in a virtual machine environment
US7209994B1 (en) * 2004-05-11 2007-04-24 Advanced Micro Devices, Inc. Processor that maintains virtual interrupt state and injects virtual interrupts into virtual machine guests
US7802250B2 (en) * 2004-06-28 2010-09-21 Intel Corporation Support for transitioning to a virtual machine monitor based upon the privilege level of guest software
US7640543B2 (en) * 2004-06-30 2009-12-29 Intel Corporation Memory isolation and virtualization among virtual machines
US7496743B1 (en) * 2004-11-08 2009-02-24 Sun Microsystems, Inc. Modeling operating system instances
US7757231B2 (en) * 2004-12-10 2010-07-13 Intel Corporation System and method to deprivilege components of a virtual machine monitor
US20060143417A1 (en) * 2004-12-23 2006-06-29 David Poisner Mechanism for restricting access of critical disk blocks
US7849327B2 (en) * 2005-01-19 2010-12-07 Leung Hin L Technique to virtualize processor input/output resources
US7685635B2 (en) * 2005-03-11 2010-03-23 Microsoft Corporation Systems and methods for multi-level intercept processing in a virtual machine environment
US7904903B2 (en) * 2005-06-30 2011-03-08 Intel Corporation Selective register save and restore upon context switch using trap
US8327353B2 (en) * 2005-08-30 2012-12-04 Microsoft Corporation Hierarchical virtualization with a multi-level virtualization mechanism
US9274974B1 (en) 2005-10-21 2016-03-01 Vmware, Inc. Isolating data within a computer system using private shadow mappings
US7490214B2 (en) * 2006-06-12 2009-02-10 Sun Microsystems, Inc. Relocating data from a source page to a target page by marking transaction table entries valid or invalid based on mappings to virtual pages in kernel virtual memory address space
US7827374B2 (en) * 2006-06-12 2010-11-02 Oracle America, Inc. Relocating page tables
US7721068B2 (en) * 2006-06-12 2010-05-18 Oracle America, Inc. Relocation of active DMA pages
US7802070B2 (en) 2006-06-13 2010-09-21 Oracle America, Inc. Approach for de-fragmenting physical memory by grouping kernel pages together based on large pages
US7500074B2 (en) * 2006-06-30 2009-03-03 Sun Microsystems, Inc. Identifying relocatable kernel mappings
US7472249B2 (en) * 2006-06-30 2008-12-30 Sun Microsystems, Inc. Kernel memory free algorithm
US8555081B2 (en) 2007-10-30 2013-10-08 Vmware, Inc. Cryptographic multi-shadowing with integrity verification
US9740637B2 (en) 2007-10-30 2017-08-22 Vmware, Inc. Cryptographic multi-shadowing with integrity verification
US8464011B2 (en) * 2008-10-27 2013-06-11 Advanced Micro Devices, Inc. Method and apparatus for providing secure register access
US9747118B2 (en) * 2009-01-06 2017-08-29 Intel Corporation Guest-specific microcode
US9411395B2 (en) * 2013-04-18 2016-08-09 Intel Corporation Method and apparatus to control current transients in a processor
US9444704B2 (en) * 2013-05-20 2016-09-13 Hitachi, Ltd. Method for controlling monitoring items, management computer, and computer system in cloud system where virtual environment and non-virtual environment are mixed
US9405937B2 (en) * 2013-06-28 2016-08-02 Intel Corporation Method and apparatus for securing a dynamic binary translation system
US10061940B2 (en) * 2013-07-09 2018-08-28 Andes Technology Corporation Secure protection processor and method including comparing an instruction security attribute of an instruction and a security attribute of an operational event
US9329884B2 (en) * 2014-07-11 2016-05-03 Intel Corporation Managing generated trace data for a virtual machine
US9965375B2 (en) 2016-06-28 2018-05-08 Intel Corporation Virtualizing precise event based sampling
US11531627B2 (en) 2019-03-08 2022-12-20 International Business Machines Corporation Secure storage isolation
US11068310B2 (en) 2019-03-08 2021-07-20 International Business Machines Corporation Secure storage query and donation
US11283800B2 (en) 2019-03-08 2022-03-22 International Business Machines Corporation Secure interface control secure storage hardware tagging
US11455398B2 (en) 2019-03-08 2022-09-27 International Business Machines Corporation Testing storage protection hardware in a secure virtual machine environment
US11487906B2 (en) 2019-03-08 2022-11-01 International Business Machines Corporation Storage sharing between a secure domain and a non-secure entity
US11182192B2 (en) 2019-03-08 2021-11-23 International Business Machines Corporation Controlling access to secure storage of a virtual machine
US11640361B2 (en) 2019-03-08 2023-05-02 International Business Machines Corporation Sharing secure memory across multiple security domains
US11176054B2 (en) 2019-03-08 2021-11-16 International Business Machines Corporation Host virtual address space for secure interface control storage

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB1354827A (en) * 1971-08-25 1974-06-05 Ibm Data processing systems
US3858182A (en) * 1972-10-10 1974-12-31 Digital Equipment Corp Computer program protection means
FR2258112A5 (de) * 1973-11-30 1975-08-08 Honeywell Bull Soc Ind
US3916385A (en) * 1973-12-12 1975-10-28 Honeywell Inf Systems Ring checking hardware
US4351024A (en) * 1975-04-21 1982-09-21 Honeywell Information Systems Inc. Switch system base mechanism
US4084231A (en) * 1975-12-18 1978-04-11 International Business Machines Corporation System for facilitating the copying back of data in disc and tape units of a memory hierarchial system
JPS6051732B2 (ja) * 1978-08-31 1985-11-15 富士通株式会社 デ−タ・ベ−スを有するデ−タ処理システム
US4253145A (en) * 1978-12-26 1981-02-24 Honeywell Information Systems Inc. Hardware virtualizer for supporting recursive virtual computer systems on a host computer system
US4500952A (en) * 1980-05-23 1985-02-19 International Business Machines Corporation Mechanism for control of address translation by a program using a plurality of translation tables
US4430705A (en) * 1980-05-23 1984-02-07 International Business Machines Corp. Authorization mechanism for establishing addressability to information in another address space
US4507752A (en) * 1983-02-22 1985-03-26 International Business Machines Corporation In-place index compression

Also Published As

Publication number Publication date
EP0187603B1 (de) 1993-01-27
JPH0459654B2 (de) 1992-09-22
JPS61275949A (ja) 1986-12-06
DE3587039D1 (de) 1993-03-11
EP0480546A3 (en) 1992-09-30
EP0187603A3 (en) 1989-04-26
AU5180886A (en) 1986-07-10
US4787031A (en) 1988-11-22
EP0480546A2 (de) 1992-04-15
AU584961B2 (en) 1989-06-08
CA1252572A (en) 1989-04-11
EP0187603A2 (de) 1986-07-16

Similar Documents

Publication Publication Date Title
DE3587039T2 (de) Computer mit virtuellem maschinenmodus und mehrfachen schutzringen.
DE3587622T2 (de) Emulationseinrichtung in einem Datenverarbeitungssystem.
DE3607889C2 (de)
DE68921775T2 (de) Prozessorssimulation.
DE69227774T2 (de) Speicherverwaltungsverfahren
DE3586359T2 (de) System und verfahren zum durchfuehren von ein-/ausgabeoperationen fuer ein virtuelles system.
DE3689287T2 (de) Datenverarbeitungsgerät.
DE10393679B4 (de) Prozessor, der einen Übergang zwischen einem virtuellen Maschinen Betriebsmodus (VM) und einem virtuellen Maschinen Monitor Betriebsmodus (VMM) unterstützt
DE69032254T2 (de) Rechner mit Tastaturkennwortfunktionen
DE3716229C2 (de) Mikroprozessorchip mit einem Stapelrahmen-Cache
DE3685876T2 (de) Meister-sklave-mikroprozessorsystem mit einem virtuellen speicher.
DE68921776T2 (de) Prozessorssimulation.
DE3685863T2 (de) Rechnersystem zur steuerung virtueller maschinen.
DE3889816T2 (de) Virtuelle Ein/Ausgabebefehle.
DE3687805T2 (de) Ein-ausgabesteuersystem in einem virtuellen maschinensystem.
DE2902465A1 (de) Datenverarbeitungsanordnung
DE2517276A1 (de) Datenverarbeitungssystem
DE2243956A1 (de) Speicherprogrammierte datenverarbeitungsanlage
DE2948285A1 (de) Adressensteuersystem fuer softwaresimulation
DE2612054A1 (de) Verfahren zur adressentwicklung und prozessor zur durchfuehrung des verfahrens
DE3750806T2 (de) Eingeschlossene Domänenadressierung.
DE2721623C2 (de)
DE69727177T2 (de) Emulation von asynchronen Signalen mit Verzweigungsmechanismus
DE69231278T2 (de) Anwendungs-software für hardware-unterbrechungen.
DE3338329A1 (de) Computersystem

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee