(57)【特許請求の範囲】
【請求項１】
アドレス情報ではなく変換ルックアサイドバッファ（ＴＬＢ）からのヒット情報を保持する事前検証済みタグキャッシュを有するコンピュータアーキテクチャにおいて、記憶を更新し、また旧キャッシュラインを無効化および除去するための装置であって、
(a1)仮想アドレスを受け取り、前記仮想アドレスに対応する仮想タグのＴＬＢにおけるロケーションを示すＴＬＢ仮想ヒットを提供する整数ロードＴＬＢと、
(a2)前記仮想アドレスを受け取り、データキャッシュに格納されているキャッシュデータの、物理タグの、前記ＴＬＢにおけるロケーションを示すＴＬＢ物理ヒットを提供する事前検証済みキャッシュタグアレイと、
(a3)前記事前検証済みキャッシュタグアレイに連結された第１の記憶有効ビットアレイと、
(a4)前記仮想アドレス、前記ＴＬＢ仮想ヒットおよび前記ＴＬＢ物理ヒットを受け取り、キャッシュデータを提供する、マルチプレクサを備えたデータキャッシュと、
を有する第１のＴＬＢ構造、および、
(b1)前記整数ロードＴＬＢと並列であり、記憶および他の命令アドレス情報を受け取り第１の物理アドレス情報を提供するマスタＴＬＢと、
(b2)前記マスタＴＬＢと並列であり、記憶または他の命令アドレス情報を受け取り、前記データキャッシュに格納されているキャッシュデータの、物理タグをインデックスに記憶し、第２の物理アドレス情報を提供する物理アドレスタグアレイと、
(b3)前記物理アドレスタグアレイに連結された第２の記憶有効ビットアレイと、
(b4) 前記マスタＴＬＢおよび前記物理アドレスタグアレイにより提供される前記第１および第２の物理アドレス情報を比較し、物理アドレス情報がマッチしたときに記憶／無効化キャッシュヒットを生成するコンパレータと、を有し、前記第１のＴＬＢ構造に並列な第２のＴＬＢ構造を備え、前記第１および第２の記憶有効ビットアレイが無効化すべきキャッシュラインまたは更新すべき記憶データを通知する、装置。
【請求項２】
アドレス情報ではなく変換ルックアサイドバッファ（ＴＬＢ）からのヒット情報を保持する事前検証済みキャッシュタグアレイを有するコンピュータアーキテクチャにおいて、記憶データを更新し、キャッシュラインを無効化し、旧キャッシュラインを除去するための方法であって、
第１のＴＬＢへの整数ロードについての仮想アドレス情報を受け取るステップと、
前記事前検証済みキャッシュタグアレイにおいて前記仮想アドレス情報を受け取るステップと、
前記仮想アドレス情報をデータキャッシュにおいて受け取るステップと、
前記第１のＴＬＢから、前記仮想アドレスに対応する仮想タグのＴＬＢにおけるロケーションを示すＴＬＢ仮想ヒットを提供するステップと、
前記事前検証済みキャッシュタグアレイから、データキャッシュに格納されているキャッシュデータの、物理タグの、前記ＴＬＢにおけるロケーションを示すＴＬＢ物理ヒットを提供するステップと、
前記仮想アドレス情報、前記ＴＬＢ仮想ヒットおよび前記ＴＬＢ物理ヒットに基づいてキャッシュデータを提供するステップと、
前記第１のＴＬＢに並列なマスタＴＬＢおよび物理アドレスタグアレイのそれぞれにおいて、整数演算および浮動小数点演算についてのアドレス情報を受け取るステップと、
前記マスタＴＬＢから第１の物理アドレス情報を提供するステップと、
前記物理アドレスタグアレイにおけるインデックスに、前記データキャッシュに格納されているキャッシュデータの、物理タグを記憶するステップと、
前記物理アドレスタグアレイから第２の物理アドレス情報を提供するステップと、
前記第１および第２の物理アドレス情報がマッチするか比較するステップと、
マッチしたときに、無効化すべきキャッシュラインまたは更新すべき記憶データを示す信号を生成するステップと、
を含む方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本技術分野は、事前検証済み(prevalidated)キャッシュタグ設計を採用したコンピュータシステムを包含する。特に、本技術分野は、記憶の更新と無効化、およびキャッシュからの旧キャッシュラインの除去をサポートするための設計を包含する。
【０００２】
【従来の技術】
コンピュータシステムは、比較的高速、高価であるが小容量のメモリを階層の最高位に、比較的より低速、低コストであるが大容量のメモリを階層の最低位に持つ、マルチレベル階層のメモリを採用することができる。階層は、プロセッサ内に物理的に統合されているか、または速度アップのために物理的にプロセッサの近くに搭載される、キャッシュと呼ばれる小さく高速のメモリを含みうる。コンピュータシステムは、別個の命令キャッシュおよびデータキャッシュを採用してもよい。さらに、コンピュータシステムは、マルチレベルのキャッシュを使用することができる。キャッシュの使用は、命令レベルにおいてコンピュータプログラムには透過（tranparent）であり、したがって命令セットを変更せずに、または既存のプログラムの修正を必要とせずに、コンピュータアーキテクチャに追加することができる。
【０００３】
キャッシュヒットは、プロセッサがキャッシュからアイテムを要求し、そのアイテムがキャッシュに存在する場合に発生する。キャッシュミスは、プロセッサがキャッシュからアイテムを要求し、そのアイテムがキャッシュに存在しない場合に発生する。キャッシュミスの場合、プロセッサは、要求したアイテムをさらに下位のメモリ階層から検索する。多くのプロセッサ設計において、キャッシュヒットしたアイテムへのアクセスに必要な時間は、設計者が単一サイクルでのキャッシュアクセス時間を捜し求める場合、プロセッサのクロックレートに対する主な制約の１つである。他の設計では、キャッシュアクセス時間は多重サイクルでありうるが、サイクルにおけるキャッシュアクセス時間を低減すると、殆どの場合プロセッサの性能が改善される。したがって、キャッシュヒットに要するアクセス時間の最適化は、コンピュータシステムの性能に関して極めて重要である。
【０００４】
キャッシュ設計に関連するのは、仮想記憶の概念である。仮想記憶システムは、コンピュータプログラマがメモリを一体の単一レベル記憶ユニットとして考えられるようにするが、実際には、必要に応じて補助記憶装置と高速記憶装置（キャッシュ）間でページ上のプログラムブロックを自動的に移動する動的アドレス変換ユニットを提供する。
【０００５】
またキャッシュ設計と関連するのは、完全アソシアティブな、すなわちコンテントアドレッサブルメモリ（ＣＡＭ）である。コンテントアドレッサブルメモリは、従来のハード的に組み込まれたアドレス指定機構に加えて、一メモリサイクル時間中にすべてのエントリに対して同時に特定のマッチに対する所望のビットロケーションの比較を可能にするハード的に組み込まれたロジックを有するランダムアクセスメモリである。所望のエントリの特定アドレスについては、その内容の一部をエントリへのアクセスに使用することができるため、知る必要がない。指定されたビットロケーションに一致するすべてのエントリは、フラグが付けられ、現在または次のメモリサイクルにアドレス指定することができる。
【０００６】
メモリは、ワード（例えば、ワード当たり３２ビットまたは６４ビット）に編成することができる。キャッシュとメモリ階層の次に下位のレベルとの間で転送することができるメモリの最低量は、ラインまたはブロックと呼ばれる。ラインは、複数のワード（例えば、１ライン当たり１６ワード）であってもよい。メモリはまた、１ページ当たりに多くのラインがある状態でページまたはセグメントに分割することができる。コンピュータシステムによっては、ページサイズを可変とすることができるものもある。
【０００７】
最近のコンピュータメモリアーキテクチャでは、中央演算処理装置（ＣＰＵ）は、ハードウェアとソフトウェアの組み合わせにより物理アドレスに変換される仮想アドレスを提供する。物理アドレスは、物理主記憶装置にアクセスするために用いられる。一群の仮想アドレスを各ページに動的に割り当てることができる。仮想メモリは、仮想アドレスを物理アドレスに変換する、時にページテーブルと呼ばれるデータ構造を必要とする。アドレス変換時間を低減するために、コンピュータは、変換ルックアサイドバッファ（ＴＬＢ）と呼ばれる、アドレスロケーション専用の専用連想キャッシュを使用することができる。
【０００８】
キャッシュは、多くのセグメントまたはウェイを含みうる。キャッシュがデータと共にラインアドレス全体を記憶し、かつ任意のラインをキャッシュ内の任意の位置に配置することができる場合、キャッシュは、完全にアソシアティブであるといえる。任意のラインを任意の位置に配置することができる大容量のキャッシュの場合、アイテムがキャッシュ内にあるか否か、およびそれがどこにあるのかを高速で決定するために必要なハードウェアは、非常に大型かつ高価になりうる。より高速かつ容量を節約でき、大容量キャッシュの代替となるものは、アドレスのサブセット（インデックスと呼ばれる）を用いてキャッシュ内のライン位置を指示してから、タグと呼ばれる各物理アドレスの上位ビットの残りのセットをデータと共に記憶することである。インデックスを有するキャッシュでは、特定アドレスを有するアイテムを、インデックスにより指定されたラインのセット内のみに配置することができる。所与のアドレスがサブセット内の１ラインに正確にマップされるようキャッシュが構成されている場合、キャッシュは、直接マップされているという。インデックスがサブセット内の２つ以上のラインにマップされる場合、キャッシュはセットアソシアティブであるという。アドレスのすべてまたは一部は、アドレス空間をセットに分割するセットインデックスを提供するために、ハッシュされることもある。
【０００９】
直接マッピングでは、ラインが要求されたとき、キャッシュにおける１ラインのみがマッチングインデックスビットを有する。したがって、コンピュータシステムが残りのアドレスがマッチするか否かを決定する前に、データを即座に検索してデータバス上に送り出すことができる。データは有効であってもなくてもよいが、データが有効である通常の場合、データビットは、コンピュータシステムがその有効性を決定する前に、データバス上で利用可能である。セットアソシアティブキャッシュでは、コンピュータシステムは、全アドレスが比較されるまで、どのラインがアドレスに対応するのか知ることができない。すなわち、セットアソシアティブキャッシュでは、ラインのセット内でデータビットのどのラインをプロセッサに提示するかを選択するために、タグ比較の結果が使用される。
【００１０】
【発明の解決しようとする課題】
ＴＬＢを有するキャッシュでは、ヒットに要するクリティカルタイミングパスには、一連の４つの動作が必要となる：１）仮想タグをＴＬＢ内のＣＡＭに提示して、ＴＬＢのランダムアクセスメモリ内の対応する物理タグのロケーションを決定しなければならない、２）次に、該物理タグをＴＬＢのランダムアクセスメモリ（ＲＡＭ）から検索しなければならない、３）次に、ＴＬＢのＲＡＭから得た物理タグをキャッシュのタグセクションからの物理タグのアクセスと比較しなければならない、そして４）適切なデータラインを選択しなければならない。この一連の４つの動作がキャッシュを読み込むために必要であり、これはプロセッサの周波数およびプロセッサ性能を制限するものとなる可能性がある。
【００１１】
【課題を解決するための手段】
事前検証済み（prevalidated）タグキャッシュは、従来の実施のようにアドレス情報ではなく、変換ルックアサイドバッファ（ＴＬＢ）からのヒット情報を保持する。すなわち、仮想アドレスがＴＬＢに提供されると、物理アドレスがＴＬＢから出力として提供される代わりに、ＴＬＢヒットビットが提供される。そして、ＴＬＢヒットビットが事前検証済みキャッシュタグ（ＴＬＢヒット情報を含む）と比較されて、キャッシュヒットまたはキャッシュミスの発生を決定する。処理速度を強化するために、ＴＬＢは、例えば３２エントリ等小さくてもよい。ＴＬＢは、整数ロード動作等、低いレイテンシー（latency、待ち時間）を要求する動作に使用することもできる。
【００１２】
小さなＴＬＢでは、潜在的なスラッシング問題、すなわちページまたはＴＬＢエントリのスワップアウトが生じ、これにより例えば、キャッシュの性能が劣化する。ＴＬＢが小さいため、ＴＬＢエントリは非常に早い時期に除去されることがあり、これは、実際上キャッシュからのデータ損失につながる。すなわち、事前検証済みキャッシュタグは、ＴＬＢのヒット情報は含むが、物理アドレスは含まないため、ＴＬＢエントリが変化したとき、ヒット情報はもはや有効ではなく、旧いＴＬＢエントリに関連するデータはいずれも失われることになる。
【００１３】
本発明のマイクロアーキテクチャでは、ＴＬＢエントリを小さいままにしておき、かつＴＬＢのスラッシングを防止するために、別個の、より大きなＴＬＢを、記憶動作等の、より高いレイテンシーで処理することができる動作を処理するために付加することができる。より大きなＴＬＢはまた、例えば浮動小数点演算に対してより高い帯域幅を提供することができる。小さなＴＬＢ内に存在する必要のあるＴＬＢエントリは、例えば整数ロードに必要なＴＬＢエントリ等に制限されてもよく、その一方で、他のすべてのＴＬＢエントリは大きいほうのＴＬＢに回してもよい。これらのＴＬＢは並列に動作する。さらに、すべての例外および特権検査を大きなＴＬＢで行ってもよく、これもまた、整数ロードアクセス時間を低減するよう作用する。この並列ＴＬＢアーキテクチャを使用すると、小さなＴＬＢと大きなＴＬＢが連続してアクセスされる場合に、このアーキテクチャを使用しなければ発生する可能性があるパイプラインの機能停止を低減するというさらなる利点がある。
【００１４】
物理アドレスの代わりにＴＬＢヒット情報のみを有するキャッシュタグのさらなる結果として、キャッシュラインを更新、無効化し、旧キャッシュラインを除去するための機構を設けてもよい。記憶有効モジュールをＴＬＢアーキテクチャに追加してもよい。記憶有効モジュールは、新しいキャッシュラインの書き込み時に、記憶有効ビットを設定する。記憶有効ビットは、新しいＴＬＢエントリおよびハードウェア障害回復動作を含む無効化動作が発生したときにクリアされる。有効ビットは、すでに無効なキャッシュラインに対しての複数の記憶の更新または無効化を防止する。
【００１５】
キャッシュラインの物理アドレスを保持するために、並列キャッシュタグアレイを追加してもよい。キャッシュタグアレイは、ＴＬＢヒットビットを保持する事前検証済みキャッシュタグと機能的に並列である。物理アドレスキャッシュタグは、事前検証済みキャッシュタグの場合と同様にして、入力アドレスに含まれるインデックスを使用して、キャッシュから読み出される。大きなＴＬＢの追加には、ロードアドレスパイプラインとは独立の新しいアドレスパイプラインを含む。このパイプラインの追加により、ロードアクセスのレイテンシーに影響を与えることなく、キャッシュに対してより大きな帯域幅が提供される。動作において、記憶アドレスは、大きなＴＬＢ、およびロードデータパイプラインにおける動作とは独立したキャッシュタグに入力される。記憶アドレスが物理アドレスである場合、アドレスは大きなＴＬＢをバイパスして、物理アドレスマルチプレクサに入力される。記憶アドレスが仮想アドレスである場合、大きなＴＬＢがアクセスされて、物理アドレスが大きなＴＬＢにより変換される。そして、記憶命令からの物理アドレスが、キャッシュタグアレイから読み出された物理アドレスと比較される。２つのアドレスがマッチすると、ウェイヒットが生成され、記憶更新ハードウェアが、後のパイプライン段階でデータキャッシュを更新あるいは無効化する。
【００１６】
【発明の実施の形態】
物理タグをＴＬＢから検索する必要のないＴＬＢを有するキャッシュは、ＴＬＢを用いてキャッシュにアクセスするためのクリティカルパスに要する時間全般を改良することができる。このような設計においては、物理タグをキャッシュに記憶する代わりに、キャッシュは、物理タグが記憶されるＴＬＢ内のロケーションを記憶する。ＴＬＢは、２つまたはそれ以上のＣＡＭを備えてもよい。キャッシュヒットの場合、ＴＬＢ内のＣＡＭの１つは、物理アドレスの記憶されているＴＬＢ内のロケーションを特定するベクトルを生成しうる。該ベクトルは、キャッシュに記憶されるロケーションベクトルと比較することができる。ロケーションベクトルの比較により、実際に物理アドレスを検索する必要なく、セット内の１つのデータラインの選択を可能にする十分な情報が提供される。その結果、かなり時間のかかる動作（物理アドレス検索）が、キャッシュヒットのクリティカルタイムパスから除去される。さらに、物理タグではなくロケーションベクトルを比較することで、従来のデジタルコンパレータよりも高速かつ単純な比較ロジックを使用することが可能になる。
【００１７】
図１は、従来技術によるキャッシュの一例を示したものである。システム１０は、仮想アドレス１２と、ランダムアクセスメモリアレイ１４と、コンパレータ１６と、物理アドレスレジスタ１８とを備える。システム１０は、セットアソシアティブロジックを採用する。ランダムアクセスメモリアレイ１４は、全部で１２８（４つ）のエントリを含み、２つの仮想ページアドレスビットを必要とする。各セットの４エントリは、ランダムアクセスアレイの１つの物理ワード（水平）の一部であるため、このようなワードが１２８個あり、７のアドレスインデックスビットを必要とする。キャッシュページが存在するか否かおよびどこに存在するかを決定するために、合わせて仮想ページ番号アドレスｎ＝９をアドレス変換において使用しなければならない。ページ内のバイトを表す下位ビットｎは、変換する必要がない。７つの仮想ビットは、１２８セットのうちの１つを直接選択するために使用される。該セットから読み出されたワードは、コンパレータ１６を使用して、同時に仮想アドレスと比較される。比較のうちの１つが「YES」であると、ランダムアクセスアレイに存在する、キャッシュにおけるページの正確な実アドレスすなわち物理アドレスが、物理キャッシュアドレスレジスタ１８にゲートされる。物理アドレスは、後続サイクルにおいて、キャッシュアレイ（図示せず）から正確な情報を得るために用いられる。
【００１８】
図２は、別の従来技術によるキャッシュを示したものである。４ウェイセットアソシアティブキャッシュが例示のために用いられる。仮想アドレス１００は、下位インデックスビット１０２と、上位（仮想）タグビット１０４とを含む。インデックスビット１０２は、通常、仮想アドレスおよび物理アドレスについて同じである。インデックスビット１０２は、キャッシュのデータセクション１０６におけるデータラインの１セットを選択するために使用される。データセクション１０６の出力は、４つのデータライン１０８である。インデックスビット１０２もまた、キャッシュのタグセクション１１０において物理タグのセットを選択するために使用される。タグセクション１１０の出力は、それぞれ１つのデータライン１０８に対応する４つの物理タグ１１２である。仮想タグビット１０４は、ＴＬＢ１１４内のＣＡＭ１１６において１つのエントリを選択するために使用される。ＴＬＢ１１４は、仮想タグおよび物理タグの双方を記憶する。仮想タグビット１０４がＣＡＭ１１６においてマッチを見つけられない場合、ＴＬＢミスが発生する。図２に示すシステムでは、複数の仮想タグが１つの物理タグにマップされ得る。ＴＬＢヒットの場合、選択されたＣＡＭエントリは、仮想タグ１０４に対応する物理タグのＴＬＢ  ＲＡＭ１１８におけるアドレスを指定する。そして、物理タグがＴＬＢのＲＡＭ１１８から検索される。次に、４つのデジタルコンパレータ１２０はそれぞれ、ＴＬＢのＲＡＭ１１８からの物理タグをタグセクション１１０からの物理タグ１１２と比較する。物理タグのマッチングした対は、ロジック１２２を通して、４つのデータラインのうちのいずれがマルチプレクサ１２４によって選択されるかを指示する。特定のインデックスビットの場合、物理タグのマッチングする対がないこともあり、この場合にはキャッシュミスが発生する。
【００１９】
図３は、４ウェイセットアソシアティブキャッシュ２００を示す。キャッシュ２００は、インデックスビット２０２と、データセクション２０３と、マルチプレクサ２０５とを備える。キャッシュタグセクション２０４は、データラインに対応する物理ＴＬＢヒットタグを含む。新しいデータラインがキャッシュ２００に配置されると、物理アドレスタグをキャッシュタグセクション２０４に記憶する代わりに、ベクトル２１２（物理ＴＬＢヒットベクトルと呼ぶ）をキャッシュタグセクション２０４に記憶する。
【００２０】
キャッシュ２００において、ＴＬＢ２１０は２つのＣＡＭ、すなわち物理タグを含む物理ＣＡＭ２０６と、仮想タグを含む仮想ＣＡＭ２０８とを備える。新しい仮想タグ２０７が仮想ＣＡＭ２０８に記憶されると、対応する物理タグ２０９もまた、コンピュータオペレーティングシステムを使用して利用可能であり、対応する物理タグ２０９は物理ＣＡＭ２０６に記憶される。物理ＴＬＢヒットベクトル２１２は、物理タグ２０９を有する物理ＣＡＭ２０６におけるそれぞれのロケーションに対応するバイナリ「１」を持つ。新しいラインをキャッシュ２００にエントリすると、新しいラインの物理タグ２０９の物理ＣＡＭ２０６におけるインスタンスすべてのロケーションを指示する物理ＴＬＢヒットベクトル２１２が、物理ＣＡＭ２０６によって生成され、キャッシュタグセクション２０４内の、インデックスビット２０２により決定される行ロケーションかつセット配置アルゴリズムにより決定される列ロケーションに記憶される。
【００２１】
キャッシュアクセスの場合、仮想タグ２０７が仮想ＣＡＭ２０８に使用されて、仮想ＴＬＢヒットベクトル２１４が生成される。ＴＬＢミスがある場合、仮想ＴＬＢヒットベクトル２１４はすべてのバイナリが「０」である。ＴＬＢヒットがある場合、仮想ＴＬＢビットベクトル２１４は、仮想ＣＡＭ２０８における仮想タグ２０７のロケーションを指示する１つのバイナリ「１」を有する。ＴＬＢ２１０における各仮想タグ２０７は、一意でなければならない。
【００２２】
キャッシュアクセスの場合、インデックスビット２０２は、キャッシュタグセクション２０４における４つの物理ＴＬＢヒットベクトル２１２のセットを選択する。キャッシュタグセクション２０４における４つの物理ＴＬＢヒットベクトル２１２はそれぞれ、４つのコンパレータ２１６のうちの１つを使用して、仮想ＣＡＭ２０８からの仮想ＴＬＢヒットベクトル２１４と比較される。任意の所与のインデックスビット２０２のセットに対して、キャッシュタグセクション２０４における４つの選択された物理タグのうちの１つだけが、固定ページサイズのＴＬＢ２１０からの仮想ＴＬＢヒットベクトル２１４とマッチする。固定ページサイズの場合、４つの物理ＴＬＢヒットベクトル２１２における単一対のマッチング「１」は、いずれのデータラインがマルチプレクサ２０５によって選択されるかを決定する。所与のインデックスビット２０２のセットについて、４つの物理ＴＬＢヒットベクトル２１２においてマッチング「１ｓ」がない場合、キャッシュミスが発生する。
【００２３】
キャッシュ２００において、ＴＬＢ２１０からの物理タグは、キャッシュアクセスのために検索されない。ＴＬＢ２１０からの物理タグの検索という動作をなくすことで、キャッシュアクセスに要するクリティカルタイムパスにおいて相当量の時間をとる動作がなくなる。キャッシュ２００はマッチを決定するために、一対のマッチング論理「１ｓ」を探すので、コンパレータ２１６は、大きなファンインＯＲゲートが後続する単純なＡＮＤゲートであってもよい。
【００２４】
事前検証済みキャッシュアーキテクチャに関するさらなる詳細は、「CACHE MEMORY WITH REDUCED ACCESS TIME」と題する１９９７年１０月２２日付けで出願された同時係属中の米国特許出願第０８／９５５，８２１号に提供されており、その開示を参照により本明細書に援用する。
【００２５】
図３に示すマイクロアーキテクチャは、事前検証済みタグキャッシュを備える。事前検証は、コンピュータマイクロアーキテクチャがキャッシュロードのレイテンシーを最小に抑えながら帯域幅全体を最大限にするよう設計される場合、マイクロアーキテクチャにおけるＴＬＢの動作の仕方に制約を課す。例えば、事前検証済みタグキャッシュは、あるロードに対しては非常に高速なアクセス時間を提供するが、マイクロアーキテクチャは、仮想アドレスと物理アドレス間の変換が制限され、かつ異なるキャッシュレベル間への処理の分散が制限されるよう設計される可能性がある。マイクロアーキテクチャは例えば、高速整数ロードおよび浮動小数点ロードのための高帯域幅を提供することができる。すなわち、整数ロードデータは、高速のアクセスタイミングを有する必要があるが、そのワーキングセットサイズは通常小さい。整数ロードのレイテンシーを最適化するために、プロセッサによっては小さいが高速の第１レベルキャッシュを提供するものがある。仮想アドレス変換を提供し、アドレスエイリアシング問題を回避するために、プロセッサによっては、ＴＬＢにアクセスして、データがキャッシュに存在するか否かを決定するためにキャッシュタグをチェックするための物理アドレスを提供しなければならないものもある。高速整数データアクセスのメモリのレイテンシーを低減するために、ＴＬＢサイズを少数のエントリ（１６〜３２等）に制限してもよい。これは、２５６またはそれ以上のＴＬＢエントリを必要とし得る大きなキャッシュ構造を持つプロセッサ上で多数のエントリが必要とされることに相反する。
【００２６】
図３に示すような事前検証済みキャッシュタグシステムにおいて、ＴＬＢエントリは、キャッシュラインを識別するために、キャッシュタグにおいて論理的に使用される。ＴＬＢエントリが除去されると、通常、制御を使用して、除去されたＴＬＢエントリに関連する事前検証済みキャッシュタグにおけるすべてのデータを無効化する。しかし、１つのＴＬＢエントリがデータキャッシュの大部分またはすべてにマップされることもあるため、この動作は、処理を遅らせることがある。そして、ＴＬＢは、プログラムの実行をサポートせずに、メモリとページのスワッピングを絶えず行う（すなわちスラッシングする）ことがある。
【００２７】
浮動小数点データ処理性能は、普通、浮動小数点実行ユニットへ出入りするメモリ帯域幅によって制限される。低いレイテンシーを必要とする整数ロードデータアクセスとは反対に、浮動小数点アクセスは通常スケジュールすることができ、またこれによってより長い潜在期間に耐えることができる。同様に、整数データサイズは普通小さいが、浮動小数点データセットは普通非常に大きい。浮動小数点のロード／記憶動作についてのＴＬＢ動作は、高帯域幅および大きなデータ空間の変換（多数のＴＬＢエントリがアクセスされる）の双方を提供するのが理想的である。一つの設計では、すべてのメモリポートに全帯域幅を設け、浮動小数点要求の変換用に大きいがより低速なＴＬＢを設ける。さらにメモリポートの使用は非制限であってもよく、これによってより多くのロードおよび記憶の組み合わせが可能になる。
【００２８】
キャッシュタグは事前検証済みＴＬＢヒット情報のみを保持しているため、キャッシュラインの物理アドレスがキャッシュタグにおいて利用不可能であることから、事前検証済み整数ロードデータキャッシュへの記憶または無効化は、困難でありうる。さらに、その高速のレイテンシーの必要性により、ＴＬＢは小さい（例えば、１６または３２エントリ）ため、小さな整数ロードデータキャッシュＴＬＢは、記憶変換のために使用することができないことがある。１つの選択肢は、記憶ＴＬＢアクセスをより大きくかつより低速なＴＬＢに分離するとともに、第１レベルキャッシュにおいて行うことのできない記憶動作（浮動小数点記憶等）、およびフラッシュキャッシュおよびバススヌープのような他の無効化動作のために、事前検証済み整数ロードキャッシュを無効化するための機構を設けるというものである。
【００２９】
浮動小数点ロードおよび記憶等の多くのコンピュータ命令と、パージ、挿入、およびプローブを含むＴＬＢサポート命令および整数記憶は、高速整数データキャッシュに直ちにアクセスする必要はない。コンピュータ命令には、より小さなキャッシュのスラッシングを回避するために、高速整数ロードキャッシュに存在するデータを持たないものもある。高速整数データキャッシュのより良好な使用をサポートするために、このタイプのデータが整数データキャッシュにロードされないようにするための機構を設けてもよい。これらの命令に整数キャッシュをバイパスさせるようにするためには、すべての例外情報を大きなＴＬＢにのみ記憶して、例えばすべての記憶動作、浮動小数点ロード、またはＴＬＢサポート命令に関してのみ大きなＴＬＢにアクセスする必要があるようにする。
【００３０】
最後に、すべての命令について、高速化のために小さくなくてはならない第１レベルＴＬＢを通るよう強制すると、ＴＬＢミスレートがより高くなるため、プロセッサにおいてパイプライン機能停止が生じることがある。したがって、図３に示すマイクロアーキテクチャは、ＴＬＢミスレートおよびパイプライン機能停止を低減する並列ＴＬＢ構造を使用するよう適合されてもよい。
【００３１】
図３に示す事前検証済みキャッシュタグシステムは、物理アドレスまたは仮想アドレスを保持する代わりに、ＴＬＢエントリスロット番号に対応するビットを保持するタグを含む事前検証済みキャッシュタグを含む。このタイプのキャッシュへの記憶、およびこのタイプのキャッシュのコンテンツの無効化は、追加のロジックを使用して達成することができる。事前検証済みキャッシュタグ設計の価値は、ロードレイテンシーを最小化できることである。その結果、このロードレイテンシーを可能な限り低く維持するために、設計は、ロードデータパスの記憶アクティビティによる中断を避けるように設計しても良い。さらに、キャッシュ記憶には、物理アドレス索引および仮想アドレス索引が必要なことがある。これらの機能をロードデータパスに追加することで、ロードレイテンシーが悪化することがある。記憶動作をロードアクセスパスと並列で処理することにより、ロードレイテンシーは影響を受けない状態に留まるはずである。同様に、記憶ＴＬＢエントリは、事前検証済みタグキャッシュに使用される小さく高速なＴＬＢにおいてスラッシングを引き起こす可能性がある。記憶ＴＬＢ動作は、並列かつクリティカルでない構造で処理してもよい。
【００３２】
並列記憶動作に加えて、事前検証済みタグキャッシュから除去すべきキャッシュラインを無効化することで、図３に示すシステムをさらに最適化することができる。記憶／無効化変換および索引ロジックから事前検証済みキャッシュタグに通信して、各キャッシュラインを効率的に無効化することによって、キャッシュラインを無効化することができる。事前検証済みキャッシュタグ設計におけるキャッシュタグは、仮想または物理アドレスではなくＴＬＢヒットビットを含みうる。したがって、ＴＬＢエントリが変更されると、該ＴＬＢエントリに関連するキャッシュラインが無効化される。ＴＬＢ変更の場合の事前検証済みキャッシュタグの無効化に備えるために、追加ロジックを図３に示すシステムに追加することができる。
【００３３】
追加ロジックが図３に示すシステムに追加されると、キャッシュラインは、ＴＬＢ変更により無効化されうるが、記憶／無効化制御パスの観点からは有効のままでありうる。ロード動作はＴＬＢ無効化の効果が見えるため、この状況によりロード動作について問題が生じることはない。しかし、記憶および無効化はＴＬＢ無効化の効果が見えないため、この状況により記憶および無効化について問題が生じる可能性がある。キャッシュラインがＴＬＢ更新機構を通してすでに無効化されたので、部分的な有効情報のために、同一のキャッシュラインを事前検証済みタグキャッシュの複数のウェイまたはセクションにロードすることが起こり得るという別の問題が持ちあがる。これは、複数のウェイに冗長データを有することになるので、キャッシュの有効性を低減することがあり、また記憶および更新について問題を生じることがある。記憶では、コヒーレンシを保証するために、２つ以上のキャッシュラインを更新する必要がありうる。無効化では、コヒーレンシを保証するために、２つ以上のキャッシュラインを無効化する必要がありうる。この問題に対する１つの解決策には、図３に示す事前検証済みタグキャッシュ設計から旧キャッシュラインを除去するためのロジックを追加することが含まれる。
【００３４】
図４は、高速のロードレイテンシーために調整した事前検証済みタグキャッシュシステム２５０の構成要素を示す。小さなＴＬＢ２６０には、事前検証済みキャッシュタグに対してヒットビットを生成する仮想アドレス（ＶＡ）ＣＡＭ２６１が設けられる。並列して、事前検証済みキャッシュタグ２７０に記憶されるＴＬＢヒットビットは、命令によって生成されるアドレスからのインデックスフィールドに従って読み出される。ＶＡ  ＣＡＭ２６１からＴＬＢヒットビットが、また事前検証済みキャッシュタグＴＬＢヒットが読み出されて、ＡＮＤ回路２７２およびＯＲ回路２７４それぞれにおいて論理積および論理和がとられ、キャッシュラインがキャッシュに存在するか否かを決定する。キャッシュラインがキャッシュに存在する場合、キャッシュウェイヒットが生成され、データキャッシュ２８０の出力がマルチプレクサ２７６において多重化されて、ロードデータを提供する。システム２５０は高速仮想アドレスロードアクセス用に調整されているため、物理アドレス指定されたロードは、より低いレベルのキャッシュアクセス（図示せず）によりサポートすることができる。
【００３５】
記憶命令仮想アドレスをロードと同じアドレスポートに送ることによって記憶更新をサポートすることができる。この動作は、ライトバックパイプライン段階中に後のキャッシュへの記憶に使用されるキャッシュウェイヒットを提供する。しかし、記憶命令は、物理アドレス指定を使用すると共に、既存のキャッシュラインを更新あるいは無効化することが可能でなければならない。図５は、記憶動作の物理アドレス指定を処理することができる、拡張された事前検証済みキャッシュシステムを示す。図５に示すシステム３００は、図４に示すシステムと同様である。事前検証済みキャッシュＴＬＢ３１０は、メモリポートｙにおいて仮想アドレスを受け取り、ＴＬＢヒットを生成する。事前検証済みキャッシュタグ３２０は、ＴＬＢヒットを生成し、該ＴＬＢヒットはＶＡ  ＣＡＭ３１１の出力とＡＮＤ回路３３２において論理積をとり、かつＯＲ回路３３４において論理和をとり、キャッシュウェイヒットを生成する。キャッシュウェイヒットは、データキャッシュ３３０の出力を選択するために、マルチプレクサ３３６により使用される。事前検証済みキャッシュＴＬＢ３１０は、物理アドレスＣＡＭ３１２を含むため、物理アドレス（ＰＡ）要求をＰＡ  ＣＡＭ３１２に振り替えることができ、（ＰＡ  ＣＡＭによって生成される）ＶＡヒットビットは、上述したようにタグと比較される。しかし、ＰＡ  ＣＡＭ３１２を事前検証済みキャッシュＴＬＢ３１０に追加することは、逆にロードアクセス時間に悪影響を及ぼすことがある。さらに、記憶および無効化ＴＬＢ要求は、ロードＴＬＢエントリをスラッシュすることがあり、これによってより多くのＴＬＢミスが発生し、ひいてはＴＬＢヒットレートが低くなる。最後に、記憶および無効化動作は、事前検証済みキャッシュ設計により提供されるロード帯域幅を減じるため、ロード動作帯域幅が低減する。
【００３６】
図５に示すシステム３００に本来備わっている問題は、並列ＴＬＢ構造を追加することで克服することができる。図６は、このような並列ＴＬＢ構造を有する事前検証済みタグキャッシュシステム４００を示す。システム４００は、ＶＡ  ＣＡＭ４１２を含む事前検証済みキャッシュＴＬＢ４１０を含む。上述したように、ロード仮想アドレス情報は、メモリポートにおいてＶＡ  ＣＡＭ４１２、事前検証済みキャッシュタブ４２０、およびデータキャッシュ４３０に提供される。ＶＡ  ＣＡＭ４１２からのＴＬＢヒットは、事前検証済みキャッシュタグ４２０からのＴＬＢヒットと比較され、データキャッシュの出力を選択してロードデータを提供するために、キャッシュウェイヒットがマルチプレクサ４３６によって使用される。
【００３７】
マスタＴＬＢ（ＤＴＬＢ）４４０は、事前検証済みキャッシュＴＬＢ４１０と並列に追加される。ＤＴＬＢ４４０は、より多数のエントリを有し、事前検証済みキャッシュＴＬＢ４１０とは別個のものである。ＤＴＬＢ４４０は、記憶および他の命令に要求されるＴＬＢエントリをすべて保持する。記憶および無効化ＴＬＢエントリが事前検証済みキャッシュ４１０に存在する必要がなくなるため、事前検証済みキャッシュＴＬＢ４１０におけるスラッシングが低減する。
【００３８】
並列キャッシュタグアレイ４５０を追加してもよい。キャッシュタグアレイ４５０は、キャッシュラインの物理アドレスを保持する。キャッシュタグアレイ４５０は、ＴＬＢヒットビットを保持する事前検証済みキャッシュタグ４２０と機能的に並列である。物理アドレスキャッシュタグは、入力アドレスに含まれるインデックスを使用して、事前検証済みキャッシュタグと同様にして、キャッシュタグアレイ４５０から読み出される。ＤＴＬＢ４４０の追加には、ロードアドレスパイプラインと独立した新しいアドレスパイプラインが含まれる。このパイプラインの追加により、ロードアクセスレイテンシーに影響を与えることなく、キャッシュにより大きな帯域幅が提供される。動作において、記憶アドレスはＤＴＬＢ４４０およびロードデータパイプラインにおける動作と独立のキャッシュタグアレイ４５０に入力される。記憶アドレスが物理アドレスである場合、アドレスはＤＴＬＢ４４０をバイパスして、物理アドレスマルチプレクサ４５２に入力される。記憶アドレスが仮想アドレスである場合、ＤＴＬＢ４４０がアクセスされ、物理アドレスがＤＴＬＢ４４０により変換される。そして、記憶命令からの物理アドレスが、キャッシュタグアレイ４５０から読み出された物理アドレスと比較される。２つのアドレスがマッチする場合、ウェイヒットが生成され、記憶更新ハードウェア（図示せず）が後のパイプライン段階においてデータキャッシュを更新あるいは無効化する。
【００３９】
記憶更新動作のサポートに加えて、図３に示すシステムは、この機能を実行するための論理回路を追加することで、命令または外部要求によるキャッシュラインの無効化に適応することができる。キャッシュは、システムバス要求によるプロセッサからのキャッシュラインの追い出し、フラッシュキャッシュ命令によるプロセッサからのキャッシュラインの追い出し、別のレベルのキャッシュでサポートされる記憶または読み出し−変更−書き込み動作、およびハードウェア障害回復動作を含む多くの理由により、無効化する必要があることがある。事前検証済みキャッシュは、主に高速のレイテンシーを有するロード結果の生成に使用されるため、無効化プロセスはいずれも、ロード動作のキャッシュウェイヒット生成に影響を与えるだけだろう。この機能を提供するために、新しい構造を事前検証済みキャッシュタグに追加して、キャッシュラインの有効状態の信号を送るために使用される、キャッシュラインごとに単一の有効ビットを提供してもよい。記憶有効ビットは、新しいキャッシュラインが書き込まれるときに設定され、無効化動作に対してのみクリアされる。記憶有効ビットはロードキャッシュウェイヒット制御の一部であるため、無効化は、そのキャッシュライン上のロードヒットをブロックする。
【００４０】
図７は、事前検証済みキャッシュタグの無効化のための追加ロジックを含む、事前検証済みキャッシュタグシステムのブロック図である。システム５００は、ＶＡ  ＣＡＭ５１２を有する事前検証済みキャッシュＴＬＢ５１０を含む。事前検証済みキャッシュタグ５２０もまた設けられる。事前検証済みキャッシュタグ５２０に関連して、記憶有効モジュール５２２がある。データキャッシュ５３０も、事前検証済みキャッシュＴＬＢ５１０と共に設けられる。事前検証済みキャッシュＴＬＢ５１０は、ポートｙ等のメモリポートにおいてロード仮想アドレス情報を受け取り、ＶＡ  ＣＡＭ５１２は、比較動作を実行して、ＴＬＢヒットを提供する。事前検証済みキャッシュタグ５２０はまた、そのメモリから読み出されたＴＬＢヒットを提供する。ＶＡ  ＣＡＭ５１２の出力および事前検証済みキャッシュタグは、論理積および論理和をとられて、キャッシュウェイヒットを生成し、次にマルチプレクサ５３６がこれを使用して、データキャッシュ５３０の出力を選択する。
【００４１】
無効化要求は、記憶または無効アドレスライン（ポートｙ＋１）上に配置され、それが仮想アドレスである場合にはＤＴＬＢ５４６において変換され、またはアドレスがすでに物理アドレスである場合にはＤＴＬＢ５４６をバイパスする。キャッシュタグアレイ５５０がアクセスされて、その物理アドレスが、記憶または無効化命令アドレスの物理アドレスと比較される。アドレスがマッチして、キャッシュタグアレイ５５０についての記憶有効ビットが設定されている場合、記憶／無効化キャッシュウェイヒット信号がコンパレータネットワーク（５５６および５５８）から生成される。記憶／無効化キャッシュウェイヒットは、無効化が要求される場合には、事前検証済みキャッシュタグ５２２およびキャッシュタグアレイ５５２の双方における記憶有効ビットを、そのキャッシュラインについて強制的にクリアする。そうでなければ、ヒット情報を使用して、キャッシュにおけるデータを更新する。
【００４２】
事前検証済みキャッシュタグ設計におけるキャッシュタグは、仮想または物理アドレスではなくＴＬＢヒットビットを含む。したがって、ＴＬＢエントリが変化すると、該ＴＬＢエントリに関連するすべてのキャッシュラインが無効化されることがある。この無効化は、論理回路を事前検証済みキャッシュタグに追加することによって達成することができる。図８は、ＴＬＢエントリの変化時のキャッシュラインの無効化に備えるために、追加の論理回路を含む事前検証済みキャッシュタグシステム６００を示す。上述したように、事前検証済みキャッシュＴＬＢ６１０は、ＶＡ  ＣＡＭ６１２と、事前検証済みキャッシュタグ６２０と、データキャッシュ６３０とを備える。事前検証済みキャッシュタグ６２０は、記憶有効モジュール６２４と、列クリアモジュール６２２とを備える。ＶＡ  ＣＡＭ６１２および事前検証済みキャッシュ６２０の出力は、ＡＮＤ回路６３２において論理積をとられ、ＯＲ回路６３４において論理和をとられて、キャッシュウェイヒットを生成する。マルチプレクサ６３６は、キャッシュウェイヒットを使用して、データキャッシュ６３０の出力を選択する。列クリアモジュール６２２は、１つまたは複数のＴＬＢスロットエントリ位置についての事前検証済みキャッシュタグのｎビットすべてをクリアする。
【００４３】
マイクロアーキテクチャ６００にはまた、並列のマスタＴＬＢ（ＤＴＬＢ）６４６と、物理アドレスキャッシュタグ６５０と、記憶有効ビットモジュール６５２とが含まれる。ＤＴＬＢ６４６および物理アドレスキャッシュタグ６５０は、図６に示すＤＴＬＢ４４０およびキャッシュタグアレイ４５０と同様に機能する。マルチプレクサ６５４、コンパレータ６５６、およびＡＮＤ回路６５８は、ＤＴＬＢ６４６、物理アドレスキャッシュタグ６５０、記憶有効ビットモジュール６５２、および物理アドレスバイパスからの出力を受け取り、記憶／無効化キャッシュウェイヒットを生成する。
【００４４】
新しい事前検証済みキャッシュＴＬＢエントリが挿入されるとき（これはＴＬＢスロットに元々存在したＴＬＢエントリが無効化されたことを意味する）に、あるいはＴＬＢエントリが、エイリアシングまたはＴＬＢメンテナンス命令等他の理由で無効化されるときは常に、列クリアモジュール６２２が動作する。これらの場合、ＴＬＢ６１０は、無効化すべきすべてのＴＬＢスロットについてＴＬＢヒットビットを設定する（いくつかのＴＬＢエントリを１サイクル中に無効化してもよい）。事前検証済みキャッシュタグ６２０は、列クリア制御信号を受け取り、事前検証済みキャッシュＴＬＢ６１０からのＴＬＢヒット信号を見て、指示されたＴＬＢスロットについて事前検証済みキャッシュタグ６２０におけるＴＬＢヒットビットをすべてクリアする。この動作は、１つまたは多数のキャッシュラインを無効化することができる。
【００４５】
図８に図示し、かつ上述したマイクロアーキテクチャは、事前検証済みキャッシュタグを無効にするよう機能するが、物理アドレスキャッシュタグは無効にしない。旧キャッシュラインとは、列クリアによって無効にされるキャッシュラインだが、記憶／無効化ポート（記憶有効ビット６２４、６５２）については有効なままである。旧キャッシュラインは、各ＴＬＢ挿入またはパージ後に行われるハードウェアクレンジング機能によって除去してもよい。この機能は、キャッシュタグのインデックスを走査し、事前検証済みキャッシュタグ中の無効エントリ、および物理アドレスキャッシュタグ中の有効エントリのインデックスをそれぞれチェックする。かかる状態が見つかると、記憶有効ビット（６２４、６５２）がそのエントリについてクリアされる。
【００４６】
あるいは、列クリア動作により事前検証済みキャッシュタグのＴＬＢビットがクリアされるときは常に記憶有効ビットを無効化するために、ハードウェアを設けてもよい。これには、列クリア機能の検出を必要とする。この機能はまた、複数のＴＬＢスロットを１つのサイクル中にクリアすることができるという事実により、複数のビット（ｍまで）の論理和を取る必要がありうる。さらに、この機能はまた、この情報を事前検証済みキャッシュタグおよび物理アドレスキャッシュタグの双方における記憶有効ビットのインデックス行それぞれに結びつけることを要求する。この方法は、配線が相当複雑になる可能性がある。
【００４７】
配線の複雑さを最小限に抑えるために、インデックスに新しいキャッシュラインがロードされるときに、その１つのインデックスロケーションでクレンジング動作を行ってもよい。旧キャッシュラインをクリアするために、旧キャッシュライン制御６６０をマイクロアーキテクチャ６００に付加してもよい。旧キャッシュライン制御６６０は、キャッシュウェイヒット情報と、オプションとして列クリア情報を受け取り、信号を記憶有効ビットモジュール６２４、６５２に提供する。キャッシュラインフィル（すなわちキャッシュに新しいキャッシュラインがロードされる）がキャッシュで処理されているとき、そのキャッシュラインのアドレスは、物理アドレスキャッシュタグ６５０を通して送られて、新しいラインがロードされていない任意のキャッシュウェイにおいて該キャッシュラインが旧いか否かを決定する。任意の他のキャッシュウェイにおいてヒットがある場合、かかるヒットは、フィルされている同じキャッシュラインが、旧ラインとして他のキャッシュウェイにも存在することを意味する。この状態が検出されると、旧キャッシュライン制御６６０が、記憶有効ビットモジュール６２４および６５２の双方において記憶有効ビットをクリアすることで、通常の無効化動作と同じように、旧キャッシュラインを無効化する。
【００４８】
本明細書で用いる用語および説明は、例示としてのみ記載され、制限を意味するものではない。当業者は、別記しない限り、すべての用語は各自の可能な限り広義の意味で理解される添付の特許請求の範囲およびそれらの等価物において定義される本発明の精神および範囲内で多くの変形が可能であることを認識するであろう。
【００４９】
本発明は例として以下の実施態様を含む。
（１）事前検証済み（prevalidated）タグキャッシュを有するコンピュータアーキテクチャにおいて、記憶を更新し、また旧キャッシュラインを無効化および除去するための装置（６００）であって、
仮想アドレスを受け取り変換ルックアサイドバッファ（ＴＬＢ）仮想ヒットを提供する整数ロードＴＬＢ（６１０）と、
前記仮想アドレスを受け取って、ＴＬＢ物理ヒットを提供する事前検証済みキャッシュタグアレイ（６２０）と、
該事前検証済みキャッシュタグアレイ（６２０）に連結された第１の記憶有効ビットアレイ（６２４）と、
前記仮想アドレスを受け取り、キャッシュデータを提供するデータキャッシュ（６３０）と、を有する第１ＴＬＢ構造、および、
前記整数ロードＴＬＢ（６１０）と並列であり、記憶および他の命令アドレス情報を受け取り第１の物理アドレス情報を提供するマスタＴＬＢ（６４６）と、
該マスタＴＬＢ（６４６）と並列であり、記憶または他の命令アドレス情報を受け取り、アドレス情報をインデックスに記憶し、第２の物理アドレス情報を提供する物理アドレスタグアレイ（６５０）と、
該物理アドレスタグアレイ（６５０）に連結された第２の記憶有効ビットアレイ（６５２）と、
前記物理アドレスタグアレイ（６５０）および前記マスタＴＬＢ（６４６）により提供される前記物理アドレス情報を比較し、前記第１および第２の物理アドレス情報間でのマッチの発生時に記憶／無効化キャッシュヒットを生成するコンパレータ（６５６）であって、
前記第１および第２の記憶有効ビットアレイが、無効化すべきキャッシュラインまたは更新すべき記憶データを通知するコンパレータと、を有し、前記第１のＴＬＢ構造に並列な第２のＴＬＢ構造、
を備える、装置。
【００５０】
（２）前記事前検証済みキャッシュタグアレイ（６２０）に連結された列クリアモジュール（６２２）をさらに備え、該列クリアモジュール（６２２）は、無効化するべき特定のＴＬＢスロットに関連する情報を受け取って、該特定のＴＬＢスロットに関連する前記事前検証済みキャッシュタグアレイ（６２０）におけるすべてのＴＬＢヒットの無効化を指示する、前記（１）に記載の装置。
【００５１】
（３）前記列クリアモジュール（６２２）は無効化信号を前記物理アドレスタグアレイ（６５０）における前記インデックスに供給し、前記第２のＴＬＢ構造は物理アドレスバイパスを含んでおり、前記バイパスは、前記アドレス情報が物理アドレス情報である場合に前記物理アドレス情報を前記コンパレータに提供する、前記（２）に記載の装置。
【００５２】
（４）旧キャッシュライン制御（６６０）をさらに備え、キャッシュラインフィルがキャッシュにおいて処理されているときに、前記制御（６６０）が該キャッシュラインのアドレスを前記物理アドレスタグアレイ（６５０）に送り、前記キャッシュラインが前記キャッシュにおいて検出されるときには、前記制御（６６０）が前記事前検証済みキャッシュタグ（６２０）および前記物理アドレスタグアレイ（６５０）における前記キャッシュラインに関連する記憶有効ビットをクリアする、前記（１）に記載の装置。
【００５３】
（５）事前検証済みキャッシュタグを有するコンピュータアーキテクチャにおいて、キャッシュラインを無効化し旧キャッシュラインをクリアする装置（６００）であって、
仮想アドレス情報を受け取って、該仮想アドレス情報に対応する物理アドレスに関連するＴＬＢヒットビットを提供する変換ルックアサイドバッファ（ＴＬＢ）（６１０）と、
前記仮想アドレス情報を受け取り、前記ＴＬＢヒットビットを提供する事前検証済みキャッシュタグアレイ（６２０）と、
前記ＴＬＢヒットビットを比較して、キャッシュウェイヒット信号を生成する比較ロジック（６３２、６３４）と、
キャッシュラインが書き込まれるときには有効ビットを設定し、無効化動作の発生時には該有効ビットをクリアする有効ビットモジュール（６２４）と、
を備える、装置。
【００５４】
（６）前記ＴＬＢ（６１０）と並列に動作し、記憶または無効化動作キャッシュウェイヒットを提供するマスタＴＬＢ構造（６４６）をさらに備え、前記ＴＬＢ（６１０）は、ロードに関連する仮想アドレス情報を受け取り、前記事前検証済みキャッシュタグアレイ（６２０）は、選択されたＴＬＢヒットビットに列クリア信号を提供する列クリアモジュール（６２２）を備える、前記（５）に記載の装置。
【００５５】
（７）前記選択されたヒットビットは、新しいＴＬＢエントリ、アドレスエイリアシング、およびＴＬＢメンテナンス機能のうちの１つに基づいて選択される、前記（６）に記載の装置。
【００５６】
（８）前記マスタＴＬＢ構造（６４６）は、キャッシュラインが書き込まれるときに有効ビットを設定し無効化動作の発生時に前記有効ビットをクリアする記憶有効ビットモジュール（６５２）を有する物理アドレスキャッシュタグアレイ（６５０）を備え、前記列クリアモジュール（６２２）は、前記列クリア信号を提供して、物理アドレスタグアレイにおけるインデックス位置をクリアする、前記（６）に記載の装置。
【００５７】
（９）事前検証済みキャッシュタグアレイを有するコンピュータアーキテクチャにおいて、記憶データを更新し、キャッシュラインを無効化し、旧キャッシュラインを除去するための方法であって、
第１の変換ルックアサイドバッファ（ＴＬＢ）（６１０）への整数ロードについての仮想アドレス情報を受け取るステップと、
前記事前検証済みキャッシュタグアレイ（６２０）において前記仮想アドレス情報を受け取るステップと、
前記仮想アドレス情報をデータキャッシュ（６３０）において受け取るステップと、
前記第１のＴＬＢ（６１０）からＴＬＢ仮想ヒットを提供するステップと、
前記事前検証済みキャッシュタグアレイ（６２０）からＴＬＢ物理ヒットを提供するステップと、
前記データキャッシュ（６３０）からの前記仮想アドレス情報に対応する物理アドレスを提供するステップと、
前記第１のＴＬＢ（６１０）に並列なマスタＴＬＢ（６４６）および物理アドレスタグアレイ（６５０）のそれぞれにおいて、整数演算および浮動小数点演算についてのアドレス情報を受け取るステップと、
前記マスタＴＬＢ（６４６）から第１の物理アドレス情報を提供するステップと、
前記物理アドレスタグアレイ（６５０）におけるインデックスに前記アドレス情報を記憶するステップと、
前記物理アドレスタグアレイ（６５０）から第２の物理アドレス情報を提供するステップと、
マッチのために前記第１および第２の物理アドレス情報を比較するステップと、
該マッチの発生時に、無効化すべきキャッシュラインまたは更新すべき記憶データを示す信号を生成するステップと、
を含む、方法。
【００５８】
（１０）キャッシュラインフィルがキャッシュにおいて処理されているときには、前記キャッシュラインのアドレスを前記物理アドレスタグアレイ（６５０）に送るステップと、
前記キャッシュラインが前記キャッシュにおいて削除されるときには、前記事前検証済みキャッシュタグ（６２０）および前記物理アドレスタグアレイ（６５０）におけるキャッシュラインに関連する記憶有効ビットをクリアするステップと、
をさらに含む、前記（９）に記載の方法。
【図面の簡単な説明】
【図１】  従来技術のキャッシュマイクロアーキテクチャ。
【図２】  従来技術のキャッシュマイクロアーキテクチャ。
【図３】  事前検証済みタグキャッシュマイクロアーキテクチャのブロック図。
【図４】  事前検証済みキャッシュタグロードデータキャッシュシステムのブロック図。
【図５】  事前検証済みキャッシュＴＬＢにおける記憶または無効化動作をカバーするための拡張事前検証済みキャッシュシステムのブロック図。
【図６】  並列記憶更新を有する事前検証済みキャッシュタグシステムのブロック図。
【図７】  並列記憶更新および無効化ロジックを有する事前検証済みタグキャッシュシステムのブロック図。
【図８】  カラムクリアロジックおよび旧キャッシュライン除去ロジックを有する事前検証済みキャッシュタグシステムのブロック図。
【符号の説明】
６００  装置
６１０  整数ロードＴＬＢ
６２０  事前検証済みキャッシュタグアレイ
６２２  列クリアモジュール
６２４  第１の記憶有効ビットアレイ
６３０  データキャッシュ
６３２  比較ロジック
６３４  比較ロジック
６４６  マスタＴＬＢ
６５０  物理アドレスタグアレイ
６５２  第２の記憶有効ビットアレイ
６５６  コンパレータ
６６０  旧キャッシュライン制御
【図１】
0003821644.tif 000002
【図２】
0003821644.tif 000003
【図３】
0003821644.tif 000004
【図４】
0003821644.tif 000005
【図５】
0003821644.tif 000006
【図６】
0003821644.tif 000007
【図７】
0003821644.tif 000008
【図８】
0003821644.tif 000009