JP2868654B2 - キャッシュメモリ制御方法 - Google Patents
キャッシュメモリ制御方法Info
- Publication number
- JP2868654B2 JP2868654B2 JP3304317A JP30431791A JP2868654B2 JP 2868654 B2 JP2868654 B2 JP 2868654B2 JP 3304317 A JP3304317 A JP 3304317A JP 30431791 A JP30431791 A JP 30431791A JP 2868654 B2 JP2868654 B2 JP 2868654B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- cache
- cache memory
- refill
- address
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Landscapes
- Advance Control (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Description
【0001】
【産業上の利用分野】本発明は電子計算機装置に関わ
り、特に高速化のためのキャッシュメモリ装置における
キャッシュメモリ制御方法に関する。
り、特に高速化のためのキャッシュメモリ装置における
キャッシュメモリ制御方法に関する。
【0002】
【従来の技術】通常のキャッシュメモリに於いては、図
7のように、キャッシュミスが発生すると、必要とする
データがキャッシュに取り込まれてから実行を再開して
いた。その際はその近くのデータも必要とするケースが
多いために、通常は一定数の複数のデータを同時に取り
込んでいた。この方式は、キャッシュミスの比率が低い
ときには、うまく作動するものである。この関係を式で
表すと、以下のようになる。 Ne=(1−Km)*Ca+Km+Cc
7のように、キャッシュミスが発生すると、必要とする
データがキャッシュに取り込まれてから実行を再開して
いた。その際はその近くのデータも必要とするケースが
多いために、通常は一定数の複数のデータを同時に取り
込んでいた。この方式は、キャッシュミスの比率が低い
ときには、うまく作動するものである。この関係を式で
表すと、以下のようになる。 Ne=(1−Km)*Ca+Km+Cc
【0003】ちなみに、Neは、実効的なメモリのアク
セス時間で、キャッシュメモリの性能を示すものであ
る。またKmは、キャッシュメモリのミス率で、この値
は、キャッシュメモリの大きさ、問題の性質などによ
り、変化するものである。またCaは、キャッシュメモ
リがヒットした場合のアクセス時間で、Ccはキャッシ
ュメモリを入れ換えるのに必要な時間である。通常のケ
ースでは、時間をクロックのサイクル数で測ると、Ca
は1、Ccは10程度、Kmは、1%〜5%程度なの
で、Neは、1.1〜1.5程度になる。この値は、通
常キャッシュメモリを使用しない場合の2〜3程度に比
較して十分小さい値であるので、キャッシュメモリを使
用する効果があることになる。しかし問題によっては、
キャッシュミス率が極めて高くなるケースが存在する。
このようなケースでは、キャッシュメモリは、その効果
がなくなり、かえって悪くなることも有り得る。このよ
うなケースは、問題を解くために使用するデータ量が多
くなるとともに、キャッシュメモリまで含んだマイクロ
プロセサを開発するためにキャッシュメモリのサイズが
それほど大きくとれないことから、顕著になってきてい
る。またたとえ、一定数のデータを連続してリフィルし
てミスの率を多少減らしたとしても、命令キャッシュに
関しては、データ(命令の)がない限り実行が不可能な
ため、リフェル中に処理が中断してしまうという問題は
解決しなかった。
セス時間で、キャッシュメモリの性能を示すものであ
る。またKmは、キャッシュメモリのミス率で、この値
は、キャッシュメモリの大きさ、問題の性質などによ
り、変化するものである。またCaは、キャッシュメモ
リがヒットした場合のアクセス時間で、Ccはキャッシ
ュメモリを入れ換えるのに必要な時間である。通常のケ
ースでは、時間をクロックのサイクル数で測ると、Ca
は1、Ccは10程度、Kmは、1%〜5%程度なの
で、Neは、1.1〜1.5程度になる。この値は、通
常キャッシュメモリを使用しない場合の2〜3程度に比
較して十分小さい値であるので、キャッシュメモリを使
用する効果があることになる。しかし問題によっては、
キャッシュミス率が極めて高くなるケースが存在する。
このようなケースでは、キャッシュメモリは、その効果
がなくなり、かえって悪くなることも有り得る。このよ
うなケースは、問題を解くために使用するデータ量が多
くなるとともに、キャッシュメモリまで含んだマイクロ
プロセサを開発するためにキャッシュメモリのサイズが
それほど大きくとれないことから、顕著になってきてい
る。またたとえ、一定数のデータを連続してリフィルし
てミスの率を多少減らしたとしても、命令キャッシュに
関しては、データ(命令の)がない限り実行が不可能な
ため、リフェル中に処理が中断してしまうという問題は
解決しなかった。
【0004】
【発明が解決しようとする課題】上述したように従来の
キャッシュメモリシステムでは、リフィル中に計算が停
止してしまうために、ミス率の増大が即ちキャッシュメ
モリの性能の低下を意味し、大きな問題に対して無力で
あるばかりでなくかえって害になるケースもあり、特に
1チップにキャッシュメモリを取り込んだマイクロプロ
セサの性能向上を妨げていた。
キャッシュメモリシステムでは、リフィル中に計算が停
止してしまうために、ミス率の増大が即ちキャッシュメ
モリの性能の低下を意味し、大きな問題に対して無力で
あるばかりでなくかえって害になるケースもあり、特に
1チップにキャッシュメモリを取り込んだマイクロプロ
セサの性能向上を妨げていた。
【0005】本発明はこのような事情を鑑みてなされた
もので、その目的とするところは、1回のミスで、連続
して使用される領域を全てリフィルして、ミスの率を減
らし、またリフィル中も停止することなく計算を続行
し、高い性能を得ることのできるキャッシュメモリ装置
を提供することにある。
もので、その目的とするところは、1回のミスで、連続
して使用される領域を全てリフィルして、ミスの率を減
らし、またリフィル中も停止することなく計算を続行
し、高い性能を得ることのできるキャッシュメモリ装置
を提供することにある。
【0006】
【課題を解決するための手段】本発明に係るキャッシュ
メモリ装置におけるキャッシュメモリ制御方法は、電子
計算機が必要とするデータが上位のキャッシュメモリに
存在しなかった場合に、より下位のキャッシュメモリま
たはメインメモリから前記目的のデータを入れ換える手
段を備えたキャッシュメモリ装置であって、前記メイン
メモリに格納された予めデータの入れ換えの終了条件を
設定したプログラムにより設定されたデータを記憶する
終了パターンレジスタを設け、データキャッシュにおい
て、より下位のキャッシュまたはメインメモリからのデ
ータの入れ換えは、目的のデータが存在しなかった場合
にこのデータを指定するアドレスから開始し、前記デー
タを指定するアドレスを増加しながら前記入れ替えを継
続し、前記入れ換えの終了は、前記終了パターンレジス
タに記憶されたプログラムにより設定されたデータに基
づき、より下位のキャッシュまたはメインメモリから読
み込まれてきたデータが前記設定した終了条件と一致し
た場合に、前記入れ換えの終了を決定することを特徴と
する。
メモリ装置におけるキャッシュメモリ制御方法は、電子
計算機が必要とするデータが上位のキャッシュメモリに
存在しなかった場合に、より下位のキャッシュメモリま
たはメインメモリから前記目的のデータを入れ換える手
段を備えたキャッシュメモリ装置であって、前記メイン
メモリに格納された予めデータの入れ換えの終了条件を
設定したプログラムにより設定されたデータを記憶する
終了パターンレジスタを設け、データキャッシュにおい
て、より下位のキャッシュまたはメインメモリからのデ
ータの入れ換えは、目的のデータが存在しなかった場合
にこのデータを指定するアドレスから開始し、前記デー
タを指定するアドレスを増加しながら前記入れ替えを継
続し、前記入れ換えの終了は、前記終了パターンレジス
タに記憶されたプログラムにより設定されたデータに基
づき、より下位のキャッシュまたはメインメモリから読
み込まれてきたデータが前記設定した終了条件と一致し
た場合に、前記入れ換えの終了を決定することを特徴と
する。
【0007】また、上記のキャッシュメモリ装置におけ
るキャッシュメモリ制御方法において、読み込まれてき
たデータの内容に拘らず、増加させたアドレスが既に上
位のキャッシュメモリ中に存在しているデータのアドレ
スと一致した場合に、入れ換えの終了を決定することを
特徴とするものである。
るキャッシュメモリ制御方法において、読み込まれてき
たデータの内容に拘らず、増加させたアドレスが既に上
位のキャッシュメモリ中に存在しているデータのアドレ
スと一致した場合に、入れ換えの終了を決定することを
特徴とするものである。
【0008】
【0009】
【作用】ミスが発生した際のデータの入れ換えを、1回
のミスに対して固定長継続するのではなく、リフィルさ
れるデータの内容をチェックしながらリフィルを継続
し、チェックされた内容によりその終了を決定すること
により、可変長継続することができる。それにより、ミ
スの回数を減らすことができ、また不要なデータの入れ
換えも防ぐ事ができる。また、これらの入れ換えは計算
機の実行とは関わりなく独立して並行に行うことができ
るので、計算機を停止させることなく、キャッシュ中の
データの入れ換えを進めることにより、大きなブロック
を計算機を止めずにリフィルすることができる。
のミスに対して固定長継続するのではなく、リフィルさ
れるデータの内容をチェックしながらリフィルを継続
し、チェックされた内容によりその終了を決定すること
により、可変長継続することができる。それにより、ミ
スの回数を減らすことができ、また不要なデータの入れ
換えも防ぐ事ができる。また、これらの入れ換えは計算
機の実行とは関わりなく独立して並行に行うことができ
るので、計算機を停止させることなく、キャッシュ中の
データの入れ換えを進めることにより、大きなブロック
を計算機を止めずにリフィルすることができる。
【0010】
【実施例】以下図面を参照しながら本発明の一実施例に
ついて説明する。図1は本発明の一実施例に係るキャッ
シュメモリ装置の構成を表すブロック図である。図1中
のリフィル制御部4の動作の流れを図2に示す。
ついて説明する。図1は本発明の一実施例に係るキャッ
シュメモリ装置の構成を表すブロック図である。図1中
のリフィル制御部4の動作の流れを図2に示す。
【0011】動作を簡単に説明すると、まずCPU1が
キャッシュメモリを読み出す際には、アドレスを与え
て、1stキャッシュのタグ部2とデータ部3に同時に
アクセスする。もしもそこでヒットすれば(タグ部2の
アドレスとCPU1から送られたアドレスが一致するこ
とを比較器6が検出すれば)、1stキャッシュのデー
タ部3から読み出したものは正しかったことになり、こ
の読み出したデータを使う。この場合は1クロックでデ
ータにアクセスできる。
キャッシュメモリを読み出す際には、アドレスを与え
て、1stキャッシュのタグ部2とデータ部3に同時に
アクセスする。もしもそこでヒットすれば(タグ部2の
アドレスとCPU1から送られたアドレスが一致するこ
とを比較器6が検出すれば)、1stキャッシュのデー
タ部3から読み出したものは正しかったことになり、こ
の読み出したデータを使う。この場合は1クロックでデ
ータにアクセスできる。
【0012】1stキャッシュでミスだった場合は、読
み出そうとするアドレスを、リフィル制御部4を通し
て、2ndキャッシュメモリ5(これはメインメモリで
もよい)にアクセスする(S2)。そこで2ndキャッ
シュの場合ヒットを確認した後、データにアクセスす
る。そこで読み出されたデータは、リフィル制御部4を
経て1stキャッシュに渡され(S3)、1stキャッ
シュのタグ部2及びデータ部3を書き換えるとともに、
CPU1にもデータを送る。
み出そうとするアドレスを、リフィル制御部4を通し
て、2ndキャッシュメモリ5(これはメインメモリで
もよい)にアクセスする(S2)。そこで2ndキャッ
シュの場合ヒットを確認した後、データにアクセスす
る。そこで読み出されたデータは、リフィル制御部4を
経て1stキャッシュに渡され(S3)、1stキャッ
シュのタグ部2及びデータ部3を書き換えるとともに、
CPU1にもデータを送る。
【0013】上記の過程で、データが2ndキャッシュ
メモリ5からリフィル制御部4へ渡される際に、分岐命
令検出器8がリフィル中のデータを監視し、ブランチ命
令かどうかを検出する(S4)。もしブランチ命令でな
い場合は(S4No)、2ndキャッシュまたはメインメ
モリに与えるアドレスを増加しながら(S9)、次々に
リフィルを続ける(S10,S3)。こうすることによ
り、一度キャッシュミスをすると、ブランチ命令までリ
フィルされるため、ブランチまではキャッシュミスをし
ないことになる。また固定長でブロック(一度にリフィ
ルを行うデータの単位)を大きくとると同様の効果はあ
るものの、使わない領域までリフィルする必要があるた
め無駄があったが、それも防げる。実際には、単にブラ
ンチを検出するだけでなく、当然既にキャッシュに登録
されている際はリフィルは無駄なので、2ndキャッシ
ュに与えるアドレスが1stキャッシュのラグ部にある
アドレスと一致した段階(S11Yes )で、リフィルを
中止する(S12)。
メモリ5からリフィル制御部4へ渡される際に、分岐命
令検出器8がリフィル中のデータを監視し、ブランチ命
令かどうかを検出する(S4)。もしブランチ命令でな
い場合は(S4No)、2ndキャッシュまたはメインメ
モリに与えるアドレスを増加しながら(S9)、次々に
リフィルを続ける(S10,S3)。こうすることによ
り、一度キャッシュミスをすると、ブランチ命令までリ
フィルされるため、ブランチまではキャッシュミスをし
ないことになる。また固定長でブロック(一度にリフィ
ルを行うデータの単位)を大きくとると同様の効果はあ
るものの、使わない領域までリフィルする必要があるた
め無駄があったが、それも防げる。実際には、単にブラ
ンチを検出するだけでなく、当然既にキャッシュに登録
されている際はリフィルは無駄なので、2ndキャッシ
ュに与えるアドレスが1stキャッシュのラグ部にある
アドレスと一致した段階(S11Yes )で、リフィルを
中止する(S12)。
【0014】キャッシュメモリの実際の作り方として
は、タグメモリの容量を減らすために、図6のように、
一つのタグに対して複数のバリッドビットを持つように
するのが効果的である。この例では、1つのタグ(アド
レス)に対して、4単位のデータ部(V0,V1,V
2,V3)を対応させている。尚図中Mというビット
は、これらのデータ部のデータのうち少なくとも1つが
無効である(書き換えられている)ことを表すためのも
のである。各バリッドビットは1回のリフィルの幅とす
れば、無駄を最小限にする事ができる。
は、タグメモリの容量を減らすために、図6のように、
一つのタグに対して複数のバリッドビットを持つように
するのが効果的である。この例では、1つのタグ(アド
レス)に対して、4単位のデータ部(V0,V1,V
2,V3)を対応させている。尚図中Mというビット
は、これらのデータ部のデータのうち少なくとも1つが
無効である(書き換えられている)ことを表すためのも
のである。各バリッドビットは1回のリフィルの幅とす
れば、無駄を最小限にする事ができる。
【0015】またブランチターゲットバッファ(分岐予
測装置)を備えている場合は、ブランチでフィリルを途
ぎらせることなく、ブランチターゲットバッファの予測
先からさらに、リフィルを継続することにより、ブラン
チがあっても効果的にリフィルを継続できる。ここでブ
ランチターゲットバッファの機能を図3を用いて説明す
る。まず通常のCPUが行う命令フェッチの様子を
(a)に示す。101番地の命令がブランチ命令である
場合この分岐先が201番地であることがわかるのは命
令を実行した後であるので、この実行前のサイクルでフ
ェッチした102、103番地の命令は無駄になってし
まう。そこで、一度上記のことが起こると、101番地
の命令の分岐予測先として201番地を(b)のような
分岐予測テーブルに記憶する。そして、(c)のよう
に、CPUが101番地の命令をフェッチすると共に分
岐予測テーブルを引き、次のサイクルで201番地の命
令をフェッチすることができる。これを本実施例に適用
した場合の動作を、再度図2を用いて説明する。まず分
岐命令検出器8でリフィル中のデータが分岐命令である
ことを検出した際(S4Yes )、この検出信号でもって
分岐予測器7を起動し、リフィル制御部4より前記のデ
ータのアドレスを分岐予測器7に送り(S5)、分岐予
測テーブルに登録されているかどうかを、チェックす
る。もし分岐予測器に予測先が登録されていれば(S6
Yes )、分岐予測器7は予想される分岐先のアドレスを
リフィル制御部4に送る(S7)。リフィル制御部4で
は、その予想されるアドレスからさらにリフィルを続行
する(S8,S3)。予測先が登録されていなければ
(S6No)、データが分岐命令でなかった場合と同様、
アドレスを増加しながらリフィルを続行する。このよう
にすることにより、効果的にリフィルを継続できる。
測装置)を備えている場合は、ブランチでフィリルを途
ぎらせることなく、ブランチターゲットバッファの予測
先からさらに、リフィルを継続することにより、ブラン
チがあっても効果的にリフィルを継続できる。ここでブ
ランチターゲットバッファの機能を図3を用いて説明す
る。まず通常のCPUが行う命令フェッチの様子を
(a)に示す。101番地の命令がブランチ命令である
場合この分岐先が201番地であることがわかるのは命
令を実行した後であるので、この実行前のサイクルでフ
ェッチした102、103番地の命令は無駄になってし
まう。そこで、一度上記のことが起こると、101番地
の命令の分岐予測先として201番地を(b)のような
分岐予測テーブルに記憶する。そして、(c)のよう
に、CPUが101番地の命令をフェッチすると共に分
岐予測テーブルを引き、次のサイクルで201番地の命
令をフェッチすることができる。これを本実施例に適用
した場合の動作を、再度図2を用いて説明する。まず分
岐命令検出器8でリフィル中のデータが分岐命令である
ことを検出した際(S4Yes )、この検出信号でもって
分岐予測器7を起動し、リフィル制御部4より前記のデ
ータのアドレスを分岐予測器7に送り(S5)、分岐予
測テーブルに登録されているかどうかを、チェックす
る。もし分岐予測器に予測先が登録されていれば(S6
Yes )、分岐予測器7は予想される分岐先のアドレスを
リフィル制御部4に送る(S7)。リフィル制御部4で
は、その予想されるアドレスからさらにリフィルを続行
する(S8,S3)。予測先が登録されていなければ
(S6No)、データが分岐命令でなかった場合と同様、
アドレスを増加しながらリフィルを続行する。このよう
にすることにより、効果的にリフィルを継続できる。
【0016】この機構は、上述の例では命令のフェッチ
について説明したが、そればかりでなくデータのフェッ
チにも利用可能である。例えば、図4(b)のように、
可変長のデータで、データの終了がある特定のパターン
で示されるようなケースに有効である。終了判定のため
のパターンはプログラムにより可変である事が望まし
く、また連続リフィルの最大値もセットできる方が望ま
しいため、この場合のキャッシュメモリ装置は図4
(a)に示されるブロック図のように構成する。また、
図中のリフィル制御部4の動作の流れを図5に示す。ま
ず終了パターンレジスタ12にあらかじめプログラムで
終了パターン値をセットしておき、さらにデータにバグ
があることを考慮して、最大リフィル回数を最大回数レ
ジスタ11にセットしておく。そして、リフィルの終了
条件は、リフィル中のデータが上記の終了パターン値と
一致するか(S25)、または、連続リフィル回数が上
記の最大リフィル回数を越えたか(S27)のどちらか
一方が満たされたときに、リフィルを中止する(S3
0)ものとする。これ以外の動作は既に説明済みのもの
と同様である。
について説明したが、そればかりでなくデータのフェッ
チにも利用可能である。例えば、図4(b)のように、
可変長のデータで、データの終了がある特定のパターン
で示されるようなケースに有効である。終了判定のため
のパターンはプログラムにより可変である事が望まし
く、また連続リフィルの最大値もセットできる方が望ま
しいため、この場合のキャッシュメモリ装置は図4
(a)に示されるブロック図のように構成する。また、
図中のリフィル制御部4の動作の流れを図5に示す。ま
ず終了パターンレジスタ12にあらかじめプログラムで
終了パターン値をセットしておき、さらにデータにバグ
があることを考慮して、最大リフィル回数を最大回数レ
ジスタ11にセットしておく。そして、リフィルの終了
条件は、リフィル中のデータが上記の終了パターン値と
一致するか(S25)、または、連続リフィル回数が上
記の最大リフィル回数を越えたか(S27)のどちらか
一方が満たされたときに、リフィルを中止する(S3
0)ものとする。これ以外の動作は既に説明済みのもの
と同様である。
【0017】また、これらリフィルの一連の動作をCP
Uの動作と並行して行うことにより、1stキャッシュ
メモリがミスしても、最初のデータが揃った段階でCP
Uは実行を再開し処理が進むようになる。そのため、リ
フィルの速度がCPUよりも速ければ、1度のミスでブ
ランチがくるまで、分岐予測装置がついていればブラン
チ以降も、計算を停止することなく実行を継続できる。
このことを図8のタイミング図を例にとり説明する。図
8の横の一マスはクロックを表す。A1が1stキャッ
シュでミスすると、ここからリフィルを継続して行って
いる。そして、この図の場合には、Aの系列と関係のな
いBの系列についてもパイプライン的に処理を開始し、
B1が1stキャッシュでミスすると、ここからリフィ
ルをAの系列のリフィルと並行して継続している。この
パイプライン処理は、リフィル制御部4にアドレスラッ
チとデータラッチを設け、さらに、プログラムをAの系
列と関係のないBの系列を間に挟み込むよう命令を並べ
換えて最適化することにより実現できる。このパイプラ
イン処理をすれば、リフィルの速度がCPUより遅いよ
うな場合(リフィル時のタイミングが複数クロック毎で
ある場合等)であっても、計算が停止することをなくす
ことができる。つまり、クロック(8)以降はデータが
1stキャッシュに揃っているため、CPUが処理を停
止している時間はなくなり、A1、B1で継続している
リフィルを追いかけるように、リフィルされたデータを
用いた処理をCPUが行うことになる。しかもこのリフ
ィルとCPUの動作は並列に行われている。リフィルの
速度がCPUより速い場合というのは、例えばA2、A
3におけるCPU使用が複数クロックにわたる場合であ
って、このときはA2がCPUを使用している間にA3
で用いるデータのリフィルが完了しているから、リフィ
ルの開始及び継続はA1のみで十分に効果があることに
なる。
Uの動作と並行して行うことにより、1stキャッシュ
メモリがミスしても、最初のデータが揃った段階でCP
Uは実行を再開し処理が進むようになる。そのため、リ
フィルの速度がCPUよりも速ければ、1度のミスでブ
ランチがくるまで、分岐予測装置がついていればブラン
チ以降も、計算を停止することなく実行を継続できる。
このことを図8のタイミング図を例にとり説明する。図
8の横の一マスはクロックを表す。A1が1stキャッ
シュでミスすると、ここからリフィルを継続して行って
いる。そして、この図の場合には、Aの系列と関係のな
いBの系列についてもパイプライン的に処理を開始し、
B1が1stキャッシュでミスすると、ここからリフィ
ルをAの系列のリフィルと並行して継続している。この
パイプライン処理は、リフィル制御部4にアドレスラッ
チとデータラッチを設け、さらに、プログラムをAの系
列と関係のないBの系列を間に挟み込むよう命令を並べ
換えて最適化することにより実現できる。このパイプラ
イン処理をすれば、リフィルの速度がCPUより遅いよ
うな場合(リフィル時のタイミングが複数クロック毎で
ある場合等)であっても、計算が停止することをなくす
ことができる。つまり、クロック(8)以降はデータが
1stキャッシュに揃っているため、CPUが処理を停
止している時間はなくなり、A1、B1で継続している
リフィルを追いかけるように、リフィルされたデータを
用いた処理をCPUが行うことになる。しかもこのリフ
ィルとCPUの動作は並列に行われている。リフィルの
速度がCPUより速い場合というのは、例えばA2、A
3におけるCPU使用が複数クロックにわたる場合であ
って、このときはA2がCPUを使用している間にA3
で用いるデータのリフィルが完了しているから、リフィ
ルの開始及び継続はA1のみで十分に効果があることに
なる。
【0018】また上記の実施例では、1stキャッシュ
と2ndキャッシュ間のリフィルについて説明したが、
このリフィルの方式は様々なメモリ構成に適用できる。
例えば、2ndキャッシュの代わりにメインメモリのあ
る構成でも良いし、1stキャッシュ、2ndキャッシ
ュ、メインメモリがあり、1stと2nd間、2ndと
メイン間にそれぞれリフィル制御部を設け、並行してリ
フィルを行うような構成でも良い。また、CPU、1s
tキャッシュを1チップに登載し、リフィル制御部、2
ndキャッシュをチップ外に設ける構成としても良い
し、リフィル制御部をもチップ内に設けるようにして
も、あるいは、1stキャッシュがチップ外にあっても
良い。また、2ndキャッシュは、さきにタグ部を引い
てヒットかミスかを確認してから、データ部にアクセス
して引いてくる構成でも良いし、2ndキャッシュも1
stキャッシュと同様にタグとデータを同時に引く構成
にもできる。
と2ndキャッシュ間のリフィルについて説明したが、
このリフィルの方式は様々なメモリ構成に適用できる。
例えば、2ndキャッシュの代わりにメインメモリのあ
る構成でも良いし、1stキャッシュ、2ndキャッシ
ュ、メインメモリがあり、1stと2nd間、2ndと
メイン間にそれぞれリフィル制御部を設け、並行してリ
フィルを行うような構成でも良い。また、CPU、1s
tキャッシュを1チップに登載し、リフィル制御部、2
ndキャッシュをチップ外に設ける構成としても良い
し、リフィル制御部をもチップ内に設けるようにして
も、あるいは、1stキャッシュがチップ外にあっても
良い。また、2ndキャッシュは、さきにタグ部を引い
てヒットかミスかを確認してから、データ部にアクセス
して引いてくる構成でも良いし、2ndキャッシュも1
stキャッシュと同様にタグとデータを同時に引く構成
にもできる。
【0019】また上記の実施例では、リフィルが1系統
の場合を説明したが、これを複数系統に(図1、図4に
おける各信号線をそれぞれ2本あるいはそれ以上に)し
ても良い。
の場合を説明したが、これを複数系統に(図1、図4に
おける各信号線をそれぞれ2本あるいはそれ以上に)し
ても良い。
【0020】また上記のデータキャッシュに関する実施
例の最大リフィル回数レジスタ11を、命令キャッシュ
に適用することもできる。この場合、図1に最大回数レ
ジスタを加え、リフィル制御部4で連続リフィル回数を
カウントすると共に、CPU1からレジスタにセットし
た最大リフィル回数との比較を行い(例えば図2のS3
とS4の間で)、カウント数が最大回数を越えた時点で
リフィルを中止する。また、図2ではリフィルしようと
するアドレスが1stキャッシュに既登録ならばその時
点でリフィルを中止するようにしているが、これを既登
録が所定の回数続いたときに中止するようにしても良い
し、また、リフィルを継続している途中で、CPUから
別のフェッチが要求されそれが1stキャッシュでミス
した場合には、継続しているリフィルを中止して別のリ
フィルを優先して開始するようにすることもできる。但
し上述したようにリフィルの系統が複数あれば、継続し
ているリフィルと別の新たなリフィルとを並行して行う
こともできる。
例の最大リフィル回数レジスタ11を、命令キャッシュ
に適用することもできる。この場合、図1に最大回数レ
ジスタを加え、リフィル制御部4で連続リフィル回数を
カウントすると共に、CPU1からレジスタにセットし
た最大リフィル回数との比較を行い(例えば図2のS3
とS4の間で)、カウント数が最大回数を越えた時点で
リフィルを中止する。また、図2ではリフィルしようと
するアドレスが1stキャッシュに既登録ならばその時
点でリフィルを中止するようにしているが、これを既登
録が所定の回数続いたときに中止するようにしても良い
し、また、リフィルを継続している途中で、CPUから
別のフェッチが要求されそれが1stキャッシュでミス
した場合には、継続しているリフィルを中止して別のリ
フィルを優先して開始するようにすることもできる。但
し上述したようにリフィルの系統が複数あれば、継続し
ているリフィルと別の新たなリフィルとを並行して行う
こともできる。
【0021】
【発明の効果】以上説明してきたように、本発明によれ
ば、キャッシュミスが発生した場合、計算を中断するこ
となく必要な分だけリフィルを継続して行うことによ
り、ミス率を減らし、小さな1stキャッシュを持った
ケースでも高性能を発揮できるキャッシュメモリ装置を
実現できる等の実用上多大なる効果が奏せられる。
ば、キャッシュミスが発生した場合、計算を中断するこ
となく必要な分だけリフィルを継続して行うことによ
り、ミス率を減らし、小さな1stキャッシュを持った
ケースでも高性能を発揮できるキャッシュメモリ装置を
実現できる等の実用上多大なる効果が奏せられる。
【図1】 本発明の一実施例に係るキャッシュメモリ装
置の構成を示す図。
置の構成を示す図。
【図2】 図1のリフィル制御部4の動作を表すフロー
図。
図。
【図3】 本実施例における分岐予測器7の機能を説明
するための図。
するための図。
【図4】 (a)本発明をデータキャッシュメモリに適
用した一実施例の構成を示す図。(b)終了マークを持
つデータの例を示す図。
用した一実施例の構成を示す図。(b)終了マークを持
つデータの例を示す図。
【図5】 図4(a)のリフィル制御部4の動作を表す
フロー図。
フロー図。
【図6】 本実施例におけるキャッシュのタグ部の構成
例を示す図。
例を示す図。
【図7】 従来のキャッシュメモリ装置の動作のタイミ
ングを示す図。
ングを示す図。
【図8】 CPUの動作とリフィル制御部の動作を並行
して行った場合の動作のタイミングの一例を示す図。
して行った場合の動作のタイミングの一例を示す図。
1 CPU、 2 1stキャッシュタグ部、 3 1
stキャッシュデータ部、 4 リフィル制御部、 5
2ndキャッシュメモリ、 6,13 比較器、 7
分岐予測器、 8 分岐命令検出器、 11 最大回
数レジスタ、 12 終了パターンレジスタ
stキャッシュデータ部、 4 リフィル制御部、 5
2ndキャッシュメモリ、 6,13 比較器、 7
分岐予測器、 8 分岐命令検出器、 11 最大回
数レジスタ、 12 終了パターンレジスタ
Claims (2)
- 【請求項1】 上位のキャッシュメモリに目的のデータ
が存在しなかった場合に、より下位のキャッシュメモリ
またはメインメモリから前記目的のデータを入れ換える
手段を備えたキャッシュメモリ装置において、 前記メインメモリに格納された予めデータの入れ換えの
終了条件を設定したプログラムにより設定されたデータ
を記憶する終了パターンレジスタを設け、 データキャッシュにおいて、より下位のキャッシュまた
はメインメモリからのデータの入れ換えは、目的のデー
タが存在しなかった場合にこのデータを指定するアドレ
スから開始し、前記データを指定するアドレスを増加し
ながら前記入れ替えを継続し、前記入れ換えの終了は、
前記終了パターンレジスタに記憶されたプログラムによ
り設定されたデータに基づき、より下位のキャッシュま
たはメインメモリから読み込まれてきたデータが前記設
定した終了条件と一致した場合に、前記入れ換えの終了
を決定することを特徴とするキャッシュメモリ制御方
法。 - 【請求項2】 最大リフィル回数を予め設定した最大回
数レジスタを設け、 前記終了条件は、前記プログラムにより予め設定した終
了パターン値と一致した場合か、または連続リフィル回
数が前記最大回数レジスタに予め設定した最大リフィル
回数を超えた場合のどちらか一方を満足した場合とする
ことを特徴とする請求項1記載のキャッシュメモリ制御
方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP3304317A JP2868654B2 (ja) | 1991-11-20 | 1991-11-20 | キャッシュメモリ制御方法 |
US07/979,806 US5634027A (en) | 1991-11-20 | 1992-11-20 | Cache memory system for multiple processors with collectively arranged cache tag memories |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP3304317A JP2868654B2 (ja) | 1991-11-20 | 1991-11-20 | キャッシュメモリ制御方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH05143456A JPH05143456A (ja) | 1993-06-11 |
JP2868654B2 true JP2868654B2 (ja) | 1999-03-10 |
Family
ID=17931575
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP3304317A Expired - Fee Related JP2868654B2 (ja) | 1991-11-20 | 1991-11-20 | キャッシュメモリ制御方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2868654B2 (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3264319B2 (ja) * | 1997-06-30 | 2002-03-11 | 日本電気株式会社 | バスブリッジ |
JP2001273137A (ja) | 2000-03-28 | 2001-10-05 | Toshiba Corp | マイクロプロセッサ |
US20070186049A1 (en) * | 2006-02-03 | 2007-08-09 | International Business Machines Corporation | Self prefetching L2 cache mechanism for instruction lines |
-
1991
- 1991-11-20 JP JP3304317A patent/JP2868654B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH05143456A (ja) | 1993-06-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4067887B2 (ja) | プリフェッチを行う演算処理装置、情報処理装置及びそれらの制御方法 | |
KR101363585B1 (ko) | 마이크로프로세서용 구성가능한 캐시 | |
JP3289661B2 (ja) | キャッシュメモリシステム | |
US20050086435A1 (en) | Cache memory controlling apparatus, information processing apparatus and method for control of cache memory | |
EP2092429B1 (en) | Configurable cache for a microprocessor | |
JPH0962572A (ja) | ストリーム・フィルタ装置及び方法 | |
JPH0962573A (ja) | データ・キャッシュ・システム及び方法 | |
KR100234647B1 (ko) | 인스트럭션 프리페치 방법 및 데이터 처리 시스템 | |
EP2495662B1 (en) | Configurable cache for a microprocessor | |
JPH0452741A (ja) | キャッシュメモリ装置 | |
US20040059854A1 (en) | Dynamic priority external transaction system | |
EP1139222A1 (en) | Prefetch for TLB cache | |
JPH03150659A (ja) | データ転送方式 | |
JP2005524170A (ja) | 不揮発性メモリを備える集積回路及び前記メモリからのデータをフェッチするための方法 | |
JP2868654B2 (ja) | キャッシュメモリ制御方法 | |
CN110737475B (zh) | 一种指令缓存装填过滤装置 | |
US20080320229A1 (en) | Pre-fetch control apparatus | |
JP2009505178A (ja) | 少なくとも2つの命令実行部と少なくともデータ及び/または命令のための第1記憶装置または記憶領域とを備えたコンピュータシステムにおいて、データ及び/または命令を格納する装置及び方法 | |
JP2000047942A (ja) | キャッシュメモリ制御装置及びその制御方法 | |
JP2006260378A (ja) | 半導体集積回路 | |
JP4034032B2 (ja) | キャッシュ内蔵マイクロコンピュータ | |
JP3493122B2 (ja) | マイクロプロセッサ及び命令キャッシュ制御回路 | |
JP2001273137A (ja) | マイクロプロセッサ | |
JP3095831B2 (ja) | 計算機の作動方法及び計算機 | |
JP3735373B2 (ja) | マイクロコンピュータ |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20071225 Year of fee payment: 9 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20081225 Year of fee payment: 10 |
|
LAPS | Cancellation because of no payment of annual fees |