JPWO2005066796A1 - キャッシュメモリ及びその制御方法 - Google Patents
キャッシュメモリ及びその制御方法 Download PDFInfo
- Publication number
- JPWO2005066796A1 JPWO2005066796A1 JP2005516832A JP2005516832A JPWO2005066796A1 JP WO2005066796 A1 JPWO2005066796 A1 JP WO2005066796A1 JP 2005516832 A JP2005516832 A JP 2005516832A JP 2005516832 A JP2005516832 A JP 2005516832A JP WO2005066796 A1 JPWO2005066796 A1 JP WO2005066796A1
- Authority
- JP
- Japan
- Prior art keywords
- flag
- cache
- address
- data
- cache entry
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
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
-
- 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/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/126—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
- G06F12/127—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning using additional replacement algorithms
-
- 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/0877—Cache access modes
- G06F12/0886—Variable-length word access
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
Description
また、本発明のキャッシュメモリの制御方法についても上記と同様の手段、作用を有する。
また、テンポラリーなワークデータ等破棄される運命にあるデータを保持するキャッシュエントリーから無駄にライトバックすることを防止することができる。
2 メモリ
3 キャッシュメモリ
20 アドレスレジスタ
21 メモリI/F
30 デコーダ
31a〜31d ウェイ
32a〜32d 比較器
33a〜33d アンド回路
34 オア回路
35 セレクタ
36 セレクタ
37 デマルチプレクサ
38 制御部
39 フラグ更新部
40 リプレース部
41 フラグ改変部
131a〜131d ウェイ
138 制御部
139 フラグ更新部
140 リプレース部
141 フラグ改変部
401 コマンドレジスタ
402 スタートアドレスレジスタ
403 サイズレジスタ
404 加算器
405a スタートアライナ
405b スタートアライナ
406a エンドアライナ
406b エンドアライナ
407 フラグ書換部
407a フラグ書換部
<全体構成>
図1は、本発明の実施の形態1におけるプロセッサ1、キャッシュメモリ3、メモリ2を含むシステムの概略構成を示すブロック図である。同図のように、本発明のキャッシュメモリ3は、プロセッサ1およびメモリ2を有するシステムに備えられる。
キャッシュメモリ3は、キャッシュエントリー毎にキャッシュエントリーが有効であるか否かを示すバリッドフラグVと、当該キャッシュエントリーに対して書き込みがなされたか否かを示すダーティフラグDとを有し、プロセッサ1により指定されたアドレスのデータを保持するキャッシュエントリーに対してデータをライトバックすることなくダーティフラグDを1から0(ダーティでない)に改変し、また、プロセッサ1により指定されたアドレスに対応するキャッシュエントリーを確保してメモリからデータをロードすることなくバリッドフラグVを1(有効)に改変するよう構成されている。
ダーティフラグDを1から0に改変するのは、最終的には破棄されるテンポラリーなワークデータを保持するキャシュエントリーから無駄にライトバックすることを防止するためである。また、キャッシュエントリーを確保してメモリからデータをロードすることなくバリッドフラグVを1(有効)に改変することにより、配列など書き込みをするためのキャッシュエントリーを予め確保するためである。
以下、キャッシュメモリ3の具体例として、4ウェイ・セット・アソシエイティブ方式のキャッシュメモリに本発明を適用した場合の構成について説明する。
図2は、キャッシュメモリ3の構成例を示すブロック図である。同図のように、キャッシュメモリ3は、アドレスレジスタ20、メモリI/F21、デコーダ30、4つのウェイ31a〜31d(以下ウェイ0〜3と略す)、4つの比較器32a〜32d、4つのアンド回路33a〜33d、オア回路34、セレクタ35、36、デマルチプレクサ37、制御部38を備える。
ラインデータは、タグアドレスおよびセットインデックスにより特定されるブロック中の128バイトデータのコピーであり、32バイトの4つのサブラインからなる。
図4は、制御部38の構成を示すブロック図である。同図のように、制御部38は、フラグ更新部39、リプレース部40、フラグ改変部41とを含む。
フラグ更新部39は、従来技術と同様にキャッシュメモリの状態を反映するようVフラグ、Dフラグの更新を行う。
リプレース部40は、従来技術と同様にキャッシュエントリーのリプレースを行う。
フラグ改変部41は、プロセッサ1からのコマンド及びアドレス指定に応じて、Vフラグの改変とDフラグの改変とを行う。このコマンドには、Vフラグ設定コマンドとDフラグ設定コマンドとがある。
図5は、フラグ改変部41の構成例を示すブロック図である。同図のようにフラグ改変部41は、コマンドレジスタ401、スタートアドレスレジスタ402、サイズレジスタ403、加算器404、スタートアライナ405a、405b、エンドアライナ406a、406b、フラグ書換部407を備える。
図8は、フラグ書換部407におけるフラグ改変処理の一例を示すフローチャートである。同図では、DリセットコマンドとVセットコマンドとを示している。
同図において、コマンドレジスタ401にDリセットコマンドが書き込まれている場合(S80)、フラグ書換部407は、スタートアライナ405a、405b、エンドアライナ406a、406bの出力の中から内側アラインによるスタートラインとエンドラインとを選択する(S81)。ここで内側アラインを選択しているのは、ラインNとラインMにおけるスタートアドレスとエンドアドレスの外側のデータは、プロセッサ1により破棄されるとは限らないからである。
キャッシュエントリーにメモリからデータをロードすることなく、キャッシュエントリーにラインアドレスをタグとして設定し(S95)、バリッドフラグV0〜V3を1にセットする(S96)。このようにして、有効なデータを保持していないがV0〜V3=1と設定された1ライン分のキャッシュエントリーが確保される。
なお、本発明のキャッシュメモリは、上記の実施の形態の構成に限るものではなく、種々の変形が可能である。以下、変形例のいくつかについて説明する。
(1)上記実施の形態では、V0〜V3フラグ、D0〜D3フラグを同時にセット又はリセットしているが、サブ単位にセット又はリセットするようにしてもよい。
例えば、スタートラインとエンドラインのみをサブライン単位で処理する場合、フラグ書換部407は、外側アライン(ライン)されたスタートアドレスとエンドアドレスを選択し、さらに外側アライン(サブライン)または内側アライン(サブライン)によりスタートラインのサブラインアドレスと、エンドラインのサブラインアドレスとを算出し、スタートラインとエンドラインのみをサブライン単位で処理すればよい。また、プロセッサ1は、コマンド中のサブライン指定フィールドにおいてその旨を指定すればよい。
例えば、プロセッサ1がサイズレジスタ403のサイズを0に指定し、コマンド中のサブライン指定フィールドにおいて特定のサブラインを指定した場合に、フラグ書換部407は、指定されたサブラインのみを対象に処理をすればよい。
(2)また、フラグ改変部41は、ダーティフラグのリセット指示付きメモリアクセス命令が実行されたこと検出する命令検出部と、当該命令によってアクセスがなされたキャッシュエントリーに対してダーティフラグをリセットするフラグ書き換え手部とを備える構成としてもよい。
さらに、命令検出部は、バリッドフラグのリセット指示付きメモリアクセス命令が実行されたこと検出し、フラグ書き換え手部は、当該命令によってアクセスがなされたキャッシュエントリーに対してバリッドフラグをリセットする構成としてもよい。
(3)上記実施の形態では、4ウェイ・セット・アソシエイティブのキャッシュメモリを例に説明したが、ウェイ数は、いくつでもよい。また、上記実施の形態では、セット数が16である例を説明したが、セット数はいくつでもよい。
(4)上記実施の形態では、セット・アソシエイティブのキャッシュメモリを例に説明したが、フル・アソシエイティブ方式のキャッシュメモリであってもよい。
(5)上記実施の形態では、サブラインのサイズをラインのサイズの1/4としているが、1/2、1/8、1/16等他のサイズでもよい。その場合、各キャッシュエントリーは、サブラインと同数のバリッドフラグおよびダーティフラグをそれぞれ保持すればよい。
実施の形態1では、Vフラグの改変とDフラグの改変とを行う構成について説明したが、本実施の形態では、これ以上使用(書き込み及び読み出し)するかしないかを示すW(ウィーク)フラグを有するキャッシュメモリにおいてWフラグを改変する構成について説明する。
図9は、本発明の実施の形態2におけるキャッシュメモリの構成を示すブロック図である。同図のキャッシュメモリは、図2の構成と比較して、ウェイ31a〜31dの代わりにウェイ131a〜131dを備える点と、制御部38の代わりに制御部138を備える点とが異なっている。以下、同じ点は説明を省略して、異なる点を中心に説明する。
図11は、制御部138の構成を示すブロック図である。同図の制御部138は、制御部38と比較して、フラグ更新部39、リプレース部40、フラグ改変部41の代わりにフラグ更新部139、リプレース部140、フラグ改変部141を備える点が異なる。
図12は、フラグ更新部39による使用フラグUの更新例を示す。同図の上段、中断、下段は、ウェイ0〜3に跨るセットNを構成する4つのキャッシュエントリーを示している。4つのキャッシュエントリー右端の1又は0は、それぞれ使用フラグの値である。この4つの使用フラグUをU0〜U3と記す。
図13(a)ウィークフラグが存在しないと仮定した場合の比較例であり、キャッシュエントリーがリプレースされる様子を示す図である。同図においても、図12と同様にウェイ0〜3に跨るセットNを構成する4つのキャッシュエントリーを示している。、4つのキャッシュエントリー右端の1又は0は、それぞれ使用フラグの値である。また、データEのみアクセス頻度の低いデータを、データA、B、C、Dはアクセス頻度の高いデータとする。
図13(b)は、リプレース処理におけるウィークフラグWの役割を示す説明図である。
図14は、リプレース部140におけるUフラグ更新処理を示すフローチャートである。同図では、バリッドフラグが0(無効)であるキャッシュエントリーの使用フラグUは0に初期化されているものとする。
同図において、リプレース部140は、キャッシュヒットしたとき(ステップS61)、セットインデックスにより選択されたセットにおけるヒットしたウェイの使用フラグUを1にセットし(ステップS62)、そのセット内の他のウェイの使用フラグUを読み出し(ステップS63)、読み出した使用フラグUが全て1であるか否かを判定し(ステップS64)、全て1でなければ終了し、全て1であれば他のウェイの全ての使用フラグUを0にリセットする(ステップS65)。
このようにしてリプレース部140は、図12、図13(a)(b)に示した更新例のように、使用フラグUを更新する。
図15は、リプレース部140におけるリプレース処理を示すフローチャートである。同図においてリプレース部140は、メモリアクセスがミスしたとき(ステップS91)、セットインデックスにより選択されたセットにおける、4つウェイの使用フラグU及びウィークフラグWを読み出し(ステップS92)、W=1のウェイが存在するか否かを判定する(ステップS93)。W=1のウェイが存在しないと判定された場合、U=0のウェイを1つ選択する(ステップS94)。このとき、使用フラグUが0になっているウェイが複数存在する場合は、リプレース部140はランダムに1つを選択する。また、W=1のウェイが存在すると判定された場合、Uフラグの値に関わらずW=1のウェイを1つ選択する(ステップS95)。このとき、ウィークフラグWが1になっているウェイが複数存在する場合は、リプレース部140はランダムに1つを選択する。
このように、W=1のウェイが存在しない場合、リプレース対象は、使用フラグUが0のキャッシュエントリーの中から1つ選択される。
また、W=1のウェイが存在する場合、リプレース対象は、使用フラグUが0であると1であるとを問わず、W=1のウェイのキャッシュエントリーから1つ選択される。これにより図13(a)(b)に示したように、アクセス頻度の低いデータがキャッシュメモリに残ることによるキャッシュミスの誘発を低減することができる。
図16は、フラグ改変部141の構成を示すブロック図である。同図の構成は、図5に示したフラグ改変部41と比較して、フラグ書換部407の代わりにフラグ書換部407aを備える点が異なっている。
図18は、フラグ書換部407aにおけるWフラグ設定処理の一例を示すフローチャートである。
フラグ書換部407aは、コマンドレジスタ401にWフラグ設定コマンドが保持されている場合、スタートラインからエンドラインまでの各ラインアドレスを順に出力しながらループ1の処理(S82〜S86)を行う。フラグ書換部407aは、各ラインについて同じ処理を行うので、ここでは1ライン分の処理について説明する。
すなわち、フラグ書換部407aは、キャッシュメモリ3がプロセッサ1からアクセスされていない間に、ラインアドレスをアドレスレジスタ20に出力し(S83)、アドレスレジスタ20のタグアドレスとキャッシュエントリーのタグとを比較器32a〜32dに比較させ、ヒットするかどうかを判定する(S84)。さらにフラグ書換部407aは、ヒットした場合には、ヒットしたキャッシュエントリーに対してWフラグを1にセットし(S85)、ミスヒットした場合には、キャッシュメモリにエントリーされていないのでなにもしない。
これにより、スタートラインからエンドラインまでの各ラインについて、キャッシュメモリ3にエントリーされている場合には、Wフラグが1に設定される。
フラグ書換部407aは、コマンドレジスタ401にUフラグ設定コマンドが保持されている場合、当該コマンドに従ってUフラグを設定する。この処理は、図18においてWフラグをUフラグと読み替えることにより、Wフラグ設定処理と全く同様に実行される。
以上説明してきたように、本実施の形態におけるキャッシュメモリによれば、Wフラグを設定することにより、W=1のキャッシュエントリーをキャッシュミス時には最古のキャッシュエントリとして真っ先にリプレース対象とすることができる。また、使用フラグUの値は1ビットだけであるがアクセス順序が古いか新しいかをしめすので、Uフラグ設定処理によって、スタートラインからエンドラインまでの各ラインについてアクセス順序を設定することができる。例えば、プロセッサ1は、キャッシュメモリ3に残しておきたいアドレスのデータをアドレス範囲として指定してU=1を設定するUフラグ設定コマンドを発行すればよい。逆に、キャッシュメモリ3か追い出してもよいデータをアドレス範囲として指定してU=0を設定するUフラグ設定コマンドを発行すればよい。
(1)W=1のキャッシュエントリーは真っ先にリプレース対象とされるが、制御部は、リプレースされるまでの間に、ダーティであればクリーニング(ライトバック)を行ってもよい。
(2)図6(a)(b)(c)に示した各命令は、コンパイラによりプログラム中に挿入してもよい。その際、コンパイラは、例えば配列データの書き込みや、圧縮動画データをデコードする際のブロックデータの書き込み等、これ以上書き込みをしないプログラム位置に、上記各命令を挿入するようにすればよい。
機能を有することで、コンピュータシステムは、必要な時にプログラムをキャッシュメモリから読み出して実行することができ、これにより実行時間が短縮する。また、パージ機能は、アクセス頻度は多いが、実行速度がそれほど要求されないようなプログラムやデータをキャッシュメモリ内に保存しておくことなく、その領域を解放する機能である。この機能を有することで、キャッシュメモリに余裕ができ、優先度の高い他のプログラムやデータをキャッシュメモリに取り込むことができ、これにより、キャッシュメモリの利用効率が向上し、総合的な実行時間が短縮する。
【特許文献1】特開2000−200221号公報
【発明の開示】
【発明が解決しようとする課題】
【0006】 しかしながら、フリーズ機能を使用してもパージ機能を使用しても、キャッシュミス発生によりリプレースする場合に無駄なリプレースをしたり、無駄なライトバックをする場合があるという問題がある。
【0007】 例えば、無駄なリプレースが生じる場合として、プロセッサが配列要素を全てライトする場合がある。この場合、メモリから新たにデータをキャッシュメモリにリプレースしても、プロセッサから全てライトされるので、リプレースが無駄に終わる。
【0008】 また、無駄なライトバックが生じる場合として、キャッシュエントリーが単にワークデータとして使用される場合がある。この場合、最終的に破棄してもよいデータであるにも拘らず、無駄なライトバックが発生する。
【課題を解決するための手段】
【0009】 本発明の目的は、無駄なリプレースや無駄なライトバックを防止するキャッシュメモリを提供することにある。
【0010】 上記課題を解決するため本発明のキャッシュメモリは、キャッシュの単位データを保持するキャッシュエントリーに対応させて、当該キャッシュエントリーが有効であるか否かを示すバリッドフラグと、当該キャッシュエントリーに対する書き込みがなされたか否かを示すダーティフラグとを保持するフラグ保持手段と、プロセッサから発行されたコマンドを保持するコマンド保持手段と、コマンド保持手段に保持されたコマンドに基づき、前記バリッドフラグおよびダーティフラグの少なくとも一方をキャッシュエントリーの状態に反して改変する改変手段とを備える。
2
管理のための負荷を解消することができる。
【0019】 ここで、前記改変手段は、さらに、ダーティフラグのリセット指示付きメモリアクセス命令が実行されたことを検出する命令検出手段と、当該命令によってアクセスがなされたキャッシュエントリーに対してダーティフラグをリセットするフラグ書き換え手段とを備える構成としてもよい。
【0020】 ここで、前記改変手段は、さらに、バリッドフラグのリセット指示付きメモリアクセス命令が実行されたことを検出する命令検出手段と、当該命令によってアクセスがなされたキャッシュエントリーに対してバリッドフラグをリセットするフラグ書き換え手段とを備える構成としてもよい。
また、本発明のキャッシュメモリの制御方法についても上記と同様の手段、作用を有する。
【0021】 本発明のキャッシュメモリによれば、配列などのデータを書き込むためのキャッシュエントリーをキャッシュメモリ上に確保することができ、しかも、上書きされる運命にあるデータをメモリからキャッシュメモリへ無駄にロードすることを防止することができる。
また、テンポラリーなワークデータ等破棄される運命にあるデータを保持するキャッシュエントリーから無駄にライトバックすることを防止することができる。
【0022】 さらに、プロセッサは、前記アドレス範囲として、キャッシュメモリのラインサイズ及びライン境界のアドレスとは無関係に任意のアドレスから任意のアドレス(又は任意のサイズ)を指定することができる。つまり、プロセッサにおいてキャッシュメモリのラインサイズ及びライン境界のアドレスを管理する必要がないので、キャッシュメモリ管理のための負荷を解消することができる。
【発明の効果】
【0023】 本発明のキャッシュメモリによれば、プロセッサの指示に基づいて、配列などのデータを書き込むためのキャッシュエントリーをキャッシュメモリ上に確保することができ、しかも、上書きされる運命にあるデータをメモリからキャッシュメモリへ無駄にロードすることを防止することができる。また、テンポラリーなワークデータ等破棄される運命にあるデータを保持するキャッシュエントリーから無駄にライトバックすることを防止することができる。
4
特許文献1:特開2000−200221号公報
また、本発明のキャッシュメモリの制御方法についても上記と同様の手段、作用を有する。
また、テンポラリーなワークデータ等破棄される運命にあるデータを保持するキャッシュエントリーから無駄にライトバックすることを防止することができる。
<全体構成>
図1は、本発明の実施の形態1におけるプロセッサ1、キャッシュメモリ3、メモリ2を含むシステムの概略構成を示すブロック図である。同図のように、本発明のキャッシュメモリ3は、プロセッサ1およびメモリ2を有するシステムに備えられる。
キャッシュメモリ3は、キャッシュエントリー毎にキャッシュエントリーが有効であるか否かを示すバリッドフラグVと、当該キャッシュエントリーに対して書き込みがなされたか否かを示すダーティフラグDとを有し、プロセッサ1により指定されたアドレスのデータを保持するキャッシュエントリーに対してデータをライトバックすることなくダーティフラグDを1から0(ダーティでない)に改変し、また、プロセッサ1により指定されたアドレスに対応するキャッシュエントリーを確保してメモリからデータをロードすることなくバリッドフラグVを1(有効)に改変するよう構成されている。
ダーティフラグDを1から0に改変するのは、最終的には破棄されるテンポラリーなワークデータを保持するキャシュエントリーから無駄にライトバックすることを防止するためである。また、キャッシュエントリーを確保してメモリからデータをロードすることなくバリッドフラグVを1(有効)に改変することにより、配列など書き込みをするためのキャッシュエントリーを予め確保するためである。
以下、キャッシュメモリ3の具体例として、4ウェイ・セット・アソシエイティブ方式のキャッシュメモリに本発明を適用した場合の構成について説明する。
図2は、キャッシュメモリ3の構成例を示すブロック図である。同図のように、キャッシュメモリ3は、アドレスレジスタ20、メモリI/F21、デコーダ30、4つのウェイ31a〜31d(以下ウェイ0〜3と略す)、4つの比較器32a〜32d、4つのアンド回路33a〜33d、オア回路34、セレクタ35、36、デマルチプレクサ37、制御部38を備える。
ラインデータは、タグアドレスおよびセットインデックスにより特定されるブロック中の128バイトデータのコピーであり、32バイトの4つのサブラインからなる。
図4は、制御部38の構成を示すブロック図である。同図のように、制御部38は、フラグ更新部39、リプレース部40、フラグ改変部41とを含む。
フラグ更新部39は、従来技術と同様にキャッシュメモリの状態を反映するようVフラグ、Dフラグの更新を行う。
リプレース部40は、従来技術と同様にキャッシュエントリーのリプレースを行う。
フラグ改変部41は、プロセッサ1からのコマンド及びアドレス指定に応じて、Vフラグの改変とDフラグの改変とを行う。このコマンドには、Vフラグ設定コマンドとDフラグ設定コマンドとがある。
図5は、フラグ改変部41の構成例を示すブロック図である。同図のようにフラグ改変部41は、コマンドレジスタ401、スタートアドレスレジスタ402、サイズレジスタ403、加算器404、スタートアライナ405a、405b、エンドアライナ406a、406b、フラグ書換部407を備える。
図8は、フラグ書換部407におけるフラグ改変処理の一例を示すフローチャートである。同図では、DリセットコマンドとVセットコマンドとを示している。
同図において、コマンドレジスタ401にDリセットコマンドが書き込まれている場合(S80)、フラグ書換部407は、スタートアライナ405a、405b、エンドアライナ406a、406bの出力の中から内側アラインによるスタートラインとエンドラインとを選択する(S81)。ここで内側アラインを選択しているのは、ラインNとラインMにおけるスタートアドレスとエンドアドレスの外側のデータは、プロセッサ1により破棄されるとは限らないからである。
キャッシュエントリーにメモリからデータをロードすることなく、キャッシュエントリーにラインアドレスをタグとして設定し(S95)、バリッドフラグV0〜V3を1にセットする(S96)。このようにして、有効なデータを保持していないがV0〜V3=1と設定された1ライン分のキャッシュエントリーが確保される。
なお、本発明のキャッシュメモリは、上記の実施の形態の構成に限るものではなく、種々の変形が可能である。以下、変形例のいくつかについて説明する。
(1)上記実施の形態では、V0〜V3フラグ、D0〜D3フラグを同時にセット又はリセットしているが、サブ単位にセット又はリセットするようにしてもよい。
例えば、スタートラインとエンドラインのみをサブライン単位で処理する場合、フラグ書換部407は、外側アライン(ライン)されたスタートアドレスとエンドアドレスを選択し、さらに外側アライン(サブライン)または内側アライン(サブライン)によりスタートラインのサブラインアドレスと、エンドラインのサブラインアドレスとを算出し、スタートラインとエンドラインのみをサブライン単位で処理すればよい。また、プロセッサ1は、コマンド中のサブライン指定フィールドにおいてその旨を指定すればよい。
例えば、プロセッサ1がサイズレジスタ403のサイズを0に指定し、コマンド中のサブライン指定フィールドにおいて特定のサブラインを指定した場合に、フラグ書換部407は、指定されたサブラインのみを対象に処理をすればよい。
(2)また、フラグ改変部41は、ダーティフラグのリセット指示付きメモリアクセス命令が実行されたこと検出する命令検出部と、当該命令によってアクセスがなされたキャッシュエントリーに対してダーティフラグをリセットするフラグ書き換え手部とを備える構成としてもよい。
さらに、命令検出部は、バリッドフラグのリセット指示付きメモリアクセス命令が実行されたこと検出し、フラグ書き換え手部は、当該命令によってアクセスがなされたキャッシュエントリーに対してバリッドフラグをリセットする構成としてもよい。
(3)上記実施の形態では、4ウェイ・セット・アソシエイティブのキャッシュメモリを例に説明したが、ウェイ数は、いくつでもよい。また、上記実施の形態では、セット数が16である例を説明したが、セット数はいくつでもよい。
(4)上記実施の形態では、セット・アソシエイティブのキャッシュメモリを例に説明したが、フル・アソシエイティブ方式のキャッシュメモリであってもよい。
(5)上記実施の形態では、サブラインのサイズをラインのサイズの1/4としているが、1/2、1/8、1/16等他のサイズでもよい。その場合、各キャッシュエントリーは、サブラインと同数のバリッドフラグおよびダーティフラグをそれぞれ保持すればよい。
実施の形態1では、Vフラグの改変とDフラグの改変とを行う構成について説明したが、本実施の形態では、これ以上使用(書き込み及び読み出し)するかしないかを示すW(ウィーク)フラグを有するキャッシュメモリにおいてWフラグを改変する構成について説明する。
図9は、本発明の実施の形態2におけるキャッシュメモリの構成を示すブロック図である。同図のキャッシュメモリは、図2の構成と比較して、ウェイ31a〜31dの代わりにウェイ131a〜131dを備える点と、制御部38の代わりに制御部138を備える点とが異なっている。以下、同じ点は説明を省略して、異なる点を中心に説明する。
図11は、制御部138の構成を示すブロック図である。同図の制御部138は、制御部38と比較して、フラグ更新部39、リプレース部40、フラグ改変部41の代わりにフラグ更新部139、リプレース部140、フラグ改変部141を備える点が異なる。
図12は、フラグ更新部39による使用フラグUの更新例を示す。同図の上段、中断、下段は、ウェイ0〜3に跨るセットNを構成する4つのキャッシュエントリーを示している。4つのキャッシュエントリー右端の1又は0は、それぞれ使用フラグの値である。この4つの使用フラグUをU0〜U3と記す。
図13(a)ウィークフラグが存在しないと仮定した場合の比較例であり、キャッシュエントリーがリプレースされる様子を示す図である。同図においても、図12と同様にウェイ0〜3に跨るセットNを構成する4つのキャッシュエントリーを示している。、4つのキャッシュエントリー右端の1又は0は、それぞれ使用フラグの値である。また、データEのみアクセス頻度の低いデータを、データA、B、C、Dはアクセス頻度の高いデータとする。
図13(b)は、リプレース処理におけるウィークフラグWの役割を示す説明図である。
図14は、リプレース部140におけるUフラグ更新処理を示すフローチャートである。
同図では、バリッドフラグが0(無効)であるキャッシュエントリーの使用フラグUは0に初期化されているものとする。
同図において、リプレース部140は、キャッシュヒットしたとき(ステップS61)、セットインデックスにより選択されたセットにおけるヒットしたウェイの使用フラグUを1にセットし(ステップS62)、そのセット内の他のウェイの使用フラグUを読み出し(ステップS63)、読み出した使用フラグUが全て1であるか否かを判定し(ステップS64)、全て1でなければ終了し、全て1であれば他のウェイの全ての使用フラグUを0にリセットする(ステップS65)。
このようにしてリプレース部140は、図12、図13(a)(b)に示した更新例のように、使用フラグUを更新する。
図15は、リプレース部140におけるリプレース処理を示すフローチャートである。同図においてリプレース部140は、メモリアクセスがミスしたとき(ステップS91)、セットインデックスにより選択されたセットにおける、4つウェイの使用フラグU及びウィークフラグWを読み出し(ステップS92)、W=1のウェイが存在するか否かを判定する(ステップS93)。W=1のウェイが存在しないと判定された場合、U=0のウェイを1つ選択する(ステップS94)。このとき、使用フラグUが0になっているウェイが複数存在する場合は、リプレース部140はランダムに1つを選択する。また、W=1のウェイが存在すると判定された場合、Uフラグの値に関わらずW=1のウェイを1つ選択する(ステップS95)。このとき、ウィークフラグWが1になっているウェイが複数存在する場合は、リプレース部140はランダムに1つを選択する。
このように、W=1のウェイが存在しない場合、リプレース対象は、使用フラグUが0のキャッシュエントリーの中から1つ選択される。
また、W=1のウェイが存在する場合、リプレース対象は、使用フラグUが0であると1であるとを問わず、W=1のウェイのキャッシュエントリーから1つ選択される。これにより図13(a)(b)に示したように、アクセス頻度の低いデータがキャッシュメモリに残ることによるキャッシュミスの誘発を低減することができる。
図16は、フラグ改変部141の構成を示すブロック図である。同図の構成は、図5に示したフラグ改変部41と比較して、フラグ書換部407の代わりにフラグ書換部407aを備える点が異なっている。
図18は、フラグ書換部407aにおけるWフラグ設定処理の一例を示すフローチャートである。
フラグ書換部407aは、コマンドレジスタ401にWフラグ設定コマンドが保持されている場合、スタートラインからエンドラインまでの各ラインアドレスを順に出力しながらループ1の処理(S82〜S86)を行う。フラグ書換部407aは、各ラインについて同じ処理を行うので、ここでは1ライン分の処理について説明する。
すなわち、フラグ書換部407aは、キャッシュメモリ3がプロセッサ1からアクセスされていない間に、ラインアドレスをアドレスレジスタ20に出力し(S83)、アドレスレジスタ20のタグアドレスとキャッシュエントリーのタグとを比較器32a〜32dに比較させ、ヒットするかどうかを判定する(S84)。さらにフラグ書換部407aは、ヒットした場合には、ヒットしたキャッシュエントリーに対してWフラグを1にセットし(S85)、ミスヒットした場合には、キャッシュメモリにエントリーされていないのでなにもしない。
これにより、スタートラインからエンドラインまでの各ラインについて、キャッシュメモリ3にエントリーされている場合には、Wフラグが1に設定される。
フラグ書換部407aは、コマンドレジスタ401にUフラグ設定コマンドが保持されている場合、当該コマンドに従ってUフラグを設定する。この処理は、図18においてWフラグをUフラグと読み替えることにより、Wフラグ設定処理と全く同様に実行される。
以上説明してきたように、本実施の形態におけるキャッシュメモリによれば、Wフラグを設定することにより、W=1のキャッシュエントリーをキャッシュミス時には最古のキャッシュエントリとして真っ先にリプレース対象とすることができる。また、使用フラグUの値は1ビットだけであるがアクセス順序が古いか新しいかをしめすので、Uフラグ設定処理によって、スタートラインからエンドラインまでの各ラインについてアクセス順序を設定することができる。例えば、プロセッサ1は、キャッシュメモリ3に残しておきたいアドレスのデータをアドレス範囲として指定してU=1を設定するUフラグ設定コマンドを発行すればよい。逆に、キャッシュメモリ3か追い出してもよいデータをアドレス範囲として指定してU=0を設定するUフラグ設定コマンドを発行すればよい。
(1)W=1のキャッシュエントリーは真っ先にリプレース対象とされるが、制御部は、リプレースされるまでの間に、ダーティであればクリーニング(ライトバック)を行ってもよい。
(2)図6(a)(b)(c)に示した各命令は、コンパイラによりプログラム中に挿入してもよい。その際、コンパイラは、例えば配列データの書き込みや、圧縮動画データをデコードする際のブロックデータの書き込み等、これ以上書き込みをしないプログラム位置に、上記各命令を挿入するようにすればよい。
2 メモリ
3 キャッシュメモリ
20 アドレスレジスタ
21 メモリI/F
30 デコーダ
31a〜31d ウェイ
32a〜32d 比較器
33a〜33d アンド回路
34 オア回路
35 セレクタ
36 セレクタ
37 デマルチプレクサ
38 制御部
39 フラグ更新部
40 リプレース部
41 フラグ改変部
131a〜131d ウェイ
138 制御部
139 フラグ更新部
140 リプレース部
141 フラグ改変部
401 コマンドレジスタ
402 スタートアドレスレジスタ
403 サイズレジスタ
404 加算器
405a スタートアライナ
405b スタートアライナ
406a エンドアライナ
406b エンドアライナ
407 フラグ書換部
407a フラグ書換部
Claims (8)
- キャッシュの単位データを保持するキャッシュエントリーに対応させて、当該キャッシュエントリーが有効であるか否かを示すバリッドフラグと、当該キャッシュエントリーに対する書き込みがなされたか否かを示すダーティフラグとを保持するフラグ保持手段と、
プロセッサからの指示に基づき、前記バリッドフラグおよびダーティフラグの少なくとも一方をキャッシュエントリーの状態に反して改変する改変手段と
を備えることを特徴とするキャッシュメモリ。 - 前記改変手段は、メモリからデータをロードすることなく、キャッシュエントリーに対してタグとしてのアドレスを設定しバリッドフラグをセットする
ことを特徴とする請求項1記載のキャッシュメモリ。 - 前記改変手段は、キャッシュエントリーに対してライトバックされていない書き換えられたデータを保持している状態でダーティフラグをリセットする
ことを特徴とする請求項2記載のキャッシュメモリ。 - 前記キャッシュメモリは、さらに、
プロセッサから指定されたアドレス範囲を保持する保持手段と、
保持されたアドレス範囲に属するデータを保持するキャッシュエントリーを特定する特定手段とを備え、
前記改変手段は、特定されたキャッシュエントリーに対して前記バリッドフラグおよびダーティフラグの少なくとも一方を改変する
ことを特徴とする請求項2又は3記載のキャッシュメモリ。 - 前記特定手段は、
前記アドレス範囲の先頭アドレスがラインデータの途中を指す場合、当該先頭アドレスを、前記アドレス範囲に含まれる先頭のラインを指すスタートラインアドレスに変換する第1変換手段と、
前記アドレス範囲の末尾アドレスがラインデータの途中を指す場合、当該末尾アドレスを、前記アドレス範囲に含まれる末尾のラインを指すエンドラインアドレスに変換する第2変換手段と、
前記スタートラインアドレスからエンドラインアドレスまでの各ラインアドレスに対応するデータを保持するキャッシュエントリーがあるか否かを判定する判定手段と
を備えることを特徴とする請求項4記載のキャッシュメモリ。 - 前記改変手段は、
ダーティフラグのリセット指示付きメモリアクセス命令が実行されたことを検出する命令検出手段と、
当該命令によってアクセスがなされたキャッシュエントリーに対してダーティフラグをリセットするフラグ書き換え手段と
を備えることを特徴とする請求項1記載のキャッシュメモリ。 - 前記改変手段は、
バリッドフラグのリセット指示付きメモリアクセス命令が実行されたことを検出する命令検出手段と、
当該命令によってアクセスがなされたキャッシュエントリーに対してバリッドフラグをリセットするフラグ書き換え手段と
を備えることを特徴とする請求項1記載のキャッシュメモリ。 - キャッシュの単位データを保持するキャッシュエントリーに対応させて、当該キャッシュエントリーが有効であるか否かを示すバリッドフラグと、当該キャッシュエントリーに対する書き込みがなされたか否かを示すダーティフラグとを有するキャッシュメモリの制御方法であって、
プロセッサの指示に基づき、メモリからデータをロードすることなく、キャッシュエントリーに対してタグとしてのアドレスを設定しバリッドフラグをセットするステップと、
プロセッサの指示に基づき、キャッシュエントリーに対してライトバックされていない書き換えられたデータを保持している状態でダーティフラグをリセットするステップと
を有することを特徴とする制御方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003424042 | 2003-12-22 | ||
JP2003424042 | 2003-12-22 | ||
PCT/JP2004/019102 WO2005066796A1 (ja) | 2003-12-22 | 2004-12-21 | キャッシュメモリ及びその制御方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP4008947B2 JP4008947B2 (ja) | 2007-11-14 |
JPWO2005066796A1 true JPWO2005066796A1 (ja) | 2007-12-20 |
Family
ID=34746820
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005516832A Expired - Fee Related JP4008947B2 (ja) | 2003-12-22 | 2004-12-21 | キャッシュメモリ及びその制御方法 |
Country Status (7)
Country | Link |
---|---|
US (1) | US7454575B2 (ja) |
EP (1) | EP1698978A4 (ja) |
JP (1) | JP4008947B2 (ja) |
KR (1) | KR100837479B1 (ja) |
CN (1) | CN100517273C (ja) |
TW (1) | TW200534096A (ja) |
WO (1) | WO2005066796A1 (ja) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101151600B (zh) | 2005-04-08 | 2012-02-22 | 松下电器产业株式会社 | 高速缓冲存储器系统及其控制方法 |
JP2009157608A (ja) * | 2007-12-26 | 2009-07-16 | Nec Corp | キャッシュメモリシステムおよびキャッシュメモリ制御方法 |
JP5420182B2 (ja) * | 2008-03-14 | 2014-02-19 | 富士通セミコンダクター株式会社 | キャッシュメモリシステム、データ処理装置および記憶装置 |
JP2010033480A (ja) * | 2008-07-31 | 2010-02-12 | Sony Corp | キャッシュメモリおよびキャッシュメモリ制御装置 |
TW201015319A (en) * | 2008-09-17 | 2010-04-16 | Panasonic Corp | Cache memory, memory system, data copying method and data rewriting method |
TW201017421A (en) * | 2008-09-24 | 2010-05-01 | Panasonic Corp | Cache memory, memory system and control method therefor |
US9342461B2 (en) | 2012-11-28 | 2016-05-17 | Qualcomm Incorporated | Cache memory system and method using dynamically allocated dirty mask space |
CN103345429B (zh) * | 2013-06-19 | 2018-03-30 | 中国科学院计算技术研究所 | 基于片上ram的高并发访存加速方法、加速器及cpu |
US9734062B2 (en) * | 2013-12-13 | 2017-08-15 | Avago Technologies General Ip (Singapore) Pte. Ltd. | System and methods for caching a small size I/O to improve caching device endurance |
KR102354990B1 (ko) | 2014-09-17 | 2022-01-24 | 삼성전자주식회사 | 캐시 메모리 시스템 및 그 동작방법 |
GB2533768B (en) * | 2014-12-19 | 2021-07-21 | Advanced Risc Mach Ltd | Cleaning a write-back cache |
US9971686B2 (en) | 2015-02-23 | 2018-05-15 | Intel Corporation | Vector cache line write back processors, methods, systems, and instructions |
KR102362239B1 (ko) | 2015-12-30 | 2022-02-14 | 삼성전자주식회사 | 디램 캐시를 포함하는 메모리 시스템 및 그것의 캐시 관리 방법 |
GB2547189A (en) * | 2016-02-03 | 2017-08-16 | Swarm64 As | Cache and method |
WO2017196132A1 (en) * | 2016-05-12 | 2017-11-16 | Lg Electronics Inc. | Cache self-clean engine |
CN107992433A (zh) * | 2017-12-19 | 2018-05-04 | 北京云知声信息技术有限公司 | 二级缓存检测方法及装置 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4928239A (en) * | 1986-06-27 | 1990-05-22 | Hewlett-Packard Company | Cache memory with variable fetch and replacement schemes |
JPH0354649A (ja) | 1989-07-24 | 1991-03-08 | Oki Electric Ind Co Ltd | バッファ記憶制御方式 |
JPH0784879A (ja) | 1993-09-09 | 1995-03-31 | Toshiba Corp | キャッシュメモリ装置 |
JPH0869417A (ja) | 1994-08-29 | 1996-03-12 | Sanyo Electric Co Ltd | 計算機システム |
US6205521B1 (en) | 1997-11-03 | 2001-03-20 | Compaq Computer Corporation | Inclusion map for accelerated cache flush |
JP2000029788A (ja) | 1998-07-15 | 2000-01-28 | Nec Corp | キャッシュメモリシステム及びそれに用いるキャッシュ制御方法並びにその制御プログラムを記録した記録媒体 |
JP2000200221A (ja) | 1998-10-30 | 2000-07-18 | Nec Corp | キャッシュメモリ装置及びその制御方法 |
JP2001222467A (ja) | 2000-02-07 | 2001-08-17 | Matsushita Electric Ind Co Ltd | キャッシュ装置 |
JP2003223360A (ja) * | 2002-01-29 | 2003-08-08 | Hitachi Ltd | キャッシュメモリシステムおよびマイクロプロセッサ |
US7065613B1 (en) * | 2002-06-06 | 2006-06-20 | Maxtor Corporation | Method for reducing access to main memory using a stack cache |
US7203798B2 (en) * | 2003-03-20 | 2007-04-10 | Matsushita Electric Industrial Co., Ltd. | Data memory cache unit and data memory cache system |
-
2004
- 2004-12-21 CN CNB2004800385333A patent/CN100517273C/zh not_active Expired - Fee Related
- 2004-12-21 EP EP04807459A patent/EP1698978A4/en not_active Withdrawn
- 2004-12-21 JP JP2005516832A patent/JP4008947B2/ja not_active Expired - Fee Related
- 2004-12-21 WO PCT/JP2004/019102 patent/WO2005066796A1/ja not_active Application Discontinuation
- 2004-12-21 US US10/583,773 patent/US7454575B2/en active Active
- 2004-12-21 TW TW093139785A patent/TW200534096A/zh unknown
- 2004-12-21 KR KR1020067009495A patent/KR100837479B1/ko not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
EP1698978A4 (en) | 2008-11-05 |
CN100517273C (zh) | 2009-07-22 |
KR100837479B1 (ko) | 2008-06-12 |
US20070143548A1 (en) | 2007-06-21 |
US7454575B2 (en) | 2008-11-18 |
TW200534096A (en) | 2005-10-16 |
CN1898654A (zh) | 2007-01-17 |
WO2005066796A1 (ja) | 2005-07-21 |
KR20060086968A (ko) | 2006-08-01 |
JP4008947B2 (ja) | 2007-11-14 |
EP1698978A1 (en) | 2006-09-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5030796B2 (ja) | データ転送中にキャッシュへのアクセスを制限するシステムおよびその方法 | |
JP5536655B2 (ja) | キャッシュメモリ、メモリシステム及びデータコピー方法 | |
JP4098347B2 (ja) | キャッシュメモリおよびその制御方法 | |
JP4008947B2 (ja) | キャッシュメモリ及びその制御方法 | |
US20070186048A1 (en) | Cache memory and control method thereof | |
JP5217432B2 (ja) | セクタ機能付きキャッシュメモリ | |
JP4298800B2 (ja) | キャッシュメモリにおけるプリフェッチ管理 | |
EP1363189A2 (en) | Apparatus and method for implementing a rom patch using a lockable cache | |
US8589630B2 (en) | Methods and apparatus for handling a cache miss | |
CN111201518B (zh) | 用于管理能力元数据的设备和方法 | |
US7555610B2 (en) | Cache memory and control method thereof | |
US20080052467A1 (en) | System for restricted cache access during information transfers and method thereof | |
US20110179227A1 (en) | Cache memory and method for cache entry replacement based on modified access order | |
US20120102271A1 (en) | Cache memory system and cache memory control method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20070807 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20070830 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100907 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110907 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120907 Year of fee payment: 5 |
|
LAPS | Cancellation because of no payment of annual fees |