JPH06348595A - キャッシュ装置 - Google Patents

キャッシュ装置

Info

Publication number
JPH06348595A
JPH06348595A JP5163148A JP16314893A JPH06348595A JP H06348595 A JPH06348595 A JP H06348595A JP 5163148 A JP5163148 A JP 5163148A JP 16314893 A JP16314893 A JP 16314893A JP H06348595 A JPH06348595 A JP H06348595A
Authority
JP
Japan
Prior art keywords
cache
data
entry
bit
reuse
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.)
Pending
Application number
JP5163148A
Other languages
English (en)
Inventor
Ichiro Kushima
伊知郎 久島
Masahiro Uminaga
正博 海永
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP5163148A priority Critical patent/JPH06348595A/ja
Priority to US08/252,413 priority patent/US5546559A/en
Priority to KR94012632A priority patent/KR970000838B1/ko
Publication of JPH06348595A publication Critical patent/JPH06348595A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • G06F12/127Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning using additional replacement algorithms

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

(57)【要約】 【目的】 特定のデータを優先的にキャッシュに残して
おくことを可能とするキャッシュ装置を提供する。 【構成】 キャッシュの各エントリにデータの追い出し
を優先的に阻止するreuseビットを設け、図1の場
合、2セットのエントリのうち一方だけのreuseビ
ット(404)が真になっている場合は、他方のエント
リを追い出しエントリとして選択する。両セットのre
useビットとも真、または両セットとも偽になってい
る場合は、recentビット402が偽になっている
エントリを選択する。ロード命令の命令語にはREUS
E指定があるかどうかを示すビットを設け、このビット
が真であれば、当該ロード命令でアクセスしたデータを
含むキャッシュエントリのreuseビット(404)
は真となる。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明はキャッシュ装置に係り、
特に重複使用されるデータを優先的にキャッシュに残す
のに好適なキャッシュ装置に関する。
【0002】
【従来の技術】キャッシュは、高速に動作するCPUと
アクセス速度の遅い主メモリ(以降単にメモリと呼ぶ)
の速度のギャップを埋めるために設けられたアクセス速
度の速い小容量の記憶装置である。CPU、キャッシュ
とメモリの関係を簡単に示すと図2のようになる。プロ
グラムを実行する際、CPUが参照するメモリ内容は、
もしキャッシュ上に存在していればそれを使い、なけれ
ばメモリまでアクセスしに行く。キャッシュはCPUに
非常に近く、しかも高速なので、CPUが必要とする多
くのデータがキャッシュ上にあれば、非常に高速な処理
が期待できる。キャッシュが有効に働くには、アクセス
頻度の高いアドレスのデータをキャッシュに置いておく
ことが必要である。一般的なプログラムのメモリアクセ
スのパターンを解析すると、次のような特徴が現れる場
合が非常に多い。 1.あるのアドレスのデータに対するアクセスは比較的
短い時間内に再発する。 2.ある一定時間内にアクセスされるデータは比較的近
いアドレスに分布する。 前者は「時間的局所性」、後者は「空間的局所性」と呼
ばれる。
【0003】前者の時間的局所性が表すところは「一度
アクセスされたアドレスは近い将来再びアクセスされ
る」ということである。すなわち、今アクセスされたデ
ータをキャッシュにとっておけば、次回そのアドレスが
再び参照されたときにはそのデータはキャッシュにある
ためアクセス時間が短くて済む。したがって、通常のキ
ャッシュでは、CPUが参照するデータがキャッシュ上
にない場合はそれを必ずキャッシュにもってきて、将来
の再参照に備えるようにしている。一方、キャッシュは
後者の空間的局所性も利用している。空間的局所性の意
味するところは「あるアドレスがアクセスされたら、近
い将来その近くのアドレスもアクセスされる」というこ
とである。すなわち、データを新たにメモリからキャッ
シュに持ってくるときは、今アクセスされたアドレスの
データだけをキャッシュに持ってくるのではなく、その
付近のデータも一緒にキャッシュに持ってくるようにす
れば、将来その付近のアドレスのデータへのアクセスが
あってもそのデータはキャッシュにあるためアクセス時
間が短くて済むことが多い。このため、キャッシュは一
定長(十数バイトから百バイト程度)のラインごとに分
割されており、キャッシュとメモリとのデータのやりと
りはライン単位に行われている。例えば、ある1つのデ
ータを読むためにはそれを含む1ラインのデータ全てを
キャッシュに持ってくるようにしている。
【0004】キャッシュはメモリアクセス時間を短縮す
るのに有効であるが、局所性がないプログラムにに対し
ては無駄になることがある。例えば次のプログラムを考
えてみる。なお、floatは浮動小数点データの宣言
を意味し、i++はiに+1することを意味する。 ここで配列aへの参照を考える。このプログラムで参照
される配列aの要素は、a
〔0〕,a〔10〕,a〔2
0〕,…,a
〔990〕である。それぞれ必ず違った要
素が参照されるので、時間的局所性は存在しない。また
空間的局所性を考えると、例えばキャッシュの1ライン
が32バイト、配列要素1個が4バイトという想定のも
とでは、1ラインには配列の要素は8個分しか保持され
ず、上のプログラムのように10個おきにデータがアク
セスされる場合にはライン中の他のデータは全く利用さ
れない。すなわち(空間の大きさを32バイトとすれ
ば)空間的局所性もない。
【0005】このようなキャッシュへの無駄なロードを
避けるため、キャッシュバイパスという機能(命令)を
もつプロセッサがある。これはメモリ中のデータを参照
する命令について、そのデータがキャッシュ中に存在し
ない場合でも、それをキャッシュに置かないで直接使用
することを指示できるようにしたものである。上のプロ
グラムの配列aへの参照のようにキャッシュにデータを
置いても無駄なことがわかっている場合は、その命令を
使い、aの要素をキャッシュに置かないようにすること
ができる。このような機能を備えたプロセッサについて
は、例えば、リー:「オン・ザ・フローティング・ポイ
ント・パフォーマンス・オブ・ザ・i860・マイクロ
プロセッサ」、インターナショナル・ジャーナル・オブ
・ハイ・スピード・コンピューティング、ヴォリューム
4、ナンバー4(1992)、第251頁から267頁
(K.Lee: ″On the Floating
Point Preformance of the
i860 Microprocessor″, Int
ernational Journal of Hig
h Speed Computing, Vol.4,
No.4 (1992), pp.251−267)
に記載がある。また一般にキャッシュ技術に対する解説
としては、情報処理、ボリューム33、ナンバー11
(1992)、第1348頁から1357頁に記載があ
る。
【0006】
【発明が解決しようとする課題】上記従来技術では、空
間的局所性と時間的局所性を持つデータを扱うプログラ
ムでキャッシュが有効利用できない場合がある。これを
以下のプログラムで説明する。 float a〔100〕,b〔1000〕〔100〕; for (i=0;i<1000;i++){ for (j=0;j<100;j++){ …a〔j〕… …b〔i〕〔j〕… } } このプログラムは2重ループで、aとbの2つの配列を
参照している。aは1次元配列で大きさは100*4=
400バイト、bは2次元配列で大きさは1000*1
00*4=400キロバイトである。キャッシュのサイ
ズが32キロバイトという想定であれば、これらの全て
のデータをキャッシュに収めることは不可能である。配
列aは内側のループではa
〔0〕,a〔1〕,a
〔2〕,…,a
〔99〕と100個の要素が参照され
る。外側のループによりこれが1000回繰り返され、
同じ要素が1000回参照されることになる。すなわち
配列aの参照は時間的局所性と空間的局所性(連続する
アドレスを順次アクセスするので)を併せ持つ可能性が
高い。配列aの大きさはキャッシュサイズより小さいの
で、全体がキャッシュに収まる。したがって1度配列要
素をキャッシュに持ってくれば残りの999回の参照
は、理想的にはキャッシュヒット(データがキャッシュ
上に存在)するはずである。一方、配列bはループ全体
で順にb
〔0〕
〔0〕,b
〔0〕〔1〕,…,b
〔0〕
〔99〕,b〔1〕
〔0〕,b〔1〕〔1〕,…,b
〔1〕
〔99〕,b〔2〕
〔0〕,b〔2〕〔1〕,…
…………,b
〔999〕
〔99〕と1000*100=
100000個の要素が参照される。同じ要素が2度参
照されることはないので時間的局所性はないが、空間的
局所性はあるのでキャッシュが有効に働く。すなわち、
キャッシュの1ラインに配列要素が8個分はいるという
想定では、1つの要素(例えばb
〔0〕
〔0〕)を参照
すると後続する7つの要素(b
〔0〕〔1〕,…,b
〔0〕〔7〕)も一緒にキャッシュにはいるので、後の
7回の参照はキャッシュヒットになる。
【0007】さて、配列bの大きさはキャッシュサイズ
よりも大きいので、その全体をキャッシュにいれること
はできない。とするといつかは、以前キャッシュに入っ
ていたデータを追い出して新たにそこにデータを入れる
ということが必要になる。このとき、どのデータを追い
出すかというのが問題になるが、上のプログラムの場
合、配列aのデータを追い出すよりも、配列bのデータ
を追い出したほうがよい。なぜなら配列aの各要素は何
度も参照されるけれども配列bのデータは1度しか参照
されないからである。一般のキャッシュでは、どのデー
タをキャッシュから追い出すかはランダムまたはLRU
(Least Recently Used)という選
択方法を採っている。ランダムは追い出すエントリを文
字通りランダムに選ぶもので、データの使用状況は全く
考慮されない。LRUは最後にアクセスされた時刻が最
も古いデータをキャッシュから追い出すという選択方法
である。これは、言ってみればデータの過去の参照状況
をみてそれをキャッシュに残すかどうか追い出すかを決
めるものである。いずれにしても、そのデータが将来再
使用されるかどうかを直接考慮したものではない。従っ
て上のプログラムの場合、配列bが追い出されて配列a
が残されるという保証はなかった。すなわち従来技術で
は、特定のデータ(例えば将来再使用されることが明ら
かデータ)をキャッシュから追い出さないようにする、
ということができなかった。また、プログラマまたはコ
ンパイラが、特定のデータに対し、そのデータが再使用
される可能性が高いのでそれをキャッシュから追い出さ
ないようにするという指示を与えることができなかっ
た。この結果、プログラムによってはキャッシュが有効
利用されない(キャッシュヒットが少ない)場合がある
という問題点があった。本発明の目的は、特定のデータ
をキャッシュからなるべく追い出さないようにすること
が可能なキャッシュ装置を提供することにある。本発明
の別の目的は、プログラマまたはコンパイラが、特定の
データに対し、そのデータをなるべくキャッシュから追
い出さないようにするという指示を与えることができ
る、キャッシュ装置を含む情報処理装置を提供すること
にある。
【0008】
【課題を解決するための手段】上記目的を達成するた
め、中央処理装置に接続され、それぞれがデータ領域お
よび制御情報領域を有する複数のエントリを備えるキャ
ッシュ装置において、エントリ中のデータのキャッシュ
からの追い出しを優先的に阻止するreuse情報を前
記制御情報の1つとして設け、キャッシュ置換時に制御
情報に基づきキャッシュから追い出すエントリを選択し
かつreuse情報の設定されていないエントリを優先
して選択する選択手段を設けている。また、中央処理装
置におけるメモリデータの参照とreuse情報の値の
設定をする命令の実行に応じて、エントリにデータを格
納すると共にreuse情報の値を設定する手段を設け
ている。さらに、キャッシュ装置をセットアソシアティ
ブ方式のキャッシュ装置としている。さらにまた、キャ
ッシュ装置を2ウェイ・セットアソシアティブ方式のキ
ャッシュ装置としている。さらにまた、前記reuse
情報を1ビット情報としている。
【0009】
【作用】課題で挙げたプログラムを例にとって作用の説
明をする。プログラムはループの中でaとbの2つの配
列要素の参照があるが、そのうちaの要素(データ)を
参照する(ロードする)命令では命令語で、該データを
なるべくキャッシュから追い出さないように指示し、b
の要素を参照する命令では、そのような指示をつけな
い。これはプログラマまたはコンパイラより行なわれ
る。メモリアクセス命令は命令語中にその情報を指定す
るビットを持つようにしているので、これが可能であ
る。データをメモリからキャッシュにフェッチする際、
命令語に上記指定があれば、フェッチしたデータを格納
するエントリに、当データはなるべくキャッシュから追
い出されないようにする、という情報(reuse情
報)を付け加える。よってaのデータを格納するキャッ
シュエントリにはそのような情報が設定され、bの要素
を格納するエントリには設定されない。以前或るキャッ
シュエントリに入っていたデータを追い出して新たにそ
こに別のデータをいれるということが必要になった場
合、上記情報が設定されていないエントリが優先的にキ
ャッシュから追い出される。例の場合、aのデータを格
納したエントリよりもbのデータを格納したエントリか
らデータが追い出される。このように、特定のデータを
キャッシュからなるべく追い出さないようにすることが
可能なキャッシュ装置が得られる。また、プログラマま
たはコンパイラが、特定のデータに対し、そのデータを
なるべくキャッシュから追い出さないようにするという
指示を与えることができる、キャッシュ装置を含む情報
処理装置が得られる。
【0010】
【実施例】以下本発明の一実施例を説明する。図2は本
発明のキャッシュを含む情報処理装置の構成図である。
キャッシュ202はアクセス速度の速い小容量の記憶装
置で、主メモリ204(以降単にメモリ)はアクセス速
度の遅い大容量の記憶装置である。キャッシュとメモリ
はともにバス203とつながっており、またCPU20
1はキャッシュを介してバスとつながっている。プログ
ラムを実行する際、CPUが参照するメモリ内容は、も
しキャッシュ上に存在していればそれを使い、なければ
メモリまでアクセスしにいく。なお、図2の構成図は従
来のキャッシュでも同じである。
【0011】図3は本発明の一実施例のキャッシュの構
成図である。本キャッシュは2ウェイセットアソシアテ
ィブ(セット1(301)とセット2(302)の2つ
のセットからなるアソシアティブキャッシュ)である。
キャッシュ容量は全体で8kバイト、すなわち1つのセ
ットの容量は4kバイトであり、ここにデータがライン
を単位に配列的に格納されている。1セットは0番から
127番までの128個のライン(エントリ)306か
らなる。このラインの番号をインデクス307と呼ぶ。
1ラインには32バイトのメモリデータが格納される
(32*128=4096バイト)。1語が4バイトで
あるとすると、1つのエントリには8語格納可能であ
る。1つのラインは制御ビット303、タグ304、デ
ータ305の3つの部分からなる。これについては図4
で説明する。
【0012】図4は本発明のキャッシュの1ラインの構
成を示した図である。ライン(306)は制御情報が格
納される制御情報領域とデータが格納されるデータ領域
を有し、制御情報としてempty情報、recent
情報、dirty情報、およびreuse情報が設けら
れ、実施例では各情報は1ビット情報とされ、制御情報
領域は制御ビット(303)からなる。また、データ領
域は、実施例ではタグ(304)、データ(305)か
らなる。そして制御ビットはemptyビット(40
1)、recentビット(402)、dirtyビッ
ト(403)、およびreuseビット(404)から
なる。データはメモリ中のデータの値を格納するフィー
ルドである。タグは今格納しているデータが、どのメモ
リアドレスに対応するものかを特定するフィールドであ
る。emptyビットは当ラインが空きであるかを示す
(真のとき空き)。recentビットは当セットのラ
インが、もう一方のセットのラインよりも後にアクセス
されたかどうか、すなわち最新のアクセスであるかを示
す(真のとき最新)。recentビットは、本キャッ
シュがLRU(Least Recently Use
d)に基づく置換方法を用いているため必要となる。d
irtyビットは当キャッシュラインに書き込みがあっ
たかを示す(真のとき書き込みあり)。reuseビッ
トは、当ラインのデータが将来再び使用される可能性が
高いことを示す。このビットは当該メモリアドレスを参
照する命令により設定され、キャッシュ置き換えが必要
になったときに参照されるが、これについては後で詳し
く説明する。
【0013】図5はメモリアドレスを2進表現したとき
の構成を示す図である。アドレスは32ビットで、タグ
501、インデクス502、ポジション503の3つの
部分にわかれる。タグは20ビットでこれがキャッシュ
ラインのタグ(304)と対応する。インデクスは7ビ
ットでこれをキャッシュラインのインデクスとして用い
る(2の7乗=128であるからこの7ビットによりキ
ャッシュラインが特定できる)。ポジションは5ビット
で、ライン中のバイト位置を特定するのに使われる(2
の5乗=32であるからこの5ビットでバイト位置が特
定できる)。
【0014】次に図6を用いて、メモリアクセスが生じ
たときの本発明のキャッシュの振舞いを説明する。さ
て、メモリアクセスが発生したとする。この時メモリア
ドレス(602)のうちインデクス(502)の値をイ
ンデクスとしてキャッシュライン配列のエントリを特定
する。2ウェイのセットアソシアティブであるので、1
つのインデクスに対しエントリは2つ(セット1のエン
トリ603とセット2のエントリ604)特定される。
次に当該のメモリアドレスのタグ(501)の値とエン
トリ内に格納されたタグの値(605および606)を
比較器601で比較する。タグの値が等しいエントリ内
にはメモリロケーション内容の写しがキャッシュエント
リに格納されていると判断する。すなわち、メモリアド
レスのタグ値(501)とキャッシュエントリのタグ値
(605または606)が等しければキャッシュヒット
となる。この場合メモリアクセスはキャッシュアクセス
に置き換えられ、高速アクセスが可能となる。タグの値
が等しいエントリがない場合、キャッシュ内にメモリロ
ケーションの写しが格納されてないと判断し、キャッシ
ュアクセスの代わりに低速なメモリアクセスが必要とな
る。
【0015】キャッシュ内にメモリロケーションの写し
がない場合はさらに、その写しをキャッシュに格納す
る。これは以下のように行う。タグの値の等しいエント
リがなかった場合は、2つのエントリの制御ビットのe
mtpyビットを調べる。少なくともどちらか一方のe
mptyビットが真であれば、そのキャッシュエントリ
が空きであるので、メモリから読み出したデータをそこ
に格納する。いずれのエントリのemptyビットが偽
であれば、2つのうち一方をキャッシュから追い出す。
このときどちらを追い出すかの判断にreuseビット
とrecentビットを用いる。これを表で示したのが
図1であり、以下これを説明する。図1は2つのエント
リ1(603)とエントリ2(604)のうち、どちら
を追い出しエントリとするか、選択する様子を示す図で
ある。エントリ1(603)はセット1に、エントリ2
(604)はセット2に属する。2つのセットのエント
リの制御ビットの中のreuseビットとrecent
ビットを、追い出しエントリ選択手段101の入力と
し、追い出すエントリを選択する。選択手段101は上
記の4つのビットを入力とし、0か1かを出力する。0
はエントリ1を1はエントリ2を選択することを意味す
る。入力と出力の関係を示したのが図1(b)の表10
2である。この表の意味するところを説明すると次のよ
うになる。2セットのうち一方だけにreuseビット
が立っている(真になっている)場合は、そうでない
(偽になっている)方のセットのエントリを選択する。
両セットのreuseビットとも真、または両セットと
も偽になっている場合は、2セットの内の古い(rec
entビットが偽)エントリを選択する(recent
ビットは初期状態では両セットとも偽となっているが、
そのアクセスがあれば必ず一方のセットが真、他方が偽
となっていて、両方が真となることはない)。rece
ntビットが両方とも偽になっている場合はどちらを選
択してもよい(0/1により表示)。追い出すエントリ
が決まったら、そのエントリ内容が変更されているかど
うか(dirtyビットが真かどうか)調べ、そうなら
ばこのエントリの内容をメモリに書き込む。変更されて
いなければ(dirtyビットが偽)何もしない。古い
エントリの追い出しが完了すれば、メモリロケーション
内のデータを読み出しその値を、追い出したキャッシュ
エントリに格納し、そのエントリのrecentビット
を真にし、追い出されなかった方のエントリのrece
ntビットを偽とする。
【0016】図7は本発明で適用するロード命令と、そ
れがキャッシュエントリのreuseビットに設定され
る様子を示した図である。ロード命令の命令語702に
はREUSE指定があるかどうかを示すビット(70
4)を含む。このビットが真であれば、当該ロード命令
でアクセスしたデータを含むキャッシュエントリ(30
6)のreuseビット(401)は真となる。
【0017】次に図8のプログラムを例にとって、従来
のキャッシュシステムと本発明のキャッシュシステムの
振舞いの違いを説明するが、その前に従来のキャッシュ
ラインの制御ビットと追い出しエントリの選択方法につ
いて簡単に説明する。なお、図8において、intは整
数(s)の宣言を意味し、t+=2は2を加えることを
意味する。従来のキャッシュシステムにおけるキャッシ
ュラインの制御ビットはemptyビット、recen
tビット、およびdirtyビットの3つのビットから
構成されている。そして、キャッシュラインが競合した
ときは、recentビットが偽のエントリ、すなわち
最後にアクセスされたのがより古い方のエントリをキャ
ッシュから追い出すようにしている。図8のプログラム
の2重ループにおいて、外側ループ(802)の1回目
のイタレーション(繰返し(単位)、例えば、99回の
ループがあるとき、その各回をイタレーションという)
が完了したとする。この時点で、配列a,bのアクセス
した部分は次の通りである。 a〔0..1〕〔1..1023〕,b〔1..102
3〕 ここで例えばb〔1..1023〕はb〔1〕,b
〔2〕,…,b〔1023〕を表す。このうち、配列a
は外側ループのイタレーションの進行に伴いアクセス位
置が変化していく。一方配列b(外側ループについて
は)はアクセス位置が変化しない(というか配列b全体
であるが、その全容量はサイズ的にキャッシュに収ま
る)。したがって配列b〔1..1023〕が長い間キ
ャッシュに保持され、外側ループの個別のイタレーショ
ンで再利用できるなら高速化の面で都合がよい。しか
し、2ウェイセットアソシアティブキャッシュの場合に
は配列bがずっとキャッシュに保持されるとは限らな
い。というのは配列bの要素b〔j〕は配列aの要素a
〔i〕〔j〕、要素a〔i+1〕〔j〕とキャッシュラ
インを競合するからである。それを以下説明する。なお
ここで、2次元配列は2次元目(jの方)が速く変化す
るようにメモリ上に配置されるとする。図5で示したよ
うに、あるアドレスのデータが入るべきキャッシュライ
ン(インデクス)はその中位7ビットによって決まる。
従って2つの配列要素があったときそのアドレスの中位
7ビットが等しければそれらは同じラインに入る(キャ
ッシュラインの競合)。ただし2ウェイセットアソシア
ティブであれば1つのインデクスに2つのエントリが対
応する。b〔j〕のアドレスは「配列bの先頭アドレス
(b
〔0〕のアドレスのこと)+j*4」、a〔i〕
〔j〕のアドレスは「配列aの先頭アドレス(a
〔0〕
〔0〕のアドレスのこと)+i*4096+j*4」で
ある。よってa〔i〕〔j〕とa〔i+1〕〔j〕のア
ドレスはちょうど4096だけ異なり、この2つは明ら
かに同じキャッシュラインに入る。また、aの先頭アド
レスとbの先頭アドレスの差が4096の倍数であれば
(aの大きさは4096バイトなので、これは成り立つ
可能性が高い)a〔i〕〔j〕とb〔j〕もやはり同じ
キャッシュラインに入る。故に、b〔j〕,a〔i〕
〔j〕,a〔i+1〕〔j〕はキャッシュラインを競合
する。
【0018】図9は、図8のプログラムを機械語イメー
ジに近付けたプログラムである。機械語イメージに近付
けたというのは、いま注目している配列a,bへのアク
セスを明示的にload()により示しているというこ
とである。ここで、r0、r1、r2はレジスタを指
す。ループ内の配列要素アクセスはa〔i〕〔j〕、a
〔i+1〕〔j〕、b〔j〕の順に行われる。内側ルー
プのイタレーションを固定(jの値が固定のJ)し、外
側ループのイタレーションを順次に増大させて以下従来
のキャッシュの振舞いを考える。さて、外側ループの初
回のイタレーション(iの値は0)において、3つの配
列要素参照a
〔0〕〔J〕,a〔1〕〔J〕,b〔J〕
はキャッシュラインを競合し、そして置換方式がLRU
であるので、3つのうちa〔1〕〔J〕とb〔J〕がキ
ャッシュに残る。このうちb〔J〕のrecentビッ
トが真となる。外側ループの次のイタレーション(iの
値は2)では、最初a〔2〕〔J〕がアクセスされる。
この時点で対応するキャッシュエントリにはa〔1〕
〔J〕とb〔J〕が残っているが、a〔1〕〔J〕の方
のrecentビットが偽であるので、a〔1〕〔J〕
がキャッシュから追い出され、a〔2〕〔J〕がキャッ
シュにはいる。その際追い出されなかった方のb〔J〕
のrecentビットが偽になり、新しくキャッシュに
入ったa〔2〕〔J〕のrecentビットが真にな
る。次にa〔3〕〔J〕がアクセスされ、これに伴いb
〔J〕がキャッシュから追い出され、a〔3〕〔J〕が
キャッシュにはいる。最後にb〔J〕がアクセスされ、
a〔2〕〔J〕がキャッシュから追い出されb〔J〕が
キャッシュにはいる。外側ループイタレーションの3回
目以降は2回目以降とほぼ同様になる。ここで注目すべ
きはb〔J〕が一旦追い出され、それから新たにフェッ
チされている点である。つまり外側ループイタレーショ
ンの任意の回(iが任意の値、jが任意の値J)で、b
〔J〕のメモリからのフェッチが発生している点であ
る。jの値は任意であったのでこれは配列bの全体がキ
ャッシュに全く残っていなかったことを意味する。以
上、従来のキャッシュシステムではキャッシュをまった
く有効に活用できないことを示した。
【0019】次に、本発明のキャッシュシステムで上記
のプログラムがキャッシュを有効利用できることを示
す。図8を本発明のシステムの機械語イメージに近付け
たプログラムを図10に示す。このプログラムではメモ
リアクセスをload()で明示指定し、その際REU
SEかどうかを指定してある。さて、本発明のキャッシ
ュで先程と同様に図10のプログラムの実行を追ってみ
る。内側ループのイタレーションを固定(jの値が固定
のJ)し、外側ループのイタレーションを順次に増大さ
せて以下考える。外側ループの初回のイタレーション
(iの値は0)において、3つの配列参照a
〔0〕
〔J〕,a〔1〕〔J〕,b〔J〕はキャッシュライン
を競合し、そして置換方式がLRUであるので、3つの
うちa〔1〕〔J〕とb〔J〕がキャッシュに残る。そ
してb〔J〕はrecentビットが真となる(a
〔1〕〔J〕はrecentビットが偽)。さらにb
〔J〕のアクセスはREUSE指定であり(1006)
そのreuseビットも真となる。外側ループの次のイ
タレーション(iの値は2)でも3つの配列参照a
〔2〕〔J〕、a〔3〕〔J〕、b〔J〕がある。最初
a〔2〕〔J〕がアクセスされることに伴いa〔1〕
〔J〕がキャッシュから追い出され(reuseビット
もrecentビットも偽のため)、a〔2〕〔J〕が
キャッシュに入る。次にa〔3〕〔J〕がアクセスさ
れ、これに伴いa〔2〕〔J〕とb〔J〕のどちらかが
キャッシュから追い出されることになる。a〔2〕
〔J〕はreuseビットが偽、recentビットが
真であり、一方b〔J〕はreuseビットが真、re
centビットが偽である。従って図1で示した通りa
〔2〕〔J〕が追い出されるエントリとして選ばれ、b
〔J〕が残る。そしてa〔3〕〔J〕がキャッシュに入
る。最後にb〔J〕がアクセスされるが、この場合b
〔J〕がすでにキャッシュにあり(キャッシュヒッ
ト)、メモリからロードする必要はない。もちろんb
〔J〕はrecentかつreuseとなる。外側ルー
プイタレーションの3回目以降は2回目とほぼ同様にな
るが、念のために3回目も示しておく。外側ループの3
回目のイタレーション(iの値は4)では、a〔4〕
〔J〕、a〔5〕〔J〕、b〔J〕の3つが参照され
る。最初a〔4〕〔J〕がアクセスされこれに伴いa
〔3〕〔J〕がキャッシュから追い出されa〔4〕
〔J〕がキャッシュに入る。次にa〔5〕〔J〕がアク
セスされこれに伴いa〔4〕〔J〕とb〔J〕のうち一
方がキャッシュから追い出されることになる。a〔4〕
〔J〕はrecnet、b〔J〕はreuseであり、
したがってa〔4〕〔J〕が追い出される。そしてa
〔5〕〔J〕がキャッシュに入る。最後にb〔J〕がア
クセスされこの場合b〔J〕がすでにキャッシュにあ
り、キャッシュヒットになる。ここで注目すべきはb
〔J〕が一旦キャッシュにフェッチされると以降は一度
も追い出されていない点である。つまり外側ループイタ
レーションの初回で配列b全体がメモリからキャッシュ
にフェッチされると、以降フェッチが全く発生していな
い点である。言い換えると、配列bへのアクセスは時間
的局所性をフルに引き出せたということで、これが本発
明のキャッシュの利点である。
【0020】
【発明の効果】本発明によれば、キャッシュの各エント
リが、そのエントリのデータをなるべくキャッシュから
追い出さないようにすることを示すreuse情報を持
つので、キャッシュ置換時、どのエントリをキャッシュ
から追い出すかを決定する際、この情報を利用できる。
すなわち、その情報を持つエントリを優先的にキャッシ
ュに残すようにできる。また、メモリデータの参照とr
euse情報の値の設定をする命令の実行に応じて、エ
ントリにデータを格納すると共にreuse情報の値が
設定されるので、ユーザまたはコンパイラが特定のデー
タをなるべくキャッシュに残すように指示することが可
能となる。そして、キャッシュミスが少なくすることが
可能となる。
【図面の簡単な説明】
【図1】本発明の一実施例の追い出しエントリの選択に
係る構成および選択を説明するテーブルを示す図であ
る。
【図2】キャッシュを含む情報処理装置の構成を示す図
である。
【図3】本発明の一実施例のキャッシュの構成を示す図
である。
【図4】本発明の一実施例のキャッシュの1ラインの構
成を示す図である。
【図5】メモリアドレスの構成を示す図である。
【図6】キャッシュアクセスの仕組みを説明するための
図である。
【図7】本発明で適用されるロード命令および該命令の
キャッシュに対する作用を示す図である。
【図8】キャッシュの動作を説明するためのプログラム
を示す図である。
【図9】従来のキャッシュの動作を説明するために図8
のプログラムを機械語イメージに近づけたプログラムを
示す図である。
【図10】本発明のキャッシュの動作を説明するために
図8のプログラムを機械語イメージに近づけたプログラ
ムを示す図である。
【符号の説明】
101 追い出しエントリ選択手段 201 CPU 202 キャッシュ 203 バス 204 メモリ 301 セット1 302 セット2 303 制御ビット 304 タグ 305 データ 306 ライン 307 インデックス 401 emptyビット 402 recentビット 403 dirtyビット 404 reuseビット 603 エントリ1 604 エントリ2

