(57)【要約】プロセッサ（１０）は、キャッシュ（１６）、第１ＴＬＢ（３０）、及びタグ回路（３６）を含む。キャッシュ（１６）は複数のキャッシュラインを記録するデータメモリ（２０）と、複数のタグを記録するデータメモリ（２０）とを含む。第１ＴＬＢ（３０）は、物理アドレス変換が第１ＴＬＢ（３０）に記録される複数の仮想ページを識別する仮想アドレスのページ部を記録する。タグ回路（３６）はキャッシュ（１６）に記録され、また、複数の仮想ページ内の複数のキャッシュラインのうちの１つまたはそれ以上を識別するように構成される。第１ＴＬＢ（３０）の第１仮想アドレスによるヒットと、タグ回路（３６）の第１仮想アドレスによるヒットに応じて、タグ回路（３６）はキャッシュ（１６）においてタグメモリ（２２）の読み出しを阻止するように構成される。
2007504552.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサ（１０）であって、
複数のキャッシュラインを記録するように構成されたデータメモリ（２０）および複数のタグを記録するように構成されたタグメモリ（２２）を含むキャッシュであって、前記複数のタグの各々は、前記複数のキャッシュラインの各々の１つに対応しているキャッシュ（１６）と、
前記複数のキャッシュラインのサブセットに対する第１仮想アドレスによって、前記キャッシュ（１６）でヒットを検出するように構成されたタグ回路（３６）とを含み、
前記タグ回路（３６）の前記第１仮想アドレスによるヒットに応じて、前記タグ回路（３６）はタグメモリ（２２）の読み出しを阻止するように構成されており、かつ、前記データメモリ（２０）は前記第１仮想アドレスに対応する第１キャッシュラインの少なくとも一部を出力するように構成される、プロセッサ。
【請求項２】
第１変換索引バッファ（ＴＬＢ）であって、物理アドレス変換が前記第１変換索引バッファに記録されるところの複数の仮想ページを識別する、仮想アドレスの複数のページ部を記録するように構成された第１のＴＬＢ（３０）をさらに含み、
前記タグ回路（３６）は前記第１ＴＬＢ（３０）に結合され、かつ、前記複数のキャッシュラインの前記サブセットは前記複数の仮想ページ内にあり、
前記タグ回路（３６）は、前記第１ＴＬＢの前記第１仮想アドレスによるヒットにさらに応じて、前記キャッシュ（１６）の前記タグメモリ（２２）の読み出しを阻止するように構成されている、請求項１に記載のプロセッサ。
【請求項３】
前記第１ＴＬＢ（３０）の第１仮想アドレスによるヒットと、前記タグ回路（３６）の前記第１仮想アドレスによるミスに応じて、前記キャッシュ（１６）は前記タグメモリ（２２）に記録された１つまたはそれ以上のタグを読み出すように構成され、かつ、前記キャッシュ（１６）で前記第１仮想アドレスがヒットするかどうかを検出するように構成される、請求項２に記載のプロセッサ。
【請求項４】
第２ＴＬＢ（３８）をさらに含み、
前記第２ＴＬＢ（３８）は前記第１ＴＬＢ（３０）のミスに応じてアクセスされ、
前記第２ＴＬＢ（３８）は第２ＴＬＢ（３８）のヒットに応じて前記第１仮想アドレスに対応する第１物理アドレスのページ部を提供するように構成されており、
前記キャッシュ（１６）は前記第１物理アドレスのタグ部を受信するように結合されるとともに、前記キャッシュ（１６）の前記ヒットを検出するために、前記第１物理アドレスの前記タグ部を前記タグメモリ（２２）からの少なくとも第１タグと比較するように構成されている、請求項３に記載のプロセッサ。
【請求項５】
前記第１ＴＬＢ（３０）は、第１の複数のエントリ（８０Ａ−８０Ｂ）を含み、前記第１の複数のエントリ（８０Ａ−８０Ｂ）の各々は仮想アドレスの複数のページ部のうち、対応するページ部を記録するように構成され、かつ、前記第１ＴＬＢ（３０）は前記第１仮想アドレスによってヒットした前記第１の複数のエントリのうちの第１エントリの表示を出力するように構成され、かつ、前記タグ回路（３６）は前記第１エントリの表示を受信するように結合され、かつ、前記タグ回路（３６）は第２の複数のエントリ（１００Ａ−１００Ｄ）を含み、前記第２の複数のエントリ（１００Ａ−１００Ｄ）のサブセットは前記第１ＴＬＢ（３０）の前記第１の複数のエントリ（８０Ａ−８０Ｂ）のうちの１つに対応し、かつ、前記キャッシュ（１６）に記録され、前記第１の複数のエントリ（８０Ａ−８０Ｂ）のうちの１つに記録されるページ部によって示されたページ内にあるキャッシュラインを識別し、かつ、前記タグ回路（３６）は前記第１エントリの前記表示に応じて、ヒットに対する前記サブセットをチェックするように構成される、請求項２に記載のプロセッサ。
【請求項６】
前記第２の複数のエントリ（１００Ａ−１００Ｄ）の各々は前記仮想アドレスのページ部に含まれず、かつ、前記仮想アドレスのキャッシュラインのオフセット部に含まれない仮想アドレスビットを記録するように構成される、請求項５に記載のプロセッサ。
【請求項７】
第１仮想アドレスを使用して、第１変換索引バッファ（ＴＬＢ）（３０）へアクセスするステップを含み、前記第１ＴＬＢ３０は、物理アドレス変換が前記第１ＴＬＢ（３０）に記録される複数の仮想ページを識別する仮想アドレスの複数のページ部を記録するように構成されており、
前記第１ＴＬＢ（３０）の前記第１仮想アドレスによるヒットに応じて、キャッシュ（１６）に記録され、かつ、複数の仮想ページ内にある複数のキャッシュラインを識別するように構成されたタグ回路（３６）へアクセスするステップを含み、
前記第１ＴＬＢ（３０）の前記第１仮想アドレスと前記タグ回路によるヒットを検出するステップを含み、かつ、
前記第１ＴＬＢ（３０）の前記第１仮想アドレスと前記タグ回路（３６）によるヒットに応じて、前記キャッシュ（１６）においてタグメモリ（２２）の読み出しを阻止するステップを含む、方法。
【請求項８】
前記第１ＴＬＢ（３０）の第１仮想アドレスによるヒットと、前記タグ回路（３６）の前記第１仮想アドレスによるミスに応答して、前記タグメモリ（２２）に記録された１つまたはそれ以上のタグを読み出し、かつ、前記キャッシュ（１６）で前記第１仮想アドレスがヒットするかどうかを検出する、請求項７に記載の方法。
【請求項９】
前記第１ＴＬＢ（３０）のミスに応じて第２ＴＬＢ（３８）にアクセスするステップをさらに含み、
前記第２ＴＬＢ（３８）は前記第２ＴＬＢ（３８）のヒットに応じて前記第１仮想アドレスに対応する第１物理アドレスのページ部を提供するように構成されており、
前記キャッシュ（１６）は、前記キャッシュ（１６）において前記ヒットを検出するために、前記第１物理アドレスを前記タグメモリ（２２）からの少なくとも第１タグと比較する、請求項７に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はプロセッサ分野に関し、より詳細には、プロセッサのキャッシング構造に関する。
【背景技術】
【０００２】
一般的にプロセッサには仮想アドレス指定が実装されており、また、最近にアクセスされたデータ、及び／または命令を記録するためのキャッシュも実装されている。通常、プロセッサはアクセスされる（つまり、読み出し又は書き込みされる）場所の仮想アドレスを生成し、そのアクセスがキャッシュ内でヒットするかどうかを判断するために、その仮想アドレスは物理アドレスに変換される。より詳細には、一般的に、キャッシュアクセスはその変換に並行して開始され、また、キャッシュアクセスがヒットであるかどうかを検出するためにその変換が使用される。
【０００３】
一般的に、キャッシュアクセスはプロセッサのクリティカル・タイミング・パス（critical timing path）の１つであり、また、キャッシュレイテンシも、プロセッサが到達可能なパフォーマンスレベルに非常に重要である。従って、プロセッサの設計者たちは多くの場合、キャッシュレイテンシを低減し、かつタイミング要件を満たすように、キャッシュ／変換設計の最適化に取り組んでいる。しかし、多くの最適化技術はキャッシュ／変換回路の消費電力を増加し得る。多くのプロセッサでは、キャッシュ／変換回路がプロセッサの全体の電力を最も消費するものの１つであり得る。
【０００４】
時間が経つにつれてプロセッサの電力消費は増えるので、プロセッサの電力消費の制御（及び、電力消費を削減するためのプロセッサの設計）の重要性は高まりつつある。多くの場合、キャッシュ／変換回路はプロセッサの電力を大量に消費するので、キャッシュ／変換回路の電力消費を削減する技術がより望ましくなる。
【０００５】
性能を向上させるために、プロセッサには多くの場合、セットアソシアティブキャッシュが実装されている。セットアソシアティブキャッシュでは、キャッシュにインデックスを付けた所与のアドレスは、そのアドレスが示したキャッシュラインを記録するために使用されてよい、一連の２つ以上のキャッシュラインの記録先を選択する。セットのキャッシュラインの記録先は、セットのウェイと呼ばれ、Wウェイを有するキャッシュは、Ｗウェイ・セットアソシアティブと呼ばれる（Ｗは１よりも大きい整数である）。一般的に、セットアソシアティブキャッシュのヒット率は同サイズのダイレクトマップキャッシュよりも高く、従って、ダイレクトマップキャッシュよりも高性能を提供することができる。しかし、一般的に、従来のセットアソシアティブキャッシュは同サイズのダイレクトマップキャッシュよりも多くの電力を消費する。通常、キャッシュにはキャッシュされたデータを記録するデータメモリと、キャッシュされたデータのアドレスを識別するタグを記録するタグメモリとが含まれる。
【０００６】
従来のセットアソシアティブキャッシュでは、データメモリとタグメモリの各ウェイは入力アドレスに応答してアクセスされる。そのアドレスによってヒットされるウェイを判断するために、セットの各ウェイに対応するタグが比較されてよく（もしあれば）、また、対応するウェイからのデータはキャッシュによって出力されるために選択される。従って、データメモリとタグメモリの各ウェイは電力を消費してアクセスされ得る。更に、キャッシュアクセスは多くの場合でクリティカル・タイミング・パスであることから、タグメモリとデータメモリアクセスはタイミングとレイテンシのために最適化されうるので、これにより更に電力消費が増える。また更に、キャッシュは一般的に物理アドレスとともにタグ付けされ、そのために、変換回路もまた一般にクリティカルパスであるので、タイミングとレイテンシのために最適化され、これにより変換回路の電力消費が増加し得る。
【発明の開示】
【発明の実施形態】
【０００７】
一実施形態では、プロセッサは、キャッシュ、第１の変換索引バッファ（ＴＬＢ：ｔｒａｎｓｌａｔｉｏｎ  ｌｏｏｋａｓｉｄｅ  ｂｕｆｆｅｒ）、及び第１ＴＬＢに結合されたタグ回路を含む。キャッシュは複数のキャッシュラインを記録するように構成されたデータメモリと、複数のタグを記録するように構成されたタグメモリとを含む。複数のタグの各々は、複数のキャッシュラインのうちの各々の１つに対応する。第１ＴＬＢは、物理アドレス変換が第１ＴＬＢに記録される、複数の仮想ページを識別する複数の仮想アドレスのページ部を記録するように構成される。タグ回路はキャッシュに記録され、かつ、複数の仮想ページに記録される複数のキャッシュラインのうちの1つ以上を識別するように構成される。第１ＴＬＢの第１仮想アドレスによるヒットと、タグ回路の第１仮想アドレスによるヒットに応答して、タグ回路はキャッシュにおいてタグメモリの読み出しを阻止するように構成されている。
【０００８】
その他の実施形態では、ある方法が考えられる。第１ＴＬＢは第１仮想アドレスとともにアクセスされる。第１ＴＬＢは、物理アドレス変換が第１ＴＬＢに記録される、複数の仮想ページを識別する、複数の仮想アドレスのページ部を記録するように構成される。第１ＴＬＢの第１仮想アドレスによるヒットに応答して、タグ回路がアクセスされる。タグ回路は、キャッシュに記録され、かつ、複数の仮想ページに記録される複数のキャッシュラインを識別するように構成される。第１ＴＬＢの第１仮想アドレスとタグ回路によってヒットが検出される。第１ＴＬＢの第１仮想アドレスとタグ回路によるヒットに応答して、キャッシュのタグメモリの読み出しは阻止される。
【０００９】
更に別の実施形態では、プロセッサはキャッシュとタグ回路とを含む。キャッシュは複数のキャッシュラインを記録するように構成されたデータメモリと、複数のタグを記録するように構成されたタグメモリとを含む。複数のタグの各々は、複数のキャッシュラインの各々の１つに対応する。タグ回路は、複数のキャッシュラインのサブセットのために第１仮想アドレスによってキャッシュのヒットを検出するように構成される。タグ回路の第１仮想アドレスによるヒットに応答して、タグ回路はタグメモリの読み出しを阻止するように構成され、また、データメモリは第１仮想アドレスに対応する第１キャッシュラインの少なくとも一部を出力するように構成される。
【００１０】
以下の詳細な説明は添付の図面を参照しており、以下に簡単にその説明をする。
本発明は、様々な改良を行い、また、他の形態で実施することができるが、ここに説明されている特定の実施例は、例として示したものであり、以下にその詳細を記載する。しかし当然のことながら、ここに示した特定の実施例は、本発明を開示されている特定の形態に限定するものではなく、むしろ本発明は添付の請求項によって規定されている発明の範疇に属するすべての改良、等価物、及び変形例をカバーするものである。
【００１１】
図１を参照すると、プロセッサ１０の一実施形態の一部のブロック図が示されている。例示の実施形態では、プロセッサ１０はアドレス生成ユニット（ＡＧＵ：address generation unit）１２、ウェイ予測器(way predictor)１４、データキャッシュ１６、及び変換／フィルタ回路１８を含む。データキャッシュ１６はデータキャッシュデータメモリ２０とデータキャッシュタグメモリ２２とを含む。ＡＧＵ１２とウェイ予測器１４はアドレスオペランドを受信するように結合されている。ＡＧＵ１２は仮想アドレス（ＶＡ：virtual address）を生成するように構成されており、かつ、その仮想アドレスを、ウェイ予測器１４、データキャッシュ１６（および、より詳細には、データキャッシュデータメモリ２０、及びデータキャッシュタグメモリ２２）、および、変換／フィルタ回路１８へ提供するように結合されている。ウェイ予測器１４はデータキャッシュデータメモリ２０へウェイ予測を提供するよう結合されており、データキャッシュデータメモリ２０はウェイ予測と仮想アドレスに応答してデータを送るように構成されている。ウェイ予測器１４は、早期にミスを表示するためにも結合されている。変換／フィルタ回路１８はデータキャッシュ１６に結合され、また、変換索引バッファ（ＴＬＢ：translation lookaside buffer）のミス表示を提供するために結合されておる。データキャッシュ１６はキャッシュミス表示を生成するように構成される。
【００１２】
ＡＧＵ１２はメモリオペレーションに対するアドレスオペランドを受信するために結合され、また、アドレスオペランドに応答して仮想アドレスを生成するように構成される。例えば、ＡＧＵ１２は、仮想アドレスを生成するためにアドレスオペランドを追加するように構成された加算回路を含んでよい。本文中で用いられているように、メモリオペレーションには（メモリの位置を読み出す）読み出しオペレーションと（メモリの位置を書き込む）書き込みオペレーションが含まれてよい。ある種の実施形態では、メモリオペレーションはメモリオペランドを特定する暗黙命令の一部であり、もしくは、読み出し又は書き込み命令（移動命令と呼ばれることもある）に応答して実行される明白なオペレーションであり得る。アドレスオペランドは、メモリオペランドのアドレスを生成するために使用されるものと定義されているメモリオペレーションに対応する命令のオペランドであってよい。アドレスオペランドには、プロセッサ１０が実装するレジスタからのレジスタ値、命令に符号化された変位データ、及び、ある種の実施形態では、プロセッサ１０により実装されたセグメンテーション機構からのセグメントベースアドレス、のうちの１つ以上が含まれる。仮想アドレスには、ページング変換機構(the paging translation mechanism)を通じて（プロセッサ１０を含むコンピュータシステムのメモリをアドレス指定するために使用される）物理アドレスへの変換がまだ行われていない命令のアドレスオペランドから生成されたアドレスが含まれる。例えば、一実施形態では、プロセッサ１０はｘ８６命令セットアーキテクチャ（ＩＡ−３２としても周知である）を実装してよい。そのような実施形態では、線形アドレスが仮想アドレスの例とされてよい。ページング変換がイネーブルにされない場合は、仮想アドレスは物理アドレスと等価になり得る。
【００１３】
プロセッサ１０により実装されるページング機構は、ページ単位で仮想アドレスを物理アドレスへ変換する。つまり、対応する物理アドレスを識別するために、ページの各仮想アドレスに対して使用される１つの変換エントリがあってよい。ページは任意のサイズであってよい。例えば、４キロバイトは一般的なサイズである。いくつかのモードでは、ｘ８６命令セットは２メガバイトと４メガバイトのページサイズの特定も行う。仮想アドレスの最下位ビットはページ内のオフセットを定義し、またそのような最下位ビットはページング機構によって変換されない。例えば、４キロバイトのページサイズで、仮想アドレスの最下位１２ビットはページのオフセットを形成する。仮想アドレスの残りのビットは、ページのオフセットを除いて、仮想アドレスのページ部を形成してよい。このページ部は仮想アドレスに対する物理アドレス変換を選択するために、ページング機構で使用されてよい。別の方法から見ると、仮想アドレスのページ部は物理アドレス変換によって物理ページに変換される仮想ページを定義してよい。
【００１４】
プロセッサ１０は電力消費を削減するために１つ以上の技術を用いてよい。例えば、変換／フィルタ回路１８は、比較的小さなＴＬＢ（本文ではマイクロＴＬＢと称す）とタグ回路（本文ではマイクロタグ回路と称す）とを含む。マイクロタグ回路は、
（ｉ）マイクロＴＬＢが変換を記録している各仮想ページにあり、また、
（ｉｉ）データキャッシュ１６に記録されている、
比較的に少数のキャッシュラインのタグを記録するように構成されてよい。
【００１５】
マイクロＴＬＢは仮想アドレスに応答してアクセスされてよく、また、マイクロＴＬＢでヒットが検出されると、変換／フィルタ回路１８で、より大きなメインＴＬＢ（もしくは複数のＴＬＢ）へのアクセスが回避されてよい。そのような場合に、メインＴＬＢへアクセスする際に消費されるであろう電力が節約され得る。更に、マイクロＴＬＢヒットが検出されると、マイクロタグがアクセスされてよい。マイクロタグにおいてヒットが検出されると、キャッシュのヒット／ミスを判断するための、データキャッシュタグメモリ２２の読み出しもまた回避されてよい（その結果、データキャッシュタグメモリ２２へアクセスする際に消費されるであろう電力も同様に節約され得る）。いずれの場合でも（マイクロタグにおけるヒット、又はデータキャッシュタグメモリ２２におけるヒット）、ヒットしたキャッシュラインからのデータはデータキャッシュデータメモリ２０から送られてよい。従って、マイクロＴＬＢはメインＴＬＢへアクセスするためのフィルタとして機能してよく、また、マイクロＴＬＢとマイクロタグはデータキャッシュタグメモリ２２へアクセスするためのフィルタとして機能してよい。
【００１６】
プロセッサ１０に実装されてよい別の電力節約技術は、データキャッシュ１６がセットアソシアティブである実施形態に対してウェイ予測器１４を使用する。ウェイ予測器１４はデータキャッシュ１６へアクセスするメモリオペレーションに対して、データキャッシュデータメモリ２０のためにウェイ予測を生成する。ウェイ予測と仮想アドレスに応答して、データキャッシュデータメモリ２０はデータを使用し得る（図１には示さず）様々なプロセッサ回路へデータを送ることができる（図１のデータフォーワード）。データキャッシュデータメモリ２０から読み出されて送られたデータはキャッシュライン、またはキャッシュラインの一部を含んでよい。データはウェイ予測に応答して送られるので、変換回路とキャッシュタグ回路はもはやプロセッサ１０の回路パスの一部ではなくなり得る。ある種の実施形態では、変換回路とキャッシュタグ回路は、回路においてある程度のレイテンシを犠牲にしても、低電力消費の回路を使用して実装されてよい。任意に、マイクロＴＬＢやマイクロタグなどのフィルタ構造は、変換回路のレイテンシやキャッシュタグの比較を増加してよい（また更に、より大きなＴＬＢ構造とデータキャッシュタグメモリ２２へのアクセスを減らすことによって、全体の電力消費を削減することができる）。更に、データキャッシュデータメモリ２０の電力消費削減を可能にすることにより、プロセッサ１０の電力消費を削減するために、ウェイ予測器１４を使用してもよい。以下に、データキャッシュデータメモリ２０のための様々な設計を、図９に関連してより詳細に説明している。
【００１７】
ウェイ予測は、変換／フィルタ回路１８のマイクロＴＬＢ／マイクロタグ、及び／または、データキャッシュタグメモリ２２からのタグとのタグ比較を使用して有効にされてよい。ウェイ予測が正しい場合は、ウェイ予測に応答してデータキャッシュデータメモリ２０によって送られたデータでオペレーションを継続してよい。その一方で、ウェイ予測が間違っている場合は、メモリオペレーションをやり直してよい。その他の形態では、ある種の実施形態において、ウェイ予測が間違っている場合に、アドレスがデータキャッシュ１６でミスとなるように、データキャッシュ１６は代替品(replacement)を制御してよい。ある種の実施形態では、ウェイ予測を検証する間に正確なウェイ予測が判断されてよく、また、メモリオペレーションをやり直す間に正確なウェイがアクセスされてよい。その他の実施形態では、メモリオペレーションをやり直す間に、予測されていない各ウェイについてヒット検索を行ってよい（例えば、データキャッシュ１６において従来のセットアソシアティブルックアップが実行されてよい）。さまざまな方法でメモリオペレーションをやり直すことができる。例えば、ある種の実施形態では、バッファは実行のために既に発行済みの命令を記録することができる（例えば、スケジューラもしくはリザベーションステーション）。メモリオペレーションはバッファから再発行されてよい。その他の実施形態では、メモリオペレーションに対応する命令と後続の命令は（例えば、命令キャッシュもしくはメモリから）再フェッチ（refetch）されてよい。
【００１８】
ある種の実施形態では、ウェイ予測器１４を使用することによって、データキャッシュタグメモリ２２の電力消費を削減することができる。予測されたウェイのタグにアクセスし、比較するだけで、ウェイ予測を検証することができる。従って、ある種の実施形態は、データキャッシュタグメモリ２２の予測されたウェイだけにアクセスする（マイクロタグにおいてミスが検出され、その結果、キャッシュミスが発生しているかどうかを検出するために、データキャッシュタグメモリ２２においてアクセスが行われる場合）。予測されたウェイでミスが検出されると、上述のようにメモリオペレーションをやり直してよい。そのような実施形態では、データキャッシュタグメモリ２２は図１の点線矢印で例示されているようにウェイ予測を受信してよい。
【００１９】
ウェイ予測器１４は、所与のメモリオペレーションに対するウェイ予測が生成され得ない場合に、早期のミス表示を提供することもできる。ウェイ予測器には、キャッシュの各ウェイに記録されるアドレス表示を記録するメモリを含むことができ、また、メモリオペレーションのウェイ予測を生成するために、そのアドレス表示を対応するメモリオペレーションの仮想アドレス表示と比較することができる。対応する表示がウェイ予測器のいずれの表示ともマッチングしない場合は、ウェイ予測は生成され得ない（また、ミスが検出され得る。）早期のミス表示は、データキャッシュ１６においてミスが発生し、その結果、変換／フィルタ回路１８からのキャッシュミスを待つよりも早くＬ２キャッシュがアクセスを開始できることをＬ２キャッシュへ（Ｌ１キャッシュとして機能するデータキャッシュ１６とともに）暗示するものとして使用されてよい。
【００２０】
データキャッシュ１６はキャッシュミスを示し、また、変換／フィルタ回路１８は修正措置（例えば、ＴＬＢに記録される変換を配置するためのテーブルウォーキング（table walking）、ミスをしたキャッシュラインをデータキャッシュ１６に埋めるためのキャッシュフィルなど）のために、プロセッサ１０のその他の回路へＴＬＢミスを示すことができる。テーブルウォーキングを行い、かつ、メモリへアクセスしてミスをしたキャッシュラインを検索するための回路は図１に示していない。
【００２１】
例示の実施形態では、データキャッシュ１６はセットアソシアティブであってよい。その他の実施形態では、データキャッシュ１６はフルアソシアティブであってよく、また、ウェイ予測器１４はデータキャッシュ１６の任意のエントリにおけるヒットを予測するために使用されてよい。ウェイ予測器１４を実装しない実施形態はその他の構造（例えば、ダイレクトマップ）を有すことができる。本文で使用されているように、キャッシュラインは、キャッシュ（例えば、データキャッシュもしくは命令キャッシュ）の割当／割当解除ユニットである、多数の連続バイトであってよい。例えば、キャッシュラインはいずれのサイズのキャッシュラインを実装可能であるが、３２の連続バイト、もしくは６４の連続バイトであってよい。データキャッシュデータメモリ２０は複数のエントリを含んでよく、各エントリはキャッシュラインを記録するように構成される。各エントリは、セットアソシアティブの実施形態のために、Ｗのキャッシュラインセットに配置されてよい。データキャッシュタグメモリ２２も複数のエントリを含み、各エントリはデータキャッシュデータメモリ２０の対応するエントリに対するタグを記録するために構成される。データキャッシュタグメモリ２２の各エントリは、データキャッシュデータメモリ２０の配置に対応して、Ｗのセットに配置されてよい。
【００２２】
ある種の実施形態では、データキャッシュ１６は物理的にタグ付けされてよい（つまり、データキャッシュタグメモリ２２の各タグは物理アドレスであってよい）。一般的に、所与の物理アドレスに対応するデータがデータキャッシュ１６に記録される場合に、データキャッシュ１６においてヒットが検出されてよい。所与の物理アドレスに対応するデータがデータキャッシュ１６に記録されない場合は、ミスが検出される。しかし、ある場合においては、データキャッシュ１６が物理的にタグ付けされている場合であっても、データキャッシュ１６の仮想アドレスヒットについて議論することが便利であり得る。仮想アドレスは、（仮想アドレスが変換する）対応の物理アドレスがヒットである場合、データキャッシュ１６でヒットする。ある場合においては、仮想アドレスは（例えば、以下で更に詳細を説明しているマイクロタグにおいて）実際には対応する物理アドレスを使用せずにヒットとして検出され得る。
【００２３】
一般に、プロセッサ１０は所望する設計に従う任意のその他の回路を含んでよい。様々な実施形態において、プロセッサ１０はスーパースカラ、もしくはスカラであってよく、また、インオーダー命令実行、もしくは、アウトオブオーダー命令実行などを実装することができ、かつ、上述の特徴を実装するための回路を含むことができる。ある種の実施形態では、例えば、１つ以上のＡＧＵ１２が提供され、また、そのＡＧＵ１２は仮想アドレスを並列に生成することができる。そのような実施形態のために、ウェイ予測器１４、データキャッシュ１６、および変換／フィルタ回路１８は、複数の仮想アドレスを並列に処理するための回路を含んでよく、もしくは、それ以外に複数の仮想アドレスを処理するための回路を含んでよい。
【００２４】
電力消費を削減するために、ともに使用されるものとして、ウェイ予測器１４と、変換／フィルタ回路１８のマイクロＴＬＢ／マイクロタグの特徴が説明されている一方で、マイクロＴＬＢ／マイクロタグを実装しないでウェイ予測器１４を実装する各実施形態が考えられる。更に、（例えば、ウェイの選択が決定されるまで、データキャッシュ１６からのデータ送信を遅延させることによって）ウェイ予測器１４を実装せずにマイクロＴＬＢ／マイクロタグが実装される実施形態が考えられる。例えば、ある種の実施形態では、マイクロタグはその中に検出されたヒットに対してウェイ選択を出力してよい。
【００２５】
データキャッシュとともに使用されるものとして、マイクロＴＬＢ／マイクロタグ回路とウェイ予測器１４が例示されているが、マイクロＴＬＢ、マイクロタグ、及び／または、ウェイ予測器１４のいずれも、所望に応じてプロセッサの命令キャッシュとともに使用されてよい。
【００２６】
次に図２を参照すると、変換／フィルタ回路１８の一実施形態のブロック図が示されている。例示の実施形態では、変換／フィルタ回路１８はマイクロＴＬＢ３０（マイクロＴＬＢタグ回路３２とマイクロＴＬＢデータ回路３４とを含む）、マイクロタグ回路３６、メインＴＬＢ３８（メインＴＬＢタグ回路４０とメインＴＬＢデータ回路４２とを含む）、多重通信回路４４、及びインバータ４６、４８を含む。図２にはデータキャッシュタグメモリ２２を含むデータキャッシュ１６の一部、キャッシュヒット／ミス回路５０、及びコンパレータ５２も含まれる。マイクロＴＬＢ３０（及び、より詳細には、マイクロＴＬＢタグ回路３２）、マイクロタグ回路３６、データキャッシュタグメモリ２２、及びＴＬＢ３８及び、より詳細には、メインＴＬＢタグ回路４０）は、ＡＧＵ１２から仮想アドレスを受信するように結合されている。マイクロＴＬＢタグ回路３２は、マイクロＴＬＢデータ回路３４、マイクロタグ回路３６、多重通信回路４４、及びインバータ４６（更に、メインＴＬＢタグ回路４０へ結合されている）へヒット信号を出力するように構成されている。マイクロＴＬＢタグ回路３２は更に、マイクロＴＬＢデータ回路３４とマイクロタグ回路３６へエントリ表示を出力するように構成されている。マイクロＴＬＢデータ回路３４はメインＴＬＢデータ回路４２のように、物理アドレス（ＰＡ）を多重通信回路４４へ出力するように構成されている。多重通信回路４４の出力はコンパレータ５２に結合されている。メインＴＬＢタグ回路４０はメインＴＬＢデータ回路４２へ結合され、ＴＬＢのミス表示を与える。マイクロタグ回路３６は（更に、データキャッシュタグメモリ２２に結合されている）インバータ４８へ、また、キャッシュヒット／ミス回路５０へヒット信号を出力するように構成されている。更に、キャッシュヒット／ミス回路５０はコンパレータ４２と結合され、キャッシュミス表示を与える。
【００２７】
マイクロＴＬＢ３０はＡＧＵ１２から仮想アドレスを受信し、仮想アドレスのページ部をマイクロＴＬＢ３０に記録された変換に対応する各仮想アドレスのページ部と比較する。より詳細には、マイクロＴＬＢタグ回路３２は各仮想アドレスのページ部を記録する複数のエントリを含んでよい。対応する物理アドレスと、変換を行ったページテーブルからのその他の情報は、マイクロＴＬＢデータ回路３４に記録されてよい。マイクロＴＬＢタグ回路３２は比較を行い、仮想アドレスがマイクロＴＬＢでヒットするかどうかを示すヒット信号を出力し、ヒットが示されると、ヒットしたエントリを示すエントリが示される。マイクロＴＬＢデータ回路３４はエントリ表示を受信してよく、また、対応する物理アドレスを多重通信回路４４へ出力してよい。ヒット信号により、コンパレータ５２への出力として、多重通信回路４４が物理アドレスをマイクロＴＬＢ３０から選択させるようにしてよい。本文にはフルアソシアティブの実施形態をより詳細に説明しているが、その他の実施形態はその他の構成を採用してよい。様々な実施形態において、マイクロＴＬＢ３０は例えばフルアソシアティブ、セットアソシアティブ、もしくはダイレクトマップ構造を持つことができる。
【００２８】
更に、マイクロＴＬＢ３０からのヒット信号は、マイクロタグ回路３６へのイネーブル(enable)として機能してよい。マイクロタグ回路３６はマイクロＴＬＢ３０が変換を記録する仮想ページ内の複数のキャッシュラインのタグを記録してよい。従って、マイクロＴＬＢにミスがあると、マイクロタグ回路３６もまたミスをする。マイクロＴＬＢにヒットがあると、マイクロタグ回路３６はヒットすることが可能である。更に、マイクロタグ回路３６はエントリ表示を受信する。マイクロタグ回路３６は、仮想アドレスに対してマイクロタグ回路３６にヒットがあるかどうかを判断し、かつ、ヒット信号を生成する。マイクロタグ回路３６にヒットがあると、仮想アドレスはデータキャッシュ１６でヒットし、また、データキャッシュタグメモリ２２におけるタグアクセスは阻止され得る。従って、マイクロタグ回路３６からのヒット信号は、データキャッシュタグメモリ２２に対して、ディセーブルとして機能し、データキャッシュタグメモリ２２が、仮想アドレスに応答していずれのタグの読み出しを阻止するようにする。従って、インバータ４８はマイクロタグ回路３６からヒット信号をインバートし、イネーブルとしてデータキャッシュタグメモリ２２へ出力する。キャッシュヒット／ミス回路５０もマイクロタグ回路３６からヒット信号を受信し、また、ヒット信号がマイクロタグ回路３６でヒットを示す場合は、仮想アドレスに対してキャッシュミスを示すことができない。コンパレータ５２からのヒット／ミスはこの場合は無視されてよい。
【００２９】
マイクロタグ回路３６にミスがあると（もしくは、マイクロＴＬＢ回路３０にミスがあるため、マイクロタグ回路３６がイネーブルにされない場合）、データキャッシュタグメモリ２２はイネーブルにされ、また、タグをコンパレータ５２へ出力する。ウェイ予測器１４を実装するある種の実施形態では、予測されたウェイからのタグだけが出力されてよい。そのような実施形態に対して、データキャッシュタグメモリ２２はウェイ予測（ＷＰ：way prediction）を受信するように結合されてよい。その他の実施形態は、比較のためにインデックス付きセットに各タグを出力してよい。そのような実施形態では、予測されていないウェイでヒットが起きる場合にキャッシュフィルが発生しないようにするため、キャッシュミス表示は予測されていないウェイのヒットを除いて、ミス、もしくは予測されたウェイのミスを表示してよい。ある種の実施形態では、予測されていないウェイでヒットが起きないようにするため、キャッシュミスが発生する場合に、リプレースメントウェイの選択が制御されてよい。そのようなリプレースメントの例は図９と１０に関連して以下に説明されている。コンパレータ５２は、キャッシュヒット／ミス回路５０へ比較結果を提供し、該回路５０はそれに応じてキャッシュミス表示を生成する。データキャッシュタグメモリ２２でヒットがあり、また、マイクロＴＬＢ３０でヒットがあった場合、マイクロタグ回路３６をデータキャッシュタグメモリ２２からタグとともに読み出してもよい。
【００３０】
マイクロタグ回路３６はデータキャッシュタグメモリ２２にもある各タグを記録するので、マイクロタグ回路３６はデータキャッシュタグメモリ２２とコヒーレンシを維持されうる。キャッシュラインは、ミスをしたキャッシュラインのキャッシュフィルを介したリプレースメントにより、データキャッシュ１６で無効にされてよく、もしくは、プロセッサ１０が接続されている相互接続のその他のプロセッサ又はエージェントによるアクセスから生成されるスヌープヒットにより無効にされてよい。一実施形態では、マイクロタグ回路３６の全体のコンテンツはデータキャッシュタグメモリ２２のアップデートに応じて無効にされてよい。他の形態では、アップデートが起きているインデックスと同じキャッシュインデックスを有するマイクロタグ回路３６のエントリだけが無効にされてよい。また別の実施形態では、（ｉ）アップデートが起きているインデックスと同じキャッシュインデックス、及び（ｉｉ）（対応のマイクロＴＬＢエントリにおいて）、データキャッシュ１６で無効にされているキャッシュラインと同じ仮想アドレス、を有するマイクロタグ回路３６の各エントリだけが無効にされ得る。
【００３１】
マイクロタグ回路３６はマイクロＴＬＢ３０のエントリにより変換される仮想ページ内に各タグを記録する。従って、マイクロＴＬＢ３０がアップデートされると、マイクロタグも同様にアップデートされてよい。一実施形態では、マイクロＴＬＢ３０がアップデートされると、マイクロタグ回路３６の全体のコンテンツは無効にされてよい。他の形態では、変更されたマイクロＴＬＢエントリに対応するマイクロタグ回路３６の各タグが局所的に無効にされてよい。
【００３２】
マイクロＴＬＢ３０はメインＴＬＢ３８のフィルタとしても機能する。つまり、マイクロＴＬＢ３０においてヒットがあると、メインＴＬＢ３８へのアクセスが阻止される。従って、マイクロＴＬＢ３０によって出力されたヒット信号は、インバータ４６によりインバートされ、また、メインＴＬＢタグ回路４０のイネーブル入力へ入力されてよい。メインＴＬＢタグ回路４０はイネーブル入力がアサートにされない場合はメインＴＬＢタグへのアクセスを阻止してよい。
【００３３】
マイクロＴＬＢ３０でミスがあると、メインＴＬＢタグ回路４０は、仮想アドレスがメインＴＬＢ３８でヒットするかどうかを判断してよい。ヒットがあると、メインＴＬＢデータ回路４２は対応の物理アドレスを多重通信回路４４へ出力するためにアクセスされてよい。更に、マイクロＴＬＢ３０はメインＴＬＢ３８からの変換とともに読み出しされてよい。マイクロＴＬＢ３０でミスがあるために、多重通信回路４４はコンパレータ５２への出力として、メインＴＬＢデータ回路４２が出力する物理アドレスを選択する。メインＴＬＢ３８がイネーブルにされ、メインＴＬＢ３８でミスが検出されると、メインＴＬＢ３８は、ページテーブルのテーブルウォークを所望の変換に配置させるようにＴＬＢミス表示を生成する。ある種の実施形態では、テーブルウォークの間、電力消費を削減するために、プロセッサ１０はオペレーションを休止することができる。一実施形態では、メインＴＬＢ３８が読み出される際にはマイクロＴＬＢ３０は読み出され得ない。マイクロＴＬＢ３０のページに対して後続のミスが検出され、メインＴＬＢ３８においてヒットが検出され、そのときにマイクロＴＬＢ３０が読み出され得る。他の形態では、マイクロＴＬＢ３０はメインＴＬＢ３８が読み出されるのと同時に読み出されてよい。
【００３４】
マイクロＴＬＢ３０はメインＴＬＢ３８にも記録される変換を記録するので、マイクロＴＬＢ３０はメインＴＬＢ３８と一貫性が維持されてよい。エントリが（メインＴＬＢ３８のミスと成功したテーブルウォークに応答して）メインＴＬＢ３８に上書きされる場合は、対応するエントリ（もしあれば）はマイクロＴＬＢ３０において無効にされる。一実施形態では、マイクロＴＬＢ３０の全体のコンテンツは、メインＴＬＢ３９が新しいエントリとともに読み出しされる場合に無効とされ得る。
【００３５】
一実施形態では、メインＴＬＢ３８は２つのＴＬＢを含んでよい。１つは、４キロバイトのページサイズの変換を記録し、もう1つは、２メガバイトもしくは４メガバイトのページサイズの変換を記録するものである。４キロバイトのＴＬＢはどのような構造を有していてもよいが、一実装品では、４ウェイの５１２エントリのＴＬＢ構造を有す。２メガバイト／４メガバイトのＴＬＢはどのような構造を有していてもよいが、一例では、８エントリでフルアソシアティブのＴＬＢ構造を有す。ｘ８６命令セットアーキテクチャを実装している一実施形態では、ＣＲ３構造のレジスタはメモリのページテーブルのベースアドレスを記録する。メインＴＬＢ３８の各エントリは、メインＴＬＢ３８がＣＲ３アドレスの変化に応答して無効にされる必要がないように、変換が読み出されたＣＲ３アドレスとタグ付けされてよくい。ある種の実施形態において、マイクロＴＬＢ３０のエントリは同様にタグ付けされ、もしくはタグ付けされず、その代わり、ＣＲ３アドレスの変化に応答して無効にされ得る。
【００３６】
ヒット信号はマイクロＴＬＢ３０とマイクロタグ回路３６が与えるものとして説明されているが、一般的に、ヒットが検出されるかどうかを示す任意の数の信号を含んでヒット表示が与えられてよい。さらに、ヒットしたエントリを識別するヒット表示とエントリ表示を出力するものとしてマイクロＴＬＢ３０が示されているが、任意のヒットとエントリの表示が与えられてよい。例えば、一実施形態では、ヒットとエントリの表示はマイクロＴＬＢ３０のエントリに対応するワンホットエンコーディングに組み合わせられてよい。ワンホットエンコーディングは（アサートされたいずれのビットとともに）ヒットがあることを示すことができ、また、アサートされたビットを介してヒットしたエントリを示すことができる。
【００３７】
ある種の実施形態では、変換／フィルタ回路１８はいくつかのパイプラインステージにわたって動作可能であってよい。パイプライン記録デバイス（例えば、フロップ、レジスタ、など）は図２に例示されていない。パイプラインステージの任意の分割が用いられてよい。例えば、図３にはプロセッサ１０の一実施形態により実装されてよいパイプラインの一例を例示している。図３の垂直点線はクロックサイクルを定める。クロックサイクルはＡＧ（アドレス生成）、ＤＣ１（データキャッシュ１）、ＤＣ２（データキャッシュ２）、及び、ＤＣ３（データキャッシュ３）に分類される。
【００３８】
ＡＧステージ中に、ＡＧＵ１２はアドレスオペレーションから仮想アドレスを生成する（参照符号６０）。さらに、この実施形態において、ウェイ予測器１４はウェイ予測を生成する（参照符号６２）。ウェイ予測１４はアドレスオペランドを受信し、また、ウェイ予測値を記録するメモリをアドレス指定するために、サムアドレスインデキシング（sum address indexing）(以下に詳細を説明する)を実行してよい。他の形態では、ＡＧＵ１２からの仮想アドレスは、ウェイ予測メモリにインデックスを付けるために使用されてよい。その他の形態では、ウェイ予測器１４はＤＣ１ステージで動作してもよい。
【００３９】
ＤＣ１ステージの間に、マイクロＴＬＢタグ回路３２はアクセスされ、マイクロＴＬＢ３０のヒット／ミスが判断される（参照符号６４）。マイクロＴＬＢ３０においてヒットがあると、マイクロタグ回路３６はＤＣ２ステージにおいてアクセスされ（参照符号６６）、また、マイクロＴＬＢデータ回路３４はＤＣ３ステージ中にアクセスされる（参照符号６８）。マイクロタグ回路３６においてヒットがあると、データキャッシュタグアクセスが回避され、マイクロタグ回路３６のヒットを介してデータキャッシュ１６のヒットが検出される。マイクロタグ回路３６においてミスがあると、データキャッシュタグメモリ２２はＤＣ３ステージにおいてアクセスされ（参照符号７０）、また、マイクロＴＬＢデータ回路３４の出力と比較される。
【００４０】
マイクロＴＬＢ３０においてミスがあると、メインＴＬＢタグ回路４０はＤＣ２ステージ中にアクセスされ（参照符号７２）、また、メインＴＬＢタグ回路４０においてヒットがあると、ＴＬＢデータ回路４２はＤＣ３ステージにおいてアクセスされる（参照符号８４）。ＴＬＢデータ回路４２の出力は、ＤＣ３ステージのデータキャッシュタグメモリ２２の出力と比較される。
【００４１】
更に、ＤＣ１ステージ中に、データキャッシュデータメモリ２０はアクセスされ、予測されたウェイからのデータが出力される（参照符号７６）。データはＤＣ２ステージにおいて送られる（参照符号７８）。
【００４２】
次に図４を参照すると、マイクロＴＬＢタグ回路３２の一実施形態のブロック図が示されている。図４の実施形態において、マイクロＴＬＢタグ回路３２は、エントリ８０Ａと８０Ｂを含む一連のエントリと、エントリ８０Ａと８０Ｂに結合された、各々に対応する比較回路８２Ａと８２Ｂと、エントリ８０Ａ−８０Ｂと比較回路８２Ａ−８２Ｂに結合された制御回路８４と、を含む。比較回路８０Ａと８０ＢはＡＧＵ１２から仮想アドレスを受信するように結合されている。制御回路８４は、最長時間未使用の（ＬＲＵ：least recently used）ストレージ８６を含み、また、マイクロＴＬＢタグ回路３２のヒット信号とエントリ表示出力を生成するように構成されている。
【００４３】
マイクロＴＬＢタグ回路３２は任意の数のエントリ８０Ａ−８０Ｂを含んでよい。例えば、一実施形態では４つのエントリが実装されてよい。その他の実施形態では、４つ以上の、もしくは４つ以下のエントリを実装してよい。各エントリ８０Ａ−８０Ｂには、バリッドビット（Ｖ）、エントリ（及び、マイクロＴＬＢデータ回路３４の対応するエントリで、マイクロＴＬＢ３０のエントリを共に形成する）によって変換される仮想アドレスのページ部（ＶＡ［Ｎ−１：１２］）を記録する仮想アドレスフィールド、及び、２メガバイトページ変換から変換されているかどうかを示す２Ｍビット、を含んでよい。従って、本発明ではＮ−ビットの仮想アドレスが使用され、Ｎは整数である。例えば、Ｎは、ある種の実施形態では３２、その他の実施形態では４８であってよい。その他の実施形態では、Ｎは３２から６４までのいずれの整数であってよい。一般的に、各エントリは任意のタイプのストレージを含んでよい。例えば、ある実施形態では、レジスタ、フリップフロップ、もしくはその他のタイプのクロックドストレージ(clocked storage)デバイスを使用してもよい。
【００４４】
比較回路８２Ａ−８２ＢはＡＧＵ１２からの仮想アドレスの少なくともページ部を受信し、その仮想アドレスのページ部を対応するエントリ８０Ａ−８０Ｂに記録されたページ部と比較する。例示している実施形態では、最小ページサイズである４キロバイトを実装し（従って、ビット１１：０は仮想アドレスのページ部には含まれない）、また、ｘ８６命令セットアーキテクチャとの互換性のために２メガバイトのページサイズを実装することもできる。その他のページサイズも実装できる。例示の実施形態では、比較回路８２Ａ−８２Ｂは２つのマッチング信号、ｍａｔｃｈ＿ｌｏｗｅｒとｍａｔｃｈ＿ｕｐｐｅｒとを生成する。Ｍａｔｃｈ＿ｕｐｐｅｒ信号は、エントリでバリッドビットが設定されて、２Ｍのページ範囲に含まれる仮想アドレス部がマッチングする場合（つまり、ＶＡ［２０：１２］に、アサートされてよい。Ｍａｔｃｈ＿ｌｏｗｅｒは、仮想アドレスの残りの部分がマッチングする場合（つまり、ＶＡ［２０：１２］にアサートされてよい。
【００４５】
制御回路８４は比較回路８２Ａ−８２Ｂの出力を受信するように結合され、また、ヒット信号とエントリ表示をそれに応じて生成するように構成される。エントリのうちの１つにヒットが示されると、制御回路８４はヒット信号をアサートし、エントリ表示を与えてよい。ヒットが示されない場合は、制御回路８４はヒット信号をアサートし得ない。
【００４６】
図５はエントリが仮想アドレスによってヒットされたかどうかを判断するために制御回路８４によって実装されてよい真理値表９０の一実施形態である。テーブル９０に例示しているのは、エントリからの２Ｍビット（本実施形態では２Ｍ変換を示すように設定される）、ｍａｔｃｈ＿ｕｐｐｅｒおよびｍａｔｃｈ＿ｌｏｗｅｒ信号（テーブル９０の１はアサートされた状態を、０はアサートされていない状態を示している）、及び、２Ｍビットとｍａｔｃｈ＿ｕｐｐｅｒ信号とｍａｔｃｈ＿ｌｏｗｅｒ信号の各組合せが示すものを説明した結果列、である。
【００４７】
ｍａｔｃｈ＿ｕｐｐｅｒ信号がディアサートされると、制御回路８４は仮想アドレスに対してマイクロＴＬＢミスを検出する。マイクロＴＬＢは２Ｍビット設定とｍａｔｃｈ＿ｌｏｗｅｒ信号の状態に関係なくミスする。従って、マイクロタグ回路３６もまたミスする。
【００４８】
２Ｍビットが設定されると、２メガバイトページに対して対応の変換が行われる。従って、一般的にＶＡ［２０：１２］は比較には含まれない。しかし、マイクロタグ回路３６に対するビットを提供するために、これらのビットは２メガバイトページのプロセッサ１０によってアクセスされる最後の４キロバイトページであるものと定義される。Ｍａｔｃｈ＿ｕｐｐｅｒ信号がアサートされると、２Ｍビットが設定され、マイクロＴＬＢがヒットする。しかし、ｍａｔｃｈ＿ｌｏｗｅｒ信号がディアサートされると、マイクロタグ回路３６はこのページに対してミスをする。ｍａｔｃｈ＿ｌｏｗｅｒ信号がアサートされると、マイクロタグ回路３６はヒットし、その結果、マイクロタグルックアップが実行される。
【００４９】
２Ｍビットがクリアであると、対応の変換は４キロバイトページに対するものである。従って、ｍａｔｃｈ＿ｕｐｐｅｒとｍａｔｃｈ＿ｌｏｗｅｒの両方がアサートされ、マイクロＴＬＢヒットが示される（また、可能なマイクロタグヒット示され、その結果マイクロタグルックアップが実行される）。ｍａｔｃｈ＿ｌｏｗｅｒがアサートされない場合は、マイクロＴＬＢとマイクロタグミスが検出される。
【００５０】
図５の実施形態を実装する制御回路８４に対してマイクロタグ回路３６に与えられるヒット表示は、メインＴＬＢ３８に与えられるヒット表示とは異なってよい。メインＴＬＢ３８へのヒット表示は、マイクロタグ回路３６がミスであっても、変換がヒット（マイクロＴＬＢヒットを示すテーブル９０の各エントリ）である限りは、マイクロＴＬＢ３０においてヒットを示してよい。マイクロタグ回路３６へのヒット表示は、マイクロタグルックアップが表示されると、ヒット（マイクロタグルックアップを示すテーブル９０のエントリ）を示す。
【００５１】
図４と図５の実施形態は２つの異なるページサイズをサポートする。その他の実施形態は単一のページサイズをサポートするので、比較回路８２Ａ−８２Ｂの各々から各単一のマッチング信号が与えられてよく、また、各エントリ８０Ａ−８０Ｂから２Ｍビットを除くことができる。その他の実施形態は、サポートされたページサイズに従い仮想アドレスのページ部分を更に分割することによって、２つ以上のページサイズをサポートすることができる。ｘ８６命令セットアーキテクチャは４メガバイトのページサイズをサポートすることにも注目される。図４と図５の実施形態はマイクロＴＬＢ３０の２つの２メガバイトエントリを使用して４メガバイトのページサイズをサポートしてよい。その他の実施形態は、（例えば、２Ｍビットと同様に各エントリで４Ｍビットを使用して）４メガバイトページサイズを直接的にサポートしてよい。
【００５２】
上述の実施形態は２メガバイトのページに対するエントリを使用し、ＶＡ［２０：１２］を使用する２メガバイトのページ内で最も最近にアクセスされた４キロバイトのページサイズを識別して２メガバイトのページサイズをサポートするが、その他の実施形態は、所与の２メガバイトページに対して複数のマイクロＴＬＢエントリを許容する。エントリの各々は既にアクセスされた、異なる４キロバイトページに対し、異なるエンコーディングをＶＡ［２０：１２］に有してよい。更に別の形態では、ＶＡ［２０：１２］は２メガバイトページのマイクロタグ回路３６に含まれてよく、２メガバイトページのヒットは２メガバイト内のキャッシュラインに対するヒットを検出するためにマイクロタグへアクセスするために使用されてよい。
【００５３】
マイクロＴＬＢ３０でミスがあり、メインＴＬＢ３８でヒットがある場合には、制御回路８４はメインＴＬＢ３８からヒットした変換がリプレースメントされるエントリ８０Ａ−８０Ｂを選択してよい。例示の実施形態では、制御回路８４は各エントリ８０Ａ−８０ＢのＬＲＵを維持し、また、リプレースメントを行うために最も長い間使われていない（ＬＲＵ）エントリを選択してよい。任意のその他のリプレースメントアルゴリズムが実装されてよい（例えば、擬似ＬＲＵ、ランダム、など）。各エントリ８０Ａ−８０Ｂは、制御回路８４の制御下にあるエントリのうちの１つに記録される２Ｍビットと、仮想アドレス（ＶＡ［Ｎ−１：１２］）の入力ページ部とを受信するように結合されてよい（入力アドレスと２Ｍビットは図４に示されていない）。様々な実施形態において、入力仮想アドレスのソースと２ＭビットはメインＴＬＢ３８、もしくはテーブルウォーク回路であってよい。
【００５４】
図６はマイクロＴＬＢデータ回路３４の一実施形態のブロック図である。図６の実施形態において、マイクロＴＬＢデータ回路３４はエントリ９２Ａ−９２Ｂを含む一連のエントリを含む。エントリ９２Ａ−９２Ｂの各々は、図４のエントリ８０Ａ−８０Ｂの各々の１つに対応する。更に、多重通信回路９４が例示されており、該回路はエントリ９２Ａ−９２Ｂに結合され、また、マイクロＴＬＢタグ回路３２からエントリ表示を受信する。多重通信回路８４（→９４）は出力のためにエントリ表示が示したエントリのコンテンツを選択してよい。一実装品では、どのエントリも示されない場合（つまり、ミス）、（電力消費を削減し得る）多重通信回路は、どのエントリ９２Ａ−９２Ｂも選択しない。図４のエントリ８０Ａ−８０Ｂと同様に、各エントリ９２Ａ−９２Ｂはどのようなタイプのストレージ（例えば、一実施形態では、様々なクロックドストレージデバイス）にも実装されてよい。
【００５５】
例示の実施形態では、各エントリ９２Ａ−９２Ｂのコンテンツには、ダーティビット（Ｄ）、ユーザ／スーパーバイザ（Ｕ／Ｓ）、読み出し／書き込み（Ｒ／Ｗ）ビット、メモリタイプフィールド（ＭｅｍＴｙｐｅ［４：０］）、及び、物理アドレスフィールド（ＰＡ［Ｍ−１：１２］が含まれる。一実施形態では、ビットはｘ８６命令セットアーキテクチャにおいて定義されるページング機構と互換性があってよい。ダーディビットは物理ページが修正済みであるかどうか（例えば、プロセッサがページへの記録命令を実行済みであるかどうか）を示すことができる。ユーザ／スーパーバイザビットはユーザ（特権のない）ページと比較してスーパーバイザ（特権のある）ページを示すことができる。読み出し／書き込みビットは、ページが読み出し専用であるか、もしくは読み出し／書き込みであるかどうかを示すことができる。メモリタイプフィールドは、ページに使用されるメモリタイプを識別することができる。
【００５６】
Ｍビットの物理アドレスは例示の実施形態でサポートされる。Ｍは任意の整数であってよい。特に、ＭはＮと別であってよい。一実装品では、Ｍは３２から６４までのいずれの整数であってよい。別の実装品では、Ｍは３２から５２までのいずれの整数であってよい。例えば、Ｍは１つの具体的な実装品では４０であってよい。
【００５７】
図７を参照すると、マイクロタグ回路３６の一実施形態のブロック図が示されている。例示の実施形態では、マイクロタグ回路３６の複数のエントリは各エントリのグループに分けられる。各エントリの各グループはマイクロＴＬＢの別のエントリに割り当てられる。例えば、例示の実施形態では、各グループ１００Ａ−１００ＤはマイクロＴＬＢ３０の４つの各エントリに対応して示されている。その他の実施形態は任意の数のエントリに対応するように、任意の数のグループを含んでよい。各グループ１００Ａ−１００Ｄは制御回路１０２へ結合されており、該回路１０２はイネーブル入力（Ｅｎ）（マイクロＴＬＢタグ回路３２からのヒット信号）、マイクロＴＬＢタグ回路３２からのエントリ表示、及び、ＡＧＵ１２からの仮想アドレス、を受信するように結合されている。制御回路１０２はマイクロタグ回路３６が出力したヒット表示を生成するように構成されている。
【００５８】
選択されたグループ１００Ａ−１００Ｄの各エントリは、マイクロＴＬＢタグ回路３２の各エントリのうちの１つに割り当てられ、また、データキャッシュ１６にも記録される、そのエントリが示す仮想ページのキャッシュラインを識別する。任意の数のエントリをグループに含むことができる。例えば、一実施形態では、各グループに４つのエントリを含むことができる。マイクロＴＬＢヒットが検出されるとマイクロタグ回路３６がアクセスされるので、ＶＡ［Ｎ−１：１２］はＡＧＵ１２からの仮想アドレスと、選択されたグループ１００Ａ−１００Ｄに表されるキャッシュラインの仮想アドレスにマッチングすることは周知である。従って、仮想タグ比較を完了するために、選択されたグループ１００Ａ−１００Ｄの各エントリは、（キャッシュラインオフセットを形成するアドレスビットは除いて）仮想アドレスのページオフセット部を記録してよい。例示の実施形態に対して、６４バイトのキャッシュラインサイズが仮定され、その結果、アドレスビット５：０が除かれる。その他のキャッシュラインサイズはその他の実施形態で選択されてよい。従って、仮想タグ比較を完了するため、本実施形態では、残りの仮想アドレスビットは、ＶＡ［１１：６］であり、また、図７に示しているように、各マイクロタグエントリはＶＡ［１１：６］を記録する。
【００５９】
イネーブル入力がアサートされると、制御回路１０２は各エントリからのアドレスビットＶＡ［１１：６］をＡＧＵ１２からの仮想アドレスの対応のビットと比較してよい。従って、制御回路１０２はＡＧＵ１２からの仮想アドレスの少なくともページオフセット部（キャッシュラインオフセットビットは除く）を受信するように結合されてよい。選択されたグループ１００Ａ−１００Ｄ内のエントリでマッチングが検出され、そのエントリでバリッドビット（Ｖ）が設定されると、仮想アドレスはマイクロタグ回路３６でヒットとなり、その結果、データキャッシュ１６でヒットとなる。ヒット／ミスを判断するためにデータキャッシュタグメモリ２２がアクセスされる必要はない。その一方で、選択されたグループ１００Ａ−１００Ｄ内のエントリでマッチングが検出されない場合は、データキャッシュ１６でアドレスがヒットであるかミスであるかを判断するために、データキャッシュタグメモリ２２がアクセスされてよい。
【００６０】
データキャッシュ１６が物理的にタグ付けされ（つまり、データキャッシュタグメモリ２２は仮想タグではなく物理タグを記録する）、少なくとも１つの変換されたアドレスビットがインデックスでデータキャッシュ１６に対して使用される場合（例えば、少なくともビット１２が４キロバイトページの実施形態で使用される）、（比較に使用される仮想アドレスビットとインデックスは違っていてもよいことから）、同じ物理アドレスへの、複数の仮想アドレスのエイリアシングがマイクロタグ回路３６の動作に影響を及ぼし得る。１つのそのような実施形態において、データキャッシュ１６は物理的にタグ付けされるが、プロセッサ１０は、任意の時にデータキャッシュ１６に同じ物理アドレスへエイリアスされた最大限１つの仮想アドレスが確実に記録されるようにすることができる。つまり、第１のエイリアスがキャッシュにある間に第２のエイリアスがデータキャッシュ１６にロードされる場合は、第１エイリアスはデータキャッシュ１６で無効にされる。
【００６１】
キャッシュインデックスが少なくとも１つの変換アドレスビットを含むある種の実施形態では、マイクロタグ回路３６はキャッシュインデックスに含まれる各アドレスビットを記録することができ、また、その変換アドレスビットは物理ビットであってよい。そのようなビットを記録することによって、全てのエントリの無効化を望まない場合には、マイクロタグ回路３６エントリをターゲットにして無効にすることができる（例えば、データキャッシュ１６コンテンツやマイクロＴＬＢ３０コンテンツの変化に応答して）。
【００６２】
マイクロＴＬＢ３０でヒットし、マイクロタグ回路３６でミス、また、データキャッシュタグメモリ２２でヒットした場合、対応する各グループ１００Ａ−１００Ｄの各エントリのうちの１つは、ヒットしたタグとリプレースメントされてよい。制御回路１０２は、リプレースメントのために選択された各グループ１００Ａ−１００Ｄ内のＬＲＵエントリを選択するために使用されてよい、各グループ１００Ａ−１００Ｄ（各エントリにおいてＬＲＵとして示す）内のＬＲＵ情報を維持することができる。その他の実施形態はその他のリプレースメント方式（例えば、ランダム、擬似−ＬＲＵ、など）を採用してよい。（図７には示されていない）ある種の実施形態では、各グループ１００Ａ−１００Ｄは、マイクロタグ回路３６でミスしたインデックスを記録するために、データキャッシュ１６からＶＡ［１１：６］を受信するように結合されてよい。
【００６３】
例示の実施形態では、マイクロタグ回路３６の各エントリは各マイクロＴＬＢエントリに静的に割り当てられているが、その他の実施形態では、各エントリは所望に応じて各マイクロＴＬＢエントリへ動的に割り当てられてよい。そのような実施形態では、マイクロＴＬＢエントリフィールドは各マイクロタグエントリに含まれてよく、そのマイクロタグエントリが現在割り当てられているマイクロＴＬＢエントリの表示を記録する。制御回路１０２はアクセス中にマイクロＴＬＢ３０から受信した表示をエントリ表示とを比較してよく、また、エントリ表示がマッチングし、また、ＶＡ［１１：６］フィールドがＡＧＵ１２からの仮想アドレスの対応する部分とマッチングする場合にヒットが検出されてよい。
【００６４】
本実施形態においてマイクロタグ回路３６はマイクロＴＬＢとともに使用されているが、その他の実施形態はマイクロＴＬＢなしにマイクロタグ回路３６を実装してよい。そのような実施形態はマイクロタグ回路３６の各エントリに全てのタグを実装してよく、また、その全てのタグを比較してキャッシュヒットを検出し、データキャッシュタグメモリ２２における読み出しを阻止する。マイクロタグ回路３６、もしくはデータキャッシュタグメモリ２２でヒットが検出されると、データはデータキャッシュデータメモリ２０から送られてよい。
【００６５】
他の形態では、マイクロタグ回路３６は１つのマイクロＴＬＢエントリにつき単一のエントリを備えてよい。マイクロタグエントリは１キャッシュラインにつき１ビットを、マイクロＴＬＢエントリが識別したページに記録することができ、そのキャッシュラインがデータキャッシュ１６でヒットであるかどうかを示す。従って、例えば、キャッシュラインが６４バイトであり、４キロバイトのページが使用される場合は、マイクロタグエントリは６４ビットを含んでよい。所与のキャッシュラインに対応するこのビットは、ビットがセットされている場合はヒットを、また、ビットがクリアである場合はミスを示す（又は、逆の符号化を用いることもできる）。制御回路は、キャッシュのヒット／ミスを判断するために適切なビットを選択するように、キャッシュラインオフセット部（例えば、６４バイトキャッシュラインの実施形態においてはビット１１：６）を除く、ＶＡのインページ部を使用してよい。そのような実施形態において、マイクロタグ回路はマイクロＴＬＢ回路に組み込まれてよい。用語“タグ回路”もしくは“マイクロタグ回路”はマイクロタグ回路がマイクロＴＬＢに組み込まれるそのような実施形態を含むことを意図する。
【００６６】
図８を参照すると、ＡＧＵ１２からの仮想アドレスに応答して、図２に示されているブロック図の一実施形態の一般的な動作を例示したフローチャートが示されている。図８のブロック図は理解を容易にするために特定の順序で示されているが、いずれの順序を用いてもよい。各ブロックは所望に応じて組合せ論理回路を介して並列に実行されてよく、もしくは所望に応じて、２つ以上のクロックサイクルを超えてパイプライン形式で実行されてよい。
【００６７】
仮想アドレスに応答して、マイクロＴＬＢタグ回路３２がアクセスされる（ブロック１１０）。ＭｉｃｒｏＴＬＢヒットが検出されると（デシジョン（判定）ブロック１１２、“イエス”区間(leg)）、マイクロタグ回路３６はアクセスされる（ブロック１１４）。マイクロタグでヒットが検出されると（デシジョンブロック１１６、“イエス” 区間）、キャッシュヒット／ミス回路５０はキャッシュヒットを示してよく（例えば、キャッシュミス表示はミスを表示し得ない）、また、データキャッシュタグメモリ２２は仮想アドレスに応答してアクセスされ得ない（ブロック１１８）。マイクロタグにおけるヒットが検出されない場合（デシジョンブロック１１６、“ノー”区間）、マイクロＴＬＢデータ回路３４がアクセスされてよい（ブロック１２０）。ある種の実施形態では、マイクロＴＬＢデータ回路３４は、マイクロタグがヒットであるかどうかに関係なく、マイクロＴＬＢタグヒットに応答してアクセスされてよい。データキャッシュタグメモリ２２もまたアクセスされる（ブロック１２２）。データキャッシュタグメモリ２２からのタグとマイクロＴＬＢデータ回路３４からの物理アドレス間にヒットが検出されると（デシジョンブロック１２４、“イエス”区間）、キャッシュヒット／ミス回路５０はキャッシュヒットを示してよい（ブロック１２６）。更に、この場合はマイクロタグミスが検出されたので、マイクロタグはヒットしたタグとともに読み出されてよい。データキャッシュタグメモリ２２からのタグとマイクロＴＬＢデータ回路３４からの物理アドレス間にミスが検出されると（デシジョンブロック１２４、“ノー”区間）、キャッシュのヒット／ミス回路５０はキャッシュミスを示し得る（ブロック１２８）。また更に、ミスしたキャッシュラインはデータキャッシュ１６に読み込まれ得る（また、任意に、マイクロタグ回路３６はミスしたキャッシュラインのタグとともにアップデートされてよい）。
【００６８】
ＭｉｃｒｏＴＬＢミスが検出されると（デシジョンブロック１１２、“ノー”区間）、メインＴＬＢタグ回路４０がアクセスされてよい（ブロック１３０）。メインＴＬＢでヒットが検出されると（デシジョンブロック１３２、“イエス”区間）、マイクロＴＬＢはメインＴＬＢから読み出され（ブロック１３４）、また、読み出されるマイクロＴＬＢエントリに対応する各マイクロタグエントリは無効にされ得る。更に、各ブロック１２２、１２４、１２６、及び１２８はメインＴＬＢからの物理アドレスとタグ比較を行うために繰り返し行われる。しかし、ブロック１２６において、マイクロタグは所望に応じて任意に読み出されなくてよい。その一方で、メインＴＬＢでミスが検出されると（デシジョンブロック１３２、“ノー”区間）、メインＴＬＢ３８はＴＬＢミスを生成してよく、また、メインＴＬＢはミスした変換とともに読み出されてよい。（又は、変換が見つからない場合は例外である）（ブロック１３６）。更に、マイクロＴＬＢは任意にメインＴＬＢミスが起きた場合に読み出されてよく、また、マイクロタグは読み出しされるマイクロＴＬＢエントリに対応するマイクロタグエントリを無効にするためにアップデートされてよい。
【００６９】
上述の説明はマイクロＴＬＢ３０もしくはメインＴＬＢ３８からの物理アドレスと、データキャッシュタグメモリ２２からのタグとの比較について言及しているが、一般的に各ＴＬＢは物理アドレスのページ部を出力してよい。比較のためのキャッシュタグの残りは、物理アドレスのページ部と仮想アドレスのページオフセット部とを連結させることによって形成されてよい。
【００７０】
図９を参照すると、ウェイ予測器１４の一実施形態のブロック図が示されている。例示の実施形態では、ウェイ予測器１４は、ウェイ予測が行われる仮想アドレスに対応する１つ以上のアドレスオペランドを受信するように結合され、更にメモリ１４２に結合されたサムアドレス（ＳＡ）デコーダ１４０を含む。ＳＡデコーダ１４０はサムアドレスインデックシングを実装してよく、これについては以下に更に詳細を説明している。メモリ１４２はＷウェイセットアソシアティブ（データキャッシュ１６と同じ）であってよく、従って、ウェイ０からウェイＷ−１に配置された複数のエントリを有してよい。メモリ１４２の各エントリはＰビット（ＷＰ［Ｐ−１：０］）を含むウェイ予測値を記録する。コンパレータ１４６Ａ−１４６Ｂを含む複数のコンパレータはメモリ１４２に結合されている。コンパレータ１４６Ａ−１４６Ｂはウェイ予測器１４の各ウェイに対して含まれてよい。各コンパレータ１４６Ａ−１４６ＢはＡＧＵ１２からの仮想アドレス（ＶＡ）の一部、もしくは、任意のウェイ予測生成回路１４８の出力、（もしくはその他のオプションでは、アドレスオペランドの一部）のいずれかを受信するように結合されている。コンパレータ１４６Ａ−１４６Ｂの出力は、ウェイ予測器１４のウェイ出力を形成してよい。更に、いずれのコンパレータ１４６Ａ−１４６Ｂもマッチングを検出しない場合、ウェイ予測器１４は早期のミス信号を出力してよい（図９のコンパレータ１４６Ａ−１４６Ｂの出力を受信するＮＯＲゲート１５０として例示されている）。
【００７１】
デコーダ１４０はメモリ１４２のセット１４４を選択するために、（本実施形態ではサムアドレスデコーディングを用いて）アドレスオペランドをデコードするように構成され、また、メモリ１４２はセット１４４のコンテンツをコンパレータ１４６Ａ−１４６Ｂへ出力するように構成される。コンパレータ１４６Ａ−１４６Ｂの各々は、メモリ１４２の各々のウェイからのウェイ予測値を入力仮想アドレスに対応するウェイ予測値と比較する。マッチングが検出されると、ウェイ予測器１４は、対応するウェイがデータキャッシュ１６でヒットであることを予測する。例示の実施形態では、ウェイ予測は予測されたウェイに対してアサートされたビットとともに、各ウェイに対してワンホットエンコーディングを含んでよい。どのウェイ予測ビットも入力ウェイ予測ビットとマッチングしない場合、ウェイ予測は生成されない（また、早期のミス信号はアサートされてよい）。その他の実施形態はその他の方法でウェイ予測を符号化してよく、また、ウェイ予測器１４は各コンパレータ１４６Ａ−１４６Ｂの出力を受信するように結合された回路を含み、かつ、ウェイ予測エンコーディングを生成するように構成されてよい。
【００７２】
ウェイ予測値は所望に応じていずれの形式で生成されてよく、また、任意の数のビットを含んでよい（例えば、Ｐは１よりも大きい任意の整数であってよい）。ウェイ予測器１４に記録されたウェイ予測値は、データキャッシュ１６の対応するキャッシュラインに応じて生成される。例えば、一実施形態では、データキャッシュ１６の同じインデックスとウェイに記録されたキャッシュラインに対応する仮想アドレスの部分的タグであってよい。つまり、ウェイ予測値は連続する選択された仮想アドレスビットを含むことができる（キャッシュタグの一部である少なくとも１つのアドレスビットは除く）。そのような実施形態では、最も頻繁に変動する仮想アドレスビットを選択するのが望ましいとされる。（もしくは、別の方法で見れば、連続したアクセスのうち、最もランダムなものを示す）。例えば、今もなおキャッシュタグの一部である最小桁のアドレスビット（キャッシュラインオフセットの一部ではない）が選択されてよい。そのような実施形態では、ウェイ予測生成回路１４８は使用されず、入力仮想アドレスから選択された仮想アドレスビットがコンパレータ１４６Ａ−１４６Ｂへの入力として結合されてよい。別の実施形態では、１つ以上のウェイ予測値ビットが２つ以上の仮想アドレスビットの論理的組合せとして生成されてよい。そのような実施形態では、例えば、頻繁に変化する仮想アドレスビットがそれほど頻繁に変化しない仮想アドレスビットと組み合わせられてよい。一実施形態では、この論理的組合せは、排他的ＯＲを含んでよい。そのような実施形態のために、この論理的組合せは、ウェイ予測生成回路１４８によって仮想アドレスビット上に実行されてよく、該回路の出力部はコンパレータ１４６Ａ−１４６Ｂに結合されてよい。更に別の実施形態では、各ビットは仮想アドレスを生成するための追加の前にアドレスオペランドから選択されてよい。これらのビットはウェイ予測生成回路１４８を用いて論理的に組み合わせられてよく、もしくは、上記に説明した各仮想アドレスの例と同様に連結されてよい。
【００７３】
２つ以上のエントリが同じウェイ予測値を有した（その結果、ウェイ予測器１４で１つ以上のウェイにマッチングが起きる）状況を回避するために、所定の一連のウェイ予測器１４のウェイ予測値が確実に唯一のものとなるように、データキャッシュ１６でキャッシュラインのリプレースメントが制御されてよい。そのような処理の一例は図１０のフローチャートに示されている。上記のリプレースメント法によって、キャッシュラインの早期リプレースメントを頻繁に引き起こすことがないように十分な数のビットをウェイ予測値に含み、ウェイ予測値の一意性を維持することが望ましい。例えばウェイ予測値を生成するために仮想アドレスビットの連結が用いられる場合、７ビットのウェイ予測値が選択されてよい。
【００７４】
ある種の実施形態では、データキャッシュタグメモリ２２と比較するとウェイ予測器１４は比較的小型であるために、ウェイ予測器１４は、（仮想アドレスが所望の回路に到達するために移動する距離を低減することができる）ＡＧＵのデータ経路に含まれてよい。
【００７５】
上述のように、デコーダ１４０はアドレスオペランドをデコードし、仮想アドレスに対応するセット１４４を選択するために、サムアドレスデコーディング(sum-address decoding)を使用してよい。その他の実施形態は、仮想アドレスを受信するために結合された従来のデコーダを使用してよい。従って、一般的に、デコーダ１４０はキャッシュへアクセスするためのアドレス表示を受信することができる。ある種の実施形態では、その表示には、仮想アドレスを形成するために使用されるアドレスオペランドが含まれ、もしくはその他の実施形態では、仮想アドレス自体が含まれてよい。
【００７６】
サムアドレスデコーディングはアドレスを生成するために使用されるアドレスオペランドを受信し、また、アドレス自体がデコードされる場合に選択されるであろう一連のメモリと同じメモリを正確に選択する。一般的に、サムアドレスデコーディングは、ＡとＢとを加算して、その合計をＫと比較するよりも、テストＡ＋Ｂ＝Ｋが定数Ｋに対してより早く値を求めることができるという原理に基づく。デコーディングに関連して、定数Ｋは所定のセットを選択するであろうＡ＋Ｂの値である。そのセットに対してワード線を生成する回路は、そのセットに対して定数Ｋを仮定する。サムアドレスデコーディングの概略を以下に説明する。
【００７７】
ビットベクトルａn-１ ａn-2．．．ａ0としてＡが、ビットベクトルｂn-１ ｂn-2．．．ｂ0としてＢが、ビットベクトルｋn-１ ｋn-2．．．ｋ0としてＫが表される場合は、ｉｆ  Ａ＋Ｂ＝Ｋと示され、以下の各等式１と２によって、加算Ａ＋Ｂ（Ｃｏｕｎｔi-1）の所定のビット位置ｉ−１のキャリーアウトと、後続のビット位置ｉ（Ｃｉｎi）へのキャリーインが与えられてよい。（“！”はインバージョン、“ＸＯＲ”は排他ＯＲ、“＆”はＡＮＤ、及び“｜”はＯＲを示す）
Counti-1=((ai-1XORbi-1)&!ki-1|(a i-1&b i-1)（1）
Cini=kiXORaiXORbi（2）
Ａ＋Ｂ＝Ｋの場合、Ｃｏｕｎｔi-1は（０からｎ−１までの）全てのｉに等しい。つまり、以下の等式３で説明する項ｅiは、Ａ＋Ｂ＝Ｋの場合、全てのｉに対し、１である。
ei=CiniXOR!Count i-1（３）
デコーダ１４０で使用されてよいｅiの等式を生成するために、Ｋに依存しない項を生成するのが望ましい（等式１及び２の各々は依存しており、その結果、等式３の各々は依存する）。特に、等式３はｋi（Ｃｉｎiを通じて）及びｋi-1（Ｃｏｕｔi-1を通じて）に依存している。従って、４つのｅi項が各ビット位置iに対して生成されてよい。各項ｅiはｋiとｋi-1に対し１つの一連のセット値を仮定してよい。これらの項はｅikiki-1と示され、ｋiとｋi-1は各ビットに対する仮定値（例えば、ｅiは仮定値ｋi＝０、ｋi-1＝１に対応する）の表記(notation)に上書きされる。各等式４−７は各ビット位置に対し４つの項ｅiを例示する。等式４−７の各々は等式１と２を等式３に上書きすることで形成され、ｋiとｋi-1に対して仮定値を与え、ブール代数を使用して項を減らす。
ei00= aiXORbiXOR!(a i-1|b i-1)（4）
ei01= aiXORbiXOR!(a i-1&b i-1)（5）
ei10= !(aiXORbi)XOR!(a i-1|b i-1)（6）
ei00= !(aiXORbi)XOR!(a i-1&b i-1)（7）
更に、インデックスのビット位置０に対して、キャリーイン項（C-1）をｉ−１項に置き換え、等式８と９を形成する。
e00c= aiXORbiXOR!c-1（8）
e01c= !(aiXORbi)XOR!c-1（9）
上述の各等式はインデックスの各ビット位置の論理でウェイ予測メモリ１４２に実装されてよく、キャリーインｃ−１はキャッシュラインオフセット加算からのキャリーインと等しい。このキャリーインは、例えば仮想アドレス加算からＡＧＵにより与えられてよい。キャリーインは延着してよく、例えば、偶数と奇数のインデックスをそれぞれに有するバンクとバンクとの間を選択してよい。
【００７８】
所定のセットに対するワード線を生成するために、各ビット位置に対し、ｅi00、ｅi01、ｅi10、およびｅi11のうちの１つが選択され（生成されるワード線に対応するインデックスの値に基づいて）、また、選択された値は、ワード線を生成するために論理的にＡＮＤ演算される。例えば、インデックス０のワード線は、各ビット位置のｅi00とｅ00cの論理ＡＮＤであってよい。インデックス１のワード線（ｋ0＝１、その他全てのｋi＝０）は２と、ｎ−１、ｅ101、ｅ01c間の各ｉに対するｅi00の論理ＡＮＤであってよい。インデックス２のワード線（ｋ1＝１、その他全てのｋi＝０）は３と、ｎ−１、ｅ201、ｅ110、ｅ00c間の各ｉのｅi00の論理的ＡＮＤであってよい。インデックス３のワード線（ｋ1とｋ0＝１、その他全てのｋi＝０）は３と、ｎ−１、ｅ201、ｅ111、ｅ01c間の各ｉのｅi00の論理ＡＮＤであってよい。他のインデックスについての追加のワード線も同様に選択できる。
【００７９】
サムアドレスデコーディングの一実施形態に関連する付加的詳細は、Ｗｉｌｌｉａｍ  Ｌ．Ｌｙｎｃｈ、Ｇａｒｙ  Ｌａｕｔｅｒｂａｃｈ、および、Ｊｏｓｅｐｈ  Ｉ．  Ｃｈａｍｄａｎｉによる論文、“Ｌｏｗ  Ｌｏａｄ  Ｌａｔｅｎｃｙ  ｔｈｒｏｕｇｈ  Ｓｕｍ−Ａｄｄｒｅｓｓｅｄ  Ｍｅｍｏｒｙ（ＳＡＭ）”Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ｔｈｅ  ２５ｔｈ  Ａｎｎｕａｌ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｓｙｍｐｏｓｉｕｍ  ｏｎ  Ｃｏｍｐｕｔｅｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ，  １９９８の３６９から３７９ページで見つけることができる。
【００８０】
ウェイ予測器１４は、データキャッシュデータメモリ２０の電力消費の削減を可能にすることによって、プロセッサ１０の電力消費を削減するために使用することができる。例えば、ある種の実施形態では、データキャッシュデータメモリ２０はランダムアクセスメモリ（ＲＡＭ）を含んでよい。ワード線をアクティブにすることによって、ＲＡＭの各ロケーションがイネーブルにされてよい。イネーブルにされた各ロケーションは、そのロケーションに取り付けられた一定のビット線をディスチャージしてよく、そのロケーションで各ビットを表すビット線ペアに差動を与える。ビット線ペアは、センス増幅器への入力であってよく、これは、差動を各出力ビットへ変換することができる。ある種の実装品では、データキャッシュデータメモリ２０のＲＡＭはデータキャッシュデータメモリ２０の各ウェイへ別々のワード線信号を提供してよい。セット選択を行うために仮想アドレスがデコードされてよく、また、このセット選択によって各ウェイのワード線を生成するためのウェイ予測が確認されてよい。従って、予測されたウェイがイネーブルされ、その他の各ウェイはイネーブルされなくてよい。その結果、他の形態ではイネーブルされていない各ウェイで消費されていた、ビット線ディスチャージの電力消費を削減する。ビット線の電力消費は多くの場合、そのようなメモリの電力消費の最も大きな要因の１つであってよい。（また、最も重要な要因であり得る）。データキャッシュデータメモリ２０のそのような実施形態の一部の例が図１１に示されており、仮想アドレス（ＶＡ）はセット選択（例えば、図１１のセット０、及び図１１には示されていないその他の各セット）を生成するデコーダから受信される。ＡＮＤゲートはウェイ０が予測され（ＷＰ０）、またはウェイ１が予測されて（ＷＰ１）、ウェイ０とウェイ１に対して対応するウェイワード線が生成されたという表示を受信する。各ウェイのビット０は図１１に示されており、対応するウェイのワード線を受信する。各ウェイからのビット０は、（予測されたウェイからビット０を選択するために）ウェイ予測によって同様に制御された多重通信回路によりコラム多重化(column-muxed)される。また、センス増幅器（ＳＡ０）は予測されたウェイからビット０を感知し、データキャッシュデータメモリ２０の外からビット０を駆動する。その他の各ビットは同様に処理されてよく、また、付加的ＡＮＤゲートとウェイ予測を与えて付加的ウェイが提供されてよい。
【００８１】
その他の実施形態では、ウェイ予測は選択的なワード線生成を提供できるだけ十分早くに利用可能であってよい。そのような実施形態に対して、各ウェイへのワード線は、アドレスのデコーディングに基づいて駆動されてよく、また、ビット線ディスチャージが各ウェイで起きてよい。ある種の実装品では、各ウェイからの各ビットはセンス増幅器に物理的にインターリーブされ、コラム多重化されてよい。つまり、各ウェイのビット０は相互に隣接して物理的に配置されてよく、また、多重通信回路はビット０を選択されたウェイから出力のビット０に対しセンス増幅器の入力に選択してよい。その他の出力ビットは同様に選択されてよい。ウェイ予測はコラム多重通信回路に選択制御を与えるために使用されてよく、その結果、センス増幅器の数はウェイから出力されたビット数をウェイの数で掛けたものではなく、ウェイから出力されたビットの数であってよい。センス増幅器で消費された電力と、センス増幅器の外の駆動データは、各ウェイに別々のセンス増幅器を有する場合よりも低減される。センス増幅器のドライブアウト電力は多くの場合、そのようなメモリの電力消費の最も重要な要因であってよい（及び、ビット線電力消費以外に最も重要な要因であってよい）。そのような実施形態に一部の例が図１２に示されている。ワード線を生成するために（例えば、図１２のワード線０、および、図１２には示されていないその他の各セットに対する各ワード線）、（図１１と同様の）デコーダが入力仮想アドレス（ＶＡ）をデコードする。各ウェイ０と１からのビット０が示されており、各ビットはワード線アサーションに応答して、その各ビット線をディスチャージする。図１２の多重通信回路は、予測されたウェイからのビット０をビット０（図１２のＳＡ０）に対するセンス増幅器に選択するために、各ウェイ予測によって制御される。予測されたウェイから読み出されたその他の各ビットは同様に処理されてよく、また、追加のウェイは同様の方法で処理されてよい。
【００８２】
その他の実装品では、各ウェイに別々のセンス増幅器が与えられてよいが、各センス増幅器はオペレーションをイネーブルにするようにイネーブル入力を備えていてよい。ウェイ予測はそのような実装品に対して予測されたウェイの各センス増幅器だけをイネーブルにするように使用されてよい。また、各センス増幅器の電力消費と、各センス増幅器外の駆動データはコラム多重化技術を使用した方法と同様に削減されてよい。図１３はデータキャッシュデータメモリ２０のそのような実施形態の一例である。この場合も、デコーダは入力仮想アドレス（ＶＡ）をデコードし、ウェイ０とウェイ１のストレージへ与えられるワード線を生成してよい。各ウェイは多数のビット線をウェイに対する一連のセンス増幅器へ出力する。それぞれの一連のセンス増幅器はそのウェイに対するウェイ予測によって（ウェイ０に対しＷＰ０、ウェイ１に対しＷＰ１）制御されたイネーブルを受信する。本実施形態のデータキャッシュデータメモリ２０は各センス増幅器の出力から予測されたウェイを選択するために、多重通信回路も含んでよい。
【００８３】
更にその他の実施形態では、入力仮想アドレスを予測されたウェイのみへ駆動することが可能であり、アドレスを予測されていないウェイへは駆動しないことで電力が削減される。
【００８４】
図１０を参照すると、キャッシュミスに応答してデータキャッシュ１６によって導入されてよいリプレースメント機構を例示したフローチャートが示されている。図１０の各ブロックは理解を簡単にするために特定の順序で示されているが、いずれの順序が用いられてよい。各ブロックは組合せ論理回路を介して並列で実行されてよく、もしくは所望に応じてパイプライン形式で２つ以上のクロックサイクルを超えて実行されてよい。
【００８５】
ウェイ予測器１４がキャッシュミスを招いた仮想アドレスに対してウェイ予測を行った場合（デシジョンブロック１６０）、リプレースメントのために予測されたウェイが選択される（ブロック１６２）。別の形態では、キャッシュによって実装されたリプレースメント方式に従いリプレースメントされるウェイが選択される（１６４）。いずれのリプレースメントアルゴリズムが使用されてよい（例えば、擬似−ＬＲＵ、ランダム、など）。
【００８６】
上述のアルゴリズムにより、キャッシュでミスするがウェイ予測器１４の現在のウェイ予測値とマッチングするキャッシュブロックは、そのウェイ予測値に対応するキャッシュラインに置き換えられる。従って、同じウェイ予測値はセットの１つ以上のロケーションに記録され得ない。
【００８７】
図１４はウェイ予測器１４の一実施形態に従ったウェイ予測の形成を例示したフローチャートである。図１４の各ブロックは理解を簡単にするために特定の順序で示されているが、いずれの順序が用いられてよい。各ブロックは組合せ論理回路を介して並列で実行されてよく、もしくは所望に応じてパイプライン形式で２つ以上のクロックサイクルを超えて実行されてよい。
【００８８】
ウェイ予測器１４はアドレスの表示（例えば、各アドレスオペランド、もしくはある種の実施形態ではアドレス自体）をデコードしてよい（ブロック１７０）。ウェイ予測器１４はデコーディングによって示されたセットから複数のウェイ予測値を出力してよい（ブロック１７２）。出力ウェイ予測値はブロック１７０でデコードされた入力アドレスに対応する値と比較されてよい（ブロック１７４）。比較がマッチの場合（デシジョンブロック１７６“イエス”区間）、ウェイ予測は、マッチングが検出されたウェイに対応して生成されてよい。そうでない場合（デシジョンブロック１７６、“ノー”区間）、どのウェイ予測も生成されず、また、ウェイ予測器１４は早期のミス表示を生成してよい（ブロック１８０）。各ブロック１７６、１７８、及び１８０はともにウェイ予測を生成する１つの実施形態を含んでよい。
［コンピュータシステム］
【００８９】
図１５を参照すると、バスブリッジ２０２を介して様々なシステムコンポーネントに結合されたプロセッサ１０を含むコンピュータシステム２００の一実施形態のブロック図を示す。図示されたシステムにおいて、メインメモリ２０４は、メモリバス２０６を介してバスブリッジ２０２に結合され、画像コントローラ２０８は、ＡＧＰバス２１０を介してバスブリッジ２０２に結合される。最終的に複数のＰＣＩデバイス２１２Ａ〜２１２Ｂは、ＰＣＩバス２１４を介してバスブリッジ２０２に結合される。第２バスブリッジ２１６も、ＥＩＳＡ／ＩＳＡバス２２０を介してＥＩＳＡ又はＩＳＡデバイス２１８のうちの１つ又はそれ以上に電気的インターフェースを適用するように供給されることが可能である。プロセッサ１０は、ＣＰＵバス２２４を介してバスブリッジ２０２に、また、任意のＬ２キャッシュ２２８に結合される。ＣＰＵバス２２４とＬ２キャッシュ２２８へのインターフェースはともに、外部インターフェースユニット１８へ結合されてよい外部インターフェースを含んでよい。プロセッサ１０は図１に示すプロセッサ１０であってよく、また、図２から１４に示した構造上の、及びオペレーション上の詳細を含んでよい。
【００９０】
バスブリッジ２０２は、プロセッサ１０、メインメモリ２０４、画像コントローラ２０８と、ＰＣＩバス２１４に接合されたデバイス間のインターフェースを与える。オペレーションがバスブリッジ２０２に接続されたデバイスの１つから受信されると、バスブリッジ２０２はこのオペレーションの目標（例えば、特定のデバイスもしくはＰＣＩバス２１４の場合、目標がＰＣＩバス２１４上にあるデバイス）を識別する。バスブリッジ２０２がオペレーションを目標となるデバイスに伝送する。バスブリッジ２０２は通常、ソースデバイス又はバスによって使用されるプロトコル、あるいはターゲットデバイス又はバスによって使用されるプロトコルからのオペレーションを変換する。
【００９１】
ＰＣＩバス２１４のためにＩＳＡ／ＥＩＳＡバスにインターフェースを供給することに加えて、第２バスブリッジ２１６は、所望に応じて更なる機能性を内蔵し得る。第２バスブリッジ２１６の外部あるいは第２バスブリッジに統合されているうちの何れかである入力／出力コントローラ（図示せず）は、コンピュータシステム２００内に含むことができ、キーボード及びマウス２２２と様々なシリアル及びパラレルポートに関するオペレーショナルサポートを提供する。他の実施形態では、外部のキャッシュユニット（図示せず）は、プロセッサ１０とバスブリッジ２０２間のＣＰＵバス２２４にも結合され得る。他の形態では、外部のキャッシュはバスブリッジ２０２に結合することができ、外部のキャッシュのキャッシュコントロールロジックは、バスブリッジ２０２に統合可能である。Ｌ２キャッシュ２２８はプロセッサ１０の裏面の構成に示される。Ｌ２キャッシュ２２８は、プロセッサ１０から分離し得、プロセッサ１０でカートリッジ（例、スロット１又はスロットＡ）内に統合可能であり、あるいはプロセッサ１０で半導体基板上にも統合可能である。
【００９２】
メインメモリ２０４はアプリケーションプログラムが記録され、プロセッサ１０が主に実行するメモリである。適合可能なメインメモリ２０４は、ＤＲＡＭ（Dynamic Random Access Memory）を含み得る。例えば、複数のＳＤＲＡＭ（同期ＤＲＡＭ）、ダブルデータレート（ＤＤＲ）ＳＤＲＵＭ、あるいはＲａｍｂｕｓ  ＤＲＡＭ （ＲＤＲＡＭ；Rambus 社開発のＤＲＡＭ）が適合可能であり得る。メインメモリ２０４は図１に示したシステムメモリ４２を含み得る。
【００９３】
ＰＣＩデバイス２１２Ａ〜２１２Ｂは多様な周辺デバイスを示す。周辺デバイスは、各デバイスが結合されてよいその他のコンピュータシステムと通信するデバイスを含み得る。更に、各周辺デバイスは、ビデオアクセラレータ、オーディオカード、ハードあるいはフロッピーディスクドライブあるいはドライブコントローラ、ＳＣＳＩ（Small Computer System Interface）アダプタ及びテレフォニーカードのようなその他のデバイスを含み得る。同様に、ＩＳＡデバイス２１８はモデム、サウンドカード、及びＧＰＩＢあるいはフィールドバスインターフェースカードのような周辺デバイスの様々な形式を表す。
【００９４】
グラフィックスコントローラ２０８は、モニタ２２６上のテキスト及び画像のレンダリングをコントロールするよう提供される。グラフィックスコントローラ２０８は、メインメモリ２０４に、及びメインメモリ２０４から実効的にシフト可能である３次元データ構造を表現する技術分野で通常、知られる一般的なグラフィックスアクセラレータを実施可能である。それ故、グラフィックスコントローラ２０８は、バスブリッジ２０２内のターゲットインターフェースへのアクセスを要求可能であり、又受信可能であり、それによってメインメモリ２０４へのアクセスを入手するＡＧＰバス２１０のマスターであり得る。専用のグラフィックスバスは、メインメモリ２０４からのデータの高速検索に対応する。ある種のオペレーションに関して、グラフィックスコントローラ２０８は、ＡＧＰバス２１０上にＰＣＩプロトコルトランザクションを生成するよう更に構成可能である。それ故、バスブリッジ２０２のＡＧＰインターフェースは、ＰＣＩプロトコルターゲットとイニシエータトランザクションと同様にＡＧＰプロトコルトランザクションの双方を支援するよう機能性を含み得る。モニタ２２６は、画像あるいはテキストが表示可能である電気的モニタの全てである。適切なモニタ２２６は、ブラウン管（“ＣＲＴ；Cathode Ray Tube”）、液晶モニタ（“ＬＣＤ；Liquid Crystal Display”）などを含む。
【００９５】
ＡＧＰ、ＰＣＩ及びＩＳＡ又はＥＩＳＡバスは、上述した記載の例として使用されており、所望に応じて全てのバスアーキテクチャが上書きされることに注目される。コンピュータシステム２００が追加のプロセッサ（例えば、コンピュータシステム２００の任意のコンポーネントとして示されるプロセッサ１０ａ）を含むマルチプロセッシングコンピュータシステムであることが更に注目される。プロセッサ１０ａは、プロセッサ１０と同様であり得る。より具体的には、プロセッサ１０ａは、プロセッサ１０の同一のコピーであり得る。プロセッサ１０ａは、独立したバスを介して（図１５に示されるように）バスブリッジ２０２に接続されるか、あるいはプロセッサ１０とＣＰＵバス２２４を共有することができる。更に、プロセッサ１０ａは、Ｌ２キャッシュ２２８と同様の任意のＬ２キャッシュ２２８ａに結合することができる。
【００９６】
図１６を参照すると、コンピュータシステム３００の他の実施形態が示される。図１６の実施形態においては、コンピュータシステム３００はいくつかのプロセッシングノード３１２Ａ、３１２Ｂ、３１２Ｃ及び３１２Ｄを含む。各プロセッシングノードは、各プロセッシングノード３１２Ａ〜３１２Ｄ内に含まれるメモリコントローラ３１６Ａ〜３１６Ｄを介して各メモリ３１４Ａ〜３１４Ｄに結合される。加えて、プロセッシングノード３１２Ａ〜３１２Ｄは、プロセッシングノード３１２Ａ〜３１２Ｄ間を通信するように使用されるインターフェースロジックを含む。例えば、プロセッシングノード３１２Ａは、プロセッシングノード３１２Ｂと通信するためのインターフェースロジック３１８Ａ、プロセッシングノード３１２Ｃと通信するためのインターフェースロジック３１８Ｂ、及び更なる他のプロセッシングノード（図示せず）と通信するための第３インターフェースロジック３１８Ｃを含む。同様に、プロセッシングノード３１２Ｂは、インターフェースロジック３１８Ｄ、３１８Ｅ及び３１８Ｆを含み、プロセッシングノード３１２Ｃは、インターフェースロジック３１８Ｇ、３１８Ｈ、及び３１８Ｉを含み、プロセッシングノード３１２Ｄは、インターフェースロジック３１８Ｊ、３１８Ｋ、及び３１８Ｌを含む。プロセッシングノード３１２Ｄは、インターフェースロジック３１８Ｌを介して複数の入力／出力デバイス（例、デイジーチェーン構成におけるデバイス３２０Ａ〜３２０Ｂ）と通信するよう結合される。他のプロセッシングノードは、同様の方法で他のＩ／Ｏデバイスと通信し得る。
【００９７】
プロセッシングノード３１２Ａ〜３１２Ｄは、インタープロセッシングノード通信用にパケットベースのリンクを実装する。本実施形態において、リンクが単方向ライン（ユニディレクタルライン）のセット（例えば、ライン３２４Ａがプロセッシングノード３１２Ａからプロセッシングノード３１２Ｂへパケットを伝送するように使用され、ライン３２４Ｂは、プロセッシングノード３１２Ｂからプロセッシングノード３１２Ａにパケットを伝送するように使用される）として実装される。その他のライン３２４Ｃ−３２４Ｈのセットは、図１６に例示しているように、その他のプロセッシングノード間にパケットを伝送するように使用される。一般的に、ライン３２４の各セットは、１つ又はそれ以上のデータラインを含み、このデータラインに応じた１つ又はそれ以上のクロックラインを含み、伝送されるパケット形式を示す１つ又はそれ以上のコントロールラインを含む。リンクは、プロセッシングノード間の通信用にキャッシュコヒーレントに、あるいはプロセッシングノードとＩ／Ｏデバイス（あるいはＰＣＩバス又はＩＳＡバスのような従来の構造のＩ／Ｏバスへのバスブリッジ）間の通信用には非コヒーレントに動作させてもよい。更に、リンクは、図示されるようにＩ／Ｏデバイス間のデイジーチェーン構造を使用して非コヒーレントに動作され得る。１つのプロセッシングノードから別のプロセッシングノードに伝送されるパケットは、１つ又はそれ以上の中間ノードを通じて伝送し得る。例えば、プロセッシングノード３１２Ａによってプロセッシングノード３１２Ｄまで伝送されたパケットは、図１６に示すプロセッシングノード３１２Ｂあるいはプロセッシングノード３１２Ｃの何れかを介して伝送し得る。全ての適合可能なルーティングアルゴリズムが使用され得る。コンピュータシステム３００の他の実施形態は、図１６に示す実施形態より多いか、あるいは少ないプロセッシングノードを含み得る。
【００９８】
通常、パケットはノード間のライン３２４に１つ又はそれ以上のビット時間として伝送され得る。ビット時間は、対応するクロックラインのクロック信号の立ち上がり又は立ち下がりエッジであり得る。パケットはトランザクションを開始するためのコマンドパケット、キャッシュコヒーレンシーを維持するためのプローブパケット、及びプローブとコマンドに応答するための応答パケットを含み得る。
【００９９】
メモリコントローラとインターフェースロジックに加えて、プロセッシングノード３１２Ａ〜３１２Ｄは、１つ又はそれ以上のプロセッサを含み得る。大まかに言って、プロセッシングノードは少なくとも１プロセッサを含み、所要に応じて任意的にメモリと他の論理と通信するためのメモリコントローラを含み得る。より具体的には、各プロセッシングノード３１２Ａ〜３１２Ｄは、（例えば、図２から１４に示した様々な構造上の、及びオペレーション上の詳細を含む）１つ又はそれ以上のプロセッサ１０のコピーを含み得る。外部のインターフェースユニット１８は、メモリコントローラ３１６と同様にノード内にインターフェースロジック３１８を含み得る。
【０１００】
メモリ３１４Ａ〜３１４Ｄは、適合可能な全てのメモリデバイスを含み得る。例えば、メモリ３１４Ａ〜３１４Ｄは、１つ又はそれ以上のＲＡＭＢＵＳ  ＤＲＡＭ（ＲＤＲＡＭ）、同期ＤＲＡＭ（ＳＤＲＡＭ）ＤＤＲ  ＳＤＲＡＭ、静的ＲＡＭ等を含み得る。コンピュータシステム３００のアドレススペースは、メモリ３１４Ａ〜３１４Ｄ間に分割される。各プロセッシングノード３１２Ａ〜３１２Ｄは、何れのアドレスが何れのメモリ３１４Ａ〜３１４Ｄにマップされるかを決定し、従って、プロセッシングノード３１２Ａ〜３１２Ｄの何れに特定的なアドレスのメモリ要求が送信されなければならないかのを決定するよう使用されるメモリマップを含み得る。一実施形態において、コンピュータシステム３００におけるアドレスのコヒーレンシーポイントはこのアドレスに対応するバイトを記録するメモリに結合されたメモリコントローラ３１６Ａ〜３１６Ｄである。言い換えれば、メモリコントローラ３１６Ａ〜３１６Ｄは、対応するメモリ３１４Ａ〜３１４Ｄへの各メモリアクセスがキャッシュコヒーレントにおいて生じることを確実にする役目を担う。メモリコントローラ３１６Ａ〜３１６Ｄは、メモリ３１４Ａ〜３１４Ｄへインターフェースするためのコントロール回路を含み得る。加えて、メモリコントローラ３１６Ａ〜３１６Ｄは、メモリ要求をキューするための要求キューを含み得る。
【０１０１】
一般に、インターフェースロジック３１８Ａ〜３１８Ｌは、リンクからのパケットを受信し、リンク上に伝送されるパケットをバッファリングする様々なバッファを含み得る。コンピュータシステム３００は、パケットを伝送する適合可能なフローコントロール機構の全てを使用し得る。例えば、一実施形態において、各インターフェースロジック３１８は、インターフェースロジックが接続されるリンクの他の末端におけるレシーバ内のバッファの各形式の数のカウントを記録する。インターフェースロジックは、受信するインターフェースロジックがパケットを記録するための空いているバッファを有さない場合は、パケットを伝送しない。受信するバッファが伝送されるパケットを送信することによって解除されるので、受信するインターフェースロジックが、メッセージを送信インターフェースロジックに伝送し、バッファが解除されたことを示す。そのような機構は、“クーポンベースの”システムと称される。
【０１０２】
Ｉ／Ｏデバイス３２０Ａ〜３２０Ｂは、適合可能なＩ／Ｏデバイスであり得る。例えば、Ｉ／Ｏデバイス３２０Ａ〜３２０Ｂが、これらのデバイスが結合され得る他のコンピュータシステム（例、ネットワークインターフェースカードあるいはモデム）と通信するデバイスを含み得る。更に、Ｉ／Ｏデバイス３２０Ａ〜３２０Ｂは、ビデオアクセラレータ、オーディオカード、ハード又はフロッピーディスクドライブ又はドライブコントローラ、ＳＣＳＩ（Small Computer System Interface）アダプタ、及びテレフォニーカード、サウンドカード、及びＧＰＩＢ又はフィールドバスインターフェースカードのような様々なデータ入手カードを含む。用語“Ｉ／Ｏデバイス”と“周辺デバイス”は、同義語として本文に意図される。
【０１０３】
これまでの開示を完全に理解したならば、当業者には様々な変形及び変更が可能であることが明白であろう。添付の特許請求の範囲はそのような変形及び変更の全てを包含するように解釈されることを意図したものである。
【産業上の利用可能性】
【０１０４】
本発明は、概してプロセッサの技術分野に利用可能である。
【図面の簡単な説明】
【０１０５】
【図１】プロセッサの一実施形態の一部のブロック図。
【図２】図１に示した変換およびフィルタブロックの一実施形態のブロック図。
【図３】プロセッサの一実施形態によって実装されてよいパイプラインの一実施形態を例示したタイミング図。
【図４】マイクロＴＬＢタグ回路の一実施形態のブロック図。
【図５】図４に示した制御回路に対応する真理値表の一実施形態のブロック図。
【図６】マイクロＴＬＢデータ回路の一実施形態のブロック図。
【図７】マイクロタグ回路の一実施形態のブロック図。
【図８】図２に示したブロックの一実施形態のオペレーションを例示したフローチャート。
【図９】図１に示したウェイ予測器の一実施形態のブロック図。
【図１０】キャッシュミスに応答してリプレースメントウェイを選択する一実施形態を例示したフローチャート。
【図１１】図１に示したデータキャッシュデータメモリの一部の一実施形態のブロック図。
【図１２】図１に示したデータキャッシュデータメモリの一部の第１実施形態のブロック図。
【図１３】図１に示したデータキャッシュデータメモリの一部の第３実施形態のブロック図。
【図１４】ウェイ予測を生成する一実施形態を例示したフローチャート。
【図１５】図１に示したプロセッサを含むコンピュータシステムの一実施形態のブロック図。
【図１６】図１に示したプロセッサを含むコンピュータシステムの第２実施形態のブロック図。
【図１】
2007504552.tif 000003
【図２】
2007504552.tif 000004
【図３】
2007504552.tif 000005
【図４】
2007504552.tif 000006
【図５】
2007504552.tif 000007
【図６】
2007504552.tif 000008
【図７】
2007504552.tif 000009
【図８】
2007504552.tif 000010
【図９】
2007504552.tif 000011
【図１０】
2007504552.tif 000012
【図１１】
2007504552.tif 000013
【図１２】
2007504552.tif 000014
【図１３】
2007504552.tif 000015
【図１４】
2007504552.tif 000016
【図１５】
2007504552.tif 000017
【図１６】
2007504552.tif 000018
【手続補正書】
【提出日】平成17年10月24日(2005.10.24)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
プロセッサ（１０）であって、
複数のキャッシュラインを記録するように構成されたデータメモリ（２０）および複数のタグを記録するように構成されたタグメモリ（２２）を含むキャッシュであって、前記複数のタグの各々は、前記複数のキャッシュラインの各々の１つに対応しているキャッシュ（１６）と、
前記複数のキャッシュラインのサブセットに対する第１仮想アドレスによって、前記キャッシュ（１６）でヒットを検出するように構成されたタグ回路（３６）とを含み、
前記サブセットは複数の、複数のタグを含み、かつ、前記タグ回路は前記サブセットの複数の、複数のタグの各々に対応し、前記タグ回路は前記仮想アドレスの少なくとも一部と、前記タグ回路に記録された前記タグの一部との比較に応じて、前記第１仮想アドレスに対するヒットを検出するように構成されており、
前記タグ回路（３６）の前記第１仮想アドレスによるヒットに応じて、前記タグ回路（３６）は前記第１仮想アドレスに対するタグメモリ（２２）の読み出しを阻止するように構成されており、かつ、前記データメモリ（２０）は、前記タグメモリ（２２）に記録された１つまたはそれ以上のタグと前記第１仮想アドレスに対応するタグの比較を行わずに、前記第１仮想アドレスに対応する第１キャッシュラインの少なくとも一部を出力するように構成される、プロセッサ。
【請求項２】
第１の変換索引バッファ（ＴＬＢ）（３０）を更に含み、前記ＴＬＢ（３０）は、物理アドレス変換が前記第１ＴＬＢ（３０）に記録される複数の仮想ページを識別する仮想アドレスの複数のページ部を記録するように構成されており、
前記タグ回路（３６）は前記第１ＴＬＢ（３０）に結合され、かつ、前記複数のキャッシュラインの前記サブセットは前記複数の仮想ページ内にあり、
前記タグ回路（３６）は、前記第１ＴＬＢの前記第１仮想アドレスによるヒットに更に応じて、前記キャッシュ（１６）の前記タグメモリ（２２）の読み出しを阻止するように構成されている、請求項１に記載のプロセッサ。
【請求項３】
前記第１ＴＬＢ（３０）の第１仮想アドレスによるヒットと、前記タグ回路（３６）の前記第１仮想アドレスによるミスに応じて、前記キャッシュ（１６）は前記タグメモリ（２２）に記録された１つまたはそれ以上のタグを読み出すように構成され、かつ、前記キャッシュ（１６）で前記第１仮想アドレスがヒットするかどうかを検出するように構成される、請求項２に記載のプロセッサ。
【請求項４】
第２ＴＬＢ（３８）さらに含み、
前記第２ＴＬＢ（３８）は前記第１ＴＬＢ（３０）のミスに応じてアクセスされ、かつ、前記第２ＴＬＢ（３８）は第２ＴＬＢ（３８）のヒットに応じて前記第１仮想アドレスに対応する第１物理アドレスのページ部を提供するように構成されており、
前記キャッシュ（１６）は前記第１物理アドレスのタグ部を受信するように結合されるとともに、前記キャッシュ（１６）の前記ヒットを検出するために、前記第１物理アドレスの前記タグ部を前記タグメモリ（２２）からの少なくとも第１タグと比較するように構成されている、請求項３に記載のプロセッサ。
【請求項５】
前記第１ＴＬＢ（３０）は第１の複数のエントリ（８０Ａ−８０Ｂ）を含み、前記第１の複数のエントリ（８０Ａ−８０Ｂ）の各々は仮想アドレスの複数のページ部のうち、対応するページ部を記録するように構成され、かつ、前記第１ＴＬＢ（３０）は前記第１仮想アドレスによってヒットした前記第１の複数のエントリのうちの第１エントリの表示を出力するように構成され、かつ、前記タグ回路（３６）は前記第１エントリの表示を受信するように結合され、かつ、前記タグ回路（３６）は第２の複数のエントリ（１００Ａ−１００Ｄ）を含み、前記第２の複数のエントリ（１００Ａ−１００Ｄ）のサブセットは前記第１ＴＬＢ（３０）の前記第１の複数のエントリ（８０Ａ−８０Ｂ）のうちの１つに対応し、かつ、前記キャッシュ（１６）に記録され、前記第１の複数のエントリ（８０Ａ−８０Ｂ）のうちの１つに記録されるページ部によって示されたページ内にあるキャッシュラインを識別し、かつ、前記タグ回路（３６）は前記第１エントリの前記表示に応じて、ヒットに対する前記サブセットをチェックするように構成される、請求項２に記載のプロセッサ。
【請求項６】
前記第２の複数のエントリ（１００Ａ−１００Ｄ）の各々は前記仮想アドレスのページ部に含まれず、かつ、前記仮想アドレスのキャッシュラインのオフセット部に含まれない仮想アドレスビットを記録するように構成される、請求項５に記載のプロセッサ。
【請求項７】
複数のキャッシュラインを記録するように構成されたデータメモリ（２０）および複数のタグを記録するように構成されたタグメモリ（２２）を有するキャッシュ（１６）を含むプロセッサであって、前記複数のタグの各々は前記複数のキャッシュラインの各々の１つに対応するものであり、
タグ回路（３６）により、前記複数のキャッシュラインのサブセットに対する第１仮想アドレスによって前記キャッシュ（１６）のヒットを検出するステップを含み、前記サブセットは複数の、前記複数のタグを含み、かつ、前記タグ回路は前記サブセットの前記複数の、前記複数のタグの各々に対応する前記タグの少なくとも一部を記録するように構成されており、前記第１仮想アドレスに対するヒットを検出するステップは前記仮想アドレスの少なくとも一部と前記タグ回路に記録された前記タグの前記一部との比較に応答するものであって、
前記タグ回路（３６）の前記第一仮想アドレスによるヒットに応じて、前記タグ回路（３６）によって前記第１仮想アドレスに対する前記タグメモリ（２２）の読み出しを阻止するステップと、前記タグメモリ（２２）に記録された１つまたはそれ以上のタグと前記第１仮想アドレスに対応するタグの比較を行わずに、前記第１仮想アドレスに対応する第１キャッシュラインの少なくとも一部を前記データメモリ（２０）へ出力するステップを含む、方法。
【請求項８】
前記プロセッサ（１０）は第１変換索引バッファ（ＴＬＢ）（３０）を更に含み、前記第１ＴＬＢ（３０）は物理アドレス変換が前記第１ＴＬＢ（３０）に記録される複数の仮想ページを識別する仮想アドレスの複数のページ部を記録するように構成されており、
前記タグ回路（３６）は前記第１ＴＬＢ（３０）と結合されており、
前記複数のキャッシュラインのサブセットは前記複数の仮想ページ内にあるところの前記方法は、
前記第１ＴＬＢの前記第１仮想アドレスによるヒットに更に応じて、前記タグ回路（３６）によって前記キャッシュ（１６）の前記タグメモリ（２２）の読み出しを阻止するステップをさらに含む、請求項７に記載の方法。
【請求項９】
前記第１ＴＬＢ（３０）の前記仮想アドレスによるヒットと、前記タグ回路（３６）の前記仮想アドレスによるミスに応じて、前記キャッシュ（１６）によって前記タグメモリ（２２）に記録された１つもしくはそれ以上のタグを読み出すステップと、前記キャッシュ（１６）で前記第１仮想アドレスがヒットするかどうかを検出するステップをさらに含む、請求項８に記載の方法。
【国際調査報告】
2007504552.tif 000019
2007504552.tif 000020
2007504552.tif 000021
2007504552.tif 000022