(57)【要約】【解決手段】  実施形態は、ページテーブルの構造及びフォーマットに依存しない改良されたトランスレーション挙動を有する入力／出力メモリ管理ユニット（ＩＯＭＭＵ）のより小さくより単純なハードウエア実装を可能にする。実施形態はまた、デバイスに依存しない構造及び実装の方法を提供し、ソフトウエアのより大きな一般性を可能にする（より少ない特定のソフトウエアバージョンは同時に開発コストを低減する）。【選択図】図１０
2013519965.tif 000002
【特許請求の範囲】
【請求項１】
メモリ管理ユニットを含むコンピュータシステムの資源状態を決定することと、
決定された資源状態に基づいてアドレストランスレーション情報を前記メモリ管理ユニットに関連付けられるキャッシュで選択的に記憶することと、を備える方法。
【請求項２】
前記アドレストランスレーション情報はプリフェッチ即時コマンド内に含まれる請求項１の方法。
【請求項３】
前記アドレストランスレーション情報は、（i）仮想アドレス、及び（ii）前記仮想アドレスに関連付けられるトランスレートされた物理アドレス、を含む請求項１の方法。
【請求項４】
前記メモリ管理ユニットは入力／出力（Ｉ／Ｏ）メモリ管理ユニット（ＩＯＭＭＵ）である請求項１の方法。
【請求項５】
前記キャッシュはＩ／Ｏトランスレーションルックアサイドバッファ（ＩＯＴＬＢ）である請求項１の方法。
【請求項６】
前記キャッシュは前記ＩＯＴＬＢに関連付けられるトランスレーションキャッシュ動作から隔離されたサイドトランスレーションバッファを更に備える請求項５の方法。
【請求項７】
前記キャッシュに記憶されていないアドレストランスレーション情報に対する要求に応答してイベントログエントリを作成することと、
当該要求されたアドレストランスレーション情報を前記イベントログエントリに応答して前記キャッシュ内へと挿入することと、を更に備える請求項１の方法。
【請求項８】
前記キャッシュに記憶されていないアドレストランスレーション情報に対する要求に応答して、前記メモリ管理ユニットに関連付けられるページテーブルウォーカーを用いてページテーブルウォークを行うことと、
前記ページテーブルウォーカーを用いて前記コンピュータシステムのシステムメモリ内のトランスレーションテーブルから当該要求されたアドレストランスレーション情報を取得することと、
前記要求されたアドレストランスレーション情報を、前記メモリ管理ユニットに関連付けられるキャッシュ置換メカニズムを用いて前記キャッシュ内へと挿入することと、を更に備える請求項１の方法。
【請求項９】
前記アドレストランスレーション情報を前記キャッシュに関連付けられる１つ以上の指定されたスロット内へと挿入することにより、前記メモリ管理ユニットに関連付けられるキャッシュ置換メカニズムをバイパスすることを更に備える請求項１の方法。
【請求項１０】
前記メモリ管理ユニットに関連付けられる無効化メカニズムを用いて、前記キャッシュに関連付けられるロケーションを無効化することを更に備え、
前記無効化することは、（i）１つ以上のアドレスエントリ、及び（ii）１つ以上のスロット、の少なくとも１つを指定する無効化コマンドに応答する請求項１の方法。
【請求項１１】
指定されたアドレストランスレーション情報に関連付けられる既に記憶されたいかなるアドレストランスレーション情報にもかかわらず、無効化表示に応答して前記指定されたアドレストランスレーション情報を記憶することを更に備える請求項１の方法。
【請求項１２】
少なくとも前記資源状態に基づいて割り込み再マッピング情報を前記メモリ管理ユニットに関連付けられる割り込み再マッピングバッファで選択的に記憶することを更に備える請求項１の方法。
【請求項１３】
メモリ管理ユニットを備えるコンピュータシステムであって、
前記メモリ管理ユニットは、前記コンピュータシステムの資源状態を決定すると共に決定された資源状態に基づいてアドレストランスレーション情報を前記メモリ管理ユニットに関連付けられるキャッシュで選択的に記憶するように構成されるコンピュータシステム。
【請求項１４】
前記アドレストランスレーション情報はプリフェッチ即時コマンド内に含まれる請求項１３のシステム。
【請求項１５】
前記アドレストランスレーション情報は、（i）仮想アドレス、及び（ii）前記仮想アドレスに関連付けられるトランスレートされた物理アドレス、を含む請求項１３のシステム。
【請求項１６】
前記メモリ管理ユニットは入力／出力（Ｉ／Ｏ）メモリ管理ユニット（ＩＯＭＭＵ）である請求項１３のシステム。
【請求項１７】
前記キャッシュはＩ／Ｏトランスレーションルックアサイドバッファ（ＩＯＴＬＢ）である請求項１３のシステム。
【請求項１８】
前記キャッシュは前記ＩＯＴＬＢに関連付けられるトランスレーションキャッシュ動作から隔離されたサイドトランスレーションバッファを更に備える請求項１７のシステム。
【請求項１９】
前記メモリ管理ユニットは、
前記キャッシュに記憶されていないアドレストランスレーション情報に対する要求に応答してイベントログエントリを作成することと、
当該要求されたアドレストランスレーション情報を前記イベントログエントリに応答して前記キャッシュ内へと挿入することと、を行うように更に構成される請求項１３のシステム。
【請求項２０】
前記メモリ管理ユニットは、
前記キャッシュに記憶されていないアドレストランスレーション情報に対する要求に応答して、前記メモリ管理ユニットに関連付けられるページテーブルウォーカーを用いてページテーブルウォークを行うことと、
前記ページテーブルウォーカーを用いて前記コンピュータシステムのシステムメモリ内のトランスレーションテーブルから当該要求されたアドレストランスレーション情報を取得することと、
前記要求されたアドレストランスレーション情報を、前記メモリ管理ユニットに関連付けられるキャッシュ置換メカニズムを用いて前記キャッシュ内へと挿入することと、を行うように更に構成される請求項１３のシステム。
【請求項２１】
前記メモリ管理ユニットは、
前記アドレストランスレーション情報を前記キャッシュに関連付けられる１つ以上の指定されたスロット内へと挿入することにより、前記メモリ管理ユニットに関連付けられるキャッシュ置換メカニズムをバイパスするように更に構成される請求項１３のシステム。
【請求項２２】
前記メモリ管理ユニットは、
（i）１つ以上のアドレスエントリ、及び（ii）１つ以上のスロット、の少なくとも１つを指定する無効化コマンドに応答して、前記メモリ管理ユニットに関連付けられる無効化メカニズムを用いて、前記キャッシュに関連付けられるロケーションを無効化するように更に構成される請求項１３のシステム。
【請求項２３】
前記メモリ管理ユニットは、
指定されたアドレストランスレーション情報に関連付けられる既に記憶されたいかなるアドレストランスレーション情報にもかかわらず、無効化表示に応答して前記指定されたアドレストランスレーション情報を記憶するように更に構成される請求項１３のシステム。
【請求項２４】
前記メモリ管理ユニットに関連付けられる割り込み再マッピングバッファであって、少なくとも前記資源状態に基づいて割り込み再マッピング情報を選択的に記憶するように構成される再マッピングバッファを更に備える請求項１３のシステム。
【請求項２５】
コンピュータ実行可能命令が記憶された有形的コンピュータ可読媒体であって、前記コンピュータ実行可能命令は、コンピューティングデバイスによって実行される場合に、
メモリ管理ユニットを含むコンピュータシステムの資源状態を決定することと、
決定された資源状態に基づいてアドレストランスレーション情報を前記メモリ管理ユニットに関連付けられるキャッシュで選択的に記憶することと、を備える方法を前記コンピューティングデバイスに行わさせる有形的コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は概してコンピュータシステムに関し、より特定的には入力／出力メモリ管理ユニット（ＩＯＭＭＵ）に関する。
【背景技術】
【０００２】
メモリ管理ユニット（ＭＭＵ）は中央処理ユニット（ＣＰＵ）に関連付けられ得る。例えばＣＰＵ＿ＭＭＵは、ＣＰＵによって用いられる仮想アドレスをシステムメモリに対応する物理アドレスへとトランスレートするように構成され、そしてＣＰＵ＿ＭＭＵはアクセス（存在、読み出し、書き込み等）を認証して、ＣＰＵに関連付けられるメモリオーバーコミット、リロケーション及び保護を可能にする。
【０００３】
ｘ８６＿ＣＰＵに関連しているシステムにおいては、比較的最近、入力／出力周辺機器に関連付けられる入力／出力（ＩＯ）ＭＭＵが定義されるようになってきた。入力／出力メモリ管理ユニット（ＩＯＭＭＵ）は、例えば周辺機器によって使用される仮想アドレスに関連付けられる周辺機器要求に応答してシステムメモリからトランスレーション情報をリトリーブして(retrieve)、その仮想アドレスをシステムメモリの対応物理アドレスへとトランスレートする。
【０００４】
ＩＯＭＭＵは、典型的には、主システムメモリの内容を調べて必要なトランスレーション情報を探し出す（ページテーブルウォークを行う）ページテーブルウォーカー論理(page-table walker logic)を含み得る。例えば、ＩＯＭＭＵ内にキャッシュされていない情報を周辺機器が要求する場合（即ち「ミス」）、システムメモリから情報を得るためにテーブルウォーカーが用いられる。しかし、ページテーブルウォーカーは実装するのに複雑であるので、ＩＯＭＭＵのチップ又はチップ部品のシリコン面積及び電力消費を増大させる可能性がある。ＩＯＭＭＵは、ＩＯＭＭＵハードウエアが利用可能な限定された情報に基づきローカル的に最適化されるようにページテーブルウォーカーを実装する（例えば最長時間未使用(least-recently-used)（ＬＲＵ）アルゴリズムに基づきＩＯＭＭＵ内にキャッシュされる情報に影響する）。ハードウエアのみ実装(hardware-only implementations)のそのような例は、過剰なトランスレーションフェッチ(fetches)（「ページテーブルウォーク(page-table walks)」）及び過剰なトランスレーションミスを潜在的に引き起こし、ＩＯサブシステムの性能を低下させまたメモリ待ち時間の増大をもたらす可能性がある。
【０００５】
加えて、ＩＯＭＭＵは典型的には、特定のアーキテクチャに付随するページテーブルエントリのフォーマットに基づき情報を読み出し且つ構文解析するように構成され、ページテーブルフォーマットをハードウエア設計に委ねる特定のページテーブルアーキテクチャに、つまりは特定の適合可能なプロセッサ実装に、ＩＯＭＭＵを限定している。
【０００６】
ソフトウエア設計／管理の(software architected/managed)トランスレーションルックアサイドバッファ(translation look-aside buffer)（ＴＬＢ）キャッシュもまた知られている。ソフトウエアがＴＬＢを管理し、そして任意のページテーブルウォークはソフトウエアにおいて行われる。ソフトウエアはエントリをＴＬＢ内へロードするが、ハードウエア基盤がソフトウエア設計のＴＬＢを支援することはない。また、ソフトウエア設計のＴＬＢは、ローディング及び／又は無効化に際して柔軟性を有していない、つまりエントリがＴＬＢ内へロードされるときに、ローダ(loader)は先行するエントリを置換する影響を有する。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
幾つかのＩＯ制御器又は周辺機器は、オペレーティングシステム又はハイパーバイザ(hypervisor)におけるデバイスドライバソフトウエアによって管理される単純なＭＭＵを含む。例えば典型的なグラフィクス制御器は、グラフィクスカード上の「ローカルＭＭＵ」を含む。このような場合、「ローカルＭＭＵ」マッピングハードウエアは、洗練されたアルゴリズムを用いるシステムソフトウエアによって制御されるが、各ＭＭＵは固有のものであり且つ固有のドライバを必要とする。周辺機器ハードウエアに対する変更点はドライバに対する変更を必要とし、開発コストを跳ね上げると共に開発スケジュールを長期化させ、最終的には製品化までの時間を遅らせる。このことはまた、仮想化されたシステムにおけるハイパーバイザのための一般的なドライバを製造供給元が作成することができず、従って特定のドライバがハイパーバイザ内に含まれている必要があることを意味し、ハイパーバイザの選択は、システム内に存在する的確なＩＯ周辺機器に依存することになる。これは、サポートされるオペレーティングシステムのためのドライバに加えてハイパーバイザのために更に別のドライバが作成され且つ試験される必要があることを意味し、開発コスト及び時間が更に跳ね上がる。
【０００８】
ＩＯＭＭＵ性能を改善し、且つソフトウエアがハイパーバイザのために一度作成されると共に周辺機器メモリマッピングアーキテクチャの多重実装に用いられることを可能にする手法が必要とされている。
【課題を解決するための手段】
【０００９】
本発明の実施形態は、ページテーブルの構造及びフォーマットに依存しない改良されたトランスレーション挙動を伴うＩＯＭＭＵのより小さくより単純なハードウエア実装を可能にする。実施形態はまた、デバイスに依存しない構造及び実装の方法を提供し、ソフトウエアのより大きな一般性を可能にする（より少ない特定のソフトウエアバージョンは同時に開発コストを低減する）。
【００１０】
１つの実施形態は、システムの入力／出力（Ｉ／Ｏ）メモリ管理ユニット（ＩＯＭＭＵ）でプリフェッチ即時コマンドを受け取ることを含む方法に関連している。プリフェッチ即時コマンドは、（i）仮想アドレス、及び（ii）仮想アドレスに関連付けられるトランスレートされた物理アドレス、を含むアドレストランスレーション情報を指定する。方法は更に、少なくとも資源状態に基づいてアドレストランスレーション情報をＩＯＭＭＵに関連付けられるＩ／Ｏトランスレーションルックアサイドバッファ（ＩＯＴＬＢ）内へと選択的に記憶することを含む。
【００１１】
別の実施形態は、プリフェッチ即時コマンドを受け取るように構成される入力／出力（Ｉ／Ｏ）メモリ管理ユニット（ＩＯＭＭＵ）を含むシステムに関連している。プリフェッチ即時コマンドは、（i）仮想アドレス、及び（ii）仮想アドレスに関連付けられるトランスレートされた物理アドレス、を含むアドレストランスレーション情報を指定する。ＩＯＭＭＵに関連付けられるＩ／Ｏトランスレーションルックアサイドバッファ（ＩＯＴＬＢ）は、少なくとも資源状態に基づいてアドレストランスレーション情報を選択的に記憶するように構成される。
【００１２】
更に別の実施形態は、システムの入力／出力（Ｉ／Ｏ）メモリ管理ユニット（ＩＯＭＭＵ）でプリフェッチ即時コマンドを受け取ることを含む方法を、コンピューティングデバイスによって実行される場合にコンピューティングデバイスに行わせるコンピュータ実行可能命令が記憶された有形的コンピュータ可読媒体に関連している。プリフェッチ即時コマンドは、（i）仮想アドレス、及び（ii）仮想アドレスに関連付けられるトランスレートされた物理アドレス、を含むアドレストランスレーション情報を指定する。方法は更に、少なくとも資源状態に基づいてアドレストランスレーション情報をＩＯＭＭＵに関連付けられるＩ／Ｏトランスレーションルックアサイドバッファ（ＩＯＴＬＢ）内へと選択的に記憶することを含む。
【００１３】
本発明の更なる特徴及び利点の他、本発明の種々の実施形態の構成及び動作は、添付の図面を参照して以下に詳細に説明される。尚、本発明はここに説明される特定の実施形態に限定されない。そのような実施形態は例示の目的のみのためにここに提示されている。ここに含まれる教示に基き追加的な実施形態が関連分野を含めた当業者にとって明らかであろう。
【図面の簡単な説明】
【００１４】
ここに組み込まれ且つ出願書類の一部をなす添付の図面は実施形態を示し、そして上述の一般的な説明及び下記の実施形態の詳細な説明と共に、本発明の実施形態の原理を説明することに役立つ。
【００１５】
【図１】図１はある実施形態に従いＩＯＭＭＵを含むシステムを示すブロック図である。
【００１６】
【図２】図２は別の実施形態に従うＩＯＭＭＵを示すブロック図である。
【００１７】
【図３】図３は別の実施形態に従いシステムメモリと相互作用するＩＯＭＭＵを含むシステムを示すブロック図である。
【００１８】
【図４】図４は別の実施形態に従いシステムメモリと相互作用するＩＯＭＭＵを含むシステムを示すブロック図である。
【００１９】
【図５】図５は別の実施形態に従いアドレストランスレーション情報を選択的に記憶するための方法を示すフロー図である。
【００２０】
【図６】図６は別の実施形態に従うＩＯＭＭＵを示すブロック図である。
【００２１】
【図７】図７は更に別の実施形態に従いシステムメモリと相互作用するＩＯＭＭＵを含むシステムを示すブロック図である。
【００２２】
【図８】図８は更に別の実施形態に従いシステムメモリと相互作用するＩＯＭＭＵを含むシステムを示すブロック図である。
【００２３】
【図９】図９は更に別の実施形態に従いアドレストランスレーションデータに対する要求をサービスするための方法を示すフロー図である。
【００２４】
【図１０】図１０は更に別の実施形態に従いシステムメモリと相互作用するＩＯＭＭＵを含むシステムを示すブロック図である。
【００２５】
【図１１】図１１は更に別の実施形態に従いＩＯＭＭＵとＩＯＴＬＢを伴う周辺機器とを含むシステムを示すブロック図である。
【００２６】
【図１２】図１２は更に別の実施形態に従い割り込み再マッピングバッファ及びデバイステーブルエントリバッファを含むシステムを示すブロック図である。
【発明を実施するための形態】
【００２７】
本発明の実施形態は、メモリ管理ユニット及びその応用を提供する。以下の詳細な説明において、「１つの実施形態」、「ある実施形態」、「例示的実施形態」等に対する言及は、説明される実施形態が特定の特徴、構造又は特性を含んでいてよいが、全ての実施形態が必ずしも当該特定の特徴、構造又は特性を含む必要がなくてよいことを示している。また、そのような表現は必ずしも同じ実施形態を参照しているとは限らない。更に、特定の特徴、構造又は特性がある実施形態に関連して説明されている場合には、明示的に説明されていようとなかろうと、他の実施形態に関連して当該特定の特徴、構造又は特性を具現化することは当業者の知識の範囲内にあることと言える。
【００２８】
図１はＣＰＵ１０６とＣＰＵ１０６に関連付けられるＣＰＵ＿ＭＭＵ１０８とを含むシステム１００を示すブロック図である。システム１００は、周辺機器１１０に関連付けられるＩＯＭＭＵ１０２を更に含む。ここには図示されていないが、システム１００においては、多重のＣＰＵ＿ＭＭＵ１０８が考慮されるのと同時に多重のＩＯＭＭＵが考慮される（例えば多重プロセッサシステム）。
【００２９】
ＩＯＭＭＵ１０２は、一連の定義された機能及び挙動に従って動作する。これらの機能及び挙動は、システムメモリ１０４内にキューされ(queued)且つＩＯＭＭＵ１０２によって読み出されてＩＯＭＭＵ１０２によって実行／使用される一連のコマンドに関連付けられている。
【００３０】
ＩＯＭＭＵ１０２は、周辺機器１１０とシステムメモリ１０４の間で仮想／物理アドレスをトランスレートし、そして割り込み再マッピングを行う。割り込み再マッピングは、再マッピング割り込みに対応するアドレスをトランスレートするという点において、アドレストランスレーションと同様に機能する。ＩＯＭＭＵ１０２のトランスレーション／再マッピング速度を向上させるために、システムメモリ１０４内に記憶されるアドレストランスレーション／割り込み再マッピング情報がＩＯＭＭＵ１０２内にキャッシュされ得る。この処理は、ＩＯＭＭＵ１０２がトランスレーション又は再マッピング情報にアクセスし得る速度を高める。
【００３１】
図２は図１のＩＯＭＭＵ１０２を示す更に詳細なブロック図である。ＩＯＭＭＵ２０２は、主システムメモリ１０４（図１参照）の内容を調べるように構成されるページテーブルウォーカー２１４を含む。ページテーブルウォーカー２１４はまた、ＩＯＭＭＵ１０２内での記憶／キャッシングのための情報の配置及びリトリーバル(retrieval)を容易にする。ページテーブルウォーカー２１４は、トランスレーションルックアサイドバッファ（ＴＬＢ）２１２と称されるキャッシュ内へとトランスレーション情報を挿入することができ、ＴＬＢ２１２は入力／出力ＴＬＢ（ＩＯＴＬＢ）２１２としても知られる。ＩＯＴＬＢ２１２は、仮想アドレス２１６と物理アドレス２１８の間でのアドレストランスレーションに用いられ得る。同様のキャッシング構造が割り込み再マッピングに対しても用いられ得る。
【００３２】
ＩＯＭＭＵ１０２は、キャッシュされるべき情報の充填とＩＯＭＭＵ１０２及び／又はＩＯＴＬＢ２１２内にキャッシュされるトランスレーション／再マッピング情報の無効化又はフラッシング(flushing)とを制御するシステムメモリ１０４からのコマンドを読み出す。ＩＯＭＭＵ１０２は更に、周辺機器１１０からの情報に対する要求に応答してシステムメモリ１０４からのトランスレーション／再マッピング情報を自動的にロードすることが可能である。例えばＩＯＭＭＵ１０２は、ハードウエアのページテーブルウォーカー２１４を実装して、ページテーブルウォークを行うと共にシステムメモリ１０４のページテーブルから物理アドレス２１８をリトリーブする(retrieve)ことができる。トランスレートされるべき仮想アドレス２１６がＩＯＴＬＢ２１２内にキャッシュされていない場合に、ページテーブルウォークは、仮想アドレス２１６を含む周辺機器１１０からの要求に応答することができる。
【００３３】
ＩＯＴＬＢ２１２内のアドレストランスレーション／再マッピング情報は、ハードウエア及び／又はソフトウエアにより種々の方法（トランスレーションバッファポリシーとも称される）において維持され且つ更新され得る。例えば、ＣＰＵ１０６上のシステムソフトウエアは、システムメモリ１０４内に記憶される対応する情報が変化していることを理由としてもはや有効ではないＩＯＭＭＵ１０２内にキャッシュされている情報を無効化することができる。ＩＯＭＭＵ１０２はまた、ＩＯＭＭＵ１０２内にキャッシュされるトランスレーションエントリのキャッシング及び退去を主としてハードウエアが決定するように、トランスレーションバッファポリシーをハードウエアにおいて実装することもできる。キャッシュされたトランスレーションエントリが退去させられると、新たな情報のための場所を空けることができる。キャッシュされたトランスレーションエントリは、それがもはや有効ではなくなったときにフラッシュされる(flushed)必要がある。これらの及び他の技術は、ＩＯＴＬＢ２１２内の情報が置換されることになる場合又はもはや有効ではなくなった場合にこれを処理するために適用され得る。
【００３４】
ＩＯＭＭＵ１０２は、システムメモリ１０４からの情報を、その情報に対する要求を周辺機器１１０から受け取るのに先立ちプリフェッチする(prefetch)ことができる。プリフェッチコマンドは、例えば、「ＩＯＭＭＵにおけるトランスレーションデータプリフェッチ(Translation Data Prefetch in an IOMMU)」の表題で２００８年４月３０日に出願された米国特許出願第１２／１１２，６１１号に開示されるように実装することができ、その内容はその全部を参照としてここに組み込まれる。プリフェッチコマンドは、システムメモリ１０４のページテーブルをウォークすること及び例えば指定された（デバイス仮想）アドレスに関連付けられるトランスレーション情報をプリロードする(preload)ことをＩＯＭＭＵ１０２に指示することができる。従って、プリロードされたトランスレーション情報は、要求がＩＯＭＭＵ１０２内に入ってきたときにＩＯＴＬＢ２１２において利用可能である。
【００３５】
図３はＩＯＭＭＵ３０２及びシステムメモリ３０４を含むシステム３００を示すブロック図である。システム３００はページテーブル３２０及びイベントログバッファ３２８を更に含む。アドレストランスレーション情報３２２はページテーブル３２０内でアクセス可能である。ＩＯＭＭＵエントリ３３０はイベントログバッファ３２８内でアクセス可能である。システム３００はＣＰＵ３０６及びＣＰＵ＿ＭＭＵ３０８を追加的に含む。
【００３６】
単一又は複数のＩＯＭＭＵキャッシュを充填することに関して、ＩＯＭＭＵ３０２は、システムメモリ３０４のページテーブル３２０内に記憶されるアドレストランスレーション情報３２２にアクセスしてこれをキャッシュする。図示されるように、ＩＯＭＭＵ３０２のページテーブルウォーカー３１４は、ページテーブルウォークを行ってアドレストランスレーション情報３２２をリトリーブする。アドレストランスレーション情報３２２は、次いでＩＯＴＬＢ３１２内にキャッシュされる。アドレストランスレーション情報３２２に対して周辺機器３１０からの後続の要求がＩＯＭＭＵ３０２に到着すると、アドレストランスレーション情報３２２はＩＯＴＬＢ３１２において利用可能となり、ページテーブルウォークは不要になる。ＩＯＴＬＢ３１２でもはや利用可能でないアドレストランスレーション情報３２２に対する要求がＩＯＭＭＵ３０２に到着すると、ページテーブル３２０からのアドレストランスレーション情報３２２を得るために、次のページテーブルウォークが行われ得る。代替的には、システム３００は、プリフェッチ即時コマンド(prefetch immediate command)３２６を利用してＩＯＴＬＢ３１２の内容を更新することができる。
【００３７】
ＩＯＭＭＵ３０２は、システムメモリ３０４のコマンドキュー３２４内に記憶されるコマンドを読み出して使うことができる。これにより、ＩＯＭＭＵ３０２は、その単一又は複数のキャッシュを、コマンドにおいて渡された情報を用いて充填することができる。充填ポリシーに加えて、ＩＯＭＭＵ３０２によって読み出されたコマンドは、実際上、ＩＯＴＬＢ３１２内にキャッシュされた情報をソフトウエアが無効化し又は更新することを可能にする。例えば、無効化は、アドレストランスレーション情報３２２が変化し、ＩＯＴＬＢ３１２内の先にキャッシュされたアドレストランスレーション情報が、変化したアドレストランスレーション情報３２２にもはや対応しなくなったときの状態と関連付けられ得る。
【００３８】
ＩＯＭＭＵ３０２によってコマンドキュー３２４から読み出されたコマンドは、ＩＯＭＭＵ３０２の機能を更に拡大することができる。プリフェッチ即時コマンド３２６は、プリフェッチ即時コマンド３２６の本体(body)内にアドレストランスレーション情報３２２を含むことができる。ＩＯＭＭＵ３０２は次いで、プリフェッチ即時コマンド３２６を介してアドレストランスレーション情報３２２を受け取ることができる。従ってＩＯＭＭＵ３０２は、アドレストランスレーション情報３２２を得るためにページテーブルウォーカー３１４を用いてページテーブル３２０をウォークする必要はない。プリフェッチ即時コマンド３２６内の情報は、ページテーブルウォーキングをなんら行うことなしに、ＩＯＴＬＢ３１２内へ直接的にロードされ得る。図示されるように、ページテーブルウォーカー３１４は、プリフェッチ即時コマンド３２６と連動してバックアップし且つ／又は動作するために利用可能である。
【００３９】
プリフェッチ即時コマンド３２６は、ＩＯＭＭＵへの新たなコマンドとして又は上述したプリフェッチコマンドの変形として実装され得る。また、プリフェッチ即時コマンド３２６は、必要な情報をシステムソフトウエアが書き込む一連のＭＭＩＯレジスタとして実装されてもよい。
【００４０】
図４は実施形態に従いプリフェッチ即時コマンド４２６を実装しているシステム４００を示すブロック図である。システム４００は、周辺機器４１０に関連付けられており、そしてＣＰＵ４０６、ＣＰＵ＿ＭＭＵ４０８及びシステムメモリ４０４を含み得る。システムメモリ４０４は、ページテーブル４２０、コマンドキュー４２４及びイベントログバッファ４２８を含む。システムメモリ４０４はまた、ＩＯページテーブル４３０に関連付けられていてもよい。アドレストランスレーション情報４２２はＩＯページテーブル４３０内に記憶され得る。ＩＯページテーブル４３０の内部フォーマットは、ページテーブル４２０の内部フォーマットと同じである必要はない。プリフェッチ即時コマンド４２６は、アドレストランスレーション情報４２２をＩＯＴＬＢ４１２内へキャッシュする。アドレストランスレーション情報４２２は、仮想アドレス４１６及び物理アドレス４１８と関連付けられている。システム４００は、コマンドキュー４２４及びプリフェッチ即時コマンド４２６を管理して、アドレストランスレーション情報４２２をプリフェッチ即時コマンド４２６による使用のために供することができる。従って、プリフェッチ即時コマンド４２６を用いてＩＯＭＭＵと相互作用しているシステム４００は、システム４００がＩＯＭＭＵ４０２におけるデータのキャッシングに関連付けられるための柔軟性及び機会を導入する。
【００４１】
加えて、システム４００は、ページテーブルウォーカー４１４を用いる必要性なしに、アドレストランスレーション情報４２２のキャッシングをＩＯＴＬＢ４１２で達成することができる。従ってシステム４００は、特定のハードウエア実装のページテーブルウォーカー４１４（用いられている場合における）とインタフェースするために特定のシステムドライバを含んでいる必要がない。しかし、プリフェッチ即時コマンド４２６は、妥当な場合、ハードウエアページテーブルウォーカー４１４と連動して全体の性能を改善するために動作可能であることが検討される。
【００４２】
図５は実施形態に従いシステム状態に基づきアドレストランスレーション情報を選択的に記憶する例示的な方法５６０を示すフローチャートである。ステップ５７０において、ＩＯＭＭＵは、アドレストランスレーション情報を指定するプリフェッチ即時コマンドを受け取る。ステップ５７２では、例えばＩＯＭＭＵ又はシステムによってシステム状態がチェックされる。システム状態はシステムの資源状態を含むことができ、システムの資源状態は、システム資源の利用可能性、ＩＯＴＬＢにおける１つ以上の空きアドレスエントリの利用可能性、電力節約及び／若しくはスリープ状態、並びに／又は係属中システム要求を考慮したシステム資源の利用可能性、を含むことができる。資源状態はまた、プリフェッチ即時コマンドにおいて指定されるアドレストランスレーション情報に対応するＩＯＴＬＢ内に記憶される１つ以上の有効アドレスエントリの優先度、又はプリフェッチ即時コマンドにおいて指定される無効化表示、を含むこともできる。
【００４３】
ステップ５７４では、システム状態に基づきプリフェッチ即時コマンドを無視するかどうかの決定がなされる。プリフェッチ即時コマンドを無視しないとの決定である場合には、方法はステップ５７６へ進み、アドレストランスレーション情報がＩＯＭＭＵのＩＯＴＬＢに記憶される。方法はステップ５７６からステップ５７８へ進む。ステップ５７４においてプリフェッチ即時コマンドを無視するとの決定である場合には、方法はステップ５７８へ進み、コマンドキュー内の次のＩＯＭＭＵコマンドが処理される。
【００４４】
プリフェッチ即時コマンドのためのコマンドフォーマットは、トランスレートされた物理アドレスと、指定された（デバイス仮想）アドレスに対する許可アクセス標識及びＩＯＭＭＵドメイン情報を含む他の情報と、を含むことができる。コマンドフォーマットはまた、ＩＯＴＬＢスロット宛先を含んでいてもよい。
【００４５】
ＩＯＭＭＵはプリフェッチ即時コマンドを選択的に無視することができる。例えば、ＩＯＭＭＵは、ＩＯＭＭＵキャッシュ内に存在しているエントリが上書きされるべきではないことと、アドレストランスレーションが挿入されるべき現在利用可能なＩＯＭＭＵキャッシュエントリがないことと、を決定することができる。無視されたプリフェッチ即時コマンドに含まれてはいたが挿入されてはいなかったアドレストランスレーション情報に対して要求がＩＯＭＭＵに後で到着する場合、ＩＯＭＭＵは、ページテーブルウォークを行い又はプリフェッチ即時コマンドを要求して、要求されたアドレストランスレーション情報を得ることができる。何らかの理由によりプリフェッチ即時コマンドを引き受けるのに不都合があり又は正当な時間でない場合には、プリフェッチ即時コマンドは無視されるのが安全である。
【００４６】
プリフェッチ即時コマンドの選択的な引き受け／無視は、コマンドを引き受けるかどうかを決定する際に資源状態を考慮することによってＩＯＭＭＵがシステム性能を最適化することを可能にする。アドレストランスレーション情報を取得してそれを挿入するためのハードウエアベースの基盤／メカニズムがＩＯＭＭＵの実施形態に利用可能であり、プリフェッチ即時コマンドはハードウエア基盤の中でも最高の加速である。プリフェッチ即時コマンドはアドレストランスレーション情報をロードすることができ、あるいは当該コマンドは無視されてアドレストランスレーション情報をロードするのにハードウエアメカニズムが頼られてよい。
【００４７】
プリフェッチ即時コマンドは、アドレストランスレーション情報をＩＯＭＭＵに提供するために、ＩＯＭＭＵのページテーブルウォーカーに対する代替案を提供する。加えて、提供されたアドレストランスレーション情報をＩＯＭＭＵのＩＯＴＬＢ内へロードすること及び／又は挿入することのために、種々の技術が実装され得る。ここに開示される実施形態は、ＩＯＭＭＵの既存の機能と連動して動作することができ、あるいはＩＯＭＭＵ機能をオーバーライドする(override)ことができる。
【００４８】
１つの実施形態においては、提供されたアドレストランスレーション情報をＩＯＭＭＵのＩＯＴＬＢ内へ、即ちＩＯＭＭＵの内部アドレストランスレーションキャッシュ内へ挿入するために、ＩＯＭＭＵのネイティブキャッシュ置換アルゴリズム(native cache replacement algorithm)が用いられ得る。ＩＯＭＭＵ＿ＩＯＴＬＢトランスレーションキャッシュは、提供されたアドレストランスレーション情報をＩＯＴＬＢ内へロード／挿入するに際して、通常はこのようにして機能することになる。しかし、アドレストランスレーション情報を取得し且つ／又はこれをＩＯＭＭＵのネイティブキャッシュ置換アルゴリズムに提供するために、ＩＯＭＭＵ全体がページウォーク機能を必要とするわけではない。
【００４９】
従って、ＩＯＭＭＵのネイティブキャッシュ置換アルゴリズムは、退去をもたらし得る状況、例えば提供されたアドレストランスレーション情報を記憶するためにＩＯＴＬＢ内に空きスロットが無い状況を取り扱うことができる。例えば、ＩＯＴＬＢの通常動作は、ＩＯＴＬＢ内に既にキャッシュされたアドレストランスレーション情報が使用され又は要求される前であっても、その既にキャッシュされたアドレストランスレーション情報が他の提供されたアドレストランスレーション情報によって退去させられる（置換される）ことを可能にする。
【００５０】
別の実施形態においては、プリフェッチ即時コマンドは、ＩＯＭＭＵ＿ＩＯＴＬＢトランスレーションキャッシュ内の特定のスロット内へ情報をロードすることをＩＯＭＭＵに指示するその情報を含むことができる。この情報のローディングは、当該プリフェッチ即時コマンドのためのＩＯＭＭＵトランスレーションキャッシュ置換ハードウエア及び／又はアルゴリズムをオーバーライドし又は置換する。ＩＯＴＬＢの通常動作は次いで、トランスレーション情報が使用される前にそれが退去させられる（置換される）ことを可能にする。システムはＩＯＭＭＵに指示することができるので、システムは、ＩＯＭＭＵトランスレーションキャッシュ置換ハードウエア及び／又はアルゴリズムの仕様からは解放されている。
【００５１】
更に別の実施形態においては、ＩＯＴＬＢ構造は、例えばシステムソフトウエアが直接的に内容を操作することができるＭＭＩＯスペース内に直接的にさらされており、あるいはアドレス／データレジスタ対を介して間接的にＭＭＩＯスペース内にさらされている。
【００５２】
図６は実施形態に従いサイドＴＬＢ６３２を含むＩＯＭＭＵ６０２の別の実施形態を示すブロック図である。ＩＯＭＭＵ６０２は、仮想アドレス６１６、物理アドレス６１８及びページテーブルウォーカー６１４に関連付けられている。サイドＴＬＢ６３２はＩＯＴＬＢ６１２から切り離されている。ＩＯＭＭＵ６０２は、提供されたアドレストランスレーション情報を特別の「サイド」トランスレーションルックアサイドバッファ（サイドＴＬＢ６３２）内へ挿入することができる。サイドＴＬＢ６３２は、システムソフトウエアによって管理されてよく、そして頻繁に使用されるトランスレーションを含むことができる。サイドＴＬＢ６３２を用いて、頻繁に使用されるトランスレーションをＩＯＴＬＢ６１２とは別にしておくことによって、頻繁に使用されるトランスレーションがＩＯＴＬＢ６１２内のスロットに対する他のアドレストランスレーションと競合することを回避することができる。ＴＬＢ６３２内にキャッシュされている頻繁に使用されるトランスレーションは、ＩＯＴＬＢ６１２上で実行されるＩＯＭＭＵ６０２の通常のトランスレーションキャッシュ動作によっては退去させられないであろうから、サイドＴＬＢ６３２を「スティッキー(sticky)」にして、アドレストランスレーション情報を記憶するために常時利用可能にする。例えば、ＴＬＢキャッシュのエントリ内に記憶されるアドレストランスレーション情報を必要とするデバイス直接メモリアクセス（ＤＭＡ）動作は、ＩＯＭＭＵによるページウォークによって遅滞なく迅速にトランスレートされるであろう。
【００５３】
図７は実施形態に従いＩＯＴＬＢ７１２及びサイドＴＬＢ７３２を含むＩＯＭＭＵ７０２を伴うシステム７００を示すブロック図である。システム７００は、ＣＰＵ７０６、ＣＰＵ＿ＭＭＵ７０８及びシステムメモリ７０４を含む。システムメモリ７０４は、ページテーブル７２０、コマンドキュー７２４及びイベントログバッファ７２８を含む。システム７００においては、仮想アドレス７１６を含む周辺機器７１０からの要求は、ＩＯＭＭＵ７０２に到着する。ＩＯＭＭＵ７０２は、物理アドレス７１８に関連付けられ且つ仮想アドレス７１６に対応するアドレストランスレーション情報がＩＯＭＭＵ７０２でＩＯＴＬＢ７１２及び／又はサイドＴＬＢ７３２内にキャッシュされるかどうかを決定する。当該情報がＩＯＭＭＵ７０２で利用可能でなく且つ主システムメモリ７０４のページテーブル７２０から利用可能である場合には、ＩＯＴＬＢミスとなる（当該情報が利用可能ではないページフォールトとは区別される）。ページテーブルウォーカー７１４は、システムメモリ７０４のページテーブル７２０にアクセスしてＩＯＭＭＵ７０２で要求をサーブするのに必要なアドレストランスレーション情報を取得しそして提供するために利用可能である。加えて、システム７００は、ページテーブルウォーカー７１４がページテーブルウォークを行うのを待つことなしに、コマンドキュー７２４を用いてプリフェッチ即時コマンド７２６を実行し、サイドＴＬＢ７３２及びＩＯＴＬＢ７１２に対してアドレストランスレーション情報７２２を提供することができる。
【００５４】
ＩＯＭＭＵ７０２は、プリフェッチ即時コマンド７２６に関連付けられる記憶装置（キャッシュ；例えばＩＯＴＬＢ７１２及びサイドＴＬＢ７３２）のサイズ及び機能に関する情報を、システムソフトウエアが記憶装置キャッシュの使用を最適化し得るよう、システムソフトウエア及び／又はシステム７００に提供するように構成され得る。提供される情報は、例えば、エントリの数及び種類並びにそれらのキャッシュとしての組織化を含み得る。従ってシステム７００は、ＩＯＭＭＵ７０２の記憶装置キャッシュ資源をグローバルシステムレベルで知的に管理することができる。
【００５５】
図８は実施形態に従いＩＯＴＬＢ８１２を含むＩＯＭＭＵ８０２を伴うシステム８００を示すブロック図である。システム８００はシステムメモリ８０４及びＣＰＵ＿ＭＭＵ８０８を含む。システムメモリ８０４は、ページテーブル８２０、コマンドキュー８２４及びイベントログバッファ８２８を含む。図８の実施形態においては、ＩＯＭＭＵ８０２はページテーブルウォーカーを含まないので、電力及びチップ面積を節約することができる。仮想アドレス８１６を含む周辺装置８１０からの要求は、ＩＯＭＭＵ８０２に到着する。ＩＯＭＭＵ８０２は、仮想アドレス８１６及び物理アドレス８１８に関連付けられるアドレストランスレーション情報がＩＯＭＭＵ８０２で周辺装置８１０からのトランスレーション要求をサーブするために利用可能であるかどうかを決定する。アドレストランスレーション情報がＩＯＭＭＵ８０２でキャッシュされていない場合（例えばＩＯＴＬＢミスの場合）には、ＩＯＭＭＵ８０２は、イベントログバッファ８２８で新たなＩＯＭＭＵイベントログを作成する。イベントログエントリは、トランスレーション情報がＩＯＭＭＵ８０２によって要求されている旨の信号を主ＣＰＵ８０６へ送る。主ＣＰＵ８０６は、プリフェッチ即時コマンド８２６を用いてアドレストランスレーション情報８２２をＩＯＴＬＢ８１２内へ挿入することができ、またイベントをトリガーした周辺機器８１０のＩＯ動作をレジュームする(resume)ことができる。ＩＯＴＬＢミスの蓋然性を更に低減し又は排除するために、ＩＯＭＭＵ８０２キャッシュの実装決定及び使用パターンに応じて、サイドＴＬＢ（図８には図示せず；例えば図７を参照）がＩＯＭＭＵ８０２内に含まれていてよい。
【００５６】
プリフェッチ即時コマンドは、ドメイン情報（デバイステーブルエントリ内容）をＩＯＭＭＵキャッシュ構造内に投入するために、ドメイン情報を含むことができる。代替的には、ドメイン情報を投入することは、種々の実装仕様に応じて、別個のコマンドとして実装され得る。
【００５７】
図９はＩ／Ｏ動作からの要求をサービスするための例示的な方法９６０を示すフローチャートである。ステップ９８０では、アドレストランスレーション情報を要求しているＩ／Ｏ動作からの要求が受け取られる。ステップ９８２では、要求に関連付けられるアドレストランスレーション情報が既にＩＯＭＭＵのＩＯＴＬＢ内に記憶されているかどうかが決定される。アドレストランスレーション情報が既に記憶されている場合には、方法はステップ９８４へ進み、要求されているアドレストランスレーション情報が提供される。ステップ９８２においてアドレストランスレーション情報がまだ記憶されていない場合には、方法は９８６へ進み、ＩＯＭＭＵイベントログエントリが作成されて、アドレストランスレーション情報が要求されている旨の信号が送られる。ステップ９９０では、要求されたアドレストランスレーション情報が、プリフェッチ即時コマンドを用いて、ＩＯＭＭＵイベントログエントリに応答して１つ以上のＩＯＭＭＵキャッシュ内へ挿入される。ステップ９９２では、アドレストランスレーション情報を要求しているＩ／Ｏ動作がレジュームされる。
【００５８】
図１０はＩＯＭＭＵイベントログエントリ１０３０を含むイベントログバッファ１０２８を伴うシステム１０００を示すブロック図である。図示される実施形態はＩＯＭＭＵ１００２内にページテーブルウォーカーを含まないので、電力及びチップ面積を節約することができる。システム１０００はＣＰＵ＿ＭＭＵ１００８及びシステムメモリ１００４を含む。システムメモリ１００４は、ページテーブル１０２０、コマンドキュー１０２４及びイベントログバッファ１０２８を含む。システム１０００においては、周辺機器１０１０からの要求はＩＯＭＭＵ１００２に到着する。ＩＯＭＭＵ１００２は、周辺機器１０１０からのトランスレーション要求をサービスするためにアドレストランスレーション情報がＩＯＭＭＵ１００２で利用可能であるかどうかを決定する。アドレストランスレーション情報がＩＯＭＭＵ１００２でキャッシュされていない場合（例えばＩＯＴＬＢミスの場合）には、新たなＩＯＭＭＵイベントログエントリ１０３０がイベントログバッファ１０２８で作成される。ＩＯＭＭＵエントリ１０３０は、トランスレーション情報がＩＯＭＭＵ１００２によって要求されている旨の信号をＣＰＵ１００６へ送る。主ＣＰＵ１００６は、プリフェッチ即時コマンド１０２６を用いてアドレストランスレーション情報１０２２をＩＯＴＬＢ１０１２に提供する。トランスレーション情報１０２２は、プリフェッチ即時コマンド１０２６をシステムメモリ１００４のコマンドキュー１０２４内へ投入することによって提供される。ＩＯＭＭＵ１００２はコマンドキュー１０２４からプリフェッチ即時コマンド１０２６をフェッチし、そしてプリフェッチ即時コマンド１０２６を実行する。提供されたアドレストランスレーション情報１０２２は次いで、上述した種々の充填ポリシーを用いてＩＯＴＬＢ１０１２内へ挿入され得る。
【００５９】
例えばプリフェッチ即時コマンド１０２６は、ＩＯＴＬＢ１０１２の特定のスロットを含むことができ又はＩＯＴＬＢ１０１２の特定のロケーションに関する他の情報を含むことができる。代替的には、提供されたアドレストランスレーション情報１０２２をＩＯＴＬＢ１０１２内へ挿入するために、ＩＯＭＭＵのネイティブキャッシュ置換アルゴリズムを用いることができる。ＩＯＴＬＢミスの蓋然性を更に低減し又は排除するために、ＩＯＭＭＵ１００２キャッシュの実装決定及び使用パターンに応じて、サイドＴＬＢ（図示せず）がＩＯＭＭＵ１００２内に含まれていてよい。
【００６０】
アドレストランスレーション情報は、種々の理由で無効にされ且つ／又はＩＯＭＭＵの単一若しくは複数のトランスレーションキャッシュから除去され得る。例えば、ＩＯＭＭＵ内にキャッシュされるアドレストランスレーション情報は、システムメモリのページテーブル内に記憶されるアドレストランスレーション情報にもはや対応していないであろう。
【００６１】
ある実施形態においては、ネイティブＩＯＭＭＵ検索アルゴリズムを用いてＩＯＭＭＵがその単一又は複数の内部アドレストランスレーションキャッシュを検索し、任意の特定の無効化する単一又は複数のエントリを見つけ出すように、ＩＮＶＡＬＩＤＡＴＥ＿ＩＯＭＭＵ＿ＰＡＧＥＳコマンドが、無効化するアドレストランスレーション情報又は特定のアドレスを指定するために用いられ得る。
【００６２】
別の実施形態においては、ＩＮＶＡＬＩＤＡＴＥ＿ＩＯＭＭＵ＿ＰＡＧＥＳコマンドが、無効化するアドレスの代わりに無効化するＩＯＭＭＵの特定のスロットを表示することができる。当該コマンドはＩＮＶＡＬＩＤＡＴＥ＿ＩＯＭＭＵ＿ＰＡＧＥＳコマンドの変形として構成することができ、あるいは当該コマンドは新たなコマンドとして構成することができる。
【００６３】
別の実施形態においては、無効化は、プリフェッチ即時コマンドを発行することによって達成され得る。プリフェッチ即時コマンドは、占有されているアドレストランスレーションスロットを特定することができ、また占有されているアドレストランスレーションスロットに含まれる情報が上書きされるべきであることを指定することができる。例えば、プリフェッチ即時コマンドは無効化ビットを含むことができる。無効化ビットが表示されている場合、ＩＯＭＭＵは、プリフェッチ即時コマンドに従うこと及び既存のアドレストランスレーション情報に上書きすることを指示される。従って無効化ビットは、ＩＯＭＭＵがプリフェッチ即時コマンドを選択的に無視し得るかどうかを制御することができる。
【００６４】
例えばシステムソフトウエアが内容を直接的に操作し得るＭＭＩＯスペースにＩＯＴＬＢ構造が直接的にさらされている更に別の実施形態においては、無効化は直接アクセス方法を用いて達成され得る。この実施形態においては、システムソフトウエアは、ＭＭＩＯスペースを介してＩＯＴＬＢを操作することによってシステムソフトウエアがエントリをテーブル内に挿入したのと同じやり方でエントリを無効化することができる。
【００６５】
例えば主ｘ８６プロセッサ上で実行中のシステムソフトウエアがこれらの新たなコマンドによって増強されるが、導き出される利益は、それら利益を達成するために容易に変化させられ得るソフトウエアにおいて実装され得る。システムソフトウエアは、無修正のハードウエアメカニズムがローカルレベルで達成し得る又は予想され得るよりも洗練された、適切な、適合性のある、及び効率的な置換技術を実装することが可能である。幾つかのシステム制約に対して、典型的には性能敏感なシステムに対して、ソフトウエアコマンド及びここに説明される関連する構造を補完するために、ハードウエアページテーブルウォーカーを伴う完全ＩＯＭＭＵが実装され得る。
【００６６】
図１１はＩＯＭＭＵ１１０２とＩＯＴＬＢを伴う周辺機器１１１１とを含むシステム１１００を示すブロック図である。システム１１００は、システムメモリ１１０４、ＣＰＵ１１０６及びＣＰＵ＿ＭＭＵ１１０８を含む。幾つかの周辺機器は、周辺機器内でＩＯＴＬＢを用いるであろう。周辺機器のＩＯＴＬＢは、ＩＯＭＭＵ１１０２のＩＯＴＬＢの論理的拡張として機能することができる。ＩＯＴＬＢ１１１１を伴う周辺機器は、ＩＯＭＭＵ１１０２を利用して、トランスレーション情報を取得すると共にそれを戻すためにページテーブルウォークを行うことができる（例えばＰＣＩ−ＳＩＧ＿ＡＴＳアドレストランスレーションサービス(PCI-SIG ATS Address Translation Services)）。ここに説明されるプリフェッチ即時コマンド並びに他の関連するコマンド及び構造は、従って、ＩＯＴＬＢ１１１１を伴う周辺機器を含むそのようなシステムに適合する。
【００６７】
そのようなシステムにおいてＩＯＴＬＢ１１１１を伴う周辺機器は、それらのＩＯＴＬＢをポピュレートする（populate)するために、ＰＣＩ−ＳＩＧ＿ＡＴＳプロトコルを用い続ことができる。そのようなシステムにおいてＩＯＴＬＢを伴う周辺機器はまた、それらのＩＯＴＬＢをポピュレートするために、ここに説明される実施形態を採用することができる。システムソフトウエアは、ＩＯＭＭＵと周辺機器のＩＯＴＬＢとの両方をポピュレートすることができ、そしてプロトコル及びソフトウエアは、効率性のために互換性があってよい。ある実施形態においては、ＩＯＭＭＵはＡＴＳプロトコルをサポートする必要はなくてよく、設計を簡素化し且つシリコン面積及び電力要求を低減することができる。
【００６８】
図１２はＩＯＴＬＢ１２１２、ページテーブルウォーカー１２１４、割り込み再マッピングバッファ１２３４及びデバイステーブルエントリバッファ１２３６を含むＩＯＭＭＵ１２０２の更なる実施形態を示すブロック図である。ＩＯＭＭＵ１２０２は、仮想アドレス１２１６と物理アドレス１２１８の間でトランスレーションする際のアドレストランスレーションと同様に機能するが割り込みに適用される割り込み再マッピングと称される特徴を提供する。ここに説明される技術及び実施形態は、従って、割り込み再マッピングに用いられ得る。アドレストランスレーションの代わりに割り込み再マッピング情報を伝えるために、新たなコマンド又は既存のコマンドの変形が実装され得る。同様に、割り込み再マッピング情報の無効化のために、新たな又は変形されたコマンドが実装され得る。アドレストランスレーション及び割り込み再マッピングは、対応するテーブルが別々であり且つ独立していることを理由として、ＩＯＭＭＵデバイステーブルエントリバッファ１２３６によって独立して相互に関連付けられ得る。従って、ＩＯＭＭＵ１２０２は、強化されたアドレストランスレーション及び割り込み再マッピングを行うことができる。
【００６９】
結論
ここに説明される実施形態は、ＩＯＭＭＵ実装（製品）の製品化までの時間を改善することができ、新たなＩＯＭＭＵハードウエアを開発し、試験し及びサポートするのに要求される努力を低減することができ、そしてソフトウエアがグローバル的に最適なポリシー決定を行ってそれが適用可能なハードウエアによるローカル的に最適なポリシー決定を改善するのを可能にするメカニズムを提供することができる。実施形態はまた、サイドＴＬＢを利用してソフトウエア管理の「迅速パス(quick path)」トランスレーション特徴を可能にする。ＩＯメモリ管理ユニットの機能がより効率的に実装され得る（より少ないシリコン面積）し、またＩＯはそのようなシステムでより高速に動作することができる。提案される強化の有無にかかわらず、多重ＩＯＭＭＵが互換性の理由からシステム内に共存することができ、即ち新旧チップ設計がシステム設計において混在し得る。幾つかの実施形態はページウォーカーハードウエアを必要としないので、この場合におけるＩＯＭＭＵは小型化が可能でありまたより小さなＦＰＧＡを取り付けることができる。実施形態は、ＩＯＭＭＵが特定のページテーブルのフォーマットをハードウエア配線することを必要としないので、実施形態は種々のページテーブルフォーマット（例えば非ｘ８６プロセッサ及びフォーマットを伴う）と協働することができる。
【００７０】
本発明の側面を実施する論理によって実行される命令は、Ｃ及びＣ＋＋等の種々のプログラミング言語、アセンブリ言語、並びに／又はハードウエア記述言語（ＨＬＤ）においてコード化されてよく、また論理又は他のデバイスによって実行され得るオブジェクトコードへとコンパイルされてよい。
【００７１】
上述の実施形態は、ベリログ(Verilog)、ＲＴＬ、ネットリスツ(netlists)等のハードウエア記述言語において記述されてよく、またこれらの記述は、ここに説明されるような本発明の側面を具現化する１つ以上のハードウエアデバイスを作り出すマスクワーク／フォトマスクの生成を通じて製造プロセスを最終的に構成するために用いられ得る。
【００７２】
本発明の側面は、全体又は一部においてコンピュータ可読媒体に記憶され得る。コンピュータ可読媒体に記憶される命令は、本発明の実施形態の全部又は一部を行うようにプロセッサを適合させることができる。
【００７３】
概要及び要約の欄ではなく詳細な説明の欄が特許請求の範囲を解釈するために用いられることを意図されていることが理解されるべきである。概要及び要約の欄は、発明者によって検討されているような本発明の１つ以上であるが全てではない例示的な実施形態を記述しているはずであり、従って、本発明及び添付の特許請求の範囲を限定することを意図されるものでは決してない。
【図１】
2013519965.tif 000003
【図２】
2013519965.tif 000004
【図３】
2013519965.tif 000005
【図４】
2013519965.tif 000006
【図５】
2013519965.tif 000007
【図６】
2013519965.tif 000008
【図７】
2013519965.tif 000009
【図８】
2013519965.tif 000010
【図９】
2013519965.tif 000011
【図１０】
2013519965.tif 000012
【図１１】
2013519965.tif 000013
【図１２】
2013519965.tif 000014
【国際調査報告】
2013519965.tif 000015
2013519965.tif 000016
2013519965.tif 000017