JPH10509819A - インターリーブされるキャッシュメモリアレイのインデッキシングとマルチプレキシング - Google Patents
インターリーブされるキャッシュメモリアレイのインデッキシングとマルチプレキシングInfo
- Publication number
- JPH10509819A JPH10509819A JP8513403A JP51340396A JPH10509819A JP H10509819 A JPH10509819 A JP H10509819A JP 8513403 A JP8513403 A JP 8513403A JP 51340396 A JP51340396 A JP 51340396A JP H10509819 A JPH10509819 A JP H10509819A
- Authority
- JP
- Japan
- Prior art keywords
- cache
- data
- tag
- array
- address
- 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.)
- Ceased
Links
- 230000015654 memory Effects 0.000 title claims abstract description 70
- 238000003491 array Methods 0.000 title claims abstract description 25
- 238000000034 method Methods 0.000 claims description 7
- 230000002829 reductive effect Effects 0.000 abstract description 5
- 238000013507 mapping Methods 0.000 description 22
- 238000010586 diagram Methods 0.000 description 21
- 239000000872 buffer Substances 0.000 description 20
- 238000007667 floating Methods 0.000 description 20
- 238000004364 calculation method Methods 0.000 description 10
- 230000008520 organization Effects 0.000 description 10
- 230000007246 mechanism Effects 0.000 description 8
- 238000013519 translation Methods 0.000 description 7
- 230000008859 change Effects 0.000 description 5
- 230000001419 dependent effect Effects 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 230000000630 rising effect Effects 0.000 description 5
- 239000011159 matrix material Substances 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 230000003111 delayed effect Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000011084 recovery Methods 0.000 description 3
- 230000000903 blocking effect Effects 0.000 description 2
- 230000001934 delay Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000000670 limiting effect Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000002441 reversible effect Effects 0.000 description 2
- 230000011664 signaling Effects 0.000 description 2
- 229910052710 silicon Inorganic materials 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000002950 deficient Effects 0.000 description 1
- 230000001627 detrimental effect Effects 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 239000012464 large buffer Substances 0.000 description 1
- 230000007334 memory performance Effects 0.000 description 1
- 239000002184 metal Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012797 qualification Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0846—Cache with multiple tag or data arrays being simultaneously accessible
- G06F12/0851—Cache with interleaved addressing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
- G06F12/1063—Address 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 virtually addressed
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0864—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0895—Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
(57)【要約】
CPU(100)において、指令とデータをストアするキャッシュメモリアレイ(610)が使用される。インターリーブする2つのロジカルメモリアレイ(459a,459b)を使用して、メインメモリへのアクセス数を効果的に削減してキャッシュメモリ内のハイヒットレートが達成される。マルチプレクスサーキット(たとえば740)はアレイをより高密度であると共に、センスアンプを少ない個数で達成させる。
Description
【発明の詳細な説明】
インターリーブされるキャッシュメモリアレイのインデッキシングとマルチプレ
キシング
発明の背景
本発明は、一般にコンピュータに関し、特に、キャッシュメモリに関する。コ
ンピュータの発端以来、CPU設計者は、コストの有効な手法で高速、かつ高性
能のプロセッサーを設計することを余儀なくされてきた。例えば、特別なCPU
の高速バージョンが入手できるようになるにつれ、設計者は、CPUの処理量を
改良する、簡単でかつコストの有効な手段として、CPUのクロック周波数をた
びたび増加させることがある。
ある時点以降、システムのメインメモリ(入力/出力)のスピードは、CPU
がどれくらい速く動作することができるのか、ということについての限界要因と
なる。CPUの動作スピードがメインメモリの動作要求を超えるとき、CPUは
、メモリがキャッチアップできるように1つあるいはそれ以上の待ち状態を発し
なければならない。しかしながら、待ち状態は、CPUの性能上に有害な影響を
もつ。ある例では、1つの待ち状態は、CPUの性能を約20ー30%減少させ
得る。
待ち状態は、より高速のメモリを使用することによって除去することが可能で
あるけれども、それは、非常に高価であり、非実用的かもしれない。典型的に、
高速メモリチップの価格とその次の最高速グレードのものとの差は、50ー10
0%の範囲で変化し得る。このため、コストは、特に、大きなメモリを必要とす
るシステムにとっては、非常に高くなり得る。
コストの有効な解決策は、種々のスピードとサイズの多重レベルのメモリから
成る階層的なメモリを有するCPUを提供することであった。もっとも速いメモ
リは、低速のメモリよりもビット当たりの単価が高いため、それらは、一般に小
さなサイズになる。このような小さなメモリは、キャッシュとして引用され、マ
イクロプロセッサーに近接して配置されるか、あるいはマイクロプロセッサーと
同一チップ内に集積される。
概念的に、メモリコントローラは、プロセッサーによって現在使用される命令
とデータを取り出し、キャッシュに供給する。プロセッサーは、命令やデータを
フェッチするとき、最初にキャッシュをチェックする。制御論理は、要求された
情報がキャッシュに蓄積されている(キャッシュヒット)かどうかを決定する。
もし、キャッシュヒットが生じれば、CPUは、メインメモリに対してアクセス
する必要はない。制御論理は、要求されたデータがキャッシュにあるかどうかを
決定するために貴重なサイクルを使用する。しかしながら、メインメモリへのア
クセスが非常に遅いので、このようなコストは受け入れられることができる。
キャッシュヒット率が高ければ高いほど、CPUは、その処理を速く行うこと
ができることが理解される。キャッシュが大きければ大きいほど、より多くのデ
ータを蓄積でき、したがって、ヒットの可能性もより高くなることは明らかであ
る。しかしながら、実際の世界では、マイクロプロセッサーの設計者は、ダイ上
の限られた利用空間という事実のために、サイズの制約に常に直面している。よ
り大きなダイサイズを使用すれば、効果的ではあるけれども、ダイサイズの増加
に伴いコストが増加するため、実用的ではない。さらに、性能を低減させること
なくキャッシュサイズを縮小することは、設計者に、CPUの他の機能ユニット
の性能を改善させる。
このため、最小限サイクル数を用いてヒットが生じたかどうかを決定すること
が可能な、かつチップ上で必要とされるスペースを縮小させつつも、高いヒット
率を決定することが可能なキャッシュを設計することが必要である。
発明の概要
本発明は、コンピュータシステムにおいてキャッシュメモリを実行するための
非常に有能なメカニズムを提供する。このメカニズムは、キャッシュメモリが、
高いヒット率、高速アクセス時間、低いレイテンシイ(latency)、およ
び縮小された物理的サイズを持つことを可能にする。
ある実施形態では、本発明は、レイテンシイを減少させるために、トランスレ
ーションルックサイドバッファ(TLB)と並列に動作するキャッシュを提供す
る。キャッシュは、共にインターリーブ(interleave)される2つの
2−ウエイセットアソシエイテブアレイを含む。それぞれの2−ウエイセット
アソシエイテブアレイは、2つのアレイを含み、各々は、それぞれタグとデータ
に関する。4つの独立に動作するキャッシュアレイを持つことによって、4つの
命令までは、同時に動作することができる。
各データアレイのビットは、2つの別々のアクセスパターンを許可するために
インターリーブされる。例えば、キャッシュがロードされるか、あるいはコピー
バックされるとき、同一ブロック内の2つのダブルワードが同時にアクセスされ
る。キャッシュが読み出されるとき、同一のダブルワード位置は、セットを有す
る双方のブロックから同時に読み出される。さらに、マルチプレクサを使用する
ことによって、読み書きするためのセンスアンプ数が減少され、これによって、
ダイ上の貴重なスペースをかなり節約することができる。
本発明の本質及び効果は、以下の詳細な説明および図面への参照をもって理解
することが
できる。
図面の簡単な説明
図1は、スーパースカラープロセッサーの機能ブロック図を示し、
図2は、ロード/ストアユニットの機能ブロック図を示し、
図3は、キャッシュバンクのブロック図を示し、
図4は、キャッシュデータアレイと制御論理(コントロールロジック)のブロッ
ク図を示し、
図5は、キャッシュデータアレイの各バンク内のブロック組織を示し、
図6は、キャッシュ制御論理の論理図を示し、
図7は、キャッシュの2つのバンク間の接続を示し、
図8は、キャッシュタグメモリと制御論理のブロック図を示し、
図10は、タグのビットフィールドを示し、
図11a−11bは、タグチェック論理を示し、
図12は、キャッシュヒットパルスを発生するための論理図を示し、
図13は、キャッシュタグアレイのためのローデコーダのブロック図を示す。
好ましい実施形態の詳細な説明
内容
I.スーパースカラープロセッサーアーキテクチャ
A.スーパースカラープロセッサーの概観
B.動作
II.ロード/ストアユニット
A.ロード/ストアユニットの概観
III.データキャッシュ
A.データキャッシュの概観
B.データアレイ
1.データアレイ組織
2.データアレイ制御論理
C.タグアレイ
1.タグアレイ組織
2.タグアレイ制御論理
D.キャッシュインターフェース
I.スーパースカラープロセッサーアーキテクチャ
図1は、本発明に従い動作し、組み込まれた冗長マッピングメカニズムを含む
スーパースカラープロセッサ100の機能ブロック図を示す。以下に説明される
ように、この冗長マッピングメカニズムは、ブランチの誤った予測からの効果的
な復旧を可能にする。プロセッサー100は、一般に、カリフォルニアのマウン
テンヴュー、シリコングラッフィクス社によって開発されたスーパースカラープ
ロセッサーR10000を表し、これは、本発明の冗長マッピングメカニズムに
ついての1つの適用例だけを提供する。
A.スーパースカラープロセッサーの概観
スーパースカラープロセッサーは、1命令以上のフェッチと実行を並列に行うこ
とができる。プロセッサー100は、1サイクルにつき4命令をフェッチしデコ
ードする。各デコードされた命令は、3つの命令キュー(待ち)の1つに付加さ
れる。これらのキューは、5つの実行パイプラインの各々に対してサイクル毎に
新しい命令を発することができる。
図1のブロック図は、命令パイプラインのステージを示すように配置され、種
々のプロセッサーの要素間の機能的な相互接続を示す。一般に、命令フェッチと
デコードは、ステージ1と2において実行され、命令は、ステージ3の種々のキ
ュー(待ち)から発せられ、命令の実行は、ステージ4−7において実行される
。
図1を参照すると、一次命令キャッシュ102は、1サイクルにつき4つの連
続する命令を読み出し、キャッシュブロック内のワード境界から開始する。ブラ
ンチターゲットキャッシュ104、命令レジスタ106、命令デコード、及び従
属論理200は、発せられた命令の部分を、浮動小数点(フローテイングポイン
ト)マッピングテーブル204(6ビット単位で32ワードのRAM)か、ある
いは整数マッピングテーブル206(6ビット単位で33ワードのRAM)に運
ぶ。これらのテーブルは、以下に述べられる、“レジスターリネイミング(re
naiming)”動作を実行し、これは、命令実行中の値を保持するために、
命令で識別された論理レジスタを物理レジスタ位置にリネイミングする。冗長マ
ッピングメカニズムは、本発明に従いこれらのテーブルに組み込まれ、ブランチ
の誤った予測から効果的な復旧を容易にする。マッピングテーブル204と20
6は、浮動小数点フリーリスト208(6ビット単位で32ワード)と、整数フ
リーリスト210(6ビット単位で32ワード)とからもそれぞれ入力を受取る
。双方のマッピングテーブルの出力は、順番にフリーリスト208と210の入
力を供給するアクテイブリスト212に供給される。
ブランチユニット214はまた、図1に示されるように、命令レジスタ106
から情報を受取る。このユニットは、1サイクルにつき1ブランチ以上の処理を
しない。ブランチユニットは、各条件付ブランチ毎に1エントリを含むブランチ
スタック216を含む。以下に述べるように、プロセッサー100は、最もあり
そうな通路を予測し、かつその通路に沿って命令をデコードすることにより推論
的に条件付ブランチを実行することができる。予測は、条件が既知となるときに
確かめられる。もし、正しい通路が取られるならば、処理はその通路に沿って継
続する。さもなくば、決定は反転されなければならず、すべての推論的にデコー
ドされた命令は、中断される必要があり、プログラムカウンタとマッピングハー
ドウエアを元に戻さなければならない。
再び図1を参照すると、マッピングテーブル204と206は、3つの通常の
パイプラインをサポートし、これらは5命令ユニットを含む。浮動小数点パイプ
ラインは、浮動小数点マッピングテーブル204に結合される。浮動小数点パイ
プラインは、64ロケーションの浮動小数点レジスタファイル302と連絡する
16エントリ命令キュー300を含む。レジスタファイル302と命令キュー3
00は、並列乗算ユニット400と加算器404(浮動小数点ブランチ予測を確
かめるために比較処理を他のもの中で実行する)に供給する。乗算ユニット40
0はまた、除算ユニット408と平方根ユニット410に入力を提供する。
第2に、整数パイプラインは、整数マッピングテーブル206に結合される。
整数パイプラインは、64ロケーションの整数レジスタファイル306と連絡す
る16エントリ整数命令キュー304を含む。レジスタファイル306と命令キ
ュー304は、演算論理ユニット(“ALU”)ALU♯1 412(ALU、
シフター及び整数ブランチ比較器を含む)と、ALU#2 414(ALU、整
数乗算器及び除算器を含む)に供給する。
第3に、ロード/ストアパイプライン(あるいはロード/ストアユニット)4
16は、整数マッピングテーブル206に結合される。このパイプラインは、レ
ジスタファイル306と連絡する16エントリアドレスキュー308を含む。ア
ドレスキュー308は、メモリアクセス命令のメモリ従属を追跡する能力を有す
るスーパースカラープロセッサーであることが好ましい。2−ウエイセットアソ
シエイテブデータキャッシュのアクセスでは、アドレスキュー308は、不必要
なキャッシュスラッシングを防ぐために、アクセスの従属を同一キャッシュセッ
トに負わせる。
特に、アドレスキュー308は、順番以外で実行されるかもしれないメモリア
クセス命令のメモリ従属を追跡するための、非常に効果的な装置である。この装
置もまた、不必要なキャッシュスラッシングを防ぐために、メモリキャッシュセ
ットの部分の特別な識別を提供する。
アドレスキュー308は、セットアソシエイテブデータキャッシュをアクセス
するのに使用される複数のエントリを保持する。このキュー308は、比較回路
、RAMセルからなる第1のマトリックス、及びRAMセルからなる第2のマト
リックスを含む。比較回路は、新しいキューエントリから抽出された新規に計算
された一部のアドレスを、前のいくつかのエントリの1つから抽出された以前に
計算された一部のアドレスと比較する。RAMセルからなる第1のマトリックス
は、新しいキューエントリによって使用されたキャッシュセットを使用するキュ
ーの以前のエントリのすべてを追跡する。RAMセルからなる第2のマトリック
スは、次のロード命令によってアクセスされたデータキャッシュのデータの部分
を蓄積するストア命令であるキューエントリを追跡する。アドレスキュー308
は、許可されたアクセスのタイプ、つまりランダムかシーケンシャルかを識別す
るために、キャッシュに蓄積されたブロックに、状態ビットを割り当てることが
できる。
レジスタファイル306とアドレスキュー308は、アドレススタック420
に仮想アドレスエントリを順番に提供する整数アドレス計算ユニット418に供
給する。これらの仮想アドレスは、ジョイントトランスレーションルックサイド
バッファ(Joint Translation Lookaside Buffer:JTLB)で物理アドレスに
変換され、データキャッシュ424をアクセスするために使用される。
JTLB422は、矛盾する仮想アドレスがそこに蓄積されるのを防ぎ、かつ
検出するためのトランスレーションバッファである。JTLB422は、仮想メ
モリアドレスを物理アドレスに変換するための非常に効果的なメカニズムである
。JTLB422は、トランスレーションバッファをシャットダウンやリセット
することなしに、同一の仮想ページアドレスがトランスレーションバッファ内に
蓄積されることを、正確に防止する。JTLB422は、第1の物理ページ値を
蓄積するための第1のレジスタと、第2の物理ページ値を蓄積するための第2
のレジスタと、ページサイズを表す値を蓄積するための第3のレジスタと、第1
及び第2のレジスタに蓄積された値に対応する仮想アドレスを蓄積するための第
4のレジスタと、現在の仮想アドレスを第3のレジスタの値と比較するための比
較器とを含む。比較器は、比較された値が等しいかどうかの信号を発生する。こ
の信号によって、第1か第2のレジスタのいずれかが読み出される。
データキャッシュ424へのデータ入力及びそこからの出力は、ストアアライ
ナー430とロードアライナー428をそれぞれ通過する。アドレススタック4
20とデータキャッシュ424は、外部のハードウエアコントローラとインター
フェース434と連絡する。さらに、データキャッシュ424とコントローラ/
インターフェース434は、二次キャッシュ432と連絡する。
B.動作
プロセッサー100は、5つの機能ユニットにおいて命令実行をオーバーラッ
プさせる多重実行のパイプラインを使用する。上述したように、これらのユニッ
トは、2つの整数ALU412、414、ロード/ストアユニット416、浮動
小数点加算器404、及び浮動小数点乗算器400を含む。各関連されたパイプ
ラインは、命令を発するステージ、レジスタオペランドを読み取るステージ、命
令を実行するステージ、及び結果を蓄積するステージを含む。また、3つの“反
復”ユニット(すなわち、ALU#2 414、浮動小数点除算ユニット408
、及び浮動小数点平方根ユニット410)があり、これらはより複雑な結果を計
算する。
レジスタファイル302と306は、プロセッサー100の機能ユニットをビ
ジーに保つための多重の読み書きポートを持たねばならない。整数レジスタファ
イル306は、7つの読み取りポートと3つの書込みポートを有し、浮動小数点
レジスタファイル302は、5つの読み取りポートと3つの書込みポートを有す
る。整数及び浮動小数点のパイプラインはそれぞれ、2つの設けられたオペラン
ドポートと、1つの設けられた結果ポートを適切なレジスタファイル内において
使用する。ロード/ストアユニット416は、アドレス計算のために2つの設け
られた整数オペランドポートを使用する。ロード/ストアユニットはまた、2つ
のレジスタファイルにおいて共有された書込みポートと共有された読み出しポー
トを介して、整数値か浮動小数点値かのいずれかをロードし、あるいは蓄積する
。これらの共有されたポートはまた、整数レジスタファイルと浮動小数点レジス
タファイル間でデータを移動させるために使用される。
パイプラインでは、各命令の実行は、より簡単な動作の連続に分割される。各
動作は、ステージと呼ばれる個々のハードウエア部分によって行われる。各ステ
ージは、その結果を次のステージへ渡す。通常、各命令は、各ステージの単一サ
イクルのみを要求し、各ステージは、前の命令が後のステージによって完了され
ている間に、新しい命令を開始することができる。このため、新しい命令が、各
サイクル間でしばしば開始可能である。
パイプラインは、命令が実行される速度を大幅に改良する。しかしながら、パ
イプラインの効果的な使用は、いくつかの命令が並列に実行されることを要求す
る。各命令結果は、命令がパイプラインに入った後の数サイクル間利用すること
ができない。このため、新しい命令は、まだパイプラインの中にある命令結果に
依存しなくてもよい。
プロセッサー100は、オリジナルのプログラム順で命令をフェッチし、デコ
ードするが、これらの命令を順番以外で実行し、完了するかもしれない。一旦完
了すると、命令は、オリジナルのプログラムの順序で、“グラジュエイト(グラ
ジュエイト)、graduate”される。フェッチ命令は、図1に示すように
、命令キャッシュから命令を読み出すことによって実行される。命令デコード動
作は、従属チェックとレジスタのリネイミング(以下に説明)を含み、これらは
、命令デコード及び従属ロジック200と、マッピングテーブル204か206
によってそれぞれ行われる。上記のように識別された実行ユニットは、命令のオ
ペランドからの演算結果を計算する。結果が計算されてレジスタファイル302
か306によって識別された一時レジスタに蓄積されたとき、実行は完了される
。最終的に、グラジュエイト(グラジュエイト)は、新しい固定値としてこの一
時的な結果を引き渡す。
命令は、その命令とすべての前の命令が首尾よく完了されたときのみ、グラジ
ュエイトすることができる。命令がグラジュエイトされるまで、命令は中断する
ことが可能であり、すべての前のレジスタとメモリ値が、例外を伴う正確な状態
にリストア(復元)されることが可能である。この状態は、次の命令に割り当て
られた一時的な物理レジスタを“アンーネイミング(unnaming)”する
ことによってリストアされる。レジスタは、古いデステイネーションレジスタを
関連されたマッピングテーブルに書き込み、かつ新しいデステイネーションレジ
スタをフリーリストに戻すことによって、無名(unmamed)にされる。リネイミン
グ(renaming)は、逆のプログラム順で行われ、最終的に論理レジスタが一度以上
使用された。リネイミングの後、レジスタファイル302と306は、その例外
より前の命令によって生成された固定値のみを含む。しかしながら、命令がグラ
ジュエイトされると、すべての前の値は失われる。
アクテイブリスト212は、プログラム順の”アクテイブ”命令のリストであ
る。これは、命令が完了されたとか、あるいは例外を検出したというような状態
を記録する。命令は、命令がデコードされたとき、その底部に付加される。完了
された命令は、それがグラジュエイトするときに、その上部から除去される。
II.ロード/ストアユニット
A.ロード/ストアユニット概観
マイクロプロセッサーは、整数及び浮動小数点のレジスタ値をそれぞれ蓄積す
るために、レジスタファイル306と302を使用する。各ファイルの幅は、そ
れ自体マイクロプロセッサーのデータパスの幅と等しい。物理レジスタは、完了
されたけれども未だグラジュエイトされていない命令についての仮の結果を蓄積
するためにも使用されるので、レジスタファイル302と306は、論理レジス
タよりも多くの物理レジスタを含むべきである。ある実施例では、レジスタファ
イルは、64の物理レジスタを含み、これは、論理レジスタ数の2倍である。多
重の読み書きポートが、各レジスタファイルに提供され、これによって、データ
がマイクロプロセッサの種々の機能ユニットから並列に読み書きできるようにな
る。
一次命令キャッシュ102、データキャッシュ424、及びブランチスタック
216は、データパスによって相互に接続される。必要な配線を最小限にするた
めに、機能ユニットはデータパスを共用する。データパスの共用は、バスコンテ
ンション(競合)を生じさせる。この問題は、機能ユニットを相互接続するべき
2相のマルチプレクスされた単方向データパスを使用することによって軽減され
る。
ロード/ストアユニット416は、例えば、ロード、ストア(蓄積)、プリフ
ェッチ及びキャッシュ命令のような、マイクロプロセッサーのレジスタファイル
と、データキャッシュ424と、メインメモリとの間のデータ転送命令を容易に
する。
通常、メインメモリは、データキャッシュ424を介してアクセスされる。デ
ータキャッシュは、最近使用されたデータをローカルな高速バッファメモリに保
持することによってメモリ性能を非常に改良する。マイクロプロセッサー100
は、データキャッシュを増大するための2次キャッシュを含む。スペースの利用
可能性に依存して、二次キャッシュ432は、個別のチップとして実行すること
ができる。
すべての“キャッシュされる”動作は、最初にデータキャッシュ424をアク
セスする。もし、データがそこに存在していれば(“キャッシュヒット”)、ロ
ードが2サイクルで完了される。さもなくば、二次キャッシュへのアクセスが開
始される。もし、“ヒット”したならば、一次キャッシュは、”リフィル(補充
)、refilled)され”、ロードが少なくとも8サイクルを要する。さもなくば、
メインメモリは、二つのキャッシュの補充(リフィル)とともに読み出されなけ
ればならない。このような場合、ロードは、かなり長い時間を要するであろう。
マイクロプロセッサー100は、キャッシュされる動作を”順番以外で”実行す
る。命令のアドレスは、たとえもし前の命令が有効になるべきインデックスレジ
スタを待っているにしても、インデックスが有効になるや否や計算されることが
可能である。キャッシュミスは、後の命令を妨げず(”ノンブロッキング”)、
ユニットは、8つのキャッシュミスが処理されるまでの間、新しい動作を開始す
ることができる。
“キャッシュされない”動作は、キャッシュをバイパスし、常にシステムバス
をアクセスする。典型的に、キャッシュされない動作は、入力/出力装置や特別
の目的のメモリをアクセスする。
キャッシュされない動作は、命令がグラジュエイトしかけているときにのみ実
行される。キャッシュされない動作は、例外の事象で未処理であることは許され
ないので、オリジナルのプログラム順序で連続的に行われる。キャッシュされな
い書き込みと読み出しの双方は、I/Oサブシステムの状態を変更することがで
きる。キャッシュされない動作は、アドレススタックに保持されるが、従属チェ
ックはこれらについて一切行われない。キャッシュされないストアのオペランド
は、ストアバッファにコピーされるが、ロードバイパスは一切生じ得ない。スト
アがグラジュエイトするとき、バッファされたデータは外部インターフェースに
転送される。
キャッシュされない動作は、それらがグラジュエイトするまで遅延されるけれ
ども、キャッシュされた動作は、順番以外で進行され得る。すなわち、次のキャ
ッシュされるロードが実行可能であり、そして、キャッシュされたストアが、タ
グチェックとキャッシュリフィル(補充)を開始できる。
プリフェッチ命令は、メモリブロックを一次キャッシュと二次キャッシュにフ
ェッチするのに使用される。それらは、キャッシュをリフィルするために必要な
遅延を減少させることによって性能を増加するために使用され、しかし、それら
は、プログラムの論理実行には何ら影響がない。プリフェッチ命令は、予測可能
なメモリアクセスをもつけれども高いキャッシュミス率をもつプログラムをかな
り改良することができる。しかしながら、プリフェッチ命令の不適切な使用は、
一般のメモリアクセスと干渉することによって性能を減少させ得る。
プリフェッチ命令には2つのフォーマットがあり、その結果、”ベース+オフ
セット”(PREF、オペコード63 octal)か、”ベース+インデック
ス”(PFETCH、オペコード23 機能17 octal)のいずれかのア
ドレッシングが使用され得る。これらの命令は、ミップステクノロジー社のMI
PS R10000ーMIPSIV ISA マニュアル(1994)、C.プ
ライスにおいて、定義されている。各フォーマットは、どのプリフェッチ
動作が予期されるのかを示す5ビットの”ヒント(hint)”フィールドを含
む。しかしながら、アーキテクチャは、プログラムの結果に影響しないため、ハ
ードウエアの実行がヒントフィールドや全体の命令を無視することを許容する。
もし、問題に遭遇すれば、プリフェッチ命令は、いかなる例外を発生することな
く中止される。
プリフェッチされたデータは、一次と二次のデータキャッシュの双方にロード
される。”ヒント”フィールドは双方のキャッシュに適用する。
アドレスキューがプリフェッチ命令を実行するときに、外部インターフェース
がビジーであるならば、そのキューは、その命令を後で再び試みるだろう。しか
しながら、もし、アドレスされたキャッシュセットが、従属ロックか、前のリフ
ィル動作のために、リフィルされることができない場合には、命令は、何ら動作
を起こさせない。
マイクロプロセッサー100は、ヒントフィールドの下位3ビットしか使用し
ない。もし、ビット0がセットされるなら、キャッシュは、書込み可能な、キャ
ッシュブロックの独占的なコピーを要求する。さもなくば、キャッシュは、キャ
ッシュブロックの共用されたコピーを要求する。もし、ビット2がセットされる
なら、ビット1は、キャッシュミスがある場合にはどのウエイがリフィルされる
かを選択する。もし、選択されたウエイがロックされるか、すでに一次データキ
ャッシュにリフィルである場合には、プリフェッチ命令は、何ら動作を起こさせ
ない。
プリフェッチ命令は、デコードされ、キューされ、発され、そして、他のメモ
リ動作のようにタグチェックされる。しかし、プリフェッチは、1つのタグチェ
ックサイクル後に、”済み”を付される。もし、キャッシュヒット(要求された
書き込み許可で)があると、命令は完了される。もし、ミスがあって、キャッシ
ュブロックが利用されるならば、キャッシュのリフィル動作は外部インターフェ
ースから要求される。リフィル状態は、キャッシュタグに記録される。しかしな
がら、アドレススタックのエントリが”済み”であるため、完了されるべきリフ
ィルを待たない。
ロード/ストアユニットは、推論的に命令を実行することができる。これら
は、ブランチが逆の場合には中止される必要がある。もし、中止された命令が、
キャッシュのリフィルを模倣するならば、リフィルの動作は完了されるにちがい
ない。これらのリフィルは、プロセッサーの命令にもはや対応しないので、オー
ファンス(orphans)と呼ばれる。プリフェッチ命令はまた、最初のタグサイク
ルが完了されるや否や”済み”となるので、オーファンスを生じさせる。
このキャッシュブロックのアドレスタグは、キャッシュのリフィルが完了され
るまで、”リフィリング(補充する)”状態で残る。もし、次の命令が、このキ
ャッシュブロックをアドレスするならば、これは、”リフィルの待ち”状態で最
初にこのブロックを使用することができる。
B.動作
図2を参照すると、ロード/ストアユニット416は、アドレスキュー308
、アドレススタック420、アドレス計算ユニット(ACU)418、ストアア
ライナ430、ロードアライナ428、トランスレーションルックサイドバッフ
ァ(JTLB)422、及びデータキャッシュ424を含む。データキャッシュ
424は、セットアソシエイテブデータキャッシュであり、キャッシュタグアレ
イ450、キャッシュデータアレイ610、及びタグチェックロジック660を
含む。TLBとデータキャッシュは、ロード命令のためのレイテンシイを減少さ
せるために並列に動作するように構成され、動作速度で約15%の性能改善をす
る。
アドレスキュー308は、レジスタファイル306とアドレス計算ユニット4
18と連絡する。アドレスキューは、環状のファーストイン−ファーストアウト
(FIFO)バッファのように構成された16エントリを含み、キャッシュを操
作する、ロード、ストア、及び”キャッシュ”命令のようなすべてのメモリ命令
の軌跡を保持する。メモリ命令がデコードされるとき、それは、キューの底で次
の連続的なエントリに割り当てられる。命令がグラジュエイトするとき、それは
、リストの上部から除去される。グラジュエイションは、命令がエラーなしで完
了し、かつ前の命令がグラジュエイトされた場合に生じる。命令は、たとえそ
れらが順番通りに実行されないおそれがあるにしても、オリジナルのプログラム
の順番でグラジュエイトされる。
アドレスキューの各エントリは、表Iに例示されたいくつかの命令フィールド
を含む。
メモリ命令のオペランドが利用されるとき、アドレスキューは、実行のため必要
なオペランドをACU418に送る。”インデックスされた”動作に関し、AC
Uは、レジスタファイル306からベースレジスタとインデックスレジスタのオ
ペランドを受け取る。他のロードやストア命令に関する限り、アドレスキューは
、レジスタファイル306を介してのベースレジスタオペランドと中間値を直接
提供する。
ACC418は、前のサイクル中に受け取ったオペランドに対応する仮想アド
レスを計算する。説明したように、データキャッシュは仮想的にインデックスさ
れ、物理的にタグ付けされる。仮想アドレスそれ自体は、2つの部分、つまり”
タグ”と”インデックス”に分けられる。TLB422が仮想アドレスを物理ア
ドレスあるいは実ページアドレスにトランスレーションする間に、仮想アドレス
のインデックスは、どのキャッシュ位置をアクセスするべきかを決定するために
キャッシュに送られる。TLBと仮想メモリのアーキテクチャは、共通で所有さ
れて、共同のペンデイング出願15ー4ー174.00/12178ー560で
詳細に説明される。実ページアドレスは、タグあるいは物理タグとして引用され
、これはキャッシュタグアレイ650に蓄積される。
TLBが仮想アドレスを物理アドレスにトランスレーションしている間、仮想
インデックスは、データキャッシュデータアレイとキャッシュタグアレイのデー
タ及びタグをそれぞれアクセスするために使用される。この方法では、物理アド
レス、タグ、及びデータは、同時に利用可能である。タグチェック660は、タ
グと物理アドレスとを比較し、そして、もし一致すれば、要求されたデータがデ
ータキャッシュ内に存在することを示すためのヒット信号を発生する。要求され
たデータは、下位アドレスビットに従ってロードアライナ428によって整合さ
れ、そして、整数レジスタファイル302か306の転送先に書き込まれる。
ストアパスは、レジスタファイル302と306からデータキャッシュ424
へレジスタ値を書き込むために提供される。ストアアライナ430は、キャッシ
ュに書き込まれるべきデータを整合する。バイパスパス601は、キャッシュさ
れない動作についてのデータがデータキャッシュをバイパスするようにする。
さらに、バイパスパス390は、ロード/ストアユニットの性能を改良するた
めに提供される。マイクロプロセッサーが、データが書き込まれている同一サイ
クル中にある位置を読み出しているとき、バイパスパス390は、データがレジ
スタファイルかメモリを迂回するようにする。例えば、実行ユニットの結果は、
そのような結果がレジスタファイルに書き込まれる間に従属命令が実行できるよ
うに、オペランドレジスタに直接にマルチプレクスされることを可能にする。こ
のバイパスは、オペランドレジスタ数が前の命令のデステイネーションレジスタ
数と等しい時はいつでも選択される。
物理タグと仮想インデックスは、アドレススタック420にも書き込まれ、ア
ドレススタック420は、アドレスキューの論理的な部分であるけれどもレイア
ウトの考慮のために物理的に離される。
マイクロプロセッサーは、アドレスキューの各命令に対応する物理メモリを蓄
積するためにアドレススタック420を使用する。従って、アドレススタックは
、アドレスキューと同じエントリ数で実行される。データは、アドレス計算シー
ケンス中にアドレススタック420にロードされる。
III.データキャッシュ
A.データキャッシュ概観
データキャッシュの詳細と動作は、付録IとIIのように含まれる。
データキャッシュ424は、メインメモリの”キャッシュできる”領域をアク
セスする命令をロードしたり蓄積するために使用される。データキャッシュ42
4は、2つの同一バンク、バンク”0”とバンク”1”でインターリーブされる
。
図3を参照すると、各バンクは、タグキャッシュアレイ650とキャッシュデ
ータアレイ610を含む。タグアレイは、データアレイのデータのブロックと関
連されたタグを蓄積する。データアレイは、他方で、最近に使用されたメモリデ
ータを保持する。
1つの実施例では、マイクロプロセッサーは、32Kバイトデータキャッシュ
を使用する。各データアレイはそれ自体、256の行あるいはワードラインに分
割された16Kバイトからなり、各々は、4ダブルワード(8ワード)からなる
2つのブロックを含む。各ダブルワードは、64ビットに8パリテイビットを加
えた全部で72ビットを有する。データアレイは、2つのダブルワードを並列に
アクセスすることができる。タグアレイ650に関する限りでは、これは、各々
35ビットの64の行を有し、2つの32ビットタグを並列にアクセスすること
ができる。
バンク0とバンク1は、独立に動作し、仮想インデックスの値に基づいてアク
セスされる。タグとデータのアレイは、アドレスキュー、アドレススタック、A
CU、及び外部インターフェースからの要求に割り当てられる。ある命令は、タ
グとデータのアレイが独立に動作することを可能にする。例えば、ストア命令は
、タグアレイしか要求せず、このためデータアレイはフリーのままである。こう
して、4つの機能ユニットは、それらが必要とするキャッシュアレイに割り当て
られるならば、おそらく同時に動作することができる。
各バンクは、2−ウエイセットアソシエイテイブである。実際には、キャッシ
ュデータアレイ610とキャッシュタグアレイ650は、それぞれ2つのサブア
レイかウエイに分割され、共用されたインデックスビットを有するメインメモリ
アドレスがマップされる追加の位置を提供する。これは、キャッシュのスラッシ
ングを減少させ、キャッシュサイズを増加させることなく、ヒット率を改善する
。
タグアレイ650のサブアレイは、ウエイ”0”とウエイ”1”として引用さ
れ、データアレイについては、サブーアレイ0とサブーアレイ1として引用され
る。こうして、タグアレイは、2つのタグ(タグ0とタグ1)を並列にアクセス
することができ、各データアレイは、2つのダブルワード(ar0データとar
1データ)を並列にアクセスすることができる。CPUと外部”質問(interrog
ate)”の動作に関して、もし、所望のデータを含んでいるならば、キャッシュ
のどのウエイかを決定するために、タグ0とタグ1は並列にチェックされる(読
み取りと比較がなされる)。ウエイは記憶され、ストアをグラジュエイトしたり
、あるいは外部のリフィルかライトバック動作のために後に使用される。
アレイは、仮想アドレスのインデックス部分(ビット13:0)を用いて“仮
想的にインデックスされる”。ビット5は、バンク#0かバンク#1を選択する
。ビット2:0は、ダブルワード内のバイトを選択し、ビット4:3は、ブロッ
ク内のダブルワードを選択する。ビット13:6、これはアレイ内のブロックを
アドレスし、256”ワードライン”の一つを選択するためにデコードされる。
各ワードラインは、8つのダブルワード、あるいは2つのブロックを含む。ビッ
トは、これらのブロック内のダブルワードがプロセッサーや外部インターフェー
スの動作のために区別してアクセスされるように、インターレースされる。プロ
セッサーは、towブロックを有するダブルワードを連結的にアクセスする。他
方、外部インターフェースは、同一ブロック内の2つのダブルワードをアクセス
する。
個別のアドレスマルチプレクサがデータとタグのアレイのために提供される。
マルチプレクサ621は、データアレイ610による使用のために、外部インタ
ーフェース、アドレスキュー、アドレススタック、及びACUの中からのアドレ
ス入力を選択する。タグアレイに関する限り、マルチプレクサ620は、外部イ
ンターフェース、アドレススタック、あるいはACUからアドレス入力を選択す
る。マルチプレクサ610と620のための選択信号(タグの選択とデータの選
択)は、アドレスキューによって発生され、そして、表IIに示されるように、ど
の機能ユニットが各アレイを制御しているかを決定するために、キャッシュ制御
論理によってデコードされる。
別のデータマルチプレクサがまた、タグとデータのアレイのために設けられる。
マルチプレクサ625は、タグアレイに書き込みを行うために、外部インターフ
ェースかJTLBのいずれかからアドレスを選択する。マルチプレクサ630と
631は、データアレイに書き込むために、外部インターフェースかレジスタフ
ァイルからのデータを選択する。
キャッシュ部分がアドレス選択値”00”によって示されたように使用されな
いとき、それはパワーダウンである。パワーダウンモードでは、アドレスデコー
ダは、それがワードラインを選択しないようにデイスエイブルされ、ダミーワー
ドラインは、センスアンプのいずれもがターンオンしないように、デイスエイブ
ルされる。デコーダは、第1レベルのゲートの余分の入力を用いてデイスエイブ
ルされる。
ある実施例では、データキャッシュは、リセット期間中にハードウエアによっ
て初期化されない。これらの実施例は、データキャッシュの使用を開始する前に
、すべてのタグを”無効”状態に初期化させるためのブートストラッププログラ
ムを要求する。もし、ブロックが”無効”であれば、そのデータアレイの内容は
使用されない。
B.データアレイ
1.データアレイの組織
図4を参照すると、データアレイ610は256行を含む。デコーダ450は
、ワードラインをハイに駆動することによってどの行がアクセスされるかを選択
する。各ワードラインは、576のセル(512データビットと64パリテイビ
ット)あるいはビットからなる行を駆動し、そしてゲートされ、32セル毎にバ
ッファされる。576ビットは、4ダブルワード(1ワードは4バイトに等しい
)を含む各ウェイをもつ1つのキャッシュセットに等しい。
ダブルワード内の461によって表わされる各ビットは、8つのセル461a
ー461hを含む。セルは、キャッシュの各ウエイの4ダブルワードの各々から
の1ビットに対応する。各セルの上の数は、キャッシュのウエイを表し、下の数
は、ウエイ内のダブルワード数を表す。
マルチプレクサ470は、信号S0によって制御され、センスアンプ475に
入力するために、4ビット(ブロック内の4ダブルワードの各々からの1つ)か
ら1ビットを選択する。センスアンプの出力は、サブーアレイ0からのデータを
表す。同様に、S1は、マルチプレクサ471とセンスアンプ476がサブアレ
イ1から読み出されるビットを制御する。
マイクロプロセッサーは、種々のアクセスパターンのためにプロセッサーと外
部インターフェースのアクセスに異なる信号S0とS1を使用する。外部インタ
ーフェース動作の選択信号は、仮想アドレスビット4とウエイビットを使用し、
CPUアクセスは、アドレスビット4:3を使用する。CPUと外部イン
ターフェースのためのアクセスパターンは、表IIIに示される。
サブアレイ0とサブアレイ1からのデータは、レジスタファイルにロードされ
るか、外部インターフェースを介してメインメモリに書き込まれる。レジスタロ
ードのため、データは、マルチプレクサ480と485による他のキャッシュバ
ンクからの対応するサブアレイ0とサブアレイ1のデータとマルチプレクスさ
れる。選択バンク信号(ビット5)は、適切なバンクからロードアライナ428
aと428bまでデータをそれぞれ通過させ、かつマルチプレクサ486に送る
。キャッシュヒット信号は、タグチェックロジックから発生され、もしあるなら
、どのデータがキャッシュから読み出されたかを確認(dictate)してお
く命令する。キャッシュが読み出され、かつそのタグが有効なエントリを示すと
きはいつでも、すべてのバイトは、パリテイチェッカー477によって適当なパ
リテイチェックをされる。もし、ロード命令中にバイトにエラーがあるならば、
プロセッサーは、”データキャッシュエラー”の例外を取る。
メモリへの書き込みに関する限り、マルチプレクサ490と491は、仮想ア
ドレスビット5によって示された所望のデータを選択する。それ以後、データは
、位相マルチプレクサ回路495に進められ、この回路は、クロックサイクルΦ
1の期間で第1のダブルワードを、同一クロックサイクルのΦ2期間で第2のダ
ブルワードを書き込む。パリテイチェッカー478は、適当なパリテイのために
ダブルワードのすべてのバイトをチェックし、もしエラーが発生したら、プロセ
ッサーは、”外部インターフェースデータキャッシュエラー”の例外を取る。
データは、レジスタファイルか、あるいは外部インターフェースのいずれかか
らキャッシュアレイに書き込まれる。レジスタファイルからのデータは、ストア
アライナ430によって整合され、マルチプレクサ488と489によって外部
インターフェースからのデータとマルチプレクスされる。マルチプレクサは、選
択信号に従い、かつ、セルの各列の下に位置されたドライバ469aー468h
を介してキャッシュに書き込まれるデータを選択する。これらのドライバは、書
き込まれているアドレスに従いイネーブルされる。レジスタストアのためにパリ
テイ発生器499aによって発生された、あるいは外部インターフェースストア
のためにパリテイ発生器499bにいよって発生された偶数パリテイビットは、
データキャッシュに蓄積された各バイトに付加される。各パリテイビットは、そ
のバイトが書き込まれるときはいつも、書き込まれる。
前述したように、データアレイは、2つの別のアクセスパターンに組織化され
る。ブロックを二次キャッシュにロードしたりコピーする間に、2つのデータア
レイは、同一ブロック内の一対の隣接するダブルワードをアクセスする。タグチ
ェックと同時に起こる読み出しに関し、各アドレスされたワードは、2つのブロ
ックから読み出され、一致するタグを有するブロックが選択される。他のブロッ
クからのデータは無視される。書き込みに関し、これはタグチェックが完了した
後で生じるが、アドレスされたブロックだけが書き込まれる。
図5を参照すると、キャッシュアレイの各ブロックは、いずれかのアクセスパ
ターンを許可するために、2キャッシュウエイ間でワード455ー458が交替
するように構成される。これは、アレイがキャッシュウエイに対応していないか
らである。
ダブルワード0は、いずれかのアレイにあることができる。ブロック459a
にとって、偶数のダブルワード(Adr[3]=0)がアレイ0内にあり、奇数
ダブルワードがアレイ1内にある。ブロック459bでは反転される。これは、
もし、各ウエイからのデータラインが2−ダブルワードの幅でないならば、従来
の2−ウエイセットアソシエイテブで不可能であったであろう、同一ウエイから
の2つのダブルワードのアクセスを可能にする。これは、2倍のセンスアンプ数
を必要とする。また、マルチプレクサを使用することによって、外部インターフ
ェースは、クウオードワードアクセス内のダブルワードをスワップすることがで
きる。
センスアンプは、ラムセルと比べて、比較的大きい。キャッシュアレイの密度
それ自体は、センスアンプの幅によって制限される。マルチプレクサを使用する
ことによって、センスアンプ数は、4つの要因の一つによって減少され、これは
、ラムセルがより高密度にパックされることを可能にする。結果として生じる利
益は2倍である。第1に、セルを互いにより近接して配置させることが可能とな
ることによって、アレイの伝播の遅延は減少される。第2に、チップ空間のかな
りの節約は、コスト低減のためのダイサイズの減少に使用され、かつ/あるいは
、CPU性能を効率よく増加させるためにより積極的な機能ユニットの設計に使
用される。
図6を参照すると、各ラインの576セルが、ロード及びストアのアライナに
おける配線を最小限にするパターンに配置される。ハイレベルで、ビットは、バ
イト内のそれらの位置によってインターレースされる。すなわち、各ダブルワー
ドは、8つの8−ビットバイトを含み、これらのビットは各バイト内で0から7
まで番号付けされ、これは、モジュロ8のビット数に等しい。すべての”ビット
0”は、ともにグループ化され(ビット0、8、16、24、32、40、48
、56)、それから、”ビット1...”等がグループ化される。
各サブアレイにとって、各ビットグループ488内に32セルがある。セルの
レイアウト密度のために、行毎に単一のローカルワードラインのためだけの場所
がある。これらの32のセルは、ビットグループ内の8ビットの各々についての
4つのセルから構成される。これらの4つのセルは隣接し、同一のセンスアンプ
に配線される。これらのセルの1つは、4ー1マルチプレクサによって選択され
、これは、すでに説明した通りである。
キャッシュアレイの各バンクは、下端部に沿って148のセンスアンプを含む
。これらのうち、144のセンスアンプは、2つのアレイの各々について64ビ
ットのデータと8ビットのパリテイを読み出す。これらのセンスアンプの各々は
、4つのセルの列の下方にあり、4ー1入力マルチプレクサを含む。
2.データアレイ制御論理
図7を参照すると、ロジック700が、データキャッシュを制御する。データ
キャッシュの各バンクは、プロセッサーか外部インターフェースのいずれかによ
って、読み出されあるいは書き込まれる。2つの動作は、個々のバンクで同時に
起こることが可能である。プロセッサーは、ダブルワード(64ビット)内のバ
イトを書き込む。バイトマスクデコーダ701は、各バイトの書き込みを制御す
るために、アドレススタックからの8ビットバイトマスクをデコードする。書き
込みは、もし、ストア命令がグラジュエイトし、かつそのバンクが選択される場
合に、各バンクでイネーブルされる。外部インターフェースは、全体のクオード
ワード(128ビット)を書き込む。書き込みは、”リフィル”か”リフィル済
み”のコマンドを用いてイネーブルされる。選択バンク信号は、どのバンクのキ
ャッシュアレイが書き込まれるかを決定する。
プロセッサーは、もし、その選択バンクが選択されたならば、キャッシュバン
クを読み出す。外部インターフェースは、もし、コマンドが”データ読み出し”
であるならば、キャッシュバンクを読み出す。選択バンク信号は、どのバンクデ
ータが書き込まれたかを確認(dictate)しておく。
図8は、8ビットスライスを例示し、これは、0ないしモジュロ8と等しい全
ビットを含む。データキャッシュは、2つの同一のバンク720aと720bを
含み、各々は、欠陥カラムを置き換えるために使用され得る、メモリセルの冗長
カラム725aと725bを含む。これらのバンクは物理的に隣接され、これら
の間のチャンネル727は、500ミクロン幅の配線である。これらのレイアウ
トは、鏡像配置を成し、その結果、すべての読み書きアンプ726aと726b
は、チャンネルに隣接する。
CPUと外部インターフェースは、それぞれデータキャッシュを読み書きする
。CPUは、ダブルワード処理を行い、これは、64ビットに8パリテイビット
を加えたもの(全体で72ビット)を含む。外部インターフェースは、クオード
ワード処理を行い、これは、128ビットに16パリテイビットを加えたもの(
全体で144ビット)を含む。配線を最小限にするために、このデータは、ダブ
ルワードバス上に位相マルチプレクスされる。CPUと外部インターフェースは
それぞれ、読み書きのためにそれぞれ72ビット幅の単一方向バス730と73
1を使用する。これらのバスは、チャンネルを共用することが出きる。各CPU
バスは、データキャッシュの下方で完全な幅であるが、上方でゼロの幅に先細に
なり、各バスは、上方で完全な幅であるが、下方でゼロ幅に先細になる。
これらのバスと関連された制御信号とは、3層メタルで配線される。チャンネ
ルは配線制限される。
外部インターフェースは、リフィル動作中のみデータキャッシュを書き込む。
2つのダブルワードは、書き込みサイクルの前のサイクル中に転送される。最初
のダブルワードは、位相ー1と位相ー2のラッチ735と736を用いて2度ラ
ッチされる(これは、中央のサイクルでクロックされるエッジトリガレジスタを
作る)。2番目のダブルワードは、サイクルの終わりで位相ー2のラッチ737
でラッチされる。このデータは、次の位相1の間にいずれかのキャッシュバンク
に書き込まれる。ウエイ0に関して、最初のダブルワードは乗算器745か
746を介してサブアレイ0に書き込まれ、2番目のダブルワードは、マルチプ
レクサ747か748を用いてサブアレイ1に書き込まれる。ウエイ1に関して
、ダブルワードは逆にされる。
外部インターフェースは、ライトバック動作期間中にのみデータキャッシュを
読み出す。これは、常にサイクルにつき1つのクオードワードを読む。このデー
タは、各センスアンプ内の位相ー1のラッチでラッチされる。このデータは、位
相2と次の位相1の間に、2つのダブルワードに送られる。スピードに関して、
送付するマルチプレクサ740は、クロック741aと741bを用いて直接に
選択される。この入力は、2つの72ビットの4ー1マルチプレクサによって駆
動される。2番目のダブルワードは、位相ー2のラッチでラッチされ、その結果
、この出力は、次のサイクルの位相1の間に有効を維持する。各入力は、いずれ
かのバンクのいずれかのアレイから選択され得る。ウエイ0に関して、第1のダ
ブルワードはアレイ0から選択され、第2のダブルワードはアレイ1から選択さ
れる。ウエイ1に関して、ダブルワードは逆にされる。
キャッシュされないロード命令に関して、外部インターフェースデータは、デー
タがキャッシュに書き込まれることがないことを除いて、フリーロード動作のよ
うに、CPUのロードアライナ428aと428bへのキャッシュをバイパスす
る。キャッシュされないストア命令に関して、CPUデータは、キャッシュをバ
イパスし、次の位相2の間に外部インターフェースへ送られる。
C.タグアレイ
1.タグアレイの組織
キャッシュタグアレイは、データアレイの各8−ワードブロックにつき36ビ
ットアドレスタグを蓄積し、かつ、データアレイの約8分の1のビットを持つ。
各行につき64ワードライン(データアレイの1/4)と288セル(半分以下
)がある。このため、タグアクセス時間は、データアレイよりも高速である。
キャッシュデータアレイと同様に、キャッシュタグアレイは、2つの同一のバ
ンクに分割され、各々は、プロセッサーや外部の要求に対して独立に動作するこ
とができる。バンクは、ブロックアドレス(ビット#5)の低位ビットによって
選択される。キャッシュタグアレイは、仮想アドレスビット[13:6]によっ
てアドレスされ、これは、2つのブロックのセットを選択する。各バンクには2
56セットがある。各セットは、2つのブロックを含む。このため、2つのバン
クは、1024ブロック(キャッシュサイズが32Kバイトー32バイト/ブロ
ック)を含む。各セットの2つのタグは、並列に読み出され、キャッシュがアド
レスされたデータを含むかどうか(”ヒット”)を決定するために、所望の物理
アドレス(ビット37:12)と同時に比較される。
図9は、タグバンクの1つと関連した制御論理を例示する。タグアレイは64
の行を含む。デコーダ752は、仮想アドレスビット18:8を用いてワードラ
インをハイに駆動することによってどの行がアクセスされるかを選択する。各ワ
ードライン753は、288(8つの36ビットタグ)の行を駆動する。36ビ
ットは、4タグを含む各ウエイを持つ1つのタグセットに等しい。
タグの各ビット751に関して、8セル755a−755hが設けられる。セ
ルは、キャッシュの各ウエイの4つのタグの各々からの1ビットに対応する。3
6ビットタグについて、これは36回繰り返される。
各セルの上の数はウエイを表し、下の数はウエイの行内のタグ数を表す。デー
タアレイと異なって、タグビットは、各サブアレイが同一のウエイに属するタグ
のみを含むように、インターリーブされる。
マルチプレクサ758は、信号の仮想アドレスビット7:6によって決定され
るように、センスアンプ760に入力するために、4ビット(4タグの各々から
1つ)から1ビットを選択する。センスアンプの出力は、ウエイ0からのタグデ
ータ(タグ0)を表す。同様に、マルチプレクサ759とセンスアンプ761は
、ウエイ1から選択されたタグデータ(タグ1)を出力する。この方法では、各
セットからの2つのタグが並列に読み出される(バンク0からの2つとバンク1
からの2つ)。再度、マルチプレクサの使用は、必要とされるセンスアンプ数を
減少させる。
各バンクは、4つのタグチェック比較器を有し、プロセッサ(756と
766)についての2つと、外部インターフェース(763と768)について
の2つである。各々は、キャッシュが、2つの独立2−ウエイセットアソシエイ
テブバンクでインターリーブされるため、2つの比較器を必要とする。各バンク
は、プロセッサーか外部インターフェースのいずれかのために2つのタグを読み
出すことができる。これらのタグ信号は、比較器の入力でマルチプレクサ770
ー773を使用してマルチプレクスされる。
マイクロプロセッサーは、JTLBからトランスレートされた物理アドレスか
、タグと比較するアドレススタックからのアドレスのいずれかを選択するために
、マルチプレクサ776を使用する。JTLBは、重要なタイミング通路である
。比較の結果がキャッシュ”ヒット”信号である(もし、タグが存在すればヒッ
トであり、タグが存在しなければミスである)。また、タグパリテイビットは、
パリテイチェッカー767と768によってチェックされる。パリテイエラーは
例外を引き起こす。
外部インターフェースあるいはロード/ストアユニットのいずれかからのタグ
は、タグアレイに蓄積されることができる。マルチプレクサ775は、所望のタ
グとバッファ756aー756hを選択し、これらは、仮想インデックスに従い
選択的にイネーブルされ、データをタグの適切な位置に書き込む。パリテイ発生
器は、タグがアレイに書き込まれるときはいつでもパリテイを発生する。
図10を参照すると、各タグは次のフィールドを含む;アドレス785、パリ
テイ786、ウエイ787、状態788、パリテイ789、修飾子890、及び
LRU(最も少なく最近使用された)791である。タグフィールドは、表IVに
述べられる。
アドレスとタグビットは、個別の書き込みイネーブルを有し、このため、状態
ビットは、アドレスビットを変更することなく修飾可能である。このため、これ
らのフィールドは、パリテイビット786と789を分離させる必要がある。
ブロックが二次キャッシュからリフィルされるとき、二次キャッシュ内で見つ
かったウエイは、ブロックのデータキャッシュタグフィールド787に書き込ま
れる。この情報は、ブロックが二次キャッシュにライトバックされる場合に使用
される。
各データキャッシュブロックの状態は、3ビットコードによって決定される。
このコードは、2ビット状態コード(TagSt[1:0])を有するリフィル
ビット(TagStMod[2])を連鎖することによって形成される。これら
は、7つの状態である。
無効;Invalid(000,”N”):このブロックは空である。アドレ
スとデータフィールドは無視される。タグ比較器は、常に無効ブロックについて
”ミス”を発生する。
共有;Shared(001,”S”):このブロックは”共有される”。す
なわち、このブロックの有効なコピーはまた他のキャッシュにも存在することが
できる。プロセッサーは、このブロックを読むことができるが、これを修飾する
ことはできない。
クリーンイクスクルーシブ;CleanExclusive(010,”E”
):このキャッシュは、このキャッシュブロックの有効なコピーだけを含む。プ
ロセッサーは、このブロックを読み出すことができるが、一次及び二次キャッシ
ュの双方に”ダーテイ”をマークするまでは、それを修飾することができない。
ダーテイイクスクルーシブ;DirtyExclusive(011,”D”)
:このキャッシュは、このキャッシュブロックの有効なコピーだけを含む。これ
を読み書きすることができる。
リフィルクリーン;RefillClean(100,”RC”):このキャ
ッシュは、キャッシュのブロックをロードするためにリフィルをすでに開始し、
戻されるべきデータを待つ。このリフィルは、ロード命令によって開始された。
ブロックの状態は、共有(shared)かあるいは独占的
(exclusive)であることができる。
アップグレード共有;UpgradeShared(101,”US”):こ
のキャッシュは、共有のブロックを含むが、これはダーテイーイクスクルーシブ
にアップグレードされることを要求された。これは、無効化をするために外部イ
ンターフェースを待っている。
アップグレードクリーン;UpgradeClean(110,”UC”):
このキャッシュは、クリーンイクスクルーシブブロックを含むが、ダーテイーイ
クスクルーシブにアップグレードされることを要求された。これは、二次キャッ
シュブロックを”ダーテイ”のようにマークするために、外部インターフェース
を待っている。
リフィルダーテイ;RefillDirty(”RD”):このキャッシュは
、キャッシュのブロックをロードするためにリフィルをすでに開始し、戻される
べきデータを待っている。このリフィルは、ストア命令によって開始され、そし
て、ブロックの状態は”ダーテイイクスクルーシブ”であるだろう。
LRUフィールド791は、キャッシュの各セット内のどのブロックが最も少
なく最近使用された(LRU)かを示す。2つの古いブロックの1つを置き換え
る必要があるとき、LRUブロックは、統計学的に次に使用されそうもないため
選択される。このビットは、プロセッサーがキャッシュリフィルを開始するとき
のみ使用され、選択されたキャッシュセットの双方のブロックは有効であり、ロ
ックされない。(すべてのプログラムに対しての最高のアルゴリズムというわけ
ではないけれども、LRUキャッシュ置換アルゴリズムは、通常ランダムな置換
アルゴリズムより数パーセントのミス数を減少させる。)
タグアレイは、1セットのキャッシュ(すなわち、2つのブロック)につき1
LRUビットを含む。プロセッサーが、キャッシュのブロックに関してヒットを
得るときはいつでも、このビットは、このセットの他のブロックを選択するため
に更新される。すなわち、このブロックは、他のブロックよりもより最近使用さ
れた。ミスが生じるとき、及び新しいブロックがキャッシュ内にリフィルされる
とき、このビットは、他のブロックを選択するために更新される。
一般に、Wビットはデータアレイ内に配置され、タグアレイ内ではない。上述
したように、Wビットは、キャッシュリフィル、外部インターロゲイト(質問)
、あるいはキャッシュ無効化のように、データがデータキャッシュから除去され
るときはいつも読み出される。
これらの動作は、Wビットをチェックするとともに、タグアレイの割り当てを
要求する。従って、タグとデータのアレイ双方が割り当てられる必要がある。
しかしながら、Wビットをタグアレイ内に配置させることによって、データア
レイからデータを除去する動作は、タグアレイのみをアクセスする必要がある。
これは、データアレイが別の実行ユニットに同時に割り当てられることを可能に
し、こうして、マイクロプロセッサーの性能を改善する。
LRUは、統計的にキャッシュにヒット率を増加させることによって、マイク
ロプロセッサーの性能を改善する。従って、これは性能上のみの特徴であり、こ
れはアーキテクチャ的に定義されない。ヒットあるいはミスの結果を生じ得るタ
グチェックサイクルは、順番以外で発生することがあり、しかも、これらは、推
論的に発生し得る。LRUビットそれ自体は、プログラムのデータ参照に正確に
一致することを保証されるものではない。
LRUビットは、特別の二重ポートRAMセルを用いて構成される。第2のポ
ートは、キャッシュヒットがあった場合に、プロセッサーのタグチェックサイク
ルの位相2中に、LRUビットを更新するために使用される。余分のポートは、
標準の6トランジスタキャッシュセルよりも2つの余分のトランジスタを必要と
する。
LRUビットは、タグの残りとともに読み出すことができる。LRUビットは
、タグが位相2の間に書き込まれたときに、2番目のポートを使用してのみ書き
込まれる。
3ビット修飾子フィールドは、ブロックの2ビット状態の内容を変更する。こ
れらのビットは、LRUビットと同様に特別の二重ポートメモリセルで実行され
るため、状態フィールドから分離される。このフィールドは、キャッシュヒット
があったか否かに基づいてタグチェックサイクルの位相2の間に書き込まれるこ
とができる。
各行につき12の修飾子セルがあり、これらは、各行の4つのブロックの各々
について3ビット修飾子を蓄積する。3つのセンスアンプがある。これらのビッ
トは、外部インターフェースが一次データキャッシュを詮索するときに読み出さ
れる。
状態修飾子のビット2は、”リフィル”ビットである。これは、プロセッサー
が外部インターフェース対してアップグレードか、あるいはリフィルの要求を発
したことを示す。プロセッサーだけが、これをセットする。これは、プロセッサ
ーがリフィルのコマンドを発した後の次のサイクル間に書き込まれる(タグの残
りとともに)。あるいは、位相2の間に状態修飾子フィールドのみを変更するこ
とによってセットされ得る。
状態修飾子のビット1は、各ブロックについて”書き込まれた”(”W”)ビ
ットである。このビットは、データが一次データキャッシュに書き込まれ、かつ
、これが二次キャッシュと一致しないことを示す。二次キャッシュにライトバッ
クする必要があるかどうかを決定するためにキャッシュからブロックが除去され
るときはいつも、外部インターフェースは、このビットを読み出す。ブロックが
キャッシュにリフィルされるとき、このビットは、ロード命令のために最初’0
’であるか、あるいはストア命令のために’1’である。ストア命令が、このブ
ロックを使用するときはいつでも、後からセットされることが可能である。
ビット0は、リフィル、あるいは書き込まれたビットのいずれもがセットされ
ないときに、セットされる。このビットは、状態修飾子フィールドに関する奇数
パリテイチェックとして働く。各有効状態は、1つの“1”ビットセットを有す
る。
3ビットは、3つの状態を符号化する。各コードは、1ビットセットを持って
いるため、奇数パリテイを効率よく実行する。パリテイエラーは、もし他のパタ
ーンが読まれるなら、信号を発する。
2.タグアレイ制御論理
アドレスキューは、データキャッシュが要求するデータを含んでいるかどうか
を決定するために”タグチェック”サイクルを実行する。外部インターフェース
は、二次キャッシュブロックを無効化するときに、タグチェックサイクルを実行
する。
図11aは、タグチェック回路の1実施例を示す。2つの28ービットアドレ
スタグ(物理アドレスビット39:12)への所望のアドレスは、それぞれイク
スクルーシブーオアゲート801において対応するタグビットと比較される。簡
潔のために、一つのゲートだけが例示されるが、当業者にとってビット毎に一つ
のゲートがあることは明らかであろう。もし、ビット位置が異なれば、ゲート8
01の出力は、”キャッシュミス”を示す論理”0”である。イクスクルーシブ
ーオアゲートの出力は、Φ2の立ち上がりを用いて、28ー入力ダイナミック”
オア”ゲート802で結合される。ダイナミック”オア”はスタチックゲートよ
りも非常に高速であるが、クロックのタイミングとスキュー(skew)に依存
する。ダイナミック”マッチ”ノード803は、Φ1間にハイにプリチャージさ
れる。これは、もしアドレスビットが一致しない場合、Φ2間にデイスチャージ
される。こうして信号は、”ヒット”についてハイを維持し、”ミス”はΦ2の
開始直後にフォーリング(落下)エッジとなる。ダイナミックオアゲートの出力
は、インバーター803によって反転され、これの出力は、”ミス”がある時に
Φ2の開始後約2.5ゲートー遅延で上昇するパルスである。さもなくば、その
出力はゼロを維持する。この明瞭な出力信号は、次の論理を単一のエッジ遷移に
関して最適化させる。これはまた、長い距離を分散される64ビットバス上のノ
イズを最小限にする。
比較器805への余分の入力は、もし、ブロックの状態が“無効”であるなら
ば、”ミス”を強要する。(ブロックは、もしタグの状態DC0State[1
:01]が“00”であり、かつブロックが”リフィル“(DC0Mod[2]
=0)でないならば、無効である)。高速ダイナミック比較器805は、並列の
トランジスタを有する論理オアゲートを実行するため、通常”キャッシュミス”
のためのパルスを発生する。ダイナミックノードは、ハイにプリチャージされる
。このノードは、ローにプルされ、入力ビットがミスマッチである場合に、出力
パルスが発生される。このパルスの立ち上がりエッジは、ダイナミックあるいは
バイアスされたロジックをスイッチングするために使用することができ
る。しかしながら、”ヒット”に関してはエッジがない。
ウエイチェック論理811は、タグチェックサイクル中にキャッシュのどのウ
エイが所望のデータを含んでいるかを決定する。もし、いずれかのデータアレイ
が、ロード命令のために同時に読み出されている場合には、タグチェックは、そ
の2つのウエイ間で選択する。さもなくば、”ウエイ”は、命令が再度試みられ
るまでアドレスキューに蓄積される。
キャッシュ”ミス”パルス(ミスA;MissA、ミスB;MissB)は、
データキャッシュの2つのウエイに対応する。しかしながら、上述したように、
これらのウエイは、データアレイに対応しない。
各キャッシュブロック内で、ダブルワードはアレイ間で交替する。偶数のダブ
ルワード(Adr[3]=0)では、ウエイ0がアレイ0であり、ウエイ1がア
レイ1である。奇数のダブルワード(Adr[3]=1)では、ウエイ0がアレ
イ1である、ウエイ1がアレイ0である。従って、2つのダイナミックの3−1
マルチプレクサ(ミス0;Miss0、ミス1;Miss1)を用いて、Adr
[3]=1であるとき、ミス信号は相互に交換される。都合上、1つのマルチプ
レクサ815のみが示されている。マルチプレクサ815は、ミスAとミスB間
で選択する。マルチプレクサの3番目の入力は、ウエイが既に知られているとき
に使用される。この回路は、Φ1間にプリチャージされる。すべての入力は、Φ
2でゲートされる。
キャッシュ”ミス”パルスは、ダイナミックデータマルチプレクサ820を選
択するために使用される。この回路は、実際に“アンド−オア”ゲートである。
もし、ウエイ0にミスがあるならば、ウエイ1についてのデータが選択される。
もし、ウエイ1にミスがあるならば、ウエイ0についてのデータが選択される。
このため、もし双方のウエイがミスであるならば、双方のウエイについてのデー
タビットは論理的にオアされるが、この結果は使用されない(比較器は、”ミス
”についてのエッジのみを発生し、”ヒット“については発生しない。これは、
厄介なものではあるが、ダイナミックマルチプレクサに何ら問題を生じさせるも
のではない。しかしながら、もしパスゲートマルチプレクサが使用されるならば
、双方の入力をターンオンすることは、大きなノイズを生成する。)これ
は、各”ミス”信号が速度について最適化され得ることを意味し、乱調状態は生
じない。
ミスマルチプレクサは、長い配線と大きいバッファを駆動する。素早くローに
スイッチするために、”ミス”信号にはnチャンネルトランジスタが使用される
。“既知”(known)の入力は、高速にスイッチするため、より小さなトラ
ンジスタの使用を可能にする。最終的な”ミス”バッファは、64のトランジス
タと、データキャッシュの背に沿う約6000ミクロンの配線を駆動する。
図11bを参照すると、論理回路850は、”ロードダン;LoadDone
信号を命令キューとビジービットテーブルに提供する。この信号は、タグチェッ
ク回路の出力から得られ、プロセッサーが連続的に”ロード”命令を完了すると
きのサイクル中に発生されるようにすることができる。タグチェックサイクル中
、キャッシュがアドレスされたデータを含み、かつ従属はその使用を全く妨げな
いことを示す。リフィルのサイクル中、二次キャッシュはアドレスデータを含み
、かつECCエラーが全く検出されなかったことを示す。“ジャストロード;J
ustLoad”サイクル中、これはデータアレイのみを読み出すものであり、
LoadDoneは、常に主張される。LoadDoneは、重要なパス信号で
ある。速度に関して、ダイナミックロジックを用いて部分的に実行されるが、こ
れは、一次キャッシュの状態ビットとヒット信号から駆動される。論理回路85
0は、ヒット信号のバッファリングに伴う遅延を防ぐために、タグヒット比較器
に物理的に隣接する。
示されるように、LoadDone信号は、2つの回路ステージ851と85
2で発生される。回路ステージ851は、IgnoreHitB、Ignore
HitA、MissA、MissBに応答してLoadMissを発生する。
“LoadMiss”信号は、いずれのキャッシュウエイも、適格な”ヒット
“信号を発生しなかったことを示す。しかしながら、タグ比較器の出力(Hit
AとHitB)は、ゲートされる必要がある。アドレスキューは、ブロック間の
従属を検出した場合、キャッシュのウエイのいずれかあるいは双方に関してキャ
ッシュヒットを禁止する。キャッシュヒットはまた、もしブロックが未
だリフィルされているならば、無視されなければならない。この場合、アドレス
マッチとタグ比較器は、”ヒット”を発生するが、データは未だ利用することが
できない。リフィルに関して、タグ修飾子ビット2がセットされ、タグ状態は、
00(リフィルクリーン;RefillClean)か、11(リフィルダーテ
イ;RefillDirty)のいずれかである(ブロックがストア命令のため
にアップグレードされるとき、タグ修飾子ビット2がまたセットされる。タグ状
態は、01か10のいずれかである。キャッシュデータは、キャッシュ内で有効
であり、ロードのために使用することができる)。
回路ステージ852は、LoadMissからのLoadDone信号と、アド
レスキュー、LoadDoneDef,及びLoadDoneHitによって送
られた2つの制御信号とを駆動する。LoadDoneDefは、キャッシュヒ
ット信号にかかわらず、“ロード済み;Load is Done”であること
を示し、LoadDoneHitは、キャッシュヒットがある場合に、”ロード
済み”であることを示す。表VはLoadDone信号についての論理的な等式
を示す。
回路ステージ851と852は、4×3ダイナミック“アンド−オア”ゲート
で実行されることができる。回路のクリテイカルなパス入力は、タグ比較器から
の”ミス”パルスである。これらは、”ヒット“信号の補数であり、従って、こ
の等価が補数される(5番目の条件であるIgnoreHitA&
IgnoreHitBは省かれた。キャッシュは、双方のウエイ上にヒットを同
時に適切に発生することができないため、これは冗長である)。
出力信号は、位相2中のパルスである。これは、長い配線を駆動するためにバッ
ファされる。この立ち上がりエッジは、出力バッファのトランジスタのレシオを
取ることによって速度に関して最適化される。
図12は回路870を示し、これは、各”キャッシュヒット”についてのLRU
とタグ修飾子回路にパルスを提供する。回路は、”ミス”信号を反転し、それを
タイミングパルスでゲートする。グリッチを避けるために、タイミングパルスは
、”ミス”信号がスイッチした後に開始する。この信号速度は、どのくらいの多
くのビットが異なるのかということに依存し、これは、各々異なったビットが並
列トランジスタの一つをターンオンさせるからである。スイッチングは、1ビッ
トだけが異なるとき、最も遅い。タイミングパルスはダミー比較回路を用いて発
生され、この回路は、単一ビットの差の時間をシミュレートする。この出力は、
イネーブルとTagMod[2]でゲートされ、これは、もしブロックがリフィ
ルされている場合、”ヒット”を禁止する。このようなゲートを介しての遅延は
、スイッチングのグリッチを除去するタイミングマージンを提供する。
図13は、タグローデコーダ900を示し、これは、どのワードラインが主張
(アサート)されるかを選択する6ビットー64ビットのローデコーダである。
デコーダの入力は、アドレス計算ユニット、アドレススタック、あるいは外部イ
ンターフェースによって提供されるアドレスから選択される。アドレスは位相2
の終わりでラッチされ、その結果、次の位相1期間でwoldラインが駆動され
ている間は安定である。
デコードは、プリデコードとドライバーに分けられる。プリデコーダ901に
おいて、上位3ビット(13:11)と下位3ビット(10:8)は、3−8デ
コーダ902と903によってそれぞれ個別にデコードされる。各プリデコーダ
は、1つのハイ出力を有する。下位デコーダ903は、タグアレイをデスエイブ
ルするために、すべての出力をローに強制することができ、これによって、タブ
アレイの最大電力消費を削減することができる。これらのデコーダは、中央でア
レイに隣接する。出力は、ウエイ間の信号をローデコーダまで駆動する。各出力
は、タグアレイ間に分散されることができる8つの負荷を駆動する。
各アレイには、64のワードラインドライバー910がある。1つのドライバ
ーは、プリデコーダ901からの1つの入力を論理的にアンドすることによって
選択される。”アンド“ゲートの出力は、各サイクルの終わりまで安定にするべ
きである。これは、次のサイクルの最初の半分の間に、パルスを発生するために
Φ1でゲートされる。
プリデコーダは、次のサイクル中で使用するために、その出力をラッチする特
別の回路を有する。出力は位相1でラッチされ、他方、ワードラインは駆動され
ている。このラッチされた出力は、位相2で新しい入力の代わりに選択可能であ
る。この選択は、選択信号の発生が遅すぎるため、プリデコーダの出力で行われ
る(もし、ラッチされたデコードが使用されるなら、ラッチは、出力に結合され
た入力とともに、次の位相1で透過される。これは、信号が等しいため、安定し
ている)。
選択信号は、キャッシュヒット信号に基づいている。プロセッサーによるタグ
チェックのため、タグは、キャッシュミスに伴う新しいアドレスとともに書込ま
れる。外部インターフェースによるインターロガイト(質問)のため、タグは、
キャッシュヒットを伴う新しい状態とともに書込まれる。さもなくば、デコーダ
は、新しいロケーションを選択する。
タグ状態は、プロセッサーと外部インターフェースの双方によって変更される
。プロセッサーは、キャッシュブロックのリフィルを開始した後のサイクル中に
新しいタグアドレスと状態を書込む。データはまだロードされていないので、状
態は始めのうちは“リフィリング(Refilling)”にある。リフィルが
完了されたとき、外部インターフェースは、この状態をアップグレードする。二
次キャッシュブロックが置換されたり、あるいは外部の干渉に応答するときも、
データキャッシュの内容をチェックしなければならない。
タグ書込みは、2つのユニットが同一ブロックを変更する際の干渉を防止する
ため、プロセッサーと外部インターフェース間で調整されなければならない。こ
れは、大部分の状態を“原子的(Atomically)に”変更させることに
よって簡単にされる。すなわち、いずれかのユニットがタグの状態を変更するこ
とを決定したときはいつも、次のサイクル上でそのタグを変更しなければならな
い、ということである。これは、アップグレードされる前に、他のいかなる動作
もタグをアクセスすることを妨げる。プロセッサーは、それが、“リフィル”状
態である間、タグを変更しない。従って、外部インターフェースは、各リフィル
動作の終わりで、ブロックの新しい状態を簡単に書き込むことができる。ここで
は、アトミック動作を必要としない。データキャッシュタグについての状態変更
は、表VIにリストされる。
表VIの最初の部分はプロセッサーの動作を示す。古い状態と修飾子ビット(及
びキャッシュヒット、外部インターフェース”ビジー”信号、及びプロセッサー
リフィルイネーブル)は、新しい状態と修飾子ビットを決定するためにデコード
される。下の部分は、外部インターフェース動作を示す。古い状態と修飾ビット
はデコードされないが、キャッシュヒット信号が“マーク”(Mark)動作の
ために使用される。新しい状態と修飾子ビットは、外部インターフェースによっ
て提供される。
アトミックタグ動作は、2つのサイクルを要求する。最初のサイクルは、タグ
を読み出し、かつタグチェックを行う。2番目のサイクルは、条件付で新しい値
をタグに書込む。通常、最初のサイクルのみが要求される。例えば、データキャ
ッシュは、典型的に96%のヒット率を有し、このため、プロセッサーの2番目
のサイクルは、その時間の4%しか必要とされない。キャッシュバンド幅の浪費
を避けるために、第1のサイクルのみが割り当てられる。他のプロセッサーの動
作は、第2のサイクル間に予定されることが可能である。もし、第2のサイクル
が必要であれば、他の動作と衝突するかもしれない。そのような動作は中断され
、いくつかのサイクル後に再び試みられる。外部インターフェースは、動作を再
度試みることができない。外部インターフェースは、自分自身のチェックサイク
ル後に他の動作を予定しない。プロセッサーは、もし外部インターフェースが次
のサイクルの使用を要求した場合には、リフィル動作を遅らせる。
各キャッシュバンクは、そのタグのための個別の書込みイネーブルを持つ。プ
ロセッサーは、状態とアドレスセクションの双方を書込む。外部インターフェー
スは、状態のみを書込む。表VIIは、バンク0についての書込みイネーブル信号
を定義する。バンク1は、ビット5が“1”であることを除き、同様である。も
し、リフィルが行われるか、あるいはタグチェックが、書込みを要求するならば
、タグアレイへの書込みは、前サイクルでイネーブルされる。
もし、キャッシュミスとリフィルがイネーブルされる場合には、プロセッサー
は、タグチェック中にデータキャッシュリフィルを開始させることができる。リ
フィルは、すべての以下の条件が適合される場合に、イネーブルされる。
これらの信号は、信号RefEnに結合される。
1.仮想アドレスは、“キャッシュできる”属性を選択する。(“ノンーコヒー
レント”、“イクスクルーシブ”、あるいは“シェアード(共有される)”)
2.命令は、“Store Conditional”ではない。
(SCは、常に以下の“Load Linked”命令を伴い使用される。L
Lは、もし必要ならば、キャッシュをリフィルする。SCがグラジュエイトする
ときに、もし、アドレスされたブロックがもはやキャッシュ内にないならば、S
Cは“失敗”であり、書込みは中止される。)
3.外部インターフェースミスーハンドリングー表(Miss−Hndling
−Table)は、ビジーではない。
(CCOBusy ビット1)
4.もしライトバックが要求される場合、二次キャッシュの書込みバッファは
ビジーではない(CCOBusy ビット0)。これらの信号は、表 に示され
るように、各キャッシュウエイについて別個のAvForRef信号に結合され
る。
5.古いキャッシュ状態修飾子は“リフィル”ではない(キャッシュブロックが
”リフィル”状態にあるとき、新しい動作が、そのブロックについての開始をす
る前に完了するよう外部インターフェースを待たなければならない。)。
6.アドレスキューは、リフィルをイネーブルし、キャッシュのウエイが利用で
きることを示す(AQQWavO:Av)
ウエイは、すでにキューで“ロックされた”(locked)、あるいは“使
用された”(Used)ようなフラッグが付されている場合には、リフィルのた
めに利用できない。これは、別のエントリが、実存するブロックを必要としてい
ることを示し、その結果、置換されることはない。もし、現在の命令が、キャッ
シュデ従属をもつなら(DepRowC)、1つのウエイは最も古い命令のため
にリザーブされる必要があるため、いずれかのフラッグは2つのウエイを利用不
可能にする。
もし、外部インターフェースが次のサイクルで同一キャッシュバンクのタグア
レイを使用するならば、ウエイはまたリフィルのために利用することはできない
。タグチェックはサイクル“C2”であるため、この連結は、“サイクルC2”
の使用ビットをチェックする(ExtUseCD)。
ブロックがデータキャッシュ内にリフィルされるときはいつも、タグ論理は、
表VIIに示すように、キャッシュのどのウエイが置換されるかを決定する。もし
、いずれかのウエイが”無効“であるならば、新しいブロックが、前のブロック
を全く無効にすることなくロードされることが可能である。特に、もしブロック
0が無効の場合、これは置換される。さもなくば、もしブロック1が無効ならば
、これは置換される。
もし、2つのブロックが有効ならば、キャッシュは、有効なブロックを置換し
なければならない。しかしながら、これらのブロックは、置換のために利用され
ないかもしれない。キャッシュは、“リフィル”タグ状態、あるいはアドレスキ
ューで”ロックされた“か”使用された“ブロックを保持しなければならない。
もし、ブロックが”リフィル”状態であるならば、最初のリフィルが完了するま
では再度リフィルは行うことができない。もし、いずれのブロックも利用できな
い場合、新しいリフィルは開始され得ない。もし、1つのブロックだけが利用可
能であるならば、それは置換される。もし2つのブロックが利用可能であれば、
“最も少なく最近使用された(LRU)”ウエイがリフィルされる(次のサブセ
クションを参照)。
RefEnとAvForRef[1:0]信号は、サブセクション16.3.
8に記述される。タグは、もしその状態がゼロでないか、あるいはその状態修飾
子が“リフィル”であるならば、“有効”である。LRUは、キャッシュタグア
レイから読み出される。
この表は2つの信号を生成する。DCBeginRefは、リフィル動作が開
始されたことを示す。DCRefWayは、キャッシュのどのウエイがリフィル
されるかを示す。
D.キャッシュインターフェース
データキャッシュは、プロセッサーのロード/ストアユニットと外部インター
フェースとインターフェースする。外部インターフェースは、プロセッサーとデ
ータキャッシュに4ビットの”命令”コードを送り、実行している動作を示す。
これらの命令は、表VIIIにリストされる。
外部インターフェースは、実際のキャッシュ動作の前の2サイクルで、このよ
うな命令、新しい状態コード、状態修飾子、インデックスアドレス、タグアドレ
スを送る。キャッシュとアドレスキューはそれぞれ、次の2サイクル中での使用
のために、これらのフィールドをパイプラインする。
各々の外部命令に関して、表IXは、データキャッシュのデータアレイ、タグア
レイ、及びアドレスキューで行われる動作をリストする。アドレスキューは、キ
ャッシュのどのセクションが外部インターフェースによって必要とされているか
を決定するために、このコードをデコードする。
もし、外部インターフェースが“Markinvalid”か“MarkSh
ared”の命令を送るなら、外部インターフェースは、次のサイクルで同一バ
ンクのタグアレイに命令を送らない。これらの動作は、読み出し/変更/書込み
動作を実行する。
外部インターフェースは、プロセッサーに、新しい動作をいつ受け入れること
ができるかを示す”ビジー”信号を送る。ビット1は、MissHandlin
g表がビジーかどうかを示す。もし、これがセットされれば、外部インターフェ
ースは、新しい命令を受け入れることができない。ビット0は、ライトバックバ
ッファがビジーかどうかを示す。もし、これがセットされれば、外部インターフ
ェースは、一致しないブロックについてのリフィル要求を受け入れることができ
ず、データは二次キャッシュにライトバックされる。
サイクル”CO”中に、外部インターフェースは、アドレスキューに10ビッ
トの“インデックス”アドレス(EXOIndex[13:4]とEXOWay
)を送り、2サイクル後に(サイクル”C2“)アクセスするデータキャッシュ
ブロックを識別する。キューは、このブロックによって影響されるアクテイブな
命令を識別するために連結比較ポートを使用する。
データキャッシュは、次のサイクル(サイクル“C1”)中にデコードするた
めにアドレスを記録する。
データキャッシュは、タグチェックサイクル中にアドレスとヒット信号を外部
インターフェースに提供する。
プロセッサタグチェックについて:(選択されたデータキャッシュバンクのタ
グセクションから)
DC2CpuVAdr[13:0]:データキャッシュは、ACUからの仮想
アドレスの“インデックス”ビットか、前のサイクル(“C1”)中のアドレス
スタックをマルチプレクスする。このアドレスは、“C2”までレジスタで遅延
される。
DC2CpuPAdr[39:12]:データキャッシュは、TLBからトラ
ンスレートされた物理アドレスか、タグチェックサイクル中のアドレススタック
をマルチプレクスする。
5つの“ライトバッグ”フィールドは、キャッシュブロックを二次キャッシュ
に書込むために、アドレスと状態を提供する。もし、キャッシュがヒットするな
らば、これらのフィールドは、“ヒット”ウエイを選択する。さもなくば、もし
、リフィルが開始されるなら、それらは、リフィルされているウエイを選択する
。
DC2WBTag[22:12]:タグは、一次キャッシュよりも多くのイン
デックスビットを使用するため、二次キャッシュ内にデータを書込む位置の決定
を助ける。
DC2WBState[1:0]:
DC2WBSCWay:二次キャッシュ内のウエイ。
DC2WBIndex:
外部インターフェースTarチェックについて:(選択されたデータキャッシ
ュバンクのタグセクションから)
MDOTag「39:12」:このバスは双方向である。
DC2RdState[1:0]
DC2RdMod[2:0]
DC2RdSCWay:
上記は本発明の好ましい実施例の完全な説明である一方、種々の変更、代替及
び等価なものが用いられることが可能である。例えば、キャッシュは、n−ウエ
イセットアソシエイテブキャッシュとして実行されることができる。他の変形は
、種々のブロックサイズ及び種々のサイズのアドレスラインを含む。それ故、上
記説明は、添付されたクレームによって定義される発明の範囲を限定するように
解釈するべきではない。
【手続補正書】特許法第184条の8第1項
【提出日】1996年5月14日
【補正内容】
【図4】
【図5】
【図7】
【図11】
キャッシュが読み出されるとき、同一のダブルワード位置は、セットを有する双
方のブロックから同時に読み出される。さらに、マルチプレクサを使用すること
によって、読み書きするためのセンスアンプ数が減少され、これによって、ダイ
上の貴重なスペースをかなり節約することができる。
本発明の本質及び効果は、以下の詳細な説明および図面への参照をもって理解
することが
できる。
図面の簡単な説明
図1は、スーパースカラープロセッサーの機能ブロック図を示し、
図2は、ロード/ストアユニットの機能ブロック図を示し、
図3は、キャッシュバンクのブロック図を示し、
図4は、キャッシュデータアレイと制御論理(コントロールロジック)のブロッ
ク図を示し、
図5は、キャッシュデータアレイの各バンク内のブロック組織を示し、
図6はデータキャッシュの各バンク内のビット構成を開示する。
図7は、キャッシュ制御論理の論理図を示し、
図8は、キャッシュの2つのバンク間の接続を示し、
図9は、キャッシュタグメモリと制御論理のブロック図を示し、
図10は、タグのビットフィールドを示し、
図11a−11bは、タグチェック論理を示し、
図12は、キャッシュヒットパルスを発生するための論理図を示し、
図13は、キャッシュタグアレイのためのローデコーダのブロック図を示す。
好ましい実施形態の詳細な説明
内容
I.スーパースカラープロセッサーアーキテクチャ
A.スーパースカラープロセッサーの概観
B.動作
II.ロード/ストアユニット
A.ロード/ストアユニットの概観
III.データキャッシュ
A.データキャッシュの概観
B.データアレイ
1.データアレイ組織
2.データアレイ制御論理
C.タグアレイ
1.タグアレイ組織
2.タグアレイ制御論理
D.キャッシュインターフェース
I.スーパースカラープロセッサーアーキテクチャ
図1は、本発明に従いキャッシュメモリを含むスーパースカラープロセッサ1
00の機能ブロック図を示す。プロセッサー100は、一般に、カリフォルニア
のマウンテンヴュー、シリコングラッフィクス社によって開発されたスーパース
カラープロセッサーR10000を表し、これは、本発明のキャッシュメモリに
ついての1つの適用例だけを提供する。
A.スーパースカラープロセッサーの概観
スーパースカラープロセッサーは、1命令以上のフェッチと実行を並列に行うこ
とができる。プロセッサー100は、1サイクルにつき4命令をフェッチしデコ
ードする。各デコードされた命令は、3つの命令キュー(待ち)の1つに付加さ
れる。これらのキューは、5つの実行パイプラインの各々に対してサイクル毎に
新しい命令を発することができる。
図1のブロック図は、命令パイプラインのステージを示すように配置され、種
々のプロセッサーの要素間の機能的な相互接続を示す。一般に、命令フェッチと
デコードは、ステージ1と2において実行され、命令は、ステージ3の種々のキ
ュー(待ち)から発せられ、命令の実行は、ステージ4−7において実行される
。
図1を参照すると、一次命令キャッシュ102は、1サイクルにつき4つの連
続する命令を読み出し、キャッシュブロック内のワード境界から開始する。ブラ
ンチターゲットキャッシュ104、命令レジスタ106、命令デコード、及び従
属論理200は、発せられた命令の部分を、浮動小数点(フローテイングポイン
ト)マッピングテーブル204(6ビット単位で32ワードのRAM)か、ある
いは整数マッピングテーブル206(6ビット単位で33ワードのRAM)に運
ぶ。これらのテーブルは、以下に述べられる、“レジスターリネイミング(re
naiming)”動作を実行し、これは、命令実行中の値を保持するために、
命令で識別された論理レジスタを物理レジスタ位置にリネイミングする。冗長マ
ッピングメカニズムは、これらのテーブルに組み込まれ、ブランチの誤った予測
から効果的な復旧を容易にする。マッピングテーブル204と206は、浮動小
数点フリーリスト208(6ビット単位で32ワード)と、整数フリーリスト2
10(6ビット単位で32ワード)とからもそれぞれ入力を受取る。双方のマッ
ピングテーブルの出力は、順番にフリーリスト208と210の入力を供給する
アクテイブリスト212に供給される。
ブランチユニット214はまた、図1に示されるように、命令レジスタ106
から情報を受取る。このユニットは、1サイクルにつき1ブランチ以上の処理を
しない。ブランチユニットは、各条件付ブランチ毎に1エントリを含むブランチ
スタック216を含む。プロセッサー100は、最もありそうな通路を予測し、
かつその通路に沿って命令をデコードすることにより推論的に条件付ブランチを
実行することができる。
通常、各命令は、各ステージの単一サイクルのみを要求し、各ステージは、前の
命令が後のステージによって完了されている間に、新しい命令を開始することが
できる。このため、新しい命令が、各サイクル間でしばしば開始可能である。
パイプラインは、命令が実行される速度を大幅に改良する。しかしながら、パ
イプラインの効果的な使用は、いくつかの命令が並列に実行されることを要求す
る。各命令結果は、命令がパイプラインに入った後の数サイクル間利用すること
ができない。このため、新しい命令は、まだパイプラインの中にある命令結果に
依存しなくてもよい。
プロセッサー100は、オリジナルのプログラム順で命令をフェッチし、デコ
ードするが、これらの命令を順番以外で実行し、完了するかもしれない。一旦完
了すると、命令は、オリジナルのプログラムの順序で、“グラジュエイト(グラ
ジュエイト)、graduate”される。フェッチ命令は、図1に示すように
、命令キャッシュから命令を読み出すことによって実行される。命令デコード動
作は、従属チェックとレジスタのリネイミングを含み、これらは、命令デコード
及び従属ロジック200と、マッピングテーブル204か206によってそれぞ
れ行われる。上記のように識別された実行ユニットは、命令のオペランドからの
演算結果を計算する。結果が計算されてレジスタファイル302か306によっ
て識別された一時レジスタに蓄積されたとき、実行は完了される。最終的に、グ
ラジュエイト(グラジュエイト)は、新しい固定値としてこの一時的な結果を引
き渡す。
命令は、その命令とすべての前の命令が首尾よく完了されたときのみ、グラジ
ュエイトすることができる。命令がグラジュエイトされるまで、命令は中断する
ことが可能であり、すべての前のレジスタとメモリ値が、例外を伴う正確な状態
にリストア(復元)されることが可能である。この状態は、次の命令に割り当て
られた一時的な物理レジスタを“アンーネイミング(unnaming)”する
ことによってリストアされる。レジスタは、古いデステイネーションレジスタを
関連されたマッピングテーブルに書き込み、かつ新しいデステイネーションレジ
スタをフリーリストに戻すことによって、無名(unmamed)にされる。リネイミン
グ(renaming)は、逆のプログラム順で行われ、最終的に論理レジスタが一度以上
使用された。リネイミングの後、レジスタファイル302と306は、その例外
より前の命令によって生成された固定値のみを含む。しかしながら、命令がグラ
ジュエイトされると、すべての前の値は失われる。
マイクロプロセッサー100は、データキャッシュを増大するための2次キャッ
シュを含む。スペースの利用可能性に依存して、二次キャッシュ432は、個別
のチップとして実行することができる。
すべての“キャッシュされる”動作は、最初にデータキャッシュ424をアク
セスする。もし、データがそこに存在していれば(“キャッシュヒット”)、ロ
ードが2サイクルで完了される。さもなくば、二次キャッシュへのアクセスが開
始される。もし、“ヒット”したならば、一次キャッシュは、”リフィル(補充
)、refilled)され”、ロードが少なくとも8サイクルを要する。さもなくば、
メインメモリは読み出されなければならず二つのキャッシュもリファイルされな
ければならない。このような場合、ロードは、かなり長い時間を要するであろう
。マイクロプロセッサー100は、キャッシュされる動作を”順番以外で”実行
する。命令のアドレスは、たとえもし前の命令が有効になるべきインデックスレ
ジスタを待っているにしても、インデックスが有効になるや否や計算されること
が可能である。キャッシュミスは、後の命令を妨げず(”ノンブロッキング”)
、ユニットは、8つのキャッシュミスが処理されるまでの間、新しい動作を開始
することができる。
“キャッシュされない”動作は、キャッシュをバイパスし、常にシステムバス
をアクセスする。典型的に、キャッシュされない動作は、入力/出力装置や特別
の目的のメモリをアクセスする。
キャッシュされない動作は、命令がグラジュエイトしかけているときにのみ実
行される。キャッシュされない動作は、例外の事象で未処理であることは許され
ないので、オリジナルのプログラム順序で連続的に行われる。キャッシュされな
い書き込みと読み出しの双方は、I/Oサブシステムの状態を変更することがで
きる。キャッシュされない動作は、アドレススタックに保持されるが、従属チェ
ックはこれらについて一切行われない。キャッシュされないストアのオペランド
は、ストアバッファにコピーされるが、ロードバイパスは一切生じ得ない。スト
アがグラジュエイトするとき、バッファされたデータは外部インターフェースに
転送される。
キャッシュされない動作は、それらがグラジュエイトするまで遅延されるけれ
ども、キャッシュされた動作は、順番以外で進行され得る。すなわち、次のキャ
ッシュされるロードが実行可能であり、そして、キャッシュされたストアが、タ
グチェックとキャッシュリフィル(補充)を開始できる。
プリフェッチ命令は、メモリブロックを一次キャッシュと二次キャッシュにフ
ェッチするのに使用される。それらは、キャッシュをリフィルするために必要な
遅延を減少させることによって性能を増加するために使用され、しかし、それら
は、プログラムの論理実行には何ら影響がない。プリフェッチ命令は、予測可能
なメモリアクセスをもつけれども高いキャッシュミス率をもつプログラムをかな
り改良することができる。
リフィル状態は、キャッシュタグに記録される。しかしながら、アドレススタッ
クのエントリが”済み”であるため、完了されるべきリフィルを待たない。
ロード/ストアユニットは、推論的に命令を実行することができる。これらは
、ブランチが逆の場合には中止される必要がある。もし、中止された命令が、キ
ャッシュのリフィルを模倣するならば、リフィルの動作は完了されるにちがいな
い。これらのリフィルは、プロセッサーの命令にもはや対応しないので、オーフ
ァンス(orphans)と呼ばれる。プリフェッチ命令はまた、最初のタグサイクル
が完了されるや否や”済み”となるので、オーファンスを生じさせる。
このキャッシュブロックのアドレスタグは、キャッシュのリフィルが完了され
るまで、”リフィリング(補充する)”状態で残る。もし、次の命令が、このキ
ャッシュブロックをアドレスするならば、これは、”リフィルの待ち”状態で最
初にこのブロックを使用することができる。
B.動作
図2を参照すると、ロード/ストアユニット416は、アドレスキュー308
、アドレススタック420、アドレス計算ユニット(ACU)418、ストアア
ライナ430、ロードアライナ428、トランスレーションルックサイドバッフ
ァ(JTLB)422、及びデータキャッシュ424を含む。データキャッシュ
424は、セットアソシエイテブデータキャッシュであり、キャッシュタグアレ
イ650、キャッシュデータアレイ610、及びタグチェックロジック660を
含む。TLBとデータキャッシュは、ロード命令のためのレイテンシイを減少さ
せるために並列に動作するように構成され、動作速度で約15%の性能改善をす
る。
アドレスキュー308は、レジスタファイル306とアドレス計算ユニット4
18と連絡する。アドレスキューは、環状のファーストイン−ファーストアウト
(FIFO)バッファのように構成された16エントリを含み、キャッシュを操
作する、ロード、ストア、及び”キャッシュ”命令のようなすべてのメモリ命
令の軌跡を保持する。メモリ命令がデコードされるとき、それは、キューの底で
次の連続的なエントリに割り当てられる。命令がグラジュエイトするとき、それ
は、リストの上部から除去される。グラジュエイションは、命令がエラーなしで
完了し、かつ前の命令がグラジュエイトされた場合に生じる。命令は、たとえそ
れらが順番通りに実行されないおそれがあるにしても、オリジナルのプログラム
の順番でグラジュエイトされる。
ストアパスは、レジスタファイル302と306からデータキャッシュ424
へレジスタ値を書き込むために提供される。ストアアライナ430は、キャッシ
ュに書き込まれるべきデータを整合する。バイパスパス601は、キャッシュさ
れない動作についてのデータがデータキャッシュをバイパスするようにする。
さらに、バイパスパス390は、ロード/ストアユニットの性能を改良するた
めに提供される。マイクロプロセッサーが、データが書き込まれている同一サイ
クル中にある位置を読み出しているとき、バイパスパス390は、データがレジ
スタファイルかメモリを迂回するようにする。例えば、実行ユニットの結果は、
そのような結果がレジスタファイルに書き込まれる間に従属命令が実行できるよ
うに、オペランドレジスタに直接にマルチプレクスされることを可能にする。こ
のバイパスは、オペランドレジスタ数が前の命令のデステイネーションレジスタ
数と等しい時はいつでも選択される。
物理タグと仮想インデックスは、アドレススタック420にも書き込まれ、ア
ドレススタック420は、アドレスキューの論理的な部分であるけれどもレイア
ウトの考慮のために物理的に離される。
マイクロプロセッサーは、アドレスキューの各命令に対応する物理メモリを蓄
積するためにアドレススタック420を使用する。従って、アドレススタックは
、アドレスキューと同じエントリ数で実行される。データは、アドレス計算シー
ケンス中にアドレススタック420にロードされる。
III.データキャッシュ
A.データキャッシュ概観
データキャッシュ424は、メインメモリの”キャッシュできる”領域をアク
セスする命令をロードしたり蓄積するために使用される。データキャッシュ42
4は、2つの同一バンク、バング”0”とバンク”1”でインターリーブされる
。
アレイは、仮想アドレスのインデックス部分(ビット13:0)を用いて“仮
想的にインデックスされる”。ビット5は、バンク#0かバンク#1を選択する
。ビット2:0は、ダブルワード内のバイトを選択し、ビット4:3は、ブロッ
ク内のダブルワードを選択する。ビット13:6、これはアレイ内のブロックを
アドレスし、256”ワードライン”の一つを選択するためにデコードされる。
各ワードラインは、8つのダブルワード、あるいは2つのブロックを含む。ビッ
トは、これらのブロック内のダブルワードがプロセッサーや外部インターフェー
スの動作のために区別してアクセスされるように、インターレースされる。プロ
セッサーは、2つのブロックを有するダブルワードを連結的にアクセスする。他
方、外部インターフェースは、同一ブロック内の2つのダブルワードをアクセス
する。
個別のアドレスマルチプレクサがデータとタグのアレイのために提供される。
マルチプレクサ621は、データアレイ610による使用のために、外部インタ
ーフェース、アドレスキュー、アドレススタック、及びACUの中からのアドレ
ス入力を選択する。タグアレイに関する限り、マルチプレクサ620は、外部イ
ンターフェース、アドレススタック、あるいはACUからアドレス入力を選択す
る。マルチプレクサ610と620のための選択信号(タグの選択とデータの選
択)は、アドレスキューによって発生され、そして、表IIに示されるように、ど
の機能ユニットが各アレイを制御しているかを決定するために、キャッシュ制御
論理によってデコードされる。
別のデータマルチプレクサがまた、タグとデータのアレイのために設けられる。
マルチプレクサ625は、タグアレイに書き込みを行うために、外部インターフ
ェースかJTLBのいずれかからアドレスを選択する。マルチプレクサ630と
631は、データアレイに書き込むために、外部インターフェースかレジスタフ
ァイルからのデータを選択する。
キャッシュ部分がアドレス選択値”00”によって示されたように使用されな
いとき、それはパワーダウンである。パワーダウンモードでは、アドレスデコー
ダは、それがワードラインを選択しないようにデイスエイブルされ、ダミーワー
ドラインは、センスアンプのいずれもがターンオンしないように、デイスエイブ
ルされる。デコーダは、第1レベルのゲートの余分の入力を用いてデイスエイブ
ルされる。
ある実施例では、データキャッシュは、リセット期間中にハードウエアによっ
て初期化されない。これらの実施例は、データキャッシュの使用を開始する前に
、すべてのタグを”無効”状態に初期化させるためのブートストラッププログラ
ムを要求する。もし、ブロックが”無効”であれば、そのデータアレイの内容は
使用されない。
B.データアレイ
1.データアレイの組織
図4を参照すると、データアレイ610は256行を含む。デコーダ450は
、ワードラインをハイに駆動することによってどの行がアクセスされるかを選択
する。各ワードラインは、576のセル(512データビットと64パリテイビ
ット)あるいはビットからなる行を駆動し、そしてゲートされ、32セル毎にバ
ッファされる。576ビットは、4ダブルワード(1ワードは4バイトに等しい
)を含む各ウェイをもつ1つのキャッシュセットに等しい。
ダブルワード内の460によって表わされる各ビットは、8つのセル461a
ー61hを含む。セルは、キャッシュの各ウエイの4タブルワードの各々からの
1ビットに対応する。各セルの上の数は、キャッシュのウエイを表
し、下の数は、ウエイ内のダブルワード数を表す。
マルチプレクサ470は、信号S0によって制御され、センスアンプ475に
入力するために、4ビット(ブロック内の4ダブルワードの各々からの1つ)か
ら1ビットを選択する。センスアンプの出力は、サブーアレイ0からのデータを
表す。
それ以後、データは、位相マルチプレクサ回路495に進められ、この回路は、
クロックサイクルΦ1の期間で第1のダブルワードを、同一クロックサイクルの
Φ2期間で第2のダブルワードを書き込む。パリテイチェッカー478は、適当
なパリテイのためにダブルワードのすべてのバイトをチェックし、もしエラーが
発生したら、プロセッサーは、”外部インターフェースデータキャッシュエラー
”の例外を取る。
データは、レジスタファイルか、あるいは外部インターフェースのいずれかか
らキャッシュアレイに書き込まれる。レジスタファイルからのデータは、ストア
アライナ430によって整合され、マルチプレクサ488と489によって外部
インターフェースからのデータとマルチプレクスされる。マルチプレクサは、選
択信号に従ってデータを選択し、セルの各列の下に位置されたドライバ469a
ー468hを介してキャッシュに書き込む。これらのドライバは、書き込まれて
いるアドレスに従いイネーブルされる。レジスタストアのためにパリテイ発生器
499aによって発生された、あるいは外部インターフェースストアのためにパ
リテイ発生器499bにいよって発生された偶数パリテイビットは、データキャ
ッシュに蓄積された各バイトに付加される。各パリテイビットは、そのバイトが
書き込まれるときはいつも、書き込まれる。
前述したように、データアレイは、2つの別のアクセスパターンに組織化され
る。ブロックを二次キャッシュにロードしたりコピーする間に、2つのデータア
レイは、同一ブロック内の一対の隣接するダブルワードをアクセスする。タグチ
ェックと同時に起こる読み出しに関し、各アドレスされたワードは、2つのブロ
ックから読み出され、一致するタグを有するブロックが選択される。他のブロッ
クからのデータは無視される。書き込みに関し、これはタグチェックが完了した
後で生じるが、アドレスされたブロックだけが書き込まれる。
図5を参照すると、キャッシュアレイの各ブロックは、いずれかのアクセスパ
ターンを許可するために、2キャッシュウエイ間でワード455−458が交替
するように構成される。これは、アレイがキャッシュウエイに対応していないか
らである。
ダブルワード0は、いずれかのアレイにあることができる。ブロック459a
にとって、偶数のダブルワード(Adr[3]=0)がアレイ0内にあり、奇数
ダブルワードがアレイ1内にある。ブロック459bでは反転される。これは、
もし、各ウエイからのデータラインが2−ダブルワードの幅でないならば、従来
の2−ウエイセットアソシエイテブで不可能であったであろう、同一ウエイから
の2つのダブルワードのアクセスを可能にする。これは、2倍のセンスアンプ数
を必要とする。また、マルチプレクサを使用することによって、外部インターフ
ェースは、クウオードワードアクセス内のダブルワードをスワップすることがで
きる。
C.タグアレイ
1.タグアレイの組織
キャッシュタグアレイは、データアレイの各8−ワードブロックにつき36ビ
ットアドレスタグを蓄積し、かつ、データアレイの約8分の1のビットを持つ。
各行につき64ワードライン(データアレイの1/4)と288セル(半分以下
)がある。このため、タグアクセス時間は、データアレイよりも高速である。
キャッシュデータアレイと同様に、キャッシュタグアレイは、2つの同一のバ
ンクに分割され、各々は、プロセッサーや外部の要求に対して独立に動作するこ
とができる。バンクは、ブロックアドレス(ビット#5)の低位ビットによって
選択される。キャッシュタグアレイは、仮想アドレスビット[13:6]によっ
てアドレスされ、これは、2つのブロックのセットを選択する。各バンクには2
56セットがある。各セットは、2つのブロックを含む。このため、2つのバン
クは、1024ブロック(キャッシュサイズが32Kバイトー32バイト/ブロ
ック)を含む。各セットの2つのタグは、並列に読み出され、キャッシュがアド
レスされたデータを含むかどうか(”ヒット”)を決定するために、所望の物理
アドレス(ビット37:12)と同時に比較される。
図9は、タグバンクの1つと関連した制御論理を例示する。タグアレイは64
の行を含む。デコーダ752は、仮想アドレスビット18:8を用いてワードラ
インをハイに駆動することによってどの行がアクセスされるかを選択する。各ワ
ードライン753は、288(8つの36ビットタグ)の行を駆動する。36ビ
ットは、4タグを含む各ウエイを持つ1つのタグセットに等しい。
タグの各ビット751に関して、8セル755a−755hが設けられる。セ
ルは、キャッシュの各ウエイの4つのタグの各々からの1ビットに対応する。3
6ビットタグについて、これは36回繰り返される。
各セルの上の数はウエイを表し、下の数はウエイの行内のタグ数を表す。デー
タアレイと異なって、タグビットは、各サブアレイが同一のウエイに属するタグ
のみを含むように、インターリーブされる。
マルチプレクサ758は、信号の仮想アドレスビット7:6によって決定され
るように、センスアンプ760に入力するために、4ビット(4タグの各々から
1つ)から1ビットを選択する。センスアンプの出力は、ウエイ0からのタグデ
ータ(タグ0)を表す。同様に、マルチプレクサ759とセンスアンプ761は
、ウエイ1から選択されたタグデータ(タグ1)を出力する。この方法では、各
セットからの2つのタグが並列に読み出される(バンク0からの2つとバンク1
からの2つ)。再度、マルチプレクサの使用は、必要とされるセンスアンプ数を
減少させる。
各バンクは、4つのタグチェック比較器を有し、プロセッサ(756と766
)についての2つと、外部インターフェース(763と768)についての2つ
である。各々は、キャッシュが、2つの独立2−ウエイセットアソシエイテブバ
ンクでインターリーブされるため、2つの比較器を必要とする。各バンクは、プ
ロセッサーか外部インターフェースのいずれかのために2つのタグを読み出すこ
とができる。これらのタグ信号は、比較器の入力でマルチプレクサ770ー77
3を使用してマルチプレクスされる。
マイクロプロセッサーは、JTLBからトランスレートされた物理アドレスか
、タグと比較するアドレススタックからのアドレスのいずれかを選択するために
、マルチプレクサ776を使用する。JTLBは、重要なタイミング通路である
。比較の結果がキャッシュ”ヒット”信号である(もし、タグが存在すればヒッ
トであり、タグが存在しなければミスである)。また、タグパリテイビットは、
パリテイチェッカー767と768によってチェックされる。パリテイエラーは
例外を引き起こす。
外部インターフェースあるいはロード/ストアユニットのいずれかからのタグ
は、タグアレイに蓄積されることができる。マルチプレクサ775は、データを
タグの適切な位置に書き込むために、仮想インデックスに従い選択的にイネーブ
ルされる所望のタグとバッファ756aー56hを選択する。パリテイ発生器は
、タグがアレイに書き込まれるときはいつでもパリテイを発生する。
図10を参照すると、各タグは次のフィールドを含む;アドレス785、パリ
テイ786、ウエイ787、状態788、パリテイ789、修飾子890、及び
LRU(最も少なく最近使用された)791である。タグフィールドは、表IVに
述べられる。
ブロックがキャッシュにリフィルされるとき、このビットは、ロード命令のため
に最初’0’であるか、あるいはストア命令のために’1’である。ストア命令
が、このブロックを使用するときはいつでも、後からセットされることが可能で
ある。
ビット0は、リフィル、あるいは書き込まれたビットのいずれもがセットされ
ないときに、セットされる。このビットは、状態修飾子フィールドに関する奇数
パリテイチェックとして働く。各有効状態は、1つの“1”ビットセットを有す
る。
3ビットは、3つの状態を符号化する。各コードは、1ビットセットを持って
いるため、奇数パリテイを効率よく実行する。パリテイエラーは、もし他のパタ
ーンが読まれるなら、信号を発する。
2.タグアレイ制御論理
アドレスキューは、データキャッシュが要求するデータを含んでいるかどうか
を決定するために”タグチェック”サイクルを実行する。外部インターフェース
は、二次キャッシュブロックを無効化するときに、タグチェックサイクルを実行
する。
図11aは、タグチェック回路の1実施例を示す。2つの28ービットアドレ
スタグ(物理アドレスビット39:12)への所望のアドレスは、それぞれイク
スクルーシブーオアゲート801において対応するタグビットと比較される。簡
潔のために、一つのゲートだけが例示されるが、当業者にとってビット毎に一つ
のゲートがあることは明らかであろう。もし、ビット位置が異なれば、ゲート8
01の出力は、”キャッシュミス”を示す論理”0”である。イクスクルーシブ
ーオアゲートの出力は、Φ2の立ち上がりを用いて、28ー入力ダイナミック”
オア”ゲート802で結合される。ダイナミック”オア”はスタチックゲートよ
りも非常に高速であるが、クロックのタイミングとスキュー(skew)に依存
する。ダイナミック”マッチ”ノード803は、Φ1間にハイにプリチャー
ジされる。これは、もしアドレスビットが一致しない場合、Φ2間にデイスチャ
ージされる。こうして信号は、”ヒット”についてハイを維持し、”ミス”はΦ
2の開始直後にフォーリング(落下)エッジとなる。ダイナミックオアゲートの
出力は、インバーター803によって反転され、これの出力は、”ミス”がある
時にΦ2の開始後約2.5ゲートー遅延で上昇するパルスである。さもなくば、
その出力はゼロを維持する。この明瞭な出力信号は、次の論理を単一のエッジ遷
移に関して最適化させる。これはまた、長い距離を分散される64ビットバス上
のノイズを最小限にする。
(5番目の条件であるIgnoreHitA&IgnoreHitBは省かれた
。キャッシュは、双方のウエイ上にヒットを同時に適切に発生することができな
いため、これは冗長である)。
出力信号は、位相2中のパルスである。これは、長い配線を駆動するためにバッ
ファされる。この立ち上がりエッジは、出力バッファのトランジスタのレシオを
取ることによって速度に関して最適化される。
図12は回路870を示し、これは、各”キャッシュヒット“についてのLRU
とタグ修飾子回路にパルスを提供する。回路は、”ミス”信号を反転し、それを
タイミングパルスでゲートする。グリッチを避けるために、タイミングパルスは
、”ミス”信号がスイッチした後に開始する。この信号速度は、どのくらいの多
くのビットが異なるのかということに依存し、これは、各々異なったビットが並
列トランジスタの一つをターンオンさせるからである。スイッチングは、1ビッ
トだけが異なるとき、最も遅い。タイミングパルスはダミー比較回路を用いて発
生され、この回路は、単一ビットの差の時間をシミュレートする。この出力は、
イネーブルとTagMod[2]でゲートされ、これは、もしブロックがリフィ
ルされている場合、”ヒット”を禁止する。このようなゲートを介しての遅延は
、スイッチングのグリッチを除去するタイミングマージンを提供する。
図13は、タグローデコーダ900を示し、これは、どのワードラインが主張
(アサート)されるかを選択する6ビットー64ビットのローデコーダである。
デコーダの入力は、アドレス計算ユニット、アドレススタック、あるいは外部イ
ンターフェースによって提供されるアドレスから選択される。アドレスは位相2
の終わりでラッチされ、その結果、次の位相1期間でワードラインが駆動されて
いる間は安定である。
デコードは、プリデコードとドライバーに分けられる。プリデコーダ901に
おいて、上位3ビット(13:11)と下位3ビット(10:8)は、3−8デ
コーダ902と903によってそれぞれ個別にデコードされる。各プリデコーダ
は、1つのハイ出力を有する。下位デコーダ903は、タグアレイをデスエイブ
ルするために、すべての出力をローに強制することができ、これによって、タブ
アレイの最大電力消費を削減することができる。これらのデコーダは、中央でア
レイに隣接する。出力は、ウエイ間の信号をローデコーダまで駆動する。各出力
は、タグアレイ間に分散されることができる8つの負荷を駆動する。
各アレイには、64のワードラインドライバー910がある。1つのドライバ
ーは、プリデコーダ901からの1つの入力を論理的にアンドすることによって
選択される。”アンド“ゲートの出力は、各サイクルの終わりまで安定にするべ
きである。
もし、キャッシュミスとリフィルがイネーブルされる場合には、プロセッサー
は、タグチェック中にデータキャッシュリフィルを開始させることができる。リ
フィルは、すべての以下の条件が適合される場合に、イネーブルされる。
これらの信号は、信号RefEnに結合される。
1.仮想アドレスは、“キャッシュできる”属性を選択する。(“ノンーコヒー
レント”、“イクスクルーシブ”、あるいは“シェアード(共有される)”)
2.命令は、“Store Conditional”ではない。
(SCは、常に以下の“Load Linked”命令を伴い使用される。L
Lは、もし必要ならば、キャッシュをリフィルする。SCがグラジュエイトする
ときに、もし、アドレスされたブロックがもはやキャッシュ内にないならば、S
Cは“失敗”であり、書込みは中止される。)
3.外部インターフェースミスーハンドリングー表(Miss−Hndling
−Table)は、ビジーではない。
(CCOBusy ビット1)
4.もしライトバックが要求される場合、二次キャッシュの書込みバッファはビ
ジーではない(CCOBusy ビット0)。これらの信号は、表 に示される
ように、各キャッシュウエイについて別個のAvForRef信号に結合される
。
5.古いキャッシュ状態修飾子は“リフィル”ではない(キャッシュブロックが
”リフィル”状態にあるとき、新しい動作が、そのブロックについての開始をす
る前に完了するよう外部インターフェースを待たなければならない。)。
6.アドレスキューは、リフィルをイネーブルし、キャッシュのウエイが利用で
きることを示す(AQQWavO:Av)
ウエイは、すでにキューで“ロックされた”(locked)、あるいは”使
用された”(Used)ようなフラッグが付されている場合には、リフィルのた
めに利用できない。これは、別のエントリが、実存するブロックを必要としてい
ることを示し、その結果、置換されることはない。もし、現在の命令が、キャッ
シュデ従属をもつなら(DepRowC)、1つのウエイは最も古い命令のため
にリザーブされる必要があるため、いずれかのフラッグは2つのウエイを利用不
可能にする。
もし、外部インターフェースが次のサイクルで同一キャッシュバンクのタグア
レイを使用するならば、ウエイはまたリフィルのために利用することはできない
。タグチェックはサイクル“C2”であるため、この連結は、“サイクルC2”
の使用ビットをチェックする(ExtUseCD)。
タグチェックはサイクル“C2”であるため、この連結は、“サイクルC2”の
使用ビットをチェックする(ExtUseCD)。
ブロックがデータキャッシュ内にリフィルされるときはいつも、タグ論理は、
表に示すように、キャッシュのどのウエイが置換されるかを決定する。もし、い
ずれかのウエイが”無効“であるならば、新しいブロックが、前のブロックを全
く無効にすることなくロードされることが可能である。特に、もしブロック0が
無効の場合、これは置換される。さもなくば、もしブロック1が無効ならば、こ
れは置換される。
もし、2つのブロックが有効ならば、キャッシュは、有効なブロックを置換し
なければならない。しかしながら、これらのブロックは、置換のために利用され
ないかもしれない。キャッシュは、“リフィル”タグ状態、あるいはアドレスキ
ューで”ロックされた“か”使用された“ブロックを保持しなければならない。
もし、ブロックが”リフィル”状態であるならば、最初のリフィルが完了するま
では再度リフィルは行うことができない。もし、いずれのブロックも利用できな
い場合、新しいリフィルは開始され得ない。もし、1つのブロックだけが利用可
能であるならば、それは置換される。
もし、1つのブロックだけが利用可能であるならば、それは置換される。もし2
つのブロックが利用可能であれば、“最も少なく最近使用された(LRU)”ウ
エイがリフィルされる(次のサブセクションを参照)。
RefEnとAvForRef[1:0]信号は、サブセクション16.3.
8に記述される。タグは、もしその状態がゼロでないか、あるいはその状態修飾
子が“リフィル”であるならば、“有効”である。LRUは、キャッシュタグア
レイから読み出される。
この表は2つの信号を生成する。DCBeginRefは、リフィル動作が開
始されたことを示す。DCRefWayは、キャッシュのどのウエイがリフィル
されるかを示す。
D.キャッシュインターフェース
データキャッシュは、プロセッサーのロード/ストアユニットと外部インター
フェースとインターフェースする。外部インターフェースは、プロセッサーとデ
ータキャッシュに4ビットの”命令”コードを送り、実行している動作を示す。
これらの命令は、表IXにリストされる。
外部インターフェースは、実際のキャッシュ動作の前の2サイクルで、このよ
うな命令、新しい状態コード、状態修飾子、インデックスアドレス、タグアドレ
スを送る。キャッシュとアドレスキューはそれぞれ、次の2サイクル中での使用
のために、これらのフィールドをパイプラインする。
各々の外部命令に関して、表Xは、データキャッシュのデータアレイ、タグア
レイ、及びアドレスキューで行われる動作をリストする。アドレスキューは、キ
ャッシュのどのセクションが外部インターフェースによって必要とされているか
を決定するために、このコードをデコードする。
Claims (1)
- 【特許請求の範囲】 1.幅が“ワード”として引用されるデータパスを有するプロセッサーにおいて 、データ情報を蓄積し、かつタグとインデックスを有するアドレスによってアク セスされるメモリアレイは; 複数のRAMセルであって、前記複数のRAMセルの各々は、その行と列が 選択されるときにイネーブルされ、前記アレイの前記行は前記インデックスの上 位部分によって選択され、前記行は複数のワードからなるデータのブロックを表 し、各ワードは複数のビットからなり、前記インデックスの下位部分は複数の列 を選択し、前記複数の列は1ワード長を表す、前記RAMセルと、 複数のマルチプレクサであって、前記複数のマルチプレクサの各々は、前記 ブロックの前記複数のワードから1ビットを選択する、前記複数のマルチプレク サと 複数のセンスアンプであって、前記複数のセンスアンプの各々は、前記複数 のマルチプレクサの1つに結合され、前記センスアンプは前記インデックスによ って選択された1ワードを出力する、前記複数のセンスアンプと 前記インデックス部分に従いどの行とワードが選択されるかを決定する制御 ロジックとを 有することを特徴とするメモリアレイ。 2.請求の範囲第1項において、前記アレイは、第2のアレイにインターリーブ される第1のアレイを含み、各アレイは独立に動作することができることを特徴 とするメモリアレイ。 3.請求の範囲第2項において、前記第1と第2のアレイはそれぞれ、データを 蓄積するためのデータアレイと、前記タグを蓄積するためのタグアレイとを含み 、前記タグアレイは2つのデータワードをアクセスすることができ、前記タグア レイは2つのタグをアクセスすることができることを特徴とするメモリアレイ。 4.請求の範囲第3項において、前記データアレイは、2−ウエイアソシエイテ ブであり、並列に2ワードをアクセスすることができることを特徴とするメモ リアレイ。 5.幅が“ワード”として引用されるデータパスを有するプロセッサーにおいて 、データ情報を蓄積し、かつタグとインデックスを有するアドレスによってアク セスされるメモリアレイは; 複数のRAMセルであって、前記複数のRAMセルの各々は、その行と列が 選択されるときにイネーブルされ、前記アレイの前記行は前記インデックスの上 位部分によって選択され、前記行は複数のワードからなるデータのブロックを表 し、各ワードは複数のビットからなり、前記インデックスの下位部分は複数の列 を選択し、前記複数の列は1ワード長を表す、前記RAMセルと、 前記ブロックの前記複数のワードから1ビットを選択する手段と、 複数のセンスアンプを出力する手段であって、前記複数のセンスアンプの各 々は前記複数のマルチプレクサの1つに結合され、前記センスアンプは前記イン デックスによって選択された1ワードを出力する、前記手段と、 前記インデックス部分に従い選択された行とワードを決定する手段とを有す ることを特徴とするメモリアレイ。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US32412494A | 1994-10-14 | 1994-10-14 | |
US08/324,124 | 1994-10-14 | ||
PCT/US1995/013241 WO1996012229A1 (en) | 1994-10-14 | 1995-10-13 | Indexing and multiplexing of interleaved cache memory arrays |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH10509819A true JPH10509819A (ja) | 1998-09-22 |
Family
ID=23262186
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP8513403A Ceased JPH10509819A (ja) | 1994-10-14 | 1995-10-13 | インターリーブされるキャッシュメモリアレイのインデッキシングとマルチプレキシング |
Country Status (4)
Country | Link |
---|---|
US (1) | US6594728B1 (ja) |
EP (2) | EP0803095A1 (ja) |
JP (1) | JPH10509819A (ja) |
WO (1) | WO1996012229A1 (ja) |
Families Citing this family (62)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5732242A (en) * | 1995-03-24 | 1998-03-24 | Silicon Graphics, Inc. | Consistently specifying way destinations through prefetching hints |
JP3289661B2 (ja) * | 1997-11-07 | 2002-06-10 | 日本電気株式会社 | キャッシュメモリシステム |
US6118940A (en) * | 1997-11-25 | 2000-09-12 | International Business Machines Corp. | Method and apparatus for benchmarking byte code sequences |
US6574711B2 (en) * | 1999-12-27 | 2003-06-03 | Matsushita Electric Industrial Co., Ltd. | Semiconductor integrated circuit |
US6988167B2 (en) * | 2001-02-08 | 2006-01-17 | Analog Devices, Inc. | Cache system with DMA capabilities and method for operating same |
US20020108021A1 (en) * | 2001-02-08 | 2002-08-08 | Syed Moinul I. | High performance cache and method for operating same |
US7409703B2 (en) * | 2001-04-05 | 2008-08-05 | The Directv Group, Inc. | Method and system for efficient storage of data in a set top box |
JP2003099250A (ja) * | 2001-09-20 | 2003-04-04 | Oki Electric Ind Co Ltd | レジスタ読み出し回路及びマイクロプロセッサ |
US6862670B2 (en) * | 2001-10-23 | 2005-03-01 | Ip-First, Llc | Tagged address stack and microprocessor using same |
US6944713B2 (en) * | 2002-06-18 | 2005-09-13 | Intel Corporation | Low power set associative cache |
US7117315B2 (en) * | 2002-06-27 | 2006-10-03 | Fujitsu Limited | Method and apparatus for creating a load module and a computer product thereof |
US6931489B2 (en) * | 2002-08-12 | 2005-08-16 | Hewlett-Packard Development Company, L.P. | Apparatus and methods for sharing cache among processors |
US6986001B2 (en) * | 2002-10-21 | 2006-01-10 | Silicon Graphics, Inc. | System and method for hierarchical approximation of least recently used replacement algorithms within a cache organized as two or more super-ways of memory blocks |
US6973557B2 (en) * | 2003-02-04 | 2005-12-06 | Sun Microsystems, Inc. | Apparatus and method for dual access to a banked and pipelined data cache memory unit |
US20060083174A1 (en) * | 2004-10-04 | 2006-04-20 | Texas Instruments Inc. | Collision avoidance manager, method of avoiding a memory collision and a turbo decoder employing the same |
US7466647B2 (en) * | 2005-02-09 | 2008-12-16 | International Business Machines Corporation | Efficient muxing scheme to allow for bypass and array access |
US20070044003A1 (en) * | 2005-08-04 | 2007-02-22 | Jack Doweck | Method and apparatus of detecting and correcting soft error |
US7711934B2 (en) * | 2005-10-31 | 2010-05-04 | Mips Technologies, Inc. | Processor core and method for managing branch misprediction in an out-of-order processor pipeline |
US7734901B2 (en) * | 2005-10-31 | 2010-06-08 | Mips Technologies, Inc. | Processor core and method for managing program counter redirection in an out-of-order processor pipeline |
US7721071B2 (en) * | 2006-02-28 | 2010-05-18 | Mips Technologies, Inc. | System and method for propagating operand availability prediction bits with instructions through a pipeline in an out-of-order processor |
US20070204139A1 (en) | 2006-02-28 | 2007-08-30 | Mips Technologies, Inc. | Compact linked-list-based multi-threaded instruction graduation buffer |
US7689772B2 (en) * | 2006-05-04 | 2010-03-30 | Intel Corporation | Power-performance modulation in caches using a smart least recently used scheme |
US20080016326A1 (en) * | 2006-07-14 | 2008-01-17 | Mips Technologies, Inc. | Latest producer tracking in an out-of-order processor, and applications thereof |
US7370178B1 (en) | 2006-07-14 | 2008-05-06 | Mips Technologies, Inc. | Method for latest producer tracking in an out-of-order processor, and applications thereof |
US7650465B2 (en) | 2006-08-18 | 2010-01-19 | Mips Technologies, Inc. | Micro tag array having way selection bits for reducing data cache access power |
US7657708B2 (en) * | 2006-08-18 | 2010-02-02 | Mips Technologies, Inc. | Methods for reducing data cache access power in a processor using way selection bits |
US7647475B2 (en) * | 2006-09-06 | 2010-01-12 | Mips Technologies, Inc. | System for synchronizing an in-order co-processor with an out-of-order processor using a co-processor interface store data queue |
US8032734B2 (en) * | 2006-09-06 | 2011-10-04 | Mips Technologies, Inc. | Coprocessor load data queue for interfacing an out-of-order execution unit with an in-order coprocessor |
US8078846B2 (en) | 2006-09-29 | 2011-12-13 | Mips Technologies, Inc. | Conditional move instruction formed into one decoded instruction to be graduated and another decoded instruction to be invalidated |
US20080082793A1 (en) * | 2006-09-29 | 2008-04-03 | Mips Technologies, Inc. | Detection and prevention of write-after-write hazards, and applications thereof |
US9946547B2 (en) | 2006-09-29 | 2018-04-17 | Arm Finance Overseas Limited | Load/store unit for a processor, and applications thereof |
US7594079B2 (en) * | 2006-09-29 | 2009-09-22 | Mips Technologies, Inc. | Data cache virtual hint way prediction, and applications thereof |
US7707358B2 (en) * | 2006-11-20 | 2010-04-27 | Infineon Technologies Ag | Dual access for single port cache |
US7827356B2 (en) * | 2007-09-10 | 2010-11-02 | Qualcomm Incorporated | System and method of using an N-way cache |
US8131941B2 (en) * | 2007-09-21 | 2012-03-06 | Mips Technologies, Inc. | Support for multiple coherence domains |
US20090089510A1 (en) * | 2007-09-28 | 2009-04-02 | Mips Technologies, Inc. | Speculative read in a cache coherent microprocessor |
US8392663B2 (en) * | 2007-12-12 | 2013-03-05 | Mips Technologies, Inc. | Coherent instruction cache utilizing cache-op execution resources |
US8250305B2 (en) * | 2008-03-19 | 2012-08-21 | International Business Machines Corporation | Method, system and computer program product for data buffers partitioned from a cache array |
US8806145B2 (en) * | 2008-11-07 | 2014-08-12 | Oracle America, Inc. | Methods and apparatuses for improving speculation success in processors |
US8898401B2 (en) * | 2008-11-07 | 2014-11-25 | Oracle America, Inc. | Methods and apparatuses for improving speculation success in processors |
KR101466555B1 (ko) | 2010-03-12 | 2014-12-02 | 엘에스아이 코포레이션 | 플래시 메모리들을 위한 ldpc 소거 디코딩 |
US9104583B2 (en) | 2010-06-24 | 2015-08-11 | International Business Machines Corporation | On demand allocation of cache buffer slots |
WO2012061048A1 (en) | 2010-11-04 | 2012-05-10 | Rambus Inc. | Techniques for storing data and tags in different memory arrays |
US9727414B2 (en) | 2010-12-01 | 2017-08-08 | Seagate Technology Llc | Fractional redundant array of silicon independent elements |
CN103348330B (zh) | 2010-12-01 | 2017-05-24 | 希捷科技有限公司 | 采用独立硅元件的动态较高级冗余模式管理 |
US8719663B2 (en) | 2010-12-12 | 2014-05-06 | Lsi Corporation | Cross-decoding for non-volatile storage |
KR101564569B1 (ko) | 2011-01-18 | 2015-11-03 | 엘에스아이 코포레이션 | 상위-레벨 리던던시 정보 계산 |
WO2012103253A2 (en) | 2011-01-27 | 2012-08-02 | Soft Machines, Inc. | Multilevel conversion table cache for translating guest instructions to native instructions |
CN108874693B (zh) | 2011-01-27 | 2022-09-23 | 英特尔公司 | 使用处理器的转换后备缓冲器的基于客户指令到本机指令范围的映射 |
WO2012103245A2 (en) | 2011-01-27 | 2012-08-02 | Soft Machines Inc. | Guest instruction block with near branching and far branching sequence construction to native instruction block |
WO2012103367A2 (en) | 2011-01-27 | 2012-08-02 | Soft Machines, Inc. | Guest to native block address mappings and management of native code storage |
WO2012103359A2 (en) | 2011-01-27 | 2012-08-02 | Soft Machines, Inc. | Hardware acceleration components for translating guest instructions to native instructions |
WO2012103373A2 (en) | 2011-01-27 | 2012-08-02 | Soft Machines, Inc. | Variable caching structure for managing physical storage |
US9075727B2 (en) * | 2012-06-14 | 2015-07-07 | International Business Machines Corporation | Reducing penalties for cache accessing operations |
US8856431B2 (en) | 2012-08-02 | 2014-10-07 | Lsi Corporation | Mixed granularity higher-level redundancy for non-volatile memory |
WO2014151652A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines Inc | Method and apparatus to allow early dependency resolution and data forwarding in a microprocessor |
CN105122206B (zh) | 2013-03-15 | 2018-11-09 | 英特尔公司 | 用于支持推测的访客返回地址栈仿真的方法和装置 |
US9934152B1 (en) * | 2015-02-17 | 2018-04-03 | Marvell International Ltd. | Method and apparatus to use hardware alias detection and management in a virtually indexed physically tagged cache |
TWI514148B (zh) * | 2015-03-16 | 2015-12-21 | Univ Nat Sun Yat Sen | 快取記憶體 |
US10180906B2 (en) * | 2016-07-26 | 2019-01-15 | Samsung Electronics Co., Ltd. | HBM with in-memory cache manager |
GB2560336B (en) * | 2017-03-07 | 2020-05-06 | Imagination Tech Ltd | Address generators for verifying integrated circuit hardware designs for cache memory |
US10372452B2 (en) * | 2017-03-14 | 2019-08-06 | Samsung Electronics Co., Ltd. | Memory load to load fusing |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3967247A (en) | 1974-11-11 | 1976-06-29 | Sperry Rand Corporation | Storage interface unit |
US4381541A (en) | 1980-08-28 | 1983-04-26 | Sperry Corporation | Buffer memory referencing system for two data words |
US4616310A (en) * | 1983-05-20 | 1986-10-07 | International Business Machines Corporation | Communicating random access memory |
US4736293A (en) * | 1984-04-11 | 1988-04-05 | American Telephone And Telegraph Company, At&T Bell Laboratories | Interleaved set-associative memory |
US4953073A (en) | 1986-02-06 | 1990-08-28 | Mips Computer Systems, Inc. | Cup chip having tag comparator and address translation unit on chip and connected to off-chip cache and main memories |
US5212780A (en) * | 1988-05-09 | 1993-05-18 | Microchip Technology Incorporated | System for single cycle transfer of unmodified data to a next sequentially higher address in a semiconductor memory |
US5027270A (en) | 1988-10-11 | 1991-06-25 | Mips Computer Systems, Inc. | Processor controlled interface with instruction streaming |
US5063533A (en) * | 1989-04-10 | 1991-11-05 | Motorola, Inc. | Reconfigurable deinterleaver/interleaver for block oriented data |
US5307477A (en) | 1989-12-01 | 1994-04-26 | Mips Computer Systems, Inc. | Two-level cache memory system |
GB2246001B (en) * | 1990-04-11 | 1994-06-15 | Digital Equipment Corp | Array architecture for high speed cache memory |
US5386533A (en) * | 1990-11-21 | 1995-01-31 | Texas Instruments Incorporated | Method and apparatus for maintaining variable data in a non-volatile electronic memory device |
US5479630A (en) | 1991-04-03 | 1995-12-26 | Silicon Graphics Inc. | Hybrid cache having physical-cache and virtual-cache characteristics and method for accessing same |
US5289584A (en) * | 1991-06-21 | 1994-02-22 | Compaq Computer Corp. | Memory system with FIFO data input |
US5388072A (en) * | 1992-04-10 | 1995-02-07 | International Business Machines Corporation | Bit line switch array for electronic computer memory |
US5568442A (en) | 1993-05-17 | 1996-10-22 | Silicon Graphics, Inc. | RISC processor having improved instruction fetching capability and utilizing address bit predecoding for a segmented cache memory |
US5870574A (en) | 1993-04-12 | 1999-02-09 | Silicon Graphics, Inc. | System and method for fetching multiple groups of instructions from an instruction cache in a RISC processor system for execution during separate cycles |
US5442748A (en) * | 1993-10-29 | 1995-08-15 | Sun Microsystems, Inc. | Architecture of output switching circuitry for frame buffer |
US5572704A (en) | 1993-12-15 | 1996-11-05 | Silicon Graphics, Inc. | System and method for controlling split-level caches in a multi-processor system including data loss and deadlock prevention schemes |
US5604909A (en) | 1993-12-15 | 1997-02-18 | Silicon Graphics Computer Systems, Inc. | Apparatus for processing instructions in a computing system |
US5510934A (en) | 1993-12-15 | 1996-04-23 | Silicon Graphics, Inc. | Memory system including local and global caches for storing floating point and integer data |
US5740402A (en) | 1993-12-15 | 1998-04-14 | Silicon Graphics, Inc. | Conflict resolution in interleaved memory systems with multiple parallel accesses |
US5805855A (en) * | 1994-10-05 | 1998-09-08 | International Business Machines Corporation | Data cache array having multiple content addressable fields per cache line |
US5946710A (en) * | 1996-11-14 | 1999-08-31 | Unisys Corporation | Selectable two-way, four-way double cache interleave scheme |
-
1995
- 1995-10-13 JP JP8513403A patent/JPH10509819A/ja not_active Ceased
- 1995-10-13 WO PCT/US1995/013241 patent/WO1996012229A1/en not_active Application Discontinuation
- 1995-10-13 EP EP95938247A patent/EP0803095A1/en not_active Withdrawn
- 1995-10-13 EP EP02022292A patent/EP1278125A2/en active Pending
-
1997
- 1997-03-07 US US08/813,500 patent/US6594728B1/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
EP1278125A2 (en) | 2003-01-22 |
EP0803095A4 (ja) | 1997-10-29 |
US6594728B1 (en) | 2003-07-15 |
WO1996012229A1 (en) | 1996-04-25 |
EP0803095A1 (en) | 1997-10-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6594728B1 (en) | Cache memory with dual-way arrays and multiplexed parallel output | |
EP0734553B1 (en) | Split level cache | |
US7389402B2 (en) | Microprocessor including a configurable translation lookaside buffer | |
US6804799B2 (en) | Using type bits to track storage of ECC and predecode bits in a level two cache | |
US6138209A (en) | Data processing system and multi-way set associative cache utilizing class predict data structure and method thereof | |
US5963984A (en) | Address translation unit employing programmable page size | |
US10268586B2 (en) | Processor with programmable prefetcher operable to generate at least one prefetch address based on load requests | |
US5611071A (en) | Split replacement cycles for sectored cache lines in a 64-bit microprocessor interfaced to a 32-bit bus architecture | |
US5752274A (en) | Address translation unit employing a victim TLB | |
US5423014A (en) | Instruction fetch unit with early instruction fetch mechanism | |
US5835949A (en) | Method of identifying and self-modifying code | |
WO1996012227A1 (en) | An address queue capable of tracking memory dependencies | |
JPH08263373A (ja) | キャッシュにおけるスヌーピング装置および方法 | |
US6539457B1 (en) | Cache address conflict mechanism without store buffers | |
US10970077B2 (en) | Processor with multiple load queues including a queue to manage ordering and a queue to manage replay | |
TWI235916B (en) | Multilevel cache structure and method using multiple issue algorithm with over subscription avoidance for high bandwidth cache pipeline | |
US6557078B1 (en) | Cache chain structure to implement high bandwidth low latency cache memory subsystem | |
US6507892B1 (en) | L1 cache memory | |
US6546453B1 (en) | Proprammable DRAM address mapping mechanism | |
US6032241A (en) | Fast RAM for use in an address translation circuit and method of operation | |
US8108621B2 (en) | Data cache with modified bit array | |
US5905999A (en) | Cache sub-array arbitration | |
JPH0574103B2 (ja) | ||
US7251710B1 (en) | Cache memory subsystem including a fixed latency R/W pipeline | |
JP2001043133A (ja) | マルチプロセッサ・システムにおいてライトスルー・ストア・オペレーションでキャッシュ・コヒーレンシを維持するための方法およびシステム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060110 |
|
A313 | Final decision of rejection without a dissenting response from the applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A313 Effective date: 20060529 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20060711 |