(57)【特許請求の範囲】
【請求項１】
プロセッサと、前記プロセッサに接続されるメモリとを備え、前記プロセッサによって実行され、計算機の物理資源を仮想的に分割して生成される複数の仮想計算機を管理する第１の仮想マシンマネージャと、前記各仮想計算機上で実行され、アプリケーションを実行するオペレーティングシステムを管理する第２の仮想マシンマネージャと、前記第１の仮想マシンマネージャによって前記メモリに格納され、前記第１の仮想マシンマネージャと前記第２の仮想マシンマネージャとの状態を管理する第１の管理情報と、前記第２の仮想マシンマネージャによって前記メモリに格納され、前記第２の仮想マシンマネージャと前記オペレーティングシステム又は前記アプリケーションとの状態を管理する第２の管理情報とを有し、前記プロセッサが、当該プロセッサを制御するための制御情報を格納するレジスタと、前記レジスタに対する読み出し操作に応じて、前記第１の管理情報又は前記第２の管理情報から値を読み出すシャドウイング機能とを備えた計算機における仮想化方法であって、
前記第１の仮想マシンマネージャが、前記第２の仮想マシンマネージャからの呼び出しを検出する第１のステップと、
前記第１の仮想マシンマネージャが、前記第２の仮想マシンマネージャからの呼び出し要因が前記シャドウイング機能を有効化するための指示であるか否かを判定する第２のステップと、
前記第２の仮想マシンマネージャからの呼び出し要因が前記シャドウイング機能を有効化するための指示であると判定された場合に、前記第１の仮想マシンマネージャが、前記シャドウイング機能を有効化する第３のステップと、
を含むことを特徴とする仮想化方法。
【請求項２】
前記シャドウイング機能は、さらに、前記プロセッサが前記レジスタに対する書き込み操作を検出した場合に、前記第１の管理情報に対して所定の値を書き込む機能を有し、
前記仮想化方法は、
前記プロセッサが、前記オペレーティングシステム又は前記アプリケーションから発行された前記レジスタへの書き込み要求を検出する第４のステップと、
前記プロセッサが、前記シャドウイング機能を用いて、前記オペレーティングシステム又は前記アプリケーションから発行されたレジスタへの書き込み要求によって書き込まれる値に対応する前記所定の値を、前記第１の管理情報に書き込む第５のステップと、
をさらに含むことを特徴とする請求項１に記載の仮想化方法。
【請求項３】
前記第１の管理情報は、前記シャドウイング機能によって読み出される第１のシャドウデータを含み、
前記第２の管理情報は、前記シャドウイング機能によって読み出される第２のシャドウデータを含み、
前記仮想化方法は、
前記第１の仮想マシンマネージャが、前記第２の管理情報から前記第２のシャドウデータを読み出す第６のステップと、
前記第１の仮想マシンマネージャが、前記読み出された第２のシャドウデータに基づいて、前記第１の管理情報に含まれる前記第１のシャドウデータを更新する第７のステップと、
前記プロセッサが、前記オペレーティングシステム又は前記アプリケーションから発行された前記レジスタの読み出し要求を検出する第８のステップと、
前記プロセッサが、前記シャドウイング機能を用いて前記第１の管理情報の前記第１のシャドウデータから、前記オペレーティングシステム又は前記アプリケーションから発行された前記レジスタの読み出し要求の読み出し対象となる値を読み出し、前記読み出された読み出し対象となる値をオペレーティングシステム又は前記アプリケーションに応答する第９のステップと、
をさらに含むことを特徴とする請求項１に記載の仮想化方法。
【請求項４】
前記計算機は、前記第２の仮想マシンマネージャによって操作される前記レジスタに対する処理方針と、前記第２の仮想マシンマネージャによって操作される前記レジスタに対する応答として送信される応答値とが定義され、前記第１の仮想マシンマネージャによって前記メモリに格納された処理方針表を有し、
前記仮想化方法は、
前記第３のステップは、前記第２の仮想マシンマネージャからの呼び出し要因が前記シャドウイング機能を有効化するための指示でないと判定された場合に、前記第１の仮想マシンマネージャが、前記処理方針表を参照する第１０のステップと、
前記第１の仮想マシンマネージャが、前記第２の仮想マシンマネージャからの呼び出しに対する処理方針が前記シャドウイング機能を用いる処理であるか否かを判定する第１１のステップと、
前記第２の仮想マシンマネージャからの呼び出しに対する処理方針がシャドウイング機能を用いる処理であると判定された場合に、前記第１の仮想マシンマネージャが、前記第１の管理情報を読み出すために、前記シャドウイング機能を有効化する第１２のステップと、
前記第１の管理情報に含まれる前記第１のシャドウデータに前記応答値を設定する第１３のステップと、
をさらに含むことを特徴とする請求項３に記載の仮想化方法。
【請求項５】
前記レジスタは、複数の制御情報から構成される第２の制御情報を含み、
前記シャドウイング機能は、前記各第２の制御情報毎に有効化することが可能であって、
前記仮想化方法は、
前記第８のステップは、前記プロセッサが、前記各第２の制御情報毎に前記シャドウイング機能を有効化するか否かを判定する第１４のステップと、
前記第１の仮想マシンマネージャが、前記シャドウイング機能が有効化されないと判定された前記第２の制御情報については、前記シャドウイング機能が有効化されていないと判定された第２の制御情報に対応する情報を、前記レジスタから読み出す第１５のステップと、
前記第１の仮想マシンマネージャが、前記シャドウイング機能が有効化されると判定された前記第２の制御情報については、前記シャドウイング機能が有効化されると判定された第２の制御情報に対応する情報を、前記シャドウイング機能を用いて、前記第１の管理情報から読み出す第１６のステップと、
をさらに含むことを特徴とする請求項４に記載の仮想化方法。
【請求項６】
前記レジスタは、前記プロセッサが前記メモリ上に格納されたソフトウェアの実行優先度を保持する第１の制御情報を含み、
前記メモリは、前記メモリ上の位置を一意に識別する第１のアドレス空間を有し、
前記仮想計算機には、前記メモリ上に仮想的なメモリが割り当てられ、前記仮想的なメモリ上の位置を一意に識別する第２のアドレス空間を有し、
前記第１のシャドウデータには、前記第１の制御情報に対する値として前記第１のアドレス空間に含まれる第１のアドレスが格納され、
前記第２のシャドウデータには、前記第１の制御情報に対する値として前記第２のアドレス空間に含まれる第２のアドレスが格納され、
前記仮想化方法は、
前記第１の仮想マシンマネージャが、前記第２の仮想マシンマネージャから前記第１の制御情報に対する更新要求を受信する第１７のステップと、
前記第１の仮想マシンマネージャが、前記更新要求を受信したときには、前記第１の仮想マシンマネージャに対して前記シャドウイング機能を有効化する第１８のステップと、
前記第１の仮想マシンマネージャが、前記シャドウイング機能を用いて前記第１のシャドウデータから前記第１のアドレスを読み出す第１９のステップと、
前記第１の仮想マシンマネージャが、前記読み出された第１のアドレスを、前記第２のアドレス空間含まれ、前記読み出された第１のアドレスと対応する前記第２のアドレスに変換する第２０のステップと、
前記第１の仮想マシンマネージャが、前記第１の制御情報に前記読み出された第１のアドレスに対応する第２のアドレスを格納する第２１のステップと、
をさらに含むことを特徴とする請求項３に記載の仮想化方法。
【請求項７】
前記レジスタは、前記プロセッサの状態を制御するための複数の特権レジスタであることを特徴とする請求項１に記載の仮想化方法。
【請求項８】
プロセッサと、前記プロセッサに接続されるメモリとを備えた計算機であって、
前記プロセッサは、前記メモリ上に展開された、前記計算機の物理資源を仮想的に分割して生成される複数の仮想計算機を管理する第１の仮想マシンマネージャを実行し、
前記各仮想計算機上では、アプリケーションを実行するオペレーティングシステムを管理する第２の仮想マシンマネージャが実行され、
前記第１の仮想マシンマネージャは、前記第１の仮想マシンマネージャと前記第２の仮想マシンマネージャとの状態を管理する第１の管理情報を前記メモリに格納し、
前記第２の仮想マシンマネージャは、前記第２の仮想マシンマネージャと前記オペレーティングシステム又は前記アプリケーションとの状態を管理する第２の管理情報を前記メモリに格納し、
前記プロセッサは、当該プロセッサを制御するための制御情報を格納するレジスタと、前記レジスタに対する読み出し操作を検出した場合に、前記第１の管理情報又は前記第２の管理情報から値を読み出すシャドウイング機能とを備え、
前記第１の仮想マシンマネージャは、
前記第２の仮想マシンマネージャからの呼び出しを検出し、
前記第２の仮想マシンマネージャからの呼び出し要因が前記読み出しシャドウイング機能を有効化するための指示であるか否かを判定し、
前記第２の仮想マシンマネージャからの呼び出し要因が前記読み出しシャドウイング機能を有効化するための指示であると判定された場合に、前記第１の仮想マシンマネージャが、前記読み出しシャドウイング機能を有効化することを特徴とする計算機。
【請求項９】
前記シャドウイング機能は、さらに、前記プロセッサが、前記レジスタに対する書き込み操作を検出した場合に、前記第１の管理情報に対して所定の値を書き込む処理を実行し、
前記プロセッサは、
前記オペレーティングシステム又は前記アプリケーションから発行された前記レジスタへの書き込み要求を検出し、
前記シャドウイング機能を用いて、前記オペレーティングシステム又は前記アプリケーションから発行されたレジスタへの書き込み要求によって書き込まれる値に対応する前記所定の値を、前記第１の管理情報に書き込むことを特徴とする請求項８に記載の計算機。
【請求項１０】
前記第１の管理情報は、前記シャドウイング機能によって読み出される第１のシャドウデータを含み、
前記第２の管理情報は、前記シャドウイング機能によって読み出される第２のシャドウデータを含み、
前記第１の仮想マシンマネージャは、前記第２の管理情報から前記第２のシャドウデータを読み出し、
前記読み出された第２のシャドウデータに基づいて、前記第１の管理情報に含まれる前記第１のシャドウデータを更新し、
前記プロセッサは、
前記オペレーティングシステム又は前記アプリケーションから発行された前記レジスタの読み出し要求を検出し、
前記シャドウイング機能を用いて前記第１の管理情報の前記第１のシャドウデータから、前記オペレーティングシステム又は前記アプリケーションから発行された前記レジスタの読み出し要求の読み出し対象となる値を読み出し、前記読み出された読み出し対象となる値をオペレーティングシステム又は前記アプリケーションに応答することを特徴とする請求項８に記載の計算機。
【請求項１１】
前記第１の仮想マシンマネージャは、
前記第２の仮想マシンマネージャによって操作される前記レジスタに対する処理方針と、前記第２の仮想マシンマネージャによって操作される前記レジスタに対する応答として送信される応答値とが定義された処理方針表を前記メモリに格納し、
前記第２の仮想マシンマネージャからの呼び出し要因が前記読み出しシャドウイング機能を有効化するための指示でないと判定された場合、前記処理方針表を参照し、
前記第２の仮想マシンマネージャからの呼び出しに対する処理方針が前記シャドウイング機能を用いる処理であるか否かを判定し、
前記第２の仮想マシンマネージャからの呼び出しに対する処理方針がシャドウイング機能を用いる処理であると判定された場合に、前記シャドウイング機能を有効化し、
前記第１の管理情報に含まれる前記第１のシャドウデータに前記応答値を設定することを特徴とする請求項１０に記載の計算機。
【請求項１２】
前記レジスタは、複数の制御情報から構成される第２の制御情報を含み、
前記シャドウイング機能は、前記各第２の制御情報毎に有効化することが可能であって、
前記プロセッサは、
前記第２の仮想マシンマネージャからの呼び出しに対する処理方針がシャドウイング機能を用いる処理であると判定する場合に、前記各第２の制御情報毎に前記シャドウイング機能を有効化するか否かを判定し、
前記シャドウイング機能が有効化されないと判定された前記第２の制御情報については、前記シャドウイング機能が有効化されていないと判定された第２の制御情報に対応する情報を、前記レジスタから読み出し、
前記シャドウイング機能が有効化されると判定された前記第２の制御情報については、前記シャドウイング機能が有効化されていると判定された第２の制御情報に対応する情報を、前記シャドウイング機能を用いて、前記第１の管理情報から読み出すことを特徴とする請求項１１に記載の計算機。
【請求項１３】
前記レジスタは、前記プロセッサが前記メモリ上に格納されたソフトウェアの実行優先度を保持する第１の制御情報を含み、
前記計算機に含まれるメモリは、メモリ上の位置を一意に識別する第１のアドレス空間を有し、
前記仮想計算機には、前記メモリ上に仮想的なメモリが割り当てられ、前記仮想的なメモリ上の位置を一意に識別する第２のアドレス空間を有し、
前記第１のシャドウデータには、前記第１の制御情報に対する値として前記第１のアドレス空間に含まれる第１のアドレスが格納され、
前記第２のシャドウデータには、前記第１の制御情報に対する値として前記第２のアドレス空間に含まれる第２のアドレスが格納され、
前記第１の仮想マシンマネージャは、
前記第２の仮想マシンマネージャから前記第１の制御情報に対する更新要求を受信し、
前記更新要求を受信したときには、前記第１の仮想マシンマネージャに対して前記シャドウイング機能を有効化し、
前記シャドウイング機能を用いて前記第１のシャドウデータから前記第１のアドレスを読み出し、
前記読み出された第１のアドレスを、前記第２のアドレス空間に含まれ、前記読み出された第１のアドレスに対応する第２のアドレスに変換し、
前記第１の制御情報に前記読み出された第１のアドレスに対応する第２のアドレスを格納することを特徴とする請求項１０に記載の計算機。
【請求項１４】
前記レジスタは、前記プロセッサの状態を制御するための複数の特権レジスタであることを特徴とする請求項８に記載の計算機。
【発明の詳細な説明】
【技術分野】
【０００１】
仮想化計算機システムに関し、特に、仮想化支援機能を備えたプロセッサを用いた仮想計算機に関する。
【背景技術】
【０００２】
近年、Ｉｎｔｅｌ（登録商標、以下同じ）社のＸｅｏｎ（登録商標、以下同じ）  ＣＰＵを筆頭にサーバ向けＣＰＵのメニイコア化が進展しており、２０１０年頃には一つのＣＰＵに８コアが集積される見込みである。メニイコア化によってサーバ性能の余剰感が強まっており、余剰性能を活用する方法として仮想化ソフトウェアが注目され急速に普及している。
【０００３】
仮想化ソフトウェアは、物理的には１台のサーバ上で複数の仮想的なサーバ環境（仮想サーバ）を生成する。仮想サーバの種類として、物理的なサーバ資源（ＣＰＵコア、メモリ、Ｉ／Ｏデバイス）を空間的に分割して利用する論理区画（ＬＰＡＲ：Ｌｏｇｉｃａｌ  Ｐａｒｔｉｔｉｏｎ）と、サーバ資源を時分割共有する仮想計算機（ＶＭ：Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）との２つが知られている。
【０００４】
ＬＰＡＲを生成・制御する仮想化ソフトウェアを特にハイパバイザと呼ぶ。ハイパバイザはＬＰＡＲ間でサーバ資源を共有しない性質を利用し、物理サーバでの障害発生時に影響範囲を１ＬＰＡＲ内に限定可能であり、障害耐性に優れている。
【０００５】
一方、ＶＭを生成・制御する仮想化ソフトウェアを特に仮想計算機モニタ（ＶＭＭ：ＶＭ  Ｍｏｎｉｔｏｒ）と呼ぶ。ＶＭＭはサーバ資源をＶＭ間で共有でき、例えば物理的に搭載されたメモリ量以上のＶＭを稼働させる機能を有している。そのため、サーバ資源の利用効率に優れている。
【０００６】
更にＬＰＡＲとＶＭの両方式の利点を生かす運用形態として、２段ＶＭが知られている。２段ＶＭでは、物理サーバ上でハイパバイザを稼働させてＬＰＡＲを生成し、各ＬＰＡＲ上で更にＶＭＭを稼働させる。ＬＰＡＲ上で稼動するＶＭＭを特にＬｖ１ゲスト、ＶＭ上で稼動するＯＳを特にＬｖ２ゲストと呼ぶ。
【０００７】
ハイパバイザがＬＰＡＲ間での故障耐性を維持しつつ、ＬＰＡＲ上ではＶＭＭがサーバ資源を効率よく利用可能とする。
【０００８】
Ｘｅｏｎ  ＣＰＵでは仮想化ソフトウェアの実行を支援するＶＴ−ｘ（Ｖｉｒｔｕａｌ  Ｔｅｃｈｏｎｌｏｇｙ  ｆｏｒ  ＩＡ−３２  Ｐｒｏｃｅｓｓｏｒｓ）と呼ばれるハードウェア機構が搭載されている。
【０００９】
ＶＴ−ｘではハイパバイザ若しくはＶＭＭのいずれか一方のみを稼働させることを前提としていたため、２段ＶＭを実現しようとするとＶＴ−ｘ機構へのアクセスの競合が発生し、正常な処理が行えなかった。以下、Ｘｅｏｎ  ＣＰＵを前提に２段ＶＭを実現する方式について述べる。
【００１０】
一つは、ハイパバイザの機能拡張を行い、ＬＰＡＲ上で稼動するＶＭＭに対してＶＴ−ｘ機構を仮想的に提供すると共に、物理ＣＰＵ内部のＶＴ−ｘ機構に対するアクセスを調停する機能を設けることによって、２段ＶＭを実現する方法がある（例えば、特許文献１参照）。
【００１１】
他の方法としては、ＶＭｗａｒｅ社の仮想化ソフトウェア、ＶＭｗａｒｅ  Ｓｅｒｖｅｒ及びＶＭｗａｒｅ  ＥＳＸ  Ｓｅｒｖｅｒを組み合わせる方法がある（例えば、非特許文献１参照）。この方法では、ハイパバイザに相当するソフトウェアのみがＶＴ−ｘを利用して稼働する。ＶＭＭは、ＢＴ（Ｂｉｎａｒｙ  Ｔｒａｎｓｌａｔｉｏｎ）技術を用いて稼働する。ただし、ＢＴ技術を利用可能なＯＳが制限されている。
【００１２】
また、メインフレームにおける２段ＶＭを実現する方式として、単一の物理計算機を複数の論理区画（ＬＰＡＲ）に分割し、ＬＰＡＲ上で仮想的なＳＩＥ（Ｓｔａｒｔ  Ｉｎｔｅｒｐｒｅｔｉｖｅ  Ｅｘｅｃｕｔｉｏｎ）命令の実行／インタセプトを契機に、ＶＭＭが使用するＳＩＥパラメータとハイパバイザが使用するＳＩＥパラメータ間との間でデータの授受を行うものがある（例えば、特許文献２参照）。
【００１３】
また、ハードウェアが備える仮想化支援機能をＶＭＭに提供する方式としては、Ｒｅｄｈａｔ社のＫＶＭ（Ｋｅｒｎｅｌ−ｂａｓｅｄ  Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）を用いて、ＶＴ−ｘに相当する機能であるＳＶＭを搭載したＡＭＤ製のＣＰＵを用いて仮想環境上で仮想的なＳＶＭを提供する方法も知られている（例えば、非特許文献２参照）。
【先行技術文献】
【特許文献】
【００１４】
【特許文献１】特開２００９−３７４９号公報
【特許文献２】米国特許第４７９２８９５号明細書
【非特許文献】
【００１５】
【非特許文献１】Ｈｏｗ  ｔｏ  Ｉｎｓｔａｌｌ  ＶＭｗａｒｅ  ＥＳＸ  ４．０  ｏｎ  Ｗｏｒｋｓｔａｔｉｏｎ  ６．５．２  ａｓ  ａ  ＶＭ， ［平成２２年１月７日検索］，インターネット＜ｈｔｔｐ：／／ｘｔｒａｖｉｒｔ．ｃｏｍ／ｘｄ１００８９＞
【非特許文献２】Ａｖｉ  Ｋｉｖｉｔｙ、"Ａｖｉ  Ｋｉｖｉｔｙ'ｓ  ｂｌｏｇ"、［ｏｎｌｉｎｅ］、平成２０年９月２日、［平成２１年１２月２４日検索］、インターネット＜ｈｔｔｐ：／／ａｖｉｋｉｖｉｔｙ．ｂｌｏｇｓｐｏｔ．ｃｏｍ／２００８／０９／ｎｅｓｔｅｄ−ｓｖｍ−ｖｉｒｔｕａｌｉｚａｔｉｏｎ−ｆｏｒ−ｋｖｍ．ｈｔｍｌ＞
【発明の概要】
【発明が解決しようとする課題】
【００１６】
２段ＶＭではＯＳの他に２種類のソフトウェア（ハイパバイザ及びＶＭＭ）が動作するため、ＯＳのみを動作させる場合と比べて性能低下が発生する。前述した２種類のソフトウェアが動作する契機は幾つか存在する。Ｘｅｏｎ  ＣＰＵを用いた仮想環境下では、ＶＭＭ上で稼働するＯＳによる特権レジスタ操作を調停（エミュレーション）するケースが高い頻度で発生する。
【００１７】
したがって、ＶＭＭの種類に依存することなく、かつ、ＯＳが特権レジスタを操作する場合に性能低下が生じない２段ＶＭをＸｅｏｎ  ＣＰＵにおいて実現することを目的とする。
【課題を解決するための手段】
【００１８】
本発明の代表的な一例を示せば以下の通りである。すなわち、プロセッサと、前記プロセッサに接続されるメモリとを備え、前記プロセッサによって実行され、計算機の物理資源を仮想的に分割して生成される複数の仮想計算機を管理する第１の仮想マシンマネージャと、前記各仮想計算機上で実行され、アプリケーションを実行するオペレーティングシステムを管理する第２の仮想マシンマネージャと、前記第１の仮想マシンマネージャによって前記メモリに格納され、前記第１の仮想マシンマネージャと前記第２の仮想マシンマネージャとの状態を管理する第１の管理情報と、前記第２の仮想マシンマネージャによって前記メモリに格納され、前記第２の仮想マシンマネージャと前記オペレーティングシステム又は前記アプリケーションとの状態を管理する第２の管理情報とを有し、前記プロセッサが、当該プロセッサを制御するための制御情報を格納するレジスタと、前記レジスタに対する読み出し操作に応じて、前記第１の管理情報又は前記第２の管理情報から値を読み出すシャドウイング機能とを備えた計算機における仮想化方法であって、前記第１の仮想マシンマネージャが、前記第２の仮想マシンマネージャからの呼び出しを検出する第１のステップと、前記第１の仮想マシンマネージャが、前記第２の仮想マシンマネージャからの呼び出し要因が前記シャドウイング機能を有効化するための指示であるか否かを判定する第２のステップと、前記第２の仮想マシンマネージャからの呼び出し要因が前記シャドウイング機能を有効化するための指示であると判定された場合に、前記第１の仮想マシンマネージャが、前記シャドウイング機能を有効化する第３のステップと、を含むことを特徴とする。
【発明の効果】
【００１９】
第２の仮想マシンマネージャの種類に依存することなく、Ｘｅｏｎ  ＣＰＵを用いた、オペレーティングシステムからのレジスタへのアクセスによる性能低下を生じない仮想化を実現できる。
【図面の簡単な説明】
【００２０】
【図１】本発明の第１の実施形態の仮想計算機システムの構成例を示すブロック図である。
【図２】本発明の第１の実施形態の仮想計算機システムのソフトウェアとハードウェアとの要部を示すスタック図である。
【図３】本発明の第１の実施形態のメモリの記憶領域内部の一例を説明する図である。
【図４】本発明の第１の実施形態のレジスタ調停方針表の一例を示す説明図である。
【図５Ａ】本発明の第１の実施形態のＬｖ０  ＶＭＣＳのゲスト状態エリアの一例を示す説明図である。
【図５Ｂ】本発明の第１の実施形態のＬｖ１  ＶＭＣＳのゲスト状態エリアの一例を示す説明図である。
【図６Ａ】本発明の第１の実施形態のＬｖ０  ＶＭＣＳのシャドウイング設定の一例を示す説明図である。
【図６Ｂ】本発明の第１の実施形態のＬｖ１  ＶＭＣＳのシャドウイング設定の一例を示す説明図である。
【図７Ａ】本発明の第１の実施形態のＬｖ０  ＶＭＣＳのインタセプト設定の一例を示す説明図である。
【図７Ｂ】本発明の第１の実施形態のＬｖ１  ＶＭＣＳのインタセプト設定の一例を示す説明図である。
【図８】本発明の第１の実施形態のハイパバイザが実行する処理を説明するフローチャートである。
【図９】本発明の第１の実施形態における論理ＶＭ  ｅｘｉｔ処理の詳細を説明するフローチャートである。
【図１０】本発明の第１の実施形態における論理ＶＭ  ｅｎｔｒｙ処理の詳細を説明するフローチャートである。
【図１１】本発明の第１の実施形態のハイパバイザが実行するＣＲ０又はＣＲ４に対する更新処理を説明するフローチャートである。
【図１２】本発明の第１の実施形態のハイパバイザが実行するＴＰＲに対する更新処理を説明するフローチャートである。
【図１３】本発明の第１の実施形態の仮想計算機におけるＣＲ０又はＣＲ４の更新処理を説明するフローチャートである。
【図１４】本発明の第１の実施形態における、ゲスト命令実行時にＣＰＵが実行する処理を説明するフローチャートである。
【図１５】本発明の第１の実施形態のＳ１６２０におけるＴＰＲ参照処理の詳細を説明するフローチャートである。
【図１６】本発明の第１の実施形態のＳ１６３０におけるＴＰＲ更新処理の詳細を説明するフローチャートである。
【図１７】本発明の第１の実施形態のＳ１６４０におけるＣＲ０又はＣＲ４参照処理の詳細を説明するフローチャートである。
【図１８】本発明の第１の実施形態のＳ１６５０におけるＣＲ０又はＣＲ４更新処理の詳細を説明するフローチャートである。
【図１９】本発明の第２の実施形態におけるハイパバイザが実行するＴＰＲに対する更新処理を説明するフローチャートである。
【発明を実施するための形態】
【００２１】
以下、本発明の一実施形態を図面に基づいて説明する。
【００２２】
［第１の実施形態］
図１は、本発明の第１の実施形態の仮想計算機システムの構成例を示すブロック図である。
【００２３】
物理計算機１０は、仮想化支援機能であるＶＴ−ｘに対応したｘ８６（又はＩＡ−３２）互換のＣＰＵ７０−１〜７０−ｎを２つ以上（又は２ソケット以上）備え、これらのＣＰＵ７０−１〜７０−ｎはＱＰＩ（ＱＵＩＣＫ  Ｐａｔｈ  ＩｎｔｅｒＣｏｎｎｅｃｔ）８２０を介してＩＯＨ（Ｉ／Ｏ  Ｈｕｂ）８００及び主記憶装置９０に接続される。なお、以下の説明ではＣＰＵ７０−１〜７０−ｎを区別しない場合、ＣＰＵ７０と記載する。
【００２４】
ＩＯＨ８００には、バス８４０を介してＩ／Ｏインタフェース（Ｉ／Ｏ  Ｉ／Ｆ）８５０が接続される。Ｉ／Ｏインタフェース８５０は、ＬＡＮ８６０に接続されるネットワークアダプタ、ディスク装置８７０等に接続されるＳＣＳＩアダプタ、ＳＡＮ８９０（Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）に接続されるファイバーチャネルアダプタなどから構成される。
【００２５】
ＣＰＵ７０は、ＱＰＩ８２０を介して主記憶装置９０にアクセスし、ＩＯＨ８００を介してＩ／Ｏインタフェース８５０にアクセスして所定の処理を実行する。
【００２６】
なお、図１に示す例では、物理計算機１０は、一つのＩ／Ｏインタフェース８５０のみを備えているが、複数備えていてもよい。
【００２７】
なお、Ｉ／Ｏインタフェース８５０は、グラフィックコントローラを含んでオペレータとの間で入出力を行うコンソール８０にも接続され、画像の表示を行うことができる。
【００２８】
主記憶装置９０は、ＣＰＵ７０によって実行されるプログラム及び当該プログラムを実行するときに必要となる情報を格納し、例えば、メモリ等が考えられる。以下では、主記憶装置９０をメモリ９０とも記載する。
【００２９】
メモリ９０には、ハイパバイザ２０が読み出され、当該ハイパバイザ２０によって実現される各仮想計算機３０−１〜３０−ｎ上に、Ｌｖ２  ゲストＯＳ５０−１〜５０−ｎがそれぞれ実行される。さらに、各Ｌｖ２  ゲストＯＳ５０−１〜５０−ｎは仮想計算機３０−１〜３０−ｎ上で、任意のＡＰ（Ａｐｐｌｉｃａｔｉｏｎ）６０−１〜６０−ｎをそれぞれ実行する。なお、メモリ９０上の領域の割り当てについては、図３を用いて後述する。
【００３０】
仮想計算機３０−１〜３０−ｎの設定方法については、ハイパバイザ２０が、物理計算機１０が備える物理的な計算機資源を仮想的な計算機資源に変換し、複数の仮想計算機３０−１〜３０−ｎに仮想的な計算機資源を割り当てる。なお、仮想計算機３０−１〜３０−ｎに、物理計算機１０が備える計算機資源を割り当てる方法については、周知又は公知の技術を適宜用いればよいので、ここでは詳述しない。
【００３１】
仮想計算機３０−１〜３０−ｎは、それぞれ、独立した一つの計算機として稼働する。
【００３２】
仮想計算機３０−１〜３０−ｎ上には、ゲストＯＳ及びアプリケーションを管理する仮想化ソフトウェアとしてＬｖ１  ＶＭＭ４０−１〜４０−ｎがそれぞれ稼働する。図１に示す例では、Ｌｖ１  ＶＭＭ４０−１はＬｖ２  ゲストＯＳ５０−１を管理し、Ｌｖ１  ＶＭＭ４０−ｎはＬｖ２  ゲストＯＳ５０−ｎを管理する。また、Ｌｖ２  ゲストＯＳ５０−１〜５０−ｎは、それぞれ、ＡＰ６０−１〜６０−ｎを実行する。
【００３３】
すなわち、本実施形態の物理計算機１０上には、複数の仮想計算機３０が稼働し、各仮想計算機３０−１〜３０−ｎ上では複数のＬｖ２  ゲストＯＳ５０−１〜５０−ｎが稼働している。さらに、各Ｌｖ２  ゲストＯＳ５０−１〜５０−ｎ上では複数のＡＰ６０−１〜６０−ｎが実行される。
【００３４】
なお、ハイパバイザ２０を実現するためのプログラムは、記憶媒体としてのディスク装置８７０又はストレージ装置に格納され、物理計算機１０の起動時にメモリ９０へ読み出されてＣＰＵ７０が実行する。
【００３５】
なお、以下の説明では、個々の仮想計算機を３０−１〜３０−ｎを区別しない場合、仮想計算機３０と記載する。また、個々のＬｖ１  ＶＭＭ４０−１〜４０−ｎを区別しない場合、Ｌｖ１  ＶＭＭ４０と記載する。また、個々のＬｖ２  ゲストＯＳ５０−１〜５０−ｎを区別しない場合、Ｌｖ２  ゲストＯＳ５０と記載する。
【００３６】
図２は、本発明の第１の実施形態の仮想計算機システムのソフトウェアとハードウェアとの要部を示すスタック図である。
【００３７】
物理計算機１０上には、複数の仮想計算機３０を管理するハイパバイザ２０が稼動している。各仮想計算機３０上では、ハイパバイザ２０によって提供される仮想的な計算機資源を用いてＬｖ１  ＶＭＭ４０が稼動する。また、Ｌｖ１  ＶＭＭ４０上では、一以上のＬｖ２  ゲストＯＳ５０が稼動する。
【００３８】
ＶＴ−ｘ機能を備えるＣＰＵは、通常の動作モードとは別に、仮想化支援機能を提供するＶＭＸモードを備える。ＶＭＸモードには、ＶＭＸ  ｎｏｎ−ｒｏｏｔモードとＶＭＸ  ｒｏｏｔモードの二つの動作モードが含まれる。
【００３９】
ＶＭＸ  ｎｏｎ−ｒｏｏｔモードは、Ｌｖ１  ＶＭＭ４０、又は、Ｌｖ２  ゲストＯＳ５０若しくはＡＰ６０が実行される動作モードである。ＶＭＸ  ｒｏｏｔモードは、ハイパバイザ２０が実行される動作モードである。
【００４０】
前述した２つの動作モード間の移行については、ＶＭＸ  ｒｏｏｔモードからＶＭＸ  ｎｏｎ−ｒｏｏｔモードへの移行である「ＶＭ  ｅｎｔｒｙ」と、ＶＭＸ  ｎｏｎ−ｒｏｏｔモードからＶＭＸ  ｒｏｏｔモードへの移行である「ＶＭ  ｅｘｉｔ」との２つの状態移行がある。
【００４１】
ＶＴ−ｘ機能を利用するハイパバイザ２０は、各仮想計算機３０の状態及びＣＰＵ７０を制御するための情報（ＶＭＸ  ｎｏｎ−ｒｏｏｔモードにおけるＣＰＵ７０の制御及び各ＶＭＸモード間の移行に関する情報）として、ＶＭＣＳ（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ  Ｃｏｎｔｒｏｌ  Ｓｔｒｕｃｔｕｒｅ）と呼ばれるデータを格納する。
【００４２】
図２に示す例では、ＣＰＵ仮想化データ３１０−１〜３１０−ｎはハイパバイザ２０が格納するＶＭＣＳである。詳細については後述する。また、Ｌｖ１  ＶＭＭ４０も同様にＬｖ２  ゲストＯＳ５０及びハイパバイザ２０によって割り当てられた仮想的なＣＰＵ（すなわち、仮想計算機３０）を制御するための情報としてＬｖ１  ＶＭＣＳ５００−１〜５００−ｎを格納する。
【００４３】
ＶＭＸ  ｒｏｏｔモードからＶＭＸ  ｎｏｎ−ｒｏｏｔモードへの移行（ＶＭ  ｅｎｔｒｙ）方法の一例については、以下の通りである。
【００４４】
通常の動作モードからＶＭＸモードへ移行する際には、ハイパバイザ２０がＶＭＸＯＮ命令を発効し、ＣＰＵ７０の動作モードをＶＭＸモードへ移行させる。
【００４５】
ＶＭＸモードに移行したハイパバイザ２０は、Ｌｖ０  ＶＭＣＳ４００にＬｖ２  ゲストＯＳ５０又はＡＰ６０を実行させるための情報を書き込んだ後にＶＭ  ｅｎｔｒｙ命令（ＶＭＬＡＵＮＣＨ命令又はＶＭＲＥＳＵＭＥ命令）を発行し、ＶＭＸ  ｒｏｏｔモードからＶＭＸ  ｎｏｎ−ｒｏｏｔモードへ移行する（ＶＭ  ｅｎｔｒｙ）。
【００４６】
ＶＭＸ  ｎｏｎ−ｒｏｏｔモードからＶＭＸ  ｒｏｏｔモードへの移行（ＶＭ  ｅｘｉｔ）方法の一例については、以下の通りである。
【００４７】
Ｌｖ２  ゲストＯＳ５０が特権命令を発効したときなど所定の要因が発生した場合にＣＰＵ７０がハイパバイザ２０にＶＭ  ｅｘｉｔを通知する。
【００４８】
ハイパバイザ２０は、ＶＭ  ｅｘｉｔを検知すると所定のエミュレーションを実行してＬｖ２  ゲストＯＳ５０の処理等を完了した後、Ｌｖ１  ＶＭＣＳ５００を必要に応じて書き換えた後にＶＭ  ｅｎｔｒｙ命令を発行してＶＭＸ  ｎｏｎ−ｒｏｏｔモードからＶＭＸ  ｒｏｏｔモードへ移行する。
【００４９】
本実施形態では、Ｌｖ１  ＶＭＭ４０とＬｖ２  ゲストＯＳ５０又はＡＰ６０との間の動作モードの移行も発生する。以下では、Ｌｖ１  ＶＭＭ４０からＬｖ２  ゲストＯＳ５０又はＡＰ６０への動作モードの移行を論理ＶＭ  ｅｎｔｒｙと呼び、Ｌｖ２  ゲストＯＳ５０又はＡＰ６０からＬｖ１  ＶＭＭ４０への動作モードの移行を論理ＶＭ  ｅｘｉｔと呼ぶ。
【００５０】
なお、本実施形態では、論理ＶＭ  ｅｎｔｒｙが発生した場合に、ハイパバイザ２０がＬｖ１  ＶＭＣＳ５００の内容（ゲスト状態エリア５１０及びホスト状態エリア５２０）を読み出し、Ｌｖ０  ＶＭＣＳ４００のゲスト状態エリア４１０に設定することによって、仮想計算機３０がＬｖ２  ゲストＯＳ５０にＶＴ−ｘ機能の提供を実現している。
【００５１】
以下、ＶＴ−ｘ機能を備えるＣＰＵ７０におけるハードウェア及びソフトウェアの構成について詳述する。
【００５２】
ＶＴ−ｘ機能を備えるＣＰＵ７０は、ＶＭＥＸＩＴ判定部１００、ＶＭＸモードフラグ１１０、ＶＭＣＳポインタ１２０、シャドウイング機能１３０、及び特権レジスタ１４０を含む。
【００５３】
ＶＭＥＸＩＴ判定部１００は、仮想計算機３０の動作中に、Ｌｖ２  ゲストＯＳ５０の動作を確認してハイパバイザ２０が呼び出される処理等に該当するか否かを判定する。すなわち、ＶＭ  ｅｘｉｔが発生するか否かが判定される。
【００５４】
ＶＭＸモードフラグ１１０は、実行中の命令がハイパバイザ２０又は仮想計算機３０のいずれの命令であるかを区別するためのフラグである。具体的には、実行中の命令がハイパバイザ２０である場合は「ＶＭＸ  ｒｏｏｔ」を示す値を、実行中の命令が仮想計算機３０である場合は「ＶＭＸ  ｎｏｎ−ｒｏｏｔ」を示す値が格納される。
【００５５】
ＶＭＣＳポインタ１２０は、ハイパバイザ２０によって格納されるＣＰＵ仮想化データ３１０のメモリアドレスを格納する。
【００５６】
シャドウイング機能１３０は、仮想計算機３０上で特権レジスタ参照命令等が実行される場合に、特権レジスタ１４０に格納される値の代わりに、ＣＰＵ７０がメモリ９０（例えば、メモリ）上に格納されたデータを読み出して応答するための機能である。当該シャドウイング機能１３０によって、ハイパバイザ２０を起動することなく特権レジスタ１４０を操作することが可能となるため、性能の低下を防止することが可能となる。
【００５７】
シャドウイング機能１３０は、ハイパバイザ２０に提供される機能であるが、本実施形態では、後述する方法によって仮想計算機３０についてもシャドウイング機能を提供することが可能となる。したがって、Ｌｖ２  ゲストＯＳ５０又はＡＰ６０が特権レジスタ１４０の操作をする場合に、シャドウイング機能が用いられることによってＬｖ１  ＶＭＭ４０及びハイパバイザ２０の実行を必要としないため、性能低下を防止することが可能となる。
【００５８】
特権レジスタ１４０は、ＣＰＵ７０が保持する特権レジスタであって、コントロールレジスタ０（ＣＲ０）、コントロールレジスタ４（ＣＲ４）、及びタスクプライオリティレジスタ（ＴＰＲ）等が含まれる。なお、図示していないが、ＣＰＵ７０はこれ以外のレジスタを保持する。
【００５９】
ＣＲ０及びＣＲ４は、ＣＰＵ７０の制御情報を格納する１ビットレジスタ（フラグ）の集合体である。制御情報には、ＰＧ、ＮＥ、ＰＥ、ＶＭＸＥ及びＳＭＸＥ等が含まれる。
【００６０】
ＴＰＲは、命令実行の優先度を格納するレジスタであり、外部からの割り込み処理と現在処理中の命令とのどちらを優先的に実行すべきかを判定する場合に使用される。
【００６１】
本実施形態では、ＣＲ０、ＣＲ４及びＴＰＲに対する操作時にシャドウイング機能１３０が用いられる。詳細については後述する。
【００６２】
ハイパバイザ２０は、エミュレータ２００、レジスタ調停方針表２２０、及び仮想化データ３００を含む。
【００６３】
エミュレータ２００は、各仮想計算機３０間の調停を行う。エミュレータ２００は、Ｌｖ０  ＶＭＣＳ４００の設定を仮想計算機３０の状態に応じて変更するためのＶＭＣＳ制御部２１０を含む。ＶＭＣＳ制御部２１０によって、Ｌｖ０  ＶＭＣＳ４００とＬｖ１  ＶＭＣＳ５００との対応関係が管理される。
【００６４】
レジスタ調停方針表２２０は、特権レジスタ又は特権レジスタの各フラグ毎にどのようなエミュレーションを実行するかを示す調停方針を格納する。詳細については、図４を用いて後述する。
【００６５】
仮想化データ３００は、仮想計算機３０の状態を格納する。仮想化データ３００は、ＣＰＵ７０の状態を保持するＣＰＵ仮想化データ３１０を含む。
【００６６】
ＣＰＵ仮想化データ３１０は、ＣＰＵ７０が備えるＶＴ−ｘ機能を制御するためのＶＭＣＳを含む。各仮想計算機３０毎に一つのＣＰＵ仮想化データ３１０が格納される。ＣＰＵ仮想化データ３１０は、Ｌｖ１  ＶＭＣＳポインタ３２０、論理ＶＭＸモードフラグ３３０、論理ＴＰＲ３４０及びＬｖ０  ＶＭＣＳ４００を含む。
【００６７】
Ｌｖ１  ＶＭＣＳポインタ３２０は、仮想計算機３０のＬｖ１  ＶＭＣＳ５００が配置されたメモリ９０上のアドレスを格納する。メモリ９０のアドレスとは、メモリ９０を一意に識別するアドレス体系（物理計算機のアドレス空間）におけるアドレス値である。
【００６８】
論理ＶＭＸモードフラグ３３０は、仮想計算機３０におけるＶＭＸモードフラグであり、ＶＭＸモードフラグ１１０と同一のものである。論理ＶＭＸモードフラグ３３０によって、仮想計算機３０に割り当てられた仮想的なＣＰＵの動作モードが「ＶＭＸ  ｒｏｏｔモード」又は「ＶＭＸ  ｎｏｎ−ｒｏｏｔモード」のいずれであるかを示す値を格納する。
【００６９】
論理ＴＰＲ３４０は、仮想計算機３０のＴＰＲである。
【００７０】
Ｌｖ０  ＶＭＣＳ４００は、各仮想計算機３０の状態、ハイパバイザ２０の状態及びＣＰＵ７０を制御するための情報を格納する。Ｌｖ０  ＶＭＣＳ４００は、ゲスト状態エリア４１０、ホスト状態エリア４２０、シャドウイング設定４３０、インタセプト設定４４０及びＥｘｉｔ情報エリア４５０を含む。
【００７１】
ゲスト状態エリア４１０は、仮想計算機３０に割り当てられた仮想的なＣＰＵ（図示省略）の状態を格納する。すなわち、仮想計算機３０に割り当てられた仮想的なＣＰＵが保持する特権レジスタＣＲ０及びＣＲ４等のレジスタ状態などのステータスが格納される。
【００７２】
例えば、ＶＭ  ｅｎｔｒｙ時にＣＰＵ７０がゲスト状態エリア４１０の内容を特権レジスタ１４０に書き込むことによって、仮想計算機３０等の実行が可能となる。また、ＶＭ  ＶＭ  ｅｘｉｔ時には、ＣＰＵ７０が保持する特権レジスタ１４０の値をゲスト状態エリア４１０に格納することによって、仮想計算機３０を再度実行する時に必要となる情報を保持することが可能となる。
【００７３】
なお、ゲスト状態エリア４１０の詳細については、図５Ａを用いて後述する。
【００７４】
ホスト状態エリア４２０は、ハイパバイザ２０が動作するためのＣＰＵ７０のレジスタ状態などのステータスを格納する。例えば、ＶＭ  ｅｘｉｔ時にＣＰＵ７０がホスト状態エリア４２０の内容を特権レジスタ１４０等に書き込むことによって、ハイパバイザ２０の実行が可能となる。また、ＶＭ  ｅｎｔｒｙ時には、ＣＰＵ７０が保持する特権レジスタ１４０等の値をホスト状態エリア４２０に格納することによって、ハイパバイザ２０を再度実行する時に必要となる情報を保持することが可能となる。
【００７５】
シャドウイング設定４３０は、シャドウイング機能を制御するための情報を格納する。具体的には、特権レジスタ１４０の操作時にシャドウイング機能を有効化するか否かを示す情報と、シャドウイング機能が有効化された場合に読み出されるシャドウデータに関する情報とが格納される。シャドウイング設定４３０の詳細については、図６Ａを用いて後述する。
【００７６】
インタセプト設定４４０は、ＶＭ  ｅｘｉｔが発生する条件を格納する。例えば、特定の特権レジスタを操作する場合等にＶＭ  ｅｘｉｔが発生するか否かを示す情報が格納される。インタセプト設定４４０の詳細については、図７Ａを用いて後述する。
【００７７】
Ｅｘｉｔ情報エリア４５０は、ＶＭ  ｅｘｉｔの原因に関する詳細情報を格納する。
【００７８】
仮想計算機３０は、Ｌｖ１  ＶＭＭ４０、Ｌｖ２  ゲストＯＳ５０及びＡＰ６０を含む。
【００７９】
Ｌｖ１  ＶＭＭ４０は、複数のＬｖ２  ゲストＯＳ５０を制御する。Ｌｖ１  ＶＭＭ４０は、仮想計算機３０上でＶＴ−ｘを実現するためのＬｖ１  ＶＭＣＳ５００を含む。Ｌｖ１  ＶＭＣＳ５００は、Ｌｖ０  ＶＭＣＳ４００と同一のデータ構造であり、ゲスト状態エリア５１０、ホスト状態エリア５２０、シャドウイング設定５３０、インタセプト設定５４０及びＥｘｉｔ情報エリア５５０を含む。
【００８０】
ゲスト状態エリア５１０はゲスト状態エリア４１０と、ホスト状態エリア５２０はホスト状態エリア４２０と、シャドウイング設定５３０はシャドウイング設定４３０と、インタセプト設定５４０はインタセプト設定４４０と、Ｅｘｉｔ情報エリア５５０はＥｘｉｔ情報エリア４５０と対応するため説明を省略する。
【００８１】
Ｌｖ２  ゲストＯＳ５０は、Ｌｖ１  ＶＭＭ４０上で稼働するＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）である。また、ＡＰ６０は、Ｌｖ２  ゲストＯＳ５０上で稼働するアプリケーションである。Ｌｖ２  ゲストＯＳ５０及びＡＰ６０は、複数あってもよい。
【００８２】
図３は、本発明の第１の実施形態のメモリ９０の記憶領域内部の一例を説明する図である。
【００８３】
ハイパバイザ２０は、メモリ９０の割り当てを管理しており、メモリ９０上に当該ハイパバイザ２０自身を配置する領域と仮想計算機３０が使用する領域とを割り当てる。例えば、図３に示すように、ハイパバイザ２０は、ハイパバイザ２０自身にアドレスＡＤ０〜ＡＤ１を、仮想計算機３０−１にアドレスＡＤ１〜ＡＤ２を、仮想計算機３０−ｎにアドレスＡＤ３〜ＡＤ４を割り当てる。
【００８４】
ハイパバイザ２０自身に割り当てられたアドレス領域には、エミュレータ２００、仮想化データ３００、及びレジスタ調停方針表２２０が割り当てられる。
【００８５】
仮想計算機３０に割り当てられたアドレス領域には、Ｌｖ１  ＶＭＭ４０及びＬｖ２  ゲストＯＳ５０が割り当てられる。なお、仮想計算機３０は、ハイパバイザ２０によって割り当てられたアドレス領域を仮想計算機３０が備えるメモリのアドレス領域として認識する。
【００８６】
図４は、本発明の第１の実施形態のレジスタ調停方針表２２０の一例を示す説明図である。
【００８７】
レジスタ調停方針表２２０は、仮想計算機３０が特権レジスタ１４０を操作する場合の対処方法が定義されており、レジスタ名６０５、調停方針６１０及びハイパバイザ固有値６１５を含む。
【００８８】
レジスタ名６０５は、特権レジスタ１４０又は特権レジスタ１４０のフラグの名称を格納する。
【００８９】
調停方針６１０は、レジスタ名６０５に対応するレジスタに対する対処方法を格納する。格納される対処方法としては、「スルー」、「インタセプト」及び「シャドウイング」の３つがある。
【００９０】
「スルー」は、仮想計算機３０に特権レジスタ１４０を直接操作させる。「インタセプト」は、仮想計算機３０が特権レジスタ１４０を操作する場合に、ハイパバイザ２０によってエミュレーションが行われる。「シャドウイング」は、仮想計算機３０が特権レジスタ１４０を操作する場合に、ＣＰＵ７０が備えるシャドウイング機能１３０が用いられる。これによって、ハイパバイザ２０が実行されることなく、メモリ９０上のデータを応答及び更新できる。
【００９１】
ハイパバイザ固有値６１５には、調停方針６１０が「インタセプト」又は「シャドウイング」であるレジスタ（フラグ）に対して、ハイパバイザ２０が保持すべき値が格納される。なお、ハイパバイザ固有値６１５は、Ｌｖ０  ＶＭＣＳ４００のゲスト状態エリア４１０に設定される値である。
【００９２】
ここで、ＶＭＸモード時における特権レジスタ１４０の設定について説明する。
【００９３】
ＶＭＸモードでは、ＣＰＵ７０の動作を制限するため、特権レジスタＣＲ０及びＣＲ４の特定のフラグは特定の値に固定されている。具体的には、ＣＲ０．ＰＥ、ＣＲ０．ＮＥ、ＣＲ０．ＰＧ及びＣＲ４．ＶＭＸＥは「１」に固定される。なお、これらの特定のフラグに未対応の値が設定された場合には、ＶＭＸＯＮ命令は失敗する。
【００９４】
なお、ＴＰＲについては、特定の値に固定される必要はないが、ハイパバイザ２０（又はＬｖ１  ＶＭＭ４０）が割り込みを検知できない可能性があるため、「０」を固定していることが望ましい。
【００９５】
なお、レジスタ調停方針表２２０は、図４に示すようなテーブルとして格納されていなくともよく、特権レジスタ１４０、調停方針６１０及びハイパバイザ固有値６１５の対応関係がわかるならばどのような形で格納されていてもよい。
【００９６】
図５Ａは、本発明の第１の実施形態のＬｖ０  ＶＭＣＳ４００のゲスト状態エリア４１０の一例を示す説明図である。図５Ｂは、本発明の第１の実施形態のＬｖ１  ＶＭＣＳ５００のゲスト状態エリア５１０の一例を示す説明図である。
【００９７】
ゲスト状態エリア４１０は、仮想計算機３０の命令を実行する時に必要となる特権レジスタ１４０の値を格納する。ゲスト状態エリア４１０は、フラグ名６２０及びゲスト動作時のレジスタの保持値６２５を含む。
【００９８】
フラグ名６２０は、特権レジスタ１４０の各フラグに対応するレジスタの名称を格納する。ゲスト動作時のレジスタの保持値６２５は、仮想計算機３０が動作する場合にＣＰＵ７０に設定される値を格納する。
【００９９】
ゲスト状態エリア５１０は、Ｌｖ２  ゲストＯＳ５０の命令を実行する時に必要となる特権レジスタ１４０の値を格納する。ゲスト状態エリア５１０は、フラグ名６３０及びゲスト動作時のレジスタの保持値６３５を含む。フラグ名６３０はフラグ名６２０と同一のものであり、ゲスト動作時のレジスタの保持値６３５はゲスト動作時のレジスタの保持値６２５と同一のものである。
【０１００】
なお、ゲスト状態エリア４１０とゲスト状態エリア５１０とに格納される値は、同一である必要はない。
【０１０１】
図６Ａは、本発明の第１の実施形態のＬｖ０  ＶＭＣＳ４００のシャドウイング設定４３０の一例を示す説明図である。図６Ｂは、本発明の第１の実施形態のＬｖ１  ＶＭＣＳ５００のシャドウイング設定５３０の一例を示す説明図である。
【０１０２】
シャドウイング設定４３０は、仮想計算機３０が特権レジスタ１４０を操作する場合におけるシャドウイング機能の設定を格納する。シャドウイング設定４３０は、シャドウイング機能設定テーブル４３０１と、シャドウデータ設定テーブル４３０２、４３０３とを含む。
【０１０３】
シャドウイング機能設定テーブル４３０１は、シャドウイング機能を有効化するか否かを設定するためのテーブルであり、シャドウイング対象名６４０及びシャドウイング有効化フラグ６４５を含む。
【０１０４】
シャドウイング対象名６４０は、特権レジスタ１４０又は特権レジスタ１４０の各フラグに対応するレジスタの名称を格納する。具体的には、ＣＲ０及びＣＲ４については、各フラグごとのレジスタの名称が格納され、ＴＰＲについては、ＴＰＲ自身の名称が格納される。
【０１０５】
シャドウイング有効化フラグ６４５は、シャドウイング対象名６４０に対応するレジスタに対して、シャドウイング機能を有効化するか否かを示す情報を格納する。具体的には、シャドウイング有効化フラグ６４５に「１」が格納されている場合、シャドウイング機能が有効化され、シャドウイング有効化フラグ６４５に「０」が格納されている場合、シャドウイング機能が無効化される。
【０１０６】
シャドウデータ設定テーブル４３０２は、特権レジスタ１４０のうち、ＣＲ０及びＣＲ４に対してシャドウイング機能が有効化された場合に読み出されるシャドウデータを格納する。
【０１０７】
ここで、シャドウデータとは、仮想計算機３０が特権レジスタ１４０を操作する場合に、特権レジスタ１４０に格納される値の代わりに、読み出し又は書き込みがされるデータである。なお、シャドウデータはメモリ９０に格納される。
【０１０８】
シャドウデータ設定テーブル４３０２は、シャドウデータ名６５０と、シャドウデータ６５５とを含む。
【０１０９】
シャドウデータ名６５０は、シャドウイング機能が利用されるＣＲ０及びＣＲ４の各フラグに対応するシャドウデータの名称である。
【０１１０】
シャドウデータ６５５は、シャドウイング有効化フラグ６４５が有効である場合に読み出されるシャドウデータを格納する。
【０１１１】
例えば、ＣＲ０が読み出される場合には、まず、シャドウイング有効化フラグ６４５が確認され、シャドウイング機能が有効化されているフラグについては、当該フラグに対応するシャドウデータ６５５が読み出され、シャドウイング機能が無効化されているフラグについては、ＣＲ０から当該フラグに対応する値がそのまま読み出され、これらの読み出された値がマージされて一つのＣＲ０として読み出される。
【０１１２】
シャドウデータ設定テーブル４３０３は、特権レジスタ１４０のうち、ＴＰＲに対してシャドウイング機能が有効化された場合に読み出されるシャドウデータを格納する。シャドウデータ設定テーブル４３０３は、シャドウデータ名６６０及びシャドウデータアドレス６６５を含む。
【０１１３】
シャドウデータ名６６０は、シャドウイング機能が有効化されたＴＰＲに対応するシャドウデータの名称である。
【０１１４】
シャドウデータアドレス６６５は、シャドウイング有効化フラグ６４５が有効である場合に読み出されるデータが格納されるポインタ（メモリ９０のアドレス）を格納する。
【０１１５】
例えば、ＴＰＲに対してシャドウイング機能が有効化されている場合には、シャドウデータアドレス６６５に格納されるメモリ９０のアドレスにアクセスすることによって、当該アドレスに格納されたシャドウデータが読み出される。
【０１１６】
以下、特権レジスタ１４０に対するゲストの処理について説明する。ここで、ゲストとは、例えば、ハイパバイザ２０からみたＬｖ１  ＶＭＭ４０、又は、Ｌｖ１  ＶＭＭ４０からみたＬｖ２  ゲストＯＳ５０若しくはＡＰ６０等のことを示す。
【０１１７】
シャドウイング有効化フラグ６４５が「０」の場合における読み出し処理については、ゲストは特権レジスタ１４０そのものを読み出す。また、シャドウイング有効化フラグ６４５が「０」の場合における書き込み処理については、ゲストは特権レジスタ１４０に対して直接書き込みを実行する。
【０１１８】
シャドウイング有効化フラグ６４５が「１」の場合における読み出し処理については、対応するフラグのシャドウデータ６５５が読み出される。また、シャドウイング有効化フラグ６４５が「１」の場合における書き込み処理については、ゲストがシャドウデータ６５５と異なる値を書き込む命令を発効した場合には、ＶＭ  ｅｘｉｔが発生する。
【０１１９】
シャドウイング設定５３０は、Ｌｖ２  ゲストＯＳ５０又はＡＰ６０が特権レジスタ１４０を操作する場合におけるシャドウイング機能の設定を格納する。シャドウイング設定５３０は、シャドウイング機能設定テーブル５３０１と、シャドウイング機能が有効化された場合に読み出されるシャドウデータ設定テーブル５３０２、５３０３とを含む。
【０１２０】
シャドウイング機能設定テーブル５３０１と、シャドウデータ設定テーブル５３０２、５３０３とは、それぞれ、シャドウイング機能設定テーブル４３０１と、シャドウデータ設定テーブル４３０２、４３０３とに対応する。なお、シャドウデータアドレス６６５には、仮想計算機３０のメモリアドレスが格納される。仮想計算機３０のメモリアドレスは、当該仮想計算機３０に割り当てられたメモリ（図３参照）を一意に識別するアドレス体系（仮想計算機のアドレス空間）におけるアドレス値である。
【０１２１】
なお、シャドウイング設定４３０とシャドウイング設定５３０とに格納されるデータは同一でなくてもよい。
【０１２２】
図７Ａは、本発明の第１の実施形態のＬｖ０  ＶＭＣＳ４００のインタセプト設定４４０の一例を示す説明図である。図７Ｂは、本発明の第１の実施形態のＬｖ１  ＶＭＣＳ５００のインタセプト設定５４０の一例を示す説明図である。
【０１２３】
インタセプト設定４４０は、仮想計算機３０の各動作に対してハイパバイザ２０が呼び出されるＶＭ  ｅｘｉｔの発生要因を規定する。インタセプト設定４４０は、インタセプト対象名７００及びインタセプト有効化フラグ７０５を含む。
【０１２４】
インタセプト対象名７００は、ＶＭ  ｅｘｉｔが発生する要因となる命令の名称を格納する。
【０１２５】
インタセプト有効化フラグ７０５は、ＶＭ  ｅｘｉｔが発生するか否かを示す値を格納する。具体的には、インタセプト有効化フラグ７０５に格納される値が「０」である場合にはＶＭ  ｅｘｉｔは発生せず、「１」である場合にはＶＭ  ｅｘｉｔが発生する。
【０１２６】
なお、ＣＲ８は、ＴＰＲのエイリアスである。ＴＰＲの参照時（読み出し時）にＶＭ  ｅｘｉｔが発生するか否かは、インタセプト対象名７００が「ＣＲ８−ｓｔｏｒｅ  ｅｘｉｔｉｎｇ」のエントリに対して設定され、ＴＰＲの更新時（書き込み）にＶＭ  ｅｘｉｔが発生するか否かは、インタセプト対象名７００が「ＣＲ８−ｌｏａｄ  ｅｘｉｔｉｎｇ」のエントリに対して設定される。
【０１２７】
インタセプト設定５４０は、Ｌｖ２  ゲストＯＳ５０又はＡＰ６０の各動作に対してＬｖ１  ＶＭＭ４０が呼び出される論理ＶＭ  ｅｘｉｔの発生要因を規定する。インタセプト設定５４０は、インタセプト対象名７１０及びインタセプト有効化フラグ７１５を含む。
【０１２８】
インタセプト対象名７１０は、インタセプト対象名７００と同一のものである。また、インタセプト有効化フラグ７１５は、インタセプト有効化フラグ７０５と同一のものである。
【０１２９】
なお、インタセプト設定４４０とインタセプト設定５４０とに格納されるデータは同一でなくてもよい。
【０１３０】
ここで、ＶＭＸ  ｎｏｎ−ｒｏｏｔモード時における特権レジスタ１４０の操作について説明する。なお、以下の説明では、仮想計算機３０が特権レジスタ１４０を操作する場合について説明する。
【０１３１】
ＣＲ０又はＣＲ４に対する読み出し操作については、シャドウイング有効化フラグ６４５が「１」のフラグは、当該フラグに対応するシャドウデータが読み出される。シャドウイング有効化フラグ６４５が「０」のフラグについては、ＣＲ０又はＣＲ４の当該フラグがそのまま読み出される。ＣＲ０又はＣＲ４の全てのフラグについて、シャドウイング有効化フラグ６４５が「０」である場合には、ＣＲ０又はＣＲ４がそのまま読み出されることになる。
【０１３２】
ＴＰＲに対する読み出し操作については、インタセプト設定４４０の「ＣＲ８−ｓｔｏｒｅ  ｅｘｉｔｉｎｇ」が「０」で、シャドウイング機能設定テーブル４３０１の「ＵｓｅＴｐｒＳｈａｄｏｗ」が「０」である場合、ＴＰＲがそのまま読み出される。
【０１３３】
また、インタセプト設定４４０の「ＣＲ８−ｓｔｏｒｅ  ｅｘｉｔｉｎｇ」が「０」で、シャドウイング機能設定テーブル４３０１の「ＵｓｅＴｐｒＳｈａｄｏｗ」が「１」である場合、シャドウデータ設定テーブル４３０３の「Ｖｉｒｔｕａｌ  Ａｐｉｃ  Ｐａｇｅ」のシャドウデータアドレス６６５に格納されるアドレスが読み出される。
【０１３４】
また、インタセプト設定４４０の「ＣＲ８−ｓｔｏｒｅ  ｅｘｉｔｉｎｇ」が「１」である場合には、シャドウイング機能設定テーブル４３０１の「ＵｓｅＴｐｒＳｈａｄｏｗ」の値にかかわらず、ＶＭ  ｅｘｉｔが発生する。
【０１３５】
ＣＲ０に対する書き込み操作については、ＶＭ  ｅｘｉｔが発生しない場合、シャドウイング有効化フラグ６４５が「１」、すなわち、シャドウイング機能が有効化されたＣＲ０のフラグに対する書き込みは実行されない。
【０１３６】
その他のフラグに対する書き込みについては、Ｌｖ０  ＶＭＣＳ４００のＶＭ  ｅｘｅｃｕｔｉｏｎエリア（図示省略）の「ｕｎｒｅｓｔｒｉｃｔｅｄ  ｇｕｅｓｔ」の設定に依存する。具体的には、以下の通りである。
【０１３７】
「ｕｎｒｅｓｔｒｉｃｔｅｄ  ｇｕｅｓｔ」が「０」である場合、ＶＭＸモードにおいて対応していない値をＣＲ０内のいずれかのフラグに設定しようとしたならば、「ｇｅｎａｒａｌ−ｐｒｏｔｅｃｔｉｏｎ  ｅｘｃｅｐｔｉｏｎ」が発生する。
【０１３８】
「ｕｎｒｅｓｔｒｉｃｔｅｄ  ｇｕｅｓｔ」が「１」である場合、ＣＲ０の０ビット目（ＰＥ）又は３１ビット目（ＰＧ）以外のＣＲ０内のいずれかのフラグにＶＭＸモードにおいて対応していない値を設定しようとしたならば、「ｇｅｎａｒａｌ−ｐｒｏｔｅｃｔｉｏｎ  ｅｘｃｅｐｔｉｏｎ」が発生する。しかし、ＣＲ０．ＰＥ＝０及びＣＲ０．ＰＧ＝１、又は、ＣＲ０．ＰＧ＝１、ＣＲ４．ＰＡＥ＝０及びＩＡ３２＿ＥＦＥＲ．ＬＭＥ＝０となるならば、書き込みの実行に対しては、「ｇｅｎａｒａｌ−ｐｒｏｔｅｃｔｉｏｎ  ｅｘｃｅｐｔｉｏｎ」が発生した状態を保ち続ける。
【０１３９】
ＣＲ４に対する書き込み操作については、ＶＭ  ｅｘｉｔが発生しない場合、シャドウイング有効化フラグ６４５が「１」、すなわち、シャドウイング機能が有効化されたＣＲ４のフラグに対する書き込みは実行されない。ＶＭＸモードにおいて対応していない値をＣＲ４内のいずれかのフラグにセットしようとしたならば、「ｇｅｎａｒａｌ−ｐｒｏｔｅｃｔｉｏｎ  ｅｘｃｅｐｔｉｏｎ」が発生する。
【０１４０】
ＴＰＲに対する書き込み操作については、インタセプト設定４４０の「ＣＲ８−ｌｏａｄ  ｅｘｉｔｉｎｇ」が「０」で、シャドウイング機能設定テーブル４３０１の「ＵｓｅＴｐｒＳｈａｄｏｗ」が「０」である場合、ＴＰＲに対して通常の書き込みが実行される。インタセプト設定４４０の「ＣＲ８−ｌｏａｄ  ｅｘｉｔｉｎｇ」が「０」で、シャドウイング機能設定テーブル４３０１の「ＵｓｅＴｐｒＳｈａｄｏｗ」が「１」である場合、シャドウデータアドレス６６５に対して書き込みが実行される。インタセプト設定４４０の「ＣＲ８−ｌｏａｄ  ｅｘｉｔｉｎｇ」が「１」である場合には、シャドウイング機能設定テーブル４３０１の「ＵｓｅＴｐｒＳｈａｄｏｗ」の値にかかわらず、ＶＭ  ｅｘｉｔが発生する。
【０１４１】
以下、レジスタの操作に伴うＣＰＵ７０が実行する処理の一例について説明する。
【０１４２】
図８は、本発明の第１の実施形態のハイパバイザ２０が実行する処理を説明するフローチャートである。
【０１４３】
ハイパバイザ２０は、初期化処理を実行する（Ｓ１２００）。例えば、ハイパバイザ２０は、作成される仮想計算機３０の仕様にあわせて仮想化データ３００を設定し、仮想計算機３０の初期状態を生成する。
【０１４４】
ハイパバイザ２０は、ＣＰＵ７０の動作モードをＶＭＸ  ｎｏｎ−ｒｏｏｔモードに移行させるためのＶＭ  ｅｎｔｒｙ命令（ＶＭＬＡＵＮＣＨ命令）を発行し、ゲスト（仮想計算機３０、Ｌｖ２  ゲストＯＳ５０又はＡＰ６０）の命令を実行する（Ｓ１２８０）。
【０１４５】
ＣＰＵ７０は、ＶＭ  ｅｘｉｔが発生するまで、すなわち、インタセプト設定４４０、５４０に設定したイベント（命令）が発生するまで、ゲスト命令を実行する（Ｓ１２９０）。ここで、ゲスト命令は、Ｌｖ２ゲストＯＳ５０又はＡＰ６０が実行する命令を示す。Ｓ１２９０における処理の詳細については、図１４を用いて後述する。
【０１４６】
ＶＭ  ｅｘｉｔの発生によって、処理を再開したハイパバイザ２０は、ＶＭ  ｅｘｉｔが発生した理由を解析し、以下の判定を実行する。
【０１４７】
ハイパバイザ２０は、ＶＭ  ｅｘｉｔ発生理由がＬｖ１  ＶＭＭ４０へのＶＭ  ｅｘｉｔ（論理ＶＭ  ｅｘｉｔ）命令の実行によるものであるか否かを判定する（Ｓ１２１０）。すなわち、Ｌｖ１  ＶＭＭ４０が処理を実行しているか否かを判定する。
【０１４８】
当該判定は、ハイパバイザ２０が、Ｌｖ０  ＶＭＣＳ４００のＥｘｉｔ情報エリア４５０に格納されたｅｘｉｔ理由と、Ｌｖ１  ＶＭＣＳ５００のインタセプト設定５４０とを参照し、Ｌｖ１  ＶＭＭ４０が規定したＶＭ  ｅｘｉｔの条件を満たしているか否かを判定することによって行う。Ｌｖ１  ＶＭＭ４０が規定したＶＭ  ｅｘｉｔの条件を満たしていると判定された場合、ＶＭ  ｅｘｉｔ発生理由がＬｖ１  ＶＭＭ４０へのＶＭ  ｅｘｉｔ（論理ＶＭ  ｅｘｉｔ）命令の実行によるものであると判定される。
【０１４９】
ＶＭ  ｅｘｉｔ発生理由がＬｖ１  ＶＭＭ４０へのＶＭ  ｅｘｉｔ（論理ＶＭ  ｅｘｉｔ）命令の実行によるものであると判定された場合、ハイパバイザ２０は、Ｌｖ１  ＶＭＭ４０の実行を準備するための論理ＶＭ  ｅｘｉｔ処理を実行する（Ｓ１２２０）。論理ＶＭ  ｅｘｉｔ処理の詳細については、図９を用いて後述する。
【０１５０】
ＶＭ  ｅｘｉｔ発生理由がＬｖ１  ＶＭＭ４０へのＶＭ  ｅｘｉｔ（論理ＶＭ  ｅｘｉｔ）命令の実行によるものでないと判定された場合、ハイパバイザ２０は、ＶＭ  ｅｘｉｔ発生理由がＣＲ０又はＣＲ４の更新によるものであるか否かを判定する（Ｓ１２３０）。判定方法は、Ｓ１２１０と同様の方法が用いられる。
【０１５１】
ＶＭ  ｅｘｉｔ発生理由がＣＲ０又はＣＲ４の更新によるものであると判定された場合、ハイパバイザ２０は、仮想計算機３０におけるＣＲ０又はＣＲ４の更新処理を実行する（Ｓ１２４０）。仮想計算機３０におけるＣＲ０又はＣＲ４の更新処理の詳細については、図１３を用いて後述する。
【０１５２】
ＶＭ  ｅｘｉｔ発生理由がＣＲ０又はＣＲ４の更新によるものでないと判定された場合、ハイパバイザ２０は、ＶＭ  ｅｘｉｔ発生理由がＬｖ１  ＶＭＭ４０のＶＭ  ｅｎｔｒｙ（論理ＶＭ  ｅｎｔｒｙ）命令の実行によるものであるか否かを判定する（Ｓ１２５０）。当該判定では、Ｌｖ１  ＶＭＭ４０が動作中で、かつ、ＶＭ  ｅｘｉｔ発生理由がＶＭ  ｅｎｔｒｙであるか否かが判定される。いずれの条件とも満たす場合、ＶＭ  ｅｘｉｔ発生理由がＬｖ１  ＶＭＭ４０のＶＭ  ｅｎｔｒｙ（論理ＶＭ  ｅｎｔｒｙ）命令の実行によるものであると判定される。
【０１５３】
ＶＭ  ｅｘｉｔ発生理由がＬｖ１  ＶＭＭ４０のＶＭ  ｅｎｔｒｙ（論理ＶＭ  ｅｎｔｒｙ）命令の実行によるものであると判定された場合、ハイパバイザ２０は、Ｌｖ２  ゲストＯＳ５０の実行を準備するため論理ＶＭ  ｅｎｔｒｙ処理を実行する（Ｓ１２６０）。論理ＶＭ  ｅｎｔｒｙ処理の詳細については、図１０を用いて後述する。
【０１５４】
ＶＭ  ｅｘｉｔ発生理由がＬｖ１  ＶＭＭ４０のＶＭ  ｅｎｔｒｙ（論理ＶＭ  ｅｎｔｒｙ）命令の実行によるものでないと判定された場合、ハイパバイザ２０は、当該ＶＭ  ｅｘｉｔ発生理由に応じたエミュレーションを実行する（Ｓ１２７０）。
【０１５５】
その後、ハイパバイザ２０は、Ｓ１２８０に戻り、同様の処理を実行する。
【０１５６】
図９は、本発明の第１の実施形態における論理ＶＭ  ｅｘｉｔ処理の詳細を説明するフローチャートである。なお、図９はＳ１２２０における処理の詳細を説明するものである。
【０１５７】
論理ＶＭ  ｅｘｉｔ処理は、仮想計算機３０において、Ｌｖ２  ゲストＯＳ５０が動作する「ＶＭＸ  ｎｏｎ−ｒｏｏｔモード」からＬｖ１  ＶＭＭ４０が動作する「ＶＭＸ  ｒｏｏｔモード」への動作モードの移行である論理ＶＭ  ｅｘｉｔを実現するための処理である。
【０１５８】
ハイパバイザ２０は、Ｌｖ０  ＶＭＣＳ４００のゲスト状態エリア４１０をＧｕｅｓｔＣｒ以外について読み出し、読み出されたＬｖ０  ＶＭＣＳ４００のゲスト状態エリア４１０を、Ｌｖ１  ＶＭＣＳ５００のゲスト状態エリア５１０に反映させる（Ｓ１３００）。
【０１５９】
具体的には、Ｌｖ０  ＶＭＣＳ４００のゲスト状態エリア４１０をＬｖ１  ＶＭＣＳ５００のゲスト状態エリア５１０にコピーする。
【０１６０】
次に、Ｓ１３１０〜Ｓ１３５５において、Ｌｖ１  ＶＭＣＳ５００のゲスト状態エリア５１０のＣＲ０及びＣＲ４を更新する処理が実行される。この処理は以下のような理由によって実行される。
【０１６１】
Ｌｖ１  ＶＭＣＳ５００のゲスト状態エリア５１０には、仮想計算機３０が保持する特権レジスタの値が格納される必要がある。Ｌｖ１  ＶＭＭ４０におけるシャドウイング機能が無効の場合、仮想計算機３０のＣＲ０及びＣＲ４が、Ｌｖ２ゲストＯＳ５０の動作によって変化する可能性がある。そのため、仮想計算機３０が本来保持すべき特権レジスタの値を特定し、特定された特権レジスタの値をＬｖ１  ＶＭＣＳ５００のゲスト状態エリア５１０に反映する必要がある。したがって、以下で説明する処理（Ｓ１３１０〜Ｓ１３５５）が実行される。
【０１６２】
ハイパバイザ２０は、Ｌｖ１  ＶＭＣＳ５００のシャドウイング設定５３０のシャドウイング機能設定テーブル５３０１を参照して、ＣＲ０又はＣＲ４の各フラグから処理対象となるフラグを選択して、選択されたフラグに対して処理を繰り返し実行する（Ｓ１３１０）。
【０１６３】
ハイパバイザ２０は、選択されたフラグのシャドウイング有効化フラグ６７５が「１」であるか否かを判定する（Ｓ１３２０）。すなわち、選択されたフラグに対してシャドウイング機能が有効化されているか否かが判定される。
【０１６４】
ＣＲ０又はＣＲ４に対してＬｖ１  ＶＭＭ４０においてシャドウイング機能が有効となっている場合、Ｌｖ２  ゲストＯＳ５０がゲスト状態エリア５１０の特権レジスタＣＲ０又はＣＲ４を更新（書き込み）しようとすると論理ＶＭ  ｅｘｉｔが発生する。したがって、Ｌｖ２  ゲストＯＳ５０が実行されているときにゲスト状態エリア５１０の特権レジスタＣＲ０又はＣＲ４が更新されない。
【０１６５】
選択されたエントリのシャドウイング有効化フラグが「１」であると判定された場合、ハイパバイザ２０は、シャドウイング機能設定テーブル５３０１を参照して、次の処理対象を選択し、Ｓ１３２０の処理を実行する。シャドウイング機能設定テーブル５３０１の全てのフラグについて処理が終了した場合（Ｓ１３５５）、ハイパバイザ２０はＳ１３６０に進む。
【０１６６】
選択されたフラグのシャドウイング有効化フラグが「０」であると判定された場合、ハイパバイザ２０は、レジスタ調停方針表２２０を参照し、選択されたフラグの調停方針６１０が「シャドウイング」であるか否かを判定する（Ｓ１３３０）。
【０１６７】
選択されたフラグの調停方針６１０が「シャドウイング」でないと判定された場合、ハイパバイザ２０は、Ｌｖ０  ＶＭＣＳ４００のゲスト状態エリア４１０を参照して、選択されたフラグのゲスト動作時のレジスタの保持値６２５を読み出し、読み出されたゲスト動作時のレジスタの保持値６２５に基づいて、Ｌｖ１  ＶＭＣＳ５００のゲスト状態エリア５１０の当該フラグの値を更新する（Ｓ１３４０）。
【０１６８】
これは、Ｌｖ２  ゲストＯＳ５０が動作時に、ＣＲ０又はＣＲ４に対する更新が、特権レジスタ１４０が格納されるゲスト状態エリア４１０に直接反映されるためである。
【０１６９】
選択されたフラグの調停方針６１０が「シャドウイング」であると判定された場合、ハイパバイザ２０は、シャドウイング設定４３０を参照して、選択されたフラグのシャドウデータ６５５を読み出し、読み出されたシャドウデータ６５５に基づいて、Ｌｖ１  ＶＭＣＳ５００のゲスト状態エリア５１０の当該フラグの値を更新する（Ｓ１３５０）。
【０１７０】
これは、Ｌｖ２  ゲストＯＳ５０が動作時に、ＣＲ０又はＣＲ４に対する更新が、シャドウデータが格納されるＬｖ０  ＶＭＣＳ４００のシャドウイング設定４３０に反映されるためである。
【０１７１】
Ｓ１３４０又はＳ１３５０の後、ハイパバイザ２０は、シャドウイング機能設定テーブル５３０１を参照して、次の処理対象を選択し、Ｓ１３２０の処理を実行する。シャドウイング機能設定テーブル５３０１の全てのフラグについて処理が終了した場合（Ｓ１３５５）、ハイパバイザ２０はＳ１３６０に進む。
【０１７２】
次に、ハイパバイザ２０は、Ｌｖ０  ＶＭＣＳ４００のＥｘｉｔ情報エリア４５０を読み出し、読み出されたＥｘｉｔ情報エリアに基づいて、Ｌｖ１  ＶＭＣＳ５００のＥｘｉｔ情報エリア５５０を更新する（Ｓ１３６０）。当該処理によって、ＣＰＵ７０が受け取ったＶＭ  ｅｘｉｔの発生要因がＬｖ１  ＶＭＣＳ５００に反映される。
【０１７３】
ハイパバイザ２０は、Ｌｖ１  ＶＭＣＳ５００のホスト状態エリア５２０を読み出し、読み出されたホスト状態エリア５２０に基づいて、Ｌｖ０  ＶＭＣＳ４００のゲスト状態エリア４１０を更新する（Ｓ１３７０）。当該処理によって、Ｌｖ１  ＶＭＭ４０が動作するための設定を、ＣＰＵ７０が読み出すことが可能となる。
【０１７４】
ハイパバイザ２０は、論理ＶＭＸモードフラグ３３０をＶＭＸ  ｒｏｏｔに変更し（Ｓ１３８０）、処理を終了する。以上の処理によって、Ｌｖ１  ＶＭＭ４０の動作に必要な準備が完了する。
【０１７５】
図１０は、本発明の第１の実施形態における論理ＶＭ  ｅｎｔｒｙ処理の詳細を説明するフローチャートである。なお、図１０は、図８のＳ１２６０における処理の詳細を説明するものである。
【０１７６】
ハイパバイザ２０は、Ｌｖ１  ＶＭＣＳ５００のインタセプト設定５４０を読み出し、読み出されたＬｖ１  ＶＭＣＳ５００のインタセプト設定５４０に基づいて、Ｌｖ０  ＶＭＣＳ４００のインタセプト設定４４０を更新する（Ｓ１４００）。
【０１７７】
具体的には、Ｌｖ１  ＶＭＣＳ５００のインタセプト設定５４０に設定されたインタセプト条件が含まれるようにＬｖ０  ＶＭＣＳ４００のインタセプト設定４４０が更新される。すなわち、インタセプト設定５４０に設定されたインタセプト条件が満たされた場合には、Ｌｖ２  ゲストＯＳ５０の実行を中断してハイパバイザ２０が読み出されるように、Ｌｖ０  ＶＭＣＳ４００のインタセプト設定４４０が更新される。
【０１７８】
ハイパバイザ２０は、Ｌｖ１  ＶＭＣＳ５００のゲスト状態エリア５１０を読み出し、読み出されたゲスト状態エリア５１０に基づいて、Ｌｖ０  ＶＭＣＳ４００のゲスト状態エリア４１０を更新する（Ｓ１４１０）。すなわち、ハイパバイザ２０は、Ｌｖ２  ゲストＯＳ５０の設定をＣＰＵ７０に読み出させるために、Ｌｖ１  ＶＭＣＳ５００のゲスト状態エリア５１０の設定をＬｖ０  ＶＭＣＳ４００のゲスト状態エリア４１０に反映させる。
【０１７９】
ハイパバイザ２０は、Ｌｖ１  ＶＭＣＳ５００のシャドウイング設定５３０を読み出し、読み出されたシャドウイング設定５３０に基づいて、Ｌｖ０  ＶＭＣＳ４００のシャドウイング設定４３０を更新する（Ｓ１４２０、Ｓ１４３０）。
【０１８０】
シャドウイング設定４３０のＣＲ０及びＣＲ４に対する更新処理（Ｓ１４２０）については、図１１を用いて後述する。また、シャドウイング設定４３０のＴＰＲに対する更新処理（Ｓ１４３０）については、図１２を用いて後述する。
【０１８１】
ハイパバイザ２０は、論理ＶＭＸモードフラグ３３０をＶＭＸ  ｎｏｎ−ｒｏｏｔに変更し（Ｓ１４４０）、処理を終了する。以上の処理によって、Ｌｖ２  ゲストＯＳ５０の動作に必要な準備が完了する。
【０１８２】
図１１は、本発明の第１の実施形態のハイパバイザ２０が実行するにおけるＣＲ０又はＣＲ４に対する更新処理を説明するフローチャートである。
【０１８３】
ハイパバイザ２０は、Ｌｖ１  ＶＭＣＳ５００のゲスト状態エリア５１０におけるＣＲ０又はＣＲ４の各フラグから処理対象となるフラグを選択し、選択されたフラグに対して以下で説明する処理を実行する（Ｓ１０００）。
【０１８４】
ハイパバイザ２０は、Ｌｖ１  ＶＭＣＳ５００のシャドウイング設定５３０を参照し、選択されたフラグのシャドウイング機能が有効であるか否かを判定する（Ｓ１００５）。すなわち、Ｌｖ１  ＶＭＭ４０が選択されたフラグに対してシャドウイング機能を利用するか否かが判定される。
【０１８５】
具体的には、ハイパバイザ２０は、シャドウイング機能設定テーブル５３０１を参照して、選択されたフラグのシャドウイング有効化フラグ６７５が「１」であるか否かを判定する。
【０１８６】
選択されたフラグのシャドウイング機能が有効でないと判定された場合、ハイパバイザ２０は、レジスタ調停方針表２２０を参照して、選択されたフラグの調停方針６１０が「シャドウイング」であるか否かを判定する（Ｓ１０１０）。すなわち、ハイパバイザ２０が、選択されたフラグに対してシャドウイング機能を有効化しているか否かが判定される。
【０１８７】
選択されたフラグの調停方針６１０が「シャドウイング」でないと判定された場合、ハイパバイザ２０は、Ｌｖ０  ＶＭＣＳ４００のシャドウイング設定４３０を参照し、選択されたフラグのシャドウイング機能を無効にする（Ｓ１０１５）。
【０１８８】
具体的には、ハイパバイザ２０は、シャドウイング機能設定テーブル５３０１を参照し、選択されたフラグのシャドウイング有効化フラグ６４５を「０」に設定する。
【０１８９】
次に、ハイパバイザ２０は、Ｌｖ１  ＶＭＣＳ５００のゲスト状態エリア５１０から選択されたフラグの値を読み出し、読み出された値に基づいて、Ｌｖ０  ＶＭＣＳ４００のゲスト状態エリア４１０を更新し（Ｓ１０２０）、Ｓ１０８０に進む。
【０１９０】
Ｓ１０１０において、選択されたフラグの調停方針６１０が「シャドウイング」であると判定された場合、ハイパバイザ２０は、Ｌｖ１  ＶＭＣＳ５００のゲスト状態エリア５１０を読み出し、読み出されたゲスト状態エリア５１０に基づいて、Ｌｖ０  ＶＭＣＳ４００のシャドウイング設定４３０を更新する（Ｓ１０２５）。
【０１９１】
具体的には、ハイパバイザ２０は、Ｌｖ１  ＶＭＣＳ５００のゲスト状態エリア５１０から、選択されたフラグのゲスト動作時のレジスタの保持値６３５を読み出し、読み出された値をシャドウデータ設定テーブル４３０２のシャドウデータ６５５に設定する。
【０１９２】
次に、ハイパバイザ２０は、Ｌｖ０  ＶＭＣＳ４００のシャドウイング設定４３０に対して、選択されたエントリに対応する制御ビットのシャドウイング機能を有効にする（Ｓ１０３０）。
【０１９３】
具体的には、ハイパバイザ２０は、シャドウイング機能設定テーブル４３０１を参照して、選択されたエントリに対応する制御ビットのシャドウイング有効化フラグ６４５を「１」に設定する。
【０１９４】
さらに、ハイパバイザ２０は、レジスタ調停方針表２２０から、選択されたフラグのハイパバイザ固有値６１５を読み出し、読み出されたハイパバイザ固有値６１５に基づいて、Ｌｖ０  ＶＭＣＳ４００のゲスト状態エリアを更新し（Ｓ１０３５）、Ｓ１０８０に進む。
【０１９５】
具体的には、ハイパバイザ２０は、選択されたフラグのゲスト動作時のレジスタの保持値６２５に、読み出されたハイパバイザ固有値６１５を設定する。
【０１９６】
Ｓ１００５において、選択されたフラグのシャドウイング機能が有効であると判定された場合、ハイパバイザ２０は、Ｌｖ１  ＶＭＣＳ５００のシャドウイング設定５３０から、選択されたフラグに対応するシャドウデータ６８５を読み出す（Ｓ１０４０）。
【０１９７】
次に、ハイパバイザ２０は、読み出されシャドウデータ６８５に基づいて、Ｌｖ０  ＶＭＣＳ４００のシャドウイング設定４３０を更新する（Ｓ１０４５）。具体的には、ハイパバイザ２０は、選択されたフラグのシャドウデータ６５５に、読み出されたシャドウデータを設定する。
【０１９８】
次に、ハイパバイザ２０は、Ｌｖ０  ＶＭＣＳ４００のシャドウイング設定４３０に対して、選択されたフラグのシャドウイング機能を有効にする（Ｓ１０５０）。
【０１９９】
具体的には、ハイパバイザ２０は、シャドウイング機能設定テーブル４３０１を参照して、選択されたフラグのシャドウイング有効化フラグ６４５を「１」に設定する。
【０２００】
次に、ハイパバイザ２０は、レジスタ調停方針表２２０を参照して、Ｓ１０５０においてシャドウイング機能が有効化されたフラグの調停方針６１０が「シャドウイング」であるか否かを判定する（Ｓ１０６０）。すなわち、ハイパバイザ２０がシャドウイング機能を利用して、ハイパバイザ固有値６２０を物理計算機１０のＣＲ０及びＣＲ４に反映させる。
【０２０１】
選択されたフラグの調停方針６１０が「シャドウイング」でないと判定された場合、ハイパバイザ２０は、Ｌｖ１  ＶＭＣＳ５００のゲスト状態エリア５１０から、選択されたフラグのゲスト動作時のレジスタの保持値６３５を読み出し、読み出されたゲスト動作時のレジスタの保持値６３５に基づいて、Ｌｖ０  ＶＭＣＳ４００のゲスト状態エリア４１０を更新し（Ｓ１０６５）、Ｓ１０８０に進む。
【０２０２】
具体的には、ハイパバイザ２０は、選択されたフラグのゲスト動作時のレジスタの保持値６２５に、読み出されたゲスト動作時のレジスタの保持値６３５を設定する。
【０２０３】
Ｓ１０６５の処理によって、Ｌｖ２  ゲストＯＳ５０の動作時のＬｖ１  ＶＭＣＳ５００のゲスト状態エリア５１０の設定をＬｖ０  ＶＭＣＳ４００のゲスト状態エリア４１０に反映することができる。
【０２０４】
選択されたフラグの調停方針６１０が「シャドウイング」であると判定された場合、ハイパバイザ２０は、レジスタ調停方針表２２０から、選択されたフラグのハイパバイザ固有値６１５を読み出し、読み出されたハイパバイザ固有値６１５に基づいて、Ｌｖ０  ＶＭＣＳ４００のゲスト状態エリア４１０を更新し（Ｓ１０７０）、Ｓ１０８０に進む。
【０２０５】
具体的には、ハイパバイザ２０は、選択されたフラグのゲスト動作時のレジスタの保持値６２５に、読み出されたハイパバイザ固有値６１５を設定する。
【０２０６】
Ｓ１０８０では、ハイパバイザ２０は、全てのフラグについて処理が終了したか否かを判定し、全てのフラグについて処理が完了していない場合には、次のフラグが選択され、Ｓ１００５〜Ｓ１０７０の処理が実行される。全てのフラグについて処理が完了したと判定された場合には、処理を終了する。
【０２０７】
図１２は、本発明の第１の実施形態のハイパバイザ２０が実行するＴＰＲに対する更新処理を説明するフローチャートである。以下では、レジスタ調停方針表２２０においてＴＰＲに対する調停方針６１０が「シャドウイング」である場合について説明する。すなわち、ＴＰＲの操作時には、必ずシャドウイング機能が利用される。
【０２０８】
ハイパバイザ２０は、Ｌｖ１  ＶＭＣＳ５００のインタセプト設定５４０からインタセプト対象名７１０が「ＣＲ８−ｌｏａｄ  ｅｘｉｔｉｎｇ」であるエントリのインタセプト有効化フラグ７１５を読み出し、読み出されたインタセプト有効化フラグ７１５に基づいて、Ｌｖ０  ＶＭＣＳ４００のインタセプト設定４４０を更新する（Ｓ１１００）。
【０２０９】
具体的には、ハイパバイザ２０は、インタセプト対象名７００が「ＣＲ８−ｌｏａｄ  ｅｘｉｔｉｎｇ」であるエントリのインタセプト有効化フラグ７０５に、読み出されたインタセプト有効化フラグ７１５を設定する。
【０２１０】
ハイパバイザ２０は、Ｌｖ１  ＶＭＣＳ５００のインタセプト設定５４０からインタセプト対象名７１０が「ＣＲ８−ｓｔｏｒｅ  ｅｘｉｔｉｎｇ」であるエントリのインタセプト有効化フラグ７１５を読み出し、読み出されたインタセプト有効化フラグ７１５に基づいて、Ｌｖ０  ＶＭＣＳ４００のインタセプト設定４４０を更新する（Ｓ１１１０）。
【０２１１】
具体的には、ハイパバイザ２０は、インタセプト対象名７００が「ＣＲ８−ｓｔｏｒｅ  ｅｘｉｔｉｎｇ」であるエントリのインタセプト有効化フラグ７０５に、読み出されたインタセプト有効化フラグ７１５を設定する。
【０２１２】
ハイパバイザ２０は、Ｌｖ１  ＶＭＣＳ５００のシャドウイング設定５３０を参照し、Ｌｖ１  ＶＭＭ４０がＴＰＲの操作時にシャドウイング機能が有効であるか否かを判定する（Ｓ１１２０）。
【０２１３】
具体的には、ハイパバイザ２０は、シャドウイング機能設定テーブル５３０１のシャドウイング対象名６７０が「ＵｓｅＴｐｒＳｈａｄｏｗ」であるエントリのシャドウイング有効化フラグ６７５が「１」であるか否かを判定する。シャドウイング有効化フラグ６７５が「１」である場合、Ｌｖ１  ＶＭＭ４０においてシャドウイング機能が有効であると判定される。
【０２１４】
Ｌｖ１  ＶＭＭ４０がＴＰＲの操作時にシャドウイング機能が有効でないと判定された場合、ハイパバイザ２０は、Ｌｖ０  ＶＭＣＳ４００のシャドウイング設定４３０のＴＰＲ操作に対するシャドウイング機能を有効化する（Ｓ１１３０）。
【０２１５】
具体的には、ハイパバイザ２０は、シャドウイング機能設定テーブル４３０１のシャドウイング対象名６４０が「ＵｓｅＴｐｒＳｈａｄｏｗ」であるエントリのシャドウイング有効化フラグ６４５の値を「１」に設定する。
【０２１６】
次に、ハイパバイザ２０は、論理ＴＰＲ３４０を読み出し、読み出された論理ＴＰＲ３４０に基づいて、Ｌｖ０  ＶＭＣＳ４００のシャドウイング設定４３０を更新し（Ｓ１１４０）、処理を終了する。
【０２１７】
具体的には、ハイパバイザ２０は、シャドウデータ設定テーブル４３０３のシャドウデータ名６６０が「Ｖｉｒｔｕａｌ  Ａｐｉｃ  Ｐａｇｅ」であるエントリのシャドウデータアドレス６６５に論理ＴＰＲ３４０に格納されるメモリアドレスを設定する。
【０２１８】
Ｓ１１２０において、Ｌｖ１  ＶＭＭ４０がＴＰＲの操作時にシャドウイング機能が有効であると判定された場合、ハイパバイザ２０は、Ｌｖ０  ＶＭＣＳ４００のシャドウイング設定４３０のＴＰＲ操作に対するシャドウイング機能を有効化する（Ｓ１１５０）。なお、Ｓ１１３０と同一の処理が実行される。
【０２１９】
次に、ハイパバイザ２０は、Ｌｖ１  ＶＭＣＳ５００のシャドウイング設定５３０のシャドウデータ設定テーブル５３０３からシャドウデータを読み出す（Ｓ１１６０）。
【０２２０】
具体的には、ハイパバイザ２０は、シャドウデータ設定テーブル５３０３のシャドウイング対象名６９０が「Ｖｉｒｔｕａｌ  Ａｐｉｃ  Ｐａｇｅ」であるエントリのシャドウデータアドレス６９５に格納されるメモリアドレスを読み出す。
【０２２１】
ハイパバイザ２０は、読み出されたシャドウデータアドレス６９５をメモリ９０におけるアドレスに変換する（Ｓ１１７０）。シャドウデータアドレス６９５に格納されるアドレスは、仮想計算機３０が管理するメモリアドレスであるため、実際のメモリ９０のアドレスと一致しないため、Ｓ１１７０における処理が実行される。
【０２２２】
ハイパバイザ２０は、Ｌｖ０  ＶＭＣＳ４００のシャドウイング設定４３０のシャドウデータ設定テーブル４３０３に変換されたメモリアドレスを格納し（Ｓ１１８０）、処理を終了する。
【０２２３】
具体的には、ハイパバイザ２０は、シャドウデータ設定テーブル４３０３のシャドウデータ名６６０が「Ｖｉｒｔｕａｌ  Ａｐｉｃ  Ｐａｇｅ」であるエントリのシャドウデータアドレス６６５にＳ１１７０において変換されたメモリアドレスを設定する。
【０２２４】
以上の処理によって、Ｌｖ２  ゲストＯＳ５０がＴＰＲを読み出そうとした場合に、シャドウデータアドレス６６５に設定されたメモリ９０のアドレスに対応する値が読み出される。
【０２２５】
なお、前述した図８〜図１２までの処理は処理結果が同一になるならば、処理の手順を入れ替え又は置き換えることが可能である。
【０２２６】
図１３は、本発明の第１の実施形態の仮想計算機３０におけるＣＲ０又はＣＲ４の更新処理を説明するフローチャートである。図１３は、Ｓ１２４０における処理の詳細を説明するものである。
【０２２７】
Ｓ１２４０の処理は、Ｌｖ２  ゲストＯＳ５０の動作時にＣＲ０又はＣＲ４が更新される場合にハイパバイザ２０が実行する処理である。
【０２２８】
ハイパバイザ２０は、Ｌｖ１  ＶＭＣＳ５００のゲスト状態エリア５１０におけるＣＲ０又はＣＲ４の各フラグから処理対象となるフラグを選択し、選択されたフラグに対して以下で説明する処理を実行する（Ｓ１５００）。
【０２２９】
ハイパバイザ２０は、Ｌｖ０  ＶＭＣＳ４００のシャドウイング設定４３０を参照し、選択されたフラグのシャドウイング機能が有効であるか否かを判定する（Ｓ１５１０）。
【０２３０】
具体的には、ハイパバイザ２０は、シャドウイング機能設定テーブル４３０１を参照し、選択されたエントリのシャドウイング有効化フラグ６４５が「１」であるか否かを判定する。
【０２３１】
選択されたフラグのシャドウイング機能が有効でないと判定された場合、ハイパバイザ２０は、Ｌｖ０  ＶＭＣＳ４００のゲスト状態エリア４１０のＣＲ０又はＣＲ４を更新し（Ｓ１５２０）、Ｓ１５４０に進む。
【０２３２】
具体的には、ハイパバイザ２０は、Ｌｖ０  ＶＭＣＳ４００のゲスト状態エリア４１０のＣＲ０又はＣＲ４のうち、選択されたフラグに対応する制御ビットにＬｖ２  ゲストＯＳ５０が書き込みをした値を設定する。
【０２３３】
当該処理は、シャドウイング機能が無効であるため、Ｌｖ２  ゲストＯＳ５０がＣＲ０又はＣＲ４を読み出す場合に、ゲスト状態エリア４１０のＣＲ０又はＣＲ４が直接読み出されるようにするためである。
【０２３４】
選択されたエントリのシャドウイング機能が有効であると判定された場合、ハイパバイザ２０は、Ｌｖ０  ＶＭＣＳ４００のシャドウイング設定４３０を更新し（Ｓ１５３０）、Ｓ１５４０に進む。
【０２３５】
具体的には、ハイパバイザ２０は、シャドウデータ設定テーブル４３０２のシャドウデータ６５５のうち、選択されたフラグのシャドウデータ６５５にＬｖ２  ゲストＯＳ５０が書き込みをした値を設定する。
【０２３６】
当該処理は、シャドウイング機能が有効であるため、Ｌｖ２  ゲストＯＳ５０がＣＲ０又はＣＲ４を読み出す場合に、シャドウデータ６５５に格納される値が直接読み出されるようにするためである。
【０２３７】
Ｓ１５４０では、ハイパバイザ２０は、全てのフラグについて処理が終了したか否かを判定し、全てのフラグについて処理が完了していない場合には、次のフラグが選択され、Ｓ１５１０〜Ｓ１５４０の処理が実行される。全てのフラグについて処理が完了したと判定された場合には、処理を終了する。
【０２３８】
図１４は、本発明の第１の実施形態における、ゲスト命令実行時にＣＰＵ７０が実行する処理を説明するフローチャートである。図１４は、Ｓ１２９０における処理の詳細を説明するものである。
【０２３９】
ＣＰＵ７０は、ゲスト命令を実行する（Ｓ１６００）。実行されるゲスト命令の処理内容に応じて以下で説明する処理を実行する。
【０２４０】
まず、ＣＰＵ７０は、実行されるゲスト命令の処理内容がＴＰＲを参照する処理であるか否かを判定する（Ｓ１６１５）。
【０２４１】
実行されるゲスト命令の処理内容がＴＰＲを参照する処理であると判定された場合、ＣＰＵ７０は、ＴＰＲを参照する処理を実行し（Ｓ１６２０）、Ｓ１６１０に進む。
【０２４２】
実行されるゲスト命令の処理内容がＴＰＲを参照する処理でないと判定された場合、ＣＰＵ７０は、実行されるゲスト命令の処理内容がＴＰＲを更新する処理であるか否かを判定する（Ｓ１６２５）。
【０２４３】
実行されるゲスト命令の処理内容がＴＰＲを更新する処理であると判定された場合、ＣＰＵ７０は、ＴＰＲを更新する処理を実行し（Ｓ１６３０）、Ｓ１６１０に進む。
【０２４４】
実行されるゲスト命令の処理内容がＴＰＲを更新する処理でないと判定された場合、ＣＰＵ７０は、実行されるゲスト命令の処理内容がＣＲ０又はＣＲ４を参照する処理であるか否かを判定する（Ｓ１６３５）。
【０２４５】
実行されるゲスト命令の処理内容がＣＲ０又はＣＲ４を参照する処理であると判定された場合、ＣＰＵ７０は、ＣＲ０又はＣＲ４を参照する処理を実行し（Ｓ１６４０）、Ｓ１６１０に進む。
【０２４６】
実行されるゲスト命令の処理内容がＣＲ０又はＣＲ４を参照する処理でないと判定された場合、ＣＰＵ７０は、実行されるゲスト命令の処理内容がＣＲ０又はＣＲ４を更新する処理であるか否かを判定する（Ｓ１６４５）。
【０２４７】
実行されるゲスト命令の処理内容がＣＲ０又はＣＲ４を更新する処理であると判定された場合、ＣＰＵ７０は、ＣＲ０又はＣＲ４を更新する処理を実行し（Ｓ１６５０）、Ｓ１６１０に進む。
【０２４８】
実行されるゲスト命令の処理内容がＣＲ０又はＣＲ４を更新する処理でないと判定された場合、ＣＰＵ７０は、実行されるゲスト命令の処理内容がＶＭ  ｅｎｔｒｙ命令であるか否かを判定する（Ｓ１６５５）。
【０２４９】
実行されるゲスト命令の処理内容がＶＭ  ｅｎｔｒｙ命令であると判定された場合、ＣＰＵ７０は、ハイパバイザ２０に対処を求めるために、ハイパバイザ２０を呼び出すためのＶＭｅｘｉｔを発生させるべきと判定し（Ｓ１６６０）、Ｓ１６１０に進む。これは、ＶＭ  ｅｎｔｒｙ命令の実行はハイパバイザ２０にしか許されていないためである。
【０２５０】
実行されるゲスト命令の処理内容がＶＭ  ｅｎｔｒｙでないと判定された場合、ＣＰＵ７０は、ＶＭ  ｅｘｉｔ判定処理を実行し（Ｓ１６６５）、Ｓ１６１０に進む。具体定期には、ＣＰＵ７０は、Ｌｖ０  ＶＭＣＳ４００のインタセプト設定４４０を参照して、実行されるゲスト命令によってＶＭ  ｅｘｉｔが発生するか否かを判定する。
【０２５１】
次に、以上の処理の結果、ＣＰＵ７０は、ＶＭ  ｅｘｉｔが発生するイベントが実行されるか否かを判定する（Ｓ１６１０）。
【０２５２】
ＶＭ  ｅｘｉｔが発生するイベントが実行されないと判定された場合、ＣＰＵ７０は、Ｓ１６００に戻り、次にゲスト命令に対して同様の処理を実行する。
【０２５３】
ＶＭ  ｅｘｉｔが発生するイベントが実行されたと判定された場合、ＣＰＵ７０は、ＶＭ  ｅｘｉｔ命令を発行し（Ｓ１６７０）、処理を終了する。具体的には、ＶＭＸモードフラグ１１０をＶＭＸｒｏｏｔに変更する。また、ＣＰＵ７０は、ＣＰＵ７０の状態をＬｖ０  ＶＭＣＳ４００のゲスト状態エリア４１０に保存し、Ｌｖ０  ＶＭＣＳ４００のＥｘｉｔ情報エリア４５０を更新し、Ｌｖ１  ＶＭＣＳ５００のホスト状態エリア５２０を読み出して、ハイパバイザ２０の実行を開始する。
【０２５４】
図１５は、本発明の第１の実施形態のＳ１６２０におけるＴＰＲ参照処理の詳細を説明するフローチャートである。
【０２５５】
ＣＰＵ７０は、ＶＭＸモードフラグ１１０を参照して、Ｌｖ１  ＶＭＭ４０又はＬｖ２  ゲストＯＳ５０が動作中であるか否かを判定する（Ｓ１７００）。具体的には、ＶＭＸモードフラグ１１０が「ＶＭＸ  ｒｏｏｔモード」である場合にはＬｖ１  ＶＭＭ４０又はＬｖ２  ゲストＯＳ５０が動作中でないと判定され、ＶＭＸモードフラグ１１０が「ＶＭＸ  ｎｏｎ−ｒｏｏｔモード」である場合にはＬｖ１  ＶＭＭ４０又はＬｖ２  ゲストＯＳ５０が動作中であると判定される。
【０２５６】
Ｌｖ１  ＶＭＭ４０又はＬｖ２  ゲストＯＳ５０が動作中でないと判定された場合、ＣＰＵ７０は、Ｓ１７３０に進む。
【０２５７】
Ｌｖ１  ＶＭＭ４０又はＬｖ２  ゲストＯＳ５０が動作中であると判定された場合、ＣＰＵ７０は、Ｌｖ０  ＶＭＣＳ４００のインタセプト設定４４０を参照し、ＴＰＲ参照処理に対してインタセプトが発生するか否かを判定する（Ｓ１７１０）。具体的には、ＣＰＵ７０は、インタセプト対象名７００が「ＣＲ８−ｓｔｏｒｅ  Ｅｘｉｔｉｎｇ」のインタセプト有効化フラグ７０５が「１」であるか否かを判定する。
【０２５８】
ＴＰＲ参照処理に対してインタセプトが発生すると判定された場合、ＣＰＵ７０は、ＶＭ  ｅｘｉｔが発生すると判定し（Ｓ１７５０）、処理を終了する。
【０２５９】
ＴＰＲ参照処理に対してインタセプトが発生しないと判定された場合、ＣＰＵ７０は、Ｌｖ０  ＶＭＣＳ４００のシャドウイング設定４３０を参照して、ＴＰＲ参照処理に対してシャドウイング機能が有効であるか否かを判定する（Ｓ１７２０）。具体的には、ＣＰＵ７０は、シャドウイング対象名６４０が「ＵｓｅＴｐｒＳｈａｄｏｗ」のシャドウイング有効化フラグ６４５が「１」であるか否かを判定する。
【０２６０】
ＴＰＲ参照処理に対してシャドウイング機能が有効であると判定された場合、ＣＰＵ７０は、Ｌｖ０  ＶＭＣＳ４００のシャドウイング設定４３０を参照して、結果をＬｖ１  ＶＭＭ４０又はＬｖ２  ゲストＯＳ５０に応答し（Ｓ１７４０）、処理を終了する。
【０２６１】
具体的には、ＣＰＵ７０は、シャドウデータ名６６０が「Ｖｉｒｔｕａｌ  Ａｐｉｃ  Ｐａｇｅ」のシャドウデータアドレス６６５に格納されたアドレスを読み出し、読み出されたアドレスに対応するデータをメモリ９０から読み出し、当該読み出されたデータをＬｖ１  ＶＭＭ４０又はＬｖ２  ゲストＯＳ５０に応答する。
【０２６２】
Ｌｖ１  ＶＭＭ４０又はＬｖ２  ゲストＯＳ５０が動作中でない、又は、ＴＰＲ参照処理に対してシャドウイング機能が有効でないと判定された場合、ＣＰＵ７０は、特権レジスタ１４０に含まれるＴＰＲに格納される値を読み出し、当該読み出された値をＬｖ１  ＶＭＭ４０又はＬｖ２  ゲストＯＳ５０に応答し（Ｓ１７３０）、処理を終了する。
【０２６３】
図１６は、本発明の第１の実施形態のＳ１６３０におけるＴＰＲ更新処理の詳細を説明するフローチャートである。
【０２６４】
ＣＰＵ７０は、ＶＭＸモードフラグ１１０を参照して、Ｌｖ１  ＶＭＭ４０又はＬｖ２  ゲストＯＳ５０が動作中であるか否かを判定する（Ｓ１８００）。具体的には、ＶＭＸモードフラグ１１０が「ＶＭＸ  ｒｏｏｔモード」である場合にはＬｖ１  ＶＭＭ４０又はＬｖ２  ゲストＯＳ５０が動作中でないと判定され、ＶＭＸモードフラグ１１０が「ＶＭＸ  ｎｏｎ−ｒｏｏｔモード」である場合にはＬｖ１  ＶＭＭ４０又はＬｖ２  ゲストＯＳ５０が動作中であると判定される。
【０２６５】
Ｌｖ１  ＶＭＭ４０又はＬｖ２  ゲストＯＳ５０が動作中でないと判定された場合、ＣＰＵ７０は、Ｓ１７３０に進む。
【０２６６】
Ｌｖ１  ＶＭＭ４０又はＬｖ２  ゲストＯＳ５０が動作中であると判定された場合、ＣＰＵ７０は、Ｌｖ０  ＶＭＣＳ４００のインタセプト設定４４０を参照し、ＴＰＲ更新処理に対してインタセプトが発生するか否かを判定する（Ｓ１８１０）。具体的には、ＣＰＵ７０は、インタセプト対象名７００が「ＣＲ８−ｌｏａｄ  Ｅｘｉｔｉｎｇ」のインタセプト有効化フラグ７０５が「１」であるか否かを判定する。
【０２６７】
ＴＰＲ更新処理に対してインタセプトが発生すると判定された場合、ＣＰＵ７０は、ＶＭ  ｅｘｉｔが発生すると判定し（Ｓ１８５０）、処理を終了する。
【０２６８】
ＴＰＲ更新処理に対してインタセプトが発生しないと判定された場合、ＣＰＵ７０は、Ｌｖ０  ＶＭＣＳ４００のシャドウイング設定４３０を参照して、ＴＰＲ更新処理に対してシャドウイング機能が有効であるか否かを判定する（Ｓ１８２０）。具体的には、ＣＰＵ７０は、シャドウイング対象名６４０が「ＵｓｅＴｐｒＳｈａｄｏｗ」のシャドウイング有効化フラグ６４５が「１」であるか否かを判定する。
【０２６９】
ＴＰＲ更新処理に対してシャドウイング機能が有効であると判定された場合、ＣＰＵ７０は、Ｌｖ０  ＶＭＣＳ４００のシャドウイング設定４３０を参照して、シャドウデータを更新し（Ｓ１８４０）、処理を終了する。
【０２７０】
具体的には、ＣＰＵ７０は、シャドウデータ名６６０が「Ｖｉｒｔｕａｌ  Ａｐｉｃ  Ｐａｇｅ」のシャドウデータアドレス６６５に格納されたアドレスを読み出し、読み出されたアドレスに対応するデータを更新する。
【０２７１】
Ｌｖ１  ＶＭＭ４０又はＬｖ２  ゲストＯＳ５０が動作中でない、又は、ＴＰＲ更新処理に対してシャドウイング機能が有効でないと判定された場合、ＣＰＵ７０は、特権レジスタ１４０に含まれるＴＰＲに格納される値を更新し（Ｓ１８３０）、処理を終了する。
【０２７２】
図１７は、本発明の第１の実施形態のＳ１６４０におけるＣＲ０又はＣＲ４参照処理の詳細を説明するフローチャートである。
【０２７３】
ＣＰＵ７０は、Ｌｖ０  ＶＭＣＳ４００のゲスト状態エリア４１０のＣＲ０又はＣＲ４の各フラグから処理対象を選択し、選択されたフラグに対して以下で説明する処理を実行する（Ｓ１９００）。
【０２７４】
ＣＰＵ７０は、ＶＭＸモードフラグ１１０を参照して、Ｌｖ１  ＶＭＭ４０又はＬｖ２  ゲストＯＳ５０が動作中であるか否かを判定する（Ｓ１９１０）。具体的には、ＶＭＸモードフラグ１１０が「ＶＭＸ  ｒｏｏｔモード」である場合にはＬｖ１  ＶＭＭ４０又はＬｖ２  ゲストＯＳ５０が動作中でないと判定され、ＶＭＸモードフラグ１１０が「ＶＭＸ  ｎｏｎ−ｒｏｏｔモード」である場合にはＬｖ１  ＶＭＭ４０又はＬｖ２  ゲストＯＳ５０が動作中であると判定される。
【０２７５】
Ｌｖ１  ＶＭＭ４０又はＬｖ２  ゲストＯＳ５０が動作中でないと判定された場合、ＣＰＵ７０は、Ｓ１９３０に進む。
【０２７６】
Ｌｖ１  ＶＭＭ４０又はＬｖ２  ゲストＯＳ５０が動作中であると判定された場合、ＣＰＵ７０は、Ｌｖ０  ＶＭＣＳ４００のシャドウイング設定４３０を参照して、選択されたフラグに対してシャドウイング機能が有効であるか否かを判定する（Ｓ１９２０）。具体的には、ＣＰＵ７０は、選択されたフラグのシャドウイング有効化フラグ６４５が「１」であるか否かを判定する。
【０２７７】
選択されたフラグに対してシャドウイング機能が有効であると判定された場合、ＣＰＵ７０は、選択されたフラグに対応する制御ビットのシャドウデータ６５５に格納される値を読み出し、当該読み出された値を一時領域に格納し（Ｓ１９４０）、Ｓ１９５０に進む。なお、一時領域は、例えば、パイプラインの中が考えられる。
【０２７８】
Ｌｖ１  ＶＭＭ４０又はＬｖ２  ゲストＯＳ５０が動作中でないと判定された場合、又は、選択されたフラグに対してシャドウイング機能が有効でないと判定された場合、ＣＰＵ７０は、特権レジスタ１４０に含まれるＣＲ０又はＣＲ４に格納された値を読み出し、当該読み出された結果を一時領域に格納し（Ｓ１９３０）、Ｓ１９５０に進む。
【０２７９】
Ｓ１９５０では、ＣＰＵ７０は、全てのフラグについて処理が終了したか否かを判定し、全てのフラグについて処理が完了していない場合には、次のフラグを選択し、Ｓ１９００〜Ｓ１９５０の処理が実行される。
【０２８０】
全てのフラグについて処理が完了したと判定された場合、ＣＰＵ７０は、一時領域に格納された結果を各制御ビット毎にマージして、Ｌｖ１  ＶＭＭ４０又はＬｖ２  ゲストＯＳ５０に応答し（Ｓ１９６０）、処理を終了する。
【０２８１】
図１８は、本発明の第１の実施形態のＳ１６５０におけるＣＲ０又はＣＲ４更新処理の詳細を説明するフローチャートである。
【０２８２】
ＣＰＵ７０は、Ｌｖ０  ＶＭＣＳ４００のゲスト状態エリア４１０のＣＲ０又はＣＲ４の各フラグから処理対象となるフラグを選択し、選択されたフラグに対して以下で説明する処理を実行する（Ｓ２０００）。
【０２８３】
ＣＰＵ７０は、ＶＭＸモードフラグ１１０を参照して、Ｌｖ１  ＶＭＭ４０又はＬｖ２  ゲストＯＳ５０が動作中であるか否かを判定する（Ｓ２０１０）。具体的には、ＶＭＸモードフラグ１１０が「ＶＭＸ  ｒｏｏｔモード」である場合にはＬｖ１  ＶＭＭ４０又はＬｖ２  ゲストＯＳ５０が動作中でないと判定され、ＶＭＸモードフラグ１１０が「ＶＭＸ  ｎｏｎ−ｒｏｏｔモード」である場合にはＬｖ１  ＶＭＭ４０又はＬｖ２  ゲストＯＳ５０が動作中であると判定される。
【０２８４】
Ｌｖ１  ＶＭＭ４０又はＬｖ２  ゲストＯＳ５０が動作中でないと判定された場合、ＣＰＵ７０は、Ｓ２０４０に進む。
【０２８５】
Ｌｖ１  ＶＭＭ４０又はＬｖ２  ゲストＯＳ５０が動作中であると判定された場合、ＣＰＵ７０は、Ｌｖ０  ＶＭＣＳ４００のシャドウイング設定４３０を参照して、選択されたフラグに対してシャドウイング機能が有効であるか否かを判定する（Ｓ２０２０）。具体的には、ＣＰＵ７０は、選択されたフラグのシャドウイング有効化フラグ６４５が「１」であるか否かを判定する。
【０２８６】
選択されたフラグに対してシャドウイング機能が有効でないと判定された場合、又は、Ｌｖ１  ＶＭＭ４０又はＬｖ２  ゲストＯＳ５０が動作中でないと判定された場合、ＣＰＵ７０は、特権レジスタ１４０に書き込む値を一時領域に格納し（Ｓ２０４０）、Ｓ２０７０に進む。
【０２８７】
選択されたフラグに対してシャドウイング機能が有効であると判定された場合、ＣＰＵ７０は、Ｌｖ０  ＶＭＣＳ４００のゲスト状態エリア４１０を参照して、更新される値、すなわち、書き込まれる値とシャドウデータとが一致するか否かを判定する（Ｓ２０３０）。具体的には、ＣＰＵ７０は、選択されたビットに対応するエントリのシャドウデータ６５５に格納される値と、書き込まれる値とが一致するか否かを判定する。
【０２８８】
書き込まれる値とシャドウデータとが一致しないと判定された場合、ＣＰＵ７０は、ＶＭ  ｅｘｉｔが発生すると判定し（Ｓ２０６０）、処理を終了する。
【０２８９】
書き込まれる値とシャドウデータとが一致すると判定された場合、ＣＰＵ７０は、特権レジスタ１４０に含まれるＣＲ０又はＣＲ４のうち、選択されたフラグの値を読み出し、読み出された値を一時領域に格納し（Ｓ２０５０）、Ｓ２０７０に進む。これは、シャドウイング機能が有効である場合にＣＲ０又はＣＲ４の更新が禁止されているためである。
【０２９０】
Ｓ２０７０では、ＣＰＵ７０は、全てのフラグについて処理が終了したか否かを判定し、全てのフラグについて処理が完了していない場合には、次のフラグを選択し、Ｓ２０００〜Ｓ２０７０の処理が実行される。
【０２９１】
全てのフラグについて処理が完了したと判定された場合、ＣＰＵ７０は、一時領域に格納された結果を各制御ビット毎にマージして、当該マージされた結果をＬｖ０  ＶＭＣＳ４００のゲスト状態エリア４１０に書き込み（Ｓ２０８０）、処理を終了する。すなわち、シャドウイング機能が有効であるビットについては、シャドウデータが書き込まれる。
【０２９２】
［第２の実施形態］
以下、第２の実施形態について説明する。
【０２９３】
第２の実施形態における仮想計算機システムの構成、並びに、ソフトウェア及びハードウェアの構成については、第１の実施形態と同一であるため説明を省略する。
【０２９４】
第２の実施形態では、ＴＰＲに対するシャドウイング設定に関する処理が第１の実施形態とは異なる。なお、他の処理については、第１の実施形態と同一であるため、説明を省略する。以下、第１の実施形態との差異を中心に第２の実施形態について説明する。
【０２９５】
図１９は、本発明の第２の実施形態におけるハイパバイザ２０が実行するＴＰＲに対する更新処理を説明するフローチャートである。なお、以下では、レジスタ調停方針表２２０においてＴＰＲに対する調停方針６１０が「インタセプト」である場合について説明する。すなわち、ＴＰＲの操作時には、シャドウイングされない。
【０２９６】
ハイパバイザ２０は、Ｌｖ１  ＶＭＣＳ５００のシャドウイング設定５３０を参照し、Ｌｖ１  ＶＭＭ４０がＴＰＲの操作に対してシャドウイング機能が有効であるか否かを判定する（Ｓ２１００）。具体的には、ハイパバイザ２０は、シャドウイング機能設定テーブル５３０１のシャドウイング対象名６７０が「ＵｓｅＴｐｒＳｈａｄｏｗ」であるエントリのシャドウイング有効化フラグ６７５が「１」であるか否かを判定する。
【０２９７】
Ｌｖ１  ＶＭＭ４０がＴＰＲの操作に対してシャドウイング機能が有効でないと判定された場合、ハイパバイザ２０は、Ｌｖ０  ＶＭＣＳ４００のシャドウイング設定４３０のＴＰＲ操作に対するシャドウイング機能を無効化する（Ｓ２１０５）。
【０２９８】
具体的には、ハイパバイザ２０は、シャドウイング機能設定テーブル４３０１のシャドウイング対象名６４０が「ＵｓｅＴｐｒＳｈａｄｏｗ」であるエントリのシャドウイング有効化フラグ６４５の値を「０」に設定する。
【０２９９】
次に、ハイパバイザ２０は、Ｌｖ１  ＶＭＣＳ５００のシャドウイング設定５３０から、シャドウイング対象名６９０が「Ｖｉｒｔｕａｌ  Ａｐｉｃ  Ｐａｇｅ」であるエントリのシャドウデータアドレス６９５に格納されるアドレスを読み出す（Ｓ２１１０）。
【０３００】
ハイパバイザ２０は、読み出されたアドレスをメモリ９０のアドレスに変換し（Ｓ２１１５）、変換されたアドレスをＬｖ０  ＶＭＣＳ４００のシャドウイング設定４３０に設定する（Ｓ２１２０）。具体的には、シャドウデータ設定テーブル５３０３のシャドウイング対象名６９０が「Ｖｉｒｔｕａｌ  Ａｐｉｃ  Ｐａｇｅ」であるエントリのシャドウデータアドレス６９５に、変換されたアドレスが設定される。
【０３０１】
ハイパバイザ２０は、インタセプト設定５４０のインタセプト対象名７１０が「ＣＲ８−ｌｏａｄ  ｅｘｉｔｉｎｇ」及び「ＣＲ８−ｓｔｏｒｅ  ｅｘｉｔｉｎｇ」であるエントリのそれぞれに「１」を設定し（Ｓ２１２５、Ｓ２１３０）、処理を終了する。
【０３０２】
Ｓ２１００において、Ｌｖ１  ＶＭＭ４０がＴＰＲの操作に対してシャドウイング機能が有効であると判定された場合、ハイパバイザ２０は、Ｌｖ０  ＶＭＣＳ４００のシャドウイング設定４３０のＴＰＲ操作に対するシャドウイング機能を有効化する（Ｓ２１３５）。
【０３０３】
具体的には、ハイパバイザ２０は、シャドウイング機能設定テーブル４３０１のシャドウイング対象名６４０が「ＵｓｅＴｐｒＳｈａｄｏｗ」であるエントリのシャドウイング有効化フラグ６４５の値を「１」に設定する。
【０３０４】
次に、ハイパバイザ２０は、Ｌｖ１  ＶＭＣＳ５００のシャドウイング設定５３０から、シャドウイング対象名６９０が「Ｖｉｒｔｕａｌ  Ａｐｉｃ  Ｐａｇｅ」であるエントリのシャドウデータアドレス６９５に格納されるアドレスを読み出す（Ｓ２１４０）。
【０３０５】
ハイパバイザ２０は、読み出されたアドレスをメモリ９０のアドレスに変換し（Ｓ２１４５）、変換されたアドレスをＬｖ０  ＶＭＣＳ４００のシャドウイング設定４３０に設定する（Ｓ２１５０）。具体的には、シャドウデータ設定テーブル５３０３のシャドウイング対象名６９０が「Ｖｉｒｔｕａｌ  Ａｐｉｃ  Ｐａｇｅ」であるエントリのシャドウデータアドレス６９５に、変換されたアドレスが設定される。
【０３０６】
ハイパバイザ２０は、Ｌｖ１  ＶＭＣＳ５００のインタセプト設定５４０から、インタセプト対象名７１０が「ＣＲ８−ｌｏａｄ  ｅｘｉｔｉｎｇ」であるエントリのインタセプト有効化フラグ７１５に設定された値を読み出し、読み出された値に基づいて、Ｌｖ０  ＶＭＣＳ４００のインタセプト設定４４０を更新する（Ｓ２１５５）。
【０３０７】
具体的には、ハイパバイザ２０は、インタセプト対象名７００が「ＣＲ８−ｌｏａｄ  ｅｘｉｔｉｎｇ」であるエントリのインタセプト有効化フラグ７０５にＬｖ１  ＶＭＣＳ５００のインタセプト設定５４０から読み出された値を設定する。
【０３０８】
ハイパバイザ２０は、Ｌｖ１  ＶＭＣＳ５００のインタセプト設定５４０から、インタセプト対象名７１０が「ＣＲ８−ｓｔｏｒｅ  ｅｘｉｔｉｎｇ」であるエントリのインタセプト有効化フラグ７１５に設定された値を読み出し、読み出された値に基づいて、Ｌｖ０  ＶＭＣＳ４００のインタセプト設定４４０を更新し（Ｓ２１６０）、処理を終了する。
【０３０９】
具体的には、ハイパバイザ２０は、インタセプト対象名７００が「ＣＲ８−ｓｔｏｒｅ  ｅｘｉｔｉｎｇ」であるエントリのインタセプト有効化フラグ７０５に、Ｌｖ１  ＶＭＣＳ５００のインタセプト設定５４０から読みされた値を設定する。
【０３１０】
すなわち、Ｓ２１５５及びＳ２１６０では、Ｌｖ１  ＶＭＣＳ５００のインタセプト設定５４０の設定がＬｖ０  ＶＭＣＳ４００のインタセプト設定４４０に反映される。
【０３１１】
本実施形態では、Ｌｖ１  ＶＭＣＳ５００におけるシャドウイング対象名６９０が「Ｖｉｒｔｕａｌ  Ａｐｉｃ  Ｐａｇｅ」であるエントリのシャドウデータアドレス６９５が変換され、当該変換されたアドレスがＬｖ０  ＶＭＣＳ４００のシャドウデータ名６６０が「Ｖｉｒｔｕａｌ  Ａｐｉｃ  Ｐａｇｅ」であるエントリのシャドウデータアドレス６６５に設定される。
【０３１２】
なお、Ｓ２１０５〜Ｓ２１３０の処理は、ハイパバイザ２０が実行する処理の一例であり、ハイパバイザ２０の仕様によって様々なバリエーションの処理が考えられる。
【符号の説明】
【０３１３】
１０  物理計算機
２０  ハイパバイザ
２２  レジスタ調停方針表
３０  仮想計算機
３２  ＩＡ
４０  Ｌｖ１  ＶＭＭ
５０  Ｌｖ２  ゲストＯＳ
６０  ＡＰ
７０  ＣＰＵ
８０  コンソール
９０  主記憶装置（メモリ）
１００  ＶＭＥＸＩＴ判定部
１１０  ＶＭＸモードフラグ
１２０  ＶＭＣＳポインタ
１３０  シャドウイング機能
１４０  特権レジスタ
２００  エミュレータ
２１０  ＶＭＣＳ制御部
２２０  レジスタ調停方針表
３００  仮想化データ
３１０  ＣＰＵ仮想化データ
３２０  Ｌｖ１  ＶＭＣＳポインタ
３３０  論理ＶＭＸモードフラグ
３４０  論理ＴＰＲ
４００  Ｌｖ０  ＶＭＣＳ
４１０  ゲスト状態エリア
４２０  ホスト状態エリア
４３０  シャドウイング設定
４４０  インタセプト設定
４５０  Ｅｘｉｔ情報エリア
５００  Ｌｖ１  ＶＭＣＳ
５１０  ゲスト状態エリア
５２０  ホスト状態エリア
５３０  シャドウイング設定
５４０  インタセプト設定
５５０  Ｅｘｉｔ情報エリア
６０５  レジスタ名
６１０  調停方針
６１５  ハイパバイザ固有値
６２０  ビット名
６２５  保持値
６３０  ビット名
６３５  保持値
６４０  シャドウイング対象名
６４５  シャドウイング有効化フラグ
６５０  シャドウデータ名
６５５  シャドウデータ
６６０  シャドウデータ名
６６５  シャドウデータアドレス
６７０  シャドウイング対象名
６７５  シャドウイング有効化フラグ
６８５  シャドウデータ
６９０  シャドウイング対象名
６９５  シャドウデータアドレス
７００  インタセプト対象名
７０５  インタセプト有効化フラグ
７１０  インタセプト対象名
７１５  インタセプト有効化フラグ
８００  ＩＯＨ
８２０  ＱＰＩ
８４０  バス
８５０  Ｉ／Ｏインタフェース
８６０  ＬＡＮ
８７０  ディスク装置
８９０  ＳＡＮ
【図１】
0005493125.tif 000002
【図２】
0005493125.tif 000003
【図３】
0005493125.tif 000004
【図４】
0005493125.tif 000005
【図５Ａ】
0005493125.tif 000006
【図５Ｂ】
0005493125.tif 000007
【図６Ａ】
0005493125.tif 000008
【図６Ｂ】
0005493125.tif 000009
【図７Ａ】
0005493125.tif 000010
【図７Ｂ】
0005493125.tif 000011
【図８】
0005493125.tif 000012
【図９】
0005493125.tif 000013
【図１０】
0005493125.tif 000014
【図１１】
0005493125.tif 000015
【図１２】
0005493125.tif 000016
【図１３】
0005493125.tif 000017
【図１４】
0005493125.tif 000018
【図１５】
0005493125.tif 000019
【図１６】
0005493125.tif 000020
【図１７】
0005493125.tif 000021
【図１８】
0005493125.tif 000022
【図１９】
0005493125.tif 000023