JPWO2006109421A1 - キャッシュメモリ - Google Patents
キャッシュメモリ Download PDFInfo
- Publication number
- JPWO2006109421A1 JPWO2006109421A1 JP2006522577A JP2006522577A JPWO2006109421A1 JP WO2006109421 A1 JPWO2006109421 A1 JP WO2006109421A1 JP 2006522577 A JP2006522577 A JP 2006522577A JP 2006522577 A JP2006522577 A JP 2006522577A JP WO2006109421 A1 JPWO2006109421 A1 JP WO2006109421A1
- Authority
- JP
- Japan
- Prior art keywords
- cache memory
- data
- cache
- address
- 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.)
- Pending
Links
Images
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/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0846—Cache with multiple tag or data arrays being simultaneously accessible
- G06F12/0848—Partitioned cache, e.g. separate instruction and operand caches
-
- 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/0888—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
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キャッシュメモリと並列に動作する第2キャッシュメモリと、第1キャッシュメモリおよび第2キャッシュメモリの両者がミスヒットした場合に、ミスヒットしたメモリアクセス対象データの属性に関連する真偽を判定する判定手段と、真であると判定された場合に、第2キャッシュメモリにメモリデータを格納し、偽であると判定された場合に、第1キャッシュメモリにメモリデータを格納する制御手段とを備える。
Description
本発明は、プロセッサのメモリアクセスを高速化するためのキャッシュメモリに関する。
たとえば特許文献1および非特許文献1には、キャッシュミスを低減する技術としてビクティムキャッシュ(victim cache)が開示されている。
図1は、従来技術におけるビクティムキャッシュを有するシステム例を示すブロック図である。同図のシステムは、CPU501と、キャッシュメモリ502と、フルアソシエイティブ型のビクティムキャッシュ503とを有する。ビクティムキャッシュ503は、タグアドレスおよびラインデータを保持するエントリを少なくとも1つ有する。
キャッシュメモリ502およびビクティムキャッシュ503においてミスヒットが生じると、キャッシュメモリ502において、LRU(Least Recently Used)により最古のエントリがリプレース対象として選択される。選択されたエントリがリプレースされる前に、当該エントリの内容がキャッシュメモリ502からビクティムキャッシュ503に転送される。これにより、ビクティムキャッシュ503のエントリが更新される。この後、キャッシュメモリ502における選択されたエントリがリプレースされる。
その結果、ビクティムキャッシュ503は、キャッシュメモリ502から最後に破棄された少なくとも1つのラインデータを常に保持する。
これにより、CPU501がキャッシュメモリ502から破棄されたデータに対して再度アクセスする場合には、ビクティムキャッシュ503にヒットする可能性が高いので、キャッシュミスによって生じるペナルティを低減している。
特に、時間的局所性(アクセスしたデータが、近いうちにアクセスされやすい性質)が非常に強く、極めて短期間に集中し、かつ、空間的局所性(アクセスしたデータの近傍のデータが、近いうちにアクセスされやすい性質)も強く、極めて小さい領域に閉じているデータをアクセスする場合には、そのデータをアクセスする間、元々保持していたデータはビクティムキャッシュ503に保持されている可能性が高いため、キャッシュミスペナルティを削減するという効果が高い。
米国特許第5261066号明細書 Jouppi,N.P.[1990],″Improving direct−mapped cache performance by the addition of a small fully−associative cache and prefetch buffers,″Proc.17th Annual Int’l Symposium on Computer Architecture,364−73
しかしながら、上記従来技術によれば、たとえば、空間的局所性は強いが、時間的局所性が弱いデータに順にアクセスした場合、多くのキャッシュミスが発生してしまい、キャッシュメモリの使用効率が低下するという問題がある。空間的局所性が強く、時間的局所性が弱いデータとは、例えばデジタル信号処理におけるフィルタの係数の配列データなどであり、CPUから順次アクセスされるようなデータをいう。
配列データがキャッシュエントリーの容量よりも大きい場合や、複数の配列データが存在する場合に、CPUが順次配列データをアクセスすると、キャッシュメモリの複数のエントリが配列データを保持するためにリプレースされてしまうことになる。
その結果、キャッシュメモリの一部又は大部分のエントリが配列データに占有されてしまい、元々キャッシュメモリに保持されていたデータが破棄されているので、配列データのヒット率が向上する反面、元々保持されていたデータのヒット率が低下してしまうという問題が生じる。この場合、元々保持されていたデータを再度キャッシュに保持させるためにキャッシュエントリーがリプレースされるというペナルティが発生し、キャッシュメモリの使用効率が低下する。
本発明は、時間的局所性が強く、極めて短期間に集中し、かつ、空間的局所性も強く、極めて小さい領域に閉じているデータだけでなく、空間的局所性が強く、かつ、時間的局所性が弱いデータに対してもメモリアクセス効率を向上させ、しかもキャッシュメモリ全体の使用効率を向上させるキャッシュメモリを提供することを目的とする。
上記目的を達成するために本発明のキャッシュメモリは、第1キャッシュメモリと、第1キャッシュメモリと並列に動作する第2キャッシュメモリと、第1キャッシュメモリおよび第2キャッシュメモリの両者がミスヒットした場合に、ミスヒットしたメモリアクセス対象データの属性に関連する真偽を判定する判定手段と、真であると判定された場合に、第2キャッシュメモリにメモリデータを格納し、偽であると判定された場合に、第1キャッシュメモリにメモリデータを格納する制御手段とを備える。
この構成によれば、メモリアクセス対象データの属性に関連する真偽に応じて異なるキャッシュメモリが使用されるので、前記属性によって物理的にキャッシュを分離するとともに、アドレスに応じて不均質なキャッシングを実現している。前記真と判定される属性のデータによって第1キャッシュメモリのデータがリプレースされることがないので、第1キャッシュメモリの使用効率を向上させることができる。
ここで、前記アクセスするデータの属性は、アクセスアドレスであり、前記判定手段は、前記アクセスアドレスが特定のアドレス範囲内であるか否かを判定するようにしてもよい。
この構成によれば、前記アドレス範囲を空間的局所性が強いが、時間的局所性が弱いデータを記憶するメモリ領域に対応させることにより、空間的局所性が強いが、時間的局所性が弱いデータは第2キャッシュメモリに保持される。ここで、第1キャッシュメモリを汎用的な構成にし、第2キャッシュメモリを、空間的局所性が強いが、時間手局所性が弱いデータに対して特に効率的な構成をとることにより、第2キャッシュメモリにおける空間的局所性が強いが、時間的局所性が弱いデータへのメモリアクセス効率を向上させることができる。しかも、汎用的に構成した第1キャッシュメモリのデータが、空間的局所性が強いが、時間的局所性が弱いデータによってリプレースされることがないので、第1キャッシュメモリの使用効率を向上させることができる。このように、キャッシュメモリ全体の使用効率を向上させることができる。
ここで、前記第2キャッシュメモリの容量は、前記第1キャッシュメモリよりも小さくてもよい。
ここで、前記第1キャッシュメモリはセットアソシエイティブキャッシュメモリであり、前記第2キャッシュメモリはフルアソシエイティブキャッシュメモリであってもよい。
ここで、前記第1キャッシュメモリはN1個のウェイを有し、前記第1キャッシュメモリの各ウェイはN2個のエントリを有し、前記第2キャッシュメモリはM個のエントリを有し、MはN1よりも小さく、N2よりも小さいようにしてもよい。
ここで、前記Mは2であるようにしてもよい。
この構成によれば、第1キャッシュメモリに比べて第2キャッシュメモリの容量は極少ないので、少ないハードウェアの追加で製造コストをかけずに、キャッシュメモリ全体の使用効率を向上させることができる。
ここで、前記保持手段はプロセッサによりアクセスされるようにしてもよい。
この構成によれば、アドレス範囲はプロセッサからプログラマブルに設定することができる。
また、キャッシュミス時に、アクセスするデータを第1キャッシュメモリに置くか、第2キャッシュメモリに置くかの判定は、データのアドレスに限らず、その他のデータに関する属性を持って判定しても良い。
本発明のキャッシュメモリによれば、アドレス空間によって物理的にキャッシュを分離するとともに、アドレスに応じて不均質なキャッシングを実現し、前記アドレス範囲内のメモリデータによって第1キャッシュメモリのデータがリプレースされることがないので、第1キャッシュメモリの使用効率を向上させることができる。
たとえば、第1キャッシュメモリの使用効率を向上させ、キャッシュメモリ全体の使用効率を向上させることができる。
さらに、少ないハードウェアの追加で製造コストをかけずに、キャッシュメモリ全体の使用効率を向上させることができる。
また、プロセッサからプログラマブルにアドレス範囲を設定することができる。
1000 キャッシュメモリ
1 メインキャッシュ
2 サブキャッシュ
3 アドレスレジスタ
4 アドレステーブル
5 比較器
6 制御部
00 ウェイ
15 ウェイ
0000 エントリ
0000a アドレスエントリ
0000d データエントリ
0015a アドレスエントリ
0015d データエントリ
120 デコーダ
150 比較器
165 比較器
170 バスI/F
20 ウェイ
21 ウェイ
200 エントリ
200a アドレスエントリ
200d データエントリ
201a アドレスエントリ
201d データエントリ
1 メインキャッシュ
2 サブキャッシュ
3 アドレスレジスタ
4 アドレステーブル
5 比較器
6 制御部
00 ウェイ
15 ウェイ
0000 エントリ
0000a アドレスエントリ
0000d データエントリ
0015a アドレスエントリ
0015d データエントリ
120 デコーダ
150 比較器
165 比較器
170 バスI/F
20 ウェイ
21 ウェイ
200 エントリ
200a アドレスエントリ
200d データエントリ
201a アドレスエントリ
201d データエントリ
(実施の形態1)
図2は、実施の形態1におけるキャッシュシステムの構成を示すブロック図である。同図のようにキャッシュメモリ1000は、メインキャッシュ1、サブキャッシュ2、アドレスレジスタ3、アドレステーブル4、比較器5および制御部6を備え、アドレステーブル4に設定されたアドレス範囲内のデータに対しては、第2キャッシュメモリにキャッシュし、アドレス範囲外のデータに対しては、第1キャッシュメモリにキャッシングするように構成されている。
図2は、実施の形態1におけるキャッシュシステムの構成を示すブロック図である。同図のようにキャッシュメモリ1000は、メインキャッシュ1、サブキャッシュ2、アドレスレジスタ3、アドレステーブル4、比較器5および制御部6を備え、アドレステーブル4に設定されたアドレス範囲内のデータに対しては、第2キャッシュメモリにキャッシュし、アドレス範囲外のデータに対しては、第1キャッシュメモリにキャッシングするように構成されている。
メインキャッシュ1は、セットアソシエイティブキャッシュメモリであり、16個のウェイ00〜ウェイ15、デコーダ120、16個の比較器150〜比較器165、バスI/F170を備える。ウェイ00は、16個のエントリ0000〜エントリ0015を備える。ウェイ01〜15についてもウェイ00と同様であるので説明を省略する。
エントリ0000は、タグアドレスを保持するためのアドレスエントリ0000aとラインデータを保持するためのデータエントリ0000dを備える。エントリ0001〜0015についてもエントリ0000と同様の構成なので説明を省略する。
デコーダ120は、アドレスレジスタ3に保持されたメモリアクセスアドレス中の一部(セットインデックスと呼ぶ。)をデコードし、16個のウェイ00〜ウェイ15のそれぞれから1つずつエントリを選択する。各ウェイから1つずつ選択されたエントリからなる16個のエントリをセットと呼ぶ。選択された16個のエントリは、各アドレスエントリに保持されたタグアドレスを比較器150〜165に出力する。
比較器150は、ウェイ00に対応して設けられ、デコーダ120によって選択されたエントリから出力される有効なタグアドレスとアドレスレジスタ3から出力されるタグとを比較し、一致する場合にはウェイ00にヒットしたことを示すヒット信号を制御部6に出力する。当該タグアドレスが有効であるか否かは当該エントリから出力されるバリッドビットによる。つまり、バリッドビットが有効である場合のみ、比較器150は比較結果を出力する。比較器151〜比較器165は、ウェイ01〜15に対応する点以外は比較器150と同様なので説明を省略する。
バスI/F170は、デコーダ120によって選択されたセット中のヒットしたエントリ中のデータエントリと、データバスとの間でデータを入出力するためのインタフェースである。
サブキャッシュ2は、フルアソシエイティブキャッシュメモリであり、ウェイ20、ウェイ21、比較器250、比較器251、バスI/F270を備える。
ウェイ20は、1個のエントリ200を有する。エントリ200は、タグアドレスを保持するためのアドレスエントリ200aとラインデータを保持するためのデータエントリ200dを備える。ウェイ21についても同様の構成なので説明を省略する。
比較器250は、ウェイ20に対応して設けられ、アドレスエントリ200aから出力される有効なタグアドレスと、アドレスレジスタ3から出力されるアドレス部分(タグとセットインデックス)とを比較し、一致する場合にはウェイ20にヒットしたことを示すヒット信号を制御部6に出力する。当該アドレス部分が有効であるか否かは当該エントリから出力されるバリッドビットによる。つまり、バリッドビットが有効である場合のみ、比較器250は比較結果を出力する。比較器251は、ウェイ21に対応する点以外は比較器250と同様なので説明を省略する。
アドレスレジスタ3は、プロセッサから出力されるメモリアクセスアドレスを保持する。同図の例では、アドレスレジスタ3は、32ビット長である。また、ビットの重みを併記してある。アドレスレジスタ3中のタグおよびセットインデックス(ビット31〜7)は、128バイトのラインデータを特定する。セットインデックス(ビット10〜7)は、16個のセットのうちの1つのセットを特定する。サブラインアドレス(SL:ビット6、5)はラインデータ中の4つのサブラインのうち1つのサブラインを特定する。バイトアドレス(byte_A)はサブライン中の1つのバイトデータを特定する。
アドレステーブル4は、アドレス範囲を示す情報とサブキャッシュ2を使用するか否かを示すサブキャッシュ属性とを対応させて保持する。このアドレス範囲を示す情報は、プロセッサにより設定され、サブキャッシュ2を使用すべきデータのアドレス範囲を示す。
比較器5は、第1キャッシュメモリおよび第2キャッシュメモリの両者がミスヒットした場合に、アドレステーブル4に保持されるアドレス範囲を示す情報と、アドレスレジスタ3から出力されるアドレス部分とを比較する。これにより、比較器5は、ミスヒットしたメモリアクセスアドレスが上記のアドレス範囲内であるか否かを判定する。
制御部6は、メインキャッシュ1およびサブキャッシュ2においてキャッシュミスが発生した場合に、比較器5によってメモリアクセスアドレスが前記アドレス範囲内であると判定されたとき、第2キャッシュメモリにメモリデータを格納し、前記アドレス範囲内でないと判定されたとき、第1キャッシュメモリにメモリデータを格納する。
図3は、メインキャッシュ1およびサブキャッシュ2におけるデータエントリのデータ構成を示す説明図である。各データエントリは128バイトのラインデータを保持する。1つのラインデータは、4つのサブラインデータ1〜サブラインデータ4に分割される。これにより、ライトバック、リプレースなどのキャッシュ操作は、ラインデータ単位のサブラインデータ単位のいずれでも可能になっている。
図4は、メインキャッシュ1におけるアドレスエントリの構成を示す説明図である。タグアドレスは、アドレスレジスタ3のタグに対応する。バリッドビットV1〜V4は、サブラインデータ1〜4に対応し、対応するサブラインデータが有効か無効かを示す。ダーティビットD1〜D4は、サブラインデータ1〜4に対応し、対応するサブラインデータにプロセッサからの書き込みがあったか否かを示す。
LRUビットLは、セット内の16個のエントリについてのプロセッサからのアクセス順序を示す。アクセス順序を1番〜16番まで正確に表現するためには本来少なくとも4ビットが必要であるが、ここでは、1ビットのLRUビットは、セット内のエントリ毎に1番(新しい)と2番(古い)の2つのアクセス順序を表現している。リプレース対象は、LRUビットLが2番(古い)であるエントリのうちの1つのエントリが選択される。
ウィークビットWは、セット内の16個のエントリのうち即リプレースしてよいか否かを示し、言い換えればアクセス順序を強制的に最古化するためのビットである。ウィークビットWが1(最古)であるエントリは、LRUビットに関わらずリプレース対象として選択される。
図5は、サブキャッシュ2におけるアドレスエントリの構成を示す説明図である。タグアドレスは、アドレスレジスタ3のビット31〜7(タグおよびセットインデックス)に対応する。バリッドビットV1〜V4、ダーティビットD1〜D4、LRUビットLは図4と同様であるので説明を省略する。
図6は、アドレステーブル4に含まれるテーブルエントリレジスタの構成を示す説明図である。アドレステーブル4は少なくとも1つのテーブルエントリレジスタを備える。同図のテーブルエントリレジスタTER1は、ベースアドレスBA、ページサイズPS、サブキャッシュ属性SC、バリッドビットVを保持する。ベースアドレスBAは、アドレス範囲の先頭を示す。ページサイズPSは、当該アドレス範囲の大きさ(メモリ領域の大きさ)を示す。同図の例では、PS=00ならアドレス範囲の大きさは4kバイト、PS=10なら128kバイト、PS=11なら4Mバイトである。サブキャッシュ属性SCは、当該アドレス範囲に対応するメモリデータをサブキャッシュ2に割り当てるか否かを示す。バリッドビットは、テーブルエントリレジスタTER1が有効か否かを示す。テーブルエントリレジスタはプロセッサから直接書き込みおよび読み出し可能である。
図7は、アドレステーブル4内のテーブルエントリレジスタTER1に設定するためのプログラム例を示す説明図である。同図において、1および2行目における”equ”は変数の値を定義するためのアセンブラに対する擬似命令である。各行の”//”以下はコメントを意味する。1行目ではテーブルエントリレジスタTER1のアドレスを変数ADR_TER1の値として定義している。2行目ではテーブルエントリレジスタTER1に設定すべきデータ(0x90002205)を変数DAT_TER1の値として定義している。この例では、ベースアドレスBAは0x90002000番地、ページサイズPSは10(128kバイト)、サブキャッシュ属性SCは1(サブキャッシュに割り当てる)、バリッドビットVは1(有効)を意味する。6行目のmov命令は、変数ADR_TER1の値をレジスタr28に転送する命令である。7行目のmov命令は、変数DAT_TER1の値をレジスタr29に転送する命令である。8行目のst命令は、レジスタr28の内容をアドレスとして、レジスタr29のデータを書き込む命令である。これにより、テーブルエントリレジスタTER1に変数DAT_TER1の値が設定される。
図8は、サブキャッシュ属性が設定されたメモリ領域とサブキャッシュ2との関係を示す説明図である。同図は図7のプログラム例によってサブキャッシュに割り当てられたメモリ領域を示す。すなわち、ベースアドレスBA(0x90002000番地)からページサイズPS(128kバイト)の大きさのメモリ領域のメモリデータは、メインキャッシュ1ではなくサブキャッシュ2にキャッシングされる。このメモリ領域は、例えば配列データA、Bなど空間的局所性が強いが、時間的局所性が弱いデータを格納するのに適している。また、このメモリ領域以外の領域のメモリデータはメインキャッシュ1にキャッシングされる。
また、時間的局所性が強く、かつ、アクセスが極めて短期間に集中し、かつ、空間的局所性も強く、かつ、小さい領域(たとえば、ラインのサイズ以下、またはサブキャッシュ2のサイズ以下)に閉じているデータを格納するのに適しているのは明らかである。
図9は、各データに対するメモリアクセス回数のパターンの一例を示す図である。同図は例えば動画の圧縮、伸張処理における各データのアクセス回数を示している。この場合、アクセス回数が少ないデータは広く存在し、逆に多くのアクセスが少ないデータに集中している傾向があることがわかる。そこで、この傾向を利用し、たとえば、サブキャッシュ2にはアクセス回数が少なく広く存在するデータ領域を、メインキャッシュ1にはアクセス回数が多く、メインキャッシュ1の大きさに収まる程度のデータ領域を割り当てることにより、メインキャッシュ1およびサブキャッシュ2を効率よく使用することができる。
図10は、プロセッサがメモリアクセスするときの制御部6の制御によるキャッシュメモリの動作を示すフローチャートである。同図において制御部6は、メモリアクセスがヒットした場合、つまりメモリアクセスアドレスを保持するアドレスレジスタ3のタグとメインキャッシュ1またはサブキャッシュ2に保持された何れかのタグアドレスとが一致する場合(S91:yes)には、当該ヒットしたエントリに対してリードまたはライトを行う(S92)。
メモリアクセスがミスヒットした場合、メモリアクセスアドレスがアドレステーブル4に示されるアドレス範囲内であり(S93:yes)、かつ当該アドレス範囲がサブキャッシュに割り当てられていれば(S94:yes)、サブキャッシュ2のエントリをリプレースし、当該エントリにアクセスする(S95)。また、メモリアクセスアドレスがアドレステーブル4に示されるアドレス範囲外であり(S93:no)、または当該アドレス範囲がサブキャッシュに割り当てられていなければ(S94:no)、メインキャッシュ1のエントリをリプレースし、当該エントリにアクセスする(S95)。
以上説明したように本実施の形態におけるキャッシュメモリによれば、メモリデータがアドレステーブル4に設定されたアドレス範囲内のデータであるか否かによって異なるキャッシュメモリが使用されるので、アドレス空間によって物理的にキャッシュを分離するとともに、アドレスに応じて不均質なキャッシングを実現している。前記アドレス範囲内のメモリデータによってメインキャッシュ1のデータがリプレースされることがないので、メインキャッシュ1の使用効率を向上させることができる。
たとえば、アドレステーブル4に設定されるアドレス範囲を、空間的局所性が強いが、時間的局所性が弱いデータを記憶するメモリ領域に対応させることにより、空間的局所性が強いが、時間的局所性が弱いデータはサブキャッシュ2に保持され、それ以外のデータはメインキャッシュ1に保持される。その結果、空間的局所性が強いが、時間的局所性が弱いデータへのメモリアクセス効率を向上させることができる。しかも、メインキャッシュ1のデータが、空間的局所性が強いが、時間的局所性が弱いデータによってリプレースされることがないので、第1キャッシュメモリの使用効率を向上させることができる。このように、キャッシュメモリ全体の使用効率を向上させることができる。
また、メインキャッシュ1に比べてサブキャッシュ2はごく少ない容量で良いので、少ないハードウェアの追加で製造コストをかけずに、キャッシュメモリ全体の使用効率を向上させることができる。
さらに、アドレステーブル4はプロセッサからプログラマブルに設定することができるので、アプリケーション毎またはタスク毎に柔軟にメインキャッシュ1とサブキャッシュ2を利用することができる。
なお、アドレステーブル4をプログラマブルにする必要はなく、静的に割り当てても良いことは明らかである。
以下、実施の形態1におけるキャッシュメモリの変形例について説明する。
メインキャッシュ1は、16ウェイセットアソシエイティブキャッシュメモリである場合の例を説明したが、n(nは16以外)ウェイセットアソシエイティブキャッシュメモリであってもよい。また、ウェイ毎に16エントリを備える場合の例を説明したが、m(mは16以外)個のエントリを備えてもよい。
サブキャッシュ2のエントリ数は、2個としてもよい。ハードウェア規模の増加を抑えること、およびハードウェアコストの増加を抑えるためには、サブキャッシュ2のエントリ数は1個から数個でよい。
メインキャッシュ1は、セットアソシエイティブキャッシュメモリの例を説明したが、フルアソシエイティブキャッシュメモリ、ダイレクトマップキャッシュメモリであってもよい。
サブキャッシュ2は、ダイレクトマップキャッシュメモリ、セットアソシエイティブキャッシュメモリであってもよい。
さらに、メインキャッシュ1に図1に示したビクティムキャッシュを付加してもよい。また、サブキャッシュ2に図1に示したビクティムキャッシュを付加してもよい。
(実施の形態2)
本実施の形態ではサブキャッシュを2つ備える構成について説明する。
本実施の形態ではサブキャッシュを2つ備える構成について説明する。
図11は、実施の形態2におけるキャッシュメモリの構成を示すブロック図である。同図のキャッシュメモリ2000は、図2に示したキャッシュメモリ1000と比較して、サブキャッシュ2a、アドレステーブル4a、比較器5aが新たに追加された点と、制御部6の代わりに制御部6aを備える点とが異なっている。以下、図2と同じ点は説明を省略し、異なる点を中心に説明する。
サブキャッシュ2aは、サブキャッシュ2と同じくフルアソシエイティブキャッシュメモリである。
アドレステーブル4aは、サブキャッシュ2aに割り当てるメモリ領域を示すアドレス範囲を保持する。
比較器5aは、アドレスレジスタ3のタグがアドレステーブル4aに保持されるアドレス範囲に含まれるか否かを判定する。
制御部6aは、制御部6の機能に加えて、サブキャッシュ2aを制御する。サブキャッシュ2aはサブキャッシュ2と同時に動作させてもよいし、アプリケーションまたはタスクに応じて択一的に動作させてもよい。
このように本実施の形態におけるキャッシュメモリ2000によれば、複数のサブキャッシュを同時または択一的に動作させることができ、アプリケーションまたはタスクに応じて柔軟に利用することができ、キャッシュメモリ2000の利用効率を向上させることができる。
なお、実施の形態1で説明した変形例は本実施の形態においても同様に適用してよい。
本発明は、メモリアクセスを高速化するためのキャッシュメモリに適しており、例えば、オンチップキャッシュメモリ、オフチップキャッシュメモリ、データキャッシュメモリ、命令キャッシュメモリ等に適している。
本発明は、プロセッサのメモリアクセスを高速化するためのキャッシュメモリに関する。
たとえば特許文献1および非特許文献1には、キャッシュミスを低減する技術としてビクティムキャッシュ(victim cache)が開示されている。
図1は、従来技術におけるビクティムキャッシュを有するシステム例を示すブロック図である。同図のシステムは、CPU501と、キャッシュメモリ502と、フルアソシエイティブ型のビクティムキャッシュ503とを有する。ビクティムキャッシュ503は、タグアドレスおよびラインデータを保持するエントリを少なくとも1つ有する。
キャッシュメモリ502およびビクティムキャッシュ503においてミスヒットが生じると、キャッシュメモリ502において、LRU(Least Recently Used)により最古のエントリがリプレース対象として選択される。選択されたエントリがリプレースされる前に、当該エントリの内容がキャッシュメモリ502からビクティムキャッシュ503に転送される。これにより、ビクティムキャッシュ503のエントリが更新される。この後、キャッシュメモリ502における選択されたエントリがリプレースされる。
その結果、ビクティムキャッシュ503は、キャッシュメモリ502から最後に破棄された少なくとも1つのラインデータを常に保持する。
これにより、CPU501がキャッシュメモリ502から破棄されたデータに対して再度アクセスする場合には、ビクティムキャッシュ503にヒットする可能性が高いので、キャッシュミスによって生じるペナルティを低減している。
特に、時間的局所性(アクセスしたデータが、近いうちにアクセスされやすい性質)が非常に強く、極めて短期間に集中し、かつ、空間的局所性(アクセスしたデータの近傍のデータが、近いうちにアクセスされやすい性質)も強く、極めて小さい領域に閉じているデータをアクセスする場合には、そのデータをアクセスする間、元々保持していたデータはビクティムキャッシュ503に保持されている可能性が高いため、キャッシュミスペナルティを削減するという効果が高い。
米国特許第5261066号明細書
Jouppi, N. P. [1990], "Improving direct-mapped cache performance by the addition of a small fully-associative cache and prefetch buffers, "Proc. 17th Annual Int'l Symposium on Computer Architecture, 364-73
しかしながら、上記従来技術によれば、たとえば、空間的局所性は強いが、時間的局所性が弱いデータに順にアクセスした場合、多くのキャッシュミスが発生してしまい、キャッシュメモリの使用効率が低下するという問題がある。空間的局所性が強く、時間的局所性が弱いデータとは、例えばデジタル信号処理におけるフィルタの係数の配列データなどであり、CPUから順次アクセスされるようなデータをいう。
配列データがキャッシュエントリーの容量よりも大きい場合や、複数の配列データが存在する場合に、CPUが順次配列データをアクセスすると、キャッシュメモリの複数のエントリが配列データを保持するためにリプレースされてしまうことになる。
その結果、キャッシュメモリの一部又は大部分のエントリが配列データに占有されてしまい、元々キャッシュメモリに保持されていたデータが破棄されているので、配列データのヒット率が向上する反面、元々保持されていたデータのヒット率が低下してしまうという問題が生じる。この場合、元々保持されていたデータを再度キャッシュに保持させるためにキャッシュエントリーがリプレースされるというペナルティが発生し、キャッシュメモリの使用効率が低下する。
本発明は、時間的局所性が強く、極めて短期間に集中し、かつ、空間的局所性も強く、極めて小さい領域に閉じているデータだけでなく、空間的局所性が強く、かつ、時間的局所性が弱いデータに対してもメモリアクセス効率を向上させ、しかもキャッシュメモリ全体の使用効率を向上させるキャッシュメモリを提供することを目的とする。
上記目的を達成するために本発明のキャッシュメモリは、第1キャッシュメモリと、第1キャッシュメモリと並列に動作する第2キャッシュメモリと、第1キャッシュメモリおよび第2キャッシュメモリの両者がミスヒットした場合に、ミスヒットしたメモリアクセス対象データの属性に関連する真偽を判定する判定手段と、真であると判定された場合に、第2キャッシュメモリにメモリデータを格納し、偽であると判定された場合に、第1キャッシュメモリにメモリデータを格納する制御手段とを備える。
この構成によれば、メモリアクセス対象データの属性に関連する真偽に応じて異なるキャッシュメモリが使用されるので、前記属性によって物理的にキャッシュを分離するとともに、アドレスに応じて不均質なキャッシングを実現している。前記真と判定される属性のデータによって第1キャッシュメモリのデータがリプレースされることがないので、第1キャッシュメモリの使用効率を向上させることができる。
ここで、前記アクセスするデータの属性は、アクセスアドレスであり、前記判定手段は、前記アクセスアドレスが特定のアドレス範囲内であるか否かを判定するようにしてもよい。
この構成によれば、前記アドレス範囲を空間的局所性が強いが、時間的局所性が弱いデータを記憶するメモリ領域に対応させることにより、空間的局所性が強いが、時間的局所性が弱いデータは第2キャッシュメモリに保持される。ここで、第1キャッシュメモリを汎用的な構成にし、第2キャッシュメモリを、空間的局所性が強いが、時間手局所性が弱いデータに対して特に効率的な構成をとることにより、第2キャッシュメモリにおける空間的局所性が強いが、時間的局所性が弱いデータへのメモリアクセス効率を向上させることができる。しかも、汎用的に構成した第1キャッシュメモリのデータが、空間的局所性が強いが、時間的局所性が弱いデータによってリプレースされることがないので、第1キャッシュメモリの使用効率を向上させることができる。このように、キャッシュメモリ全体の使用効率を向上させることができる。
ここで、前記第2キャッシュメモリの容量は、前記第1キャッシュメモリよりも小さくてもよい。
ここで、前記第1キャッシュメモリはセットアソシエイティブキャッシュメモリであり、前記第2キャッシュメモリはフルアソシエイティブキャッシュメモリであってもよい。
ここで、前記第1キャッシュメモリはN1個のウェイを有し、前記第1キャッシュメモリの各ウェイはN2個のエントリを有し、前記第2キャッシュメモリはM個のエントリを有し、MはN1よりも小さく、N2よりも小さいようにしてもよい。
ここで、 前記Mは2であるようにしてもよい。
この構成によれば、第1キャッシュメモリに比べて第2キャッシュメモリの容量は極少ないので、少ないハードウェアの追加で製造コストをかけずに、キャッシュメモリ全体の使用効率を向上させることができる。
ここで、前記保持手段はプロセッサによりアクセスされるようにしてもよい。
この構成によれば、アドレス範囲はプロセッサからプログラマブルに設定することができる。
また、キャッシュミス時に、アクセスするデータを第1キャッシュメモリに置くか、第2キャッシュメモリに置くかの判定は、データのアドレスに限らず、その他のデータに関する属性を持って判定しても良い。
本発明のキャッシュメモリによれば、アドレス空間によって物理的にキャッシュを分離するとともに、アドレスに応じて不均質なキャッシングを実現し、前記アドレス範囲内のメモリデータによって第1キャッシュメモリのデータがリプレースされることがないので、第1キャッシュメモリの使用効率を向上させることができる。
たとえば、第1キャッシュメモリの使用効率を向上させ、キャッシュメモリ全体の使用効率を向上させることができる。
さらに、少ないハードウェアの追加で製造コストをかけずに、キャッシュメモリ全体の使用効率を向上させることができる。
また、プロセッサからプログラマブルにアドレス範囲を設定することができる。
(実施の形態1)
図2は、実施の形態1におけるキャッシュシステムの構成を示すブロック図である。同図のようにキャッシュメモリ1000は、メインキャッシュ1、サブキャッシュ2、アドレスレジスタ3、アドレステーブル4、比較器5および制御部6を備え、アドレステーブル4に設定されたアドレス範囲内のデータに対しては、第2キャッシュメモリにキャッシュし、アドレス範囲外のデータに対しては、第1キャッシュメモリにキャッシングするように構成されている。
図2は、実施の形態1におけるキャッシュシステムの構成を示すブロック図である。同図のようにキャッシュメモリ1000は、メインキャッシュ1、サブキャッシュ2、アドレスレジスタ3、アドレステーブル4、比較器5および制御部6を備え、アドレステーブル4に設定されたアドレス範囲内のデータに対しては、第2キャッシュメモリにキャッシュし、アドレス範囲外のデータに対しては、第1キャッシュメモリにキャッシングするように構成されている。
メインキャッシュ1は、セットアソシエイティブキャッシュメモリであり、16個のウェイ00〜ウェイ15、デコーダ120、16個の比較器150〜比較器165、バスI/F170を備える。ウェイ00は、16個のエントリ0000〜エントリ0015を備える。ウェイ01〜15についてもウェイ00と同様であるので説明を省略する。
エントリ0000は、タグアドレスを保持するためのアドレスエントリ0000aとラインデータを保持するためのデータエントリ0000dを備える。エントリ0001〜0015についてもエントリ0000と同様の構成なので説明を省略する。
デコーダ120は、アドレスレジスタ3に保持されたメモリアクセスアドレス中の一部(セットインデックスと呼ぶ。)をデコードし、16個のウェイ00〜ウェイ15のそれぞれから1つずつエントリを選択する。各ウェイから1つずつ選択されたエントリからなる16個のエントリをセットと呼ぶ。選択された16個のエントリは、各アドレスエントリに保持されたタグアドレスを比較器150〜165に出力する。
比較器150は、ウェイ00に対応して設けられ、デコーダ120によって選択されたエントリから出力される有効なタグアドレスとアドレスレジスタ3から出力されるタグとを比較し、一致する場合にはウェイ00にヒットしたことを示すヒット信号を制御部6に出力する。当該タグアドレスが有効であるか否かは当該エントリから出力されるバリッドビットによる。つまり、バリッドビットが有効である場合のみ、比較器150は比較結果を出力する。比較器151〜比較器165は、ウェイ01〜15に対応する点以外は比較器150と同様なので説明を省略する。
バスI/F170は、デコーダ120によって選択されたセット中のヒットしたエントリ中のデータエントリと、データバスとの間でデータを入出力するためのインタフェースである。
サブキャッシュ2は、フルアソシエイティブキャッシュメモリであり、ウェイ20、ウェイ21、比較器250、比較器251、バスI/F270を備える。
ウェイ20は、1個のエントリ200を有する。エントリ200は、タグアドレスを保持するためのアドレスエントリ200aとラインデータを保持するためのデータエントリ200dを備える。ウェイ21についても同様の構成なので説明を省略する。
比較器250は、ウェイ20に対応して設けられ、アドレスエントリ200aから出力される有効なタグアドレスと、アドレスレジスタ3から出力されるアドレス部分(タグとセットインデックス)とを比較し、一致する場合にはウェイ20にヒットしたことを示すヒット信号を制御部6に出力する。当該アドレス部分が有効であるか否かは当該エントリから出力されるバリッドビットによる。つまり、バリッドビットが有効である場合のみ、比較器250は比較結果を出力する。比較器251は、ウェイ21に対応する点以外は比較器250と同様なので説明を省略する。
アドレスレジスタ3は、プロセッサから出力されるメモリアクセスアドレスを保持する。同図の例では、アドレスレジスタ3は、32ビット長である。また、ビットの重みを併記してある。アドレスレジスタ3中のタグおよびセットインデックス(ビット31〜7)は、128バイトのラインデータを特定する。セットインデックス(ビット10〜7)は、16個のセットのうちの1つのセットを特定する。サブラインアドレス(SL:ビット6、5)はラインデータ中の4つのサブラインのうち1つのサブラインを特定する。バイトアドレス(byte_A)はサブライン中の1つのバイトデータを特定する。
アドレステーブル4は、アドレス範囲を示す情報とサブキャッシュ2を使用するか否かを示すサブキャッシュ属性とを対応させて保持する。このアドレス範囲を示す情報は、プロセッサにより設定され、サブキャッシュ2を使用すべきデータのアドレス範囲を示す。
比較器5は、第1キャッシュメモリおよび第2キャッシュメモリの両者がミスヒットした場合に、アドレステーブル4に保持されるアドレス範囲を示す情報と、アドレスレジスタ3から出力されるアドレス部分とを比較する。これにより、比較器5は、ミスヒットしたメモリアクセスアドレスが上記のアドレス範囲内であるか否かを判定する。
制御部6は、メインキャッシュ1およびサブキャッシュ2においてキャッシュミスが発生した場合に、比較器5によってメモリアクセスアドレスが前記アドレス範囲内であると判定されたとき、第2キャッシュメモリにメモリデータを格納し、前記アドレス範囲内でないと判定されたとき、第1キャッシュメモリにメモリデータを格納する。
図3は、メインキャッシュ1およびサブキャッシュ2におけるデータエントリのデータ構成を示す説明図である。各データエントリは128バイトのラインデータを保持する。1つのラインデータは、4つのサブラインデータ1〜サブラインデータ4に分割される。これにより、ライトバック、リプレースなどのキャッシュ操作は、ラインデータ単位のサブラインデータ単位のいずれでも可能になっている。
図4は、メインキャッシュ1におけるアドレスエントリの構成を示す説明図である。タグアドレスは、アドレスレジスタ3のタグに対応する。バリッドビットV1〜V4は、サブラインデータ1〜4に対応し、対応するサブラインデータが有効か無効かを示す。ダーティビットD1〜D4は、サブラインデータ1〜4に対応し、対応するサブラインデータにプロセッサからの書き込みがあったか否かを示す。
LRUビットLは、セット内の16個のエントリについてのプロセッサからのアクセス順序を示す。アクセス順序を1番〜16番まで正確に表現するためには本来少なくとも4ビットが必要であるが、ここでは、1ビットのLRUビットは、セット内のエントリ毎に1番(新しい)と2番(古い)の2つのアクセス順序を表現している。リプレース対象は、LRUビットLが2番(古い)であるエントリのうちの1つのエントリが選択される。
ウィークビットWは、セット内の16個のエントリのうち即リプレースしてよいか否かを示し、言い換えればアクセス順序を強制的に最古化するためのビットである。ウィークビットWが1(最古)であるエントリは、LRUビットに関わらずリプレース対象として選択される。
図5は、サブキャッシュ2におけるアドレスエントリの構成を示す説明図である。タグアドレスは、アドレスレジスタ3のビット31〜7(タグおよびセットインデックス)に対応する。バリッドビットV1〜V4、ダーティビットD1〜D4、LRUビットLは図4と同様であるので説明を省略する。
図6は、アドレステーブル4に含まれるテーブルエントリレジスタの構成を示す説明図である。アドレステーブル4は少なくとも1つのテーブルエントリレジスタを備える。同図のテーブルエントリレジスタTER1は、ベースアドレスBA、ページサイズPS、サブキャッシュ属性SC、バリッドビットVを保持する。ベースアドレスBAは、アドレス範囲の先頭を示す。ページサイズPSは、当該アドレス範囲の大きさ(メモリ領域の大きさ)を示す。同図の例では、PS=00ならアドレス範囲の大きさは4kバイト、PS=10なら128kバイト、PS=11なら4Mバイトである。サブキャッシュ属性SCは、当該アドレス範囲に対応するメモリデータをサブキャッシュ2に割り当てるか否かを示す。バリッドビットは、テーブルエントリレジスタTER1が有効か否かを示す。テーブルエントリレジスタはプロセッサから直接書き込みおよび読み出し可能である。
図7は、アドレステーブル4内のテーブルエントリレジスタTER1に設定するためのプログラム例を示す説明図である。同図において、1および2行目における"equ"は変数の値を定義するためのアセンブラに対する擬似命令である。各行の"//"以下はコメントを意味する。1行目ではテーブルエントリレジスタTER1のアドレスを変数ADR_TER1の値として定義している。2行目ではテーブルエントリレジスタTER1に設定すべきデータ(0x90002205)を変数DAT_TER1の値として定義している。この例では、ベースアドレスBAは0x90002000番地、ページサイズPSは10(128kバイト)、サブキャッシュ属性SCは1(サブキャッシュに割り当てる)、バリッドビットVは1(有効)を意味する。6行目のmov命令は、変数ADR_TER1の値をレジスタr28に転送する命令である。7行目のmov命令は、変数DAT_TER1の値をレジスタr29に転送する命令である。8行目のst命令は、レジスタr28の内容をアドレスとして、レジスタr29のデータを書き込む命令である。これにより、テーブルエントリレジスタTER1に変数DAT_TER1の値が設定される。
図8は、サブキャッシュ属性が設定されたメモリ領域とサブキャッシュ2との関係を示す説明図である。同図は図7のプログラム例によってサブキャッシュに割り当てられたメモリ領域を示す。すなわち、ベースアドレスBA(0x90002000番地)からページサイズPS(128kバイト)の大きさのメモリ領域のメモリデータは、メインキャッシュ1ではなくサブキャッシュ2にキャッシングされる。このメモリ領域は、例えば配列データA、Bなど空間的局所性が強いが、時間的局所性が弱いデータを格納するのに適している。また、このメモリ領域以外の領域のメモリデータはメインキャッシュ1にキャッシングされる。
また、時間的局所性が強く、かつ、アクセスが極めて短期間に集中し、かつ、空間的局所性も強く、かつ、小さい領域(たとえば、ラインのサイズ以下、またはサブキャッシュ2のサイズ以下)に閉じているデータを格納するのに適しているのは明らかである。
図9は、各データに対するメモリアクセス回数のパターンの一例を示す図である。同図は例えば動画の圧縮、伸張処理における各データのアクセス回数を示している。この場合、アクセス回数が少ないデータは広く存在し、逆に多くのアクセスが少ないデータに集中している傾向があることがわかる。そこで、この傾向を利用し、たとえば、サブキャッシュ2にはアクセス回数が少なく広く存在するデータ領域を、メインキャッシュ1にはアクセス回数が多く、メインキャッシュ1の大きさに収まる程度のデータ領域を割り当てることにより、メインキャッシュ1およびサブキャッシュ2を効率よく使用することができる。
図10は、プロセッサがメモリアクセスするときの制御部6の制御によるキャッシュメモリの動作を示すフローチャートである。同図において制御部6は、メモリアクセスがヒットした場合、つまりメモリアクセスアドレスを保持するアドレスレジスタ3のタグとメインキャッシュ1またはサブキャッシュ2に保持された何れかのタグアドレスとが一致する場合(S91:yes)には、当該ヒットしたエントリに対してリードまたはライトを行う(S92)。
メモリアクセスがミスヒットした場合、メモリアクセスアドレスがアドレステーブル4に示されるアドレス範囲内であり(S93:yes)、かつ当該アドレス範囲がサブキャッシュに割り当てられていれば(S94:yes)、サブキャッシュ2のエントリをリプレースし、当該エントリにアクセスする(S95)。また、メモリアクセスアドレスがアドレステーブル4に示されるアドレス範囲外であり(S93:no)、または当該アドレス範囲がサブキャッシュに割り当てられていなければ(S94:no)、メインキャッシュ1のエントリをリプレースし、当該エントリにアクセスする(S95)。
以上説明したように本実施の形態におけるキャッシュメモリによれば、メモリデータがアドレステーブル4に設定されたアドレス範囲内のデータであるか否かによって異なるキャッシュメモリが使用されるので、アドレス空間によって物理的にキャッシュを分離するとともに、アドレスに応じて不均質なキャッシングを実現している。前記アドレス範囲内のメモリデータによってメインキャッシュ1のデータがリプレースされることがないので、メインキャッシュ1の使用効率を向上させることができる。
たとえば、アドレステーブル4に設定されるアドレス範囲を、空間的局所性が強いが、時間的局所性が弱いデータを記憶するメモリ領域に対応させることにより、空間的局所性が強いが、時間的局所性が弱いデータはサブキャッシュ2に保持され、それ以外のデータはメインキャッシュ1に保持される。その結果、空間的局所性が強いが、時間的局所性が弱いデータへのメモリアクセス効率を向上させることができる。しかも、メインキャッシュ1のデータが、空間的局所性が強いが、時間的局所性が弱いデータによってリプレースされることがないので、第1キャッシュメモリの使用効率を向上させることができる。このように、キャッシュメモリ全体の使用効率を向上させることができる。
また、メインキャッシュ1に比べてサブキャッシュ2はごく少ない容量で良いので、少ないハードウェアの追加で製造コストをかけずに、キャッシュメモリ全体の使用効率を向上させることができる。
さらに、アドレステーブル4はプロセッサからプログラマブルに設定することができるので、アプリケーション毎またはタスク毎に柔軟にメインキャッシュ1とサブキャッシュ2を利用することができる。
なお、アドレステーブル4をプログラマブルにする必要はなく、静的に割り当てても良いことは明らかである。
以下、実施の形態1におけるキャッシュメモリの変形例について説明する。
メインキャッシュ1は、16ウェイセットアソシエイティブキャッシュメモリである場合の例を説明したが、n(nは16以外)ウェイセットアソシエイティブキャッシュメモリであってもよい。また、ウェイ毎に16エントリを備える場合の例を説明したが、m(mは16以外)個のエントリを備えてもよい。
サブキャッシュ2のエントリ数は、2個としてもよい。ハードウェア規模の増加を抑えること、およびハードウェアコストの増加を抑えるためには、サブキャッシュ2のエントリ数は1個から数個でよい。
メインキャッシュ1は、セットアソシエイティブキャッシュメモリの例を説明したが、フルアソシエイティブキャッシュメモリ、ダイレクトマップキャッシュメモリであってもよい。
サブキャッシュ2は、ダイレクトマップキャッシュメモリ、セットアソシエイティブキャッシュメモリであってもよい。
さらに、メインキャッシュ1に図1に示したビクティムキャッシュを付加してもよい。また、サブキャッシュ2に図1に示したビクティムキャッシュを付加してもよい。
(実施の形態2)
本実施の形態ではサブキャッシュを2つ備える構成について説明する。
本実施の形態ではサブキャッシュを2つ備える構成について説明する。
図11は、実施の形態2におけるキャッシュメモリの構成を示すブロック図である。同図のキャッシュメモリ2000は、図2に示したキャッシュメモリ1000と比較して、サブキャッシュ2a、アドレステーブル4a、比較器5aが新たに追加された点と、制御部6の代わりに制御部6aを備える点とが異なっている。以下、図2と同じ点は説明を省略し、異なる点を中心に説明する。
サブキャッシュ2aは、サブキャッシュ2と同じくフルアソシエイティブキャッシュメ
モリである。
モリである。
アドレステーブル4aは、サブキャッシュ2aに割り当てるメモリ領域を示すアドレス範囲を保持する。
比較器5aは、アドレスレジスタ3のタグがアドレステーブル4aに保持されるアドレス範囲に含まれるか否かを判定する。
制御部6aは、制御部6の機能に加えて、サブキャッシュ2aを制御する。サブキャッシュ2aはサブキャッシュ2と同時に動作させてもよいし、アプリケーションまたはタスクに応じて択一的に動作させてもよい。
このように本実施の形態におけるキャッシュメモリ2000によれば、複数のサブキャッシュを同時または択一的に動作させることができ、アプリケーションまたはタスクに応じて柔軟に利用することができ、キャッシュメモリ2000の利用効率を向上させることができる。
なお、実施の形態1で説明した変形例は本実施の形態においても同様に適用してよい。
本発明は、メモリアクセスを高速化するためのキャッシュメモリに適しており、例えば、オンチップキャッシュメモリ、オフチップキャッシュメモリ、データキャッシュメモリ、命令キャッシュメモリ等に適している。
1000 キャッシュメモリ
1 メインキャッシュ
2 サブキャッシュ
3 アドレスレジスタ
4 アドレステーブル
5 比較器
6 制御部
00 ウェイ
15 ウェイ
0000 エントリ
0000a アドレスエントリ
0000d データエントリ
0015a アドレスエントリ
0015d データエントリ
120 デコーダ
150 比較器
165 比較器
170 バスI/F
20 ウェイ
21 ウェイ
200 エントリ
200a アドレスエントリ
200d データエントリ
201a アドレスエントリ
201d データエントリ
1 メインキャッシュ
2 サブキャッシュ
3 アドレスレジスタ
4 アドレステーブル
5 比較器
6 制御部
00 ウェイ
15 ウェイ
0000 エントリ
0000a アドレスエントリ
0000d データエントリ
0015a アドレスエントリ
0015d データエントリ
120 デコーダ
150 比較器
165 比較器
170 バスI/F
20 ウェイ
21 ウェイ
200 エントリ
200a アドレスエントリ
200d データエントリ
201a アドレスエントリ
201d データエントリ
上記目的を達成するために本発明のキャッシュメモリは、第1キャッシュメモリと、第1キャッシュメモリと並列に動作する第2キャッシュメモリと、前記第1キャッシュメモリに格納されるデータと比して空間的局所性は強いが時間的局所性が弱いデータを格納するメモリ領域のアドレス範囲と、前記第1キャッシュメモリに格納されるデータと比してアクセス回数が少ないデータを格納するメモリ領域のアドレス範囲の、少なくとも一方を保持する保持手段と、第1キャッシュメモリおよび第2キャッシュメモリの両者がミスヒットした場合に、ミスヒットしたメモリアクセス対象データのアクセスアドレスが、前記アドレス範囲内であるか否かを判定する判定手段と、前記アドレス範囲内であると判定された場合に、第2キャッシュメモリにメモリデータを格納し、偽であると判定された場合に、第1キャッシュメモリにメモリデータを格納する制御手段とを備え、前記第2のキャッシュメモリの容量は、前記第1のキャッシュメモリよりも小さいことを特徴とする。
ここで、前記保持手段はプロセッサによりアクセスされ、命令によってプログラマブルに設定されるようにしてもよい。
上記目的を達成するために本発明のキャッシュメモリは、第1キャッシュメモリと、第1キャッシュメモリと並列に動作する第2キャッシュメモリと、前記第1キャッシュメモリに格納されるデータと比して空間的局所性は強いが時間的局所性が弱いデータを格納するメモリ領域のアドレス範囲と、前記第1キャッシュメモリに格納されるデータと比して
アクセス回数が少ないデータを格納するメモリ領域のアドレス範囲の、少なくとも一方を
保持する保持手段と、第1キャッシュメモリおよび第2キャッシュメモリの両者がミスヒットした場合に、ミスヒットしたメモリアクセス対象データのアクセスアドレスが、前記アドレス範囲内であるか否かを判定する判定手段と、前記アドレス範囲内であると判定された場合に、第2キャッシュメモリにメモリデータを格納し、偽であると判定された場合に、第1キャッシュメモリにメモリデータを格納する制御手段とを備え、前記第2キャッシュメモリの容量は、前記第1キャッシュメモリよりも小さく、前記第1キャッシュメモリはセットアソシエイティブキャッシュメモリであり、前記第2キャッシュメモリはフルアソシエイティブキャッシュメモリであることを特徴とする。
アクセス回数が少ないデータを格納するメモリ領域のアドレス範囲の、少なくとも一方を
保持する保持手段と、第1キャッシュメモリおよび第2キャッシュメモリの両者がミスヒットした場合に、ミスヒットしたメモリアクセス対象データのアクセスアドレスが、前記アドレス範囲内であるか否かを判定する判定手段と、前記アドレス範囲内であると判定された場合に、第2キャッシュメモリにメモリデータを格納し、偽であると判定された場合に、第1キャッシュメモリにメモリデータを格納する制御手段とを備え、前記第2キャッシュメモリの容量は、前記第1キャッシュメモリよりも小さく、前記第1キャッシュメモリはセットアソシエイティブキャッシュメモリであり、前記第2キャッシュメモリはフルアソシエイティブキャッシュメモリであることを特徴とする。
Claims (14)
- 第1キャッシュメモリと、
第1キャッシュメモリと並列に動作する第2キャッシュメモリと、
第1キャッシュメモリおよび第2キャッシュメモリの両者がミスヒットした場合に、ミスヒットしたメモリアクセス対象データの属性に関連する真偽を判定する判定手段と、
真であると判定された場合に、第2キャッシュメモリにメモリデータを格納し、偽であると判定された場合に、第1キャッシュメモリにメモリデータを格納する制御手段とを備えることを特徴とするキャッシュメモリ。 - 前記アクセスするデータの属性は、アクセスアドレスであり、
前記判定手段は、前記アクセスアドレスが特定のアドレス範囲内であるか否かを判定することを特徴とする請求項1記載のキャッシュメモリ。 - 前記キャッシュメモリは、さらに、
前記特定のアドレス範囲を保持する保持手段を備えることを特徴とする請求項2記載のキャッシュメモリ。 - 前記保持手段はプロセッサによりアクセスされる
ことを特徴とする請求項3に記載の何れかのキャッシュメモリ。 - 前記第2キャッシュメモリの容量は、前記第1キャッシュメモリよりも小さい
ことを特徴とする請求項1に記載の何れかのキャッシュメモリ。 - 前記第1キャッシュメモリはセットアソシエイティブキャッシュメモリであり、
前記第2キャッシュメモリはフルアソシエイティブキャッシュメモリである
ことを特徴とする請求項5記載のキャッシュメモリ。 - 前記第1キャッシュメモリはN1個のウェイを有し、前記第1キャッシュメモリの各ウェイはN2個のエントリを有し、
前記第2キャッシュメモリはM個のエントリを有し、
MはN1よりも小さく、N2よりも小さい
ことを特徴とする請求項5記載のキャッシュメモリ。 - 前記Mは2であることを特徴とする請求項7記載のキャッシュメモリ。
- 前記保持手段はプロセッサによりアクセスされる
ことを特徴とする請求項8に記載の何れかのキャッシュメモリ。 - 前記第2キャンシュメモリの容量は、前記第1キャッシュメモリよりも小さい
ことを特徴とする請求項3に記載の何れかのキャッシュメモリ。 - 前記第1キャッシュメモリはセットアソシエイティブキャッシュメモリであり、
前記第2キャッシュメモリはフルアソシエイティブキャッシュメモリである
ことを特徴とする請求項10記載のキャッシュメモリ。 - 前記第1キャッシュメモリはN1個のウェイを有し、前記第1キャッシュメモリの各ウェイはN2個のエントリを有し、
前記第2キャッシュメモリはM個のエントリを有し、
MはN1よりも小さく、N2よりも小さい
ことを特徴とする請求項10記載のキャッシュメモリ。 - 前記Mは2であることを特徴とする請求項12記載のキャッシュメモリ。
- 前記保持手段はプロセッサによりアクセスされる
ことを特徴とする請求項13に記載の何れかのキャッシュメモリ。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005112840 | 2005-04-08 | ||
JP2005112840 | 2005-04-08 | ||
PCT/JP2006/305389 WO2006109421A1 (ja) | 2005-04-08 | 2006-03-17 | キャッシュメモリ |
Publications (1)
Publication Number | Publication Date |
---|---|
JPWO2006109421A1 true JPWO2006109421A1 (ja) | 2008-10-16 |
Family
ID=37086712
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006522577A Pending JPWO2006109421A1 (ja) | 2005-04-08 | 2006-03-17 | キャッシュメモリ |
Country Status (5)
Country | Link |
---|---|
US (1) | US7970998B2 (ja) |
JP (1) | JPWO2006109421A1 (ja) |
CN (1) | CN101156139A (ja) |
TW (1) | TW200639636A (ja) |
WO (1) | WO2006109421A1 (ja) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2009122694A1 (ja) * | 2008-03-31 | 2009-10-08 | パナソニック株式会社 | キャッシュメモリ装置、キャッシュメモリシステム、プロセッサシステム |
US8312219B2 (en) * | 2009-03-02 | 2012-11-13 | International Business Machines Corporation | Hybrid caching techniques and garbage collection using hybrid caching techniques |
KR20140066392A (ko) * | 2012-11-23 | 2014-06-02 | 삼성전자주식회사 | 캐시 메모리 및 캐시 메모리를 포함하는 어플리케이션 프로세서의 데이터 관리 방법 |
US11119935B2 (en) * | 2019-05-24 | 2021-09-14 | Texas Instruments Incorporated | Methods and apparatus to facilitate atomic compare and swap in cache for a coherent level 1 data cache system |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0711790B2 (ja) * | 1988-09-19 | 1995-02-08 | 松下電器産業株式会社 | データ処理装置 |
EP0382396A3 (en) | 1989-02-08 | 1991-11-27 | Hitachi, Ltd. | Program memory buffer for processor |
US5257359A (en) | 1989-02-08 | 1993-10-26 | Hitachi Microsystems, Inc. | Instruction cache buffer with program-flow control |
US5317718A (en) * | 1990-03-27 | 1994-05-31 | Digital Equipment Corporation | Data processing system and method with prefetch buffers |
US5261066A (en) | 1990-03-27 | 1993-11-09 | Digital Equipment Corporation | Data processing system and method with small fully-associative cache and prefetch buffers |
DE69224084T2 (de) | 1991-01-15 | 1998-07-23 | Koninkl Philips Electronics Nv | Rechneranordnung mit Mehrfachpufferdatencachespeicher und Verfahren dafür |
JPH06348593A (ja) | 1993-06-03 | 1994-12-22 | Sumitomo Electric Ind Ltd | データ転送制御装置 |
US5870599A (en) * | 1994-03-01 | 1999-02-09 | Intel Corporation | Computer system employing streaming buffer for instruction preetching |
JP3068451B2 (ja) | 1996-01-26 | 2000-07-24 | 日本電気通信システム株式会社 | 電子計算機 |
JPH10207773A (ja) | 1997-01-27 | 1998-08-07 | Nec Corp | バス接続装置 |
US6138213A (en) * | 1997-06-27 | 2000-10-24 | Advanced Micro Devices, Inc. | Cache including a prefetch way for storing prefetch cache lines and configured to move a prefetched cache line to a non-prefetch way upon access to the prefetched cache line |
JP2000148584A (ja) | 1998-11-10 | 2000-05-30 | Matsushita Electric Ind Co Ltd | プリフェッチ方法および装置 |
US6418525B1 (en) * | 1999-01-29 | 2002-07-09 | International Business Machines Corporation | Method and apparatus for reducing latency in set-associative caches using set prediction |
JP2001256107A (ja) | 2000-03-10 | 2001-09-21 | Matsushita Electric Ind Co Ltd | データ処理装置 |
KR100459708B1 (ko) | 2002-03-29 | 2004-12-04 | 삼성전자주식회사 | 자동 레이저 출력 제어 기능을 가지는 레이저 다이오드 드라이버 |
WO2004031963A1 (ja) | 2002-09-30 | 2004-04-15 | Renesas Technology Corp. | 半導体データプロセッサ |
US20050044320A1 (en) * | 2003-08-19 | 2005-02-24 | Sun Microsystems, Inc. | Cache bank interface unit |
KR100562906B1 (ko) * | 2003-10-08 | 2006-03-21 | 삼성전자주식회사 | 시리얼 플래시 메모리에서의 xip를 위한 우선순위기반의 플래시 메모리 제어 장치 및 이를 이용한 메모리관리 방법, 이에 따른 플래시 메모리 칩 |
WO2005048112A1 (ja) | 2003-11-12 | 2005-05-26 | Matsushita Electric Industrial Co., Ltd. | キャッシュメモリおよびその制御方法 |
-
2006
- 2006-03-17 JP JP2006522577A patent/JPWO2006109421A1/ja active Pending
- 2006-03-17 CN CNA2006800113978A patent/CN101156139A/zh active Pending
- 2006-03-17 US US11/910,831 patent/US7970998B2/en active Active
- 2006-03-17 WO PCT/JP2006/305389 patent/WO2006109421A1/ja active Application Filing
- 2006-03-23 TW TW095110088A patent/TW200639636A/zh unknown
Also Published As
Publication number | Publication date |
---|---|
WO2006109421A1 (ja) | 2006-10-19 |
US7970998B2 (en) | 2011-06-28 |
TW200639636A (en) | 2006-11-16 |
US20090077318A1 (en) | 2009-03-19 |
CN101156139A (zh) | 2008-04-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7467280B2 (en) | Method for reconfiguring cache memory based on at least analysis of heat generated during runtime, at least by associating an access bit with a cache line and associating a granularity bit with a cache line in level-2 cache | |
US8909871B2 (en) | Data processing system and method for reducing cache pollution by write stream memory access patterns | |
US8176258B2 (en) | System and method for cache management | |
JP4098347B2 (ja) | キャッシュメモリおよびその制御方法 | |
US4811209A (en) | Cache memory with multiple valid bits for each data indication the validity within different contents | |
USRE45078E1 (en) | Highly efficient design of storage array utilizing multiple pointers to indicate valid and invalid lines for use in first and second cache spaces and memory subsystems | |
US8176255B2 (en) | Allocating space in dedicated cache ways | |
US20020042863A1 (en) | Storing a flushed cache line in a memory buffer of a controller | |
US20110173393A1 (en) | Cache memory, memory system, and control method therefor | |
JP2005528694A (ja) | スレッド識別子に基づくキャッシュ追い出しを用いたマルチスレッド化キャッシュのための方法および装置 | |
JP2005528695A (ja) | キャッシュ置換ポリシーの簡略化した実施態様を用いたマルチスレッド化キャッシュのための方法および装置 | |
US20100217937A1 (en) | Data processing apparatus and method | |
EP2926257B1 (en) | Memory management using dynamically allocated dirty mask space | |
JPWO2010035426A1 (ja) | バッファメモリ装置、メモリシステム及びデータ転送方法 | |
US20100011165A1 (en) | Cache management systems and methods | |
US20090024796A1 (en) | High Performance Multilevel Cache Hierarchy | |
US20210042120A1 (en) | Data prefetching auxiliary circuit, data prefetching method, and microprocessor | |
US7472225B2 (en) | Caching data | |
US11036639B2 (en) | Cache apparatus and method that facilitates a reduction in energy consumption through use of first and second data arrays | |
US7970998B2 (en) | Parallel caches operating in exclusive address ranges | |
US7302530B2 (en) | Method of updating cache state information where stores only read the cache state information upon entering the queue | |
US7325101B1 (en) | Techniques for reducing off-chip cache memory accesses | |
JP6249120B1 (ja) | プロセッサ | |
US20120102271A1 (en) | Cache memory system and cache memory control method | |
Dandamudi | Cache Memory |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20071023 |