JP3821644B2 - 旧キャッシュラインを無効化および除去する装置 - Google Patents

旧キャッシュラインを無効化および除去する装置 Download PDF

Info

Publication number
JP3821644B2
JP3821644B2 JP2000331673A JP2000331673A JP3821644B2 JP 3821644 B2 JP3821644 B2 JP 3821644B2 JP 2000331673 A JP2000331673 A JP 2000331673A JP 2000331673 A JP2000331673 A JP 2000331673A JP 3821644 B2 JP3821644 B2 JP 3821644B2
Authority
JP
Japan
Prior art keywords
cache
tlb
tag
physical
hit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2000331673A
Other languages
English (en)
Other versions
JP2001184263A (ja
Inventor
テリー・エル・ライアン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
HP Inc
Original Assignee
Hewlett Packard Co
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of JP2001184263A publication Critical patent/JP2001184263A/ja
Application granted granted Critical
Publication of JP3821644B2 publication Critical patent/JP3821644B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • G06F12/1054Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently physically addressed
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • G06F2212/682Multiprocessor TLB consistency

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

【0001】
【発明の属する技術分野】
本技術分野は、事前検証済み(prevalidated)キャッシュタグ設計を採用したコンピュータシステムを包含する。特に、本技術分野は、記憶の更新と無効化、およびキャッシュからの旧キャッシュラインの除去をサポートするための設計を包含する。
【0002】
【従来の技術】
コンピュータシステムは、比較的高速、高価であるが小容量のメモリを階層の最高位に、比較的より低速、低コストであるが大容量のメモリを階層の最低位に持つ、マルチレベル階層のメモリを採用することができる。階層は、プロセッサ内に物理的に統合されているか、または速度アップのために物理的にプロセッサの近くに搭載される、キャッシュと呼ばれる小さく高速のメモリを含みうる。コンピュータシステムは、別個の命令キャッシュおよびデータキャッシュを採用してもよい。さらに、コンピュータシステムは、マルチレベルのキャッシュを使用することができる。キャッシュの使用は、命令レベルにおいてコンピュータプログラムには透過(tranparent)であり、したがって命令セットを変更せずに、または既存のプログラムの修正を必要とせずに、コンピュータアーキテクチャに追加することができる。
【0003】
キャッシュヒットは、プロセッサがキャッシュからアイテムを要求し、そのアイテムがキャッシュに存在する場合に発生する。キャッシュミスは、プロセッサがキャッシュからアイテムを要求し、そのアイテムがキャッシュに存在しない場合に発生する。キャッシュミスの場合、プロセッサは、要求したアイテムをさらに下位のメモリ階層から検索する。多くのプロセッサ設計において、キャッシュヒットしたアイテムへのアクセスに必要な時間は、設計者が単一サイクルでのキャッシュアクセス時間を捜し求める場合、プロセッサのクロックレートに対する主な制約の1つである。他の設計では、キャッシュアクセス時間は多重サイクルでありうるが、サイクルにおけるキャッシュアクセス時間を低減すると、殆どの場合プロセッサの性能が改善される。したがって、キャッシュヒットに要するアクセス時間の最適化は、コンピュータシステムの性能に関して極めて重要である。
【0004】
キャッシュ設計に関連するのは、仮想記憶の概念である。仮想記憶システムは、コンピュータプログラマがメモリを一体の単一レベル記憶ユニットとして考えられるようにするが、実際には、必要に応じて補助記憶装置と高速記憶装置(キャッシュ)間でページ上のプログラムブロックを自動的に移動する動的アドレス変換ユニットを提供する。
【0005】
またキャッシュ設計と関連するのは、完全アソシアティブな、すなわちコンテントアドレッサブルメモリ(CAM)である。コンテントアドレッサブルメモリは、従来のハード的に組み込まれたアドレス指定機構に加えて、一メモリサイクル時間中にすべてのエントリに対して同時に特定のマッチに対する所望のビットロケーションの比較を可能にするハード的に組み込まれたロジックを有するランダムアクセスメモリである。所望のエントリの特定アドレスについては、その内容の一部をエントリへのアクセスに使用することができるため、知る必要がない。指定されたビットロケーションに一致するすべてのエントリは、フラグが付けられ、現在または次のメモリサイクルにアドレス指定することができる。
【0006】
メモリは、ワード(例えば、ワード当たり32ビットまたは64ビット)に編成することができる。キャッシュとメモリ階層の次に下位のレベルとの間で転送することができるメモリの最低量は、ラインまたはブロックと呼ばれる。ラインは、複数のワード(例えば、1ライン当たり16ワード)であってもよい。メモリはまた、1ページ当たりに多くのラインがある状態でページまたはセグメントに分割することができる。コンピュータシステムによっては、ページサイズを可変とすることができるものもある。
【0007】
最近のコンピュータメモリアーキテクチャでは、中央演算処理装置(CPU)は、ハードウェアとソフトウェアの組み合わせにより物理アドレスに変換される仮想アドレスを提供する。物理アドレスは、物理主記憶装置にアクセスするために用いられる。一群の仮想アドレスを各ページに動的に割り当てることができる。仮想メモリは、仮想アドレスを物理アドレスに変換する、時にページテーブルと呼ばれるデータ構造を必要とする。アドレス変換時間を低減するために、コンピュータは、変換ルックアサイドバッファ(TLB)と呼ばれる、アドレスロケーション専用の専用連想キャッシュを使用することができる。
【0008】
キャッシュは、多くのセグメントまたはウェイを含みうる。キャッシュがデータと共にラインアドレス全体を記憶し、かつ任意のラインをキャッシュ内の任意の位置に配置することができる場合、キャッシュは、完全にアソシアティブであるといえる。任意のラインを任意の位置に配置することができる大容量のキャッシュの場合、アイテムがキャッシュ内にあるか否か、およびそれがどこにあるのかを高速で決定するために必要なハードウェアは、非常に大型かつ高価になりうる。より高速かつ容量を節約でき、大容量キャッシュの代替となるものは、アドレスのサブセット(インデックスと呼ばれる)を用いてキャッシュ内のライン位置を指示してから、タグと呼ばれる各物理アドレスの上位ビットの残りのセットをデータと共に記憶することである。インデックスを有するキャッシュでは、特定アドレスを有するアイテムを、インデックスにより指定されたラインのセット内のみに配置することができる。所与のアドレスがサブセット内の1ラインに正確にマップされるようキャッシュが構成されている場合、キャッシュは、直接マップされているという。インデックスがサブセット内の2つ以上のラインにマップされる場合、キャッシュはセットアソシアティブであるという。アドレスのすべてまたは一部は、アドレス空間をセットに分割するセットインデックスを提供するために、ハッシュされることもある。
【0009】
直接マッピングでは、ラインが要求されたとき、キャッシュにおける1ラインのみがマッチングインデックスビットを有する。したがって、コンピュータシステムが残りのアドレスがマッチするか否かを決定する前に、データを即座に検索してデータバス上に送り出すことができる。データは有効であってもなくてもよいが、データが有効である通常の場合、データビットは、コンピュータシステムがその有効性を決定する前に、データバス上で利用可能である。セットアソシアティブキャッシュでは、コンピュータシステムは、全アドレスが比較されるまで、どのラインがアドレスに対応するのか知ることができない。すなわち、セットアソシアティブキャッシュでは、ラインのセット内でデータビットのどのラインをプロセッサに提示するかを選択するために、タグ比較の結果が使用される。
【0010】
【発明の解決しようとする課題】
TLBを有するキャッシュでは、ヒットに要するクリティカルタイミングパスには、一連の4つの動作が必要となる:1)仮想タグをTLB内のCAMに提示して、TLBのランダムアクセスメモリ内の対応する物理タグのロケーションを決定しなければならない、2)次に、該物理タグをTLBのランダムアクセスメモリ(RAM)から検索しなければならない、3)次に、TLBのRAMから得た物理タグをキャッシュのタグセクションからの物理タグのアクセスと比較しなければならない、そして4)適切なデータラインを選択しなければならない。この一連の4つの動作がキャッシュを読み込むために必要であり、これはプロセッサの周波数およびプロセッサ性能を制限するものとなる可能性がある。
【0011】
【課題を解決するための手段】
事前検証済み(prevalidated)タグキャッシュは、従来の実施のようにアドレス情報ではなく、変換ルックアサイドバッファ(TLB)からのヒット情報を保持する。すなわち、仮想アドレスがTLBに提供されると、物理アドレスがTLBから出力として提供される代わりに、TLBヒットビットが提供される。そして、TLBヒットビットが事前検証済みキャッシュタグ(TLBヒット情報を含む)と比較されて、キャッシュヒットまたはキャッシュミスの発生を決定する。処理速度を強化するために、TLBは、例えば32エントリ等小さくてもよい。TLBは、整数ロード動作等、低いレイテンシー(latency、待ち時間)を要求する動作に使用することもできる。
【0012】
小さなTLBでは、潜在的なスラッシング問題、すなわちページまたはTLBエントリのスワップアウトが生じ、これにより例えば、キャッシュの性能が劣化する。TLBが小さいため、TLBエントリは非常に早い時期に除去されることがあり、これは、実際上キャッシュからのデータ損失につながる。すなわち、事前検証済みキャッシュタグは、TLBのヒット情報は含むが、物理アドレスは含まないため、TLBエントリが変化したとき、ヒット情報はもはや有効ではなく、旧いTLBエントリに関連するデータはいずれも失われることになる。
【0013】
本発明のマイクロアーキテクチャでは、TLBエントリを小さいままにしておき、かつTLBのスラッシングを防止するために、別個の、より大きなTLBを、記憶動作等の、より高いレイテンシーで処理することができる動作を処理するために付加することができる。より大きなTLBはまた、例えば浮動小数点演算に対してより高い帯域幅を提供することができる。小さなTLB内に存在する必要のあるTLBエントリは、例えば整数ロードに必要なTLBエントリ等に制限されてもよく、その一方で、他のすべてのTLBエントリは大きいほうのTLBに回してもよい。これらのTLBは並列に動作する。さらに、すべての例外および特権検査を大きなTLBで行ってもよく、これもまた、整数ロードアクセス時間を低減するよう作用する。この並列TLBアーキテクチャを使用すると、小さなTLBと大きなTLBが連続してアクセスされる場合に、このアーキテクチャを使用しなければ発生する可能性があるパイプラインの機能停止を低減するというさらなる利点がある。
【0014】
物理アドレスの代わりにTLBヒット情報のみを有するキャッシュタグのさらなる結果として、キャッシュラインを更新、無効化し、旧キャッシュラインを除去するための機構を設けてもよい。記憶有効モジュールをTLBアーキテクチャに追加してもよい。記憶有効モジュールは、新しいキャッシュラインの書き込み時に、記憶有効ビットを設定する。記憶有効ビットは、新しいTLBエントリおよびハードウェア障害回復動作を含む無効化動作が発生したときにクリアされる。有効ビットは、すでに無効なキャッシュラインに対しての複数の記憶の更新または無効化を防止する。
【0015】
キャッシュラインの物理アドレスを保持するために、並列キャッシュタグアレイを追加してもよい。キャッシュタグアレイは、TLBヒットビットを保持する事前検証済みキャッシュタグと機能的に並列である。物理アドレスキャッシュタグは、事前検証済みキャッシュタグの場合と同様にして、入力アドレスに含まれるインデックスを使用して、キャッシュから読み出される。大きなTLBの追加には、ロードアドレスパイプラインとは独立の新しいアドレスパイプラインを含む。このパイプラインの追加により、ロードアクセスのレイテンシーに影響を与えることなく、キャッシュに対してより大きな帯域幅が提供される。動作において、記憶アドレスは、大きなTLB、およびロードデータパイプラインにおける動作とは独立したキャッシュタグに入力される。記憶アドレスが物理アドレスである場合、アドレスは大きなTLBをバイパスして、物理アドレスマルチプレクサに入力される。記憶アドレスが仮想アドレスである場合、大きなTLBがアクセスされて、物理アドレスが大きなTLBにより変換される。そして、記憶命令からの物理アドレスが、キャッシュタグアレイから読み出された物理アドレスと比較される。2つのアドレスがマッチすると、ウェイヒットが生成され、記憶更新ハードウェアが、後のパイプライン段階でデータキャッシュを更新あるいは無効化する。
【0016】
【発明の実施の形態】
物理タグをTLBから検索する必要のないTLBを有するキャッシュは、TLBを用いてキャッシュにアクセスするためのクリティカルパスに要する時間全般を改良することができる。このような設計においては、物理タグをキャッシュに記憶する代わりに、キャッシュは、物理タグが記憶されるTLB内のロケーションを記憶する。TLBは、2つまたはそれ以上のCAMを備えてもよい。キャッシュヒットの場合、TLB内のCAMの1つは、物理アドレスの記憶されているTLB内のロケーションを特定するベクトルを生成しうる。該ベクトルは、キャッシュに記憶されるロケーションベクトルと比較することができる。ロケーションベクトルの比較により、実際に物理アドレスを検索する必要なく、セット内の1つのデータラインの選択を可能にする十分な情報が提供される。その結果、かなり時間のかかる動作(物理アドレス検索)が、キャッシュヒットのクリティカルタイムパスから除去される。さらに、物理タグではなくロケーションベクトルを比較することで、従来のデジタルコンパレータよりも高速かつ単純な比較ロジックを使用することが可能になる。
【0017】
図1は、従来技術によるキャッシュの一例を示したものである。システム10は、仮想アドレス12と、ランダムアクセスメモリアレイ14と、コンパレータ16と、物理アドレスレジスタ18とを備える。システム10は、セットアソシアティブロジックを採用する。ランダムアクセスメモリアレイ14は、全部で128(4つ)のエントリを含み、2つの仮想ページアドレスビットを必要とする。各セットの4エントリは、ランダムアクセスアレイの1つの物理ワード(水平)の一部であるため、このようなワードが128個あり、7のアドレスインデックスビットを必要とする。キャッシュページが存在するか否かおよびどこに存在するかを決定するために、合わせて仮想ページ番号アドレスn=9をアドレス変換において使用しなければならない。ページ内のバイトを表す下位ビットnは、変換する必要がない。7つの仮想ビットは、128セットのうちの1つを直接選択するために使用される。該セットから読み出されたワードは、コンパレータ16を使用して、同時に仮想アドレスと比較される。比較のうちの1つが「YES」であると、ランダムアクセスアレイに存在する、キャッシュにおけるページの正確な実アドレスすなわち物理アドレスが、物理キャッシュアドレスレジスタ18にゲートされる。物理アドレスは、後続サイクルにおいて、キャッシュアレイ(図示せず)から正確な情報を得るために用いられる。
【0018】
図2は、別の従来技術によるキャッシュを示したものである。4ウェイセットアソシアティブキャッシュが例示のために用いられる。仮想アドレス100は、下位インデックスビット102と、上位(仮想)タグビット104とを含む。インデックスビット102は、通常、仮想アドレスおよび物理アドレスについて同じである。インデックスビット102は、キャッシュのデータセクション106におけるデータラインの1セットを選択するために使用される。データセクション106の出力は、4つのデータライン108である。インデックスビット102もまた、キャッシュのタグセクション110において物理タグのセットを選択するために使用される。タグセクション110の出力は、それぞれ1つのデータライン108に対応する4つの物理タグ112である。仮想タグビット104は、TLB114内のCAM116において1つのエントリを選択するために使用される。TLB114は、仮想タグおよび物理タグの双方を記憶する。仮想タグビット104がCAM116においてマッチを見つけられない場合、TLBミスが発生する。図2に示すシステムでは、複数の仮想タグが1つの物理タグにマップされ得る。TLBヒットの場合、選択されたCAMエントリは、仮想タグ104に対応する物理タグのTLB RAM118におけるアドレスを指定する。そして、物理タグがTLBのRAM118から検索される。次に、4つのデジタルコンパレータ120はそれぞれ、TLBのRAM118からの物理タグをタグセクション110からの物理タグ112と比較する。物理タグのマッチングした対は、ロジック122を通して、4つのデータラインのうちのいずれがマルチプレクサ124によって選択されるかを指示する。特定のインデックスビットの場合、物理タグのマッチングする対がないこともあり、この場合にはキャッシュミスが発生する。
【0019】
図3は、4ウェイセットアソシアティブキャッシュ200を示す。キャッシュ200は、インデックスビット202と、データセクション203と、マルチプレクサ205とを備える。キャッシュタグセクション204は、データラインに対応する物理TLBヒットタグを含む。新しいデータラインがキャッシュ200に配置されると、物理アドレスタグをキャッシュタグセクション204に記憶する代わりに、ベクトル212(物理TLBヒットベクトルと呼ぶ)をキャッシュタグセクション204に記憶する。
【0020】
キャッシュ200において、TLB210は2つのCAM、すなわち物理タグを含む物理CAM206と、仮想タグを含む仮想CAM208とを備える。新しい仮想タグ207が仮想CAM208に記憶されると、対応する物理タグ209もまた、コンピュータオペレーティングシステムを使用して利用可能であり、対応する物理タグ209は物理CAM206に記憶される。物理TLBヒットベクトル212は、物理タグ209を有する物理CAM206におけるそれぞれのロケーションに対応するバイナリ「1」を持つ。新しいラインをキャッシュ200にエントリすると、新しいラインの物理タグ209の物理CAM206におけるインスタンスすべてのロケーションを指示する物理TLBヒットベクトル212が、物理CAM206によって生成され、キャッシュタグセクション204内の、インデックスビット202により決定される行ロケーションかつセット配置アルゴリズムにより決定される列ロケーションに記憶される。
【0021】
キャッシュアクセスの場合、仮想タグ207が仮想CAM208に使用されて、仮想TLBヒットベクトル214が生成される。TLBミスがある場合、仮想TLBヒットベクトル214はすべてのバイナリが「0」である。TLBヒットがある場合、仮想TLBビットベクトル214は、仮想CAM208における仮想タグ207のロケーションを指示する1つのバイナリ「1」を有する。TLB210における各仮想タグ207は、一意でなければならない。
【0022】
キャッシュアクセスの場合、インデックスビット202は、キャッシュタグセクション204における4つの物理TLBヒットベクトル212のセットを選択する。キャッシュタグセクション204における4つの物理TLBヒットベクトル212はそれぞれ、4つのコンパレータ216のうちの1つを使用して、仮想CAM208からの仮想TLBヒットベクトル214と比較される。任意の所与のインデックスビット202のセットに対して、キャッシュタグセクション204における4つの選択された物理タグのうちの1つだけが、固定ページサイズのTLB210からの仮想TLBヒットベクトル214とマッチする。固定ページサイズの場合、4つの物理TLBヒットベクトル212における単一対のマッチング「1」は、いずれのデータラインがマルチプレクサ205によって選択されるかを決定する。所与のインデックスビット202のセットについて、4つの物理TLBヒットベクトル212においてマッチング「1s」がない場合、キャッシュミスが発生する。
【0023】
キャッシュ200において、TLB210からの物理タグは、キャッシュアクセスのために検索されない。TLB210からの物理タグの検索という動作をなくすことで、キャッシュアクセスに要するクリティカルタイムパスにおいて相当量の時間をとる動作がなくなる。キャッシュ200はマッチを決定するために、一対のマッチング論理「1s」を探すので、コンパレータ216は、大きなファンインORゲートが後続する単純なANDゲートであってもよい。
【0024】
事前検証済みキャッシュアーキテクチャに関するさらなる詳細は、「CACHE MEMORY WITH REDUCED ACCESS TIME」と題する1997年10月22日付けで出願された同時係属中の米国特許出願第08/955,821号に提供されており、その開示を参照により本明細書に援用する。
【0025】
図3に示すマイクロアーキテクチャは、事前検証済みタグキャッシュを備える。事前検証は、コンピュータマイクロアーキテクチャがキャッシュロードのレイテンシーを最小に抑えながら帯域幅全体を最大限にするよう設計される場合、マイクロアーキテクチャにおけるTLBの動作の仕方に制約を課す。例えば、事前検証済みタグキャッシュは、あるロードに対しては非常に高速なアクセス時間を提供するが、マイクロアーキテクチャは、仮想アドレスと物理アドレス間の変換が制限され、かつ異なるキャッシュレベル間への処理の分散が制限されるよう設計される可能性がある。マイクロアーキテクチャは例えば、高速整数ロードおよび浮動小数点ロードのための高帯域幅を提供することができる。すなわち、整数ロードデータは、高速のアクセスタイミングを有する必要があるが、そのワーキングセットサイズは通常小さい。整数ロードのレイテンシーを最適化するために、プロセッサによっては小さいが高速の第1レベルキャッシュを提供するものがある。仮想アドレス変換を提供し、アドレスエイリアシング問題を回避するために、プロセッサによっては、TLBにアクセスして、データがキャッシュに存在するか否かを決定するためにキャッシュタグをチェックするための物理アドレスを提供しなければならないものもある。高速整数データアクセスのメモリのレイテンシーを低減するために、TLBサイズを少数のエントリ(16〜32等)に制限してもよい。これは、256またはそれ以上のTLBエントリを必要とし得る大きなキャッシュ構造を持つプロセッサ上で多数のエントリが必要とされることに相反する。
【0026】
図3に示すような事前検証済みキャッシュタグシステムにおいて、TLBエントリは、キャッシュラインを識別するために、キャッシュタグにおいて論理的に使用される。TLBエントリが除去されると、通常、制御を使用して、除去されたTLBエントリに関連する事前検証済みキャッシュタグにおけるすべてのデータを無効化する。しかし、1つのTLBエントリがデータキャッシュの大部分またはすべてにマップされることもあるため、この動作は、処理を遅らせることがある。そして、TLBは、プログラムの実行をサポートせずに、メモリとページのスワッピングを絶えず行う(すなわちスラッシングする)ことがある。
【0027】
浮動小数点データ処理性能は、普通、浮動小数点実行ユニットへ出入りするメモリ帯域幅によって制限される。低いレイテンシーを必要とする整数ロードデータアクセスとは反対に、浮動小数点アクセスは通常スケジュールすることができ、またこれによってより長い潜在期間に耐えることができる。同様に、整数データサイズは普通小さいが、浮動小数点データセットは普通非常に大きい。浮動小数点のロード/記憶動作についてのTLB動作は、高帯域幅および大きなデータ空間の変換(多数のTLBエントリがアクセスされる)の双方を提供するのが理想的である。一つの設計では、すべてのメモリポートに全帯域幅を設け、浮動小数点要求の変換用に大きいがより低速なTLBを設ける。さらにメモリポートの使用は非制限であってもよく、これによってより多くのロードおよび記憶の組み合わせが可能になる。
【0028】
キャッシュタグは事前検証済みTLBヒット情報のみを保持しているため、キャッシュラインの物理アドレスがキャッシュタグにおいて利用不可能であることから、事前検証済み整数ロードデータキャッシュへの記憶または無効化は、困難でありうる。さらに、その高速のレイテンシーの必要性により、TLBは小さい(例えば、16または32エントリ)ため、小さな整数ロードデータキャッシュTLBは、記憶変換のために使用することができないことがある。1つの選択肢は、記憶TLBアクセスをより大きくかつより低速なTLBに分離するとともに、第1レベルキャッシュにおいて行うことのできない記憶動作(浮動小数点記憶等)、およびフラッシュキャッシュおよびバススヌープのような他の無効化動作のために、事前検証済み整数ロードキャッシュを無効化するための機構を設けるというものである。
【0029】
浮動小数点ロードおよび記憶等の多くのコンピュータ命令と、パージ、挿入、およびプローブを含むTLBサポート命令および整数記憶は、高速整数データキャッシュに直ちにアクセスする必要はない。コンピュータ命令には、より小さなキャッシュのスラッシングを回避するために、高速整数ロードキャッシュに存在するデータを持たないものもある。高速整数データキャッシュのより良好な使用をサポートするために、このタイプのデータが整数データキャッシュにロードされないようにするための機構を設けてもよい。これらの命令に整数キャッシュをバイパスさせるようにするためには、すべての例外情報を大きなTLBにのみ記憶して、例えばすべての記憶動作、浮動小数点ロード、またはTLBサポート命令に関してのみ大きなTLBにアクセスする必要があるようにする。
【0030】
最後に、すべての命令について、高速化のために小さくなくてはならない第1レベルTLBを通るよう強制すると、TLBミスレートがより高くなるため、プロセッサにおいてパイプライン機能停止が生じることがある。したがって、図3に示すマイクロアーキテクチャは、TLBミスレートおよびパイプライン機能停止を低減する並列TLB構造を使用するよう適合されてもよい。
【0031】
図3に示す事前検証済みキャッシュタグシステムは、物理アドレスまたは仮想アドレスを保持する代わりに、TLBエントリスロット番号に対応するビットを保持するタグを含む事前検証済みキャッシュタグを含む。このタイプのキャッシュへの記憶、およびこのタイプのキャッシュのコンテンツの無効化は、追加のロジックを使用して達成することができる。事前検証済みキャッシュタグ設計の価値は、ロードレイテンシーを最小化できることである。その結果、このロードレイテンシーを可能な限り低く維持するために、設計は、ロードデータパスの記憶アクティビティによる中断を避けるように設計しても良い。さらに、キャッシュ記憶には、物理アドレス索引および仮想アドレス索引が必要なことがある。これらの機能をロードデータパスに追加することで、ロードレイテンシーが悪化することがある。記憶動作をロードアクセスパスと並列で処理することにより、ロードレイテンシーは影響を受けない状態に留まるはずである。同様に、記憶TLBエントリは、事前検証済みタグキャッシュに使用される小さく高速なTLBにおいてスラッシングを引き起こす可能性がある。記憶TLB動作は、並列かつクリティカルでない構造で処理してもよい。
【0032】
並列記憶動作に加えて、事前検証済みタグキャッシュから除去すべきキャッシュラインを無効化することで、図3に示すシステムをさらに最適化することができる。記憶/無効化変換および索引ロジックから事前検証済みキャッシュタグに通信して、各キャッシュラインを効率的に無効化することによって、キャッシュラインを無効化することができる。事前検証済みキャッシュタグ設計におけるキャッシュタグは、仮想または物理アドレスではなくTLBヒットビットを含みうる。したがって、TLBエントリが変更されると、該TLBエントリに関連するキャッシュラインが無効化される。TLB変更の場合の事前検証済みキャッシュタグの無効化に備えるために、追加ロジックを図3に示すシステムに追加することができる。
【0033】
追加ロジックが図3に示すシステムに追加されると、キャッシュラインは、TLB変更により無効化されうるが、記憶/無効化制御パスの観点からは有効のままでありうる。ロード動作はTLB無効化の効果が見えるため、この状況によりロード動作について問題が生じることはない。しかし、記憶および無効化はTLB無効化の効果が見えないため、この状況により記憶および無効化について問題が生じる可能性がある。キャッシュラインがTLB更新機構を通してすでに無効化されたので、部分的な有効情報のために、同一のキャッシュラインを事前検証済みタグキャッシュの複数のウェイまたはセクションにロードすることが起こり得るという別の問題が持ちあがる。これは、複数のウェイに冗長データを有することになるので、キャッシュの有効性を低減することがあり、また記憶および更新について問題を生じることがある。記憶では、コヒーレンシを保証するために、2つ以上のキャッシュラインを更新する必要がありうる。無効化では、コヒーレンシを保証するために、2つ以上のキャッシュラインを無効化する必要がありうる。この問題に対する1つの解決策には、図3に示す事前検証済みタグキャッシュ設計から旧キャッシュラインを除去するためのロジックを追加することが含まれる。
【0034】
図4は、高速のロードレイテンシーために調整した事前検証済みタグキャッシュシステム250の構成要素を示す。小さなTLB260には、事前検証済みキャッシュタグに対してヒットビットを生成する仮想アドレス(VA)CAM261が設けられる。並列して、事前検証済みキャッシュタグ270に記憶されるTLBヒットビットは、命令によって生成されるアドレスからのインデックスフィールドに従って読み出される。VA CAM261からTLBヒットビットが、また事前検証済みキャッシュタグTLBヒットが読み出されて、AND回路272およびOR回路274それぞれにおいて論理積および論理和がとられ、キャッシュラインがキャッシュに存在するか否かを決定する。キャッシュラインがキャッシュに存在する場合、キャッシュウェイヒットが生成され、データキャッシュ280の出力がマルチプレクサ276において多重化されて、ロードデータを提供する。システム250は高速仮想アドレスロードアクセス用に調整されているため、物理アドレス指定されたロードは、より低いレベルのキャッシュアクセス(図示せず)によりサポートすることができる。
【0035】
記憶命令仮想アドレスをロードと同じアドレスポートに送ることによって記憶更新をサポートすることができる。この動作は、ライトバックパイプライン段階中に後のキャッシュへの記憶に使用されるキャッシュウェイヒットを提供する。しかし、記憶命令は、物理アドレス指定を使用すると共に、既存のキャッシュラインを更新あるいは無効化することが可能でなければならない。図5は、記憶動作の物理アドレス指定を処理することができる、拡張された事前検証済みキャッシュシステムを示す。図5に示すシステム300は、図4に示すシステムと同様である。事前検証済みキャッシュTLB310は、メモリポートyにおいて仮想アドレスを受け取り、TLBヒットを生成する。事前検証済みキャッシュタグ320は、TLBヒットを生成し、該TLBヒットはVA CAM311の出力とAND回路332において論理積をとり、かつOR回路334において論理和をとり、キャッシュウェイヒットを生成する。キャッシュウェイヒットは、データキャッシュ330の出力を選択するために、マルチプレクサ336により使用される。事前検証済みキャッシュTLB310は、物理アドレスCAM312を含むため、物理アドレス(PA)要求をPA CAM312に振り替えることができ、(PA CAMによって生成される)VAヒットビットは、上述したようにタグと比較される。しかし、PA CAM312を事前検証済みキャッシュTLB310に追加することは、逆にロードアクセス時間に悪影響を及ぼすことがある。さらに、記憶および無効化TLB要求は、ロードTLBエントリをスラッシュすることがあり、これによってより多くのTLBミスが発生し、ひいてはTLBヒットレートが低くなる。最後に、記憶および無効化動作は、事前検証済みキャッシュ設計により提供されるロード帯域幅を減じるため、ロード動作帯域幅が低減する。
【0036】
図5に示すシステム300に本来備わっている問題は、並列TLB構造を追加することで克服することができる。図6は、このような並列TLB構造を有する事前検証済みタグキャッシュシステム400を示す。システム400は、VA CAM412を含む事前検証済みキャッシュTLB410を含む。上述したように、ロード仮想アドレス情報は、メモリポートにおいてVA CAM412、事前検証済みキャッシュタブ420、およびデータキャッシュ430に提供される。VA CAM412からのTLBヒットは、事前検証済みキャッシュタグ420からのTLBヒットと比較され、データキャッシュの出力を選択してロードデータを提供するために、キャッシュウェイヒットがマルチプレクサ436によって使用される。
【0037】
マスタTLB(DTLB)440は、事前検証済みキャッシュTLB410と並列に追加される。DTLB440は、より多数のエントリを有し、事前検証済みキャッシュTLB410とは別個のものである。DTLB440は、記憶および他の命令に要求されるTLBエントリをすべて保持する。記憶および無効化TLBエントリが事前検証済みキャッシュ410に存在する必要がなくなるため、事前検証済みキャッシュTLB410におけるスラッシングが低減する。
【0038】
並列キャッシュタグアレイ450を追加してもよい。キャッシュタグアレイ450は、キャッシュラインの物理アドレスを保持する。キャッシュタグアレイ450は、TLBヒットビットを保持する事前検証済みキャッシュタグ420と機能的に並列である。物理アドレスキャッシュタグは、入力アドレスに含まれるインデックスを使用して、事前検証済みキャッシュタグと同様にして、キャッシュタグアレイ450から読み出される。DTLB440の追加には、ロードアドレスパイプラインと独立した新しいアドレスパイプラインが含まれる。このパイプラインの追加により、ロードアクセスレイテンシーに影響を与えることなく、キャッシュにより大きな帯域幅が提供される。動作において、記憶アドレスはDTLB440およびロードデータパイプラインにおける動作と独立のキャッシュタグアレイ450に入力される。記憶アドレスが物理アドレスである場合、アドレスはDTLB440をバイパスして、物理アドレスマルチプレクサ452に入力される。記憶アドレスが仮想アドレスである場合、DTLB440がアクセスされ、物理アドレスがDTLB440により変換される。そして、記憶命令からの物理アドレスが、キャッシュタグアレイ450から読み出された物理アドレスと比較される。2つのアドレスがマッチする場合、ウェイヒットが生成され、記憶更新ハードウェア(図示せず)が後のパイプライン段階においてデータキャッシュを更新あるいは無効化する。
【0039】
記憶更新動作のサポートに加えて、図3に示すシステムは、この機能を実行するための論理回路を追加することで、命令または外部要求によるキャッシュラインの無効化に適応することができる。キャッシュは、システムバス要求によるプロセッサからのキャッシュラインの追い出し、フラッシュキャッシュ命令によるプロセッサからのキャッシュラインの追い出し、別のレベルのキャッシュでサポートされる記憶または読み出し−変更−書き込み動作、およびハードウェア障害回復動作を含む多くの理由により、無効化する必要があることがある。事前検証済みキャッシュは、主に高速のレイテンシーを有するロード結果の生成に使用されるため、無効化プロセスはいずれも、ロード動作のキャッシュウェイヒット生成に影響を与えるだけだろう。この機能を提供するために、新しい構造を事前検証済みキャッシュタグに追加して、キャッシュラインの有効状態の信号を送るために使用される、キャッシュラインごとに単一の有効ビットを提供してもよい。記憶有効ビットは、新しいキャッシュラインが書き込まれるときに設定され、無効化動作に対してのみクリアされる。記憶有効ビットはロードキャッシュウェイヒット制御の一部であるため、無効化は、そのキャッシュライン上のロードヒットをブロックする。
【0040】
図7は、事前検証済みキャッシュタグの無効化のための追加ロジックを含む、事前検証済みキャッシュタグシステムのブロック図である。システム500は、VA CAM512を有する事前検証済みキャッシュTLB510を含む。事前検証済みキャッシュタグ520もまた設けられる。事前検証済みキャッシュタグ520に関連して、記憶有効モジュール522がある。データキャッシュ530も、事前検証済みキャッシュTLB510と共に設けられる。事前検証済みキャッシュTLB510は、ポートy等のメモリポートにおいてロード仮想アドレス情報を受け取り、VA CAM512は、比較動作を実行して、TLBヒットを提供する。事前検証済みキャッシュタグ520はまた、そのメモリから読み出されたTLBヒットを提供する。VA CAM512の出力および事前検証済みキャッシュタグは、論理積および論理和をとられて、キャッシュウェイヒットを生成し、次にマルチプレクサ536がこれを使用して、データキャッシュ530の出力を選択する。
【0041】
無効化要求は、記憶または無効アドレスライン(ポートy+1)上に配置され、それが仮想アドレスである場合にはDTLB546において変換され、またはアドレスがすでに物理アドレスである場合にはDTLB546をバイパスする。キャッシュタグアレイ550がアクセスされて、その物理アドレスが、記憶または無効化命令アドレスの物理アドレスと比較される。アドレスがマッチして、キャッシュタグアレイ550についての記憶有効ビットが設定されている場合、記憶/無効化キャッシュウェイヒット信号がコンパレータネットワーク(556および558)から生成される。記憶/無効化キャッシュウェイヒットは、無効化が要求される場合には、事前検証済みキャッシュタグ522およびキャッシュタグアレイ552の双方における記憶有効ビットを、そのキャッシュラインについて強制的にクリアする。そうでなければ、ヒット情報を使用して、キャッシュにおけるデータを更新する。
【0042】
事前検証済みキャッシュタグ設計におけるキャッシュタグは、仮想または物理アドレスではなくTLBヒットビットを含む。したがって、TLBエントリが変化すると、該TLBエントリに関連するすべてのキャッシュラインが無効化されることがある。この無効化は、論理回路を事前検証済みキャッシュタグに追加することによって達成することができる。図8は、TLBエントリの変化時のキャッシュラインの無効化に備えるために、追加の論理回路を含む事前検証済みキャッシュタグシステム600を示す。上述したように、事前検証済みキャッシュTLB610は、VA CAM612と、事前検証済みキャッシュタグ620と、データキャッシュ630とを備える。事前検証済みキャッシュタグ620は、記憶有効モジュール624と、列クリアモジュール622とを備える。VA CAM612および事前検証済みキャッシュ620の出力は、AND回路632において論理積をとられ、OR回路634において論理和をとられて、キャッシュウェイヒットを生成する。マルチプレクサ636は、キャッシュウェイヒットを使用して、データキャッシュ630の出力を選択する。列クリアモジュール622は、1つまたは複数のTLBスロットエントリ位置についての事前検証済みキャッシュタグのnビットすべてをクリアする。
【0043】
マイクロアーキテクチャ600にはまた、並列のマスタTLB(DTLB)646と、物理アドレスキャッシュタグ650と、記憶有効ビットモジュール652とが含まれる。DTLB646および物理アドレスキャッシュタグ650は、図6に示すDTLB440およびキャッシュタグアレイ450と同様に機能する。マルチプレクサ654、コンパレータ656、およびAND回路658は、DTLB646、物理アドレスキャッシュタグ650、記憶有効ビットモジュール652、および物理アドレスバイパスからの出力を受け取り、記憶/無効化キャッシュウェイヒットを生成する。
【0044】
新しい事前検証済みキャッシュTLBエントリが挿入されるとき(これはTLBスロットに元々存在したTLBエントリが無効化されたことを意味する)に、あるいはTLBエントリが、エイリアシングまたはTLBメンテナンス命令等他の理由で無効化されるときは常に、列クリアモジュール622が動作する。これらの場合、TLB610は、無効化すべきすべてのTLBスロットについてTLBヒットビットを設定する(いくつかのTLBエントリを1サイクル中に無効化してもよい)。事前検証済みキャッシュタグ620は、列クリア制御信号を受け取り、事前検証済みキャッシュTLB610からのTLBヒット信号を見て、指示されたTLBスロットについて事前検証済みキャッシュタグ620におけるTLBヒットビットをすべてクリアする。この動作は、1つまたは多数のキャッシュラインを無効化することができる。
【0045】
図8に図示し、かつ上述したマイクロアーキテクチャは、事前検証済みキャッシュタグを無効にするよう機能するが、物理アドレスキャッシュタグは無効にしない。旧キャッシュラインとは、列クリアによって無効にされるキャッシュラインだが、記憶/無効化ポート(記憶有効ビット624、652)については有効なままである。旧キャッシュラインは、各TLB挿入またはパージ後に行われるハードウェアクレンジング機能によって除去してもよい。この機能は、キャッシュタグのインデックスを走査し、事前検証済みキャッシュタグ中の無効エントリ、および物理アドレスキャッシュタグ中の有効エントリのインデックスをそれぞれチェックする。かかる状態が見つかると、記憶有効ビット(624、652)がそのエントリについてクリアされる。
【0046】
あるいは、列クリア動作により事前検証済みキャッシュタグのTLBビットがクリアされるときは常に記憶有効ビットを無効化するために、ハードウェアを設けてもよい。これには、列クリア機能の検出を必要とする。この機能はまた、複数のTLBスロットを1つのサイクル中にクリアすることができるという事実により、複数のビット(mまで)の論理和を取る必要がありうる。さらに、この機能はまた、この情報を事前検証済みキャッシュタグおよび物理アドレスキャッシュタグの双方における記憶有効ビットのインデックス行それぞれに結びつけることを要求する。この方法は、配線が相当複雑になる可能性がある。
【0047】
配線の複雑さを最小限に抑えるために、インデックスに新しいキャッシュラインがロードされるときに、その1つのインデックスロケーションでクレンジング動作を行ってもよい。旧キャッシュラインをクリアするために、旧キャッシュライン制御660をマイクロアーキテクチャ600に付加してもよい。旧キャッシュライン制御660は、キャッシュウェイヒット情報と、オプションとして列クリア情報を受け取り、信号を記憶有効ビットモジュール624、652に提供する。キャッシュラインフィル(すなわちキャッシュに新しいキャッシュラインがロードされる)がキャッシュで処理されているとき、そのキャッシュラインのアドレスは、物理アドレスキャッシュタグ650を通して送られて、新しいラインがロードされていない任意のキャッシュウェイにおいて該キャッシュラインが旧いか否かを決定する。任意の他のキャッシュウェイにおいてヒットがある場合、かかるヒットは、フィルされている同じキャッシュラインが、旧ラインとして他のキャッシュウェイにも存在することを意味する。この状態が検出されると、旧キャッシュライン制御660が、記憶有効ビットモジュール624および652の双方において記憶有効ビットをクリアすることで、通常の無効化動作と同じように、旧キャッシュラインを無効化する。
【0048】
本明細書で用いる用語および説明は、例示としてのみ記載され、制限を意味するものではない。当業者は、別記しない限り、すべての用語は各自の可能な限り広義の意味で理解される添付の特許請求の範囲およびそれらの等価物において定義される本発明の精神および範囲内で多くの変形が可能であることを認識するであろう。
【0049】
本発明は例として以下の実施態様を含む。
(1)事前検証済み(prevalidated)タグキャッシュを有するコンピュータアーキテクチャにおいて、記憶を更新し、また旧キャッシュラインを無効化および除去するための装置(600)であって、
仮想アドレスを受け取り変換ルックアサイドバッファ(TLB)仮想ヒットを提供する整数ロードTLB(610)と、
前記仮想アドレスを受け取って、TLB物理ヒットを提供する事前検証済みキャッシュタグアレイ(620)と、
該事前検証済みキャッシュタグアレイ(620)に連結された第1の記憶有効ビットアレイ(624)と、
前記仮想アドレスを受け取り、キャッシュデータを提供するデータキャッシュ(630)と、を有する第1TLB構造、および、
前記整数ロードTLB(610)と並列であり、記憶および他の命令アドレス情報を受け取り第1の物理アドレス情報を提供するマスタTLB(646)と、
該マスタTLB(646)と並列であり、記憶または他の命令アドレス情報を受け取り、アドレス情報をインデックスに記憶し、第2の物理アドレス情報を提供する物理アドレスタグアレイ(650)と、
該物理アドレスタグアレイ(650)に連結された第2の記憶有効ビットアレイ(652)と、
前記物理アドレスタグアレイ(650)および前記マスタTLB(646)により提供される前記物理アドレス情報を比較し、前記第1および第2の物理アドレス情報間でのマッチの発生時に記憶/無効化キャッシュヒットを生成するコンパレータ(656)であって、
前記第1および第2の記憶有効ビットアレイが、無効化すべきキャッシュラインまたは更新すべき記憶データを通知するコンパレータと、を有し、前記第1のTLB構造に並列な第2のTLB構造、
を備える、装置。
【0050】
(2)前記事前検証済みキャッシュタグアレイ(620)に連結された列クリアモジュール(622)をさらに備え、該列クリアモジュール(622)は、無効化するべき特定のTLBスロットに関連する情報を受け取って、該特定のTLBスロットに関連する前記事前検証済みキャッシュタグアレイ(620)におけるすべてのTLBヒットの無効化を指示する、前記(1)に記載の装置。
【0051】
(3)前記列クリアモジュール(622)は無効化信号を前記物理アドレスタグアレイ(650)における前記インデックスに供給し、前記第2のTLB構造は物理アドレスバイパスを含んでおり、前記バイパスは、前記アドレス情報が物理アドレス情報である場合に前記物理アドレス情報を前記コンパレータに提供する、前記(2)に記載の装置。
【0052】
(4)旧キャッシュライン制御(660)をさらに備え、キャッシュラインフィルがキャッシュにおいて処理されているときに、前記制御(660)が該キャッシュラインのアドレスを前記物理アドレスタグアレイ(650)に送り、前記キャッシュラインが前記キャッシュにおいて検出されるときには、前記制御(660)が前記事前検証済みキャッシュタグ(620)および前記物理アドレスタグアレイ(650)における前記キャッシュラインに関連する記憶有効ビットをクリアする、前記(1)に記載の装置。
【0053】
(5)事前検証済みキャッシュタグを有するコンピュータアーキテクチャにおいて、キャッシュラインを無効化し旧キャッシュラインをクリアする装置(600)であって、
仮想アドレス情報を受け取って、該仮想アドレス情報に対応する物理アドレスに関連するTLBヒットビットを提供する変換ルックアサイドバッファ(TLB)(610)と、
前記仮想アドレス情報を受け取り、前記TLBヒットビットを提供する事前検証済みキャッシュタグアレイ(620)と、
前記TLBヒットビットを比較して、キャッシュウェイヒット信号を生成する比較ロジック(632、634)と、
キャッシュラインが書き込まれるときには有効ビットを設定し、無効化動作の発生時には該有効ビットをクリアする有効ビットモジュール(624)と、
を備える、装置。
【0054】
(6)前記TLB(610)と並列に動作し、記憶または無効化動作キャッシュウェイヒットを提供するマスタTLB構造(646)をさらに備え、前記TLB(610)は、ロードに関連する仮想アドレス情報を受け取り、前記事前検証済みキャッシュタグアレイ(620)は、選択されたTLBヒットビットに列クリア信号を提供する列クリアモジュール(622)を備える、前記(5)に記載の装置。
【0055】
(7)前記選択されたヒットビットは、新しいTLBエントリ、アドレスエイリアシング、およびTLBメンテナンス機能のうちの1つに基づいて選択される、前記(6)に記載の装置。
【0056】
(8)前記マスタTLB構造(646)は、キャッシュラインが書き込まれるときに有効ビットを設定し無効化動作の発生時に前記有効ビットをクリアする記憶有効ビットモジュール(652)を有する物理アドレスキャッシュタグアレイ(650)を備え、前記列クリアモジュール(622)は、前記列クリア信号を提供して、物理アドレスタグアレイにおけるインデックス位置をクリアする、前記(6)に記載の装置。
【0057】
(9)事前検証済みキャッシュタグアレイを有するコンピュータアーキテクチャにおいて、記憶データを更新し、キャッシュラインを無効化し、旧キャッシュラインを除去するための方法であって、
第1の変換ルックアサイドバッファ(TLB)(610)への整数ロードについての仮想アドレス情報を受け取るステップと、
前記事前検証済みキャッシュタグアレイ(620)において前記仮想アドレス情報を受け取るステップと、
前記仮想アドレス情報をデータキャッシュ(630)において受け取るステップと、
前記第1のTLB(610)からTLB仮想ヒットを提供するステップと、
前記事前検証済みキャッシュタグアレイ(620)からTLB物理ヒットを提供するステップと、
前記データキャッシュ(630)からの前記仮想アドレス情報に対応する物理アドレスを提供するステップと、
前記第1のTLB(610)に並列なマスタTLB(646)および物理アドレスタグアレイ(650)のそれぞれにおいて、整数演算および浮動小数点演算についてのアドレス情報を受け取るステップと、
前記マスタTLB(646)から第1の物理アドレス情報を提供するステップと、
前記物理アドレスタグアレイ(650)におけるインデックスに前記アドレス情報を記憶するステップと、
前記物理アドレスタグアレイ(650)から第2の物理アドレス情報を提供するステップと、
マッチのために前記第1および第2の物理アドレス情報を比較するステップと、
該マッチの発生時に、無効化すべきキャッシュラインまたは更新すべき記憶データを示す信号を生成するステップと、
を含む、方法。
【0058】
(10)キャッシュラインフィルがキャッシュにおいて処理されているときには、前記キャッシュラインのアドレスを前記物理アドレスタグアレイ(650)に送るステップと、
前記キャッシュラインが前記キャッシュにおいて削除されるときには、前記事前検証済みキャッシュタグ(620)および前記物理アドレスタグアレイ(650)におけるキャッシュラインに関連する記憶有効ビットをクリアするステップと、
をさらに含む、前記(9)に記載の方法。
【図面の簡単な説明】
【図1】 従来技術のキャッシュマイクロアーキテクチャ。
【図2】 従来技術のキャッシュマイクロアーキテクチャ。
【図3】 事前検証済みタグキャッシュマイクロアーキテクチャのブロック図。
【図4】 事前検証済みキャッシュタグロードデータキャッシュシステムのブロック図。
【図5】 事前検証済みキャッシュTLBにおける記憶または無効化動作をカバーするための拡張事前検証済みキャッシュシステムのブロック図。
【図6】 並列記憶更新を有する事前検証済みキャッシュタグシステムのブロック図。
【図7】 並列記憶更新および無効化ロジックを有する事前検証済みタグキャッシュシステムのブロック図。
【図8】 カラムクリアロジックおよび旧キャッシュライン除去ロジックを有する事前検証済みキャッシュタグシステムのブロック図。
【符号の説明】
600 装置
610 整数ロードTLB
620 事前検証済みキャッシュタグアレイ
622 列クリアモジュール
624 第1の記憶有効ビットアレイ
630 データキャッシュ
632 比較ロジック
634 比較ロジック
646 マスタTLB
650 物理アドレスタグアレイ
652 第2の記憶有効ビットアレイ
656 コンパレータ
660 旧キャッシュライン制御

