DE3607889A1 - Verfahren zum steuern von unterbrechungen in einem virtuellen maschinensystem und virtuelles maschinensystem zur durchfuehrung des verfahrens - Google Patents

Verfahren zum steuern von unterbrechungen in einem virtuellen maschinensystem und virtuelles maschinensystem zur durchfuehrung des verfahrens

Info

Publication number
DE3607889A1
DE3607889A1 DE19863607889 DE3607889A DE3607889A1 DE 3607889 A1 DE3607889 A1 DE 3607889A1 DE 19863607889 DE19863607889 DE 19863607889 DE 3607889 A DE3607889 A DE 3607889A DE 3607889 A1 DE3607889 A1 DE 3607889A1
Authority
DE
Germany
Prior art keywords
virtual machine
control program
interrupt
address
vector table
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.)
Granted
Application number
DE19863607889
Other languages
English (en)
Other versions
DE3607889C2 (de
Inventor
Toshio Hirosawa
Jun Ichi Kurihara
Shigemi 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Debugging And Monitoring (AREA)

Description

Beschreibung
Die Erfindung befaßt sich mit einem virtuellen Maschinensystem und betrifft ein Verfahren zum Steuern der Programmunterbrechungen in einem virtuellen Maschinensystem sowie ein virtuelles Maschinensystem zur Ausführung der Steuerung der Programmunterbrechung en.
Wie es im Grundkonzept in Figur 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 Figur 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, 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 Maschina 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 interpretiart 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, wird zu einem zusätzlichen Zeitintervall, das 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 dem zusätzlichen Zeitintervall enthalten. Dieses zusätzliche Zeitintervall, das nur das virtuelle Maschinensystem betrifft, kann kurz in der folgenden Weise klassifiziert werden:
1. Zusätzliche Zeit aufgrund einer Simulationsverarbeitung eines privilegierten Befehls.
2. Zusätzliche Zeit aufgrund einer Simulationsverarbeitung eines ünterbrechungsprogrammes.
3. Zusätzliche Zeit aufgrund einer AdressenumSetzung zur Unterstützung der virtuellen Speicherfunktion.
4. Zusätzliche Zeit, 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 sogenannte 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, das Betriebssystem generell auszutauschen, um 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ßerordentlich 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 virtuel-.Ie Maschinensystem bei einem Personalcomputer angewandt wird.
3607883
Eine typische Mikroprozessorarchitektur, die gegenwärtig benutzt wird, ist beispielsweise in "A Microprocessor Architecture for a Changing World: The Motorola 68000" Computer Bd. 12, Seite 43 bis 51 (1979-2), IEEE und "iAPX 86 Family User's Manual", Intel Corporation: Document No. 205885, beschrieben.
Durch die Erfindung sollen daher ein Steuerverfahren und eine Steuereinrichtung in einem virtuellen Maschinensystem für ein kleinformatiges Computersystem wie beispielsweise einen Personalcomputer mit Mikroprozessoren geschaffen werden, wobei das Verfahren und die Vorrichtung auf das Auftreten einer Ablaufunterbrechung oder einer Unterbrechungsbedingung, beispielsweise einer Unterbrechung bei einer Teilung durch Null in einem Anwenderprogramm, das unter der Steuerung eines Betriebssystems ausgeführt wird, das der virtuellen Maschine zugeordnet ist, anspricht und den zusätzlichen Verarbeitungszeitbedarf verringert, der durch das Eingreifen eines virtuellen Maschinenmonitors verursacht wird.
Durch die Erfindung soll das Eingreifen des virtuellen Maschinenmonitors so weit wie möglich bei der Unterbrechungsverarbeitung herabgesetzt werden, um direkt ein UnterbrechungsVerarbeitungsprogramm oder Alarmverarbeitungsprogramm der virtuellen Maschine auszulösen.
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.
10
--*- 3607883
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 beginnt ein Mikroprogramm in der Hardware der Grundmaschine 501 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 Stack- oder Stapelbereich des virtuellen Maschinenmonitors 502 werden der Inhalt eines Programmzählers (Befehlsadressenregister) und verschiedener Betriebsregister sowie der oben im Schritt !.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 Figur 2 ausgeführt. Wenn der Schritt 4 ausgeführt ist, geht die Steuerung auf den virtuellen Maschinenmonitor 502 über.
Fig.2 zeigt schematisch kurz den Ablauf des Unterbrechungsprogramms gemäß der Erfindung. Zum Vergleich ist der Ablauf eines Unterbrechungsprogramms nach einem anderen denkbaren Steuerverfahren in gestrichelten Linien dargestellt, wohingegen der Ablauf des erfin-
— ν —
dungsgemäßen Steuerverfahrens durch ausgezogene Linien dargestellt ist. Wie es in Figur 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.
Wenn das erfindungsgemäße Steuersystem nicht angewandt wird, 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 zusätzlichen Zeitbedarf des virtuellen Maschinenmonitors hervorruft.
Im Gegensatz dazu wird gemäß der Erfindung jeder Eintrag der Vektortabelle des virtuellen Maschinenmonitors,auf den die
K 3607883
Grundmaschinen-Hardware bei dem Auftreten einer Unterbrechung Bezug nimmt, vorher mit der Adresse des Unterbrechungsverarbeitungsprogramms einer virtuellen Maschine beladen, 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 der virtuelle Maschine die Verarbeitung direkt ausführen muß. Wenn somit eine aufgetretene Unterbrechung direkt durch die virtuelle Maschine verarbeitet werden darf, wird der virtuelle Maschinenmonitor nicht aktiviert, d.h. kann das Unterbrechungs-Verarbeitungsprogramm der virtuellen Maschine unmittelbar die notwendige Verarbeitung bewirken, was den zusätzlichen 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 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ß ein zusätzlicher Zeitbedarf aufgrund der Verwendung des Stack des virtuellen Maschinenmonitors nicht auftritt.
Wenn der virtuelle Maschinenmonitor eine Verteilungsverarbeitung zum Verteilen der Betriebsmittel der Grundmaschine von Figur 1 auf die virtuellen Maschinen durchführt, ändert er gemäß der Erfindung 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 556 des Betriebssystems 506 in der virtuellen Maschine und nicht in einem Stack 558 des virtuellen Maschinenmonitors 502 im Programmschritt G) des Mikroprogramm-Verarbeitungsteils 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 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 zusätzliche 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 zeigen
Figur 1 in einem Plandiagramm ein virtuelles Maschinensystem,
Figur 2 eine Momentdarstellung des erfindungsgemäßen Unterbrechungsprogrammablaufs,
Figur 3 in einem Blockschaltbild ein Beispiel eines
Personalcomputers, bei dem das erfindungsgemäße Verfahren und die erfindungsgemäße Vorrichtung angewandt werden können,
Figur 4 in einem schematischen Blockdiagramm einen Speicher- und Steuerblock eines Speichers einer virtuellen Maschine und eines echten Speichers,
Figur 5 in einem Diagramm den Aufbau des Mikroprozessors CPU von Fig. 3,
Figur 6 in einem Flußdiagramm die Arbeitsabfolge des Mikroprogrammprozessorteils von Figur 5 und
Figur 7 in einem Flußdiagramm den Programmteil des Verteilungsprogramms, das im virtuellen Maschinenmonitor gemäß der Erfindung auszuführen ist.
In Figur 3 ist ein Ausführungsbeispiel eines Personalcomputers gemäß der Erfindung dargestellt. Die in Figur 3 dargestellte Anordnung umfaßt einen Mikroprozessor 51, einen Taktgenerator 52, eine Unterbrechungssteuerschaltung 53 und einen Hauptspeicher RAM 54, der als Echtspeicher 200 von Figur 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 Figur 4. Das in Figur 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 Ein richtungen 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 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.
Figur 4 zeigt in einem Blockdiagramm die Beziehung zwischen dem Verfahren der Zuordnung des Echtspeichers im RAM 54 von Fig. 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) urd einem Adressierungsbereich 230 (logische Adressen 0 bis n) jeweils zugeordnet, wohingegen der Bereich 210 (physikalische Adressen 0 bis oC-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. und VMLIST22 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 VMIDM3 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 eines Echtspeicherbereiches, der der entsprechenden virtuellen Maschine 5 züge-
3607883
ordnet ist, die Größe des Ausdehnung des Bereiches 6, eine Adresse der Vektortabelle der virtuellen Maschine 7, eine Adresse 8 der Unterbrechungsliste 11, die später beschrieben wird, einen Wert 9 des Stack-Zeigers für die virtuelle 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, um Unterbrechungsnummern 12 bis 14 zu halten, für die die virtuelle Maschine direkt das Programm ausführen darf, ohne daß der virtuelle Maschinenmonitor eingreift, und um die Anzahl der Einträge 15 (darin gehaltene Unterbrechungsnummern) zu halten.
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 Figur 7 beschrieben.
Figur 5 zeigt in einem Blockschaltbild schematisch den Mikroprozessor CPU 51 von Figur 3. Die in Figur 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 £11 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 Figur 4 dargestellt ist, um anzuzeigen, ob der Wert der ersten Adresse im Echtspeicher, nämlich der Wert 5 in Figur 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 Figur 5 umfaßt weiterhin ein Register IVEC?? 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 Unterbrechungsprogrammteil 97 bestimmt, ob eine Unterbrechungsursache, die von der Unterbrechungssteuerschaltung 53 von Figur 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 Figur 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 Mikroprograiranverarbeitungsteil 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 Figur 2 dargestellt ist.
Im folgenden wird im einzelnen anhand von Figur 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 Figur 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 Figur 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 €11 ü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 £.14 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 6. 12 ausgegeben, so daß sie im Register IVECT 91 gehalten wird.
Figur 6 zeigt ein Flußdiagramm der Arbeitsabfolge, die im Mikroprogrammverarbeitungsteil 501A von Figur 5 ausgeführt wird. Zunächst wird in einem Beurteilungsschritt 101 festgestellt, ob eine Ablaufunterbrechung aufgetreten ist oder nicht. Wenn eine Ablaufunterbrechung aufgetreten 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 Figur 3 zugegriffen wird.
Die Verarbeitungsschritte 103 bis 107 zeigen Einzelheiten des Mikroprogrammablaufes, der im Mikroprogrammverarbeitungsteil von Figur 2 auszuführen ist. Das Kennzeichen E für das Auftreten einer AbIaufunterbrechung 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 gemäß der Erfindung 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ß-
- VS -
diagramm von Figur 7 ausgeführt wird.
In einem Verarbeitungsschritt 31 von Figur 7 wird auf einen Steuerblock beispielsweise den Block VMLIST11 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 "1" wird in einem Verarbeitungsschritt 35 zuaddiert. In einem Verarbeitungsschritt 36 wird der Zählwert "i" mit der Zahl der Einträge "1" verglichen. Wenn "i" höchstens gleich "1" 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 "1" 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 χ (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 VMLIST11 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+d3,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 VMLIST1I 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 Unterbrechungsverarbeitungsprogramm der virtuellen Maschine zusätzlich zur Unterbrechungsnummer geladen werden und kann die
3607883
- J-9 -
physikalische Adresse des Stacks der virtuellen Maschine als Wert 9 des Stack-Zeigers im Steuerblock VMLSTI1I 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.
Gemäß der Erfindung wird die den Unterbrechungsbetrieb auslösende Verarbeitung des virtuellen Maschinenmonitors, die bei bekannten Systemen unabdingbar ist, nicht mehr notwendig, so daß ein zusätzlicher Zeitbedarf aufgrund der Verarbeitung ausgeschlossen wird, und somit ein wirkungsvolles virtuelles Maschinensystem geschaffen wird, das sich insbesondere für kleinformatige Rechner, wie beispielsweise einen Personalcomputer eignet.
- Leerseite -

Claims (6)

P 36 C? £89 .1 STREIIL SCHÜBEL-HOPF GROENIXG SCHULZ l'.VTKXTA-NW'ÄLTK EUROPEAN PATENT ATTORNEYS HITACHI, LTD. 10. März 19 86 DEA-27574 VERFAHREN ZUM STEUERN VON UNTERBRECHUNGEN IN EINEM VIRTUELLEN MASCHINENSYSTEM UND VIRTUELLES MASCHINENSYSTEM ZUR DURCHFÜHRUNG DES VERFAHRENS PATENTANSPRÜCHE
1. Verfahren zum Steuern von Unterbrechungen in einem virtuellen Maschinensystem, bei dem mehrere virtuelle Maschinen (504, 505) dadurch verwirklicht werden, daß wahlweise unter der Steuerung eines ersten Steuerprogramms (502) eines von mehreren zweiten Steuerprogrammen (506,507) ausgeführt wird, die jeweils die Ausführung der unter den virtuellen Maschinen auszuführenden Programme steuern, wobei das erste Steuerprogramm eine zugehörige erste Vektortabelle (550) aufweist, die die physikalischen Adressen hält, die benötigt werden, um die Unterbrechungsverarbeitungsprogramme (557) entweder im ersten Steuerprogramm oder in dem einen ausgeführten zweiten Steuerprogramm zu beginnen,und jedes zweite Steuerprogramm eine zugehörige zweite Vektortabelle (555) aufweist, die logische Adressen hält, die die Unterbrechungsverarbeitungsprogramme (557) in jedem zweiten Steuerprogramm angeben, dadurch gekennzeichnet, daß
(i) physikalische Adressen (c+d) erzeugt werden, die die Adressen der Unterbrechungsverarbeitungsprogramme (557) angeben, die in dem einen zweiten Steuerprogramm enthalten sind,das als Folge der Ausführung des ersten Steuerprogramms als das als nächstes auszuführende gewählt wird, wobei die Erzeugung der Adressen auf der Grundlage der logischen Adressen (c) erfolgt, die durch die zweite Vektortabelle gehalten sind, die dem gewählten zweiten Steuerprogramm zugeordnet ist,
(ii) die erzeugten physikalischen Adressen in Einträge in der ersten Vektortabelle geschrieben werden, die als Einträge zum Halten der Adressen vorbestimmt sind, die benötigt werden, um die ünterbrechungsverarbeitungsprogramme im gewählten zweiten Steuerprogramm zu beginnen,
(iii) die Ausführung des gewählten Steuerprogramms nach dem zweiten Schritt (ii) begonnen wird,
(iv) eine der Adressen, die von der ersten Vektortabelle gehalten sind, entsprechend der Unterbrechungsursache einer erzeugten Unterbrechungsanforderung (E) und auf diese Anforderung (E) ansprechend ausgelesen wird ι und
(v) ein Unterbrechungsverarbeitungsprogramm (557), das durch die ausgelesenen Adressen (c+d) angegeben wird, unabhängig davon begonnen wird, ob das angegebene Unterbrechungsverarbeitungsprogramm irn ersten S teuer programm oder in dem gewählten zweiten Steuerprogramm enthalten ist.
2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß der erste Verfahrensschritt (i) einen Verfahrensschritt (39) enthält, in dem ein Adressenwert (c), der in der zweiten Vektortabelle (555) für das gewählte zweite Steuerprogramm gehalten ist, einer ersten Adresse (5,d) eines Hauptspeicherbereiches (200) zuaddiert wird, der dem gewählten zweiten Steuerprogramm zugeordnet ist, um die physikalischen Adressen zu bestimmen.
3. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß der erste Verfahrensschritt (i) einen Verfahrensschritt (38) enthält, in dem auf jeden Eintrag in der zweiten Vektortabelle für das gewählte zweite Steuerprogramm auf der Grundlage einer Startadresse (7,8) der zweiten Vektortabelle (555) des gewählten zweiten Steuerprogramms und einer der Unterbrechungsidentifikationsnummern (12,1 3/14.,b) zugegriffen wird, die für die Unterbrechungsanforderungen vorbestimmt sind, die durch jedes der Unterbrechungsverarbeitungsprogramme im gewählten zweiten Steuerprogramm durchgeführt werden sollten,und daß der zweite Verfahrensschritt (ii) einen Verfahrensschritt (40) enthält, in dem auf jeden Eintrag in der ersten Vektortabelle (550) auf der Grundlage einer Unterbrechungsidentifikationsnummer (12,13,14,b) zugegriffen wird.
4. Verfahren nach Anspruch 3, dadurch gekennzeichnet, daß der vierte Verfahrensschritt (iv) einen Verfahrensschritt (40) enthält, in dem auf einen Eintrag in der ersten Vektortabelle (550) auf der Grundlage einer Unterbrechungsnummer (12,13,14/b) in der erzeugten Unterbrechungsanforderung zugegriffen wird.
5. Virtuelles Maschinensystem mit virtuellen Maschinen (504,505), die in einer Grundmaschine (501) unter der Steuerung eines Steuerprogramms (502) laufen, gekennzeichnet durch
(i) einen Speicherbereich (201,202) wenigstens einer der virtuellen Maschinen (504,505) im Hauptspeicher (200) der Grundmaschine (501), wobei der Speicherbereich (201, 202),der der Verarbeitung unterworfen ist, fortlaufend zugeordnet wird,
(ii) eine Einrichtung (90,94),die bei einer Ausführung eines normalen Befehls arbeitet, um eine erste Adresse (93,5,d) des Speicherbereichs (201,202) der virtuellen Maschine (504,505) zu einer Speicheradresse (930) zu addieren,
die bei der Ausführung des Befehls erzeugt wird, (iii) eine Einrichtung (90) , die beim Auftreten einer Unterbrechung arbeitet, um die Addition einer ersten Adresse (93,5,d) des Speicherbereiches (201,202) der virtuellen Maschine (504,505) und einer Speicheradresse (930), die bei der Ausführung des Befehles erzeugt wird, zu sperren, und
(iv) eine Einrichtung (90) zum Freigeben der Sperre der Addition bevor die Steuerung zur Ausführung eines normalen Befehls nach Abschluß einer Unterbrechungsverarbeitung zurückkehrt.
6. Virtuelles Maschinensystem nach Anspruch 5, dadurch gekennzeichnet, daß die Grundmaschine (501) einen Mikroprozessor 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 true DE3607889A1 (de) 1986-09-11
DE3607889C2 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
EP1854014A2 (de) * 2005-03-28 2007-11-14 Microsoft Corporation Systeme und verfahren für eine erweiterte unterbrechungssteuerung und synthetische unterbrechungsquellen

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
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
US5095526A (en) * 1990-01-26 1992-03-10 Apple Computer, Inc. Microprocessor with improved interrupt response with interrupt data saving dependent upon processor status
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 インターナショナル・ビジネス・マシーンズ・コーポレイション コンピュータシステム、複数の入出力アダプタによるアドレス空間共用システム、及び複数の入出力装置とコンピュータプロセッサ間の通信管理方
WO1992017839A1 (en) * 1991-04-01 1992-10-15 Cray Research, Inc. Privileged instruction trap for operating system control
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
DE19723676A1 (de) * 1997-06-05 1998-08-27 Siemens Ag Verfahren zum Nachladen von Programmen auf eine Chip-Karte
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
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
US6996748B2 (en) * 2002-06-29 2006-02-07 Intel Corporation Handling faults associated with 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
US7177967B2 (en) * 2003-09-30 2007-02-13 Intel Corporation Chipset support for managing hardware interrupts in a virtual machine system
US7237051B2 (en) * 2003-09-30 2007-06-26 Intel Corporation Mechanism to control hardware interrupt acknowledgement 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
US7418584B1 (en) * 2004-05-11 2008-08-26 Advanced Micro Devices, Inc. Executing system management mode code as virtual machine guest
EP1669864B1 (de) * 2004-12-03 2010-06-02 STMicroelectronics Srl Ein Verfahren zum Verwalten von virtuellen Maschinen in einer körperlichen Verarbeitungsmaschine, ein entsprechendes Prozessorsystem und Computerprogrammprodukt dafür
US7814496B2 (en) * 2005-08-19 2010-10-12 Intel Corporation Method and system for replicating schedules with regard to a host controller for virtualization
US7849287B2 (en) 2006-11-13 2010-12-07 Advanced Micro Devices, Inc. Efficiently controlling special memory mapped system accesses
US7873770B2 (en) 2006-11-13 2011-01-18 Globalfoundries Inc. Filtering and remapping interrupts
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

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4400769A (en) * 1979-02-21 1983-08-23 Fujitsu Limited Virtual machine system
DE2948285C2 (de) * 1978-12-01 1984-07-12 Fujitsu Ltd., Kawasaki, Kanagawa Adressensteuereinrichtung für einen Datenprozessor

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6013501B2 (ja) * 1978-09-18 1985-04-08 富士通株式会社 仮想計算機システムにおけるチヤネルアドレス制御方式
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
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

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE2948285C2 (de) * 1978-12-01 1984-07-12 Fujitsu Ltd., Kawasaki, Kanagawa Adressensteuereinrichtung für einen Datenprozessor
US4400769A (en) * 1979-02-21 1983-08-23 Fujitsu Limited Virtual machine system

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
GUNTER, Tom: A Microprocessor Architecture for a Changing World: The Motorola 68000. In: IEEE Computer, 1979-2, S. 43-52 *
STRITTER, Edward *
STRITTER, Edward, GUNTER, Tom: A Microprocessor Architecture for a Changing World: The Motorola 68000. In: IEEE Computer, 1979-2, S. 43-52

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1854014A2 (de) * 2005-03-28 2007-11-14 Microsoft Corporation Systeme und verfahren für eine erweiterte unterbrechungssteuerung und synthetische unterbrechungsquellen
EP1854014A4 (de) * 2005-03-28 2010-03-31 Microsoft Corp Systeme und verfahren für eine erweiterte unterbrechungssteuerung und synthetische unterbrechungsquellen

Also Published As

Publication number Publication date
US4812967A (en) 1989-03-14
DE3607889C2 (de) 1993-07-29
JPS61206043A (ja) 1986-09-12

Similar Documents

Publication Publication Date Title
DE3607889C2 (de)
DE2948285C2 (de) Adressensteuereinrichtung für einen Datenprozessor
DE2722099C2 (de)
EP0010198B1 (de) Vorrichtung zur Steuerung des Seitenaustausches in einem Datenverarbeitungssystem mit virtuellem Speicher
DE2411963C3 (de) Elektronische Datenverarbeitungsanlage mit einer Prioritätssteuerschaltung mit änderbaren Steuerblöcken
DE2629459C2 (de)
DE3833933C2 (de) Informationsverarbeitungseinrichtung mit einer Adressenerweiterungsfunktion
DE102007025397B4 (de) System mit mehreren Prozessoren und Verfahren zu seinem Betrieb
DE3942669A1 (de) Virtuelles maschinensystem
DE2251876A1 (de) Datenverarbeitungsanlage
DE2517276A1 (de) Datenverarbeitungssystem
DE2350884A1 (de) Datenverarbeitungssystem
DE4228756A1 (de) Mikroprozessorsystem
DE2912738A1 (de) System mit direkter uebertragung zwischen subsystemen
DE2243956A1 (de) Speicherprogrammierte datenverarbeitungsanlage
DE3131204A1 (de) Adressumrechnungs- und generatoranordnung
DE2714805A1 (de) Datenverarbeitungssystem
DE2030812A1 (de) Modulare Datenrechnersysteme
DE2721623A1 (de) System zur bearbeitung eines zielsystemprogrammes
DE2737353A1 (de) Verfahren zum testen der adressbildung in einem dv-system und vorrichtung zur durchfuehrung des verfahrens
DE3338329C2 (de)
DE1909090C3 (de) Schutzeinrichtung für den Arbeitsspeicher einer Rechenanlage
EP1230590B1 (de) Prozessorsystem
DE2617127A1 (de) Mehrfachprogramm-datenverarbeitungssystem
DE2149200A1 (de) Anordnung zum Steuern der Informationsuebertragung zwischen einerseits dem Zentralteil und andererseits entweder einem beliebig zugreifbaren Schnellspeicher oder einem beliebig zugreifbaren direkt adressierbaren Grossspeicher einer elektronischen Datenverarbeitungsanlage

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