(57)【特許請求の範囲】
【請求項１】
複数のアドレス変換を記憶するように構成された変換索引バッファ（ＴＬＢ）（７０）と、
前記ＴＬＢに結合されて、該ＴＬＢ内でミスになった受信変換要求を記憶するように構成されたミスキュー（６４）と、
を備え、前記ミスキューが複数のエントリを含み、該複数のエントリの少なくともいくつかの各々が、それぞれのアドレス変換要求及び対応するポインタ（３１１）を記憶するように構成され、所与のエントリの前記対応するポインタが、前記所与のエントリ内の前記それぞれのアドレス変換要求の処理順序制約と同じ処理順序制約を有する別のそれぞれのアドレス変換要求を記憶する前記ミスキュー内の別のエントリを識別し、
前記ミスキューに結合されて、前記受け取ったアドレス変換要求を処理するように構成されるとともに、各それぞれのアドレス変換要求を、この各それぞれのアドレス変換要求の識別子に依存する順序で処理するように構成された制御ユニット（６０）をさらに備える、
ことを特徴とする変換ユニット（２６）。
【請求項２】
前記同じ処理順序制約を有する前記それぞれのアドレス変換要求の１又はそれ以上が仮想ミスキュー（ＶＭＱ）に属する、
ことを特徴とする請求項１に記載の変換ユニット。
【請求項３】
各ＶＭＱが、最も若いそれぞれのアドレス変換要求から開始して、最も古いそれぞれのアドレス変換要求で終了する、
ことを特徴とする請求項２に記載の変換ユニット。
【請求項４】
各それぞれのアドレス変換要求が、前記ポインタによって同じＶＭＱ内の次に古いそれぞれのアドレス変換にリンクされる、
ことを特徴とする請求項２に記載の変換ユニット。
【請求項５】
所与のＶＭＱの最も若いそれぞれのアドレス変換要求に関連する前記エントリが、末尾識別子（３０７）をさらに含む、
ことを特徴とする請求項２に記載の変換ユニット。
【請求項６】
所与のＶＭＱの最も古いそれぞれのアドレス変換要求の前記ポインタが、前記所与のＶＭＱの前記最も古いそれぞれのアドレス変換要求を記憶する前記ミスキュー内のエントリを識別する、
ことを特徴とする請求項２に記載の変換ユニット。
【請求項７】
前記制御ユニットが、各ＶＭＱの各変換要求を複数の状態のうちの１つに維持するように構成され、前記制御ユニットが、所与の変換要求に対応するアドレス変換が前記ＴＬＢに記憶された旨の通知を受け取ったことに応答して、前記所与の変換要求を待機状態に移行させるようにさらに構成される、
ことを特徴とする請求項２に記載の変換ユニット。
【請求項８】
前記ミスキューに結合されて、前記待機状態にある全ての変換要求の中から最も古い変換要求を各サイクルの再試行のために選択するように構成されたアービタ（５２）をさらに備える、
ことを特徴とする請求項７に記載の変換ユニット。
【請求項９】
各エントリが、有効なそれぞれのアドレス変換要求を記憶する個々のその他のエントリと比較した前記ミスキュー内の各エントリの年齢を示す年齢インジケータ（３０５）をさらに含む、
ことを特徴とする請求項１に記載の変換ユニット。
【請求項１０】
前記ミスキューに結合されて、特定のそれぞれのアドレス変換要求に対応するアドレス変換が前記ＴＬＢに記憶された旨の通知を受け取ったことに応答して、前記特定のそれぞれのアドレス変換要求を再試行のために選択するように構成されたアービタ（５２）をさらに備える、
ことを特徴とする請求項９に記載の変換ユニット。
【請求項１１】
前記アービタが、対応するアドレス変換が前記ＴＬＢに記憶された複数のそれぞれのアドレス変換要求の中から、前記複数のそれぞれのアドレス変換要求の各々の前記年齢インジケータに基づいて選択を行うように構成される、
ことを特徴とする請求項１０に記載の変換ユニット。
【請求項１２】
１又はそれ以上の装置と、
請求項１から請求項１１のいずれかに記載の変換ユニット（２６）と、
を備えることを特徴とするシステム（１０）。
【請求項１３】
変換索引バッファ（ＴＬＢ）（７０）が、複数のアドレス変換を記憶するステップと、
ミスキュー（６４）が、前記ＴＬＢ内でミスになった受信アドレス変換要求を記憶するステップと、
を含み、前記ミスキューが複数のエントリを含み、該複数のエントリの少なくともいくつかの各々が、それぞれのアドレス変換要求及び対応するポインタ（３１１）を記憶し、所与のエントリの前記対応するポインタが、前記所与のエントリ内の前記それぞれのアドレス変換要求の処理順序制約と同じ処理順序制約を有する別のそれぞれのアドレス変換要求を記憶する前記ミスキュー内の別のエントリを識別し、
制御ユニット（６０）が、各それぞれのアドレス変換要求を、この各それぞれのアドレス変換要求の識別子に依存する順序で処理するステップをさらに含む、
ことを特徴とする方法。
【請求項１４】
前記同じ処理順序制約を有する前記それぞれのアドレス変換要求の１又はそれ以上が仮想ミスキュー（ＶＭＱ）に属する、
ことを特徴とする請求項１３に記載の方法。
【請求項１５】
各ＶＭＱにおいて、最も若いそれぞれのアドレス変換要求に新たなそれぞれのアドレス変換要求を加えるステップをさらに含み、該ステップが、前記新たなそれぞれのアドレス変換要求のポインタが前記最も若いそれぞれのアドレス変換要求を識別するようにし、前記新たなそれぞれのアドレス変換要求の第２の識別子が前記新たなそれぞれのアドレス変換要求を新たな最も若い変換要求として識別するようにすることによって行われる、
ことを特徴とする請求項１４に記載の方法。
【請求項１６】
前記ミスキュー内の個々のその他のエントリと比較した前記ミスキュー内の各エントリの年齢を示すためのインジケータ（３０５）を保持するステップをさらに含む、
ことを特徴とする請求項１３に記載の方法。
【請求項１７】
準備状態にある全てのそれぞれのアドレス変換要求の中から、最も古いそれぞれのアドレス変換要求を各サイクルの再試行のために選択するステップをさらに含む、
ことを特徴とする請求項１６に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デジタル処理システムに関し、より具体的には、このようなシステムのアドレス変換機構に関する。
【背景技術】
【０００２】
複数のメモリ要求元、及びこれらの要求元により共有されるメモリを含むシステムでは、アドレス変換が使用されることが多い。これらの要求元は、プロセッサ、様々な周辺装置の代わりに動作する直接メモリアクセス（ＤＭＡ）ユニット、及び／又は周辺装置自体を含むことができる。アドレス変換を使用して、異なる要求元が互いのメモリへのアクセスに干渉しないように保証すること、（必要に応じてメモリに入出力されるデータをページングするためのソフトウェアとともに）物理メモリ内で実際に利用できるよりも大きな仮想メモリを提供すること、メモリの動的割り当てを単純化する（実メモリの散在するページが仮想メモリの連続ブロックに見えるようにする）ことなどができる。従って、所与の要求元は、メモリ要求を仮想アドレスで送信することができ、アドレス変換機構が、このアドレスを対応する物理アドレスに変換することができる。
【０００３】
通常、仮想アドレスから物理アドレスへのアドレス変換は、メモリ内の一連のソフトウェア管理されたページテーブルに記憶される。正しい変換を特定するために、仮想アドレスを、（１又は複数の）ページテーブルエントリを読み出すための（ページテーブルのベースアドレスに関する）インデックスとして使用することができる。アドレス変換スキームの中には、階層的又は非階層的に複数のページテーブル読み出しを使用して変換を特定するものもある。単一のページテーブル読み出しを使用して変換を特定できるスキームもある。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
変換を行うための待ち時間は、最近使用した変換をキャッシュする変換索引バッファ（ＴＬＢ）を設け、要求元からのメモリ要求に応答してこれに高速アクセスできるようにすることにより短縮することができる。しかしながら、一部の従来の変換機構では、ＴＬＢを複数の要求元の間で共有できるので、１つの変換にＴＬＢミスがあると、別の関係ない変換要求の待ち時間が増加することがある。システムによっては、この種の待ち時間を受け入れられないものもある。
【課題を解決するための手段】
【０００５】
複数の仮想キューを含むアドレス変換ユニットの様々な実施形態を開示する。１つの実施形態では、変換ユニットが、変換索引バッファ（ＴＬＢ）、ミスキュー（miss queue）、及び制御ユニットを含む。ＴＬＢは、複数のアドレス変換を記憶するように構成することができる。ミスキューは、ＴＬＢ内でミスになった受信アドレス変換要求を記憶するように構成することができる。ミスキューは、複数のエントリを含む。少なくともいくつかのエントリの各々を、それぞれのアドレス変換要求及び対応する識別子（ポインタ）を記憶するように構成することができる。所与のエントリの対応する識別子は、所与のエントリ内のそれぞれのアドレス変換要求の処理順序制約と同じ処理順序制約を有する次に古い変換要求などの別のそれぞれのアドレス変換要求を記憶するミスキュー内の別のエントリを識別する。例えば、同じ処理順序制約を有し、識別子を介してともにリンクされたアドレス変換が同じ仮想ミスキューに属する。制御ユニットは、受け取ったアドレス変換要求を各それぞれのアドレス変換要求の識別子に依存する順序で処理するように構成することができる。
【図面の簡単な説明】
【０００６】
【図１】１又はそれ以上のアドレス変換ユニットを含むシステムの一実施形態のブロック図である。
【図２】図１に示すアドレス変換ユニットの一実施形態のブロック図である。
【図３】図２に示すアドレス変換ユニットのミスキューの一実施形態のブロック図である。
【図４Ａ】図２及び図３のミスキューの実施形態における様々なエントリを示す図である。
【図４Ｂ】図２〜図４Ａのミスキューの実施形態における３つの仮想キューのリンクされたエントリを示すアーキテクチャ図である。
【図５】図２及び図３のミスキューの実施形態におけるエントリの動作状態を示す状態図である。
【図６】図２及び図３に示すアドレス変換ユニットの一実施形態の動作を示すフロー図である。
【発明を実施するための形態】
【０００７】
本発明は、様々な修正及び代替形態が可能であるが、図面には本発明の特定の実施形態を一例として示し、本明細書ではこれらについて詳細に説明する。しかしながら、図面及びこれに関する詳細な説明は、開示する特定の形態に本発明を限定することを意図するものではなく、むしろ添付の特許請求の範囲によって定められる本発明の思想及び範囲内にある全ての修正、同等物及び代替手段を含むことを意図するものであると理解されたい。本明細書で使用する表題は構成のみを目的とするものであり、説明の範囲を限定するために使用することを意味するものではない。本出願を通じて使用する「ｍａｙ（〜できる）」という用語は、強制的な意味の（すなわち、ｍｕｓｔを意味する）ものではなく許容的な意味（すなわち、可能性を有することを意味する）において使用される。同様に、「ｉｎｃｌｕｄｅ」、「ｉｎｃｌｕｄｉｎｇ」、及び「ｉｎｃｌｕｄｅｓ」という用語は、限定するわけではないがｉｎｃｌｕｄｉｎｇを意味する。
【０００８】
様々なユニット、回路、又はその他の構成要素について、（１又は複数の）タスクを実行する「ように構成された（ｃｏｎｆｉｇｕｒｅｄ  ｔｏ）」と記載することがある。このような文脈では、「ように構成された（ｃｏｎｆｉｇｕｒｅｄ  ｔｏ）」という表現は、動作中に（１又は複数の）タスクを実行する「回路を有する」ことを大まかに意味する構造の包括的な記述である。従って、ユニット／回路／構成要素が現在オンでない場合でも、これらのユニット／回路／構成要素を、タスクを実行するように構成することができる。通常、「ように構成された（ｃｏｎｆｉｇｕｒｅｄ  ｔｏ）」に相当する構造を成す回路は、ハードウェア回路を含むことができる。同様に、説明の都合上、様々なユニット／回路／構成要素について、（１又は複数の）タスクを実行する、と記載することもある。このような記載は、「ように構成された（ｃｏｎｆｉｇｕｒｅｄ  ｔｏ）」という表現を含むと解釈すべきである。１又はそれ以上のタスクを実行するように構成されたユニット／回路／構成要素について記述することにより、このユニット／回路／構成要素のために米国特許法第１１２条第６項の解釈を引き合いに出すことを明示的に意図するものではない。
【０００９】
ここで図１を参照すると、システム１０の一実施形態のブロック図を示している。システム１０は、カラー液晶ディスプレイ（ＣＬＣＤ）ディスプレイコントローラ１２、ビデオエンコーダ１４、ミキサ１６、スケーラ１８、ビデオデコーダ２０、シェーダ２２、インターフェイスユニット２４、アドレス変換ユニット２６、システムインターフェイスユニット（ＳＩＵ）２８、１又はそれ以上の高性能周辺機器３０、直接メモリアクセス（ＤＭＡ）ユニット３２、１又はそれ以上のその他の周辺機器３４、第２のアドレス変換ユニット３６、１又はそれ以上の写真周辺機器３８、プロセッサ４０、及びメモリコントローラ４２を含む。
【００１０】
図１に示すように、ＣＬＣＤディスプレイコントローラ１２、ビデオエンコーダ１４、ミキサ１６、スケーラ１８、ビデオデコーダ２０、及びシェーダ２２は、インターフェイスユニット２４に結合され、これがさらにシステムインターフェイスユニット２８に結合される。図示の実施形態では、インターフェイスユニット２４が、図１に示すようなアドレス相互接続１１、データ相互接続１３、及び書き込み応答相互接続１５を含む相互接続を介してシステムインターフェイスユニット２８に結合される。アドレス変換ユニット２６は、アドレス相互接続１１に結合され、インターフェイスユニット２４がシステムインターフェイスユニット２８へ送信する要求のアドレスを変換するように構成することができる。高性能周辺機器３０、ＤＭＡユニット３２、アドレス変換ユニット３６、プロセッサ４０、及びメモリコントローラ４２は、システムインターフェイスユニット２８に結合される。ＤＭＡユニット３２は、高性能周辺機器３０及びその他の周辺機器３４に結合される。アドレス変換ユニット３６は、写真周辺機器３８に結合される。メモリコントローラ４２は、メモリ（図示せず）に結合される。ＣＬＣＤディスプレイコントローラ１２は、（恐らくは図１に示していない他の構成要素を介して）ＣＬＣＤに結合される。１つの実施形態では、図１に示すようなシステム１０を、単一の集積回路チップ上にシステムオンチップ（ＳＯＣ）として統合することができる。他の実施形態では、２又はそれ以上の集積回路を使用して、図１に示す構成要素を提供することができる。他の実施形態では、システム１０が、ＣＬＣＤ、メモリ、及び様々なその他の構成要素（周辺機器インターフェイスに結合された構成要素など）をさらに含むことができる。
【００１１】
上述したように、アドレス変換ユニット２６は、インターフェイスユニット２４に結合された構成要素の１又はそれ以上が開始した要求のアドレス変換を行うことができる。例えば、１つの実施形態では、アドレス変換ユニット２６が、ＣＬＣＤディスプレイコントローラ１２、ビデオデコーダ１４、ミキサ１６、スケーラ１８、及びシェーダ２２のアドレス変換を行うことができる。しかしながら、ビデオデコーダ２０は、内部アドレス変換機構を使用することができる。他の実施形態では、アドレス変換ユニット２６を異なる構成要素の一部のために、又は構成要素の全部のために望む通りに使用することができる。
【００１２】
一般に、アドレス変換（又はより簡潔に「変換」）の処理とは、アドレス変換ユニットへの仮想アドレス入力を、メモリへのアクセスに使用できる物理アドレスに変更することを意味することができる。物理アドレスは、多くの場合仮想アドレスとは数値的に異なり得るが、仮想アドレスを数値的に等しい物理アドレスにマッピングすることも可能であり、このことはしばしば統一マッピングと呼ばれる。変換は、仮想アドレスを物理アドレスにページの精度でマッピングする、メモリ内の１又はそれ以上のページテーブルに記憶されたデータに基づいて決定される。仮想アドレスから物理アドレスへのマッピングは、ソフトウェアがページテーブルの内容を修正することによって制御することができる。ページサイズは、実施形態によって様々であってよい。例えば、典型的なページサイズは４キロバイトであるが、様々な実施形態では、最大メガバイトのサイズのより大きなページサイズがサポートされる。将来的には、さらに大きなページサイズがサポートされるかもしれない。いくつかの実施形態では、複数のページサイズがサポートされて、これをプログラム的に選択することができ、及び／又は様々なサイズを同時に使用することができる。仮想ページから物理ページへの特定のマッピングも変換と呼ぶことができる。
【００１３】
アドレス変換ユニット２６は、アドレス変換ユニット２６が最近使用した１又はそれ以上の変換をキャッシュできる（図２に示すＴＬＢ７０などの）変換索引バッファを含むことができる。１つの実施形態では、このＴＬＢを、数多くのステージを含むパイプライン型構造として実現することができる。従って、ＴＬＢ内でヒットした仮想アドレスに関しては待ち時間の短い変換を行うことができ、ＴＬＢ内でミスした仮想アドレスに関しては（変換を取得するためにメモリ内のページテーブルのテーブルウォークが必要なので）若干待ち時間の長い変換を行うことができる。しかしながら、以下でさらに説明するように、アドレス変換ユニット２６は、ＴＬＢ内でミスした数多くの変換要求を同時に進行させることにより、いくつかの変換に関連する待ち時間を短縮できるＴＬＢミスキュー（例えば、図２のＭＱ６４）を利用することができる。
【００１４】
アドレス変換ユニット２６がアドレス変換を行う対象の構成要素の１又はそれ以上は、ＴＬＢ内の頻繁なミスを許容できない、待ち時間に敏感な構成要素の場合がある。例えば、ＣＬＣＤディスプレイコントローラは、メモリから（フレームバッファデータなどの）データを読み出してＣＬＣＤディスプレイ上に画像を表示することができる。これらのメモリ読み出し動作のアドレスを、アドレス変換ユニット２６によって変換することができる。ディスプレイコントローラは、ユーザが閲覧できるようにディスプレイ上に画像を表示しており、データの読み出しに予期しない待ち時間がかかると、ディスプレイ上に目に見える影響が生じることがある。ビデオエンコーダ１４も、メモリを読み出す待ち時間に敏感と考えられ、ビデオデコーダ２０も同様である（ただし、本実施形態では、ビデオデコーダ２０は独自のアドレス変換ユニットを含む）。様々な実施形態では、あらゆるビデオ処理ユニットが、メモリ読み出し待ち時間に敏感と考えられる。ビデオ処理ユニットは、ビデオデータを処理するいずれの回路であってもよい。ビデオ処理ユニットは、ディスプレイコントローラ１２、ビデオエンコーダ１４、ミキサ１６、スケーラ１８、ビデオデコーダ２０、及び／又はシェーダ２２などを含むことができる。ビデオ処理ユニットは、ビデオデータを処理する他のあらゆる回路を含むこともできる。本実施形態では、ディスプレイコントローラ１２及びビデオエンコーダ１４がメモリ読み出しの遅延に敏感であり、その他の構成要素は待ち時間に敏感でなく、又は独自のアドレス変換ユニットを含む。他の実施形態は、より多い又は少ない数の待ち時間に敏感なビデオ処理ユニットを有することができる。
【００１５】
従って、（図２に示す）ＴＬＢミスキューは、進行中のＴＬＢミスを追跡し、変換要求を同時処理できるようにする一方で、同じＡＲＩＤを有する変換に関して、又は全ての書き込み変換において変換要求順序制約を強制することができる。図２〜図６の説明に関連して以下でより詳細に説明するように、ミスキューは、物理ミスキューストレージ構造内で数多くの仮想ミスキュー（ＶＭＱ）を使用することができる。より具体的に言えば、１つの実施形態では、ストレージユニットが、変換要求を記憶する数多くのエントリを含むことができる。ミスキュー内の各エントリは、いずれかのＶＭＱに属する変換を記憶することができる。各ＶＭＱを、リンクリストタイプのデータ構造として実現し、この構造内で適当なＶＭＱの末尾に新たな変換要求を加えることができる。１つの実施形態では、各エントリが、同じＶＭＱ内の次の順番の変換要求を記憶しているミスキューエントリを識別するためのポインタを含むことができる。所与のＶＭＱ内の各変換要求は同じ処理順序制約を有することができ、これらをポインタにより指定される順序で処理することができる。しかしながら、異なるＶＭＱ内の変換要求は互いに妨害し合うことはなく、準備のできた要求を、以下でさらに説明するような選択機構を使用して選択することができる。
【００１６】
図１に示すように、アドレス変換ユニット２６は、アドレス、識別子、及びタイプ（例えば、読み出し／書き込み）を含むことができるアドレス相互接続１１を受け取ることができる。様々な実施形態では、様々な他の情報（サイズなど）を要求に含めることもできる。１つの実施形態では、アドレス相互接続１１が、読み出し要求及び書き込み要求のための別個のチャネルを含むことができる。従って、読み出しアドレス、書き込みアドレス、読み出し識別子、及び書き込み識別子が存在することができる。要求の読み出し／書き込みの性質は、要求の送信に使用されるチャネルの性質から推測することができる。他の実施形態では、他の相互接続、パケットベースの相互接続などを使用することができる。例えば、１つのアドレス及び読み出し／書き込み指示を送信するアドレス相互接続を使用することができる。
【００１７】
様々な実施形態では、データ相互接続１３が、書き込みデータチャネル及び読み出しデータチャネルを含むことができ、或いはこの相互接続を双方向相互接続とすることができる。ＴＬＢミスの場合にテーブルウォークから読み出しデータを受け取るために、アドレス変換ユニット２６をデータ相互接続１３に結合することができる。書き込み応答相互接続１５は、書き込み要求に対する応答（完了指示など）を提供する。
【００１８】
インターフェイスユニット２４は、構成要素１２、１４、１６、１８、２０、及び２２から要求（又は要求を送信する準備ができた旨の指示）を受け取ることができ、衝突がある場合には要求間で解決するように構成することができる。インターフェイスユニット２４は、アドレス相互接続上で要求を送信し、対応する書き込みデータ及び読み出しデータをデータ相互接続へ／から転送するように構成することができる。受け取った書き込み応答は、対応する書き込み要求の送信元へ転送することができる。
【００１９】
システムインターフェイスユニット２８は、システム１０の様々な構成要素を接続してこれらの間の通信を提供する「最上位レベル」のインターフェイスとすることができる。システムインターフェイスユニットは、システム１０内の他の構成要素に結合するための、インターフェイスユニット２４とともに示したものと同様の相互接続を有することができる。
【００２０】
ＣＬＣＤディスプレイコントローラ１２は、ＣＬＣＤ上に表示される画像を制御するように構成される。例えば、メモリに記憶されたフレームバッファは、ディスプレイの各画素が表示すべき色を識別するデータを記憶することができ、ディスプレイコントローラ１２は、このフレームバッファを読み出して、フレームバッファが記述する画像をディスプレイ上に表示することができる。図１にはＣＬＣＤディスプレイコントローラを示しているが、他の実施形態では、あらゆる種類のディスプレイを制御するように構成されたあらゆるディスプレイコントローラを実装することができる。
【００２１】
ビデオエンコーダ１４は、あらゆる所望の符号化スキームを使用してビデオストリームを符号化するように構成することができる。符号化スキームは、ｍｏｔｉｏｎ  ｐｉｃｔｕｒｅ  ｅｘｐｅｒｔｓ  ｇｒｏｕｐ（ＭＰＥＧ）バージョン１〜４又はそれ以降のいずれかのバージョン、或いはその他のいずれかのビデオ圧縮又は符号化スキームを含むことができる。同様に、ビデオデコーダ２０は、あらゆる所望の符号化スキームを使用して符号化されたビデオストリームを復号するように構成することができる。この実施形態では、ビデオデコーダ２０は独自のアドレス変換ユニットを含むが、他の実施形態では、アドレス変換ユニット２６を使用するビデオデコーダ２０を含むことができる。このような実施形態では、ビデオデコーダ２０も待ち時間に敏感な要求元とすることができ、ＴＬＢメモリの待ち時間に敏感な区分内で割り当てられる（１又は複数の）方法を有することができる。
【００２２】
ミキサ１６は、ビデオミキシング動作を行うように構成することができる。スケーラ１８は、ビデオスケーリング動作を行うように構成することができる。シェーダ２２は、画素シェーディング動作を行うように構成することができる。一般に、ミキシング、スケーリング、及びシェーディングは、表示用のフレームを生成する一部とすることができる。
【００２３】
高性能周辺機器３０は、少なくともシステム１０内の他の周辺機器と比較した場合、システムインターフェイスユニット２８上に大幅な帯域幅をもたらすと予想される様々な周辺機器を含むことができる。例えば、１つの実施形態では、高性能周辺機器が、イーサネット（登録商標）ＭＡＣなどのネットワーキングメディアアクセスコントローラ（ＭＡＣ）、ワイヤレスフィディリティ（ＷｉＦｉ）コントローラ、及びユニバーサルシリアルバス（ＵＳＢ）コントローラを含むことができる。他の実施形態では、これよりも多い又は少ない数の周辺機器を含むことができ、これらの周辺機器を別様に分類及び／又は配置することができる。例えば、ＭＡＣ及びＵＳＢコントローラを中性能周辺機器とし、ＷｉＦｉコントローラを低性能周辺機器とすることができる。その他の周辺機器３４は、オーディオサブシステム、フラッシュメモリインターフェイス、汎用入出力（Ｉ／Ｏ）、タイマ、オンチップシークレットメモリ、暗号化エンジンなどの様々な低帯域幅周辺機器、又はこれらのあらゆる組み合わせを含むことができる。ＤＭＡユニットは、高性能周辺機器３０及びその他の周辺機器３４の代わりに、メモリコントローラ４２を通じてメモリとの間で転送を行うように構成することができる。
【００２４】
１つの実施形態では、アドレス変換ユニット３６を、カメラインターフェイス、ｊｏｉｎｔ  ｐｈｏｔｏｇｒａｐｈｉｃ  ｅｘｐｅｒｔｓ  ｇｒｏｕｐ（ＪＰＥＧ）コーダ／デコーダ（コーデック）、及びビデオエンコーダを含むことができる写真周辺機器３８からのアドレスを変換するように構成することができる。他の実施形態では、その他の一連の写真周辺機器３８を含むことができる。１つの実施形態では、アドレス変換ユニット２６で使用されるものと同様のマイクロアーキテクチャを使用してアドレス変換ユニット３６を実装することができるが、他の実装も想定される。
【００２５】
プロセッサ４０は、あらゆる命令セットアーキテクチャを実施することができ、この命令セットアーキテクチャ内の命令を実行するように構成することができる。プロセッサ４０は、スカラー、スーパースカラー、パイプライン型、スーパーパイプライン型、アウトオブオーダー、インオーダー、推論的、非推論的などを含むあらゆるマイクロアーキテクチャ、又はこれらの組み合わせを利用することができる。プロセッサ４０は回路を含むことができ、任意にマイクロコーディング技術を実現することができる。
【００２６】
メモリコントローラ４２は、（図１に示すような１又はそれ以上のその他の構成要素から要求を受け取ったと思われる）システムインターフェイスユニット２８からメモリ要求を受け取るように構成することができる。メモリコントローラ４２は、メモリにアクセスして要求を満たす（書き込み要求の場合には受け取ったデータをメモリに書き込み、又は読み出し要求に応答してメモリからデータを提供する）ことができる。メモリコントローラ４２は、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、同期型ＤＲＡＭ（ＳＤＲＡＭ）、ダブルデータレート（ＤＤＲ、ＤＤＲ２、ＤＤＲ３、その他）ＳＤＲＡＭ、ＲＡＭＢＵＳ  ＤＲＡＭ（ＲＤＲＡＭ）、スタティックＲＡＭ（ＳＲＡＭ）などのあらゆる種類のメモリとインターフェイス接続するように構成することができる。メモリは、デュアルインラインメモリモジュール（ＤＩＭＭ）などの複数バンクのメモリとして構成することができる。
【００２７】
なお、他の実施形態は、図１に示す構成要素及び／又はその他の構成要素の部分集合又は上位集合を含む、構成要素のその他の組み合わせを含むことができる。図１には、所与の構成要素の一例を示しているが、他の実施形態は、所与の構成要素の１又はそれ以上の例を含むことができる。また、他の様々な実施形態では、システムインターフェイスユニット２８に結合できるその他の構成要素、又はその他の構成要素の一部を、インターフェイスユニット２４と同様のインターフェイスユニット（図示せず）を介して結合することができる。或いは、インターフェイスユニット２４を省き、これに結合されている構成要素をシステムインターフェイスユニット２８に直接結合することもできる。しかしながら、このような代替の実施形態では、接続のアドレス部分が、アドレス変換ユニット２６を含むことができる。
【００２８】
ここで図２を参照すると、アドレス変換ユニット２６の一実施形態のブロック図を示している。図２の実施形態では、アドレス変換ユニット２６が、制御ユニット６０、マルチプレクサユニット（ｍｕｘ）５０、アービタ５２、ミスキュー（ＭＱ）６４、ＴＬＢ７０、及び物理アドレス出力レジスタ８１及び８２を含む。図示のように、制御ユニット６０はｍｕｘ５０に結合される。制御ユニット６０及びｍｕｘ５０は、上述したような読み出しアドレス及び読み出し識別子（ＲＩＤ）、並びに書き込みアドレス及び書き込み識別子（ＷＩＤ）を受け取るために互いに結合される。ｍｕｘ５０はＭＱ６４に結合され、ｍｕｘの選択入力はアービタ５２に結合される。ＭＱ６４はＴＬＢ７０に結合され、出力レジスタ８１及び８２にも結合される。ＴＬＢ７０の出力も、出力レジスタ８１及び８２に結合される。最後に、ＴＬＢ７０はＳＩＵ２８からの読み出しデータを受け取るように結合される。
【００２９】
制御ユニット６０は、アドレス変換ユニットクロックの各クロックサイクルでエントリを割り当てることができるため、変換要求が到着した場合には既にエントリが割り当てられているようになる。インターフェイスユニット２４からアドレス変換要求が受け取られると、たとえＴＬＢ７０内にヒットがあった場合でも、この変換は、ＴＬＢパイプライン内を移動する際に、ＭＱ６４内の割り当て済みエントリ内に数サイクルにわたって記憶される。図５の説明に関連して以下でより詳細に説明するように、ヒットがあった場合、出力レジスタ８１及び８２を介してＳＩＵ２８に物理アドレスが提供される際に、エントリはアイドル状態に入ることができる。しかしながら、ＴＬＢミスがあった場合、変換が行われている間、この変換はＭＱ６４内に留まることができる。変換が終了し、ＴＬＢ７０内に読み出しデータが供給されると、変換を再試行することができる。制御ユニット６０は、ＴＬＢフィルという通知を受けることができ、これに応答して対応するエントリを準備又は「待機」状態に移行させることができる。１つの実施形態では、準備状態の変換が複数存在することができる。従って、各サイクルごとに、アービタ５２は、例えば各準備状態の変換がどれほど古いものであるかなどの因子により、どの準備状態の変換を再試行できるかを判断することができる。
【００３０】
１つの実施形態では、ＭＱ６４が数多くのエントリを含むことができる。ＭＱ識別子（ＭＱＩＤ）を使用してＭＱ６４にアドレス指定し、変換がアドレス変換ユニット２６に入る際に、この識別子を各変換に割り当てることができる。各エントリは、あらゆる種類の変換を記憶することができる。しかしながら、同じＲＩＤを有する読み出しアドレス変換要求、及び全ての書き込みアドレス変換要求は、いくつかの順序制約に従わなければならない。例えば、１つの実施形態では、所与のＲＩＤ値を有する全ての読み出しアドレス転送は、インターフェイス２４上に表示された順序と同じ順序でＳＩＵ２８上に表示されなければならず、ＷＩＤ値に関わらず全ての書き込みアドレス転送は、インターフェイス２４上に表示された順序と同じ順序でＳＩＵ２８上に表示されなければならない。従って、以下でさらに説明するように、１つの実施形態では、同じＲＩＤを有する読み出し変換をともにリンクさせて仮想ミスキュー（ＶＭＱ）を形成することができる。同様に、全ての書き込み変換要求をともにリンクさせて単一のＶＭＱを形成することができる。従って、所与のＶＭＱ内のアドレス変換は同じ順序制約を有し、（受け取られた順序などの）特定の順序で処理されなければならない。しかしながら、異なるＶＭＱ内の変換要求はそうではない。従って、異なるＶＭＱにわたる場合は、変換要求をいずれの順序で処理してもよい。制御ユニット６０は、各エントリに関連する情報にアクセスすることにより、所与のＶＭＱ内の各変換の位置を追跡することができる。
【００３１】
図３の説明に関連して以下でさらに説明するように、ある変換をＭＱ６４に記憶する場合、トランザクションがいずれのＲＩＤ又はＷＩＤに、従っていずれのＶＭＱに属するかを識別できるステータス情報とともに、この変換を記憶することができる。この情報は、所与のエントリがＶＭＱの先頭にあるか又は末尾にあるかを識別することもできる。この情報は、所与のＶＭＱ内の次に古い変換を示すポインタを含むこともできる。
【００３２】
図３を参照すると、図２のアドレス変換ユニットのミスキュー６４の一実施形態のブロック図を示している。図３のＭＱ６４は、変換を記憶するための数多くのエントリを含むストレージである。図示の実施形態では、ＭＱ６４が、０〜１５の番号を付けた１６個のエントリを含む。各エントリは、変換仮想アドレス３１３、読み出し識別子（ＲＩＤ）３０１、書き込みインジケータ（Ｗｒ）、及び年齢インジケータ（Ａｇｅ）３０５、末尾インジケータ３０７、状態インジケータ３０９、及びＶＭＱポインタ（Ｐｔｒ）３１１を含む。１つの実施形態では、全ての書き込み変換が同じＶＭＱに属するので、別個のＷＩＤストレージは必要ない。代わりに、単一の書き込みビットを使用することができる。しかしながら、別の実施形態では、Ｗｒインジケータの代わりに又はこれに加えて、望む通りに追加のＷＩＤストレージを使用することができる。
【００３３】
様々な実施形態では、ＭＱ６４を形成するストレージを、いずれの種類のストレージとして実現することもできる。例えば、１つの実施形態では、単一ポートの１６エントリのレジスタファイルを使用してＭＱ６４を実現することができるが、その他の数のエントリを使用することもできる。上述したように、各エントリには、ＭＱＩＤを介して単独でアドレス指定することができる。レジスタファイルは、スタティックＲＡＭファミリのランダムアクセスメモリ（ＲＡＭ）アレイを使用して実現することができるが、いずれの種類のメモリ装置を使用してもよい。また、ＭＱ６４内の各エントリを、情報フィールドを全て含むように示しているが、いくつかの実施形態では、例えばＶＭＱ  Ｐｔｒ  ３１１及びＲＩＤ  ３０１などの情報の一部を別個のレジスタに記憶し、これらのレジスタに各エントリで同時にアクセスすることもできる。
【００３４】
上述したように、制御ユニット６０は、ＭＱＩＤを使用してＭＱ６４にアクセスすることができる。図示の実施形態では、ＭＱＩＤが４ビットの識別子であり、その各カウントが１６個のエントリの１つに相当する。ＲＩＤ３０１は、所与のエントリがいずれの読み出しＶＭＱに属するかを示すことができる。以下でさらに説明するように、１つの実施形態では、同じＲＩＤを有する全ての変換が同じＶＭＱに属し、全ての書き込みが１つのＶＭＱに属する。Ｗｒインジケータ３０３は、変換が書き込み変換であるかどうかを示す。Ａｇｅインジケータ３０５は、個々のその他のエントリと比較した各エントリの年齢を示す。例えば、１つの実施形態では、Ａｇｅインジケータ３０５を、ＭＱ６４内の１６個のエントリに相当する４ビットのインジケータとすることができる。末尾インジケータ３０７は、エントリが所与のＶＭＱの末尾であるかどうかを示すことができ、１つの実施形態では、末尾インジケータ３０７を単一ビットとすることができる。状態インジケータ３０９は、エントリの現在の状態を示す。以下でより詳細に説明するように、ＭＱ６４の各エントリは、６つの状態のうちの１つにあることができる。従って、１つの実施形態では、状態インジケータ３０９を３ビットのインジケータとすることができる。アドレス３１３は、変換要求の何らかの数の仮想アドレスビットを記憶することができる。
【００３５】
Ａｇｅインジケータ３０５は、各エントリの年齢を追跡して、ＭＱ６４内にＮ個のエントリが存在する場合、Ａｇｅインジケータ３０５が０（最も若いエントリ）〜Ｎ−１（最も古いエントリ）の一連の値を含むようにすることができる。従って、１つの実施形態では、Ａｇｅインジケータ３０５を４ビットの値とすることができる。各エントリがＶＭＱ内にリンクされるときに、このエントリのＡｇｅインジケータ３０５を０に設定し、他の全ての有効なエントリのＡｇｅインジケータ３０５を１ずつ増分することができる。変換が終了したときなどに変換を削除する場合には、全ての古い有効なエントリのＡｇｅインジケータ３０５を１ずつ減少させる。
【００３６】
上述したように、同じＲＩＤを有する全てのエントリは同じＶＭＱに属し、全ての書き込みエントリは１つのＶＭＱに属する。従って、特定のＶＭＱ内の各エントリを、リンクリストタイプ構造内でポインタを使用してともにリンクさせることができる。従って、Ｐｔｒ３１１は、所与のＶＭＱ内の次に最も古いエントリを示す値を有するＶＭＱポインタである。エントリがＶＭＱの先頭にある場合、ポインタ値はこのエントリ自体を示す。エントリがＶＭＱの末尾にある場合、ポインタ値は、このＶＭＱ内の次に古いエントリを示す。この種のポインタ機構は、ポインタが末尾から開始して、先頭に達するまでリスト内で次に古いものへと前方へ示していくので逆ポインタと呼ぶことができる。ＭＱ６４内のエントリを含むＶＭＱに属する変換が受け取られる度に、新たな変換をリストの末尾に加えることができる。例えば、エントリが割り当てられ、アドレスが記憶される。制御ユニット５０は、以前の末尾エントリの末尾インジケータ３０７をリセットし、新たなエントリの末尾インジケータ３０７を設定し、この新たなエントリのＶＭＱ  Ｐｔｒ３１１値が以前の末尾エントリを示すようにする。先頭のエントリがキューから削除される場合、制御ユニット５０は、このＶＭＱ内の次に若いエントリのポインタを更新し、ＶＭＱ  Ｐｔｒ３１１がこのエントリ自体を示すようにする。すなわち、制御ユニット５０は、次に若い値のエントリのＭＱＩＤ値をＶＭＱ  Ｐｔｒ３１１に書き込む。
【００３７】
代替の実施形態では、リンクされたＶＭＱ  Ｐｔｒ３１１が、ＶＭＱ内の次に若いエントリを示すことができると想定される。従って、このような実施形態では、リンクされたエントリが、先頭のエントリから開始して末尾に達するまで次に若いエントリを連続的に示すことができる。また、末尾インジケータの代わりに先頭インジケータを使用し、末尾エントリのＶＭＱポインタ値がこのエントリ自体を示すようにすることもできる。
【００３８】
上記の逆ＶＭＱエントリリンクを例示するために、ＭＱ６４の例示的な実施形態を図４Ａに示す。図４Ａを参照して分かるように、ＭＱ６４が１６個のエントリを含む。しかしながら、説明を単純にするために、ここでは情報の一部しか示していない。図示のように、ＭＱ６４は、各々が３つのエントリを有する３つのアクティブな仮想ミスキューを含む。この３つのＶＭＱは、ＲＩＤ値又はＷｒインジケータによって識別される。より具体的には、１つのＶＭＱが、ＲＩＤが１の３つのエントリを含み（ＶＭＱ１）、第２のＶＭＱは、ＲＩＤが５のエントリを含み（ＶＭＱ５）、第３のＶＭＱは、Ｗｒインジケータが論理値１に設定された３つのエントリを含む（ＶＭＱ  Ｗ）。
【００３９】
図示のように、ＶＭＱ１の末尾エントリは、末尾インジケータが設定されていることによって明らかなようにエントリ４内に位置する。ＶＭＱ  Ｐｔｒ値は１４であり、これはＶＭＱ１内の次に古いエントリを示す。エントリ１４内のＶＭＱ  Ｐｔｒ値は０であり、これはＶＭＱ１内の次に古いエントリがエントリ０内に位置することを示す。エントリ０内のＶＭＱ  Ｐｔｒ値は０である。これは、エントリ０がＶＭＱ１の先頭であることを示す（また、図４Ａでは「Ｈ」によってそのように示されている）。
【００４０】
同様に、ＶＭＱ５の末尾エントリは、末尾インジケータが設定されていることによって明らかなようにエントリ１５内に位置する。ＶＭＱ  Ｐｔｒ値は９であり、これはＶＭＱ１内の次に古いエントリを示す。エントリ９内のＶＭＱ  Ｐｔｒ値は１であり、これはＶＭＱ１内の次に古いエントリがエントリ１内に位置することを示す。エントリ１内のＶＭＱ  Ｐｔｒ値は１である。これは、エントリ１がＶＭＱ１の先頭であることを示す。ＶＭＱ  Ｗでは、末尾エントリは、末尾インジケータが設定されていることによって明らかなようにエントリ８内に位置する。ＶＭＱ  Ｐｔｒ値は２であり、これはＶＭＱ  Ｗ内の次に古いエントリを示す。エントリ２内のＶＭＱ  Ｐｔｒ値は５であり、これはＶＭＱ  Ｗ内の２番目に古いエントリがエントリ５内に位置することを示す。エントリ５内のＶＭＱ  Ｐｔｒ値は５である。これは、エントリ５がＶＭＱ  Ｗの先頭であることを示す。さらに、各ＶＭＱ内では、末尾エントリが最も若く（すなわち、最も低い年齢値を有する）、先頭エントリが最も古い（すなわち、最も高い年齢値を有する）。
【００４１】
図４Ｂは、図４ＡのＭＱ６４の実施形態における３つのＶＭＱのリンクされたエントリを示す単純なアーキテクチャ図である。図４Ｂを参照すると、最上部にＶＭＱ１が存在し、真ん中にＶＭＱ５が存在し、最下部にＶＭＱ  Ｗが存在する。ボックスの各々はＭＱ６４内のエントリを表し、ボックス内の数字はエントリ番号又はＭＱＩＤを表し、矢印番号は図４ＡのＶＭＱ  Ｐｔｒ３１１を表す。上述したように、及び図４Ｂに示すように、ＶＭＱ１の末尾はエントリ４であり、エントリ４がエントリ１４を示し、エントリ１４がエントリ０を示し、エントリ０はエントリ０自体を示し、従ってこれがＶＭＱ１の先頭である。残りのＶＭＱ（ＶＭＱ５及びＶＭＱ  Ｗなど）も同様にリンクされており、さらなる説明は省く。
【００４２】
図５は、ＭＱ６４の１つの特定の実施形態におけるエントリの動作状態を示す状態図である。図示のように、及び上述したように、ＭＱ６４内の各エントリは、６つの状態のうちの１つにあることができる。これらの状態は、Ｉｄｌｅ（アイドル）５０１、Ａｌｌｏｃ（割り当て）５０３、Ｉｎｉｔｉａｌ（初期）５０５、ページテーブルエントリ（ＰＴＥ）フェッチ５０９、Ｆｉｌｌ  Ｗａｉｔ（フィル待ち）５１１、及びＱｕｅｕｅｄ（待機）５０７を含む。図２の制御ユニット６０は、以下でさらに説明するようなエントリの状態を変更する条件に応じて、各エントリ内の状態インジケータを更新することができる。
【００４３】
Ｉｄｌｅ状態は、エントリが変換を追跡していないときに使用することができる。Ｉｄｌｅエントリは、エントリが必要な場合に割り当てることができる空のエントリに類似する。Ａｌｌｏｃ状態のエントリは、変換要求を受け取った場合に制御ユニットが使用できるように割り当てられたものである。１つの実施形態では、各サイクルごとに、変換要求が到着予定であった場合、制御ユニット６０が、この変換要求を受け入れるためにＭＱ６４内に１つのエントリを割り当てることができる。１つの実施形態では、エントリが１サイクルにわたってＡｌｌｏｃ状態に留まることができ、エントリが必要でない場合、このエントリをサイクルの最後にＩｄｌｅ状態に戻すことができる。エントリがＡｌｌｏｃ状態にある間に変換要求が到着すると、このエントリが変換を受け入れるようになり、このエントリはＩｎｉｔｉａｌ状態に移行する。１つの実施形態では、変換がＴＬＢアクセスを行うごとに、最初のアクセスであるか又は再試行であるかに関わらず、状態を再計算することができる。エントリは、ＴＬＢアクセスの結果に応じて４つの状態（Ｉｄｌｅ、ＰＴＥ  Ｆｅｔｃｈ、Ｆｉｌｌ  Ｗａｉｔ、又はＱｕｅｕｅｄなど）の１つに移行する。
【００４４】
変換要求がＴＬＢパイプラインを下ってＴＬＢミスをチェックする間、エントリは、数サイクルにわたってＩｎｉｔｉａｌ状態に留まることができる。１つの実施形態では、エントリが、ヒット又はミスの指示を待ったまま、４サイクルにわたってＩｎｉｔｉａｌ状態に留まることができる。Ｉｎｉｔｉａｌ状態のエントリは、ＴＬＢアクセスの結果に応じて４つの状態の１つに移行することができる。より具体的には、ＴＬＢヒットがあって変換が終了した場合、エントリはＩｄｌｅに移行する。ＴＬＢミスがあってＰＴＥ  Ｆｅｔｃｈが開始された場合、エントリはＰＴＥ  Ｆｅｔｃｈ状態に移行する。ＴＬＢミスがあったものの、他の何らかのエントリが、同じＰＴＥがフェッチされるのを待つＰＴＥ  Ｆｅｔｃｈ状態にある場合、エントリはＦｉｌｌ  Ｗａｉｔ状態に移行する。ＴＬＢヒットがあったものの、例えば、順序制約、バス使用中などの理由で変換を終了できない場合、エントリはＱｕｅｕｅｄ状態に移行することができる。
【００４５】
ＰＴＥ  Ｆｅｔｃｈ状態のエントリは、ＰＴＥフェッチ要求をメモリに送信済みであり、この要求のための変換データを待っている。ＴＬＢにデータが戻されると、ＴＬＢは、制御ユニット６０にフィル通知を通知することができる。そして、エントリをｑｕｅｕｅｄ状態に移行させることができる。
【００４６】
Ｑｕｅｕｅｄ状態のエントリは、ＴＬＢの変換再試行アクセスを再試行する順番を待っている。ＴＬＢがフィル状態になり、又はＴＬＢヒットがあった場合、このエントリは再試行の準備が整うが、上述したように、このエントリが再試行対象の次のエントリでないこともある。再試行が行われて変換が済んだら、エントリはＩｄｌｅ状態に移行することができる。
【００４７】
Ｆｉｌｌ  Ｗａｉｔ状態に移行するエントリは、ＴＬＢミス後にＴＬＢフィルを待っているが、既に別のエントリ内の別の変換要求によって同じＰＴＥに関するＰＴＥフェッチが発行されている。ＴＬＢに変換データが戻されると、ＴＬＢは、制御ユニット６０にフィル通知を通知することができる。そして、エントリをｑｕｅｕｅｄ状態に移行させることができる。
【００４８】
図６は、図２〜図５に示すアドレス変換ユニットの一実施形態の動作を示すフロー図である。図２〜図６をまとめて参照し、図６のブロック６０１から開始すると、ＭＱ６４内の全てのエントリがＩｄｌｅ状態にある。各バスサイクルごとに、制御ユニット６０は、変換要求を受け取った場合、ＭＱ６４内の（アービタ５２により選択された）１つのエントリをＡｌｌｏｃ状態に移行させることができる（ブロック６０３）。Ｒｄ又はＷｒ変換要求を受け取らなかった場合（ブロック６０５）、制御ユニット６０は、このエントリをサイクルの最後にＩｄｌｅ状態に戻すことができる（ブロック６０７）。
【００４９】
しかしながら、変換要求を受け取った場合（ブロック６０５）、制御ユニット６０は、この変換を、割り当てられたエントリに記憶して（ブロック６０９）、このエントリをＩｎｉｔｉａｌ状態に移行させることができる。このエントリは、変換がＴＬＢパイプラインに入り、ＴＬＢ７０内でヒット又はミスのいずれかが示される間、ｉｎｉｔｉａｌ状態に留まることができる。
【００５０】
いずれの段階においても、最初の又はいずれかの以前の変換がＭＱ６４内にある間に、同じＲＩＤを有する第２の又は後続の読み出し変換要求、或いは第２の又は後続の書き込み変換要求を受け取った場合（ブロック６３１）、制御ユニット６０は、この第２の又は後続の要求を、ＭＱ６４の次に割り当てられたエントリに記憶するように構成される（ブロック６３３）。次に、制御ユニット６０は、エントリのステータス情報を書き込んで、このエントリをＩｎｉｔｉａｌ状態に移行させ（ブロック６３５）、この新たなエントリのＶＭＱ  Ｐｔｒ内に以前の末尾エントリのＭＱＩＤを書き込むことにより、このエントリを適当なＶＭＱの末尾に加える（ブロック６３７）。また、制御ユニット６０は、現在この新たなエントリが末尾であることを末尾インジケータが示すようにする（ブロック６３９）。従って、ブロック６３１は、動作フロー内のいずれの場所でも発生し得ることを示すために点線で示している。新たなエントリが既存のＶＭＱの一部になると、動作フローの残り部分はあらゆるエントリに当てはまる。
【００５１】
ＴＬＢヒットがあって（ブロック６１３）変換が終了すると（ブロック６１５）、制御ユニット６０は、エントリをＩｄｌｅ状態に戻すことができる（ブロック６０７）。このエントリが、他のエントリを含むＶＭＱの一部でない場合（ブロック６４１）、動作は、ブロック６０３に関連して上述したように進行する。しかしながら、このエントリが、他のエントリを含むＶＭＱの一部である場合（ブロック６４１）、制御ユニット６０は、ＶＭＱ内の次に若いエントリにアクセスして、この次に若いエントリのＭＱＩＤをＶＭＱ  Ｐｔｒ３１１内に書き込み、これにより先程のエントリをＶＭＱの先頭にすることができる（ブロック６４３）。動作は、ブロック６０３に関連して上述したように進行する。
【００５２】
ここでブロック６１５を再び参照すると、上述したような理由で変換が行われない場合、制御ユニット６０は、エントリをＱｕｅｕｅｄ状態に移行させることができ（ブロック６１７）、このエントリは、ＴＬＢアクセスの再試行を待つことができる（ブロック６１９）。アービタ５２が再試行を許可すると、変換が完了して（ブロック６２１）エントリがＩｄｌｅ状態に戻される（ブロック６０７）。１つの実施形態では、Ｑｕｅｕｅｄ状態にあってＴＬＢ７０への変換アクセスを再試行する準備ができている先頭エントリが複数存在する場合、アービタ５２が、Ａｇｅインジケータ３０５を使用して、どのエントリを再試行できるかを判断することができる。より具体的に言えば、１つの実施形態では、準備ができている最も古いエントリを最初に再試行することができる。動作は、ブロック６４１に関連して上述したように進行する。
【００５３】
再び（ブロック６１３）を参照すると、ＴＬＢミスがあり、同じＰＴＥに関するＰＴＥ  Ｆｅｔｃｈを既に実行した変換要求を含むエントリが他にない場合（ブロック６２３）、ＰＴＥ  Ｆｅｔｃｈが発行され、制御ユニット６０は、このエントリをＰＴＥ  Ｆｅｔｃｈ状態に移行させて（ブロック６２５）、ＴＬＢがフィル状態になり、変換データがＴＬＢ７０に返送されるのを待つことができる（ブロック６２７）。変換データがＴＬＢ７０に到着すると、制御ユニット６０は、ＴＬＢフィルの通知を受け、このエントリをＱｕｅｕｅｄ状態に移行させて（ブロック６１７）ＴＬＢの変換アクセスの再試行を待つことができる（ブロック６１９）。変換が終了すると（ブロック６２１）、制御ユニット６０は、このエントリをＩｄｌｅ状態に移行させることができる（ブロック６０７）。動作は、ブロック６０３に関連して上述したように進行する。
【００５４】
一方、ＴＬＢミスがあり（ブロック６１３）、別のエントリ内の別の変換要求が、同じＰＴＥに関するＰＴＥ  Ｆｅｔｃｈを既に実行していた場合（ブロック６２３）、制御ユニット６０は、このエントリをＦｉｌｌ  Ｗａｉｔ状態に移行させ（ブロック６２９）、変換データがＴＬＢ７０に返送されるのを待つことができる（ブロック６２７）。変換データがＴＬＢ７０に到着すると、制御ユニット６０はＴＬＢフィルの通知を受け、このエントリをＱｕｅｕｅｄ状態に移行させて（ブロック６１７）、ＴＬＢの変換アクセスの再試行を待つことができる（ブロック６１９）。変換が終了すると（ブロック６２１）、制御ユニット６０は、このエントリをＩｄｌｅ状態に移行させることができる（ブロック６０７）。動作は、ブロック６４１に関連して上述したように進行する。
【００５５】
なお、動作フローを特定の順序で説明し図示したが、他の実施形態では、様々なブロック内に示した動作を必要に応じて異なる順序で実行できることを想定している。
【００５６】
上記の実施形態についてかなり詳細に説明したが、当業者には、上記開示を十分に理解すれば、多くの変形及び修正が明らかになるであろう。以下の特許請求の範囲は、全てのこのような変形及び修正を含むと解釈されることを意図している。
【符号の説明】
【００５７】
２６  アドレス変換ユニット
５０  マルチプレクサユニット
５２  アービタ
６０  制御ユニット
６４  ミスキュー
７０  ＴＬＢ
８１  物理アドレス出力レジスタ
８２  物理アドレス出力レジスタ
【図１】
0005453546.tif 000002
【図２】
0005453546.tif 000003
【図３】
0005453546.tif 000004
【図４Ａ】
0005453546.tif 000005
【図４Ｂ】
0005453546.tif 000006
【図５】
0005453546.tif 000007
【図６】
0005453546.tif 000008