JP5635815B2 - Computer system and control method thereof - Google Patents
Computer system and control method thereof Download PDFInfo
- Publication number
- JP5635815B2 JP5635815B2 JP2010135033A JP2010135033A JP5635815B2 JP 5635815 B2 JP5635815 B2 JP 5635815B2 JP 2010135033 A JP2010135033 A JP 2010135033A JP 2010135033 A JP2010135033 A JP 2010135033A JP 5635815 B2 JP5635815 B2 JP 5635815B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- virtual
- unit
- physical
- event
- 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
Links
Images
Landscapes
- Hardware Redundancy (AREA)
Description
本発明は,コンピュータシステムの構成技術に関わり,特に,搭載するプロセッサを多重化し,発生する故障を検出,隠蔽することで高信頼を実現する構成技術に関する。 The present invention relates to a computer system configuration technology, and more particularly to a configuration technology that realizes high reliability by multiplexing installed processors and detecting and concealing a failure that occurs.
コンピュータシステムでの障害の抑止,あるいは影響最小化を可能とする高信頼なコンピュータシステムの構成技術の一つとして,プロセッサの耐故障(Fault Tolerant,以下FTと略記)技術がある。 As one of highly reliable computer system configuration techniques that can suppress a failure in a computer system or minimize its influence, there is a fault tolerant (Fault Tolerant, hereinafter abbreviated as FT) technique.
プロセッサFT技術にも種類があるが,コンピュータシステム障害抑止について,高い効果を得るために,ロックステッピングと呼ばれる手法で,複数のプロセッサをハードウェアレベルで同一動作させることで,プロセッサを多重化し,さらに,多重化されたプロセッサ間で出力信号を比較することで,プロセッサに発生する故障を検出,隠蔽することが行われていた。 There are various types of processor FT technology, but in order to obtain a high effect on computer system failure suppression, a technique called lock stepping is used to multiplex processors by operating them at the hardware level, Therefore, by comparing output signals between multiplexed processors, a failure occurring in the processor is detected and concealed.
しかし,近年,プロセッサの高性能化を目的とした,プロセッサの動作周波数の向上,プロセッサ内部への非同期動作する回路の導入により,ハードウェアレベルでの同一動作が不可能になりつつあり,ひいては,ロックステッピングによるプロセッサFTが困難になりつつある。 In recent years, however, the same operation at the hardware level has become impossible due to the improvement of the processor operating frequency and the introduction of asynchronously operating circuits inside the processor for the purpose of improving the performance of the processor. Processor FT by lockstepping is becoming difficult.
一方,近年のコンピュータシステムでの仮想化技術の発展により,特許文献1で開示される技術のように,ハイパバイザによって,複数のプロセッサにおいて,ハイパバイザ上で動作するプログラムの動作をソフトウェアレベルで同一動作させて多重化する手法が用いられつつある。
On the other hand, with the development of virtualization technology in computer systems in recent years, as in the technology disclosed in
前述の,ソフトウェアレベルで同一動作を行う手法では,同一動作による多重化は可能なものの,プロセッサ故障の検出,隠蔽が不完全,あるいは著しく性能が低下する,という問題があった。 The above-described technique for performing the same operation at the software level has the problem that although the same operation can be multiplexed, the detection and concealment of processor faults are incomplete or the performance is significantly reduced.
プロセッサ故障の検出,隠蔽は,基本的には,プロセッサの内部状態や出力を,多重化したプロセッサ間において比較することによって実現される。 Detection and concealment of processor faults are basically realized by comparing the internal state and output of the processors between the multiplexed processors.
プロセッサ故障の検出,隠蔽を完全にするためには,プロセッサから出力される全てのI/Oイベントを比較するなど,相当量の比較処理が必要となるが,比較処理はソフトウェアのハイパバイザによって行うことになるため,性能低下が著しい。 To complete detection and concealment of processor faults, a considerable amount of comparison processing is required, such as comparing all I / O events output from the processor, but the comparison processing must be performed by a software hypervisor. Therefore, performance degradation is significant.
逆に,プロセッサから出力される全てのI/Oイベントを比較せず,例えば,メモリを経由せずに直接I/Oにアクセスを出力する,I/Oコマンド出力のみを比較する場合,性能低下は抑えられるが,プロセッサ故障の検出,隠蔽は不完全となる。 Conversely, if all I / O events output from the processor are not compared, for example, if only the I / O command output that outputs access directly to the I / O without going through the memory is compared, the performance deteriorates. However, detection and concealment of processor failures are incomplete.
本発明の目的は,ソフトウェアレベルでのプロセッサ多重化において,性能低下を抑えつつ,プロセッサ故障の完全な検出,隠蔽を実現するコンピュータシステム及びその制御方法を提供する。 An object of the present invention is to provide a computer system that realizes complete detection and concealment of a processor failure while suppressing performance degradation in processor multiplexing at the software level, and a control method therefor.
上記の目的を達成するため,本発明においては,複数の仮想計算機が同一のアプリケーションプログラムを実行するコンピュータシステムであって,プロセッサとメモリとI/Oデバイスを備えた物理計算機と,物理計算機の計算機資源を仮想化して,第一の仮想計算機と第二の仮想計算機を実行する仮想化制御部とを備え,仮想化制御部は,第一の仮想計算機と第二の仮想計算機上のアプリケーションプログラムを同時に実行する同期制御部と,第一の仮想計算機と第二の仮想計算機が発行したI/Oイベントを検出し,種類を特定するI/Oイベント検出部と,第一の仮想計算機が発行したI/Oイベントと,第二の仮想計算機が発行したI/Oイベントを比較し,I/Oデバイスに対して出力を生成するI/Oイベント処理部とを備え,I/Oイベント処理部は,第一の仮想計算機と第二の仮想計算機が発行したI/Oイベントが,I/Oコマンドである場合に,これらI/Oコマンドを比較するI/Oコマンド比較部と,I/Oコマンド比較部の比較結果が不一致である場合には,I/Oコマンドの出力を抑止する抑止部と,を備えた構成のコンピュータシステムを提供する。 In order to achieve the above object, in the present invention, a computer system in which a plurality of virtual machines execute the same application program, a physical computer having a processor, a memory, and an I / O device, and a computer of the physical machine A virtualization control unit configured to virtualize resources and execute the first virtual computer and the second virtual computer, the virtualization control unit executing an application program on the first virtual computer and the second virtual computer; Synchronous control unit that executes simultaneously, I / O event issued by the first virtual machine and the second virtual machine, and I / O event detection unit that identifies the type and issued by the first virtual machine An I / O event processing unit that compares an I / O event with an I / O event issued by a second virtual machine and generates an output to an I / O device The I / O event processing unit compares the I / O commands when the I / O events issued by the first virtual machine and the second virtual machine are I / O commands. When the comparison result of the I / O command comparison unit does not match, a computer system having a configuration including a suppression unit that suppresses output of the I / O command is provided.
また,上記の目的を達成するため,本発明において,上述のI/Oイベント処理部は,第一の仮想計算機と第二の仮想計算機が発行したI/Oイベントが,I/Oデータ出力である場合に,第一の仮想計算機のメモリ領域と,第二の仮想計算機のメモリ領域から読み出されたI/Oデータを比較するI/Oデータ比較部を更に備え,抑止部は,I/Oデータ比較部の比較結果が不一致である場合には,当該I/Oデータをメモリ領域からの読み出しを抑止するコンピュータシステムを提供する。 In order to achieve the above object, in the present invention, the I / O event processing unit described above is configured such that the I / O event issued by the first virtual machine and the second virtual machine is an I / O data output. In some cases, an I / O data comparison unit that compares the I / O data read from the memory area of the first virtual machine and the memory area of the second virtual machine is further provided. Provided is a computer system that suppresses reading of the I / O data from the memory area when the comparison result of the O data comparison unit does not match.
更に,上記の目的を達成するため,本発明においては,複数の仮想計算機が,同一のアプリケーションプログラムを実行するコンピュータシステムであって,
プロセッサとメモリとI/Oデバイスを備えた物理計算機と,物理計算機の計算機資源を仮想化して,第一の仮想計算機と第二の仮想計算機と第三の仮想計算機を実行する仮想化制御部とを備え,仮想化制御部は,第一,第二,第三の仮想計算機上のアプリケーションプログラムを同時に実行する同期制御部と,第一,第二,第三の仮想計算機が発行したI/Oイベントを検出し,種類を特定するI/Oイベント検出部と,第一,第二,第三の仮想計算機がそれぞれ発行したI/Oイベントを比較し,I/Oデバイスに対して出力を生成するI/Oイベント処理部を備え,I/Oイベント処理部は,第一,第二,第三の仮想計算機が発行したI/Oイベントが,I/Oコマンドである場合に,これらI/Oコマンドを比較するI/Oコマンド比較部と,比較の結果,2つが一致している場合は,一致しているI/Oコマンドを出力し,全て不一致の場合には,I/Oコマンドの出力を抑止する抑止部とを備えた構成のコンピュータシステムを提供する。
Furthermore, in order to achieve the above object, in the present invention, a plurality of virtual machines are computer systems that execute the same application program,
A physical computer including a processor, a memory, and an I / O device; a virtualization controller that virtualizes computer resources of the physical computer and executes the first virtual computer, the second virtual computer, and the third virtual computer; The virtualization control unit includes a synchronous control unit that simultaneously executes application programs on the first, second, and third virtual machines, and an I / O issued by the first, second, and third virtual machines. Compares the I / O event detector that detects the event and identifies the type with the I / O event issued by the first, second, and third virtual machines, and generates an output for the I / O device I / O event processing unit, and when the I / O event issued by the first, second and third virtual machines is an I / O command, the I / O event processing unit I / O command to compare O command A comparison unit and a suppression unit that outputs a matching I / O command if the two match, and if all do not match, a suppression unit that suppresses the output of the I / O command. A computer system having the above configuration is provided.
また更に,上記の目的を達成するため,本発明において,上述のI/Oイベント処理部は,第一,第二,第三の仮想計算機が発行したI/Oイベントが,I/Oデータ出力である場合に,第一,第二,第三の仮想計算機のメモリ領域から読み出されたI/Oデータを比較するI/Oデータ比較部を更に有し,抑止部は,I/Oデータ比較部の比較の結果,2つが一致している場合は,一致しているI/Oデータ出力に対応するデータ読み出しコマンドの出力を行い,全て不一致の場合には,I/Oデータをメモリ領域から読み出すのを抑止するコンピュータシステムを提供する。 Furthermore, in order to achieve the above object, in the present invention, the I / O event processing unit described above is configured so that I / O events issued by the first, second, and third virtual machines are output as I / O data. The I / O data comparison unit for comparing the I / O data read from the memory areas of the first, second, and third virtual machines, and the suppression unit includes the I / O data. If the two match as a result of the comparison by the comparison unit, a data read command corresponding to the matching I / O data output is output, and if all do not match, the I / O data is stored in the memory area. Provided is a computer system that suppresses reading from a computer.
更にまた,上記の目的を達成するため,本発明においては,プロセッサとメモリとI/Oデバイスを備えた物理計算機と,物理計算機の計算機資源を仮想化して,複数の仮想計算機を実行する仮想化制御部と有するコンピュータシステムの制御方法であって,仮想化制御部は,複数の仮想計算機上の同一のアプリケーションプログラムを同時に実行し,複数の仮想計算機が発行したI/Oイベントを検出し,I/Oイベントの種類を特定し,複数の仮想計算機が発行したI/OイベントがI/Oコマンドである場合,I/Oコマンドを比較し,I/Oイベントが,I/Oデータ出力である場合に,複数の仮想計算機のメモリ領域から当該I/Oデータを読み出して比較し,I/Oコマンドの比較結果が不一致である場合には,I/OコマンドのI/Oデバイスへの出力を抑止し,I/Oデータの比較結果が不一致である場合には,I/Oデータをメモリ領域からI/Oデバイスに読み出すことを抑止するコンピュータシステムの制御方法を提供する。 Furthermore, in order to achieve the above object, the present invention virtualizes a physical computer having a processor, a memory, and an I / O device, and virtualizing computer resources of the physical computer to execute a plurality of virtual computers. A control method of a computer system having a control unit, wherein the virtualization control unit simultaneously executes the same application program on a plurality of virtual machines, detects an I / O event issued by the plurality of virtual machines, When the type of / O event is specified and an I / O event issued by multiple virtual machines is an I / O command, the I / O command is compared, and the I / O event is an I / O data output In this case, the I / O data is read from the memory areas of a plurality of virtual machines and compared, and if the comparison result of the I / O command does not match, the I / O command A computer system control method that suppresses output to an I / O device and suppresses reading of I / O data from the memory area to the I / O device when the comparison result of the I / O data is inconsistent. provide.
すなわち,本発明においては,メモリを経由して間接的にI/Oイベントを出力する,I/Oデータ出力を含め,プロセッサから出力される全てのI/Oイベント比較を行うが,比較処理を効率化することにより性能低下を抑える,という方針を採る。比較処理の効率化は,(1)I/Oデータ出力メモリアクセスに伴うハイパバイザ遷移オーバーヘッド削減と,(2)I/Oデータ出力メモリ読み出し,比較オーバーヘッド削減の2点により行う。 That is, in the present invention, all I / O events output from the processor including I / O data output that outputs an I / O event indirectly via a memory are compared. Adopt a policy of suppressing performance degradation by increasing efficiency. The efficiency of the comparison processing is performed by two points: (1) reduction of hypervisor transition overhead associated with I / O data output memory access, and (2) reduction of I / O data output memory and comparison overhead.
(1)I/Oデータ出力メモリアクセスに伴うハイパバイザ遷移オーバーヘッド削減は,I/Oデータ出力に用いられるメモリ領域が,特定のI/Oコマンド出力を契機として,その後I/Oから読み出されることに着目し,プロセッサが,I/Oデータ出力メモリ領域にアクセスを行うたびに,ハイパバイザ遷移を行って比較するのではなく,特定のI/Oコマンド出力を捕捉してハイパバイザ遷移を行い,まとめて比較を行うことによって,ハイパバイザへの遷移回数を減らして実現する。 (1) Hypervisor transition overhead reduction associated with I / O data output memory access means that the memory area used for I / O data output is read from the I / O after a specific I / O command output. Paying attention, every time the processor accesses the I / O data output memory area, it does not perform a hypervisor transition and compares it, but captures a specific I / O command output and performs a hypervisor transition and compares them together. This is achieved by reducing the number of transitions to the hypervisor.
(2)I/Oデータ出力メモリ読み出し,比較オーバーヘッド削減は,I/Oデータ出力のメモリ領域の読み出しが,アドレスさえ与えられれば,I/Oからでも可能であることに着目し,I/Oデータ比較部をI/Oスイッチに追加し,ハイパバイザがI/Oデータ出力メモリ読み出しを捕捉した後,ハイパバイザはメモリ領域のアドレスをI/Oデータ比較部に与え,比較処理はI/Oデータ比較部で行うことによって実現する。 (2) I / O data output memory read and comparison overhead reduction can be achieved by reading I / O data output memory area from I / O as long as an address is given. A data comparison unit is added to the I / O switch, and after the hypervisor captures an I / O data output memory read, the hypervisor gives the address of the memory area to the I / O data comparison unit, and the comparison process is an I / O data comparison. It is realized by doing in the department.
本発明により,近年の高性能なプロセッサを搭載したコンピュータシステムにおいても,高い障害抑止効果を有するプロセッサFTが実現でき,ひいては高性能,かつ高信頼なコンピュータシステムを実現することが可能になる。 According to the present invention, even in a computer system equipped with a high-performance processor in recent years, a processor FT having a high failure suppression effect can be realized, and as a result, a high-performance and highly reliable computer system can be realized.
以下、本発明の好適な実施例を図面に従い説明する。なお、本明細書において、各計算機上で実行される各種のプログラムの機能ブロックを「部」として表現する場合があるが、図面上ではこの「部」の表示は省略される。例えば、「I/Oイベント処理部」は、「I/O Event Processing(I/Oイベント処理)」と表記され、”Unit”は省略されている。 Hereinafter, preferred embodiments of the present invention will be described with reference to the drawings. In this specification, functional blocks of various programs executed on each computer may be expressed as “parts”, but the display of “parts” is omitted in the drawings. For example, “I / O event processing unit” is expressed as “I / O Event Processing”, and “Unit” is omitted.
図1は,第一の実施例の全体構成を示す図である。同図においては、左側が系Aを構成する物理計算機A、右側が系Bを構成する物理計算機Bを示しているが、図面より明らかなため、以後の説明において、系A,B表記は省略する。 FIG. 1 is a diagram showing the overall configuration of the first embodiment. In this figure, the left side shows the physical computer A constituting the system A, and the right side shows the physical computer B constituting the system B. However, since it is clear from the drawing, the system A and B notations are omitted in the following description. To do.
100,101はCPU(Central Processing Unit)であるプロセッサ,102,103はメモリ,105,106はI/OデバイスX,Yであり,120,121は,プロセッサ,メモリ,I/Oデバイスによって構成される物理計算機である。
プロセッサとI/OデバイスがI/Oスイッチ104を介して接続されることにより,物理計算機とI/Oデバイスの間は接続が共有されており,プロセッサ100,メモリ102,I/Oスイッチ104により,物理計算機120が,プロセッサ101,メモリ103,I/Oスイッチ104により,物理計算機121がそれぞれ構成され,DMAコントローラ(Direct Memory Access Controller:DMA)を備えたI/Oデバイス105,106は物理計算機120,121と接続される。
Since the processor and the I / O device are connected via the I /
ここで,107,108,109はPeripheral Component Interconnect(PCI) Express Busによる物理的な接続であり,プロセッサ100,101,メモリ102,103とI/Oスイッチ104が,PCI Express Bus107によって,また,I/Oスイッチ104とI/Oデバイス105がPCI Express Bus108によって,さらに,I/Oスイッチ104とI/Oデバイス106がPCI Express Bus109によって,それぞれ接続されている。
Here, 107, 108 and 109 are physical connections by Peripheral Component Interconnect (PCI) Express Bus, and the
132,133は仮想化制御部として機能するハイパバイザのプログラムである。この仮想化制御部を構成するハイパバイザ132,133が,物理計算機120,121でそれぞれ動作することにより,仮想的なコンピュータに対応するソフトウェア実行環境である,仮想計算機(Virtual Machine,以下VMと略記)122と123が生成される。
132 and 133 are hypervisor programs that function as a virtualization control unit. A virtual machine (Virtual Machine, hereinafter abbreviated as VM), which is a software execution environment corresponding to a virtual computer, when the
メモリ102は,ハイパバイザ132の働きにより,VM122が利用するメモリ領域110と,ハイパバイザ132が利用するメモリ領域112に分割される。このとき,VM122での仮想アドレス空間と,物理計算機120での物理アドレス空間の対応は,ハイパバイザ132内の,特にページテーブルを備えたアドレス変換部141よって管理される。
The
また,同様に,メモリ103は,ハイパバイザ133の働きにより,VM123が利用するメモリ領域111と,ハイパバイザ133が利用するメモリ領域113に分割され,VM123での仮想アドレス空間と,物理計算機121での物理アドレス空間の対応は,ハイパバイザ133内のアドレス変換部143によって管理される。
Similarly, the
VM122と123内においては,それぞれ,ソフトウェア130と131が動作するが,ハイパバイザ132の同期処理部140から,ハイパバイザ133の同期処理部142に,イベント送信チャネル160を通じて情報が送信されることにより,ソフトウェア130と131の動作は,ソフトウェアレベルで同一である。
ここで,イベント送信チャネル160は,物理計算機120と121間でのデータの送受信を論理的に示したものであり,物理的には,I/Oスイッチ104を介した通信である。
Here, the
また,ソフトウェアの動作がソフトウェアレベルで同一,とは,ソフトウェアのプログラム実行フローが,割り込みなどの非同期事象の影響も含めた上で,同一であるということである。割り込みなどの非同期事象は,実行したプログラムの内容だけでは,発生の仕方が一意に定まらないため,プログラム実行フローを同一とするためには,非同期事象の発生の仕方を同一にする必要があり,ハイパバイザ132の同期処理部140と,ハイパバイザ133の同期処理部142は,この処理を行うものである。処理の内容については,後述する。
The software operation is the same at the software level, which means that the software program execution flow is the same, including the effects of asynchronous events such as interrupts. Asynchronous events such as interrupts cannot be uniquely determined only by the contents of the executed program. Therefore, in order to make the program execution flow the same, it is necessary to make the asynchronous events occur in the same way. The
ソフトウェア130が実行されると,I/Oイベント170が発生するが,プロセッサ100が有する機構の働きにより,I/Oイベント170はハイパバイザ132にトラップされ,同期処理部140に入力される。同期処理部140は,発生したI/Oイベント170の情報を,イベント送信チャネル160を通じて,ハイパバイザ133の同期処理部142に送信する。
When the
同期処理部142は,受信したI/Oイベント170の情報を,ソフトウェア130と131の動作をソフトウェアレベルで同一にする処理に用いる他に,I/Oイベント172として,同じくハイパバイザ133内のI/Oイベント検出部144に出力する。
The
また,ソフトウェア131の実行により発生するI/Oイベント171は,プロセッサ101が有する機構の働きにより,ハイパバイザ133にトラップされ,I/Oイベント検出部144に入力される。
The I /
I/Oイベント検出部144では,VM122側のI/Oイベント172の種類を解析し,特に,I/Oコマンドを出力するイベントと,I/Oデータを出力するイベントについて,それぞれI/Oコマンド出力イベント173と,I/Oデータ出力イベント174として,I/Oイベント処理部145に出力する。また,I/Oイベント検出部144は,VM123側のI/Oイベント171の種類を解析し,I/Oコマンド出力イベント175と,I/Oデータ出力イベント176を,I/Oイベント処理部145に出力する。
The I / O
I/Oイベント処理部145は,I/Oコマンド出力イベント173,175について,I/Oコマンドの内容を比較し,一致していれば,I/Oスイッチ104との間で,I/OのI/Oコマンド190として送受信を行う。
The I / O
I/Oスイッチ104は,I/Oコマンド190を,その送受信先に応じて,I/Oデバイス105,あるいはI/Oデバイス106に,それぞれI/Oコマンド181,182として送受信することにより,I/Oコマンド出力イベント173,および175は,I/Oデバイス105,あるいは106に出力される。
The I /
また,I/Oイベント処理部145は,I/Oデータ出力イベント174,176について,I/Oデータの内容を比較し,一致していれば,I/Oコマンド190として,I/Oデバイス105,あるいは106のDMAに読み出しコマンドを送信する。
In addition, the I / O
I/Oデータ出力イベント174でのI/Oデータは,ソフトウェア130のI/Oデータ書き込み177によって,I/Oデータ出力イベント174に先立って,VM122が利用するメモリ領域110内の,I/Oデータバッファ114に書き込まれている。
The I / O data in the I / O
また,I/Oデータ出力イベント176でのI/Oデータは,ソフトウェア131のI/Oデータ書き込み178によって,I/Oデータ出力イベント176に先立って,VM123が利用するメモリ領域111内の,I/Oデータバッファ115に書き込まれている。
Also, the I / O data in the I / O
I/Oイベント処理部145には,特に,I/Oデータ出力比較部146があり,I/Oデータ出力イベント174の情報から,I/Oデータバッファ114のVM122のアドレス空間でのアドレスを特定し,さらに,VM122のアドレス空間でのアドレスから,物理計算機120のアドレス空間でのアドレスに変換する。
In particular, the I / O
同様に,I/Oデータ出力比較部146では,I/Oデータ出力イベント176の情報から,I/Oデータバッファ115のVM123のアドレス空間でのアドレスを特定し,さらに,VM123のアドレス空間でのアドレスから,物理計算機121のアドレス空間でのアドレスに変換する。
Similarly, the I / O data
続いてI/Oデータ出力比較部146は,I/Oデータ出力イベント通知191と,I/Oデータ出力イベント174に対応するI/Oデータバッファ114の物理計算機120のアドレス空間でのアドレス情報である,物理アドレス情報192と,I/Oデータ出力イベント175に対応するI/Oデータバッファ115の物理計算機121のアドレス空間でのアドレス情報である,物理アドレス情報193を,I/Oスイッチ104に対する要求送信部147を通じて,I/Oスイッチ104の要求受信部116に,それぞれ送信する。
Subsequently, the I / O data
I/Oスイッチ104の要求受信部116が,I/Oデータ出力イベント通知191,物理アドレス情報192,193を受信すると,I/Oスイッチ104は,I/Oデータバッファ114と115の内容を,それぞれDMAデータ読み出し186,187として,それぞれメモリ102,103から直接読み出して比較し,比較結果194を,I/Oデータ出力比較部146への応答送信部117を通じて,I/Oデータ出力比較部146の応答受信部148に送信する。
When the
ここで,I/Oコマンド190,およびI/Oデータ出力イベント通知191,物理アドレス情報192,193,比較結果194は,PCI Express Bus107上での,I/Oコマンド180の送受信として,同様のバスシーケンスにて実行されるものである。
Here, the I /
また,DMAデータ読み出し186,187は,PCI Express Bus107上での,DMAデータ読み出し185として,同様のバスシーケンスで実行されるものである。
The
I/Oデータ出力比較部146は,I/Oデータバッファ114と115の比較結果を,応答受信部148を通じて受信し,その結果が一致であることを示していれば,I/Oコマンド190として,I/Oデバイス105,あるいは106に,DMA読み出しコマンドを送信する。
The I / O data
I/Oデバイス105,あるいは106が,DMA読み出しコマンドを受信すると,DMAデータ読み出し188,あるいは189として,I/Oスイッチ104に対して読み出しを行う。I/Oスイッチ104は,DMAデータ読み出し188,189を,その読み出し先に応じて,DMAデータ読み出し186,187として,それぞれメモリ102,103から読み出して,DMAデータ読み出し188,189の読み出し結果を返すことにより,結果としてI/Oデータ出力イベント174,および176は,I/Oデバイス105,あるいは106に出力される。
When the I /
図2は,図1に示した実施例1のシステムの物理計算機121上で動作する仮想化制御部を構成するハイパバイザ133の一構成例の詳細を示す図である。
FIG. 2 is a diagram illustrating details of a configuration example of the
ハイパバイザ133には,同期処理部142,アドレス変換部143,I/Oイベント検出部144,I/Oイベント処理部145があり,I/Oイベント処理部145には,I/Oデータ出力比較部146があり,I/Oデータ出力比較部146には,I/Oスイッチ104に対する要求送信部147,応答受信部148があることは先に述べた通りであり,更に,仮想アドレス特定部151と,物理アドレス変換部152等がある。
The
加えて,ハイパバイザ133のI/Oイベント処理部145には,I/Oコマンド出力比較部149,I/Oコマンド出力抑止部150,DMA抑止部153がある。なお,このI/Oコマンド出力抑止部150とDMA抑止部153は総称して抑止部と呼ばれることがある。
In addition, the I / O
I/Oコマンド出力比較部149は,I/Oイベント検出部144からのI/Oコマンド出力イベント173,175のI/Oコマンドの内容を比較し,その結果をI/Oコマンド比較結果201として,I/Oコマンド出力抑止部150に出力する。
The I / O command
I/Oコマンド出力抑止部150は,I/Oイベント検出部144からのI/Oコマンド出力イベント173,175のI/Oコマンドの内容をI/Oコマンド190として送受信するが,I/Oコマンド比較結果201が不一致を示している場合,対応するI/Oコマンド出力イベント173,175のI/Oコマンド送受信を抑止する。
The I / O command
I/Oデータ出力比較部146の仮想アドレス特定部151は,I/Oイベント検出部144からのI/Oデータ出力イベント174,176の情報から,I/Oデータバッファ114のVM122のアドレス空間での仮想アドレスと,I/Oデータバッファ116のVM123のアドレス空間での仮想アドレスを特定し,その結果をI/Oデータ出力イベント仮想アドレス情報211,212として,物理アドレス変換部152に出力する。
The virtual
物理アドレス変換部152は,I/Oデータ出力イベント仮想アドレス情報211に基づいて,一般的なページテーブルを有するアドレス変換部143のページテーブルサイズ毎に,仮想ページ番号221をアドレス変換部143に入力し,アドレス変換部143から,対応する物理ページ番号222を入力することによって,I/Oデータバッファ114の物理計算機120のアドレス空間でのアドレスに変換し,その結果を,I/Oデータ出力イベント物理アドレス情報231として,要求送信部147に出力する。
Based on the I / O data output event
また,物理アドレス変換部152は,同様にして,I/Oデータバッファ116の物理計算機121のアドレス空間でのアドレスを,I/Oデータ出力イベント物理アドレス情報232として,要求送信部147に出力する。
Similarly, the physical
要求送信部147は,I/Oイベント検出部144からのI/Oデータ出力イベント174,176の入力と,物理アドレス変換部152からのI/Oデータ出力イベント物理アドレス情報231,232の入力から,I/Oデータ出力イベント通知191,物理アドレス情報192,193をI/Oスイッチ104の要求受信部116に送信する。
The
応答受信部148は,比較結果194をI/Oスイッチ104の応答送信部117から受信し,その結果をI/Oデータ比較結果241として,DMA抑止部153に出力する。
The
DMA抑止部153は,I/Oイベント検出部144からのI/Oデータ出力イベント174,176に含まれるI/Oデバイス105,あるいは106へのDMA読み出しコマンドをI/Oコマンド190として送信するが,I/Oデータ比較結果241が不一致を示している場合,対応するI/Oデータ出力イベント174,176のDMA読み出しコマンド送信を抑止する。
The
図3は,図1に示した実施例1のシステムのI/Oスイッチ104の一構成例の詳細を示す図である。
FIG. 3 is a diagram illustrating details of a configuration example of the I /
I/Oスイッチ104は,PCI Express Bus107によってプロセッサ100,101と,PCI Express Bus108によってI/Oデバイス105と,PCI Express Bus109によってI/Oデバイス106と,それぞれ接続され,I/Oコマンド180の送受信を,I/Oデバイス105にI/Oコマンド181として送受信し,あるいは,I/Oデバイス106にI/Oコマンド182として送受信し,また,I/Oデバイス105からのDMA読み出し188,あるいはI/Oデバイス106からのDMA読み出し189を,DMA読み出し185として読み出すが,これは,I/Oスイッチ104内のスイッチ回路300の動作による。
The I /
また,I/Oスイッチ104には,I/Oデータ出力比較部146に対する要求受信部116,応答送信部117があることは先に述べたが,好適には加えて,DMAデータ読み出し部301と,I/Oデータ比較部として機能するI/Oデータバッファ比較部302が付加される。このI/Oデータバッファ比較部302が付加されることにより,I/Oスイッチ104はハイパバイザ132,133の仮想化制御部のデータ比較機能を分担し,その比較オーバーヘッド削減を図る。
As described above, the I /
要求受信部116は,I/Oスイッチ104内で,スイッチ回路300を通じてPCI Express Bus107と接続されており,I/Oデータ出力イベント通知191,物理アドレス情報192,193を,I/Oコマンド180として,I/Oデータ出力比較部146の要求送信部147から受信し,受信した内容をI/Oデータ出力イベント通知311,I/Oデータバッファ114の物理アドレス情報312,I/Oデータバッファ115の物理アドレス313として,DMAデータ読み出し部301に出力する。
The
DMAデータ読み出し部301は,I/Oデータ出力イベント通知311,物理アドレス情報312,313を受け取ると,I/Oデータバッファ114,115の物理アドレス情報312,313をもとに,I/Oデータバッファ114,115へのDMAデータ読み出し186,187をそれぞれ行い,DMA読み出し結果326,327を,I/Oデータバッファ比較部302にそれぞれ出力する。
Upon receiving the I / O data
I/Oデータバッファ比較部302は,DMAデータ読み出し部301から入力されるDMA読み出し結果326,327を順次比較し,比較結果314を応答送信部117に出力する。
The I / O data
応答送信部117は,I/Oデータバッファ比較部302からの比較結果314を入力し,I/Oスイッチ104内で,スイッチ回路300を通じてPCI Express Bus107と接続されており,比較結果194を,I/Oコマンド180として,I/Oデータ出力比較部146の応答受信部148に送信する。それを受けた応答受信部148は,I/Oデータ比較結果241として,DMA抑止部153に出力することは上述の通りである。
The
図4は,本実施例の上述したシステム構成において、ハイパバイザによるVMの同期処理のみを行う場合についての流れを説明するための図である。 FIG. 4 is a diagram for explaining a flow in the case where only the VM synchronization processing by the hypervisor is performed in the above-described system configuration of the present embodiment.
物理計算機120でハイパバイザ132が動作することによりVM122が生成され,VM122内でソフトウェア130が動作し,物理計算機121でハイパバイザ133が動作することによりVM123が生成され,VM123内でソフトウェア131が動作することは先に述べた。
The
また,I/Oスイッチ104を介して接続されたI/Oデバイス105がDMAを備え,I/Oコマンド180を通じてDMAデータ読み出しが起動されることも先に述べた。
In addition, as described above, the I /
その上で,ソフトウェア130,131の処理に応じた,仮想計算機システム全体での処理の流れを説明する。
Then, the flow of processing in the entire virtual machine system according to the processing of the
この例では,ソフトウェア130は,非同期事象,具体的には割り込みであるが,481が物理計算機120に入力されて処理401でそれを受理し,その後,処理402でI/Oコマンド1を出力し,非同期事象482が入力されると,処理403でそれを受理し,その後,処理404でI/Oデータ1をメモリに書き込み,処理405でI/Oデータ2をメモリに書き込み,処理406でDMA読み出し起動のI/Oコマンド2を出力し,非同期事象483が入力されると,処理407でそれを受理する動作を行っている。
In this example, the
また,I/Oデバイス105のDMAは,ソフトウェア130の処理406で出力されるDMA読み出し起動のI/Oコマンド2を受理し,処理471にてDMA転送を開始し,処理472でソフトウェア130が処理404でメモリに書き込んだI/Oデータ1を読み出し,処理473でソフトウェア130が処理405でメモリに書き込んだI/Oデータ2を読み出し,処理474でDMA転送を終了する。
The DMA of the I /
図4に示すように,ソフトウェア130の動作のうち,非同期事象の受理である処理401,403,407については,ハイパバイザ132の働きにより,ソフトウェア130内での遷移ではなく,ハイパバイザ132への遷移が発生する。
As shown in FIG. 4, among the operations of the
物理計算機120に非同期事象481が入力されると,処理401でそれを受理して,ハイパバイザ132に遷移し,ハイパバイザ132が,処理451で,受理した非同期事象481の情報と,それを受理した際のソフトウェア130の実行位置の情報を,イベント送信チャネル160を通じてハイパバイザ133に送信し,ソフトウェア130に遷移する。
When an
物理計算機120に非同期事象482が入力されると,処理403でそれを受理して,ハイパバイザ132に遷移し,ハイパバイザ132が,処理453で,受理した非同期事象482の情報と,それを受理した際のソフトウェア130の実行位置の情報を,イベント送信チャネル160を通じてハイパバイザ133に送信し,ソフトウェア130に遷移する。
When an
ハイパバイザ133は,ハイパバイザ132が処理451で送信した,非同期事象481の情報と,それを受理した際のソフトウェア130の実行位置の情報を,処理452において受信する。
In
同様に,ハイパバイザ133は,ハイパバイザ132が処理453で送信した,非同期事象482の情報と,それを受理した際のソフトウェア130の実行位置の情報を,処理454において受信する。
Similarly, the
ハイパバイザ133は,処理455で,処理454にて受信した,非同期事象482を受理した際のソフトウェア130の実行位置の情報から,その位置でソフトウェア131の実行が停止し,ハイパバイザ133への遷移が発生するように,物理計算機121を設定する。
In
次に,処理456で,処理452にて受信した非同期事象481の情報から,仮想的な非同期事象491を設定し,あたかも仮想計算機123に非同期事象481が入力され,それを受理し,ソフトウェア131内の遷移が発生したかのように,ソフトウェア131に遷移する。
Next, in a
ソフトウェア131に遷移すると,ソフトウェア131は,非同期事象481が入力された後のソフトウェア130の動作と同一の動作を行うため,処理412において,ソフトウェア130が処理402において出力したI/Oコマンド1と同一のI/Oコマンドを出力しようとするが,ハイパバイザ133の働きにより,実際には出力されず,ハイパバイザ133への遷移が発生する。
When the transition is made to the
ハイパバイザ133では,ソフトウェア131が処理412において出力しようとしたI/Oコマンド1を,処理457において破棄する。破棄する理由は,I/Oコマンド1は,ソフトウェア130が処理402において既に出力しているからである。破棄の後に,再度ソフトウェア131に遷移する。
In the
ソフトウェア131に再度遷移した後に,ソフトウェア131は,ソフトウェア130と同一の動作を行い,やがて,ハイパバイザ133が,処理455において物理計算機121に設定した停止位置に到達し,処理413において,ハイパバイザ133への遷移が発生する。
After transitioning to the
ここまでのソフトウェア131の動作,具体的には,処理456の直後から開始され,処理412にて中断,処理457の後に再開され,処理413で中断されるまでの間の動作は,ソフトウェア130の,処理451の後から開始され,処理402を実行,処理403で中断されるまでの間の動作と同一である。
The operation of the
物理計算機120に非同期事象483が入力されると,同様に,処理407でそれを受理して,ハイパバイザ132に遷移し,ハイパバイザ132が,処理458で,受理した非同期事象483の情報と,それを受理した際のソフトウェア130の実行位置の情報を,イベント送信チャネル160を通じてハイパバイザ133に送信し,ソフトウェア130に遷移する。
When the
ハイパバイザ133は,ハイパバイザ132が処理458で送信した,非同期事象483の情報と,それを受理した際のソフトウェア130の実行位置の情報を,処理459において受信する。
In
ハイパバイザ133は,処理460で,処理459にて受信した,非同期事象483を受理した際のソフトウェア130の実行位置の情報から,その位置でソフトウェア131の実行が停止し,ハイパバイザ133への遷移が発生するように,物理計算機121を設定する。
In
次に,処理461で,処理454にて受信した非同期事象482の情報から,仮想的な非同期事象492を設定し,あたかも仮想計算機123に非同期事象482が入力され,それを受理し,ソフトウェア131内の遷移が発生したかのように,ソフトウェア131に遷移する。
Next, in a
ソフトウェア131に遷移すると,ソフトウェア131は,非同期事象482入力された後のソフトウェア130の動作と同一の動作を行うため,処理414と415において,ソフトウェア130が処理404と405においてメモリに書き込むI/Oデータ1,2と同一のI/Oデータをメモリに書き込む。
When the transition is made to the
その後に,ソフトウェア131は,処理416において,ソフトウェア130が処理406において出力した,DMA読み出し起動のI/Oコマンド2と同一のI/Oコマンドを出力しようとするが,ハイパバイザ133の働きにより,実際には出力されず,ハイパバイザ133への遷移が発生する。
After that, the
ハイパバイザ133では,ソフトウェア131が処理416において出力しようとしたI/Oコマンド2を,処理462において破棄し,再度ソフトウェア131に遷移する。
In the
ソフトウェア131に再度遷移した後に,ソフトウェア131は,ソフトウェア130と同一の動作を行い,やがて,ハイパバイザ133が,処理460において物理計算機121に設定した停止位置に到達し,処理417において,ハイパバイザ133への遷移が発生する。
After the transition to the
ここまでのソフトウェア131の動作,具体的には,処理461の直後から開始され,処理414,415を実行し,処理416にて中断,処理462の後に再開され,処理417で中断されるまでの間の動作は,ソフトウェア130の,処理453の後から開始され,処理404,405,406を実行,処理407で中断されるまでの間の動作と同一である。
The operation of the
このように,ハイパバイザ132が,物理計算機120に入力される非同期事象について,その事象の情報と,それによって引き起こされたソフトウェア130の遷移の情報をハイパバイザ133に送信し,ハイパバイザ133が,その情報を元に,ソフトウェア131にもその非同期事象を再現することによって,VMの同期処理が可能である。
As described above, the
図5は,本実施例における,ハイパバイザによるVMの同期,およびI/Oイベント出力比較処理の流れ,特にプロセッサ故障が発生していない場合の流れを示す図である。 FIG. 5 is a diagram illustrating the flow of VM synchronization and I / O event output comparison processing by the hypervisor, particularly when no processor failure has occurred in the present embodiment.
この例では,ソフトウェア130は,非同期事象581が物理計算機120に入力されて処理501でそれを受理し,その後,処理502でI/Oコマンド1を出力し,非同期事象582が入力されると,処理503でそれを受理し,その後,処理504でI/Oデータ1をメモリに書き込み,処理505でI/Oデータ2をメモリに書き込み,処理506でDMA読み出し起動のI/Oコマンド2を出力する動作を行っている。
In this example, when the
ソフトウェア130の動作のうち,非同期事象の受理である処理501,503,およびI/Oコマンドの出力である処理502,506については,ハイパバイザ132の働きにより,ソフトウェア130内での遷移ではなく,ハイパバイザ132への遷移が発生する。
Among the operations of the
物理計算機120に非同期事象581が入力されると,処理501でそれを受理して,ハイパバイザ132に遷移し,ハイパバイザ132が,処理551で,受理した非同期事象581の情報と,それを受理した際のソフトウェア130の実行位置の情報を,イベント送信チャネル160を通じてハイパバイザ133に送信し,ソフトウェア130に遷移する。
When an
ソフトウェア130の処理502で,I/Oコマンド1出力が実行されようとすると,ハイパバイザ132に遷移し,ハイパバイザ132が,処理553で,ソフトウェア130が実行しようとしたI/Oコマンド1の内容と,その際のソフトウェア130の実行位置の情報を,イベント送信チャネル160を通じてハイパバイザ133に送信し,ソフトウェア130に遷移する。
If the I /
ハイパバイザ133は,ハイパバイザ132が処理551で送信した,非同期事象581の情報と,それを受理した際のソフトウェア130の実行位置の情報を,処理552において受信する。
In
また,ハイパバイザ133は,ハイパバイザ132が処理553で送信した,ソフトウェア130の処理502で実行されようとしたI/Oコマンド1の内容と,その際のソフトウェア130の実行位置の情報を,処理554において受信する。
In
ハイパバイザ133は,処理555で,処理552にて受信した非同期事象581の情報から,仮想的な非同期事象591を設定し,あたかも仮想計算機123に非同期事象591が入力され,それを受理し,ソフトウェア131内の遷移が発生したかのように,ソフトウェア131に遷移する。
In
ソフトウェア131に遷移すると,ソフトウェア131は,非同期事象581が入力された後のソフトウェア130の動作と同一の動作を行うため,処理512において,ソフトウェア130が処理502において出力しようとしたI/Oコマンド1と同一のI/Oコマンド1を出力しようとするが,ハイパバイザ133の働きにより,実際には出力されず,ハイパバイザ133への遷移が発生する。
When the transition is made to the
ハイパバイザ133では,処理556において,ソフトウェア130が処理502において出力しようとしたI/Oコマンド1の内容と,ソフトウェア131が処理512において出力しようとしたI/Oコマンド1の内容を比較し,一致していれば,処理557において,I/Oコマンド1を出力する。
The
ここで,図4で説明したVMの同期処理のみの場合では,仮想計算機122での処理402において,I/Oコマンド1は即座に出力されるが,図5に示した本実施例の処理では,仮想計算機122での処理502,仮想計算機123での処理512を契機として,ハイパバイザ132,133によって比較され,処理557でI/Oコマンド1が出力されることに注目されたい。
Here, in the case of only the VM synchronization process described with reference to FIG. 4, the I /
また,ここまでのソフトウェア131の動作,具体的には,処理555の直後から開始され,処理512で中断されるまでの間の動作は,ソフトウェア130の,処理551の直後から開始され,処理502で中断されるまでの間の動作と同一である。
Further, the operation of the
物理計算機120に非同期事象582が入力されると,同様に,処理503でそれを受理して,ハイパバイザ132に遷移し,ハイパバイザ132が,処理558で,受理した非同期事象582の情報と,それを受理した際のソフトウェア130の実行位置の情報を,イベント送信チャネル160を通じてハイパバイザ133に送信し,ソフトウェア130に遷移する。
When an
ハイパバイザ133は,ハイパバイザ132が処理558で送信した,非同期事象582の情報と,それを受理した際のソフトウェア130の実行位置の情報を,処理559において受信する。
In
ハイパバイザ133は,処理560で,処理559にて受信した,非同期事象582を受理した際のソフトウェア130の実行位置の情報から,その位置でソフトウェア131の実行が停止し,ハイパバイザ133への遷移が発生するように物理計算機121を設定して,ソフトウェア131に遷移する。
In
ソフトウェア131に遷移すると,ソフトウェア131は,I/Oコマンド1を出力しようとした後のソフトウェア130の動作と同一の動作を行い,やがて,ハイパバイザ133が,処理560において物理計算機121に設定した停止位置に到達し,処理513において,ハイパバイザ133への遷移が発生する。
When transitioning to the
ここまでのソフトウェア131の動作,具体的には,処理560の直後から開始され,処理513にて中断されるまでの間の動作は,ソフトウェア130の,処理553の後から開始され,処理503で中断されるまでの間の動作と同一である。
The operation of the
一方,ソフトウェア130は,ハイパバイザ132の処理558の後に処理を継続しており,処理504でI/Oデータ1をメモリに書き込み,処理505でI/Oデータ2をメモリに書き込み,処理506において,DMA読み出し起動のI/Oコマンド2の出力が実行されようとすると,ハイパバイザ132に遷移し,ハイパバイザ132が,処理561で,ソフトウェア130が実行しようとしたI/Oコマンド2の内容と,その際のソフトウェア130の実行位置の情報を,イベント送信チャネル160を通じてハイパバイザ133に送信し,ソフトウェア130に遷移する。
On the other hand, the
ハイパバイザ133は,ハイパバイザ132が処理561で送信した,ソフトウェア130の処理506で実行されようとしたDMA読み出し起動のI/Oコマンド2の内容と,その際のソフトウェア130の実行位置の情報を,処理562において受信する。
The hypervisor 133 processes the contents of the DMA read activation I /
ハイパバイザ133は,処理563で,処理559にて受信した非同期事象582の情報から,仮想的な非同期事象592を設定し,あたかも仮想計算機123に非同期事象592が入力され,それを受理し,ソフトウェア131内の遷移が発生したかのように,ソフトウェア131に遷移する。
In
ソフトウェア131に遷移すると,ソフトウェア131は,非同期事象582が入力された後のソフトウェア130の動作と同一の動作を行うため,処理514と515において,ソフトウェア130が処理504と505においてメモリに書き込むI/Oデータ1,2と同一のI/Oデータをメモリに書き込む。
When the transition is made to the
その後に,ソフトウェア131は,処理516において,ソフトウェア130が処理506において出力しようとした,DMA読み出し起動のI/Oコマンド2と同一のI/Oコマンド2を出力しようとするが,ハイパバイザ133の働きにより,実際には出力されず,ハイパバイザ133への遷移が発生する。
Thereafter, the
ハイパバイザ133では,処理564において,ソフトウェア130が処理506において出力しようとしたDMA読み出し起動のI/Oコマンド2の内容と,ソフトウェア131が処理516において出力しようとしたDMA読み出し起動のI/Oコマンド2の内容を比較する。
In the
次に,処理565において,I/Oデータ比較部146の要求送信部147を通じて,I/Oスイッチ104の要求受信部116に対して,I/Oデータ出力イベント通知191と,I/Oデータバッファ114の物理アドレス情報192,I/Oデータバッファ115の物理アドレス情報193を送信する。
Next, in
I/Oスイッチ104のDMA読み出し部301と,I/Oデータバッファ比較部302は,ハイパバイザ133の処理565を契機として,動作571でI/Oデータ比較を開始し,動作572で,ソフトウェア130が処理504,505でI/Oデータバッファ114に書き込んだI/Oデータ1,2と,ソフトウェア131が処理514,515でI/Oデータバッファ115に書き込んだI/O1,2を読み込んで比較し,動作573のI/Oデータ比較終了する。
The
ハイパバイザ133は,処理566において,I/Oデータ比較部146の応答受信部148を通じて,I/Oスイッチ104の応答送信部117から,比較結果194を受信し,一致していれば,処理567において,DMA読み出し起動のI/Oコマンド2を出力する。
In
ここでも,図4で説明したVMの同期処理のみでは,仮想計算機122の処理406において即座に出力されていた,DMA読み出し起動のI/Oコマンド2が,図5に示した本実施例の処理では,仮想計算機122での処理506,仮想計算機123での処理516を契機として,ハイパバイザ132,133,およびI/Oスイッチ104のDMA読み出し部301と,I/Oデータバッファ比較部302によって比較され,処理567でI/Oコマンド2が出力されることに注目されたい。
Here, the DMA read activation I /
また,ここまでのソフトウェア131の動作,具体的には,処理563の直後から開始され,処理514,515を実行し,処理516で中断されるまでの間の動作は,ソフトウェア130の,処理558の後から開始され,処理504,505を実行し,処理506で中断されるまでの間の動作と同一である。
The operation of the
図6は,本実施例における、ハイパバイザによるVMの同期,およびI/Oイベント出力比較処理の流れのうち,特に,プロセッサ故障が発生して,図5に示したプロセッサ故障発生しないケースでの処理502において出力されようとするI/Oコマンド1が,変化した場合の流れを示す図である。
FIG. 6 shows the processing in the case where a processor failure occurs and the processor failure does not occur as shown in FIG. 5 in the flow of VM synchronization and I / O event output comparison processing by the hypervisor in this embodiment. It is a figure which shows the flow when the I /
この例では,ソフトウェア130は,非同期事象681が物理計算機120に入力されて処理601でそれを受理し,その後,処理602でI/Oコマンド1を出力するが,プロセッサ故障621が発生し,処理602で出力されるI/Oコマンド1が誤ったコマンドに変化する。
In this example, the
ソフトウェア130の動作のうち,非同期事象の受理である処理601,およびI/Oコマンドの出力である処理602については,前述と同様,ハイパバイザ132への遷移が発生する。
Among the operations of the
物理計算機120に非同期事象681が入力されると,処理601でそれを受理して,ハイパバイザ132に遷移し,ハイパバイザ132が,処理651で,受理した非同期事象681の情報と,それを受理した際のソフトウェア130の実行位置の情報を,イベント送信チャネル160を通じてハイパバイザ133に送信し,ソフトウェア130に遷移する。
When the
ソフトウェア130の処理602で,I/Oコマンド1出力が実行されようとすると,ハイパバイザ132に遷移し,ハイパバイザ132が,処理653で,ソフトウェア130が実行しようとしたI/Oコマンド1の内容と,その際のソフトウェア130の実行位置の情報を,イベント送信チャネル160を通じてハイパバイザ133に送信し,ソフトウェア130に遷移する。
When the I /
ここで,処理653において送信されるI/Oコマンド1の内容は,プロセッサ故障621の影響によって,本来出力されるべきI/Oコマンド1の内容とは異なっていることに留意されたい。
Here, it should be noted that the content of the I /
ハイパバイザ133は,ハイパバイザ132が処理651で送信した,非同期事象681の情報と,それを受理した際のソフトウェア130の実行位置の情報を,処理652において受信する。
In
また,ハイパバイザ133は,ハイパバイザ132が処理653で送信した,ソフトウェア130の処理602で実行されようとした,本来の内容とは異なるI/Oコマンド1の内容と,その際のソフトウェア130の実行位置の情報を,処理654において受信する。
Further, the
ハイパバイザ133は,処理655で,処理652にて受信した非同期事象681の情報から,仮想的な非同期事象691を設定し,あたかも仮想計算機123に非同期事象691が入力され,それを受理し,ソフトウェア131内の遷移が発生したかのように,ソフトウェア131に遷移する。
In
ソフトウェア131に遷移すると,ソフトウェア131は,非同期事象681が入力された後のソフトウェア130の動作と同一の動作を行うため,処理612において,プロセッサ故障621が発生しなかった場合に,ソフトウェア130が処理602において出力しようとしたI/Oコマンド1と同一のI/Oコマンドを出力しようとし,ハイパバイザ133の働きにより,実際には出力されず,ハイパバイザ133への遷移が発生する。
When the transition to the
ここで,処理612においてソフトウェア131が出力しようとするI/Oコマンド1の内容は,本来出力されるべきI/Oコマンド1の内容であることに留意されたい。
Here, it should be noted that the content of the I /
ハイパバイザ133では,処理656において,ソフトウェア130が処理602において出力しようとした,本来の内容とは異なるI/Oコマンド1と,ソフトウェア131が処理612において出力しようとした本来のI/Oコマンド1の内容を比較し,不一致を発見する。
In the
その後,ハイパバイザ133は,処理657において,イベント送信チャネル160を通じて,ハイパバイザ132にVM停止通知を送信し,処理659においてI/Oコマンド1の出力を抑止し,以後,仮想計算機123の回復処理に入る。また,ハイパバイザ132は,処理658において,イベント送信チャネル160を通じて,ハイパバイザ133からVM停止通知を受信し,以後,仮想計算機122の回復処理に入る。なお、この回復処理としては、例えば自己診断等の処理が挙げられる。
Thereafter, the
図7は,本実施例における、ハイパバイザによるVMの同期,およびI/Oイベント出力比較処理の流れのうち,特に,プロセッサ故障が発生して,図5に示したプロセッサ故障が発生しないケースでの処理505において出力されようとするI/Oデータ2が,変化した場合の流れを示す図である。
FIG. 7 shows a case where a processor failure occurs and the processor failure shown in FIG. 5 does not occur in the flow of VM synchronization and I / O event output comparison processing by the hypervisor in this embodiment. It is a figure which shows the flow when the I /
この例では,ソフトウェア130は,非同期事象782が物理計算機120に入力されて処理703でそれを受理し,その後,処理704でI/Oデータ1をメモリに書き込み,処理705でI/Oデータ2をメモリに書き込むが,プロセッサ故障721が発生し,処理705で書き込まれるI/Oデータ2は誤ったデータに変化しており,その後に,処理706でDMA読み出し起動のI/Oコマンド2を出力する動作を行っている。
In this example, the
ソフトウェア130の動作のうち,非同期事象の受理である処理703,およびI/Oコマンドの出力である処理706については,前述と同様,ハイパバイザ132への遷移が発生する。
Among the operations of the
物理計算機120に非同期事象782が入力されると,処理703でそれを受理して,ハイパバイザ132に遷移し,ハイパバイザ132が,処理758で,受理した非同期事象782の情報と,それを受理した際のソフトウェア130の実行位置の情報を,イベント送信チャネル160を通じてハイパバイザ133に送信し,ソフトウェア130に遷移する。
When an
ハイパバイザ133は,ハイパバイザ132が処理758で送信した,非同期事象782の情報と,それを受理した際のソフトウェア130の実行位置の情報を,処理759において受信する。
In
ハイパバイザ133は,処理760で,処理759にて受信した,非同期事象782を受理した際のソフトウェア130の実行位置の情報から,その位置でソフトウェア131の実行が停止し,ハイパバイザ133への遷移が発生するように物理計算機121を設定して,ソフトウェア131に遷移する。
In
ソフトウェア131に遷移すると,ソフトウェア131は,ソフトウェア130の処理703までの動作と同一の動作を行い,やがて,ハイパバイザ133が,処理760において物理計算機121に設定した停止位置に到達し,処理713において,ハイパバイザ133への遷移が発生する。
When transitioning to the
一方,ソフトウェア130は,ハイパバイザ132の処理758の後に処理を継続しており,処理704でI/Oデータ1をメモリに書き込み,処理705でI/Oデータ2をメモリに書き込み,処理706において,DMA読み出し起動のI/Oコマンド2の出力が実行されようとすると,ハイパバイザ132に遷移し,ハイパバイザ132が,処理761で,ソフトウェア130が実行しようとしたI/Oコマンド2の内容と,その際のソフトウェア130の実行位置の情報を,イベント送信チャネル160を通じてハイパバイザ133に送信し,ソフトウェア130に遷移する。
On the other hand, the
ここで,処理705によってメモリに書き込まれるI/Oデータ2の内容は,プロセッサ故障721の影響によって,本来書き込まれるべきI/Oデータ2の内容とは異なっていることに留意されたい。
Here, it should be noted that the content of the I /
ハイパバイザ133は,ハイパバイザ132が処理761で送信した,ソフトウェア130の処理706で実行されようとしたDMA読み出し起動のI/Oコマンド2の内容と,その際のソフトウェア130の実行位置の情報を,処理762において受信する。
The hypervisor 133 processes the contents of the DMA read activation I /
ハイパバイザ133は,処理763で,処理759にて受信した非同期事象782の情報から,仮想的な非同期事象792を設定し,あたかも仮想計算機123に非同期事象792が入力され,それを受理し,ソフトウェア131内の遷移が発生したかのように,ソフトウェア131に遷移する。
In
ソフトウェア131に遷移すると,ソフトウェア131は,非同期事象782が入力された後のソフトウェア130の動作と同一の動作を行うため,処理714と715において,プロセッサ故障721が発生しなかった場合に,ソフトウェア130が処理704と705においてメモリに書き込むI/Oデータ1,2と同一のI/Oデータをメモリに書き込む。
When the transition is made to the
ここで,処理715においてソフトウェア131がメモリに書き込むI/Oデータ2の内容は,本来書き込まれるべきI/Oデータ2の内容であることに留意されたい。
Here, it should be noted that the content of the I /
その後に,ソフトウェア131は,処理716において,ソフトウェア130が処理706において出力しようとした,DMA読み出し起動のI/Oコマンド2と同一のI/Oコマンドを出力しようとするが,ハイパバイザ133の働きにより,実際には出力されず,ハイパバイザ133への遷移が発生する。
After that, the
ハイパバイザ133では,処理764において,ソフトウェア130が処理706において出力しようとしたDMA読み出し起動のI/Oコマンド2の内容と,ソフトウェア131が処理716において出力しようとしたDMA読み出し起動のI/Oコマンド2の内容を比較する。
In the
次に,処理765において,I/Oデータ比較部146の要求送信部147を通じて,I/Oスイッチ104の要求受信部116に対して,I/Oデータ出力イベント通知191と,I/Oデータバッファ114の物理アドレス情報192,I/Oデータバッファ115の物理アドレス情報193を送信する。
Next, in processing 765, the I / O data
I/Oスイッチ104のDMA読み出し部301と,I/Oデータバッファ比較部302は,ハイパバイザ133の処理765を契機として,動作771でI/Oデータ比較を開始し,動作772で,ソフトウェア130が処理704,705でI/Oデータバッファ114に書き込んだI/Oデータ1,2と,ソフトウェア131が処理714,715でI/Oデータバッファ115に書き込んだI/O1,2を読み込んで比較し,不一致を発見して,動作773でI/Oデータ比較終了し,結果を送信する。
The DMA read
ハイパバイザ133は,処理766において,I/Oデータ比較部146の応答受信部148を通じて,I/Oスイッチ104の応答送信部117から,比較結果194を受信し,不一致であるため,処理767において,イベント送信チャネル160を通じて,ハイパバイザ132にVM停止通知を送信し,以後,仮想計算機123の上述した回復処理に入る。
In
また,ハイパバイザ132は,処理768において,イベント送信チャネル160を通じて,ハイパバイザ133からVM停止通知を受信し,以後,仮想計算機122の上述した回復処理に入る。
図8は,本実施例における、仮想化制御部であるハイパバイザ133内の物理アドレス変換部152の処理フローである。
In
FIG. 8 is a processing flow of the physical
物理アドレス変換部152は,前述の通り,I/Oデータ出力イベント仮想アドレス情報211,212を入力として受け取り,I/Oデータ出力イベント物理アドレス情報231,232を出力する。
As described above, the physical
ここで,ステップ801に始まり,ステップ820で終わる一連の処理は,1回の処理実行で,1個のI/Oデータ出力イベント仮想アドレス情報の入力に対して,1個のI/Oデータ出力イベント物理アドレス情報の出力を得るものであり,211,212の2個のI/Oデータ出力イベント仮想アドレス情報の入力に対しては,2回処理が実行されることに注意されたい。
Here, a series of processes starting at
入力であるI/Oデータ出力イベント仮想アドレス情報は,具体的には,複数の,仮想アドレスでの開始アドレスとサイズの対で表現されるが,ここでは,対の個数をVblkmax,iを0からVblkmax−1までの間の値として,i番目の開始アドレスとサイズを,それぞれ,Vblkstart[i],Vblksize[i]と表記する。 Specifically, the input I / O data output event virtual address information is expressed by a plurality of pairs of start address and size in the virtual address. Here, the number of pairs is Vblkmax, and i is 0. The i-th start address and the size are expressed as Vblkstart [i] and Vblksize [i], respectively, as values between 1 and Vblkmax−1.
また,出力であるI/Oデータ出力イベント物理アドレス情報は,複数の,物理アドレスでの開始アドレスとサイズの対で表現されるが,ここでは,対の個数をPblkmax,iを0からPblkmax−1までの間の値として,i番目の開始アドレスとサイズを,それぞれ,Pblkstart[i],Pblksize[i]と表記する。 The output I / O data output event physical address information is represented by a plurality of pairs of start addresses and sizes of physical addresses. Here, the number of pairs is Pblkmax, and i is from 0 to Pblkmax−. As the values between 1, the i-th start address and the size are expressed as Pblkstart [i] and Pblksize [i], respectively.
ステップ801,802は初期設定であり,Vblk,Pblkは,それぞれ,現在,何番目のI/Oデータ出力イベント仮想アドレス情報対,物理アドレス情報対の処理を進めているかを表す変数であり,tmpPblkstとtmpPblkszは,現在処理を進めている物理アドレス情報対のテンポラリ変数である。
ステップ803は,新しいI/Oデータ出力イベント仮想アドレス情報対に処理を進める度に行われる初期設定で,Vblkstart[Vblk]とVblksize[Vblk]を,テンポラリ変数であるtmpVblkstとtmpVblkszに,それぞれ格納している。
In
ステップ804からは,1個のI/Oデータ出力イベント仮想アドレス情報対の範囲の処理が終わるまで繰り返される処理である。ステップ804では,tmpVblkstの仮想アドレスに対応する仮想ページ番号(Vpnum),ページ先頭からのオフセット(offset),ページサイズ(pagesize)を求めている。
From
ステップ805,806,807では,今回のVpnumに対応する物理ページ番号(Ppnum)への変換処理で,tmpVblkstとtmpVblkszの仮想アドレス情報対が表す領域のうち,変換対象となった部分のサイズ(size)を算出している。pagesizeからoffsetを引いた分が変換対象となり得る部分のサイズだが,ステップ805にて比較処理を行い,tmpVblkszが小さいならば,ステップ807に分岐し,sizeをtmpVblkszとする。等しいか大きいならば,sizeはpagesize−offsetとする。
In
ステップ808では,Vpnumに対応するPpnumを求めているが,この処理は,アドレス変換部143を呼び出すことで行っている。
In
ステップ809では,Ppnumの物理ページの先頭アドレスにoffsetを加算して,変換対象となった物理アドレスの領域の先頭アドレス(Pstart)を求めている。
In
ステップ810から815では,今回変換対象となった物理アドレスの領域から,前回までの変換処理の結果が反映されているtmpPblkst,tmpPblkszを更新する処理を行っている。
In
ステップ811への分岐のケースは,初回の処理の場合で,Pblkに1を加算し,tmpPblkst,tmpPblkszにはそれぞれ,Pstart,sizeをそのまま格納している。
ステップ813への分岐のケースは,前回までの変換処理の物理アドレスの領域の末尾と,今回変換対象となった物理アドレス領域の先頭が一致している場合で,この場合はtmpPblkszにsizeを加算している。
The case of branching to step 811 is the case of the first processing, in which 1 is added to Pblk, and Pstart and size are stored as they are in tmpPblkst and tmpPblksz, respectively.
The case of branching to step 813 is when the end of the physical address area of the previous conversion process and the start of the physical address area to be converted this time match. In this case, add size to tmpPblksz doing.
ステップ814,815への分岐のケースは,前回までの変換処理の物理アドレスの領域の末尾と,今回変換対象となった物理アドレス領域の先頭が一致していない場合で,この場合は,ステップ814で前回までの変換結果を,Pblk番目のI/Oデータ出力イベント物理アドレス情報対に格納し,ステップ815でPblkに1を加算した上で,tmpPblkst,tmpPblkszにはそれぞれ,Pstart,sizeをそのまま格納している。
The case of branching to
ステップ816では,今回変換対象となった部分をtmpVblkstとtmpVblkszの仮想アドレス情報対が表す領域から除く処理を行っている。具体的には,tmpVblkstにsizeを加算し,tmpVblkszからsizeを減算している。
In
ステップ817では,tmpVblkstとtmpVblkszの仮想アドレス情報対が表す領域が全て変換されたかを判定している。tmpVblkszが0より大きい場合は,まだ変換する部分が残っているため,ステップ804に戻る。
In
ステップ818では,次のI/Oデータ出力イベント仮想アドレス情報対に処理を進めている。Vblkに1を加算している。
In
ステップ819では,全てのI/Oデータ出力イベント仮想アドレス情報対が処理されたかを判定しており,VblkがVblkmaxと等しいか大きい場合は,まだ変換する仮想アドレス情報対が残っているため,ステップ803に戻る。
In
ステップ820では,最後の変換結果をPblk番目のI/Oデータ出力イベント物理アドレス情報対に格納し,Pblkの値をPblkmaxに格納している。
In
以上のように,ハイパバイザ132が,物理計算機120に入力される非同期事象について,その事象の情報と,それによって引き起こされたソフトウェア130の遷移の情報をハイパバイザ133に送信し,ハイパバイザ133が,その情報をもとに,ソフトウェア131にもその非同期事象を再現することに加えて,さらに,ハイパバイザ132が,ソフトウェア130のI/Oイベントの情報をハイパバイザ133に送信し,ハイパバイザ133が,その情報と,ソフトウェア131のI/Oイベントの情報を比較することによって,VMを同期実行しつつ,I/Oイベント出力比較処理を行い,プロセッサ故障を検出することが可能となる。
As described above, for the asynchronous event input to the
図9は,第二の実施例の全体構成を示す図である。実施例1においては、系A,Bからなるコンピュータシステムについて説明したが、本実施例は系A,B,Cからなるコンピュータシステムの実施例である。左側が系Aを構成する物理計算機A、中央が系Bを構成する物理計算機B、右側が系Cを構成する物理計算機Cを示しているが、図面より明らかなため、以後の説明において、系A,B,Cの表記は省略する。 FIG. 9 is a diagram showing the overall configuration of the second embodiment. In the first embodiment, the computer system including the systems A and B has been described. However, the present embodiment is an embodiment of the computer system including the systems A, B, and C. The left side shows the physical computer A constituting the system A, the center shows the physical computer B constituting the system B, and the right side shows the physical computer C constituting the system C. The notation of A, B, and C is omitted.
同図において、900,901,902はプロセッサ,903,904,905はメモリ,908,909はI/Oデバイスであり,915,916,917は,プロセッサ,メモリ,I/Oデバイスによって構成される物理計算機である。 In the figure, 900, 901 and 902 are processors, 903, 904 and 905 are memories, 908 and 909 are I / O devices, and 915, 916 and 917 are constituted by processors, memories and I / O devices. It is a physical computer.
プロセッサ900,901,902とI/Oデバイス908,909がI/Oスイッチ907を介して接続されることにより,物理計算機とI/Oデバイスの間は接続が共有されており,プロセッサ900,メモリ903,I/Oスイッチ907により,物理計算機915が,プロセッサ901,メモリ904,I/Oスイッチ907により,物理計算機916が,プロセッサ902,メモリ905,I/Oスイッチ907により,物理計算機917がそれぞれ構成され,I/Oデバイス908,909は物理計算機915,916,917と接続される。
By connecting the
910,911,912はPCI Express Busによる物理的な接続であり,プロセッサ900,901,902,メモリ903,904,905とI/Oスイッチ907が,PCI Express Bus910によって,また,I/Oスイッチ907とI/Oデバイス908がPCI Express Bus911によって,さらに,I/Oスイッチ907とI/Oデバイス909がPCI Express Bus912によって,それぞれ接続されている。
910, 911, and 912 are physical connections by PCI Express Bus, and the
936,937,938はハイパバイザのプログラムであり,物理計算機915,916,917でそれぞれ動作することにより,VM930,931,932が生成される。
936, 937, and 938 are hypervisor programs, and
メモリ903は,ハイパバイザ936の働きにより,VM930が利用するメモリ領域920と,ハイパバイザ936が利用するメモリ領域923に分割される。このとき,VM930でのアドレス空間と,物理計算機915でのアドレス空間の対応は,ハイパバイザ936内の,特にアドレス変換部941よって管理される。
The
同様に,メモリ904は,ハイパバイザ937の働きにより,VM931が利用するメモリ領域921と,ハイパバイザ937が利用するメモリ領域924に分割され,VM931でのアドレス空間と,物理計算機916でのアドレス空間の対応は,ハイパバイザ937内のアドレス変換部943によって管理され,メモリ905は,ハイパバイザ938の働きにより,VM932が利用するメモリ領域922と,ハイパバイザ938が利用するメモリ領域925に分割され,VM932でのアドレス空間と,物理計算機917でのアドレス空間の対応は,ハイパバイザ938内のアドレス変換部945によって管理される。
Similarly, the
VM930,931,932内においては,それぞれ,ソフトウェア933,934,935が動作するが,ハイパバイザ936の同期処理部940から,ハイパバイザ937の同期処理部942に,イベント送信チャネル957を通じて情報が送信され,また,ハイパバイザ936の同期処理部940から,ハイパバイザ938の同期処理部944に,イベント送信チャネル958を通じて情報が送信されることにより,ソフトウェア933,934,935の動作は,ソフトウェアレベルで同一である。
イベント送信チャネル957は,物理計算機915と916間でのデータの送受信を論理的に示したものであり,物理的には,I/Oスイッチ907を介した通信である。また,イベント送信チャネル958,959も,同様に,物理計算機915,917間,および物理計算機916,917間でのデータの送受信を論理的に示したものであり,物理的には,I/Oスイッチ907を介した通信である。
The
ソフトウェア933が実行されると,I/Oイベント960が発生するが,プロセッサ900が有する機構の働きにより,I/Oイベント960はハイパバイザ936にトラップされ,同期処理部940に入力される。
When the
同期処理部940は,発生したI/Oイベント960の情報を,イベント送信チャネル958を通じて,ハイパバイザ938の同期処理部944に送信する。
The
また,ソフトウェア934が実行されると,I/Oイベント961が発生するが,プロセッサ901が有する機構の働きにより,I/Oイベント961はハイパバイザ937にトラップされ,同期処理部942に入力され,同期処理部942は,発生したI/Oイベント961の情報を,イベント送信チャネル959を通じて,ハイパバイザ938の同期処理部944に送信する。
When the
同期処理部944は,受信したI/Oイベント960,961の情報を,ソフトウェア933,934,935の動作をソフトウェアレベルで同一にする処理に用いる他に,I/Oイベント963,964として,同じくハイパバイザ938内のI/Oイベント検出部946に出力する。
The
また,ソフトウェア935の実行により発生するI/Oイベント962は,プロセッサ902が有する機構の働きにより,ハイパバイザ938にトラップされ,I/Oイベント検出部946に入力される。
Further, an I /
I/Oイベント検出部946では,VM930側のI/Oイベント963の種類を解析し,特に,I/Oコマンドを出力するイベントと,I/Oデータを出力するイベントについて,それぞれI/Oコマンド出力イベント965と,I/Oデータ出力イベント966として,I/Oイベント処理部947に出力する。
The I / O
また,I/Oイベント検出部946は,VM931側のI/Oイベント964の種類を解析し,I/Oコマンド出力イベント967と,I/Oデータ出力イベント968を,I/Oイベント処理部947に出力し,VM932側のI/Oイベント962の種類を解析し,I/Oコマンド出力イベント969と,I/Oデータ出力イベント970を,I/Oイベント処理部947に出力する。
Further, the I / O
I/Oイベント処理部947は,I/Oコマンド出力イベント965,967,969について,I/Oコマンドの内容を比較し,一致していれば,I/Oスイッチ907との間で,I/Oコマンド990として送受信を行う。
The I / O
I/Oスイッチ907は,I/Oコマンド990を,その送受信先に応じて,I/Oデバイス908,あるいはI/Oデバイス909に,それぞれI/Oコマンド981,982として送受信することにより,I/Oコマンド出力イベント965,967,969は,I/Oデバイス908,あるいは909に出力される。
The I /
また,I/Oイベント処理部947は,I/Oデータ出力イベント966,968,970について,I/Oデータの内容を比較し,その結果に基づいて,I/Oコマンド990として,I/Oデバイス908,あるいは909のDMAに読み出しコマンドを送信する。
Further, the I / O
I/Oデータ出力イベント966でのI/Oデータは,ソフトウェア933のI/Oデータ書き込み971によって,I/Oデータ出力イベント966に先立って,VM930が利用するメモリ領域920内の,I/Oデータバッファ926に書き込まれている。
The I / O data at the I / O
また,I/Oデータ出力イベント968でのI/Oデータは,ソフトウェア934のI/Oデータ書き込み972によって,I/Oデータ出力イベント968に先立って,VM931が利用するメモリ領域921内の,I/Oデータバッファ927に,I/Oデータ出力イベント970でのI/Oデータは,ソフトウェア935のI/Oデータ書き込み973によって,I/Oデータ出力イベント970に先立って,VM932が利用するメモリ領域922内の,I/Oデータバッファ928に,それぞれ書き込まれている。
Also, the I / O data at the I / O
I/Oイベント処理部947には,特に,I/Oデータ出力比較部948があり,I/Oデータ出力イベント966の情報から,I/Oデータバッファ926のVM930のアドレス空間でのアドレスを特定し,さらに,VM930のアドレス空間でのアドレスから,物理計算機915のアドレス空間でのアドレスに変換する。
In particular, the I / O
同様に,I/Oデータ出力比較部948では,I/Oデータ出力イベント968の情報から,I/Oデータバッファ927のVM931のアドレス空間でのアドレスを特定し,さらに,VM931のアドレス空間でのアドレスから,物理計算機916のアドレス空間でのアドレスに変換する。
Similarly, the I / O data
同様に,I/Oデータ出力比較部948では,I/Oデータ出力イベント970の情報から,I/Oデータバッファ928のVM932のアドレス空間でのアドレスを特定し,さらに,VM932のアドレス空間でのアドレスから,物理計算機917のアドレス空間でのアドレスに変換する。
Similarly, the I / O data
続いてI/Oデータ出力比較部948は,I/Oデータ出力イベント通知991と,I/Oデータ出力イベント966に対応するI/Oデータバッファ926の物理計算機915のアドレス空間でのアドレス情報である,物理アドレス情報992と,I/Oデータ出力イベント968に対応するI/Oデータバッファ927の物理計算機916のアドレス空間でのアドレス情報である,物理アドレス情報993と,I/Oデータ出力イベント970に対応するI/Oデータバッファ928の物理計算機917のアドレス空間でのアドレス情報である,物理アドレス情報994を,I/Oスイッチ907に対する要求送信部949を通じて,I/Oスイッチ907の要求受信部913に,それぞれ送信する。
Subsequently, the I / O data
I/Oスイッチ907の要求受信部913が,I/Oデータ出力イベント通知991,物理アドレス情報992,993,994を受信すると,I/Oスイッチ907は,I/Oデータバッファ926,927,928の内容を,それぞれDMAデータ読み出し985,986,987として,それぞれメモリ903,904,905から直接読み出して比較し,比較結果995を,I/Oデータ出力イベント比較部948への応答送信部914を通じて,I/Oデータ出力比較部948の応答受信部950に送信する。
When the
ここで,I/Oコマンド990,およびI/Oデータ出力イベント通知991,物理アドレス情報992,993,994,比較結果995は,PCI Express Bus910上での,I/Oコマンド980の送受信として,同様のバスシーケンスにて実行されるものである。
Here, the I /
また,DMAデータ読み出し985,986,987は,PCI Express Bus910上での,DMAデータ読み出し984として,同様のバスシーケンスで実行されるものである。
The DMA data read 985, 986, and 987 are executed in the same bus sequence as the DMA data read 984 on the
I/Oデータ出力比較部948は,I/Oデータバッファ926,927,928の比較結果を,応答受信部950を通じて受信し,その結果に基づいて,I/Oコマンド990として,I/Oデバイス908,あるいは909に,DMA読み出しコマンドを送信する。
The I / O data
I/Oデバイス908,あるいは909が,DMA読み出しコマンドを受信すると,DMAデータ読み出し988,あるいは989として,I/Oスイッチ907に対して読み出しを行う。I/Oスイッチ907は,DMAデータ読み出し988,989を,その読み出し先に応じて,DMAデータ読み出し985,986,987として,それぞれメモリ903,904,905から読み出して,DMAデータ読み出し988,989の読み出し結果を返すことにより,結果としてI/Oデータ出力イベント966,968,970は,I/Oデバイス908,あるいは909に出力される。
When the I /
図10は,図9に示した実施例2のシステムの物理計算機917上で動作するハイパバイザ938の構成の詳細を示す図である。
FIG. 10 is a diagram showing details of the configuration of the
ハイパバイザ938には,同期処理部944,アドレス変換部945,I/Oイベント検出部946,I/Oイベント処理部947があり,I/Oイベント処理部947には,I/Oデータ出力比較部948があり,I/Oデータ出力比較部948には,I/Oスイッチ907に対する要求送信部949,応答受信部950があることは先に述べたが,加えて,ハイパバイザ938のI/Oイベント処理部947には,I/Oコマンド出力比較部951,I/Oコマンド出力訂正部952,DMA訂正部955があり,I/Oデータ出力比較部948には,仮想アドレス特定部953と,物理アドレス変換部954がある。なお、本実施例においても,先の実施例同様,I/Oコマンド出力訂正部952とDMA訂正部955とを総称して抑止部と呼ぶ場合がある。以下に説明するように,実施例1と同様に訂正機能に加え,抑止機能を有するからである。
The
I/Oコマンド出力比較部951は,I/Oイベント検出部946からのI/Oコマンド出力イベント965,967,969のI/Oコマンドの内容を比較し,その結果をI/Oコマンド比較結果1001として,I/Oコマンド出力訂正部952に出力する。
The I / O command
I/Oコマンド出力訂正部952は,I/Oイベント検出部946からのI/Oコマンド出力イベント965,967,969をI/Oコマンド990として送受信するが,I/Oコマンド比較結果1001が不一致を示している場合,特に,I/Oコマンド出力イベント965,967,969の3つのI/Oコマンドの内容のうち,2つが一致している場合は,一致している2つのI/Oコマンド出力イベントに対応するI/Oコマンド送受信を行い,3つとも一致しない場合は,I/Oコマンド送受信を抑止する。
The I / O command
I/Oデータ出力比較部948の仮想アドレス特定部953は,I/Oイベント検出部946からのI/Oデータ出力イベント966,968,970の情報から,I/Oデータバッファ926のVM930のアドレス空間でのアドレスと,I/Oデータバッファ927のVM931のアドレス空間でのアドレス,I/Oデータバッファ928のVM932のアドレス空間でのアドレスを特定し,その結果をI/Oデータ出力イベント仮想アドレス情報1011,1012,1013として,物理アドレス変換部954に出力する。
The virtual address specifying unit 953 of the I / O data
物理アドレス変換部954は,I/Oデータ出力イベント仮想アドレス情報1011に基づいて,アドレス変換部945のページテーブルサイズ毎に,仮想ページ番号1021をアドレス変換部945に入力し,アドレス変換部945から,対応する物理ページ番号1022を入力することによって,I/Oデータバッファ926の物理計算機915のアドレス空間でのアドレスに変換し,その結果を,I/Oデータ出力イベント物理アドレス情報1031として,要求送信部949に出力する。
The physical
また,物理アドレス変換部954は,同様にして,I/Oデータバッファ927の物理計算機916のアドレス空間でのアドレスを,I/Oデータ出力イベント物理アドレス情報1032として,また,I/Oデータバッファ928の物理計算機917のアドレス空間でのアドレスを,I/Oデータ出力イベント物理アドレス情報1033として,要求送信部949に出力する。
Similarly, the physical
要求送信部949は,I/Oイベント検出部946からのI/Oデータ出力イベント966,968,970の入力と,物理アドレス変換部954からのI/Oデータ出力イベント物理アドレス情報1031,1032,1033の入力から,I/Oデータ出力イベント通知991,物理アドレス情報992,993,994をI/Oスイッチ907の要求受信部913に送信する。
The
応答受信部950は,比較結果995をI/Oスイッチ907の応答送信部914から受信し,その結果をI/Oデータ比較結果1041として,DMA訂正部955に出力する。
The
DMA訂正部955は,I/Oイベント検出部946からのI/Oデータ出力イベント966,968,970に含まれるI/Oデバイス908,あるいは909へのDMA読み出しコマンドをI/Oコマンド990として送信するが,I/Oデータ比較結果1041が不一致を示している場合,特に,I/Oデータ出力イベント966,968,970の3つのI/Oデータの内容のうち,2つが一致している場合は,一致している2つのI/Oデータ出力イベントに対応するDMA読み出しコマンドを送信し,3つとも一致しない場合は,対応するI/Oデータ出力イベント966,968,970のDMA読み出しコマンド送信を抑止する。
The
図11は,図9に示した実施例2のシステムのI/Oスイッチ907の構成の詳細を示す図である。
FIG. 11 is a diagram illustrating details of the configuration of the I /
I/Oスイッチ907は,PCI Express Bus910によってプロセッサ900,901,902と,PCI Express Bus911によってI/Oデバイス908と,PCI Express Bus912によってI/Oデバイス909と,それぞれ接続され,I/Oコマンド980の送受信を,I/Oデバイス908にI/Oコマンド981として送受信し,あるいは,I/Oデバイス909にI/Oコマンド982として送受信し,また,I/Oデバイス908からのDMA読み出し988,あるいはI/Oデバイス909からのDMA読み出し989を,DMA読み出し984として読み出すが,これは,I/Oスイッチ907内のスイッチ回路1100の動作による。
The I /
また,I/Oスイッチ907には,I/Oデータ出力比較部948に対する要求受信部913,応答送信部914があることは先に述べたが,加えて,DMAデータ読み出し部1101と,I/Oデータバッファ比較部1102がある。
In addition, as described above, the I /
要求受信部913は,I/Oスイッチ907内で,スイッチ回路1100を通じてPCI Express Bus910と接続されており,I/Oデータ出力イベント通知991,物理アドレス情報992,993,994を,I/Oコマンド980として,I/Oデータ出力比較部948の要求送信部949から受信し,受信した内容をI/Oデータ出力イベント通知1111,I/Oデータバッファ926の物理アドレス情報1112,I/Oデータバッファ927の物理アドレス1113,I/Oデータバッファ928の物理アドレス1114として,DMAデータ読み出し部1101に出力する。
The
DMAデータ読み出し部1101は,I/Oデータ出力イベント通知1111,物理アドレス情報1112,1113,1114を受け取ると,I/Oデータバッファ926,927,928の物理アドレス情報1112,1113,1114をもとに,I/Oデータバッファ926,927,928へのDMAデータ読み出し985,986,987をそれぞれ行い,DMA読み出し結果1126,1127,1128を,I/Oデータバッファ比較部1102にそれぞれ出力する。
When the DMA
I/Oデータバッファ比較部1102は,DMAデータ読み出し部1101から入力されるDMA読み出し結果1126,1127,1128を順次比較し,比較結果1115を応答送信部914に出力する。
The I / O data
応答送信部914は,I/Oデータバッファ比較部1102からの比較結果1115を入力し,I/Oスイッチ907内で,スイッチ回路1100を通じてPCI Express Bus910と接続されており,比較結果995を,I/Oコマンド980として,I/Oデータ出力比較部の応答受信部950に送信する。
The
以上のように,ハイパバイザ936が,物理計算機915に入力される非同期事象について,その事象の情報と,それによって引き起こされたソフトウェア933の遷移の情報をハイパバイザ937,938に送信し,ハイパバイザ937,938が,その情報をもとに,ソフトウェア934,935にもその非同期事象を再現することに加えて,さらに,ハイパバイザ936,937が,ソフトウェア933,934のI/Oイベントの情報をハイパバイザ938に送信し,ハイパバイザ938が,その情報と,ソフトウェア935のI/Oイベントの情報を比較することによって,VMを同期実行しつつ,I/Oイベント比較処理を行い,プロセッサ故障を隠蔽することが可能となる。
As described above, the
以上,好適な実施例を示したが,本発明は,その技術的思想を逸脱しない範囲において,種々の変形が可能である。例えば,上述の実施例では,I/Oデータバッファの物理アドレス情報を,I/Oデータ出力比較部の要求送信インターフェースから,I/Oスイッチの要求受信インターフェースに対して直接受け渡ししているが,I/Oデータバッファの物理アドレス情報をハイパバイザのメモリ領域に格納し,その情報を格納したメモリアドレスを,I/Oスイッチの要求受信インターフェースに対して受け渡す,などである。 Although the preferred embodiments have been described above, the present invention can be variously modified without departing from the technical idea thereof. For example, in the above embodiment, the physical address information of the I / O data buffer is directly transferred from the request transmission interface of the I / O data output comparison unit to the request reception interface of the I / O switch. For example, the physical address information of the I / O data buffer is stored in the memory area of the hypervisor, and the memory address storing the information is transferred to the request receiving interface of the I / O switch.
100,101…プロセッサ,
102,103…メモリ,
104−I/Oスイッチ,
105,106…I/Oデバイス,
107,108,109…PCI Express Bus,
110,111,112,113…メモリ領域,
114,115…メモリ領域中のI/Oデータバッファ,
116…要求受信インターフェース部,
117…応答送信インターフェース部,
120,121…物理計算機,
122,123…仮想計算機,
130,131…ゲストソフトウェア,
132,133…ハイパバイザ,
140,142…同期処理部,
141,143…アドレス変換部,
144…I/Oイベント検出部,
145…I/Oイベント処理部,
146…I/Oデータ出力比較部,
147…要求送信インターフェース部,
148…応答受信インターフェース部,
149…I/Oコマンド出力比較部,
150…I/Oコマンド出力抑止部,
151…仮想アドレス特定部,
152…物理アドレス変換部,
153…DMA抑止部,
160…イベント送信チャネル,
170,171,172,173,174,175,176…I/Oイベント出力,
177,178…I/Oデータ書き込み,
180,181,182…I/Oコマンド送受信,
185,186,187,188,189…DMA読み出し,
190…I/Oイベント出力に対応するI/Oコマンド送受信,
191…データ出力イベント通知に対応するI/Oコマンド送信,
192,193…物理アドレス情報に対応するI/Oコマンド送信,
194…比較結果に対応するI/Oコマンド受信,
201…I/Oコマンド比較結果に対応するハイパバイザ内でのデータ出力,
211,212…I/Oデータ出力イベント仮想アドレス情報に対応するハイパバイザ内でのデータ出力,
221…仮想ページ番号に対応するハイパバイザ内でのデータ出力,
222…物理ページ番号に対応するハイパバイザ内でのデータ出力,
231,232…I/Oデータ出力イベント物理アドレス情報に対応するハイパバイザ内でのデータ出力,
241…I/Oデータ比較結果に対応するハイパバイザ内でのデータ出力,
300…スイッチ回路,
301…DMAデータ読み出し部,
302…I/Oデータバッファ比較部,
311…データ出力イベント通知に対応する信号,
312,313…物理アドレス情報に対応する信号,
314…比較結果に対応する信号,
326,327…DMA読み出し結果,
401,402,403,404,405,406,407,412,413,414,415,416,417…ゲストソフトウェアの処理ステップ,
451,452,453,454,455,456,457,458,459,460,461,462…ハイパバイザの処理ステップ,
471,472,473,474…DMAの動作ステップ,
481,482,483…I/Oからの非同期事象(割り込み),
491,492…ハイパバイザからの仮想的な非同期事象(割り込み),
501,502,503,504,505,506,512,513,514,515,516…ゲストソフトウェアの処理ステップ,
551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567…ハイパバイザの処理ステップ,
571,572,573…DMA読み出し部とI/Oデータバッファ比較部の動作ステップ,
581,582…I/Oからの非同期事象(割り込み),
591,592…ハイパバイザからの仮想的な非同期事象(割り込み),
601,602,612…ゲストソフトウェアの処理ステップ,
621…プロセッサ故障の発生タイミング,
651,652,653,654,655,656,657,658,659…ハイパバイザの処理ステップ,
681…I/Oからの非同期事象(割り込み),
691…ハイパバイザからの仮想的な非同期事象(割り込み),
703,704,705,706,713,714,715,716…ゲストソフトウェアの処理ステップ,
721…プロセッサ故障の発生タイミング,
758,759,760,761,762,763,764,765,766,767,768…ハイパバイザの処理ステップ,
771,772,773−DMA読み出し部とI/Oデータバッファ比較部の動作ステップ,
782…I/Oからの非同期事象(割り込み),
792…ハイパバイザからの仮想的な非同期事象(割り込み)
801,802,803,804,805,806,807,808,809,810,811,812,813,814,815,816,817,818,819,820…ハイパバイザの処理フローのステップ
900,901,902…プロセッサ,
903,904,905…メモリ,
907…I/Oスイッチ,
908,909…I/Oデバイス,
910,911,912…PCI Express Bus,
920,921,922,923,924,925…メモリ領域,
926,927,928…メモリ領域中のI/Oデータバッファ,
913…要求受信インターフェース部,
914…応答送信インターフェース部,
915,916,917…物理計算機,
930,931,932…仮想計算機,
933,934,935…ゲストソフトウェア,
936,937,938…ハイパバイザ,
940,942,944…同期処理部,
941,943,945…アドレス変換部,
946…I/Oイベント検出部,
947…I/Oイベント処理部,
948…I/Oデータ出力比較部,
949…要求送信インターフェース部,
950…応答受信インターフェース部,
951…I/Oコマンド出力比較部,
952…I/Oコマンド出力訂正部,
953…仮想アドレス特定部,
954…物理アドレス変換部,
955…DMA訂正部,
957,958,959…イベント送信チャネル,
960,961,962,963,964,965,966,967,968,969,970…I/Oイベント出力,
971,972,973…I/Oデータ書き込み,
980,981,982…I/Oコマンド送受信,
984,985,986,987,988,989…DMA読み出し,
990…I/Oイベント出力に対応するI/Oコマンド送受信,
991…データ出力イベント通知に対応するI/Oコマンド送信,
992,993,994…物理アドレス情報に対応するI/Oコマンド送信,
995…比較結果に対応するI/Oコマンド受信,
1001…I/Oコマンド比較結果に対応するハイパバイザ内でのデータ出力,
1011,1012,1013…I/Oデータ出力イベント仮想アドレス情報に対応するハイパバイザ内でのデータ出力,
1021…仮想ページ番号に対応するハイパバイザ内でのデータ出力,
1022…物理ページ番号に対応するハイパバイザ内でのデータ出力,
1031,1032,1033…I/Oデータ出力イベント物理アドレス情報に対応するハイパバイザ内でのデータ出力,
1041…I/Oデータ比較結果に対応するハイパバイザ内でのデータ出力,
1100…スイッチ回路,
1101…DMAデータ読み出し部,
1102…I/Oデータバッファ比較部,
1111…データ出力イベント通知に対応する信号,
1112,1113,1114…物理アドレス情報に対応する信号,
1115…比較結果に対応する信号,
1126,1127,1128…DMA読み出し結果。
100, 101 ... processor,
102, 103 ... memory,
104-I / O switch,
105, 106 ... I / O device,
107, 108, 109 ... PCI Express Bus,
110, 111, 112, 113 ... memory area,
114, 115 ... I / O data buffer in the memory area,
116... The request reception interface unit,
117 ... Response transmission interface part,
120, 121 ... physical computer,
122, 123 ... virtual machines,
130, 131 ... guest software,
132, 133 ... hypervisor,
140, 142 ... synchronization processing unit,
141, 143 ... Address converter,
144 ... I / O event detector,
145 ... I / O event processing unit,
146... I / O data output comparison unit,
147 ... request transmission interface unit,
148 ... Response reception interface section,
149 ... I / O command output comparison unit,
150 ... I / O command output suppression section,
151... Virtual address specifying unit,
152 ... physical address conversion unit,
153 ... DMA suppression unit,
160 ... event transmission channel,
170, 171, 172, 173, 174, 175, 176 ... I / O event output,
177, 178 ... I / O data write,
180, 181, 182 ... I / O command transmission / reception,
185, 186, 187, 188, 189 ... DMA read,
190 ... I / O command transmission / reception corresponding to I / O event output,
191 ... I / O command transmission corresponding to data output event notification,
192, 193 ... I / O command transmission corresponding to physical address information,
194 ... Receiving an I / O command corresponding to the comparison result,
201 ... Data output in the hypervisor corresponding to the I / O command comparison result,
211, 212 ... I / O data output event Data output in hypervisor corresponding to virtual address information,
221 ... Data output in the hypervisor corresponding to the virtual page number,
222 ... Data output in the hypervisor corresponding to the physical page number,
231, 232 ... I / O data output event Data output in the hypervisor corresponding to the physical address information,
241 ... Data output in the hypervisor corresponding to the I / O data comparison result,
300 ... Switch circuit,
301: DMA data reading unit,
302 ... I / O data buffer comparison unit,
311 ... Signal corresponding to data output event notification,
312, 313... Signal corresponding to physical address information,
314... Signal corresponding to the comparison result,
326, 327 ... DMA read result,
401, 402, 403, 404, 405, 406, 407, 412, 413, 414, 415, 416, 417 ... guest software processing steps,
451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462... Hypervisor processing steps,
471, 472, 473, 474 ... DMA operation steps,
481, 482, 483 ... Asynchronous event (interrupt) from I / O,
491, 492 ... Virtual asynchronous events (interrupts) from the hypervisor,
501,502,503,504,505,506,512,513,514,515,516 ... guest software processing steps,
551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567 ... hypervisor processing steps,
571, 572, 573... Operation steps of the DMA read unit and the I / O data buffer comparison unit,
581, 582... Asynchronous event (interrupt) from I / O,
591, 592 ... Virtual asynchronous event (interrupt) from the hypervisor,
601 602 612 ... guest software processing steps,
621 ... processor failure occurrence timing,
651, 652, 653, 654, 655, 656, 657, 658, 659 ... processing steps of the hypervisor,
681 ... Asynchronous event (interrupt) from I / O,
691 ... Virtual asynchronous event (interrupt) from the hypervisor,
703, 704, 705, 706, 713, 714, 715, 716 ... guest software processing steps,
721 ... processor failure occurrence timing,
758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768 ... processing steps of the hypervisor,
771, 772, 773-DMA read section and I / O data buffer comparison section operation steps,
782 ... Asynchronous event (interrupt) from I / O,
792 ... Virtual asynchronous event (interrupt) from the hypervisor
801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820 ...
903, 904, 905 ... memory,
907 ... I / O switch,
908, 909 ... I / O device,
910, 911, 912 ... PCI Express Bus,
920, 921, 922, 923, 924, 925... Memory area,
926, 927, 928 ... I / O data buffer in the memory area,
913 ... Request receiving interface part,
914 ... Response transmission interface unit,
915, 916, 917 ... physical computer,
930, 931, 932 ... virtual machine,
933, 934, 935 ... Guest software,
936, 937, 938 ... hypervisor,
940, 942, 944... Synchronization processing unit,
941, 943, 945 ... Address conversion unit,
946 ... I / O event detection unit,
947 ... I / O event processing unit,
948 ... I / O data output comparison unit,
949 ... Request transmission interface unit,
950 ... Response reception interface unit,
951 ... I / O command output comparison unit,
952 ... I / O command output correction section,
953 ... Virtual address specifying part,
954: Physical address conversion unit,
955 ... DMA correction section,
957, 958, 959 ... event transmission channel,
960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970 ... I / O event output,
971, 972, 973 ... I / O data write,
980, 981, 982 ... I / O command transmission / reception,
984, 985, 986, 987, 988, 989 ... DMA read,
990 ... I / O command transmission / reception corresponding to I / O event output,
991 ... I / O command transmission corresponding to data output event notification,
992, 993, 994 ... I / O command transmission corresponding to physical address information,
995 ... I / O command reception corresponding to the comparison result,
1001 ... Data output in the hypervisor corresponding to the I / O command comparison result,
1011, 1012, 1013 ... I / O data output event Data output in hypervisor corresponding to virtual address information,
1021 ... Data output in the hypervisor corresponding to the virtual page number,
1022 ... Data output in the hypervisor corresponding to the physical page number,
1031, 1032, 1033 ... I / O data output event Data output in the hypervisor corresponding to physical address information,
1041... Data output in the hypervisor corresponding to the I / O data comparison result,
1100: Switch circuit,
1101... DMA data reading unit,
1102 ... I / O data buffer comparison unit,
1111 ... Signal corresponding to the data output event notification,
1112, 1113, 1114... Signal corresponding to physical address information,
1115: Signal corresponding to the comparison result,
1126, 1127, 1128 ... DMA read results.
Claims (15)
前記仮想化制御部は,
前記第一の仮想計算機と前記第二の仮想計算機上のアプリケーションプログラムを同時に実行する同期制御部と,
前記第一の仮想計算機と前記第二の仮想計算機が発行したI/Oイベントを検出し,種類を特定するI/Oイベント検出部と,
前記第一の仮想計算機が発行したI/Oイベントと,前記第二の仮想計算機が発行したI/Oイベントを比較し,前記I/Oデバイスに対して出力を生成するI/Oイベント処理部と,を備え,
前記I/Oイベント処理部は,
前記第一の仮想計算機と前記第二の仮想計算機が発行した前記I/Oイベントが,I/Oコマンドである場合に,前記I/Oコマンドを比較するI/Oコマンド比較部と,
前記I/Oコマンド比較部の比較結果が不一致である場合には,前記I/Oコマンドの出力を抑止する抑止部と,
を備えることを特徴とするコンピュータシステム。 A plurality of physical computers including a processor, a memory, and an I / O device; a virtualization control unit that virtualizes computer resources of the physical computers and executes the plurality of virtual computers; and The first virtual machine on the first physical computer and the second virtual machine on the second physical computer are computer systems that execute the same application program,
The virtualization control unit
A synchronization control unit that simultaneously executes application programs on the first virtual machine and the second virtual machine;
An I / O event detector for detecting an I / O event issued by the first virtual machine and the second virtual machine and identifying a type;
An I / O event processing unit that compares an I / O event issued by the first virtual machine with an I / O event issued by the second virtual machine and generates an output for the I / O device. And comprising
The I / O event processing unit
An I / O command comparison unit that compares the I / O command when the I / O event issued by the first virtual machine and the second virtual machine is an I / O command;
If the comparison result of the I / O command comparison unit does not match, a suppression unit for suppressing the output of the I / O command;
A computer system comprising:
前記I/Oイベント処理部は,
前記第一の仮想計算機と前記第二の仮想計算機が発行した前記I/Oイベントが,I/Oデータ出力である場合に,前記第一の仮想計算機のメモリ領域と,前記第二の仮想計算機のメモリ領域から当該I/Oデータを読み出し,比較するI/Oデータ比較部を更に備え,
前記抑止部は,前記I/Oデータ比較部の比較結果が不一致である場合には,前記I/Oデータを前記メモリ領域から前記I/Oデバイスに読み出すのを抑止する,
ことを特徴とするコンピュータシステム。 A computer system according to claim 1,
The I / O event processing unit
When the I / O event issued by the first virtual machine and the second virtual machine is an I / O data output, the memory area of the first virtual machine and the second virtual machine An I / O data comparison unit that reads and compares the I / O data from the memory area of
The inhibition unit inhibits reading of the I / O data from the memory area to the I / O device when the comparison result of the I / O data comparison unit does not match;
A computer system characterized by that.
前記I/OデバイスはDMAコントローラを備え,
前記抑止部は,前記I/Oデータ比較部の比較結果が不一致である場合に,前記DMAコントローラが前記メモリ領域から前記I/Oデータを読み出すのを抑止する,
ことを特徴とするコンピュータシステム。 A computer system according to claim 2,
The I / O device comprises a DMA controller;
The inhibiting unit inhibits the DMA controller from reading the I / O data from the memory area when the comparison result of the I / O data comparing unit is inconsistent;
A computer system characterized by that.
前記仮想化制御部は,
前記第一の仮想計算機と前記第二の仮想計算機それぞれが管理する仮想アドレスと,前記第一の物理計算機と前記第二の物理計算機それぞれが管理する物理アドレスの対応を管理するアドレス変換部を更に有し,
前記I/Oデータ比較部は,
前記第一の仮想計算機および前記第二の仮想計算機が発行した前記I/Oイベントから,前記第一の仮想計算機および前記第二の仮想計算機のI/Oデータ出力の対象データが保持されるメモリ領域の,仮想アドレスを特定する仮想アドレス特定部と,
前記アドレス変換部を用いて,特定された前記仮想アドレスに対応する物理アドレスを特定する物理アドレス特定部と,
特定された前記物理アドレスが示すメモリ領域から前記対象データを読み出すデータ読み出し部を備え,
読み出した前記対象データの比較結果を前記抑止部に出力する、
ことを特徴とするコンピュータシステム。 A computer system according to claim 2,
The virtualization control unit
An address conversion unit for managing correspondence between virtual addresses managed by the first virtual machine and the second virtual machine, and physical addresses managed by the first physical computer and the second physical machine, respectively; Have
The I / O data comparison unit
Memory in which target data of I / O data output of the first virtual machine and the second virtual machine is held from the I / O event issued by the first virtual machine and the second virtual machine A virtual address specifying part for specifying a virtual address of the area;
A physical address specifying unit for specifying a physical address corresponding to the specified virtual address using the address conversion unit;
A data reading unit that reads the target data from the memory area indicated by the identified physical address;
Outputting the comparison result of the read target data to the suppression unit;
A computer system characterized by that.
前記アドレス変換部は,
前記仮想アドレスと前記物理アドレスの対応をページ単位で管理するページテーブルを備え,
前記仮想アドレス特定部は,
前記第一の仮想計算機および前記第二の仮想計算機のI/Oデータ出力の対象データが保持される前記メモリ領域を,前記仮想アドレスの開始アドレスとサイズにより特定し,
前記物理アドレス特定部は,
前記仮想アドレス特定部で特定された,前記仮想アドレスの開始アドレスとサイズからなる仮想アドレス情報を,前記ページテーブルを用いて,一つ以上の開始アドレスとサイズの組み合わせからなる物理アドレス情報に変換する,
ことを特徴とするコンピュータシステム。 A computer system according to claim 4,
The address conversion unit
A page table for managing the correspondence between the virtual address and the physical address in units of pages;
The virtual address specifying unit
Identifying the memory area in which the target data of I / O data output of the first virtual machine and the second virtual machine is held by the start address and size of the virtual address;
The physical address specifying unit is:
Using the page table, virtual address information specified by the virtual address specifying unit and including the start address and size of the virtual address is converted into physical address information including a combination of one or more start addresses and sizes. ,
A computer system characterized by that.
前記物理計算機は,前記プロセッサと前記I/Oデバイスを接続するI/Oスイッチを更に有し,
前記I/Oスイッチは,
前記仮想化制御部から,I/Oデータ出力通知と,前記第一の仮想計算機及び前記第二の仮想計算機のI/Oデータ出力の対象データが保持される前記メモリ領域の複数の物理アドレスを受け取る要求受信インターフェース部と,
前記要求受信インターフェース部が前記I/Oデータ出力通知を受けると,受け取った複数の前記物理アドレスが示すメモリ領域から,対象データをそれぞれ読み出すメモリデータ読み出し部と,
読み出した前記対象データを比較するメモリデータ比較部と,
比較結果を前記仮想化制御部に受け渡す応答送信インターフェース部と,
を備える,
ことを特徴とするコンピュータシステム。 A computer system according to claim 2,
The physical computer further includes an I / O switch for connecting the processor and the I / O device,
The I / O switch
From the virtualization control unit, a plurality of physical addresses in the memory area in which I / O data output notification and target data for I / O data output of the first virtual machine and the second virtual machine are held A request receiving interface part for receiving;
When the request reception interface unit receives the I / O data output notification, a memory data reading unit that reads target data from the memory areas indicated by the received physical addresses,
A memory data comparison unit for comparing the read target data;
A response transmission interface unit for passing the comparison result to the virtualization control unit;
With
A computer system characterized by that.
前記仮想化制御部は,
前記第一の仮想計算機と前記第二の仮想計算機それぞれが管理する仮想アドレスと,前記第一の物理計算機と前記第二の物理計算機それぞれが管理する物理アドレスの対応を管理するアドレス変換部を更に有し,
前記I/Oデータ比較部は,
前記第一の仮想計算機および前記第二の仮想計算機が発行した前記I/Oイベントから,前記第一の仮想計算機および前記第二の仮想計算機のI/Oデータ出力の対象データが保持される前記メモリ領域の,複数の仮想アドレスを特定する仮想アドレス特定部と,
前記アドレス変換部を用いて,特定された複数の前記仮想アドレスに対応する複数の前記物理アドレスを特定する物理アドレス特定部と,
前記I/Oスイッチの前記要求受信インターフェース部に対して,前記I/Oデータ出力通知と,複数の前記物理アドレスを受け渡す要求送信インターフェース部と,
前記I/Oスイッチの前記応答送信インターフェース部から,比較結果を受け取る応答受信インターフェース部を備える,
ことを特徴とするコンピュータシステム。 A computer system according to claim 6,
The virtualization control unit
An address conversion unit for managing correspondence between virtual addresses managed by the first virtual machine and the second virtual machine, and physical addresses managed by the first physical computer and the second physical machine, respectively; Have
The I / O data comparison unit
The target data of the I / O data output of the first virtual machine and the second virtual machine is held from the I / O event issued by the first virtual machine and the second virtual machine. A virtual address specifying unit for specifying a plurality of virtual addresses in the memory area;
A physical address specifying unit for specifying a plurality of physical addresses corresponding to the specified plurality of virtual addresses using the address conversion unit;
An I / O data output notification to the request reception interface unit of the I / O switch; a request transmission interface unit that delivers a plurality of the physical addresses;
A response reception interface unit for receiving a comparison result from the response transmission interface unit of the I / O switch;
A computer system characterized by that.
プロセッサとメモリとI/Oデバイスを備えた、複数の物理計算機と,
前記物理計算機の計算機資源を仮想化して,第一の物理計算機上の第一の仮想計算機と、第二の物理計算機上の第二の仮想計算機と、第三の物理計算機上の第三の仮想計算機を実行する仮想化制御部とを備え,
前記仮想化制御部は,
前記第一,第二,第三の仮想計算機上の同一のアプリケーションプログラムを同時に実行する同期制御部と,
前記第一,第二,第三の仮想計算機が発行したI/Oイベントを検出し,種類を特定するI/Oイベント検出部と,
前記第一,第二,第三の仮想計算機がそれぞれ発行したI/Oイベントを比較し,前記I/Oデバイスに対して出力を生成するI/Oイベント処理部と,を備え,
前記I/Oイベント処理部は,
前記第一,第二,第三の仮想計算機が発行した前記I/Oイベントが,I/Oコマンドである場合に,前記I/Oコマンドを比較するI/Oコマンド比較部と,
前記I/Oコマンド比較部の比較の結果,2つが一致している場合は,一致している前記I/Oコマンドの出力を行い,全て不一致である場合には,前記I/Oコマンドの出力を抑止する抑止部と,
を備えることを特徴とするコンピュータシステム。 A computer system in which a plurality of virtual machines execute application programs,
A plurality of physical computers with processors, memory and I / O devices;
By virtualizing the computer resources of the physical computer, a first virtual computer on the first physical computer, a second virtual computer on the second physical computer, and a third virtual computer on the third physical computer A virtualization control unit that executes the computer,
The virtualization control unit
A synchronous control unit that simultaneously executes the same application program on the first, second, and third virtual machines;
An I / O event detector that detects an I / O event issued by the first, second, and third virtual machines and identifies a type;
An I / O event processing unit that compares the I / O events issued by the first, second, and third virtual machines and generates an output for the I / O device;
The I / O event processing unit
An I / O command comparison unit that compares the I / O commands when the I / O events issued by the first, second, and third virtual machines are I / O commands;
As a result of comparison by the I / O command comparison unit, when the two match, the matched I / O command is output, and when all do not match, the I / O command is output. A deterrence unit that deters
A computer system comprising:
前記I/Oイベント処理部は,
前記第一,第二,第三の仮想計算機が発行した前記I/Oイベントが,I/Oデータ出力である場合に,前記第一、第二、第三の仮想計算機それぞれのメモリ領域からI/Oデータを読み出し,比較するI/Oデータ比較部を備え,
前記抑止部は、前記I/Oデータ比較部の比較の結果,2つが一致している場合は,一致している前記I/Oデータ出力に対応する読み出しコマンドを出力し,全てが不一致である場合には,前記I/Oデータを前記メモリ領域から読み出すのを抑止する,
ことを特徴とするコンピュータシステム。 9. A computer system according to claim 8, comprising:
The I / O event processing unit
When the I / O event issued by the first, second, and third virtual machines is an I / O data output, I / O data is output from the memory area of each of the first, second, and third virtual machines. An I / O data comparison unit that reads and compares / O data
The suppression unit outputs a read command corresponding to the matched I / O data output when the two match as a result of the comparison of the I / O data comparison unit, and all do not match. In this case, reading the I / O data from the memory area is suppressed.
A computer system characterized by that.
前記仮想化制御部は,
複数の前記仮想計算機上の同一のアプリケーションプログラムを同時に実行し,
複数の前記仮想計算機が発行したI/Oイベントを検出し,I/Oイベントの種類を特定し,
複数の前記仮想計算機が発行した前記I/Oイベントが,I/Oコマンドである場合,前記I/Oコマンドを比較し,前記I/Oイベントが,I/Oデータ出力である場合に,複数の前記仮想計算機のメモリ領域からI/Oデータを読み出して比較し,
前記I/Oコマンドを比較した結果が不一致である場合には,前記I/Oコマンドの出力を抑止し,
前記I/Oデータを比較した結果が不一致である場合には,前記I/Oデータを前記メモリ領域から読み出すことを抑止する,
ことを特徴とするコンピュータシステムの制御方法。 A computer system control method comprising: a plurality of physical computers including a processor, a memory, and an I / O device; and a virtualization control unit that virtualizes computer resources of each of the physical computers and executes the plurality of virtual computers. ,
The virtualization control unit
Simultaneously executing the same application program on a plurality of virtual machines,
Detect I / O events issued by multiple virtual machines, identify the type of I / O event,
When the I / O event issued by a plurality of virtual machines is an I / O command, the I / O commands are compared, and when the I / O event is an I / O data output, a plurality of I / O events are output. I / O data is read from the memory area of the virtual machine and compared,
If the comparison result of the I / O command is inconsistent, the output of the I / O command is suppressed,
If the result of comparing the I / O data is inconsistent, reading the I / O data from the memory area is suppressed.
A method for controlling a computer system.
前記仮想化制御部は,
前記I/Oデータを読み出して比較する場合,
複数の前記仮想計算機が発行した前記I/Oイベントから,複数の前記仮想計算機の前記I/Oデータ出力の対象データが保持される前記メモリ領域の仮想アドレスを特定し,
特定した前記仮想アドレスを対応する前記物理計算機が管理する物理アドレスにアドレス変換し,
変換された前記物理アドレスが示す前記メモリ領域から対象データを読み出す,
ことを特徴とするコンピュータシステムの制御方法。 A method of controlling a computer system according to claim 10,
The virtualization control unit
When reading and comparing the I / O data,
From the I / O events issued by the plurality of virtual machines, specify the virtual address of the memory area where the target data of the I / O data output of the plurality of virtual machines is held,
Converting the identified virtual address into a physical address managed by the corresponding physical computer;
Read target data from the memory area indicated by the converted physical address,
A method for controlling a computer system.
複数の前記仮想計算機は,第一の物理計算機上の第一の仮想計算機と、第二の物理計算機上の第二の仮想計算機を含み,
前記仮想化制御部は,
前記仮想アドレスと前記物理アドレスの対応をページ単位で管理するページテーブルを備え,
前記仮想アドレスを特定する場合,前記第一および第二の仮想計算機のI/Oデータ出力の対象データが保持される前記メモリ領域を,仮想アドレスの開始アドレスとサイズからなる仮想アドレス情報により特定し,
前記仮想アドレス情報を,前記ページテーブルを用いて,一つ以上の開始アドレスとサイズの組み合わせからなる物理アドレス情報に変換する,
ことを特徴とするコンピュータシステムの制御方法。 A computer system control method according to claim 11, comprising:
The plurality of virtual machines includes a first virtual machine on a first physical machine and a second virtual machine on a second physical machine,
The virtualization control unit
A page table for managing the correspondence between the virtual address and the physical address in units of pages;
When specifying the virtual address, the memory area in which the target data of the I / O data output of the first and second virtual machines is held is specified by virtual address information consisting of the start address and size of the virtual address. ,
Converting the virtual address information into physical address information comprising a combination of one or more start addresses and sizes using the page table;
A method for controlling a computer system.
前記物理計算機は,前記プロセッサと前記I/Oデバイスを接続するI/Oスイッチを更に有し,
前記I/Oスイッチは,
前記仮想化制御部から,I/Oデータ出力通知と,複数の前記仮想計算機のI/Oデータ出力の対象データが保持されるメモリ領域の物理アドレスを受け取り,
前記I/Oデータ出力通知を受けると,受け取った複数の前記物理アドレスが示す前記メモリ領域から,対象データをそれぞれ読み出し,
読み出した対象データを比較し,比較結果を前記仮想化制御部に受け渡す,
ことを特徴とするコンピュータシステムの制御方法。 A method of controlling a computer system according to claim 10,
The physical computer further includes an I / O switch for connecting the processor and the I / O device,
The I / O switch
From the virtualization control unit, an I / O data output notification and a physical address of a memory area in which target data for I / O data output of the plurality of virtual machines are held are received,
Upon receiving the I / O data output notification, the target data is read from the memory area indicated by the received plurality of physical addresses,
Compare the read target data and pass the comparison result to the virtualization control unit.
A method for controlling a computer system.
複数の前記仮想計算機は,第一の物理計算機上の第一の仮想計算機と、第二の物理計算機上の第二の仮想計算機と、第三の物理計算機上の第三の仮想計算機を含み,
前記仮想制御部は,
前記I/Oコマンドを比較の結果,前記第一,第二,第三の仮想計算機が発行した前記I/Oコマンドの内,一つが不一致である場合には,一致する二つを正しいI/Oコマンドとして出力し,全てが不一致である場合には,前記I/Oコマンドの出力を抑止する,
ことを特徴とするコンピュータシステムの制御方法。 A method for controlling a computer system according to claim 10, comprising:
The plurality of virtual machines includes a first virtual machine on a first physical machine, a second virtual machine on a second physical machine, and a third virtual machine on a third physical machine ,
The virtual control unit
As a result of comparing the I / O commands, if one of the I / O commands issued by the first, second, and third virtual machines does not match, the two matching I / O commands are regarded as correct I / O commands. If it is output as an O command and all do not match, the output of the I / O command is suppressed.
A method for controlling a computer system.
複数の前記仮想計算機は,第一の物理計算機上の第一の仮想計算機と、第二の物理計算機上の第二の仮想計算機と、第三の物理計算機上の第三の仮想計算機を含み,
前記仮想制御部は,
前記I/Oデータを読み出し,比較した結果,前記第一,第二,第三の仮想計算機のメモリ領域から読み出した前記I/Oデータの内,一つが不一致である場合には,一致する二つを正しいデータとして読み出し,全てが不一致である場合には,前記I/Oデータを前記メモリ領域から読み出すことを抑止する,
ことを特徴とするコンピュータシステムの制御方法。 A method for controlling a computer system according to claim 10, comprising:
The plurality of virtual machines includes a first virtual machine on a first physical machine, a second virtual machine on a second physical machine, and a third virtual machine on a third physical machine ,
The virtual control unit
As a result of reading and comparing the I / O data, if one of the I / O data read from the memory areas of the first, second, and third virtual machines does not match, the two that match If all data are inconsistent, the I / O data is inhibited from being read from the memory area.
A method for controlling a computer system.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010135033A JP5635815B2 (en) | 2010-06-14 | 2010-06-14 | Computer system and control method thereof |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010135033A JP5635815B2 (en) | 2010-06-14 | 2010-06-14 | Computer system and control method thereof |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2012003313A JP2012003313A (en) | 2012-01-05 |
JP5635815B2 true JP5635815B2 (en) | 2014-12-03 |
Family
ID=45535255
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010135033A Expired - Fee Related JP5635815B2 (en) | 2010-06-14 | 2010-06-14 | Computer system and control method thereof |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5635815B2 (en) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2014078186A (en) * | 2012-10-12 | 2014-05-01 | Mitsubishi Electric Corp | Multiplexing device, multiplexing method, and multiplexing program |
JP6197585B2 (en) | 2013-11-01 | 2017-09-20 | 富士通株式会社 | Information processing apparatus and control method of information processing apparatus |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06250868A (en) * | 1993-02-25 | 1994-09-09 | Mitsubishi Electric Corp | Computer |
JP2005309553A (en) * | 2004-04-19 | 2005-11-04 | Hitachi Ltd | Computer |
JP4394624B2 (en) * | 2005-09-21 | 2010-01-06 | 株式会社日立製作所 | Computer system and I / O bridge |
JP5206009B2 (en) * | 2008-02-18 | 2013-06-12 | 日本電気株式会社 | Fault tolerant computer, synchronous control method, and program |
JP4783392B2 (en) * | 2008-03-31 | 2011-09-28 | 株式会社東芝 | Information processing apparatus and failure recovery method |
JP5268469B2 (en) * | 2008-07-23 | 2013-08-21 | 株式会社東芝 | High availability system and execution state control method |
US8201169B2 (en) * | 2009-06-15 | 2012-06-12 | Vmware, Inc. | Virtual machine fault tolerance |
-
2010
- 2010-06-14 JP JP2010135033A patent/JP5635815B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2012003313A (en) | 2012-01-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9052887B2 (en) | Fault tolerance of data processing steps operating in either a parallel operation mode or a non-synchronous redundant operation mode | |
US9946870B2 (en) | Apparatus and method thereof for efficient execution of a guest in a virtualized enviroment | |
US7890812B2 (en) | Computer system which controls closing of bus | |
US8893122B2 (en) | Virtual computer system and a method of controlling a virtual computer system on movement of a virtual computer | |
US10102373B2 (en) | Method and apparatus for capturing operation in a container-based virtualization system | |
JP2008518310A (en) | Method and apparatus for monitoring memory units in a multiprocessor system | |
CN106796546B (en) | Method and apparatus for implementation in a data processing system | |
KR20150063417A (en) | A data processing apparatus and method for protecting secure data and program code from non-secure access when switching between secure and less secure domains | |
JP6508382B1 (en) | INFORMATION PROCESSING APPARATUS, INFORMATION PROCESSING METHOD, AND PROGRAM | |
US20160259731A1 (en) | Memory management | |
US20160034332A1 (en) | Information processing system and method | |
JP6247816B2 (en) | How to provide high integrity processing | |
US10746792B1 (en) | Debug mechanisms for a processor circuit | |
US20110179255A1 (en) | Data processing reset operations | |
US20120030504A1 (en) | High reliability computer system and its configuration method | |
US20090248915A1 (en) | Communication control apparatus and communication control method | |
US9864708B2 (en) | Safely discovering secure monitors and hypervisor implementations in systems operable at multiple hierarchical privilege levels | |
JP5635815B2 (en) | Computer system and control method thereof | |
US9535772B2 (en) | Creating a communication channel between different privilege levels using wait-for-event instruction in systems operable at multiple levels hierarchical privilege levels | |
JP2011175641A (en) | Reading to and writing from peripheral with temporally separated redundant processor execution | |
CN107111525B (en) | System error handling in a data processing apparatus | |
WO2013008326A1 (en) | Software verification method and software verification system | |
KR101268290B1 (en) | Apparatus and method for detecting and recovering the fault of device driver in virtual machine | |
JP3628265B2 (en) | Multiprocessor system unit | |
US20060195849A1 (en) | Method for synchronizing events, particularly for processors of fault-tolerant systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20130304 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20140630 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20140708 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20140904 |
|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20140908 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20140924 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20141017 |
|
LAPS | Cancellation because of no payment of annual fees |