Claims (5)

    【特許請求の範囲】
  1. 【請求項1】 中央処理装置に接続され、それぞれがデ
    ータ領域および制御情報領域を有する複数のエントリを
    備えるキャッシュ装置において、 エントリ中のデータのキャッシュからの追い出しを優先
    的に阻止するreuse情報を前記制御情報の1つとし
    て設け、 キャッシュ置換時に前記制御情報に基づきキャッシュか
    ら追い出すエントリを選択しかつ前記reuse情報の
    設定されていないエントリを優先して選択する選択手段
    を具備したことを特徴とするキャッシュ装置。
  2. 【請求項2】 請求項1記載のキャッシュ装置におい
    て、前記中央処理装置におけるメモリデータの参照と前
    記reuse情報の値の設定をする命令の実行に応じ
    て、前記エントリにデータを格納すると共に前記reu
    se情報の値を設定する手段を具備したことを特徴とす
    るキャッシュ装置。
  3. 【請求項3】 請求項1または請求項2記載のキャッシ
    ュ装置において、前記キャッシュ装置をセットアソシア
    ティブ方式としたことを特徴とするキャッシュ装置。
  4. 【請求項4】 請求項1または請求項2記載のキャッシ
    ュ装置において、前記キャッシュ装置を2ウェイ・セッ
    トアソシアティブ方式としたことを特徴とするキャッシ
    ュ装置。
  5. 【請求項5】 請求項1または請求項2記載のキャッシ
    ュ装置において、前記reuse情報を1ビット情報と
    したことを特徴とするキャッシュ装置。
