DE3607889C2 - - Google Patents

Info

Publication number
DE3607889C2
DE3607889C2 DE3607889A DE3607889A DE3607889C2 DE 3607889 C2 DE3607889 C2 DE 3607889C2 DE 3607889 A DE3607889 A DE 3607889A DE 3607889 A DE3607889 A DE 3607889A DE 3607889 C2 DE3607889 C2 DE 3607889C2
Authority
DE
Germany
Prior art keywords
interrupt
control program
virtual machine
address
executed
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
DE3607889A
Other languages
English (en)
Other versions
DE3607889A1 (de
Inventor
Toshio Machida Jp Hirosawa
Jun'ichi Hachioji Jp Kurihara
Shigemi Kiyose Jp Okumura
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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Publication of DE3607889A1 publication Critical patent/DE3607889A1/de
Application granted granted Critical
Publication of DE3607889C2 publication Critical patent/DE3607889C2/de
Granted legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • 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

Description

Die Erfindung betrifft ein Verfahren zum Steuern von Unterbrechungen in einem virtuellen Maschinensystem gemäß dem Oberbegriff des Anspruchs 1 sowie eine Vorrichtung zur Durchführung eines solchen Verfahrens gemäß dem Oberbegriff des Anspruchs 5.
Wie es im Grundkonzept in Fig. 1 der zugehörigen Zeichnung dargestellt ist, erlaubt es ein virtuelles Maschinensystem, eine Vielzahl von Betriebssystemen 506, 507 in einer Grundmaschine 501 scheinbar gleichzeitig auszuführen. Dazu ist keine direkte Grundmaschinenschnittstelle zwischen jedem Betriebssystem 506, 507 und der Grundmaschine 501, sondern ein spezielles Steuerprogramm, beispielsweise ein virtueller Maschinenmonitor 502 vorgesehen, das in der Grundmaschine 501 unter der Steuerung einer Grundmaschinenschnittstelle 503 arbeitet, um für jedes Betriebssystem 506, 507 eine Grundmaschinenschnittstelle 508 zu unterstützen, die der Grundmaschinenschnittstelle 503 äquivalent ist. Eine Maschine, die im Grundkonzept dann gebildet wird, wenn der virtuelle Maschinenmonitor 502 die Grundmaschinenschnittstelle aufbaut, wird als virtuelle Maschine bezeichnet. Obwohl in Fig. 1 zwei virtuelle Maschinen 504, 505 vorgesehen sind, in denen die Betriebssysteme 506, 507 jeweils arbeiten, kann eine willkürliche Anzahl von virtuellen Maschinen gebildet werden. Die virtuellen Maschinen 504, 505 werden unter der Steuerung des virtuellen Maschinenmonitors 502 so umgeschaltet, daß sie virtuell gleichzeitig arbeiten.
Die Betriebssysteme 506, 507 stützen andererseits erweiterte Maschinenschnittstellen 513, 514 für Anwenderprogramme 515, 516 und 517, 518 jeweils, um dadurch erweiterte Maschinen 509 bis 512 zu bilden. Jede erweiterte Maschine 509 bis 512 hat die Funktion, in den jeweiligen Betriebssystemen eine Verarbeitung auf eine Verarbeitungsanforderung, beispielsweise auf einen Aufruf an das Organisationsprogramm oder einen Funktionsaufruf ansprechend, auszuführen, der für eine Gruppe von Funktionen von einem Anwenderprogramm ausgegeben wird, das der erweiterten Maschine und einer Grundmaschinenschnittstellenfunktion zugeordnet ist, die durch die erweiterte Maschinenschnittstelle unterstützt wird. Wenn somit die Betriebssysteme 506, 507 voneinander verschieden sind, haben die dazu gehörenden erweiterten Maschinen beispielsweise die Maschinen 509 und 511 jeweils verschiedene Funktionen.
Wie es oben beschrieben wurde, macht es das virtuelle Maschinensystem möglich, eine Vielzahl von Betriebssystemen in einer einzigen Grundmaschine scheinbar gleichzeitig auszuführen, was erwartungsgemäß folgendes bewirkt:
  • 1. Die Arbeit eines laufenden Systems muß nicht unterbrochen werden, um einen Programmfehler zu beheben oder ein neues entwickeltes System auszutesten.
  • 2. Da eine Vielzahl von verschiedenen Betriebssystemen in einer einzigen Grundmaschine arbeiten kann, können die Hardware-Betriebsmittel wirksamer ausgenutzt werden.
  • 3. Eine Grundmaschine erlaubt es, virtuell ein Maschinensystem mit einer anderen Architektur oder einem anderen Systemaufbau auszubilden, so daß ein Steuerprogramm einer neuen Maschine oder eines neuen Maschinensystems selbst dann getestet werden kann, wenn die betreffende Hardware tatsächlich nicht existiert.
Zur Ausführung des virtuellen Maschinensystems wird das spezielle Steuerprogramm, der virtuelle Maschinenmonitor 502 unterstützt. Um effektiv die virtuellen Maschinen 504, 505 zu betreiben, unterteilt der virtuelle Maschinenmonitor 502 die Hardware-Betriebsmittel der Grundmaschine 501 bezüglich der Zeit und des Raumes unter Verwendung des Mehrprogrammbetriebes, um dadurch die Hardware-Betriebsmittel jeder virtuellen Maschine 504, 505 zuzuordnen. Befehle zum Handhaben der Hardware-Betriebsmittel werden als privilegierte Befehle formuliert, um die Systemintegrität des gesamten virtuellen Maschinensystems zu garantieren, und können nur in einer Betriebsart ausgeführt werden, die eine privilegierte Betriebsart genannt wird. Wenn wahrgenommen wird, daß ein derartiger privilegierter Befehl vom Betriebssystem 506 oder 507 ausgegeben wurde, wird dieser Befehl vom virtuellen Maschinenmonitor 502 selbst interpretiert und ausgeführt. Wenn die Ausführung abgeschlossen ist, führt dieser die Steuerung zu einem Betriebssystem zurück, das gerade läuft. Diese Verarbeitung ist notwendig, um die Betriebsmittel der Grundmaschine 501 unter den virtuellen Maschinen aufzuteilen, und das Zeitintervall, das für die Verarbeitung benötigt wird, führt zu einem Verwaltungszeitbedarf, der nur das virtuelle Maschinensystem betrifft. Da darüberhinaus ein aufgeteilter Hauptspeicher unter Verwendung von Techniken verwirklicht wird, die dem virtuellen Speichersystem zugeordnet sind, ist das Zeitintervall, das dazu benutzt wird, die Adressen für die virtuelle Speicherung umzusetzen, gleichfalls in der zusätzlichen Verwaltungszeit enthalten. Diese zusätzliche Zeit, die nur das virtuelle Maschinensystem betrifft, kann kurz in der folgenden Weise klassifiziert werden:
  • 1. Verwaltungszeit aufgrund einer Simulationsverarbeitung eines privilegierten Befehls.
  • 2. Verwaltungszeit aufgrund einer Simulationsverarbeitung eines Unterbrechungsprogrammes.
  • 3. Verwaltungszeit aufgrund einer Adressenumwandlung zur Unterstützung der virtuellen Speicherfunktion.
  • 4. Verwaltungszeit, die zu einer Verteilungsverarbeitung (Umschalten) zwischen den virtuellen Maschinen gehört.
Bisher wurde ein virtuelles Maschinensystem hauptsächlich auf dem Gebiet von großen Allzweckrechnern, nämlich Großrechnern und Großrechenprozessoren in Betracht gezogen. Ein bemerkenswerter Fortschritt in der jüngsten Hochintegrationstechnik hat andererseits die Mikrocomputertechnik stark weiterentwickelt. Das hat zur Folge, daß Kombinationen aus Mikrocomputern und peripheren Geräten, nämlich sogenannten Personalcomputer, entwickelt wurden. Viele Anwenderprogramme für verschiedene Personalcomputer werden gegenwärtig entwickelt. In dieser Situation ist es wünschenswert, nützliche Anwenderprogramme, die für einen Personalcomputer entwickelt wurden, auch bei einem anderen Personalcomputer verwenden zu können. Derartige Anwenderprogramme wurden jedoch so entwickelt, daß sie unter den jeweiligen speziellen Betriebssystemen arbeiten. Für Personalcomputer sind die Anwenderprogramme besonders an das Betriebssystem gekoppelt. Es ist vorauszusehen, daß es wünschenswert wird, derartige Anwenderprogramme auch bei einem anderen Personalcomputer mit einem anderen Betriebssystem auszuführen und daß es notwendig werden wird, beim Austauschen des Betriebssystems erneut Teile der Anwenderprogramme zu bilden, die in einer engen Beziehung zu dem Betriebssystem stehen. Das ist in vielen Fällen außerordentlich unzweckmäßig. Es ist daher außerodentlich effektiv, zur Lösung dieses Problems ein virtuelles Maschinensystem zu verwenden, das es erlaubt, daß eine Vielzahl von Betriebssystemen in einer einzigen Grundmaschine arbeitet, da beispielsweise die Größe des Betriebssystems für einen Personalcomputer wesentlich geringer als die Größe des Betriebssystems einer Großmaschine ist.
Es gibt gegenwärtig jedoch keinen Computer, der mit Einrichtungen zur Verringerung des zusätzlichen Zeitbedarfs versehen ist, der durch den virtuellen Maschinenmonitor verursacht wird, wie es oben beschrieben wurde. Es ist erwünscht, den zusätzlichen Zeitbedarf so weit wie möglich herabzusetzen, wenn das virtuelle Maschinensystem bei einem Personalcomputer angewandt wird.
Eine typische Mikroprozessorarchitektur, die gegenwärtig benutzt wird, ist beispielsweise in "A Microprocessor Architecture for a Changing World: The Motorola 68 000" Computer Bd. 12, Seite 43 bis 52 (1979-2), IEEE und "iAPX 86 Family User′s Manual", Intel Corporation: Document No. 205 885, beschrieben.
Ein Verfahren und eine Vorrichtung der eingangs bezeichneten Art sind aus US 44 00 769 A bekannt. Diese Druckschrift bezieht sich auf einen Allzweckcomputer und befaßt sich insbesondere mit derjenigen Verwaltungszeit, die ein im Anspruch 1 als erstes Steuerprogramm bezeichneter Maschinenmonitor zur Simulation eines privilegierten Befehls, d. h. eines Betriebssystembefehls, benötigt.
Auch DE 29 48 285 C2 beschreibt die allgemeinen Funktionen, die ein virtueller Maschinenmonitor in einem System von virtuellen Maschinen auszuführen hat. Dabei ist auch der Verwaltungszeitaufwand in Zusammenhang mit der Verarbeitung von Unterbrechungen angesprochen.
Der Erfindung liegt die Aufgabe zugrunde, ein Steuerverfahren und eine Steuervorrichtung in einem virtuellen Maschinensystem für ein Personalcomputersystem mit Mikroprozessoren zu schaffen, wobei das Eingreifen des virtuellen Maschinenmonitors bei der Unterbrechungsverarbeitung so weit wie möglich herabgesetzt wird, um den Verwaltungszeitbedarf des Betriebssystems zu verringern.
Diese Aufgabe wird durch das in Anspruch 1 gekennzeichnete Verfahren bzw. die in Anspruch 5 gekennzeichnete Vorrichtung gelöst.
Im folgenden wird zunächst die Verarbeitung beschrieben, die dann erfolgt, wenn eine Programmunterbrechung beispielsweise eine Teilung durch Null in einem virtuellen Maschinensystem auftritt, das mit einem Personalcomputer ausgeführt wird, der einen Mikroprozessor umfaßt, wobei das erfindungsgemäße Steuerverfahren dargestellt wird. Wenn ein virtuelles Maschinensystem von einem Personalcomputer gebildet wird, enthält jede virtuelle Maschine 504 und 505 eine Vektortabelle. Die Grundmaschine 501, die einen Mikroprozessor umfaßt, enthält andererseits eine echte Vektortabelle.
Bei einer Verarbeitung, bei der das Anwenderprogramm 515 unter der Steuerung des Betriebssystems 506 ausgeführt wird, das einer virtuellen Maschine entspricht, wird dann, wenn eine Unterbrechung gefordert ist und die Forderung die Unterbrechungsbedingung erfüllt, die Ausführung der folgenden Befehle des Anwenderprogramms 515 unterbrochen, und ein Mikroprogramm in der Hardware der Grundmaschine 501 beginnt mit dem Ablauf einer Unterbrechungsverarbeitung. Der Inhalt und die Abfolge dieser Arbeitsweise werden kurz in der folgenden Weise zusammengefaßt:
  • 1. Der Mikroprozessorstatus wird in Betriebsregistern sichergestellt.
  • 2. Es wird eine Eintragsposition (Eintragsadresse einer Vektortabelle) für eine Unterbrechungsnummer (Unterbrechungsidentifikationsnummer) in der echten Vektortabelle des virtuellen Maschinenmonitors 502 berechnet.
  • 3. In einem Speicherbereich (im folgenden auch kurz als "Stack" bezeichnet) des virtuellen Maschinenmonitors 502 werden der Inhalt eines Programmzählers (Befehlsadressenregister) und verschiedener Betriebsregister sowie der oben im Schritt 1. sichergestellte Status gespeichert.
  • 4. Es wird eine Adresse eines neuen Befehls auf der Grundlage der Vektoradresse gelesen, die im Schritt 2. erhalten wird, und es wird die Adresse in den Programmzähler eingegeben.
Die oben beschriebene Verarbeitung wird über Mikroprogramme im Mikroprogrammverarbeitungsteil 501A von Fig. 2 ausgeführt. Wenn der Schritt 4 ausgeführt ist, geht die Steuerung auf den virtuellen Maschinenmonitor 502 über.
Fig. 2 zeigt in ausgezogenen Linien schematisch den Ablauf des Unterbrechungsprogramms bei Anwendung der Erfindung. Zum Vergleich ist der Ablauf eines Unterbrechungsprogramms nach einem anderen denkbaren Steuerverfahren in gestrichelten Linien dargestellt.
Wie in Fig. 2 dargestellt ist, hält jede Eintragsposition einer Vektortabelle 550 im virtuellen Maschinenmonitor 502 die erste Adresse eines Programmes, um eine Unterbrechung auszuführen, die mit einer Unterbrechungsnummer versehen ist, die dem Programm zugeordnet ist. Der Eintrag 551 entspricht beispielsweise einer privilegierten Befehlsunterbrechung und hält die erste Adresse eines Programmes 552 zum Simulieren eines privilegierten Befehls. Der Eintrag 553 entspricht einer Unterbrechung durch eine Teilung durch Null und hält somit die erste Adresse eines Arbeitsprogramms 554 zum Auslösen einer Unterbrechungsverarbeitung. Die Vektortabelleneinträge, die der Anweisungsunterbrechung, der Eingangs/Ausgangsunterbrechung und der Zeitgeberunterbrechung zugeordnet sind, werden darüberhinaus im virtuellen Maschinenmonitor 502 gebildet.
Ohne Anwendung der Erfindung wird die Adresse der den Unterbrechungsablauf auslösenden Verarbeitung 554 zum Unterbrechen des Betriebssystems 506 der betreffenden virtuellen Maschine im virtuellen Maschinenmonitor am Unterbrechungseintrag 553 für das Teilen durch Null in der echten Vektortabelle 550 gesetzt, so daß das Verarbeitungsprogramm 554 erforderlichenfalls ausgeführt wird.
Das die Unterbrechungsverarbeitung auslösende Arbeitsprogramm 554 führt eine Verarbeitung, die der Arbeit des Mikroprogrammteils 501A des Mikroprozessors äquivalent ist, unter Verwendung einer Vektortabelle 555 und eines Stacks 201 der virtuellen Maschine aus, wobei diese Verarbeitung einen Verwaltungs-Zeitbedarf des virtuellen Maschinenmonitors bedingt.
Im Gegensatz dazu wird bei Anwendung der Erfindung jeder Eintrag der Vektortabelle des virtuellen Maschinenmonitors, auf den die Grundmaschinen-Hardware bei dem Auftreten einer Unterbrechung Bezug nimmt, vorher mit der Adresse des Unterbrechungsverarbeitungsprogramms einer virtuellen Maschine geladen, das für eine Unterbrechungsnummer zu verwenden ist, die dem Eintrag zugeordnet ist. Natürlich ist keine Unterbrechung, wie beispielsweise eine Zeitgeberunterbrechung, enthalten, für die die virtuelle Maschine die Verarbeitung direkt ausführen muß. Wenn somit eine aufgetretene Unterbrechung direkt durch die virtuelle Maschine verarbeitet werden kann, wird der virtuelle Maschinenmonitor nicht aktiviert, d. h. kann das Unterbrechungs-Verarbeitungsprogramm der virtuellen Maschine unmittelbar die notwendige Verarbeitung bewirken, was den Verwaltungs-Zeitbedarf ausschließt, der mit dem Eingriff des virtuellen Maschinenmonitors verbunden ist.
Darüberhinaus wird auch der Inhalt des System-Stack-Zeigers, der den Stack (Speicherbereich) anzeigt, vorher eingegeben oder gesetzt, um den Stack der laufenden virtuellen Maschine anzugeben. Folglich werden die Inhalte der Register, die für eine Unterbrechungsverarbeitung sicherzustellen sind, direkt im Stack der laufenden virtuellen Maschine gespeichert, so daß kein Verwaltungs-Zeitbedarf auftritt.
Wenn der virtuellen Maschinenmonitor eine Verteilungsverarbeitung zum Verteilen der Betriebsmittel der Grundmaschine von Fig. 1 auf die virtuellen Maschinen durchführt, ändert er somit den Wert des Eintrags 553 der Vektortabelle 550 und den Wert des System-Stack-Zeigers, wie es später beschrieben wird, so daß die Inhalte der Programmzähler und der verschiedenen Betriebsregister und der Status des Prozessors direkt im Stack 201 des Betriebssystems 506 in der virtuellen Maschine und nicht in einem Stack 558 des virtuellen Maschinenmonitors 502 im Programmschritt (3) des Mikroprogrammverarbeitungsteils 501A in der Grundmaschine sichergestellt werden. Da die Adresse des Stack 558 gewöhnlich durch den System-Stack-Zeiger angegeben wird, wird eine direkte Sicherstellung dadurch ausgeführt, daß der Inhalt des System-Stack-Zeigers durch die Adresse des Stack 201 bei der Verteilungsverarbeitung ersetzt wird.
Beim Programmschritt (4) des Mikroprogrammverarbeitungsteils 501A wird weiterhin die erste Adresse eines Unterbrechungsverarbeitungsprogramms 557 des Betriebssystems 506 in der virtuellen Maschine direkt in den Programmzähler eingegeben. Dieser Arbeitsvorgang wird bei der Verteilung dadurch ausgeführt, daß der Inhalt des entsprechenden Eintrags 553 der Vektortabelle 550 im virtuellen Maschinenmonitor durch die erste Adresse des Unterbrechungsverarbeitungsprogramms 557 des Betriebssystems 506 in der virtuellen Maschine ersetzt wird.
Folglich kann das den Unterbrechungsbetrieb auslösende Verarbeitungsprogramm, beispielsweise das Programm 554, fehlen, das von gestrichelten Linien im virtuellen Maschinenmonitor 502 umgeben ist. Das hat zur Folge, daß das Zeitintervall, das für die Ausführung von 500 bis 600 Befehlen zum Auslösen der Verarbeitung, d. h. der Verwaltungs-Zeitbedarf des virtuellen Maschinenmonitors, vermieden werden kann.
Im folgenden werden anhand der zugehörigen Zeichnung besonders bevorzugte Ausführungsbeispiele der Erfindung näher beschrieben. Es zeigt
Fig. 1 in einem Plandiagramm ein virtuelles Maschinensystem,
Fig. 2 eine vergleichende Darstellung des Unterbrechungsablaufs bei einem bekannten und bei dem erfindungsgemäßen System,
Fig. 3 in einem Blockschaltbild ein Beispiel eines Personalcomputers, bei dem das erfindungsgemäße Verfahren und die erfindungsgemäße Vorrichtung angewandt werden können,
Fig. 4 in einem schematischen Blockdiagramm einen Speicher- und Steuerblock eines Speichers einer virtuellen Maschine und eines echten Speichers,
Fig. 5 in einem Diagramm den Aufbau des Mikroprozessors (CPU 51) von Fig. 3,
Fig. 6 in einem Flußdiagramm die Arbeitsabfolge des Mikroprogrammprozessorteils von Fig. 5 und
Fig. 7 in einem Flußdiagramm den Programmteil des Verteilungsprogramms, das im virtuellen Maschinenmonitor gemäß der Erfindung auszuführen ist.
Der in Fig. 3 im Blockschaltbild dargestellte Personalcomputer umfaßt einen Mikroprozessor 51 , einen Taktgenerator 52, eine Unterbrechungssteuerschaltung 53 und einen Hauptspeicher RAM 54, der als Echtspeicher (Hauptspeicher) 200 von Fig. 4 arbeitet. Der RAM dient dazu, das Steuerprogramm, das virtueller Maschinenmonitor 502 genannt wird, das Betriebssystem 506 und das Anwenderprogramm 515 und ähnliches zu speichern, wie es in Fig. 1 und 2 dargestellt ist. Der virtuelle Maschinenmonitor 502 enthält die Steuerinformationen, wie beispielsweise die Steuerblöcke 1, 2 und eine Unterbrechungsliste 11 in Fig. 4. Das in Fig. 3 dargestellte System enthält eine Speicher-Steuereinheit 55, eine Plattensteuerschaltung 56, eine Magnetplattendatei DISC 57, eine Druckersteuerschaltung 58, einen Drucker PRT 59, eine Anzeigetastatur-(D/K)-Steuerschaltung 60, eine Bildschirmeinheit CRT mit Tastatur KEY 61, eine Datenübermittlungssteuerschaltung 62 und eine Datenübermittlungsschaltungseinheit 63. Diese peripheren Einrichtungen können wahlweise vorgesehen sein, es können auch andere als die in Fig. 3 dargestellten peripheren Einrichtungen benutzt werden.
Die Zentraleinheit CPU 51 ist mit jeder Systemkomponente über eine 24-Bit-Adressensammelleitung 66, eine 16- oder 32-Bit-Datensammelleitung 67, eine Gruppe von Steuersignalleitungen 70 zu den jeweiligen Einheiten und eine Gruppe von Beantwortungssignalleitungen 71 verbunden. Die CPU 51 ist mit der Speichersteuereinheit 55 über eine Funktionssammelleitung 68, die eine Information zum Anzeigen der Betriebsart der CPU 51, der Nummer einer virtuellen Maschine, einer Zugriffsart und ähnliches überträgt, und über eine Gruppe von Signalleitungen 73 verbunden, die von der Speichersteuereinheit 55 zur CPU 51 eine Adressenunterbrechung, einen Speicherfehler und ähnliches melden.
Fig. 4 zeigt in einem Blockdiagramm die Beziehung zwischen dem Verfahren der Zuordnung des Echtspeichers im RAM 54 von Fig. 3 und der logischen Speicherbereiche 220, 230 jeder virtuellen Maschine und der Steuerinformation in Form der Steuerblöcke 1 bis 3 und 11, die notwendig ist, um das virtuelle Maschinensystem auszuführen. Die Steuerinformationen sind in einem Speicherbereich 210 des virtuellen Maschinenmonitors gespeichert. Die Speicherbereiche 201 und 202 werden fortlaufend den virtuellen Maschinen zugeordnet.
Die Bereiche 201 (physikalische Adressen α bis β-1) und 202 (physikalische Adressen β bis N) des Echtspeichers 200 werden einem Adressierungsbereich 220 (logische Adressen 0 bis m) und einem Adressierungsbereich 230 (logische Adressen 0 bis n) jeweils zugeordnet, wohingegen der Bereich 210 (physikalische Adressen 0 bis α-1) des Echtspeichers 200 dem virtuellen Maschinenmonitor 502 zugeordnet wird.
Der Bereich 210 des virtuellen Maschinenmonitors ist den virtuellen Maschinen 504, 505 entsprechend mit Steuerblöcken VMLIST₁ 1 und VMLIST₂ 2 versehen, die die Steuerinformation halten, die für die Verteilungsverarbeitung notwendig ist. Die Adresse eines Steuerblockes, der der laufenden virtuellen Maschine zugeordnet ist, wird durch einen Steuerblockzeiger VMIDM 3 angezeigt, der gleichfalls im Bereich 210 des virtuellen Maschinenmonitors angeordnet ist. Die Einträge der Steuerblöcke halten eine nächste Steuerblockadresse 4, eine erste Adresse 5 eines Echtspeicherbereiches, der der entsprechenden virtuellen Maschine zugeordnet ist, eine Bereichsgröße 6, eine Adresse 7 der Vektortabelle der virtuellen Maschine, eine Adresse 8 der Unterbrechungsliste 11, die später beschrieben wird, einen Wert 9 des Stack-Zeigers für die virtuellen Maschine und verschiedene Register 10 der virtuellen Maschine. Die Unterbrechungsliste 11, die durch den Eintrag 8 angegeben ist, ist gleichfalls im Bereich 210 des virtuellen Maschinenmonitors gespeichert und enthält Unterbrechungsnummern 12 bis 14, für die die virtuelle Maschine direkt das Programm ausführen kann, ohne daß der virtuelle Maschinenmonitor eingreift, sowie die Anzahl der Einträge 15 (darin gehaltene Unterbrechungsnummern).
Wenn die Arbeit einer virtuellen Maschine ausgelöst wird, führt der virtuelle Maschinenmonitor 502 die Verteilungsverarbeitung aus, um die echte Hardware wie beispielsweise die CPU 51 und die Register der virtuellen Maschine zuzuordnen. Während dieses Arbeitsvorganges werden die Register 10 im Steuerblock gehalten und wird VMLIST zur Gruppe von Registern in der CPU 51 bewegt. Während der Verteilungsverarbeitung werden der Inhalt der Vektortabelle 550, die im folgenden als Systemvektortabelle bezeichnet wird, in dem virtuellen Maschinenmonitor 502 und der Inhalt des System-Stack-Zeigers ersetzt, wie es oben beschrieben wurde. Die Arbeitsabfolge wird später im einzelnen anhand von Fig. 7 beschrieben.
Fig. 5 zeigt in einem Blockschaltbild schematisch den Mikroprozessor CPU 51 von Fig. 3. Die in Fig. 5 dargestellte Anordnung umfaßt eine Gruppe von Datenregistern 81, eine Gruppe von Adressenregistern 82, eine Gruppe von Arbeitsregistern WR 83, ein Befehlsregister IR 84, ein Statusregister SR 85 und ein Befehlsadressenregister IAR 86, die jeweils mit einer internen Datensammelleitung l11 verbunden sind.
Es sind weiterhin eine arithmetische oder logische Operationsschaltung 87, die Additionen, Subtraktionen und Verschiebungsoperationen ausführt, ein ODER-Glied 88, ein Kennzeichen 89, das das Auftreten einer Unterbrechungsbedingung anzeigt, und ein Kennzeichen 90 vorgesehen, das dann benutzt wird, wenn die logischen Speicherbereiche 220, 230 jeder virtuellen Maschine den Bereichen des Echtspeichers 200 zugeordnet werden, wie es in Fig. 4 dargestellt ist, um anzuzeigen, ob der Wert der ersten Adresse im Echtspeicher, nämlich der Wert 5 in Fig. 4, dem Wert des logischen Bereiches jeder virtuellen Maschine zuaddiert ist oder nicht. Wenn das Kennzeichen 90 auf "1" gesetzt ist, ist der erste Adressenwert des Echtspeichers dem Wert des logischen Bereiches der virtuellen Maschine zuaddiert.
Die Anordnung von Fig. 5 umfaßt weiterhin ein Register IVECT 91, das die Ursache für eine Unterbrechungsbedingung, das Auftreten einer Ablaufunterbrechung hält, einen Multiplexer MPX 92, ein Register BASE 93, das einen ersten Adressenwert des Echtspeichers hält, der dem logischen Bereich jeder virtuellen Maschine entspricht, einen Addierer 94, ein Datenregister DR 95, das Daten hält, und ein Adressenregister ADR 96, das eine Adresse hält.
Ein Unterbrechungsverarbeitungsteil 97 bestimmt, ob eine Unterbrechungsursache, die von der Unterbrechungssteuerschaltung 53 von Fig. 3 gemeldet wird, zur Unterbrechung des Mikroprogrammverarbeitungsteils 501A unter Verwendung des Statusregisters SR 85 und zur Steuerung eines Arbeitsablaufes führt, bei dem die Unterbrechungsnummer dem IVECT 91 geliefert wird, wenn die Unterbrechung verursacht wird.
Unter den Signalleitungen, die in Fig. 5 dargestellt sind, sind die durch und bezeichneten Leitungen Hauptsignalleitungen zu und von einer Einrichtung, die bezüglich des CPU-Plättchens extern angeordnet ist.
In einem Mikroprogrammverarbeitungsteil mit einer Gruppe von Mikroprogrammen wird eine Abfolge von Befehlen, die im Echtspeicher des Mikroprogrammverarbeitungsteils gespeichert sind, der Reihe nach abgefragt und kurzzeitig im Befehlsregister 84 gehalten, woraufhin die Befehle interpretiert werden. Dieser Teil 501A steuert weiterhin die Arbeit der arithmetischen oder logischen Operationsschaltung 87 entsprechend einer Angabe des Befehls und führt eine einer Unterbrechung zugehörige Verarbeitung durch, wenn Unterbrechungsverhältnisse auftreten, wie es in Fig. 2 dargestellt ist.
Im folgenden wird im einzelnen anhand von Fig. 6 der Arbeitsablauf beschrieben, der dann bewirkt wird, wenn eine Unterbrechungsbedingung, nämlich eine Ablaufunterbrechung, auftritt.
Der Mikroprogrammverarbeitungsteil 501A gibt die Anweisung, für eine Folge von Befehlen vom RAM 54 in Fig. 3 auf der Grundlage des Speicheradressenwertes abzurufen, der im Befehlsadressenregister 86 gehalten ist. Wenn das Befehlsadressenregister 86 einen logischen Adressenwert einer virtuellen Maschine, nämlich den Wert der Adressen 0 bis m des Speichers 220 in Fig. 4 enthält (M Kennzeichen 90 ist an), wird der Wert des Registers BASE 93 dem Speicheradressenwert 930 im Addierer 94 zuaddiert, wonach zum Speicher RAM 54 eine Leseanforderung ausgegeben wird.
Die Folge der Befehle, die vom Speicher 54 gelesen und im Datenregister 95 gehalten sind, werden über die Datensammelleitung l11 übertragen und im Befehlsregister 84 gespeichert. Auf der Grundlage der Befehlsdaten im Befehlsregister 84 werden Operationen wie beispielsweise Additionen, Subtraktionen oder Divisionen zwischen den Werten der Gruppe von Datenregistern 81 und denen des Speichers RAM 54 ausgeführt. Wenn eine Unterbrechung aufgrund einer Teilung durch Null als Folge dieser Operationen auftritt, wird ein Signal, das diese Verhältnisse angibt, über die Signalleitung l14 und das ODER-Glied 88 übertragen, damit das Kennzeichen E 89 das Auftreten dieser Verhältnisse anzeigt. Eine Nummer, die eine Unterbrechung aufgrund einer Teilung durch Null angibt, wird über eine Signalleitung l12 ausgegeben, so daß sie im Register IVECT 91 gehalten wird.
Fig. 6 zeigt ein Flußdiagramm der Arbeitsabfolge, die im Mikroprogrammverarbeitungsteil 501A von Fig. 5 ausgeführt wird. Zunächst wird in einem Beurteilungsschritt 101 festgestellt, ob eine Ablaufunterbrechung aufgetreten ist oder nicht. Wenn eine Ablaufunterbrechung aufgetragen ist, d. h. wenn eine Unterbrechung festgestellt wird, werden als Folge davon die Verarbeitungsschritte 102 bis 109 ausgeführt. Ein Verarbeitungsschritt 110 führt eine übliche Befehlsinterpretation aus. Wenn das Kennzeichen M im Schritt 102 aus ist, wird der Wert des Registers BASE 93 nicht zum Wert des logischen Bereiches zuaddiert, wenn auf den Echtspeicher des RAM 54 von Fig. 3 zugegriffen wird.
Die Verarbeitungsschritte 103 bis 107 zeigen Einzelheiten des Mikroprogrammablaufes, der im Mikroprogrammverarbeitungsteil von Fig. 2 auszuführen ist. Das Kennzeichen E für das Auftreten einer Ablaufunterbrechung ist im Verarbeitungsschritt 108 aus, die Betriebsart, bei der der Wert des Registers BASE 93 dem Wert des logischen Bereiches zuaddiert wird, wird im Verarbeitungsschritt 109 wiederhergestellt und anschließend wird der Befehl im Verarbeitungsschritt 110 ausgeführt. Folglich wird eine Gruppe von Befehlen ausgeführt, die im Speicherbereich beginnend mit der Speicheradresse gespeichert sind, die am Eintrag der Vektortabelle 550 liegt.
Wenn der virtuelle Maschinenmonitor eine Verteilungsverarbeitung für die virtuelle Maschine ohne Änderung des Mikroprogrammverarbeitungsflusses durchführt, werden der Inhalt der Vektortabelle 550 (Systemvektortabelle) im virtuellen Maschinenmonitor 502 und der Inhalt des System-Stack-Zeigers dadurch ersetzt, daß der Programmablauf gemäß Flußdiagramm von Fig. 7 ausgeführt wird.
In einem Verarbeitungsschritt 31 von Fig. 7 wird auf einen Steuerblock beispielsweise den Block VMLIST₁ 1 durch VMID 3 zugegriffen. Der Steuerblock enthält verschiedene Zustandsinformationen einer virtuellen Maschine, beispielsweise der virtuellen Maschine 504, für die zu arbeiten ist.
In einem Verarbeitungsschritt 32 wird eine Adresse 7 einer Vektortabelle beispielsweise die Vektortabellenadresse 555 der virtuellen Maschine vom Steuerblock VMLIST₁ 1 gelesen. Es sei angenommen, daß der erhaltene Adressenwert durch "a" wiedergegeben wird.
In einem Verarbeitungsschritt 33 wird eine Adresse 8 der Unterbrechungsliste 11 vom Steuerblock VMLIST₁ 1 gelesen und wird anschließend auf die Unterbrechungsliste 11 unter Verwendung der Adresse 8 zugegriffen, um die Zahl "1" der Einträge 15 zu erhalten.
Der Zählwert "i" des Zählers wird auf "0" in einem Verarbeitungsschritt 34 initialisiert und der Wert "l" wird in einem Verarbeitungsschritt 35 zuaddiert. In einem Verarbeitungsschritt 36 wird der Zählwert "i" mit der Zahl der Einträge "l" verglichen. Wenn "i" höchstens gleich "l" ist, werden die Verarbeitungsschritte 37 bis 39 ausgeführt. Die Verarbeitungsschritte 35 bis 39 werden wiederholt ausgeführt, bis der Zählwert "i" größer als "l" ist, d. h. bis alle Einträge der Unterbrechungsliste 11 verarbeitet sind.
Im Verarbeitungsschritt 37 wird auf i-ten Eintrag der Unterbrechungsliste 11 zugegriffen, um davon eine darin gespeicherte Unterbrechungsnummer zu lesen. Es sei angenommen, daß die erhaltene Unterbrechungsnummer durch "b" wiedergegeben wird.
Im Verarbeitungsschritt 38 wird eine in der Vektortabelle der virtuellen Maschine gespeicherte Adresse eines Eintrags, der der Unterbrechungsnummer "b" entspricht, unter Verwendung der Vektortabellenadresse "a", die im Verarbeitungsschritt 32 erhalten wurde, und der Unterbrechungsnummer "b" berechnet, die aus dem Verarbeitungsschritt 37 resultiert. Diese Berechnung erfolgt in der folgenden Weise:
a + b x (Eintragsgröße),
wobei die Eintragsgröße die Anzahl der Bytes ist, die einen Eintrag der Vektortabelle bilden und gewöhnlich gleich 4 ist. Anschließend wird der Inhalt des Zieleintrags unter Verwendung der in dieser Weise erhaltenen Adresse ausgelesen. Der Inhalt dieses Eintrags ist die erste Adresse (logische Adresse) eines Verarbeitungsprogrammes beispielsweise des Unterbrechungsverarbeitungsprogrammes 557 der virtuellen Maschine für die durch die Nummer "b" angegebene Unterbrechung. Es sei angenommen, daß diese Adresse durch "c" wiedergegeben ist.
Im Verarbeitungsschritt 39 wird der in dieser Weise erhaltene Wert "c" der ersten Adresse 5 des virtuellen Maschinenspeicherbereiches zuaddiert, von der angenommen wird, daß sie durch "d" wiedergegeben wird und die im Steuerblock VMLIST₁ 1 gespeichert ist, um dadurch die erste physikalische Adresse des Unterbrechungsverarbeitungsprogramms der virtuellen Maschine entsprechend der Unterbrechungsnummer "b" zu liefern.
Im nächsten Verarbeitungsschritt 40 wird der Inhalt des Eintrages, beispielsweise des Eintrags 533 der Systemvektortabelle 550, die zu der Unterbrechungsnummer "b" gehört, durch den Wert [c+d], der sich aus dem Verarbeitungsschritt 39 ergibt, nämlich durch die erste physikalische Adresse des Unterbrechungsverarbeitungsprogrammes der virtuellen Maschine entsprechend der Unterbrechungsnummer "b" ersetzt.
Wenn der Zählwert "i" den Wert "1" im Verarbeitungsschritt 36 überschreitet, sind die Verarbeitungen 37 bis 40 für alle Einträge der Unterbrechungsliste abgeschlossen. Die Steuerung geht folglich auf einen Verarbeitungsschritt 41 über, in dem der Inhalt des System-Stack-Zeigerregisters durch einen Wert ersetzt wird, der dadurch erhalten wird, daß die erste Adresse "d" des Bereiches dem Wert 9 des System-Stack-Zeigers dieser virtuellen Maschine im Steuerblock VMLIST₁ 1 zuaddiert wird. Der Wert des System-Stack-Zeigers ist eine logische Adresse für einen Stack-Bereich, beispielsweise dem Stack-Bereich 201, der betreffenden virtuellen Maschine, so daß der Inhalt des System-Stack-Zeigerregisters nicht den Stack-Bereich 558 des virtuellen Maschinenmonitors, wie es bei dem herkömmlichen Verfahren der Fall ist, sondern einen Stack-Bereich, beispielsweise den Stack-Bereich 201 der laufenden virtuellen Maschine angibt. Obwohl das System-Stack-Zeigerregister in der Zeichnung nicht dargestellt ist, ist es ein Register, das im Mikroprozessor vorgesehen ist und auf das durch ein Programm Bezug genommen werden kann und das durch ein Programm fortgeschrieben werden kann. Die erste Adresse "d" des virtuellen Maschinenspeicherbereiches wird addiert, um die erste Adresse des Unterbrechungsverarbeitungsprogramms der virtuellen Maschine, die in der System-Vektortabelle im Verarbeitungsschritt 39 zu speichern ist, und den Stack-Zeigerwert der virtuellen Maschine zu bestimmen, der im System-Stack-Zeigerregister im Verarbeitungsschritt 41 zu speichern ist. Die Additionsoperation muß jedoch nicht notwendigerweise während des oben beschriebenen Ablaufs der Verteilungsverarbeitung ausgeführt werden. Die Steuerblöcke 1, 2 und die Unterbrechungsliste 11 werden gebildet, wenn der virtuelle Maschinenmonitor jede virtuelle Maschine bildet. Als Alternative kann folglich dann, wenn diese virtuellen Maschinen gebildet werden, jeder Eintrag der Unterbrechungsliste 11 mit der ersten physikalischen Adresse, die dann erhalten wird, wenn "d" zum Adressenwert zuaddiert wird, der in der Vektortabelle der virtuellen Maschine gespeichert ist, des entsprechenden Unterbrechungsverarbeitungsprogramms der virtuellen Maschine zusätzlich zur Unterbrechungsnummer geladen werden und kann die physikalische Adresse des Stacks der virtuellen Maschine als Wert 9 des Stack-Zeigers im Steuerblock VMLIST₁ 1 gespeichert werden. Dann können der Adressenwert in der Unterbrechungsliste und der Stack-Zeigerwert im Steuerblock direkt in der Systemvektortabelle und im System-Stack-Zeigerregister jeweils gespeichert werden.

Claims (6)

1. Verfahren zum Steuern von Unterbrechungen in einem virtuellen Maschinensystem, bei dem mehrere virtuelle Maschinen (504, 505) dadurch realisiert werden, daß unter Steuerung eines ersten Steuerprogramms (502) wahlweise eines von mehreren zweiten Steuerprogrammen (506, 507), die den Ablauf der von den virtuellen Maschinen auszuführenden Programme steuern, ausgeführt wird, wobei das erste Steuerprogramm (502) eine erste Vektortabelle (550) aufweist, die die physikalischen Adressen zum Starten von in dem ersten Steuerprogramm (502) oder in dem geraden ausgeführten zweiten Steuerprogramm (506, 507) enthaltenen Unterbrechungs-Verarbeitungsprogrammen (557) umfaßt, und wobei jedes zweite Steuerprogramm (506, 507) eine zweite Vektortabelle (555, 559) aufweist, die die logischen Adressen von in dem betreffenden zweiten Steuerprogramm (506, 507) enthaltenen Unterbrechungs-Verarbeitungsprogrammen umfaßt, dadurch gekennzeichnet,
  • (i) daß aufgrund der logischen Adressen (c), die in der dem gerade ausgeführten zweiten Steuerprogramm (506, 5507) zugeordneten zweiten Vektortabelle (555, 559) enthalten sind, physikalische Adressen (c+d) erzeugt werden, die die Adressen der in diesem zweiten Steuerprogramm enthaltenen Unterbrechungs-Verarbeitungsprogramme (557) angeben,
  • (ii) daß die erzeugten physikalischen Adressen (c+d) in Plätze der ersten Vektortabelle (550) eingeschrieben werden, die zur Aufnahme von Adressen zum Starten der Unterbrechungs-Verarbeitungsprogramme in dem besagten zweiten Steuerprogramm (506, 507) bestimmt sind,
  • (iii) daß anschließend mit der Ausführung des betreffenden zweiten Steuerprogramms (506, 507) begonnen wird,
  • (iv) daß bei Auftreten einer Unterbrechungs-Anforderung entsprechend der Unterbrechungsursache eine der in der ersten Vektortabelle (550) enthaltenen Adressen ausgelesen wird, und
  • (v) daß das durch die ausgelesene Adresse bezeichnete Unterbrechungs-Verarbeitungsprogramm (557) unabhängig davon gestartet wird, ob dieses Unterbrechungs-Verarbeitungsprogramm in dem ersten Steuerprogramm (502) oder in dem gerade ausgeführten zweiten Steuerprogramm (506, 507) enthalten ist.
2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß in dem ersten Verfahrensschritt (i) zur Bestimmung der physikalischen Adressen (c+d) die in der zweiten Vektortabelle (555, 559) enthaaltene erste logische Adresse (c) eines bei Auftreten einer Unterbrechung ausgeführten Programms zu der ersten Adresse (5, d) eines dem gerade ausgeführten zweiten Steuerprogramm (506, 507) zugeordneten Bereichs des Hauptspeichers (200) hinzuaddiert wird.
3. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß in dem ersten Verfahrensschritt (i) aufgrund einer Startadresse der zweiten Vektortabelle (555, 559) des gerade durchgeführten zweiten Steuerprogramms (506, 507) sowie aufgrund einer von mehreren Unterbrechungs-Kennummern (12, 13, 14, b), die für von jedem der Unterbrechungs-Verarbeitungsprogramme in dem zweiten Steuerprogramm (506, 507) auszuführenden Unterbrechungs-Anforderungen vorgegeben sind, zu jedem vom mehreren Plätzen in der dem besagten zweiten Steuerprogramm (506, 507) zugeordneten zweiten Vektortabelle (555, 559) Zugriff genommen wird, und daß in dem zweiten Verfahrensschritt (ii) aufgrund der besagten einen Unterbrechungs-Kennummer (12, 13, 14, b) zu jedem Platz in der ersten Vektortabelle (550) Zugriff genommen wird.
4. Verfahren nach Anspruch 3, dadurch gekennzeichnet, daß in dem vierten Verfahrensschritt (iv) aufgrund einer in der bestehenden Unterbrechungs-Anforderung enthaltenen Unterbrechungs-Kennummer (12, 13, 14, b) zu einem Platz in der ersten Vektortabelle (550) Zugriff genommen wird.
5. Vorrichtung zur Durchführung des Verfahrens nach Anspruch 1, gekennzeichnet durch
  • (a) einen in dem Hauptspeicher (220) einer Grundmaschine (501) vorhandenen, fortlaufend einer der virtuellen Maschinen (504, 505) zugeordneten Speicherbereich (201, 202),
  • (b) eine Einrichtung (94), die bei Ausführung eines normalen Befehls die erste Adresse (93, 5, d) des Speicherbereichs der virtuellen Maschine (504, 505) zu der bei der Ausführung des Befehls erzeugten Speicheradresse (930) der Grundmaschine (501) hinzuaddiert, und
  • (c) eine Einrichtung (97, 91, 501A), die bei Auftreten einer Unterbrechung den besagten Additionsvorgang sperrt und nach Abschluß der Unterbrechung die Sperre aufhebt, bevor die Steuerung zur Ausführung des normalen Befehls zurückkehrt.
6. Vorrichtung nach Anspruch 5, dadurch gekennzeichnet, daß die Grundmaschine (501) einen Mikroprozessor (51) umfaßt.
DE19863607889 1985-03-11 1986-03-10 Verfahren zum steuern von unterbrechungen in einem virtuellen maschinensystem und virtuelles maschinensystem zur durchfuehrung des verfahrens Granted DE3607889A1 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP60046676A JPS61206043A (ja) 1985-03-11 1985-03-11 仮想計算機システムにおける割込制御方法

Publications (2)

Publication Number Publication Date
DE3607889A1 DE3607889A1 (de) 1986-09-11
DE3607889C2 true DE3607889C2 (de) 1993-07-29

Family

ID=12753974

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19863607889 Granted DE3607889A1 (de) 1985-03-11 1986-03-10 Verfahren zum steuern von unterbrechungen in einem virtuellen maschinensystem und virtuelles maschinensystem zur durchfuehrung des verfahrens

Country Status (3)

Country Link
US (1) US4812967A (de)
JP (1) JPS61206043A (de)
DE (1) DE3607889A1 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19723676A1 (de) * 1997-06-05 1998-08-27 Siemens Ag Verfahren zum Nachladen von Programmen auf eine Chip-Karte

Families Citing this family (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63182749A (ja) * 1987-01-26 1988-07-28 Nec Corp 計算機システムのタイマ制御装置
JPH0193830A (ja) * 1987-10-05 1989-04-12 Nec Corp 仮想計算機システムにおける割り込み制御方式
US5129064A (en) * 1988-02-01 1992-07-07 International Business Machines Corporation System and method for simulating the I/O of a processing system
JP2629278B2 (ja) * 1988-06-30 1997-07-09 株式会社日立製作所 仮想計算機システム
JPH02171934A (ja) * 1988-12-26 1990-07-03 Hitachi Ltd 仮想計算機システム
US5369767A (en) * 1989-05-17 1994-11-29 International Business Machines Corp. Servicing interrupt requests in a data processing system without using the services of an operating system
US5222220A (en) * 1989-11-16 1993-06-22 Mehta Hemang S Microprocessor stack built-in guards
US5115506A (en) * 1990-01-05 1992-05-19 Motorola, Inc. Method and apparatus for preventing recursion jeopardy
US5095526A (en) * 1990-01-26 1992-03-10 Apple Computer, Inc. Microprocessor with improved interrupt response with interrupt data saving dependent upon processor status
US5187791A (en) * 1990-01-26 1993-02-16 Apple Computer, Inc. Microprocessor with improved interrupt response with data saving dependent upon processor status using status flag
US5134580A (en) * 1990-03-22 1992-07-28 International Business Machines Corporation Computer with capability to automatically initialize in a first operating system of choice and reinitialize in a second operating system without computer shutdown
US5287523A (en) * 1990-10-09 1994-02-15 Motorola, Inc. Method for servicing a peripheral interrupt request in a microcontroller
JPH0776951B2 (ja) * 1990-10-30 1995-08-16 インターナショナル・ビジネス・マシーンズ・コーポレイション コンピュータシステム、複数の入出力アダプタによるアドレス空間共用システム、及び複数の入出力装置とコンピュータプロセッサ間の通信管理方
EP0578646B1 (de) * 1991-04-01 1995-06-28 Cray Research, Inc. Auffangen eines priviligierten befehlswortes zur kontrolle eines betriebssystems
JP2870254B2 (ja) * 1991-10-02 1999-03-17 日本電気株式会社 仮想計算機の入出力割り込み処理方式
JP3300407B2 (ja) * 1992-05-15 2002-07-08 富士通株式会社 仮想計算機システム
JPH0695898A (ja) * 1992-09-16 1994-04-08 Hitachi Ltd 仮想計算機の制御方法および仮想計算機システム
US5386563A (en) * 1992-10-13 1995-01-31 Advanced Risc Machines Limited Register substitution during exception processing
JPH06187178A (ja) * 1992-12-18 1994-07-08 Hitachi Ltd 仮想計算機システムの入出力割込み制御方法
US5526503A (en) * 1993-10-06 1996-06-11 Ast Research, Inc. Virtual addressing buffer circuit
US5684948A (en) * 1995-09-01 1997-11-04 National Semiconductor Corporation Memory management circuit which provides simulated privilege levels
US5734910A (en) * 1995-12-22 1998-03-31 International Business Machines Corporation Integrating multi-modal synchronous interrupt handlers for computer system
US6496847B1 (en) * 1998-05-15 2002-12-17 Vmware, Inc. System and method for virtualizing computer systems
US8631066B2 (en) * 1998-09-10 2014-01-14 Vmware, Inc. Mechanism for providing virtual machines for use by multiple users
US7516453B1 (en) * 1998-10-26 2009-04-07 Vmware, Inc. Binary translator with precise exception synchronization mechanism
US6996748B2 (en) * 2002-06-29 2006-02-07 Intel Corporation Handling faults associated with operation of guest software in the virtual-machine architecture
US7124327B2 (en) * 2002-06-29 2006-10-17 Intel Corporation Control over faults occurring during the operation of guest software in the virtual-machine architecture
US7181744B2 (en) * 2002-10-24 2007-02-20 International Business Machines Corporation System and method for transferring data between virtual machines or other computer entities
US20040117532A1 (en) * 2002-12-11 2004-06-17 Bennett Steven M. Mechanism for controlling external interrupts in a virtual machine system
JP4012517B2 (ja) * 2003-04-29 2007-11-21 インターナショナル・ビジネス・マシーンズ・コーポレーション 仮想計算機環境におけるロックの管理
US7130949B2 (en) * 2003-05-12 2006-10-31 International Business Machines Corporation Managing input/output interruptions in non-dedicated interruption hardware environments
US7237051B2 (en) * 2003-09-30 2007-06-26 Intel Corporation Mechanism to control hardware interrupt acknowledgement in a virtual machine system
US7177967B2 (en) * 2003-09-30 2007-02-13 Intel Corporation Chipset support for managing hardware interrupts in a virtual machine system
US7475002B1 (en) * 2004-02-18 2009-01-06 Vmware, Inc. Method and apparatus for emulating multiple virtual timers in a virtual computer system when the virtual timers fall behind the real time of a physical computer system
US7917740B1 (en) * 2004-05-11 2011-03-29 Advanced Micro Devices, Inc. Virtualization assist for legacy x86 floating point exception handling
DE602004027516D1 (de) * 2004-12-03 2010-07-15 St Microelectronics Srl Ein Verfahren zum Verwalten von virtuellen Maschinen in einer körperlichen Verarbeitungsmaschine, ein entsprechendes Prozessorsystem und Computerprogrammprodukt dafür
US7689747B2 (en) * 2005-03-28 2010-03-30 Microsoft Corporation Systems and methods for an augmented interrupt controller and synthetic interrupt sources
US7814496B2 (en) * 2005-08-19 2010-10-12 Intel Corporation Method and system for replicating schedules with regard to a host controller for virtualization
US7873770B2 (en) 2006-11-13 2011-01-18 Globalfoundries Inc. Filtering and remapping interrupts
US7849287B2 (en) 2006-11-13 2010-12-07 Advanced Micro Devices, Inc. Efficiently controlling special memory mapped system accesses
US7533207B2 (en) * 2006-12-06 2009-05-12 Microsoft Corporation Optimized interrupt delivery in a virtualized environment
JP2010277177A (ja) * 2009-05-26 2010-12-09 Panasonic Corp マルチオペレーティングシステム制御方法及びプロセッサシステム
US9043562B2 (en) 2011-04-20 2015-05-26 Microsoft Technology Licensing, Llc Virtual machine trigger
US8631212B2 (en) 2011-09-25 2014-01-14 Advanced Micro Devices, Inc. Input/output memory management unit with protection mode for preventing memory access by I/O devices

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6013501B2 (ja) * 1978-09-18 1985-04-08 富士通株式会社 仮想計算機システムにおけるチヤネルアドレス制御方式
JPS5576447A (en) * 1978-12-01 1980-06-09 Fujitsu Ltd Address control system for software simulation
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
JPS55112651A (en) * 1979-02-21 1980-08-30 Fujitsu Ltd Virtual computer system
US4456954A (en) * 1981-06-15 1984-06-26 International Business Machines Corporation Virtual machine system with guest architecture emulation using hardware TLB's for plural level address translations
US4564903A (en) * 1983-10-05 1986-01-14 International Business Machines Corporation Partitioned multiprocessor programming system

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19723676A1 (de) * 1997-06-05 1998-08-27 Siemens Ag Verfahren zum Nachladen von Programmen auf eine Chip-Karte

Also Published As

Publication number Publication date
JPS61206043A (ja) 1986-09-12
US4812967A (en) 1989-03-14
DE3607889A1 (de) 1986-09-11

Similar Documents

Publication Publication Date Title
DE3607889C2 (de)
DE2948285C2 (de) Adressensteuereinrichtung für einen Datenprozessor
DE2251876C3 (de) Elektronische Datenverarbeitungsanlage
DE2722099C2 (de)
DE3833933C2 (de) Informationsverarbeitungseinrichtung mit einer Adressenerweiterungsfunktion
DE102007025397B4 (de) System mit mehreren Prozessoren und Verfahren zu seinem Betrieb
DE2517276A1 (de) Datenverarbeitungssystem
DE2912738A1 (de) System mit direkter uebertragung zwischen subsystemen
DE2243956A1 (de) Speicherprogrammierte datenverarbeitungsanlage
DE3942669A1 (de) Virtuelles maschinensystem
DE2350884A1 (de) Datenverarbeitungssystem
DE4011745A1 (de) Taskverfolgungseinrichtung
DE2936932A1 (de) Kanaladressen-steuersystem in einem virtuellen maschinensystem
DE2030812A1 (de) Modulare Datenrechnersysteme
DE2721623C2 (de)
EP0010185A1 (de) Virtuell-Adressiervorrichtung für einen Computer
EP0799441B1 (de) Verfahren zur steuerung von technischen vorgängen
DE19955776C1 (de) Multitasking-Prozessorsystem
DE2617127A1 (de) Mehrfachprogramm-datenverarbeitungssystem
DE3338329A1 (de) Computersystem
DE2658950A1 (de) Mikroprogrammierte verarbeitungseinheit sowie verfahren zur organisation derselben
EP0010135B1 (de) Mikroprogrammgesteuerte Ein-/Ausgabeeinrichtung und Verfahren zum Durchführen von Ein-/Ausgabeoperationen
DE2847737C2 (de) Schaltung zur Umsetzung virtueller Adressen in eine reelle Adresse von größerer Länge
DE2900460A1 (de) Warteschlangenstruktur
DE102007015507B4 (de) Prozessor mit einem ersten und einem zweiten Betriebsmodus und Verfahren zu seinem Betrieb

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8128 New person/name/address of the agent

Representative=s name: STREHL, P., DIPL.-ING. DIPL.-WIRTSCH.-ING. SCHUEBE

D2 Grant after examination
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee