JPH07253926A - キャッシュ・ミスによる時間ペナルティ減少方法 - Google Patents
キャッシュ・ミスによる時間ペナルティ減少方法Info
- Publication number
- JPH07253926A JPH07253926A JP7014479A JP1447995A JPH07253926A JP H07253926 A JPH07253926 A JP H07253926A JP 7014479 A JP7014479 A JP 7014479A JP 1447995 A JP1447995 A JP 1447995A JP H07253926 A JPH07253926 A JP H07253926A
- Authority
- JP
- Japan
- Prior art keywords
- cache
- data line
- data
- memory
- main memory
- 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.)
- Granted
Links
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/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- 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/12—Replacement control
-
- 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
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)
Abstract
シュ・スラッシング挙動を除去できるキャッシュ・ミス
による時間ペナルティ減少方法を提供する。 【構成】 第1のデータ・ラインを主記憶装置11から
補助キャッシュ23に転送する場合に、第1のデータ・
ラインの行先表示がデータ・キャッシュ14の表示をし
ている場合には、第1のデータ・ラインをデータ・キャ
ッシュ14に移動させる。また、第2のデータ・ライン
がデータ・キャッシュ14の外に移動され、第2のデー
タ・ラインが汚染されている場合には、第2のデータ・
ラインを主記憶装置11に戻し、第3のデータ・ライン
に対してプロセッサがアクセスを要求する場合には、第
3のデータ・ラインに対して並行して補助キャッシュ2
3とデータ・キャッシュ14をプロセッサにより探索す
る。
Description
ュ装置におけるキャッシュ・ミスに起因する時間ペナル
ティを低減させるためのキャッシュ・ミスによる時間ペ
ナルティ減少方法に係わる。
処理装置(以下、CPUという)と主記憶装置とを含
む。CPUが命令とオペランドとを復号し実行すること
が可能な速度は、命令とオペランドとが主記憶装置から
CPUに転送される上で可能な転送速度によって決ま
る。主記憶装置から命令とオペランドとをCPUが受け
取るために要する時間を減少させるために、コンピュー
タ装置の多くは、CPUと主記憶装置との間にキャッシ
ュ・メモリを含む。
い将来に使用されると推測される主記憶装置内の内容の
一部分を一時的に保持するために使用される小型の高速
バッファ記憶装置である。キャッシュ・メモリの主要な
目的は、データ又は命令の取り出しのためのメモリ・ア
クセスを行うのに要する時間を短縮することである。キ
ャッシュ・メモリ内に存在する情報に対するアクセスに
要する時間は、主記憶装置内に存在する情報に対するア
クセスに要する時間よりも遥かに短い。従って、キャッ
シュ・メモリを有するCPUでは、命令とオペランドと
の取出し及び/又は格納における待ち時間は著しく短く
て済む。
ータを含む多数のブロックによって構成される。各ブロ
ックは、そのブロックが主記憶装置のどのブロックのコ
ピーであるかを一意的に同定するアドレス・タグに対応
付けられる。プロセッサがメモリ参照を行う度に、要求
されたデータのコピーがキャッシュ・メモリ内に存在す
るかどうかを調べるためにアドレス・タグ比較が行われ
る。要求されたメモリ・ブロックがキャッシュ・メモリ
内に存在しない場合には、その要求されたブロックが主
記憶装置から検索され、キャッシュ・メモリ内に格納さ
れ、プロセッサに供給される。
ャッシュ・メモリを使用することに加えて、CPUは、
主記憶装置にデータを直接書き込む代わりにキャッシュ
・メモリ内にデータを書き込むことも可能である。プロ
セッサがキャッシュ・メモリにデータを書き込むことを
必要とする時には、キャッシュ・メモリは、データがそ
の中に書き込まれるべきデータ・ブロックがキャッシュ
・メモリ内に存在するかどうかを調べるために、アドレ
ス・タグの比較を行う。データ・ブロックが存在する場
合には、データがキャッシュ・メモリ内のそのデータ・
ブロック内に書き込まれる。多くの装置の場合には、そ
の後で、そのデータ・ブロックのためのデータ「汚染ビ
ット(dirty bit) 」が設定される。このダーティ・ビッ
トは、当該データ・ブロック内のデータが汚染されてい
る(即ち、変更されている)ということを示し、従っ
て、当該データ・ブロックがキャッシュ・メモリから削
除される前に、その変更されたデータが主記憶装置内に
書き込まれなければならない。データがその中に書き込
まれるはずのデータ・ブロックがキャッシュ・メモリ内
に存在しない時には、そのデータブロックがキャッシュ
・メモリ内に移動させられるか、データが主記憶装置内
に直接書き込まれなければならない。新たなデータがキ
ャッシュ・メモリ内に入れられる時に重ね書きされるか
又はキャッシュ・メモリからコピーされて移動させられ
るデータ・ブロックは、犠牲ブロック又は犠牲ラインと
呼ばれる。
モリが、第1のキャッシュ・メモリと主記憶装置との間
に直列に付加される場合もある。第1のキャッシュ・メ
モリは、典型的には、第2のキャッシュ・メモリ内のデ
ータの部分セットを有する。同様に、第2のキャッシュ
・メモリは、典型的には、主記憶装置内のデータの部分
セットを有する。アクセスされるデータは、最初に、第
1のキャッシュ・メモリ内で探索される。第1のキャッ
シュ・メモリ内でミスがある場合には、そのアクセスさ
れたデータが第2のキャッシュ・メモリ内で探索され
る。第2のキャッシュ・メモリ(以下、キャッシュ・メ
モリを単に「キャッシュ」という)内でミスがある場合
には、そのアクセスされたデータが主記憶装置の外に移
動させられる。
の一例では、第1レベルのキャッシュが第2レベルのキ
ャッシュの適正な部分セットである。この「適正な部分
セット」という術語は、第1レベルのキャッシュ内の全
項目が第2レベルのキャッシュ内にも存在するというこ
とを意味する。第2レベルのキャッシュは、第1レベル
のキャッシュ内に存在しない追加の項目を含む。第1レ
ベルのキャッシュは第2レベルのキャッシュよりも容量
が小さく、且つ第2レベルのキャッシュよりもプロセッ
サに近い位置にある。第1レベルのキャッシュは、第2
レベル・キャッシュよりも容量が小さく、且つ第2レベ
ル・キャッシュよりもプロセッサに近い位置にあり、更
には、その対応する第2レベルのキャッシュ又は記憶装
置のアクセス待ち時間よりも短いアクセス待ち時間を有
するので、一般的に性能の改善をもたらすことが可能で
ある。
現するためには、幾つかの異なった動作が必要である。
メモリ参照は一般的にロード命令又は格納命令である。
先ず最初に、最も単純で最も高速度の形で、メモリ参照
が第1レベル・キャッシュ内でヒットすることが可能で
ある。「ヒット(hit) 」とは、「チェックされているキ
ャッシュ(第1レベル又は第2レベル)内に、所期メモ
リ・アドレスのためのデータが存在する場合」と定義さ
れる。「ミス」とは、「チェックされているキャッシュ
(第1レベル又は第2レベル)内に、所期メモリ・アド
レスのためのデータが存在しない場合」と定義される。
第1レベル・キャッシュでヒットがあった時には、サイ
クル・ペナルティはゼロであり、メモリ参照は処理ペナ
ルティなしに完了する。
キャッシュ内でヒットが生じる第1レベルのキャッシュ
・ミスである。これは、第2レベルのキャッシュから適
切な16ビット量で単一の第1レベルのキャッシュを満
たすために一連の動作シーケンスが行われることを引き
起こす。その後で、データがプロセッサに送られるか、
格納が完了する。これは、中速度の動作であり、プロセ
ッサは、メモリ参照が完了されるのを待つ間、停止され
られる。
ルのキャッシュと第2レベルのキャッシュの両方をミス
する場合である。この例では、主記憶装置から戻り、第
2レベルのキャッシュの中に当該ラインを移動させるた
めに、長い一連の動作シーケンスが開始させられる。こ
のデータが記憶装置から第2レベルのキャッシュにコピ
ーされる時には、第1レベルのキャッシュが再び参照さ
れ、この時には、第2レベルのキャッシュ内でヒットす
る第1レベルのキャッシュ・ミスによる。これは、第2
レベルのキャッシュ・ラインの当該部分が第1レベル・
キャッシュ内に書き込まれると、その後で、要求された
データがプロセッサに供給されるか、格納が完了され
る。
ッピング型である。即ち、キャッシュ内の1つ以上の項
目にアクセスするために索引が使用される。この場合、
マッチングが生じるかどうかを判定するために、その項
目のためのタグが、アドレスのタグ部分と比較される。
複数のデータ・ランダム・アクセス・メモリ(以下、R
AMという)に同時にアクセスするために、単一の索引
が使用される。データRAMは、1つ以上の物理RAM
集積回路によって実現されることが可能である。1つの
セットは、単一のキャッシュ索引によってアドレス指定
されるライン全ての集まりである。単一のキャッシュ索
引によってアドレス指定されるデータRAMの数は、キ
ャッシュの方向数を表す。例えば、1つのキャッシュに
おいて2つのデータRAMからデータをアクセスするた
めに単一のキャッシュ索引が使用される場合には、その
キャッシュは2方向セット連想キャッシュである。同様
に、1つのキャッシュにおいて4つのデータRAMから
データをアクセスするために単一のキャッシュ索引が使
用される場合には、そのキャッシュは4方向セット連想
キャッシュである。
ータRAM毎にタグ比較が行われる。タグ比較が所期の
データ・ブロックが特定のデータRAM内に存在するこ
とを示す時には、その特定のデータRAMからのデータ
に基づいて/によって、その動作が行われる。
用されない。完全連想キャッシュに対してアクセスが行
われる時には、完全連想キャッシュ内の各キャッシュ・
ラインに対してタグ比較が行われる。所期データ・ライ
ンがそのキャッシュ内に存在することをタグ比較が示す
時には、その特定のデータ・ラインからのデータに基づ
いて/によって、その動作が行われる。
は、例えばDavid A. Patterson, JohnL. Hennessy, Com
puter Architecture A Quatitative Approach, Morgan
Kauffman Publishers, Inc., San Maeto, California,
1990(1990年、カリフォルニア州、サン・メイ
ト、「モルガン・カフマン出版株式会社」発行、「ダビ
ッド・エイ・パターソン」、「ジョン・エル・ヘネシ
イ」共著、「容量処理方法に関するコンピュータ構
造」)のページ404〜423、ページ454〜464
を参照されたい。
では、完全連想犠牲キャッシュが、より大容量の直接マ
ッピング・キャッシュから犠牲ラインを受け取る。直接
マッピング・キャッシュ内でミスがある時には、完全連
想犠牲キャッシュが、完全連想キャッシュ内に発見され
る場合が時としてある。Norman P. Jouppi, Improving
Direct-Mapped Cache Performance by the Addition of
a Small Fully-Associative Cache and Prefetch Buff
ers, Proceedings17th ISCA,May 1990{19
90年5月、第17回議事録の「ノーマン・ピィ・ジュ
ピィ」による「小容量完全連想キャッシュと、先取りバ
ッファの追加による改善直線マッピング・キャツシュ性
能」のページ364〜373seattle,WA(シアトル,ダ
フリュウ・エイ)}を参照されたい。
は、キャッシュ装置が、主記憶装置内に格納されプロセ
ッサによって使用されるデータをバッファリングする。
このキャッシュ装置は、第1のキャッシュと、第2のキ
ャッシュと、第1の転送手段と、第2の転送手段と、第
3の転送手段と、アクセス手段とを含む。第1のキャッ
シュは完全連想型である。第2のキャッシュは直接マッ
ピング型である。第1の転送手段は、主記憶装置から第
1のキャッシュにデータ・ラインを転送する。第2の転
送手段は、第1のキャッシュから第2のキャッシュにデ
ータ・ラインを転送する。第3の転送手段は第2のキャ
ッシュから主記憶装置にデータ・ラインを転送する。第
1のキャッシュからデータ・ラインのアクセスと、第2
のキャッシュからのデータ・ラインのアクセスとが、並
行して行われる。
シュ内に索引を生成するためにハッシュ関数が使用され
る。その索引によってアクセスされるデータ・ラインの
ためのタグが、第2のキャッシュ内でヒットがあったか
どうかを判定するために、所期データ・ラインのための
タグと比較される。
ス1回毎に、ヒットがあるかどうかを判定するために、
第1のキャッシュ内の全データ・ラインのためのタグが
チェックされる。内容参照可能メモリが第1のキャッシ
ュのためのタグを記憶する。データ・ラインが、先入れ
先出し(以下、FIFOという)記憶装置の形の第1の
キャッシュによって格納される。
インが第1のキャッシュの外に移動させられる時のデー
タ・ラインのための行先を示す表示が、第1のキャッシ
ュ内の各データ・ラインと共に格納される。この表示
は、データ・ラインが第2のキャッシュ・ラインに移動
させられるのか又は主記憶装置に移動させられるかを表
示する。
第1のキャッシュ内に先取りされるためのメモリ空間を
与えるために、予め決められた数より多くのデータ・ラ
インを第1のキャッシュが含む時に、データ・ラインが
1度に2つずつ第1のキャッシュの外に移動させられ
る。これら2つのデータ・ラインが第2のキャッシュ内
の同一の記憶場所にマッピングされる時には、これら2
つのデータ・ラインのどちらか一方が主記憶装置に移動
させられる。
の場合には、プロセッサは、キャッシュ・ミスがある場
合に使用されることになっている、又は、「ヒット」デ
ータ・ラインのための参照ビットがゼロにセットされ
る、第1のキャッシュ内のデータ・ライン上でヒットが
ある場合に使用されることになっている、先取りアドレ
スを生成する。先取りアドレスのためのデータ・ライン
が既に第1と第2のキャッシュ内に存在する時には、更
に動作を行う必要はない。先取りアドレスのためのデー
タ・ラインが既に第1と第2のキャッシュ内に存在しな
い時には、先取りアドレスのためのデータ・ラインが先
取りされる。先取りデータ・ラインのための参照ビット
がクリアされ(即ち、ゼロにセットされ)、先取りデー
タ・ラインが参照されなかったことを表示する。「未参
照(unreferenced)」という印を付けられている第1のキ
ャッシュ内のデータ・ラインにおいてキャッシュ・ヒッ
トがある場合には、参照ビットが、そのデータ・ライン
の参照が現時点で完了したということを表示する「1」
にセットされる。この好適な実施例では、「未参照」と
いう印を付けられている第1のキャッシュ内のデータ・
ライン上においてキャッシュ・ヒットがあり、かつ先取
りアドレスが生成され終わっている時には、その先取り
アドレスのためのデータ・ラインがキャッシュの一方の
中に存在しない場合に、その先取りアドレスのためのデ
ータ・ラインが主記憶装置から先取りされ、第1のキャ
ッシュの中に入れられる。先取りデータ・ラインのため
の参照ビットがクリアされ、先取りデータ・ラインが参
照されなかったことを表示する。
ウェアの追加だけによって、直接マッピング型キャッシ
ュに典型的に関連したスラッシング挙動を取り除く。
ック線図である。プロセッサ12と主記憶装置11とが
バス10に接続された形で示されている。プロセッサ1
2は、命令キャッシュ13とデータ・キャッシュ14と
を使用する。命令キャッシュ13は、プロセッサ12用
の命令をスタティック・ランダム・アクセス記憶装置
(以下、SRAMという)内に格納する。データ・キャ
ッシュ14は、プロセッサ12用のデータをSRAM内
に格納する。
ック線図を示す。プロセッサ12は、バス・インターフ
ェース論理回路26と、命令キャッシュ・インターフェ
ース論理回路24と、データ・キャッシュ論理回路25
と、論理演算装置(ALU)22と、アドレス変換バッ
ファ(以下、TLBという)21と、補助キャッシュ2
3とを含む形で示されている。装置のバス・インターフ
ェース論理回路26は、装置のバス10に対するインタ
ーフェースをプロセッサ12に与える。命令キャッシュ
・インターフェース論理回路24は、命令キャッシュ1
3に対するインターフェースをプロセッサ12に与え
る。データ・キャッシュ論理回路25は、データ・キャ
ッシュ14に対するインターフェースをプロセッサ12
に与える。後で更に詳細に説明するように、補助キャッ
シュ23は、論理演算装置22に対してデータを与える
ためにデータ・キャッシュ14と並列に使用される。ア
ドレス変換バッファ21は、補助キャッシュ23内に格
納されたデータとデータ・キャッシュ14内に格納され
たデータとに対してアクセスするために使用されるキャ
ッシュ・タグを生成するために、仮想アドレスを実アド
レスにマッピングするために使用される。
構成を示す。この好適な実施例では、補助キャッシュ2
3は、64個の完全連想32バイト・キャッシュ・ライ
ンから成る。補助キャッシュ23は、アドレスの一部分
が項目タグ各々と一致させられることを可能にする内容
参照可能メモリ(以下、CAMという)内にタグを格納
する。この好適な実施例では、データ・キャッシュ14
は直接マッピングされ、1メガバイトまでのデータ(3
2K32バイト・キャッシュ・ライン)から成る。
ャッシュ14と補助キャッシュ23との両方が並行して
アクセスされる。(図2に示される)TLB21からア
クセスされる実アドレスが、アクセスのための補助キャ
ッシュ・アクセス・タグを補助キャッシュ23内に生成
するために使用される。補助キャッシュ・アクセス・タ
グが、補助キャッシュ23内のいずれかのデータ・ライ
ンのためのタグと一致する場合には、データ・ライン3
6上にヒットが発生させられる。ヒットは、補助キャッ
シュから「ヒット」データを選択しそのヒット・データ
をデータ・パス33上に位置させるように、セレクタ3
7に信号を送る。
に、索引13が、データ・キャッシュ14内の単一のデ
ータ・ラインにアクセスするために使用される。この好
適な実施例では、その索引は、アクセスされた記憶場所
のための仮想アドレスの一部分をハッシュすることによ
って導き出されたハッシュ値から構成される。データ・
キャッシュ14内の索引を付けられた記憶場所のための
アドレス・タグが、データライン31上に位置したアク
セス記憶場所の実アドレスの一部分と比較される。この
比較は、比較論理回路35によって表される。補助キャ
ッシュ23又はデータ・キャッシュ14からのヒットが
ある場合には、論理回路34がヒット・データ・ライン
32上にヒット信号を生成する。
14との両方からのヒットがある場合には、新たなデー
タ・ラインが主記憶装置11から先取りされる。データ
・ラインは、FIFOの順序で補助キャッシュ23から
出し入れされる。主記憶装置11から要求される全デー
タ・ラインは、補助キャッシュ23内に移動させられ
る。データ・ラインが補助キャッシュ23の外に移動さ
せられることになっている時には、そのデータ・ライン
はデータ・キャッシュ14に入れられるか又は主記憶装
置11に戻される。補助キャッシュ23からのデータ・
ラインをデータ・キャッシュ14内に移動させるか又は
主記憶装置11に戻すかの決定は、補助キャッシュ23
内のデータ・ラインと共に格納された割り当てビットの
値によって決まる。割り当てビットの値は、そのデータ
・ラインが補助ビット23の中に移されることを生じさ
せた命令と、その命令が、キャッシュ・ヒット副命令欄
(cache hit sub-operation field) において指定された
「非割当て」キャッシュ・ヒットを有したかどうかとい
うことに基づいて決定される。例えば、この好適な実施
例では、短い変位ロード及び格納と索引付きロード及び
格納とが、キャッシュ・ヒット副命令欄を有する。
ード命令又は格納命令がそのキャッシュをミスする場合
には、アクセスされたデータ・ラインといずれかの先取
りされたデータ・ラインとの両方が補助キャッシュ23
内に入れられ、その割当てビットがクリアされ(即ち、
ゼロにセットされ)、「非割当て」を表示する。これに
加えて、指定された「非割当て」キャッシュ・ヒットを
伴うデータ・アクセスが、参照ビットがクリアされる
(下記参照)補助キャッシュ23内のデータ・ライン上
でのヒットに結果し、従って(後で更に詳細に説明する
ように)先取りを生じさせる場合には、その好ましいデ
ータ・ラインが、補助キャッシュ23内に入れられ、そ
の割当てビットがクリアされ(即ち、ゼロにセットさ
れ)、「非割当て」を表示する。他の全てのデータ・ラ
インは補助キャッシュ23に入れられ、その割当てビッ
トが「1」にセットされ、「割当て」を表示する。
置換されることになっている時には、そのデータ・ライ
ンがデータ・キャッシュ14と(汚染ビットの場合に)
主記憶装置11とのどちらに移されなければならないか
を決定するために、割当てビットがチェックされる。そ
のデータ・ラインのための割当てビットが1にセットさ
れる場合には、そのデータ・ラインはデータ・キャッシ
ュ14に移される。そのデータ・ラインのための割当て
ビットが0にセットされる場合には、そのデータ・ライ
ンが汚染されている(即ち、補助キャッシュ内に入れら
れてから変更が加えられている)ならば、そのデータ・
ラインが主記憶装置11に移される。そのデータ・ライ
ンが汚染されていない場合には、そのデータラインは、
主記憶装置11に再び書き込まれることなしに、廃棄さ
れる。
ラインは、そのデータが長時間に亙って使用されること
が無いと推測され且つそのデータの同一データ・ライン
内の他のデータが近い将来に使用されると推測される時
に、「非割当て」と印付けされる。キャッシュ・ヒット
のための更に別の情報は、「可変的取出しを伴うキャッ
シュ・メモリと置換スキーマ(Cache Memory with Varia
ble Fetch and Replacement Schemes)」に関してWillia
m R. Bryg (ウィリアム・アール・ブリッグ他に対して
与えられた米国特許第4,928,239号に説明され
ている。データ・キャッシュ14内のデータ・ラインが
置換されることになっている時には、そのデータ・ライ
ンがデータ・キャッシュ14と主記憶装置11とのどち
らに移動させられなければならないかを決定するため
に、割当てビットがチェックされる。
内に移動させる前にデータ・ラインを補助キャッシュ2
3内に移動させることが、直接マッピング・キャッシュ
に典型的に関連したスラッシング挙動を取り除く。例え
ば、ベクトル計算では、i=0〜Nの場合に次(1)式
のようでる。
[i]が同一のキャッシュ索引にマッピングされる場合
には、直接マッピングされたキャッシュだけが上記計算
の各要素に対してスラッシングを与えるだけだろう。こ
れは、このループの8回の反復において32回のキャッ
シュミスを生じさせるだろう。しかし、補助キャッシュ
の場合には、各データラインが、他を移動させずにその
キャッシュシステム内に移される。順次32ビットデー
タ要素であると仮定すると、そのループの8回の反復
は、最初の4つのキャッシュ・ミスだけしか引き起こさ
ない。より大きなキャッシュでもこのタイプのキャッシ
ュ・スラッシングを低減させることがないということに
留意されたい。最新のコンパイラは、スラッシングを低
減又は除去するためにデータ構造を再位置合せすること
が可能であることが多いが、適正な最適化を可能にする
ために十分なコンパイル時間情報が、アプリケーション
において常に得られることが可能であるわけではない。
補助キャッシュ23は、最小限度のハードウェアしか必
要とせずに、コンパイラによる最適化なしにキャッシュ
・スラッシングを除去するという点で優れている。
FO待ち行列の形に順序付けられる。キャッシュ・ミス
又は先取りのために主記憶装置11から要求される新た
なデータラインが、上記待ち行列の最上部に置かれ、古
い項目が上記待ち行列の最下部の外に移動させられる。
FIFO待ち行列内のデータ・ラインに対する消去又は
排除が、待ち行列が循環するにつれて取り除かれるバブ
ル(空白スロット)を生じさせる。3/4満杯FIFO
( a three quater full FIFO)を維持するための試みが
行われる。従って、典型的なミス待ち時間下で隠される
可能性がある幾つかのデータ・ラインが、FIF0が4
8個未満の項目しか含まなくなるまで、ミスの間に補助
キャッシュ23の外に移動させられる。この好適な実施
例では、各ミス毎に、待ち時間が、2つのデータ・ライ
ンが補助キャッシュ23の外に移動させられることを可
能にする。
イン用のメモリ空間を確保するように補助キャッシュ2
3の外にデータ・ラインを移動させるために、追加のマ
シン・サイクルを必要とせずに補助キャッシュ23の中
に先取りデータのためのメモリ空間を実現にするために
は、補助キャッシュ23が3/4満杯以下であることが
最適である。
説明するように、データ・ラインが主記憶装置11から
補助キャッシュ23の中に先取りされることが可能であ
る。補助キャッシュ23が満杯であり、且つ、補助キャ
ッシュ23内に格納されなければならない先取りデータ
・ラインがある場合には、1つのデータ・ラインが補助
キャッシュ23の外に移動させられる。しかし、補助キ
ャッシュ23が完全に満杯ではない時には、データ・ラ
インが移動させられる必要はない。先取りデータのため
のメモリ空間を事前に作るために、ミスが発生し且つ補
助キャッシュ23が3/4満杯以上である(即ち、全て
のバブルを含むFIFOの初めと終わりとの間に48個
以上の項目が存在する)時には、2つのデータ・ライン
が補助キャッシュ23の外に移動させられる。
先取りデータがキャッシュ・ミス時に補助キャッシュ2
3内に移されることが可能である。例えば、キャッシュ
・ミス時に、プロセッサが、その次のデータ・ラインが
既に補助キャッシュ23内に存在するかどうかを確かめ
るためにチェックを行う。そうでない場合には、プロセ
ッサが、ミスがあるデータ・ラインを先取りし、更に
は、その次のデータ・ラインを先取りする。
スが、単一のデータ・ラインが主記憶装置11から先取
りされることを要求し(即ち、第2のデータ・ラインの
先取りがなく)、且つ、補助キャッシュ23が3/4満
杯以上である場合には、2つのデータ・ラインが補助キ
ャッシュ23の外に移動させられる。これらのデータラ
インはミス待ち時間の間に外に移動させられることが可
能であり、一方、プロセッサ12が機能停止させられ、
データが主記憶装置11から戻されるのを待機する。メ
モリ空間を作るためにデータ・ラインが外に移動させら
れる必要がないので、プロセッサが機能停止を回避する
が故に、後続の先取りヒットが有利である。
IFO順にデータ・キャッシュに移される。2つのデー
タ・ラインがミス時に補助キャッシュ23の外に移動さ
せられ、且つ、これらのデータ・ラインの両方がデータ
・キャッシュ14内の同一の索引にマッピングされる場
合には、その第1のデータ・ラインがデータ・キャッシ
ュ14に移され、第2のデータ・ラインが主記憶装置1
1に戻される。
ブロック線図を示す。データ・ラインを格納するために
SRAM43が使用される。SRAM43内に格納され
たデータ・ラインのためのタグを格納するために、CA
M41が使用される。ビット・メモリ42は、様々なキ
ャッシュ制御ビットを格納するために使用される。各デ
ータ・ラインと共に格納されるキャッシュ制御ビット
は、上記の(カラム46によって表される)割当てビッ
トと、下記の(カラム47で表される)参照ビットとを
含む。補助キャッシュ23からの特定のデータ・ライン
をデータ・キャッシュ14と主記憶装置11のどちらに
移動させるかの決定は、その特定のデータ・ラインのた
めの格納された割当てビットの値に依存する。FIFO
ポインタ44は、FIFOメモリとしてのSRAMの使
用を容易にするために、SRAM43中の最初の項目の
位置と最後の項目の位置とを表示する。補助キャッシュ
がアクセスされ、キャッシュ・ミスがあることをCAM
41が検出する時に、選択論理回路45がデータ・パス
33に適正なデータ・ラインを与える。
シュ14と補助キャッシュ23とに対するアクセスがそ
の両方のキャッシュにおけるミスに起因する場合には、
プロセッサ12が主記憶装置11からの「ミス・データ
・ラインを要求する。そのミスデータ・ラインが主記憶
装置11から補助キャッシュ23内に移動させられる時
に、そのデータ・ラインのためのカラム47内の参照
(R)ビットがセットされ、そのデータ・ラインが参照
されたことを表示する。
クセスの場合には、キャッシュ・ミスがある時に使用さ
れる、又は、「ヒット」データ・ラインのための参照ビ
ットがゼロにセットされる補助キャッシュ14内のデー
タ・ライン上でヒットがある時に使用される先取りアド
レスを、プロセッサ12が生成する。一般的に、プロセ
ッサ12によって生成される先取りアドレスは、アクセ
スされたデータ・ラインの次に続くデータ・ラインであ
る。
のためのデータ・ラインが既にデータ・キャッシュ14
又は補助キャッシュ23の内に存在するならば、更に別
の動作が行われる必要がない。先取りアドレスのための
データ・ラインが未だデータ・キャッシュ14又は補助
キャッシュ23の内に存在しないならば、その先取りア
ドレスのためのデータ・ラインが先取りされる。先取り
されたデータ・ラインが主記憶装置11から補助キャッ
シュ23の中に移される時に、その新たなデータ・ライ
ンのためのカラム47内の参照(R)ビットがクリアさ
れ、その先取りデータ・ラインが参照されなかったこと
を表示する。
けされている(即ち、その項目のためのカラム47内の
参照ビットがクリアされている)補助キャッシュ23内
のデータ・ライン上にキャッシュ・ヒットがあり、且
つ、プロセッサ12が先取りアドレスを生成する時に、
プロセッサ12が、そのデータ・ラインのためのカラム
47内の参照ビットをセットし、そのデータ・ラインが
現時点で参照済みであるということを表示する。これに
加えて、プロセッサ12は、先取りアドレスのためのデ
ータ・ラインが既にデータ・キャッシュ14又は補助キ
ャッシュ23の内に存在するかどうかをチェックする。
そうでない場合には、先取りアドレスのためのデータ・
ラインが先取りされる。先取りデータ・ラインが主記憶
装置11から補助キャッシュ23の中に移される時に、
その新たなデータ・ラインのためのカラム47内の参照
(R)ビットがクリアされ、その先取りデータ・ライン
が参照されなかったことを表示する。
ス10を経由してプロセッサ12に転送される。この好
適な実施例では、バス10は64ビット幅であり、各デ
ータ・ラインは256ビット幅である。従って、プロセ
ッサ12に転送されるべき全データ・ライン1つ当たり
4つのバス・サイクルが必要である。プロセッサ実行時
間に対する影響を最小限にするために、バス10を経由
したデータ転送が完了するまで各データ・ラインがムー
ブ・イン・バッファ48内で併合される。そのデータ・
ライン全体がムーブ・イン・バッファ48に転送され終
わると、そのデータ・ラインが単一のサイクルでSRA
M43内に書き込まれる。従って、補助キャッシュ23
は、より大きい割合の時間に亙ってプロセッサ12にと
って使用可能である。
と実施例とを開示し説明するものである。当業者には理
解されるように、本発明は、本発明の思想又は本質的特
徴とから逸脱することなく、他の特定の形態で具体化さ
れることが可能である。従って、本発明のこの開示内容
は、特許請求の範囲で請求される本発明の範囲を非限定
的に例示するものであることが意図されている。
が、ここで各実施例の理解を容易にするために、各実施
例ごとに要約して以下に列挙する。
装置内に格納され、かつプロセッサによって利用される
データをバッファリングするための方法であって、
(a).データ・ラインを前記主記憶装置から第1のキ
ャッシュに転送する工程であって、前記データ・ライン
が前記第1のキャッシュの外に移動させられる時の前記
データ・ラインの行先を表示するための表示を前記デー
タ・ライン各々と共に前記第1のキャッシュ内に格納
し、前記表示は前記データ・ラインが第2のキャッシュ
に送られるのかどうか又は前記主記憶装置に戻されるの
かどうかを表示する前記工程と、(b).第1のデータ
ラインが前記第1のキャッシュの外に移動させられ、か
つ前記表示は前記第1のデータ・ラインが前記第2のキ
ャッシュに送られなければならないことを表示する時
に、前記第1のデータ・ラインを前記第2のキャッシュ
に移動させる工程と、(c).第2のデータ・ラインが
前記第2のキャッシュの外に移動させられ、かつ、汚染
されている時に、前記第2のデータ・ラインを前記主記
憶装置に戻す工程と、(d).前記プロセッサが第3の
データ・ラインに対するアクセスを要求する時に、前記
第3のデータ・ラインに対して平行して前記第1のキャ
ッシュと前記第2のキャッシュとを探索する工程と、を
含むキャッシュ・ミスによる時間ペナルティ減少方法で
ある。
記第2のキャッシュの中に索引を生成する副次的工程
と、(d.2).前記第2のキャッシュ内の第4のデー
タ・ラインにアクセスするために前記索引を使用する副
次的工程と、(d.3).前記第4のデータ・ラインが
前記第3のデータ・ラインであるかどうかを決定するた
めに、前記第4のデータ・ラインのためのタグを前記第
3のデータ・ラインのためのタグと比較する副次的工程
と、(d.4).前記第1のキャッシュ内のデータ・ラ
インのいずれかが前記第3のデータ・ラインであるかど
うかを決定するために、前記第1のキャッシュ内に格納
された個々のデータ・ラインのためのタグをチェックす
る副次的工程と、を含み、前記副次的工程(d.4)が
前記副次的工程(d.1)から前記副次的工程(d.
3)までと共に並行して行われる上記1に記載のキャッ
シュ・ミスによる時間ペナルティ減少方法である。
のデータ・ラインが前記第1のキャッシュの外に移動さ
せられる時に前記第1のデータ・ラインが前記第1のキ
ャッシュ内の他のデータ・ラインのいずれよりも長く前
記第1のキャッシュ内に存在しているように、前記第1
のキャッシュ内のデータ・ラインが先入れ先出しの形で
処理される上記1に記載のキャッシュ・ミスによる時間
ペナルティ減少方法である。
いデータラインを前記第1のキャッシュが含む時に、追
加のデータラインを前記第1のデータ・ラインと共に前
記第1のキャッシュから移動させる副次的工程を含む上
記1に記載のキャッシュ・ミスによる時間ペナルティ減
少方法である。
追加のデータ・ラインは、前記第1のデータ・ラインが
マッピングされる前記第2のキャッシュ内の記憶場所と
同一の前記第2のキャッシュ内の記憶場所にマッピング
される時に、前記第2のデータ・ラインを前記主記憶装
置に移動させる上記4に記載のキャッシュ・ミスによる
時間ペナルティ減少方法である。
(d)において、前記第3のデータ・ラインが前記第1
のキャッシュ内に存在せずかつ前記第2のキャッシュ内
に存在しない時に、前記主記憶装置から前記第1のキャ
ッシュに前記第3のデータ・ラインを転送する工程を含
み、この工程が更に、(i).前記第1のキャッシュ内
で、前記第3のデータ・ラインを「参照済」として印付
けする副次的工程と、(ii).前記主記憶装置から前
記第1のキャッシュに第4のデータ・ラインを先取りす
る副次的工程と、(iii).前記第1のキャッシュ内
で、前記第4のデータ・ラインを「未参照」として印付
けする副次的工程と、を含む上記1に記載のキャッシュ
・ミスによる時間ペナルティ減少方法である。
前記プロセッサが前記第4のデータ・ラインに対するア
クセスを要求する時に、前記第1のキャッシュ内で、前
記第4のデータ・ラインを「参照済」として印付けし、
前記主記憶装置から前記第1のキャッシュに第5のデー
タ・ラインを先取りし、前記第1のキャッシュ内で、前
記第5のデータ・ラインを「未参照」として印付けする
副次的工程と、を含む上記6に記載のキャッシュ・ミス
による時間ペナルティ減少方法である。
によって利用されるデータをバッファリングするために
キャッシュ・ミスによる時間ペナルティ減少方法に適用
されるキャッシュシ装置であって、データ・ラインを格
納するためのデータ・ラインメモリと、前記データ・ラ
イン・メモリ内に格納されたデータ・ラインがその第1
のキャッシュの外に移動させられる時に前記データ・ラ
インの行先を表示する表示を前記データ・ライン各々と
共に格納するための格納手段とを含む、第1のキャッシ
ュと、第2のキャッシュと、前記主記憶装置から前記第
1のキャッシュにデータ・ラインを転送するために、前
記第1のキャッシュと前記主記憶装置とに結合した第1
の転送手段と、前記第1のキャッシュの外に移動させら
れるいずれの第1のデータ・ラインのための行先も前記
格納手段内に格納された前記第1のデータ・ラインのた
めの表示の値に依存している、前記第1のキャッシュか
ら前記第2のキャッシュと前記第1のキャッシュから前
記主記憶装置とにデータ・ラインを転送するために、前
記第1のキャッシュと前記第2のキャッシュと前記主記
憶装置とに結合した第2の転送手段と、前記第2のキャ
ッシュから前記主記憶装置にデータ・ラインを転送する
ために、前記第2のキャッシュと前記主記憶装置とに結
合した第3の転送手段と、前記第1のキャッシュと前記
第2のキャッシュとに対して並行してアクセスするため
のアクセス手段と、を含む前記キャッシュ・ミスによる
時間ペナルティ減少方法に適用されるキャッシュ装置で
ある。
ャッシュ内に索引を生成するために、前記第2のキャッ
シュに結合された索引生成手段と、前記索引生成手段に
よって生成された索引によってアクセスされたデータ・
ラインのためのタグを所期データ・ラインのためのタグ
と比較するために、前記第2のキャッシュに結合した比
較手段と、前記第1のキャッシュ内のデータ・ラインの
いずれかが前記所期データ・ラインであるかどうかを決
定するために、前記第1のキャッシュに結合した連想型
比較手段と、を含む上記8に記載のキャッシュ・ミスに
よる時間ペナルティ減少方法に適用されるキャッシュ装
置である。
入れ先出し記憶装置である上記8に記載のキャッシュ・
ミスによる時間ペナルティ減少方法に適用されるキャッ
シュ装置である。
のキャッシュが予め決められた数より多い数のデータ・
ラインを含む時に1度に2つのデータ・ラインを前記第
1のキャッシュの外に移動させる上記8に記載のキャッ
シュ・ミスによる時間ペナルティ減少方法に適用される
キャッシュ装置である。
のキャッシュ内の同一の記憶場所にマッピングされた2
つのデータ・ラインを前記第1のキャッシュの外に移動
させる時に、前記第2の転送手段が前記2つのデータ・
ラインのどちらか一方を前記主記憶装置に移動させる上
記11に記載のキャッシュ・ミスによる時間ペナルティ
減少方法に適用されるキャッシュ装置である。
ロセッサによって利用されるデータをバッファリングす
るためにキャッシュ・ミスによる時間ペナルティ減少方
法に適用されるキャッシュ装置であって、完全連想型の
第1のキャッシュと、直接マッピング型の第2のキャッ
シュと、前記主記憶装置から前記第1のキャッシュにデ
ータ・ラインを転送するための、前記第1のキャッシュ
と前記主記憶装置とに結合した第1の転送手段と、前記
第1のキャッシュから前記第2のキャッシュにデータ・
ラインを転送するための、前記第2のキャッシュと前記
主記憶装置とに結合された第2の転送手段と、前記第2
のキャッシュから前記主記憶装置にデータ・ラインを転
送するための、前記第2のキャッシュと前記主記憶装置
とに結合した第3の転送手段と、前記第1のキャッシュ
と前記第2のキャッシュとに対して並行してアクセスす
るためのアクセス手段と、を含むキャッシュ・ミスによ
る時間ペナルティ減少方法に適用されるキャッシュ装置
である。
キャッシュ内に索引を生成するために、前記第2のキャ
ッシュに結合した索引生成手段と、前記索引生成手段に
よって生成された前記索引によってアクセスされるデー
タ・ラインのためのタグを所期データ・ラインのための
タグと比較するために、前記第2のキャッシュに結合し
た比較手段と、前記第1のデータ・キャッシュ内のデー
タ・ラインのいずれかが前記所期データラインであるか
どうかを決定するために、前記第1のキャッシュに結合
した連想型比較手段と、とを含む上記13に記載のキャ
ッシュ・ミスによる時間ペナルティ減少方法に適用され
るキャッシュ装置である。
・ラインを格納するためのデータ・ライン・メモリと、
前記データ・ライン・メモリ内に格納されたデータ・ラ
インのためのタグを格納するための内容参照可能メモリ
と、を含む上記13に記載のキャッシュ・ミスによる時
間ペナルティ減少方法に適用されるキャッシュ装置であ
る。
れ先出しメモリである上記15に記載のキャッシュ・ミ
スによる時間ペナルティ減少方法に適用されるキャッシ
ュ装置である。
記第1のキャッシュからデータ・ラインを外に移動させ
る時の前記データ・ラインの行先を表示する表示を前記
データ・ラインメモリ内に格納された前記データ・ライ
ン各々と共に格納するための格納手段を含む上記15に
記載のキャッシュ・ミスによる時間ペナルティ減少方法
に適用されるキャッシュ装置である。
のキャッシュが所定数より多い数のデータ・ラインを含
む時に1度に1つ以上のデータ・ラインを前記第1のキ
ャッシュの外に移動させる上記13に記載のキャッシュ
・ミスによる時間ペナルティ減少方法に適用されるキャ
ッシュ装置である。
のキャッシュ内の同一の記憶場所にマッピングされた2
つのデータ・ラインを前記第1のキャッシュの外に移動
させる時に、前記第2の転送手段が前記2つのデータ・
ラインのどちらか一方を前記主記憶装置に移動させる上
記18に記載のキャッシュ・ミスによる時間ペナルティ
減少方法に適用されるキャッシュ装置である。
記データ・ライン各々が参照済みであることを表示する
表示を前記データ・ライン・メモリ内に格納された前記
データ・ライン各々と共に格納するための格納手段を含
む上記13に記載のキャッシュ・ミスによる時間ペナル
ティ減少方法に適用されるキャッシュ装置である。
のデータ・ラインに対する参照の結果として前記第1の
キャッシュ内に前記第1のデータ・ラインが入れられる
時に前記第1のデータ・ラインを前記第1のキャッシュ
内で「参照済」と印付けし、かつ先取りの結果として前
記第1のキャッシュ内に第2のデータ・ラインが入れら
れる時に前記第2のデータ・ラインを前記第1のキャッ
シュ内で「未参照」として印付けするためのものである
上記20に記載のキャッシュ・ミスによる時間ペナルテ
ィ減少方法に適用されるキャッシュ装置である。
2のデータ・ラインが参照される時に前記第2のデータ
・ラインを前記第1のキャッシュ内で「参照済」として
印付けするためのものである上記21に記載のキャッシ
ュ・ミスによる時間ペナルティ減少方法に適用されるキ
ャッシュ装置である。
憶装置内に格納されプロセッサによって利用されるキャ
ッシュ・ミスによる時間ペナルティ減少方法に適用され
るデータをバッファリングするための方法であって、
(a).前記主記憶装置から第1のキャッシュにデータ
・ラインを転送する工程と、(b).第1のデータ・ラ
インが前記第1のキャッシュの外に移動させられる時
に、前記第1のデータ・ラインを第2のキャッシュに移
動させる工程と、(c).第2のデータ・ラインが前記
第2のキャッシュの外に移動させられかつ汚染されてい
る時に、前記第2のデータ・ラインを前記主記憶装置に
戻す工程と、(d).前記プロセッサが第3のデータ・
ラインに対するアクセスを要求する時に、前記第3のデ
ータ・ラインを求めて前記第1のキャッシュと前記第2
のキャッシュとに対して並行して探索を行う工程と、を
含むキャッシュ・ミスによる時間ペナルティ減少方法に
適用されるデータをバッファリングするための方法であ
る。
1).前記第2のキャッシュの中に索引を生成する副次
的工程と、(d.2).前記第2のキャッシュ内の第4
のデータ・ラインにアクセスするために前記索引を使用
する副次的工程と、(d.3).前記第4のデータ・ラ
インが前記第3のデータ・ラインであるかどうかを決定
するために、前記第4のデータ・ラインのためのタグを
前記第3のデータ・ラインのためのタグと比較する副次
的工程と、(d.4).前記第1のキャッシュ内のデー
タ・ラインのいずれかが前記第3のデータ・ラインであ
るかどうかを決定するために、前記第1のキャッシュ内
に格納された個々のデータ・ラインのためのタグをチェ
ックする副次的工程と、を含み、前記副次的工程(d.
4)が前記副次的工程(d.1)から前記副次的工程
(d.3)までと共に並行して行われる23項に記載の
キャッシュ・ミスによる時間ペナルティ減少方法に適用
されるデータをバッファリングするための方法である。
1のデータ・ラインが前記第1のキャッシュの外に移動
させられる時に前記第1のデータ・ラインが前記第1の
キャッシュ内の他のデータ・ラインのいずれよりも長く
前記第1のキャッシュ内に存在しているように、前記第
1のキャッシュが先入れ先出しの形で処理される上記2
3に記載のキャッシュ・ミスによる時間ペナルティ減少
方法に適用されるデータをバッファリングするための方
法である。
多いデータ・ラインを前記第1のキャッシュが含む時
に、追加のデータ・ラインを前記第1のデータ・ライン
と共に移前記第1のキャッシュから移動させる副次的工
程を含む上記23に記載のキャッシュ・ミスによる時間
ペナルティ減少方法に適用されるデータをバッファリン
グするための方法である。
記追加のデータ・ラインが、前記第1のデータ・ライン
がマッピングされる前記第2のキャッシュ内の記憶場所
と同一の前記第2のキャッシュ内の記憶場所にマッピン
グされる時に、前記第1のデータ・ラインを前記主記憶
装置に移動させることを含む上記26に記載のキャッシ
ュ・ミスによる時間ペナルティ減少方法に適用されるデ
ータをバッファリングするための方法である。
ための方法が更に、(e).前記工程(d)において前
記第3のデータ・ラインが前記第1のキャッシュ内に存
在せずかつ前記第2のキャッシュ内に存在しない時に、
前記主記憶装置から前記第1のキャッシュに前記第3の
データ・ラインを転送する工程を含み、この工程が更
に、(i).前記第1のキャッシュ内で、前記第3のデ
ータ・ラインを「参照済」として印付けする副次的工程
と、(ii).前記主記憶装置から前記第1のキャッシ
ュに第4のデータ・ラインを先取りする副次的工程と、
(iii).前記第1のキャッシュ内で、前記第4のデ
ータ・ラインを「未参照」として印付けする副次的工程
と、を含む上記23に記載のキャッシュ・ミスによる時
間ペナルティ減少方法に適用されるデータをバッファリ
ングする方法である。
v).前記プロセッサが前記第4のデータ・ラインに対
するアクセスを要求する時に、前記第1のキャッシュ内
で、前記第4のデータ・ラインを「参照済」として印付
けし、前記主記憶装置から前記第1のキャッシュに第5
のデータラインを先取りし、前記第1のキャッシュ内
で、前記第5のデータラインを「未参照」として印付け
する副次的工程を含む上記28に記載のキャッシュ・ミ
スによる時間ペナルティ減少方法に適用されるデータを
バッファリングする方法である。
・ラインを主記憶装置から第1のキャッシュの外に移動
させる時にデータ・ラインの行先表示をデータ・ライン
のそれぞれとともに第1のキャッシュ内に格納し、この
表示はデータ・ラインが第2のキャッシュに送られるの
か、主記憶装置に戻されるのかを表示し、第1のデータ
・ラインを第1のキャッシュの外に移動させる時に第1
のデータ・ラインの行先表示が第1のデータ・ラインを
第2のキャッシュに送らなければならない表示をしてい
ると、第1のデータ・ラインを第2のキャッシュに移動
させ、第2のデータ・ラインが第2のキャッシュの外に
移動され、汚染されると第2のデータ・ラインを主記憶
装置に戻し、プロセッサが第3のデータ・ラインに対す
るアクセスを要求すると、第3のデータ・ラインに対し
て並行して第1と第2のキャッシュを探索するようにし
たので、最小量のハードウェアの追加のみで直接マッピ
ング型キャッシュにコンパイラによる最適化なしにキャ
ッシュ・スラッシングを取り除くことができる。
データ・キャッシュとを有するコンピュータ装置の単純
化したブロック図である。
セッサの単純化したブロック図である。
ンピュータ装置のためのキャッシュシ装置の単純化した
ブロック図である。
ロセッサ内の補助キャッシュの単純化したブロック図で
ある。
Claims (1)
- 【請求項1】 コンピュータ装置における、主記憶装置
内に格納され、かつプロセッサによって利用されるデー
タをバッファリングするための方法であって、 (a).データ・ラインを前記主記憶装置から第1のキ
ャッシュに転送する工程であって、前記データ・ライン
が前記第1のキャッシュの外に移動させられる時の前記
データ・ラインの行先を表示するための表示を前記デー
タ・ライン各々と共に前記第1のキャッシュ内に格納
し、前記表示は前記データ・ラインが第2のキャッシュ
に送られるのかどうか又は前記主記憶装置に戻されるの
かどうかを表示する前記工程と、 (b).第1のデータラインが前記第1のキャッシュの
外に移動させられ、かつ前記表示は前記第1のデータ・
ラインが前記第2のキャッシュに送られなければならな
いことを表示する時に、前記第1のデータ・ラインを前
記第2のキャッシュに移動させる工程と、 (c).第2のデータ・ラインが前記第2のキャッシュ
の外に移動させられ、かつ、汚染されている時に、前記
第2のデータ・ラインを前記主記憶装置に戻す工程と、 (d).前記プロセッサが第3のデータ・ラインに対す
るアクセスを要求する時に、前記第3のデータ・ライン
に対して平行して前記第1のキャッシュと前記第2のキ
ャッシュとを探索する工程と、を含むキャッシュ・ミス
による時間ペナルティ減少方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US196-042 | 1994-02-14 | ||
US08/196,042 US5603004A (en) | 1994-02-14 | 1994-02-14 | Method for decreasing time penalty resulting from a cache miss in a multi-level cache system |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH07253926A true JPH07253926A (ja) | 1995-10-03 |
JP3618385B2 JP3618385B2 (ja) | 2005-02-09 |
Family
ID=22723904
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP01447995A Expired - Fee Related JP3618385B2 (ja) | 1994-02-14 | 1995-01-31 | データをバッファリングする方法およびそのシステム |
Country Status (4)
Country | Link |
---|---|
US (1) | US5603004A (ja) |
EP (1) | EP0667580B1 (ja) |
JP (1) | JP3618385B2 (ja) |
DE (1) | DE69518676T2 (ja) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6256708B1 (en) | 1996-08-28 | 2001-07-03 | Nec Corporation | Auxiliary buffer for direct map cache |
US6792498B2 (en) | 2001-01-22 | 2004-09-14 | Hitachi, Ltd. | Memory system with mechanism for assisting a cache memory |
JP2006048181A (ja) * | 2004-07-30 | 2006-02-16 | Fujitsu Ltd | 記憶制御装置、ムーブインバッファ制御方法およびプログラム |
JPWO2008093399A1 (ja) * | 2007-01-30 | 2010-05-20 | 富士通株式会社 | 演算処理装置、情報処理装置及び演算処理装置の制御方法 |
JP2013542511A (ja) * | 2010-09-27 | 2013-11-21 | アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド | 積極的プリフェッチングによるプロセッサキャッシュ汚染を低減するための方法及び装置 |
Families Citing this family (55)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6021471A (en) * | 1994-11-15 | 2000-02-01 | Advanced Micro Devices, Inc. | Multiple level cache control system with address and data pipelines |
US5897654A (en) * | 1995-02-10 | 1999-04-27 | International Business Machines Corporation | Method and system for efficiently fetching from cache during a cache fill operation |
US5732242A (en) * | 1995-03-24 | 1998-03-24 | Silicon Graphics, Inc. | Consistently specifying way destinations through prefetching hints |
EP0752645B1 (en) * | 1995-07-07 | 2017-11-22 | Oracle America, Inc. | Tunable software control of Harvard architecture cache memories using prefetch instructions |
US5860095A (en) * | 1996-01-02 | 1999-01-12 | Hewlett-Packard Company | Conflict cache having cache miscounters for a computer memory system |
US5835946A (en) * | 1996-04-18 | 1998-11-10 | International Business Machines Corporation | High performance implementation of the load reserve instruction in a superscalar microprocessor that supports multi-level cache organizations |
US5761468A (en) * | 1996-05-15 | 1998-06-02 | Sun Microsystems Inc | Hardware mechanism for optimizing instruction and data prefetching by forming augmented prefetch instructions |
US5954812A (en) * | 1996-10-29 | 1999-09-21 | Texas Instruments Incorporated | Apparatus for caching system management memory in a computer having a system management mode employing address translation |
US5752261A (en) * | 1996-11-07 | 1998-05-12 | Ncr Corporation | Method and apparatus for detecting thrashing in a cache memory |
US6223256B1 (en) | 1997-07-22 | 2001-04-24 | Hewlett-Packard Company | Computer cache memory with classes and dynamic selection of replacement algorithms |
US5909697A (en) * | 1997-09-30 | 1999-06-01 | Sun Microsystems, Inc. | Reducing cache misses by snarfing writebacks in non-inclusive memory systems |
US6073212A (en) * | 1997-09-30 | 2000-06-06 | Sun Microsystems, Inc. | Reducing bandwidth and areas needed for non-inclusive memory hierarchy by using dual tags |
US6237073B1 (en) | 1997-11-26 | 2001-05-22 | Compaq Computer Corporation | Method for providing virtual memory to physical memory page mapping in a computer operating system that randomly samples state information |
US6163840A (en) * | 1997-11-26 | 2000-12-19 | Compaq Computer Corporation | Method and apparatus for sampling multiple potentially concurrent instructions in a processor pipeline |
US6175814B1 (en) | 1997-11-26 | 2001-01-16 | Compaq Computer Corporation | Apparatus for determining the instantaneous average number of instructions processed |
US6442585B1 (en) | 1997-11-26 | 2002-08-27 | Compaq Computer Corporation | Method for scheduling contexts based on statistics of memory system interactions in a computer system |
US6332178B1 (en) | 1997-11-26 | 2001-12-18 | Compaq Computer Corporation | Method for estimating statistics of properties of memory system transactions |
US6195748B1 (en) | 1997-11-26 | 2001-02-27 | Compaq Computer Corporation | Apparatus for sampling instruction execution information in a processor pipeline |
US6202127B1 (en) * | 1997-11-26 | 2001-03-13 | Compaq Computer Corporation | Apparatus for spatial and temporal sampling in a computer memory system |
US6374367B1 (en) | 1997-11-26 | 2002-04-16 | Compaq Computer Corporation | Apparatus and method for monitoring a computer system to guide optimization |
US6549930B1 (en) | 1997-11-26 | 2003-04-15 | Compaq Computer Corporation | Method for scheduling threads in a multithreaded processor |
US6237059B1 (en) | 1997-11-26 | 2001-05-22 | Compaq Computer Corporation | Method for estimating statistics of properties of memory system interactions among contexts in a computer system |
US6253291B1 (en) | 1998-02-13 | 2001-06-26 | Sun Microsystems, Inc. | Method and apparatus for relaxing the FIFO ordering constraint for memory accesses in a multi-processor asynchronous cache system |
US6253285B1 (en) * | 1998-04-16 | 2001-06-26 | Compaq Computer Corporation | Method and apparatus for minimizing dcache index match aliasing using hashing in synonym/subset processing |
US6253301B1 (en) * | 1998-04-16 | 2001-06-26 | Compaq Computer Corporation | Method and apparatus for a dedicated physically indexed copy of the data cache tag arrays |
US6397296B1 (en) * | 1999-02-19 | 2002-05-28 | Hitachi Ltd. | Two-level instruction cache for embedded processors |
US6904498B2 (en) * | 2002-10-08 | 2005-06-07 | Netcell Corp. | Raid controller disk write mask |
US7203798B2 (en) * | 2003-03-20 | 2007-04-10 | Matsushita Electric Industrial Co., Ltd. | Data memory cache unit and data memory cache system |
US7143239B2 (en) * | 2003-08-07 | 2006-11-28 | Hewlett-Packard Development Company, L.P. | Cache structure and methodology |
US7373637B2 (en) * | 2003-09-30 | 2008-05-13 | International Business Machines Corporation | Method and apparatus for counting instruction and memory location ranges |
US7395527B2 (en) | 2003-09-30 | 2008-07-01 | International Business Machines Corporation | Method and apparatus for counting instruction execution and data accesses |
US7937691B2 (en) | 2003-09-30 | 2011-05-03 | International Business Machines Corporation | Method and apparatus for counting execution of specific instructions and accesses to specific data locations |
US8381037B2 (en) * | 2003-10-09 | 2013-02-19 | International Business Machines Corporation | Method and system for autonomic execution path selection in an application |
US7421681B2 (en) * | 2003-10-09 | 2008-09-02 | International Business Machines Corporation | Method and system for autonomic monitoring of semaphore operation in an application |
US7415705B2 (en) | 2004-01-14 | 2008-08-19 | International Business Machines Corporation | Autonomic method and apparatus for hardware assist for patching code |
US7526757B2 (en) * | 2004-01-14 | 2009-04-28 | International Business Machines Corporation | Method and apparatus for maintaining performance monitoring structures in a page table for use in monitoring performance of a computer program |
US7392370B2 (en) | 2004-01-14 | 2008-06-24 | International Business Machines Corporation | Method and apparatus for autonomically initiating measurement of secondary metrics based on hardware counter values for primary metrics |
US7895382B2 (en) * | 2004-01-14 | 2011-02-22 | International Business Machines Corporation | Method and apparatus for qualifying collection of performance monitoring events by types of interrupt when interrupt occurs |
US7496908B2 (en) * | 2004-01-14 | 2009-02-24 | International Business Machines Corporation | Method and apparatus for optimizing code execution using annotated trace information having performance indicator and counter information |
US8135915B2 (en) * | 2004-03-22 | 2012-03-13 | International Business Machines Corporation | Method and apparatus for hardware assistance for prefetching a pointer to a data structure identified by a prefetch indicator |
US7526616B2 (en) * | 2004-03-22 | 2009-04-28 | International Business Machines Corporation | Method and apparatus for prefetching data from a data structure |
US7421684B2 (en) | 2004-03-22 | 2008-09-02 | International Business Machines Corporation | Method and apparatus for autonomic test case feedback using hardware assistance for data coverage |
US7366871B2 (en) * | 2004-11-18 | 2008-04-29 | Sun Microsystems, Inc. | Apparatus and method for determining stack distance including spatial locality of running software for estimating cache miss rates based upon contents of a hash table |
US7373480B2 (en) * | 2004-11-18 | 2008-05-13 | Sun Microsystems, Inc. | Apparatus and method for determining stack distance of running software for estimating cache miss rates based upon contents of a hash table |
US7386669B2 (en) * | 2005-03-31 | 2008-06-10 | International Business Machines Corporation | System and method of improving task switching and page translation performance utilizing a multilevel translation lookaside buffer |
US7409502B2 (en) * | 2006-05-11 | 2008-08-05 | Freescale Semiconductor, Inc. | Selective cache line allocation instruction execution and circuitry |
JP2009053820A (ja) * | 2007-08-24 | 2009-03-12 | Nec Electronics Corp | 階層型キャッシュメモリシステム |
US20130262767A1 (en) * | 2012-03-28 | 2013-10-03 | Futurewei Technologies, Inc. | Concurrently Accessed Set Associative Overflow Cache |
US9652233B2 (en) * | 2013-08-20 | 2017-05-16 | Apple Inc. | Hint values for use with an operand cache |
US9489149B2 (en) | 2014-06-16 | 2016-11-08 | Netapp, Inc. | Methods and systems for using a write cache in a storage system |
US11620220B2 (en) * | 2014-07-14 | 2023-04-04 | Via Alliance Semiconductor Co., Ltd. | Cache system with a primary cache and an overflow cache that use different indexing schemes |
US9558127B2 (en) * | 2014-09-09 | 2017-01-31 | Intel Corporation | Instruction and logic for a cache prefetcher and dataless fill buffer |
KR20160065773A (ko) * | 2014-10-08 | 2016-06-09 | 비아 얼라이언스 세미컨덕터 씨오., 엘티디. | 1차 캐시와 오버플로 선입 선출 캐시를 구비하는 캐시 시스템 |
US20170046278A1 (en) * | 2015-08-14 | 2017-02-16 | Qualcomm Incorporated | Method and apparatus for updating replacement policy information for a fully associative buffer cache |
US11226904B2 (en) | 2019-04-26 | 2022-01-18 | Hewlett Packard Enterprise Development Lp | Cache data location system |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4774654A (en) * | 1984-12-24 | 1988-09-27 | International Business Machines Corporation | Apparatus and method for prefetching subblocks from a low speed memory to a high speed memory of a memory hierarchy depending upon state of replacing bit in the low speed memory |
US4928239A (en) * | 1986-06-27 | 1990-05-22 | Hewlett-Packard Company | Cache memory with variable fetch and replacement schemes |
US5058006A (en) * | 1988-06-27 | 1991-10-15 | Digital Equipment Corporation | Method and apparatus for filtering invalidate requests |
US5146578A (en) * | 1989-05-01 | 1992-09-08 | Zenith Data Systems Corporation | Method of varying the amount of data prefetched to a cache memory in dependence on the history of data requests |
US5307477A (en) * | 1989-12-01 | 1994-04-26 | Mips Computer Systems, Inc. | Two-level cache memory system |
IT1238313B (it) * | 1990-01-18 | 1993-07-12 | Memoria tampone in tandem | |
US5163140A (en) * | 1990-02-26 | 1992-11-10 | Nexgen Microsystems | Two-level branch prediction cache |
US5317718A (en) * | 1990-03-27 | 1994-05-31 | Digital Equipment Corporation | Data processing system and method with prefetch buffers |
EP0449540B1 (en) * | 1990-03-27 | 2000-05-17 | Digital Equipment Corporation | Memory system and method with prefetch buffer |
US5261066A (en) * | 1990-03-27 | 1993-11-09 | Digital Equipment Corporation | Data processing system and method with small fully-associative cache and prefetch buffers |
CA2044689A1 (en) * | 1990-06-15 | 1991-12-16 | Roger E. Tipley | Multilevel inclusion in multilevel cache hierarchies |
DE4306077A1 (ja) * | 1992-02-27 | 1993-09-02 | Hewlett Packard Co |
-
1994
- 1994-02-14 US US08/196,042 patent/US5603004A/en not_active Expired - Lifetime
-
1995
- 1995-01-31 JP JP01447995A patent/JP3618385B2/ja not_active Expired - Fee Related
- 1995-02-03 EP EP95300681A patent/EP0667580B1/en not_active Expired - Lifetime
- 1995-02-03 DE DE69518676T patent/DE69518676T2/de not_active Expired - Lifetime
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6256708B1 (en) | 1996-08-28 | 2001-07-03 | Nec Corporation | Auxiliary buffer for direct map cache |
US6792498B2 (en) | 2001-01-22 | 2004-09-14 | Hitachi, Ltd. | Memory system with mechanism for assisting a cache memory |
JP2006048181A (ja) * | 2004-07-30 | 2006-02-16 | Fujitsu Ltd | 記憶制御装置、ムーブインバッファ制御方法およびプログラム |
JPWO2008093399A1 (ja) * | 2007-01-30 | 2010-05-20 | 富士通株式会社 | 演算処理装置、情報処理装置及び演算処理装置の制御方法 |
JP4491500B2 (ja) * | 2007-01-30 | 2010-06-30 | 富士通株式会社 | 演算処理装置、情報処理装置及び演算処理装置の制御方法 |
US8671246B2 (en) | 2007-01-30 | 2014-03-11 | Fujitsu Limited | Information processing system and information processing method |
JP2013542511A (ja) * | 2010-09-27 | 2013-11-21 | アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド | 積極的プリフェッチングによるプロセッサキャッシュ汚染を低減するための方法及び装置 |
Also Published As
Publication number | Publication date |
---|---|
US5603004A (en) | 1997-02-11 |
EP0667580A2 (en) | 1995-08-16 |
EP0667580A3 (en) | 1996-07-31 |
DE69518676T2 (de) | 2001-01-04 |
DE69518676D1 (de) | 2000-10-12 |
EP0667580B1 (en) | 2000-09-06 |
JP3618385B2 (ja) | 2005-02-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3618385B2 (ja) | データをバッファリングする方法およびそのシステム | |
JP3587591B2 (ja) | キャッシュ・ミスを制御する方法およびその計算機システム | |
US6119205A (en) | Speculative cache line write backs to avoid hotspots | |
US6212602B1 (en) | Cache tag caching | |
US8909871B2 (en) | Data processing system and method for reducing cache pollution by write stream memory access patterns | |
EP0763795B1 (en) | Stream prefetching buffer with stream filter | |
JP2839060B2 (ja) | データ処理システムおよびデータ処理方法 | |
US5694568A (en) | Prefetch system applicable to complex memory access schemes | |
US6766419B1 (en) | Optimization of cache evictions through software hints | |
US6122709A (en) | Cache with reduced tag information storage | |
US5740399A (en) | Modified L1/L2 cache inclusion for aggressive prefetch | |
US5664147A (en) | System and method that progressively prefetches additional lines to a distributed stream buffer as the sequentiality of the memory accessing is demonstrated | |
US6578111B1 (en) | Cache memory system and method for managing streaming-data | |
US5715427A (en) | Semi-associative cache with MRU/LRU replacement | |
US6463507B1 (en) | Layered local cache with lower level cache updating upper and lower level cache directories | |
US8621152B1 (en) | Transparent level 2 cache that uses independent tag and valid random access memory arrays for cache access | |
US5930819A (en) | Method for performing in-line bank conflict detection and resolution in a multi-ported non-blocking cache | |
JPH07104816B2 (ja) | コンピュータシステムを動作する方法及びコンピュータシステムにおけるメモリ管理装置 | |
US5809526A (en) | Data processing system and method for selective invalidation of outdated lines in a second level memory in response to a memory request initiated by a store operation | |
JP2575598B2 (ja) | マルチプロセッサ・コンピュータ・システムのシステム・メモリの並行性を増大する方法およびシステム | |
US7356650B1 (en) | Cache apparatus and method for accesses lacking locality | |
US6418513B1 (en) | Queue-less and state-less layered local data cache mechanism | |
US6405285B1 (en) | Layered local cache mechanism with split register load bus and cache load bus | |
US20060179173A1 (en) | Method and system for cache utilization by prefetching for multiple DMA reads | |
US6446166B1 (en) | Method for upper level cache victim selection management by a lower level cache |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20040521 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040601 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040825 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040921 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20041025 |
|
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: 20041109 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20041110 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20081119 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091119 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091119 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101119 Year of fee payment: 6 |
|
LAPS | Cancellation because of no payment of annual fees |