JP2001005725A - キャッシュ記憶装置 - Google Patents

キャッシュ記憶装置

Info

Publication number
JP2001005725A
JP2001005725A JP11173656A JP17365699A JP2001005725A JP 2001005725 A JP2001005725 A JP 2001005725A JP 11173656 A JP11173656 A JP 11173656A JP 17365699 A JP17365699 A JP 17365699A JP 2001005725 A JP2001005725 A JP 2001005725A
Authority
JP
Japan
Prior art keywords
lru
cache
block
instruction
row
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
JP11173656A
Other languages
English (en)
Inventor
Satoru Nishimoto
哲 西本
Takayoshi Iizuka
孝好 飯塚
Eiki Kamata
栄樹 釜田
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 JP11173656A priority Critical patent/JP2001005725A/ja
Publication of JP2001005725A publication Critical patent/JP2001005725A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)

Abstract

(57)【要約】 【課題】 セットアソシアティブ方式のキャッシュ記憶
装置において、ブロック競合によるキャッシュミス回数
を低減するキャッシュ記憶装置を提供すること。 【解決手段】 データとタグを保持するメモリセル部
と、キャッシュブロックの参照履歴情報を表すLRUメ
モリ部と、ヒット/ミスを判定する回路を具備するセッ
トアソシアティブ方式のキャッシュメモリ装置におい
て、該当キャッシュブロックのLRUを最も遠い昔に参
照したブロックに変更する命令を備える。前記命令の実
行時に、LRUエンコード回路110において該当ブロ
ックのLRUを最も遠い昔に参照したブロックに変更す
る。

Description

