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