Claims (2)

  1. アドレス情報ではなく変換ルックアサイドバッファ(TLB)からのヒット情報を保持する事前検証済みタグキャッシュを有するコンピュータアーキテクチャにおいて、記憶を更新し、また旧キャッシュラインを無効化および除去するための装置であって、
    (a1)仮想アドレスを受け取り、前記仮想アドレスに対応する仮想タグのTLBにおけるロケーションを示すTLB仮想ヒットを提供する整数ロードTLBと、
    (a2)前記仮想アドレスを受け取り、データキャッシュに格納されているキャッシュデータの、物理タグの前記TLBにおけるロケーションを示すTLB物理ヒットを提供する事前検証済みキャッシュタグアレイと、
    (a3)前記事前検証済みキャッシュタグアレイに連結された第1の記憶有効ビットアレイと、
    (a4)前記仮想アドレス、前記TLB仮想ヒットおよび前記TLB物理ヒットを受け取り、キャッシュデータを提供する、マルチプレクサを備えたデータキャッシュと、
    を有する第1のTLB構造、および、
    (b1)前記整数ロードTLBと並列であり、記憶および他の命令アドレス情報を受け取り第1の物理アドレス情報を提供するマスタTLBと、
    (b2)前記マスタTLBと並列であり、記憶または他の命令アドレス情報を受け取り、前記データキャッシュに格納されているキャッシュデータの、物理タグをインデックスに記憶し、第2の物理アドレス情報を提供する物理アドレスタグアレイと、
    (b3)前記物理アドレスタグアレイに連結された第2の記憶有効ビットアレイと、
    (b4) 前記マスタTLBおよび前記物理アドレスタグアレイにより提供される前記第1および第2の物理アドレス情報を比較し、物理アドレス情報がマッチしたときに記憶/無効化キャッシュヒットを生成するコンパレータと、を有し、前記第1のTLB構造に並列な第2のTLB構造を備え、前記第1および第2の記憶有効ビットアレイが無効化すべきキャッシュラインまたは更新すべき記憶データを通知する、装置。
  2. アドレス情報ではなく変換ルックアサイドバッファ(TLB)からのヒット情報を保持する事前検証済みキャッシュタグアレイを有するコンピュータアーキテクチャにおいて、記憶データを更新し、キャッシュラインを無効化し、旧キャッシュラインを除去するための方法であって、
    第1のTLBへの整数ロードについての仮想アドレス情報を受け取るステップと、
    前記事前検証済みキャッシュタグアレイにおいて前記仮想アドレス情報を受け取るステップと、
    前記仮想アドレス情報をデータキャッシュにおいて受け取るステップと、
    前記第1のTLBから、前記仮想アドレスに対応する仮想タグのTLBにおけるロケーションを示すTLB仮想ヒットを提供するステップと、
    前記事前検証済みキャッシュタグアレイから、データキャッシュに格納されているキャッシュデータの、物理タグの前記TLBにおけるロケーションを示すTLB物理ヒットを提供するステップと、
    前記仮想アドレス情報、前記TLB仮想ヒットおよび前記TLB物理ヒットに基づいてキャッシュデータを提供するステップと、
    前記第1のTLBに並列なマスタTLBおよび物理アドレスタグアレイのそれぞれにおいて、整数演算および浮動小数点演算についてのアドレス情報を受け取るステップと、
    前記マスタTLBから第1の物理アドレス情報を提供するステップと、
    前記物理アドレスタグアレイにおけるインデックスに、前記データキャッシュに格納されているキャッシュデータの、物理タグを記憶するステップと、
    前記物理アドレスタグアレイから第2の物理アドレス情報を提供するステップと、
    前記第1および第2の物理アドレス情報がマッチするか比較するステップと、
    マッチしたときに、無効化すべきキャッシュラインまたは更新すべき記憶データを示す信号を生成するステップと、
    を含む方法。