【発明の詳細な説明】
【発明の属する技術分野】本発明はプロセッサにおける
キャッシュ記憶装置に係わり、特に、将来使用される可
能性の高いデータのキャッシュからの追い出しを抑止す
ることができるキャッシュ記憶装置に関する。
【従来の技術】キャッシュ記憶装置については、富田
眞治、村上 和彰、新實 治男 訳:”コンピュータアー
キテクチャ:設計・実現・評価の定量的アプローチ”:
P403〜P428:日経BP、において詳しく述べら
れている。コンピュータプログラムの主記憶参照には局
所性がある。この性質を利用して、頻繁にアクセスされ
る主記憶データをキャッシュ記憶装置と呼ばれる高速で
小容量のメモリにコピーし、主記憶へのアクセスをこの
キャッシュ記憶装置に対して行なうことによって、メモ
リアクセスを高速化させることが行なわれている。キャ
ッシュ記憶装置と主記憶の間のデータの管理は、ブロッ
クと呼ぶ適当な大きさを単位として行なわれる。ブロッ
クの大きさをブロックサイズと呼ぶ。キャッシュ記憶装
置には複数のブロックが格納されており、例えばキャッ
シュサイズが128Kバイト、ブロックサイズが128
バイトの場合、キャッシュ記憶装置には1024個のブ
ロックが格納される。キャッシュに格納されたデータは
データアレイと呼ぶメモリに保持される。またデータと
同様にキャッシュが主記憶上のどのブロックを保持する
かを識別するために、ブロックのアドレスがアドレスア
レイと呼ばれるメモリに保持される。プロセッサが参照
するデータがキャッシュ上にあるかどうかは、アドレス
アレイと、命令が参照するアドレスを比較することで判
定する。主記憶上のブロックをキャッシュ上のどこに配
置するかによって、キャッシュの構成は3つに分類でき
る。主記憶上の各ブロックのキャッシュ上での位置がそ
のアドレスによって一意に決められている場合をダイレ
クトマップ方式と呼び、主記憶上の各ブロックをキャッ
シュ上の任意の場所に配置して良い場合をフルアソシア
ティブ方式と呼び、主記憶上のブロックをキャッシュ上
のある決められた範囲内の中だけに配置することができ
る場合を、セットアソシアティブ方式と呼ぶ。一般にフ
ルアソシアティブ方式の場合、キャッシュ上にデータが
存在するかどうかを判定するためには、命令が参照する
アドレスと、キャッシュに格納されている全てのブロッ
クのアドレスを比較しなければならず、ハードウエア量
の点から現実的ではない。そのためブロックのマッピン
グには、従来からダイレクトマップ方式と、セットアソ
シアティブ方式が使用されている。セットアソシアティ
ブ方式の概要を図4に示す。セットアソシアティブ方式
では、キャッシュメモリをN行M列のブロックに分割す
る。各ブロックにはデータとブロックのアドレスが格納
されている。ここでキャッシュの各行をカラムと呼び、
各列をロー(ROW)と呼ぶ。図4は、キャッシュサイ
ズが128Kバイト、ブロックサイズが128バイトの
4ウエイセットアソシアティブのキャッシュを表してい
る。この例では、各カラムは4個のブロックから構成さ
れ、キャッシュは256個のカラムから構成される。メ
モリアクセスが図4の401、402、403に示す4
0ビットのアドレスで行なわれると仮定すると、403
の7ビットはブロック内のオフセットを表し、402の
8ビットは、キャッシュのカラム番号を表し、401の
25ビットは、同一カラムに格納される可能性のある主
記憶上のブロックのインデックスを表す。したがって、
アドレスアレイには401に示すブロックのインデック
スが格納される。メモリ参照命令が実行されると、まず
402で示されるカラムアドレスによって、キャッシュ
がアクセスされる。ここでカラムアドレスがiならば、
キャッシュメモリのカラムi上の4個のブロックがアク
セスされる。次に上記で読み出された4個のブロックの
アドレスと、401で与えられるブロックのインデック
スの一致を検査する。4個のいずれかのブロックとアド
レスが一致していれば、キャッシュにヒットしたとい
い、参照するデータがキャッシュ上に存在することが分
かる。4個のどのブロックとも一致しなければ、キャッ
シュミスしたといい、参照するデータはキャッシュ上に
存在しないことが分かる。この場合、主記憶からブロッ
クをキャッシュ上にコピーする。セットアソシアティブ
方式では、主記憶からフェッチしたブロックを格納する
キャッシュ上の位置の決定において、カラム番号はフェ
ッチしたブロックのアドレスによって一意に決まるが、
カラム内のどのROWにブロックを登録するかは、なん
らかの方法で決定しなければならない。該当カラム内に
有効でないROWが存在すれば、そのROWを置き換え
対象とできるが、全てのROWが有効である場合は、カ
ラム内のいずれかのROWを追い出して、その後、該当
ROWに主記憶からのブロックをコピーする必要があ
る。上記の追い出しが発生する場合の、追い出し対象と
なるROWを決定する方法として、一般にLRU(Le
ast Recently Used)アルゴリズムが使
用されている。これは、最も遠い過去に参照されたブロ
ックを追い出し対象とする方式である。図4におけるL
RU407は、カラム内の4個のブロックの参照履歴情
報を格納するためのメモリであり、カラム毎に対応する
LRU情報を保持している。このLRU情報を用いて、
カラム内の4個のブロックの中で最も遠い昔に参照され
たブロックを検出する。
【発明が解決しようとする課題】一般にプログラムのメ
モリアクセスパターンを解析すると、次のような特徴が
現れる場合が非常に多い。 (1)あるアドレスのデータに対するアクセスは比較的
短い時間内に再発する。 (2)ある一定時間内にアクセスされるデータは比較的
近いアドレスに分布する。前者は「時間的局所性」、後
者は「空間的局所性」と呼ばれる。セットアソシアティ
ブ方式において、追い出しアルゴリズムにLRUを用い
た場合、最も最近アクセスされたブロックは追い出され
ないので、メモリアクセスパターンに、”空間的局所性
はあるが、時間的局所性がない”という特徴を持つ大き
な配列をアクセスする場合、キャッシュ内のブロックが
上記配列によって全て上書きされ、スタック上のデータ
などの時間的局所性があるデータが追い出され、この追
い出された時間的局所性のあるデータへの参照が再び発
生した時にキャッシュミスが発生する場合がある。図5
は、上記の問題が発生するプログラム例である。この例
では、キャッシュサイズが128Kバイト、ブロックサ
イズが128バイトの4ウエイセットアソシアティブの
キャッシュを仮定する。501はソーププログラムであ
り、配列の各要素が8バイトである100×16000
の配列Sを100×16000の配列Tにコピーする。
内側ループ504で16000個の要素のコピーを行な
い、外側ループ502を100回繰り返すことで、全要
素のコピーを行なう。また外側ループの各繰り返しにお
いて、外側ループ502内には、内側ループ504の実
行が始まる前にスタック上の局所変数へのアクセス50
3があると仮定する。また配列S、Tは128バイト境
界に配置されていると仮定する。501のプログラムに
おいて、配列S、Tに対するメモリ参照は、ある一定時
間内に比較的近いアドレスに分布するが、同一アドレス
に対する参照は一度しか発生しない。したがって、配列
S、Tのメモリアクセスパターンには、空間的局所性は
あるが、時間的局所性はないと考えられる。一方、局所
変数の使用503で参照されるスタック上のデータは、
外側ループ502の繰り返し毎に同一アドレスが参照さ
れるので、時間的局所性があると考えられる。510は
501の内側ループを疑似命令列で書き換えたものであ
る。510の内側ループ513は、配列Sの各要素をロ
ードして、配列Tの各要素にストアする疑似命令列にな
る。内側ループ513は16000回繰り返され、かつ
配列Sの要素は8バイトなので、外側ループ511の1
回の繰り返しで、キャッシュサイズと同じ128Kバイ
トメモリをシーケンシャルにアクセスする。このプログ
ラムを実行すると、まず外側ループ511の最初の繰り
返しで、局所変数の使用512によって、スタックのデ
ータを格納するブロックがキャッシュ上にコピーされ
る。その後、内側ループ513の実行によって、128
Kバイトのメモリがアクセスされるため、スタックのデ
ータを格納するキャッシュ上のブロックはキャッシュか
ら追い出され、キャッシュ上のデータは全て配列Sによ
って上書きされてしまう。その後、外側ループ511の
次の繰り返しの局所変数の使用512において、再びス
タックが参照されたとき、キャッシュミスが発生する。
スタック上のデータには時間的局所があるため、この例
では外側ループ511の繰り返し毎に、局所変数の使用
512でキャッシュミスが発生する。このような、時間
的局所性のあるブロックが、空間的局所性はあるが時間
的局所性のないブロックによってキャッシュから追い出
されるという問題を解決するために、特開平7−281
957号で示されているLRUのロック方式を使用する
ことができる。上記特許によれば、再利用される可能性
のあるデータの最初の参照でLRUをロックし、該当デー
タの最後の参照でLRUのロックを解除する。この方法
を、前記のプログラム例に適用すると、スタックの最初
の参照でLRUをロックし、関数を抜けるときにLRU
のロックを解除することになる。これにより、スタック
のデータを保持するブロックはキャッシュ上で常に最新
のままになるので、配列Sの参照によってスタックデー
タが追い出されることはなくなる。しかしながら、LR
Uのロック方式ではプロセスが切り替わった時にLRU
が動作しない可能性があり、キャッシュの使用率が低下
するという問題がある。例えば、プロセスAにおいて、
前記のプログラム510を実行し、スタックの最初の参
照でLRUをロックした後で、LRUのロックが解除さ
れる前にプロセスAがプロセスBに切り替わった場合を
考える。プロセスがBに切り替わっても、キャッシュの
LRUはロックされたままなので、ロックされたカラム
における追い出し対象のブロックは、常にLRUがロッ
クされたときに追い出し対象であったブロックとなり、
プロセスBにおける該当カラムは、ダイレクトマップの
キャッシュと同様の動作になってしまい、キャッシュの
使用率が著しく低下する。またこれを避けるために、プ
ロセスがAからBに切り替わる時、OSによってLRU
のロックを全て解除することも考えられるが、この処理
は大きなオーバーヘッドとなる。以上のように、従来方
式では、LRUによって性能が低下する場合があり、か
つ前記特許に示されているLRUのロック方式を使用し
た場合もマルチプロセス環境においてキャッシュの使用
率が低下するという問題が発生する。本発明の目的は、
前記のプログラム例501に示すような、空間的局所性
はあるが、時間的局所性が無いデータの参照によって、
時間的局所性のあるデータがキャッシュから追い出され
ることを減少させることができ、かつマルチプロセス環
境においても特別な処理を行なうことなくLRUを正常
に動作させることができる、キャッシュ記憶装置を提供
することである。
【課題を解決するための手段】本発明は、ブロックの追
い出しアルゴリズムにLRUを使用するキャッシュ記憶
装置において、キャッシュブロックのLRU化を指示で
きるメモリ参照命令を実行したとき、キャッシュ上の該
当ブロックをLRU化することができる回路を備えるこ
とを特徴とする。従来、キャッシュブロックが参照され
た場合、該当するブロックのLRUは最新となり、最も
追い出されにくくなるが、本発明は、該当ブロックの最
後の参照時に上記LRU化命令を使用することで、アク
セスしたキャッシュブロックを最も遠い昔に参照された
ブロックにし(ブロックのLRU化)、次に同一カラム
の追い出しが発生したときに、前記LRU化したブロッ
クを最も追い出され易くすることを特徴とする。
【発明の実施の形態】以下、図面を参照して本発明の実
施例を詳細に説明する。本実施例では、以下のキャッシ
ュ記憶装置を例に説明する。 (1)キャッシュのサイズは、128Kバイト (2)キャッシュのブロックサイズは128バイト (3)4ウエイセットアソシアティブ (4)ブロック置き換えアルゴリズムにはLRUを使用 (5)ストアスルー方式 なお、本発明は、ブロック置き換えアルゴリズムにLR
Uを使用したセットアソシアティブ方式のキャッシュ記
憶装置に適用するものあり、上記仮定におけるキャッシ
ュサイズ、ブロックサイズ、ウエイ数が異なるキャッシ
ュにも適用可能であり、またストアイン方式のキャッシ
ュにも適用可能である。従来技術のセットアソシアティ
ブ方式の説明において使用した図4は、本実施例で使用
するキャッシュのメモリ部分の構造を示している。キャ
ッシュメモリ部の動作は従来技術で説明した通りであ
る。図1は、図4をメモリ部とする本発明のキャッシュ
記憶装置の概略構成図である。101は図4におけるデ
ータおよびアドレスアレイ406であり、111は図4
におけるLRU407に対応する。本実施例のキャッシ
ュ記憶装置は、キャッシュメモリが格納するデータおよ
びそのアドレスを保持するデータアレイおよびアドレス
アレイ101と、参照履歴情報を保持するLRUアレイ
111と、読み出したデータをセレクトするセレクタ1
08と、ヒット/ミスを判定するHIT/MISS判定
回路122と、LRUアレイに書き込むLRUの値を作
成するLRUエンコード回路110と、読み出したLR
Uの値から追い出すROWを決定するLRUデコード回
路112と、データアレイおよびアドレスアレイから読
み出したカラム内の4個のブロックのデータのうちの1
つを選択するためのセレクト信号118を作成する選択
ROW制御回路113と、データアレイ/アドレスアレ
イ/LRUアレイへの書き込みおよび読み出しを制御す
るDATA/TAG/LRU制御回路123から構成さ
れる。以下では、まず通常のロード命令を実行したとき
の、図1のキャッシュ記憶装置の動作、特にLRUデコ
ード回路112とLRUエンコード回路110の動作に
ついて説明し、その後、本発明で提案するLRU化ロー
ドを実行したときの、図1のキャッシュ記憶装置の動
作、特にLRUエンコード回路110の動作について説
明する。通常のロード命令を実行すると、命令が参照す
るアドレス102と、データおよびタグを更新するか否
かを表すデータ/タグ更新信号106と、キャッシュか
らのデータの読み出しを指示するキャッシュ読み出し信
号107が与えられる。上記信号が与えられると、まず
アドレス102のカラムアドレス部によって、データア
レイ/アドレスアレイがアクセスされ、該当カラム内の
ROW0、ROW1、ROW2、ROW3に格納されて
いるデータおよびアドレスが、それぞれデータ0、1、
2、3およびタグ0、1、2、3に読み出される。次に
HIT/MISS判定回路122において、読み出され
た4個のタグの値とロード命令が参照するアドレスのう
ちのブロックアドレス部分を比較する。前記の4個の比
較結果のうちのいずれかが一致していれば、ロード命令
が参照するブロックがキャッシュ上に存在し、HIT/
MISS判定回路122からのヒット信号116が1と
なる。いずれのROWとも一致しなければ、ロード命令
が参照するブロックはキャッシュ上には存在せず、ヒッ
ト信号116は0となる。HIT/MISS判定回路1
22は、上記のヒット信号116とともに、ヒットした
ROW番号を信号119に出力する。選択ROW制御回
路113は、ヒット/ミスに応じて、読み出すべきRO
Wを決定する。ここでヒットならば、ヒットROW11
9によって与えられるROW番号を選択ROW信号11
7に出力し、かつこれをセレクタ108のセレクト信号
118に出力する。セレクタ108では、セレクト信号
118を使用して、同時に読み出した4個のデータおよ
びタグから1つをセレクトし、キャッシュからの読み出
しデータ114および読み出しタグ115をロード命令
の結果として出力する。HIT/MISS判定回路12
2の結果がミスの場合、選択ROW制御回路113は、
LRUデコード回路112から出力される追い出し対象
ROWを選択ROW信号117に出力する。その後、主
記憶からのデータのフェッチを行ない、フェッチした1
ブロック分のデータをキャッシュに書き込む。ここでデ
ータは、前述した、キャッシュミス時に選択ROW信号
117から出力された追い出し対象ROWに書き込む。
前述のとおり、キャッシュミス時に追い出し対象となる
ROWは、LRUデコード回路112で決定される。こ
のLRUデコード回路112の動作を図2および図3を
用いて説明する。図2は、従来から使用されている4ウ
エイセットアソシアティブのLRUの実現方法を表して
いる。この方法によると、4ウエイのLRUを6ビット
で表し、かつ最も最近アクセスされたROWの決定およ
び、最も最近アクセスされたROWへのLRUの更新
を、前記6ビットのうちの3ビットだけを用いて行なう
ことができる。本実施例におけるLRUの実現方法も、
この従来技術を使用する。図2の各ノード201、20
2、203、204は4ウエイセットアソシアティブに
おける各ROWを表し、ノード間のエッジNEWER
(0)〜NEWER(5)はノード間の参照の新旧関係
を表す。このエッジは有向エッジであり、矢印が指すノ
ードは、矢印が出るノードよりも最近アクセスがあった
ROWであることを表す。したがって、4ノードのうち
で最も遠い昔にアクセスされたノード(追い出し対象と
なるノード)は、どこからも矢印が指されていないノー
ドとなる。図2に示す矢印の向きを初期状態とし、NE
WER(0−5)=(0、0、0、0、0、0)とす
る。この場合、初期状態で最も遠い昔にアクセスされた
ノードはROW0である。以上のように4ウエイのLR
Uを実現するために、1つのカラムに対して6ビットN
EWERを使用する。本実施例ではNEWERは、図1
のLRUアレイ111が保持する。キャッシュミスが発
生すると、該当カラム内のROWのうちで、最も遠い昔
にアクセスされたROWを追い出し対象のROWとして
選択する。前述のように最も遠い昔に参照されたROW
は、どこからも矢印が示されていないROWである。キ
ャッシュミス時の追い出し対象のROWは、キャッシュ
アクセス時にLRUアレイから読み出される該当カラム
のNEWER(0−5)をLRUデコード回路112で
デコードして得られるROWを使用する。図3の表30
1はLRUデコード回路112の制御を表している。表
301はNEWER(0−5)が与えられたときに、最
も遠い昔に参照されたROWを検出する論理である。例
えば、ROW0が最も遠い昔にアクセスされたROWと
なるのは、ROW0とつながる矢印NEWER(0)、
NEWER(3)、NEWER(4)が全てROW0か
ら出ている場合である。すなわち各矢印が初期状態と同
じNEWER(0、3、4)=(0、0、0)の場合で
ある。同様にROW1が追い出し対象となるのは、NE
WER(0)だけが初期状態と異なる、NEWER
(0、1、5)=(1、0、0)の場合である。以上
が、通常のロード命令を実行したときの、LRUによる
追い出しROWの決定方法(LRUデコード回路110
の動作)である。次に通常ロード命令を実行したとき
の、LRUの更新動作(LRUエンコード回路112の
動作)について説明する。通常のロード命令の実行で
は、以下の場合にLRUを更新する。 (1)キャッシュヒット時 (2)キャッシュミス時の主記憶からのデータのキャッ
シュへの書き込み時 (1)(2)のケースは共に該当ROWのLRUを最新
(最も最近参照されたROW)に変更する。(1)のケ
ースでは、キャッシュにヒットすると、HIT/MIS
S判定回路122よって出力されるヒットROW119
が、選択ROW制御回路113で選択され、選択ROW
信号117に出力される。その後、選択ROW信号11
7はLRUエンコード回路110に入力され、LRUエ
ンコード回路110において、ROW番号がLRUアレ
イに登録するNEWER(0−5)にエンコードされ、
LRUアレイが更新される。通常のロード命令の実行に
おいて、LRUエンコード回路110は、図3の表30
2にしたがって動作する。例えば、LRUエンコード回
路110への入力がROW0である場合、ROW0が最
新になるように、該当カラムのNEWER(0−5)を
変更する。表302によると、このケースではNEWE
R(0、3、4)=(1、1、1、)に変更する。これ
は図2におけるROW0に繋がる矢印が全てROW0を
向くように変更することを意味する。同様にLRUエン
コード回路110への入力がROW1は、ROW1を最
も最近参照したROWに変更するために、LRUアレイ
の該当カラムにNEWER(0、1、5)=(0、1、
1)を登録する。次に(2)のキャッシュへの書き込み
ケースについて説明する。まずキャッシュミスが生じる
と、LRUアレイから該当カラムのNEWER(0−
5)が出力される。これがLRUデコード回路112に
入力され、最も遠い昔に参照されたROWが追い出し対
象として出力される。LRUデコード回路112の処理
は、前述した図3の表301にしたがって行なわれる。
この追い出し対象のROWは選択ROW制御回路113
に入力され、選択ROW信号として出力される。その
後、主記憶からデータが戻り、キャッシュに書き込むと
きに、(1)のケースと同様に、前記の追い出し対象R
OW番号が、LRUエンコード回路110に入力され、
データを書き込むと同時に該当ROWが最も最近参照さ
れたROWとなるように該当カラムのLRUアレイを変
更する。ここでLRUエンコード回路110における処
理は、(1)のケースと同様に、図3の表302に基づ
いて動作する。以上が通常のロード命令を実行したとき
のキャッシュ記憶装置の動作である。次に本発明で開示
するLRU化ロード命令を実行した時のキャッシュメモ
リの動作について説明する。上述したように、通常のロ
ード命令を実行すると、参照したブロックのLRUは最
新になるのに対して、LRU化ロード命令を実行する
と、参照したブロックのLRUは、最も遠い昔に参照し
たブロックになる。これにより、後続の命令で同一カラ
ムを参照し、かつキャッシュミスが発生した場合は、L
RU化ロード命令で参照され、LRU化されたROWが
追い出し対象になる。LRU化ロード命令が実行される
と、通常のロード命令の場合と同様に、参照するアドレ
スのカラム部によってデータアレイ、アドレスアレイ、
LRUアレイがアクセスされ、該当するカラムのデー
タ、タグ、LRUが読み出される。ここでヒットすれ
ば、ヒットしたROWのデータとタグが読み出しデータ
114および読み出しタグ115によって返される。次
にLRU化ロード命令の実行によるLRUアレイの更新
について説明する。LRUの更新は通常ロードと同様
に、以下のケースで発生する。 (1)キャッシュヒット時 (2)キャッシュミス時の主記憶からのデータのキャッ
シュへの書き込み時 LRU化ロード命令を実行するときは、(1)(2)の
ケースは共に該当ROWのLRUを最も遠い昔に参照さ
れたROWに変更する。(1)のヒット時には、HIT
/MISS判定回路122からヒットしたROW119
が出力され、選択WAY信号117に、119で示され
るROWが出力される。その後、選択WAY信号117
はLRUエンコード回路110に入力され、LRUアレ
イ111に書き込むべきNEWER(0−5)の値を決
定する。LRU化ロード時は、LRUエンコード回路1
10は図3の表303にしたがって動作する。例えば、
LRU化ロード命令がROW0にヒットした場合、LR
Uエンコード回路110に、ROW0が入力される。表
303によると、ROW0が入力されると、NEWER
(0、3、4)=(0、0、0)が出力される。これは
図2におけるノードROW0に繋がっている矢印が、通
常のロード命令とは逆に、全てROW0から出るように
NEWERを変更することを意味しており、これにより
ROW0は該当カラム内で最も遠い昔に参照されたRO
Wに変更される。同様にLRU化ロード命令がROW1
にヒットした場合、LRUエンコード回路110にはR
OW1が入力され、NEWER(0、1、5)=(1、
0、0)が出力される。これは図2におけるノードRO
W1に繋がっている矢印が、通常のロード命令とは逆
に、全てROW1から出るようにNEWERを変更する
ことを意味しており、これによりROW1は該当カラム
内で最も遠い昔に参照されたROWに変更される。次に
(2)のキャッシュへの書き込み時の動作について説明
する。LRU化ロード命令によるキャッシュアクセスで
ミスが発生すると、HIT/MISS判定回路122か
らヒット信号116によってミスが発生したことが選択
ROW制御回路113に伝えられる。またLRUデコー
ド回路112からは、LRU化ロード命令がアクセスし
たカラム内の最も遠い昔に参照されたROWが作成さ
れ、選択ROW制御回路113に入力される。選択RO
W制御回路はキャッシュミスが発生すると、選択ROW
信号117にLRUデコード回路113から入力される
ROW番号を、追い出し対象ROWとして出力する。L
RU化ロード命令のキャッシュミスによって主記憶から
データがフェッチされると、そのデータをキャッシュに
書き込むと同時にLRUの更新も行なう。ここで新しい
LRUの値は、LRU化ロード命令のミス時に追い出し
ROWとして選択ROW信号117から出力されたRO
W番号であり、この値はLRUエンコード回路110に
入力され、LRUアレイ111への入力信号が作成され
る。なお、LRU化ロード命令による書き込み時の、L
RUエンコード回路110は、前述したLRU化ロード
命令のヒットケースと同様に、図3の表303にしたが
って動作する。すなわち、LRUエンコード回路110
に入力された書き込みROWのLRUが、最も遠い昔に
アクセスしたROWとなるように、LRUアレイへの入
力信号NEWER(0−5)が作成される。上記実施例
では、通常のロード命令の機能と、該当キャッシュブロ
ックをLRU化する機能を備えるLRU化ロード命令に
ついて説明したが、請求項で示した以下の命令について
も同様に実施することができる。 ・LRU化ストア命令 通常のストア命令の機能と、該当キャッシュブロックを
LRU化する機能備えた命令。 ・LRU化専用命令 命令で指定したアドレスのブロックがキャッシュ上にあ
れば、そのブロックをLRU化するための専用命令。 ・LRU化プリフェッチ命令 通常のプリフェッチ命令の機能と、プリフェッチしたキ
ャッシュブロックをLRU化する機能を備えた命令。 ・LRU化オフセット指定付きプリフェッチ命令 通常のプリフェッチ命令の機能と、プリフェッチアドレ
スから、命令で指定されたオフセットだけ離れたアドレ
スのブロックがキャッシュ上にあれば、このブロックを
LRU化する機能を備えた命令。 ・LRU化オフセット指定付きメモリ参照命令 ロード命令、ストア命令といった通常のメモリ参照命令
の機能と、メモリ参照するアドレスから、命令で指定さ
れたオフセットだけ離れたアドレスのブロックがキャッ
シュ上にあれば、このブロックをLRU化する機能を備
えた命令。以下では、これらの命令を実行したときの、
本実施例のキャッシュ記憶装置の動作について説明す
る。LRU化ストア命令を実行すると、まず与えられた
アドレスで、キャッシュをアクセスし、ヒットチェック
を行なう。キャッシュミスならば、本実施例はストアス
ルーを仮定しているので、主記憶にデータを書き込んで
処理を終了する。キャッシュヒットの場合は、ヒットし
たROWが選択ROW信号117から出力される。その
後、ストアデータをキャッシュに書き込む時に、前記選
択ROW信号117がLRUエンコード回路110に入
力され、LRUエンコード回路110によって、LRU
アレイ111に書き込むべき値が作成され、キャッシュ
のデータを更新する共にLRUの値も更新される。な
お、ここでLRUエンコード回路110は、前述したL
RU化ロード命令におけるLRUの更新時と同様に、図
3の表303にしたがって動作する。これにより、LR
U化ストア命令によってデータが書き込まれたブロック
のLRUは、最も遠い昔にアクセスされたブロックとな
る。LRU化専用命令を実行すると、まず指定されたア
ドレスでキャッシュのヒットチェックを行なう。キャッ
シュミスならば処理を終了する。キャッシュヒットなら
ば、ヒットしたROWが選択ROW信号117から出力
され、LRUエンコード回路110に入力される。LR
Uエンコード回路110では、LRU化ロード命令にお
けるLRUの更新時と同様に、図3の表303にしたが
って、更新するLRUの値を生成し、LRUアレイ11
1に書き込む。これにより、LRU化専用命令によって
アクセスされたキャッシュブロックは最も遠い昔にアク
セスされたブロックとなる。LRU化プリフェッチ命令
を実行すると、まずプリフェッチアドレスでキャッシュ
をアクセスし、ヒットチェックを行なう。キャッシュミ
スならば、主記憶からのデータのフェッチを行なう。こ
こでフェッチしたデータを書き込むキャッシュのROW
は、選択ROW信号117から出力される。このROW
番号は、LRU化ロード命令におけるキャッシュミス時
と同様にLRUデコード回路112によって作成され
る。フェッチしたデータを書き込む時に、前記の書き込
むべきROW番号をLRUエンコード回路110に入力
し、更新するLRUの値を決定する。LRUエンコード
回路110は、LRU化ロード命令におけるLRUの更
新時と同様に、図3の表303にしたがって動作する。
これによりキャッシュに書き込んだブロックは、最も遠
い昔にアクセスされたブロックとなる。なお、プリフェ
ッチ命令では、主記憶からフェッチしたデータのレジス
タへの転送は行なわない。次にLRU化プリフェッチ命
令でキャッシュヒットした場合は、LRU化専用命令で
キャッシュヒットした場合と同様に動作する。アドレス
アレイが2ポートのキャッシュにおいて、LRU化オフ
セット指定付きプリフェッチ命令を実行すると、まず指
定されたプリフェッチアドレスと、前記プリフェッチア
ドレスから命令で指定されたオフセット分離れたアドレ
ス(以後、”LRU化アドレス”と呼ぶ)によってキャ
ッシュをアクセスし、ヒットチェックを前記の2個のア
ドレスで同時に行なう。プリフェッチアドレスによるキ
ャッシュアクセスは、通常のプリフェッチ命令の動作と
同様に行なう。すなわちヒットしていれば、データのレ
ジスタへの転送は行なわず、ミスしていれば主記憶から
データをフェッチするが、レジスタへのデータの転送は
行なわない。なお、プリフェッチアドレスによるキャッ
シュアクセスでは、アクセスしたキャッシュブロックの
LRUは、従来のプリフェッチ命令と同様に最新のブロ
ックに変更する。一方LRU化アドレスによってアクセ
スされたキャッシュブロックはLRU化する。このLR
U化の動作は、LRU化専用命令の動作と同様である。
これにより、プリフェッチしたデータを保持するキャッ
シュブロックのLRUは最新となり、プリフェッチアド
レスとオフセットによって生成したLRU化アドレスを
保持するキャッシュブロックのLRUは、最も遠い昔に
参照されたブロックとなる。最後に、LRU化オフセッ
ト指定付きメモリ参照命令を、アドレスアレイが2ポー
トのキャッシュで実行した場合を説明する。前記命令を
実行すると、まずメモリ参照するアドレスと、前記メモ
リ参照アドレスから命令で指定されたオフセット分離れ
たアドレス(LRU化アドレス)によってキャッシュを
アクセスし、ヒットチェックを前記の2個のアドレスで
同時に行なう。メモリ参照アドレスによるキャッシュア
クセスは、通常のメモリ参照命令と同様に行なう。すな
わち、該当するキャッシュブロックのLRUは最も最近
参照されたブロックとなるように変更する。一方LRU
化アドレスによってアクセスされたキャッシュブロック
はLRU化する。LRU化の動作は前述したLRU化オ
フセット指定付きプリフェッチ命令におけるLRU化ア
ドレスによるキャッシュアクセスと同様である。なお上
記のLRU化オフセット指定付きプリフェッチ命令とL
RU化オフセット指定付きメモリ参照命令の実施例で
は、LRU化アドレスを、プリフェッチアドレスおよび
メモリ参照アドレスからオフセット分離れたアドレスと
したが、オフセット×ブロックサイズ分離れたアドレス
とする等、オフセットを用いてLRU化アドレスをエン
コードすることも可能である。また、上記実施例では、
2ポートのアドレスアレイを用いて、プリフェッチアド
レスおよびメモリ参照アドレスと、LRU化アドレスで
同時にキャッシュをアクセスしたが、1ポートのキャッ
シュで実施する場合は、2度キャッシュをアクセスする
ことで同様の動作を実現することができる。以上、本発
明で提供するキャッシュ記憶装置において、各LRU化
命令を実行したときの、キャッシュ記憶装置の動作につ
いて説明した。以下では、従来技術で問題が発生したプ
ログラム例501に、LRU化命令を適用することで、
前記の問題が解決できることを示す。なお、プログラム
例501の動作および仮定は、従来技術の説明と同じで
ある。図5の520は、510にLRU化ロード命令お
よびLRU化ストア命令を適用した、変換後のプログラ
ムである。520では、LRU化命令の適用のために、
まず内側ループ513を16回展開して内側ループ52
3に変換する。これにより、内側ループは、1回の繰り
返しでキャッシュ1ブロック分の128バイトのデータ
を参照するコードになる。次にキャッシュブロックの最
後の参照命令でる525と526をLRU化命令に変換
する。520を実行すると、内側ループのLRU化命令
を実行したとき、従来は該当ブロックのLRUが最新に
なるところが、LRUが最も遠い昔に参照された状態に
なり、次に同一カラムへのアクセスが発生した時には、
LRU化したブロックが追い出し対象になる。これによ
り、配列Sはキャッシュの各カラムの1つのROWを使
い回すことになり、内側ループが終了したときも、局所
変数が配列Sによって追い出されず、局所変数の使用5
22でキャッシュにヒットする。
【発明の効果】本発明によれば、命令セットにLRU化
命令を設け、かつこのLRU化命令が実行されたとき、
該当するキャッシュブロックのLRU情報を、最も遠い
昔に参照されたブロック変更する回路をキャッシュ記憶
装置に具備することにより、空間的局所性はあるが、時
間的局所性のないデータの参照によって、時間的局所性
のあるデータがキャッシュからおいだされることを抑止
することができる。またLRU化命令は、将来参照され
ないブロックを追い出し対象のブロックに変更する命令
であり、LRUの変更をロックする方式のように、ロッ
クを解除する必要がないため、プロセスが切り替わって
もLRUは動作し続け、キャッシュの使用効率を低下さ
せることはない。
【図面の簡単な説明】
【図1】本発明の一実施例であるキャッシュ記憶装置の
概略構成図である。
【図2】図1に示すキャッシュ記憶装置におけるLRU
方式の追い出しアルゴリズムの実現方法を示す図であ
る。
【図3】図1に示すLRUエンコード回路およびLRU
デコード回路の制御方法を示す図である。
【図4】従来例および本発明のセットアソシアティブキ
ャッシュのメモリ部の概略構成を示す図である。
【図5】従来例で性能が低下する場合のプログラム例お
よび、このプログラム例に対して本発明を適用したとき
に生成されるプログラム例を示す図である。
【符号の説明】
100…キャッシュ記憶装置、101…メモリ部、10
2…キャッシュを参照するアドレス、103…キャッシ
ュを更新するデータ、104…キャッシュを更新するタ
グ、105…更新するLRUの入力、106…データお
よびタグを更新することを伝える信号、107…キャッ
シュの読み出しを指示する信号、108…各ROWから
読み出したデータのセレクタ、109…LRU更新時の
LRUのセレクタ、110…LRUエンコード回路、1
11…LRUメモリ部、112…最も遠い昔に参照され
たROWを検出するLRUデコード回路、113…読み
出したLRUのセレクト回路、114…読み出しデー
タ、115…読み出しタグ、116…ヒット信号、11
7…選択ROW制御回路、119…HITRO制御回
路、120…データ/タグ/LRU制御信号、122…
ヒット/ミス判定回路、123…データ/タグ/LRU
の制御回路。
フロントページの続き (72)発明者 釜田 栄樹 神奈川県秦野市堀山下1番地 株式会社日 立製作所エンタープライズサーバ事業部内 Fターム(参考) 5B005 JJ13 MM01 QQ02 TT02

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】キャッシュブロックの追い出しアルゴリズ
    ムにLRUを使用したセットアソシアティブ方式のキャ
    ッュ記憶装置を備えるプロセッサにおいて、キャッシュ
    キャッシュブロックが最も遠い昔にアクセスされたブロ
    ックとなるように、キャッシュブロックの参照履歴情報
    を更新する(以後”LRU化する”と呼ぶ)命令(以
    後、”LRU化命令”と呼ぶ)を備えることを特徴とす
    るプロセッサ。
