(57)【特許請求の範囲】
【請求項１】
仮想マシンモニタ（Virtual Machine Monitor）からの命令の処理方法であって、
ゲストからの命令を取得して次工程に移行する工程と、
前工程を受けて、前記取得した命令をトラップするか、予め読み込んであるトラップ条件に基づき判定し、命令をトラップしない条件のときに前記命令を実行し、命令をトラップする条件のときに次工程に進む工程と、
前工程を受けて、前記取得した命令をバッファリングするか、予め読み込んであるバッファリング条件に基づき判定し、命令をバッファリングする条件のときにメモリ装置に設けられるバッファに前記取得した命令を書き込むと共に、ＶＭ（Virtual Machine）環境を退出しないで、ゲストからの命令を取得する工程に戻り、命令をバッファリングしない条件のときに次工程に進む工程と、
前工程を受けて、ＶＭ環境を退出して、仮想マシンモニタ環境に移行すると共に、バッファした内容を取得して、次のゲスト移行時に、前記ゲストが継続して動作可能なように動作する工程と
を有し、
前記トラップ条件は、ＶＭ環境下で、前記命令を直接実行するかトラップするかを判定するための条件であり、
前記バッファリング条件は、ＶＭ環境下で、バッファリングを実施してＶＭ環境を維持するか、ＶＭ環境の退出を実施するかを判定するための条件である
ことを特徴とするＶＭ環境から仮想マシンモニタ環境に移行する回数を低減する命令の処理方法。
【請求項２】
仮想マシンモニタ（Virtual Machine Monitor）からの命令の処理方法であって、
ゲストからの命令を取得して次工程に移行する工程と、
前工程を受けて、前記取得した命令をバッファリングするか、予め読み込んであるバッファリング条件に基づき判定し、命令をバッファリングする条件のときにメモリ装置に設けられるバッファに前記取得した命令を書き込むと共に、ＶＭ（Virtual Machine）環境を退出しないで、ゲストからの命令を取得する工程に戻り、命令をバッファリングしない条件のときに次工程に進む工程と、
前工程を受けて、前記取得した命令をトラップするか、予め読み込んであるトラップ条件に基づき判定し、命令をトラップしない条件のときに前記命令を実行し、命令をトラップする条件のときに次工程に進む工程と、
前工程を受けて、ＶＭ環境を退出して、仮想マシンモニタ環境に移行すると共に、バッファした内容を取得して、次のゲスト移行時に、前記ゲストが継続して動作可能なように動作する工程と
を有し、
前記トラップ条件は、ＶＭ環境下で、前記命令を直接実行するかトラップするかを判定するための条件であり、
前記バッファリング条件は、ＶＭ環境下で、バッファリングを実施してＶＭ環境を維持するか、ＶＭ環境の退出を実施するかを判定するための条件である
ことを特徴とするＶＭ環境から仮想マシンモニタ環境に移行する回数を低減する命令の処理方法。
【請求項３】
請求項１又は２記載の命令の処理方法であって、
前記バッファリングするか判定する工程で、命令をバッファリングすると判定した場合に、バッファに前記命令を記録後、当該命令を実行するか否かを予め命令毎に記録されている条件に基づいて判定し、前記命令を実行しないときに、ＶＭ（Virtual Machine）環境を退出しないで、ゲストからの命令を取得する工程に戻り、命令を実行するときに次工程に進み、
仮想マシンモニタ環境に移行後、前記記録したバッファの命令が実行済みであるか否かを判別しながら処理を実行する
ことを特徴とする命令の処理方法。
【請求項４】
請求項１ないし３の何れか一記載の命令の処理方法であって、
前記バッファリングする内容は、命令、オペランド、命令によってアクセスされるレジスタ及びアドレスの値、エラーの理由の何れか又は全てを含むことを特徴とする命令の処理方法。
【請求項５】
ゲストからの命令であるゲスト命令を取得し、ＶＭ環境下で、前記命令を直接実行するかトラップするかを判定するためのトラップ条件に基づくトラップの判定処理、及びＶＭ環境の退出処理を行うＶＭトラップロジックと、
前記ゲスト命令を取得し、ＶＭ環境下で、バッファリングを実施してＶＭ環境を維持するか、ＶＭ環境の退出を実施するかを判定するためのバッファリング条件に基づくバッファリングの判定処理、及び命令をバッファリングする条件のときにメモリ装置に設けられるバッファに前記取得した命令を保存する命令保存処理を行うバッファリングロジックと
を備え、
前記バッファリングロジックを用いて、前記ゲスト命令を判定し、バッフアリングした場合に、ＶＭ環境を退出しないで、ゲストからの命令を取得待ち状態に戻る処理を行い、
前記ＶＭトラップロジックを用いて、ＶＭ環境を退出して仮想マシンモニタ環境に移行した場合に、前記バッファした内容を取得して、次のゲスト移行時に、前記ゲストが継続して動作可能なように動作する処理を行う
ことを特徴とするプロセッサ。
【請求項６】
請求項５記載のプロセッサであって、
前記バッファリングロジックは、メモリ装置に設けられる構造体からバッファリングする条件を取得することを特徴とするプロセッサ。
【請求項７】
請求項５又は６記載のプロセッサであって、
前記バッファリングロジックは、メモリ装置に設けられる構造体から命令をバッファリングするバッファのアドレスを取得することを特徴とするプロセッサ。
【請求項８】
請求項５ないし７の何れか一記載のプロセッサであって、
前記バッファリングロジックを用いて、前記ゲスト命令を判定し、バッフアリングした場合に、前記ゲスト命令を実行するか判定することを特徴とするプロセッサ。
【請求項９】
請求項５ないし８の何れか一記載のプロセッサであって、
前記命令保存処理は、命令、オペランド、命令によってアクセスされるレジスタ及びアドレスの値、エラーの理由の何れか又は全てを含む情報をバッファに記録することを特徴とするプロセッサ。
【請求項１０】
ゲストからの命令であるゲスト命令を取得し、ＶＭ環境下で、前記命令を直接実行するかトラップするかを判定するためのトラップ条件に基づくトラップの判定処理及びＶＭ環境の退出処理を行うＶＭトラップロジックと、前記ゲスト命令を取得し、ＶＭ環境下で、バッファリングを実施してＶＭ環境を維持するか、ＶＭ環境の退出を実施するかを判定するためのバッファリング条件に基づくバッファリングの判定処理及び命令をバッファリングする条件のときにメモリ装置に設けられるバッファに前記取得した命令を保存する命令保存処理を行うバッファリングロジックとを備えるプロセッサと、
構造体に、前記プロセッサがＶＭ環境から仮想マシンモニタ環境に移行する回数を低減する動作を行なうときに読み込まれる前記バッファリングロジックが用いる情報であり、プロセッサがＶＭ環境下で、ゲスト命令のバッファリングを実施してＶＭ環境を維持するか、次工程に進みＶＭ環境の退出を実施するように動作するかを判定する条件であるバッファリング条件を記憶するメモリ装置と
を備え、
前記バッファリングロジックを用いて、前記ゲスト命令を判定し、バッフアリングした場合に、ＶＭ環境を退出しないで、ゲストからの命令を取得待ち状態に戻る処理を行い、
前記ＶＭトラップロジックを用いて、ＶＭ環境を退出して仮想マシンモニタ環境に移行した場合に、前記バッファした内容を取得して、次のゲスト移行時に、前記ゲストが継続して動作可能なように動作する処理を行う
ることを特徴とする処理装置。
【請求項１１】
請求項１０記載の処理装置であって、
前記バッファリングロジックは、メモリ装置に設けられる構造体から命令をバッファリングするバッファのアドレスを取得することを特徴とする処理装置。
【請求項１２】
請求項１０又は１１記載の処理装置であって、
前記命令保存処理は、命令、オペランド、命令によってアクセスされるレジスタ及びアドレスの値、エラーの理由の何れか又は全てを含む情報を前記バッファに記録することを特徴とする処理装置。
【請求項１３】
請求項１０ないし１２に記載の処理装置を搭載してＶＭ環境を提供可能とするコンピュータシステム。
【請求項１４】
ゲストからの命令であるゲスト命令を取得し、ＶＭ環境下で、前記命令を直接実行するかトラップするかを判定するためのトラップ条件に基づくトラップの判定処理及びＶＭ環境の退出処理を行うＶＭトラップロジックと、前記ゲスト命令を取得し、ＶＭ環境下で、バッファリングを実施してＶＭ環境を維持するか、ＶＭ環境の退出を実施するかを判定するためのバッファリング条件に基づくバッファリングの判定処理及び命令をバッファリングする条件のときにメモリ装置に設けられるバッファに前記取得した命令を保存する命令保存処理を行うバッファリングロジックとを備えるプロセッサと、構造体に前記プロセッサがＶＭ環境から仮想マシンモニタ環境に移行する回数を低減する動作を行なうときに読み込まれる前記バッファリングロジックが用いる情報であり、プロセッサがＶＭ環境下で、ゲスト命令のバッファリングを実施してＶＭ環境を維持するか、次工程に進みＶＭ環境の退出を実施するように動作するかを判定する条件であるバッファリング条件を記憶するメモリ装置と
を備え、
前記バッファリングロジックを用いて、前記ゲスト命令を判定し、バッフアリングした場合に、ＶＭ環境を退出しないで、ゲストからの命令を取得待ち状態に戻る処理を行い、
前記ＶＭトラップロジックを用いて、ＶＭ環境を退出して仮想マシンモニタ環境に移行した場合に、前記バッファした内容を取得して、次のゲスト移行時に、前記ゲストが継続して動作可能なように動作する処理を行う
処理装置を用いて、
仮想マシン環境を提供し、ゲスト仮想マシンを実行している時に、ホスト仮想マシンモニタへ制御を移行させることなく一部の命令をバッファリングする
ことを特徴とするコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータのリソースを用いて実現する仮想マシンに関する。詳しくは、仮想マシンモニタを提供する処理装置の処理及び構造に関する。
【背景技術】
【０００２】
仮想マシンモニタ（ＶＭＭ：Virtual Machine Monitor）は、プラットフォームハードウェア上で動作し、一つまたは複数の仮想マシン（ＶＭ：Virtual Machine）を同時に実行することができる。仮想マシンは、ソフトウェアによる論理的なプラットフォームであり、ゲストオペレーティングシステムやゲストアプリケーション（以下まとめてゲストと記載する）を動作させることが可能である。
【０００３】
仮想マシン技術において、プロセッサを仮想化する方法には、エミュレーションと直接実行がある。エミュレーションは、ゲストの命令を逐次変換または予めバイナリ変換して実行する。直接実行は、ゲストの命令をプロセッサ上で直接実行する。直接実行は、ゲストＶＭの命令をホストＶＭＭより低い特権モードで実行したり、システム・リソースの状態や動作モード等を参照または変更するセンシティブ命令については、ホストＶＭＭが命令をトラップして状態変化をエミュレートしたりする。一般に、直接実行を行なう方が、エミュレーションより高速に動作する。
【０００４】
関連する技術としては、特許文献１ないし特許文献２に記載された技術が挙げられる。
【０００５】
特許文献１には、直接実行を行なう仮想マシン技術において、ゲストが発する特権命令（特権モードを要する命令）をＶＭＭで取得し（トラップ）、逐次、合成命令を生成して特権違反の発生を抑制しつつ、合成命令によって特権モードへの切り替えを行い、仮想化への悪影響を抑える技術が開示されている。
【０００６】
特許文献２に記載されているプロセッサ装置では、ＶＭの実行環境用に仮想マシン制御構造（ＶＭＣＳ）を定義し、ＶＭＣＳの情報に応じてゲスト環境とホスト環境を切り替える技術が開示されている。
【０００７】
【特許文献１】特開２００５−１２２７１１号公報
【特許文献２】特開２００７−３５０４５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、ゲストの命令をプロセッサで直接実行する場合、命令のトラップと特権モードの切り替えが頻繁に生じると、切り替えに伴うオーバーヘッドの増加によって、プロセッサの性能が低下するという問題がある。
【０００９】
これは、通常の命令に比べ、トラップしてモードの切り替えを行う命令は、オーバーヘッドが大きいためである。例えば、Ｉｎｔｅｌ社（登録商標）の提唱するＩｎｔｅｌ  Ｖｉｒｔｕａｌｉｚａｔｉｏｎ  ＴｅｃｈｎｏｌｏｇｙをサポートするＰｅｎｔｉｕｍ（登録商標）４プロセッサの場合、ホストＶＭＭからゲストＶＭに制御を移行するＶＭＥｎｔｒｙやゲストＶＭからホストＶＭＭに制御を移行するＶＭＥｘｉｔには、しばしば約２０００サイクルを要する。
【００１０】
このモードに切り替えによる性能低下の問題に対する１つの解決策として、ゲストオペレーティングシステムのセンシティブ命令を、トラップを生じさせない命令に書き換える方法がある。書き換えには、静的に書き換える方法と実行時に動的に書き換える方法がある。静的に書き換える方法の場合、予めソースコードまたはバイナリに対する修正の必要が生じるという問題がある。また、ホストＶＭＭが動的に書き換える場合、書き換えの実行に伴う新たな処理が発生し、性能が低下するという問題がある。
【００１１】
モードの切り替えによる性能劣化の問題に対するもう１つの解決策として、ゲストがセンシティブ命令を実行しようとした場合、ＶＭ環境の退出を行うかどうかを、ＶＭ制御構造体の条件フラグ等で設定する方法がある。
【００１２】
特許文献２に記載されているプロセッサ装置では、条件に合うと判定した場合は必ずＶＭ環境の退出を行わなければならず、モードの切り替えによる性能低下の効果は十分ではない。
【００１３】
即ち、特許文献１ないし特許文献２のプロセッサは、ゲスト仮想マシンを実行している時に、システム・リソースの状態や動作モードに依存するセンシティブ命令が実行された場合、ゲスト仮想マシンの実行を停止しホスト仮想マシンモニタへ制御を移行させていたため、ゲストからホストへの制御の移行が頻繁に発生し、処理速度が低下するという問題があった。
【００１４】
本発明は、上記課題及び問題に鑑み成されたものであり、ゲストＶＭからホストＶＭへの制御の移行の回数を低減し性能を改善するプロセッサを提供することを目的とする。
【課題を解決するための手段】
【００１５】
本発明のプロセッサは、ゲストからの命令であるゲスト命令を取得し、トラップの判定処理及びＶＭ環境の退出処理を行うＶＭトラップロジックと、前記ゲスト命令を取得し、バッファリングの判定処理と命令保存処理を行うバッファリングロジックとを備えることを特徴とする。
【００１６】
本発明のメモリ装置は、処理装置に設けられるメモリ装置であって、メモリ上の構造体に、ゲストからの命令のバッファリングを判定する条件であるバッファリング条件を記憶することを特徴とする。
【発明の効果】
【００１７】
本発明によれば、ゲストＶＭからホストＶＭＭへの制御の移行の回数を低減し性能を改善する処理装置を提供できる。
【発明を実施するための最良の形態】
【００１８】
本発明の実施形態を図１ないし図３に基づいて説明する。
【００１９】
図１は、実施形態の仮想化アーキテクチャーを示すブロック図である。
【００２０】
本実施形態の仮想化アーキテクチャーは、プラットフォームハードウェア１１０、仮想マシンモニタ（ＶＭＭ）１４０、及び、ＶＭＭ上で動作する仮想マシン（ＶＭ）１５０で構成される。以降ＶＭＭ及びＶＭを使用する。
【００２１】
プラットフォームハードウェア１１０は、プロセッサ１２０とメモリ１３０を含む。プロセッサ１２０は、命令を実行する命令実行ロジック１２１、ＶＭトラップロジック１２２及びバッファリングロジック１２３を備えている。また、メモリ１３０には、ＶＭ構造体１３１とバッファ構造体１３２が配置される。
【００２２】
ＶＭＭ１４０は、プラットフォームハードウェア１１０であるプロセッサ１２０及びメモリ１３０等のハードウェア資源を用い、ＶＭ１５０を実行可能とする。
【００２３】
ＶＭ１５０は、仮想的なＯＳ（Operating System）実行環境を提供し、ゲストＯＳ１５１やゲストＡＰＰ１５２が動作する。
【００２４】
図２は、プラットフォームハードウェアを示すブロック図である。
【００２５】
ＶＭトラップロジック１２２は、ゲストからの命令であるゲスト命令を受けて、トラップの判定及びＶＭ環境の退出を行うロジックである。ＶＭトラップロジック１２２には、判定部２１１、条件記憶部２１２、ＶＭ退出処理部２１３が含まれる。
【００２６】
判定部２１１は、ゲスト命令を受けて、トラップを行うかどうかの判定を実行する。条件記憶部２１２は、トラップの条件であるメモリ１３０上のＶＭ構造体１３１の内容を読み取り、記憶するロジックである。ＶＭ退出処理部２１３は、判定部２１１でトラップを行うと判定した場合に、ＶＭ環境の退出処理を行う。
【００２７】
バッファリングロジック１２３は、ＶＭトラップロジック１２２でトラップの判定を受けたゲスト命令について、バッファリングを行うかどうかの判定と命令の保存を行うロジックである。バッファリングロジック１２３には、判定部２２１、条件記憶部２２２、命令保存処理部２２３が含まれる。尚、ロジックは、マイクロコードやプログラムを用いるプログラマブルロジック、ハードコードロジックの何れで実現しても良い。
【００２８】
判定部２２１は、トラップされたゲスト命令を受けて、バッファリングを行うかどうかの判定を実行する。条件記憶部２２２は、バッファリングの条件であるメモリ１３０のバッファリング構造体１３２の内容を読み取り、記憶するロジックである。命令保存処理部２２３は、バッファリングを行うと判定された場合に、命令の保存処理を実施する。
【００２９】
ＶＭ構造体１３１は、ＶＭコンテキスト２４１、ＶＭトラップ条件２４２、バッファ構造体アドレス２４３等を含むメモリ上の構造である。ＶＭ構造体１３１は、ＶＭＭ１４０上で動作するＶＭ１５０の数、あるいは仮想ＣＰＵの数に応じて複数存在する。
【００３０】
ＶＭコンテキスト２４１は、ＶＭ１５０の状態を示すデータ構造であり、レジスタの値やその他のＣＰＵ状態を格納する。ＶＭトラップ条件２４２は、ＶＭ環境でゲスト命令を実行している時に、命令を直接実行するかトラップするかを判定するための条件を示すデータ構造である。条件には、命令の種類、命令によってアクセスされるレジスタやアドレス範囲等が複数設定される。バッファ構造体アドレス２４３は、ＶＭ構造体１３１に関連するバッファのメモリアドレスや範囲が記録されるデータ構造である。
【００３１】
バッファ構造体１３２（バッファリング構造体）は、バッファリング条件２５１とバッファアドレス２５２の組を持つ構造である。条件とアドレスの組は、一つのバッファ構造体中に複数存在しても良い。
【００３２】
バッファリング条件２５１は、ＶＭ環境でゲスト命令を実行してトラップを行なう場合に、バッファリングを実施してＶＭ環境を維持するか、ＶＭ環境の退出を実施するかを判定するための条件を示すデータ構造である。条件は、ＶＭトラップ条件と同様に条件を設定される。バッファアドレス２５２は、命令を格納するバッファ２６０のメモリアドレスや範囲が記録されるデータ構造である。
【００３３】
バッファ２６０は、バッファリング条件に合う命令を保存するためのメモリ領域である。メモリ領域に保存するレコードには、命令、オペランド、命令によってアクセスされるレジスタやアドレスの値、エラーの理由等が含まれる。
【００３４】
このような構成において、ゲストＶＭからホストＶＭへの制御の移行の回数を低減し性能を改善する。
【００３５】
次に、実施形態のシステムの動作を示し、本発明を説明する。
【００３６】
図３は、実施形態のシステムの動作を示すフローチャートである。図３では、ＶＭＭ１４０からＶＭ１５０へ制御を移行する場合のプロセッサ１２０の動作を示す。
【００３７】
プロセッサ１２０は、ＶＭＭ１４０からＶＭ１５０へ制御を移行する命令を受け取る（ステップＳ３０１）。
【００３８】
次にプロセッサ１２０は、メモリ１３０上のＶＭ構造体１３１を検査し、ＶＭトラップ条件２４２を条件記憶部２１２に読み込む（ステップＳ３０２）。
【００３９】
プロセッサ１２０は、メモリ１３０上のバッファリング構造体１３２を検査し、バッファリング条件２５１とバッファアドレス２５２を条件記憶部２２２に読み込む（ステップＳ３０３）。
【００４０】
条件の読み込み終了後、プロセッサ１２０はモードを切り替え、ＶＭ１５０へと制御を移行する（ステップＳ３０４）。
【００４１】
ＶＭ環境へ移行後の、プロセッサ１２０の命令実行の動作を以下に述べる。
【００４２】
まず、プロセッサ１２０は、ゲストの１命令をメモリ１３０から取得する（読み込む）（ステップＳ３０５）。
【００４３】
プロセッサ１２０は、ＶＭトラップロジック１２２の判定部２１１を用い、ゲストの１命令と条件記憶部２１２に保持されたＶＭトラップ条件２４２とを比較し、トラップを発生するかどうかの判定を行う（Ｓステップ３０６）。
【００４４】
プロセッサ１２０は、命令がＶＭトラップ条件２４２に合致しなかった場合、命令実行ロジック１２１を用いて、ゲストの１命令を実行する（ステップＳ３０７）。
【００４５】
プロセッサ１２０は、命令がＶＭトラップ条件２４２に合致した場合、バッファリングロジック１２３の判定部２２１を用いて、ゲストの１命令と条件記憶部２２２に保持されたバッファリング条件とを比較し、バッファリングを行うかどうかの判定を行う（ステップＳ３０８）。
【００４６】
プロセッサ１２０は、命令がバッファリング条件に合致しなかった場合、ＶＭ退出処理部２１３を用いて、ＶＭ状態の保存等の処理を行い、モードを切り替えてＶＭ環境を退出し、ＶＭＭへ制御を移行する（ステップＳ２０９）。
【００４７】
プロセッサ１２０は、命令がバッファリング条件に合致した場合、命令保存処理部２２３を用いて、指定されたバッファ２６０の領域へ、命令、オペランド、命令によってアクセスされるレジスタやアドレスの値、エラーの理由等を書き込む（ステップＳ３１０）。
【００４８】
ゲストの１命令の実行（ステップＳ３０７）、あるいはバッファへの命令の書き込み（ステップＳ３１０）を行った後は、プロセッサ１２０は、再びゲストの1命令の読み込み（ステップ３０５）の処理を行う。以下、ＶＭ環境の退出（ステップＳ３０９）が起こるまで同様の処理を繰り返す。
【００４９】
ＶＭ環境を退出した後、プロセッサ１２０は、ＶＭＭ１４０に制御を移行する。ＶＭＭ１４０は、バッファに保存された命令の内容を読み取り、次にゲストＶＭ１５０に制御を移行する時に継続して動作できるよう、エミュレーションやログ保存等の適切な処理を行う。
【００５０】
このように動作することによって、ゲスト仮想マシン（ＶＭ）を実行している時に、ホスト仮想マシンモニタ（ＶＭＭ）へ制御を移行させることなく一部の命令をバッファリング可能とできる。
【００５１】
このバッファリングの動作を可能とすることで、プロセッサが命令をトラップしてＶＭ環境の退出を起こす前に、退出を実行するかバッファリングを行うかを判定可能とし、必要に応じてバッファリングを行うことで、ゲストからホストへの制御の移行の回数が低減される。この為、ゲストからホストへの不必要な制御の移行の回数が低減れ、システムの処理性能が向上する。
【００５２】
即ち、ゲストＶＭからホストＶＭＭへの制御の移行の回数を低減し性能を改善できる。
【００５３】
本発明の別の実施形態を図４及び図５に基づいて説明する。別の実施形態の説明では、図１ないし図３に基づいて説明した実施形態と同一の部分は同一の符号で示し、説明も省略する。
【００５４】
図４は、別の実施形態のプラットフォームハードウェアを示すブロック図である。図４に示す別の実施形態は、上述した実施形態と異なり、プロセッサ１２０に変えてプロセッサ３２０が設けられている。また、プロセッサ３２０には、ＶＭトラップロジック１２２に変えてＶＭトラップロジック３２２、バッファリングロジック１２３に変えてバッファリングロジック３２３が設けられている。また、バッファリングロジック３２３には、ゲストからのゲスト命令をバッファリングしるか判定する判定部４２１が設けられている。ＶＭトラップロジック３２２には、バッファリングされたゲスト命令をトラップするか判定する判定部４１１が設けられている。
【００５５】
このような構成において、プロセッサ３２０は、ゲスト命令を先にバッファリングロジック３２３の判定部４２１に入力し、その後ＶＭトラップロジック３２２の判定部４１１に処理が移行する。
【００５６】
次に、別の実施形態のシステムの動作を示し、本発明を説明する。
【００５７】
図５は、別の実施形態のシステムの動作を示すフローチャートである。図５では、ＶＭＭ１４０からＶＭ１５０へ制御を移行する場合のプロセッサ３２０の動作を示す。
【００５８】
図５のステップＳ５０１〜Ｓ５０４で示されるプロセッサ３２０の動作は、図３のステップＳ３０１〜Ｓ３０４で示されるプロセッサ１２０の動作と同一のため、詳細な説明を省略する。
【００５９】
プロセッサ３２０は、ＶＭＭ１４０からＶＭ１５０へ制御を移行する命令を受け、メモリ１３０上のＶＭ構造体１３１を検査し、ＶＭトラップ条件２４２を条件記憶部２１２に読み込むと共に、メモリ１３０上のバッファリング構造体１３２を検査し、バッファリング条件２５１とバッファアドレス２５２を条件記憶部２２２に読み込む。条件の読み込み終了後、プロセッサ３２０はモードを切り替え、ＶＭ１５０へと制御を移行する（ステップＳ５０１〜ステップＳ５０４）。
【００６０】
ＶＭ環境へ移行後の、プロセッサ３２０の命令実行の動作を以下に述べる。
【００６１】
まず、プロセッサ３２０は、ゲストの１命令をメモリ１３０から読み込む（ステップＳ５０５）。
【００６２】
プロセッサ３２０は、バッファリングロジック３２３の判定部４２１を用い、ゲストの１命令と条件記憶部２２２に保持されたバッファリング条件２５１とを比較し、バッファリングを行うかどうかの判定を行う（ステップＳ５０６）。
【００６３】
プロセッサ３２０は、命令がバッファリング条件に合致しなかった場合、ＶＭトラップロジック１２２の判定部２１１を用いて、ゲストの１命令と条件記憶部２１２に保持されたＶＭトラップ条件２４２とを比較し、トラップを発生する否かの判定を行う（ステップＳ５０７）。
【００６４】
プロセッサ３２０は、命令がＶＭトラップ条件に合致した場合、ＶＭ退出処理部２１３を用いて、ＶＭ状態の保存等の処理を行い、モードを切り替えてＶＭ環境を退出し、ＶＭＭへ制御を移行する（ステップＳ５０８）。
【００６５】
プロセッサ３２０は、命令がＶＭトラップ条件に合致しなかった場合、命令実行ロジック１２１を用いて、ゲストの１命令を実行する（ステップＳ５０９）。
【００６６】
ステップＳ５０６において命令がバッファリング条件に合致した場合、プロセッサ３２０は、命令保存処理部２２３を用いて、指定されたバッファ２６０へ、命令、オペランド、命令によってアクセスされるレジスタやアドレスの値、エラーの理由等を書き込む（ステップＳ５１０）。
【００６７】
プロセッサ３２０は、バッファリングロジック１２３の判定部２２１を用いて、命令を実行するかどうかの判定を行う（ステップＳ５１１）。尚、命令を実行するかどうかの条件は、バッファリング構造体１３２のバッファリング条件２５１に予め記述する。
【００６８】
プロセッサ３２０は、命令を実行する場合、ＶＭトラップロジック１２２を用いてトラップ条件に合致しない命令でないか確認し（ステップ５０７）、ゲストの一命令を実行する（ステップ５０９）。
【００６９】
プロセッサ３２０は、命令を実行しない場合、ゲストの１命令の読み込みの処理（ステップ５０５）を行う。以下、ＶＭ環境の退出（ステップ５０８）が起こるまで同様の処理を繰り返す。
【００７０】
ＶＭ環境を退出した後、プロセッサ３２０は、ＶＭＭ１４０に制御を移行する。ＶＭＭ１４０は、バッファに保存された命令の内容を読み取り、次にゲストＶＭ１５０に制御を移行する時に継続して動作できるよう、エミュレーションやログ保存等の適切な処理を行う。この時、ＶＭＭ１４０は、バッファに保存された命令が実行済みのものかそうでないかを判断しながら処理を実行する。
【００７１】
このように動作することによって、ゲスト仮想マシン（ＶＭ）を実行している時に、ホスト仮想マシンモニタ（ＶＭＭ）へ制御を移行させることなく一部の命令をバッファリング可能とできる。
【００７２】
更に、ＶＭトラップを起こさない通常の命令についてもバッファリングを行うことができる。
【００７３】
加えて、通常の命令について、バッファリングを行った後、実行するかしないかを制御できる。
【００７４】
以上説明したように、仮想マシン環境においてゲスト仮想マシンを実行している時に、ホスト仮想マシンモニタへ制御を移行させることなく一部の命令をバッファリング可能する処理装置を提供する。これにより、ゲストからホストへの制御の移行の回数を低減し、性能を改善できる。
【００７５】
即ち、ゲストＶＭからホストＶＭＭへの制御の移行の回数を低減し性能を改善できるプロセッサ、メモリ装置、処理装置及び命令の処理方法を提供できる。同じく、ゲストＶＭからホストＶＭＭへの制御の移行の回数を低減し性能を改善できるコンピュータシステム（パーソナルコンピュータやワークステーション）を提供できる。
【００７６】
また、本発明の具体的な構成は前述の実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の変更があっても本発明に含まれる。
【産業上の利用可能性】
【００７７】
本発明は、上記説明した処理を行う処理装置（ＣＰＵ）に適応できる。また、処理装置を搭載してＶＭ環境を提供するコンピュータシステムに適応できる。
【図面の簡単な説明】
【００７８】
【図１】実施形態の仮想化アーキテクチャーを示すブロック図である。
【図２】プラットフォームハードウェアを示すブロック図である。
【図３】実施形態のシステムの動作を示すフローチャートである。
【図４】別の実施形態のプラットフォームハードウェアを示すブロック図である。
【図５】別の実施形態のシステムの動作を示すフローチャートである。
【符号の説明】
【００７９】
１１０  プラットフォームハードウェア
１２０  プロセッサ
１２１  命令実行ロジック
１２２  ＶＭトラップロジック
１２３  バッファリングロジック
１３０  メモリ（メモリ装置）
１３１  ＶＭ構造体
１３２  バッファ構造体（バッファリング構造体）
１４０  仮想マシンモニタ（ＶＭＭ）
１５０  仮想マシン（ＶＭ）
１５１  ゲストＯＳ
１５２  ゲストＡＰＰ
２１１  判定部
２１２  条件記憶部
２１３  ＶＭ退出処理部
２２１  判定部
２２２  条件記憶部
２２３  命令保存処理部
２４１  ＶＭコンテキスト
２４２  ＶＭトラップ条件
２４３  バッファ構造体アドレス
２５１  バッファリング条件
２５２  バッファアドレス
２６０  バッファ
３２０  プロセッサ
３２２  ＶＭトラップロジック
３２３  バッファリングロジック
４１１  判定部
４２１  判定部
【図１】
0004530182.tif 000002
【図２】
0004530182.tif 000003
【図３】
0004530182.tif 000004
【図４】
0004530182.tif 000005
【図５】
0004530182.tif 000006