(57)【要約】【課題】アドレス変換のためのテーブルをB-Treeにより構成する。【解決手段】ノードポインタのノードアドレスフィールドにより指されたB-ツリーデータ構造のノードが葉ノード又はインデックスノードのいずれであるかを決定する、ノードポインタ検査機構602、メモリ及びノードポインタ検査機構に作動的に結合され、かくしてノードポインタ検査機構がB-ツリーデータ構造のノードがインデックスノードであると決定した場合に、メモリからB-ツリーデータ構造のノードを検索しこれを処理することになるインデックスノード検索／処理機構605、及び、メモリ及びノードポインタ検査機構に作動的に結合され、かくして、B-ツリーデータ構造のノードが葉ノードであるとノードポインタ検査機構が決定した場合に、メモリからB-ツリーデータ構造のノードを検索しこれを処理する葉ノード検索／処理機構603、を備えるように構成する。【選択図】図６
2006172499.tif 000002
【特許請求の範囲】
【請求項１】
葉ノード及びインデックスノードを含むB-ツリーデータ構造を記憶するメモリを含むコンピュータシステム内の装置であって、かつ、前記葉ノードの各々が少なくとも１つの変換を記憶し、前記インデックスノードの各々が、前記B-ツリーデータ構造のもう１つのノードを指す少なくとも１つのポインタを記憶するようなアドレス変換装置において、
ノードポインタのノードアドレスフィールドにより指された前記B-ツリーデータ構造のノードが葉ノード又はインデックスノードのいずれであるかを決定する、ノードポインタ検査機構、
前記メモリ及び前記ノードポインタ検査機構に作動的に結合され、かくして前記ノードポインタ検査機構が前記B-ツリーデータ構造の前記ノードがインデックスノードであると決定した場合に、前記メモリから前記B-ツリーデータ構造の前記ノードを検索しこれを処理することになるインデックスノード検索／処理機構、及び、
前記メモリ及び前記ノードポインタ検査機構に作動的に結合され、かくして、前記B-ツリーデータ構造の前記ノードが葉ノードであると前記ノードポインタ検査機構が決定した場合に、前記メモリから前記B-ツリーデータ構造の前記ノードを検索しこれを処理する葉ノード検索／処理機構、を備えることを特徴とするアドレス変換装置。
【請求項２】
請求項１に記載のアドレス変換装置において、前記葉ノード検索／処理機構には、変換挿入機構が含まれており、かくして、前記変換挿入機構は、前記B-ツリーデータ構造の前記ノードの中に記憶された各々の変換を変換バッファの中に挿入することを特徴とするアドレス変換装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリ管理ユニット、特に仮想メモリを支援するコンピュータシステム内での変換を加速するのに用いられるルックアサイドバッファを含むメモリ管理ユニット、そして特にバッファ内の多重変換が同一のアドレスに対応するような状況を防止しこれから回復するための方法に関する。さらに、この開示は、ルックアサイドバッファの中に要求対象の変換が存在しない場合にアクセスされる、変換を記憶するのに用いられる特定のデータ構造、すなわちB-ツリーに関する。
【背景技術】
【０００２】
仮想メモリシステムを支援するコンピュータにおいて、プログラムが参照するアドレススペースは「仮想メモリ」と呼ばれ、プログラム命令によって特定された各々の仮想アドレスは、メモリ管理ユニット(MMU）により物理又は実アドレスに変換され、この実アドレスは、アクセスされた項目を検索するため主メモリサブシステム（以下「メモリ」と呼ぶ）に移送される。仮想メモリを使用することにより、プログラムのサイズは物理メモリのサイズを大幅に超えることができ、物理メモリ内のプログラムを入れる上での融通性が得られる。アドレス変換のために要求されるテーブルを適正なサイズに保つ必要性を含むさまざまな理由から、仮想アドレスから実アドレスへの変換計画は、複数の段階で変換を行なう。
【０００３】
通常、変換の各段階には、メモリ内に保たれたテーブルに対する単数又は複数のアクセスが必要とされる。１回のアドレス変換に必要なメモリアクセスの全回数を減少させるため、アドレス変換計画において対応する段階数を行なうのに必要な平均時間を減少させるべく MMU内には往々にして単数又は複数の変換ルックアサイドバッファ(TLB）が具備される。 TLBは、標準的には最近メモリから取出された変換計画の特定の一段階に対応する変換を保持する静的ランダムアクセスメモリ（SRAM）及び／又は内容アドレス可能記憶装置(CAM：content addressable memory）の形で実施されたキャッシュ様のメモリである。
【０００４】
入力アドレスに対応する出力アドレスを保持する TLBエントリへのアクセスは、その入力アドレスに対応する出力アドレスを検索するためのメモリ内テーブルへのアクセスの必要性を無くし、かつ標準的にはこのアクセスよりも何ケタ分も速いものである（１つの TLBエントリは、保護フィールドといったような入力及び出力アドレスフィールドに加えて変換を記述するフィールドを内含していてよい。その上、出力アドレス自体の代りに出力アドレスを決定するべく使用される単数又は複数のフィールドを TLBエントリの中に記憶することもできる）。
【０００５】
TLBが、要求された変換を含んでいない場合（すなわち、 TLBが「ミス」した時点で）、 MMUは、要求された変換のためメモリ内に記憶された変換テーブルの探索を開始し、次にそれを TLB内にロードし、ここで、その後将来の何らかの時点で同じ入力アドレスが万一要求された場合に急速にアクセスするのに利用可能な状態となることができる。ハードウェア（論理回路）内でこの機能を行なう MMUの一部分を、以下「テーブルウォーカ」と呼ぶ。
【０００６】
RAMにおけるソフトのエラー、ハードウェアの過渡的エラー及びソフトウェアのエラーといったようなさまざまな種類のエラーを原因として、 TLB内には同じ入力アドレスのための複数の変換が現われる可能性がある。
【０００７】
MMUには、変換されるべき特定された入力アドレスのため TLB内に複数の変換が存在することを検出し、複数の変換を無効化しテーブルウォーカによる探索を開始するといった適切な行動をとることによってこの異常な状況から回復できることが望まれる。
【０００８】
仮想メモリを支援するコンピュータシステム内のアドレス変換計画の特定の一段階に対する入力のための入力アドレス範囲は、きわめて広いものであり得る。例えば、HaL Computer Systems Inc.(本開示の譲受人）が販売している64ビットのワークステーション内では、51ビットのアドレスが第１段階で変換される。先行技術で一般に使用されているように（例えばページテーブル）、考えられる１つの入力アドレス各々について１つのエントリを伴う単純アレイは、このような広い入力アドレス範囲のための変換テーブルを実施するためには、メモリ必要条件の点で実行可能な解決法ではない。
【０００９】
変換テーブルを実施するための既知のデータ構造は、変換された入力アドレス数ではなく可能な入力アドレス合計数に比例するメモリ必要条件をもち、そのため非常に大きな入力アドレススペース用としては実用的なものではない。
【発明の開示】
【発明が解決しようとする課題】
【００１０】
変換ルックアサイドバッファ(TLB）そして場合によってはメモリ内に保持されB-ツリー（B-tree）データ構造として実施された変換テーブルを探索することによって、仮想メモリを支援するコンピュータシステム内でアドレス変換を実行するための方法が、ここに提供されている。１つの実施形態においては、各ノードのサイズは、メモリのためのキャッシュラインサイズである。
【００１１】
TLBは、最初、特定された入力アドレスのための変換について探索される。 TLBの正確に１つの有効なエントリが、特定された入力アドレスについての変換を記憶した場合に、この特定された入力アドレスに対応する出力アドレスはそのエントリの内容から決定される。 TLBの２つ以上の有効なエントリが、特定された入力アドレスのための１つの変換を記憶した場合、これらのエントリは無効化される。 TLBの有効なエントリのうちの複数のものが特定された入力アドレスのための１つの変換を記憶した場合、又はそのうちのいずれのエントリもこれを行なわなかった場合、変換テーブルは、特定された入力アドレスのための１つの変換について探索される。
【００１２】
変換テーブルの探索が要求された場合、この方法には、特定された入力アドレスのための１つの変換そして場合によっては変換テーブルを実施するB-ツリーの１つのノード内でこの特定された入力アドレスのための変換と合わせて記憶されているその他の入力アドレスについての単数又は複数の変換を変換テーブルから検索し TLB内にこれを挿入することが関与している。１つの実施形態においては、変換テーブルを実施するB-ツリーは、（特定入力アドレスが特定される）キー及び変換樹内のその他のノードに対するポインタを記憶するインデックスノード及び単数又は複数の入力アドレスのための変換を記憶する葉ノードで構成されている。
【００１３】
変換テーブルから検索された特定の入力アドレスのための１つの変換の TLBへの挿入中に、特定の入力アドレスのための変換を記憶する正確に１つの有効なエントリが、 TLB内に存在するか否かが決定される。存在する場合には、変換テーブルから検索された変換はそのエントリ内に挿入され、かくして同じ入力アドレスのための多重の TLBエントリの作成が回避される。そうでなければ、変換テーブルから検索された変換は、１つの実施形態においてはFIFO（先入れ先出し）である TLB置換え方針によって決定された TLBのエントリ内へ挿入される。
【００１４】
１つの実施形態においては、そのアサーション(assertion）が結果として TLBの探索及び TLBへの書込みをそれぞれもたらすような制御信号が、同じサイクル内でアサート（assert）される。
【００１５】
かくして、変換テーブルから検索された特定のアドレスのための１つの変換の TLB内への挿入が、重複する TLBエントリの生成を回避するべく実行される特定のアドレスのための変換についての TLBの探索によって遅延されることはない。
【００１６】
有利なことに、当該データ構造は、テーブルウォーカが、特定された入力アドレスのための変換のみならず特定された入力アドレスに類似した入力アドレスのための単数又は複数の変換をも検索し TLB内に挿入するように、メモリ内の隣接する場所の中に類似の入力アドレスのための変換も記憶する。このようにして、テーブル探索を実行するのに必要とされる時間は、数回の変換にわたって償却（amortize）される。大部分のアプリケーションズプログラムが示す局所参照性のため、現在変換が要求されている特定された入力アドレスに類似したアドレスについて近い将来変換が必要になる可能性は高い。
【００１７】
しかしながら、特定されたアドレスのための変換と合わせて検索された特定された入力アドレスに類似したアドレスについての変換がすでに TLB内に存在する可能性もある。
【００１８】
当該方法は、テーブルウォーカによりメモリから検索される任意の変換について TLB内に重複するエントリを作成することを回避する。
【課題を解決するための手段】
【００１９】
本発明によれば、葉ノード及びインデックスノードを含むB-ツリーデータ構造を記憶するメモリを含むコンピュータシステム内の装置であって、かつ、前記葉ノードの各々が少なくとも１つの変換を記憶し、前記インデックスノードの各々が、前記B-ツリーデータ構造のもう１つのノードを指す少なくとも１つのポインタを記憶するようなアドレス変換装置において、ノードポインタのノードアドレスフィールドにより指された前記B-ツリーデータ構造のノードが葉ノード又はインデックスノードのいずれであるかを決定する、ノードポインタ検査機構、前記メモリ及び前記ノードポインタ検査機構に作動的に結合され、かくして前記ノードポインタ検査機構が前記B-ツリーデータ構造の前記ノードがインデックスノードであると決定した場合に、前記メモリから前記B-ツリーデータ構造の前記ノードを検索しこれを処理することになるインデックスノード検索／処理機構、及び、前記メモリ及び前記ノードポインタ検査機構に作動的に結合され、かくして、前記B-ツリーデータ構造の前記ノードが葉ノードであると前記ノードポインタ検査機構が決定した場合に、前記メモリから前記B-ツリーデータ構造の前記ノードを検索しこれを処理する葉ノード検索／処理機構、を備えることを特徴とするアドレス変換装置が提供される。
【発明を実施するための最良の形態】
【００２０】
以下、本発明に係るアドレス変換装置の実施例を、添付図面を参照して詳述する。
【実施例】
【００２１】
［変換プロセスの概要］
本発明に従った TLBの１つの実施形態が図１に表わされている。TLB101は、内容アドレス可能記憶装置 (CAM) 102及び静的ランダムアクセスメモリ(SRAM) 103を内含する。CAM102及び SRAM103は各々、アドレス可能要素（以下「エントリ」と呼ぶ）を 128個内含している。CAM102の各エントリは、有効ビットフィールドを１つ含んでいる。CAM102の特定のエントリのための有効なビットがアサートされた時点で、そのエントリは、 SRAM103中のそれに対応するエントリと共に、１つの有効な変換を表わす。そうでなければ、特定のエントリは無視されなくてはならない。CAM102の各々のエントリは同様に、１つの入力アドレスフィールドを含み、その変換されたアドレスは、 SRAM103の対応するエントリの中に記憶される（いくつかの実施形態においては、変換されたアドレス自体ではなくむしろ変換されたアドレスを計算するのに使用されるデータが SPAM103内に記憶される）。
【００２２】
その変換が望まれる入力アドレス（ｘ)(以下「特定されたアドレス」と呼ぶ）を表示するライン 104上の信号が、TLB101によって受理される。CAM102の各エントリの内容は、特定された入力アドレスと比較される。「突合せ」オペレーションと呼ばれるこのタスクについて以下で詳しく説明する。
【００２３】
CAM102の正確に１つの有効なエントリが、特定された入力アドレスを記憶する場合、この特定された入力アドレスの変換を表わす出力アドレスは SRAM103の対応するエントリの内容から決定される。CAM102の２つ以上の有効なエントリが、特定された入力アドレスを記憶する場合、これらのエントリは、以下でさらに詳述する「無効化」オペレーションを介して無効化される。
【００２４】
CAM102の有効なエントリのうちの１つが特定された入力アドレスを記憶するか又はいかなるエントリもこれを記憶しない場合、メモリ 106内に記憶された変換テーブル116(これは１つの実施形態においてB-ツリーデータ構造によって実施されている）が、その特定された入力アドレスのための変換について、テーブルウォーカ 115により探索される。以下で詳述するようなテーブルウォーカ 115は、変換テーブル 116から、特定された入力アドレスのための変換のみならず、場合によってはその他の入力アドレスのための単数又は複数の変換も検索することができる。
【００２５】
テーブルウォーカ 115によって検索された各々の変換は、以下で詳述する「挿入」オペレーションを介して、CAM102のエントリ及び SRAM103の対応するエントリの中に挿入される。変換テーブル 116から検索された特定の入力アドレスのための変換をTLB101内に挿入するときに重複した変換を作成するのを回避するため、その特定のアドレスについての変換がすでにTLB101のエントリ内に記憶されているか否かを決定するために「突合せ」(MATCH）オペレーションが実行される。TLB101の正確に１つのエントリがその特定のアドレスのための変換を記憶する場合、変換テーブル 116からテーブルウォーカ 115によって検索された特定のアドレスのための変換は、その正確に１つのエントリの中に挿入され、かくして、特定のアドレスについての多重の TLBエントリの作成が回避される。そうでなければ、テーブルウォーカ 115によって検索された変換が中に挿入される TLBエントリはTLB101についての置換え方針によって決定される。
【００２６】
［CAM102によって支援されるオペレーション］
TLB101は、「突合せ」、「書込み」、「挿入」及び「無効化」を含むいくつかのオペレーションを支援する。これら４つのオペレーションの各々について、以下で記述する。
【００２７】
［TLB突合せオペレーション］
「突合せ」オペレーションは、次の２つの状況下で実行される。まず第１の状況下では、「突合せ」オペレーションは、変換が望まれている入力アドレスを表示する信号をTLB101がライン 104上で受理した時点で実行される。この状況下で、MUX107はライン 104上で信号を選択する。この第１の状況下での「突合せ」オペレーションがCAM102の正確に１つの有効な一致するエントリを発見した場合、望ましい出力アドレスは SRAM103の対応するエントリから検索される。そうでなければ、テーブルウォーカ 115は、ライン 104上の信号により表示された入力アドレスのための変換について、メモリ 106の中に記憶されている変換テーブル 116を探索しなくてはならない。
【００２８】
第２の状況下では、TLB101がライン 105上で、テーブルウォーカ 115によって変換テーブル 116からその変換が検索された入力アドレスを表示する信号を受理した時点で、「突合せ」オペレーションが実行される。この状況下で、MUX107はライン 105上で信号を選択する。
【００２９】
CAM突合せイネーブルポート 122によって受理されたライン 121上の信号がアサートされた時点で、「突合せ」オペレーションが行なわれ、その間、CAM102の全てのエントリの入力アドレスフィールドは、 CAM突合せポート 109によって受理されたライン 119上の信号により表示された入力アドレス（以下「Ｘ」と呼ぶ）と同時に比較される。
【００３０】
突合せライン 112、 MATCH〔 127：０〕（CAM102の各々のエントリについて１つずつ）がCAM102及び多重ヒット検出器 (MHD) 150に対し結合される。CAM102のｉ番目のエントリの入力アドレスフィールド、CAM(ｉ）がＸに等しく（「一致する」）、CAM(ｉ）の有効なビットがアサートされた場合、ｉ番目の突合せラインMATCH(ｉ）上の信号がアサートされる。いくつかの実施形態においては、現在 MMUにより変換されつつある仮想アドレスを生成したプロセスに対応するプロセスIDも同様にCAM102に対して供給され、入力アドレスに加えて、CAM102のエントリ内の対応するフィールドに対し突合せされなくてはならない。このような実施形態は、文脈切換え時点すなわち異なるプロセスが実行し始めた時点でCAM102の内容全体を無効化する必要性を避けるために、CAM102に対応する変換段階がID依存性のプロセスである場合に使用することができる。
【００３１】
MHD150は、突合せライン 112上の信号のうちの１つ又は複数がアサートされたか又はいずれもアサートされなかったかを決定し、それぞれライン 113及び 114上で伝送される２つの信号MHIT及び HITをセットする。突合せライン 112のうちの正確に１本の上の信号がアサートされた場合、MHD150は HIT信号をアサートする。突合せライン 112のうちの複数のものの上の信号がアサートされるか又はいずれのライン上の信号もアサートされない場合、MHD150はMHIT信号をアサートする。
【００３２】
１つの実施形態においては、MHD150は図９に表わされた構造をもつ。エンコーダ 901は、突合せライン 112上で搬送された 128の２進信号を、それぞれライン 903及び 904上で搬送される２つの７ビット信号 HAD〔６：０〕及びHADN〔６：０〕へと符号化する。 HAD及びHADNが互いのビットに関する補数である場合に、多重ヒットチェッカ 902が HIT信号をアサートする。そうでなければ、多重ヒットチェッカはMHIT信号をアサートする。１つの実施形態においては、エンコーダ 901及び多重ヒットチェッカ 902は、それぞれ図10及び11に表わされた回路である。
【００３３】
図10では、突合せライン 112すなわち MATCH〔 127：０〕上の信号の各々は、７つのMOSFETトランジスタの２つのそれぞれのセットと結びつけられている。ｉが０以上 127以下であるものとしてｉについての７ビットの２進表示内のゼロの場所は、 MATCH〔ｉ〕に接続されたゲートをもつ MATCH〔ｉ〕と結びつけられた７つのMOSFETのうちの第１のセットのメンバを決定する。例えばｉ＝１である場合、ｉについての２進表示は 0000001である。かくして、 MATCH〔ｉ〕はMOSFETS 1001, 1002, 1003, 1004, 1005, 1006のゲートに接続されるものの1007には接続されない。
【００３４】
ｉが０以上 127以下であるものとしてｉについての７ビットの２進表示の中の１の場所は、 MATCH〔ｉ〕に接続されたゲートをもつ MATCH〔ｉ〕に結びつけられた７つのMOSFETの第１のセットのメンバを決定する。例えばｉ＝１である場合、ｉについての２進表示は 0000001である。従って、 MATCH〔ｉ〕はMOSFET 10014のゲートに接続されるものの1014以外のMOSFET 1008, 1009, 1010, 1011, 1012, 1013 のゲートには接続されない。
【００３５】
テーブルウォーカ115(図１参照）がそれぞれライン 113及び 114上でMHIT及び HIT信号を受理する。ライン 104上で受理された入力アドレスについての「突合せ」オペレーションの時点でCAM102内に多重の一致するエントリがあるか又は一致するエントリが全くない場合、テーブルウォーカ 115は、ライン 113上でMHIT信号のアサートを検出した時点で、入力アドレスＸのための変換について変換テーブル116(メモリ 106内に保持されたもの) を探索する。テーブルウォーカ 115によるこの探索については、以下で詳述する。一方、突合せライン 112のうちの正確に１本のライン、MATCH(ｉ) が「突合せ」オペレーションの結果としてアサートされた場合、上述のテーブルウォーカ探索は開始されず、入力アドレスＸの変換を表わす出力アドレスは SRAM103のｉ番目のエントリ、SRAM（ｉ）から検索される。
【００３６】
「突合せ」オペレーションのタイミングは以下の通りである。第１のサイクルでは、ライン 108上の信号は、突合せされるべき入力アドレスＸを表示する。同様に、第１のサイクルにおいて、ライン 117上の突合せイネーブル信号がアサートされる。第２のサイクルでは、ライン 108上の信号はラッチ 118によってラッチされ、かくして、 CAM突合せポート 109で受理されたライン 119上の信号は入力アドレスＸを表示する。同様に第２のサイクルでは、ライン 117上の突合せイネーブル信号はラッチ 120によりラッチされ、かくして CAM突合せイネーブルポート 122によって受信されたライン 121上の信号がアサートされる。
【００３７】
いずれの突合せライン 112上でも伝送されなかった信号及び１本又はそれ以上の突合せライン112(CAM102の一致するエントリに対応する）上で伝送された信号のアサート及びMHD150によるそれぞれライン 113及び 114上で伝送された信号MHIT及び HITのセッティングは、「突合せ」オペレーションの第２のサイクルの最初の半分以内で達成される。
【００３８】
突合せライン 112のうちの正確に１本のライン、MATCH(ｉ) 上の信号が「突合せ」オペレーションの第２のサイクルの最初の半分の間にアサートされる場合、突合せライン 112上の信号は HIT信号のアサーションに起因してMUX123によって選択される。第２のサイクルの最初の半分が終わるまでに、MUX123の 128の出力ライン 173のうちの正確に１本がアサートされる。各々の出力ライン 173は、 128の ANDゲート 171のうちのそれぞれのゲートの入力ラインに接続される。 TLBワードセレクトライン 124は、 ANDゲート 171のそれぞれの出力ラインである。 128の ANDゲート 171の各々の反転した入力に対し、クロック信号が提供される。かくして、第２のサイクルの第２の半分の間に、 TLBワードセレクトライン 124、WL（ｉ）上で伝送された信号のうちの正確に１つの信号がアサートされる。
【００３９】
ライン 104上で供給された入力アドレスのために「突合せ」オペレーションが実行された場合、CAM(ｉ) 及びSRAM (ｉ) の内容は、それぞれ CAM読取りポート 125及びSRAM読取りポート 126で利用可能にされる。SRAM (ｉ) の内容には、入力アドレスＸに対応する望ましい出力アドレスが含まれている。いくつかの実施形態においては、CAM(ｉ) の内容についてのパリティ検査を行なうために、SRAM (ｉ) 内の１つのフィールドを用いることができる。一方、ライン 105上で供給された入力アドレスについて「突合せ」オペレーションが行なわれた場合、信号 155及び 132によって表示されたデータ (すなわち、テーブルウォーカ 115によって変換テーブル 116から検索された変換) は、それぞれCAM(ｉ) 及びSRAM (ｉ) の中に書込まれる。
【００４０】
［TLB「無効化」オペレーション］
ライン 104上で受理された入力アドレスについての「突合せ」オペレーションの時点でCAM102内に一致するエントリが多重に存在する場合、TLB101中の論理は、一致するエントリの有効ビットを非アサート（deassert）する。１つの実施形態においては、多重の一致するエントリを検出した時点で有効ビットを非アサートする論理回路は、図２に示されている通りである。CAM102の各エントリの有効ビットは、標準の６−トランジスタ RAMセルによって実施される。例えば、CAM(０）についての有効ビットの値は、ライン 202上の信号として RAMセル 201内に記憶される。
【００４１】
一致する（matching）エントリ（CAM(０）を含む）が多重に発生した時点でのCAM(０）のための有効ビットの非アサートは、以下の通りに達成される。一致するエントリが多数発生した時点で、 ANDゲート 203の入力ライン 204上で搬送される MATCH〔０〕を含む突合せライン 112上の信号のうちの複数のものがアサートされる。これに応答して、MHD150は、ライン 113上でMHIT信号をアサートする。MHIT信号のアサーションの結果として、 ANDゲート 203の入力ライン 205上の信号 INV MATCHがアサートされる。かくして、 ANDゲート 203の出力ライン 206の信号がアサートされた状態となる。出力ライン 206はMOSFET 208のゲートに結合される。MOSFET 208のソースは、ライン 202に接続され、MOSFET 208のドレーンは培地ソース 207に接続される。ライン 206上の信号のアサーションはMOSFET 208をオンに切替え、かくしてライン 202上の信号はアースに結合され、そのためCAM(０）についての有効ビットは非アサートされる。 CAMのその他のエントリの有効ビットの非アサートは、同様の要領で達成される。
【００４２】
［TLB「書込み」オペレーション］
「書込み」オペレーションにおいては、ライン 155及び 132上の信号により表示されたデータは、CAM102のエントリ及び SRAM103の対応するエントリの中にそれぞれ書き込まれる。「書込み」オペレーションは、２つの状況において実行される。
【００４３】
第１の状況においては、「書込み」オペレーションは、 CPUにより実行された命令によって特定される。この状況下では、 CPUは書込みが行なわれるべきCAM102及び SRAM103の要素を表示するライン 138上の信号、CAM102内に書込まれるべきデータを表示するライン 151上の信号そして、 SRAM103内に書込まれるべきデータを表示するライン 157上の信号を供給する。MUX 123, 152及び 156は、それぞれライン140, 151及び 157上で信号を選択する。
【００４４】
第２の状況では、CAM102及び SRAM103内に書込むべきデータは、変換テーブル 116から検索され、それぞれライン 105及び 129上でテーブルウォーカ 115によって供給される。ライン 138上の信号は、書込みが行なわれ TLB置換え方針に従ってセットされるべきCAM102及び SRAM103の要素を表示する。MUX 123, 152及び 156はそれぞれライン140, 105及び 129上の信号を選択する。
【００４５】
「書込み」オペレーションのタイミングは以下の通りである。第１のサイクルにおいては、ライン 130上の書込みイネーブル信号がアサートされる。第２のサイクルでは、ライン 130上の書込みイネーブル信号がラッチ 134によってラッチされ、かくして CAM書込みイネーブルポート 136及びSRAM書込みイネーブルポート 137により受理される。同様に、第２サイクル中、MUX152及び 156の出力はそれぞれラッチ 153及び 131によってラッチされ、かくしてそれぞれ CAM書込みポート 110及びSRAM書込みポート 133により受理される。第２のサイクルの最初の半分の間に、ライン 138上で信号によって表示されたアドレスは、アドレスデコーダ 139によって復号される。第２サイクルの第２の半分が始まるまでに、アドレスデコーダライン 140のうちの１本がアサートされ、MUX123の対応する出力ラインがアサートされる。第２サイクルの第２の半分の間に、対応するワードセレクトライン 124がアサートされ（このアサーションは 128の ANDゲート 171の各々の反転入力端に接続されたクロック信号の立下り縁部によりトリガーされる) 、 CAM書込みポート 110とSRAM書込みポート 133にあるデータは、アサートされたワードセレクトライン 124に対応する、CAM102のエントリ及び対応する SRAM103のエントリにそれぞれ書込まれる。
【００４６】
［TLB「挿入」オペレーション］
上述のとおり、ライン 104上の信号により表示された入力アドレスＸのための唯一の有効な変換がTLB101の中に存在しない場合、テーブルウォーカ(table walker) 115は、メモリ 106の中に保持されたデータ構造である変換テーブル 116内の望ましい変換を探索する。以下で詳述する通り、テーブルウォーカ 115は、この探索の結果として要求されていないいくつかの変換を検索することができる。テーブルウォーカ 115によりメモリ 106から検索された変換の各々は、「挿入」オペレーションを介してTLB101内に入れられる。検索されたものの要求されていない変換がすでにTLB101内に存在する可能性がある。「挿入」オペレーションは、TLB101内にすでに存在していない検索された変換を挿入するのに必要とされる時間の増大をもたらすことなく、同じ入力アドレスのための多数のエントリを作成しないように設計されている。
【００４７】
１つの実施形態における「挿入」オペレーションのタイミングは、図３に例示される通りである。第１サイクルでは、メモリ 106は、CAM102のエントリ内に挿入されるべき入力アドレスＹ及び SRAM103の対応するエントリ内に挿入されるべき対応する出力アドレス（又は、いくつかの実施形態においては、出力アドレスを計算する基となる出力データ）をそれぞれ表示するライン127A及び127B上の信号を生成する。ライン127A及び127B上の信号は、合わせて、TLB101内に挿入すべき変換を構成する（１つの実施形態においては、メモリは１サイクルにつき８バイトしか転送できず、従って、変換の CAM部分を表わす信号（８バイト）は１サイクル内で転送され、変換のSRAM部分を表わす信号は、次に続く２つのサイクルにわたって転送される）。
【００４８】
第２サイクルでは、テーブルウォーカ 115内に内含されたバッファ128A及び128Bがライン127A及び127B上の信号をそれぞれラッチし、かくしてライン 105及び 129上の２つの信号を生成する。TLB101が「挿入」オペレーションを実行した時点で、MUX107及び 152はライン 105上の信号を選択し、その結果、ライン 108及び 154上の信号は同様に、第２サイクル中、入力アドレスＹを表わす。TLB101が「挿入」オペレーションを実行するとき、MUX156は、ライン 129上に信号を選択し、その結果、ライン 158上の信号は同様に、第２サイクル中、入力アドレスＹに対応する出力アドレスを表示する。
【００４９】
同じく第２サイクルでは、ライン 117及び 130上の突合せ(match）イネーブル及び書込みイネーブル信号がそれぞれアサートされる。かくして、「挿入」オペレーションは、「突合せ」オペレーションと「書込み」オペレーションの組合せである。以下でさらに詳細に論述する通り、それぞれライン 117及び 130上の突合せイネーブル及び書込みイネーブル信号のアサーションにより同じサイクル内で「突合せ」及び「書込み」オペレーションを開始することにより (まず最初に「突合せ」オペレーションを実行し、次に「突合せ」オペレーションの結果に基づいて「書込み」オペレーションを行なうか否かを決定することとは異なり) 、「挿入」オペレーションを実行するのに必要とされる時間の増大を回避することができる。
【００５０】
第３サイクルでは、ラッチ 118及び 153がライン 108及び 154上の信号をそれぞれラッチし、かくして CAM書込みポート 110及び CAM突合せポート 109によってそれぞれ受理されたライン 119及び 155上の信号は、入力アドレスＹを表示する。同様に、第３サイクルでは、ラッチ 131がライン 158上の信号をラッチし、かくしてSRAM書込みポート 133により受理されたライン 132上の信号は、入力アドレスＹに対応する出力アドレスを表示する。第３サイクルの最初の半分では、ライン 117上の突合せイネーブル信号はラッチ 120によってラッチされ、かくして CAM突合せイネーブルポート 122により受理されるライン 121上の信号はアサートされる。ライン 121上の信号のアサーションの結果として、通常の「突合せ」オペレーションによる場合と同様に、第３サイクルの最初の半分の間に、以下のことが発生する：１）CAM102の全てのエントリの入力アドレスフィールドに対して入力アドレスＹが突合せされる；２）突合せライン 112上で伝送された零又は１以上の信号がアサートされる；３）入力アドレスＹが、CAM102内の零、１又は多数の有効エントリと一致(match）したかどうかを、多重ヒット検出器 150が決定する；及び４）MHD150が、それぞれライン 113及び 114上のMHIT及び HIT信号をセットする。
【００５１】
ライン 138上のアドレス信号は、第３サイクルの最初の半サイクル内でアドレスデコーダ 139により復号され、入力アドレスＹと一致する正確に１つのエントリがCAM102内にすでに存在するのでないかぎり、メモリからの変換を挿入するのにTLB101のどのエントリが使用されるかを表示する。TLB101のための置換え方針によって、ライン 138上のアドレス信号を「挿入」オペレーション中にセットする方法が決定される。FIFO（先入れ先出し）置換えが利用される１つの実施形態においては、ライン 138上のアドレス信号は最初CAM(０）にセットされる。各々の「挿入」オペレーションの後、ライン 138上のアドレス信号は、それがそのときCAM(ｉ）を指している場合、CAM ((ｉ＋１)mod 128) を指すように変更される。ただし、正確に１つの CAMエントリが、CAM102内に挿入されるべき入力アドレスと一致している場合には、ライン 138上のアドレス信号は変更されない。
【００５２】
入力アドレスＹがCAM102の多数のエントリと一致するか又はいかなるエントリとも一致しないことをMHD150が決定し、従ってMHD150が、第３サイクルの最初の半分において（MUX123のセレクトラインを駆動する）ライン 114上の HIT信号を非アサートした場合、アドレスデコーダライン 140上の信号はMUX123によって選択され、アサートされたアドレスデコーダライン 140に対応する CAMワードセレクトライン 124は第３サイクルの第２の半サイクルにおいてアサートされる（このアサーションは、 128の ANDゲート 171の各々の反転した入力端に接続されているクロック信号の立下り縁部によってトリガーされる) 。
【００５３】
そうでなければ、すなわちCAM102の単一のエントリが入力アドレスＹと一致する場合、MHD150は第３サイクルの最初の半分においてライン 114上で HIT信号を非アサートし、その結果、突合せライン 112がMUX123により選択される。第３サイクルの第２の半分の間、アサートされた突合せライン 112に対応するワードセレクトライン 124がアサートされる（このアサーションは、 128の ANDゲート 171の各々の反転した入力端に接続されているクロック信号の立下り縁部によってトリガーされる) 。
【００５４】
同様に、第３サイクル内では、ライン 130上の書込みイネーブル信号はラッチ 134によってラッチされ、かくして、 CAM書込みイネーブルポート 136及びSRAM書込みイネーブルポート 137により受理されるライン 135上の信号がアサートされる。従って第３サイクルの間、ライン119(すなわち入力アドレス) 及び132(出力アドレス)。
【００５５】
上の信号によって表示された変換データはCAM102のエントリ内に書込まれ、 SRAM103の対応するエントリが TLBワードセレクトライン124によって選択される。
【００５６】
上述の「挿入」オペレーションは、突合せライン 112で TLBワードセレクトライン 124を駆動し、かくして、もう１つの TLBエントリすなわちライン 138上のアドレス信号により表示されたものの中に取り出された変換を入れることとは異なって、テーブルウォーカ 115によりメモリ 106から取り出された変換で一致するエントリをオーバライドすることによって、TLB101の中にすでに単一の一致するエントリが存在する場合におけるTLB101内の多数の一致するエントリの作成を回避する。一方、多数の一致するエントリの作成を防ぐために「挿入」の間に実行される突合せは、一致する CAMエントリが全く無いか又は多数ある場合にライン 138上のアドレス信号によって表示された TLBエントリ内に、メモリ 106から取り出された変換データを挿入するための所要時間を増大させない。
【００５７】
これは、書込み及び突合せオペレーションが同じサイクル内でそれぞれライン 117及び 130上の突合せイネーブル及び書込みイネーブル信号のアサーションによって同時に開始されるからであり、又、TLB101内に正確に１つでない一致するエントリが存在する場合に、挿入されるべき変換を入れることになるTLB101のエントリを表示するライン 138上のアドレス信号の復号が、CAM102のエントリに対するその変換に付随する入力アドレスの突合せと同時に（第３サイクルの最初の半分の間に) 行なわれるからでもある。
【００５８】
メモリ 106がテーブルウォーカ 115に、１サイクルにつき１つの変換を供給できる場合、上述の「挿入」オペレーションは、ライン 127A, 105／154 及び155(CAM102内への書込みのため）に沿って、ライン 127A, 105／108 及び119(CAM102との突合せのため）に沿って、そしてライン 127B, 129／158 及び132 (SRAM103内への挿入のため) に沿って変換をパイプライン処理することができるため、１サイクルにつきほぼ１つの変換という有効挿入速度を支援することができる。さらに、テーブルウォーカ 115内のバッファ128A及び128Bは、このテーブルウォーカ 115が、メモリ 106から変換を受理するのと同じ速さでライン 105及び 129上に変換を送り出すことができることから、1 つの変換を保持するのに充分な大きさであることしか必要とされない。
【００５９】
上述のように、TLB101についての「挿入」オペレーションの中の実際の突合せ及び書込みは、同じサイクル内で起こる。一方、まず最初に突合せし次に（突合せの結果に応じて）その後のサイクルを書込むことによって挿入を実行する TLBは、この TLBが先行サイクル中に突合せされた第１の入力アドレスを書込む間に第２の入力アドレスを突合せすることができないということを仮定して、２サイクルにつき１つの変換を超える有効挿入速度を支援することができない。同様に、変換が１サイクルにつき１つの変換という速度でメモリからテーブルウォーカまで送り出される場合、変換テーブルの任意の探索中にメモリによって送り出される最大変換数をＮとして、このような TLB内では、Ｎ／２の変換を記憶するのに充分なバッファスペースが必要とされる。
【００６０】
さらに、取り出された変換の書込みを開始する前に突合せを行なうように設計された「挿入」オペレーションにはもう１つの欠点がある。最大有効挿入速度は２サイクルにつき１つの変換となることから、テーブルウォーカ 115は、２サイクル毎に信号ライン 105及び 129上に１つの変換のみ送り出すことができる。かくして、テーブルウォーカは、連続サイクル内でメモリ 106により送り出された最大変換数をＮとして約Ｎ／２の変換を記憶できるバッファを必要とする。
【００６１】
［TLBミスの時点での変換データの取出し］
【００６２】
特定の入力アドレスＸについての変換がTLB101内に存在しない場合、テーブルウォーカ 115は、オペレーティングシステムにより作成され維持され、現在実行中のプロセスのための変換を内含する、メモリ106(変換テーブル116)内に保持されたデータ構造を探索する。１実施例では、以下「変換ツリー」（translation tree）と呼ぶ変換テーブル 116は、B-ツリーとして実施される。B-ツリーは、周知のデータ構造であり、ここに参考として内含されているTeorey及び Fry共著の「データベース構造の設計」 (1982年、Prentice Hall Inc.) 中の 305〜327 ページに定義づけされ記述されている。その中で記述される通り、B-ツリーにはいくつかの変形形態がある。B-ツリーという語は、本書では、従来のB-ツリーのこれらの及び恐らくはその他の変形形態のうちのいずれかを指すものとして用いられている。次に記述する実施形態においては、変換テーブル 116は、 B* - ツリーとして知られるB-ツリーの変形態様によって変換テーブル 116が実施されている。
【００６３】
B* - ツリーの各ノードは、葉ノードか又はインデックスノードのいずれかである。１つの実施形態においては、各々の変換ツリーノードは、 128バイトのメモリキャッシュラインサイズに等しいサイズのものであり、変換ツリーの各々のインデックスノードは、図４に描かれた形をもつ。インデックスノード 400は、交互のノードポインタ 401とキー 402から成る。８つのノードポインタ 401と７つのキー 402の各々が、８バイトの長さをもつ。各々のキー 402は変換されるべき入力アドレスであるＸに対し比較され得る入力アドレスを記憶する。任意のインデックスノード内の最後のキーのうち最高６つまでがニル(nil）であってよい。ニルキーに続くノードポインタは無効である。インデックスノード内の非ニルキーの値は、左から右へと値を増大させる。全てのインデックスノードの最後の８つのバイトは無視される。
【００６４】
各々のノードポインタ 401は、以下のフィールドを含む：すなわち、変換ツリーのもうつ１のノードを指す『ノードアドレスフィールド』；ノードアドレスフィールド内に記憶されたアドレスタイプを規定する『ノードアドレスタイプフィールド』（ノードアドレスのいくつかの考えられるタイプについては、以下の記述を参照のこと）；アドレスフィールド内のアドレスによって指されるノードタイプ（葉ノード又はインデックスノード）を表示する『ノードタイプフィールド』、そしてノードアドレスフィールド内でアドレスにより指された葉ノードの中に記憶された有効な変換の数を表示する『変換数フィールド』（ノードタイプフィールドが「葉ノード」である場合にのみあてはまる）。
【００６５】
上述の通り、ノードポインタ 401のノードアドレスフィールドの中に記憶されたアドレスはいくつかの形態をとることができる。さまざまな実施形態において、以下のノードアドレスタイプならびにその他のノードアドレスタイプを提供することができる：
【００６６】
１）実ノードアドレス：このノードアドレスは、メモリから、指された変換ツリーノードを検索するために直接使用できる実又は物理メモリアドレスを表わす。
【００６７】
２）論理ノードアドレス：このノードアドレスは、指された変換ツリーノードをメモリから検索できるようになる前に当然それ自体実アドレスに変換されなくてはならない何らかの種類の論理アドレスを表わす。いくつかの実施形態において、この変換はきわめて迅速に達成される。例えばノードアドレスは、ノードポインタ 401が中に存在するページの中のページオフセットを表わすことができ、この場合、対応する実アドレスは、ノードポインタ 401が中に存在する実ページアドレスをノードポインタ 401内に記憶されたノードアドレスと連結することによってのみ形成される。もう１つの実施形態では、 MMU内には、ノードポインタ 401のノードアドレスフィールドの中に記憶された論理アドレスを実アドレスに変換するため特殊な変換ルックアサイドバッファが具備されている可能性もある。
【００６８】
１つの実施形態においては、変換ツリーの葉ノードは、図５内に描かれた形のものである。葉ノード 500は、 128バイト (この実施形態におけるメモリの仮定されたキャッシュラインサイズ）を占有し、５つの変換記述子501(各々24バイトを占有する）を記憶する。葉ノードの最後の８つのバイトは無視される。変換記述子 501の各々は24バイトを占有し、８バイトを占有する CAMデータ部分 502と16バイトを占有するSRAMデータ部分 503から成る。 CAMデータ部分 502とSRAMデータ部分 503は、それぞれ、CAM102のエントリ (例えば入力アドレス) 及び対応する SRAM103のエントリ (例えば出力アドレス) 内に挿入されるべき変換データを含んでいる。さらに、 CAMデータ部分 502は、その付随する変換記述子が有効であるか否かを表示する有効ビットを内含する。
【００６９】
上述のような変換ツリーのインデックスノードの中に記憶されたノードポインタのものと同じフォーマットをもちかつ現在実行中のプロセスのための変換ツリーのルートノードを指すアドレスを含むノードアドレスフィールドを有する、以下「TTRP」（変換ツリールートポインタ）と呼ぶノードポインタを保持するために、 MMU内の特別なレジスタが使用される。文脈切換えの時点で（すなわち異なるプロセスが実行を開始する時点で）、オペレーティングシステムは、新たに実行中のプロセスについての変換ツリーのルートノードを指すようTTRPレジスタの内容を更新する。
【００７０】
テーブルウォーカ 116による変換ツリーの探索に関与する各段階が、図６の流れ図 600によって例示されている。テーブルウォーカ 116による処理は、ステップ 601から始まり、ここでメモリ内に記憶された変数current-node-pointerがTTRPレジスタ内に記憶されたノードポインタ対し初期化される。図６により描かれている処理全体を通して、current-node-pointerのノードアドレスフィールドは、現在探索されている変換ツリーノードを指す。処理はステップ 601から決定ステップ 602まで移行する。
【００７１】
決定ステップ 602では、テーブルウォーカ 115が、current-node-ptrのノードタイプフィールドを調べる。タイプフィールドが「葉ノード」を表示している場合、処理はステップ 602からステップ 603へと移行する。ステップ 603では、テーブルウォーカ 115は current-node-ptr のノードアドレスフィールドによって指された葉ノードを処理する。ステップ 603から、処理はステップ 604まで移行し、ここで処理は終結する。
【００７２】
テーブルウォーカ 115がステップ 602において、current-node-ptrのノードタイプフィールドが「インデックスノード」であることを決定した場合、処理はステップ 602から 605まで移行する。ステップ 605では、テーブルウォーカ 115はcurrent-node-ptrのノードアドレスフィールドにより指されたインデックスノードを処理する。ステップ 605の終りまでに、current-node-ptrは、テーブルウォーカ 115によって処理されるべき次の変換ツリーノードをそのノードアドレスフィールドが指している、ちょうど探索されたばかりの変換ツリーノードの中に記憶されたポインタを保持する。ステップ605から、処理はステップ 602まで移行する。
【００７３】
テーブルウォーカ 115による変換ツリーのインデックスノードの処理のための図６のステップ 605は、図７の流れ図 700によりさらに詳細に例示されている。処理はステップ 701で始まり、ここでテーブルウォーカ 115は、current-node-ptrのノードアドレスフィールドの中に記憶された（又は論理ノードアドレスの場合にはこれに対応する）実アドレスで始まるメモリキャッシュラインを要求する。メモリ 106は、読取りをセットアップするのに数サイクルとり、次に、キャッシュラインの 128のバイト全てが受理されてしまうまでテーブルウォーカ 115に対し、要求されたキャッシュラインの一定の数のバイト（１つの実施形態では８）を、連続するサイクルの順序で送る。処理は、ステップ 701からステップ 702まで移行し、その間、テーブルウォーカ 115は、current-node-ptr内へメモリ 106から戻された最初の８つのバイト（ノードポインタ）を記憶する。同様に、ステップ 702の間、カウンタ変数ｉが１に初期化される。カウンタ変数ｉの目的は、以下に記述する処理ステップ 703〜705 によって構成されたループが７回以上実行されることがないようにすることにある。
【００７４】
処理はステップ 702から、カウンタ変数ｉを７と比較する決定ステップ 703へと移行する。ｉが７よりも大きい場合、処理はステップ 707まで移行し、ここで処理は終結する。ｉが７より大きくない場合、処理はステップ 704まで移行し、ここでテーブルウォーカ 115は、メモリから受理された次の８つのバイトの中に含まれたキーを、変換が望まれている入力アドレスであるＸと比較する。Ｘがキーよりも小さい場合、処理はステップ 707まで移行し、ここで処理は終結する。一方、Ｘがキーより小さくない場合、処理はステップ 705まで移行し、ここでテーブルウォーカ 115は、current-node-ptr内にメモリから受理された次の８つのバイト（ノードポインタ）を記憶する。同様にステップ 705では、カウンタ変数ｉは１だけ増分される。ステップ 705から、処理はステップ 703まで移行する。
【００７５】
テーブルウォーカ 115による変換ツリーの葉ノードの処理のための図６のステップ 603は、図８の流れ図 800によってさらに詳細に例示されている。処理はステップ 801で始まり、ここでテーブルウォーカ 115はcurrent-node-ptrのノードアドレスフィールド内に記憶された（又は論理ノードアドレスの場合にはこれに対応する）実アドレスで始まるメモリキャッシュラインを要求する。メモリ 106は読取りをセットアップするのに数サイクルとり、その後、キャッシュラインの 128のバイト全てが受理されてしまうまでテーブルウォーカ 115に対して要求されたキャッシュラインの一定の数のバイト（１つの実施形態では８つ）を連続するサイクルの順序で送る。
【００７６】
その上、カウンタ変数ｉが、ステップ 801内で１にセットされる。カウンタ変数の目的は、以下でさらに記述されるステップ 802, 806, 807及び 808によって構成されるループが５回しか実行されないようにすることにある。同様にステップ 801では、current-node-ptrの変換数アドレスフィールド内に記憶されるような、現在処理されている葉ノードの中に存在する有効な変換の数が、変数「 num-trans」内に記憶される。その上、望ましい変換が捜し出されたか否かを表示するのに用いられるブール変数「発見済み」が、ステップ 801において偽(false）に初期化される。
【００７７】
処理は、ステップ 801から決定ステップ 802まで移行し、ここでカウンタ変数ｉが num-transと比較される。ｉが num-transよりも大きい場合、すなわち現在の葉ノードの中に期待された有効な変換の期待数よりも大きい場合、処理は決定ステップ 802から決定ステップ 803まで移行し、ここでブール変数「発見済み」の値が調べられる。「発見済み」が偽(false）に等しく、望まれた変換が発見されなかったことを表示している場合、処理はステップ 809まで移行し、ここでテーブルウォーカ 115は、中断を生成して、オペレーティングシステムに対し変換テーブル 116内に望まれる変換が発見されなかったことを表示し、オペレーティングシステムに適切な措置を講じさせる。そうでなければ、処理はステップ 804まで移行し、ここで処理は終結する。
【００７８】
ｉが num-transより大きくない場合、処理は決定ステップ 802から決定ステップ 806まで移行し、ここで要求されたキャッシュラインの次の（すなわちｉ＝１については最初の）24バイト（すなわち次の変換記述子）の中に含まれた有効ビットがテーブルウォーカ 115によって調べられる。有効ビットがセットされない場合（かくして、変換記述子が有効でないことが表示される）、処理はステップ 806からステップ 805まで移行し、ここでテーブルウォーカ 115は、中断を生成してオペレーティングシステムに実行を開始させ、オペレーティングシステムに対してこの中断の原因は現在の葉ノード内に発見された有効な変換の数が期待された数すなわちステップ 801内で変数「 num-trans」内に記憶された数よりも小さかったという事実にあったということを知らせる。
【００７９】
有効ビットがセットされたならば、処理はステップ 806からステップ 807まで移行し、ここでブール変数「発見済み」は、現在調べられている変換記述子（すなわちステップ 806で言及されている要求されたキャッシュラインの24バイト）の最初の８バイトの中に記憶された入力アドレスが、テーブルウォーカ 115がその変換を探索しつつある入力アドレスであるＸに等しい場合、真にセットされる。ステップ 807から、処理はステップ 808まで移行し、ここでテーブルウォーカ 115は、それぞれCAM102のエントリ及び対応するSRAMのエントリの中にテーブルウォーカ 115によって現在調べられているメモリから受理された変換記述子の最初の８バイト（入力アドレス）及び最後の16バイト（出力データ）の中に収納された（及び／又はいくつかの実施形態においてはこれらのバイトから計算された）データを挿入するように、TLB101内で「挿入」オペレーションを開始する（前述のとおり、 TLB「挿入」オペレーションは重複エントリの挿入を防止するように設計されている）。同様に、ステップ 808では、カウンタ変数ｉが１だけ増分される。ステップ 808から、処理はステップ 802まで移行する。テーブルウォーカ 115が変換ツリーの葉ノードを処理した後、入力アドレスＸに対応する要求された変換データは（それが葉ノード内で発見されたと仮定して；前述のとおり中断が生成されない場合）、最高４つのその他の入力アドレスに対応する変換データと共にTLB101内に入れられてしまっているだろう。
【００８０】
要求された変換と同じ変換ツリー葉ノード内に記憶された未要求の変換を挿入するのに必要な追加時間は、要求された変換を捜し出すのに必要とされる合計時間に比べ小さいものである。大部分のプログラムが示す参照の局在性（すなわち、１つのプログラムが入力アドレスＸを参照する場合、近い将来においてＸに近い入力アドレスを参照する確率が高い）及び変換ツリーの葉ノードが近くにある入力アドレスのための変換を記憶するという事実からして、未要求の変換の挿入は TLB内のミスの率を低下させ、かくしてアドレス変換を行なうのに必要とされる平均時間を減少させるはずである。実際、変換テーブル 116の探索を実行するコストは、２回以上の変換にわたって償却される可能性がある。
【００８１】
当該開示は例示的なものであり、制限的な意味をもつものではない。当業者にとってはさらなる修正が明白であり、これらは添付のクレームの範囲内に入るものとして意図されている。
【図面の簡単な説明】
【００８２】
【図１】図１ａおよび図１ｂの関係を示す図である。
【図１ａ】本発明に従った変換ルックアサイドバッファ及びテーブルウォーカを例示する図（その１）である。
【図１ｂ】本発明に従った変換ルックアサイドバッファ及びテーブルウォーカを例示する図（その２）である。
【図２】CAMエントリの有効ビットを無効化するのに用いられる１つの実施形態における回路を例示する図である。
【図３】１つの実施形態において TLBにより実行される「挿入」オペレーションのタイミングを表わす図である。
【図４】１つの実施形態において変換テーブルを実施するB-ツリーのインデックスノードの構造を表わす図である。
【図５】１つの実施形態において変換テーブルを実施する平衡多方向探索樹の葉ノードの構造を表わす図である。
【図６】１つの実施形態において、B-ツリーとして実施された変換テーブルを探索する一方でテーブルウォーカによって実行される処理を例示する流れ図を表わす図である。
【図７】１つの実施形態において、B-ツリーとして実施された変換テーブルのｉノードのテーブルウォーカによる処理を例示する流れ図を表わす図である。
【図８】１つの実施形態において、B-ツリーとして実施された変換テーブルの葉ノードのテーブルウォーカによる処理を例示する流れ図を表わす図である。
【図９】エンコーダ及び多数のヒット検出器から成る、１つの実施形態における多重ヒット検出器のブロックダイヤグラムである。
【図１０】図１０ａおよび図１０ｂの関係を示す図である。
【図１０ａ】１つの実施形態における多重ヒット検出器内に収納されたエンコーダを表わす図（その１）である。
【図１０ｂ】１つの実施形態における多重ヒット検出器内に収納されたエンコーダを表わす図（その２）である。
【図１１】１つの実施形態における多重ヒット検出器内に収納された多重ヒットチェッカを表わす図である。
【図１】
2006172499.tif 000003
【図１ａ】
2006172499.tif 000004
【図１ｂ】
2006172499.tif 000005
【図２】
2006172499.tif 000006
【図３】
2006172499.tif 000007
【図４】
2006172499.tif 000008
【図５】
2006172499.tif 000009
【図６】
2006172499.tif 000010
【図７】
2006172499.tif 000011
【図８】
2006172499.tif 000012
【図９】
2006172499.tif 000013
【図１０】
2006172499.tif 000014
【図１０ａ】
2006172499.tif 000015
【図１０ｂ】
2006172499.tif 000016
【図１１】
2006172499.tif 000017