JP2000331673A 1999-12-17 2000-10-31 旧キャッシュラインを無効化および除去する装置 Expired - Fee Related JP3821644B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/466306 1999-12-17
US09/466,306 US6470437B1 (en) 1999-12-17 1999-12-17 Updating and invalidating store data and removing stale cache lines in a prevalidated tag cache design

Publications (2)

Publication Number Publication Date
JP2001184263A JP2001184263A (ja) 2001-07-06
JP3821644B2 true JP3821644B2 (ja) 2006-09-13

Family

ID=23851268

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000331673A Expired - Fee Related JP3821644B2 (ja) 1999-12-17 2000-10-31 旧キャッシュラインを無効化および除去する装置

Country Status (2)

Country Link
US (3) US6470437B1 (ja)
JP (1) JP3821644B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105993004A (zh) * 2014-07-21 2016-10-05 上海兆芯集成电路有限公司 支持同时无效化共同内容的地址转译快取

Families Citing this family (77)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6470437B1 (en) * 1999-12-17 2002-10-22 Hewlett-Packard Company Updating and invalidating store data and removing stale cache lines in a prevalidated tag cache design
US6560689B1 (en) * 2000-03-31 2003-05-06 Intel Corporation TLB using region ID prevalidation
US6763433B1 (en) * 2000-10-26 2004-07-13 International Business Machines Corporation High performance cache intervention mechanism for symmetric multiprocessor systems
US6651143B2 (en) * 2000-12-21 2003-11-18 International Business Machines Corporation Cache management using a buffer for invalidation requests
EP1423972A1 (en) * 2001-08-27 2004-06-02 Koninklijke Philips Electronics N.V. Cache method
US7187689B1 (en) * 2001-10-29 2007-03-06 Juniper Networks, Inc. Self-cleaning mechanism for error recovery
US6961827B2 (en) * 2001-11-13 2005-11-01 Sun Microsystems, Inc. Victim invalidation
US7174429B2 (en) * 2001-12-28 2007-02-06 Intel Corporation Method for extending the local memory address space of a processor
US7565399B1 (en) * 2002-08-26 2009-07-21 Netapp, Inc. Caching web objects transformed by a pipeline of adaptation services
US7900017B2 (en) * 2002-12-27 2011-03-01 Intel Corporation Mechanism for remapping post virtual machine memory pages
US7353330B2 (en) * 2003-02-24 2008-04-01 Mosaid Technologies Incorporated Method and apparatus for performing repeated content addressable memory searches
WO2005010760A1 (ja) * 2003-07-29 2005-02-03 Fujitsu Limited Cam装置およびcam制御方法
US20050160229A1 (en) * 2004-01-16 2005-07-21 International Business Machines Corporation Method and apparatus for preloading translation buffers
US7487296B1 (en) * 2004-02-19 2009-02-03 Sun Microsystems, Inc. Multi-stride prefetcher with a recurring prefetch table
US20050192922A1 (en) * 2004-02-27 2005-09-01 Edlund Stefan B. Client-server computing system capable of validating cached data based on data transformation
US7386679B2 (en) * 2004-04-15 2008-06-10 International Business Machines Corporation System, method and storage medium for memory management
US7466647B2 (en) * 2005-02-09 2008-12-16 International Business Machines Corporation Efficient muxing scheme to allow for bypass and array access
US20060195677A1 (en) * 2005-02-28 2006-08-31 Texas Instruments Incorporated Bank conflict avoidance in a multi-banked cache system
US20070067505A1 (en) * 2005-09-22 2007-03-22 Kaniyur Narayanan G Method and an apparatus to prevent over subscription and thrashing of translation lookaside buffer (TLB) entries in I/O virtualization hardware
US7631163B2 (en) * 2006-02-17 2009-12-08 Sigmatel, Inc. Fast virtual to physical memory mapping
US7802055B2 (en) * 2006-04-19 2010-09-21 Qualcomm Incorporated Virtually-tagged instruction cache with physically-tagged behavior
JP4965974B2 (ja) * 2006-11-14 2012-07-04 ルネサスエレクトロニクス株式会社 半導体集積回路装置
US20090109996A1 (en) * 2007-10-29 2009-04-30 Hoover Russell D Network on Chip
US20090125706A1 (en) * 2007-11-08 2009-05-14 Hoover Russell D Software Pipelining on a Network on Chip
US20090125703A1 (en) * 2007-11-09 2009-05-14 Mejdrich Eric O Context Switching on a Network On Chip
US8261025B2 (en) 2007-11-12 2012-09-04 International Business Machines Corporation Software pipelining on a network on chip
US8526422B2 (en) * 2007-11-27 2013-09-03 International Business Machines Corporation Network on chip with partitions
US20090144507A1 (en) * 2007-12-04 2009-06-04 International Business Machines Corporation APPARATUS AND METHOD FOR IMPLEMENTING REFRESHLESS SINGLE TRANSISTOR CELL eDRAM FOR HIGH PERFORMANCE MEMORY APPLICATIONS
US20090144504A1 (en) * 2007-12-04 2009-06-04 International Business Machines Corporation STRUCTURE FOR IMPLEMENTING REFRESHLESS SINGLE TRANSISTOR CELL eDRAM FOR HIGH PERFORMANCE MEMORY APPLICATIONS
US8108609B2 (en) * 2007-12-04 2012-01-31 International Business Machines Corporation Structure for implementing dynamic refresh protocols for DRAM based cache
US8024513B2 (en) * 2007-12-04 2011-09-20 International Business Machines Corporation Method and system for implementing dynamic refresh protocols for DRAM based cache
US7917703B2 (en) * 2007-12-13 2011-03-29 International Business Machines Corporation Network on chip that maintains cache coherency with invalidate commands
US20090164738A1 (en) * 2007-12-21 2009-06-25 Microsoft Corporation Process Based Cache-Write Through For Protected Storage In Embedded Devices
US8473667B2 (en) * 2008-01-11 2013-06-25 International Business Machines Corporation Network on chip that maintains cache coherency with invalidation messages
US8010750B2 (en) * 2008-01-17 2011-08-30 International Business Machines Corporation Network on chip that maintains cache coherency with invalidate commands
US8018466B2 (en) * 2008-02-12 2011-09-13 International Business Machines Corporation Graphics rendering on a network on chip
US7913010B2 (en) * 2008-02-15 2011-03-22 International Business Machines Corporation Network on chip with a low latency, high bandwidth application messaging interconnect
US8490110B2 (en) * 2008-02-15 2013-07-16 International Business Machines Corporation Network on chip with a low latency, high bandwidth application messaging interconnect
US20090245257A1 (en) * 2008-04-01 2009-10-01 International Business Machines Corporation Network On Chip
US20090260013A1 (en) * 2008-04-14 2009-10-15 International Business Machines Corporation Computer Processors With Plural, Pipelined Hardware Threads Of Execution
US20090271172A1 (en) * 2008-04-24 2009-10-29 International Business Machines Corporation Emulating A Computer Run Time Environment
US8078850B2 (en) * 2008-04-24 2011-12-13 International Business Machines Corporation Branch prediction technique using instruction for resetting result table pointer
US8423715B2 (en) 2008-05-01 2013-04-16 International Business Machines Corporation Memory management among levels of cache in a memory hierarchy
US8020168B2 (en) * 2008-05-09 2011-09-13 International Business Machines Corporation Dynamic virtual software pipelining on a network on chip
US7991978B2 (en) * 2008-05-09 2011-08-02 International Business Machines Corporation Network on chip with low latency, high bandwidth application messaging interconnects that abstract hardware inter-thread data communications into an architected state of a processor
US8494833B2 (en) * 2008-05-09 2013-07-23 International Business Machines Corporation Emulating a computer run time environment
US7861065B2 (en) * 2008-05-09 2010-12-28 International Business Machines Corporation Preferential dispatching of computer program instructions
US7958340B2 (en) * 2008-05-09 2011-06-07 International Business Machines Corporation Monitoring software pipeline performance on a network on chip
US8392664B2 (en) * 2008-05-09 2013-03-05 International Business Machines Corporation Network on chip
US20090282419A1 (en) * 2008-05-09 2009-11-12 International Business Machines Corporation Ordered And Unordered Network-Addressed Message Control With Embedded DMA Commands For A Network On Chip
US20090282211A1 (en) * 2008-05-09 2009-11-12 International Business Machines Network On Chip With Partitions
US8214845B2 (en) * 2008-05-09 2012-07-03 International Business Machines Corporation Context switching in a network on chip by thread saving and restoring pointers to memory arrays containing valid message data
US8040799B2 (en) * 2008-05-15 2011-10-18 International Business Machines Corporation Network on chip with minimum guaranteed bandwidth for virtual communications channels
US8230179B2 (en) * 2008-05-15 2012-07-24 International Business Machines Corporation Administering non-cacheable memory load instructions
US8438578B2 (en) * 2008-06-09 2013-05-07 International Business Machines Corporation Network on chip with an I/O accelerator
US8195884B2 (en) * 2008-09-18 2012-06-05 International Business Machines Corporation Network on chip with caching restrictions for pages of computer memory
JP5428851B2 (ja) * 2009-12-25 2014-02-26 富士通株式会社 キャッシュ装置、演算処理装置及び情報処理装置
US8924685B2 (en) * 2010-05-11 2014-12-30 Qualcomm Incorporated Configuring surrogate memory accessing agents using non-priviledged processes
US8504777B2 (en) * 2010-09-21 2013-08-06 Freescale Semiconductor, Inc. Data processor for processing decorated instructions with cache bypass
US8843726B2 (en) * 2011-02-21 2014-09-23 Advanced Micro Devices, Inc. Cache for storing multiple forms of information and a method for controlling a cache storing multiple forms of information
EP3039554A1 (en) * 2013-08-30 2016-07-06 Hewlett Packard Enterprise Development LP Completion packet return
US9208103B2 (en) * 2013-09-26 2015-12-08 Cavium, Inc. Translation bypass in multi-stage address translation
US9645941B2 (en) 2013-09-26 2017-05-09 Cavium, Inc. Collapsed address translation with multiple page sizes
US9639476B2 (en) 2013-09-26 2017-05-02 Cavium, Inc. Merged TLB structure for multiple sequential address translations
US9268694B2 (en) 2013-09-26 2016-02-23 Cavium, Inc. Maintenance of cache and tags in a translation lookaside buffer
GB2521227B (en) * 2013-12-16 2020-11-25 Advanced Risc Mach Ltd Invalidation of index items for a temporary data store
WO2016121026A1 (ja) * 2015-01-28 2016-08-04 株式会社日立製作所 ストレージ装置、計算機システム、及び、方法
US9959206B2 (en) 2015-05-19 2018-05-01 Toshiba Memory Corporation Memory system and method of controlling cache memory
GB2542771B (en) * 2015-09-25 2020-07-08 Advanced Risc Mach Ltd Hazard Checking
US10877901B2 (en) 2015-09-25 2020-12-29 Arm Limited Method and apparatus for utilizing proxy identifiers for merging of store operations
US10268636B2 (en) * 2016-09-16 2019-04-23 Oracle International Corporation Column level invalidation for in-memory database
US10289565B2 (en) 2017-05-31 2019-05-14 Apple Inc. Cache drop feature to increase memory bandwidth and save power
KR102287758B1 (ko) * 2018-03-05 2021-08-09 삼성전자주식회사 부채널 공격으로부터 캐시를 보호하는 시스템
US10672099B2 (en) 2018-06-01 2020-06-02 Apple Inc. Memory cache management for graphics processing
CN110968520B (zh) * 2018-09-30 2024-04-12 北京忆恒创源科技股份有限公司 基于统一缓存架构的多流存储设备
US11580031B2 (en) * 2019-07-31 2023-02-14 Intel Corporation Hardware for split data translation lookaside buffers
CN111338987B (zh) * 2020-02-13 2023-12-12 江苏华创微***有限公司 快速无效组相联tlb的方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5860017A (en) 1996-06-28 1999-01-12 Intel Corporation Processor and method for speculatively executing instructions from multiple instruction streams indicated by a branch instruction
US5859999A (en) 1996-10-03 1999-01-12 Idea Corporation System for restoring predicate registers via a mask having at least a single bit corresponding to a plurality of registers
US6014732A (en) * 1997-10-22 2000-01-11 Hewlett-Packard Company Cache memory with reduced access time
US6351797B1 (en) * 1997-12-17 2002-02-26 Via-Cyrix, Inc. Translation look-aside buffer for storing region configuration bits and method of operation
US6272597B1 (en) * 1998-12-31 2001-08-07 Intel Corporation Dual-ported, pipelined, two level cache system
US6470437B1 (en) * 1999-12-17 2002-10-22 Hewlett-Packard Company Updating and invalidating store data and removing stale cache lines in a prevalidated tag cache design

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105993004A (zh) * 2014-07-21 2016-10-05 上海兆芯集成电路有限公司 支持同时无效化共同内容的地址转译快取
CN105993003A (zh) * 2014-07-21 2016-10-05 上海兆芯集成电路有限公司 同时无效化所有关联于一x86进程内容标识符的地址转译快取项目
CN105993004B (zh) * 2014-07-21 2019-04-02 上海兆芯集成电路有限公司 转译后备缓冲器、操作其的方法以及包含其的处理器
CN105993003B (zh) * 2014-07-21 2019-04-09 上海兆芯集成电路有限公司 转译后备缓冲器、操作转译后备缓冲器的方法以及处理器

