(57)【特許請求の範囲】
【請求項１】
プロセッサパッケージを持つコンピュータシステムであって、
オペレーティングシステムと、
物理Ｉ／Ｏ装置と、
前記物理Ｉ／Ｏ装置に対応する仮想Ｉ／Ｏ装置をインスタンス化する部分仮想マシンと、
前記オペレーティングシステムが利用する第１の部分と、前記オペレーティングシステムおよび前記部分仮想マシンがデータを共有するための第２の部分と、前記部分仮想マシンが利用する第３の部分とにパーティション化されているメモリと、
を備え、
前記仮想Ｉ／Ｏ装置は、仮想Ｉ／Ｏコントローラを含み、
前記部分仮想マシンは、
前記オペレーティングシステムから前記仮想Ｉ／Ｏ装置に対するＩ／Ｏ要求を捕捉するＩ／Ｏポートトラップ部と、
前記Ｉ／Ｏポートトラップ部に結合されており、前記Ｉ／Ｏ要求がＩ／Ｏ制御要求を含む場合に前記仮想Ｉ／Ｏコントローラに対するＩ／Ｏ制御要求を処理するＩ／Ｏコントローラエミュレータ部と、
前記Ｉ／Ｏポートトラップ部に結合されており、前記Ｉ／Ｏ要求がＩ／Ｏアクセス要求を含む場合に前記仮想Ｉ／Ｏ装置と通信するためのＩ／Ｏアクセス要求を処理するＩ／Ｏ装置エミュレータ部と、
前記Ｉ／Ｏコントローラエミュレータ部および前記Ｉ／Ｏ装置エミュレータ部に結合されており、前記Ｉ／Ｏ制御要求および前記Ｉ／Ｏアクセス要求に少なくとも部分的に基づき前記物理Ｉ／Ｏ装置と通信する装置ドライバ部と
を有し、
前記メモリの前記第３の部分は、前記オペレーティングシステムから隠されており、
前記部分仮想マシンは、前記プロセッサパッケージにおいてセキュアエンクレーブセッションにおいて実行され、前記オペレーティングシステムによる前記部分仮想マシンへのアクセスを抑制するコンピュータシステム。
【請求項２】
前記仮想Ｉ／Ｏ装置は仮想ＡＴＡ装置を含み、前記仮想Ｉ／Ｏコントローラは仮想ＡＴＡコントローラを含み、前記物理Ｉ／Ｏ装置はＡＴＡ装置を含む請求項１に記載のコンピュータシステム。
【請求項３】
前記仮想Ｉ／Ｏ装置は仮想ＳＣＳＩ装置を含み、前記仮想Ｉ／Ｏコントローラは仮想ＳＣＳＩコントローラを含み、前記物理Ｉ／Ｏ装置はＳＣＳＩ装置を含む請求項１または２に記載のコンピュータシステム。
【請求項４】
前記仮想Ｉ／Ｏ装置は仮想ＵＳＢ装置を含み、前記仮想Ｉ／Ｏコントローラは仮想ＵＳＢコントローラを含み、前記物理Ｉ／Ｏ装置はＵＳＢ装置を含む請求項１から３のいずれか一項に記載のコンピュータシステム。
【請求項５】
前記物理Ｉ／Ｏ装置は、前記オペレーティングシステムから隠されている請求項１から４のいずれか一項に記載のコンピュータシステム。
【請求項６】
前記部分仮想マシンは、ＯＳに依存しない請求項１から５のいずれか一項に記載のコンピュータシステム。
【請求項７】
前記部分仮想マシンは、周期的タイマによって前記部分仮想マシンを再度訪問するようにスケジューリングして、前記Ｉ／Ｏ要求を処理することができるようにする部分仮想マシンスケジューラを更に有する請求項１から６のいずれか一項に記載のコンピュータシステム。
【請求項８】
オペレーティングシステムおよびプロセッサパッケージを備えるコンピュータシステムにおいて、物理Ｉ／Ｏ装置に対応する仮想Ｉ／Ｏ装置を提供する方法であって、
仮想Ｉ／Ｏコントローラを含む前記仮想Ｉ／Ｏ装置を部分仮想マシンによってインスタンス化する段階と、
前記部分仮想マシンのＩ／Ｏポートトラップ部によって、前記オペレーティングシステムから前記仮想Ｉ／Ｏ装置に対するＩ／Ｏ要求を捕捉する段階と、
前記Ｉ／Ｏ要求が前記仮想Ｉ／ＯコントローラへのＩ／Ｏ制御要求を含む場合に、前記部分仮想マシンのＩ／Ｏコントローラエミュレータ部によって前記Ｉ／Ｏ制御要求を処理する段階と、
前記Ｉ／Ｏ要求がＩ／Ｏアクセス要求を含む場合に、前記部分仮想マシンのＩ／Ｏ装置エミュレータ部によって前記Ｉ／Ｏアクセス要求を処理する段階と
を備え、
前記コンピュータシステムは、前記オペレーティングシステムが利用する第１の部分と、前記オペレーティングシステムおよび前記部分仮想マシンがデータを共有するための第２の部分と、前記部分仮想マシンが利用する第３の部分とにパーティション化されているメモリを備え、
前記第３の部分は、前記オペレーティングシステムから隠されており、
前記部分仮想マシンは、前記プロセッサパッケージにおいてセキュアエンクレーブセッションにおいて実行されているので、前記オペレーティングシステムによる前記部分仮想マシンへのアクセスが抑制され、
前記Ｉ／Ｏ装置エミュレータ部は前記物理Ｉ／Ｏ装置に対応付けられている前記部分仮想マシンの装置ドライバと通信して、前記Ｉ／Ｏアクセス要求を実行する
方法。
【請求項９】
前記仮想Ｉ／Ｏ装置は仮想ＡＴＡ装置を含み、前記仮想Ｉ／Ｏコントローラは仮想ＡＴＡコントローラを含み、前記物理Ｉ／Ｏ装置はＡＴＡ装置を含む請求項８に記載の方法。
【請求項１０】
前記仮想Ｉ／Ｏ装置は仮想ＳＣＳＩ装置を含み、前記仮想Ｉ／Ｏコントローラは仮想ＳＣＳＩコントローラを含み、前記物理Ｉ／Ｏ装置はＳＣＳＩ装置を含む請求項８または９に記載の方法。
【請求項１１】
前記仮想Ｉ／Ｏ装置は仮想ＵＳＢ装置を含み、前記仮想Ｉ／Ｏコントローラは仮想ＵＳＢコントローラを含み、前記物理Ｉ／Ｏ装置はＵＳＢ装置を含む請求項８から１０のいずれか一項に記載の方法。
【請求項１２】
前記部分仮想マシンによって前記オペレーティングシステムから前記物理Ｉ／Ｏ装置を隠す段階をさらに備える請求項８から１１のいずれか一項に記載の方法。
【請求項１３】
前記部分仮想マシンは、ＯＳに依存しない請求項８から１２のいずれか一項に記載の方法。
【請求項１４】
前記Ｉ／Ｏ要求を捕捉した後で前記部分仮想マシンによってセキュアエンクレーブセッションを開始して、前記Ｉ／Ｏ要求を処理した後で前記オペレーティングシステムに制御を戻す前に前記部分仮想マシンによって前記セキュアエンクレーブセッションを終了する段階をさらに備える請求項８から１３のいずれか一項に記載の方法。
【請求項１５】
前記部分仮想マシンの部分仮想マシンスケジューラが、周期的タイマによって前記部分仮想マシンを再度訪問するようにスケジューリングして、前記Ｉ／Ｏ要求を処理することができるようにする段階を更に備える請求項８から１４のいずれか一項に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、概してコンピュータシステムに関し、具体的にはシステムのファームウェアおよび仮想化に関する。
【背景技術】
【０００２】
歴史的に見て、パーソナルコンピュータ（ＰＣ）等のコンピュータシステムは、多くのさまざまな装置を用いてデータを格納している。格納装置はそれぞれ、特定の機能を果たし、接続インターフェース、アクセス速度、容量等の点で特徴を持つ。例えば、格納装置として、フロッピー（登録商標）ディスクドライブ、ハードディスクドライブ、ソリッドステートディスクドライブ、ＣＤＲＯＭドライブ、ユニバーサルシリアルバス（ＵＳＢ）サムドライブ等が挙げられる。新たな格納装置の開発が続けられている。新しい格納装置が開発される度に、当該格納装置に対するアクセスを実現するためには、オペレーティングシステム（ＯＳ）も同様に発達していく必要がある。これは通常、装置ドライバソフトウェアを供給することによって行われる。装置ドライバソフトウェアによって、アプリケーションプログラムは、ＯＳを介して通信して、格納装置との間でデータの読み書きを行なうことができるようになる。格納装置の数および種類が増加するにつれて、ＯＳ開発の負荷が非常に大きくなってしまう。また、装置ドライバを介して格納装置にアクセスするのはセキュアでない場合があるので、悪意あるユーザによる入出力（Ｉ／Ｏ）トラフィックの読み取りおよび／または修正が可能となってしまう。
【図面の簡単な説明】
【０００３】
本発明の特徴および利点は、以下に記載する本発明の詳細な説明を参照することによって明らかとなる。
【図１】本発明の実施形態に係るコンピュータシステムにおけるセキュアエンクレーブ（ｓｅｃｕｒｅ  ｅｎｃｌａｖｅ）セッションを示す図である。
【図２】本発明の実施形態に係るコンピュータシステムを示す図である。
【図３】本発明の実施形態に係るメモリマップを示す図である。
【図４】本発明の実施形態に係る部分仮想化マシンを示す図である。
【図５】本発明の実施形態に係るシステム処理を示すフローチャートである。
【発明を実施するための形態】
【０００４】
本発明の実施形態は、部分仮想化マシン（ＰＶＭ）を実現することによって統一格納装置を提供するシステムおよび方法を含む。ＰＶＭは、コンピュータシステムに結合されているさまざまな物理格納装置より高位に少なくとも１つの仮想格納装置を生成するために利用され得る。サポートされている格納装置のそれぞれについて特定の装置ドライバを提供する代わりに、ＯＳは、統一格納装置に対するインターフェースにアクセスするとしてよい。ＰＶＭは、セキュアエンクレーブセッションにおいて実行されるので、従来の格納装置インターフェースに比べてセキュリティが改善され得る。本発明の実施形態によると、統一格納装置は、ブート時間およびランタイムにおいて利用可能であるとしてよく、ＯＳに依存しないとしてよい。
【０００５】
本明細書において本発明の「一実施形態」または「ある実施形態」と記載する場合、当該実施形態に関連付けて説明されている特定の特徴、構造、または、特性が本発明の少なくとも１つの実施形態に含まれていることを意味するものである。このように、「一実施形態において」という表現は本明細書において繰り返し見られるが、必ずしも全てが同じ実施形態を意味するものではない。
【０００６】
ＯＳと特定の格納装置とを整合させるべく、当該格納装置のメーカによって当該格納装置について標準的なＩ／Ｏインターフェースが定義されているのが普通である。過去数年間にわたって利用されているＩ／Ｏインターフェースには幾つか種類がある。例えば、パラレルＰＣ／ＡＴアタッチメント／ＡＴアタッチメント・パケット・インターフェース（ＡＴＡＰＩ）（ＡＴＡと呼ばれるのが一般的）（ＡＴＡＰＩは、ＩＮＣＩＴＳ３１７−１９９８、「ＡＴアタッチメントおよびパケット・インターフェース・エクステンション（ＡＴＡ／ＡＴＡＰＩ−４）」、ｗｗｗ．ｔ１３．ｏｒｇ／で入手可能）においてＡＴＡの一環として採用された。）、スモール・コンピュータ・システム・インターフェース（ＳＣＳＩ）（ａｎｓｉ．ｏｒｇで入手可能）、ユニバーサルシリアルバス（ＵＳＢ）、シリアルＡＴＡ（ＳＡＴＡ）等がある。本発明の一実施形態によると、ＡＴＡインターフェースを利用するとしてよい。一実施形態によると、ＰＶＭは、コンピュータシステムに結合されている物理格納装置毎に、ＯＳによるアクセスのために仮想ＡＴＡ装置をエニュメレーションする。このような格納装置は、ブート時間またはその後の任意の時間においてコンピュータシステムに結合されるか、または、コンピュータシステムから取外されるとしてもよい。例えば、ＵＳＢサムドライブは、ブート時間またはランタイムにおいて、ＰＶＭによってＩＤＥ（インテグレーテッド・ドライブ・エレクトロニクス）ハードディスクとしてエニュメレーションされるとしてよい。このため、例えば、ＵＳＢサムドライブをコンピュータシステムにホットプラグすると、ＵＳＢサムドライブは、ＯＳに対してハードディスクとして可視化されるように見えるとしてよい。
【０００７】
Ｉ／Ｏに対する悪意あるアクセスから統一格納装置を保護するべく、本発明の実施形態では、ＰＶＭは、コンピュータシステムのプロセッサパッケージ内でセキュアエンクレーブ（ＳＥ）セッションにおいて実行されるとしてよい。図１は、本発明の実施形態に係るコンピュータシステムにおけるセキュアエンクレーブセッションを示す図である。説明の便宜上、コンピュータシステム１００の一部は図１において簡略化して図示している。プロセッサパッケージ１０２は、セキュリティぺリメータ（境界線）内に１以上の処理コアを有する。一実施形態によると、セキュリティぺリメータは、プロセッサパッケージの境界（図１では太線で示す）であるとしてよい。プロセッサパッケージは、メモリ１０４およびプラットフォームコントロールハブ（ＰＣＨ）１０６と連動している。ＰＣＨは、１以上のＩ／Ｏ装置１０８と連動している。セキュアエンクレーブ機能を実現するためには、セキュアエンクレーブを作成して、分離させて、命令実行およびデータアクセスを保護するプロセッサ命令を複数提供する。プロセッサパッケージの外側のデータおよびコードは、暗号化されてインテグリティが確認されるとしてよい。プロセッサパッケージの内側のデータおよびコードは、暗号化されず、モードおよびキャッシュ保護メカニズムによって保護されるとしてよい。ある実施形態によると、セキュアエンクレーブからデータが「漏れる」ことはない。プロセッサパッケージ内のマイクロコードは、割り込み、例外、トラップ、および、仮想マシンマネージャ（ＶＭＭ）イグジット（ＥＸＩＴ）のために、エンクレーブ内にエンクレーブ状態情報を保存する。セキュアエンクレーブ機能については、ＰＣＴ特許出願（発明の名称：「セキュアにアプリケーションを実行するための方法および装置」、発明者：フランシス・Ｘ．，マキン他、出願日：米国特許庁の受理局にて２００９年１２月２２日に出願、出願番号：ＰＣＴ／ＵＳ２００９／０６９２１２号）で説明している。当該特許文献は、参照により本願に組み込まれる。
【０００８】
図２は、本発明の実施形態に係るコンピュータシステムを示す図である。コンピュータシステム２００では、１以上のアプリケーションプログラム２０２が当該コンピュータシステムで実行中である。コンピュータシステムは、オペレーティングシステム（ＯＳ）２０４およびコンピュータプラットフォーム２０６等、従来の構成要素を備える。コンピュータプラットフォームは、プロセッサパッケージ２０８、メモリ２１０、および、ファームウェア２１２を有し、図示されてはいないが、さらに従来の構成要素を有する。コンピュータシステム２００はさらに、１以上のＩ／Ｏ装置２１４（例えば、ハードディスクドライブ、ＣＤ−ＲＯＭドライブ、ＤＶＤドライブ、ＵＳＢサムドライブ、ブルーレイプレーヤ、ソリッドステートドライブ、ネットワーク・インターフェース・コントローラ（ＮＩＣ）等）を備える。本発明の実施形態によると、アプリケーションプログラムがＩ／Ｏ装置のうち１つとの間でデータの読み書きを行なう必要がある場合、アプリケーションプログラム２０２はＯＳ２０４と連動する。ＯＳはその後、Ｉ／Ｏ要求の処理のために、Ｉ／Ｏドライバコンポーネント２１６を呼び出す。Ｉ／Ｏドライバ２１６は、ＯＳ要求を変換して、当該要求を部分仮想マシン（ＰＶＭ）２１８に転送する。
【０００９】
本発明の実施形態によると、Ｉ／Ｏドライバは、Ｉ／Ｏ要求のさらなる処理のためにＰＶＭ２１８を呼び出して、選択されたＩ／Ｏ装置２１４と通信する。本発明で利用する部分仮想化は、ハイエンドなサーバコンピュータシステムで利用されている準仮想化および完全仮想化の概念とは異なり、コンピュータシステムのハードウェアコンポーネントのうち一部のみを仮想化して、残りは仮想化しない技術を意味する。仮想化されたコンポーネントは、ＰＶＭを介してＯＳから（そのＩ／Ｏドライバコンポーネントを介して）直接アクセスされ得る。このため、一実施形態によると、ＰＶＭは、軽量仮想マシン（ＬＶＭＭ）を含み、コードコンポーネントとしてシステムファームウェア２１２に含められるとしてよい。通常のＬＶＭＭよりも簡単なバージョンでは、本発明の実施形態に係るＰＶＭは、サービスＯＳを含まない。ＰＶＭは、部分仮想化のみを実現することにより、従前の仮想化方式に比べて性能が改善され、低性能のコンピュータシステムでも利用可能となる。仮想マシンマネージャ（ＶＭＭ）は通常はシステム全体をトラップして表現するが、ＰＶＭは非常に軽量な解決策となることを意図している（マイクロハイパーバイザと呼ぶことも容易に可能である）。この場合、プラットフォームのうち非常に限られた部分が、Ｉ／Ｏサイクルのトラップが所定の範囲（例えば、所与のコントローラに対するアクセスと対応付けられるＩ／Ｏサイクル）に制限されるように実際に仮想化されるが、無効なメモリアクセス、または、より侵害性の高く、より多くのシステムリソースを必要とし、または、プラットフォームの処理を遅らせるその他の試みに対するその他の「保護」は提供されない場合がある。
【００１０】
ある実施形態によると、ＰＶＭは、ＯＳのために、コンピュータシステムが備えるほかの装置と同様の仮想Ｉ／Ｏ装置２１７と呼ばれる統一格納装置のインスタンスを生成するとしてよく、ＯＳが制限を受けることなく当該インスタンスを検出および利用する。一実施形態によると、インスタンスが作成された仮想Ｉ／Ｏ装置２１７は、仮想ＡＴＡ装置である。このように、物理Ｉ／Ｏ装置（例えば、ＳＡＴＡコントローラ）と仮想Ｉ／Ｏ装置とは１対１でマッピングされるとしてよい。インスタンスが作成され得る仮想Ｉ／Ｏ装置の数は、実施例毎に決まるとしてよい。
【００１１】
このような部分仮想化によって、同時に複数のオペレーティング・システム・インスタンスを実行する通常の完全仮想化モードとは違って、一度に実行されるＯＳインスタンスは１つのみとなる。これは、部分仮想化の場合にはシステムのうち非常に限られた部分のみがＰＶＭで実施されるためである。コンピュータプラットフォームが完全に仮想化される場合、コンピュータプラットフォーム全体がソフトウェアモデルでラッピングされて繰り返し複製され得るので、システムはｎ個に分割され、ターゲットＯＳのインスタンスがｎ個実行される。ＰＶＭではリソースが限られている場合がある。
【００１２】
本発明の実施形態によると、ＰＶＭはＯＳとその下位にあるハードウェアとの間の翻訳者として動作し、通信「言語」はＡＴＡインターフェース仕様であるとしてよい（仮想Ｉ／Ｏ装置が仮想ＡＴＡ装置である場合）。他の実施形態では、仮想Ｉ／Ｏ装置は、他のインターフェース仕様についてインスタンス化されるとしてよい。ＯＳが統一格納装置（本例では仮想ＡＴＡ装置）との間でデータの読み書きを行なう必要がある場合、ＡＴＡインターフェース仕様に従って、ＯＳ２０４のＩ／Ｏドライバ２１６が特定のＩ／Ｏポート（例えば、０ｘ１Ｆ７または０ｘ３Ｆ７）を読み書きすることによって統一格納装置にＡＴＡコマンドを送る。ＰＶＭ２１８は、読み書き動作を求めるこれらの要求を下位の物理Ｉ／Ｏ装置（例えば、ＵＳＢサムドライブ、ＣＤ−ＲＯＭドライブ等）が理解するコマンドに変換する。
【００１３】
プロセッサパッケージがサポートする仮想技術（ＶＴ）に基づきＰＶＭを実現するとしてよい。ＶＴは、関連技術分野で公知であり、本明細書では説明は省略する。（関連技術分野で公知であるが）プロセッサに仮想マシン制御構造（ＶＭＣＳ）をプログラミングすることによって、ＰＶＭは上記のような関連するＩ／Ｏポートアクセスを捕捉可能となるので、本発明の実施形態を利用する際にＯＳカーネルを変更する必要はない。ＰＶＭは、ＶＴのおかげで、ＯＳに依存することがない。つまり、コンピュータシステムに準拠していれば全てのＯＳがＰＶＭがイネーブルされているコンピュータシステムで実行され得る。
【００１４】
統一格納装置をインスタンス化するべく、ＰＶＭは、コンピュータシステムの初期化処理中（つまり、ブート時間中）に、ＯＳのロードが実行される前に、システムファームウェアによって開始されるとしてよい。ある実施形態によると、ＰＶＭは少なくとも数個の初期化ステップを実行する。
【００１５】
ＯＳがロードされる前に、システムファームウェア２１２はＰＶＭが利用するメモリの領域を確保する。図３は、本発明の実施形態に係るメモリマップを示す図である。ある実施形態によると、コンピュータシステムの物理メモリ空間は、図示されているように、パーティション化されているとしてよい。ＯＳは、ＯＳ領域３０２に対するアクセスを持つとしてよい。一実施形態によると、この領域はメモリの先頭位置から始まっているとしてよい。共有メモリ空間３０４は、ＯＳとＰＶＭとの間のデータのやり取りのために確保されているとしてよい。一実施形態によると、共有メモリ空間は、メモリ内において、ＯＳ領域に隣接して設けられ、ＯＳ領域よりも高位に構成されているとしてよい。ＰＶＭメモリ空間３０６は、一実施形態によると、メモリの最上位に確保されているとしてよい。他の実施形態では、メモリの割り当ておよび配置を変更するとしてもよい。ＰＶＭメモリは、ＯＳから隠されている。ＯＳは、ＰＶＭ３０６にはアクセスできない。
【００１６】
ＰＶＭは、ＯＳが起動時に仮想Ｉ／Ｏコントローラに関する情報についてスキャンすると、少なくとも１つの仮想Ｉ／Ｏコントローラをエニュメレーションして、Ｉ／Ｏ装置を報告する。一実施形態によると、仮想Ｉ／Ｏコントローラは仮想ＡＴＡコントローラで、Ｉ／Ｏ装置はＡＴＡ装置である。ＰＶＭによってＩ／Ｏ要求が捕捉されると、Ｉ／Ｏ要求を処理するタスクは、インスタンス化された仮想Ｉ／Ｏ装置に対応するＩ／Ｏ装置エミュレータおよびＩ／Ｏコントローラエミュレータと呼ばれる（後述）ＰＶＭの構成要素によって実行されるとしてよい。下位の物理Ｉ／Ｏ装置は、その存在およびそれへのアクセスをＰＶＭによって隠されるとしてよい。物理Ｉ／Ｏ装置は、ＰＶＭおよびＯＳによるアクセスが競合しないように、ＯＳによって検出されないようにしなければならない。ＯＳの起動に先立って、装置の「発見」／「設定」／「やり取り」が仮想化されることによって通常通りに行なわれるが、実際にはＯＳは（知らずに）実際のＩ／Ｏハードウェアのソフトウェアエミュレーションとやり取りをするように、Ｉ／Ｏコントローラのソフトウェアモデルを構築する。ＰＶＭは、ＯＳにおけるタイマ割り込みを制御して、Ｉ／Ｏ要求変換タスクを実行する際に、ＯＳからプロセッサ実行サイクルを「盗む」ことができるようにする。上記のような初期化ステップが実行されると、ＰＶＭはＯＳからのＩ／Ｏ要求に対して待機状態となる。
【００１７】
ＰＶＭは、仮想Ｉ／Ｏ装置から下位の物理Ｉ／Ｏ装置へとＩ／Ｏ要求を変換する機能素子を複数有する。図４は、本発明の実施形態に係る部分仮想化マシン４００を示す図である。Ｉ／Ｏポートトラップ部４０２は、ＯＳが発行するＩ／Ｏポートに対する読み書き動作を捕捉する。Ｉ／Ｏ要求はその後、エミュレータに渡されるとしてよい。Ｉ／Ｏコントローラエミュレータ部４０４は、インスタンス化された仮想Ｉ／Ｏコントローラに対するＩ／Ｏ制御要求であるＩ／Ｏ要求を処理する。仮想Ｉ／Ｏコントローラが仮想ＡＴＡコントローラを含む実施形態では、Ｉ／Ｏコントローラエミュレータ部はＡＴＡコントローラエミュレータを含む。Ｉ／Ｏ装置エミュレータ部４０６は、アクセスの対象となっている特定の物理Ｉ／Ｏ装置をエミュレーションして、Ｉ／Ｏアクセス要求であるＩ／Ｏ要求を処理する。ある実施形態によると、Ｉ／Ｏ装置エミュレータは、ＡＴＡ装置エミュレータを含み、エミュレーションの対象となっている装置は、ＡＴＡインターフェースをサポートする装置であればどのような装置であってもよく、例えば、仮想ハードディスク、仮想ＣＤ−ＲＯＭ等が挙げられる。どちらのエミュレータも、イベント駆動ステートマシンを含み、Ｉ／Ｏアクセスが動作のトリガソースとなる。実施例毎に異なる利用環境に応じて、さまざまな装置ドライバ４０８がＰＶＭに含められるとしてよい。例えば、ＵＳＢサムドライブに仮想ハードディスクのインスタンスを作成することをユーザが所望する場合、ＵＳＢサムドライブおよび対応するＵＳＢコントローラの装置ドライバがＰＶＭに含められるとしてよい。装置ドライバは、Ｉ／Ｏ制御要求およびＩ／Ｏアクセス要求に少なくとも部分的に基づいて、物理Ｉ／Ｏ装置と通信する。
【００１８】
図４に図示されているその他のＰＶＭの構成要素は、Ｉ／Ｏ要求の変換および物理Ｉ／Ｏ装置へのアクセスを促進する補完的なモジュールを含む。他の構成要素には、仮想化ドメインへ数回訪問する際に発生し得るイベントをスケジューリングするスケジューラ４１０が含まれる。例えば、ＰＶＭのコンテキストに通常留まる期間の４倍の時間がかかるＩ／Ｏ要求があるとしてよい。スケジューラは、Ｉ／Ｏトランザクションの一部のみしか完了しない場合、処理中のほかのトランザクションと共に、このＩ／Ｏトランザクションを追跡および管理する。さらに、ＰＶＭメモリ空間の割り当ておよび割り当て解除を管理するメモリ管理部４１２と、隠されているＩ／Ｏ装置がトリガする割り込みを処理する割り込み管理部４１４と、Ｉ／Ｏ装置をＯＳから隠すＰＣＩ装置管理部４１６とが設けられる。このようなＰＶＭの構成要素は、ＯＳ内の対応するモジュールと同様であるが、小型化、高速化、および簡略化が図られているとしてよい。
【００１９】
一実施形態によると、処理の対象となっているＩ／Ｏインターフェースは、ＡＴＡインターフェースであってよい。ＰＶＭにおいて統一格納装置を仮想ＡＴＡコントローラとして実現すると、幾つかの点で有用性が高いとしてよい。第一に、利用可能なオペレーティングシステムの大半は、ＡＴＡ装置ドライバを備えており、ＡＴＡ格納装置（例えば、ハードディスク）にシステムデータまたはユーザデータを格納している。ＡＴＡ装置ドライバは、基本的な装置ドライバであり、今後長期にわたって大半のオペレーティングシステムの一部を形成するものと思われる。第二に、ＡＴＡインターフェースは、ダイレクトメモリアクセス（ＤＭＡ）を含む非同期データ読み書き方法を定義している。ＰＶＭは、このＤＭＡモードのおかげで、読み書き要求を非同期に処理する。つまり、ＰＶＭは、大量のデータにアクセスする場合、ＯＳの実行をブロックすることはない。ＰＶＭは、ＡＴＡ読み書きコマンドを捕捉すると、適切な装置ドライバを呼び出して読み書きプロセスを開始する。ＰＶＭは、データ転送の準備が整うまで待機することはしない。ＰＶＭは、これに代えて、即座に制御をＯＳに返す。ＰＶＭは、続くタイマスライスにおいて、データの読み書きを実行するためにプロセッササイクルを数サイクル盗む。ＰＶＭは、ＯＳ用のデータの準備が整うと、ＩＳに通知するべく割り込みを作成する。第三に、ＡＴＡ仕様はプラグ・アンド・プレイ機能をサポートしている。ＰＶＭは、下位の物理Ｉ／Ｏ装置がコンピュータシステムから取外されると、仮想ＡＴＡコントローラのステータスレジスタを変更することによって、このイベントをＯＳに通知することが出来る。
【００２０】
図５は、本発明の実施形態に係るシステム処理を説明するためのフローチャートである。５０２において、ＯＳ２０４は、選択されたＩ／ＯポートにＩ／Ｏドライバ２１６を介して、読み書き要求を実行する必要がある旨を示す書き込みを行なう。ＰＶＭ２１８のＩ／Ｏポートトラップ部４０２は、５０４において、当該Ｉ／Ｏポートへの書き込みを検出して、書き込み動作を「フック」する。ＰＶＭはまた、５０４において、続いて行なわれるＩ／Ｏ処理を保護するべくセキュアエンクレーブセッションを開始する。ＰＶＭがセキュアエンクレーブ内で動作している間、ＰＶＭの処理は保護されており、ＯＳおよびアプリケーションプログラムはＰＶＭが行なっていることを見ることは出来ない（つまり、ＰＶＭの動作を追跡することはできない）。５０６において、Ｉ／Ｏ要求がＩ／Ｏコントローラレジスタ（利用可能なＩ／Ｏポートのうちの１つ）を参照している場合、処理はブロック５０８に続く。典型的な要求には、ブロック読出、ブロック書込、および、装置設定が含まれるとしてよい。要求は、コントローラの種類毎に異なるとしてよい。また、使用頻度が低い要求は、リセットおよびフラッシュがあるとしてよく、Ｉ／Ｏハードウェア毎に異なるとしてよい。
【００２１】
５０８において、Ｉ／Ｏコントローラエミュレータ４０４は、Ｉ／Ｏ要求を処理する。続いて、５１０において、ＰＶＭは、内部ＰＶＭステートマシンを更新して、Ｉ／Ｏ要求の処理を反映させる。一実施形態によると、ステートは以下の通りである。
１）待ち行列に入れられているトランザクション（待ち行列にあるがまだ処理されていないトランザクション）
２）処理中のトランザクション（アクティブとなったがまだ完了していないトランザクション）これは通常、要求を完了させるためには複数回の繰り返しが必要な場合のステートである（珍しいものではない）。また、ＰＶＭコンテキストの場合に次に作業すべきトランザクションでもある。
３）完了したトランザクション（エラーなしで処理が完了したトランザクション）トランザクションはこれ以外に、ＦＩＦＯ（ファースト・イン・ファースト・アウト）待ち行列として処理されるとしてもよい。この場合、（存在する場合に）＃２が処理されると、その後で＃１（待ち行列ステート）のうち最も古いトランザクションを処理する。
【００２２】
処理は５１２に続き、ＰＶＭは現在のセキュアエンクレーブセッションを終了させてＯＳに制御を戻す。５０６において、Ｉ／Ｏ要求がＩ／Ｏコントローラレジスタを参照していない場合、処理はブロック５１４に続く。５１４において、Ｉ／Ｏ要求がＩ／Ｏコマンドブロックポート（利用可能なＩ／Ｏポートのうちの１つ）を参照している場合、処理はブロック５１６に続く。Ｉ／Ｏ要求がＩ／Ｏコマンドブロックポートを参照していない場合、５１２において、ＰＶＭは現在のセキュアエンクレーブセッションを終了させてＯＳに制御を戻す。５１６において、Ｉ／Ｏ装置エミュレータ４０６はＩ／Ｏ要求を処理する。５１８において、Ｉ／Ｏ装置エミュレータは、Ｉ／Ｏ要求が大量のデータを読み書きするものか否かを判断する（「大量」の程度は実施例毎に異なる）。読み書き要求が大量のデータを処理するものである場合、５２０において、ＰＶＭスケジューラ４１０はＯＳからＣＰＵサイクルを数サイクル盗む。つまり、ＰＶＭのある実装では、ある程度高頻度で周期的タイマによってＰＶＭを再度訪問するようにスケジューリングして、要求されているトランザクションを処理することができるようにする。ＰＶＭは、主として受身なのが普通であるので、トランザクションが処理中状態の場合には、システムをＰＶＭコンテキストに頻繁に切り替えることによって、トランザクションを処理できるようにより多くの注目を確実に集めるようにする。大半のＯＳはコンピュータプラットフォームが「盗まれている」期間が長くなり過ぎると安定性を維持することができないので、システムは最初から最後まで継続してＰＶＭコンテキストに留まることはできない。ＰＶＭはこのため、作業を完了するのに十分な数であるが、ＯＳコンテキストでのリソース割り当てエラーを発生させるには至らない数のプロセッササイクルを取得する。ＰＶＭは、５２２において、装置ドライバ４０８のうち適切なものを開始させて、データの読み書きを行なう。５１８において読み書きされるデータが大量でない場合、ブロック５２０および５２２を省略する。ＰＶＭは、ＯＳに制御を戻さなければならなくなるまでどのくらいの期間にわたってシステムがＰＶＭのコンテキストに留まることが可能であるかについて予め情報を持つ。ＰＶＭは、実際のＩ／Ｏハードウェアと直接やり取りするので、特定のトランザクションのＩ／Ｏハードウェアによる実行が完了したか否かを知る。いずれにしても、５１０において、ＰＶＭは内部ＰＶＭステートマシンを更新してＩ／Ｏ要求の処理状態を反映する。最後に、処理は５１２に続き、ＰＶＭは現在のセキュアエンクレーブセッションを終了させて、制御をＯＳに戻す。
【００２３】
本発明の実施形態はコンピュータシステムに含まれており、さまざまな利用モデルが可能であるとしてよい。例えば、多くのモバイルインターネット装置（ＭＩＤ）については、内部ＣＤ−ＲＯＭドライブをインストールするのに十分なメモリがないので、コンピュータシステムメーカは、（通常は、ブート可能なＵＳＢサムドライブを用いて）ユーザがオペレーティングシステムをインストールできるように追加のソフトウェアツールを開発する必要がある。本発明の実施形態によれば、ＰＶＭは、ＵＳＢサムドライブにある画像ファイルに少なくとも部分的に基づいてＰＶＭに仮想ＣＤＲＯＭドライブを作成させるので、ＯＳが従来と同じ方法でインストールできるように構成されるとしてよい。ＯＳ用の多くのインストールプログラムは、どこからインストールされるか仮定している。本発明の実施形態によれば、ＵＳＢサムドライブ上にある線形の情報群を取得することが可能であり、ＰＶＭにそのＣＤソフトウェアモデルを提示させて基本情報がＣＤ装置から取得されたように見せかけるが、ＯＳがＣＤ装置とやり取りをしていると思っていても実際にはＰＶＭが物理ＵＳＢ装置に対する連絡係として動作している。
【００２４】
ＯＳはハードディスクドライブの特定箇所からロードされるのが一般的であり、ＯＳはこれが普通であると仮定している。しかし、場合によっては、別の格納装置（例えば、ＵＳＢサムドライブ）からＯＳをロードするのが望ましい場合もある。この利用方法は、一部のコンピュータシステムのサポートエンジニア達の間で一般的である。コンピュータシステムのＯＳが破損して開始できなくなると、サポートエンジニアは、当該ＯＳのクリーンバージョンを開始して、コンピュータシステムのハードウェアおよびソフトウェアを診断するとしてよい。従来は、このような診断環境は、ＯＳをロードする箇所（例えば、ハードディスクドライブ上）について仮定が存在するので、コンピュータシステムの製造者が開発またはカスタマイズする必要がある。しかし、本発明の実施形態によると、サポートエンジニアは、ＵＳＢサムドライブに基づき仮想ハードディスクドライブを生成するようにＰＶＭを設定するとしてよく、メーカでのさらなる開発努力を必要とすることなく、クリーンなＯＳはＵＳＢサムドライブから直接開始され得る。
【００２５】
ＰＶＭはさらに、格納装置メーカの知的財産を保護するべく利用され得る。一例を挙げると、Ｌｉｎｕｘ（登録商標）カーネルはジェネラルパブリックライセンス（ＧＰＬ）を持つので、Ｌｉｎｕｘ（登録商標）用に開発された任意のカーネルモジュールは、当該カーネルモジュールのコードも同様に公開すべきである。メーカは、Ｌｉｎｕｘ（登録商標）で当該メーカの格納装置を利用可能にすることを望む場合、装置ドライバを開発する必要があり、当該装置ドライバは通常カーネルモジュールである。このカーネルモジュールのソースコードは公開されるが、メーカにとっては公開は望ましくない場合がある。本発明の実施形態によれば、メーカは、当該メーカの格納装置についてＰＶＭに含まれる装置ドライバを開発し、ＰＶＭは、当該メーカの物理格納装置の上位に仮想ＡＴＡ装置を生成するように構成されるとしてよい。メーカの装置ドライバはＰＶＭにあるので、ＰＶＭの動作はセキュアエンクレーブによって保護されており、メーカの装置ドライバが保護される。このように、メーカはＧＰＬ  ＯＳ用に特別に装置ドライバを開発せずにすむので、当該メーカの知的財産が保護される。この利用モデルの延長線上には、メーカがＰＶＭについて１つのみ装置ドライバを開発して、サポートされているＯＳ毎に別の装置ドライバをメーカが開発するのではなく、さまざまなＯＳが当該メーカの格納装置にＰＶＭを介してアクセス可能になる場合も考えられる。
【００２６】
また、下位の物理装置がハードディスクドライブである場合、ＰＶＭを用いてハードディスクドライブ内のメモリの一領域を確保して、この領域をシステム回復またはデータ保護等、特定の利用目的で隠すとしてよい。
【００２７】
当業者であれば、本発明の範囲から逸脱することなく、ＰＶＭを用いて統一格納装置を提供するほかの方法があることを認めるであろう。当業者はまた、開示されている発明は、ソフトウェアのみで構成されているにしろ、または、ハードウェアが補助的に利用されているにしろ、コンピュータシステムまたはプログラミング環境の部分仮想化または完全仮想化を利用したさまざまな種類の仮想化環境および仮想化システムに適用され得るものと認めるであろう。
【００２８】
さらに、当業者は、本発明の実施形態は他の方法および他のプログラミング言語を用いて実施され得るものと認めるであろう。
【００２９】
本明細書に記載した技術は、任意の特定のハードウェア構成またはソフトウェア構成に限定されるものではなく、任意のコンピュータ環境または処理環境で適用され得る。本明細書に記載した技術は、ハードウェア素子、ソフトウェア素子あるいはファームウェア素子、または、これらを組み合わせて具現化されるロジックに実装されるとしてよい。本明細書に記載した技術は、プロセッサ、プロセッサが読み出すことのできる格納媒体（揮発性および不揮発性のメモリおよび／または格納素子を含む）、少なくとも１つの入力装置、および、１以上の出力装置から構成される携帯式あるいは固定型のコンピュータ、携帯情報端末（ＰＤＡ）、セットトップボックス、携帯電話およびポケベル、ならびに、その他の電子機器等、プログラミング可能な機械で実行されるプログラムに実装され得る。入力装置を用いて入力されたデータにプログラムコードが適用されると、本明細書に記載した機能が実行され、出力情報が生成される。出力情報は、１以上の出力装置に適用されるとしてよい。当業者であれば、さまざまなコンピュータシステム構成、例えば、マルチコアプロセッサ、マルチプロセッサシステム、ミニコンピュータ、メインフレームコンピュータ等で本発明が実施可能であることに想到するであろう。本発明はさらに、通信ネットワークで結合されている複数の遠隔処理装置によってタスクが実行される分散型コンピュータ環境でも実施可能である。
【００３０】
各プログラムは、処理システムと通信するべく高級プロシージャ言語またはオブジェクト指向型プログラミング言語で実装されるとしてよい。しかし、所望される場合には、アセンブリ言語または機械語でプログラムを実装するとしてもよい。いずれにしても、コンパイラ型言語またはインタプリタ型言語を用いるとしてよい。
【００３１】
プログラム命令は、当該命令でプログラミングされた汎用処理システムまたは特定用途向け処理システムに本明細書に記載されている処理を実行させるべく利用されるとしてよい。これに代えて、本明細書に記載されている処理は、当該処理を実行するためのハードワイヤードロジックを含む特定のハードウェア素子によって、または、プログラミング済みのコンピュータ素子およびカスタマイズされたハードウェア素子を任意の方法で組み合わせることによって実行されるとしてもよい。本明細書に記載されている方法は、当該方法を実行するように処理システムまたはその他の電子機器をプログラミングするべく利用され得る命令を格納している機械可読媒体を含むコンピュータプログラム製品として提供されるとしてもよい。「機械可読媒体」という用語は、本明細書で使用される場合、機械によって実行される命令列を格納または符号化することができ、本明細書に記載した方法のうちいずれか１つを機械に実行させる任意の媒体を含むものとする。したがって、「機械可読媒体」という用語は、これらに限定されるものではないが、ソリッドステートメモリ、光ディスク、および、磁気ディスクを含むものである。さらに、関連技術分野では、ソフトウェアについて言及する場合、何らかの処理を実行したり、または、何らかの結果を発生させるものとして、さまざまな用語（例えば、プログラム、プロシージャ、プロセス、アプリケーション、モジュール、ロジック等）を利用するのが一般的である。このような表現は単に、プロセッサに何らかの処理を実行させるため、または、何らかの結果を発生させるための、処理システムによるソフトウェアの実行を説明するための簡潔な表現に過ぎない。
【００３２】
本発明は具体的な実施形態を参照しつつ説明してきたが、上記の説明は本発明を限定するものと解釈されることを意図したものではない。具体的な実施形態のさまざまな変形例は、本発明の上記以外の実施形態と共に、本発明の関連技術分野の当業者には明らかであり、本発明の範囲に含まれるものと解釈される。
【図１】
0005345652.tif 000002
【図２】
0005345652.tif 000003
【図３】
0005345652.tif 000004
【図４】
0005345652.tif 000005
【図５】
0005345652.tif 000006