JP5163148A 1993-06-07 1993-06-07 キャッシュ装置 Pending JPH06348595A (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP5163148A JPH06348595A (ja) 1993-06-07 1993-06-07 キャッシュ装置
US08/252,413 US5546559A (en) 1993-06-07 1994-06-01 Cache reuse control system having reuse information field in each cache entry to indicate whether data in the particular entry has higher or lower probability of reuse
KR94012632A KR970000838B1 (en) 1993-06-07 1994-06-04 Control system of cache apparatus and control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP5163148A JPH06348595A (ja) 1993-06-07 1993-06-07 キャッシュ装置

Publications (1)

Publication Number Publication Date
JPH06348595A true JPH06348595A (ja) 1994-12-22

Family

ID=15768137

Family Applications (1)

Application Number Title Priority Date Filing Date
JP5163148A Pending JPH06348595A (ja) 1993-06-07 1993-06-07 キャッシュ装置

Country Status (3)

Country Link
US (1) US5546559A (ja)
JP (1) JPH06348595A (ja)
KR (1) KR970000838B1 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002510085A (ja) * 1998-03-31 2002-04-02 インテル・コーポレーション テンポラリ命令及び非テンポラリ命令用の共用キャッシュ構造
WO2005050455A1 (ja) * 2003-11-18 2005-06-02 Matsushita Electric Industrial Co., Ltd. キャッシュメモリ及びその制御方法
JP2013532862A (ja) * 2010-12-27 2013-08-19 株式会社日立製作所 ストレージシステム及びその制御情報の管理方法

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5940621A (en) * 1996-01-23 1999-08-17 Hewlett-Packard Company Language independent optimal size-based storage allocation
US5943687A (en) * 1997-03-14 1999-08-24 Telefonakiebolaget Lm Ericsson Penalty-based cache storage and replacement techniques
US5974507A (en) * 1997-04-14 1999-10-26 International Business Machines Corporation Optimizing a cache eviction mechanism by selectively introducing different levels of randomness into a replacement algorithm
US6266742B1 (en) * 1997-10-27 2001-07-24 International Business Machines Corporation Algorithm for cache replacement
US6209062B1 (en) 1997-11-24 2001-03-27 Intel Corporation Method for holding cache pages that are not invalidated within normal time duration for a second access or that are likely to be accessed again soon
US6282706B1 (en) * 1998-02-10 2001-08-28 Texas Instruments Incorporated Cache optimization for programming loops
US6542966B1 (en) * 1998-07-16 2003-04-01 Intel Corporation Method and apparatus for managing temporal and non-temporal data in a single cache structure
US6282613B1 (en) 1999-04-30 2001-08-28 International Business Machines Corporation Very efficient technique for dynamically tracking locality of a reference
BR9902725A (pt) * 1999-07-13 2001-03-06 Coppe Ufrj Processo de formação, memorização e reuso, em tempo de execução, de sequências de instruções dinâmicas em computadores
US6807607B1 (en) * 1999-08-17 2004-10-19 International Business Machines Corporation Cache memory management system and method
EP1275046B1 (en) * 2000-04-12 2010-10-06 DSP Group Switzerland AG Data processing circuit with a cache memory and apparatus containing such a circuit
US6668307B1 (en) 2000-09-29 2003-12-23 Sun Microsystems, Inc. System and method for a software controlled cache
US6578111B1 (en) 2000-09-29 2003-06-10 Sun Microsystems, Inc. Cache memory system and method for managing streaming-data
US6598124B1 (en) 2000-09-29 2003-07-22 Sun Microsystems, Inc. System and method for identifying streaming-data
WO2002027498A2 (en) * 2000-09-29 2002-04-04 Sun Microsystems, Inc. System and method for identifying and managing streaming-data
JP2002140234A (ja) 2000-11-02 2002-05-17 Hitachi Ltd キャッシュ装置
JP4067293B2 (ja) * 2001-10-17 2008-03-26 富士通株式会社 キャッシュ制御プログラムおよびキャッシュ処理を行うコンピュータ
US6826656B2 (en) * 2002-01-28 2004-11-30 International Business Machines Corporation Reducing power in a snooping cache based multiprocessor environment
US7353330B2 (en) * 2003-02-24 2008-04-01 Mosaid Technologies Incorporated Method and apparatus for performing repeated content addressable memory searches
KR20060063804A (ko) * 2003-09-19 2006-06-12 마쯔시다덴기산교 가부시키가이샤 캐시 메모리 및 캐시 메모리 제어 방법
JP4045296B2 (ja) * 2004-03-24 2008-02-13 松下電器産業株式会社 キャッシュメモリ及びその制御方法
JP4249719B2 (ja) * 2005-03-29 2009-04-08 株式会社日立製作所 バックアップシステム、プログラム及びバックアップ方法
US7380065B2 (en) 2005-03-30 2008-05-27 International Business Machines Corporation Performance of a cache by detecting cache lines that have been reused
US8667221B2 (en) * 2008-04-08 2014-03-04 Intel Corporation Detection of streaming data in cache
US8131931B1 (en) 2008-10-22 2012-03-06 Nvidia Corporation Configurable cache occupancy policy
US8868838B1 (en) * 2008-11-21 2014-10-21 Nvidia Corporation Multi-class data cache policies
US9355109B2 (en) * 2010-06-11 2016-05-31 The Research Foundation For The State University Of New York Multi-tier caching
EP2680152B1 (en) * 2012-06-27 2017-05-03 Alcatel Lucent Process for managing the storage of a list of N items in a memory cache of C items of a cache system
JP6730587B2 (ja) * 2016-06-13 2020-07-29 富士通株式会社 キャッシュミス推定プログラム、キャッシュミス推定方法及び情報処理装置
US10606752B2 (en) 2017-11-06 2020-03-31 Samsung Electronics Co., Ltd. Coordinated cache management policy for an exclusive cache hierarchy
US11157286B2 (en) * 2018-05-07 2021-10-26 Micron Technology, Inc. Non-cached loads and stores in a system having a multi-threaded, self-scheduling processor
US10671539B2 (en) 2018-10-15 2020-06-02 International Business Machines Corporation Cache line replacement using reference states based on data reference attributes
US11609858B2 (en) * 2018-12-26 2023-03-21 Samsung Electronics Co., Ltd. Bypass predictor for an exclusive last-level cache
US11113207B2 (en) * 2018-12-26 2021-09-07 Samsung Electronics Co., Ltd. Bypass predictor for an exclusive last-level cache

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4513367A (en) * 1981-03-23 1985-04-23 International Business Machines Corporation Cache locking controls in a multiprocessor
JPS6015771A (ja) * 1983-07-08 1985-01-26 Hitachi Ltd ベクトルプロセッサ
US4914582A (en) * 1986-06-27 1990-04-03 Hewlett-Packard Company Cache tag lookaside
JPH0358252A (ja) * 1989-07-27 1991-03-13 Nec Corp キャッシュメモリ制御装置
US5043885A (en) * 1989-08-08 1991-08-27 International Business Machines Corporation Data cache using dynamic frequency based replacement and boundary criteria
US5432918A (en) * 1990-06-29 1995-07-11 Digital Equipment Corporation Method and apparatus for ordering read and write operations using conflict bits in a write queue
US5325509A (en) * 1991-03-05 1994-06-28 Zitel Corporation Method of operating a cache memory including determining desirability of cache ahead or cache behind based on a number of available I/O operations
US5357618A (en) * 1991-04-15 1994-10-18 International Business Machines Corporation Cache prefetch and bypass using stride registers
US5313609A (en) * 1991-05-23 1994-05-17 International Business Machines Corporation Optimum write-back strategy for directory-based cache coherence protocols
US5406504A (en) * 1993-06-30 1995-04-11 Digital Equipment Multiprocessor cache examiner and coherency checker

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002510085A (ja) * 1998-03-31 2002-04-02 インテル・コーポレーション テンポラリ命令及び非テンポラリ命令用の共用キャッシュ構造
WO2005050455A1 (ja) * 2003-11-18 2005-06-02 Matsushita Electric Industrial Co., Ltd. キャッシュメモリ及びその制御方法
US7984243B2 (en) 2003-11-18 2011-07-19 Panasonic Corporation Cache memory and method for cache entry replacement based on modified access order
JP2013532862A (ja) * 2010-12-27 2013-08-19 株式会社日立製作所 ストレージシステム及びその制御情報の管理方法

Also Published As

Publication number Publication date
US5546559A (en) 1996-08-13
KR970000838B1 (en) 1997-01-20

Similar Documents

Publication Publication Date Title
JPH06348595A (ja) キャッシュ装置
US5091851A (en) Fast multiple-word accesses from a multi-way set-associative cache memory
US6105111A (en) Method and apparatus for providing a cache management technique
CN101446923B (zh) 一种响应于指令而清洗高速缓冲存储器线的装置和方法
EP0667580B1 (en) Cache System for a memory
JP4486750B2 (ja) テンポラリ命令及び非テンポラリ命令用の共用キャッシュ構造
KR100274327B1 (ko) 캐시가 일관된 다중 처리기 컴퓨터 시스템에서 다중 미결동작을 제공하기 위한 장치 및 그 방법
US6356980B1 (en) Method and system for bypassing cache levels when casting out from an upper level cache
US4774654A (en) 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
JP3504282B2 (ja) 実時間キャッシュ機能を提供する集積回路用チップ
US5625793A (en) Automatic cache bypass for instructions exhibiting poor cache hit ratio
EP0996891B1 (en) Data processing circuit with cache memory
US6212605B1 (en) Eviction override for larx-reserved addresses
US5566324A (en) Computer apparatus including a main memory prefetch cache and method of operation thereof
JP4298800B2 (ja) キャッシュメモリにおけるプリフェッチ管理
US5717895A (en) Associative scalar data cache with write-through capabilities for a vector processor
US20070204107A1 (en) Cache memory background preprocessing
EP0695996A1 (en) Multi-level cache system
JPH0962572A (ja) ストリーム・フィルタ装置及び方法
CA2283044A1 (en) An apparatus for software initiated prefetch and method therefor
US7237067B2 (en) Managing a multi-way associative cache
JP3236287B2 (ja) マルチプロセッサシステム
KR101462220B1 (ko) 마이크로프로세서용 구성가능한 캐시
US6560676B1 (en) Cache memory system having a replace way limitation circuit and a processor
JP2006516168A (ja) ストライド予測テーブルにアドレスするためにキャッシュミスパターンを使用する方法