(57)【特許請求の範囲】
【請求項１】
複数のバーチャル／物理的アドレス変換を記憶するように構成されたトランスレーションルックアサイドバッファ（ＴＬＢ）と、
前記ＴＬＢにおいてミスとなったバーチャルアドレスの変換中に以前に読み取られた第１のページテーブルエントリーを含めて複数のページテーブルエントリーを含むデータのブロックを記憶するように構成されたバッファと、
前記ＴＬＢ及び前記バッファに結合されたテーブルウオークユニットであって、
前記ＴＬＢにおける第１のＴＬＢミスの第１のバーチャルアドレスを受け取るように結合され、且つ変換のためのメモリ読み取りを開始する前に前記第１のバーチャルアドレスに対応する第２のページテーブルエントリーについて前記バッファをチェックするように構成され、更に、
前記複数のページテーブルエントリーの使用履歴を追跡し、そしてその使用履歴に応答してデータの第２ブロックに対するプリフェッチ要求を発生するように構成された、
該テーブルウオークユニットと、
を備えたメモリマネージメントユニット（ＭＭＵ）。
【請求項２】
前記テーブルウオークユニットは、前記バッファにおける第２のページテーブルエントリーを検出するように構成され、そして前記テーブルウオークユニットは、前記第２のページテーブルエントリーから前記ＴＬＢへ変換を書き込むように構成される、請求項１に記載のＭＭＵ。
【請求項３】
前記テーブルウオークユニットは、前記第２のページテーブルエントリーが前記バッファに記憶されないことを検出するように構成され、そして前記テーブルウオークユニットは、前記第２のページテーブルエントリーを含むデータの第２ブロックに対するメモリ読み取りを発生するように構成される、請求項１に記載のＭＭＵ。
【請求項４】
前記テーブルウオークユニットは、前記バッファに前記第２ブロックを書き込んで、前記バッファにおける前記ブロックをオーバーライトするように構成された、請求項３に記載のＭＭＵ。
【請求項５】
前記バッファは、複数のブロックを記憶するように構成され、その各ブロックは、前記ＭＭＵへ送信される変換要求と共に与えられる異なる識別子に対応する、請求項４に記載のＭＭＵ。
【請求項６】
前記ブロックは、サイズがキャッシュブロックより大きい、請求項１に記載のＭＭＵ。
【請求項７】
前記使用履歴は、前記ブロックから読み取られた最も最近のＱ個のページテーブルエントリーの指示を含み、前記テーブルウオークユニットは、ＴＬＢミスのパターンがブロックの端の付近であることを前記使用履歴が指示する場合に前記プリフェッチ要求を発生するように構成され、そして前記Ｑは、１より大きな正の整数である、請求項１に記載のＭＭＵ。
【請求項８】
前記使用履歴は、前記テーブルウオークユニットにより読み取られた複数のページテーブルエントリーの数のカウントを含み、そして前記テーブルウオークユニットは、そのカウントが前記複数のページテーブルエントリーの数に等しくなるのに応答して前記プリフェッチ要求を発生するように構成される、請求項１に記載のＭＭＵ。
【請求項９】
前記使用履歴は、前記テーブルウオークユニットにより読み取られた複数のページテーブルエントリーの数のカウントを含み、そして前記テーブルウオークユニットは、そのカウントが前記複数のページテーブルエントリーの数に近付くのに応答して前記プリフェッチ要求を発生するように構成される、請求項１に記載のＭＭＵ。
【請求項１０】
メモリから複数のページテーブルエントリーより成るデータのブロックを読み取る段階と、
前記ブロックをメモリマネージメントユニット（ＭＭＵ）に保持する段階と、
前記ＭＭＵにおいてトランスレーションルックアサイドバッファ（ＴＬＢ）ミスを検出する段階と、
前記保持されたブロックから前記複数のページテーブルエントリーの１つを読み取って前記ＴＬＢミスに対する変換を決定する段階と、
前記ブロックに複数のページテーブルエントリーの使用履歴を維持する段階と、
前記使用履歴に応答して第２の複数のページテーブルエントリーを含むデータの第２ブロックのプリフェッチを発生する段階と、
を備えた方法。
【請求項１１】
前記ＭＭＵにおいて第２のＴＬＢミスを検出する段階と、
前記第２のＴＬＢミスに対応する第２のページテーブルエントリーが前記複数のページテーブルエントリーにないことを決定する段階と、
前記メモリから前記第２のページテーブルエントリーを含めて第２の複数のページテーブルエントリーより成るデータの第２ブロックを読み取る段階と、
前記ＭＭＵに前記第２ブロックを保持する段階と、
を更に備えた請求項１０に記載の方法。
【請求項１２】
ＭＭＵに第２ブロックを保持する前記段階は、前記ブロックを前記第２ブロックでオーバーライトすることを含む、請求項１１に記載の方法。
【請求項１３】
トランスレーションルックアサイドバッファ（ＴＬＢ）ミスの規則的パターンを経験することが予想される１つ以上のアドレス範囲を決定する段階と、
前記アドレス範囲でメモリマネージメントユニット（ＭＭＵ）の１つ以上のレジスタをプログラミングする段階と、
を備え、前記ＭＭＵは、前記１つ以上のアドレス範囲におけるＴＬＢミスに応答して、複数のページテーブルエントリーを各々含むページテーブルエントリーのブロックに対してプリフェッチ要求を発生するように構成され、そして前記ＭＭＵは、前記１つ以上の範囲以外のＴＬＢミスに対してはプリフェッチ要求の発生を禁止するように構成される、請求項１０に記載の方法。
【請求項１４】
メモリマネージメントユニット（ＭＭＵ）を備えたプロセッサにおいて、該ＭＭＵは、
複数のバーチャル／物理的アドレス変換を記憶するように構成されたトランスレーションルックアサイドバッファ（ＴＬＢ）と、
前記ＴＬＢにおいてミスとなったバーチャルアドレスの変換中に以前に読み取られた第１のページテーブルエントリーを含めて複数のページテーブルエントリーを含むデータのブロックを記憶するように構成されたバッファと、
前記ＴＬＢ及び前記バッファに結合されたテーブルウオークユニットであって、
前記ＴＬＢにおける第１のＴＬＢミスの第１のバーチャルアドレスを受け取るように結合され、且つ変換のためのメモリ読み取りを開始する前に前記第１のバーチャルアドレスに対応する第２のページテーブルエントリーについて前記バッファをチェックするように構成され、更に、
前記複数のページテーブルエントリーの使用履歴を追跡し、そしてその使用履歴に応答してデータの第２ブロックに対するプリフェッチ要求を発生するように構成された、
該テーブルウオークユニットと、
を含むものである、プロセッサ。
【請求項１５】
１つ以上のプロセッサを備え、各プロセッサは、メモリマネージメントユニット（ＭＭＵ）を備え、このＭＭＵは、
複数のバーチャル／物理的アドレス変換を記憶するように構成されたトランスレーションルックアサイドバッファ（ＴＬＢ）と、
前記ＴＬＢにおいてミスとなったバーチャルアドレスの変換中に以前に読み取られた第１のページテーブルエントリーを含めて複数のページテーブルエントリーを含むデータのブロックを記憶するように構成されたバッファと、
前記ＴＬＢ及び前記バッファに結合されたテーブルウオークユニットであって、
前記ＴＬＢにおける第１のＴＬＢミスの第１のバーチャルアドレスを受け取るように結合され、且つ変換のためのメモリ読み取りを開始する前に前記第１のバーチャルアドレスに対応する第２のページテーブルエントリーについて前記バッファをチェックするように構成され、更に、
前記複数のページテーブルエントリーの使用履歴を追跡し、そしてその使用履歴に応答してデータの第２ブロックに対するプリフェッチ要求を発生するように構成された、
該テーブルウオークユニットと、
を含むものである、システム。
【請求項１６】
前記１つ以上のプロセッサは、１つ以上のグラフィック処理ユニットを含む、請求項１５に記載のシステム。
【請求項１７】
前記１つ以上のプロセッサは、１つ以上の中央処理ユニットを含む、請求項１６に記載のシステム。
【請求項１８】
前記１つ以上のプロセッサは、１つ以上の中央処理ユニットを含む、請求項１５に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサの分野に係り、より詳細には、プロセッサのメモリマネージメントユニットに係る。
【背景技術】
【０００２】
プロセッサは、典型的に、アドレス変換を実施する。アドレス変換がイネーブルされるときには、フェッチアドレス及びロード／記憶アドレスは、有効又はバーチャルアドレスである。有効／バーチャルアドレスは、アドレス変換メカニズムを経て変換されて、物理的アドレス（又はリアルアドレス）に到達する。ここで使用する物理的アドレス及びリアルアドレスという語は、同義語とする。物理的／リアルアドレスは、メモリをアドレスするために実際に使用されるアドレスである。有効アドレスは、インストラクションをフェッチするために発生されるアドレス（インストラクションのプログラムカウンタ即ちＰＣとも称される）であるか、又はロード／記憶インストラクションのアドレスオペランドから発生されるアドレスである。あるケースでは、有効アドレスは、バーチャルアドレスに等しい。他のケースでは、バーチャルアドレスは、有効アドレスに基づいて発生される（例えば、有効アドレスから変換されるか、又はある所定のオペレーションを有効アドレスに適用することにより発生される）。バーチャルアドレスは、次いで、物理的アドレスに変換される。
【０００３】
アドレス変換は、種々の理由で使用される。例えば、アドレス変換は、コンピュータシステムに含まれた物理的メモリでサポートできる量よりも大きな有効又はバーチャルアドレススペースを与えるのに使用することができる。低速の二次記憶装置（例えば、ディスク記憶装置）は、実行されているプログラムにより必要に応じてメモリへ及びメモリからページをスワップするためのページスワップ記憶装置として使用することができる。更に、アドレス変換は、マルチタスク環境において、あるタスクのメモリを別のタスクによるアクセス／更新から保護すると共に、どの物理的ページがタスクに割り当てられるかに関わらず、各タスクにそれ自身のアドレススペースを与えるために使用することもできる。又、タスクの全体的なメモリ使用がメモリサイズを越える場合にも、スワッピングを使用して、メモリのコンテンツを保持すると共に、現在使用中のページへアクセスを与えることができる。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
システムメモリには典型的にページテーブルが設けられ、このページテーブルは、バーチャル／物理的変換マッピングを記憶する。従って、アドレス変換は、ページテーブルから変換を読み取るために１つ以上のメモリアクセスを含む。変換メカニズムを加速するために、多くのプロセッサは、トランスレーションルックアサイドバッファ（ＴＬＢ）を実施する。ＴＬＢは、最近使用された変換のキャッシュである。従って、キャッシュミスと同様に、ＴＬＢミスは、ページテーブルから変換データをフェッチするための追加待ち時間を伴う。あるケースでは、ＴＬＢは、バーチャルアドレス範囲でプログラム可能である。バーチャルアドレス範囲における変換要求に応答して、ＴＬＢは、変換を与えると共に、次のバーチャルページの変換をＴＬＢへプリフェッチすることもできる。
【課題を解決するための手段】
【０００５】
一実施形態では、メモリマネージメントユニット（ＭＭＵ）は、複数のページテーブルエントリーを含むデータのブロックを保持するように構成される。ＭＭＵは、ＴＬＢミスに応答してブロックをチェックし、ブロックに変換が見つかった場合には、その変換についてメモリ読み取りを発生せずにブロックから変換を供給するように構成される。又、ある実施形態では、ＭＭＵは、ブロックからの変換を使用したＴＬＢミスの履歴も維持し、その履歴に基づいて第２ブロックのプリフェッチを発生する。例えば、その履歴は、使用された最も最近のＱ個のページテーブルエントリーの位置のリスト（例えば、ブロック内のエントリー番号）であり、そして履歴は、ブロックの端に接近するアクセスのパターンを示す。ＭＭＵは、接近しつつある端に隣接する次に続くブロックに対してプリフェッチを発生する。別の実施形態では、履歴は、使用されたページテーブルエントリーの数のカウントを含み、そのカウントがブロック内のページテーブルエントリーの全数に接近しつつある場合には、ＭＭＵがプリフェッチを発生する。
【０００６】
以下、添付図面を参照して、本発明を詳細に説明する。
【図面の簡単な説明】
【０００７】
【図１】１つ以上のメモリマネージメントユニットを含むシステムの一実施形態を示すブロック図である。
【図２】メモリマネージメントユニットの一実施形態のブロック図である。
【図３】バーチャルアドレススペース、ページテーブルエントリー及び物理的アドレススペースの一実施形態のブロック図である。
【図４】トランスレーションルックアサイドバッファミスに応答するメモリマネージメントユニットの一実施形態の動作を示すフローチャートである。
【図５】トランスレーションルックアサイドバッファミスに応答するメモリマネージメントユニットの別の実施形態の動作を示すフローチャートである。
【図６】図５に示されたフローチャートの一部分の一実施形態を示すフローチャートである。
【図７】図５に示されたフローチャートの一部分の別の実施形態を示すフローチャートである。
【図８】レベル２キャッシュアクセスに対する図１に示すシステムの一実施形態の動作を示すフローチャートである。
【図９】コントロールコードの一実施形態を示すフローチャートである。
【図１０】システムの一実施形態のブロック図である。
【図１１】コンピュータアクセス可能な記憶媒体の一実施形態の一実施形態のブロック図である。
【発明を実施するための形態】
【０００８】
本発明は、種々の変更を受けそして別の形態でも実施できるが、その特定の実施形態を一例として添付図面に示して以下に詳細に説明する。しかしながら、添付図面及び詳細な説明は、本発明を、ここに開示する特定の形態に限定するものではなく、本発明は、特許請求の範囲に規定される本発明の精神及び範囲内に入る全ての変更、等効物及び代替え物を網羅することを理解されたい。ここに使用する見出しは、編成上の目的に過ぎず、説明の範囲を限定するためのものではない。又、本出願全体にわたって使用される「〜してもよい(may)」という語は、許すという意味（即ち、〜の潜在性があるという意味）で使用されるもので、強制の意味（即ち、〜しなければならないという意味）ではない。同様に、「含む(include)」、「含んでいる(including)」及び「含む(includes)」という語は、含むことを意味するが、それに限定されない。
【０００９】
種々のユニット、回路又は他のコンポーネントは、１つ又は複数のタスクを遂行するように「構成される」ものとして述べる。この点について、「構成される」とは、動作中に１つ又は複数のタスクを遂行する「回路を有する」ことを一般的に意味する構造を広く表現するものである。従って、ユニット／回路／コンポーネントは、そのユニット／回路／コンポーネントが現在オンでなくても、タスクを遂行するように構成することができる。一般的に、「構成される」に対応する構造を形成する回路は、ハードウェア回路を含む。同様に、種々のユニット／回路／コンポーネントは、説明の便宜上、１つ又は複数のタスクを遂行するものとして説明されてもよい。そのような説明は、「構成される」という句を含むものと解釈されねばならない。１つ以上のタスクを遂行するように構成されたユニット／回路／コンポーネントを表現する場合に、そのユニット／回路／コンポーネントの解釈に関して３５Ｕ.Ｓ.Ｃ.§１１２、第６節を引用しないことが明確に意図される。
【００１０】
図１は、システムの一実施形態のブロック図である。図１の実施形態において、このシステムは、メモリマネージメントユニット（ＭＭＵ）１６Ａ−１６Ｎを各々含む１つ以上のグラフィック処理ユニット（ＧＰＵ）１０Ａ−１０Ｎと、それに対応するレベル２（Ｌ２）キャッシュ１２Ａ−１２Ｎと、マルチコアマネージメントブロック（ＭＣＭＢ）１４Ａと、を備えている。ＭＣＭＢ１４Ａは、Ｌ２キャッシュ１２Ａ−１２Ｎに結合され、これらキャッシュは、各ＧＰＵ１０Ａ−１０Ｎに結合される。又、ＭＣＭＢ１４Ａは、メインメモリシステム２０にも結合される。このシステムは、更に、ＭＭＵ１８Ａ−１８Ｍを各々含む１つ以上の中央処理ユニット（ＣＰＵ）２２Ａ−２２Ｍと、それに対応するレベル２（Ｌ２）キャッシュ２４Ａ−２４Ｍと、マルチコアマネージメントブロック（ＭＣＭＢ）１４Ｂと、を備えている。ＭＣＭＢ１４Ｂは、Ｌ２キャッシュ２４Ａ−２４Ｍに結合され、これらキャッシュは、各ＣＰＵ２２Ａ−２２Ｍに結合される。又、ＭＣＭＢ１４Ｂは、メインメモリシステム２０にも結合される。参照番号及びそれに続く文字で表されるコンポーネントは、同じ参照番号及び異なる文字を有する他のコンポーネントと同様である（必ずしも同一ではないが）。同じ参照番号及び異なる文字を有するコンポーネントは、その参照番号のみによって全体的に表される（例えば、ＧＰＵ１０Ａ−１０Ｎは、ＧＰＵ１０として全体的に表される）。
【００１１】
ＧＰＵ１０Ａ−１０Ｎは、グラフィック操作（例えば、画像をフレームバッファ、ピクセル操作、等へレンダリングする）について最適化されたインストラクションセットアーキテクチャーを実施する。ＧＰＵ１０Ａ−１０Ｎは、スカラー、スーパースカラー、パイプライン、スーパーパイプライン、順序ずれ、正しい順序、推論的、非推論的、等、又はその組み合わせを含むマイクロアーキテクチャーを実施する。ＧＰＵ１０Ａ−１０Ｎは、回路を含み、そして任意であるが、マイクロコーディング技術を実施する。ＧＰＵ１０Ａ−１０Ｎの各々は、アドレス変換を遂行するように構成されたＭＭＵ１６Ａ−１６Ｎを含む。ＭＭＵ１６は、変換をキャッシュ記憶するためにトランスレーションルックアサイドバッファ（ＴＬＢ）を備え、そして以下に詳細に述べるように、変換プリフェッチングを実施する。ＭＭＵ１６により使用される変換は、メインメモリシステム２０に記憶されたページテーブル２６に記憶される。同様に、ＣＰＵ２２Ａ−２２Ｍは、汎用インストラクションセットアーキテクチャーを実施し、そして上述した可能性のいずれかを含むマイクロアーキテクチャーを実施する。ＣＰＵ２２Ａ−２２Ｍは、ＭＭＵ１８Ａ−１８Ｍを実施し、これらも、以下に述べるように、変換プリフェッチングを実施する。他の実施形態では、ＭＭＵ１６のみが変換プリフェッチングを実施し、そして更に別の実施形態では、ＭＭＵ１８のみが変換プリフェッチングを実施する。ＭＭＵ１８Ａ−１８Ｍにより使用される変換もページテーブル２６に記憶される。ページテーブル２６は、ＣＰＵ２２とＧＰＵ１０との間で共有され、又はページテーブル２６は、ＣＰＵ２２及びＧＰＵ１０に対して個別のデータ構造を含む。ＧＰＵ１０及びＣＰＵ２２は、インストラクションを実行するように構成された回路であるプロセッサの一例である。プロセッサは、個別の集積回路、集積回路に一体化されたコア、等でよい。例えば、図１において、ＧＰＵ１０、Ｌ２キャッシュ１２、及びＭＣＭＢ１４Ａは、グラフィックチップに一体化され、そしてＣＰＵ２２、Ｌ２キャッシュ２４、及びＭＣＭＢ１４Ｂは、マルチコアＣＰＵチップに一体化される。別の実施形態では、ＧＰＵ１０、ＣＰＵ２２、Ｌ２キャッシュ１２及び２４、及びＭＣＭＢ１４は、集積回路に一体化される。ある実施形態では、集積回路は、ＧＰＵ／ＣＰＵ及び関連回路と一体化される他のコンポーネントも含む。
【００１２】
ページテーブル２６は、複数のページテーブルエントリーを記憶する。各ページテーブルエントリーは、バーチャルアドレススペースのページに対応し、ページ内のアドレスを物理的ページ内の対応アドレスにマップする。ページのサイズは、実施形態ごとに変化し得る。例えば、４キロバイト又は８キロバイトが使用されてもよい。１、２又は４メガバイトのような大きなページサイズが使用されてもよいし、或いはそれ以上のものが使用されてもよい。ある実施形態では、２つ以上のページサイズがサポートされてもよく、そして必要に応じて複数のページサイズが同時にサポートされてもよい。
【００１３】
ＧＰＵ１０及びＣＰＵ２２は、Ｌ１キャッシュ（図示せず）を含み、従って、キャッシュ１２及び２４は、この実施形態では、Ｌ２キャッシュである。Ｌ２キャッシュは、任意のサイズ及び構成（例えば、セットアソシエーティブ、直接マップ、等）を有するものでよい。又、Ｌ２キャッシュは、任意のキャッシュブロックサイズ（例えば、３２バイト又は６４バイト、或いはそれ以上又はそれ以下）を実施するものでよい。キャッシュブロックサイズは、キャッシュにおける割り当て及び割り当て解除の単位である。
【００１４】
ＭＣＭＢ１４は、一般的に、対応するプロセッサとメインメモリシステム２０との間の相互接続を与えることができる。キャッシュコヒレンシーが実施される場合には、ＭＣＭＢ１４は、プローブを発生する役割を果たす（例えば、あるプロセッサからの要求は、他のプロセッサへのプローブを生じさせて、他のプロセッサのＬ１又はＬ２キャッシュに変更されたデータを得、キャッシュされたコピーを更新要求に対して無効にし、等々を行う）。ＭＣＭＢは、互いに通信し及び／又はメインメモリシステム２０のメモリコントロールと通信する。一実施形態において、メモリコントローラは、ＭＣＭＢ１４と共にオンチップで実施されてもよく、及び／又は１つのＭＣＭＢ１４の一部分でもよい。ある実施形態において、ＭＣＢＭ１４は、このＭＣＢＭ１４に結合されたＬ２キャッシュ１２又は２４により共有されるレベル３（Ｌ３）キャッシュも実施する。
【００１５】
メインメモリシステム２０は、任意の形式のメモリを含む。例えば、メモリは、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、同期ＤＲＡＭ（ＳＤＲＡＭ）、倍データレート（ＤＤＲ、ＤＤＲ２、ＤＤＲ３、等）ＳＤＲＡＭ（ＳＤＲＡＭのモバイルバージョン、例えば、ｍＤＤＲ３を含む）、ＲＡＭＢＵＳ  ＤＲＡＭ（ＲＤＲＡＭ）、スタティックＲＡＭ（ＳＲＡＭ）、等を含む。上述したように、メインメモリシステム２０は、メモリ紺とロー他も含む。
【００１６】
種々の実施形態における各コンポーネントの数は、変化し得ることに注意されたい。例えば、１つ以上のＧＰＵ１０Ａ−１０Ｎが設けられてもよく、又、１つ以上のＣＰＵ２２Ａ−２２Ｍが設けられてもよい。他の実施形態では、ＧＰＵが存在せず及び／又はＣＰＵも存在しない。１０Ｎ及び２２Ｍで示されるように、あるプロセッサの数が他のプロセッサの数と異なってもよい。Ｌ２キャッシュ１２及び２４は、図１には、各プロセッサに関連して示されているが、他の実施形態では、プロセッサのサブセットにより共有されてもよい。更に別実施形態では、Ｌ２キャッシュがなくてもよい。
【００１７】
図２は、ＭＭＵ１６Ａの一実施形態のブロック図である。他のＭＭＵ１６及び／又はＭＭＵ１８も同様である。図２の実施形態において、ＭＭＵ１６Ａは、ＴＬＢ３０と、テーブルウオークユニット３２と、プリフェッチバッファ３４とを備えている。テーブルウオークユニット３２は、ＴＬＢ３０及びプリフェッチバッファ３４に結合される。ＴＬＢ３０及びテーブルウオークユニット３２は、変換されるべきバーチャルアドレス（ＶＡ）を受け取るように結合され、そしてテーブルウオークユニット３２は、更に、バーチャルアドレスのための対応する要求者識別子（ＲＩＤ）及び／又は対応する要求形式を受け取るように結合される。ＴＬＢ３０は、物理的アドレス（ＰＡ）及びヒット信号を要求者に与えるように結合され、そしてＴＬＢ３０は、更に、ヒット信号をテーブルウオークユニット３２に与えるように結合される。テーブルウオークユニット３２は、変換充填及び無効化（図２の充填／無効化）もＴＬＢ３０に通信するように結合される。テーブルウオークユニット３２は、スヌープ型ＴＬＢ無効化（図２のスヌープＴＬＢ無効化）の指示を受け取るように結合される。テーブルウオークユニット３２は、更に、ページテーブルエントリー（ＰＴＥ）読み取り要求を送出しそしてそれに対応するデータ（図２のＰＴＥ読み取り／データ）を受け取るように結合される。ここに示す実施形態では、テーブルウオークユニット３２は、履歴レジスタ（１つ又は複数）３６と、アドレス範囲レジスタ３８Ａ−３８Ｒのセットとを含む。他の実施形態では、レジスタ３６及び／又は３８Ａ−３８Ｒの１つ以上が含まれなくてもよい。
【００１８】
ＭＭＵ１６Ａは、変換されるべきバーチャルアドレスを任意のソース（例えば、インストラクションをフェッチするためのＧＰＵ１０Ａのフェッチロジック、又はロード／記憶動作を遂行するためのロード／記憶ロジック）から受け取る。ＴＬＢ３０は、バーチャルアドレスをルックアップし、そしてバーチャルアドレスに対するヒット又はミスを検出するように構成される。バーチャルアドレスから物理的アドレスへの変換がＴＬＢ３０に記録される場合にはＴＬＢヒットが検出され、そしてその変換がＴＬＢ３０に記録されない場合にはミスが検出される。ＴＬＢ３０は、ヒット（ヒット信号アサート状態）又はミス（ヒット信号デアサート状態）をシグナリングするように構成され、そしてヒットエントリーに基づく物理的アドレス（ＰＡ）を送信するよう構成される。変換は、上述したように、ページベースでマネージされる。即ち、ＴＬＢ３０に記録される所与の変換は、バーチャルページ内のバーチャルアドレスを、変換により識別される物理的ページ内の対応する物理的アドレスへ変換する。ある実施形態では、ＴＬＢ３０へ入力されるＶＡは、ＶＡのページ部分であり（例えば、ページオフセットビットを除いて）、そしてＴＬＢ３０により出力されるＰＡも、物理的アドレスのページ部分であって、物理的ページ番号とも称される。完全な物理的アドレスは、ページオフセットビットと連結される物理的ページ番号である。
【００１９】
テーブルウオークユニット３２は、ヒット信号を受信するように結合され、そしてＴＬＢ３０においてミスとなるバーチャルアドレスに対する変換の位置付けを試みるよう構成される（「テーブルウオーク」と称される）。一実施形態において、テーブルウオークユニット３２は、ＴＬＢミスに応答してページテーブル２６から複数のページテーブルエントリーを含むデータのブロックを読み取るように構成されると共に、ブロック内のページテーブルエントリーの１つにおけるミスとなるＶＡの変換でＴＬＢ３０を更新するのに加えて、プリフェッチバッファ３４へデータのブロックを書き込むように構成される。複数のページテーブルエントリーを含むデータのブロックは、ここでは、簡単化のためにプリフェッチブロックと称される。後続のＴＬＢミスについては、テーブルウオークユニット３２は、ページテーブル２６から別のプリフェッチブロックを読み取るための読み取り要求を発生する前にプリフェッチバッファ３４をサーチする。テーブルウオークユニット３２は、それがプリフェッチバッファ３４においてバーチャルアドレスに対するページテーブルエントリーを位置付ける場合に、ＴＬＢ３０に変換を書き込み、読み取り要求を発生しないように構成される。バーチャルアドレスに対するページテーブルエントリーがプリフェッチバッファ３４に位置されない場合には、テーブルウオークユニット３２は、読み取り要求を開始するように構成される。テーブルウオークユニット３２は、読み取り要求に応答して受け取ったプリフェッチブロックをプリフェッチバッファ３４に書き込むと共に、上述したようにＴＬＢ３０を更新するように構成される。
【００２０】
後続のＴＬＢミスがプリフェッチバッファ３４内のブロックにおいて変換を見出す程度まで、ＴＬＢミスを処理するための待ち時間が減少される。従って、ある実施形態では、対応するインストラクションフェッチ／データアクセスのための待ち時間も減少され、そして性能が高められる。プリフェッチブロックは、メモリシステム２０のページテーブル２６内の連続的メモリ位置からのページテーブルエントリーより成る。連続的エントリーに位置されたページテーブルエントリーは、典型的に、バーチャルアドレススペースの連続的ページにあるバーチャルアドレスをマップする。バーチャルアドレス（又は少なくともその一部分）は、ページテーブル２６において変換をルックアップするためにページテーブル２６のベースアドレスと共に使用される。従って、互いに数字的に接近したバーチャルアドレスは、ページテーブル２６において互いに接近したページテーブルエントリーに記憶された変換を有する。従って、一実施形態では、通常の予想可能な形態でアクセスされるデータ構造は、プリフェッチバッファ３４に記憶されるプリフェッチブロックから利益が得られる。
【００２１】
ある実施形態では、テーブルウオークユニット３２は、プリフェッチブロックを読み取り、そしてバーチャルアドレスに対してプリフェッチバッファ３４にプリフェッチブロックを記憶することを実施する。他の実施形態では、テーブルウオークユニット３２は、プリフェッチバッファ３４に記憶されたプリフェッチブロックからおそらく利益が得られるものとして識別されたバーチャルアドレス範囲で（範囲レジスタ３８Ａ−３８Ｒにおいて）プログラム可能である。例えば、ＧＰＵ１０Ａ−１０Ｎのようなグラフィック装置により使用されるフレームバッファは、多くの場合に、ピクセル又はタイルの行が読み取り／書き込みされるときに規則的なパターンでアクセスされる。他の例は、入力データの大きなアレイにおいて働く科学的コードを含む。範囲レジスタ３８Ａ−３８Ｂが実施される場合には、テーブルウオークユニット３２は、プリフェッチブロックの読み取りを、１つの範囲内に入るバーチャルアドレスに制限する。その範囲外のアドレスについては、テーブルウオークユニット３２は、変換に必要なページテーブルエントリーを読み取り、そして読み取り要求に応答して返送されるデータにおいて２つ以上のページテーブルエントリーを受け取るが、テーブルウオークユニット３２は、受け取ったページテーブルエントリーをプリフェッチバッファ３４に書き込むことはしない。
【００２２】
レジスタ３８Ａ−３８Ｒは、範囲を望ましい形態で定義する。例えば、各レジスタは、ベースアドレス及び限界（又はサイズ）、又はベースアドレス及びエンドアドレスを記憶する。
【００２３】
ある実施形態では、変換要求は、要求のソースに関しより多くの情報を与える形式情報を含む。例えば、グラフィック実施形態では、形式は、テクスチャマップアクセス、フレームバッファアクセス、オブジェクトアクセス、等を指示する。ある形式のアクセスは、プリフェッチバッファ３４にプリフェッチブロックを記憶することから利益が得られる見込みが高い（例えば、フレームバッファ又はテクスチャマップアクセス）。テーブルウオークユニット３２は、プリフェッチバッファ３４にプリフェッチブロックを保持するか、要求の形式に基づいてプリフェッチバッファ３４にプリフェッチブロックを保持しないように構成される。他の実施形態は、異なる形式を有する（例えば、インストラクションフェッチ対データアクセス、又はバーチャルアドレスの発生に使用されるアドレッシングモードのようなデータアクセスの形式）。
【００２４】
プリフェッチバッファ３４は、１つ以上の、任意の数のプリフェッチブロックを記憶するように構成される。一実施形態において、プリフェッチバッファ３４は、１つのプリフェッチブロックを記憶し、そして現在のプリフェッチブロックは、テーブルウオークユニット３２により読み取られるときに新たなプリフェッチブロックによってオーバーライトされる。他の実施形態では、若干のプリフェッチブロックが記憶される（例えば、２又は４）。ある実施形態では、希望の数のプリフェッチブロックに対する容量がプリフェッチバッファ３４にあってもよい。プリフェッチバッファ３４は、任意の記憶回路（例えば、スタティックランダムアクセスメモリ（ＳＲＡＭ）、レジスタ又はフロップのようなクロック型記憶装置、等）で実施されてもよい。
【００２５】
プリフェッチバッファ３４内のプリフェッチブロック記憶エントリーが図２に示されている。このエントリーは、有効ビット（Ｖ）、プリフェッチブロックのベースアドレス（Ａｄｄｒ）を識別するアドレスフィールド（Ａｄｄｒ）、及びプリフェッチブロックデータ（Ｄａｔａ）を含む。他の実施形態では、有効ビットは、フェッチブロックを部分的に有効化する有効フィールドである。例えば、プリフェッチブロックがサイズ的に複数のキャッシュブロックより成り、そしてキャッシュブロックがテーブルウオークユニット３２に対して利用可能な最大の単一転送である場合には、プリフェッチブロックに対する読み取り要求は、複数の要求と、テーブルウオークユニット３２へ返送されるキャッシュブロックとを伴う。従って、有効フィールドは、キャッシュブロックを、それらがプリフェッチバッファ３４に書き込まれるときに有効化する。このような有効フィールドは、以下に詳細に述べるＰＴＥ無効化に関して実施される。
【００２６】
テーブルウオークユニット３２は、要求者ＩＤに基づいて複数のプリフェッチブロックを維持するように構成される（例えば、所与の要求者ＩＤは、プリフェッチバッファ３４内の所与のプリフェッチブロックに関連付けられる）。プリフェッチブロックが要求者ＩＤに関連付けられ、そして新たなプリフェッチブロックがテーブルウオークユニット３２によりプリフェッチバッファ３４に書き込まれる場合には、新たなプリフェッチブロックが同じ要求者ＩＤに関連した以前のプリフェッチブロックに置き換わる。従って、他の要求者ＩＤに関連したブロックには影響がない。或いは又、２つ以上のプリフェッチブロックが所与の要求者に対して記憶されてもよい。例えば、２つのプリフェッチブロックが所与の要求者に対して記憶される場合には、現在プリフェッチブロックのページテーブルエントリーが尽きることに関して次のプリフェッチブロックが早期にプリフェッチされる。というのは、次のプリフェッチブロックがプリフェッチバッファ３４内の現在プリフェッチブロックをオーバーライトしないからである。このような動作は、アクティブなプリフェッチングが実施される場合に、実施される。
【００２７】
以上の説明は、ＴＬＢミスに応答してプリフェッチブロックが読み取られ、そしてそのブロックが未使用のページテーブルエントリーを含むプリフェッチバッファ３４に保持されるという受動的なプリフェッチ形態を言及するものである。プリフェッチブロックの未使用のページテーブルエントリーは、それらがＴＬＢミスに応答して直接要求される前に効果的に読み取られ、従って、プリフェッチされたとみなされる。即ち、プリフェッチは、一般的に、まだ要求されていないが将来要求される見込みがある程度あるページテーブルエントリーを読み取る。他の実施形態は、テーブルウオークユニット３２が、近い将来必要とされるページテーブルエントリーのブロックの予想を試み、そしてその予想されたエントリーを含むブロックをプリフェッチするというアクティブなプリフェッチを遂行する。一実施形態において、履歴レジスタ３６は、アクティブなプリフェッチングのために設けられる。テーブルウオークユニット３２は、最近使用されたページテーブルエントリーを表すデータを履歴レジスタ３６に記憶し、そして履歴のパターンを検出してプリフェッチブロックを予想するよう試みる。テーブルウオークユニット３２は、予想に応答してプリフェッチ要求を発生し、そしてプリフェッチブロックをプリフェッチバッファ３４に書き込む。プリフェッチバッファ３４に複数のプリフェッチブロックを記憶する実施形態は、ブロックごとに個別の履歴を記憶するために複数の履歴レジスタ３６を含む（又はレジスタ３６に複数のフィールドを含む）。
【００２８】
履歴データは、プリフェッチブロックからＴＬＢ３０へロードされた最近のページテーブルエントリーを表す任意のデータでよい。即ち、履歴データは、ページテーブルエントリーの使用の履歴であるか、或いはＴＬＢミスによるページテーブルエントリーの消費の履歴である。例えば、履歴は、最も最近ロードされたＱ個のページテーブルエントリーを識別し、ここで、Ｑは、１以上の整数である。一実施形態において、プリフェッチブロック内のページテーブルエントリーには、プリフェッチブロック内の最低アドレスのページテーブルエントリーで始まってアドレスの増加と共に増加するエントリー番号が指定される。このエントリー番号は、履歴に記憶される。エントリー番号のパターンに基づいて、プリフェッチ予想が行われる。例えば、エントリー番号が単調に増加しそして最後のエントリー番号付近に来た（又はそれに到達した）場合には、次の続く（より上位アドレスの）ブロックのプリフェッチが発生される。同様に、エントリー番号が単調に減少しそして最初のエントリー番号付近に来た（又はそれに到達した）場合には、その手前（より下位アドレス）のブロックのプリフェッチが発生される。アドレスが他のアドレスより高い又は低いと称されるときには、アドレスの数値が参照されることに注意されたい。
【００２９】
別の実施形態において、履歴は、プリフェッチブロックからロードされた多数のページテーブルエントリーのカウントを含む。そのカウントと、プリフェッチブロック内のページテーブルエントリーの数とに基づいて、プリフェッチブロックがほぼ尽きる又は尽きるという予想がなされる。一実施形態では、最も最近のエントリー番号も記録され、次に続く又は手前のプリフェッチブロックの予想がなされる。
【００３０】
上述したように、プリフェッチブロックのサイズは、キャッシュブロックと同じサイズである必要はない。実際に、プリフェッチブロックは、キャッシュブロックより小さいか又はキャッシュブロックより大きいサイズを含めて、必要に応じていかなるサイズでもよい。プリフェッチブロックは、選択された数のページテーブルエントリーを記憶する。ページテーブルエントリーは、物理的アドレスのサイズに基づいてサイズが変化する。例えば、一実施形態において、３２ビットの物理的アドレスは、４バイトのページテーブルエントリーで表され、そして６４ビットの物理的アドレスは、８バイトのページテーブルエントリーで表される。エントリーで表されない物理的アドレスは、種々の属性を記憶する。バーチャルアドレスタグも含む実施形態は、前記サイズより大きい。
【００３１】
変換を切り換えるためにページテーブルエントリーをソフトウェアで変更するときに、ソフトウェアは、１つ以上のＴＬＢエントリーを無効化することがある。無効化は、ソフトウェアがＭＭＵ１６Ａに取り付けられたプロセッサで実行される場合には要求インターフェイスを経て行われ、或いはソフトウェがどこかで実行される場合には外部インターフェイスからスヌープされる。ＴＬＢ３０内の指定のエントリー（１つ又は複数）を無効化するのに加えて、テーブルウオークユニット３２は、プリフェッチバッファ３４内の対応するページテーブルエントリーも無効化する。一実施形態では、テーブルウオークユニット３２は、単に、プリフェッチバッファ３４に記憶されたプリフェッチブロックを無効化する。或いは又、上述したように、プリフェッチブロックに対する有効な指示は、個々のページテーブルエントリー又はページテーブルエントリーのサブセットを無効化することができる。このような実施形態では、テーブルウオークユニット３２は、更新されているページテーブルエントリーを決定し、そしてプリフェッチバッファ３４においてページテーブルエントリー又はサブセットを無効化する。複数のプリフェッチブロックをプリフェッチバッファ３４に記憶する実施形態では、テーブルウオークユニット３２は、影響のあるプリフェッチブロックを無効にしながら、他のブロックを有効に保つ。
【００３２】
ある実施形態では、ＭＭＵ１６Ａは、インストラクションフェッチを変換し及びアクセスをロード／記憶するために個別のインストラクション及びデータＴＬＢを各々備えている。インストラクション及びデータＴＬＢは、各々、インストラクションフェッチロジック及びロード／記憶ロジックの付近に物理的に配置される。更に、ＭＭＵ１６Ａの実施形態は、非プロセッサコンポーネントとしても使用できる（例えば、直接メモリアクセス（ＤＭＡ）コントローラ、入力／出力（Ｉ／Ｏ）装置、等）。
【００３３】
図３は、バーチャルアドレススペース４０、ページテーブル２６、及び物理的アドレススペース４２を示すブロック図である。ページテーブル２６は、物理的アドレススペース４２にも記憶されるが、例示を助けるために図面中には別々に示されている。図３に示すように、ＶＡスペース４０及びＰＡスペース４２のアドレス０は、図の最上部にあり、アドレスの増加と共に、下方に進む。
【００３４】
ＶＡスペース４０には、フレームバッファ４４が示されている。このフレームバッファ４４は、ＶＡスペース４０内の複数の隣接ページを占有する。それらのページは、図３の破線間に示されており、例えば、バーチャルページ４６Ａ、４６Ｂ、４６Ｃ、４６Ｄである。フレームバッファ４４により占有されるページの数は、ページサイズ及びフレームバッファ４４のサイズに依存する。フレームバッファ４４のサイズは、スクリーンの解像度の大きさ、表示解像度におけるピクセル当たりのデータビット数、等に依存する。
【００３５】
各バーチャルページ４６は、ページテーブル２６内のページテーブルエントリー（ＰＴＥ）によって変換される。このＰＴＥは、ソフトウェアにより割り当てられ、所与の時点ではページテーブル２６において有効ではない。図３は、フレームバッファ４４に対する全てのＰＴＥがページテーブル２６において有効である時点を示している。特に、図３には、ＰＴＥ１ないしＰが示されている。ＰＴＥの規範的コンテンツが図３のＰＴＥ１に示されている（参照番号４８）。図示されたように、ＰＴＥは、バーチャルアドレスタグフィールド（ＶＡ）、物理的ページ数（ＰＰＮ）、及び種々の他の属性（ＡＴＲ）を含む。バーチャルアドレスタグは、ページテーブル２６のルックアップにより完全なバーチャルアドレスが消費されないような実施形態のために含まれる。即ち、あるアドレス変換メカニズムは、各バーチャルアドレスビット（ページオフセットを除いて）をページテーブル２６のベースアドレスと共に使用して、バーチャルアドレスのための変換を記憶するＰＴＥを位置付ける。このようなメカニズムでは、各バーチャルアドレスが１つのＰＴＥを独特に位置付け、ＶＡタグは必要とされない。他の実施形態では、バーチャルアドレスのページ部分の少なくとも幾つかがルックアップに使用されず、従って、複数のバーチャルアドレスが変換について同じＰＴＥに対するエイリアスとなる。ＶＡタグは、未使用のバーチャルアドレスビットと比較され、ルックアップが遂行される特定のバーチャルアドレスに変換が対応することを確認する。物理的ページ番号は、ページ内のアクセスの物理的アドレスを形成するためにバーチャルアドレスのページオフセット部分に連結される物理的アドレスのページ部分である。属性は、ページの他のプロパティ、例えば、キャッシュ可能性及びキャッシュ関連コントロール、特権レベル制約（例えば、ユーザ又はスーパーバイザ）、変換の有効性を指示する有効ビット、ページに対する読み取る／書き込み許可、等を指定する。
【００３６】
バーチャルページ４６Ａ、４６Ｂ及び４６Ｃとページテーブル２６のＰＴＥ１、２及び３との間の矢印で示されたように、隣接するバーチャルページがページテーブル２６内の隣接するＰＴＥを位置付ける。この振舞いは、隣接するバーチャルページがアドレスのページ部分において１つだけ互いに数字的に異なるために観察される。一般的に、ページ（又はブロック）は、隣接するページ（ブロック）間に他のページ（ブロック）がない場合には別のページ（又はブロック）に隣接する。又、隣接するページ（ブロック）は、連続とも称され、そして所与のページ（ブロック）に対して次に高い数字のアドレスにある隣接ページ（ブロック）は、次の連続ページ（ブロック）と称される。
【００３７】
物理的アドレス（ＰＡ）スペース４２において、破線（例えば、物理的ページ５０Ａ、５０Ｂ及び５０Ｃ）間に種々の物理的ページが示されている。各ＰＴＥのＰＰＮフィールドは、物理的ページの１つを指す。バーチャルページを物理的ページに指定することは、ソフトウェアのコントロールのもとで行われ、任意である。従って、ＰＴＥ１は、バーチャルページ４６Ａを物理的ページ５０Ｂへマップし、ＰＴＥ２は、バーチャルページ４６Ｂを物理的ページ５０Ａへマップし、そしてＰＴＥ３は、バーチャルページ４６Ｃを物理的ページ５０Ｃへマップする。他の実施形態では、ソフトウェアは、フレームバッファ４４のようなデータ構造の連続的バーチャルページを、物理的アドレススペース４２の連続する物理的ページへマップするように試みる。
【００３８】
上述したように、フレームバッファ４４へのあるアクセスパターンは、かなり規則的である。例えば、表示のためにフレームバッファを読み取ることは、ディスプレイハードウェアによるディスプレイスクリーンのリフレッシュに一致させるため、通常、図３に示すように、上から下へと行われる。従って、フレームバッファ４４内の１つのバーチャルページによるＴＬＢミスがあると、その後、おそらく、連続的バーチャルページに対するより多くのＴＬＢミスが生じ、ページテーブル２６内の連続的ＰＴＥにアクセスすることになる。従って、テーブルウオークユニット３２は、それがＴＬＢミスに対してＰＴＥをフェッチするときに、ＴＬＢミスに対してＰＴＥを含むＰＴＥのブロックをプリフェッチするように構成される。例えば、プリフェッチブロック５２が図３に示されており、ＰＴＥ１ないしＰを含む（但し、Ｐは、図３に示すように、３より大きな正の整数である）。例えば、バーチャルページ４６Ａに対してＴＬＢミスが生じる場合には、プリフェッチブロック５２がプリフェッチされて、プリフェッチバッファ３４に記憶される。バーチャルページ４６Ｂ、４６Ｃ及び／又は４６Ｄに対して後続のＴＬＢミスが生じる場合には、テーブルウオークユニット３２は、プリフェッチバッファ３４をチェックし、そしてプリフェッチバッファ３４内のＰＴＥ２、３及び４（図３には示さず）を見出す。従って、これらＴＬＢミスに対してメインメモリの読み取りを回避することができる。
【００３９】
範囲レジスタ３８Ａ−３８Ｒを具現化する実施形態については、フレームバッファ４４のバーチャルアドレス範囲は、範囲レジスタ３８Ａ−３８Ｒの１つ（図３に「範囲１」と表された大括弧で示された範囲１レジスタ３８Ａ）へとプログラムされる。他の範囲レジスタ３８Ｂ−３８Ｒは、テクスチャマップ、等の他の範囲へとプログラムされる。
【００４０】
図４は、ＴＬＢ３０のＴＬＢミスに応答するＭＭＵ１６Ａ（特に、テーブルウオークユニット３２）の一実施形態の動作を示すフローチャートである。即ち、ＭＭＵ１６Ａ／テーブルウオークユニット３２は、図４に示す動作を実施するように構成される。理解を容易にするためにブロックが特定の順序で示されているが、他の順序が使用されてもよい。ブロックは、ＭＭＵ１６Ａ／テーブルウオークユニット３２内の組み合わせロジックでパラレルに遂行される。ブロック、ブロックの組み合わせ、及び／又はフローチャート全体は、複数のクロックサイクルにわたってパイプライン処理される。図４のフローチャートは、ＴＬＢミスに応答する動作を示す。ＭＭＵ１６Ａ／テーブルウオークユニット３２は、２つ以上のＴＬＢミスをパラレルに処理するように構成される。更に、パイプライン型の実施形態では、ＴＬＢミスは、パイプライン処理され、従って、種々の処理段階で複数のＴＬＢミスが生じ得る。例えば、１つのＴＬＢミスがメモリからのプリフェッチブロックの返送を待機する間に、別のＴＬＢミスがプリフェッチバッファをチェックし、そしてヒットを検出することがある。
【００４１】
テーブルウオークユニット３２は、ミスとなるバーチャルアドレス、及びページテーブル２６をメインメモリシステム２０に位置付けるページテーブルベースアドレスから、ＰＴＥのアドレスを形成するように構成される（ブロック６０）。この実施形態では、ページテーブル２６は、メインメモリシステム２０の物理的アドレスに記憶され、ＰＴＥのアドレスは、物理的アドレスである。他の実施形態では、ページテーブル２６は、バーチャルアドレススペースに位置付けられ、アドレスは、バーチャルである。ページテーブル２６のアクセス性を保証しながらページテーブル２６をバーチャルにアドレッシングするためのメカニズムが知られている（例えば、ページテーブルをマッピングする単体）。あるアドレス変換メカニズムは、ページテーブルにおける複数のルックアップをハイアラーキー形態で使用する（例えば、ページテーブルベースアドレス及びバーチャルアドレスの第１部分からＰＴＥアドレスを形成し、ＰＴＥからＰＰＮを読み取り、そしてバーチャルアドレスの各部分が使用されるまで、ＰＰＮ及びバーチャルアドレスの第２部分等を使用して別のＰＴＥアドレスを形成する）。このような実施形態では、ブロック６０は、複数のルックアップを含む。テーブルウオークユニット３２は、プリフェッチバッファ３４内の各ＰＴＥエントリーをサーチする。各レベルのプリフェッチブロックがプリフェッチバッファ３４に維持されるか、又は最後のレベルのプリフェッチブロックだけが記憶される。他の実施形態では、単一レベルルックアップが使用される（例えば、ＶＡのページ部分をハッシュしてエントリーを選択し、ＶＡタグを使用し、ＶＡのページ部分の最下位ビットを使用し、ＶＡの残り部分に対してＶＡタグを使用し、ＶＡの一部分に基づいてエントリーのグループを選択し、そして複数の連続エントリーを読み取り、或いは他の任意の形態）。
【００４２】
テーブルウオークユニット３２は、プリフェッチバッファ３４をヒットについてチェックするように構成される（判断ブロック６２）。ヒットのチェックは、プリフェッチブロックの粒度で行われる。即ち、ＰＴＥのアドレスが、プリフェッチバッファエントリーをタグ付けするアドレスと比較され、プリフェッチブロックとのオフセットを定義するビットをマスクオフする。ＰＴＥがプリフェッチバッファ３４においてヒットである場合には（判断ブロック６２の「イエス」岐路）、テーブルウオークユニット３２は、ＰＴＥが首尾良く変換を与えるかどうか決定する（判断ブロック６６）ように構成される。ＰＴＥが有効でない場合、又は要求者が希望のアクセスを行うことが許されないことを属性が指示する（例えば、特権レベル違反、読み取り／書き込み違反、等）場合には、変換が不首尾となる。変換が首尾良い場合には（判断ブロック６６の「イエス」岐路）、テーブルウオークユニット３２は、プリフェッチバッファ３４からのＰＴＥを使用して、変換をＴＬＢ３０へ供給するように構成される（ブロック６４）。即ち、ＰＴＥからの変換がＴＬＢ３０へロードされる。ＴＬＢ３０における変換データのフォーマットは、ＰＴＥとは異なるものであり、テーブルウオークユニット３２は、ＴＬＢエントリーをフォーマットしそしてそのフォーマットされたエントリーをＴＬＢ３０に書き込むように構成される。ＴＬＢエントリーは、ＴＬＢエントリーからの属性（又は変換を使用するに必要なそのサブセット）、ＰＰＮ、及び変換要求に対してマッチングするためのバーチャルアドレスのページ部分の一部又は全部を含む。変換が不首尾な場合には（判断ブロック６６の「ノー」岐路）、テーブルウオークユニット３２は、エラーを信号する（ブロック６８）。エラーは、種々の実施形態において、望ましい形態（例えば、割り込み、例外、等）で信号される。その信号で、変換の欠如を取り扱うためのソフトウェアがコールされる。
【００４３】
他方、プリフェッチバッファ３４においてＰＴＥがヒットしない場合には（判断ブロック６２の「ノー」岐路）、テーブルウオークユニット３２は、ＰＴＥ読み取り要求を送信する（ブロック７０）。プリフェッチングを範囲又は形式に限定する実施形態では、ＰＴＥ読み取り要求は、ＶＡが範囲内にないか又は形式がプリフェッチ可能な形式の１つでなく、そしてテーブルウオークユニット３２が、プリフェッチバッファ３４へ返送されるデータを書き込まない場合には、単一ＰＴＥエントリーに対するものである。ＶＡが範囲内にあるか、形式がプリフェッチ可能な形式の１つであるか、又はテーブルウオークユニット３２がＰＴＥをプリフェッチブロックとしてプリフェッチする場合には、ＰＴＥ読み取り要求は、ＰＴＥを含むプリフェッチブロックに対する要求となる。テーブルウオークユニット３２は、メモリシステムからのプリフェッチブロックの受け取りを待機し、そして返送プリフェッチブロックをプリフェッチバッファに書き込む（ブロック７２）。テーブルウオークユニット３２は、種々の実施形態において、現在プリフェッチブロックをプリフェッチバッファ３４にオーバーライトするか、或いは要求者又は形式に関連した現在プリフェッチブロックをオーバーライトする。要求者／形式に対して複数のプリフェッチブロックを記憶する実施形態では、プリフェッチブロックがその要求者／形式に対する最も古いプリフェッチブロックにオーバーライトするか、最近最も使用しない（ＬＲＵ）等の交換スキーム又はその変形形態が使用されるか、或いは他の交換スキームが使用される。又、テーブルウオークユニット３２は、変換が首尾良いものであるかどうか決定し、そして適宜に、エラーを信号するか、又は変換をＴＬＢ３０にロードする（ブロック６６、６４及び６８）。
【００４４】
図４のフローチャートは、ブロック内のＰＴＥを使用するＴＬＢミスに応答してプリフェッチブロックが読み取られるという受動的なプリフェッチング実施形態を示す。他の実施形態は、プリフェッチブロック内にＰＴＥの使用の履歴を維持し、そしてプリフェッチブロックに対するプリフェッチ要求を発生するために別のＰＴＥが必要とされるときを予想する。即ち、プリフェッチブロック内のいずれかのＰＴＥが必要となる前にプリフェッチブロックがプリフェッチされる。
【００４５】
図５は、能動的なプリフェッチスキームとしてＴＬＢ３０におけるＴＬＢミスに応答するＭＭＵ１６Ａ（特に、テーブルウオークユニット３２）の一実施形態の動作を示すフローチャートである。即ち、ＭＭＵ１６Ａ／テーブルウオークユニット３２は、図５に示す動作を実施するように構成される。理解を容易にするためにブロックが特定の順序で示されているが、他の順序が使用されてもよい。ブロックは、ＭＭＵ１６Ａ／テーブルウオークユニット３２内の組み合わせロジックでパラレルに遂行される。ブロック、ブロックの組み合わせ、及び／又はフローチャート全体は、複数のクロックサイクルにわたってパイプライン処理される。図５のフローチャートは、ＴＬＢミスに応答する動作を示す。ＭＭＵ１６Ａ／テーブルウオークユニット３２は、２つ以上のＴＬＢミスをパラレルに処理するように構成される。更に、パイプライン型の実施形態では、ＴＬＢミスは、パイプライン処理され、従って、種々の処理段階で複数のＴＬＢミスが生じ得る。例えば、１つのＴＬＢミスがメモリからのプリフェッチブロックの返送を待機する間に、別のＴＬＢミスがプリフェッチバッファをチェックし、そしてヒットを検出することがある。
【００４６】
図４と同様に、図５の実施形態は、ＰＴＥアドレスを形成し、プリフェッチバッファ３４においてヒットをチェックし、プリフェッチバッファ３４においてＰＴＥアドレスがミスであった場合にＰＴＥ読み取り要求を発生し、受け取ったプリフェッチブロックをプリフェッチバッファ３４に書き込み、変換が首尾良く行われたかどうか決定し、そして変換をＴＬＢ３０へロードするか又はエラーを信号する（ブロック６０、６２、６４、６６、６８、７０及び７２）。
【００４７】
更に、テーブルウオークユニット３２は、プリフェッチブロックをプリフェッチバッファ３４に書き込むときにプリフェッチブロックに対応する履歴を初期化するように構成される（ブロック８０）。履歴は、維持される履歴データに基づいて異なる形態で初期化される。例えば、履歴がプリフェッチブロックへの最後のＱ個のアクセスの指示（例えば、プリフェッチブロックの最初のエントリーに対するエントリー番号）である場合には、現在要求のエントリー番号を最も最近の要求として記録しそして他のエントリー番号をクリアすることにより履歴が初期化される。履歴がカウントの場合には、カウントがゼロにセットされる。或いは又、要求されたＰＴＥがプリフェッチブロックの一端にない場合には、カウントがプリフェッチブロック内のＰＴＥのエントリー番号に初期化される。そのような初期化は、例えば、プリフェッチブロックの最初の幾つかのＰＴＥがＴＬＢヒットである場合に有用であり、従って、要求されなくてもよい。別の実施形態では、初期化は、エントリー番号に依存する。エントリーがプリフェッチブロックの下位端に最も近い場合には、アドレスが数値的に増加する順に進行すると仮定すれば、カウントは、エントリー番号へ初期化される。エントリーがプリフェッチブロックの上位端に最も近い場合には、アドレスが数値的に減少する順に進行すると仮定すれば、カウントは、Ｐ−エントリー番号へ初期化される（Ｐは、プリフェッチブロックにおけるＰＴＥの数である）。
【００４８】
プリフェッチバッファにおけるヒットに応答して、テーブルウオークユニット３２は、履歴を更新するように構成される（ブロック８２）。例えば、テーブルウオークユニット３２は、ＰＴＥのエントリー番号を最も最近のアクセスとして挿入し、そしてＱ個の最も最近のエントリー番号が履歴として記憶される場合には他のエントリー番号をリストに沿って下方に移動させる。履歴がカウントの場合には、テーブルウオークユニット３２は、カウントを増加するように構成される。他の実施形態では、他の形態の履歴が実施されてもよい。
【００４９】
テーブルウオークユニット３２は、更新された履歴を検査して、予想される次のブロックに対してプリフェッチ要求を発生すべきであることを履歴が指示するかどうか決定するように構成される（判断ブロック８４）。予想される次のブロックは、ＰＴＥがブロック内で使用されている方向に基づいて現在ブロックから次に続くブロックであるか又はその直前のブロックである。プリフェッチ要求を発生すべきであるとテーブルウオークユニット３２が決定する場合には、テーブルウオークユニット３２は、プリフェッチ要求を発生するように構成される（ブロック８６）。
【００５０】
図４及び５は、一般的に単一のプリフェッチブロックを参照した。複数のプリフェッチブロックがプリフェッチバッファ３４に記憶される実施形態では、プリフェッチバッファヒットのサーチが全てのプリフェッチブロックにわたって適用される。或いは又、サーチが、同じ要求者又はアドレス範囲に関連したプリフェッチブロックのみに制約されてもよい。それに加えて、２つ以上のプリフェッチブロックが所与の要求者に関連される場合には、新たなプリフェッチブロックが、必要に応じて、所与の要求者に関連した最も古いプリフェッチブロック又は最近最も使用されないブロックにオーバーライトする。
【００５１】
図６及び７は、履歴の２つの実施形態について図５のブロック８２、８４及び８６を更に詳細に示す。組み合わされたときに、ブロック８２、８４及び８６の１つを実施するブロックは、それに対応する参照番号（８２、８４または８６）の後に文字を付したもので表される。図６の実施形態は、ＴＬＢ３０へ変換を供給するのに使用されたＱ個の最も最近のＰＴＥ（即ち、Ｑ個の最も最近アクセスされたＰＴＥ）のリストとして履歴を具現化するものである。このリストは、プリフェッチブロック内の最下位アドレスのＰＴＥを、エントリー番号により、エントリー０として番号付けし、そして数字的に増加するアドレスで、プリフェッチブロック内の最上位アドレスのエントリー（エントリーＰ−１）まで増加する。図７の実施形態は、ＴＬＢ３０へ変換を供給するのに使用されたＰＴＥの数のカウントとして履歴を具現化する。図６及び７の理解を容易にするためにブロックが特定の順序で示されているが、他の順序が使用されてもよい。ブロックは、ＭＭＵ１６Ａ／テーブルウオークユニット３２内の組み合わせロジックでパラレルに遂行される。ブロック、ブロックの組み合わせ、及び／又はフローチャート全体は、複数のクロックサイクルにわたってパイプライン処理される。
【００５２】
図６において、規範的な履歴９０が、ＰＴＥエントリー番号のリストとして示されている。ＰＴＥエントリー番号１は、最も古い（最近最もアクセスされない）ＰＴＥエントリー番号である。ＰＴＥエントリー番号２は、２番目に最も古いＰＴＥエントリー番号であり、等々、ＰＴＥエントリー番号Ｑまで続く。履歴９０は、リストの論理的ビューである。リストの物理的構成は、異なってもよい。例えば、新たなエントリー番号が追加されるときにリスト内のＰＴＥエントリー番号をシフトするのではなく、新たなエントリー番号が最も古いエントリー番号に置き換わり、そして最も新しいエントリー番号を指すポインタが記憶される。
【００５３】
図６に示したように、履歴の更新（図５のブロック８２）は、履歴９０における最も古いＰＴＥエントリー番号を、ＴＬＢ３０に現在ロードされているＰＴＥのエントリー番号に置き換えることを含む（ブロック８２Ａ）。判断ブロック８４を形成するブロックは、判断ブロック８４Ａ−８４Ｃ及びブロック８４Ｄ−８４Ｅを含む。テーブルウオークユニット３２は、最も最近のＱ個のＰＴＥアクセスにパターンが存在するかどうか決定する（判断ブロック８４Ａ）。認識できるパターンがない場合には（判断ブロック８４Ａの「ノー」岐路）、テーブルウオークユニット３２は、プリフェッチ要求を発生しない。認識できるパターンがある場合には、そのパターンが単調に増加する（例えば、各エントリー番号がその手前のエントリー番号より大きい）か、又は単調に減少する（各エントリー番号がその手前のエントリー番号より小さい）ものである。パターンが単調に増加し（判断ブロック８４Ａの「イエス、増加」岐路）、そして現在エントリーがプリフェッチブロック内の最上位アドレスエントリー（例えば、エントリーＰ−１）の付近にある（判断ブロック８４Ｂの「イエス」岐路）場合には、テーブルウオークユニット３２は、プリフェッチされるべき次のブロックが現在プリフェッチブロック＋１であることを予想する（ブロック８４Ｅ）。即ち、プリフェッチされるべき次のブロックは、現在ブロックに対して次に続くプリフェッチブロックである（次に数字的に高いプリフェッチブロックアドレスにおける）。テーブルウオークユニット３２は、予想されるプリフェッチブロックに対してプリフェッチ要求を発生するように構成される（ブロック８６Ａ）。現在エントリーが最上位アドレスエントリーの付近にない（判断ブロック８４Ｂの「ノー」岐路）場合には、プリフェッチが予想されない。同様に、パターンが単調に減少し（判断ブロック８４Ａの「イエス、減少」岐路）、そして現在エントリーがプリフェッチブロック内の最下位アドレスエントリー（例えば、エントリー０）の付近にある（判断ブロック８４Ｃの「イエス」岐路）場合には、テーブルウオークユニット３２は、プリフェッチされるべき次のブロックが現在プリフェッチブロック−１であることを予想する（ブロック８４Ｄ）。即ち、プリフェッチされるべき次のブロックは、現在ブロックに対して手前のプリフェッチブロックである（次に数字的に低いプリフェッチブロックアドレスにおける）。テーブルウオークユニット３２は、予想されるプリフェッチブロックに対してプリフェッチ要求を発生するように構成される（ブロック８６Ａ）。現在エントリーが最下位アドレスエントリーの付近にない（判断ブロック８４Ｃの「ノー」岐路）場合には、プリフェッチが予想されない。
【００５４】
判断ブロック８４Ｂ及び８４Ｃは、現在エントリーが最上位アドレスエントリー又は最下位アドレスエントリーの「付近」にあることをチェックし、次のブロックを早期に予想すると共に、ブロック内の最初のＴＬＢミスの前にブロックをプリフェッチする。従って、「付近」にあるという決定は、メモリ内の次のプリフェッチブロックにアクセスするための待ち時間、及び現在ブロックの残りのＰＴＥエントリーがＴＬＢミスにより消費されるまでの待ち時間に依存する。ある実施形態では、必要とされるエントリーにオーバーライトするのを回避するために、テーブルウオークユニットは、現在ブロックのエントリーが消費されるまで（例えば、「付近」が「等しく」になるまで）プリフェッチ要求を発生しない。他の実施形態において、あるエントリーは、それがエントリー番号の１つ以上のエントリー内にある（例えば、１つ又は２つのエントリーだけ離れている）場合に別のエントリー「付近」にあるとされる。あるケースでは、パターンは、エントリーがスキップされる（例えば、１つおきのエントリーが読み取られる）ことを指示し、そして「付近」にあるとの決定は、パターンを考慮して行われる。それに加えて、同じ要求者に対して２つ以上のプリフェッチブロックが維持される（新たにプリフェッチされるブロックが現在ブロックに置き換わらないように）場合には、「付近」にあるとの決定が、より柔軟なものとなる。
【００５５】
エントリー０及びＰ−１は、プリフェッチブロックの「端」であると定義される。即ち、エントリー０より下のプリフェッチブロック内の下位アドレスにはそれ以上エントリーが存在せず、又、エントリーＰ−１を越えるプリフェッチブロック内の上位アドレスにもそれ以上のエントリーは存在しない。従って、現在エントリーがブロックの端付近にあるときには、テーブルウオークユニット３２は、その端に隣接するブロック（例えば、エントリー０については手前のブロック又はエントリーＰ−１については次の続くブロック）に対してプリフェッチ要求を発生する。
【００５６】
全体的に、判断ブロック８４Ａ、８４Ｂ及び８４Ｃの「ノー」岐路は、図５の判断ブロック８４の「ノー」岐路と同等である。ブロック８４Ｄ及び８４Ｅからの退出は、図５の判断ブロック８４の「イエス」岐路と同等である。ブロック８２Ａ及び８６Ａは、各々、図５のブロック８２及び８６と同等である。
【００５７】
図７において、規範的履歴９２は、カウントとして示されている。カウントは、図５を参照して上述したように初期化される。図７に示すように、履歴の更新（図５のブロック８２）は、カウントを増加することを含む（ブロック８２Ｂ）。判断ブロック８４を形成するブロックは、判断ブロック８４Ｆ−８４Ｇ及びブロック８４Ｈ−８４Ｉを含む。テーブルウオークユニット３２は、カウントがＰ−１に等しいかどうか決定し、これは、現在プリフェッチブロックのＰＴＥエントリーが消費されたことを指示する（判断ブロック８４Ｆ）。もしそうでない場合には（判断ブロック８４Ｆの「ノー」岐路）、テーブルウオークユニット３２は、プリフェッチ要求を発生しない。もしそうであれば（判断ブロック８４Ｆの「イエス」岐路）、現在エントリーは、０の付近又はＰ−１の付近である。現在エントリーが０の付近である場合には（判断ブロック８４Ｇの「イエス」岐路）、テーブルウオークユニット３２は、プリフェッチされるべき次のブロックが現在プリフェッチブロック−１であることを予想する（ブロック８４Ｈ）。テーブルウオークユニット３２は、予想されるプリフェッチブロックに対してプリフェッチ要求を発生するように構成される（ブロック８６Ｂ）。現在エントリーがエントリーＰ−１の付近である場合には（判断ブロック８４Ｇの「ノー」岐路）、テーブルウオークユニット３２は、プリフェッチされるべき次のブロックが現在プリフェッチブロック＋１であることを予想する（ブロック８４Ｉ）。テーブルウオークユニット３２は、予想されるプリフェッチブロックに対してプリフェッチ要求を発生するように構成される（ブロック８６Ｂ）。
【００５８】
図７の実施形態は、カウントがＰ−１に等しいことについてチェックするが、他の実施形態では、カウントがＰ−１付近にあることについてチェックされてもよい。この場合も、付近であることの測定は、前記説明と同様に、ブロックをプリフェッチするための待ち時間、及び現在プリフェッチブロックの残りのエントリーを消費するのに予想される待ち時間に依存する。
【００５９】
判断ブロック８４Ｆの「ノー」岐路は、図５の判断ブロック８４の「ノー」岐路と同等である。ブロック８４Ｈ及び８４Ｉからの退出は、図５の判断ブロック８４の「イエス」岐路と同等である。ブロック８２Ｂ及び８６Ｂは、各々、図５のブロック８２及び８６と同等である。
【００６０】
ある実施形態では、特に、プリフェッチバッファ３４が、プリフェッチされたＰＴＥを記憶するので、ＰＴＥをキャッシュ（例えば、図１のＬ２キャッシュ１２及び２４、Ｌ１キャッシュ（図示せず）、等）にキャッシュ記憶することが効率的でない。従って、一実施形態では、キャッシュは、ＰＴＥ読み取りに対するデータのキャッシュ記憶を禁止するが、一般に、他のデータはキャッシュ記憶する（それがキャッシュ不能とマークされない限り）。図８は、ＰＴＥ読み取りのキャッシュ記憶を禁止するためのＬ２キャッシュ１２の一実施形態の動作を示すフローチャートである。Ｌ２キャッシュ２４、Ｌ１キャッシュ、Ｌ３キャッシュ、等を含む他のキャッシュも同様である。Ｌ２キャッシュ１２は、図８に示す動作を実施するように構成される。理解を容易にするためにブロックが特定の順序で示されているが、他の順序が使用されてもよい。ブロックは、Ｌ２キャッシュ１２内の組み合わせロジックでパラレルに遂行される。ブロック、ブロックの組み合わせ、及び／又はフローチャート全体は、複数のクロックサイクルにわたってパイプライン処理される。図８のフローチャートは、キャッシュアクセスに応答する動作を示す。Ｌ２キャッシュ１２は、２つ以上のアクセスをパラレルに処理するように構成される。更に、パイプライン型実施形態では、キャッシュアクセスがパイプライン処理され、従って、種々の処理段階で複数のキャッシュアクセスが生じ得る。
【００６１】
Ｌ２キャッシュは、要求アドレスにおけるヒットをチェックする（判断ブロック１００）。要求がヒットである場合には（判断ブロック１００の「イエス」岐路）、Ｌ２キャッシュは、ヒットであるキャッシュラインから要求者へデータを供給する（ブロック１０２）。要求がミスである場合には（判断ブロック１００の「ノー」岐路）、Ｌ２キャッシュは、要求がＰＴＥ読み取りであるかどうか決定する（判断ブロック１０４）。ある実施形態では、要求と共にＬ２キャッシュへ供給される要求者ＩＤは、要求がＰＴＥ読み取りであることを指示する。或いは又、要求形式情報又はサイドバンドシグナリングを使用して、要求がＰＴＥ読み取りであるかどうか指示してもよい。要求がＰＴＥ読み取りであること又はそうでないことを通信するための任意のメカニズムが使用されてもよい。要求がＰＴＥ読み取りである場合には（判断ブロック１０４の「イエス」岐路）、Ｌ２キャッシュは、キャッシュブロックを割り当てずに要求を次のレベルへパスし、データのキャッシュ記憶を禁止する（ブロック１０６）。要求がＰＴＥ読み取りでない場合には（判断ブロック１０４の「ノー」岐路）、Ｌ２キャッシュは、キャッシュブロック記憶位置を割り当てて、ミスを記憶し、次のレベルへ充填を発生する（ブロック１０８）。
【００６２】
図９は、プリフェッチ動作に対してＭＭＵ１６Ａをプログラムするコントロールコードの一実施形態の動作を示すフローチャートである。理解を容易にするためにブロックが特定の順序で示されているが、他の順序が使用されてもよい。コントロールコードを形成するためのインストラクションは、システムが図９に示す動作を遂行するようにさせるためにプロセッサにおいて実行される。
【００６３】
コントロールコードは、ＭＭＵプリフェッチングから利益が得られるメモリの領域を決定する（ブロック１１０）。例えば、コードは、フレームバッファ位置、テクスチャマップ位置、等を識別する。又、コードは、プリフェッチングから利益が得られる要求形式も識別し、そしてそれらの要求形式に関連したアドレス範囲を識別する。コントロールコードは、識別された範囲を範囲レジスタ３８Ａ−３８Ｒに書き込む（ブロック１１２）。
【００６４】
システム及びコンピュータアクセス可能な媒体
図１０は、システム１５０の一実施形態のブロック図である。このシステム１５０は、図１に示されたシステムの別の実施形態である。ここに示す実施形態では、システム１５０は、１つ以上の周辺装置１５４及び外部メモリ１５８に結合された集積回路１５２の少なくとも１つのインスタンスを含む。集積回路１５２は、一実施形態において、ＧＰＵ１０、Ｌ２キャッシュ１２、ＭＣＭＢ１４、ＣＰＵ２２、Ｌ２キャッシュ２４、及びメインメモリシステム２０のためのメモリコントローラを含む。外部メモリ１５８は、メインメモリシステム２０からのメモリを含む。集積回路１５２へ供給電圧を供給すると共に、メモリ１５８及び／又は周辺装置１５４へ１つ以上の供給電圧を供給する電源１５６も設けられる。ある実施形態では、集積回路１５２の２つ以上のインスタンスが含まれる（そして２つ以上の外部メモリ１５８も含まれる）。
【００６５】
周辺装置１５４は、システム１５０の形式に基づいて望ましい回路を含む。例えば、一実施形態では、システム１５０は、移動装置（例えば、パーソナルデジタルアシスタント（ＰＤＡ）、スマートホン、等）であり、そして周辺装置１５４は、ＷｉＦｉ、ブルーツース、セルラー、グローバルポジショニングシステム、等の種々の形式のワイヤレス通信のための装置を含む。又、周辺装置１５４は、ＲＡＭ記憶装置、ソリッドステート記憶装置又はディスク記憶装置を含めて、付加的な記憶装置も含む。周辺装置１５４は、タッチディスプレイスクリーン又はマルチタッチディスプレイスクリーンを含むディスプレイスクリーン、キーボード又は他の入力装置、マイクロホン、スピーカ、等のユーザインターフェイス装置を含む。他の実施形態では、システム１５０は、任意の形式のコンピューティングシステム（例えば、デスクトップパーソナルコンピュータ、ラップトップ、ワークステーション、ネットトップ、等）でよい。
【００６６】
図１１は、コンピュータアクセス可能な記憶媒体２００のブロック図である。一般的に述べると、コンピュータアクセス可能な記憶媒体は、インストラクション及び／又はデータをコンピュータに与えるために使用中にコンピュータによってアクセスできる記憶媒体を含む。例えば、コンピュータアクセス可能な記憶媒体は、磁気又は光学媒体、例えば、ディスク（固定又は除去可能な）、テープ、ＣＤ−ＲＯＭ、又はＤＶＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、ＤＶＤ−Ｒ、ＤＶＤ−ＲＷのような記憶媒体を含む。記憶媒体は、更に、揮発性又は不揮発性メモリ媒体、例えば、ＲＡＭ（例えば、同期ダイナミックＲＡＭ（ＳＤＲＡＭ）、Ｒａｍｂｕｓ  ＤＲＡＭ（ＲＤＲＡＭ）、スタティックＲＡＭ（ＳＲＡＭ）、等）、ＲＯＭ、フラッシュメモリ、又はユニバーサルシリアルバス（ＵＳＢ）インターフェイス、フラッシュメモリインターフェイス（ＦＭＩ）、シリアル周辺インターフェイス（ＳＰＩ）のような周辺インターフェイスを経てアクセス可能な不揮発性メモリ（例えば、フラッシュメモリ）、等を含む。記憶媒体は、マイクロエレクトロメカニカルシステム（ＭＥＭＳ）を含むと共に、ネットワーク及び／又はワイヤレスリンクのような通信媒体を経てアクセス可能な記憶媒体を含む。図１１のコンピュータアクセス可能な記憶媒体２００は、図９を参照して上述したコードを含むコントロールコード２０２を記憶する。一般的に、コンピュータアクセス可能な記憶媒体２００は、実行時に、図９に示す動作の一部分又は全部を実施するインストラクションのセットを記憶する。キャリア媒体は、コンピュータアクセス可能な記憶媒体及び送信媒体、例えば、ワイヤード又はワイヤレス送信を含む。
【００６７】
前記開示が完全に明らかになると、種々の変更や修正が当業者に明らかであろう。そのような全ての変更や修正は、特許請求の範囲に包含されることが意図される。
【符号の説明】
【００６８】
１０Ａ−１０Ｎ：グラフィック処理ユニット（ＧＰＵ）
１２Ａ−１２Ｎ：レベル２（Ｌ２）キャッシュ
１４Ａ、Ｂ：マルチコアマネージメントブロック（ＭＣＭＢ）
１６Ａ−１６Ｎ：メモリマネージメントユニット（ＭＭＵ）
１８Ａ−１８Ｍ：ＭＭＵ
２０：メインメモリシステム
２２Ａ−２２Ｍ：ＣＰＵ
２４Ａ−２４Ｍ：Ｌ２キャッシュ
２６：ページテーブル
３０：ＴＬＢ
３２：テーブルウオークユニット
３４：プリフェッチバッファ
３８Ａ−３８Ｒ：レジスタ
４０：バーチャルアドレススペース
４２：物理アドレススペース
４４：フレームバッファ
４６：バーチャルページ
【図１】
0005580894.tif 000002
【図２】
0005580894.tif 000003
【図３】
0005580894.tif 000004
【図４】
0005580894.tif 000005
【図５】
0005580894.tif 000006
【図６】
0005580894.tif 000007
【図７】
0005580894.tif 000008
【図８】
0005580894.tif 000009
【図９】
0005580894.tif 000010
【図１０】
0005580894.tif 000011
【図１１】
0005580894.tif 000012