"メモリ管理ユニットを含むコンピュータシステムの資源状態を決定することと、決定された資源状態に基づいてアドレストランスレーション情報を前記メモリ管理ユニットに関連付けられるキャッシュで選択的に記憶することと、を備える方法。前記アドレストランスレーション情報はプリフェッチ即時コマンド内に含まれる請求項1の方法。前記アドレストランスレーション情報は、i仮想アドレス、及びii前記仮想アドレスに関連付けられるトランスレートされた物理アドレス、を含む請求項1の方法。前記メモリ管理ユニットは入力/出力I/Oメモリ管理ユニットIOMMUである請求項1の方法。前記キャッシュはI/OトランスレーションルックアサイドバッファIOTLBである請求項1の方法。前記キャッシュは前記IOTLBに関連付けられるトランスレーションキャッシュ動作から隔離されたサイドトランスレーションバッファを更に備える請求項5の方法。前記キャッシュに記憶されていないアドレストランスレーション情報に対する要求に応答してイベントログエントリを作成することと、当該要求されたアドレストランスレーション情報を前記イベントログエントリに応答して前記キャッシュ内へと挿入することと、を更に備える請求項1の方法。前記キャッシュに記憶されていないアドレストランスレーション情報に対する要求に応答して、前記メモリ管理ユニットに関連付けられるページテーブルウォーカーを用いてページテーブルウォークを行うことと、前記ページテーブルウォーカーを用いて前記コンピュータシステムのシステムメモリ内のトランスレーションテーブルから当該要求されたアドレストランスレーション情報を取得することと、前記要求されたアドレストランスレーション情報を、前記メモリ管理ユニットに関連付けられるキャッシュ置換メカニズムを用いて前記キャッシュ内へと挿入することと、を更に備える請求項1の方法。前記アドレストランスレーション情報を前記キャッシュに関連付けられる1つ以上の指定されたスロット内へと挿入することにより、前記メモリ管理ユニットに関連付けられるキャッシュ置換メカニズムをバイパスすることを更に備える請求項1の方法。前記メモリ管理ユニットに関連付けられる無効化メカニズムを用いて、前記キャッシュに関連付けられるロケーションを無効化することを更に備え、前記無効化することは、i1つ以上のアドレスエントリ、及びii1つ以上のスロット、の少なくとも1つを指定する無効化コマンドに応答する請求項1の方法。指定されたアドレストランスレーション情報に関連付けられる既に記憶されたいかなるアドレストランスレーション情報にもかかわらず、無効化表示に応答して前記指定されたアドレストランスレーション情報を記憶することを更に備える請求項1の方法。少なくとも前記資源状態に基づいて割り込み再マッピング情報を前記メモリ管理ユニットに関連付けられる割り込み再マッピングバッファで選択的に記憶することを更に備える請求項1の方法。メモリ管理ユニットを備えるコンピュータシステムであって、前記メモリ管理ユニットは、前記コンピュータシステムの資源状態を決定すると共に決定された資源状態に基づいてアドレストランスレーション情報を前記メモリ管理ユニットに関連付けられるキャッシュで選択的に記憶するように構成されるコンピュータシステム。前記アドレストランスレーション情報はプリフェッチ即時コマンド内に含まれる請求項13のシステム。前記アドレストランスレーション情報は、i仮想アドレス、及びii前記仮想アドレスに関連付けられるトランスレートされた物理アドレス、を含む請求項13のシステム。前記メモリ管理ユニットは入力/出力I/Oメモリ管理ユニットIOMMUである請求項13のシステム。前記キャッシュはI/OトランスレーションルックアサイドバッファIOTLBである請求項13のシステム。前記キャッシュは前記IOTLBに関連付けられるトランスレーションキャッシュ動作から隔離されたサイドトランスレーションバッファを更に備える請求項17のシステム。前記メモリ管理ユニットは、前記キャッシュに記憶されていないアドレストランスレーション情報に対する要求に応答してイベントログエントリを作成することと、当該要求されたアドレストランスレーション情報を前記イベントログエントリに応答して前記キャッシュ内へと挿入することと、を行うように更に構成される請求項13のシステム。前記メモリ管理ユニットは、前記キャッシュに記憶されていないアドレストランスレーション情報に対する要求に応答して、前記メモリ管理ユニットに関連付けられるページテーブルウォーカーを用いてページテーブルウォークを行うことと、前記ページテーブルウォーカーを用いて前記コンピュータシステムのシステムメモリ内のトランスレーションテーブルから当該要求されたアドレストランスレーション情報を取得することと、前記要求されたアドレストランスレーション情報を、前記メモリ管理ユニットに関連付けられるキャッシュ置換メカニズムを用いて前記キャッシュ内へと挿入することと、を行うように更に構成される請求項13のシステム。前記メモリ管理ユニットは、前記アドレストランスレーション情報を前記キャッシュに関連付けられる1つ以上の指定されたスロット内へと挿入することにより、前記メモリ管理ユニットに関連付けられるキャッシュ置換メカニズムをバイパスするように更に構成される請求項13のシステム。前記メモリ管理ユニットは、i1つ以上のアドレスエントリ、及びii1つ以上のスロット、の少なくとも1つを指定する無効化コマンドに応答して、前記メモリ管理ユニットに関連付けられる無効化メカニズムを用いて、前記キャッシュに関連付けられるロケーションを無効化するように更に構成される請求項13のシステム。前記メモリ管理ユニットは、指定されたアドレストランスレーション情報に関連付けられる既に記憶されたいかなるアドレストランスレーション情報にもかかわらず、無効化表示に応答して前記指定されたアドレストランスレーション情報を記憶するように更に構成される請求項13のシステム。前記メモリ管理ユニットに関連付けられる割り込み再マッピングバッファであって、少なくとも前記資源状態に基づいて割り込み再マッピング情報を選択的に記憶するように構成される再マッピングバッファを更に備える請求項13のシステム。コンピュータ実行可能命令が記憶された有形的コンピュータ可読媒体であって、前記コンピュータ実行可能命令は、コンピューティングデバイスによって実行される場合に、メモリ管理ユニットを含むコンピュータシステムの資源状態を決定することと、決定された資源状態に基づいてアドレストランスレーション情報を前記メモリ管理ユニットに関連付けられるキャッシュで選択的に記憶することと、を備える方法を前記コンピューティングデバイスに行わさせる有形的コンピュータ可読媒体。幾つかのIO制御器又は周辺機器は、オペレーティングシステム又はハイパーバイザにおけるデバイスドライバソフトウエアによって管理される単純なMMUを含む。例えば典型的なグラフィクス制御器は、グラフィクスカード上のローカルMMUを含む。このような場合、ローカルMMUマッピングハードウエアは、洗練されたアルゴリズムを用いるシステムソフトウエアによって制御されるが、各MMUは固有のものであり且つ固有のドライバを必要とする。周辺機器ハードウエアに対する変更点はドライバに対する変更を必要とし、開発コストを跳ね上げると共に開発スケジュールを長期化させ、最終的には製品化までの時間を遅らせる。このことはまた、仮想化されたシステムにおけるハイパーバイザのための一般的なドライバを製造供給元が作成することができず、従って特定のドライバがハイパーバイザ内に含まれている必要があることを意味し、ハイパーバイザの選択は、システム内に存在する的確なIO周辺機器に依存することになる。これは、サポートされるオペレーティングシステムのためのドライバに加えてハイパーバイザのために更に別のドライバが作成され且つ試験される必要があることを意味し、開発コスト及び時間が更に跳ね上がる。IOMMU性能を改善し、且つソフトウエアがハイパーバイザのために一度作成されると共に周辺機器メモリマッピングアーキテクチャの多重実装に用いられることを可能にする手法が必要とされている。本発明の実施形態は、ページテーブルの構造及びフォーマットに依存しない改良されたトランスレーション挙動を伴うIOMMUのより小さくより単純なハードウエア実装を可能にする。実施形態はまた、デバイスに依存しない構造及び実装の方法を提供し、ソフトウエアのより大きな一般性を可能にするより少ない特定のソフトウエアバージョンは同時に開発コストを低減する。1つの実施形態は、システムの入力/出力I/Oメモリ管理ユニットIOMMUでプリフェッチ即時コマンドを受け取ることを含む方法に関連している。プリフェッチ即時コマンドは、i仮想アドレス、及びii仮想アドレスに関連付けられるトランスレートされた物理アドレス、を含むアドレストランスレーション情報を指定する。方法は更に、少なくとも資源状態に基づいてアドレストランスレーション情報をIOMMUに関連付けられるI/OトランスレーションルックアサイドバッファIOTLB内へと選択的に記憶することを含む。別の実施形態は、プリフェッチ即時コマンドを受け取るように構成される入力/出力I/Oメモリ管理ユニットIOMMUを含むシステムに関連している。プリフェッチ即時コマンドは、i仮想アドレス、及びii仮想アドレスに関連付けられるトランスレートされた物理アドレス、を含むアドレストランスレーション情報を指定する。IOMMUに関連付けられるI/OトランスレーションルックアサイドバッファIOTLBは、少なくとも資源状態に基づいてアドレストランスレーション情報を選択的に記憶するように構成される。更に別の実施形態は、システムの入力/出力I/Oメモリ管理ユニットIOMMUでプリフェッチ即時コマンドを受け取ることを含む方法を、コンピューティングデバイスによって実行される場合にコンピューティングデバイスに行わせるコンピュータ実行可能命令が記憶された有形的コンピュータ可読媒体に関連している。プリフェッチ即時コマンドは、i仮想アドレス、及びii仮想アドレスに関連付けられるトランスレートされた物理アドレス、を含むアドレストランスレーション情報を指定する。方法は更に、少なくとも資源状態に基づいてアドレストランスレーション情報をIOMMUに関連付けられるI/OトランスレーションルックアサイドバッファIOTLB内へと選択的に記憶することを含む。本発明の更なる特徴及び利点の他、本発明の種々の実施形態の構成及び動作は、添付の図面を参照して以下に詳細に説明される。尚、本発明はここに説明される特定の実施形態に限定されない。そのような実施形態は例示の目的のみのためにここに提示されている。ここに含まれる教示に基き追加的な実施形態が関連分野を含めた当業者にとって明らかであろう。本発明の実施形態は、メモリ管理ユニット及びその応用を提供する。以下の詳細な説明において、1つの実施形態、ある実施形態、例示的実施形態等に対する言及は、説明される実施形態が特定の特徴、構造又は特性を含んでいてよいが、全ての実施形態が必ずしも当該特定の特徴、構造又は特性を含む必要がなくてよいことを示している。また、そのような表現は必ずしも同じ実施形態を参照しているとは限らない。更に、特定の特徴、構造又は特性がある実施形態に関連して説明されている場合には、明示的に説明されていようとなかろうと、他の実施形態に関連して当該特定の特徴、構造又は特性を具現化することは当業者の知識の範囲内にあることと言える。図1はCPU106とCPU106に関連付けられるCPU_MMU108とを含むシステム100を示すブロック図である。システム100は、周辺機器110に関連付けられるIOMMU102を更に含む。ここには図示されていないが、システム100においては、多重のCPU_MMU108が考慮されるのと同時に多重のIOMMUが考慮される例えば多重プロセッサシステム。IOMMU102は、一連の定義された機能及び挙動に従って動作する。これらの機能及び挙動は、システムメモリ104内にキューされ且つIOMMU102によって読み出されてIOMMU102によって実行/使用される一連のコマンドに関連付けられている。IOMMU102は、周辺機器110とシステムメモリ104の間で仮想/物理アドレスをトランスレートし、そして割り込み再マッピングを行う。割り込み再マッピングは、再マッピング割り込みに対応するアドレスをトランスレートするという点において、アドレストランスレーションと同様に機能する。IOMMU102のトランスレーション/再マッピング速度を向上させるために、システムメモリ104内に記憶されるアドレストランスレーション/割り込み再マッピング情報がIOMMU102内にキャッシュされ得る。この処理は、IOMMU102がトランスレーション又は再マッピング情報にアクセスし得る速度を高める。図2は図1のIOMMU102を示す更に詳細なブロック図である。IOMMU202は、主システムメモリ104図1参照の内容を調べるように構成されるページテーブルウォーカー214を含む。ページテーブルウォーカー214はまた、IOMMU102内での記憶/キャッシングのための情報の配置及びリトリーバルを容易にする。ページテーブルウォーカー214は、トランスレーションルックアサイドバッファTLB212と称されるキャッシュ内へとトランスレーション情報を挿入することができ、TLB212は入力/出力TLBIOTLB212としても知られる。IOTLB212は、仮想アドレス216と物理アドレス218の間でのアドレストランスレーションに用いられ得る。同様のキャッシング構造が割り込み再マッピングに対しても用いられ得る。IOMMU102は、キャッシュされるべき情報の充填とIOMMU102及び/又はIOTLB212内にキャッシュされるトランスレーション/再マッピング情報の無効化又はフラッシングとを制御するシステムメモリ104からのコマンドを読み出す。IOMMU102は更に、周辺機器110からの情報に対する要求に応答してシステムメモリ104からのトランスレーション/再マッピング情報を自動的にロードすることが可能である。例えばIOMMU102は、ハードウエアのページテーブルウォーカー214を実装して、ページテーブルウォークを行うと共にシステムメモリ104のページテーブルから物理アドレス218をリトリーブすることができる。トランスレートされるべき仮想アドレス216がIOTLB212内にキャッシュされていない場合に、ページテーブルウォークは、仮想アドレス216を含む周辺機器110からの要求に応答することができる。IOTLB212内のアドレストランスレーション/再マッピング情報は、ハードウエア及び/又はソフトウエアにより種々の方法トランスレーションバッファポリシーとも称されるにおいて維持され且つ更新され得る。例えば、CPU106上のシステムソフトウエアは、システムメモリ104内に記憶される対応する情報が変化していることを理由としてもはや有効ではないIOMMU102内にキャッシュされている情報を無効化することができる。IOMMU102はまた、IOMMU102内にキャッシュされるトランスレーションエントリのキャッシング及び退去を主としてハードウエアが決定するように、トランスレーションバッファポリシーをハードウエアにおいて実装することもできる。キャッシュされたトランスレーションエントリが退去させられると、新たな情報のための場所を空けることができる。キャッシュされたトランスレーションエントリは、それがもはや有効ではなくなったときにフラッシュされる必要がある。これらの及び他の技術は、IOTLB212内の情報が置換されることになる場合又はもはや有効ではなくなった場合にこれを処理するために適用され得る。IOMMU102は、システムメモリ104からの情報を、その情報に対する要求を周辺機器110から受け取るのに先立ちプリフェッチすることができる。プリフェッチコマンドは、例えば、IOMMUにおけるトランスレーションデータプリフェッチの表題で2008年4月30日に出願された米国特許出願第12/112,611号に開示されるように実装することができ、その内容はその全部を参照としてここに組み込まれる。プリフェッチコマンドは、システムメモリ104のページテーブルをウォークすること及び例えば指定されたデバイス仮想アドレスに関連付けられるトランスレーション情報をプリロードすることをIOMMU102に指示することができる。従って、プリロードされたトランスレーション情報は、要求がIOMMU102内に入ってきたときにIOTLB212において利用可能である。図3はIOMMU302及びシステムメモリ304を含むシステム300を示すブロック図である。システム300はページテーブル320及びイベントログバッファ328を更に含む。アドレストランスレーション情報322はページテーブル320内でアクセス可能である。IOMMUエントリ330はイベントログバッファ328内でアクセス可能である。システム300はCPU306及びCPU_MMU308を追加的に含む。単一又は複数のIOMMUキャッシュを充填することに関して、IOMMU302は、システムメモリ304のページテーブル320内に記憶されるアドレストランスレーション情報322にアクセスしてこれをキャッシュする。図示されるように、IOMMU302のページテーブルウォーカー314は、ページテーブルウォークを行ってアドレストランスレーション情報322をリトリーブする。アドレストランスレーション情報322は、次いでIOTLB312内にキャッシュされる。アドレストランスレーション情報322に対して周辺機器310からの後続の要求がIOMMU302に到着すると、アドレストランスレーション情報322はIOTLB312において利用可能となり、ページテーブルウォークは不要になる。IOTLB312でもはや利用可能でないアドレストランスレーション情報322に対する要求がIOMMU302に到着すると、ページテーブル320からのアドレストランスレーション情報322を得るために、次のページテーブルウォークが行われ得る。代替的には、システム300は、プリフェッチ即時コマンド326を利用してIOTLB312の内容を更新することができる。IOMMU302は、システムメモリ304のコマンドキュー324内に記憶されるコマンドを読み出して使うことができる。これにより、IOMMU302は、その単一又は複数のキャッシュを、コマンドにおいて渡された情報を用いて充填することができる。充填ポリシーに加えて、IOMMU302によって読み出されたコマンドは、実際上、IOTLB312内にキャッシュされた情報をソフトウエアが無効化し又は更新することを可能にする。例えば、無効化は、アドレストランスレーション情報322が変化し、IOTLB312内の先にキャッシュされたアドレストランスレーション情報が、変化したアドレストランスレーション情報322にもはや対応しなくなったときの状態と関連付けられ得る。IOMMU302によってコマンドキュー324から読み出されたコマンドは、IOMMU302の機能を更に拡大することができる。プリフェッチ即時コマンド326は、プリフェッチ即時コマンド326の本体内にアドレストランスレーション情報322を含むことができる。IOMMU302は次いで、プリフェッチ即時コマンド326を介してアドレストランスレーション情報322を受け取ることができる。従ってIOMMU302は、アドレストランスレーション情報322を得るためにページテーブルウォーカー314を用いてページテーブル320をウォークする必要はない。プリフェッチ即時コマンド326内の情報は、ページテーブルウォーキングをなんら行うことなしに、IOTLB312内へ直接的にロードされ得る。図示されるように、ページテーブルウォーカー314は、プリフェッチ即時コマンド326と連動してバックアップし且つ/又は動作するために利用可能である。プリフェッチ即時コマンド326は、IOMMUへの新たなコマンドとして又は上述したプリフェッチコマンドの変形として実装され得る。また、プリフェッチ即時コマンド326は、必要な情報をシステムソフトウエアが書き込む一連のMMIOレジスタとして実装されてもよい。図4は実施形態に従いプリフェッチ即時コマンド426を実装しているシステム400を示すブロック図である。システム400は、周辺機器410に関連付けられており、そしてCPU406、CPU_MMU408及びシステムメモリ404を含み得る。システムメモリ404は、ページテーブル420、コマンドキュー424及びイベントログバッファ428を含む。システムメモリ404はまた、IOページテーブル430に関連付けられていてもよい。アドレストランスレーション情報422はIOページテーブル430内に記憶され得る。IOページテーブル430の内部フォーマットは、ページテーブル420の内部フォーマットと同じである必要はない。プリフェッチ即時コマンド426は、アドレストランスレーション情報422をIOTLB412内へキャッシュする。アドレストランスレーション情報422は、仮想アドレス416及び物理アドレス418と関連付けられている。システム400は、コマンドキュー424及びプリフェッチ即時コマンド426を管理して、アドレストランスレーション情報422をプリフェッチ即時コマンド426による使用のために供することができる。従って、プリフェッチ即時コマンド426を用いてIOMMUと相互作用しているシステム400は、システム400がIOMMU402におけるデータのキャッシングに関連付けられるための柔軟性及び機会を導入する。加えて、システム400は、ページテーブルウォーカー414を用いる必要性なしに、アドレストランスレーション情報422のキャッシングをIOTLB412で達成することができる。従ってシステム400は、特定のハードウエア実装のページテーブルウォーカー414用いられている場合におけるとインタフェースするために特定のシステムドライバを含んでいる必要がない。しかし、プリフェッチ即時コマンド426は、妥当な場合、ハードウエアページテーブルウォーカー414と連動して全体の性能を改善するために動作可能であることが検討される。図5は実施形態に従いシステム状態に基づきアドレストランスレーション情報を選択的に記憶する例示的な方法560を示すフローチャートである。ステップ570において、IOMMUは、アドレストランスレーション情報を指定するプリフェッチ即時コマンドを受け取る。ステップ572では、例えばIOMMU又はシステムによってシステム状態がチェックされる。システム状態はシステムの資源状態を含むことができ、システムの資源状態は、システム資源の利用可能性、IOTLBにおける1つ以上の空きアドレスエントリの利用可能性、電力節約及び/若しくはスリープ状態、並びに/又は係属中システム要求を考慮したシステム資源の利用可能性、を含むことができる。資源状態はまた、プリフェッチ即時コマンドにおいて指定されるアドレストランスレーション情報に対応するIOTLB内に記憶される1つ以上の有効アドレスエントリの優先度、又はプリフェッチ即時コマンドにおいて指定される無効化表示、を含むこともできる。ステップ574では、システム状態に基づきプリフェッチ即時コマンドを無視するかどうかの決定がなされる。プリフェッチ即時コマンドを無視しないとの決定である場合には、方法はステップ576へ進み、アドレストランスレーション情報がIOMMUのIOTLBに記憶される。方法はステップ576からステップ578へ進む。ステップ574においてプリフェッチ即時コマンドを無視するとの決定である場合には、方法はステップ578へ進み、コマンドキュー内の次のIOMMUコマンドが処理される。プリフェッチ即時コマンドのためのコマンドフォーマットは、トランスレートされた物理アドレスと、指定されたデバイス仮想アドレスに対する許可アクセス標識及びIOMMUドメイン情報を含む他の情報と、を含むことができる。コマンドフォーマットはまた、IOTLBスロット宛先を含んでいてもよい。IOMMUはプリフェッチ即時コマンドを選択的に無視することができる。例えば、IOMMUは、IOMMUキャッシュ内に存在しているエントリが上書きされるべきではないことと、アドレストランスレーションが挿入されるべき現在利用可能なIOMMUキャッシュエントリがないことと、を決定することができる。無視されたプリフェッチ即時コマンドに含まれてはいたが挿入されてはいなかったアドレストランスレーション情報に対して要求がIOMMUに後で到着する場合、IOMMUは、ページテーブルウォークを行い又はプリフェッチ即時コマンドを要求して、要求されたアドレストランスレーション情報を得ることができる。何らかの理由によりプリフェッチ即時コマンドを引き受けるのに不都合があり又は正当な時間でない場合には、プリフェッチ即時コマンドは無視されるのが安全である。プリフェッチ即時コマンドの選択的な引き受け/無視は、コマンドを引き受けるかどうかを決定する際に資源状態を考慮することによってIOMMUがシステム性能を最適化することを可能にする。アドレストランスレーション情報を取得してそれを挿入するためのハードウエアベースの基盤/メカニズムがIOMMUの実施形態に利用可能であり、プリフェッチ即時コマンドはハードウエア基盤の中でも最高の加速である。プリフェッチ即時コマンドはアドレストランスレーション情報をロードすることができ、あるいは当該コマンドは無視されてアドレストランスレーション情報をロードするのにハードウエアメカニズムが頼られてよい。プリフェッチ即時コマンドは、アドレストランスレーション情報をIOMMUに提供するために、IOMMUのページテーブルウォーカーに対する代替案を提供する。加えて、提供されたアドレストランスレーション情報をIOMMUのIOTLB内へロードすること及び/又は挿入することのために、種々の技術が実装され得る。ここに開示される実施形態は、IOMMUの既存の機能と連動して動作することができ、あるいはIOMMU機能をオーバーライドすることができる。1つの実施形態においては、提供されたアドレストランスレーション情報をIOMMUのIOTLB内へ、即ちIOMMUの内部アドレストランスレーションキャッシュ内へ挿入するために、IOMMUのネイティブキャッシュ置換アルゴリズムが用いられ得る。IOMMU_IOTLBトランスレーションキャッシュは、提供されたアドレストランスレーション情報をIOTLB内へロード/挿入するに際して、通常はこのようにして機能することになる。しかし、アドレストランスレーション情報を取得し且つ/又はこれをIOMMUのネイティブキャッシュ置換アルゴリズムに提供するために、IOMMU全体がページウォーク機能を必要とするわけではない。従って、IOMMUのネイティブキャッシュ置換アルゴリズムは、退去をもたらし得る状況、例えば提供されたアドレストランスレーション情報を記憶するためにIOTLB内に空きスロットが無い状況を取り扱うことができる。例えば、IOTLBの通常動作は、IOTLB内に既にキャッシュされたアドレストランスレーション情報が使用され又は要求される前であっても、その既にキャッシュされたアドレストランスレーション情報が他の提供されたアドレストランスレーション情報によって退去させられる置換されることを可能にする。別の実施形態においては、プリフェッチ即時コマンドは、IOMMU_IOTLBトランスレーションキャッシュ内の特定のスロット内へ情報をロードすることをIOMMUに指示するその情報を含むことができる。この情報のローディングは、当該プリフェッチ即時コマンドのためのIOMMUトランスレーションキャッシュ置換ハードウエア及び/又はアルゴリズムをオーバーライドし又は置換する。IOTLBの通常動作は次いで、トランスレーション情報が使用される前にそれが退去させられる置換されることを可能にする。システムはIOMMUに指示することができるので、システムは、IOMMUトランスレーションキャッシュ置換ハードウエア及び/又はアルゴリズムの仕様からは解放されている。更に別の実施形態においては、IOTLB構造は、例えばシステムソフトウエアが直接的に内容を操作することができるMMIOスペース内に直接的にさらされており、あるいはアドレス/データレジスタ対を介して間接的にMMIOスペース内にさらされている。図6は実施形態に従いサイドTLB632を含むIOMMU602の別の実施形態を示すブロック図である。IOMMU602は、仮想アドレス616、物理アドレス618及びページテーブルウォーカー614に関連付けられている。サイドTLB632はIOTLB612から切り離されている。IOMMU602は、提供されたアドレストランスレーション情報を特別のサイドトランスレーションルックアサイドバッファサイドTLB632内へ挿入することができる。サイドTLB632は、システムソフトウエアによって管理されてよく、そして頻繁に使用されるトランスレーションを含むことができる。サイドTLB632を用いて、頻繁に使用されるトランスレーションをIOTLB612とは別にしておくことによって、頻繁に使用されるトランスレーションがIOTLB612内のスロットに対する他のアドレストランスレーションと競合することを回避することができる。TLB632内にキャッシュされている頻繁に使用されるトランスレーションは、IOTLB612上で実行されるIOMMU602の通常のトランスレーションキャッシュ動作によっては退去させられないであろうから、サイドTLB632をスティッキーにして、アドレストランスレーション情報を記憶するために常時利用可能にする。例えば、TLBキャッシュのエントリ内に記憶されるアドレストランスレーション情報を必要とするデバイス直接メモリアクセスDMA動作は、IOMMUによるページウォークによって遅滞なく迅速にトランスレートされるであろう。図7は実施形態に従いIOTLB712及びサイドTLB732を含むIOMMU702を伴うシステム700を示すブロック図である。システム700は、CPU706、CPU_MMU708及びシステムメモリ704を含む。システムメモリ704は、ページテーブル720、コマンドキュー724及びイベントログバッファ728を含む。システム700においては、仮想アドレス716を含む周辺機器710からの要求は、IOMMU702に到着する。IOMMU702は、物理アドレス718に関連付けられ且つ仮想アドレス716に対応するアドレストランスレーション情報がIOMMU702でIOTLB712及び/又はサイドTLB732内にキャッシュされるかどうかを決定する。当該情報がIOMMU702で利用可能でなく且つ主システムメモリ704のページテーブル720から利用可能である場合には、IOTLBミスとなる当該情報が利用可能ではないページフォールトとは区別される。ページテーブルウォーカー714は、システムメモリ704のページテーブル720にアクセスしてIOMMU702で要求をサーブするのに必要なアドレストランスレーション情報を取得しそして提供するために利用可能である。加えて、システム700は、ページテーブルウォーカー714がページテーブルウォークを行うのを待つことなしに、コマンドキュー724を用いてプリフェッチ即時コマンド726を実行し、サイドTLB732及びIOTLB712に対してアドレストランスレーション情報722を提供することができる。IOMMU702は、プリフェッチ即時コマンド726に関連付けられる記憶装置キャッシュ;例えばIOTLB712及びサイドTLB732のサイズ及び機能に関する情報を、システムソフトウエアが記憶装置キャッシュの使用を最適化し得るよう、システムソフトウエア及び/又はシステム700に提供するように構成され得る。提供される情報は、例えば、エントリの数及び種類並びにそれらのキャッシュとしての組織化を含み得る。従ってシステム700は、IOMMU702の記憶装置キャッシュ資源をグローバルシステムレベルで知的に管理することができる。図8は実施形態に従いIOTLB812を含むIOMMU802を伴うシステム800を示すブロック図である。システム800はシステムメモリ804及びCPU_MMU808を含む。システムメモリ804は、ページテーブル820、コマンドキュー824及びイベントログバッファ828を含む。図8の実施形態においては、IOMMU802はページテーブルウォーカーを含まないので、電力及びチップ面積を節約することができる。仮想アドレス816を含む周辺装置810からの要求は、IOMMU802に到着する。IOMMU802は、仮想アドレス816及び物理アドレス818に関連付けられるアドレストランスレーション情報がIOMMU802で周辺装置810からのトランスレーション要求をサーブするために利用可能であるかどうかを決定する。アドレストランスレーション情報がIOMMU802でキャッシュされていない場合例えばIOTLBミスの場合には、IOMMU802は、イベントログバッファ828で新たなIOMMUイベントログを作成する。イベントログエントリは、トランスレーション情報がIOMMU802によって要求されている旨の信号を主CPU806へ送る。主CPU806は、プリフェッチ即時コマンド826を用いてアドレストランスレーション情報822をIOTLB812内へ挿入することができ、またイベントをトリガーした周辺機器810のIO動作をレジュームすることができる。IOTLBミスの蓋然性を更に低減し又は排除するために、IOMMU802キャッシュの実装決定及び使用パターンに応じて、サイドTLB図8には図示せず;例えば図7を参照がIOMMU802内に含まれていてよい。プリフェッチ即時コマンドは、ドメイン情報デバイステーブルエントリ内容をIOMMUキャッシュ構造内に投入するために、ドメイン情報を含むことができる。代替的には、ドメイン情報を投入することは、種々の実装仕様に応じて、別個のコマンドとして実装され得る。図9はI/O動作からの要求をサービスするための例示的な方法960を示すフローチャートである。ステップ980では、アドレストランスレーション情報を要求しているI/O動作からの要求が受け取られる。ステップ982では、要求に関連付けられるアドレストランスレーション情報が既にIOMMUのIOTLB内に記憶されているかどうかが決定される。アドレストランスレーション情報が既に記憶されている場合には、方法はステップ984へ進み、要求されているアドレストランスレーション情報が提供される。ステップ982においてアドレストランスレーション情報がまだ記憶されていない場合には、方法は986へ進み、IOMMUイベントログエントリが作成されて、アドレストランスレーション情報が要求されている旨の信号が送られる。ステップ990では、要求されたアドレストランスレーション情報が、プリフェッチ即時コマンドを用いて、IOMMUイベントログエントリに応答して1つ以上のIOMMUキャッシュ内へ挿入される。ステップ992では、アドレストランスレーション情報を要求しているI/O動作がレジュームされる。図10はIOMMUイベントログエントリ1030を含むイベントログバッファ1028を伴うシステム1000を示すブロック図である。図示される実施形態はIOMMU1002内にページテーブルウォーカーを含まないので、電力及びチップ面積を節約することができる。システム1000はCPU_MMU1008及びシステムメモリ1004を含む。システムメモリ1004は、ページテーブル1020、コマンドキュー1024及びイベントログバッファ1028を含む。システム1000においては、周辺機器1010からの要求はIOMMU1002に到着する。IOMMU1002は、周辺機器1010からのトランスレーション要求をサービスするためにアドレストランスレーション情報がIOMMU1002で利用可能であるかどうかを決定する。アドレストランスレーション情報がIOMMU1002でキャッシュされていない場合例えばIOTLBミスの場合には、新たなIOMMUイベントログエントリ1030がイベントログバッファ1028で作成される。IOMMUエントリ1030は、トランスレーション情報がIOMMU1002によって要求されている旨の信号をCPU1006へ送る。主CPU1006は、プリフェッチ即時コマンド1026を用いてアドレストランスレーション情報1022をIOTLB1012に提供する。トランスレーション情報1022は、プリフェッチ即時コマンド1026をシステムメモリ1004のコマンドキュー1024内へ投入することによって提供される。IOMMU1002はコマンドキュー1024からプリフェッチ即時コマンド1026をフェッチし、そしてプリフェッチ即時コマンド1026を実行する。提供されたアドレストランスレーション情報1022は次いで、上述した種々の充填ポリシーを用いてIOTLB1012内へ挿入され得る。例えばプリフェッチ即時コマンド1026は、IOTLB1012の特定のスロットを含むことができ又はIOTLB1012の特定のロケーションに関する他の情報を含むことができる。代替的には、提供されたアドレストランスレーション情報1022をIOTLB1012内へ挿入するために、IOMMUのネイティブキャッシュ置換アルゴリズムを用いることができる。IOTLBミスの蓋然性を更に低減し又は排除するために、IOMMU1002キャッシュの実装決定及び使用パターンに応じて、サイドTLB図示せずがIOMMU1002内に含まれていてよい。アドレストランスレーション情報は、種々の理由で無効にされ且つ/又はIOMMUの単一若しくは複数のトランスレーションキャッシュから除去され得る。例えば、IOMMU内にキャッシュされるアドレストランスレーション情報は、システムメモリのページテーブル内に記憶されるアドレストランスレーション情報にもはや対応していないであろう。ある実施形態においては、ネイティブIOMMU検索アルゴリズムを用いてIOMMUがその単一又は複数の内部アドレストランスレーションキャッシュを検索し、任意の特定の無効化する単一又は複数のエントリを見つけ出すように、INVALIDATE_IOMMU_PAGESコマンドが、無効化するアドレストランスレーション情報又は特定のアドレスを指定するために用いられ得る。別の実施形態においては、INVALIDATE_IOMMU_PAGESコマンドが、無効化するアドレスの代わりに無効化するIOMMUの特定のスロットを表示することができる。当該コマンドはINVALIDATE_IOMMU_PAGESコマンドの変形として構成することができ、あるいは当該コマンドは新たなコマンドとして構成することができる。別の実施形態においては、無効化は、プリフェッチ即時コマンドを発行することによって達成され得る。プリフェッチ即時コマンドは、占有されているアドレストランスレーションスロットを特定することができ、また占有されているアドレストランスレーションスロットに含まれる情報が上書きされるべきであることを指定することができる。例えば、プリフェッチ即時コマンドは無効化ビットを含むことができる。無効化ビットが表示されている場合、IOMMUは、プリフェッチ即時コマンドに従うこと及び既存のアドレストランスレーション情報に上書きすることを指示される。従って無効化ビットは、IOMMUがプリフェッチ即時コマンドを選択的に無視し得るかどうかを制御することができる。例えばシステムソフトウエアが内容を直接的に操作し得るMMIOスペースにIOTLB構造が直接的にさらされている更に別の実施形態においては、無効化は直接アクセス方法を用いて達成され得る。この実施形態においては、システムソフトウエアは、MMIOスペースを介してIOTLBを操作することによってシステムソフトウエアがエントリをテーブル内に挿入したのと同じやり方でエントリを無効化することができる。例えば主x86プロセッサ上で実行中のシステムソフトウエアがこれらの新たなコマンドによって増強されるが、導き出される利益は、それら利益を達成するために容易に変化させられ得るソフトウエアにおいて実装され得る。システムソフトウエアは、無修正のハードウエアメカニズムがローカルレベルで達成し得る又は予想され得るよりも洗練された、適切な、適合性のある、及び効率的な置換技術を実装することが可能である。幾つかのシステム制約に対して、典型的には性能敏感なシステムに対して、ソフトウエアコマンド及びここに説明される関連する構造を補完するために、ハードウエアページテーブルウォーカーを伴う完全IOMMUが実装され得る。図11はIOMMU1102とIOTLBを伴う周辺機器1111とを含むシステム1100を示すブロック図である。システム1100は、システムメモリ1104、CPU1106及びCPU_MMU1108を含む。幾つかの周辺機器は、周辺機器内でIOTLBを用いるであろう。周辺機器のIOTLBは、IOMMU1102のIOTLBの論理的拡張として機能することができる。IOTLB1111を伴う周辺機器は、IOMMU1102を利用して、トランスレーション情報を取得すると共にそれを戻すためにページテーブルウォークを行うことができる例えばPCI-SIG_ATSアドレストランスレーションサービス。ここに説明されるプリフェッチ即時コマンド並びに他の関連するコマンド及び構造は、従って、IOTLB1111を伴う周辺機器を含むそのようなシステムに適合する。そのようなシステムにおいてIOTLB1111を伴う周辺機器は、それらのIOTLBをポピュレートするpopulateするために、PCI-SIG_ATSプロトコルを用い続ことができる。そのようなシステムにおいてIOTLBを伴う周辺機器はまた、それらのIOTLBをポピュレートするために、ここに説明される実施形態を採用することができる。システムソフトウエアは、IOMMUと周辺機器のIOTLBとの両方をポピュレートすることができ、そしてプロトコル及びソフトウエアは、効率性のために互換性があってよい。ある実施形態においては、IOMMUはATSプロトコルをサポートする必要はなくてよく、設計を簡素化し且つシリコン面積及び電力要求を低減することができる。図12はIOTLB1212、ページテーブルウォーカー1214、割り込み再マッピングバッファ1234及びデバイステーブルエントリバッファ1236を含むIOMMU1202の更なる実施形態を示すブロック図である。IOMMU1202は、仮想アドレス1216と物理アドレス1218の間でトランスレーションする際のアドレストランスレーションと同様に機能するが割り込みに適用される割り込み再マッピングと称される特徴を提供する。ここに説明される技術及び実施形態は、従って、割り込み再マッピングに用いられ得る。アドレストランスレーションの代わりに割り込み再マッピング情報を伝えるために、新たなコマンド又は既存のコマンドの変形が実装され得る。同様に、割り込み再マッピング情報の無効化のために、新たな又は変形されたコマンドが実装され得る。アドレストランスレーション及び割り込み再マッピングは、対応するテーブルが別々であり且つ独立していることを理由として、IOMMUデバイステーブルエントリバッファ1236によって独立して相互に関連付けられ得る。従って、IOMMU1202は、強化されたアドレストランスレーション及び割り込み再マッピングを行うことができる。結論ここに説明される実施形態は、IOMMU実装製品の製品化までの時間を改善することができ、新たなIOMMUハードウエアを開発し、試験し及びサポートするのに要求される努力を低減することができ、そしてソフトウエアがグローバル的に最適なポリシー決定を行ってそれが適用可能なハードウエアによるローカル的に最適なポリシー決定を改善するのを可能にするメカニズムを提供することができる。実施形態はまた、サイドTLBを利用してソフトウエア管理の迅速パストランスレーション特徴を可能にする。IOメモリ管理ユニットの機能がより効率的に実装され得るより少ないシリコン面積し、またIOはそのようなシステムでより高速に動作することができる。提案される強化の有無にかかわらず、多重IOMMUが互換性の理由からシステム内に共存することができ、即ち新旧チップ設計がシステム設計において混在し得る。幾つかの実施形態はページウォーカーハードウエアを必要としないので、この場合におけるIOMMUは小型化が可能でありまたより小さなFPGAを取り付けることができる。実施形態は、IOMMUが特定のページテーブルのフォーマットをハードウエア配線することを必要としないので、実施形態は種々のページテーブルフォーマット例えば非x86プロセッサ及びフォーマットを伴うと協働することができる。本発明の側面を実施する論理によって実行される命令は、C及びC等の種々のプログラミング言語、アセンブリ言語、並びに/又はハードウエア記述言語HLDにおいてコード化されてよく、また論理又は他のデバイスによって実行され得るオブジェクトコードへとコンパイルされてよい。上述の実施形態は、ベリログ、RTL、ネットリスツ等のハードウエア記述言語において記述されてよく、またこれらの記述は、ここに説明されるような本発明の側面を具現化する1つ以上のハードウエアデバイスを作り出すマスクワーク/フォトマスクの生成を通じて製造プロセスを最終的に構成するために用いられ得る。本発明の側面は、全体又は一部においてコンピュータ可読媒体に記憶され得る。コンピュータ可読媒体に記憶される命令は、本発明の実施形態の全部又は一部を行うようにプロセッサを適合させることができる。概要及び要約の欄ではなく詳細な説明の欄が特許請求の範囲を解釈するために用いられることを意図されていることが理解されるべきである。概要及び要約の欄は、発明者によって検討されているような本発明の1つ以上であるが全てではない例示的な実施形態を記述しているはずであり、従って、本発明及び添付の特許請求の範囲を限定することを意図されるものでは決してない。"