JP11173656A 1999-06-21 1999-06-21 キャッシュ記憶装置 Pending JP2001005725A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP11173656A JP2001005725A (ja) 1999-06-21 1999-06-21 キャッシュ記憶装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP11173656A JP2001005725A (ja) 1999-06-21 1999-06-21 キャッシュ記憶装置

Publications (1)

Publication Number Publication Date
JP2001005725A true JP2001005725A (ja) 2001-01-12

Family

ID=15964669

Family Applications (1)

Application Number Title Priority Date Filing Date
JP11173656A Pending JP2001005725A (ja) 1999-06-21 1999-06-21 キャッシュ記憶装置

Country Status (1)

Country Link
JP (1) JP2001005725A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2005050454A1 (ja) * 2003-11-18 2005-06-02 Matsushita Electric Industrial Co., Ltd. キャッシュメモリおよびその制御方法
US8281042B2 (en) 2008-12-05 2012-10-02 Samsung Electronics Co., Ltd. Memory device and management method of memory device
JP2022514345A (ja) * 2018-12-21 2022-02-10 マイクロン テクノロジー,インク. メモリデバイスにおける信号展開キャッシング

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2005050454A1 (ja) * 2003-11-18 2005-06-02 Matsushita Electric Industrial Co., Ltd. キャッシュメモリおよびその制御方法
KR100826757B1 (ko) * 2003-11-18 2008-04-30 마쯔시다덴기산교 가부시키가이샤 캐시 메모리 및 그 제어 방법
US7555610B2 (en) 2003-11-18 2009-06-30 Panasonic Corporation Cache memory and control method thereof
US8281042B2 (en) 2008-12-05 2012-10-02 Samsung Electronics Co., Ltd. Memory device and management method of memory device
JP2022514345A (ja) * 2018-12-21 2022-02-10 マイクロン テクノロジー,インク. メモリデバイスにおける信号展開キャッシング
EP3899732A4 (en) * 2018-12-21 2022-10-19 Micron Technology, Inc. SIGNAL DEVELOPMENT CACHING INTO A MEMORY DEVICE
JP7165269B2 (ja) 2018-12-21 2022-11-02 マイクロン テクノロジー,インク. メモリデバイスにおける信号展開キャッシング
US11520529B2 (en) 2018-12-21 2022-12-06 Micron Technology, Inc. Signal development caching in a memory device
JP2022183340A (ja) * 2018-12-21 2022-12-08 マイクロン テクノロジー,インク. メモリデバイスにおける信号展開キャッシング
US11656801B2 (en) 2018-12-21 2023-05-23 Micron Technology, Inc. Systems and methods for data relocation using a signal development cache
US11669278B2 (en) 2018-12-21 2023-06-06 Micron Technology, Inc. Page policies for signal development caching in a memory device
US11693599B2 (en) 2018-12-21 2023-07-04 Micron Technology, Inc. Domain-based access in a memory device
US11709634B2 (en) 2018-12-21 2023-07-25 Micron Technology, Inc. Multiplexed signal development in a memory device
US11726714B2 (en) 2018-12-21 2023-08-15 Micron Technology, Inc. Content-addressable memory for signal development caching in a memory device
US11934703B2 (en) 2018-12-21 2024-03-19 Micron Technology, Inc. Read broadcast operations associated with a memory device
US11989450B2 (en) 2018-12-21 2024-05-21 Micron Technology, Inc. Signal development caching in a memory device

