説明

部分仮想化マシンに基づく統一格納装置

【課題】格納装置の数および種類が増加するにつれて、OS開発の負荷が大きくなることを抑制し、装置ドライバを介して格納装置にアクセスをセキュアなものとする。
【解決手段】物理I/O装置に対応する仮想I/Oコントローラを含む仮想I/O装置をインスタンス化する部分仮想マシンが設ける。部分仮想マシンは、オペレーティングシステムから仮想I/O装置に対するI/O要求を捕捉し、I/O要求がI/O制御要求を含む場合に処理するI/Oコントローラエミュレータと、I/O要求がI/Oアクセス要求を含む場合に処理するI/O装置エミュレータと、I/Oコントローラエミュレータ部およびI/O装置エミュレータ部に結合され物理I/O装置と通信する装置ドライバとを含む。部分仮想マシンは、セキュアエンクレーブセッションにおいて実行され、OSによる部分仮想マシンへのアクセスを抑制する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、概してコンピュータシステムに関し、具体的にはシステムのファームウェアおよび仮想化に関する。
【背景技術】
【0002】
歴史的に見て、パーソナルコンピュータ(PC)等のコンピュータシステムは、多くのさまざまな装置を用いてデータを格納している。格納装置はそれぞれ、特定の機能を果たし、接続インターフェース、アクセス速度、容量等の点で特徴を持つ。例えば、格納装置として、フロッピー(登録商標)ディスクドライブ、ハードディスクドライブ、ソリッドステートディスクドライブ、CDROMドライブ、ユニバーサルシリアルバス(USB)サムドライブ等が挙げられる。新たな格納装置の開発が続けられている。新しい格納装置が開発される度に、当該格納装置に対するアクセスを実現するためには、オペレーティングシステム(OS)も同様に発達していく必要がある。これは通常、装置ドライバソフトウェアを供給することによって行われる。装置ドライバソフトウェアによって、アプリケーションプログラムは、OSを介して通信して、格納装置との間でデータの読み書きを行なうことができるようになる。格納装置の数および種類が増加するにつれて、OS開発の負荷が非常に大きくなってしまう。また、装置ドライバを介して格納装置にアクセスするのはセキュアでない場合があるので、悪意あるユーザによる入出力(I/O)トラフィックの読み取りおよび/または修正が可能となってしまう。
【図面の簡単な説明】
【0003】
本発明の特徴および利点は、以下に記載する本発明の詳細な説明を参照することによって明らかとなる。
【図1】本発明の実施形態に係るコンピュータシステムにおけるセキュアエンクレーブ(secure enclave)セッションを示す図である。
【図2】本発明の実施形態に係るコンピュータシステムを示す図である。
【図3】本発明の実施形態に係るメモリマップを示す図である。
【図4】本発明の実施形態に係る部分仮想化マシンを示す図である。
【図5】本発明の実施形態に係るシステム処理を示すフローチャートである。
【発明を実施するための形態】
【0004】
本発明の実施形態は、部分仮想化マシン(PVM)を実現することによって統一格納装置を提供するシステムおよび方法を含む。PVMは、コンピュータシステムに結合されているさまざまな物理格納装置より高位に少なくとも1つの仮想格納装置を生成するために利用され得る。サポートされている格納装置のそれぞれについて特定の装置ドライバを提供する代わりに、OSは、統一格納装置に対するインターフェースにアクセスするとしてよい。PVMは、セキュアエンクレーブセッションにおいて実行されるので、従来の格納装置インターフェースに比べてセキュリティが改善され得る。本発明の実施形態によると、統一格納装置は、ブート時間およびランタイムにおいて利用可能であるとしてよく、OSに依存しないとしてよい。
【0005】
本明細書において本発明の「一実施形態」または「ある実施形態」と記載する場合、当該実施形態に関連付けて説明されている特定の特徴、構造、または、特性が本発明の少なくとも1つの実施形態に含まれていることを意味するものである。このように、「一実施形態において」という表現は本明細書において繰り返し見られるが、必ずしも全てが同じ実施形態を意味するものではない。
【0006】
OSと特定の格納装置とを整合させるべく、当該格納装置のメーカによって当該格納装置について標準的なI/Oインターフェースが定義されているのが普通である。過去数年間にわたって利用されているI/Oインターフェースには幾つか種類がある。例えば、パラレルPC/ATアタッチメント/ATアタッチメント・パケット・インターフェース(ATAPI)(ATAと呼ばれるのが一般的)(ATAPIは、INCITS317−1998、「ATアタッチメントおよびパケット・インターフェース・エクステンション(ATA/ATAPI−4)」、www.t13.org/で入手可能)においてATAの一環として採用された。)、スモール・コンピュータ・システム・インターフェース(SCSI)(ansi.orgで入手可能)、ユニバーサルシリアルバス(USB)、シリアルATA(SATA)等がある。本発明の一実施形態によると、ATAインターフェースを利用するとしてよい。一実施形態によると、PVMは、コンピュータシステムに結合されている物理格納装置毎に、OSによるアクセスのために仮想ATA装置をエニュメレーションする。このような格納装置は、ブート時間またはその後の任意の時間においてコンピュータシステムに結合されるか、または、コンピュータシステムから取外されるとしてもよい。例えば、USBサムドライブは、ブート時間またはランタイムにおいて、PVMによってIDE(インテグレーテッド・ドライブ・エレクトロニクス)ハードディスクとしてエニュメレーションされるとしてよい。このため、例えば、USBサムドライブをコンピュータシステムにホットプラグすると、USBサムドライブは、OSに対してハードディスクとして可視化されるように見えるとしてよい。
【0007】
I/Oに対する悪意あるアクセスから統一格納装置を保護するべく、本発明の実施形態では、PVMは、コンピュータシステムのプロセッサパッケージ内でセキュアエンクレーブ(SE)セッションにおいて実行されるとしてよい。図1は、本発明の実施形態に係るコンピュータシステムにおけるセキュアエンクレーブセッションを示す図である。説明の便宜上、コンピュータシステム100の一部は図1において簡略化して図示している。プロセッサパッケージ102は、セキュリティぺリメータ(境界線)内に1以上の処理コアを有する。一実施形態によると、セキュリティぺリメータは、プロセッサパッケージの境界(図1では太線で示す)であるとしてよい。プロセッサパッケージは、メモリ104およびプラットフォームコントロールハブ(PCH)106と連動している。PCHは、1以上のI/O装置108と連動している。セキュアエンクレーブ機能を実現するためには、セキュアエンクレーブを作成して、分離させて、命令実行およびデータアクセスを保護するプロセッサ命令を複数提供する。プロセッサパッケージの外側のデータおよびコードは、暗号化されてインテグリティが確認されるとしてよい。プロセッサパッケージの内側のデータおよびコードは、暗号化されず、モードおよびキャッシュ保護メカニズムによって保護されるとしてよい。ある実施形態によると、セキュアエンクレーブからデータが「漏れる」ことはない。プロセッサパッケージ内のマイクロコードは、割り込み、例外、トラップ、および、仮想マシンマネージャ(VMM)イグジット(EXIT)のために、エンクレーブ内にエンクレーブ状態情報を保存する。セキュアエンクレーブ機能については、PCT特許出願(発明の名称:「セキュアにアプリケーションを実行するための方法および装置」、発明者:フランシス・X.,マキン他、出願日:米国特許庁の受理局にて2009年12月22日に出願、出願番号:PCT/US2009/069212号)で説明している。当該特許文献は、参照により本願に組み込まれる。
【0008】
図2は、本発明の実施形態に係るコンピュータシステムを示す図である。コンピュータシステム200では、1以上のアプリケーションプログラム202が当該コンピュータシステムで実行中である。コンピュータシステムは、オペレーティングシステム(OS)204およびコンピュータプラットフォーム206等、従来の構成要素を備える。コンピュータプラットフォームは、プロセッサパッケージ208、メモリ210、および、ファームウェア212を有し、図示されてはいないが、さらに従来の構成要素を有する。コンピュータシステム200はさらに、1以上のI/O装置214(例えば、ハードディスクドライブ、CD−ROMドライブ、DVDドライブ、USBサムドライブ、ブルーレイプレーヤ、ソリッドステートドライブ、ネットワーク・インターフェース・コントローラ(NIC)等)を備える。本発明の実施形態によると、アプリケーションプログラムがI/O装置のうち1つとの間でデータの読み書きを行なう必要がある場合、アプリケーションプログラム202はOS204と連動する。OSはその後、I/O要求の処理のために、I/Oドライバコンポーネント216を呼び出す。I/Oドライバ216は、OS要求を変換して、当該要求を部分仮想マシン(PVM)218に転送する。
【0009】
本発明の実施形態によると、I/Oドライバは、I/O要求のさらなる処理のためにPVM218を呼び出して、選択されたI/O装置214と通信する。本発明で利用する部分仮想化は、ハイエンドなサーバコンピュータシステムで利用されている準仮想化および完全仮想化の概念とは異なり、コンピュータシステムのハードウェアコンポーネントのうち一部のみを仮想化して、残りは仮想化しない技術を意味する。仮想化されたコンポーネントは、PVMを介してOSから(そのI/Oドライバコンポーネントを介して)直接アクセスされ得る。このため、一実施形態によると、PVMは、軽量仮想マシン(LVMM)を含み、コードコンポーネントとしてシステムファームウェア212に含められるとしてよい。通常のLVMMよりも簡単なバージョンでは、本発明の実施形態に係るPVMは、サービスOSを含まない。PVMは、部分仮想化のみを実現することにより、従前の仮想化方式に比べて性能が改善され、低性能のコンピュータシステムでも利用可能となる。仮想マシンマネージャ(VMM)は通常はシステム全体をトラップして表現するが、PVMは非常に軽量な解決策となることを意図している(マイクロハイパーバイザと呼ぶことも容易に可能である)。この場合、プラットフォームのうち非常に限られた部分が、I/Oサイクルのトラップが所定の範囲(例えば、所与のコントローラに対するアクセスと対応付けられるI/Oサイクル)に制限されるように実際に仮想化されるが、無効なメモリアクセス、または、より侵害性の高く、より多くのシステムリソースを必要とし、または、プラットフォームの処理を遅らせるその他の試みに対するその他の「保護」は提供されない場合がある。
【0010】
ある実施形態によると、PVMは、OSのために、コンピュータシステムが備えるほかの装置と同様の仮想I/O装置217と呼ばれる統一格納装置のインスタンスを生成するとしてよく、OSが制限を受けることなく当該インスタンスを検出および利用する。一実施形態によると、インスタンスが作成された仮想I/O装置217は、仮想ATA装置である。このように、物理I/O装置(例えば、SATAコントローラ)と仮想I/O装置とは1対1でマッピングされるとしてよい。インスタンスが作成され得る仮想I/O装置の数は、実施例毎に決まるとしてよい。
【0011】
このような部分仮想化によって、同時に複数のオペレーティング・システム・インスタンスを実行する通常の完全仮想化モードとは違って、一度に実行されるOSインスタンスは1つのみとなる。これは、部分仮想化の場合にはシステムのうち非常に限られた部分のみがPVMで実施されるためである。コンピュータプラットフォームが完全に仮想化される場合、コンピュータプラットフォーム全体がソフトウェアモデルでラッピングされて繰り返し複製され得るので、システムはn個に分割され、ターゲットOSのインスタンスがn個実行される。PVMではリソースが限られている場合がある。
【0012】
本発明の実施形態によると、PVMはOSとその下位にあるハードウェアとの間の翻訳者として動作し、通信「言語」はATAインターフェース仕様であるとしてよい(仮想I/O装置が仮想ATA装置である場合)。他の実施形態では、仮想I/O装置は、他のインターフェース仕様についてインスタンス化されるとしてよい。OSが統一格納装置(本例では仮想ATA装置)との間でデータの読み書きを行なう必要がある場合、ATAインターフェース仕様に従って、OS204のI/Oドライバ216が特定のI/Oポート(例えば、0x1F7または0x3F7)を読み書きすることによって統一格納装置にATAコマンドを送る。PVM218は、読み書き動作を求めるこれらの要求を下位の物理I/O装置(例えば、USBサムドライブ、CD−ROMドライブ等)が理解するコマンドに変換する。
【0013】
プロセッサパッケージがサポートする仮想技術(VT)に基づきPVMを実現するとしてよい。VTは、関連技術分野で公知であり、本明細書では説明は省略する。(関連技術分野で公知であるが)プロセッサに仮想マシン制御構造(VMCS)をプログラミングすることによって、PVMは上記のような関連するI/Oポートアクセスを捕捉可能となるので、本発明の実施形態を利用する際にOSカーネルを変更する必要はない。PVMは、VTのおかげで、OSに依存することがない。つまり、コンピュータシステムに準拠していれば全てのOSがPVMがイネーブルされているコンピュータシステムで実行され得る。
【0014】
統一格納装置をインスタンス化するべく、PVMは、コンピュータシステムの初期化処理中(つまり、ブート時間中)に、OSのロードが実行される前に、システムファームウェアによって開始されるとしてよい。ある実施形態によると、PVMは少なくとも数個の初期化ステップを実行する。
【0015】
OSがロードされる前に、システムファームウェア212はPVMが利用するメモリの領域を確保する。図3は、本発明の実施形態に係るメモリマップを示す図である。ある実施形態によると、コンピュータシステムの物理メモリ空間は、図示されているように、パーティション化されているとしてよい。OSは、OS領域302に対するアクセスを持つとしてよい。一実施形態によると、この領域はメモリの先頭位置から始まっているとしてよい。共有メモリ空間304は、OSとPVMとの間のデータのやり取りのために確保されているとしてよい。一実施形態によると、共有メモリ空間は、メモリ内において、OS領域に隣接して設けられ、OS領域よりも高位に構成されているとしてよい。PVMメモリ空間306は、一実施形態によると、メモリの最上位に確保されているとしてよい。他の実施形態では、メモリの割り当ておよび配置を変更するとしてもよい。PVMメモリは、OSから隠されている。OSは、PVM306にはアクセスできない。
【0016】
PVMは、OSが起動時に仮想I/Oコントローラに関する情報についてスキャンすると、少なくとも1つの仮想I/Oコントローラをエニュメレーションして、I/O装置を報告する。一実施形態によると、仮想I/Oコントローラは仮想ATAコントローラで、I/O装置はATA装置である。PVMによってI/O要求が捕捉されると、I/O要求を処理するタスクは、インスタンス化された仮想I/O装置に対応するI/O装置エミュレータおよびI/Oコントローラエミュレータと呼ばれる(後述)PVMの構成要素によって実行されるとしてよい。下位の物理I/O装置は、その存在およびそれへのアクセスをPVMによって隠されるとしてよい。物理I/O装置は、PVMおよびOSによるアクセスが競合しないように、OSによって検出されないようにしなければならない。OSの起動に先立って、装置の「発見」/「設定」/「やり取り」が仮想化されることによって通常通りに行なわれるが、実際にはOSは(知らずに)実際のI/Oハードウェアのソフトウェアエミュレーションとやり取りをするように、I/Oコントローラのソフトウェアモデルを構築する。PVMは、OSにおけるタイマ割り込みを制御して、I/O要求変換タスクを実行する際に、OSからプロセッサ実行サイクルを「盗む」ことができるようにする。上記のような初期化ステップが実行されると、PVMはOSからのI/O要求に対して待機状態となる。
【0017】
PVMは、仮想I/O装置から下位の物理I/O装置へとI/O要求を変換する機能素子を複数有する。図4は、本発明の実施形態に係る部分仮想化マシン400を示す図である。I/Oポートトラップ部402は、OSが発行するI/Oポートに対する読み書き動作を捕捉する。I/O要求はその後、エミュレータに渡されるとしてよい。I/Oコントローラエミュレータ部404は、インスタンス化された仮想I/Oコントローラに対するI/O制御要求であるI/O要求を処理する。仮想I/Oコントローラが仮想ATAコントローラを含む実施形態では、I/Oコントローラエミュレータ部はATAコントローラエミュレータを含む。I/O装置エミュレータ部406は、アクセスの対象となっている特定の物理I/O装置をエミュレーションして、I/Oアクセス要求であるI/O要求を処理する。ある実施形態によると、I/O装置エミュレータは、ATA装置エミュレータを含み、エミュレーションの対象となっている装置は、ATAインターフェースをサポートする装置であればどのような装置であってもよく、例えば、仮想ハードディスク、仮想CD−ROM等が挙げられる。どちらのエミュレータも、イベント駆動ステートマシンを含み、I/Oアクセスが動作のトリガソースとなる。実施例毎に異なる利用環境に応じて、さまざまな装置ドライバ408がPVMに含められるとしてよい。例えば、USBサムドライブに仮想ハードディスクのインスタンスを作成することをユーザが所望する場合、USBサムドライブおよび対応するUSBコントローラの装置ドライバがPVMに含められるとしてよい。装置ドライバは、I/O制御要求およびI/Oアクセス要求に少なくとも部分的に基づいて、物理I/O装置と通信する。
【0018】
図4に図示されているその他のPVMの構成要素は、I/O要求の変換および物理I/O装置へのアクセスを促進する補完的なモジュールを含む。他の構成要素には、仮想化ドメインへ数回訪問する際に発生し得るイベントをスケジューリングするスケジューラ410が含まれる。例えば、PVMのコンテキストに通常留まる期間の4倍の時間がかかるI/O要求があるとしてよい。スケジューラは、I/Oトランザクションの一部のみしか完了しない場合、処理中のほかのトランザクションと共に、このI/Oトランザクションを追跡および管理する。さらに、PVMメモリ空間の割り当ておよび割り当て解除を管理するメモリ管理部412と、隠されているI/O装置がトリガする割り込みを処理する割り込み管理部414と、I/O装置をOSから隠すPCI装置管理部416とが設けられる。このようなPVMの構成要素は、OS内の対応するモジュールと同様であるが、小型化、高速化、および簡略化が図られているとしてよい。
【0019】
一実施形態によると、処理の対象となっているI/Oインターフェースは、ATAインターフェースであってよい。PVMにおいて統一格納装置を仮想ATAコントローラとして実現すると、幾つかの点で有用性が高いとしてよい。第一に、利用可能なオペレーティングシステムの大半は、ATA装置ドライバを備えており、ATA格納装置(例えば、ハードディスク)にシステムデータまたはユーザデータを格納している。ATA装置ドライバは、基本的な装置ドライバであり、今後長期にわたって大半のオペレーティングシステムの一部を形成するものと思われる。第二に、ATAインターフェースは、ダイレクトメモリアクセス(DMA)を含む非同期データ読み書き方法を定義している。PVMは、このDMAモードのおかげで、読み書き要求を非同期に処理する。つまり、PVMは、大量のデータにアクセスする場合、OSの実行をブロックすることはない。PVMは、ATA読み書きコマンドを捕捉すると、適切な装置ドライバを呼び出して読み書きプロセスを開始する。PVMは、データ転送の準備が整うまで待機することはしない。PVMは、これに代えて、即座に制御をOSに返す。PVMは、続くタイマスライスにおいて、データの読み書きを実行するためにプロセッササイクルを数サイクル盗む。PVMは、OS用のデータの準備が整うと、ISに通知するべく割り込みを作成する。第三に、ATA仕様はプラグ・アンド・プレイ機能をサポートしている。PVMは、下位の物理I/O装置がコンピュータシステムから取外されると、仮想ATAコントローラのステータスレジスタを変更することによって、このイベントをOSに通知することが出来る。
【0020】
図5は、本発明の実施形態に係るシステム処理を説明するためのフローチャートである。502において、OS204は、選択されたI/OポートにI/Oドライバ216を介して、読み書き要求を実行する必要がある旨を示す書き込みを行なう。PVM218のI/Oポートトラップ部402は、504において、当該I/Oポートへの書き込みを検出して、書き込み動作を「フック」する。PVMはまた、504において、続いて行なわれるI/O処理を保護するべくセキュアエンクレーブセッションを開始する。PVMがセキュアエンクレーブ内で動作している間、PVMの処理は保護されており、OSおよびアプリケーションプログラムはPVMが行なっていることを見ることは出来ない(つまり、PVMの動作を追跡することはできない)。506において、I/O要求がI/Oコントローラレジスタ(利用可能なI/Oポートのうちの1つ)を参照している場合、処理はブロック508に続く。典型的な要求には、ブロック読出、ブロック書込、および、装置設定が含まれるとしてよい。要求は、コントローラの種類毎に異なるとしてよい。また、使用頻度が低い要求は、リセットおよびフラッシュがあるとしてよく、I/Oハードウェア毎に異なるとしてよい。
【0021】
508において、I/Oコントローラエミュレータ404は、I/O要求を処理する。続いて、510において、PVMは、内部PVMステートマシンを更新して、I/O要求の処理を反映させる。一実施形態によると、ステートは以下の通りである。
1)待ち行列に入れられているトランザクション(待ち行列にあるがまだ処理されていないトランザクション)
2)処理中のトランザクション(アクティブとなったがまだ完了していないトランザクション)これは通常、要求を完了させるためには複数回の繰り返しが必要な場合のステートである(珍しいものではない)。また、PVMコンテキストの場合に次に作業すべきトランザクションでもある。
3)完了したトランザクション(エラーなしで処理が完了したトランザクション)トランザクションはこれ以外に、FIFO(ファースト・イン・ファースト・アウト)待ち行列として処理されるとしてもよい。この場合、(存在する場合に)#2が処理されると、その後で#1(待ち行列ステート)のうち最も古いトランザクションを処理する。
【0022】
処理は512に続き、PVMは現在のセキュアエンクレーブセッションを終了させてOSに制御を戻す。506において、I/O要求がI/Oコントローラレジスタを参照していない場合、処理はブロック514に続く。514において、I/O要求がI/Oコマンドブロックポート(利用可能なI/Oポートのうちの1つ)を参照している場合、処理はブロック516に続く。I/O要求がI/Oコマンドブロックポートを参照していない場合、512において、PVMは現在のセキュアエンクレーブセッションを終了させてOSに制御を戻す。516において、I/O装置エミュレータ406はI/O要求を処理する。518において、I/O装置エミュレータは、I/O要求が大量のデータを読み書きするものか否かを判断する(「大量」の程度は実施例毎に異なる)。読み書き要求が大量のデータを処理するものである場合、520において、PVMスケジューラ410はOSからCPUサイクルを数サイクル盗む。つまり、PVMのある実装では、ある程度高頻度で周期的タイマによってPVMを再度訪問するようにスケジューリングして、要求されているトランザクションを処理することができるようにする。PVMは、主として受身なのが普通であるので、トランザクションが処理中状態の場合には、システムをPVMコンテキストに頻繁に切り替えることによって、トランザクションを処理できるようにより多くの注目を確実に集めるようにする。大半のOSはコンピュータプラットフォームが「盗まれている」期間が長くなり過ぎると安定性を維持することができないので、システムは最初から最後まで継続してPVMコンテキストに留まることはできない。PVMはこのため、作業を完了するのに十分な数であるが、OSコンテキストでのリソース割り当てエラーを発生させるには至らない数のプロセッササイクルを取得する。PVMは、522において、装置ドライバ408のうち適切なものを開始させて、データの読み書きを行なう。518において読み書きされるデータが大量でない場合、ブロック520および522を省略する。PVMは、OSに制御を戻さなければならなくなるまでどのくらいの期間にわたってシステムがPVMのコンテキストに留まることが可能であるかについて予め情報を持つ。PVMは、実際のI/Oハードウェアと直接やり取りするので、特定のトランザクションのI/Oハードウェアによる実行が完了したか否かを知る。いずれにしても、510において、PVMは内部PVMステートマシンを更新してI/O要求の処理状態を反映する。最後に、処理は512に続き、PVMは現在のセキュアエンクレーブセッションを終了させて、制御をOSに戻す。
【0023】
本発明の実施形態はコンピュータシステムに含まれており、さまざまな利用モデルが可能であるとしてよい。例えば、多くのモバイルインターネット装置(MID)については、内部CD−ROMドライブをインストールするのに十分なメモリがないので、コンピュータシステムメーカは、(通常は、ブート可能なUSBサムドライブを用いて)ユーザがオペレーティングシステムをインストールできるように追加のソフトウェアツールを開発する必要がある。本発明の実施形態によれば、PVMは、USBサムドライブにある画像ファイルに少なくとも部分的に基づいてPVMに仮想CDROMドライブを作成させるので、OSが従来と同じ方法でインストールできるように構成されるとしてよい。OS用の多くのインストールプログラムは、どこからインストールされるか仮定している。本発明の実施形態によれば、USBサムドライブ上にある線形の情報群を取得することが可能であり、PVMにそのCDソフトウェアモデルを提示させて基本情報がCD装置から取得されたように見せかけるが、OSがCD装置とやり取りをしていると思っていても実際にはPVMが物理USB装置に対する連絡係として動作している。
【0024】
OSはハードディスクドライブの特定箇所からロードされるのが一般的であり、OSはこれが普通であると仮定している。しかし、場合によっては、別の格納装置(例えば、USBサムドライブ)からOSをロードするのが望ましい場合もある。この利用方法は、一部のコンピュータシステムのサポートエンジニア達の間で一般的である。コンピュータシステムのOSが破損して開始できなくなると、サポートエンジニアは、当該OSのクリーンバージョンを開始して、コンピュータシステムのハードウェアおよびソフトウェアを診断するとしてよい。従来は、このような診断環境は、OSをロードする箇所(例えば、ハードディスクドライブ上)について仮定が存在するので、コンピュータシステムの製造者が開発またはカスタマイズする必要がある。しかし、本発明の実施形態によると、サポートエンジニアは、USBサムドライブに基づき仮想ハードディスクドライブを生成するようにPVMを設定するとしてよく、メーカでのさらなる開発努力を必要とすることなく、クリーンなOSはUSBサムドライブから直接開始され得る。
【0025】
PVMはさらに、格納装置メーカの知的財産を保護するべく利用され得る。一例を挙げると、Linux(登録商標)カーネルはジェネラルパブリックライセンス(GPL)を持つので、Linux(登録商標)用に開発された任意のカーネルモジュールは、当該カーネルモジュールのコードも同様に公開すべきである。メーカは、Linux(登録商標)で当該メーカの格納装置を利用可能にすることを望む場合、装置ドライバを開発する必要があり、当該装置ドライバは通常カーネルモジュールである。このカーネルモジュールのソースコードは公開されるが、メーカにとっては公開は望ましくない場合がある。本発明の実施形態によれば、メーカは、当該メーカの格納装置についてPVMに含まれる装置ドライバを開発し、PVMは、当該メーカの物理格納装置の上位に仮想ATA装置を生成するように構成されるとしてよい。メーカの装置ドライバはPVMにあるので、PVMの動作はセキュアエンクレーブによって保護されており、メーカの装置ドライバが保護される。このように、メーカはGPL OS用に特別に装置ドライバを開発せずにすむので、当該メーカの知的財産が保護される。この利用モデルの延長線上には、メーカがPVMについて1つのみ装置ドライバを開発して、サポートされているOS毎に別の装置ドライバをメーカが開発するのではなく、さまざまなOSが当該メーカの格納装置にPVMを介してアクセス可能になる場合も考えられる。
【0026】
また、下位の物理装置がハードディスクドライブである場合、PVMを用いてハードディスクドライブ内のメモリの一領域を確保して、この領域をシステム回復またはデータ保護等、特定の利用目的で隠すとしてよい。
【0027】
当業者であれば、本発明の範囲から逸脱することなく、PVMを用いて統一格納装置を提供するほかの方法があることを認めるであろう。当業者はまた、開示されている発明は、ソフトウェアのみで構成されているにしろ、または、ハードウェアが補助的に利用されているにしろ、コンピュータシステムまたはプログラミング環境の部分仮想化または完全仮想化を利用したさまざまな種類の仮想化環境および仮想化システムに適用され得るものと認めるであろう。
【0028】
さらに、当業者は、本発明の実施形態は他の方法および他のプログラミング言語を用いて実施され得るものと認めるであろう。
【0029】
本明細書に記載した技術は、任意の特定のハードウェア構成またはソフトウェア構成に限定されるものではなく、任意のコンピュータ環境または処理環境で適用され得る。本明細書に記載した技術は、ハードウェア素子、ソフトウェア素子あるいはファームウェア素子、または、これらを組み合わせて具現化されるロジックに実装されるとしてよい。本明細書に記載した技術は、プロセッサ、プロセッサが読み出すことのできる格納媒体(揮発性および不揮発性のメモリおよび/または格納素子を含む)、少なくとも1つの入力装置、および、1以上の出力装置から構成される携帯式あるいは固定型のコンピュータ、携帯情報端末(PDA)、セットトップボックス、携帯電話およびポケベル、ならびに、その他の電子機器等、プログラミング可能な機械で実行されるプログラムに実装され得る。入力装置を用いて入力されたデータにプログラムコードが適用されると、本明細書に記載した機能が実行され、出力情報が生成される。出力情報は、1以上の出力装置に適用されるとしてよい。当業者であれば、さまざまなコンピュータシステム構成、例えば、マルチコアプロセッサ、マルチプロセッサシステム、ミニコンピュータ、メインフレームコンピュータ等で本発明が実施可能であることに想到するであろう。本発明はさらに、通信ネットワークで結合されている複数の遠隔処理装置によってタスクが実行される分散型コンピュータ環境でも実施可能である。
【0030】
各プログラムは、処理システムと通信するべく高級プロシージャ言語またはオブジェクト指向型プログラミング言語で実装されるとしてよい。しかし、所望される場合には、アセンブリ言語または機械語でプログラムを実装するとしてもよい。いずれにしても、コンパイラ型言語またはインタプリタ型言語を用いるとしてよい。
【0031】
プログラム命令は、当該命令でプログラミングされた汎用処理システムまたは特定用途向け処理システムに本明細書に記載されている処理を実行させるべく利用されるとしてよい。これに代えて、本明細書に記載されている処理は、当該処理を実行するためのハードワイヤードロジックを含む特定のハードウェア素子によって、または、プログラミング済みのコンピュータ素子およびカスタマイズされたハードウェア素子を任意の方法で組み合わせることによって実行されるとしてもよい。本明細書に記載されている方法は、当該方法を実行するように処理システムまたはその他の電子機器をプログラミングするべく利用され得る命令を格納している機械可読媒体を含むコンピュータプログラム製品として提供されるとしてもよい。「機械可読媒体」という用語は、本明細書で使用される場合、機械によって実行される命令列を格納または符号化することができ、本明細書に記載した方法のうちいずれか1つを機械に実行させる任意の媒体を含むものとする。したがって、「機械可読媒体」という用語は、これらに限定されるものではないが、ソリッドステートメモリ、光ディスク、および、磁気ディスクを含むものである。さらに、関連技術分野では、ソフトウェアについて言及する場合、何らかの処理を実行したり、または、何らかの結果を発生させるものとして、さまざまな用語(例えば、プログラム、プロシージャ、プロセス、アプリケーション、モジュール、ロジック等)を利用するのが一般的である。このような表現は単に、プロセッサに何らかの処理を実行させるため、または、何らかの結果を発生させるための、処理システムによるソフトウェアの実行を説明するための簡潔な表現に過ぎない。
【0032】
本発明は具体的な実施形態を参照しつつ説明してきたが、上記の説明は本発明を限定するものと解釈されることを意図したものではない。具体的な実施形態のさまざまな変形例は、本発明の上記以外の実施形態と共に、本発明の関連技術分野の当業者には明らかであり、本発明の範囲に含まれるものと解釈される。

