(57)【要約】【課題】Ｉ／Ｏデバイスからリマッピング・エンジン１１４，１１６に受け取られたＤＭＡリクエストおよび割り込みリクエストのワークロードに不均衡が生じた場合に、ＤＭＡリマッピング・ロジック１０２は、リマッピング・エンジン１１４，１１６間のワークロードの均衡を図る。【解決手段】デバイス、システムおよび方法が開示される。一実施例では、デバイスは、第１のリマッピング・エンジンによってトランスレーションされるトラフィックの第１の量をモニタすることができるリマッピング・エンジン再配分ロジックを含む。トラフィックの第１の量が第１のリマッピング・エンジンのしきい値に達すれば、その後ロジックは、第２のリマッピング・エンジンによってトランスレーションされるトラフィックの一部を転換する。【選択図】図１
2010157234.tif 000002
【特許請求の範囲】
【請求項１】
第１のリマッピング・エンジンによってトランスレーションされる第１のトラフィック量をモニタし、かつ
前記第１のトラフィック量が第１のリマッピング・エンジンのトラフィックしきい値に達する場合、第２のリマッピング・エンジンによってトランスレーションされるために前記第１のトラフィック量の一部を転換する、
ためのリマッピング・エンジン再配分ロジック、
を含むことを特徴とするデバイス。
【請求項２】
前記リマッピング・エンジン再配分ロジックは、
前記第１のトラフィック量の前記一部を転換するに先立って、利用可能なトランスレーション能力の量を決定するために、前記第２のリマッピング・エンジンを質問し、かつ
前記利用可能なトランスレーション能力の量が転換される前記第１のトラフィック量の前記一部をサービスすることができる場合、前記転換を許可する、
ためにさらに操作可能であることを特徴とする請求項１記載のデバイス。
【請求項３】
前記リマッピング・エンジン再配分ロジックは、
前記第１および第２のリマッピング・エンジンの前記能力を決定し、かつ
各エンジンが各エンジンの最大能力に対してほぼ同じパーセンテージのトラフィックを有するように、前記第１のトラフィック量の一部を前記第１および第２のリマッピング・エンジンへそれぞれ配分する、
ためにさらに操作可能であることを特徴とする請求項２記載のデバイス。
【請求項４】
前記リマッピング・エンジン再配分ロジックは、
前記第１のトラフィック量の一部を１またはそれ以上の追加のリマッピング・エンジンへ転換するためにさらに操作可能であり、前記１、第２、および１またはそれ以上の追加のリマッピング・エンジンは、各々、各エンジンの最大能力に対してほぼ同じパーセンテージのトラフィックを有する、
ことを特徴とする請求項３記載のデバイス。
【請求項５】
前記第１のトラフィック量は、少なくとも第１のデバイスおよび第２のデバイスからのトラフィックを含むことを特徴とする請求項１記載のデバイス。
【請求項６】
前記第２のリマッピング・エンジンに転換された前記第１のトラフィック量の前記一部は、少なくとも前記第２のデバイスからの少なくとも前記トラフィックを含むことを特徴とする請求項５記載のデバイス。
【請求項７】
前記リマッピング・エンジン再配分ロジックは、
前記第１のリマッピング・エンジンおよび前記第２のリマッピング・エンジンによってトランスレーションされる前記第１のトラフィック量をモニタし、かつ
前記第１のトラフィック量が前記第１のトラフィックしきい値より下に戻ると、前記第２のリマッピング・エンジンによってトランスレーションされるために前記第１のトラフィック量の前記一部を前記第１のリマッピング・エンジンに転換する、
ためにさらに操作可能であることを特徴とする請求項１記載のデバイス。
【請求項８】
前記リマッピング・エンジン再配分ロジックは、
前記第２のリマッピング・エンジンによってトランスレーションされている前記第１のトラフィック量の前記一部が前記第１のリマッピング・エンジンに転換された後、第２のリマッピング・エンジンがシャット・ダウンすることができるパワー・マネジメント・ロジックと通信する、
ためにさらに操作可能であることを特徴とする請求項７記載のデバイス。
【請求項９】
第１のデバイスおよび第２のデバイスと、
第１のリマッピング・エンジンおよび第２のリマッピング・エンジンであって、各リマッピング・エンジンは、前記第１および第２のデバイスの両方に結合される、第１および第２のリマッピング・エンジンと、
前記第１および第２のリマッピング・エンジンの両方に結合されたリマッピング・エンジン再配分ロジックであって、
第１のリマッピング・エンジンによってトランスレーションされる第１のトラフィック量をモニタし、かつ
前記第１のトラフィック量が第１のリマッピング・エンジンのトラフィックしきい値に達する場合、第２のリマッピング・エンジンによってトランスレーションされる前記第１のトラフィック量の一部を転換する、
ためのリマッピング・エンジン再配分ロジックと、
を含むことを特徴とするシステム。
【請求項１０】
前記リマッピング・エンジン再配分ロジックは、
前記第１のトラフィック量の前記一部を転換するに先立って、利用可能なトランスレーション能力の量を決定するために、前記第２のリマッピング・エンジンを質問し、かつ
前記利用可能なトランスレーション能力の量が転換される前記第１のトラフィック量の前記一部をサービスすることができる場合、前記転換を許可する、
ためにさらに操作可能であることを特徴とする請求項９記載のシステム。
【請求項１１】
前記リマッピング・エンジン再配分ロジックは、
前記第１および第２のリマッピング・エンジンの前記能力を決定し、かつ
各エンジンが各エンジンの最大能力に対してほぼ同じパーセンテージのトラフィックを有するように、前記第１のトラフィック量の一部を前記第１および第２のリマッピング・エンジンへそれぞれ配分する、
ためにさらに操作可能であることを特徴とする請求項１０記載のシステム。
【請求項１２】
前記リマッピング・エンジン再配分ロジックは、
前記第１のトラフィック量の一部を１またはそれ以上の追加のリマッピング・エンジンへ転換するためにさらに操作可能であり、前記１、第２、および１またはそれ以上の追加のリマッピング・エンジンは、各々、各エンジンの最大能力に対してほぼ同じパーセンテージのトラフィックを有する、
ことを特徴とする請求項１１記載のシステム。
【請求項１３】
前記第１のトラフィック量は、少なくとも第１のデバイスおよび第２のデバイスからのトラフィックを含むことを特徴とする請求項９記載のシステム。
【請求項１４】
前記第２のリマッピング・エンジンに転換された前記第１のトラフィック量の前記一部は、少なくとも前記第２のデバイスからの少なくとも前記トラフィックを含むことを特徴とする請求項１３記載のシステム。
【請求項１５】
前記リマッピング・エンジン再配分ロジックは、
前記第１のリマッピング・エンジンおよび前記第２のリマッピング・エンジンによってトランスレーションされる前記第１のトラフィック量をモニタし、かつ
前記第１のトラフィック量が前記第１のトラフィックしきい値より下に戻ると、前記第２のリマッピング・エンジンによってトランスレーションされるために前記第１のトラフィック量の前記一部を前記第１のリマッピング・エンジンに転換する、
ためにさらに操作可能であることを特徴とする請求項９記載のシステム。
【請求項１６】
前記第１および第２のリマッピング・エンジンの少なくとも各々に送られるパワーを管理するパワー・マネジメント・ロジックを含み、
前記リマッピング・エンジン再配分ロジックは、前記第２のリマッピング・エンジンによってトランスレーションされている前記第１のトラフィック量の前記一部が前記第１のリマッピング・エンジンに転換された後、前記第２のリマッピング・エンジンに送られるパワーの量を少なくとも低くするために前記パワー・マネジメント・ロジックとさらに通信することができる、
ことを特徴とする請求項１５記載のシステム。
【請求項１７】
第１のリマッピング・エンジンによってトランスレーションされる第１のトラフィック量をモニタする段階と、
前記第１のトラフィック量が第１のリマッピング・エンジンのトラフィックしきい値に達する場合、第２のリマッピング・エンジンによってトランスレーションされるために前記第１のトラフィック量の一部を転換する段階と、
を含むことを特徴とする方法。
【請求項１８】
前記第１のトラフィック量の前記一部を転換するに先立って、利用可能なトランスレーション能力の量を決定するために、前記第２のリマッピング・エンジンを質問する段階と、
前記利用可能なトランスレーション能力の量が転換される前記第１のトラフィック量の前記一部をサービスすることができる場合、前記転換を許可する、
ためにさらに操作可能であることを特徴とするの前記一部をサービスすることができる場合に、前記転換を許可する段階と、
を含むことを特徴とする請求項１７記載の方法。
【請求項１９】
前記リマッピング・エンジン再配分ロジックは、
前記第１および第２のリマッピング・エンジンの前記能力を決定し、かつ
各エンジンが各エンジンの最大能力に対してほぼ同じパーセンテージのトラフィックを有するように、前記第１のトラフィック量の一部を前記第１および第２のリマッピング・エンジンへそれぞれ配分する、
ためにさらに操作可能であることを特徴とする請求項１８記載の方法。
【請求項２０】
前記第１のトラフィック量の一部を１またはそれ以上の追加のリマッピング・エンジンへ転換する段階をさらに有し、前記１、第２、および１またはそれ以上の追加のリマッピング・エンジンは、各々、各エンジンの最大能力に対してほぼ同じパーセンテージのトラフィックを有することを特徴とする請求項１９記載の方法。
【請求項２１】
前記第１のトラフィック量は、少なくとも第１のデバイスおよび第２のデバイスからのトラフィックを含むことを特徴とする請求項１７記載の方法。
【請求項２２】
前記第２のリマッピング・エンジンに転換された前記第１のトラフィック量の前記一部は、少なくとも前記第２のデバイスからの少なくとも前記トラフィックを含むことを特徴とする請求項２１記載の方法。
【請求項２３】
前記第１のリマッピング・エンジンおよび前記第２のリマッピング・エンジンによってトランスレーションされる前記第１のトラフィック量をモニタする段階と、
前記第１のトラフィック量が前記第１のトラフィックしきい値より下に戻ると、前記第２のリマッピング・エンジンによってトランスレーションされている前記第１のトラフィック量の前記一部を前記第１のリマッピング・エンジンに転換する段階と、
をさらに含むことを特徴とする請求項１７記載の方法。
【請求項２４】
前記第２のリマッピング・エンジンによってトランスレーションされている前記第１のトラフィック量の前記一部が前記第１のリマッピング・エンジンに転換された後、第２のリマッピング・エンジンがシャット・ダウンすることができるパワー・マネジメント・ロジックと通信する段階をさらに含むことを特徴とする請求項２３記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想化を実行するコンピュータ・プラットフォーム内でのリマッピング・エンジンのトランスレーションに関する。
【背景技術】
【０００２】
多くのコンピュータ・プラットフォームは、より効率的にリソース（資源）を管理し優先付けをするための仮想化を使用する。入力／出力（Ｉ／Ｏ）デバイスも同様に仮想化による恩恵を得ることができる。インテル（登録商標）社は、ダイレクトＩ／Ｏ（ＶＴ−ｄ）仕様（修正１．０，２００８年９月）用のバーチャライゼーション・テクノロジーを世に出したが、その仕様は、仮想化環境中でダイレクト・メモリ・アクセス（ＤＭＡ）可能なＩ／Ｏデバイスを利用する実行詳細について記述する。
【０００３】
Ｉ／Ｏデバイスから受け取られたＤＭＡリクエストおよび割り込みリクエスト中の仮想アドレスを物理メモリ・アドレスに効率的にトランスレーション（変換）するために、リマッピング・エンジンと呼ばれるトランスレーションを実行するロジックが開発された。与えられたコンピュータ・プラットフォームは、いくつかのリマッピング・エンジンを有する。ＶＴ−ｄ仕様によって、プラットフォーム・コンポーネント・インターコネクト（ＰＣＩ）またはＰＣＩエキスプレス・デバイスのような与えられたＩ／Ｏデバイスは、単一のリマッピング・エンジンの支配下になることができる。リマッピング・エンジンへのデバイスのこのマッピングは、ハードウェアのデザイン時に作られ、コンピュータ・プラットフォームのデザイン特性となる。
【０００４】
Ｉ／Ｏデバイスを単一のリマッピング・エンジンにマッピングすることは、仮想マシン・モニタ（ＶＭＭ）やオペレーティング・システム（ＯＳ）に対して柔軟性を失わせ、劣化した性能を呈する結果となるおそれがある。
【図面の簡単な説明】
【０００５】
本発明は、実施例によって表され、図面によって制限されるものではなく、図面中の類似の参照番号は類似の要素を示す。
【０００６】
【図１】リマッピング・エンジンを再割り付けし、利用可能なリマッピング・エンジン間の全リマッピング負荷を平均化させるシステムおよびデバイスの実施例を示す。
【図２】あるリマッピング・エンジンから別のリマッピング・エンジンにＩ／Ｏデバイスを移動させるプロセスの実施例のフロー図である。
【発明を実施するための形態】
【０００７】
リマッピング・エンジンを再割り付けし、利用可能なリマッピング・エンジン間の全リマッピング負荷を平均化させるデバイス、システム、および方法の実施例を示す。多くのシナリオでは、コンピュータ・プラットフォーム上のプライマリ・リマッピング・エンジンは、特定のマップされたＩ／Ｏデバイス（ＤＭＡまたは割り込みリクエストを通して）によって要求された膨大な量のトランスレーションによりストレスが多くなる。コンピュータ・プラットフォーム内のロジックは、このストレスの多い状況に気づき、現在ストレスのない別のリマッピング・エンジンを見つけることができる。そのロジックは、Ｉ／Ｏデバイスを非ストレス状態の別のリマッピング・エンジンへ移動し、そのプライマリ・リマッピング・エンジンの負担を取り除くことができる。移動が完了すれば、トランスレーションを要求する全ての後続のＤＭＡおよびＩ／Ｏデバイスからの割り込みリクエストは、別のリマッピング・エンジンによってトランスレーションされる。
【０００８】
開示された技術の「１つの実施例」あるいは「一実施例」に対する以下の説明および請求項中の参照は、説明された特定の特徴、構造あるいは特性が開示された技術の少なくとも１つの実施例に含まれることを意味する。このように、本明細書を通して様々な場所に現われる「１つの実施例中」という語句は、必ずしも全てが同じ実施例を参照するものではない。
【０００９】
以下の説明および請求項において、用語「含む」、「から成る」はそれらの派生語とともに、互いに同義語として使用され、扱われることを意図する。加えて、以下の説明および請求項において、用語「結合される」、「接続される」はそれらの派生語とともに、使用される。これらの用語は、互いに同義語として扱われることを意図するものではないことを理解すべきである。むしろ、特定の実施例では、「接続される」は、２またはそれ以上の要素が互いに直接物理的または電気的に接触していることを示すために使用される。「結合される」は、２またはそれ以上の要素が互いに直接物理的または電気的に接触していることを意味する。しかしながら、「結合される」は、さらに２またはそれ以上の要素が互いに直接接触していないが、依然として互いに協動または相互作用を及ぼすことを意味することがある。
【００１０】
図１は、リマッピング・エンジンを再割り付けし、利用可能なリマッピング・エンジン間の全リマッピング負荷を平均化させるシステムおよびデバイスの実施例を示す。リマッピング再割り付けシステムは、１またはそれ以上のプロセッサを含むコンピュータ・プラットフォーム（つまり、コンピュータ・システム）の一部である。プロセッサは、各々１またはそれ以上のコアを有していてもよい。そのプロセッサは、インテル（登録商標）のマイクロプロセッサあるいは異なる実施例中では別の商標マイクロプロセッサであってもよい。図１には、プロセッサはで示されていない。
【００１１】
本システムは、物理的なシステム・メモリ１００を含む。いくつかの実施例では、システム・メモリ１００は、一種のダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）である。例えば、そのシステム・メモリは、一種のダブル・データ・レート（ＤＤＲ）シンクロナスＤＲＡＭである。他の実施例では、そのシステム・メモリは、フラッシュ・メモリのような他のタイプのメモリであってもよい。
【００１２】
本システムは、ダイレクト・メモリ・アクセス（ＤＭＡ）および割り込みリマッピング・ロジック１０２を含む。ＤＭＡおよび割り込みリマッピング・ロジック１０２のような仮想化リマッピング・ロジックは、Ｉ／Ｏデバイス１（１０４）およびＩ／Ｏデバイス２（１０６）のような入出力（Ｉ／Ｏ）デバイスのＤＭＡをＩ／Ｏデバイス１（１０４）用のドメインＡ（１０８）およびＩ／Ｏデバイス２（１０６）用のドメインＢ（１１０）のような予め割り当てられた物理メモリ領域へ制限することにより、システム・メモリ１００の物理的な領域を保護する。リマッピングする・ロジックは、さらにＩ／Ｏデバイスが生成した割り込みを同様にこれらの領域に制限する。ＤＭＡおよび割り込みリマッピング・ロジック１０２は、システム中のプロセッサ、システム中のＩ／Ｏコンプレックス、あるいはほかの場所に位置する。Ｉ／Ｏコンプレックスは、１またはそれ以上のプロセッサから分離したコンピュータ・システム内の集積回路である。Ｉ／Ｏコンプレックスは、プロセッサ／メモリとＩ／Ｏデバイス１（１０４）およびＩ／Ｏデバイス２（１０６）のようなシステム内の１またはそれ以上のＩ／Ｏデバイスとの間で情報の交換を促進させるための１またはそれ以上のＩ／Ｏホスト・コントローラを含んでいてもよい。ある実施例では、ＤＭＡおよび割り込みリマッピング・ロジック１０２は、Ｉ／Ｏコンプレックスへ統合されてもよく、Ｉ／Ｏコンプレックスの他の部分は図１中には示されていない。いくつかの実施例では、多くのシステム−オン−チップの実施例のように、Ｉ／Ｏコンプレックスは、プロセッサに統合され、ＤＭＡおよび割り込みリマッピング・ロジック１０２がＩ／Ｏコンプレックスへ統合されるなら、したがって、それはこれらの実施例中のプロセッサに統合されるであろう。
【００１３】
ＤＭＡおよび割り込みリマッピング・ロジック１０２は、いくつかの実施例中では、コンピュータ・システム内に仮想化環境を許容する仮想マシン・モニタ（ＶＭＭ）によってプログラムされる。他の実施例では、ＤＭＡおよび割り込みリマッピング・ロジック１０２は、オペレーティング・システム（ＯＳ）によってプログラムされてもよい。
【００１４】
多くの実施例では、Ｉ／Ｏデバイス１（１０４）およびＩ／Ｏデバイス２（１０６）は、ＤＭＡ対応および割り込み対応デバイスである。これらの実施例では、ＤＭＡおよび割り込みリマッピング・ロジック１０２は、各到来ＤＭＡリクエストおよびＩ／Ｏデバイスからの割り込みのアドレスをシステム・メモリ１００中の正しい物理メモリにトランスレーションする。多くの実施例中では、ＤＭＡおよび割り込みリマッピング・ロジック１０２は、ＶＭＭまたはＯＳによって提供される情報に基づいて、トランスレーションされた物理アドレスにアクセスする許可をチェックする。
【００１５】
ＤＭＡおよび割り込みリマッピング・ロジック１０２によって、ＶＭＭまたはＯＳは、Ｉ／Ｏデバイス１（１０４）のためのドメインＡ（１０８）およびＩ／Ｏデバイス２（１０６）用のドメインＢ（１１０）のような複数のＤＭＡ保護ドメインを作成することができる。各保護ドメインは、ホスト物理メモリのサブセット（部分集合）を含む、分離された環境である。ＤＭＡおよび割り込みリマッピング・ロジック１０２によって、ＶＭＭまたはＯＳは、１またはそれ以上のＩ／Ｏデバイスを保護ドメインに割り当てることができる。いずれかの所定のＩ／Ｏデバイスがシステム・メモリ１００中のある記憶域へのアクセスを獲得しようとすると、ＤＭＡおよびリマッピング・ロジック１０２は、その特定の保護ドメインへのそのＩ／Ｏデバイスのアクセス許可のためにリマッピング・ページ・テーブル１１２を参照する。アクセスが許される範囲外をＩ／Ｏデバイスがアクセスしようとする場合、ＤＭＡおよびリマッピング・ロジック１０２は、そのアクセスを阻止し、そのフォールトをＶＭＭまたはＯＳに報告する。
【００１６】
多くの実施例では、ＤＭＡおよびリマッピング・ロジック１０２中に統合されたリマッピング・エンジン１（１１４）およびリマッピング・エンジン２（１１６）のような２またはそれ以上のリマッピング・エンジンがある。各リマッピング・エンジンは、１またはそれ以上のＩ／ＯデバイスからのＤＭＡリクエストおよび割り込みを取り扱うためのロジックを含む。リマッピング・エンジンは、一般に、特定のＩ／Ｏデバイスに割り当てられるものとしてスタートする。例えば、リマッピング・エンジン１（１１４）は、Ｉ／Ｏデバイス１（１０４）から受け取られたドメインＡ（１０８）へのＤＭＡリクエストおよび割り込みを取り扱うために割り当てられ、また、リマッピング・エンジン２（１１６）は、Ｉ／Ｏデバイス２（１０６）から受け取られたドメインＢ（１１０）へのＤＭＡリクエストおよび割り込みを取り扱うために割り当てられる。
【００１７】
リマッピング・エンジンは、当初、ＤＭＡリクエストおよび割り込みを特定のＩ／Ｏデバイス用の物理アドレスへトランスレーションするために割り当てられるが、多くの実施例中では、リマッピング再配分ロジック１１８は、観察されたワークロード（仕事量）に応じて、これらの当初の割り当てを各リマッピング・エンジンのために動的に修正する。多くの実施例では、ＤＭＡおよび割り込みリマッピング・ロジック１０２およびリマッピング再配分ロジック１１８の双方は、Ｉ／Ｏ仮想化技術を利用するコンピュータ・プラットフォーム内で利用される。例えば、Ｉ／Ｏデバイス２（１０６）が休止している間、Ｉ／Ｏデバイス１（１０４）が非常に重いＤＭＡリクエストのワークロードを生成することがある。Ｉ／Ｏデバイス１（１０４）からのその重いＤＭＡリクエストのワークロードは、リマッピング・エンジン１（１１４）の能力（ｃａｐａｃｉｔｙ）に負荷をかけ過ぎることになり、それは、リマッピング・エンジン１（１１４）に依存する１またはそれ以上の別のＩ／Ｏデバイス（図示せず）と同様にＩ／Ｏデバイス１（１０４）からのリクエストに対するパッフォーマンス（例えば、応答時間）の低下を引き起こす恐れがある。この例では、リマッピング再配分ロジック１１８は、ワークロードの不一致に気づき、リマッピング・エンジン１（１１４）とそれ以外の未使用リマッピング・エンジン２（１１６）との間でＩ／Ｏデバイス１（１０４）から受け取られたＤＭＡリクエストのワークロードを等しく分割することを決定することができる。このように、リマッピング・エンジン２（１１６）により加えられた能力は、リマッピング・エンジン１（１１４）に要求されるワークロードを軽減し、Ｉ／Ｏデバイス１（１０４）に対するリクエスト応答パッフォーマンスを増加させることができる。
【００１８】
別の例において、逆もまた真なりであり、リマッピング・エンジン２（１１６）がＩ／Ｏデバイス２（１０６）から受け取ったＤＭＡリクエストで過負荷になると、リマッピング再配分ロジック１１８は、受け取った仕事の一部をリマッピング・エンジン１（１１４）へ分割することができる。さらに別の例では、リマッピング・エンジン１（１１４）に最初に割り当てられた第３のＩ／Ｏデバイス（図示せず）は、トランスレーションのために大量の割り込みトラフィックをリマッピング・エンジン１（１１４）に送っている。Ｉ／Ｏデバイス３からのこの割り込みトラフィックは、組み合わされたＩ／Ｏデバイス１，２からのＤＭＡおよび割り込みリクエストの組み合わせより多くのトラフィックとなることがある。この例では、リマッピング再配分ロジック１１８は、Ｉ／Ｏデバイス３からの到来リクエストを取り扱うためにリマッピング・エンジン１（１１４）を残し、リマッピング・エンジン２（１１６）にＩ／Ｏデバイス１（１０４）を再配分することができる。このように、リマッピング・エンジン２（１１６）は、Ｉ／Ｏデバイス１，２の双方のために、到来リクエストをトランスレーションする必要がある。
【００１９】
多くのＤＭＡおよび割り込みトラフィックのシナリオでは、リマッピング再配分ロジック１１８は、あるリマッピング・エンジンから別のリマッピング・エンジンにＤＭＡリクエストを再配分することを試み、受け取ったワークロードを利用可能な全てのリマッピング・エンジン間で均等にする。図１に示されていない多くの実施例では、２を越える全てのリマッピング・エンジンを含むリマッピング・エンジンのプールであってもよい。これらの実施例では、リマッピング再配分ロジック１１８は、プール全体のＤＭＡリクエストの総数を適正にバランスさせるためにプール中の各リマッピング・エンジン間で仕事を再割り当てすることができる。いくつかの実施例では、リマッピング・エンジン１（１１４）のような単一のリマッピング・エンジンがＤＭＡリクエストの仕事を全て行なっているが、その仕事量は特定のリマッピング・エンジンの能力に負担を与えないほどに十分に小さい場合、リマッピング再配分ロジック１１８は、ＤＭＡリクエストのワークロードの一部を再割り当てすることはしない。したがって、いくつかの実施例では、与えられたリマッピング・エンジンのためのワークロードがそのリマッピング・エンジンのリクエストに対するしきい値に達した場合、一般に再配分が実行される。多くの実施例では、ＤＭＡおよび割り込みリマッピング・ロジック１０２およびリマッピング再配分ロジック１１８の双方は、Ｉ／Ｏ仮想化技術を利用するコンピュータ・プラットフォーム中で利用される。
【００２０】
多くの実施例では、そのリクエストに対するしきい値は、与えられた時間期間におけるリクエスト数であり、それはリマッピング・エンジンがパッフォーマンスに劣化なしに取り扱うことのできる限界に等しい。リマッピング・エンジンのパッフォーマンスにおける劣化は、累積していくＤＭＡリクエストのキューによって引き起こされるが、それは、リマッピング・エンジンがリクエストをトランスレーションすることができるより速い速度で、リクエストがリマッピング・エンジンによって受け取られるからである。リマッピング再配分ロジック１１８は、ＤＭＡリクエストの現在のワークロードに対するしきい値を比較するための多くの異なる方法のうちの１つを利用する。例えば、システム・クロック・サイクルにわたるリクエストの比は、しきい値比と比較される。モニタリング・ロジックをリマッピング再配分ロジック１１８に統合し、それが一組のＩ／Ｏデバイスからリクエストを全て受け取り、各リクエストをリマッピング・エンジンに割り当てるようにしてもよい。
【００２１】
多くの実施例では、ＤＭＡリマッピング・ロジック１０２は、ＶＭＭまたはＯＳがリマッピング・エンジン間のＤＭＡリクエストのワークロードを再配分するためのリマッピング再配分ロジック１１８の能力をイネーブルあるいはディセーブルするための１またはそれ以上の制御レジスタを提供する。多くの実施例では、同じ一組のＩ／Ｏデバイスが各々利用可能である場合、リマッピング・エンジンは、等価リマッピング・エンジンと称される。したがって、理論上、第２のリマッピング・エンジンがアイドルである間、第１のリマッピング・エンジンは、一組のＩ／ＯデバイスのためにＤＭＡリクエストのトランスレーションを行なうことができ、その逆もまた真である。Ｉ／Ｏデバイスが、一方のリマッピング・エンジンにアクセス可能であるが、別のリマッピング・エンジンに不能である場合、それらのリマッピング・エンジンは等価とは考えられない。等価リマッピング・エンジンによって、リマッピング再配分ロジック１１８はＤＭＡリクエストのワークロードを等価リマッピング・エンジンと自由に混合しまた結び付けることができる。
【００２２】
リマッピング・エンジン間の等価が１またはそれ以上の命令レジスタを通してＶＭＭまたはＯＳによって可能になる場合、そのとき、ＤＭＡリクエストのトランスレーション過程に参加するために、各リマッピング・エンジンは、積極的に同じ一組のページ・テーブル１１２および他の全てのリマッピングに関連するレジスタを使用する。多くの実施例では、１またはそれ以上の制御レジスタは、制御レジスタ１２０Ａのようなシステム・メモリにあるソフトウェアベースのレジスタである。他の実施例では、１またはそれ以上の制御レジスタは、制御レジスタ１２０ＢのようなＤＭＡリマッピング・ロジック１０２に物理的に位置するハードウェアベースのレジスタである。
【００２３】
多くの実施例では、ＤＭＡリマッピング・ロジック１０２は、インテル（登録商標）ＶＴ−ｄ仕様に定義された現在のＤＲＨＤ（ＤＭＡリマッピング・ハードウェア・ユニット定義）構造に対する拡張版を使用して、２またはそれ以上のリマッピング・エンジン間の等価な関係をＶＭＭまたはＯＳと通信する。
【００２４】
各リマッピング・エンジンは、メモリにＤＲＨＤ構造を有する。例えば、ＤＲＨＤ構造は、システム・メモリ１００のリマッピング・ページ・テーブル／構造１１２部分に位置してもよい。他の実施例では、ＤＲＨＤ構造は、システム・メモリ１００内の別の位置にあってもよい。各リマッピング・エンジンのためのＤＲＨＤ構造は、該リマッピング・エンジンと等価なリマッピング・エンジンのアレイを含み、このアレイは「等価ＤＲＨＤアレイ」と称される。このアレイは、フィールドの集合で、表１に定義される。アレイは、このような等価をＶＭＭまたはＯＳに通信するために使用される。必要とされる時に所定のＩ／Ｏデバイスに主として割り当てられたリマッピング・エンジンに別のリマッピング・エンジンを使用することを決定するのはＶＭＭまたはＯＳ次第である。
【００２５】
表１  等価ＤＲＨＤアレイの構造レイアウト
【表１】
2010157234.tif 000003
いくつかの実施例では、リマッピング再配分ロジック１１８は、各リマッピング・エンジンに対するＤＭＡリクエストのトランスレーションのワークロードをＶＭＭまたはＯＳに報告し、それによって、ＶＭＭまたはＯＳが別のリマッピング・エンジンをイネーブルにし利用するべきかどうかに関して決定することを可能にし、プライマリ・マッピング・エンジンに対するトランスレーションの圧力を軽減するであろう。
【００２６】
ＤＭＡリマッピング・ロジック１０２は、さらにリマッピング・エンジン間でリマッピング・ページ・テーブルを移動することに関し、各リマッピング・エンジンの能力についての情報を通信する。特に、ＶＭＭまたはＯＳがあるリマッピング・エンジンから別のリマッピング・エンジンへＤＭＡおよび割り込みリクエストのためのリマッピング・エントリを移動する決定を一度すると、ソフトウェアベース、あるいはハードウェアベースのページ・テーブル・コピーがある場合がある。
【００２７】
いくつかの実施例では、ＶＭＭまたはＯＳは、新しく再配分されたＩ／Ｏデバイスと関係するページ・テーブルを設定し、次に、そのリマッピング・ページ・テーブルをページ・テーブルの古いリマッピング・エンジン・メモリ・スペースからページ・テーブルの新しいリマッピング・エンジン・メモリ・スペースにコピーする。他の実施例では、ＤＭＡおよび割り込みリマッピング・ロジック１０２は、リマッピング・エンジン・メモリ・スペース間でページ・テーブルを黙ってコピーする。これらのページ・テーブルを黙ってコピーすることのよって、オーバーヘッドがＶＭＭまたはＯＳソフトウェアのレベルから取り除かれ、より低いハードウェア・レベルで行われることを可能にする。これは、ソフトウェアの関与なしに起こってもよい。
【００２８】
一旦ページ・テーブルが古いリマッピング・エンジン・メモリ・スペースから新しいものにコピーされる（つまり、移動する）と、新しいリマッピング・エンジンは、当該Ｉ／Ｏデバイスからの将来のトランスレーションのリクエストすべてをサービスする責任のあるリマッピング・エンジンとなる。古いリマッピング・エンジンは、最早Ｉ／Ｏデバイスに対する責任はなく、そのデバイスから受け取られたＤＭＡまたは割り込みリクエストを最早トランスレーションをしないであろう。
【００２９】
図２は、Ｉ／Ｏデバイスをあるリマッピング・エンジンから別のリマッピング・エンジンに移動するプロセスの実施例のフロー図である。そのプロセスは、ハードウェア、ソフトウェア、あるいはハードウェアとソフトウェアの組み合わせである処理ロジックより実行される。そのプロセスは、ＤＭＡまたは割り込みリクエストをＩ／Ｏデバイスから受け取る処理ロジックによって開始する（処理ブロック２００）。
【００３０】
処理ロジックは、リクエストをサービスするために割り当てられたプライマリ・リマッピング・エンジンが一定期間の間にリクエストのしきい値に達したかどうかを決定する（処理ブロック２０２）。この決定は、実行カウンタ、タイムスタンプ、アルゴリズム、および他の方法を利用し、そのプライマリ・リマッピング・エンジンが１リクエスト当たりのエンジンのトランスレーション応答性を劣化させるのに十分なトランスレーション・リクエストを現在有しているかどうかを決める。
【００３１】
例えば、ＶＭＭまたはＯＳは、直接あるいはリマッピング再配分ロジック１１８を通して各リマッピング・エンジンにポーリングを行い、各リマッピング・エンジンへのリマッピング・トランスレーション圧力の現在の状態を質問する。別の例では、ＤＭＡおよびリマッピング・ロジック１０２は、リマッピング・エンジンの少なくとも１つがそのトランスレーション・リソースに対するトランスレーション圧力あるいは制約を受け始める場合、ＶＭＭまたはＯＳに割込みを掛ける。両方の例において、ＤＭＡおよび割り込みリマッピング・ロジック１０２は、さらにトランスレーション圧力の原因である階層あるいは正確なＩ／Ｏデバイスを含むトランスレーション圧力の正確な性質に関するより多くの詳細な情報を通信する。ＶＭＭまたはＯＳは、Ｉ／Ｏデバイスのトランスレーション・エントリを別の等価リマッピング・エンジンへ移動すべきかどうかを判断する場合、もし必要であれば、どんなパッフォーマンス情報を使用すべきかどうかを決定する。
【００３２】
図２に戻って、リクエストがしきい値に到達していない場合、処理ロジックは、プライマリ・リマッピング・エンジンにＤＭＡまたは割り込みリクエストをトランスレーションさせ、そのプロセスは終了する（処理ブロック２０４）。
【００３３】
そうでなく、リクエストがしきい値に到達している場合、そのとき処理ロジックは、１またはそれ以上の他の等価リマッピング・エンジンのどれが利用可能か、また現在使用されているかあるいは全く使用されないかを決める。これは、追加デバイスのトラフィックに含まれる追加圧力に対処するために与えられたバックアップ・リマッピング・エンジンに十分に余裕のある能力があるかどうかを判断することを含む。
【００３４】
一旦利用可能なバックアップ・リマッピング・エンジンが見つかると、その後、処理ロジックは、そのＩ／Ｏデバイスのためのリマッピング・ページ・テーブルをプライマリ・リマッピング・エンジンからバックアップ・リマッピング・エンジンへ移動する（処理ブロック２０６）。一旦バックアップ・リマッピング・エンジンがリマッピングのために利用することができるＩ／Ｏデバイスのページ・テーブルを受け取ったならば、その後、処理ロジックは、そのＤＭＡまたは割り込みリクエストをバックアップ・リマッピング・エンジンへ転換し、そのプロセスは終了する（処理ブロック２０８）。
【００３５】
多くの実施例中において、一旦利用可能な等価なリマッピング・エンジンがあることを処理ロジックが確認したならば、その後、処理ロジックは、新しいバックアップ・リマッピング・エンジンがプライマリ・リマッピング・エンジンと等価であると考えられることを示すためにハードウェア（図１、１２０Ｂ）中の制御レジスタをプログラムする。
【００３６】
この登録のプログラミングを提供するために、Ｇｌｏｂａｌ  ｃｏｍｍａｎｄ  ｒｅｇｉｓｔｅｒ（インテル（登録商標）ＶＴ−ｄ仕様に現在定義されている）にある現在の予約フィールドをこのコマンド（例えば、Ｅｎａｂｌｅ  ｅｑｕｉｖａｌｅｎｔ  ｒｅｍａｐｐｉｎｇ  ｅｎｇｉｎｅと呼ばれるコマンド）のために再定義することができる。新しいリマッピング・エンジンは、この目的のために別の８バイトのレジスタを通して識別される。表２は、リマッピング・エンジン間の等価性を確認するために実行するグローバルなコマンドおよびステータス・レジスタになされる修正の例を示す。
【００３７】
表２  リマッピング・エンジンの等価性のために利用されるグローバル・コマンドおよびステータス・レジスタ・ビット
【表２】
2010157234.tif 000004
ＶＭＭまたはＯＳは、エンジンＡの範囲にあるすべての現在のデバイスに対して、あるいはリマッピング・エンジンＡの範囲の下に現在あるデバイスのある一組に対してのみのいずれかを等価にすることができる。等価にすることができない場合、ＤＭＡおよび割り込みリマッピング・ロジック１０２は、エラー・レジスタを通してこのエラー・ステータスを通信する。
【００３８】
このように、利用可能なリマッピング・エンジン間の全リマッピン負荷のバランスを保つために、リマッピング・エンジンを再配分する装置、システム、および方法の実施例が開示された。これらの実施例は、それらの特定の典型的な実施例に関して説明された。様々な修正および変更がここに記述された実施例のより広い精神および範囲から逸脱せずに、これらの実施例になされることは、当御者には明らかであろう。したがって、詳細な説明および図面は、限定的な意味ではなく、実例として捕えるべきである。
【符号の説明】
【００３９】
１００  システム・メモリ
１０２  ダイレクト・メモリ・アクセス（ＤＭＡ）および割り込みリマッピング・ロジック
１０４  Ｉ／Ｏデバイス１
１０６  Ｉ／Ｏデバイス２
１０８  ドメインＡ
１１０  ドメインＢ
１１２  リマッピング・ページ・テーブル
１１４  リマッピング・エンジン１
１１６  リマッピング・エンジン２
１１８  リマッピング再配分ロジック
１２０  制御レジスタ
【図１】
2010157234.tif 000005
【図２】
2010157234.tif 000006
【外国語明細書】
2010157234000001.pdf