"I/O装置に関連するアドレス変換トランザクションと関連付けられるプロセスアドレス空間IDを用いて、ゲスト仮想アドレスGVAを、対応するゲスト物理アドレスGPAに変換するステップと、前記GPAを、前記アドレス変換トランザクションと関連付けられる装置IDに従って、システムアドレス変換テーブルを用いて、対応するシステム物理アドレスSPAに変換するステップと、を含む方法。GVAからGPAへの複数の変換を、GPAからSPAへの変換ごとにカスケードするステップをさらに含む、請求項1に記載の方法。所与のレベルのゲストページテーブルに対して、前記GVAは、次のレベルでのゲストページテーブルのルートを指すゲストルートページテーブルポインタと関連付けられるゲストページテーブルエントリにアクセスするために、前記ゲストページテーブルに索引を付けるように動作可能である、請求項1に記載の方法。GPAからSPAへの変換を用いて、前記ゲストページテーブルエントリを前記ゲストルートページテーブルポインタに変換するステップをさらに含む、請求項3に記載の方法。所与のレベルのネスト化されたページテーブルに対して、前記GPAは、次のレベルでのネスト化されたページテーブルのルートを指すネスト化されたルートページテーブルポインタと関連付けられる、ネスト化されたページテーブルエントリにアクセスするために、前記ネスト化されたページテーブルに索引を付けるように動作可能である、請求項4に記載の方法。前記ネスト化されたページテーブルエントリはSPAである、請求項5に記載の方法。前記GVAを変換するステップは、装置テーブルエントリのゲストポインタにアクセスするステップをさらに含み、前記GPAを変換するステップは、前記装置テーブルエントリのシステムポインタにアクセスするステップをさらに含む、請求項1に記載の方法。前記GVAの変換は、ゲストオペレーティングシステムOSによって管理可能であり、前記GPAの変換は、ハイパーバイザによって管理可能である、請求項1に記載の方法。I/O装置に関連するアドレス変換トランザクションと関連付けられるプロセスアドレス空間IDを用いて、ゲスト仮想アドレスGVAを、対応するゲスト物理アドレスGPAに変換するように動作可能な入力/出力メモリ管理ユニットIOMMUを備え、前記IOMMUは、前記GPAを、前記アドレス変換トランザクションと関連付けられる装置IDに従って、システムアドレス変換テーブルを用いて、対応するシステム物理アドレスSPAに変換するように動作可能である、システム。GVAからGPAへの複数の変換を、GPAからSPAへの変換ごとにカスケードするように動作可能なモジュールをさらに備える、請求項9に記載のシステム。所与のレベルのゲストページテーブルに対して、前記GVAは、次のレベルでのゲストページテーブルのルートを指すゲストルートページテーブルポインタと関連付けられるゲストページテーブルエントリにアクセスするために、前記ゲストページテーブルに索引を付けるように動作可能である、請求項9に記載のシステム。GPAからSPAへの変換を用いて、前記ゲストページテーブルエントリを前記ゲストルートページテーブルポインタに変換するように動作可能なモジュールをさらに備える、請求項11に記載のシステム。所与のレベルのネスト化されたページテーブルに対して、前記GPAは、次のレベルでのネスト化されたページテーブルのルートを指すネスト化されたルートページテーブルポインタと関連付けられる、ネスト化されたページテーブルエントリにアクセスするために、前記ネスト化されたページテーブルに索引を付けるように動作可能である、請求項12に記載のシステム。前記ネスト化されたページテーブルエントリはSPAである、請求項13に記載のシステム。前記IOMMUは、装置テーブルエントリのゲストポインタにアクセスすることによって、前記GVAを変換するように動作可能であり、前記IOMMUは、前記装置テーブルエントリのシステムポインタにアクセスすることによって、前記GPAを変換するように動作可能である、請求項9に記載のシステム。ゲストオペレーティングシステムOSは、前記GVAの変換を管理し、ハイパーバイザは、前記GPAの変換を管理する、請求項9に記載のシステム。命令を格納するコンピュータ可読媒体であって、前記命令は、実行されるときに、I/O装置に関連するアドレス変換トランザクションと関連付けられるプロセスアドレス空間IDに基づいて、ゲスト仮想アドレスGVAを、対応するゲスト物理アドレスGPAに変換することと、前記アドレス変換トランザクションと関連付けられた装置IDに基づいて、前記GPAを、対応するシステム物理アドレスSPAに変換することと、を含む方法を行う、コンピュータ可読媒体。ゲストオペレーティングシステムOSは、前記GVAの変換を管理し、ハイパーバイザは、前記GPAの変換を管理する、請求項17に記載のコンピュータ可読媒体。したがって、必要とされるのは、コンピューティングシステムにおけるゲストOS用のアドレス変換を提供する能力である。GPUと、アクセラレーテッドプロセッシングユニットAPUと、GPUによる汎目的計算GPGPUとは、この分野において一般に用いられる用語であるが、アクセラレーテッド処理デバイスAPDは、より広い表現とみなされる。例えば、APDは、従来のCPU、従来のGPU、ソフトウェアおよび/またはこれらの組合せと比較して高速化された方法で行われる、グラフィックス処理タスク、データ並列タスク、またはネスト化されたデータ並列タスクの高速化に関連する機能および演算を実行する任意のハードウェアおよび/またはソフトウェアの協働的集合体を指す。本発明の実施形態は、ある特定の状況では、I/Oデバイス用のメモリアドレス変換との関連でIOMMU二層アドレッシングを行うための方法、システムおよびコンピュータ可読媒体に関する。例示的な方法は、I/Oデバイスに関連するアドレス変換トランザクションと関連付けられるプロセスアドレス空間IDに従うゲストアドレス変換テーブルを用いて、ゲスト仮想アドレスGVA:guestvirtualaddressを、対応するゲスト物理アドレスGPA:guestphysicaladdressに変換するステップを含む。GPAは、アドレス変換トランザクションと関連付けられる装置IDに従って、システムアドレス変換テーブルを用いて、対応するシステム物理アドレスSPA:systemphysicaladdressに変換される。本発明の追加的な特徴および利点、ならびに本発明の様々な実施形態の構造および動作は、添付の図面を参照して以下で詳細に説明される。本発明は本明細書において説明される特定の実施形態に制限されないことに注意すべきである。係る実施形態は、例示目的のみのために本明細書において提示される。追加的実施形態は、本明細書に含まれる教示に基づいて当業者に明らかとなるであろう。添付の図面は、本明細書に組み込まれ本明細書の一部を構成するものであって、本発明を例示し、説明とともに、本発明の原理を説明し、当業者が本発明を実施することを可能にするように、さらに機能する。本発明の様々な実施形態は、添付の図面を参照して以下で説明される。なお、添付の図面の全体を通じて、同様の参照番号は同様の構成要素を参照するために用いられる。以下の詳細な説明においては、1つの実施形態、ある実施形態、例示的実施形態またはその他を参照することは、本明細書において説明される実施形態が、特定の特徴、構造または特性を有することを示すが、全ての実施形態がその特定の特徴、構造または特性を必ずしも含むとは限らない。さらに、係る語句は、同一の実施形態を参照するとは限らない。さらに、特定の特徴、構造または特性が1つの実施形態に関連して説明されるとき、係る特長、構造または特性を他の実施形態との関連で実施することは、明示されているか否かによらず、当業者の知識の範囲内であることが提起される。本発明の実施形態という用語は、本発明の実施形態の全部が検討の対象である特徴、特長または操作モードを含むことを必ずしも要求しない。代替的な実施形態が本発明の範囲から逸脱することなく考案され、本発明の既知の構成要素は、本発明の関連する詳細を不明瞭化しないために、必ずしも詳細に説明されるとは限らず、または省略され得る。加えて、本明細書において用いられる用語は、特定の実施形態を説明することのみを目的とし、本発明を制限することを意図するものではない。例えば、本明細書において用いられる単数形の1つのおよびそのは、内容的に明らかに単数のみを指す場合を除き、複数形をも含むことを意図するものである。本明細書において用いられる場合、含む、備える、包含するおよび/または有するという用語は、述べられた特徴、整数、ステップ、操作、構成要素および/またはコンポーネントが存在することを指定するが、1つまたは複数の他の特徴、整数、ステップ、操作、構成要素、コンポーネントおよび/またはこれらの群の存在または追加を除外しない。図1Aは、2つのプロセッサ、すなわちCPU102およびAPD104を含む統合化されたコンピューティングシステム100の例示的な図である。CPU102は、1つ以上のシングルコアまたはマルチコアCPUを含み得る。本発明の一実施形態において、システム100は、統合化されたプログラミング環境および実行環境を提供するために、CPU102およびAPD104を組み合わせた単一のシリコンダイまたはパッケージ上に形成される。この環境は、APD104が、いくつかのプログラミングタスクに対して、CPU102と同程度に流動的に用いられることを可能にする。しかし、CPU102およびAPD104が単一のシリコンダイ上に形成されることは、本発明の絶対的な要件ではない。いくつかの実施形態において、CPU102およびAPD104は別個に形成され、同一の基板または異なる基板上に搭載されることが可能である。1つの例において、システム100は、メモリ106、OSオペレーティングシステム108および通信インフラストラクチャ109を含む。オペレーティングシステム108および通信インフラストラクチャ109は、以下でより詳細に説明される。システム100は、カーネルモードドライバKMD:kernelmodedriver110と、ソフトウェアスケジューラSWS:softwarescheduler112と、例えば入出力メモリ管理ユニットIOMMU:input/outputmemorymanagementunit等のメモリ管理ユニット116とを含む。システム100の構成品は、ハードウェア、ファームウェア、ソフトウェアまたはこれらの任意の組合せとして実装され得る。当業者は、システム100が図1Aに示される実施形態において示されるものに加えて、またはこれらとは異なる、1つ以上のソフトウェアコンポーネント、ハードウェアコンポーネントおよびファームウェアコンポーネントを含み得ることを理解するであろう。1つの例において、KMD110等のドライバは、通常、ハードウェアが接続されたコンピュータバスまたは通信サブシステムを通してデバイスと通信する。呼び出しプログラムがドライバにおいてルーチンを呼び出すと、ドライバは、デバイスに対してコマンドを発行する。デバイスがドライバに対してデータを戻すと、ドライバは、元の呼び出しプログラムにおいてルーチンを呼び出し得る。1つの例において、ドライバは、ハードウェア依存的であり、オペレーティングシステム固有である。ドライバは、通常、任意の必要な非同期的時間依存性のハードウェアインターフェースに対して要求されるインタラプトハンドリングを提供する。デバイスドライバは、特に現代のマイクロソフトウィンドウズ登録商標プラットフォームにおいては、カーネルモードリング0またはユーザモードリング3において実行され得る。ドライバをユーザモードにおいて実行することの主要な利益は、安定性が改善されることである。なぜなら、不完全な形で書かれたユーザモードデバイスドライバは、カーネルメモリを上書きすることによってシステムをクラッシュさせることができないためである。一方、ユーザモード/カーネルモードの遷移は、通常、顕著な性能オーバーヘッドを与え、それにより、低レイテンシおよび高スループット要件目的のユーザモードドライバを阻害する。カーネルスペースは、システムコールの使用を通してのみ、ユーザモジュールからのアクセスが可能である。UNIX登録商標シェルまたは他のGUIベースのアプリケーションなどのエンドユーザプログラムは、ユーザスペースの一部である。これらのアプリケーションは、カーネルにサポートされた機能を通してハードウェアと相互作用する。CPU102は、制御プロセッサ、フィールドプログラマブルゲートアレイFPGA:fieldprogrammablegatearray、特定用途集積回路ASIC:applicationspecificintegratedcircuitまたはデジタルシグナルプロセッサDSP:digitalsignalprocessorのうち1つ以上を含み得る図示せず。CPU102は、例えば、コンピューティングシステム100の動作を制御する、OS108、KMD110、SWS112およびアプリケーション111を含む制御ロジックを実行する。この例示的な実施形態において、CPU102は、1つの実施形態によれば、アプリケーション111の実行の起動および制御を、例えばそのアプリケーションに関連する処理をCPU102とAPD104等の他の処理リソースとの間に分散させることにより行う。APD104は、とりわけ、グラフィックス演算や、例えば特に並列処理に好適となり得る他の演算等の、選択された機能のためのコマンドおよびプログラムを実行する。一般に、APD104は、ピクセル処理、幾何学演算およびディスプレイに対する画像のレンダリング等のグラフィックスパイプライン処理を実行するために、しばしば用いられ得る。本発明の様々な実施形態において、APD104は、CPU102から受信したコマンドまたは命令に基づいて、計算処理演算例えば、ビデオ演算、物理シミュレーション、計算流体力学等のグラフィックスに関連しない演算も実行し得る。例えば、コマンドは、通常、命令セットアーキテクチャISA:instructionsetarchitectureにおいて定義されない特殊な命令であるとみなされ得る。コマンドは、例えばディスパッチプロセッサ、コマンドプロセッサまたはネットワークコントローラ等の特殊なプロセッサにより実行され得る。一方、命令は、例えばコンピュータアーキテクチャ内のプロセッサの単一の演算であるとみなされ得る。1つの例において、2セットのISAが用いられる場合には、いくつかの命令は、x86プログラムを実行するために用いられ、いくつかの命令は、APD計算ユニット上でカーネルを実行するために用いられる。例示的な実施形態において、CPU102は、選択されたコマンドをAPD104に伝達する。これらの選択されたコマンドは、並列実行に適したグラフィックスコマンドと、並列実行に適した他のコマンドとを含み得る。計算処理コマンドを含み得るこれらの選択されたコマンドは、実質的にCPU102から独立して実行され得る。APD104は、例えば1つ以上のSIMD処理コア等ではあるがこれに制限されない、自身の計算ユニット図示せずを含み得る。本明細書で参照されるSIMDは、パイプライン、すなわち、それぞれが自身のデータおよび共有プログラムカウンタを有する複数の処理エレメント上でカーネルが同時に実行されるプログラミングモデルである。全ての処理エレメントは、同等なセットの命令を実行する。プレディケーションを用いることにより、発行された各コマンドに対して、ワークアイテムを関与させることまたはさせないことが可能となる。1つの例において、各APD計算ユニット104は、1つ以上のスカラーおよび/またはベクトル浮動小数点演算ユニットおよび/または算術論理ユニットALU:arithmeticandlogicunitを含み得る。APD計算ユニットは、逆平方根ユニットおよびサイン/コサインユニット等の特殊用途処理ユニット図示せずも含み得る。1つの例において、APD計算ユニットは、本明細書においてシェーダコア122と総称される。1つ以上のSIMDが存在することにより、一般に、APD104は、グラフィックス処理において一般的なデータ並列タスク等のデータ並列タスクの実行に、理想的に好適なものとなる。ピクセル処理等のいくつかのグラフィックスパイプライン処理と、他の並列演算処理とは、同一のコマンドストリームまたは計算カーネルが、ストリームまたは入力データ要素の集合体上で実行されることを要求する。同一の計算カーネルのそれぞれのインスタンス化は、上記データ要素を並列に処理するために、シェーダコア122の複数の計算ユニット上で同時に実行され得る。本明細書で参照されるように、例えば計算カーネルは、プログラム上で宣言され、APD計算ユニット上で実行される命令を含む関数である。この関数は、カーネル、シェーダ、シェーダプログラムまたはプログラムとも称される。1つの例示的な実施形態において、各計算ユニット例えばSIMD処理コアは、入力されるデータを処理するために、特定ワークアイテムのそれぞれのインスタンス化を実行し得る。ワークアイテムは、コマンドによりデバイス上で呼び出されるカーネルの並列実行の集合体のうちの1つである。ワークアイテムは、計算ユニット上で実行されるワークグループの一部として、1つ以上の処理エレメントにより実行され得る。ワークアイテムは、自身のグローバルIDおよびローカルIDによって、集合体内の他の実行から区別される。1つの例において、ワークグループ内のSIMD上でともに同時に実行されるワークアイテムの一部は、ウェーブフロント136と称され得る。ウェーブフロントの幅は、計算ユニット例えば、SIMD処理コアのハードウェアの特性である。本明細書で参照されるワークグループは、単一の計算ユニット上で実行される関連するワークアイテムの集合体である。ワークグループ内のワークアイテムは、同一のカーネルを実行し、ローカルメモリおよびワークグループバリアを共有する。代表的な実施形態において、1つのワークグループからの全てのウェーブフロントは、同一のSIMD処理コア上で処理される。ウェーブフロントにわたる命令は1度に1つずつ発行され、全てのワークアイテムが同一の制御フローに従う場合には、各ワークアイテムは、同一のプログラムを実行する。ウェーブフロントは、ワープ、ベクトルまたはスレッドと称され得る。実行マスクおよびワークアイテムプレディケーションは、ウェーブフロント内の拡散的な制御フローを可能にするために用いられる。拡散的な制御フローでは、各個別のワークアイテムは、カーネルを通る一意的なコードパスを実際に取り得る。部分的に占められたウェーブフロントは、ワークアイテムの全セットがウェーブフロント開始時に必ずしも利用可能とは限らない場合に、処理され得る。例えば、シェーダコア122は、所定数のウェーブフロント136を同時に実行し得る。なお、各ウェーブフロント136は、複数のワークアイテムを含む。システム100において、APD104は、グラフィックスメモリ130等の自身のメモリを含むなお、メモリ130は、グラフィックス専用に制限されるとは限らない。グラフィックスメモリ130は、APD104における計算実行の間の使用のために、ローカルメモリを提供する。シェーダコア122内の個々の計算ユニット図示せずは、自身のローカルデータ記憶装置図示せずを有し得る。1つの実施形態において、APD104は、ローカルグラフィックスメモリ130へのアクセス、ならびにメモリ106へのアクセスを含む。他の実施形態において、APD104は、ダイナミックランダムアクセスメモリDRAM:dynamicrandomaccessmemory、または、APD104には直接的に接続されているがメモリ106からは分離している他のメモリ図示せずへのアクセスを含み得る。図示の例において、APD104は、1つまたはn個のコマンドプロセッサCP:commandprocessor124を含み得る。CP124は、APD104内の処理を制御する。CP124は、実行されるべきコマンドを、メモリ106内のコマンドバッファ125から取得し、APD104でのこれらのコマンドの実行を調整する。1つの例において、CPU102は、アプリケーション111に基づくコマンドを、適切なコマンドバッファ125に入力する。本明細書において参照されるように、アプリケーションは、CPU内またはAPD内の計算ユニット上で実行されるプログラム部分の組合せである。複数のコマンドバッファ125は、各プロセスがAPD104での実行のためにスケジュールされた状態で、保持され得る。CP124は、ハードウェア、ファームウェア、ソフトウェアまたはこれらの組合せにおいて実装され得る。1つの実施形態において、CP124は、スケジューリングロジックを含むロジックを実装するためのマイクロコードを有する縮小命令セットコンピュータRISC:reducedinstructionsetcomputerエンジンとして実装される。APD104は、1つまたはn個のディスパッチコントローラDC:dispatchcontroller126を含み得る。本願において、ディスパッチという用語は、1セットの計算ユニット上の1セットのワークグループに対するカーネルの実行のスタートを起動するために、コンテキスト状態を使用するディスパッチコントローラにより実行されるコマンドを指す。DC126は、シェーダコア122内でワークグループを起動するためのロジックを含む。いくつかの実施形態において、DC126は、CP124の一部として実装され得る。システム100は、APD104上で実行するためのプロセスを実行リスト150から選択するためのハードウェアスケジューラHWS:hardwarescheduler128を含む。HWS128は、ラウンドロビン方式、優先レベルを用いて、または他のスケジューリングポリシーに基づいて、プロセスを実行リスト150から選択し得る。優先レベルは、例えば、動的に決定され得る。HWS128は、例えば、新規のプロセスを追加することによって、あるいは既存のプロセスを実行リスト150から削除することによって、実行リスト150を管理する機能を含み得る。HWS128の実行リスト管理ロジックは、実行リストコントローラRLC:runlistcontrollerと称されることもある。本発明の様々な実施形態において、HWS128が、実行リスト150からプロセスの実行を開始すると、CP124は、対応するコマンドバッファ125からのコマンドの取得および実行を開始する。いくつかの事例において、CP124は、CPU102から受信したコマンドに対応する、APD104内で実行される1つ以上のコマンドを生成し得る。1つの実施形態において、CP124は、APD104リソースおよび/またはシステム100のリソースの利用が改善または最大化されるように、APD104におけるコマンドの優先化およびスケジューリングを、他のコンポーネントとともに実装する。APD104は、インタラプトジェネレータ146に対してアクセスを有するか、またはインタラプトジェネレータ146を含み得る。インタラプトジェネレータ146は、APD104がページフォールト等のインタラプトイベントに遭遇すると、APD104によってオペレーティングシステム108にインタラプトをかけるよう構成され得る。例えば、APD104は、IOMMU116内のインタラプト生成ロジックに依存して、上述のページフォールトインタラプトを生成し得る。APD104は、シェーダコア122内で現在実行中のプロセスを切り替えるためのプリエンプションおよびコンテキストスイッチロジック120を含み得る。コンテキストスイッチロジック120は、例えばプロセスを停止させ、その現在状態例えばシェーダコア122状態およびCP124状態を保存する機能を含む。本明細書において参照される状態という用語は、初期状態、中間状態および/または最終状態を含み得る。初期状態は、機械がプログラム順序に従って入力データセットを処理することによって、データの出力セットを生成する開始点である。例えば、処理を前進させるためにいくつかのポイントにおいて記憶される必要がある中間状態が存在する。この中間状態は、他のプロセスによってインタラプトがかけられた場合に、後に実行を継続することを可能にするために記憶される場合もある。出力データセットの一部として記録され得る最終状態も存在する。プリエンプションおよびコンテキストスイッチロジック120は、他のプロセスを、APD104にコンテキストスイッチするためのロジックを含み得る。他のプロセスをAPD104で実行するようにコンテキストスイッチするための機能は、APD104上で実行するために、例えばCP124およびDC126によってプロセスをインスタンス化することと、当該プロセスに対して以前に保存された状態を復元することと、当該プロセスの実行を開始することと、を含み得る。メモリ106は、DRAM図示せず等の非永続型メモリを含み得る。メモリ106は、例えば、アプリケーションまたは他の処理ロジックの部分を実行する間に、処理ロジック命令、定数および様々な変数を記憶し得る。例えば、1つの実施形態において、CPU102上で1つ以上の演算を実行するための制御ロジックの部分は、CPU102によって演算のそれぞれの部分が実行される間、メモリ106内に常駐し得る。実行中、個別のアプリケーション、OS関数、処理ロジックコマンドおよびシステムソフトウェアは、メモリ106に常駐し得る。OS108に対して必須である制御ロジックコマンドは、一般に、実行中にはメモリ106に常駐することとなるであろう。他のソフトウェアコマンド、例えばカーネルモードドライバ110およびソフトウェアスケジューラ112は、システム100の実行中にはメモリ106に常駐し得る。この例において、メモリ106は、コマンドをAPD104に送るために、CPU102によって用いられるコマンドバッファ125を含む。メモリ106は、プロセスリストおよびプロセス情報例えば、アクティブリスト152およびプロセス制御ブロック154を含み得る。これらのリストおよび情報は、スケジュール情報を、APD104および/または関連するスケジューリングハードウェアに伝えるために、CPU102上で実行されるスケジューリングソフトウェアによって使用される。メモリ106に対するアクセスは、メモリ106に接続されたメモリコントローラ140によって管理され得る。例えば、メモリ106に対する読み出しおよび書き込みを実行するための、CPU102または他のデバイスからの要求は、メモリコントローラ140によって管理される。システム100の他の態様に戻ると、IOMMU116は、マルチコンテキストメモリ管理ユニットである。本明細書で用いられるコンテキストという用語は、カーネルが実行される環境であって、同期およびメモリ管理が定義されるドメインであるとみなされる。コンテキストは、1セットのデバイスと、これらのデバイスに対してアクセス可能であるメモリと、対応するメモリ特性と、メモリオブジェクト上におけるカーネル単数または複数または演算の実行をスケジュールするために用いられる1つ以上のコマンドキューとを含む。図1Aにおいて示される例に戻ると、IOMMU116は、APD104を含むデバイスに対するメモリページアクセスに対して、仮想アドレスから物理アドレスへの変換を実行するためのロジックを含む。IOMMU116は、例えば、APD104等のデバイスによるページアクセスの結果としてページフォールトが生じる場合に、インタラプトを生成するためのロジックを含み得る。IOMMU116は、トランスレーションルックアサイドバッファTLB:translationlookasidebuffer118を含むか、あるいはTLB118に対するアクセスを有し得る。TLB118は、1つの例として、メモリ106内のデータ用にAPD104によりなされた要求に対して、論理すなわち仮想メモリアドレスから物理メモリアドレスへの変換を高速化するために、コンテントアドレサブルメモリCAM:contentaddressablememoryに実装され得る。示された例において、通信インフラストラクチャ109は、必要に応じてシステム100のコンポーネントを相互接続する。通信インフラストラクチャ109は、周辺構成要素相互接続PCIバス、拡張PCIPCI-Eバス、アドバンストマイクロコントローラバスアーキテクチャAMBAバス、アドバンストグラフィックスポートAGPまたは他の通信インフラストラクチャのうち1つ以上を含み得る図示せず。通信インフラストラクチャ109は、イーサネット登録商標若しくは同様のネットワークまたはアプリケーションの転送速度要求を満足する任意の好適な物理的通信インフラストラクチャを含み得る。通信インフラストラクチャ109は、コンピューティングシステム100のコンポーネントを含むコンポーネントを相互接続するための機能を含む。この例において、OS108は、システム100のハードウェアコンポーネントを管理する機能と、共通サービスを提供するための機能とを含む。様々な実施形態において、OS108は、CPU102上で実行し、共通サービスを提供する。これらの共通サービスは、例えば、CPU102内での実行のためにアプリケーションをスケジューリングすることと、フォールト管理と、インタラプトサービスと、他のアプリケーションの入力および出力を処理することと、を含む。いくつかの実施形態において、OS108は、例えばインタラプトコントローラ148等のインタラプトコントローラによって生成されたインタラプトに基づいて、適切なインタラプトハンドリングルーチンを呼び出す。例えば、OS108は、ページフォールトインタラプトを検出すると、関連するページをメモリ106にロードし始め、且つ、対応するページテーブルを更新するために、インタラプトハンドラを呼び出す。OS108は、OSにより管理されるカーネル機能を通して、ハードウェア部品に対するアクセスが仲介されることを確保することによって、システム100を保護する機能を含み得る。事実、OS108は、アプリケーション111等のアプリケーションが、CPU102上でユーザスペースにおいて実行されることを確保する。OS108は、アプリケーション111が、ハードウェアにアクセスするためにOSにより提供されるカーネル機能および/または入出力機能を呼び出すことも確保する。例として、アプリケーション111は、CPU102上でも実行されるユーザ計算を実行するための様々なプログラムまたはコマンドを含む。CPU102は、選択されたコマンドを、APD104上で処理されるためにシームレスに送信し得る。1つの例において、KMD110は、CPU102、CPU102上で実行されるアプリケーションまたは他のロジックが、APD104の機能を呼び出し得るアプリケーションプログラミングインタフェースAPIを実装する。例えば、KMD110は、CPU102からのコマンドを、コマンドバッファ125にエンキューし得る。なお、APD104は、このコマンドバッファ125からコマンドを続けて取得することとなる。加えて、KMD110は、APD104上で実行されるプロセスのスケジューリングを、SWS112とともに実行する。SWS112は、例えば、APD上で実行されるプロセスの優先度リストを保持するためのロジックを含み得る。本発明の他の実施形態において、CPU102上で実行するアプリケーションは、コマンドをエンキューするときに、KMD110を完全にバイパスし得る。いくつかの実施形態において、SWS112は、APD104上で実行されるプロセスのアクティブリスト152を、メモリ106に保持する。SWS112は、アクティブリスト152におけるプロセスのうち、ハードウェアのHWS128により管理される一部を選択する。各プロセスをAPD104上で実行することに関する情報は、CPU102からプロセス制御ブロックPCB:processcontrolblock154を通して、APD104に伝えられる。アプリケーション、OSおよびシステムソフトウェアのための処理ロジックは、マスクワーク/フォトマスクの生成を通して最終的に製造プロセスを構成することで、本明細書において説明される本発明の態様を具体化するハードウェア装置を生成することを可能にするための、例えば、C言語等のプログラム言語および/またはVerilog、RTL等のハードウェア記述言語もしくはネットリストにおいて指定されるコマンドを含み得る。当業者は、コンピューティングシステム100が、図1Aにおいて示されるコンポーネントよりも多数または少数のコンポーネントを含み得ることを、本明細書を読むことで理解するであろう。例えば、コンピューティングシステム100は、1つ以上の入力インターフェースと、不揮発性ストレージと、1つ以上の出力インターフェースと、ネットワークインターフェースと、1つ以上のディスプレイまたはディスプレイインターフェースと、を含み得る。図1Bは、図1Aにおいて示されるAPD104のより詳細な例示を示す実施形態である。図1Bにおいて、CP124は、CPパイプライン124a,124b,124cを含み得る。CP124は、図1Aにおいて示されるコマンドバッファ125から入力として提供されるコマンドリストを、処理するように構成され得る。図1Bの典型的な動作において、CP入力0124aは、コマンドをグラフィックスパイプライン162に駆動することを担当する。CP入力1および2124bおよび124cは、コマンドを計算パイプライン160に伝える。HWS128の動作を制御するためのコントローラ機構166も提供される。図1Bにおいて、グラフィックスパイプライン162は、本明細書において順序化パイプライン164と称される、1セットのブロックを含み得る。例えば、順序化パイプライン164は、頂点グループ変換器VGT:vertexgrouptranslator164aと、プリミティブアセンブラPA:primitiveassembler164bと、スキャンコンバータSC:scanconverter164cと、シェーダエクスポートレンダーバックユニットSX/RB:shader-export,render-backunit176とを含む。順序化パイプライン164内の各ブロックは、グラフィックスパイプライン162内の異なる段階のグラフィックス処理を表し得る。順序化パイプライン164は、固定機能ハードウェアパイプラインであり得る。本発明の精神および範囲に含まれ得る他の実装を用いることも可能である。わずかな量のデータが、入力としてグラフィックスパイプライン162に提供されるが、このデータは、グラフィックスパイプライン162からの出力として提供される回数分だけ増幅されることとなるであろう。グラフィックスパイプライン162は、CPパイプライン124aから受け取ったワークアイテムグループ内の範囲にわたってカウントするためのDC166も含む。DC166を通して提示された計算作業は、グラフィックスパイプライン162と準同期している。計算パイプライン160は、シェーダDC168,170を含む。DC168,170のそれぞれは、CPパイプライン124b,124cから受け取ったワークグループ内の計算範囲にわたってカウントするように構成されている。図1Bにおいて示されるDC166,168,170は、入力範囲を受け取り、入力範囲をワークグループに分割し、次いでこれらのワークグループをシェーダコア122に伝える。グラフィックスパイプライン162は、一般に固定機能パイプラインであるため、その状態を保存および復元することは困難であり、そのためグラフィックスパイプライン162は、コンテキストスイッチが困難である。したがって、ほとんどの場合、本明細書において論じられるコンテキストスイッチは、グラフィックス処理におけるコンテキストスイッチに関係しない。例外は、シェーダコア122におけるグラフィックス作業であり、これはコンテキストスイッチされ得る。グラフィックスパイプライン162内の作業の処理が完了した後に、完了した作業は、レンダーバックユニット176を通して処理される。レンダーバックユニット176は、デプス計算およびカラー計算を行い、次いでその最終結果をメモリ130に書き込む。シェーダコア122は、グラフィックスパイプライン162および計算パイプライン160により共有され得る。シェーダコア122は、ウェーブフロントを実行するように構成された一般的なプロセッサである。1つの例において、計算パイプライン160内の全ての作業は、シェーダコア122内で処理される。シェーダコア122は、プログラム可能なソフトウェアコードを実行し、例えば状態データ等の様々な形態のデータを含む。図2は、図1Aのコンピューティングシステム100の代替的実施形態であるコンピューティングシステム200の例示的ブロック図である。コンピューティングシステム200は、本発明の実施形態に係るシステムメモリマッピング構造と共に、CPUおよびI/OデバイスのためのIOMMUアーキテクチャおよびメモリ管理を含む。しかし、上述のコンピューティングシステム100のコンポーネントの多くの詳細は、コンピューティングシステム200内の同様のコンポーネントにもあてはまる。したがって、これらの同様のコンポーネントの詳細は、コンピューティングシステム200の説明において繰り返されない。メモリマッピング構造は、メモリ206と、メモリコントローラ240と、IOMMU216と、バス278を介して接続され、それぞれ番号250,252,254で表わされるI/OデバイスA,B,Cとの間で動作するように構成され得る。IOMMU216は、ダイレクトメモリアクセスDMA仮想アドレスを、システム物理アドレスに変換するように動作するハードウェア装置とすることができる。IOMMU216は、1つ以上の固有のアドレス空間を構築し、固有のアドレス空間単数または複数を、装置のDMA動作がどのようにしてメモリにアクセスするのかを制御するために用いることができる。図2は、例示するために1つだけのIOMMUを示しており、本発明の実施形態は、1つよりも多いIOMMUを備え得る。一般に、IOMMUは、独自の個別のバスおよびI/O装置単数または複数に接続され得る。図2において、バス209は、PCIバス、AGPバス、PCI-Eバスこれはより正確にはポイントツーポイントプロトコルとして説明されるまたは現在利用可能であるか若しくは将来開発される任意の他のタイプのバスを含む、コンピュータシステムで用いられる任意のタイプのバスとすることができる。バス209は、インタラプトコントローラ248、カーネルモードドライバ210、SWS212、アプリケーション211およびOS208と、システム200における他のコンポーネントとを相互接続し得る。I/O装置Cは、メモリ管理I/OMMIOマップと、ホストデータパスHDP256と、装置プロセッシングコンプレックス258と、プライベートメモリ管理ユニットMMU260と、入力出力トランスレーションルックアサイドバッファIOTLB:inputoutputtranslationlookasidebuffer264と、アドレス変換サービスATS:addresstranslationservice/ページ要求インターフェースPRI:pagerequestinterface要求ブロック262と、ローカルメモリ268と、ローカルメモリ保護マップ266と、マルチプレクサ270,272,274,276,280とを含み得る。IOMMU216の実施形態は、装置テーブルベースレジスタDTBR241と、コマンドバッファベースレジスタCBBR238と、イベントログベースレジスタELBR236と、制御ロジック249と、周辺ページ要求レジスタPPRR242とを含むように設定され得る。さらに、IOMMU216は、I/Oページテーブルウォーカ244を呼び出して、例えばアドレス変換などでページテーブルを行き来するために、ゲスト制御レジスタテーブルセレクタ246を含み得る。また、IOMMU216は、ページテーブルウォークを行う必要なしにその後の変換を果たすのに用いられるアドレス変換をキャッシュするための1つ以上のトランスレーションルックアサイドバッファTLB218と関連付けられ得る。装置テーブルからのアドレスは、バス282を介してIOMMUと通信され得る。本発明の実施形態は、IOMMU216が、I/Oページテーブル224を用いて、I/O装置によってアクセスされるメモリ上で権限チェックおよびアドレス変換を提供することをもたらす。また、本発明の実施形態は、例として、AMD64ロングフォーマットで設計されたI/Oページテーブルを用いることができる。装置テーブル226は、I/O装置が特定のドメインに割り当てられることを可能にする。また、I/Oページテーブルは、I/O装置のページテーブルへのポインタを含むように構成され得る。メモリ206は、インタラプト再マッピングテーブルIRT228と、コマンドバッファ222と、イベントログ220と、仮想システム300より詳細に後述されるとをさらに備える。また、メモリ206は、同時に実行している1つ以上のゲストOS例えば、これらに限定されないが、符号230によって表わされるゲストOS1および符号232によって表わされるゲストOS2と共に、ハイパーバイザ234のようなホスト変換モジュールを含む。さらに、IOMMU216およびメモリ206は、DTBR241が装置テーブル226の開始インデックスを指すように設定され得る。さらに、CBBR238は、コマンドバッファ222の開始インデックスを指す。ELBR236は、イベントログ220の開始インデックスを指す。PPRR242は、PPSRテーブル227の開始インデックスを指す。IOMMU216は、IOMMU216と、例えばCPU202のようなシステムプロセッサ単数または複数との間でコマンドおよびステータス情報を交換するために、メモリベースのキューを用いることができる。CPU202は、MMU214を含むことができる。1つの例示的実施形態によれば、IOMMU216は、例えば、HyperTransport登録商標リンクまたはPCIベースのバスを用いて通信され得る下流の装置から到着する要求をインターセプトし、当該要求に対して権限チェックおよびアドレス変換を行い、変換されたバージョンを上流のメモリ206空間に送信し得る。他の要求は、変更されない状態で渡され得る。図3は、本発明の実施形態に係る図2に示された仮想システム300のより詳細なブロック図である。システム300は、I/O装置/アプリケーション/プロセスI/O装置304と、ランダムアクセスメモリRAM306とを含む。例として、I/O装置304は、グラフィックス処理装置を含むことができる。I/O装置304は、IOMMUによって提供される二層アドレス変換を介して、仮想システム300のメモリ306と相互作用する。ゲスト仮想アドレスGVAは、アドレス変換用の仮想システム300のI/O装置304によって提供される。したがって、GVAは、ゲスト仮想アドレス空間308と関連付けられる。IOMMUは、GVAを、ゲスト物理アドレス空間312と関連付けられたゲスト物理アドレスGPAに変換する第1変換層であるIOMMUゲスト変換310を設けている。IOMMUゲスト変換310は、仮想システム300にて動作するゲストOSによって管理され得る。また、IOMMUは、GPAを、システム物理アドレス空間316と関連付けられたシステム物理アドレスSPAに変換する第2変換層である、IOMMUネスト化変換314を設けている。IOMMUネスト化変換314は、仮想システム300にて動作するハイパーバイザによって管理され得る。SPAは、メモリ306内の情報にアクセスするのに用いられ得る。したがって、IOMMUは、GVAからGPA、およびGPAからSPAへの変換を達成するために、二層アドレッシングを設けている。IOMMUは、周辺機器および仮想ゲストOSに関係する変換を含む両方のアドレス変換層に対する改善された性能を有するハードウェアソリューションを設けている。図4は、本発明の実施形態に係るIOMMU216およびメモリ206に関連するデータ構造の例示的ブロック図400である。前述のように、IOMMU216は、装置テーブルベースレジスタ241を含む種々のレジスタを含む。装置テーブルベースレジスタ241は、図2の装置テーブル226内に配置される装置テーブル404のルートへのポインタを含む。装置テーブル404は、装置テーブルエントリDTE408を含む。各DTE408は、メモリ206のI/Oページテーブル224に関するデータ構造のルートへのポインタを含む。DTE408は、システムアドレス変換テーブル構造412のルートを指すシステムポインタ411と、ゲスト制御レジスタテーブル415/ゲストアドレス変換テーブル構造414のルートを指すゲストポインタ413とを含み得る。したがって、IOMMU216は、二層アドレス変換を行うために、システム/ゲストアドレス変換テーブル構造412,414にアクセスし得る。GVAからGPAへの変換を行うために、IOMMU216は、ゲストポインタ413を用いてI/Oページテーブル224にアクセスし得る。GPAからSPAへの変換を行うために、IOMMU216は、システムポインタ411を用いてI/Oページテーブル224にアクセスする。したがって、IOMMU216は、二層のアドレス変換を、同時におよび/または独立して行い得る。また、IOMMU216は、システムアドレス変換テーブル構造420のルートを指すシステムポインタ419を含むDTE418を用いて、単層変換を行い得る。ゲストアドレス変換テーブル構造414からのエントリは、GPAのフォーマットであってもよい。各GPAエントリは、カスケードされ/ネスト化されたウォークを用いて、システムアドレス変換テーブル構造412を通して変換され得る。図5は、図2の例示的実施形態に係る二層アドレス変換に関連するデータ構造の例示的ブロック図500である。I/O装置C254図2参照は、装置ID522と関連付けられている。装置ID522は、I/O装置を識別するのに用いられ得る。例えば、装置ID522は、PCI-Eインターフェースにおいて用いられるバス、デバイス、ファンクションBDF登録商標指定であってもよい。I/O装置C254は、アドレス変換トランザクション524例えば、PCI-SIG仕様に従うアドレス変換サービスATSを用いるI/OデバイスC254からの要求を発行する。アドレス変換トランザクション524は、I/O装置C254が変換したことを必要とするGVA526を含み得る。アドレス変換トランザクション524は、装置ID522と、プロセスアドレス空間ID528とを含み得る。プロセスアドレス空間ID528は、ゲスト仮想マシンVM内のアプリケーションアドレス空間を識別するのに用いられてもよく、共有ローカルメモリに存在する並行コンテキストを分離するためにI/O装置C254上で用いられてもよい。共に、装置ID522とプロセスアドレス空間ID528とは、アプリケーションアドレス空間を固有に識別し得る。アドレス変換トランザクション524は、IOMMU216によって受信される。IOMMU216は、装置テーブル404のルートを指すルートポインタを含む装置テーブルベースレジスタ241に基づいて、装置テーブル404にアクセスする。装置テーブル404は、DTE408にアクセスするために、アドレス変換トランザクション524からの装置ID522を用いて索引を付けられる。DTE408は、ゲストポインタ513およびシステムポインタ511を含む。システムポインタ511は、システムアドレス変換テーブル構造412をウォークする辿るのに用いられる。ゲストポインタ513は、ゲスト制御レジスタテーブル415のルートにアクセスするのに用いられる。ゲスト制御レジスタテーブル415は、アドレス変換トランザクション524に対応するゲストアドレス変換テーブル構造414を指すゲスト制御レジスタテーブルエントリ517にアクセスするために、アドレス変換トランザクション524からのプロセスアドレス空間ID528を用いて索引を付けられる。ゲストアドレス変換テーブル構造414は、アドレス変換トランザクション524からのGVA526を用いてウォークされる。図6Aは、図2の例示的実施形態に係る二層アドレス変換システム600Aの例示的ブロック図である。システム600Aは、図4に示されるゲストアドレス変換テーブル構造414およびシステムアドレス変換テーブル構造412を含む。4レベルページテーブル構造が示されており、当該構造は、4Kbyte物理ページ631にアクセスするのに用いられる。実施形態は、より多くまたはより少ないレベル例えば、2Mbyte物理ページを参照する3レベルページテーブル構造、1Gbyte物理ページを参照する2レベルページテーブル構造などを用いて、ページテーブル構造を提供し得る。GVA526は、アドレス変換トランザクション例えば、ATSの要求を発行するI/Oデバイスによって提供されてもよく、最終的にはデータバイト630にアクセスすることに関連するSPAに変換されることになる。ゲスト制御レジスタテーブルエントリ517は、アドレス変換トランザクションによって提供される装置IDおよびプロセスアドレス空間IDを用いて、装置テーブルおよびゲスト制御レジスタテーブル図5を参照して上記で説明されるをウォーキングする辿ることによって得られてもよい。ゲスト制御レジスタテーブルエントリ517は、ページマップレベル4PML4テーブルアドレス632を含む。PML4テーブルアドレス632は、ルートページテーブルポインタ634に対応するが、PML4テーブルアドレス632は、GPAのフォーマットである。システム600Aは、PML4テーブルアドレス632を、GPAフォーマットからSPAフォーマットに変換するために、ネスト化されたウォーク636を行う。SPAは、レベル4ページテーブル638のルートのシステム物理アドレスに対応する。したがって、例えば、ルートページテーブルポインタ634に関連する黒い太線は、ネスト化されたウォーク636を用いて得られるSPAを表し得る。レベル4ページテーブル638は、ルートページテーブルポインタ634を用いて識別され、レベル4ページテーブル638のエントリは、ページマップレベル4PML4オフセット637を用いて索引を付けられる。PML4オフセット637は、変換されるべきGVA526のビット39~47と関連付けられる。したがって、PML4エントリPML4E639は、ルートページテーブルポインタ634、レベル4ページテーブル638およびPML4オフセット637を用いて配置される。PML4E639はGPAであることから、システム600Aは、ネスト化されたウォーク636を用いて、PML4E639をSPAにコンバートする。ネスト化されたウォーク636は、ゲストアドレス変換テーブル構造414からのGPAごとに、GPAからSPAへの変換を行うために、システムアドレス変換テーブル構造412を用いて実装され得る。例えば、GPA640は、ゲストアドレス変換テーブル構造414のルートページテーブルポインタ641用の対応するSPAを得るために、変換用のPML4E639とともにロードされ得る。GPA640は、システムアドレス変換テーブル構造412の種々のテーブルに索引を付けるのに用いられるオフセットを含む。ネスト化されたウォーク636は、ページマップレベル4PML4テーブル644のルートを配置するために、PML4E639と関連付けられたネスト化された制御レジスタ642を用いる。PML4オフセット646GPA640のビット39~47は、PML4テーブル644に索引を付け、エントリnPML4E648を得るのに用いられる。nPML4E648は、ページディレクトリポインタPDPテーブル650のルートを指し、PDPオフセット652GPA640のビット30~38は、PDPテーブル650にインデックスを付け、エントリnPDPE654を得るのに用いられる。nPDPE654は、ページディレクトリPDテーブル656のルートを指し、PDオフセット658GPA640のビット21~29は、PDテーブル656に索引を付け、エントリnPDE660を得るのに用いられる。nPDE660は、ページテーブル662のルートを指し、PTオフセット664GPA640のビット12~20は、ページテーブル662に索引を付け、エントリnPTE666を得るのに用いられる。nPTE666は、ゲスト4KBメモリページ668のルートを指し、物理ページオフセット670GPA640のビット0~11は、ゲスト4KBメモリページ668に索引を付け、エントリgPML4E672を得るのに用いられる。gPML4E672は、GPAPML4E639に対応するSPA値であり、ゲストアドレス変換テーブル構造414にレベル3ページテーブル674を配置するために、ルートページテーブルポインタ641に対して用いられる。レベル3ページテーブル674は、PDPE676GPAフォーマットを得るために、ページディレクトリポインタPDPオフセット675を用いて索引を付けられる。ネスト化されたウォーク636は、GPAPDPE676を、ルートページテーブルポインタ677に対応するSPA値に変換するのに用いられる。ルートページテーブルポインタ677は、PDE680GPAフォーマットを得るために、ページディレクトリオフセット679GVA526のビット21~29を用いて索引を付けられるレベル-2ページテーブル678を配置するのに用いられる。ネスト化されたウォーク636は、GPAPDE680を、ルートページテーブルポインタ681に対応するSPA値に変換するのに用いられる。ルートページテーブルポインタ681は、PTE684GPAフォーマットを得るために、ページテーブルオフセット683GVA526のビット12~20を用いて索引を付けられるレベル1ページテーブル682を配置するのに用いられる。ネスト化されたウォーク636は、GPAPTE684を、ルートページテーブルポインタ685に対応するSPA値に変換するのに用いられる。ルートページテーブルポインタ685は、データバイト630を得るために、物理ページオフセット686GVA526のビット0~11を用いて索引を付けられる4Kbyte物理ページ631を配置するのに用いられる。したがって、システム600Aは、二層、すなわちGVAからGPA、およびGPAからSPAへのアドレス変換を行うために、ページテーブルウォークのネスト化されたカスケードを用いる。二層のネスト化されたアドレス変換が示されるが、付加的な層は、同様のネスト化された/再帰的な呼び出しを用いて実装され得る。システムアドレス変換テーブル構造412およびゲストアドレス変換テーブル構造414に関連する変換は、ハードウェアで実装され得る。両方の変換の組に対して一組のハードウェアが用いられてもよいが、ゲスト/システム変換の組ごとに別個のハードウェアが提供されてもよい。図6Bは、本発明の実施形態に係るGVAからSPAへのアドレス変換システム600Bの例示的ブロック図である。図6Bは、GVAからSPAへのアドレス変換を達成するために、図5および図6Aのシステム/ゲストアドレス変換テーブル構造412/414の複数の呼び出しを用いる一連のネスト化された変換を表す。システム600Aに対応するシステム600Bにおける要素は、同一または同様の参照番号を用いて表わされ、文字b例えば、414と614b、526と626b、637と637bなどを含む。システム600Bは、ゲストページテーブル614bおよびネスト化されたページテーブル612bを用いて、ネスト化されたページテーブルウォークを表す。ゲストページテーブル614bは、GL4638b、GL3674b、GL2678b、GL1682bおよびGPA631bシステム600Aのゲストアドレス変換テーブル構造414におけるページテーブルレベルに対応するを含む。また、ゲストページテーブル614bは、nL4644b、nL3650b、nL2656b、nL1662bおよびG668bシステム600Aのシステムアドレス変換テーブル構造412におけるページテーブルレベルに対応するを含む。GVAからSPAへの変換は、I/O装置からのアドレス変換トランザクションによって提供されるGVA626bを用いて、システム600Bの左上で始まる。ゲスト制御レジスタポインタ634bは、GL4638bのルートを配置するのに用いられ、GVA[47:39]637bは、GL4638bに索引を付け、GPA639bを得るのに用いられる。SPA648bを得るために、第1のネスト化されたルックアップnL41が行われ、SPA648bは、SPA654bを得るために第2のネスト化されたルックアップnL32を指し、SPA654bは、SPA660bを得るために第3のネスト化されたルックアップnL23を指し、SPA660bは、SPA666bを得るために第4のネスト化されたルックアップnL14を指し、SPA666bは、GL3674bのルートを指すルートページテーブルポインタ641bを得るのに用いられるGL45672bを指す。GVA[38:30]675bに対応する、GVA626bからの次のビットセットは、GL3674bに索引を付け、ルートページテーブルポインタ677bを最終的にもたらす次のネスト化されたカスケードnL46~nL19へのポインタを得るために、ルートページテーブルポインタ641bからのオフセットとして用いられる。GVA[29:21]679bに対応する、GVA626bからの次のビットセットは、GL2678bにインデックスを付け、ルートページテーブルポインタ681bを最終的にもたらす次のネスト化されたカスケードnL411~nL114へのポインタを得るために、ルートページテーブルポインタ677bからのオフセットとして用いられる。GVA[20:12]683bに対応する、GVA626bからの次のビットセットは、GL1682bにインデックスを付け、ルートページテーブルポインタ685bを最終的にもたらす次のネスト化されたカスケードnL416~nL119へのポインタを得るために、ルートページテーブルポインタ681bからのオフセットとして用いられる。GVA[11:0]686bに対応する、GVA626bからの最後のビットセットは、GPA631bにインデックスを付け、は所望のSPA690bを最終的にもたらす次のネスト化されたカスケードnL421~nL124へのポインタを得るために、ルートページテーブルポインタ685bからのオフセットとして用いられる。SPA690bは、GVAからSPAへのアドレス変換用のI/O装置トランザクション/要求によって提供されるGVA626bに対応する。SPA690bは、図6Aおよび図6Bに示されるようにページテーブルをウォーキングすることによって得られてもよい。加えて、SPA690bは、トランスレーションルックアサイドバッファTLBエントリ値692bとしてキャッシュされ得る。したがって、GVA526/626bを変換することに対する将来の要求は、GVA526/626bに対応するSPA690bを迅速にもたらすために、TLBエントリ値692bにアクセスすることによって果たされてもよく、これによりページテーブルをウォークする必要性をなくす。TLBエントリ値692bは、IOMMUに関連するおよび/または組み込まれるIOTLBに格納されてもよく、IOMMUの遠隔にあるTLBに格納されてもよい。図7は、本発明の実施形態に係る二層アドレッシングを示すフローチャート700の例示的ブロック図である。ステップ710において、GVAは、トランザクション用のGPAに変換される。トランザクションは、例えば、PCI-SIGPASIDTLPPrefixECN仕様に従うPCIeバス用の標準化されたフォーマットを有し得るトランザクション層パケットTLPプレフィックスを含み得る。IOMMUは、プロセスアドレス空間IDがTLPプレフィックスで運ばれることを識別してもよく、プロセスアドレス空間IDは、GVAからGPAへの変換用のゲストテーブルを選択するのに用いられ得る。ステップ720において、GPAは、システム物理アドレスSPAに変換される。変換テーブルは、トランザクションによって運ばれる装置IDに従って選択され得る。例えば、PCIeトランザクションがTLPプレフィックスを有していない場合には、システムは、パケットがGPAを含むことを判定し得る。したがって、発信側の装置IDは、GPAからSPAへの変換テーブルを選択するのに用いられ得る。IOMMUは、TLPプレフィックス用のパケットを検査し、それに応じて挙動してもよい。PCIeトランザクションが有効なプロセスアドレス空間IDを含む場合には、パケットは、GVAを含む。プロセスアドレス空間IDは、GVAからGPAへの変換テーブルを選択するのに用いられ、装置ID例えば、PCI-Eバス上のBDF登録商標は、GPAからSPAへのテーブルを選択するのに用いられる。IOMMUが有効なプロセスアドレス空間IDを検出しない場合には、パケットは、GPAを含むように推定され、装置IDは、GPAからSPAへの変換テーブルを選択するのに用いられる。したがって、トランザクションにおける有効なプロセスアドレス空間IDの存在または欠如は、一層GPA-SPAおよび二層GVAからGPA、およびGPAからSPAのアドレス変換の何れかが要求される際に、IOMMUによって識別され得る。結論本発明の実施形態の概要および要約においては、1つ以上ではあるが全てではない、本発明の代表的な実施形態が説明される。なお、係る実施形態は、発明者単数または複数により検討されたものであり、したがって、係る実施形態が、本発明および添付の特許請求項を制限することを意図するものではまったくない。本発明は、特定の機能および係る機能の関連性の実装を例示する機能的ビルディングブロックの支援により、上記で説明されてきた。これらの機能的ビルディングブロックの境界は、説明の簡便化のために本明細書においては任意に画定された。本発明の特定の機能および関連性が適切に実行される限り、代替的な境界が画定されてもよい。特定の実施形態の前述の説明は、本発明の全般的な性質を十分に明らかにすることであろう。なお、本発明の全般的な性質は、当該技術分野内の知識を適用することによって、必要以上の実験を行うことなく、本発明の全般的な概念から逸脱することなく、他者が特定の実施形態を容易に修正および/または様々な用途に適応させることが可能である。したがって、係る適応例および修正例は、本明細書において提示された教示およびガイダンスに基づいて開示された実施形態の均等物の意味および範囲に含まれることを意図するものである。本明細書における表現および用語は、本明細書の用語または表現が本教示およびガイダンスに照らして当業者により解釈されるよう、説明目的のためのものであり、制限目的のためのものではないことを理解すべきである。本発明の範囲は、上述の代表的な実施形態のいずれよっても制限されるものではなく、以下の特許請求項およびそれらの均等物にしたがって定められるべきである。"