(57)【要約】【課題】ゲストＯＳを修正することなくパフォーマンスを向上させることが可能な情報処理装置、情報処理装置の制御方法、及びプラグラムを提供する。【解決手段】本発明に係る情報処理装置は、ゲストＯＳが動作する仮想マシンと、仮想マシンモニタと、ＣＰＵと、を備え、ＣＰＵが、ゲストＯＳが実行することができない所定の命令を検出した場合に、仮想マシンモニタは、所定の命令のエミュレーションコードを生成して、そのエミュレーションコードを仮想マシンへと追加して記憶させるとともに、所定の命令を記憶したエミュレーションコードへのジャンプ命令へと書き換え、ゲストＯＳは、記憶されたエミュレーションコードを実行することを特徴とする。【選択図】図１
2011123635.tif 000002
【特許請求の範囲】
【請求項１】
ゲストＯＳが動作する仮想マシンと、仮想マシンモニタと、ＣＰＵと、を備え、
前記ＣＰＵが、前記ゲストＯＳが実行することができない所定の命令を検出した場合に、
前記仮想マシンモニタは、前記所定の命令のエミュレーションコードを生成して、当該エミュレーションコードを前記仮想マシンへと追加して記憶させるとともに、前記所定の命令を前記記憶したエミュレーションコードへのジャンプ命令へと書き換え、
前記ゲストＯＳは、前記記憶されたエミュレーションコードを実行する
ことを特徴とする情報処理装置。
【請求項２】
前記エミュレーションコードは、
前記所定の命令の次の命令へのジャンプ命令を含む
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記所定の命令は、センシティブ命令である
ことを特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
ゲストＯＳが動作する仮想マシンと、仮想マシンモニタと、ＣＰＵと、を備える情報処理装置の制御方法であって、
前記ＣＰＵを用いて、前記ゲストＯＳが実行することができない所定の命令を検出した場合に、
前記仮想マシンモニタを用いて、前記所定の命令のエミュレーションコードを生成して、当該エミュレーションコードを前記仮想マシンへと追加して記憶させるとともに、前記所定の命令を前記記憶したエミュレーションコードへのジャンプ命令へと書き換え、
前記ゲストＯＳを用いて、前記記憶されたエミュレーションコードを実行させる
ことを特徴とする情報処理装置の制御方法。
【請求項５】
前記エミュレーションコードは、
前記所定の命令の次の命令へのジャンプ命令を含む
ことを特徴とする請求項４に記載の情報処理装置の制御方法。
【請求項６】
前記所定の命令は、センシティブ命令である
ことを特徴とする請求項４又は５に記載の情報処理装置の制御方法。
【請求項７】
ＣＰＵを用いてゲストＯＳが実行することができない所定の命令を検出する処理と、
前記ＣＰＵが、前記ゲストＯＳが実行することができない所定の命令を検出した場合に、仮想マシンモニタを用いて、前記所定の命令のエミュレーションコードを生成して、当該エミュレーションコードを仮想マシンへと追加して記憶させるとともに、前記所定の命令を前記記憶したエミュレーションコードへのジャンプ命令へと書き換える処理と、
前記ゲストＯＳを用いて、前記記憶されたエミュレーションコードを実行させる処理と、
をコンピュータに実行させるプログラムを記録する記録媒体。
【請求項８】
前記エミュレーションコードは、
前記所定の命令の次の命令へのジャンプ命令を含む
ことを特徴とする請求項７に記載の記録媒体。
【請求項９】
前記所定の命令は、センシティブ命令である
ことを特徴とする請求項７又は８に記載の記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理装置の制御方法、及び記録媒体に関する。
【背景技術】
【０００２】
近年、ＣＰＵの仮想化支援機能が充実してきており、古いシステムを仮想マシン上へと容易に移行できるようになってきている。このため、古いＯＳであっても、修正を全く行う必要なく、仮想マシンモニタ上の仮想マシンにおけるゲストＯＳとして動作させることができる。
【０００３】
一方、仮想マシン上のゲストＯＳで直接実行できない特別な命令（センシティブ命令）を検出した場合には仮想マシンモニタへと切り替えるが、その切り替えコストは大きい。このため、パフォーマンスの観点から、ＣＰＵの仮想化支援機能を使った仮想マシンモニタにおいても、仮想マシン上で動作していることを意識して、仮想マシン上で実行されることに適した処理を行うようにゲストＯＳを作り変えることが行われている。すなわち、ゲストＯＳを仮想マシン向けに最適化して、ゲストＯＳが仮想マシン上で実行されていることを意識して、仮想マシンモニタと協調して動作することで、ゲストＯＳのパフォーマンス向上が可能となっている。
【０００４】
また、本発明に関連する技術として、特許文献１乃至３に記載された技術がある。例えば特許文献１には、ゲストＯＳを走行させる仮想マシンと、仮想マシンモニタと、物理コンピュータハードウェアとで構成される仮想化コンピューティングシステムが開示されている。また特許文献２には、仮想計算機上のゲストＯＳが、実計算機上のセンシティブ命令を実行しようとすると、シミュレーション割込機構を介してＶＭモニタへトラップされ、ＶＭモニタの制御に基づいてシミュレーションを行う点が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００６−１９０２８１号公報
【特許文献２】特開平０２−０４７７３０号公報
【特許文献３】特開２００９−２２３７９３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、対象のゲストＯＳが古いソフトウェアであるために、メンテナンスされていない、仮想マシン対応の修正が複雑である、修正量が多い、などの状況にあり、これらを原因として、仮想マシン向けにゲストＯＳの最適化を行うことが困難であるという問題があった。
【０００７】
従って、本発明の目的は、ゲストＯＳを修正することなくパフォーマンスを向上させることが可能な情報処理装置、情報処理装置の制御方法、及び記録媒体を提供することである。
【課題を解決するための手段】
【０００８】
本発明に係る情報処理装置は、ゲストＯＳが動作する仮想マシンと、仮想マシンモニタと、ＣＰＵと、を備え、前記ＣＰＵが、前記ゲストＯＳが実行することができない所定の命令を検出した場合に、前記仮想マシンモニタは、前記所定の命令のエミュレーションコードを生成して、当該エミュレーションコードを前記仮想マシンへと追加して記憶させるとともに、前記所定の命令を前記記憶したエミュレーションコードへのジャンプ命令へと書き換え、前記ゲストＯＳは、前記記憶されたエミュレーションコードを実行することを特徴とするものである。
【０００９】
また、本発明に係る情報処理装置の制御方法は、ゲストＯＳが動作する仮想マシンと、仮想マシンモニタと、ＣＰＵと、を備える情報処理装置の制御方法であって、前記ＣＰＵを用いて、前記ゲストＯＳが実行することができない所定の命令を検出した場合に、前記仮想マシンモニタを用いて、前記所定の命令のエミュレーションコードを生成して、当該エミュレーションコードを前記仮想マシンへと追加して記憶させるとともに、前記所定の命令を前記記憶したエミュレーションコードへのジャンプ命令へと書き換え、前記ゲストＯＳを用いて、前記記憶されたエミュレーションコードを実行させることを特徴とするものである。
【００１０】
また、本発明に係る記録媒体は、ＣＰＵを用いてゲストＯＳが実行することができない所定の命令を検出する処理と、前記ＣＰＵが、前記ゲストＯＳが実行することができない所定の命令を検出した場合に、仮想マシンモニタを用いて、前記所定の命令のエミュレーションコードを生成して、当該エミュレーションコードを仮想マシンへと追加して記憶させるとともに、前記所定の命令を前記記憶したエミュレーションコードへのジャンプ命令へと書き換える処理と、前記ゲストＯＳを用いて、前記記憶されたエミュレーションコードを実行させる処理と、をコンピュータに実行させるプログラムを記録するものである。
【発明の効果】
【００１１】
本発明によれば、ゲストＯＳを修正することなくパフォーマンスを向上させることが可能な情報処理装置、情報処理装置の制御方法、及び記録媒体を提供することができる。
【図面の簡単な説明】
【００１２】
【図１】本発明の実施の形態１に係る情報処理装置の構成図である。
【図２】本発明の実施の形態１に係る情報処理装置の動作例を説明するための図である。
【図３】本発明の実施の形態１に係る情報処理装置の動作例を説明するための図である。
【発明を実施するための形態】
【００１３】
まず、本発明の実施の形態について説明する前に、本発明の原理について説明する。
本発明では、ＣＰＵ（Central Processing Unit）の仮想化支援機能が、仮想マシン上のゲストＯＳで直接実行することができない特別な命令（センシティブ命令と呼ばれる）を検出する機能を備えている。そして、仮想マシンモニタは、仮想マシン上のゲストＯＳで実行されようとしたセンシティブ命令の解析機能と、エミュレーション機能を備えている。さらに、仮想マシンモニタは、仮想マシン上のゲストＯＳで実行可能なエミュレーションコードの生成機能と、仮想マシンへのエミュレーションコード追加機能を備えている。
【００１４】
ＣＰＵの仮想化支援機能は、仮想マシン上におけるゲストＯＳの実行中にセンシティブ命令と遭遇した場合に、その命令を検出して、仮想マシンモニタへと制御を移す。仮想マシンモニタでは、検出された命令を解析し、ゲストＯＳで実行可能なエミュレーションコードを生成してゲストＯＳに追加する。さらに、検出した命令をエミュレーションコードへのジャンプ命令に書き換える。その後、仮想マシン上のゲストＯＳに処理を戻す。以降、ゲストＯＳでは、書き換えられた部分について仮想マシンモニタに制御を移すことなくエミュレーションコードが実行される。従って、仮想マシンモニタへの切り替え回数を減らすことができるため、パフォーマンスを向上させることができる。
【００１５】
実施の形態１．
以下、図面を参照して本発明の実施の形態１について説明する。
図１は、本実施の形態１に係る情報処理装置の構成図である。図１を参照すると、本実施の形態に係る情報処理装置は、仮想化支援機能を有するＣＰＵ１０と、仮想マシンモニタ２０と、仮想マシン３０と、を備えている。
【００１６】
尚、情報処理装置は、例えば、制御処理、演算処理等と行うＣＰＵ１０、ＣＰＵ１０を用いて実行される制御プログラム、演算プログラム等が記憶されたＲＯＭ（Read Only Memory）、処理データ等を一時的に記憶するＲＡＭ（Random Access Memory）等からなるコンピュータを中心にして、ハードウェア構成されている。また、仮想マシンモニタ２０や仮想マシン３０は、例えば、上記ＲＯＭに記憶され、上記ＣＰＵによって実行されるプログラムによって実現されていてもよい。
【００１７】
ＣＰＵ１０は、センシティブ命令検出装置１１を備えている。仮想マシンモニタ２０は、センシティブ命令解析装置２１と、エミュレーションコード生成装置２２と、ゲストＯＳの命令書き換え装置２３と、を備えている。仮想マシン３０は、仮想マシンの上で実行されるゲストＯＳ３１と、エミュレーションコード格納領域３２と、を備えている。
【００１８】
仮想マシンモニタ２０は、ＣＰＵ１０のセンシティブ命令検出装置１１で検出されたセンシティブ命令について、エミュレーションを行う機能を有している。
【００１９】
センシティブ命令解析装置２１は、検出したセンシティブ命令が、ゲストＯＳ３１で実行可能なエミュレーションコードに変換可能であるか判定する機能を有している。また、センシティブ命令解析装置２１は、検出したセンシティブ命令がゲストＯＳ３１で実行可能なエミュレーションコードに変換できないものである場合には、仮想マシンモニタ２０にてセンシティブ命令のエミュレーションを行う。
【００２０】
エミュレーションコード生成装置２２は、センシティブ命令解析装置２１の解析結果に従って、エミュレーションコードを生成する。エミュレーションコードは、センシティブ命令の次の命令へのジャンプ命令を含んでいる。エミュレーションコード生成装置２２は、生成したエミュレーションコードを、仮想マシン３０のエミュレーシンコード格納領域３２に配置する。
【００２１】
命令書き換え装置２３は、ゲストＯＳ３１が実行中の命令を、エミュレーションコードへのジャンプ命令に書き換える。
【００２２】
次に、図２及び図３を参照して、本実施の形態に係る情報処理装置の動作について詳細に説明する。
まず、図２に示すように、仮想化支援機能を有するＣＰＵ１０上で動作する仮想マシンモニタ２０は、仮想マシン３０上でゲストＯＳ３１を動作させる。ここで、ゲストＯＳ３１が実行する命令列Ａ１、Ａ２、Ａ３のうち、Ａ２はセンシティブ命令であるとする。センシティブ命令であるＡ２は、仮想マシン３０にて実行された際に、ＣＰＵ１０のセンシティブ命令検出装置１１で検出される。
【００２３】
センシティブ命令Ａ２が検出された場合、仮想マシン３０から仮想マシンモニタ２０へと処理が切り替わる。仮想マシンモニタ２０のセンシティブ命令解析装置２１は、センシティブ命令Ａ２を解析する。そして、エミュレーションコード生成装置２２は、センシティブ命令Ａ２の解析結果に従って、エミュレーションコードＢ１と、センシティブ命令Ａ２の次の命令Ａ３へのジャンプ命令Ｂ２を生成し、Ｂ１とＢ２をエミュレーションコード格納領域３２に配置する。
【００２４】
その後、図３に示すように、仮想マシンモニタ２０の命令書き換え装置２３は、ゲストＯＳ３１のセンシティブ命令Ａ２を、エミュレーションコードＢ１へのジャンプ命令Ｃ１へと書き換える。
【００２５】
その結果、ゲストＯＳ３１に処理が戻った際には、ゲストＯＳ３１における命令列Ａ１、Ａ２、Ａ３は、センシティブ命令Ａ２を含まない命令列Ａ１、Ｃ１、Ａ３となる。そして、ゲストＯＳ３１は、書き換えられたジャンプ命令Ｃ１から処理を再開する。
【００２６】
これにより、命令の書き換えが行われた箇所はセンシティブ命令を含んでいないため、以降の処理では仮想マシン３０から仮想マシンモニタ２０への切り替えが発生せず、パフォーマンスを向上させることができる。
【００２７】
以上説明したように、本実施の形態１によれば、ＣＰＵの仮想化支援機能を用いた仮想マシンモニタ上において仮想マシン上で古いＯＳをゲストとして実行する際に、仮想マシンモニタが、ゲストＯＳにおけるセンシティブ命令に対するエミュレーションコードを動的に生成して、生成したエミュレーションコードをゲストＯＳに追加する。これにより、コストの大きな仮想マシンモニタへの切り替え回数を減らすことができ、パフォーマンスを向上させることができる。
【００２８】
尚、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。
【符号の説明】
【００２９】
１０  ＣＰＵ
１１  センシティブ命令検出装置、
２０  仮想マシンモニタ、
２１  センシティブ命令解析装置、
２２  エミュレーションコード生成装置、
２３  命令書き換え装置、
３０  仮想マシン、
３１  ゲストＯＳ、
３２  エミュレーションコード格納領域、
Ａ１、Ａ２、Ａ３  命令、
Ｂ１  エミュレーションコード、
Ｂ２  ジャンプ命令、
Ｃ１  ジャンプ命令
【図１】
2011123635.tif 000003
【図２】
2011123635.tif 000004
【図３】
2011123635.tif 000005