Similar Documents

Publication Publication Date Title
KR100637610B1 (ko) 로킹을 사용한 캐시 교체방법
JP2505086B2 (ja) アドレス生成機構及びデ―タの事前取り出し方法
US6523091B2 (en) Multiple variable cache replacement policy
JP2554449B2 (ja) キャッシュ・メモリを有するデータ処理システム
US7805574B2 (en) Method and cache system with soft I-MRU member protection scheme during make MRU allocation
US8583872B2 (en) Cache memory having sector function
US4453230A (en) Address conversion system
TWI533201B (zh) 縮減交易回復的快取控制
US7321954B2 (en) Method for software controllable dynamically lockable cache line replacement system
US6438655B1 (en) Method and memory cache for cache locking on bank-by-bank basis
US7343455B2 (en) Cache mechanism and method for avoiding cast out on bad victim select and recycling victim select operation
JPH0326863B2 (ja)
JPH0782438B2 (ja) コンピュータ・システム
CN100541452C (zh) 处理高速缓存未命中的方法和装置
US20080229011A1 (en) Cache memory unit and processing apparatus having cache memory unit, information processing apparatus and control method
JP3812258B2 (ja) キャッシュ記憶装置
JPH0661068B2 (ja) 記憶再配置方法および階層化記憶システム
CN102750227A (zh) 具有动态锁步支持的高速缓存存储器
US6715040B2 (en) Performance improvement of a write instruction of a non-inclusive hierarchical cache memory unit
US6622209B2 (en) Use of non-count data and index hashing to reduce false hits in a non-tagged, n-way cache
JP3929872B2 (ja) キャッシュメモリ、プロセッサ及びキャッシュ制御方法
US6810473B2 (en) Replacement algorithm for a replicated fully associative translation look-aside buffer
JPS638851A (ja) キャッシュ・メモリ制御方式
JP2001005725A (ja) キャッシュ記憶装置
JP3953903B2 (ja) キャッシュメモリ装置、及び、参照履歴のビット誤り検出方法