DE3685863T2 - Rechnersystem zur steuerung virtueller maschinen. - Google Patents

Rechnersystem zur steuerung virtueller maschinen.

Info

Publication number
DE3685863T2
DE3685863T2 DE8686306736T DE3685863T DE3685863T2 DE 3685863 T2 DE3685863 T2 DE 3685863T2 DE 8686306736 T DE8686306736 T DE 8686306736T DE 3685863 T DE3685863 T DE 3685863T DE 3685863 T2 DE3685863 T2 DE 3685863T2
Authority
DE
Germany
Prior art keywords
interrupt
virtual machine
identification number
identification
mask
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
DE8686306736T
Other languages
English (en)
Other versions
DE3685863D1 (de
Inventor
Saburo Kaneda
Kazuaki Murakami
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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Application granted granted Critical
Publication of DE3685863D1 publication Critical patent/DE3685863D1/de
Publication of DE3685863T2 publication Critical patent/DE3685863T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Bus Control (AREA)

Description

  • Die Erfindung betrifft ein Computersystem zum Steuern mehrfacher virtueller Maschinen und im besonderen ein System zum Handhaben einer Eingabe/Ausgabe-(I/O)-Unterbrechung, die von einer I/O-Einrichtung während des Betriebs einer virtuellen Maschine erzeugt wird.
  • In einem Computersystem, um den effektiven Gebrauch von Systemresourcen zu realisieren, ist es gut bekannt, ein Virtuellmaschinen-System aufzubauen, welches eine oder mehrere virtuelle Maschinen umfaßt, die von einer existierenden, realen Maschine, die aus Hardware aufgebaut ist, realisiert werden.
  • Im Virtuellmaschinen-System wird jede virtuelle Maschine von einem Steuerungsprogramm für die virtuelle Maschine (hiernach der "VM-Monitor" genannt) des Realmaschinensystems gesteuert. Eine virtuelle Maschine, auf welche das Steuerungsrecht einer CPU (zentrale Prozessoreinheit) durch den VM-Monitor übertragen worden ist, wird nämlich durch die CPU der realen Maschine ausgeführt.
  • In dieser realen Maschine wird die Systemsteuerung der virtuellen Maschine von einem Betriebssystem davon ausgeführt. Wenn jedoch erwogen wird, daß das Ergebnis seiner Steuerung andere virtuelle Maschinen beeinflußt, wird die Fähigkeit zur Aufrechterhaltung des gesamten Real-Maschinensystems durch Eingreifen des VM-Monitors gehalten etc.
  • Wenn zum Beispiel ein I/O-Start für eine I/O-Einrichtung aufgrund eines I/O-Befehls der virtuellen Maschine hervorgerufen wird, falls ein I/O-Betrieb, der aus dem I/O-Start resultiert, an der I/O-Einrichtung beendet wird, führt die I/O-Einrichtung eine I/O-Unterbrechung für die CPU aus, was durch das Eingreifen VM-Monitors realisiert wird. Wenn nämlich die I/O-Unterbrechung von der I/O-Einrichtung während eines Betriebs der virtuellen Maschine erzeugt wird, falls die I/O-Unterbrechung aktiviert ist, wird ein eine Unterbrechung erzeugender Prozeß für die reale Maschine ausgeführt, um das Steuerungsrecht der CPU auf den VM-Monitor der realen Maschine zu übertragen. Der VM-Monitor führt ein Unterbrechungs-Handhabungsprogramm aus, um den Inhalt der I/O-Unterbrechung, etc., zu analysieren, und dann, falls die virtuelle Maschine, welche den I/O-Befehl erzeugt hat, um die I/O-Unterbrechung hervorzurufen, in einem unterbrechungsaktivierten Zustand ist, simuliert der VM-Monitor die Erzeugung der I/O-Unterbrechung für die in Frage stehende virtuelle Maschine, um das Steuerungsrecht der CPU auf diese virtuelle Maschine zu übertragen, wobei ein Unterbrechungs-Handhabungsprogramm in dieser virtuellen Maschine ausgeführt wird.
  • Wie oben beschrieben, muß die I/O-Unterbrechung im Virtuellmaschinen-System mit dem Eingreifen des VM-Monitors durchgeführt werden, so daß eine Zeit, die für den Betrieb des VM-Monitors notwendig ist, zusätzlich zu einer Zeit erforderlich ist, die für das Verarbeiten einer primären Aufgabe notwendig ist. Als ein Ergebnis wird ein Aufwand zum Steuern der virtuellen Maschine vergrößert, was die Verarbeitungsleistung des Virtuellmaschinen-Systems verringert.
  • Es ist daher ein Ziel der vorliegenden Erfindung, ein Computersystem zum Steuern virtueller Maschinen vorzusehen, bei dem der Steuerungsaufwand verringert ist.
  • Die EP-A-0 150 039 beschreibt ein Verfahren zum Verringern des I/O-Simulationsaufwandes eines Virtuellmaschinen-Systems, in dem die Simulation von Unterbrechungen, die vom Monitorsteuerprogramm der virtuellen Maschine ausgeführt werden, vermieden werden.
  • Gemäß der Erfindung, wie sie beansprucht wird, wird vorgesehen ein Computersystem zum Steuern virtueller Maschinen, denen jeweils eine unterschiedliche Identifikationsnummer gegeben wurde, welches System umfaßt: eine zentrale Prozessoreinheit; einen Kanalprozessor; und eine oder mehrere Eingangs/Ausgangs-(I/O)-Einrichtungen, die in dem Kanalprozessor aufgenommen sind, und einen Identifikationsspeicher, zum Speichern der Identifikationsnummer einer virtuellen Maschine, die gegenwärtig in Betrieb ist; dadurch gekennzeichnet, daß Maskenspeicher mit denselben Identifikationsnummern wie die der virtuellen Maschinen vorgesehen sind, die jeweils irgendeiner der verschiedenen Identifikationsnummern entsprechen; daß I/O-Unterbrechungswarteschlangen mit denselben Identifikationsnummern wie die der virtuellen Maschinen vorgesehen sind, von denen jede irgendeiner der verschiedenen Identifikationsnummern entspricht; daß ein I/O-Start für die I/O-Einrichtung durch die zentrale Prozessoreinheit ausgeführt werden kann, in Begleitung mit der Designation der Identifikationsnummer, zu welcher die in Frage stehende I/O-Einrichtung gehört; daß der Kanalprozessor eine I/O-Unterbrechungsanforderung der I/O-Einrichtung in die I/O-Unterbrechungswarteschlange setzen kann, die der in Frage stehenden Identifikationsnummer entspricht, wenn die I/O-Unterbrechungsanforderung auftritt; und daß die zentrale Prozessoreinheit den Maskenspeicher aktivieren kann, der durch die Identifikationszahl angezeigt ist, die in dem Identifikationsspeicher gespeichert ist, wodurch bestimmt wird, ob die Unterbrechung der in Frage stehenden I/O-Einrichtung aktiviert worden ist oder nicht.
  • Ausführungsformen eines Computersystems gemäß der vorliegenden Erfindung werden nun beispielhaft, mit Bezug auf die angefügten Zeichungen, beschrieben, in denen:
  • Fig. 1 ein Blockdiagramm ist, welches ein Beispiel eines Aufbaues eines Virtuellmaschinen-Systems des Standes der Technik zeigt;
  • Fig. 2 ein Flußbild ist, das eine Unterbrechungs- Handhabungsabfolge zeigt, welche im System ausgeführt wird, das in Fig. 1 gezeigt ist;
  • Fig. 3 ein Blockdiagramm ist, das eine Ausführungsform eines Virtuellmaschinen-Systems gemäß der vorliegenden Erifndung zeigt;
  • Fig. 4 ein Flußbild ist, das eine Unterbrechungs- Handhabungsabfolge zeigt, welche im System ausgeführt wird, das in Fig. 3 gezeigt wird.
  • Um das Verstehen der vorliegenden Erfindung zu erleichtern, wird zuerst ein Virtuellmaschinen-System gemäß dem Stand der Technik und seine Probleme, mit Bezug auf die Fig. 1 und 2, beschrieben.
  • Fig. 1 ist eine Ansicht, die ein Beispiel des Aufbaues eines Virtuellmaschinen-Systems nach dem Stand der Technik zeigt. Das System umfaßt eine zentrale Prozessoreinheit (CPU) 1; einen Hauptspeicher 2; einen Kanalprozessor 3 und I/O-Einrichtungen 4&sub1; bis 4n. Die CPU 1 umfaßt eine Befehlverarbeitungseinheit 10 und ein I/O-Unterbrechungsmaskenregister 11, etc.. Das Maskenregister 11 kann eine Information setzen, ob die CPU 1 eine I/O-Unterbrechungsanforderung von einer I/O-Unterbrechungswarteschlange 25 (später beschrieben), die vom Kanalprozessor 3 gesetzt wird, aktivieren oder inaktivieren sollte. Das Maskenregister 11 umfaßt zum Beispiel acht Maskenbits 11&sub0; bis 11&sub7;. Jedes Maskenbit zeigt den I/O-Unterbrechungsaktivierungszustand an, falls die logische "1" gesetzt ist. Die Maskenbits 11&sub0; bis 11&sub7; entsprechen den jeweiligen Subklassennummern 0 bis 7, welche die Unterbrechungspriorität anzeigen. Wenn das Steuerungsrecht der CPU einer virtuellen Maschine gegeben wird, wird der Inhalt des Maskenregisters 11 zu einer Unterbrechungsmaskeninformation für den VM-Monitor und wird im allgemeinen in einem ganzen "1" Zustand betrieben. Andererseits besitzt jede virtuelle Maschine ein virtuelles Maskenregister, und diese Register sind, wie später beschrieben wird, zum Beispiel in jedem der Virtuellmaschinen-Steuerungsblöcke 22&sub1; bis 22n vorgesehen.
  • Der Kanalprozessor 3, der einen I/O-Kanal bildet, nimmt eine Vielzahl von I/O-Einrichtungen 4&sub1; bis 4n auf. Die I/O-Einrichtungen 4&sub1; bis 4n sind mit jeweiligen spezifischen Subkanalnummern und Subklassennummern versehen. Jede subkanalnummer designiert einen der Subkanäle, im allgemeinen eine Mehrzahl, die vom Kanalprozessor 3 gesteuert wird. Der Kanalprozessor 3 besitzt Subkanalworte 24 zum Halten von Steuerungsinformation, zum Beispiel für jeden Subkanal, in einem Hardware-Bereich 23, der im Hauptspeicher 2 vorgesehen ist. Der Hardware-Bereich 23 ist ein Speicherbereich, auf welchen nicht direkt von der Software zugegriffen werden kann. Jedes Subkanalwort 24 ist ein Steuerungsblock zum Speichern der Subkanalnummer, Subkanalklasse, Zugtandsinformation und anderer Steuerungsinformation.
  • Der Hauptspeicher 2 enthält Virtuellmaschinenbereiche 21&sub1; bis 21m, worin jedes Programm einer Vielzahl von virtuellen Maschinen VM&sub1; bis VMm, die durch die reale Maschine realisiert sind, gespeichert ist, und Virtuell-Maschinensteuerungsblöcke 22&sub1; bis 22m, worin jede seiner Steuerungsdaten gespeichert ist. Die Virtuellmaschinen-Steuerungsblöcke 22&sub1; bis 22m inkorporieren virtuelle I/O-Unterbrechungsmaskenregißter der virtuellen Maschinen, entsprechend dem I/O-Unterbrechungsmaskenregister 11 der realen Maschine. Der Hauptspeicher 2 inkorporiert den oben erwähnten VM-Monitor 20. Ferner besitzt der Hauptspeicher 2 einen Hardware-Bereich 23, worin die Subkanalworte 24 und die I/O-Unterbrechungswarteschlange 25 vorgesehen sind.
  • Die I/O-Unterbrechungswarteschlange 25 umfaßt Porte 25&sub0; bis 25&sub7;, wobei jeder den jeweiligen Maskenbits 11&sub0; bis 11&sub7; des Maskenregisters 11 entspricht und für jede Subklasse vorgesehen ist. Jeder der Porte 25&sub0; bis 25&sub7; kann eine Vielzahl von Warteschlangenelementen zum Ausführen der Bildung einer I/O-Unterbrechungswarteschlange besitzen. Wenn eine Vielzahl von Unterbrechungen in der gleichen Subklasse erzeugt werden, wird die später erzeugte Unterbrechung hinter das letzte Warteschlangenelement plaziert. Unterbrechungsanforderungen für die CPU 1 werden durch Auslesen des Inhalts dar Warteschlangenelemente, nacheinander für jede Subklasse, in der Prioritätsordnung ausgeführt, wann immer die Unterbrechung gehandhabt wird. Daher, in der gleichen Subklasse, je später die Unterbrechung, umso später wird sie gehandhabt. Jedes Warteschlangenelement besitzt eine Hinweisadresse, welche ein entsprechendes Subkanalwort anzeigt. Mit dieser Hinweisadresse wird ein Subkanalwort, das sich auf die I/O-Einrichtung bezieht, welche die I/O-Einrichtungsunterbrechung verursacht hat, der CPU 1 gegeben, wodurch die I/O-Unterbrechungshandhabung ausgeführt werden kann.
  • Der Betrieb der I/O-Unterbrechungshandhabung, der durch das in Fig. 1 gezeigte System ausgeführt wird, wird unten mit Bezug auf Fig. 2 beschrieben. Fig. 2 ist ein Flußbild, das eine I/O-Unterbrechungshandhabungsabfolge zeigt, die von dem in Fig. 1 gezeigten System ausgeführt wird. Als erstes wird ein I/O-Start für die I/O-Einrichtung, der von einem I/O-Befehl einer virtuellen Maschine hervorgerufen wird, beschrieben.
  • Die CPU 1 führt ein Programm des VM-Monitors 20 im Hauptspeicher 2 aus, um das Steuerungsrecht der CPU auf eines der Programme der Virtuellmaschinenbereiche 21&sub1; bis 21m, die für jede virtuelle Maschine zugewiesen sind, zu übertragen, so daß eine virtuelle Maschine ausgeführt werden kann. Wenn auf einen I/O-Befehl während des Betriebs der virtuellen Maschine gestossen, ist es gut bekannt, daß die CPU das Steuerungsrecht auf den VM-Monitor 20 überträgt. Dann führt der VM-Monitor einen I/O-Befehl der realen Maschine aus, um den aufgenommenen I/O-Befehl zu simulieren, so daß ein I/O-Start für den Kanalprozessor 3 stattfinden kann, um einen I/O-Betrieb zu starten.
  • Wie bekannt ist, wird der I/O-Start, der vom I/O-Befehl hervorgerufen wird, ausgeführt, während einer der Subkanäle designiert wird, im allgemeinen eine Mehrzahl, gesteuert vom Kanalprozessor 3, zur gleichen Zeit wird eine Subklasse, der die I/O-Einrichtung angehört, designiert. Der Kanalprozessor 3 speichert die Subklassennummer und dies notwendige Steuerungsinformation in einem Subkanalwort 24 des nach dem I/O-Start designierten Subkanals und startet dann die Steuerung des I/O-Betriebs.
  • Wenn der I/O-Betrieb an der I/O-Einrichtung beendet ist, existiert ein Zustand, der die I/O-Unterbrechungsanforderung erfordert. Dann speichert der Kanalprozessor 3 die gelieferte Zustandsinformation etc. im Subkanalwort 24 des designierten Subkanals und weist, gemäß der in diesem Subkanalwort 24 gespeicherten Subklassennummer, ein Warteschlangenelement, das den Unterbrechungsbedarf anzeigt, einem Port der I/O-Unterbrechungswarteschlange 25 zu, welche einer Subklassennummer entspricht.
  • Andererseits, wie im Flußbild von Fig. 2 gezeigt, überprüft die Hardware oder das Mikroprogramm der Befehlverarbeitungseinheit 10 der CPU 1 den Inhalt der Maskenbits 11&sub0; bis 11&sub7; des Maskenregisters 11, in der Ordnung der Priorität nach jeder Beendigung eines Makrobefehls (Schritt S 20). Wenn der Inhalt des Maskenbits einen unterbrechungsaktivierten Zustand anzeigt, das heißt, "1", wird ein Port der I/O-Unterbrechungswarteschlange 25, welcher dem in Frage stehenden Maskenbit entspricht, überprüft (Schritt S 21), und falls eine Unterbrechungsanforderung in diesem Port vorliegt, wird eine I/O-Unterbrechung für die reale Maschine erzeugt (Schritt S 22).
  • Andererseits, wenn das Maskenbit des Maskenregisters 11 einen unterbrechungsinaktivierten Zustand annimmt, oder wenn keine Unterbrechungsanforderung im Port der Warteschlange 25 existiert, obwohl das Maskenbit des Maskenregisters 11 den unterbrechungsaktivierten Zustand angenommen hat, wird die nächste Subklasse auf die gleiche Weise überprüft (Schritte S 20 bis S 23). Auf diese Weise werden alle der Subklassen überprüft, und falls schließlich beurteilt wird, daß keine Bedingungen vorhanden sind, die eine Erzeugung einer Unterbrechung notwendig machen, wird der nächste Befehl ausgeführt.
  • Wenn eine I/O-Unterbrechung für die reale Maschine im Schritt S 22 stattfindet, wird das Steuerungsrecht der CPU auf eine gewöhnliche Weise vom Ausführungsprogramm der virtuellen Maschine auf den VM-Monitor 20 der realen Maschine übertragen, um ein I/O-Unterbrechungshandhabungsprogramm durch den VM- Monitor 20 auszuführen (Schritt S 24). Durch dieses Handhabungsprogramm wird die Unterbrechungsinformation analysiert. Zum Beispiel wird bestimmt, welche virtuelle Maschine den I/O-Befehl ausgegeben hat, der die I/O-Unterbrechung hervorrief, das heißt, für welche virtuelle Maschine die Unterbrechungsanforderung erzeugt worden ist, oder ob das Maskenbit des virtuellen Maskenregisters im Virtuellmaschinen-Steuerungsblock 22 der virtuellen Maschine, welche den I/O-Befehl ausgegeben hat, in einem unterbrechungsaktivierten Zustand etc. ist oder nicht.
  • Als ein Ergebnis der Analyse, wenn das in Frage stehende Virtuellmaskenregister beurteilt wird, in einem unterbrechungsaktivierten Zustand zu sein (Schritt S 25), wird die Erzeugung einer I/O-Unterbrechung für die in Frage stehende virtuelle Maschine in folgender Sequenz simuliert:
  • (1) Das Zustandswort des laufenden Programmes (PSW) der virtuellen Maschine wird im Virtuellmaschinenbereich 21 gesichert;
  • (2) Die Zustandinformation wird als Unterbrechungsinformation gespeichert; und
  • (3) Ein neues PSW der virtuellen Maschine wird geladen. Danach wird das Steuerungsrecht der CPU auf die in Frage stehende virtuelle Maschine übertragen, damit die virtuelle Maschine ausgeführt wird, wodurch ein I/O-Unterbrechungshandhabungsprogramm der virtuellen Maschine gestartet wird.
  • Andererseits, wenn das Maskenbit des Virtuellmaskenregisters beurteilt wird, in einem inaktivierten Zustand im Schritt S 25 zu sein, wird die Unterbrechungsinformation der I/O-Unterbrechungsanforderungswarteschlange dem Virtuellmaschinensteuerungsblock (Schritt S 28) zugewiesen, wodurch die Unterbrechung gehalten wird, bis das Maskenbit den aktivierten Zustand annimmt, und während dieser Periode wird der folgende Befehl der früheren virtuellen Maschine ausgeführt.
  • Danach, wenn ein Befehl zum Ändern eines Maskenbits von der virtuellen Maschine ausgeführt wird, überträgt die CPU das Steuerungsrecht der CPU auf den VM-Monitor 20. Wenn das Maskenbit den aktivierten Zustand annimmt, muß der VM-Monitor 20 die Unterbrechungsinformation aus der oben erwähnten Warteschlange herausnehmen, um die I/O-Unterbrechung zu simulieren.
  • Wie oben beschrieben, wenn eine I/O-Unterbrechungshandhabung durch das in Fig. 1 gezeigte System ausgeführt wird, greift der VM-Monitor bei der I/O-Unterbrechung ein, um die Unterbrechung handzuhaben, daher entsteht das Problem, worin die zum Steuern des Virtuell-Maschinensystems notwendige Zeit vergrößert wird.
  • Eine bevorzugte Ausführungsform der vorliegenden Erfindung wird nun mit Bezug auf die Fig. 3 und 4 erklärt.
  • Fig. 3 ist ein Blockdiagramm, welches ein Virtuellmaschinen-System gemäß der vorliegenden Erfindung zeigt. Die Unterschiede zwischen dem Virtuellmaschinen-System, das in der Fig. 3 gezeigt ist, und jenem in Fig. 1 gezeigten, werden hier unten beschrieben. In Fig. 3 besitzt eine zentrale Prozessoreinheit (CPU) 1 Maskenregister 11(1) bis 11(m) von denen jedes die gleiche Funktion besitzt, wie jene der in Fig. 1 gezeigten Maskenregister, wobei sie Nummern besitzen, die den Nummern der virtuellen Maschinen VM&sub1; bis VMm entsprechen. Die Maskenregister 11(1) bis 11(m) werden für die jeweiligen virtuellen Maschinen VM&sub1; bis VMm zugewiesen. Ferner wird jeder der virtuellen Maschinen VM&sub1; bis VMm eine jeweilige Identifikationsnummer gegeben, und ein Indentifikationsregister 12 zum Halten der Indentifikationsnummer einer gleichzeitig ausgeführten virtuellen Maschine wird vorgesehen. Dieses Indentifikationsregister 12 ist aufgebaut, daß es in der Lage ist, die Identifikationsnummer unter der Steuerung eines VM-Monitors 27 zu speichern. Ein Maskenregister, das einer virtuellen Maschine entspricht, die von der Indentifikationsnummer designiert ist, welche im Indentifikationsspeicher 12 gespeichert ist, wird aus den Maskenregistern 11(1) bis 11(m) ausgewählt, um einen betreibbaren Zustand anzunehmen, während die übrigen Maskenregister einen Stand-by-Zustand annehmen.
  • Ein Hardwarebereich 28 in einem Hauptspeicher 2 wird mit einer Gruppe von I/O-Unterbrechungswarteschlangen 25(1) bis 25(m) versehen, die den jeweiligen Maskenregistern 11(1) bis 11(m) der CPU 1 entsprechen. Jede der Warteschlangen 25(1) bis 25(m) besitzt die gleiche Funktion, wie jene der Warteschlange 25, die mit Bezug auf Fig. 1 beschrieben ist. Ein Subkanalwort 26 wird mit Bereichen zum Steuern der Indentifikationsnummer einer virtuellen Maschine versehen, zusätzlich zur Subkanalnummer, der Subklassennummer und der Zustandsinformation.
  • Der Betrieb des in Fig. 3 gezeigten Systems wird mit Bezug auf Fig. 4 beschrieben, welche eine I/O-Unterbrechungshandhabungssequenz zeigt, die von dem in Fig. 3 gezeigten System ausgeführt wird.
  • Der VM-Monitor 27 operiert in der gleichen Weise, wie jener des Systems nach dem Stand der Technik, um zum Beispiel die virtuellen Maschinen zu steuern und zu entscheiden, welche virtuelle Maschine das Steuerungsrecht der CPU erhalten wird. Der VM-Monitor 27 ordnet die Indentifikationsnummern für die jeweiligen virtuellen Maschinen VM&sub1; bis VMm zu, und wenn das Steuerungsrecht der CPU irgendeinem der virtuellen Maschinen gegeben wird, lädt er die Identifikationsnummer der in Frage stehenden virtuellen Maschine in das Indentifikationsregister 12.
  • Wenn ein I/O-Start, der durch einen I/O-Befehl der virtuellen Maschine hervorgerufen wird, stattfindet, empfängt ein Kanalprozessor 3 eine Subkanaldesignation und eine Subklassendesignation von der CPU 1, wie im Fall des Standes der Technik, und empfängt zur gleichen Zeit die Identifikationsnummer, die im Identifikationsregister 12 gespeichert ist, und speichert dann diese Identifikationsnummer zusammen mit der Subklassennummer, etc., in das Subkanalwort 26.
  • Wenn ein I/O-Betrieb an der I/O-Einrichtung beendet ist, und ein Zustand existiert, der eine I/O-Unterbrechungsanforderung erfordert, wird die vorbestimmte Zustandsinformation, etc., im Subkanalwort 26 gespeichert, dann wird eine Warteschlange, die der Identifikationsnummer der virtuellen Maschine entspricht und im Subkanalwort 26 gespeichert ist, aus den Warteschlangen 25(1) bis 25(m) ausgewählt. Ferner wird in dieser ausgewählten Warteschlange einer der Porte 28&sub0; bis 28&sub7;, die für jede Subklasse vorgesehen sind, ausgewählt gemäß der Subklassennummer, die im Subkanalwort 26 gespeichert ist, um ein Warteschlangenelement, welches die Unterbrechungsanforderung anzeigt, dem ausgewählten Port zuzuweisen. Auf diese Weise nimmt die Unterbrechungsanforderung einen Unterbrechungswartezustand an.
  • Ein Hardware- oder ein Mikroprogramm einer Befehlverarbeitungseinheit 10 der CPU 1 wählt, wie in Fig. 4 gezeigt, zur Zeit der Beendigung eines Makrobefehls ein Maskenregister, welches durch das Steuerungsregister 12 designiert ist, aus den Maskenregistern 11(1) bis 11(m) aus, und überprüft dann die Maskenbits der ausgewählten Maskenregister, um zu beurteilen, ob die Unterbrechung aktiviert oder inaktiviert ist (Schritt S 30).
  • Wenn das Maskenbit den unterbrechungsaktivierten Zustand annimmt, das heißt, wenn das Maskenbit "1" ist, wird ein Port, der dem Maskenbit in der Warteschlange entspricht, überprüft, um zu beurteilen, ob eine Unterbrechungsanforderung existiert oder nicht (Schritt S 31). Wenn die I/O-Unterbrechungsanforderung existiert, wird ein Programm zur Ausführung der Unterbrechung direkt für die laufende, ausführende virtuelle Maschine, das vom Identifikationsregister 12 designiert ist, aus (Schritt S 32), und dadurch wird ein Unterbrechungshandhabungsprogramm der virtuellen Maschine gestartet (Schritt S 33). Der die Unterbrechung erzeugende Prozeß im Schritt S 32 ist ähnlich jenem, der mit Bezug auf Fig. 2 beschrieben ist. Der Prozeß inkludiert beispielsweise ein Sichern des laufenden PSW, ein Speichern der Statusinformation als Unterbrechungsinformation, und ein Laden des neuen PSW, etc.
  • Wenn beurteilt wird, daß keine Unterbrechungsanforderungen im Schritt S 31 vorhanden sind, wie beschrieben in Fig. 2, wird beurteilt, ob die folgende Subklasse mit einer niedrigeren Priorität existiert oder nicht (Schritt S 34). Falls eine Subklasse existiert, werden die Schritte S 30 und S 31 wiederholt, wodurch alle Subklassen des Subkanals darauf überprüft werden, ob die Unterbrechung aktiviert oder inaktiviert ist, und ob die Unterbrechungsanforderung existiert oder nicht.
  • Wie oben erwähnt, erfordert das in Fig. 3 gezeigte Virtuell-
  • maschinen-System nicht das Eingreifen des VM-Monitors, um eine I/O-Unterbrechung zu simulieren, wenn die I/O-Unterbrechung der virtuellen Maschine ausgeführt wird, so daß der Aufwand für die Steuerung des Virtuellmaschinen-Systems verringert ist, wodurch die Verarbeitungsleistung des Virtuell-Maschinensystems verbessert wird.
  • Obgleich eine bevorzugte Ausführungsform hier oben beschrieben worden ist, sind verschiedene Modifikationen und Änderungen innerhalb des Umfangs der vorliegenden Erfindung, wie beansprucht, möglich.

Claims (6)

1. Computersystem zum Steuern virtueller Maschinen (VM&sub1;-VMm), denen jeweils eine unterschiedliche Identifikationsnummer gegeben wurde, welches System umfaßt: eine zentrale Prozessoreinheit (1); einen Kanalprozessor (3); und einen oder mehrere Eingangs/Ausgangs-(I/O)-Einrichtungen (4&sub1;-4n), die in dem Kanalprozessor aufgenommen sind, und einen Identifikationsspeicher (12), zum Speichern der Identifikationsnummer einer virtuellen Maschine, die gegenwärtig im Ausführungszustand ist; dadurch gekennzeichnet, daß Maskenspeicher (11(1)-11(m)) mit denselben Identifikationsnummern wie denen der virtuellen Maschine vorgesehen sind, die jeweils irgendeiner der verschiedenen Identifikationsnummern entsprechen; daß I/O-Unterbrechungswarteschlangen (25(1)-25(m)) mit denselben Identifikationsnummern wie denen der virtuellen Maschine vorgesehen sind, von denen jede irgendeiner der verschiedenen Identifikationsnummern entspricht; daß ein I/O-Start für die I/O-Einrichtungen durch die zentrale Prozessoreinheit ausgeführt werden kann, in Begleitung mit der Designation der Identifikationsnummer, zu welcher die in Frage stehende I/O-Einrichtung gehört; daß der Kanalprozessor eine I/O-Unterbrechungsanforderung der I/O-Einrichtung in die I/O-Unterbrechungswarteschlange setzen kann, die der in Frage stehenden Identifikationsnummer entspricht, wenn die I/O-Unterbrechungsanforderung auftritt; und daß die zentrale Prozessoreinheit den Maskenspeicher aktivieren kann, der durch die Identifikationszahl angezeigt ist, die in dem Identifikationsspeicher gespeichert ist, wodurch bestimmt wird, ob die Unterbrechung der in Frage stehenden I/O-Einrichtung aktiviert worden ist oder nicht.
2. System nach Anspruch 1, gekennzeichnet durch Subkanal-Wortspeichereinrichtungen (26), in denen dann, wenn der I/O-Start für die I/O-Einrichtung stattfindet, die zentrale prozessoreinheit (1) die Identifikationsnummer, die der in Frage stehenden I/O-Einrichtung entspricht, zusammen mit anderer Steuerinformation in die Subkanal-Wortspeichereinrichtungen einspeichern kann, und der Kanalprozessor (3) die I/O-Unterbrechungswarteschlange anzeigen kann, die der in Frage stehenden I/O-Einrichtung entspricht, in Obereinstimmung mit der Identifikationsnummer, die in der Subkanal-Wortspeichereinrichtungen gespeichert ist, wenn die I/O-Unterbrechungsanforderung eintritt.
3. System nach Anspruch 1 oder 2, dadurch gekennzeichnet, daß die Maskenspeicher (11(1)-11(m)) und der Identifikationsspeicher (12) jeweils durch Register gebildet sind.
4. System nach Anspruch 2, dadurch gekennzeichnet, daß die Subkanal-Wortspeichereinrichtung (26) durch ein Register gebildet ist.
5. System nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, daß die I/O-Unterbrechungswarteschlange (25(1)-25(m)) eine Vielzahl von Warteschlangenelementen umfaßt.
6. System nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, daß die virtuellen Maschinen (VM&sub1;-VMm) jeweils durch ein Steuerprogramm (27) für virtuelle Maschinen gesteuert werden.
DE8686306736T 1985-09-03 1986-09-01 Rechnersystem zur steuerung virtueller maschinen. Expired - Fee Related DE3685863T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP60194070A JPS6258341A (ja) 1985-09-03 1985-09-03 入出力割込処理方式

Publications (2)

Publication Number Publication Date
DE3685863D1 DE3685863D1 (de) 1992-08-06
DE3685863T2 true DE3685863T2 (de) 1993-02-04

Family

ID=16318459

Family Applications (1)

Application Number Title Priority Date Filing Date
DE8686306736T Expired - Fee Related DE3685863T2 (de) 1985-09-03 1986-09-01 Rechnersystem zur steuerung virtueller maschinen.

Country Status (7)

Country Link
US (1) US4860190A (de)
EP (1) EP0213952B1 (de)
JP (1) JPS6258341A (de)
AU (1) AU566146B2 (de)
CA (1) CA1260149A (de)
DE (1) DE3685863T2 (de)
ES (1) ES2002277A6 (de)

Families Citing this family (42)

* 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 計算機システムのタイマ制御装置
US4855899A (en) * 1987-04-13 1989-08-08 Prime Computer, Inc. Multiple I/O bus virtual broadcast of programmed I/O instructions
US5129064A (en) * 1988-02-01 1992-07-07 International Business Machines Corporation System and method for simulating the I/O of a processing system
US4912628A (en) * 1988-03-15 1990-03-27 International Business Machines Corp. Suspending and resuming processing of tasks running in a virtual machine data processing system
US5276815A (en) * 1988-10-24 1994-01-04 Fujitsu Limited Input and output processing system for a virtual computer
EP0366416B1 (de) * 1988-10-24 1997-01-08 Fujitsu Limited Ein-/Ausgabeverarbeitungssystem für einen virtuellen Rechner
JPH02171934A (ja) * 1988-12-26 1990-07-03 Hitachi Ltd 仮想計算機システム
JPH02208740A (ja) * 1989-02-09 1990-08-20 Fujitsu Ltd 仮想計算機制御方式
DE58908886D1 (de) * 1989-09-29 1995-02-23 Siemens Nixdorf Inf Syst Verfahren und Unterbrechungssteuerung zur Behandlung von Unterbrechungsanforderungen bei Ein-/Ausgabeoperationen in einem virtuellen Maschinensystem.
US5325536A (en) * 1989-12-07 1994-06-28 Motorola, Inc. Linking microprocessor interrupts arranged by processing requirements into separate queues into one interrupt processing routine for execution as one routine
US5488713A (en) * 1989-12-27 1996-01-30 Digital Equipment Corporation Computer simulation technique for predicting program performance
JP2708608B2 (ja) * 1990-05-25 1998-02-04 富士通株式会社 仮想計算機のipl処理方式
US5206936A (en) * 1990-08-31 1993-04-27 International Business Machines Corporation Apparatus for exchanging channel adapter status among multiple channel adapters
US5287523A (en) * 1990-10-09 1994-02-15 Motorola, Inc. Method for servicing a peripheral interrupt request in a microcontroller
US5446904A (en) * 1991-05-17 1995-08-29 Zenith Data Systems Corporation Suspend/resume capability for a protected mode microprocessor
US5652890A (en) * 1991-05-17 1997-07-29 Vantus Technologies, Inc. Interrupt for a protected mode microprocessor which facilitates transparent entry to and exit from suspend mode
US5522075A (en) * 1991-06-28 1996-05-28 Digital Equipment Corporation Protection ring extension for computers having distinct virtual machine monitor and virtual machine address spaces
US5222215A (en) * 1991-08-29 1993-06-22 International Business Machines Corporation Cpu expansive gradation of i/o interruption subclass recognition
JP2870254B2 (ja) * 1991-10-02 1999-03-17 日本電気株式会社 仮想計算機の入出力割り込み処理方式
JP3300407B2 (ja) * 1992-05-15 2002-07-08 富士通株式会社 仮想計算機システム
US5438677A (en) * 1992-08-17 1995-08-01 Intel Corporation Mutual exclusion for computer system
JP3507524B2 (ja) * 1993-06-21 2004-03-15 富士通株式会社 事象報告ワード処理機能を持つデータ処理システム
CA2123447C (en) * 1993-09-20 1999-02-16 Richard L. Arndt Scalable system interrupt structure for a multiprocessing system
JP3657665B2 (ja) * 1995-02-14 2005-06-08 富士通株式会社 共用メモリに結合される複数の計算機システム及び共用メモリに結合される複数の計算機システムの制御方法
US7281075B2 (en) * 2003-04-24 2007-10-09 International Business Machines Corporation Virtualization of a global interrupt queue
US7594089B2 (en) * 2003-08-28 2009-09-22 Mips Technologies, Inc. Smart memory based synchronization controller for a multi-threaded multiprocessor SoC
US7849297B2 (en) * 2003-08-28 2010-12-07 Mips Technologies, Inc. Software emulation of directed exceptions in a multithreading processor
US7711931B2 (en) * 2003-08-28 2010-05-04 Mips Technologies, Inc. Synchronized storage providing multiple synchronization semantics
US7836450B2 (en) 2003-08-28 2010-11-16 Mips Technologies, Inc. Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts
US20050050305A1 (en) * 2003-08-28 2005-03-03 Kissell Kevin D. Integrated mechanism for suspension and deallocation of computational threads of execution in a processor
US7418585B2 (en) * 2003-08-28 2008-08-26 Mips Technologies, Inc. Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts
US9032404B2 (en) * 2003-08-28 2015-05-12 Mips Technologies, Inc. Preemptive multitasking employing software emulation of directed exceptions in a multithreading processor
US7376954B2 (en) * 2003-08-28 2008-05-20 Mips Technologies, Inc. Mechanisms for assuring quality of service for programs executing on a multithreaded processor
US7870553B2 (en) * 2003-08-28 2011-01-11 Mips Technologies, Inc. Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts
US7321965B2 (en) * 2003-08-28 2008-01-22 Mips Technologies, Inc. Integrated mechanism for suspension and deallocation of computational threads of execution in a processor
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
US9753765B1 (en) * 2004-03-22 2017-09-05 Altera Corporation Multi-processor integrated circuits
US7814496B2 (en) * 2005-08-19 2010-10-12 Intel Corporation Method and system for replicating schedules with regard to a host controller for virtualization
US8572159B2 (en) * 2005-12-23 2013-10-29 Intel Corporation Managing device models in a virtual machine cluster environment
US7730248B2 (en) * 2007-12-13 2010-06-01 Texas Instruments Incorporated Interrupt morphing and configuration, circuits, systems and processes
CN106325974B (zh) * 2016-08-11 2020-02-07 浪潮(北京)电子信息产业有限公司 一种虚拟化io性能优化方法及***

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS55112651A (en) * 1979-02-21 1980-08-30 Fujitsu Ltd Virtual computer system
US4435755A (en) * 1981-12-28 1984-03-06 International Business Machines Corporation Balanced channel finding method
JPS58200363A (ja) * 1982-05-14 1983-11-21 Nec Corp 仮想システムの入出力制御方式
JPS6051951A (ja) * 1983-08-31 1985-03-23 Hitachi Ltd 入出力処理装置
US4564903A (en) * 1983-10-05 1986-01-14 International Business Machines Corporation Partitioned multiprocessor programming system
JPH0619747B2 (ja) * 1984-01-18 1994-03-16 株式会社日立製作所 I/o命令実行方法、i/o割込処理方法およびそれらを用いた計算機システム
JPS6136850A (ja) * 1984-07-30 1986-02-21 Nec Corp 入出力割込通知方式

Also Published As

Publication number Publication date
CA1260149A (en) 1989-09-26
AU566146B2 (en) 1987-10-08
ES2002277A6 (es) 1988-08-01
EP0213952A3 (en) 1988-06-15
AU6207786A (en) 1987-04-09
EP0213952A2 (de) 1987-03-11
US4860190A (en) 1989-08-22
DE3685863D1 (de) 1992-08-06
EP0213952B1 (de) 1992-07-01
JPS6258341A (ja) 1987-03-14

Similar Documents

Publication Publication Date Title
DE3685863T2 (de) Rechnersystem zur steuerung virtueller maschinen.
DE3607889C2 (de)
DE3687805T2 (de) Ein-ausgabesteuersystem in einem virtuellen maschinensystem.
DE69114333T2 (de) Rechner mit der Fähigkeit mehrere Befehle gleichzeitig auszuführen.
DE2350884C2 (de) Adreßumsetzungseinheit
DE2722099C2 (de)
DE3586359T2 (de) System und verfahren zum durchfuehren von ein-/ausgabeoperationen fuer ein virtuelles system.
DE68927492T2 (de) Verfahren und Vorrichtung zur gleichzeitigen Verteilung von Befehlen an mehrere funktionelle Einheiten
DE3889578T2 (de) Vorrichtung zur Sicherung und Rückspeicherung einer Registerinformation.
DE2657848C2 (de)
DE68928113T2 (de) Reihenfolgesteuersystem zur Behandlung von Befehlen
DE69908682T2 (de) Prozessor mit Echtzeit-Ablaufsteuerung zur Fehlerbeseitigung ohne Fehlerbeseitigungsmonitor
DE2953861C2 (de)
DE2243956A1 (de) Speicherprogrammierte datenverarbeitungsanlage
DE2948285A1 (de) Adressensteuersystem fuer softwaresimulation
DE3942669A1 (de) Virtuelles maschinensystem
DE4313594A1 (de) Mikroprozessor
CH654943A5 (de) Pruefeinrichtung fuer mikroprogramme.
DE68924719T2 (de) Vorrichtung und Verfahren zur Ausführung eines Unterprogramms in einem Datenverarbeitungssystem mit Blockumschaltung.
DE19729618C2 (de) Mikroprozessor und Mehrprozessorsystem
DE3855524T2 (de) Arithmetik-Parallelverarbeitungseinheit und zugehöriger Kompilator
DE60027357T2 (de) Eine Unterbrechungssteuerung und ein Mikrorechner, der diese Unterbrechungssteuerung beinhaltet
DE68927292T2 (de) Mikrorechner, geeignet zur Schnellverarbeitung eines Verzweigungsbefehlskodes
DE68926266T2 (de) Datenprozessor mit der Fähigkeit, Unterbrechungen mit hoher Geschwindigkeit zu verarbeiten
DE3750311T2 (de) Gerät und Verfahren zur Übertragung zwischen Prozessoren.

Legal Events

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