Also Published As

Publication number Publication date
US6920531B2 (en) 2005-07-19
US20040162961A1 (en) 2004-08-19
JP2001184263A (ja) 2001-07-06
US6470437B1 (en) 2002-10-22
US20030065890A1 (en) 2003-04-03
US6772316B2 (en) 2004-08-03

Similar Documents

Publication Publication Date Title
JP3821644B2 (ja) 旧キャッシュラインを無効化および除去する装置
JP4065660B2 (ja) 機能が並列に分散された変換索引バッファ
US6493812B1 (en) Apparatus and method for virtual address aliasing and multiple page size support in a computer system having a prevalidated cache
US5091851A (en) Fast multiple-word accesses from a multi-way set-associative cache memory
US6014732A (en) Cache memory with reduced access time
US6532528B1 (en) Data processor and data processor system having multiple modes of address indexing and operation
US8984254B2 (en) Techniques for utilizing translation lookaside buffer entry numbers to improve processor performance
US6282617B1 (en) Multiple variable cache replacement policy
US7900020B2 (en) Correction of incorrect cache accesses
US20070028051A1 (en) Time and power reduction in cache accesses
US6192458B1 (en) High performance cache directory addressing scheme for variable cache sizes utilizing associativity
US20060236074A1 (en) Indicating storage locations within caches
JP3666689B2 (ja) 仮想アドレス変換方法
US6243791B1 (en) Method and architecture for data coherency in set-associative caches including heterogeneous cache sets having different characteristics
JPH07200399A (ja) マイクロプロセッサ、およびマイクロプロセッサにおいてメモリにアクセスするための方法
US6157980A (en) Cache directory addressing scheme for variable cache sizes
US9720847B2 (en) Least recently used (LRU) cache replacement implementation using a FIFO storing indications of whether a way of the cache was most recently accessed
EP2866148B1 (en) Storage system having tag storage device with multiple tag entries associated with same data storage line for data recycling and related tag storage device
US5737575A (en) Interleaved key memory with multi-page key cache
JP2004199677A (ja) キャッシュを動作させるためのシステム及び方法
US20020087825A1 (en) Error detection in cache tag array using valid vector
US8688952B2 (en) Arithmetic processing unit and control method for evicting an entry from a TLB to another TLB
KR20020095875A (ko) 멀티 레벨 캐쉬 시스템
US20040133760A1 (en) Replacement algorithm for a replicated fully associative translation look-aside buffer
JP3210637B2 (ja) データ処理システム内のキャッシュ・メモリにアクセスするための方法およびシステム

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20050804

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050830

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20051129

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20051227

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20060223

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20060228

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060606

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20060620

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060620

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees