JP2006209386A - Virtual machine system and its method for controlling external interrupt - Google Patents
Virtual machine system and its method for controlling external interrupt Download PDFInfo
- Publication number
- JP2006209386A JP2006209386A JP2005019276A JP2005019276A JP2006209386A JP 2006209386 A JP2006209386 A JP 2006209386A JP 2005019276 A JP2005019276 A JP 2005019276A JP 2005019276 A JP2005019276 A JP 2005019276A JP 2006209386 A JP2006209386 A JP 2006209386A
- Authority
- JP
- Japan
- Prior art keywords
- interrupt
- virtual machine
- processor
- external
- external interrupt
- 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.)
- Pending
Links
Images
Landscapes
- Multi Processors (AREA)
Abstract
Description
本発明は、仮想計算機システムに係わり、特に仮想計算機および仮想計算機モニタ向けの外部割込みの制御方法に関する。 The present invention relates to a virtual machine system, and more particularly, to an external interrupt control method for a virtual machine and a virtual machine monitor.
複数プロセッサ構成の物理計算機が標準で使われるようになり、また、技術の発展によりプロセッサの高多重化も進んできている。今後、複数プロセッサ構成の物理計算機を用いる仮想計算機システムの重要性が増すと予測される。 A physical computer having a multi-processor configuration has come to be used as a standard, and with the development of technology, the number of processors has been increased. In the future, it is expected that the importance of virtual computer systems using physical computers with multiple processors will increase.
仮想計算機システムの仮想計算機モニタは、物理計算機にあるプロセッサとI/Oデバイスを論理的に分割して各仮想計算機に割り当てる。各仮想計算機はこのように分割された論理区画上で動作する。 The virtual machine monitor of the virtual machine system logically divides the processor and I / O device in the physical machine and assigns them to each virtual machine. Each virtual machine operates on the logical partition thus divided.
ある種の物理計算機は、外部割込みが発生したとき、I/Oデバイス、タイマ、プロセッサ間割込みなどの外部割込み生成源に設定された割込みベクタを仮想計算機モニタに伝えることにより、仮想計算機モニタが外部割込みの要因を識別することを可能とする。仮想計算機モニタは、割込みベクタにより仮想計算機向けの外部割込みを仮想計算機に伝達する。 When an external interrupt occurs, some types of physical computers send the interrupt vector set to the external interrupt generation source such as an I / O device, timer, and interprocessor interrupt to the virtual computer monitor. It is possible to identify the cause of the interrupt. The virtual machine monitor transmits an external interrupt for the virtual machine to the virtual machine by an interrupt vector.
特許文献1は、複数プロセッサ構成の物理計算機を用いる仮想計算機システムについて開示する。 Patent Document 1 discloses a virtual computer system that uses a physical computer having a plurality of processors.
従来の仮想計算機システムでは、仮想計算機上のゲストオペレーティングシステム(OS)が外部割込み生成源に割込みベクタを設定するとき、および仮想計算機へ外部割込みを伝達するとき、いずれの場合にも仮想計算機モニタ(VMM)は、割込みベクタの変換を行っていた。 In the conventional virtual machine system, when the guest operating system (OS) on the virtual machine sets an interrupt vector to the external interrupt generation source and transmits an external interrupt to the virtual machine, the virtual machine monitor ( (VMM) converted the interrupt vector.
このように仮想計算機に外部割込みを伝達するときにVMMが割込みベクタの変換を行うので、発生した外部割込みの仮想計算機への伝達が遅れるという問題があった。特にゲストOSがあるプロセッサから他のプロセッサへプロセッサ間割込みを送信する際には、VMMは、例外を発生させて介入し、割込みベクタの変換を行うのでプロセッサ間割込みの送信が遅れるとともに、プロセッサ間割込みの発生に伴ってさらに割込みベクタの変換を行うのでプロセッサ間割込みの他ゲストOSへの伝達が遅れるという問題があった。仮想計算機に割り当てられるプロセッサの数が増えるほど、ゲストOSの送信するプロセッサ間割込みの数も増えるため、外部割込みの送信と伝達の遅れの影響も大きくなる。またVMMの外部割込み制御のコードのうち、割込みベクタの変換に関するコード量が多いという問題があった。 As described above, when the external interrupt is transmitted to the virtual machine, the VMM converts the interrupt vector, so that there is a problem that transmission of the generated external interrupt to the virtual machine is delayed. In particular, when an inter-processor interrupt is transmitted from one processor to another processor in the guest OS, the VMM intervenes by generating an exception and converts the interrupt vector, so that the transmission of the inter-processor interrupt is delayed and the inter-processor interrupt is delayed. Since the interrupt vector is further converted along with the occurrence of the interrupt, there is a problem that the transmission of the inter-processor interrupt to the guest OS is delayed. As the number of processors allocated to the virtual machine increases, the number of inter-processor interrupts transmitted by the guest OS also increases, so the influence of delays in transmission and transmission of external interrupts also increases. In addition, the VMM external interrupt control code has a large amount of code related to the conversion of interrupt vectors.
本発明の目的は、仮想計算機への外部割込みの送信と伝達の遅れをなくするか小さくするとともに、VMMの外部割込み制御のコード量を減らすことにある。 An object of the present invention is to eliminate or reduce delays in transmission and transmission of external interrupts to a virtual machine and to reduce the amount of code for external interrupt control of the VMM.
本発明においては、外部割込みの割込みベクタを、仮想計算機上のゲストオペレーティングシステム(OS)が使用する割込みベクタの集合と、仮想計算機モニタ(VMM)が使用する割込みベクタとに分離する。 In the present invention, the interrupt vector of the external interrupt is separated into a set of interrupt vectors used by the guest operating system (OS) on the virtual machine and an interrupt vector used by the virtual machine monitor (VMM).
外部割込みが発生しVMMに制御が移ると、VMMはその外部割込みの割込みベクタを調べ、割込みベクタがゲストOS用割込みベクタ集合に含まれると判定したときは、仮想計算機にその外部割込みの割込みベクタを変換せずに伝達し、VMM用の割込みベクタと等しいと判定したときは、VMM内部で処理し仮想計算機には伝達しない。 When an external interrupt occurs and control is transferred to the VMM, the VMM examines the interrupt vector of the external interrupt. If it is determined that the interrupt vector is included in the guest OS interrupt vector set, the VMM sends the interrupt vector of the external interrupt to the virtual machine. Is transmitted without conversion and is determined to be equal to the interrupt vector for the VMM, it is processed inside the VMM and not transmitted to the virtual machine.
特に、ゲストOSがプロセッサ間割込みを他プロセッサに送信するときには、VMMは介在せず、ゲストOSがプロセッサ間割込みを送信するためのコマンドを書き込む特定のメモリ領域を直接アクセスするようにさせる。 In particular, when the guest OS transmits an interprocessor interrupt to another processor, the VMM does not intervene, and the guest OS directly accesses a specific memory area in which a command for transmitting the interprocessor interrupt is written.
本発明によれば、仮想計算機モニタ(VMM)の外部割込み制御において、割込みベクタの変換を行わないことにより、ゲストOSへの外部割込みの伝達の遅れを小さくすることと、ゲストOSのプロセッサ間割込み送信の遅れがなくなることと、VMMの外部割込み制御のコード量が減ることという効果がある。 According to the present invention, in the external interrupt control of the virtual machine monitor (VMM), the interrupt vector is not converted, thereby reducing the delay in the transmission of the external interrupt to the guest OS and the inter-processor interrupt of the guest OS. There is an effect that there is no transmission delay and the amount of code for external interrupt control of the VMM is reduced.
以下、本発明を適用する一実施形態について図面を用いて説明する。 Hereinafter, an embodiment to which the present invention is applied will be described with reference to the drawings.
図1は、本発明を適用した仮想計算機システムの一実施形態を示す構成図である。物理計算機100は、プロセッサ110−0,110−1,110−2,110−3、I/Oデバイス150−1,150−2,150−3,150−4、およびファームウェア160を有する。プロセッサ110−0,110−1,110−2,110−3は、それぞれプロセッサ間割込み機構111−0,111−1,111−2,111−3と、タイマ112−0,112−1,112−2,112−3を有する。
FIG. 1 is a configuration diagram showing an embodiment of a virtual machine system to which the present invention is applied. The
仮想計算機モニタ(VMM)200は、プロセッサ110及びI/Oデバイス150を論理的に分割して、仮想計算機300−1,300−2を構築する。プロセッサ110−0,110−1と、I/Oデバイス150−1,150−2は、仮想計算機300−1に割り当てられる物理資源230−1である。プロセッサ110−2,110−3と、I/Oデバイス150−3,150−4は、仮想計算機300−2に割り当てられる物理資源230−2である。 The virtual machine monitor (VMM) 200 logically divides the processor 110 and the I / O device 150 to construct virtual machines 300-1 and 300-2. The processors 110-0 and 110-1 and the I / O devices 150-1 and 150-2 are physical resources 230-1 allocated to the virtual machine 300-1. The processors 110-2 and 110-3 and the I / O devices 150-3 and 150-4 are physical resources 230-2 allocated to the virtual machine 300-2.
仮想計算機300−1と300−2は、それぞれ割り当てられたプロセッサ110と同じ数の仮想プロセッサ310を有する。以下、プロセッサ110−0,110−1,110−2,110−3のいずれかを指すときには、プロセッサ110と表記する。他の構成要素についても同様である。 The virtual machines 300-1 and 300-2 each have the same number of virtual processors 310 as the assigned processors 110. Hereinafter, when referring to any of the processors 110-0, 110-1, 110-2, and 110-3, the processor 110 is described. The same applies to other components.
仮想計算機300−1の仮想プロセッサ310−0,310−1はそれぞれプロセッサ110−0,110−1に対応し、仮想計算機300−2の仮想プロセッサ310−2,310−3はそれぞれプロセッサ110−2,110−3に対応する。各仮想プロセッサ310は、仮想計算機300から見える各プロセッサ110に対応する論理プロセッサである。 The virtual processors 310-0 and 310-1 of the virtual machine 300-1 correspond to the processors 110-0 and 110-1, respectively, and the virtual processors 310-2 and 310-3 of the virtual machine 300-2 correspond to the processor 110-2, respectively. , 110-3. Each virtual processor 310 is a logical processor corresponding to each processor 110 seen from the virtual machine 300.
仮想計算機300−1の仮想プロセッサ310−0,310−1は、それぞれ仮想タイマ311−0,311−1を有し、仮想計算機300−2の仮想プロセッサ310−2,310−3はそれぞれ仮想タイマ311−2,311−3を有する。各仮想タイマ311は、対応するタイマ112をタイマ源とする論理的タイマである。 The virtual processors 310-0 and 310-1 of the virtual machine 300-1 have virtual timers 311-0 and 311-1 respectively, and the virtual processors 310-2 and 310-3 of the virtual machine 300-2 are respectively virtual timers. 311-3 and 311-3. Each virtual timer 311 is a logical timer that uses the corresponding timer 112 as a timer source.
仮想計算機300−1の上でゲストオペレーティングシステム(OS)330−1が動作し、仮想計算機300−2の上でゲストOS330−2が動作する。 A guest operating system (OS) 330-1 operates on the virtual machine 300-1, and a guest OS 330-2 operates on the virtual machine 300-2.
本実施形態のVMM200は、本発明に関連するものとして、外部割込みが発生すると起動し、発生した外部割込みの割込みベクタを調べ、その割込みベクタに対応する処理を行う外部割込みハンドラ210と、複数のプロセッサ110間でプロセッサ間割込みを使ってメッセージ交換を行う制御プログラムとしてプロセッサ間通信部220を有する。
As related to the present invention, the VMM 200 of this embodiment is activated when an external interrupt occurs, examines the interrupt vector of the generated external interrupt, and performs an
ゲストOS330は、物理計算機100の割り当てられた図示しないメモリ領域に格納され、割り当てられた仮想プロセッサ310によって実行される。VMM200は、物理計算機100のメモリに格納され、プロセッサ110によって実行される。
The guest OS 330 is stored in an allocated memory area (not shown) of the
図2は、外部割込みの種別を示す割込みベクタの概念図である。外部割込み生成源500に対して割込みベクタが設定される。割込みベクタは割込みの種別を示す番号を格納する。外部割込み生成源500に割込みベクタが設定され外部割込みの宛先とするプロセッサ110が指定されると、外部割込み生成源500は、指定されたプロセッサ110に対して設定された割込みベクタの外部割込みを生成する。 FIG. 2 is a conceptual diagram of an interrupt vector indicating the type of external interrupt. An interrupt vector is set for the external interrupt generation source 500. The interrupt vector stores a number indicating the type of interrupt. When an interrupt vector is set in the external interrupt generation source 500 and the processor 110 that is the destination of the external interrupt is specified, the external interrupt generation source 500 generates an external interrupt of the interrupt vector set for the specified processor 110. To do.
プロセッサ110はそれぞれ独立した割込みベクタ集合504を有する。割込みベクタ集合504は、番号の順に割込みベクタを配列したものである。複数の外部割込み生成源500の外部割込みの宛先を同一のプロセッサ110とするときには、それぞれの外部割込み生成源500に異なる割込みベクタを設定することによって、そのプロセッサ110は、発生した外部割込み生成源500を特定することができる。 Each processor 110 has an independent set of interrupt vectors 504. The interrupt vector set 504 is an array of interrupt vectors in the order of numbers. When the external interrupt destinations of a plurality of external interrupt generation sources 500 are set to the same processor 110, by setting different interrupt vectors in the respective external interrupt generation sources 500, the processor 110 can generate the generated external interrupt generation sources 500. Can be specified.
例えば外部割込み生成源500−1と500−4は、ともに宛先をプロセッサ110−0とするが、それぞれの外部割込み生成源500に異なる割込みベクタを設定することにより、プロセッサ110−0は、発生した外部割込みが外部割込み生成源500−1と外部割込み生成源500−4のどちらであるかを判定することができる。外部割込み生成源500−2と500−3についても同様である。外部割込み生成源500−1と500−2は、宛先のプロセッサ110が異なるので、両者に同一番号の割込みベクタを設定しても構わない。 For example, both the external interrupt generation sources 500-1 and 500-4 are destined for the processor 110-0, but by setting different interrupt vectors for the respective external interrupt generation sources 500, the processor 110-0 is generated. It can be determined whether the external interrupt is the external interrupt generation source 500-1 or the external interrupt generation source 500-4. The same applies to the external interrupt generation sources 500-2 and 500-3. The external interrupt generation sources 500-1 and 500-2 are different in destination processor 110, and therefore, the same number of interrupt vectors may be set for both.
図2は、プロセッサ110−0と110−1について例示するが、プロセッサ110−2とプロセッサ110−3についても同様である。 FIG. 2 illustrates the processors 110-0 and 110-1, but the same applies to the processors 110-2 and 110-3.
図3、図4、及び図5をもとに、ゲストOS330が使用する割込みベクタと、VMM 200が使用する割込みベクタを分離する2つの方法について説明する。各プロセッサについて割込みベクタを分離する方法は同じであるため、本実施形態は、プロセッサ110−1について説明する。 Two methods for separating the interrupt vector used by the guest OS 330 and the interrupt vector used by the VMM 200 will be described with reference to FIGS. 3, 4, and 5. Since the method for separating the interrupt vector is the same for each processor, the present embodiment will be described for the processor 110-1.
まず図3をもとに、ファームウェア160用の割込みベクタを使用して、ゲストOS330の使用する割込みベクタとVMM200の使用する割込みベクタを分離する第1の方法について説明する。ファームウェア160は、ゲストOS330が立ち上がるまでの間にプロセッサ110をイニシャライズする物理計算機100の機構である。
First, referring to FIG. 3, a first method for separating the interrupt vector used by the guest OS 330 and the interrupt vector used by the VMM 200 using the interrupt vector for the
外部割込み生成源500からプロセッサ110−1に伝達される外部割込みの割込みベクタの集合504−1は、ファームウェア用割込みベクタの集合600とゲストOS用割込みベクタの集合601に分離される。 The external interrupt vector set 504-1 transmitted from the external interrupt generation source 500 to the processor 110-1 is separated into a firmware interrupt vector set 600 and a guest OS interrupt vector set 601.
VMM200は、その起動時にファームウェア用割込みベクタ集合600の中でファームウェア160が使用しない割込みベクタを確保し、VMM用割込みベクタ602とする。
The
VMM200は、VMM自身の制御のために他プロセッサ110からプロセッサ110−1にプロセッサ間割込みを送信するときは、VMM用割込みベクタ602のみを使用する。VMM用割込みベクタ602は、VMM 200とファームウェア160の間で共用せず、VMM 200が占有的に使用する。
The
VMM200は、ゲストOS用割込みベクタを使用しないので、プロセッサ110−1で発生した外部割込みの割込みベクタが、ゲストOSの使用する割込みベクタの集合601−1に含まれるか否かを調べることにより、発生した外部割込みを仮想計算機300−1の仮想プロセッサ310−1に伝達するか、VMM 200あるいはファームウェア160が外部割込みとして処理し、仮想計算機300−1の仮想プロセッサ310−1に伝達しないかを直ちに判定することができる。
Since the
次に、図4と図5をもとに、仮想外部割込み生成源についてゲストOS330が設定する割込みベクタを利用して、ゲストOS330の使用する割込みベクタとVMM200の使用する割込みベクタを分離する第2の方法について説明する。仮想計算機300は、プロセッサ110が有する物理的な外部割込み生成源に1対1に対応する仮想外部割込み生成源を仮想プロセッサ310ごとに有する。
Next, based on FIG. 4 and FIG. 5, the interrupt vector used by the guest OS 330 and the interrupt vector used by the
本実施例では、仮想外部割込み生成源が仮想タイマ311であるとし、物理的な外部割込み生成源がタイマ112であるとする。ただし、本発明はこれに限定されるものではない。また仮想外部割込みをどのように実現するかについては、本発明の主目的ではないため、その詳細を説明しない。 In this embodiment, it is assumed that the virtual external interrupt generation source is the virtual timer 311, and the physical external interrupt generation source is the timer 112. However, the present invention is not limited to this. Further, how to realize the virtual external interrupt is not the main object of the present invention, and thus the details thereof will not be described.
図4は、仮想プロセッサ310の仮想タイマ311に対してゲストOS330が設定する割込みベクタを、物理的なタイマ112の外部割込みと、VMM 200自身がプロセッサ間通信を行う際のプロセッサ間割込みとによって共有する方法を示す概念図である。
FIG. 4 shows that the interrupt vector set by the guest OS 330 for the virtual timer 311 of the virtual processor 310 is shared by the external interrupt of the physical timer 112 and the inter-processor interrupt when the
VMM200は、仮想計算機300−1上でゲストOS330−1が起動するまでは、プロセッサ間通信を行う際に発生させるプロセッサ間割込みの割込みベクタとして、任意の割込みベクタを使用する。
Until the guest OS 330-1 is started on the virtual machine 300-1, the
仮想計算機300−1上でゲストOS330−1が起動すると、ゲストOS330−1は、仮想プロセッサ310−1の仮想タイマ311−1に割込みベクタ700を設定する。仮想タイマ311はソフトウェア的なタイマであるので、その仮想外部割込みは、物理的なタイマ112の外部割込みとは関係なく発生し得る。
When the guest OS 330-1 is activated on the virtual computer 300-1, the guest OS 330-1 sets the interrupt
VMM200は、割込みベクタ700を内部的にVMM用割込みベクタ701として保持するとともに、プロセッサ110−1のタイマ112−1にこの割込みベクタ700を設定する。ここで割込みベクタ700とVMM用割込みベクタ701は、同一番号の割込みベクタである。
The
VMM200は、仮想計算機300−1にプロセッサ110−1のタイマ112−1を使用させず、仮想プロセッサ310−1の仮想タイマ311−1を使用させることにより、割込みベクタ700を利用する。すなわちVMM200は、VMM用割込みベクタ701を、プロセッサ110−1のタイマ112−1の外部割込みと、VMM200のプロセッサ間通信部220がVMM自身のプロセッサ間通信のために他プロセッサ110からプロセッサ110−1へ送信するプロセッサ間割込みとの間で共有する。VMM200は、同一のVMM用割込みベクタ701を用いても両割込みを区別することができる。
The
図5は、ゲストOS330が仮想タイマ311に設定する割込みベクタ700を利用して、ゲストOS330の使用する割込みベクタ700とVMM200の使用するVMM用割込みベクタ701を分離する方法を示す概念図である。VMM用割込みベクタ701の外部割込みは、物理的なタイマ112からの外部割込みか、あるいはVMM200自身のプロセッサ間通信用のプロセッサ間割込みであり、仮想計算機300−1には伝達しない。従ってゲストOS用割込みベクタ集合601−1に含まれる外部割込みの割込みベクタを、VMM用割込みベクタ701と等しいか否か調べることにより、発生した外部割込みを仮想計算機300−1の仮想プロセッサ310−1に伝達するか、VMM 200の外部割込みとしてVMMが処理し、仮想計算機300−1の仮想プロセッサ310−1の外部割込みとしてゲストOS330−1に伝達しないかを直ちに判定することができる。
FIG. 5 is a conceptual diagram showing a method for separating the interrupt
図6と図7は、それぞれ、第1の方法および第2の方法を実現するために、VMM200の外部割込みハンドラ210が外部割込みの伝達先を判定する処理の流れを示すフローチャートである。すなわち図6は、ファームウェア160用の割込みベクタを利用してゲストOS330の割込みベクタと、VMM200の割込みベクタを分離する場合の処理手順を示す。図7は、ゲストOS330の割込みベクタの中で、仮想外部割込み生成源(本実施例では仮想タイマ)にゲストOS330が設定する割込みベクタを利用して、ゲストOS330の割込みベクタとVMM200の割込みベクタを分離する場合の処理手順を示す。ただし、ここで図6と図7は処理手順の一例であり、より効率のよい処理手順もあり得る。
FIGS. 6 and 7 are flowcharts showing the flow of processing in which the external interrupt
図6は、第1の方法を採用する場合の、VMM200の外部割込みハンドラ210が外部割込みの伝達先を判定する処理の流れを示すフローチャートである。プロセッサ110の1つで外部割込みが発生すると、VMM200の外部割込みハンドラ210が実行を開始する(ステップ801)。外部割込みハンドラ210は、発生した外部割込みの割込みベクタを取得する(ステップ802)。
FIG. 6 is a flowchart showing a flow of processing in which the external interrupt
以下のステップ(803〜807)は、取得した割込みベクタの伝達先を決め、決めた伝達先にその割込みベクタを伝達する処理の流れを示す。従来の方法は、割込みベクタの伝達先を決めるだけでなく割込みベクタの変換を行う必要があったが、本発明によれば、割込みベクタの伝達先を決めるだけでよい。 The following steps (803 to 807) show the flow of processing for determining the transmission destination of the acquired interrupt vector and transmitting the interrupt vector to the determined transmission destination. In the conventional method, it is necessary not only to determine the transmission destination of the interrupt vector but also to convert the interrupt vector. According to the present invention, it is only necessary to determine the transmission destination of the interrupt vector.
外部割込みハンドラ210は、取得した割込みベクタがゲストOS用割込みベクタ集合601に含まれるかどうかを判定する(ステップ803)。取得した割込みベクタがゲストOS用割込みベクタ集合601に含まれる場合には、外部割込みハンドラ210は、この割込みベクタを変換せずに、直ちに該当する仮想計算機300の仮想プロセッサ310に伝達する(ステップ804)。
The external interrupt
取得した割込みベクタがゲストOS用割込みベクタ集合601に含まれない場合には、外部割込みハンドラ210は、この割込みベクタがVMM用割込みベクタ602と等しいかどうか判定する(ステップ805)。取得した割込みベクタがVMM用割込みベクタ602と等しい場合には、外部割込みハンドラ210は、VMM200が自身のプロセッサ間通信を行うために発生させたプロセッサ間割込みと判定し、VMM200のプロセッサ間通信部220を呼び出す(ステップ806)。取得した割込みベクタがVMM用割込みベクタ602と異なる場合には、外部割込みハンドラ210は、ファームウェア160に伝達すべき外部割込みと判定し、この割込みベクタをファームウェア160に伝達する(ステップ807)。
If the acquired interrupt vector is not included in the guest OS interrupt vector set 601, the external interrupt
図7は、第2の方法を採用する場合の、VMM200の外部割込みハンドラ210が外部割込みの伝達先を判定する処理の流れを示すフローチャートである。仮想外部割込み生成源が仮想的な外部割込みを生成する方法は本発明の主題ではないため、説明を省略する。
FIG. 7 is a flowchart showing a flow of processing in which the external interrupt
プロセッサ110の1つで外部割込みが発生すると、VMM200の外部割込みハンドラ210が実行を開始する(ステップ901)。外部割込みハンドラ210は、発生した外部割込みの割込みベクタを取得する(ステップ902)。
When an external interrupt occurs in one of the processors 110, the external interrupt
以下のステップ(ステップ903〜907)は、取得した割込みベクタの伝達先を決め、決めた伝達先に該割込みベクタを伝達する処理の流れを示す。従来の方法は、割込みベクタの伝達先を決めるだけでなく割込みベクタの変換を行う必要があったが、本発明によれば、割込みベクタの伝達先を決めるだけでよい。
The following steps (
外部割込みハンドラ210は、取得した割込みベクタがゲストOS用割込みベクタ集合601に含まれるか否かを判定する(ステップ903)。取得した割込みベクタがゲストOS用割込みベクタ集合601に含まれない場合には、外部割込みハンドラ210は、ファームウェア160に伝達すべき外部割込みと判定し、この割込みベクタをファームウェア160に伝達する(ステップ904)。
The external interrupt
取得した割込みベクタがゲストOS用割込みベクタ集合601に含まれる場合には、外部割込みハンドラ210は、この割込みベクタがVMM用割込みベクタ701と等しいかどうか判定する(ステップ905)。取得した割込みベクタがVMM用割込みベクタ701と等しい場合には、外部割込みハンドラ210は、VMM200が自身のプロセッサ間通信を行うために発生させたプロセッサ間割込み、あるいはプロセッサ110の物理的なタイマ112の外部割込みと判定し、VMM200のプロセッサ間通信220と、この割込みベクタを設定した物理的なタイマ112の外部割込みサービスルーチンを呼び出す(ステップ906)。取得した割込みベクタがVMM用割込みベクタ701と異なる場合には、外部割込みハンドラ210は、この割込みベクタを変換せず、仮想計算機300の仮想プロセッサ310に伝達する(ステップ907)。
When the acquired interrupt vector is included in the guest OS interrupt vector set 601, the external interrupt
図8は、VMM200自身がプロセッサ間通信の際に送信するプロセッサ間割込み、ゲストOS330が送信するプロセッサ間割込み、およびI/Oデバイス150から仮想プロセッサ310への外部割込みに関する全体の処理の流れを示す図である。以下第1の方法のファームウェア160の割込みベクタを利用してゲストOS330とVMM200の割込みベクタを分離する場合について説明する。第2の方法のOSの割込みベクタの中で仮想外部割込み生成源にゲストOS330が設定する割込みベクタを利用してゲストOS330とVMMの割込みベクタを分離する場合も全く同様の処理の流れとなる。なお図8で示す処理の流れは一例であり、本発明を限定するものではない。
FIG. 8 shows the overall processing flow regarding the inter-processor interrupt transmitted by the
まずVMM200自身がプロセッサ間通信を行う際に送信するプロセッサ間割込みについて説明する。VMM200のプロセッサ間通信部220が、プロセッサ110−0からプロセッサ110−1へのメッセージ送信を目的として、プロセッサ110−0からプロセッサ110−1へプロセッサ間割込みを送信する場合を説明する。プロセッサ110−1上でこのプロセッサ間割込み以外の外部割込みは発生しないものと仮定する。
First, an interprocessor interrupt transmitted when the
VMM200のプロセッサ間通信部220は、プロセッサ110−0上のプロセッサ間割込みを送信するための特定のメモリ領域(プロセッサ間割込み用メモリ領域)に、プロセッサ110−1にVMM用の割込みベクタ602の外部割込みを発生させるためのコマンドを書き込む(1001)。プロセッサ110−0のプロセッサ間割込み機構111−0は、コマンドを受け取ると、書き込まれた割込みベクタの外部割込みをプロセッサ110−0へ送信する(1005)。
The
プロセッサ110−1で外部割込みが発生すると、VMM200の外部割込みハンドラ210に制御が移る(1004)。外部割込みハンドラ210は、発生した外部割込みの割込みベクタがVMM用割込みベクタ602と等しいと判定し、VMM200のプロセッサ間通信部220を呼び出す(1002)。プロセッサ間通信部220は呼び出されると、要求された処理を行う。
When an external interrupt occurs in the processor 110-1, control is transferred to the external interrupt
次に図8を参照してゲストOS330が送信するプロセッサ間割込みについて説明する。仮想計算機300−1上のゲストOS330−1が仮想プロセッサ310−0から仮想プロセッサ310−1へプロセッサ間割込みを送信する場合について説明する。 Next, an interprocessor interrupt transmitted by the guest OS 330 will be described with reference to FIG. A case where the guest OS 330-1 on the virtual computer 300-1 transmits an inter-processor interrupt from the virtual processor 310-0 to the virtual processor 310-1 will be described.
VMM200は、仮想計算機300−1を構築するときに、仮想プロセッサ310−0のプロセッサ間割込み用メモリ領域へのコマンドの書き込みは、VMM200を介入させず、プロセッサ110−0のプロセッサ間割込み用メモリ領域に対して直接行われるように設定している。プロセッサ110−1上でこのプロセッサ間割込み以外の外部割込みは発生しないものと仮定する。
When the
ゲストOS330−1は、仮想プロセッサ310−0から仮想プロセッサ310−1へプロセッサ間割込みを送信するために、仮想プロセッサ310−0のプロセッサ間割込み領域に割込みベクタを含むコマンドを書き込む。この書き込みはプロセッサ110−0のプロセッサ間割込み用メモリ領域に対して直接行われる(1000)。プロセッサ110−0のプロセッサ間割込み機構111−0は、このコマンドを受け取ると、ゲストOS330−1が指定した割込みベクタの外部割込みをプロセッサ110−1へ送信する(1005)。 The guest OS 330-1 writes a command including an interrupt vector in the inter-processor interrupt area of the virtual processor 310-0 in order to transmit an inter-processor interrupt from the virtual processor 310-0 to the virtual processor 310-1. This writing is directly performed on the inter-processor interrupt memory area of the processor 110-0 (1000). Upon receiving this command, the inter-processor interrupt mechanism 111-0 of the processor 110-0 transmits an external interrupt of the interrupt vector designated by the guest OS 330-1 to the processor 110-1 (1005).
プロセッサ110−1で外部割込みが発生すると、VMM 200の外部割込みハンドラ210に制御が移る(1004)。外部割込みハンドラ210は、発生した外部割込みを仮想計算機300−1の仮想プロセッサ310−1に伝達する外部割込みと判定し、割込みベクタを変換せずに外部割込みを直ちに仮想プロセッサ310−1へ伝達する(1003)。
When an external interrupt occurs in the processor 110-1, control is transferred to the external interrupt
次にI/Oデバイス150から仮想計算機へ送信される外部割込みについて説明する。仮想計算機300−1に割り当てられたI/Oデバイス150−2から仮想計算機300−1の仮想プロセッサ310−1に外部割込みが伝達される場合について説明する。 Next, an external interrupt transmitted from the I / O device 150 to the virtual machine will be described. A case where an external interrupt is transmitted from the I / O device 150-2 assigned to the virtual machine 300-1 to the virtual processor 310-1 of the virtual machine 300-1 will be described.
I/Oデバイス150の宛先プロセッサは、プロセッサ110−1に設定されている。プロセッサ110−1上でこの外部割込み以外の外部割込みは発生しないものと仮定する。I/Oデバイス150−2からの外部割込みはプロセッサ110−1に伝達される(1006)。 The destination processor of the I / O device 150 is set to the processor 110-1. It is assumed that no external interrupt other than this external interrupt occurs on the processor 110-1. An external interrupt from the I / O device 150-2 is transmitted to the processor 110-1 (1006).
プロセッサ110−1で外部割込みが発生すると、VMM 200の外部割込みハンドラ210に制御が移る(1004)。外部割込みハンドラ210は、発生した外部割込みを仮想プロセッサ310−1に伝達する外部割込みと判定し、割込みベクタを変換せずにこの外部割込みを直ちに仮想計算機300−1の仮想プロセッサ310−1へ伝達する(1003)。
When an external interrupt occurs in the processor 110-1, control is transferred to the external interrupt
以上述べたように、本実施形態によれば、仮想計算機モニタ(VMM)の外部割込み制御において割込みベクタの変換を行わないことにより、ゲストOS330への外部割込みの伝達の遅れを小さくし、ゲストOS330のプロセッサ間割込み送信の遅れをなくし、VMMの外部割込み制御のコード量を減らすことができる。 As described above, according to the present embodiment, the interrupt vector is not converted in the external interrupt control of the virtual machine monitor (VMM), thereby reducing the delay in the transmission of the external interrupt to the guest OS 330 and the guest OS 330. Therefore, it is possible to eliminate the delay of the inter-processor interrupt transmission and reduce the code amount of the external interrupt control of the VMM.
100:物理計算機、110:プロセッサ、150:I/Oデバイス、160:ファームウェア、200:仮想計算機モニタ、210:VMM外部割込みハンドラ、220:VMMプロセッサ間通信部、300:仮想計算機、310:仮想プロセッサ、330:ゲストオペレーティングシステム
100: Physical computer, 110: Processor, 150: I / O device, 160: Firmware, 200: Virtual computer monitor, 210: VMM external interrupt handler, 220: Inter-VMM communication unit, 300: Virtual computer, 310: Virtual processor 330: Guest operating system
Claims (5)
発生した前記外部割込みについて設定された割込みベクタを取得し、
前記割込みベクタが前記ゲストオペレーティングシステムが使用する割込みベクタの集合に属すれば前記ゲストオペレーティングシステムに伝達し、
取得した前記割込みベクタが前記割込みベクタの集合に属さない割込みベクタであり、かつ前記仮想計算機モニタ用の割込みベクタであれば、前記仮想計算機モニタ内部の処理のための制御プログラムを呼び出すことを特徴とする仮想計算機システムの外部割込み制御方法。 A physical machine having a plurality of processors, a memory, and an I / O device; a virtual machine monitor stored in the memory and executed by the processor; and a guest operating system of the virtual machine. A method executed by the virtual machine monitor in a virtual machine system for determining whether an external interrupt generated in the processor is an external interrupt to be transmitted to the guest operating system or an external interrupt for the virtual machine monitor,
Get the interrupt vector set for the external interrupt that occurred,
If the interrupt vector belongs to a set of interrupt vectors used by the guest operating system, communicate to the guest operating system,
If the acquired interrupt vector is an interrupt vector that does not belong to the set of interrupt vectors and is an interrupt vector for the virtual machine monitor, a control program for processing inside the virtual machine monitor is called. External interrupt control method for a virtual machine system.
発生した前記外部割込みについて設定された割込みベクタを取得し、
前記割込みベクタが前記プロセッサに発生する外部割込みとは独立に前記ゲストオペレーティングシステムが内部的に発生させる仮想外部割込みについて設定された割込みベクタと一致すれば、前記仮想計算機モニタ内部の処理のための制御プログラムを呼び出し、
取得した前記割込みベクタが前記仮想外部割込みについて設定された割込みベクタ以外の前記ゲストオペレーティングシステムが使用する割込みベクタの集合に属すれば前記ゲストオペレーティングシステムに伝達することを特徴とする仮想計算機システムの外部割込み制御方法。 A physical machine having a plurality of processors, a memory, and an I / O device; a virtual machine monitor stored in the memory and executed by the processor; and a guest operating system of the virtual machine. A method executed by the virtual machine monitor in a virtual machine system for determining whether an external interrupt generated in the processor is an external interrupt to be transmitted to the guest operating system or an external interrupt for the virtual machine monitor,
Get the interrupt vector set for the external interrupt that occurred,
If the interrupt vector matches the interrupt vector set for the virtual external interrupt generated internally by the guest operating system independently of the external interrupt generated in the processor, control for processing inside the virtual machine monitor Call the program,
If the acquired interrupt vector belongs to a set of interrupt vectors used by the guest operating system other than the interrupt vector set for the virtual external interrupt, it is transmitted to the guest operating system. Interrupt control method.
発生した前記外部割込みについて設定された割込みベクタを取得する手段と、
前記割込みベクタが前記ゲストオペレーティングシステムが使用する割込みベクタの集合に属すれば前記ゲストオペレーティングシステムに伝達する手段と、
取得した前記割込みベクタが前記割込みベクタの集合に属さない割込みベクタであり、かつ前記仮想計算機モニタ用の割込みベクタであれば、前記仮想計算機モニタ内部の処理のための制御プログラムを呼び出す手段とを有することを特徴とする仮想計算機システム。 A physical machine having a plurality of processors, a memory, and an I / O device; a virtual machine monitor stored in the memory and executed by the processor; and a guest operating system of the virtual machine. In the virtual machine system for determining whether an external interrupt generated in the processor is an external interrupt to be transmitted to the guest operating system or an external interrupt for the virtual machine monitor, the virtual machine monitor includes:
Means for acquiring an interrupt vector set for the generated external interrupt;
Means for communicating to the guest operating system if the interrupt vector belongs to a set of interrupt vectors used by the guest operating system;
Means for calling a control program for processing inside the virtual machine monitor if the acquired interrupt vector is an interrupt vector that does not belong to the set of interrupt vectors and is an interrupt vector for the virtual machine monitor. A virtual computer system characterized by that.
発生した前記外部割込みについて設定された割込みベクタを取得する手段と、
前記割込みベクタが前記プロセッサに発生する外部割込みとは独立に前記ゲストオペレーティングシステムが内部的に発生させる仮想外部割込みについて設定された割込みベクタと一致すれば、前記仮想計算機モニタ内部の処理のための制御プログラムを呼び出す手段と、
取得した前記割込みベクタが前記仮想外部割込みについて設定された割込みベクタ以外の前記ゲストオペレーティングシステムが使用する割込みベクタの集合に属すれば前記ゲストオペレーティングシステムに伝達する手段とを有することを特徴とする仮想計算機システム。
A physical machine having a plurality of processors, a memory, and an I / O device; a virtual machine monitor stored in the memory and executed by the processor; and a guest operating system of the virtual machine. In the virtual machine system for determining whether an external interrupt generated in the processor is an external interrupt to be transmitted to the guest operating system or an external interrupt for the virtual machine monitor, the virtual machine monitor includes:
Means for acquiring an interrupt vector set for the generated external interrupt;
If the interrupt vector matches the interrupt vector set for the virtual external interrupt generated internally by the guest operating system independently of the external interrupt generated in the processor, control for processing inside the virtual machine monitor Means to call the program;
Means for transmitting to the guest operating system if the acquired interrupt vector belongs to a set of interrupt vectors used by the guest operating system other than the interrupt vector set for the virtual external interrupt. Computer system.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005019276A JP2006209386A (en) | 2005-01-27 | 2005-01-27 | Virtual machine system and its method for controlling external interrupt |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005019276A JP2006209386A (en) | 2005-01-27 | 2005-01-27 | Virtual machine system and its method for controlling external interrupt |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2006209386A true JP2006209386A (en) | 2006-08-10 |
Family
ID=36966187
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005019276A Pending JP2006209386A (en) | 2005-01-27 | 2005-01-27 | Virtual machine system and its method for controlling external interrupt |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2006209386A (en) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2241978A1 (en) | 2009-04-14 | 2010-10-20 | Hitachi, Ltd. | Computer system, interrupt relay circuit and interrupt relay method |
WO2017094132A1 (en) * | 2015-12-02 | 2017-06-08 | 株式会社日立製作所 | Computer and method for controlling computer |
JP2018536945A (en) * | 2015-12-08 | 2018-12-13 | アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドAdvanced Micro Devices Incorporated | Method and apparatus for time-based scheduling of tasks |
WO2020008757A1 (en) * | 2018-07-03 | 2020-01-09 | 株式会社デンソー | Method of accessing device in virtualized environment |
WO2024051122A1 (en) * | 2022-09-05 | 2024-03-14 | 浪潮电子信息产业股份有限公司 | Pcie interrupt processing method and apparatus, device, and non-volatile readable storage medium |
-
2005
- 2005-01-27 JP JP2005019276A patent/JP2006209386A/en active Pending
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2241978A1 (en) | 2009-04-14 | 2010-10-20 | Hitachi, Ltd. | Computer system, interrupt relay circuit and interrupt relay method |
WO2017094132A1 (en) * | 2015-12-02 | 2017-06-08 | 株式会社日立製作所 | Computer and method for controlling computer |
JP2018536945A (en) * | 2015-12-08 | 2018-12-13 | アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドAdvanced Micro Devices Incorporated | Method and apparatus for time-based scheduling of tasks |
WO2020008757A1 (en) * | 2018-07-03 | 2020-01-09 | 株式会社デンソー | Method of accessing device in virtualized environment |
JP2020008933A (en) * | 2018-07-03 | 2020-01-16 | 株式会社デンソー | Access method to device in virtualized environment |
JP7196439B2 (en) | 2018-07-03 | 2022-12-27 | 株式会社デンソー | How to access devices in a virtualized environment |
WO2024051122A1 (en) * | 2022-09-05 | 2024-03-14 | 浪潮电子信息产业股份有限公司 | Pcie interrupt processing method and apparatus, device, and non-volatile readable storage medium |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3989911B2 (en) | Virtualization of global interrupt queue | |
JP2009265963A (en) | Information processing system and task execution control method | |
US20110125949A1 (en) | Routing packet from first virtual machine to second virtual machine of a computing device | |
KR20160097363A (en) | Resource processing method, operating system, and device | |
JP2007109040A (en) | Information processing unit, information processing system, communication relay unit, and communication control method | |
JP2007183951A (en) | Transmission of direct interrupt to virtual processor | |
US11188369B2 (en) | Interrupt virtualization | |
JP2008176360A (en) | Multiprocessor system | |
JP2006209386A (en) | Virtual machine system and its method for controlling external interrupt | |
US6256660B1 (en) | Method and program product for allowing application programs to avoid unnecessary packet arrival interrupts | |
TWI403955B (en) | Device,method and system for audio subsystem sharing in a virtualized environment | |
KR20210051325A (en) | Device and method for sharing data on an asymmetric multi-processing system | |
US10353857B2 (en) | Parallel processing apparatus and method for controlling communication | |
WO2016015493A1 (en) | Hardware virtual port and processor system | |
US20160098289A1 (en) | System and method for handling an interrupt | |
JP7451438B2 (en) | Communication devices, communication systems, notification methods and programs | |
US9548906B2 (en) | High availability multi-partition networking device with reserve partition and method for operating | |
JP2009282917A (en) | Interserver communication mechanism and computer system | |
JP4259390B2 (en) | Parallel processing unit | |
KR101620896B1 (en) | Executing performance enhancement method, executing performance enhancement apparatus and executing performance enhancement system for map-reduce programming model considering different processing type | |
US11663150B2 (en) | Fault tolerant system | |
US20200387396A1 (en) | Information processing apparatus and information processing system | |
US11513983B2 (en) | Interrupt migration | |
US7320044B1 (en) | System, method, and computer program product for interrupt scheduling in processing communication | |
US11042494B1 (en) | Direct injection of a virtual interrupt |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20080122 |
|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20080122 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20090701 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090915 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20100202 |