(57)【要約】【課題】仮想マシンのＩ／Ｏ性能を向上させること。【解決手段】デバイスプロファイル２５０と情報処理装置に設けられたＩ／Ｏデバイス構成とに応じて、仮想マシン２００に対してＩ／Ｏデバイスを割り当てる情報を含むデバイスモデルを作成するデバイスマネージャ２２０と、仮想マシンが割り当てられたＩ／ＯデバイスにＭＭＩＯアクセスするためのアドレス変換、および前記割り当てられたＩ／Ｏデバイスと前記クライアント用仮想マシンとの間でＤＭＡ転送を行うためのアドレス変換を行うためのアドレス変換回路２６０を有する半導体回路とを具備し、仮想マシンモニタ２３０は、デバイスモデルに基づいて仮想マシンにＩ／Ｏデバイスを割り当て、仮想マシンは、前記割り当てられたＩ／Ｏデバイスに対してＭＭＩＯアクセスを行う、または前記割り当てられたＩ／Ｏデバイスとの間でＤＭＡ転送を行う場合、アドレス変換回路２６０を用いる。【選択図】図３
2009259108.tif 000002
【特許請求の範囲】
【請求項１】
ハイパーバイザ上でクライアント用仮想マシンを含む仮想マシンが動作する情報処理装置であって、
デバイスプロファイルと前記情報処理装置に設けられたＩ／Ｏデバイス構成とに応じて、前記クライアント用仮想マシンに対してＩ／Ｏデバイスを割り当てる情報を含むデバイスモデルを作成するデバイスマネージャと、
前記クライアント用仮想マシンが前記割り当てられたＩ／ＯデバイスにＭＭＩＯアクセスするためのアドレス変換、および前記割り当てられたＩ／Ｏデバイスと前記クライアント用仮想マシンとの間でＤＭＡ転送を行うためのアドレス変換を行うためのアドレス変換回路を有する半導体回路とを具備し、
前記ハイパーバイザは、前記デバイスモデルに基づいて前記クライアント用仮想マシンに前記Ｉ／Ｏデバイスを割り当て、
前記クライアント用仮想マシンは、前記割り当てられたＩ／Ｏデバイスに対してＭＭＩＯアクセスを行う、または前記割り当てられたＩ／Ｏデバイスとの間でＤＭＡ転送を行う場合、前記アドレス変換回路を用いて前記アクセスまたは前記ＤＭＡ転送を行うことを特徴とする情報処理装置。
【請求項２】
前記デバイスプロファイルは前記情報処理装置の使用者毎に用意され、
前記デバイスマネージャは、前記使用者に応じたデバイスプロファイルからデバイスモデルを作成することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記デバイスマネージャは、前記デバイスプロファイルに応じて前記仮想マシンから前記情報処理装置に設けられたＩ／Ｏデバイスへのアクセスを制限することを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記クライアント用仮想マシンは、サーバから前記仮想マシンのイメージをロードすることによって前記ハイパーバイザ上で動作することを特徴とする請求項１に記載の情報処理装置。
【請求項５】
前記サーバは、前記ハイパーバイザ上で動作する仮想マシンであることを特徴とする請求項４に記載の情報処理装置。
【請求項６】
ハイパーバイザ上でクライアント用仮想マシンを含む仮想マシンが動作する情報処理装置の制御方法であって、
デバイスプロファイルと前記情報処理装置に設けられたＩ／Ｏデバイス構成とに応じて、前記クライアント用仮想マシンに対してＩ／Ｏデバイスを割り当てる情報を含むデバイスモデルを作成し、
前記ハイパーバイザが、前記デバイスモデルに基づいて前記クライアント用仮想マシンに前記Ｉ／Ｏデバイスを割り当て、
前記クライアント用仮想マシンは、前記割り当てられたＩ／Ｏデバイスに対してＭＭＩＯアクセスを行う、または前記割り当てられたＩ／Ｏデバイスとの間でＤＭＡ転送を行う場合、前記クライアント用仮想マシンが前記割り当てられたＩ／ＯデバイスにＭＭＩＯアクセスするためのアドレス変換、および前記割り当てられたＩ／Ｏデバイスと前記クライアント用仮想マシンとの間でＤＭＡ転送を行うためのアドレス変換を行うためのアドレス変換回路を用いて前記アクセスまたは前記ＤＭＡ転送を行うことを特徴とする情報処理装置の制御方法。
【請求項７】
前記デバイスプロファイルは前記情報処理装置の使用者毎に用意され、
前記デバイスマネージャは、前記使用者に応じたデバイスプロファイルからデバイスモデルを作成することを特徴とする請求項６に記載の情報処理装置の制御方法。
【請求項８】
前記デバイスマネージャは、前記デバイスプロファイルに応じて前記仮想マシンからＩ／Ｏデバイスへのアクセスを制限することを特徴とする請求項７に記載の情報処理装置の制御方法。
【請求項９】
前記クライアント用仮想マシンは、サーバから前記仮想マシンのイメージをロードすることによって前記ハイパーバイザ上で動作することを特徴とする請求項６に記載の情報処理装置の制御方法。
【請求項１０】
前記サーバは、前記ハイパーバイザ上で動作する仮想マシンであることを特徴とする請求項９に記載の情報処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ハイパーバイザ上で仮想マシンが動作する技術に関し、特に仮想マシンがＩ／Ｏデバイスと通信を行う情報処理装置、および情報処理装置の制御方法に関する。
【背景技術】
【０００２】
現在、ハードウエアとユーザが使用するソフト環境（仮想マシン）とを切り分ける、仮想マシン技術が注目されている。
【０００３】
仮想マシン技術では、ハイパーバイザがハードウェアと仮想マシンとの間の調停を行っている。
【０００４】
従来、一台のＰＣの上に仮想マシンモニタ（ハイパーバイザ）が動作し、その上で仮想マシンが実行される。仮想マシンのＩ／Ｏデバイスは仮想デバイスのエミュレーションで実行され、その仮想デバイスの表示内容は物理デバイスを経由してディプレイに表示される（特許文献１）。
【特許文献１】特開２００７−３２３３５４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
従来の仮想化技術では、仮想デバイスでグラフィックのエミュレーションをするため、同様に高速描画を行うことができない。また、各種Ｉ／Ｏデバイスも同様にエミュレーション実行のため高速動作させることができない。また、仮想マシンはエミュレーションデバイスの構成に合わせた形でインストールしなければならず、作成したイメージは、仮想マシンモニタ上のみでしか動作できない。
【０００６】
本発明の目的は、仮想マシンのＩ／Ｏ性能を向上させ、実マシンと同じデバイス構成で仮想マシンとして動作させることが可能な情報処理装置および情報処理装置の制御方法を提供することにある。
【課題を解決するための手段】
【０００７】
本発明の一例に係わる、ハイパーバイザ上でクライアント用仮想マシンを含む仮想マシンが動作する情報処理装置は、デバイスプロファイルと前記情報処理装置に設けられたＩ／Ｏデバイス構成とに応じて、前記クライアント用仮想マシンに対してＩ／Ｏデバイスを割り当てる情報を含むデバイスモデルを作成するデバイスマネージャと、前記クライアント用仮想マシンが前記割り当てられたＩ／ＯデバイスにＭＭＩＯアクセスするためのアドレス変換、および前記割り当てられたＩ／Ｏデバイスと前記クライアント用仮想マシンとの間でＤＭＡ転送を行うためのアドレス変換を行うためのアドレス変換回路を有する半導体回路とを具備し、前記ハイパーバイザは、前記デバイスモデルに基づいて前記クライアント用仮想マシンに前記Ｉ／Ｏデバイスを割り当て、前記クライアント用仮想マシンは、前記割り当てられたＩ／Ｏデバイスに対してＭＭＩＯアクセスを行う、または前記割り当てられたＩ／Ｏデバイスとの間でＤＭＡ転送を行う場合、前記アドレス変換回路を用いて前記アクセスまたは前記ＤＭＡ転送を行うことを特徴とする。
【発明の効果】
【０００８】
本発明によれば、仮想マシンのI/Oデバイスをエミュレーション用に変更することなく動作させることが可能となり、また、仮想マシンのＩ／Ｏ性能を向上させることが可能になる。
【発明を実施するための最良の形態】
【０００９】
本発明の実施の形態を以下に図面を参照して説明する。
【００１０】
図１に示すように、本発明の一実施形態に係わる情報処理装置としてのクライアントコンピュータおよびサーバを含むシステム構成を示すブロック図である。  
図１に示すように、クライアントコンピュータ１０は、仮想マシンモニタ（ハイパーバイザ）２３０、仮想マシンマネージャ２１０、デバイスマネージャ２２０、仮想マシン２００、ＬＡＮコントローラ１１０、ＵＳＢコントローラ１１３、ＩＥＥＥ１３９４コントローラ１１６、ＰＣＩデバイス１１４、ＧＰＵ（Graphycs Processor Unit）１０５／サウンドコントローラ１０６等を有する。
【００１１】
仮想マシンモニタ２３０は、ＬＡＮコントローラ１１０、ＵＳＢコントローラ１１３、ＩＥＥＥ１３９４コントローラ１１６、ＰＣＩデバイス１１４、ＧＰＵ（Graphycs Processor Unit）１０５／サウンドコントローラ１０６等のハードウエアを管理し、仮想マシンモニタ２３０上で動作する各仮想マシン２００に対してリソース割り当てを行う。また仮想マシンモニタ２３０は、仮想マシン２００の実行スケジュールと仮想マシンからのＩ／Ｏ要求をハードウェアへ振り分ける。
【００１２】
仮想マシンマネージャ２１０は、仮想マシンモニタ２３０上で動作する仮想マシン２００の起動制御等を行う。デバイスマネージャ２２０は、仮想マシン２００の起動前にハードウエアの管理を行う。また、デバイスマネージャは、仮想マシンの起動後に、Ｉ／Ｏデバイスとの通信制御等も行う。
【００１３】
なお、仮想マシンモニタ２３０、仮想マシンマネージャ２１０、デバイスマネージャ２２０、および仮想マシン２００は、プロセッサ上で動作するソフトウエアモジュールである。
【００１４】
ＬＡＮコントローラ１１０は、本コンピュータをＬＡＮ（Local Area Network）に接続するためのネットワークインターフェースである。ＵＳＢコントローラ１１３は、ＵＳＢバスに接続されたキーボード１３、タッチパッド１６、ＨＤＤ／フラッシュメモリ１１３Ａ等のＵＳＢデバイスとの通信を制御するコントローラである。ＩＥＥＥ１３９４コントローラ１１６は、ＩＥＥＥ１３９４バスに接続された外部デバイスとの通信を制御するコントローラである。ＰＣＩデバイス１１４は，ＰＣＩバスに接続されたデバイスである。ＧＰＵ１０５は、ディスプレイを制御する表示コントローラである。このＧＰＵ１０５はビデオメモリ（ＶＲＡＭ）を有しており、ＯＳ／アプリケーションプログラムによってビデオメモリに描画された表示データから、ディスプレイに表示すべき表示イメージを形成する映像信号を生成する。サウンドコントローラ１０６は音源デバイスであり、再生対象のオーディオデータをスピーカに出力する。
【００１５】
サーバ２４０のＨＤＤ２４１内には、仮想マシンを起動するためのソフトウェア（ＳＷ）イメージ２４２が保管されている。このＳＷイメージ２４２は、仮想マシンが動作するためのハードディスク（ＨＤＤ）のパーティションのイメージと同等であり、仮想マシンから見るとＬＡＮ経由であってもＨＤＤそのものと見える。
【００１６】
次に、図２を参照して、本コンピュータのシステム構成について説明する。
【００１７】
本コンピュータは、図２に示されているように、ＣＰＵ１０１、ノースブリッジ１０２、主メモリ１０３、サウスブリッジ１０４、グラフィクスプロセッシングユニット（ＧＰＵ）１０５、ビデオメモリ（ＶＲＡＭ）１０５Ａ、サウンドコントローラ１０６、ＢＩＯＳ−ＲＯＭ１０９、ＬＡＮコントローラ１１０、ハードディスクドライブ（ＨＤＤ）１１１、ＤＶＤドライブ１１２、ＰＣＩデバイス１１４、モデム１１５、IEEE 1394コントローラ１１６、およびエンベデッドコントローラ／キーボードコントローラＩＣ（ＥＣ／ＫＢＣ）１１７等を備えている。
【００１８】
ＣＰＵ１０１は本コンピュータ１０の動作を制御するプロセッサであり、ハードディスクドライブ（ＨＤＤ）１１１から主メモリ１０３にロードされる、各種アプリケーションプログラムを実行する。また、ＣＰＵ１０１は、ＢＩＯＳ−ＲＯＭ１０９に格納されたＢＩＯＳ（Basic Input Output System）も実行する。ＢＩＯＳはハードウェア制御のためのプログラムである。
【００１９】
ノースブリッジ１０２は、ＣＰＵ１０１のローカルバスとサウスブリッジ１０４との間を接続するブリッジデバイスである。ノースブリッジ１０２には、主メモリ１０３をアクセス制御するメモリコントローラも内蔵されている。また、ノースブリッジ１０２は、PCI EXPRESS規格のシリアルバスなどを介してＧＰＵ１０５との通信を実行する機能も有している。
【００２０】
ＧＰＵ１０５は、本コンピュータ１０のディスプレイモニタとして使用されるディスプレイ１１７を制御する表示コントローラである。このＧＰＵ１０５によって生成される表示信号はディスプレイ１１７に送られる。
【００２１】
サウスブリッジ１０４は、ＬＰＣ（Low Pin Count）バス上のレガシーデバイス１８を含む各デバイス、およびＰＣＩ（Peripheral Component Interconnect）バス上の各デバイスを制御する。また、サウスブリッジ１０４は、ハードディスクドライブ（ＨＤＤ）１１１およびＤＶＤドライブ１１２を制御するためのＩＤＥ（Integrated Drive Electronics）コントローラを内蔵している。さらに、サウスブリッジ１０４は、サウンドコントローラ１０６との通信を実行する機能も有している。
【００２２】
サウンドコントローラ１０６は音源デバイスであり、再生対象のオーディオデータをスピーカ１８に出力する。ＵＳＢコントローラ１１３は、ＵＳＢ規格のシリアルバスを介して外部機器との通信を実行する。IEEE 1394コントローラ１１６は、IEEE 1394規格のシリアルバスを介して外部機器との通信を実行する。モデム１１５は、電話回線を介してなどのアナログ回線を通じてデータ通信を行うための信号変換装置である。
【００２３】
エンベデッドコントローラ／キーボードコントローラＩＣ（ＥＣ／ＫＢＣ）１１６は、電力管理のためのエンベデッドコントローラと、キーボード（ＫＢ）１３およびタッチパッド１６を制御するためのキーボードコントローラとが集積された１チップマイクロコンピュータである。このエンベデッドコントローラ／キーボードコントローラＩＣ（ＥＣ／ＫＢＣ）１１６は、ユーザによるパワーボタン１４の操作に応じて本コンピュータ１０をパワーオン／パワーオフする機能を有している。さらに、エンベデッドコントローラ／キーボードコントローラＩＣ（ＥＣ／ＫＢＣ）１１６は、リモコンユニットインタフェース２０との通信を実行する機能を有している。
【００２４】
上記デバイスの内、ＧＰＵ１０５，ＬＡＮコントローラ１１０、ＨＤＤ１１およびＤＶＤが接続されるＩＤＥ（Integrated Drive Electronics）コントローラ、ＵＳＢコントローラ１１３，ＩＥＥＥ１３９４コントローラ１１６，モデム１１５、その他ＰＣＩデバイス１１４などは、ＰＣＩデバイスとして接続されている。ＣＰＵ１０１からは、ＰＣＩの規格に沿った形で上記デバイスにアクセスし、動作する。
【００２５】
本コンピュータは、インテル（登録商標）のダイレクトＩ／Ｏテクノロジー（ＶＴ−ｄ）」をサポートした装置である。ＶＴ−ｄでは，Ｉ／Ｏを仮想化する技術である。ＶＴ−ｄは、特に，チップ・セット、Ｉ／Ｏコントローラ，メモリー・コントローラの部分を担っている。
【００２６】
Ｉ／Ｏデバイスの仮想化にはいくつかの手法があるが、ＶＴ−ｄをサポートしている本装置では、パススルー・モデルを用いて、Ｉ／Ｏデバイスを仮想化する。パススルー・モデルでは、仮想マシンモニタがＩ／Ｏデバイスを直接仮想マシンに割り当てることができる。例えば、仮想マシンごとに専用のＳＣＳＩカードやネットワーク・カードなどを用意し、それらを１つずつ仮想マシンに割り当てる。また、デバイスマネージャは、ＰＣＩデバイスの初期化制御を行われる。
【００２７】
以下に、仮想マシンの起動、およびＩ／Ｏデバイスの割り当てについて説明する。  
図３は、Ｈ／Ｗデバイスを管理するデバイスマネージャの構成および仮想マシン、仮想マシンモニタとの関連を示す。  
図４、図５、図６、図７は、クライアントＰＣ起動（電源ＯＮによる）から仮想マシン実行までの動作フローを示す。
【００２８】
ユーザがパワーボタンを押下操作することによってウェイクアップイベントが発生すると、ＣＰＵ１０２はＢＩＯＳ−ＲＯＭ１０９に搭載されているＢＩＯＳによってＰＯＳＴ（Power-On Self Test）処理を実行する（ステップＳ１１）。ＰＯＳＴ処理が終了すると、起動したブートローダは、通常ならばＯＳをロードするが、このＰＣは、ブートローダは、仮想マシンマネージャ２１０、デバイスマネージャ２２０、仮想マシンモニタ２３０をロード、起動する（ステップＳ１４）。
【００２９】
ここで、仮想マシンの起動指示（通常のＯＳ起動と同じ）があると、仮想マシンマネージャ２１０は、起動するユーザ情報を決定する（ステップＳ１５）。ＰＣのＩＤや、予め設定されたユーザ名などからユーザを決定すると、仮想マシンマネージャ２１０は、サーバ２４０から仮想マシンのＳＷイメージ２４２をＬＡＮ経由でダウンロードする（ステップＳ２１）。なお、すべてロードするのではなく、仮想マシンが初期起動するために必要なローダ、システムファイル、ドライバ等をロードする。同時に仮想マシンマネージャは、デバイスマネージャ２２０にユーザに適したデバイスを構築するように指示する。
【００３０】
デバイスマネージャ２２０は、ユーザ情報からデバイスプロファイル２５０をロードし（ステップＳ３１）、デバイスプロファイルに応じたデバイスモデル２１１を構成する（ステップＳ３２）。デバイスプロファイル２５０の例を図８に示す。デバイスモデルの構成は、デバイスモデル生成部２２１がＢＩＯＳのＡＣＰＩ情報からクライアントＰＣが持つ実際のＨＷデバイス情報を取得し、プロファイル情報と照合して構成する。例えば、ＡＣＰＩ情報にＵＳＢデバイスが存在することが記述されていた場合、プロファイル情報にＤｅｖｉｃｅＴｙｐｅがＵＳＢであるリストがあるか探し、リストに存在する場合にはそのＵＳＢデバイスを仮想マシンが使用するように図９のデバイスモデル構成リストを構成する。ＡＣＰＩ情報にデバイスが存在していても、デバイスプロファイルに同じタイプのデバイスが存在しない場合には、デバイスモデル構成リストには追加しない。また、デバイスプロファイルにあって、ＡＣＰＩ情報にない場合も同様である。すべてのデバイスについて確認が終了すると図１０に示すような仮想デバイスモデルが構成される。図１０に示すように、ホストブリッジ２７０にバス０を介してグラフィクス・プロセッシング・ユニット１０５Ｖ、ＵＳＢコントローラ１１３Ｖ、およびＰＣＩ−ＰＣＩブリッジ２８０が接続されている。ＰＣＩ-ＰＣＩブリッジ２８０にバス１を介してＩＥＥＥ１３９４コントローラ１１６Ｖが接続されている。バス１にＰＣＩ−ＰＣＩブリッジ２９０を介してＩＳＡバスが接続されている。ＩＳＡバスにキーボード／マウスコントローラ１１７Ｖが接続されている。
【００３１】
デバイスマネージャ２２０は、図９に示すデバイスモデル構成リストに従って、仮想マシンモニタ２３０に対しデバイスの登録を行う（ステップＳ３３）。登録の際、デバイスマネージャ２２０は、ＰＣＩデバイスＢＵＳ番号、ＰＣＩデバイスＤｅｖｉｃｅ番号、ＰＣＩデバイスＦｕｎｃｔｉｏｎ番号、使用するＩ／Ｏポートアドレス（ＰＩＯおよびＭＭＩＯ）、仮想Ｉ／Ｏポートアドレス（ＰＩＯおよびＭＭＩＯ）のＩＯＭＡＰ情報、また、割込み番号（ＩＲＱ）、仮想割込み番号（ＶＩＲＱ）を仮想マシンモニタ２３０に通知する。
【００３２】
登録が終了すると、デバイスマネージャ２２０は、仮想マシンマネージャ２１０に仮想マシン２００の起動を指示する(ステップＳ３４)。仮想マシンマネージャ２１０は、指示に応じてサーバ２４０からダウンロードした仮想マシンを起動する(ステップＳ２２)。起動した仮想マシン２００は、オペレーティングシステム（ＯＳ）起動時の初期化の課程で、デバイスドライバのロード（ステップＳ２３）、デバイスドライバの初期化を実行する(ステップＳ２４)。そして、オペレーティングシステムの起動後、仮想マシン内でアプリケーションが起動する(ステップＳ２５)。デバイスドライバの初期化時やアプリケーションからＰＩＯアクセスがあった場合、仮想マシンモニタは、アクセスをトラップする（ステップＳ２７）。
【００３３】
仮想マシンモニタ２３０は、このＩＯＭＡＰの登録により、仮想マシン２００からＰＣＩデバイスへのＰＣＩコンフィグレーション空間へのアクセスやポートＩ／Ｏへのアクセスまたは割込みが発生した場合、アクセスをトラップし（ステップＳ２７）、登録のアドレスへ変換してアクセスする。
【００３４】
Ｉ／Ｏポートへのアクセスのうち、ＰＣＩコンフィグレーション空間へのアクセスの場合、仮想マシンモニタ２３０は、デバイスマネージャ２２０をコールし、デバイスマネージャ２２０がＰＣＩコンフィグレーション空間へのアクセスを代行する。このアクセスの代行の場合、二つのアクセス方法が有る。そのため、デバイスマネージャは、ＰＣＩコンフィグレーションにアクセスするデバイスを特定する(ステップＳ３５)。そして、特定したデバイスがパススルーデバイスへのアクセスであるか否かを判別する(ステップＳ３６)。パススルーデバイスへのアクセスであると判断した場合（ステップＳ３６のＹＥＳ）、、実際のＰＣＩデバイスのコンフィグレーション空間にアクセスする（ステップＳ３７）。また、パススルーデバイスへのアクセスでは無いと判断した場合（ステップＳ３６のＮＯ）、そのコンフィグレーション空間をコピーしたダミーのエリアがデバイスマネージャ２２０内にあり、直接アクセスする必要がないデバイス、他の仮想マシンと共有しているデバイスは、ダミーのエリアに対してＲＥＡＤ／ＷＲＩＴＥを行う。
【００３５】
また、ＭＭＩＯおよびＤＭＡ転送については、仮想マシンからの要求に対して、アドレス変換ユニット２６０がアドレス変換情報に従って、仮想物理アドレスからマシンアドレスへ変換しアクセスする。このアドレス変換ユニット２６０は、メモリコントローラが設けられているデバイスに設けられる。アドレス変換ユニット２６０は、Ｉ／Ｏメモリ管理ユニット（ＩＯＭＭＵ）２６１とＤＭＡＲＵ（DMA Remapping Unit）２６２とを有する。Ｉ／Ｏメモリ管理ユニット（ＩＯＭＭＵ）２６１は、仮想マシン２００が主メモリ上のＭＭＩＯエリアにアクセスする場合に用いられる。この場合、仮想マシン側からは通常のデバイスを使用しているのと何ら変わらないので、仮想マシンのデバイスドライバを直接利用して仮想マシンから利用できるようになる。
【００３６】
また、ＤＭＡＲＵ２６２は、仮想マシン２００に割り当てられているメモリ空間とＤＭＡ転送する場合に用いられる。図１１はアドレス変換の様子を示す。図１１に示すように、仮想マシン物理アドレス空間上のページメモリ、並びにＰＣＩデバイス１、ＰＣＩデバイス２、およびＰＣＩデバイス３のＭＭＩＯエリアと、実マシンアドレス空間上のページメモリ、並びにＰＣＩデバイス１、ＰＣＩデバイス２、およびＰＣＩデバイス３のＭＭＩＯエリアとの変換が、仮想マシンモニタ、Ｉ／Ｏメモリ管理ユニット（ＩＯＭＭＵ）２６１、ＤＭＡＲＵ（DMA Remapping Unit）２６２とよって行われる。
【００３７】
これにより、仮想マシンは、起動時にＰＣＩやレガシーデバイスのプローブ（検索）を行う時に、デバイスへアクセスすると、実マシンのデバイスではなく、図１０の仮想デバイスモデルのデバイスへアクセスし、そのモデルのデバイス構成で仮想マシンは起動する。
【００３８】
クライアントコンピュータ側に仮想マシンモニタ、デバイスマネージャによって仮想マシンに直接マッピング可能なデバイスを割り当て、実メモリ空間と仮想マシン内でのメモリ空間とのアドレス変換をハードウエアで行うことによって、仮想マシンのＩ／Ｏ性能、操作性が飛躍的に向上する。その結果、マルチメディアを扱うアプリケーションやＣＡＤなどの高速描画行うの動作が可能となる。
【００３９】
また、仮想マシンのＩ／Ｏエミュレーションが不要になり、エミュレーションが対応していないなどの理由で使用できなかったデバイスが、仮想マシンのデバイスドライバを直接利用して仮想マシンから利用できるようになる。
【００４０】
ユーザ毎にデバイスプロファイルを用意することによって、使用できるＩ／Ｏデバイスが指定でき、ＯＳ（仮想マシン）からは認識できるI/Oが限られ、ユーザがデバイスドライバをインストールなどして故意にデバイスを有効しようとしても不可能ため、情報漏洩等の防止に役立つセキュリティ対策ができる。
【００４１】
また、サーバに仮想マシンのイメージがあり、クライアントコンピュータは統一したイメージから起動するため、ユーザ毎にＯＳ、アプリの設定、ＨｏｔＦｉｘなどの修正作業が個別に行う必要がなくなり、クライアントコンピュータを管理するコストが削減することが」できる。
【００４２】
仮想マシンのイメージを別のサーバでロード・起動することにより、ユーザ毎の環境設定がコンピュータのＨ／Ｗを変えてもインストール、再設定の作業をせずに利用できる。
【００４３】
なお、上記実施形態では、サーバとクライアントコンピュータとがネットワークで接続されている例を説明した。しかし、図１２に示すように、クライアントコンピュータに仮想マシンのイメージを管理するサーバを仮想マシンとして同時に動作させても良い。
【００４４】
仮想マシンのイメージをサーバから、クライアントコンピュータ上で動作する仮想マシンとして動作させることにより、１台のコンピュータで上記の効果が得られ、通常のコンピュータを扱うように利用することができる。
【００４５】
なお、本発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に亘る構成要素を適宜組み合せてもよい。
【図面の簡単な説明】
【００４６】
【図１】本発明の一実施形態に係わる情報処理装置としてのクライアントコンピュータおよびサーバの構成を示すブロック図。
【図２】図１に示すクライアントコンピュータのシステム構成を示すブロック図。
【図３】デバイスを管理するデバイスマネージャの構成および仮想マシン、仮想マシンモニタとの関連を示すブロック図。
【図４】クライアントコンピュータの起動から仮想マシン実行までの動作フローを示すフローチャートを示す図。
【図５】クライアントコンピュータの起動から仮想マシン実行までの動作フローを示すフローチャートを示す図。
【図６】クライアントコンピュータの起動から仮想マシン実行までの動作フローを示す図。
【図７】クライアントコンピュータの起動から仮想マシン実行までの動作フローを示す図。
【図８】デバイスプロファイルの例を示す図。
【図９】デバイスモデル構成リストの例を示す図。
【図１０】仮想デバイスモデルの構成例を示す図。
【図１１】アドレス空間の変換例を示す図。
【図１２】サーバが仮想マシンモニタ上の仮想マシンとして動作する例を示す図。
【符号の説明】
【００４７】
２００…仮想マシン，２１０…仮想マシンマネージャ，２２１…デバイスモデル生成部，２２０…デバイスマネージャ，２３０…仮想マシンモニタ，２４０…サーバ，２４１…ＨＤＤ，２４２…ソフトウェアイメージ，２６０…アドレス変換ユニット，２６１…ＩＯメモリ管理ユニット，２６２…ＤＭＡＲＵ，２７０…ホストブリッジ，２８０…ＰＣＩブリッジ。
【図１】
2009259108.tif 000003
【図２】
2009259108.tif 000004
【図３】
2009259108.tif 000005
【図４】
2009259108.tif 000006
【図５】
2009259108.tif 000007
【図６】
2009259108.tif 000008
【図７】
2009259108.tif 000009
【図８】
2009259108.tif 000010
【図９】
2009259108.tif 000011
【図１０】
2009259108.tif 000012
【図１１】
2009259108.tif 000013
【図１２】
2009259108.tif 000014
【手続補正書】
【提出日】平成21年6月8日(2009.6.8)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ハイパーバイザ上でクライアント用仮想マシンを含む仮想マシンが動作する情報処理装置であって、
デバイスプロファイルと前記情報処理装置に設けられたＩ／Ｏデバイス構成とに応じて、Ｉ／Ｏデバイスが割り当てられている実メモリ空間上のアドレスを示す情報、および前記クライアント用仮想マシン内の仮想メモリ空間に対してＩ／Ｏデバイスが割り当てられているアドレスを示す情報を含むデバイスモデルを作成するデバイスマネージャを実行するプロセッサと、
前記デバイスモデルに従って前記実メモリ空間上でのアドレスと前記仮想メモリ空間上のアドレスとのアドレス変換を行うためのアドレス変換回路とを具備し、
前記ハイパーバイザは、前記デバイスモデルに基づいて前記クライアント用仮想マシン内の前記仮想メモリ空間に前記Ｉ／Ｏデバイスを割り当て、
前記クライアント用仮想マシンは、前記割り当てられたＩ／Ｏデバイスに対してＭＭＩＯアクセスを行う、または前記割り当てられたＩ／Ｏデバイスとの間でＤＭＡ転送を行う場合、前記Ｉ／Ｏデバイスが割り当てられている前記仮想メモリ空間のアドレスにアクセスし、
前記アドレス変換回路は、前記クライアント用仮想マシンがアクセスした仮想メモリ空間上のアドレスを前記実メモリ空間上のアドレスに変換して、前記実メモリ空間上のアドレスにアクセスすることを特徴とする情報処理装置。
【請求項２】
前記デバイスプロファイルは前記情報処理装置の使用者毎に用意され、
前記デバイスマネージャは、前記使用者に応じたデバイスプロファイルからデバイスモデルを作成することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記デバイスマネージャは、前記デバイスプロファイルに応じて前記仮想マシンから前記情報処理装置に設けられたＩ／Ｏデバイスへのアクセスを制限することを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記クライアント用仮想マシンは、サーバから前記仮想マシンのイメージをロードすることによって前記ハイパーバイザ上で動作することを特徴とする請求項１に記載の情報処理装置。
【請求項５】
前記サーバは、前記ハイパーバイザ上で動作する仮想マシンであることを特徴とする請求項４に記載の情報処理装置。
【請求項６】
ハイパーバイザ上でクライアント用仮想マシンを含む仮想マシンが動作する情報処理装置の制御方法であって、
デバイスプロファイルと前記情報処理装置に設けられたＩ／Ｏデバイス構成とに応じて、Ｉ／Ｏデバイスが割り当てられている前記実メモリ空間上のアドレスを示す情報、および前記クライアント用仮想マシン内の仮想メモリ空間に対してＩ／Ｏデバイスが割り当てられているアドレスを示す情報を含むデバイスモデルを作成し、
前記ハイパーバイザが、前記デバイスモデルに基づいて前記クライアント用仮想マシンの前記仮想メモリ空間に前記Ｉ／Ｏデバイスを割り当て、
前記クライアント用仮想マシンは、前記割り当てられたＩ／Ｏデバイスに対してＭＭＩＯアクセスを行う、または前記割り当てられたＩ／Ｏデバイスとの間でＤＭＡ転送を行う場合、前記Ｉ／Ｏデバイスが割り当てられている前記仮想メモリ空間上のアドレスにアクセスし、
前記アドレス変換回路は、前記デバイスモデルに従って前記クライアント用仮想マシンがアクセスした仮想メモリ空間上のアドレスを前記実メモリ空間上のアドレスに変換して、前記実メモリ空間上のアドレスにアクセスすることを特徴とする情報処理装置の制御方法。
【請求項７】
前記デバイスプロファイルは前記情報処理装置の使用者毎に用意され、
前記デバイスマネージャは、前記使用者に応じたデバイスプロファイルからデバイスモデルを作成することを特徴とする請求項６に記載の情報処理装置の制御方法。
【請求項８】
前記デバイスマネージャは、前記デバイスプロファイルに応じて前記仮想マシンからＩ／Ｏデバイスへのアクセスを制限することを特徴とする請求項７に記載の情報処理装置の制御方法。
【請求項９】
前記クライアント用仮想マシンは、サーバから前記仮想マシンのイメージをロードすることによって前記ハイパーバイザ上で動作することを特徴とする請求項６に記載の情報処理装置の制御方法。
【請求項１０】
前記サーバは、前記ハイパーバイザ上で動作する仮想マシンであることを特徴とする請求項９に記載の情報処理装置の制御方法。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００７
【補正方法】変更
【補正の内容】
【０００７】
本発明の一例に係わる、ハイパーバイザ上でクライアント用仮想マシンを含む仮想マシンが動作する情報処理装置は、デバイスプロファイルと前記情報処理装置に設けられたＩ／Ｏデバイス構成とに応じて、Ｉ／Ｏデバイスが割り当てられている実メモリ空間上のアドレスを示す情報、および前記クライアント用仮想マシン内の仮想メモリ空間に対してＩ／Ｏデバイスが割り当てられているアドレスを示す情報を含むデバイスモデルを作成するデバイスマネージャを実行するプロセッサと、前記デバイスモデルに従って前記実メモリ空間上でのアドレスと前記仮想メモリ空間上のアドレスとのアドレス変換を行うためのアドレス変換回路とを具備し、前記ハイパーバイザは、前記デバイスモデルに基づいて前記クライアント用仮想マシン内の前記仮想メモリ空間に前記Ｉ／Ｏデバイスを割り当て、前記クライアント用仮想マシンは、前記割り当てられたＩ／Ｏデバイスに対してＭＭＩＯアクセスを行う、または前記割り当てられたＩ／Ｏデバイスとの間でＤＭＡ転送を行う場合、前記Ｉ／Ｏデバイスが割り当てられている前記仮想メモリ空間のアドレスにアクセスし、前記アドレス変換回路は、前記クライアント用仮想マシンがアクセスした仮想メモリ空間上のアドレスを前記実メモリ空間上のアドレスに変換して、前記実メモリ空間上のアドレスにアクセスすることを特徴とする。