(57)【要約】      （修正有）【課題】物理的デバイスコントローラの仮想化をサポートするべくトランザクションをインジェクトする装置、方法を提供する。【解決手段】装置はプロセッサ、システムメモリ、物理的デバイスコントローラ、および仮想化エージェントを備える。物理的デバイスコントローラは、プロセッサにインストールされた仮想マシンモニタが作成する複数の仮想マシンによって共有される。仮想化エージェントは、第１インタフェースを介してシステムメモリに結合し、第２インタフェースを介して物理的デバイスコントローラに結合し、物理的デバイスコントローラを複数の仮想マシンへ割り当て可能な複数の仮想デバイスコントローラとして表現し、複数の仮想デバイスコントローラを代表して第１インタフェースおよび第２インタフェースへトランザクションをインジェクトする。【選択図】図１
2010218539.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサと、
システムメモリと、
前記プロセッサにインストールされたＶＭＭ（仮想マシンモニタ）が作成した、複数の仮想マシンによって共有される物理的デバイスコントローラと、
第１インタフェースを介して前記システムメモリに結合し、第２インタフェースを介して前記物理的デバイスコントローラに結合し、前記物理的デバイスコントローラを前記複数の仮想マシンへ割り当て可能な複数の仮想デバイスコントローラとして表現し、前記複数の仮想デバイスコントローラの代わりに前記第１インタフェースおよび前記第２インタフェースへトランザクションをインジェクトする、仮想化エージェントと
を備える装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本願の開示は、情報処理分野に関する。特に、情報処理システムにおける仮想化分野に関する。
【背景技術】
【０００２】
一般的に、情報処理システムにおける仮想化の概念は、各オペレーションシステム（ＯＳ）がシステムおよびそのリソースを完全かつ直接に制御するように設計されている場合であっても、１つ以上のオペレーティングシステム（ＯＳ）の複数のインスタンスが、単一の情報処理システム上で実行することを可能にする。通常、仮想化はソフトウェア（例えば、ｖｉｒｔｕａｌ  ｍａｃｈｉｎｅ  ｍｏｎｉｔｏｒまたは「ＶＭＭ」）を用いて実装し、あるＯＳが完全かつ直接に制御できる、１つ以上の仮想プロセッサを含む仮想リソースを有する、「仮想マシン」（「ＶＭ」）を各ＯＳに提示する。一方で、ＶＭＭは、複数のＶＭ間における物理的リソースの共有および／または割り当てなどの仮想化ポリシーを実装するシステム環境（「仮想化環境」）を維持する。各ＯＳ、およびＶＭ上で動作するその他のソフトウェアは、「ゲスト」あるいは「ゲストソフトウェア」と呼ばれ、ＶＭＭなどの仮想化環境外で動作するソフトウェアは、「ホスト」あるいは「ホストソフトウェア」と呼ばれる。
【０００３】
情報処理システムの物理的なプロセッサは、仮想化をサポートしてよい。例えば、仮想化環境に入る命令をサポートし、ＶＭの仮想プロセッサ（例えばＶＭＭが強制する制約下にある物理的プロセッサ）上でゲストを実行してよい。仮想化環境においては、外部インタラプト、あるいは制限されたレジスタまたはリソースへのアクセスの試行などの、特定のイベント、操作、および状況がインターセプトされてよい。つまり、プロセッサを仮想環境から出し、例えば、仮想化ポリシーを実装できるようにＶＭＭを動作させてよい。
【０００４】
システム内のＩ／Ｏデバイスコントローラなどの物理的リソースは、１つのＶＭに専用に割り当てあるいは割り振られてよい。また代わりに、１つの物理的リソースは、ＶＭＭが関連リソースの全てのトランザクションをインターセプトして各トランザクションを実行、転送、または制限することにより、複数のＶＭで共有してよい。さらに、第３のアプローチとして、物理的リソースを設計し、複数の仮想リソースとして使用され得る機能を有するようにしてもよい。
【図面の簡単な説明】
【０００５】
本発明を添付図面に例示的に図示するが、これらは本発明を限定するものではない。
【０００６】
【図１】本発明のある実施形態による、トランザクションをインジェクトする装置を示す。
【０００７】
【図２】本発明のある実施形態による、トランザクションをインジェクトする方法を示す。
【発明を実施するための形態】
【０００８】
以下に説明するように、本発明は、トランザクションをインジェクトし、物理的デバイスコントローラの仮想化をサポートする装置または方法で具体化されてよい。ここでは、本発明の理解を促進すべく、コンポーネントおよびシステム構成などの様々な具体的な詳細を示す。しかしながら、本発明がそのような具体的な詳細を必要とすることなく実施可能であることは、当業者にとって明らかである。また、本発明の説明を明確にするべく、公知の構造、回路などは詳細に示さない。
【０００９】
ＶＭＭがデバイスコントローラに関連する全てのトランザクションをインターセプト、あるいは仮想化をサポートするべくデバイスコントローラを再設計することなく、複数のＶＭが単一の物理的デバイスコントローラを共有することが好ましい。従って、本発明の実施形態は、物理的デバイスコントローラに関連するトランザクションをトラップし、仮想デバイスコントローラを代表してトランザクションをインジェクトすることで、単一の物理的デバイスコントローラを複数の仮想デバイスコントローラとして表現することをサポートしてよい。
【００１０】
本発明の実施形態の要素は、ハードウェア、ソフトウェア、ファームウェア、あるいはハードウェア、ソフトウェア、またはファームウェアのあらゆる組み合わせで実装してよい。ハードウェアとは一般的に、電子的、電磁的、光学的、電気光学的、機械的、電気機械的部品などの物理的構造を有する要素を示す。ソフトウェアとは一般的に、方法、手順、プログラム、ルーチン、プロセス、アルゴリズム、公式、表現などの論理的構造を示す。ファームウェアとは一般的に、ハードウェア構造（例えば、フラッシュメモリまたは読み出し専用メモリ）内で実装あるいは具体化される方法、手順、プログラム、ルーチン、プロセス、アルゴリズム、公式または表現を示す。ファームウェアの例としては、マイクロコード、ライタブルコントロールストア、マイクロプログラムドストラクチャがある。
【００１１】
図１は、本発明のある実施形態によってトランザクションがインジェクトされてよい情報処理システム１００を示す。情報処理システム１００は、ベアプラットフォームハードウェア１１０を備える。ベアプラットフォームハードウェアは、あらゆるＯＳ、ＶＭＭまたはその他のソフトウェアを実行可能な、あらゆる装置であってよい。例えば、ベアプラットフォームハードウェア１１０は、パーソナルコンピュータ、メインフレームコンピュータ、ポータブルコンピュータ、携帯デバイス、セットトップボックス、サーバまたはその他のコンピューティングシステムのハードウェアであってよい。本実施形態では、ベアプラットフォームハードウェア１１０は、プロセッサ１２０、チップセット１３０、システムメモリ１４０およびデバイスコントローラ１５０を備える。
【００１２】
プロセッサ１２０は、１つ以上の実行コアを有するコンポーネントであってよく、各実行コアは、あらゆる種類の異なるプロセッサをベースとしてよい。これらのプロセッサは、Ｉｎｔｅｌ（登録商標）Ｐｅｎｔｉｕｍ（登録商標）Ｐｒｏｃｅｓｓｏｒ  Ｆａｍｉｌｙ、Ｉｔａｎｉｕｍ（登録商標）Ｐｒｏｃｅｓｓｏｒ  ＦａｍｉｌｙまたはＩｎｔｅｌ（登録商標）Ｃｏｒｐｏｒａｔｉｏｎのプロセッサファミリのプロセッサ、またはその他の企業の他のプロセッサ、あるいはデジタルシグナルプロセッサ、またはマイクロコントローラなどの汎用プロセッサを含んでよい。図１は、このようなプロセッサ１２０を１つだけ示すが、ベアプロセッシングハードウェア１１０は、任意の数のプロセッサを有してよく、それぞれが任意の数の実行コアを持つ任意の数のマルチコアプロセッサ、およびそれぞれが任意の数のスレッドを持つ任意の数のマルチスレッドプロセッサを含んでよい。
【００１３】
チップセット１３０は、メモリ動作、Ｉ／Ｏ動作、構成、制御、内部または外部インタフェース接続、あるいは通信機能（例、「グルー」ロジックおよびバスブリッジ）、および／または、プロセッサ１２０および／またはシステム１００のあらゆる類似機能をサポートする、回路およびロジックのあらゆるグループであってよい。チップセット１３０の個々の要素は、単一チップまたはチップペアにグループ化、または複数のチップに分散、および／または部分的、全体的、冗長的、あるいは分散アプローチに従ってプロセッサ１２０を含む１つ以上のプロセッサに統合されてよい。以下の説明のように、ある実施形態におけるチップセット１３０は、本発明の実施形態によってトランザクションをインジェクトする仮想化ロジック１３２を含む。また別の実施形態では、仮想化ロジック１３２をシステム１００内の別の場所に設けてもよい。
【００１４】
システムメモリ１４０は、データおよび／または命令などの情報を格納可能な、あらゆる媒体を含んでよい。これには、静的または動的ランダムアクセスメモリ、半導体ベースの読み取り専用メモリまたはフラッシュメモリ、磁気または光ディスクメモリ、またはプロセッサ１２０で読み取り可能なあらゆる種類の媒体、あるいはこのような媒体のあらゆる組み合わせなどがある。
【００１５】
デバイスコントローラ１５０は、あらゆる種類のＩ／Ｏ、周辺装置、またはＶＭで実行するゲストソフトウェアが用いるその他のデバイスのコントローラを表現してよい。これには、ハードディスクコントローラ、オーディオコントローラ、ネットワークインタフェースコントローラ、周辺装置用バスコントローラなどがある。デバイスコントローラ１５０は、個別のコンポーネントで具体化されてよく、あるいは統合コンポーネントにその他のデバイスコントローラと共に含まれてもよい。ある実施形態では、デバイスコントローラ１５０は、マルチ機能Ｉ／Ｏ、周辺装置またはその他のデバイスコントローラの１機能を表現してよい。デバイスコントローラ１５０は、構成情報を格納する構成ストレージ１５２を含んでよい。
【００１６】
プロセッサ１２０、チップセット１３０、システムメモリ１４０及びデバイスコントローラ１５０は、１つ以上の並行、シーケンシャル、パイプライン、非同期、同期、有線、無線、またはその他のバスあるいはポイントツーポイント接続、あるいは通信手段などの公知のアプローチに従って、直接的または間接的に、互いに結合または通信してよい。例えば、この実施形態では、プロセッサ１２０及びチップセット１３０は、インタフェース１７０を介してシステムメモリ１４０に結合してよく、チップセット１３０は、インタフェース１８０を介してデバイスコントローラ１５０に結合してよい。システム１００は、任意の数のその他のエージェント、コンポーネント、または接続を含んでもよい。
【００１７】
システム１００は、ＶＭＭ１６０、ＶＭ１６２および１６４も含む。ＶＭＭ１６０は、ベアプラットフォームハードウェア１１０にインストールされ実行される、ベアプラットフォームハードウェアにアクセス可能な、あらゆるソフトウェア、ファームウェアまたはハードウェアホストである。ＶＭＭは、ゲストにＶＭ（例、ベアプラットフォームハードウェア１１０のアブストラクションを提示、あるいはＶＭを作成および管理し、システム１００内の仮想化ポリシーを実装する。また、別の実施形態では、ホストは、あらゆるＶＭＭ、ハイパーバイザー、ＯＳまたはその他のソフトウェア、ファームウェア、あるいはベアプラットフォームハードウェア１１０を制御可能なハードウェアであってよい。ゲストは、あらゆるＯＳ、ＶＭＭ１６０の別のインスタンスを含むＶＭＭ、ハイパーバイザー、あるいはアプリケーションまたはその他のソフトウェアであってよい。
【００１８】
各ゲストは、プロセッサ及びＶＭに提示されたプラットフォームのアーキテクチャに従って、ベアプラットフォームハードウェア１１０あるいはＶＭＭ１６０が仮想化したプラットフォームのプロセッサおよびプラットフォームレジスタ、メモリ、およびＩ／Ｏデバイスなどのリソースへアクセスする。図１には、それぞれにゲストＯＳ及び任意の数のゲストアプリケーションがインストールされた２つのＶＭ１６２および１６４がある。図１ではＶＭを２つ示すが、任意の数のＶＭが作成されてよい。また、本発明の範囲内で、各ＶＭにインストールされ、実行されるゲストＯＳ及びゲストアプリケーションの数は任意である。
【００１９】
チップセット１３０の仮想化ロジック１３２は、あらゆる回路、ロジック、またはファームウェアなどのその他の構造を含み、ＶＭＭ１６０が、物理的デバイスコントローラ１５０をそれぞれ別のＶＭへ割り当てることができる複数の仮想デバイスコントローラとして表現してよい。チップセット１３０は、構成ストレージ１３４及びデータストレージ１３６も含む。構成ストレージ１３４及びデータストレージ１３６は、情報を格納可能なあらゆる媒体を含んでよい。例えば、構成ストレージ１３４は、プログラム可能なレジスタを含んでよく、データストレージ１３６は、静的ランダムアクセスメモリを含んでよい。仮想化ロジック１３２は、構成ストレージ１３４および／またはデータストレージ１３６から情報を読み取りあるいは情報を書き出し、インタフェース１７０および１８０のトランザクションのトラップおよびインジェクトのステータスに関する情報を判断し、維持する。
【００２０】
チップセット１３０は、システムメモリ１４０向けのトランザクションをインタフェース１８０で受け取り、物理的デバイスコントローラ１５０向けのトランザクションをインタフェース１７０で受け取ってよい。トランザクションが目的とするターゲットは、アドレスフィールドの内容など、トランザクションが伝達する情報に示されてよい。だたし、トランザクションは、デバイスコントローラ１５０の仮想化をサポートするべく、仮想化ロジック１３２によりトラップされてよい。トランザクションのトラップにあたり、仮想化ロジック１３２は、物理的デバイスコントローラ１５０に関連または使用されるアドレスまたは識別子を翻訳、あるいは物理的デバイスコントローラ１５０からアブストラクトされた仮想デバイスコントローラの１つに関連または使用されるアドレスまたは識別子にマッピングしてよい。仮想化ロジック１３２は、トラップしたトランザクションに関するその他の処理を実行してよい。翻訳、マッピングまたはその他の処理情報は、構成ストレージ１３４またはデータストレージ１３６に格納されてよい。その後、仮想化ロジック１３２は、インタフェース１７０またはインタフェース１８０のいずれかでエージェントとして機能し、その仮想デバイスコントローラを代表して新たなトランザクションを開始またはインジェクトしてよい。
【００２１】
例えば、ある実施形態では、物理的デバイスコントローラ１５０がＰＣＩ−Ｅｘｐｒｅｓｓ（Ｐｅｒｉｐｈｅｒａｌ  ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｐｒｅｓｓ）バスを介してチップセット１３０に結合しており、トランザクションヘッダは、システム構成ソフトウェアまたはファームウェアが物理的デバイスコントローラ１５０に割り当てた、バス番号、デバイス番号、および機能番号の一意の識別子（ＢＤＦ）を含んでよい。仮想化ロジック１３２は、物理的デバイスコントローラ１５０からアブストラクトされた各仮想デバイスコントローラに異なるＢＤＦを用いることで、物理的デバイスコントローラ１５０のＢＤＦを有するトランザクションをトラップし、対応する仮想デバイスコントローラのＢＤＦを有するトランザクションをインジェクト、あるいはこの逆を行ってよい。
【００２２】
図２は、本発明のある実施形態による、トランザクションをインジェクトする方法２００を示す。図２の方法の実施形態の説明では、図１のシステムの実施形態の要素を参照する場合があるが、本発明の方法の実施形態は、この点において限定されない。
【００２３】
ボックス２１０では、インタフェース１７０にイニシエートされた物理的デバイスコントローラ１５０向けのトランザクションと、インタフェース１８０にイニシエートされた物理的デバイスコントローラ１５０からのトランザクションとをトラップするよう、仮想化ロジック１３２を構成する。ある実施形態では、仮想化ロジック１３２は、構成ストレージ１３４内にベースアドレス、またはトラップするトランザクションを識別するその他の識別子をプログラムできる場所を含んでよい。
【００２４】
ボックス２２０では、仮想化ロジック１３２が、物理的デバイスコントローラ１５０を表現する仮想デバイスコントローラ向けのインタフェース１７０での第１トランザクションを認識する。ボックス２２２では、仮想化ロジックが、第１トランザクションをトラップし、物理的デバイスコントローラ１５０が受信するべくインタフェース１８０へ転送しない。ボックス２２４では、仮想化ロジック１３２が、物理的デバイスコントローラ１５０の仮想化に関する翻訳またはその他の処理を行う。ボックス２２６では、仮想化ロジック１３２が物理的デバイスコントローラ１５０向けの第２トランザクションをインタフェース１８０へインジェクトする。第２トランザクションは、翻訳済み、あるいは処理済みの第１トランザクションからの情報、メッセージ、またはリクエストを物理的デバイスコントローラ１５０へ伝達するが、物理的デバイスコントローラ１５０の仮想化に関与する翻訳またはその他の処理は、仮想化ロジックによって実行済みである。
【００２５】
ボックス２３０では、仮想化ロジック１３２が、物理的デバイスコントローラ１５０がイニシエートした第３トランザクションをインタフェース１８０で認識する。ボックス２３２では、仮想化ロジック１３２が、第３トランザクションをトラップし、インタフェース１７０へは転送しない。ボックス２３４では、仮想化ロジック１３２が、物理的デバイスコントローラ１５０の仮想化に関する翻訳またはその他の処理を行う。ボックス２３６では、仮想化ロジックが、物理的デバイスコントローラ１５０に対応する仮想デバイスコントローラを代表して第４トランザクションをインタフェース１７０へインジェクトする。第４トランザクションは、物理的デバイスコントローラ１５０からの、翻訳済み、あるいは処理済みの第３トランザクションからの情報、メッセージ、またはリクエストを伝達するが、物理的デバイスコントローラ１５０の仮想化に関与する翻訳またはその他の処理は仮想化ロジックによって実行済みである。
【００２６】
本発明の範囲内では、方法２００は図示したボックスを省略、別のボックスを追加、あるいは説明したボックス、省略したボックスまたは追加したボックスの組み合わせによって実行してもよい。
【００２７】
本発明の実施形態によって設計されるコンポーネントあるいはその一部は、作成からシミュレーション、製造までのあらゆる段階において設計されてよい。設計を表すデータは、その設計を様々な形で表現してよい。まず、ハードウェアは、ハードウェア記述言語またはその他の機能的な記述言語で表現されてよい。これは、シミュレーションで有効である。さらに、またはその代わりに、設計プロセスのいくつかの段階では、論理和／積ゲートの回路レベルモデルを作成してよい。またさらに、様々なデバイスの物理的位置を表現するデータでモデリングを行ってよいレベルに設計の多くがいずれかの段階で達する。従来の半導体製造テクニックが用いられる場合、デバイスの位置モデルを表現するデータは、集積回路の作成に用いる異なるマスクレイヤにおける、様々な機能の存在または不在を指定するデータであってよい。
【００２８】
設計のあらゆる表現において、データは、あらゆる形の機械で読み取り可能な媒体に格納されてよい。このような情報を発信する変調、または別の方法で生成された光波または電波、メモリ、あるいはディスクなどの磁気または光ストレージ媒体は、機械で読み取り可能な媒体であってよい。これらのメディアのいずれもが、本発明の実施形態で使用した設計、あるいはその他の情報を伝えたり、示したりしてよい。情報を示す、あるいは伝える電気搬送波が発信されると、複製、バッファ、または再送が実行され、新たな複製が作成される。このため、通信プロバイダあるいはネットワークプロバイダの行為は、物品、例えば本発明のテクニックを具体化する搬送波の複製の作成となる。
【００２９】
以上、物理的デバイスコントローラの仮想化をサポートするトランザクションをインジェクトする装置、方法、およびシステムを開示した。特定の実施形態を説明し、添付図面に示したが、これらの実施形態は単に例示的であり広義の発明を限定しないことは明らかである。また、本開示を読んだ当業者は、様々な変更を想到し得ることから、図示および説明された特定の構成に本発明が限定されないことが明らかである。成長が著しく、更なる進歩の予測が難しい本技術的分野においては、本開示の原理または添付の請求項の範囲から逸脱することなく、実現技術の進歩によって、開示した実施形態の設定と詳細とを容易に変更可能である。
【図１】
2010218539.tif 000003
【図２】
2010218539.tif 000004
【外国語明細書】
2010218539.tif 000005
2010218539.tif 000006
2010218539.tif 000007
2010218539.tif 000008
2010218539.tif 000009
2010218539.tif 000010
2010218539.tif 000011
2010218539.tif 000012
2010218539.tif 000013
2010218539.tif 000014
2010218539.tif 000015
2010218539.tif 000016