【特許請求の範囲】
【請求項1】
プロセッサパッケージを持つコンピュータシステムであって、
オペレーティングシステムと、
物理I/O装置と、
前記物理I/O装置に対応する仮想I/O装置をインスタンス化する部分仮想マシンと
を備え、
前記仮想I/O装置は、仮想I/Oコントローラを含み、
前記部分仮想マシンは、
前記オペレーティングシステムから前記仮想I/O装置に対するI/O要求を捕捉するI/Oポートトラップ部と、
前記I/Oポートトラップ部に結合されており、前記I/O要求がI/O制御要求を含む場合に前記仮想I/Oコントローラに対するI/O制御要求を処理するI/Oコントローラエミュレータ部と、
前記I/Oポートトラップ部に結合されており、前記I/O要求がI/Oアクセス要求を含む場合に前記仮想I/O装置と通信するためのI/Oアクセス要求を処理するI/O装置エミュレータ部と、
前記I/Oコントローラエミュレータ部および前記I/O装置エミュレータ部に結合されており、前記I/O制御要求および前記I/Oアクセス要求に少なくとも部分的に基づき前記物理I/O装置と通信する装置ドライバ部と
を有し、
前記部分仮想マシンは、前記プロセッサパッケージにおいてセキュアエンクレーブセッションにおいて実行され、前記オペレーティングシステムによる前記部分仮想マシンへのアクセスを抑制するコンピュータシステム。
【請求項2】
前記仮想I/O装置は仮想ATA装置を含み、前記仮想I/Oコントローラは仮想ATAコントローラを含み、前記物理I/O装置はATA装置を含む請求項1に記載のコンピュータシステム。
【請求項3】
前記仮想I/O装置は仮想SCSI装置を含み、前記仮想I/Oコントローラは仮想SCSIコントローラを含み、前記物理I/O装置はSCSI装置を含む請求項1に記載のコンピュータシステム。
【請求項4】
前記仮想I/O装置は仮想USB装置を含み、前記仮想I/Oコントローラは仮想USBコントローラを含み、前記物理I/O装置はUSB装置を含む請求項1に記載のコンピュータシステム。
【請求項5】
前記オペレーティングシステムが利用する第1の部分と、前記オペレーティングシステムおよび前記部分仮想マシンがデータを共有するための第2の部分と、前記部分仮想マシンが利用する第3の部分とにパーティション化されているメモリをさらに備え、
前記第3の部分は、前記オペレーティングシステムから隠されている請求項1に記載のコンピュータシステム。
【請求項6】
前記物理I/O装置は、前記オペレーティングシステムから隠されている請求項1に記載のコンピュータシステム。
【請求項7】
前記部分仮想マシンは、OSに依存しない請求項1に記載のコンピュータシステム。
【請求項8】
オペレーティングシステムおよびプロセッサパッケージを備えるコンピュータシステムにおいて、物理I/O装置に対応する仮想I/O装置を提供する方法であって、
仮想I/Oコントローラを含む前記仮想I/O装置を部分仮想マシンによってインスタンス化する段階と、
前記部分仮想マシンのI/Oポートトラップ部によって、前記オペレーティングシステムから前記仮想I/O装置に対するI/O要求を捕捉する段階と、
前記I/O要求が前記仮想I/OコントローラへのI/O制御要求を含む場合に、前記部分仮想マシンのI/Oコントローラエミュレータ部によって前記I/O制御要求を処理する段階と、
前記I/O要求がI/Oアクセス要求を含む場合に、前記部分仮想マシンのI/O装置エミュレータ部によって前記I/Oアクセス要求を処理する段階と
を備え、
前記部分仮想マシンは、前記プロセッサパッケージにおいてセキュアエンクレーブセッションにおいて実行されているので、前記オペレーティングシステムによる前記部分仮想マシンへのアクセスが抑制され、
前記I/O装置エミュレータ部は前記物理I/O装置に対応付けられている前記部分仮想マシンの装置ドライバと通信して、前記I/Oアクセス要求を実行する
方法。
【請求項9】
前記仮想I/O装置は仮想ATA装置を含み、前記仮想I/Oコントローラは仮想ATAコントローラを含み、前記物理I/O装置はATA装置を含む請求項8に記載の方法。
【請求項10】
前記仮想I/O装置は仮想SCSI装置を含み、前記仮想I/Oコントローラは仮想SCSIコントローラを含み、前記物理I/O装置はSCSI装置を含む請求項8に記載の方法。
【請求項11】
前記仮想I/O装置は仮想USB装置を含み、前記仮想I/Oコントローラは仮想USBコントローラを含み、前記物理I/O装置はUSB装置を含む請求項8に記載の方法。
【請求項12】
前記コンピュータシステムは、前記オペレーティングシステムが利用する第1の部分と、前記オペレーティングシステムおよび前記部分仮想マシンがデータを共有するための第2の部分と、前記部分仮想マシンが利用する第3の部分とにパーティション化されているメモリを備え、
前記第3の部分は、前記オペレーティングシステムから隠されている請求項8に記載の方法。
【請求項13】
前記部分仮想マシンによって前記オペレーティングシステムから前記物理I/O装置を隠す段階をさらに備える請求項8に記載の方法。
【請求項14】
前記部分仮想マシンは、OSに依存しない請求項8に記載の方法。
【請求項15】
前記I/O要求を捕捉した後で前記部分仮想マシンによってセキュアエンクレーブセッションを開始して、前記I/O要求を処理した後で前記オペレーティングシステムに制御を戻す前に前記部分仮想マシンによって前記セキュアエンクレーブセッションを終了する段階をさらに備える請求項8に記載の方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate


【公開番号】特開2012−9013(P2012−9013A)
【公開日】平成24年1月12日(2012.1.12)
【国際特許分類】
【外国語出願】
【出願番号】特願2011−108146(P2011−108146)
【出願日】平成23年5月13日(2011.5.13)
【出願人】(591003943)インテル・コーポレーション (1,101)
【Fターム(参考)】