(57)【要約】【課題】仮想化ロジックを提供する。【解決手段】本発明にかかる仮想化ロジックは、内部仮想化ロジックを有さないプロセッサに動作可能に接続され、トラップ可能なメモリアドレスを記憶するデータストアと、プロセッサからメモリトランザクションを受け取り、メモリトランザクションがトラップ可能なメモリアドレスを参照する時にトラップを選択的に生成するアドレス比較ロジックと、アドレス比較ロジックがトラップを生成したメモリ読み出しトランザクションに関するデータを記憶するデータストアと、アドレス比較ロジックがトラップを生成したメモリ書き込みトランザクションに関するデータを記憶するデータストアと、アドレス比較ロジックがトラップを生成したことに応答して、プロセッサに信号を選択的に供給するトランザクションロジックとを備える。【選択図】図２
2006155624.tif 000002
【特許請求の範囲】
【請求項１】
内部仮想化ロジックを有することなく構成されるプロセッサ（２２０）に動作可能に接続されるように構成される仮想化ロジック（２３０）であって、
トラップ可能なメモリアドレスを記憶するように構成される第１のデータストア（２３２）と、
前記プロセッサ（２２０）からメモリトランザクションを受け取るように構成され、且つ、前記メモリトランザクションが前記トラップ可能なメモリアドレスを参照する時にトラップを選択的に生成するように構成されるアドレス比較ロジック（２３４）と、
該アドレス比較ロジック（２３４）がトラップを生成したメモリ読み出しトランザクションに関連したデータを記憶するように構成される第２のデータストア（２３６）と、
前記アドレス比較ロジック（２３４）がトラップを生成したメモリ書き込みトランザクションに関連したデータを記憶するように構成される第３のデータストア（２３８）と、
前記アドレス比較ロジック（２３４）が前記トラップを生成したことに応答して、前記プロセッサ（２２０）に信号を選択的に供給するように構成されるトランザクションロジック（２３９）と、
を備える、仮想化ロジック。
【請求項２】
仮想化ロジック（２３０）であって、
前記トランザクションロジック（２３９）は、前記アドレス比較ロジック（２３４）がトラップを生成したことに応答して、前記プロセッサ（２２０）に、プロセッサに対する管理トランザクション（ＭＰＴ（management to processor transaction））を提供するように構成される、
請求項１に記載の仮想化ロジック。
【請求項３】
仮想化ロジック（２３０）であって、
前記プロセッサ（２２０）は、前記仮想化ロジック（２３０）から前記ＭＰＴを受け取ったことに応答して、ハンドラプロセスを呼び出すように構成され、該ハンドラプロセスは、前記第２のデータストア（２３６）及び前記第３のデータストア（２３８）の１つ又は２つに記憶されたメモリトランザクションを順に実行するように構成される、
請求項２に記載の仮想化ロジック。
【請求項４】
仮想化ロジック（２３０）であって、
前記トランザクションロジック（２３９）は、前記アドレス比較ロジック（２３４）がトラップを生成したことに応答して、前記プロセッサ（２２０）にマスク不可能割り込み（non-maskable interrupt）を提供するように構成される、
請求項１に記載の仮想化ロジック。
【請求項５】
内部仮想化ロジックを有することなく構成されるメモリトランザクション生成プロセッサ（２２０）に動作可能に接続されるように構成される仮想化ロジック（２３０）であって、
仮想入出力デバイスに関連したトラップ可能なメモリアドレスを記憶するように構成される第１のデータストア（２３２）であって、該トラップ可能なメモリアドレスは、前記プロセッサ（２２０）をブートすること、及び、前記プロセッサ（２２０）に関連したオペレーティングシステム（２２４）を初期化することの１つ又は２つに関連したブートファームウェア（２２２）により該第１のデータストア（２３２）に書き込まれる、第１のデータストアと、
前記プロセッサ（２２０）からメモリトランザクションを受け取るように構成され、該メモリトランザクションが前記トラップ可能なメモリアドレスを参照する時にトラップを選択的に生成するように構成され、前記プロセッサ（２２０）からメモリ読み出しトランザクションを受け取ったことに応答して前記プロセッサ（２２０）に読み出し延期応答（read defer response）を提供するように構成され、且つ、前記プロセッサ（２２０）からメモリ読み出しトランザクションを受け取ったことに応答して、前記プロセッサ（２２０）に記入応答（posted response）を提供するように構成されるアドレス比較ロジック（２３４）と、
該アドレス比較ロジック（２３４）がトラップを生成したメモリ読み出しトランザクションに関連したデータを記憶するように構成される第２のデータストア（２３６）と、
前記アドレス比較ロジック（２３４）がトラップを生成したメモリ書き込みトランザクションに関連したデータを記憶するように構成される第３のデータストア（２３８）と、
前記アドレス比較ロジック（２３４）がトラップを生成したことに応答して、前記プロセッサ（２２０）に、プロセッサに対する管理トランザクション（ＭＰＴ）を選択的に提供するように構成されるトランザクションロジック（２３９）と、
を備え、
前記プロセッサ（２２０）は、前記仮想化ロジック（２３０）から前記ＭＰＴを受け取ったことに応答して、ハンドラプロセスを呼び出すように構成され、該ハンドラプロセスは、前記第２のデータストア（２３６）及び前記第３のデータストア（２３８）の１つ又は２つに記憶されたメモリトランザクションを順に実行するように構成される、
仮想化ロジック。
【請求項６】
方法（４００）であって、
内部仮想化サポートを含まないプロセッサに動作可能に接続されるように構成されるインターセプトロジックを初期化すること（４１０）、
前記プロセッサによって生成された入出力要求をインターセプトすること（４２０）であって、該インターセプトすること（４２０）は、前記入出力要求が前記プロセッサを出た後であって、前記入出力要求が目的の宛先に到着する前に行われる、インターセプトすること、及び、
前記目的の宛先が仮想デバイスであるかどうかに少なくとも部分的に基づいて、信号を選択的に生成して（４３０）前記プロセッサに供給すること、
を含む、方法。
【請求項７】
方法（４００）であって、
入出力要求を前記インターセプトすること（４２０）は、該入出力要求を受け取ること、該入出力要求に関連したアドレスを検査すること、及び、該入出力要求に関連した前記アドレスに少なくとも部分的に基づいて該入出力要求を選択的に送ること、を含む、
請求項６に記載の方法。
【請求項８】
方法（４００）であって、
前記信号を選択的に生成して（４３０）前記プロセッサに供給することは、プロセッサに対する管理トランザクション（ＭＰＴ）を生成することを含む、
請求項７に記載の方法。
【請求項９】
方法（５００）を実行するように動作可能な、プロセッサ実行可能命令を記憶するコンピュータ可読媒体であって、前記方法（５００）は、
内部仮想化サポートを含まないプロセッサに動作可能に接続されるように構成されるインターセプトロジックを初期化すること（５１０）であって、該インターセプトロジックを初期化することは、仮想デバイスに関連したアドレスを前記インターセプトロジックに提供することを含む、インターセプトロジックを初期化すること、
前記プロセッサによって生成された入出力要求をインターセプトすること（５２０）であって、該インターセプトすることは、前記入出力要求が前記プロセッサを出た後であって、前記入出力要求が目的の宛先に到着する前に行われ、入出力要求を該インターセプトすることは、該入出力要求を受け取ること、該入出力要求に関連したアドレスを検査すること、及び、該入出力要求に関連した前記アドレスに少なくとも部分的に基づいて該入出力要求を選択的に送ること（５３０）、を含む、インターセプトすること、
前記仮想デバイスに関連したデバイスドライバにアクセス可能なロケーションに前記入出力要求を記憶すること（５４０）、及び、
前記目的の宛先が仮想デバイスであるかどうかに少なくとも部分的に基づいて、プロセッサに対する管理トランザクション（ＭＰＴ）を選択的に生成すること（５５０）、
を含む、コンピュータ可読媒体。
【請求項１０】
メモリトランザクションを生成するように構成されるプロセッサ（９００）であって、該プロセッサ（９００）は、仮想デバイスに関連したトラップアドレスの内部サポートを備えず、該プロセッサは、
コンピュータ実行可能命令を処理するように構成される命令処理ロジック（９１０）と、
コンピュータ実行可能命令を処理することに関連したメモリアクセストランザクションを生成するように構成されるトランザクション組み立てロジック（９２０）と、
前記メモリアクセストランザクションを提供することができる２つ以上のポート（９４０、９４２、９４４）であって、該ポート（９４０、９４２、９４４）の少なくとも１つは仮想化ロジック通信ポートとして専用化することができる、２つ以上のポートと、
前記トランザクション組み立てロジック（９２０）を前記２つ以上のポート（９４０、９４２、９４４）に動作可能に接続するように構成されるクロスバー（９３０）と、
を備える、プロセッサ、及び、
該プロセッサ（９００）の外部に配置される仮想化ロジック（９５０）であって、該仮想化ロジック（９５０）は、前記仮想化ロジック通信ポートによって前記プロセッサ（９００）に動作可能に接続され、該仮想化ロジック（９５０）は、
メモリ読み出しトランザクションに関連したデータ及びメモリ書き込みトランザクションに関連したデータの１つ又は２つを記憶するように構成されるデータストア、及び、
該仮想化ロジック（９５０）がメモリアクセストランザクションを受け取ったことに応答して、前記プロセッサ（９００）に信号を選択的に供給するように構成されるトランザクションロジック、
を備える、仮想化ロジック、
を備える、システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想化ロジックに関する。
【背景技術】
【０００２】
コンピュータハードウェアデバイスは、一般に、物理的な有形物であると考えられる。これら物理デバイスは、多くの場合、情報（例えば、データ、制御、構成）を読み出し、且つ／又は、書き込むことができるレジスタを含む。レジスタは、デバイスアクセスを容易にするためにメモリアドレスにマッピングすることができる。例えば、アドレス０ｘ３ｆ８は、多くの場合、入出力（Ｉ／Ｏ）カードの読み出し／書き込みポートにマッピングされる。したがって、中央演算処理装置（ＣＰＵ）又は他のプロセッサは、物理デバイスレジスタにマッピングされたメモリアドレスを通じてさまざまなコンピュータハードウェアデバイスと相互作用することができる。一方、コンピュータハードウェアデバイスを仮想化することもできる。したがって、オペレーティングシステム、アプリケーション等も、物理デバイスではなく仮想デバイスと相互作用することができる。例えば、パーソナルコンピュータは、ＲＡＭ（ランダムアクセスメモリ）で実施された「ディスクドライブ」と相互作用することができる。物理デバイスと同様に、仮想デバイスも、データ及び／又は制御情報を読み出し、且つ／又は、書き込むことができる１組のレジスタを含むことができる。したがって、仮想デバイスも、例えば、メモリマップドＩ／Ｏ方式を使用してアドレス指定することができる。
【０００３】
仮想デバイスは、例えば、ソフトウェア、他のハードウェアデバイス、それらの組み合わせ等によって提供することができる。仮想デバイスは、ソフトウェアによって仮想化されると、さまざまなプロセッサで実施することができる。しかしながら、従来、仮想デバイスがアクセスされていない時であっても、パフォーマンスペナルティがソフトウェアに基づく仮想化に関連して起こることがあった。デバイスが他のハードウェアで仮想化される場合、このソフトウェア仮想化に関連したパフォーマンスペナルティを削減することができる。しかしながら、従来のハードウェアでサポートされた仮想化では、プロセッサをハードウェア仮想化サポート機能で設計することが必要とされることがあり、これによって、チップコスト、開発時間等を増加することがある。また、ハードウェアでサポートされた仮想化では、従来、プロセッサ設計者が仮想化ハードウェアとの相互作用を予想して、必要とされるサポート機能を正確に予測することが必要とされていた。これに加えて、ハードウェアでサポートされた仮想化が、実装されるが使用されない場合、組み込まれた仮想化サポート機能を実装する回路部は、電力を消費し熱を発生する過剰なものとして存続することがある。さらに、ハードウェアでサポートされた仮想化では、通常、完全なＣＰＵの仮想化が必要とされ、これによって、仮想化方式は単一レベルの仮想化特権（virtualization privilege）に制限される。それにもかかわらず、仮想化は、デバイスのプロトタイプの製造の容易化、テストの容易化、一定の物理障壁を計算システムから除去すること、複数のオペレーティングシステム及びアプリケーション間でハードウェア機能を分割することの容易化等を可能にすることができる。
【発明の開示】
【課題を解決するための手段】
【０００４】
本発明にかかる仮想化ロジックは、内部仮想化ロジックを有することなく構成されるプロセッサ（２２０）に動作可能に接続されるように構成される仮想化ロジック（２３０）であって、トラップ可能なメモリアドレスを記憶するように構成される第１のデータストア（２３２）と、前記プロセッサ（２２０）からメモリトランザクションを受け取るように構成され、且つ、前記メモリトランザクションが前記トラップ可能なメモリアドレスを参照する時にトラップを選択的に生成するように構成されるアドレス比較ロジック（２３４）と、該アドレス比較ロジック（２３４）がトラップを生成したメモリ読み出しトランザクションに関連したデータを記憶するように構成される第２のデータストア（２３６）と、前記アドレス比較ロジック（２３４）がトラップを生成したメモリ書き込みトランザクションに関連したデータを記憶するように構成される第３のデータストア（２３８）と、
前記アドレス比較ロジック（２３４）が前記トラップを生成したことに応答して、前記プロセッサ（２２０）に信号を選択的に供給するように構成されるトランザクションロジック（２３９）とを備える。
【０００５】
明細書に組み込まれて明細書の一部を構成する添付図面は、本発明の態様のさまざまな実施の形態例を示すさまざまなシステム例、方法例等を示す。図面に示した要素の境界（例えば、ボックス、数群のボックス、又は他の形状）は境界の一例を表すことが理解されよう。当業者には、１つの要素を複数の要素として設計することもできるし、複数の要素を１つの要素として設計することもできることが理解されよう。別の要素の内部コンポーネントとして示された或る要素は、外部コンポーネントとして実施することができ、また、その逆も同様である。さらに、要素は一律の縮尺で描かれていないことがある。
【発明を実施するための最良の形態】
【０００６】
本明細書で説明するシステム例及び方法例は、外部仮想化ハードウェアを、仮想化をサポートするように設計されていない場合があるプロセッサと関連付けることに関する。例えば、プロセッサは、仮想入出力（Ｉ／Ｏ）デバイスと相互作用するように内部ハードウェアサポート及び／又は内部ソフトウェアサポートで設計されていない場合がある。
【０００７】
本明細書で説明するような外部仮想化ハードウェアを使用することによって、プロセッサは、従来のソフトウェアに基づく仮想化に関連したパフォーマンスペナルティを招くことなく、且つ、プロセッサ設計が完全なＣＰＵ仮想化を含むことを必要とすることなく、Ｉ／Ｏデバイスのような仮想デバイスと相互作用することを可能にすることができる。
【０００８】
以下は、本明細書で使用される選択された用語の定義を含む。これらの定義は、用語の範囲内に含まれ、実施に使用できるコンポーネントのさまざまな例及び／又は形態を含む。これらの例は限定するためのものではない。用語の単数形及び複数形の双方を定義の範囲内に含めることができる。
【０００９】
本出願では、用語「コンピュータコンポーネント」は、コンピュータに関連したエンティティを指し、ハードウェア、ファームウェア、ソフトウェア、それらの組み合わせ、又は実行中のソフトウェアのいずれかを指す。例えば、コンピュータコンポーネントは、プロセッサで実行されるプロセス、プロセッサ、オブジェクト、実行ファイル（executable）、実行スレッド、プログラム、及びコンピュータとすることができるが、これらに限定されるものではない。例示として、サーバで実行されるアプリケーション及びそのサーバの双方をコンピュータコンポーネントとすることができる。１つ又は複数のコンピュータコンポーネントが、プロセス及び／又は実行スレッド内に存在することができ、コンピュータコンポーネントは、１つのコンピュータに局在することができ、且つ／又は、２つ又は３つ以上のコンピュータ間に分散することができる。
【００１０】
「コンピュータ可読媒体」は、本明細書では、信号、命令、及び／又はデータを直接又は間接に提供することに関与する媒体を指す。コンピュータ可読媒体は、不揮発性媒体、揮発性媒体、及び伝送媒体を含む形態を取ることができるが、これらに限定されるものではない。不揮発性媒体には、例えば、光ディスク又は磁気ディスク等が含まれ得る。揮発性媒体には、例えば、光ディスク又は磁気ディスク、ダイナミックメモリ等が含まれ得る。伝送媒体には、同軸ケーブル、銅線、光ファイバケーブル等が含まれ得る。また、伝送媒体は、電波及び赤外線のデータ通信中に生成されるような電磁放射の形態を取ることもできるし、１つ又は複数の信号群の形態を取ることもできる。コンピュータ可読媒体の一般的な形態には、フロッピー（登録商標）ディスク、フレキシブルディスク、ハードディスク、磁気テープ、他の磁気媒体、ＣＤ−ＲＯＭ、他の光媒体、パンチカード、紙テープ、孔のパターンを有する他の物理媒体、ＲＡＭ、ＲＯＭ、ＥＰＲＯＭ、フラッシュＥＰＲＯＭ、又は他のメモリチップ若しくはメモリカード、メモリスティック、搬送波／パルス、及び、コンピュータ、プロセッサ、又は他の電子デバイスが読み出すことができる他の媒体が含まれるが、これらに限定されるものではない。インターネットのようなネットワークを介して命令又は他のソフトウェアを伝播するのに使用される信号は、「コンピュータ可読媒体」と考えることができる。
【００１１】
「データストア」は、本明細書では、データを記憶することができる物理エンティティ及び／又は論理エンティティを指す。データストアは、例えば、テーブル、ファイル、リスト、キュー、ヒープ、メモリ、レジスタ等とすることができる。データストアは、１つの論理エンティティ及び／又は物理エンティティに存在することができ、且つ／又は、２つ又は３つ以上の論理エンティティ及び／又は物理エンティティ間に分散することができる。
【００１２】
「ロジック」には、本明細書では、機能（複数可）又は動作（複数可）を実行し、且つ／又は、別のロジック、方法、及び／又はシステムからの機能若しくは動作を引き起こすためのハードウェア、ファームウェア、及び／又はそれぞれの組み合わせが含まれるが、これに限定されるものではない。例えば、所望の用途又はニーズに基づいて、ロジックには、特定用途向け集積回路（ＡＳＩＣ）のようなディスクリート（discrete）ロジック、プログラミングされたロジックデバイス、命令を収容したメモリデバイス等が含まれ得る。ロジックは、１つ又は複数のゲート、ゲートの組み合わせ、又は他の回路コンポーネントを含むことができる。複数の論理ロジックを記述する場合、それら複数の論理ロジックを１つの物理ロジックに組み込むことが可能な場合がある。同様に、単一の論理ロジックを記述する場合、その単一の論理ロジックを複数の物理ロジック間に分散させることが可能な場合もある。
【００１３】
「動作可能接続」又はエンティティを「動作可能に接続」する接続は、信号、物理通信、及び／又は論理通信を送信及び／又は受信できる接続である。通常、動作可能接続には、物理インターフェース、電気インターフェース、及び／又はデータインターフェースが含まれるが、動作可能接続には、動作可能制御を可能にするのに十分なこれらのタイプの接続又は他のタイプの接続の異なる組み合わせが含まれ得ることに留意すべきである。例えば、直接、又は、プロセッサ、オペレーティングシステム、ロジック、ソフトウェア、若しくは他のエンティティのような１つ又は複数の中間エンティティを通じて、互いに信号を通信できることによって、２つのエンティティを動作可能に接続することができる。論理通信チャネル及び／又は物理通信チャネルを使用して、動作可能接続を生成することができる。
【００１４】
「信号」には、本明細書では、１つ又は複数の電気信号若しくは光信号、アナログ信号若しくはディジタル信号、データ、１つ又は複数のコンピュータ命令若しくはプロセッサ命令、メッセージ、ビット若しくはビットストリーム、又は、受信、送信、及び／又は検出が可能で、情報の転送を容易にすることができる他の手段が含まれるが、これらに限定されるものではない。
【００１５】
「ソフトウェア」には、本明細書では、読み出し、インタープリット、コンパイル、及び／又は実行が可能で、且つ、コンピュータ、プロセッサ、又は他の電子デバイスに、機能、動作を実行させ、且つ／又は所望の通り振る舞わせる１つ又は複数のコンピュータ命令又はプロセッサ命令が含まれるが、これらに限定されるものではない。命令は、動的にリンクされたライブラリ及び／又は静的にリンクされたライブラリからの別々のアプリケーション又はコードを含んだルーチン、アルゴリズム、モジュール、メソッド、スレッド、及び／又はプログラムのようなさまざまな形態で実施することができる。また、ソフトウェアも、さまざまな実行可能な形態及び／又はロード可能な形態で実施することができる。このさまざまな実行可能な形態及び／又はロード可能な形態には、スタンドアロンプログラム、関数コール（ローカル及び／又はリモート）、サーブレット、アプレット、メモリに記憶された命令、オペレーティングシステムの一部、又は他のタイプの実行可能命令が含まれるが、これらに限定されるものではない。ソフトウェアの形態は、例えば、所望のアプリケーションの要件、所望のアプリケーションが実行される環境、及び／又は設計者／プログラマ等の要望に依存し得ることが当業者には理解されよう。また、コンピュータ可読命令及び／又はコンピュータ実行可能命令は、１つのロジックに配置することができ、且つ／又は、２つ若しくは３つ以上の、通信、協同、及び／又は並列処理を行うロジック間に分散させることができ、したがって、連続形式、並列形式、超並列形式、及び他の形式でロードでき、且つ／又は、実行することができることが理解されよう。
【００１６】
本明細書で説明するシステム例及び方法例のさまざまなコンポーネントを実施するのに適したソフトウェアは、Ｊａｖａ(登録商標)、Ｐａｓｃａｌ、Ｃ＃、Ｃ＋＋、Ｃ、ＣＧＩ、Ｐｅｒｌ、ＳＱＬ、ＡＰＩ、ＳＤＫ、アセンブリ、ファームウェア、マイクロコード、及び／又は他の言語及びツールのようなプログラミング言語並びにツールを使用して作成することができる。ソフトウェアは、システム全体であろうとシステムのコンポーネントであろうと、製品として実施することができ、上記で定義したようなコンピュータ可読媒体の一部として保持又は提供することができる。ソフトウェアの別の形態には、ネットワーク又は他の通信媒体によってソフトウェアのプログラムコードを受信者に送信する信号が含まれ得る。したがって、一例では、コンピュータ可読媒体は、ウェブサーバからユーザにダウンロードされるとき、ソフトウェア／ファームウェアを表す信号の形態を有する。別の例では、コンピュータ可読媒体は、ウェブサーバに保持されるとき、ソフトウェア／ファームウェアの形態を有する。他の形態も使用することができる。
【００１７】
本明細書では、用語「トラップ」は、ハードウェア及び／又はファームウェアによって自動的に実行される、プログラミングされていない条件付き動作を含む。トラップは、例外的なイベントが、そのイベントをハンドリングするための特別なルーチンへの自動転送を引き起こす時に発生し得る。
【００１８】
以下の詳細な説明のいくつかの部分は、メモリ内のデータビットに対するオペレーションのアルゴリズム及びシンボル表現の観点で提示される。これらのアルゴリズム的な説明及び表現は、当業者が自身の作業の内容を他者に伝えるのに使用する手段である。アルゴリズムは、ここでは、一般的に、結果を生成するオペレーションのシーケンスであると考えられる。オペレーションは、物理量の物理的な操作を含むことができる。必ずしもそうではないが、通例、物理量は、ロジック等における記憶、転送、結合、比較、及びそれ以外の操作を行うことができる電気信号又は磁気信号の形態を取る。
【００１９】
主として一般的な慣例との理由から、これらの信号を、ビット、値、要素、シンボル、文字、用語、数字等と呼ぶことが時に便利であることが分かっている。しかしながら、これらの用語及び類似の用語は、適切な物理量に関連付けられることになり、これらの物理量に適用される単なる便利なラベルにすぎないことに留意すべきである。特に指定のない限り、この説明全体を通じて、処理、計算、演算、決定、表示等のような用語は、コンピュータシステム、ロジック、プロセッサ、又は物理（電子）量として表されたデータの操作及び変換を行う類似の電子デバイスの動作及びプロセスを指すことが理解される。
【００２０】
図１は、外部アドレストラップを介してシステム１００のオフチップ仮想化をサポートする一例の仮想化ロジック１２０を示している。本明細書では、外部は、論理的及び物理的に別であることを意味する。例えば、動作可能に接続できる２つの集積回路は、互いに外部であると言うことができる。それらの集積回路は、動作可能に接続されると、互いに外部の状態を維持する。一方、プロセッサの内部に配置された機能ユニット（例えば、浮動小数点ユニット）は、この用語が本明細書で使用されるところによると、プロセッサの外部ではない。
【００２１】
システム１００は、仮想化能力を有するように設計されなかったプロセッサ１１０を含む。したがって、スタンドアロンのプロセッサ１１０は、仮想デバイスと相互作用することができないことになる。一例では、プロセッサ１１０は、複数のリンク及び複数のコアを有する、リンクに基づくプロセッサとすることができる。別の例では、プロセッサ１１０は、バスに基づくプロセッサ又は単一コアプロセッサとすることができる。一例では、プロセッサ１１０は、プロセッサに対する管理トランザクション（ＭＰＴ）等のようなトランザクションを処理するように構成することができる。一例のＭＰＴは、さまざまなＩｎｔｅｌプロセッサアーキテクチャに関連したトランザクションのようなプラットフォームマネジメントインタラプト（ＰＭＩ（platform management interrupt））トランザクションとすることができる。ＭＰＴは、例えば、プロセッサをシステムメモリ、主入出力バスブリッジ、システムファブリック等とリンクすることを容易にすることができる。別の例では、プロセッサ１１０は、マスク不可能割り込み（ＮＭＩ）のような割り込みを処理するように構成することができる。このマスク不可能割り込みは、トランザクション、物理ピン等によって提供することができる。プロセッサ１１０は、利用可能な「安全モード」を備えることができる。この安全モードは、例えば、マルチパーティションシステムで使用することができる。安全モードは、プロセッサ１１０が安全モードにある時にのみアクセスできるアドレス範囲を提供することを含むことができる。プロセッサ１１０を安全モードに移行させる能力及び／又はプロセッサ１１０を安全モード外に移行させる能力は、特権命令に限定することができる。例えば、オペレーティングシステムコード及びアプリケーションコードは、安全モードの移行を制御できないことがあるのに対し、ブートファームウェアコードは、安全モードの移行を制御できることがある。
【００２２】
また、システム１００は、プロセッサ１１０の外部に配置された仮想化ロジック１２０も含む。この仮想化ロジック１２０は、プロセッサ１１０の一部である回路部ではない。仮想化ロジック１２０は、プロセッサ１１０に動作可能に接続できる集積回路のような別個のコンポーネントである。システム１００では、仮想化ロジック１２０は、プロセッサ１１０に動作可能に接続されている。これに加えて、仮想化ロジック１２０は、プロセッサ１１０と仮想デバイス１３０との間に配置されている。同様に、仮想化ロジック１２０は、プロセッサ１１０と物理デバイス１４０との間にも配置されている。したがって、仮想化ロジック１２０は、プロセッサ１１からの入出力要求、メモリトランザクション等のようなトランザクションをインターセプトすることを容易にするように配置されている。
【００２３】
プロセッサ１１０は、メモリトランザクションを生成するが、内部仮想化ロジックを含むことができないプロセッサとすることができる。したがって、プロセッサ１１０は、物理デバイス１４０と相互作用するように構成できるが、仮想デバイス１３０と相互作用するように初期構成することができない。したがって、仮想化ロジック１２０は、プロセッサ１１０からのメモリトランザクションをインターセプトして、プロセッサ１１０の外部仮想化のサポートの提供を容易にすることができる。例えば、仮想化ロジック１２０は、例えば仮想デバイス１３０に関連したアドレス範囲に基づいてトランザクションを選択的に送る（route）ことができる。これに加えて、仮想化ロジック１２０は、プロセッサ１１０に信号（例えばＭＰＴ）を供給して、プロセッサ１１０が、仮想デバイス１３０と相互作用するためのコード（例えば、仮想デバイスドライバ）を起動することを容易にすることができる。
【００２４】
図２は、プロセッサ２２０に動作可能に接続するように構成される一例の仮想化ロジック２３０を示している。プロセッサ２２０は、メモリトランザクションを生成するように構成されるが、内部仮想化ロジックを有するように構成されていない。プロセッサ２２０は、例えば、オペレーティングシステム２２４及び／又はシステムメモリ２１０にデバイス及びそれらデバイスのアドレス範囲について通知するように構成されるブートファームウェア２２２に関連付けることができる。いくつかの例では、ブートファームウェア２２２は、ＡＣＰＩ（アドバンストコンフィギュレーションアンドパワーインターフェース）に関連した技術のような標準的な技術を使用して、コンピュータコンポーネント（例えば、オペレーティングシステム２２４、デバイスベースアドレスデータストア２１２）と通信することができる。別の例では、仮想デバイスに関連したアドレス範囲は、例えば、連続範囲や複数の交わらない領域等とすることができる。
【００２５】
プロセッサ２２０は、オペレーティングシステム２２４及びハイパーバイザ２２６に関連付けることができる。オペレーティングシステム２２４は、プロセッサ２２０に関連したユーザ資源及びさまざまな物理資源を制御することができる。ハイパーバイザ２２６は、仮想マシン、仮想デバイス等を提供して管理することができる。例えば、ハイパーバイザ２２６は、仮想デバイスを作成して、それら仮想デバイスをオペレーティングシステム２２４に提示することができる。さまざまな仮想デバイスに関する情報は、例えば、システムメモリ２１０のデバイス状態データストア２１４に記憶することができる。同様に、仮想デバイス及びそれら仮想デバイスのアドレス範囲に関する情報も、システムメモリ２１０のデバイスベースアドレスデータストア２１２に記憶することができる。
【００２６】
仮想化ロジック２３０は、プロセッサ２２０の外部にある。例えば、セルラーアーキテクチャでは、仮想化ロジック２３０はセルコントローラに配置することができる。仮想化ロジック２３０は、トラップ可能なメモリアドレスを記憶するように構成されるデータストア２３２を含むことができる。上述したように、トラップ可能なメモリアドレスは、仮想デバイス（複数可）に関連付けることができ、ブートファームウェア２２２が提供することができる。一例では、トラップ可能なメモリアドレスは、仮想入出力デバイスに関連付けることができる。仮想入出力デバイスを説明したが、他の仮想デバイス（例えば、ＲＡＭディスク）を使用できることが理解されるべきである。仮想化ロジック２３０は、メモリトランザクションが、データストア２３２に記憶されたアドレス範囲（複数可）のアドレスを参照した時にトラップを生成するように構成することができる。
【００２７】
また、仮想化ロジック２３０は、アドレス比較ロジック２３４も含むことができる。このアドレス比較ロジック２３４は、プロセッサ２２０からメモリトランザクションを受け取って、そのメモリトランザクションがトラップ可能なメモリアドレスを参照した時にトラップを選択的に生成するように構成される。例えば、仮想化ハードウェア２３０は、トラップ可能なメモリアドレス範囲のアドレスを有するメモリトランザクションに遭遇した時にトラップを生成することができる。一例では、トラップを生成することは、ＭＰＴトランザクションを生成すること、及び、そのＭＰＴトランザクションをプロセッサ２２０に提供することを含むことができる。別の例では、トラップを生成することは、プロセッサ２２０においてＮＭＩを生成することを含むことができる。仮想化ロジック２３０は、例えば、オペレーティングシステム２２４から読み出し要求及び／又は書き込み要求を受け取ることができる。したがって、アドレス比較ロジック２３４は、メモリ読み出しトランザクションを受け取ったことに応答して、プロセッサ２２０及び／又はオペレーティングシステム２２４に読み出し延期（defer）応答を提供するように構成することができる。同様に、アドレス比較ロジック２３４は、メモリ書き込みトランザクションを受け取ったことに応答して、プロセッサ２２０及び／又はオペレーティングシステム２２４に記入応答を提供するように構成することができる。読み出し延期応答及び書き込み記入応答を説明したが、さまざまなプロセッサ及び／又はオペレーティングシステムの要求を満たすように調整された他の応答を仮想化ロジック２３０が提供できることが理解されるべきである。
【００２８】
また、仮想化ロジック２３０は、データストア２３６も含むことができる。このデータストア２３６は、アドレス比較ロジック２３４がトラップを生成したメモリ読み出しトランザクションに関連したデータを記憶するように構成される。一例では、データストア２３６は、トランザクションの所望の順序を維持することを容易にするキューとすることができる。メモリ読み出しトランザクションを記憶することによって、仮想化ハードウェア２３０が読み出し延期応答をプロセッサ２２０に提供することを容易にすることができる。仮想デバイスドライバが実行されると、当該仮想デバイスドライバは、データストア２３６に記憶された読み出しメモリトランザクション及び／又は関連したデータにアクセスしてそれらを順に実行することができる。同様に、仮想化ロジック２３０は、アドレス比較ロジック２３４がトラップを生成したメモリ書き込みトランザクションに関連したデータを記憶するように構成されるデータストア２３８も含むことができる。一例では、データストア２３８は、トランザクションの所望の順序を維持することを容易にするキューとすることができる。データストア２３６及び２３８の例としてキューを説明したが、トランザクションの順序を維持することを容易にする他のデータストアを使用できることが理解されるべきである。
【００２９】
また、仮想化ロジック２３０は、トランザクションロジック２３９も含むことができる。このトランザクションロジック２３９は、アドレス比較ロジック２３４がトラップを生成したことに応答して、プロセッサ２２０に信号を選択的に供給するように構成される。上述したように、この信号は、例えば、ＭＰＴ、ＮＭＩ等とすることができる。したがって、トランザクションロジック２３９は、プロセッサ２２０を制御して仮想デバイスドライバを起動し、データストア２３２に記憶されたトラップ可能なアドレス範囲内にアドレスが入るメモリ要求をハンドリングすることを容易にすることができる。
【００３０】
仮想化ロジック２３０は、ＭＰＴ及びＮＭＩのような信号をプロセッサ２２０に供給することができるので、プロセッサ２２０は、仮想化ロジック２３０から信号を受け取ったことに応答して、ハンドラプロセスを呼び出すように構成することができる。ハンドラプロセスは、データストア２３６及び／又はデータストア２３８に記憶されたメモリトランザクションを順に実行するように構成することができる。一例では、プロセッサ２２０が安全な状態にある時、保護されたアドレス範囲（例えば、仮想デバイスに関連したアドレス）のみがプロセッサ２２０によってアクセスできる場合、安全な状態への入出を行うようにプロセッサ２２０を制御することができる。例えば、ＭＰＴ又はＮＭＩを受け取ったことに応答して、安全な状態に入るようにプロセッサ２２０を制御することができる。一例では、仮想化ロジック２３０を制御すること及び／又は構成することに関連したレジスタを仮想化ロジック２３０に配置することができ、このレジスタは、安全な状態によって保護されたアドレス範囲のアドレスを有する。したがって、仮想化ロジック２３０は、いくつかの例では、プロセッサ２２０が安全な状態にある間実行するコードによって構成することができる。
【００３１】
図２は、システムファブリック２４０も示している。このシステムファブリック２４０は、例えば、プロセッサ、入出力デバイス、バスインターフェース等を接続する均一なノード間通信媒体とすることができる。仮想化ロジック２３０は、いくつかのインターセプトされたトランザクションを仮想化ロジック２３０に記憶して仮想化デバイスドライバにより処理することを引き起こす信号を生成することができるが、他のトランザクションは、トラップを生成することができず、したがって、それら他のトランザクションを仮想化ロジック２３０からシステムファブリック２４０に転送して、従来の処理を行うことができる。したがって、仮想化ロジック２３０は、従来の仮想化サポートシステムに関連したオーバーヘッド及び遅延の多くを有することなく、仮想化サポートをプロセッサ２２０に提供することを容易にすることができる。
【００３２】
当業者には理解できるように、図２に関連した一定の例（例えば、ＭＰＴ、セルラーアーキテクチャ、セルコントローラ）は、Ｉｔａｎｉｕｍアーキテクチャのような一定のアーキテクチャに特有の一定の要素を含むことができる。そのようなことから、図３は、より一般的な別の仮想化ロジック３３０を示している。
【００３３】
図３は、システムメモリ３１０を示している。このシステムメモリ３１０には、外部仮想化サポートが提供される仮想デバイスに関連したデータを記憶することができる。例えば、アドレスデータは、アドレスデータストア３１２に記憶することができる。同様に、状態データストア３１４は、外部仮想化サポートが提供される仮想デバイスに関連した状態データを記憶することができる。システムメモリ３１０は、プロセッサ３２０の外部に示されているが、いくつかの例では、システムメモリ３１０はプロセッサ３２０の内部とすることができることが理解されるべきである。
【００３４】
プロセッサ３２０は、ファームウェア３２２に関連付けられ、オペレーティングシステム３２４及びハイパーバイザ３２６を実行する。ハイパーバイザ３２６は、当該ハイパーバイザ３２６が制御する、下にあるハードウェア資源の仮想コピーを、プロセッサ３２０によって実行されているオペレーティングシステム（複数可）３２４に提示することができる。ブートタイム時又はブートタイム後、ファームウェア３２２は、仮想化されたデバイスをアドレス範囲内に配置することができ、仮想化ロジック３３０のような「インターセプトハードウェア」を構成して、そのアドレス範囲のメモリアクセストランザクションをインターセプトすることができる。
【００３５】
仮想化ロジック３３０は、アドレスロジック３３２及び読み出し／書き込みデータストア３３４を含むことができる。アドレスロジック３３２は、メモリアクセストランザクションがプロセッサ３２０を出る（leave）時であって、目的の宛先（例えば、システムファブリック３４０の或るロケーション、或る仮想デバイス）に到着する前に、当該メモリアクセストランザクションをインターセプトするように構成することができる。仮想化ロジック３３０は、例えば、セルラーアーキテクチャのセルコントローラに配置することができる。アドレスロジック３３２は、メモリアクセストランザクションに関連した物理アドレスを検査することができる。そのアドレスが仮想化範囲にある場合、アドレスロジック３３２は、そのトランザクションに関連したデータを記憶することができ、信号（例えば、ＭＰＴ、ＮＭＩ）を、インターセプトされたトランザクションの発信元（例えば、プロセッサ３２０）に供給することができる。そうでない場合、アドレスロジック３３２は、トランザクションが仮想化ロジック３３０を通って、正常にハンドリングされるシステムファブリック３４０に流れることを可能にすることができる。
【００３６】
ハンドラがプロセッサ３２０によって実行される前に、いくつかのメモリアクセストランザクション（例えば、読み出し、書き込み）を発行することができるので、仮想化ロジック３３０は、読み出し及び／又は書き込みに関連したデータをデータストア３３４に記憶することができる。一例では、実際の読み出しトランザクション及び書き込みトランザクションをデータストア３３４に記憶することができる。データストア３３４は、トランザクションのインターセプトとプロセッサ３２０によるハンドラの実行との間に発生し得る最大数の書き込みを記憶するのに十分な大きさとなるように構成することができる。これに加えて、データストア３３４は、トランザクションの順序を維持することを容易にするように構成することもできる。
【００３７】
プロセッサ３２０が、インターセプトされたトランザクションでストールすることを防止するために、仮想化ロジック３３０はトランザクションに応答する（acknowledge）ことができる。例えば、仮想化ロジック３３０は、読み出しトランザクションをインターセプトしたことに応答して、読み出し延期応答を生成することができる。同様に、仮想化ロジック３３０は、書き込みトランザクションをインターセプトしたことに応答して、記入応答を生成することもできる。
【００３８】
方法例は、図４及び図５のフロー図を参照することによって、より良く理解することができる。説明を簡単にするために、図示した方法論は、一続きのブロックとして図示して説明されるが、いくつかのブロックは、図示して説明する順序とは異なる順序で、且つ／又は、他のブロックと同時に行うことができるので、方法論は、ブロックの順序によって限定されるものではないことが理解されるべきである。その上、図示したすべてのブロックよりも少ないブロックしか、方法論の例を実施するのに必要とされない場合がある。さらに、追加された方法論及び／又は代替的な方法論は、図示しない追加されたブロックを使用することができる。
【００３９】
フロー図では、ブロックは、ロジックと共に実施できる「処理ブロック」を示す。この処理ブロックは、方法のステップ及び／又はその方法のステップを実行するための装置の要素を表すことができる。フロー図は、どの特定のプログラミング言語、方法論、又はスタイル（例えば、手続型、オブジェクト指向型）のシンタックスも示すものではない。逆に、フロー図は、当業者が、図示した処理を実行するためのロジックを開発するのに使用できる機能的な情報を示す。いくつかの例では、一時変数、ルーチンループ等のプログラム要素が示されないことが理解されよう。さらに、電子アプリケーション及びソフトウェアアプリケーションは、図示したシーケンスとは異なる他のシーケンスで図示したブロックを実行できるように、且つ／又は、ブロックを結合したり複数のコンポーネントに分割したりできるように、動的で柔軟なプロセスを含むことができることも理解されよう。プロセスは、マシン語、手続型技法、オブジェクト指向型技法、及び／又は人工知能技法のようなさまざまなプログラミング手法を使用して実施できることが理解されよう。
【００４０】
図４は、外部アドレストラップを介して、ハードウェアに基づくオフチップ仮想化をサポートするための方法例４００を示している。方法４００は、４１０において、インターセプトロジックを初期化することを含む。このインターセプトロジックは、内部仮想化サポートを含まないプロセッサに動作可能に接続するように構成される。一例では、インターセプトロジックを初期化することは、仮想デバイスに関連したアドレスをインターセプトロジックに提供することを含むことができる。インターセプトロジックは、アドレスが安全なアドレス範囲に配置されたハードウェアレジスタを含むことができる。したがって、インターセプトロジックレジスタは、信頼された仮想化ソフトウェアにのみ利用可能とすることができ、オペレーティングシステム及び／又はアプリケーションレベルコードには利用可能とすることができない。
【００４１】
また、方法４００は、４２０において、プロセッサにより生成された入出力要求をインターセプトすることも含む。このインターセプトすることは、入出力要求がプロセッサを出た後であって、入出力要求が目的の宛先に到着する前に行われる。一例では、入出力要求をインターセプトすることは、入出力要求を受け取ること、入出力要求に関連したアドレスを検査すること、及び、入出力要求に関連したアドレスに少なくとも部分的に基づいて入出力要求を選択的に送ること、を含むことができる。例えば、仮想デバイスに関連した入出力要求はデータストアに記憶することができる一方、物理デバイスに関連した入出力要求は物理デバイスに提供することができる。一例では、入出力トランザクションをインターセプトすることは、仮想デバイスに関連したデバイスドライバにアクセス可能なロケーションに入出力要求を記憶することも含むことができる。
【００４２】
また、方法４００は、４３０において、信号を選択的に生成してプロセッサに供給することも含む。信号が生成されて供給されるかどうかは、目的の宛先が仮想デバイスであるかどうかに少なくとも部分的に依存する。一例では、信号を選択的に生成してプロセッサに供給することは、ＭＰＴを生成することを含むことができる。別の例では、信号を選択的に生成してプロセッサに供給することは、マスク不可能割り込み（ＮＭＩ）を生成することを含む。ＭＰＴの例では、ＭＰＴは、仮想化ソフトウェアを起動して、プロセッサを安全モードに設定することになる。次に、仮想化ソフトウェアは、記憶されたトランザクションに順にアクセスして、それらトランザクションを実行することができる。
【００４３】
一例では、方法４００は、インターセプトされたトランザクションを生成するプロセッサが２つの制約条件を満たすことを必要とすることができる。第１に、保留中の読み出しが存在している間、ＭＰＴが採用されること。第２に、保留中の読み出しが満たされるまで、当該保留中の読み出しが後続の読み出し及び書き込みをブロックするようにメモリマップド入出力が強く順序付けられていること。
【００４４】
信号を生成することに加えて、方法４００は、インターセプトされたトランザクションに応答することも含むことができる。例えば、入出力トランザクションをインターセプトすることは、プロセッサからの読み出し要求に対する応答（例えば、読み出し延期）を提供することを含むことができる。同様に、入出力トランザクションをインターセプトすることは、プロセッサからの書き込み要求に対する応答（例えば、書き込み記入）を提供することを含むことができる。プロセッサ、オペレーティングシステム、及びトランザクションが異なれば、方法４００によって提供される応答も異なる場合があることが理解されるべきである。
【００４５】
図４は、さまざまな動作が連続的に行われることを示しているが、図４に示すさまざまな動作はほぼ並列に行うことができることが理解されるべきである。例示として、第１のプロセスが、インターセプトロジックを初期化することができる。同様に、第２のプロセスが、入出力トランザクションをインターセプトすることができると同時に、第３のプロセスが信号を選択的に生成することができる。３つのプロセスを説明したが、より多くの個数又はより少ない個数のプロセスを使用できること、並びに、軽量プロセス、普通のプロセス、スレッド、及び他の手法を使用できることが理解されるべきである。場合によっては、他の方法例も、ほぼ並列に行われる動作を含むことができることが理解されるべきである。
【００４６】
図５は、外部アドレストラップを介して、ハードウェアに基づくオフチップ仮想化をサポートするための方法５００を示している。方法５００は、５１０において、インターセプトロジックを初期化することを含む。インターセプトロジックを初期化することは、例えば、インターセプトロジックのレジスタに値（複数可）を書き込むこと、インターセプトロジックがトラップを生成することになるアドレス範囲を確立すること、インターセプトロジックがトラップを生成することになるトランザクションタイプを確立すること等を含むことができる。また、方法５００は、５２０において、トランザクションを受け取ることも含むことができる。トランザクションは、例えば、メモリアクセストランザクション、入出力トランザクション、及び／又は他のトランザクションとすることができる。５３０において、トランザクションが仮想化デバイスを対象としたものであるかどうかに関する判断が行われる。この判断は、５１０において確立されたアドレス範囲及び／又はトランザクションタイプに少なくとも部分的に基づくことができる。５３０における判断がＮｏ（いいえ）である場合、５６０において、トランザクションをシステムファブリックのような宛先に送ることができる。しかし、５３０における判断がＹｅｓ（はい）である場合、５４０において、仮想デバイスハンドラによるその後の処理のためにトランザクションに関連したデータを記憶することができる。次に、５５０において、信号を生成して、トランザクションプロデューサに供給することができる。５７０において、別のトランザクションが処理されるかどうかに関する判断を行うことができる。この判断がＮｏである場合、処理は終了することができる。そうでない場合、処理は５２０に戻ることができる。
【００４７】
一例では、方法論は、コンピュータ可読媒体に設けられたプロセッサ実行可能命令及び／又はプロセッサ実行可能オペレーションとして実施することができる。したがって、一例では、コンピュータ可読媒体は、インターセプトロジックを初期化することを含む方法を実行するように動作できるプロセッサ実行可能命令を記憶することができる。このインターセプトロジックは、内部仮想化サポートを含まないプロセッサに動作可能に接続されるように構成される。インターセプトロジックを初期化することは、仮想デバイスに関連したアドレスをインターセプトロジックに提供することを含むことができる。また、この方法は、プロセッサによって生成されたトランザクション（例えば、入出力要求）をインターセプトすることも含むことができる。インターセプトすることは、入出力要求がプロセッサを出た後であって、入出力要求が目的の宛先に到着する前に行うことができる。入出力要求をインターセプトすることは、入出力要求を受け取ること、入出力要求に関連したアドレスを検査すること、及び、入出力要求に関連したアドレスに少なくとも部分的に基づいて入出力要求を選択的に送ること、を含むことができる。また、この方法は、仮想デバイスに関連したデバイスドライバにとってアクセス可能なロケーションに入出力要求を記憶することも含むことをできる。また、この方法は、目的の宛先が仮想デバイスであるかどうかに少なくとも部分的に基づいてＭＰＴを選択的に生成することも含むことができる。また、この方法は、そのトランザクションが割り込みを受けたリクエスタ（requestor）にトランザクションの終了を通知することも含むことができる。上記方法は、コンピュータ可読媒体に設けられるものとして説明されているが、本明細書で説明した他の方法例もコンピュータ可読媒体に設けることができることが理解されるべきである。
【００４８】
図６は、コンピュータ６００を示している。このコンピュータ６００は、バス６０８によって動作可能に接続された、プロセッサ６０２、メモリ６０４、及び入出力ポート６１０を含む。一例では、コンピュータ６００は、外部アドレストラップロジック６３０を含むことができる。この外部アドレストラップロジック６３０は、プロセッサ６０２が内部仮想化サポートを有しない場合に、プロセッサ６０２の仮想化を提供することを容易にするように構成される。したがって、外部アドレストラップロジック６３０は、コンピュータ６００においてハードウェアとして実施されようが、ハードウェア及びファームウェアとして実施されようが、内部仮想化ロジックを含まないプロセッサによって生成されたメモリトランザクションにアクセスするための手段を提供することができる。また、外部アドレストラップロジック６３０は、メモリトランザクションが仮想デバイスを対象としたものであるかどうかを判断するための手段、及び、デバイスドライバを起動して仮想デバイスのメモリトランザクションを処理するようにプロセッサ６０２に信号で伝えるための手段も提供することができる。
【００４９】
プロセッサ６０２は、デュアルマイクロプロセッサアーキテクチャ及び他のマルチプロセッサアーキテクチャを含むさまざまなプロセッサとすることができる。メモリ６０４は、揮発性メモリ及び／又は不揮発性メモリを含むことができる。不揮発性メモリには、ＲＯＭ、ＰＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ等が含まれ得るが、これらに限定されるものではない。揮発性メモリには、例えば、ＲＡＭ、同期ＲＡＭ（ＳＲＡＭ）、ダイナミックＲＡＭ（ＤＲＡＭ）、同期ＤＲＡＭ（ＳＤＲＡＭ）、ダブルデータレートＳＤＲＡＭ（ＤＤＲ  ＳＤＲＡＭ）、及びダイレクトＲＡＭバスＲＡＭ（ＤＲＲＡＭ）が含まれ得る。
【００５０】
ディスク６０６は、例えば入出力インターフェース（例えば、カード、デバイス）６１８及び入出力ポート６１０を介して、コンピュータ６００に動作可能に接続することができる。ディスク６０６には、磁気ディスクドライブ、ソリッドステートディスクドライブ、フロッピィディスクドライブ、テープドライブ、Ｚｉｐドライブ、フラッシュメモリカード、及び／又はメモリスティックのようなデバイスが含まれ得るが、これらに限定されるものではない。さらに、ディスク６０６には、ＣＤ−ＲＯＭドライブ、記録型ＣＤドライブ（ＣＤ−Ｒドライブ）、書き換え型ＣＤドライブ（ＣＤ−ＲＷドライブ）、及び／又はディジタルビデオＲＯＭドライブ（ＤＶＤ  ＲＯＭ）のような光ドライブが含まれ得る。メモリ６０４は、例えば、プロセス６１４及び／又はデータ６１６を記憶することができる。ディスク６０６及び／又はメモリ６０４は、コンピュータ６００の資源の制御及び割り当てを行うオペレーティングシステムを記憶することができる。
【００５１】
バス６０８は、単一の内部バス相互接続アーキテクチャ及び／又は他のバスアーキテクチャ若しくはメッシュアーキテクチャとすることができる。単一のバスが示されているが、コンピュータ６００は、図示しない他のバス（例えば、ＰＣＩＥ，ＳＡＴＡ、インフィニバンド、１３９４、ＵＳＢ、イーサネット（登録商標））を使用して、さまざまなデバイス、ロジック、及び周辺機器と通信できることが理解されるべきである。バス６０８は、さまざまなタイプのものとすることができ、このさまざまなタイプには、メモリバス若しくはメモリコントローラ、周辺バス若しくは外部バス、クロスバースイッチ、及び／又はローカルバスが含まれるが、これらに限定されるものではない。ローカルバスは、さまざまなものとすることができ、このさまざまなものには、業界標準アーキテクチャ（ＩＳＡ）バス、マイクロチャネルアーキテクチャ（ＭＳＡ）バス、拡張ＩＳＡ（ＥＩＳＡ）バス、周辺機器相互接続（ＰＣＩ）バス、ユニバーサルシリアルバス（ＵＳＢ）、及び小型コンピュータシステムインターフェース（ＳＣＳＩ）バスが含まれるが、これらに限定されるものではない。
【００５２】
コンピュータ６００は、Ｉ／Ｏインターフェース６１８及び入出力ポート６１０を介して入出力デバイスと相互作用することができる。この入出力デバイスには、キーボード、マイク、ポインティング／選択デバイス、カメラ、ビデオカード、ディスプレイ、ディスク６０６、ネットワークデバイス６２０等が含まれ得るが、これらに限定されるものではない。入出力ポート６１０には、シリアルポート、パラレルポート、及びＵＳＢポートが含まれ得るが、これらに限定されるものではない。また、コンピュータ６００は、さまざまな仮想デバイス（図示せず）とも相互作用することができる。
【００５３】
コンピュータ６００は、ネットワーク環境で動作することができ、したがって、Ｉ／Ｏインターフェース６１８及び／又はＩ／Ｏポート６１０を介してネットワークデバイス６２０に接続することができる。ネットワークデバイス６２０を通じて、コンピュータ６００はネットワークと相互作用することができる。ネットワークを通じて、コンピュータ６００をリモートコンピュータと論理的に接続することができる。コンピュータ６００が相互作用することができるネットワークには、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、及び他のネットワークが含まれるが、これらに限定されるものではない。ネットワークデバイス６２０は、ＬＡＮ技術に接続することができる。このＬＡＮ技術には、ファイバ分散データインターフェース（ＦＤＤＩ）、銅分散データインターフェース（ＣＤＤＩ）、イーサネット（登録商標、ＩＥＥＥ８０２．３）、トークンリング（登録商標、ＩＥＥＥ８０２．５）、無線コンピュータ通信（ＩＥＥＥ８０２．１１）、Ｂｌｕｅｔｏｏｔｈ（登録商標、ＩＥＥＥ８０２．１５．１）、Ｚｉｇｂｅｅ（登録商標、ＩＥＥＥ８０２．１５．４）等が含まれるが、これらに限定されるものではない。同様に、ネットワークデバイス６２０は、ＷＡＮ技術にも接続することができる。このＷＡＮ技術には、ポイントツーポイントリンク、サービス統合ディジタル網（ＩＳＤＮ）のような回線交換網、パケット交換網、及びディジタル加入者線（ＤＳＬ）が含まれるが、これらに限定されるものではない。個々のネットワークタイプを説明しているが、ネットワークを介した通信、ネットワークによる通信、及び／又はネットワークを通じた通信は、通信を組み合わせたもの及び通信を混合したものを含むことができることが理解されるべきである。
【００５４】
図７は、一例の画像形成デバイス７００を示している。この画像形成デバイス７００は、本明細書で説明したシステム例と同様の外部アドレストラップロジック７１０を含む。この外部アドレストラップロジック７１０は、本明細書で説明した方法のような実行可能な方法を実行するように構成することができる。外部アドレストラップロジック７１０は、永久的に、且つ／又は、取り外し可能に（removably）画像形成デバイス７００に取り付けることができる。
【００５５】
画像形成デバイス７００は、レンダリングされる印刷データを受け取ることができる。したがって、画像形成デバイス７００は、印刷データを記憶するか、又は、より一般的には画像処理用に使用されるように構成されるメモリ７２０も含むことができる。また、画像形成デバイス７００は、印刷データからプリンタ準備画像を生成するように構成されるレンダリングロジック７３０も含むことができる。レンダリングは、含まれるデータのフォーマット及び画像デバイスのタイプに基づいて変化する。一般に、レンダリングロジック７３０は、高レベルデータを表示用又は印刷用のグラフィカル画像（例えば、印刷準備画像）に変換する。例えば、１つの形態は、３次元オブジェクト又は３次元シーンの数学的モデルを採用して、その数学的モデルをビットマップ画像に変換するレイトレーシングである。別の例は、ＨＴＭＬを表示／印刷用の画像に変換するプロセスである。画像形成デバイス７００は、レンダリングする必要のない印刷準備データを受け取ることもでき、したがって、レンダリングロジック７３０は、いくつかの画像形成デバイスには現れないことがあることが理解されるべきである。
【００５６】
また、画像形成デバイス７００は、印刷準備画像から印刷媒体に画像を生成するように構成される画像形成メカニズム７４０も含むことができる。画像形成メカニズム７４０は、画像デバイス７００のタイプに基づいて変化することがあり、画像形成メカニズム７４０には、レーザ画像メカニズム、他のトナーに基づく画像メカニズム、インクジェットメカニズム、ディジタル画像メカニズム、又は他の画像再現エンジンが含まれ得る。画像形成デバイス７００のオペレーションを制御するロジックで実施されるプロセッサ７５０も含むことができる。一例では、プロセッサ７５０は、Ｊａｖａ(登録商標)命令を実行することができるロジックを含む。画像形成デバイス７００の他のコンポーネントは、本明細書では説明しないが、他のコンポーネントには、媒体ハンドリング／ストレージメカニズム、センサ、コントローラ、及び画像プロセスに関与する他のコンポーネントが含まれ得る。
【００５７】
次に図８を参照して、アプリケーションプログラミングインターフェース（ＡＰＩ）８００が示されている。このＡＰＩ８００は、プロセッサのオフチップハードウェアに基づく仮想化をサポートするためのシステム８１０へのアクセスを提供する。ＡＰＩ８００は、例えば、プログラマ８２０及び／又はプロセス８３０が、システム８１０によって実行される処理にアクセスするのに使用することができる。例えば、ＡＰＩ８００が存在することによってプログラムの記述が容易にされる場合、プログラマ８２０は、システム８１０にアクセスする（例えば、システム８１０のオペレーションを起動する、システム８１０のオペレーションを監視する、システム８１０のオペレーションを制御する）ためのプログラムを記述することができる。プログラマ８２０は、システム８１０の内部を理解する必要があるのではなく、単にシステム８１０のインターフェースを学ぶ必要があるだけである。これによって、システム８１０の機能を公開すると同時に、その機能をカプセル化することが容易になる。
【００５８】
同様に、ＡＰＩ８００は、データ値のシステム８１０への提供、及び／又は、システム８１０からのデータ値の取り出しを行うのに使用することもできる。例えば、仮想メモリアクセスを処理するプロセス８３０は、例えば、ＡＰＩ８００で提供される呼び出し（call）を使用することにより、ＡＰＩ８００を介してトラップ可能なアドレスデータをシステム８１０に提供することができる。したがって、ＡＰＩ８００の一例では、１組のアプリケーションプログラミングインターフェースをコンピュータ可読媒体に記憶することができる。このインターフェースは、プログラマ、コンピュータ、コンポーネント、ロジック等がシステム８１０にアクセスして、仮想デバイスに関連したトランザクションを外部でトラップするのに使用することができる。このインターフェースは、トラップ可能なアドレスデータを通信する第１のインターフェース８４０、トラップ可能なノードデータを通信する第２のインターフェース８５０、及びトランザクションデータを通信する第３のインターフェース８６０を含むことができるが、これらに限定されるものではない。この場合、トランザクションデータは、そのトランザクションに関連したトラップ可能なアドレスデータ及び／又はトラップ可能なノードデータに基づいて、トラップ可能なトランザクションとして識別することができる。
【００５９】
図９は、外部仮想化ロジック９５０に動作可能に接続された一例のプロセッサ９００を示している。このプロセッサ９００は、メモリトランザクションを生成するように構成することができる。プロセッサ９００は、コンピュータ実行可能命令を処理するように構成される命令処理ロジック９１０を含むことができる。この命令処理ロジック９１０は、中央演算処理装置の従来の命令処理ロジックのように動作することができる。また、プロセッサ９００は、トランザクション組み立てロジック９２０も含むことができる。このトランザクション組み立てロジック９２０は、コンピュータ実行可能命令の処理に関連したメモリアクセストランザクションを生成するように構成される。これに加えて、プロセッサ９００は、ポート（例えば、９４０、９４２、９４４）を含むこともできる。このポートを通じて、メモリアクセストランザクションを提供することができる。これらのポートの少なくとも１つ（例えば、９４０）は、仮想化ロジック通信ポートとして専用化することができる。３つのポートが示されているが、これよりも多くの個数及び／又はこれよりも少ない個数のポートを使用できることが理解されるべきである。また、プロセッサ９００は、トランザクション組み立てロジック９２０をポートに動作可能に接続するように構成されるクロスバー９３０も含むことができる。
【００６０】
図１及び図２に示すプロセッサと同様に、プロセッサ９００も、内部仮想化サポートを含まない。例えば、プロセッサ９００は、仮想デバイスに関連したトラップアドレスの内部サポートを有するように構成されていない。一方、プロセッサ９００は、トランザクション組み立てロジック９２０、クロスバー９３０、及びポート９４０〜９４４を含む。これらは、さまざまなトランザクションがどのポートを通じて提供されるかの選択を容易にするように配置される。一例では、一定のアドレス範囲に関連したすべてのトランザクションは、第１のポート（例えば、９４０）を通じて提供することができる一方、そのアドレス範囲に関連しない他のすべてのトランザクションは、他のポート（例えば、９４２、９４４）を通じて提供される。したがって、第１のポートは、一定のアドレス範囲に関連したトランザクションを仮想化ロジック９５０に配信するのに使用することができる。このアドレス範囲が一定の方法で構成される場合、仮想デバイスを対象としたトランザクションのみが仮想化ロジック９５０に提供される。
【００６１】
仮想化ロジック９５０は、プロセッサ９００の外部に配置することができ、仮想化ロジック通信ポート（例えば、９４０）によってプロセッサ９００に動作可能に接続することができる。仮想化ロジック９５０は、メモリ読み出しトランザクション及び／又はメモリ書き込みトランザクションを記憶するように構成されるデータストアを含むことができる。また、仮想化ロジック９５０は、仮想化ロジック９５０がメモリアクセストランザクションを受け取ったことに応答して、信号をプロセッサ９００に選択的に供給するように構成されるトランザクションロジックも含むことができる。この信号は、さまざまな形態を取ることができる。一例では、仮想化ロジック９５０は、メモリトランザクションを受け取ったことに応答して、プロセッサ９００にＭＰＴを提供することができる。別の例では、仮想化ロジック９５０は、メモリトランザクションを受け取ったことに応答して、プロセッサ９００にＮＭＩを提供することができる。
【００６２】
プロセッサ９００は、仮想化ロジック９５０から信号（例えば、ＭＰＴ）を受け取ったことに応答して、ハンドラプロセスを呼び出すように構成することができる。このハンドラプロセスは、仮想化ロジック９５０のデータストアに記憶されたメモリ読み出しトランザクション及びメモリ書き込みトランザクションを順に実行するように、順に構成することができる。上述したように、仮想デバイスを対象にしたトランザクションは、ポート９４０を通じて仮想化ロジック９５０に提供することができる。他のトランザクションは、他のポート（例えば、９４２、９４４）を通じて、プロセッサ９００に動作可能に接続されたシステムファブリック９６０のような他のロケーションに提供することができる。
【００６３】
図１０は、外部ロジック１０３０に動作可能に接続されたプロセッサ１０００を示している。プロセッサ１０００は、メモリトランザクションを生成するように構成されるが、仮想デバイスに関連したトラップアドレスの内部サポートを有しない。したがって、外部ロジック１０３０は、プロセッサ１０００の仮想化サポートを提供することができる。
【００６４】
プロセッサ１０００は、コンピュータ実行可能命令を処理するように構成される命令処理ロジック１０１０を含む。また、プロセッサ１０００は、コンピュータ実行可能命令の処理に関連したメモリアクセストランザクションを生成するように構成されるトランザクション組み立てロジック１０２０も含む。例えば、コンピュータ実行可能命令は、或るメモリロケーションからの値を必要とすることがある。したがって、トランザクション組み立てロジック１０２０は、メモリからその値を取り出すためのトランザクションを生成することができる。トランザクション組み立てロジック１０２０は、第１のアドレス範囲に関連したメモリアクセストランザクションを第１のノードにマッピングし、第１のアドレス範囲外のアドレスに関連したメモリアクセストランザクションを別のノード（複数可）にマッピングするように構成することができる。トランザクションをノードにマッピングすることは、ノードアドレスデータをトランザクションに関連付けることを含むことができる。したがって、ノードアドレスと仮想デバイスとの関係は、トランザクション組み立てロジック１０２０によって確立することができる。
【００６５】
ロジック１０３０は、プロセッサ１０００の外部に配置することができ、プロセッサ１０００に動作可能に接続することができる。ロジック１０３０は、トラップ可能なノードアドレスを記憶するように構成されるデータストア（図示せず）を含むことができる。また、ロジック１０３０は、プロセッサ１０００からメモリアクセストランザクションを受け取るように構成されるノード比較ロジック１０４０も含むことができる。このノード比較ロジック１０４０は、受け取ったトランザクションがトラップ可能なノードアドレスを参照する時にトラップを選択的に生成することができる。
【００６６】
また、ロジック１０３０は、第２のデータストア（図示せず）も含むことができる。この第２のデータストアは、ノード比較ロジック１０４０がトラップを生成したメモリ読み出しトランザクション及び／又はメモリ書き込みトランザクションに関連したデータを記憶するように構成される。また、ロジック１０３０は、トランザクションロジック（図示せず）も含むことができる。このトランザクションロジックは、ノード比較ロジック１０４０がトラップを生成したことに応答して、プロセッサ１０００に信号を選択的に供給するように構成される。一例では、外部ロジック１０３０のトランザクションロジックは、ノード比較ロジック１０４０がトラップを生成したことに応答して、プロセッサ１０００にＭＰＴトランザクションを提供するように構成することができる。別の例では、このトランザクションロジックは、ノード比較ロジック１０４０がトラップを生成したことに応答して、プロセッサ１０００にＮＭＩを提供するように構成することができる。本明細書で説明した他のロジックと同様に、外部ロジック１０３０も、いくつかのトランザクション（例えば、仮想デバイスに関連したトランザクション）に対してトラップを生成できると同時に、他のトランザクションが他の宛先へ通過して流れることを可能にすることができる。したがって、一例では、システムファブリック１０５０を、外部ロジック１０３０によってトラップされないいくつかのトランザクションの宛先とすることができる。
【００６７】
システム例、方法例等を、例を説明することによって示し、これらの例をかなり詳細に説明してきたが、添付の特許請求の範囲をこのような詳細なものに制限することも、多少なりとも限定することも、出願人の意図ではない。もちろん、本明細書で説明したシステム、方法等を説明するために、コンポーネント又は方法論の考えられるあらゆる組み合わせを説明することは不可能である。別の利点及び変更は、当業者には直ちに明らかであろう。したがって、本発明は、図示して説明した特定の詳細、代表的な装置、及び例示した例に限定されるものではない。したがって、この出願は、添付した特許請求の範囲内に入る改変、変更、及び変形を包含するように意図されている。さらに、上記説明は、本発明の範囲を限定するように意図されていない。逆に、本発明の範囲は、添付の特許請求の範囲及びその等価物によって画定されることになる。
【００６８】
用語「含む」は、発明を実施するための最良の形態又は特許請求の範囲で使用される限りにおいて、用語「備える」が特許請求の範囲で暫定的な（transitional）用語として使用された場合にその用語が解釈されるのと同様に、包含的であるように意図されている。さらに、用語「又は／若しくは」は、発明を実施するための最良の形態又は特許請求の範囲で使用される限りにおいて（例えば、Ａ又はＢ）、「Ａ若しくはＢ又は双方」を意味するように意図されている。出願人が、「Ａ又はＢのみであって、双方ではない」ことを示すように意図している場合、用語「Ａ又はＢのみであって、双方ではない」が使用されることになる。したがって、本明細書における用語「又は／若しくは」の使用は、包含的な使用であって、排他的な使用ではない。これについては、Bryan A. Garner著「A Dictionary of Modern Legal Usage 624 (2d. Ed. 1995)」を参照されたい。
【図面の簡単な説明】
【００６９】
【図１】ハードウェアに基づくオフチップ仮想化を、外部アドレストラップを介してサポートするための一例の仮想化ロジックを示す図である。
【図２】一例の仮想化ロジックを示す図である。
【図３】別の例の仮想化ロジックを示す図である。
【図４】ハードウェアに基づくオフチップ仮想化を、外部アドレストラップを介してサポートするための一例の方法を示す図である。
【図５】ハードウェアに基づくオフチップ仮想化を、外部アドレストラップを介してサポートするための別の例の方法を示す図である。
【図６】本明細書に示すシステム例及び方法例が動作できる一例の計算環境を示す図である。
【図７】本明細書に示すシステム例及び方法例が動作できる一例の画像形成デバイスを示す図である。
【図８】一例のアプリケーションプログラミングインターフェース（ＡＰＩ）を示す図である。
【図９】外部仮想化ロジックに動作可能に接続された一例のプロセッサを示す図である。
【図１０】外部仮想化ロジックに動作可能に接続された別の例のプロセッサを示す図である。
【符号の説明】
【００７０】
１１０・・・プロセッサ
１２０・・・仮想化ロジック
１３０・・・仮想デバイス
１４０・・・物理デバイス
２１０・・・システムメモリ
２１２・・・デバイスベースアドレス
２１４・・・デバイス状態
２２０・・・プロセッサ
２２２・・・ブートファームウェア
２２４・・・オペレーティングシステム
２２６・・・ハイパーバイザ
２３０・・・仮想化ロジック
２３２・・・トラップアドレス
２３４・・・アドレス比較ロジック
２３６・・・読み出しデータ
２３８・・・書き込みデータ
２３９・・・トランザクションロジック
２４０・・・システムファブリック
３１０・・・システムメモリ
３１２・・・アドレスデータ
３１４・・・状態データ
３２０・・・プロセッサ
３２２・・・ファームウェア
３２４・・・オペレーティングシステム
３２６・・・ハイパーバイザ
３３０・・・仮想化ロジック
３３２・・・アドレスロジック
３３４・・・読み出し／書き込みデータストア
３４０・・・システムファブリック
６００・・・コンピュータ
６０２・・・プロセッサ
６０４・・・メモリ
６０６・・・ディスク
６０８・・・バス
６１０・・・Ｉ／Ｏポート
６１４・・・プロセス
６１６・・・データ
６１８・・・Ｉ／Ｏインターフェース
６２０・・・ネットワークデバイス
６３０・・・外部アドレストラップロジック
７００・・・画像形成デバイス
７１０・・・仮想化ロジック
７２０・・・メモリ
７３０・・・レンダリングロジック
７４０・・・画像形成メカニズム
７５０・・・プロセッサ
８００・・・アプリケーションプログラミングインターフェイス（ＡＰＩ）
８１０・・・システム
８２０・・・プログラマ
８３０・・・プロセス
８４０・・・トラップ可能なアドレスデータ
８５０・・・トラップ可能なノードデータ
８６０・・・トランザクションデータ
９００・・・プロセッサ
９１０・・・命令処理ロジック
９２０・・・トランザクション組み立てロジック
９３０・・・クロスバー
９４０，９４２，９４４，・・・ポート
９５０・・・仮想化ロジック
９６０・・・システムファブリック
１０００・・・プロセッサ
１０１０・・・命令処理ロジック
１０２０・・・トランザクション組み立てロジック
１０３０・・・外部ロジック
１０４０・・・ノード比較ロジック
１０５０・・・システムファブリック
【図１】
2006155624.tif 000003
【図２】
2006155624.tif 000004
【図３】
2006155624.tif 000005
【図４】
2006155624.tif 000006
【図５】
2006155624.tif 000007
【図６】
2006155624.tif 000008
【図７】
2006155624.tif 000009
【図８】
2006155624.tif 000010
【図９】
2006155624.tif 000011
【図１０】
2006155624.tif 000012