JPWO2005066796A1 - キャッシュメモリ及びその制御方法 - Google Patents

キャッシュメモリ及びその制御方法 Download PDF

Info

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
Application number
JP2005516832A
Other languages
English (en)
Other versions
JP4008947B2 (ja
Inventor
龍太 中西
龍太 中西
岡林 はづき
はづき 岡林
田中 哲也
哲也 田中
宮阪 修二
修二 宮阪
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.)
Panasonic Corp
Panasonic Holdings Corp
Original Assignee
Panasonic Corp
Matsushita Electric Industrial Co 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 Panasonic Corp, Matsushita Electric Industrial Co Ltd filed Critical Panasonic Corp
Application granted granted Critical
Publication of JP4008947B2 publication Critical patent/JP4008947B2/ja
Publication of JPWO2005066796A1 publication Critical patent/JPWO2005066796A1/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • G06F12/127Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning using additional replacement algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • G06F12/0886Variable-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

本発明は、プロセッサのメモリアクセスを高速化するためのキャッシュメモリおよびその制御方法に関する。
近年のマイクロプロセッサでは、例えば、SRAM(Static Random Access Memory)等から成る小容量で高速なキャッシュメモリをマイクロプロセッサの内部、もしくはその近傍に配置し、データの一部をキャッシュメモリに記憶することによって、マイクロプロセッサのメモリアクセスを高速化させている。
コンピュータシステムでは、中央処理装置からキャッシュメモリへのリードアクセスまたはライトアクセスがミスヒットした場合に、主記憶装置から新たに読み出されたデータの一部が、エントリ(登録項目)としてキャッシュメモリの空きブロックに格納される。この時、空きブロックが存在しない場合には、複数のブロックのいずれか1つを選択し、選択されたブロックに格納されているエントリを主記憶装置に戻してブロック内を空き状態にし、この空きブロックに新たに読み出したデータを格納するエントリ置換処理が必要になる。上記エントリ置換処理では、最も以前に参照したデータを格納しているブロックを選択する手法、すなわち、LRU(Least Recently Used)デコード方式が一般的に採用されている。このLRUデコード方式によってキャッシュメモリの使用効率が向上し、その結果、マイクロプロセッサの実行速度が向上する。
マイクロプロセッサが処理するプログラムの中には、アクセス頻度は少ないものの、ひとたび起動された場合には高速に処理しなければならないような特殊な処理と、アクセス頻度は多いが、実行速度がそれほど要求されないような処理とが存在する。
そこで、これに対応するために例えば特許文献1等の従来技術では、キャッシュメモリにフリーズ機能を設けている。フリーズ機能は、アクセスは少ないものの、ひとたび起動された場合には高速に処理しなければならないようなプログラムを予めキャッシュメモリ内にコピーしておき、その領域を書き換え禁止にしておく機能である。この機能を有することで、コンピュータシステムは、必要な時にプログラムをキャッシュメモリから読み出して実行することができ、これにより実行時間が短縮する。また、パージ機能は、アクセス頻度は多いが、実行速度がそれほど要求されないようなプログラムやデータをキャッシュメモリ内に保存しておくことなく、その領域を解放する機能である。この機能を有することで、キャッシュメモリに余裕ができ、優先度の高い他のプログラムやデータをキャッシュメモリに取り込むことができ、これにより、キャッシュメモリの利用効率が向上し、総合的な実行時間が短縮する。
特開2000−200221号公報
しかしながら、フリーズ機能を使用してもパージ機能を使用しても、キャッシュミス発生によりリプレースする場合に無駄なリプレースをしたり、無駄なライトバックをする場合があるという問題がある。
例えば、無駄なリプレースが生じる場合として、プロセッサが配列要素を全てライトする場合がある。この場合、メモリから新たにデータをキャッシュメモリにリプレースしても、プロセッサから全てライトされるので、リプレースが無駄に終わる。
また、無駄なライトバックが生じる場合として、キャッシュエントリーが単にワークデータとして使用される場合がある。この場合、最終的に破棄してもよいデータであるにも拘らず、無駄なライトバックが発生する。
本発明の目的は、無駄なリプレースや無駄なライトバックを防止するキャッシュメモリを提供することにある。
上記課題を解決するため本発明のキャッシュメモリは、キャッシュの単位データを保持するキャッシュエントリーに対応させて、当該キャッシュエントリーが有効であるか否かを示すバリッドフラグと、当該キャッシュエントリーに対する書き込みがなされたか否かを示すダーティフラグとを保持するフラグ保持手段と、プロセッサから指示に基づき、前記バリッドフラグおよびダーティフラグの少なくとも一方をキャッシュエントリーの状態に反して改変する改変手段とを備える。
前記改変手段は、キャッシュエントリーに対してタグとしてのアドレスを設定し、有効なデータを保持していない状態でバリッドフラグをセットする構成としてもよい。
この構成によれば、配列などのデータを書き込むためのキャッシュエントリーをキャッシュメモリ上に確保することができ、しかも、上書きされる運命にあるデータをメモリからキャッシュメモリへ無駄にロードすることを防止することができる。
また、前記改変手段は、プロセッサからの指定されたキャッシュエントリーに対してライトバックされていない書き換えられたデータを保持している状態でダーティフラグをリセットする。
この構成によれば、テンポラリーなワークデータ等破棄される運命にあるデータを保持するキャッシュエントリーから無駄にライトバックすることを防止することができる。
ここで、前記キャッシュメモリは、さらに、プロセッサから指定されたアドレス範囲を保持する保持手段と、保持されたアドレス範囲に属するデータを保持するキャッシュエントリーを特定する特定手段とを備え、前記改変手段は、特定されたキャッシュエントリーに対して前記バリッドフラグおよびダーティフラグの少なくとも一方を改変する構成としてもよい。
この構成によれば、プロセッサから指定されたアドレス範囲で、キャッシュメモリへの無駄なデータのロード又はメモリへの無駄なライトバックを防止することができる。
ここで、前記特定手段は、前記アドレス範囲の先頭アドレスがラインデータの途中を指す場合、当該先頭アドレスを、前記アドレス範囲に含まれる先頭のラインを指すスタートラインアドレスに変換する第1変換手段と、前記アドレス範囲の末尾アドレスがラインデータの途中を指す場合、当該末尾アドレスを、前記アドレス範囲に含まれる末尾のラインを指すエンドラインアドレスに変換する第2変換手段と、前記スタートラインアドレスからエンドラインアドレスまでの各ラインアドレスに対応するデータを保持するキャッシュエントリーがあるか否かを判定する判定手段と備える構成としてもよい。
この構成によれば、プロセッサは、前記アドレス範囲として、キャッシュメモリのラインサイズ及びライン境界のアドレスとは無関係に任意のアドレスから任意のアドレス(又は任意のサイズ)を指定することができる。つまり、プロセッサにおいてキャッシュメモリのラインサイズ及びライン境界のアドレスを管理する必要がないので、キャッシュメモリ管理のための負荷を解消することができる。
ここで、前記改変手段は、ダーティフラグのリセット指示付きメモリアクセス命令が実行されたことを検出する命令検出手段と、当該命令によってアクセスがなされたキャッシュエントリーに対してダーティフラグをリセットするフラグ書き換え手段とを備える構成としてもよい。
ここで、前記改変手段は、バリッドフラグのリセット指示付きメモリアクセス命令が実行されたことを検出する命令検出手段と、当該命令によってアクセスがなされたキャッシュエントリーに対してバリッドフラグをリセットするフラグ書き換え手段とを備える構成としてもよい。
また、本発明のキャッシュメモリの制御方法についても上記と同様の手段、作用を有する。
本発明のキャッシュメモリによれば、配列などのデータを書き込むためのキャッシュエントリーをキャッシュメモリ上に確保することができ、しかも、上書きされる運命にあるデータをメモリからキャッシュメモリへ無駄にロードすることを防止することができる。
また、テンポラリーなワークデータ等破棄される運命にあるデータを保持するキャッシュエントリーから無駄にライトバックすることを防止することができる。
さらに、プロセッサは、前記アドレス範囲として、キャッシュメモリのラインサイズ及びライン境界のアドレスとは無関係に任意のアドレスから任意のアドレス(又は任意のサイズ)を指定することができる。つまり、プロセッサにおいてキャッシュメモリのラインサイズ及びライン境界のアドレスを管理する必要がないので、キャッシュメモリ管理のための負荷を解消することができる。
本発明のキャッシュメモリによれば、プロセッサの指示に基づいて、配列などのデータを書き込むためのキャッシュエントリーをキャッシュメモリ上に確保することができ、しかも、上書きされる運命にあるデータをメモリからキャッシュメモリへ無駄にロードすることを防止することができる。また、テンポラリーなワークデータ等破棄される運命にあるデータを保持するキャッシュエントリーから無駄にライトバックすることを防止することができる。
本発明の実施の形態1におけるプロセッサ、キャッシュメモリ、メモリを含むシステムの概略構成を示すブロック図である。 キャッシュメモリの構成例を示すブロック図である。 キャッシュエントリーの詳細なビット構成を示す図である。 制御部の構成を示すブロック図である。 フラグ改変部の構成例を示すブロック図である。 (a)スタートアドレスレジスタにスタートアドレスを書き込む命令の一例を示す。(b)サイズレジスタにサイズを書き込む命令の一例を示す。(c)コマンドレジスタにコマンドを書き込む命令の一例を示す。(d)コマンドの一例を示す。 スタートアライナ及びエンドアライナの説明図である。 フラグ書換部407におけるフラグ改変処理の一例を示すフローチャートである。 本発明の実施の形態2におけるキャッシュメモリの構成を示すブロック図である。 キャッシュエントリーのビット構成を示す。 制御部の構成を示すブロック図である。 フラグ更新部による使用フラグUの更新例を示す。 (a)ウィークフラグが存在しない場合にキャッシュエントリーがリプレースされる様子を示す図である。(b)リプレース処理におけるウィークフラグWの役割を示す説明図である。 リプレース部におけるUフラグ更新処理を示すフローチャートである。 リプレース部におけるリプレース処理を示すフローチャートである。 フラグ改変部の構成を示すブロック図である。 コマンドフォーマットの一例を示す。 フラグ書換部におけるWフラグ設定処理の一例を示すフローチャートである。
符号の説明
1 プロセッサ
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におけるプロセッサ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を備える。
アドレスレジスタ20は、メモリ2へのアクセスアドレスを保持するレジスタである。このアクセスアドレスは32ビットであるものとする。同図に示すように、アクセスアドレスは、最上位ビットから順に、21ビットのタグアドレス、4ビットのセットインデックス(図中のSI)、5ビットのワードインデックス(図中のWI)を含む。ここで、タグアドレスはウェイにマッピングされるメモリ中の領域(そのサイズはセット数×ブロックである)を指す。この領域のサイズは、タグアドレスよりも下位のアドレスビット(A10〜A0)で定まるサイズつまり2kバイトであり、1つのウェイのサイズでもある。セットインデックス(SI)はウェイ0〜3に跨る複数セットの1つを指す。このセット数は、セットインデックスが4ビットなので16セットある。タグアドレスおよびセットインデックスで特定されるキャッシュエントリーは、リプレース単位であり、キャッシュメモリに格納されている場合はラインデータ又はラインと呼ばれる。ラインデータのサイズは、セットインデックスよりも下位のアドレスビットで定まるサイズつまり128バイトである。1ワードを4バイトとすると、1ラインデータは32ワードである。ワードインデックス(WI)は、ラインデータを構成する複数ワード中の1ワードを指す。アドレスレジスタ20中の最下位2ビット(A1、A0)は、ワードアクセス時には無視される。
メモリI/F21は、キャッシュメモリ3からメモリ2へのデータのライトバックや、メモリ2からキャッシュメモリ3へのデータのロード等、キャッシュメモリ3からメモリ2をアクセスするためのI/Fである。
デコーダ30は、セットインデックスの4ビットをデコードし、4つのウェイ0〜3に跨る16セット中の1つを選択する。
4つのウェイ0〜3は、同じ構成を有数する4つのウェイであり、4×2kバイトの容量を有する。各ウェイは、16個のキャッシュエントリーを有する。
図3に1つのキャッシュエントリーにおける詳細なビット構成を示す。同図のように、1つのキャッシュエントリーは、バリッドフラグV0〜V3、21ビットのタグ、128バイトのラインデータ、ダーティフラグD0〜D3を有する。
タグは21ビットのタグアドレスのコピーである。
ラインデータは、タグアドレスおよびセットインデックスにより特定されるブロック中の128バイトデータのコピーであり、32バイトの4つのサブラインからなる。
バリッドフラグV0〜V3は、4つのサブラインに対応し、サブラインが有効か否かを示す。
ダーティフラグD0〜D3は、4つのサブラインに対応し、そのサブラインにプロセッサから書き込みがあったか否か、つまりサブライン中にキャッシュされたデータが存在するが書き込みによりメモリ中のデータと異なるためメモリに書き戻すことが必要か否かを示す。
比較器32aは、アドレスレジスタ20中のタグアドレスと、セットインデックスにより選択されたセットに含まれる4つのタグ中のウェイ0のタグとが一致するか否かを比較する。比較器32b〜32cについても、ウェイ31b〜31dに対応すること以外は同様である。
アンド回路33aは、バリッドフラグと比較器32aの比較結果とが一致するか否かを比較する。この比較結果をh0とする。比較結果h0が1である場合は、アドレスレジスタ20中のタグアドレスおよびセットインデックスに対応するラインデータが存在すること、つまりウェイ0においてヒットしたことを意味する。比較結果h0が0である場合は、ミスヒットしたことを意味する。アンド回路33b〜33dについても、ウェイ31b〜31dに対応すること以外は同様である。その比較結果h1〜h3は、ウェイ1〜3でヒットしたかミスしたかを意味する。
オア回路34は、比較結果h0〜h3のオアをとる。このオアの結果をhitとする。hitは、キャッシュメモリにヒットしたか否かを示す。
セレクタ35は、選択されたセットにおけるウェイ0〜3のラインデータのうち、ヒットしたウェイのラインデータを選択する。
セレクタ36は、セレクタ35により選択された32ワードのラインデータにうち、ワードインデックスに示される1ワードを選択する。
デマルチプレクサ37は、キャッシュエントリにデータを書き込む際に、ウェイ0〜3の1つに書き込みデータを出力する。この書き込みデータはワード単位でよい。
制御部38は、キャッシュメモリ3の全体の制御を行う。特に、プロセッサからのコマンド及びアドレス指定に従って、Vフラグの改変と、Dフラグの改変とを行う。
<制御部の構成>
図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を備える。
コマンドレジスタ401は、プロセッサ1から直接アクセス可能なレジスタであり、プロセッサ1により書き込まれたコマンドを保持する。図6(c)に、コマンドレジスタ401にコマンドを書き込む命令の一例を示す。この命令は、通常の転送命令(mov命令)であり、ソースオペランドとしてコマンドを、デスティネーションオペランドとしてコマンドレジスタ(CR)401を指定している。図6(d)に、コマンドフォーマットの一例を示す。このコマンドフォーマットは、Vフラグ設定コマンド用の2ビットのフィールドと、Dフラグ設定コマンド用の2ビットのフィールドと、サブライン指定用の4ビットのフィールドとを含む。
例えば、Vフラグ設定コマンドは、「10」であればV=0に設定することを指示し(Vリセットコマンド)、「11」であればV=1に設定することを指示し(Vセットコマンド)、「00」であれば無効(ノーオペレーション)を意味する。Dフラグ設定コマンドも同様である。サブライン指定フィールドは、サブラインを個別に指定するためのフィールドであり、個別指定がない場合はライン(全サブライン)指定であるものとする。
スタートアドレスレジスタ402は、プロセッサ1から直接アクセス可能なレジスタであり、プロセッサ1により書き込まれたスタートアドレスを保持する。このスタートアドレスはCフラグを設定すべきアドレス範囲の開始位置を示す。図6(a)に、スタートアドレスレジスタ402にスタートアドレスを書き込む命令の一例を示す。この命令も、図6(c)と同様に通常の転送命令(mov命令)である。
サイズレジスタ403は、プロセッサ1から直接アクセス可能なレジスタであり、プロセッサ1により書き込まれたサイズを保持する。このサイズは、スタートアドレスからのアドレス範囲を示す。図6(b)に、サイズレジスタ403にサイズを書き込む命令の一例を示す。この命令も、図6(c)と同様に通常の転送命令(mov命令)である。なお、サイズの単位は、バイト数であっても、ライン数(キャッシュエントリー数)であってもよく、予め定められた単位であればよい。
加算器404は、スタートアドレスレジスタ402に保持されたスタートアドレスとサイズレジスタ403に保持されたサイズとを加算する。加算結果は、アドレス範囲の終了位置を指すエンドアドレスである。加算器404は、サイズがバイト数指定の場合はバイトアドレスとして加算し、サイズがライン数指定の場合はラインアドレスとして加算すればよい。
スタートアライナ405a、405bは、スタートアドレスをライン境界の位置に調整する。スタートアライナ405aはエンドアドレスの方向に、405bはエンドアドレスとは反対の方向に調整する。この調整によりプロセッサ1はラインサイズ及びライン境界とは無関係に任意のアドレスをスタートアドレスとして指定することができる。
エンドアライナ406a、406bは、エンドアドレスをライン境界の位置に調整する。エンドアライナ4065aはスタートアドレスの方向に、406bはステートアドレスとは反対の方向に調整する。この調整によりプロセッサ1はラインサイズ及びライン境界とは無関係に任意の大きさを上記サイズとして指定することができる。
図7に、スタートアライナ405a、405b及びエンドアライナ406a、406bの説明図を示す。同図において、プロセッサ1から指定されたスタートアドレスはラインNの途中の任意の位置を指す。スタートアライナ405aは、次のライン(N+1)の先頭を指すよう調整し、調整後のアドレスをアラインスタートアドレスaとして出力する。スタートアライナ405bは、スタートアドレスのデータを含むラインNの先頭を指すよう調整し、調整後のアドレスをアラインスタートアドレスbとして出力する。アラインスタートアドレスが指すラインをスタートラインと呼ぶ。
また、エンドアドレスはラインMの途中の任意の位置を指す。エンドアライナ406aは、直前のライン(M−1)の先頭を指すよう調整し、調整後のアドレスをアラインエンドアドレスaとして出力する。エンドアライナ406bは、エンドアドレスのデータを含むラインMの先頭を指すよう調整し、調整後のアドレスをアラインエンドアドレスbとして出力する。アラインエンドアドレスが指すラインをエンドラインと呼ぶ。
同図のように、スタートアライナ405a及びエンドアライナ406aはライン単位で内側アラインを行う。スタートアライナ405b及びエンドアライナ406bはライン単位で外側アラインを行う。さらに、ライン単位の外側アラインの後、さらに、サブライン単位の外側アラインと内側アラインが可能である。
フラグ書換部407は、スタートラインからエンドラインまで、コマンドに従ってVフラグ又はDフラグの値を設定する。その際、スタートライン及びエンドラインが内側アラインか外側アラインかはコマンドに応じて選択される。
<フラグ改変処理>
図8は、フラグ書換部407におけるフラグ改変処理の一例を示すフローチャートである。同図では、DリセットコマンドとVセットコマンドとを示している。
同図において、コマンドレジスタ401にDリセットコマンドが書き込まれている場合(S80)、フラグ書換部407は、スタートアライナ405a、405b、エンドアライナ406a、406bの出力の中から内側アラインによるスタートラインとエンドラインとを選択する(S81)。ここで内側アラインを選択しているのは、ラインNとラインMにおけるスタートアドレスとエンドアドレスの外側のデータは、プロセッサ1により破棄されるとは限らないからである。
さらに、フラグ書換部407は、スタートラインからエンドラインまでの各ラインアドレスを順に出力しながらループ1の処理(S82〜S86)を行う。フラグ書換部407は、各ラインについて同じ処理を行うので、ここでは1ライン分の処理について説明する。
すなわち、フラグ書換部407は、キャッシュメモリ3がプロセッサ1からアクセスされていない間に、ラインアドレスをアドレスレジスタ20に出力し(S83)、アドレスレジスタ20のタグアドレスとキャッシュエントリーのタグとを比較器32a〜32dに比較させ、ヒットするかどうかを判定する(S84)。さらにフラグ書換部407は、ヒットした場合には、ヒットしたキャッシュエントリーに対してD0〜D3フラグを0にリセットし(S85)、ミスヒットした場合には、キャッシュメモリにエントリーされていないのでなにもしない。
このように、スタートラインからエンドラインまでの各ラインについて、キャッシュメモリ3にエントリーされている場合には、D0〜D3フラグに0が設定される。フラグ書換部407は、ループ1の終了後、コマンドレジスタ401のコマンドをクリアする(S98)。これにより、テンポラリーなワークデータ等破棄される運命にあるデータを保持するキャッシュエントリーから無駄にライトバックすることを防止することができる。
また、図8において、コマンドレジスタ401にVセットコマンドが書き込まれている場合(S87)、フラグ書換部407は、スタートアライナ405a、405b、エンドアライナ406a、406bの出力の中から外側アラインによるスタートラインとエンドラインとを選択する(S88)。ここで外側アラインを選択しているのは、内側アラインではスタートアドレスからエンドアドレスまでのサイズを確保できないからである。
さらに、フラグ書換部407は、スタートラインからエンドラインまでの各ラインアドレスを順に出力しながらループ2の処理(S89〜S97)を行う。フラグ書換部407は、各ラインについて同じ処理を行うので、ここでは1ライン分の処理について説明する。
すなわち、フラグ書換部407は、キャッシュメモリ3がプロセッサ1からアクセスされていない間に、ラインアドレスをアドレスレジスタ20に出力し(S90)、アドレスレジスタ20のタグアドレスとキャッシュエントリーのタグとを比較器32a〜32dに比較させ、ヒットするかどうかを判定する(S91)。さらにフラグ書換部407は、ヒットしなかった場合には、当該ラインアドレスに対応するセット内の4つのウェイからLRU方式でリプレース対象のウェイを1つ選択し(S92)、選択されたウェイのダーティフラグD0〜D3の論理和が1であるか否かを判定する(S93)。この論理和が1、つまりダーティであると判定された場合、フラグ書換部407は、ダーティなサブラインのみをライトバックする(S94)。上記の論理和が1でないつまりダーティでないと判定された場合、又はダーティなサブラインのライトバックの後に、フラグ書換部407は、
キャッシュエントリーにメモリからデータをロードすることなく、キャッシュエントリーにラインアドレスをタグとして設定し(S95)、バリッドフラグV0〜V3を1にセットする(S96)。このようにして、有効なデータを保持していないがV0〜V3=1と設定された1ライン分のキャッシュエントリーが確保される。
さらに、フラグ書換部407は、ループ1の終了後、コマンドレジスタ401のコマンドをクリアする(S98)。
これにより、配列などのデータを書き込み用のキャッシュエントリーをキャッシュメモリ上に確保し、かつ、無駄なライトバックを防止することができる。
以上説明してきたように、本実施の形態におけるキャッシュメモリによれば、Dリセットコマンドにより、破棄される運命にあるデータを保持するキャッシュエントリーから無駄にライトバックすることを防止することができる。また、Vセットコマンドにより、配列などのデータを書き込み用のキャッシュエントリーをキャッシュメモリ上に確保し、かつ、無駄なライトバックを防止することができる。
なお、上記実施の形態では、DリセットコマンドとVセットコマンドについて説明したが、Vリセットコマンドについては、図8に示したS87〜S98において、ステップS95を削除し、ステップS96においてV0〜V3を0にリセットすることにより実現することができる。これによれば、無駄なライトバックを防止してキャッシュエントリーを開放することができる。
また、Dセットコマンドは、図8のS80〜S86と同様に実行可能ではあるが、プロセッサ1からストア命令によりデータを書き込めばDフラグがセットされること、Dフラグのセットによりライトバック動作が発生することを考えれば、あまり実用的とはいえない。しかし、キャッシュメモリのテスト動作や性能の評価や検証等に利用することができる。
<変形例>
なお、本発明のキャッシュメモリは、上記の実施の形態の構成に限るものではなく、種々の変形が可能である。以下、変形例のいくつかについて説明する。
(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等他のサイズでもよい。その場合、各キャッシュエントリーは、サブラインと同数のバリッドフラグおよびダーティフラグをそれぞれ保持すればよい。
(実施の形態2)
実施の形態1では、Vフラグの改変とDフラグの改変とを行う構成について説明したが、本実施の形態では、これ以上使用(書き込み及び読み出し)するかしないかを示すW(ウィーク)フラグを有するキャッシュメモリにおいてWフラグを改変する構成について説明する。
<キャッシュメモリの構成>
図9は、本発明の実施の形態2におけるキャッシュメモリの構成を示すブロック図である。同図のキャッシュメモリは、図2の構成と比較して、ウェイ31a〜31dの代わりにウェイ131a〜131dを備える点と、制御部38の代わりに制御部138を備える点とが異なっている。以下、同じ点は説明を省略して、異なる点を中心に説明する。
ウェイ131aは、ウェイ31aと比べて、各キャッシュエントリー中にWフラグ及びUフラグが追加されている点が異なる。ウェイ131b〜131dも同様である。
図10に、キャッシュエントリーのビット構成を示す。1つのキャッシュエントリーは、バリッドフラグV0〜V3、21ビットのタグ、128バイトのラインデータ、ウィークフラグW、使用フラグU及びダーティフラグD0〜D3を保持する。
このうち、ウィークフラグWは、プロセッサからのアクセスに関しては、これ以上使用するか否かを意味し、キャッシュメモリにおけるリプレース制御に関しては、他のキャッシュエントリーよりも真っ先に追い出してもよい最弱のリプレース対象を意味する。このように、ウィークフラグWは二つの意味を有することから、クリーニング処理とリプレース処理との2つの処理で参照される。
使用フラグUは、そのキャッシュエントリーにアクセスがあったか否かを示し、LRU方式におけるミスヒットによるリプレースに際して4つのウェイのキャッシュエントリー間におけるアクセス順序データの代わりに用いられる。より正確には、使用フラグUの1は、アクセスがあったことを、0はないことを意味する。ただし、1つのセット内の4つウェイの使用フラグが全て1になれば、0にリセットされる。別言すれば、使用フラグUは、アクセスされた時期が古いか新しいか2つの相対的な状態を示す。つまり、使用フラグUが1のキャッシュエントリーは、使用フラグが0のキャッシュエントリーよりも新しくアクセスされたことを意味する。
制御部138は、制御部38と比べて、Wフラグを設定する点と、LRU方式におけるアクセス順序情報の代わりに使用フラグUを用いる点とが異なる。
<制御部の構成>
図11は、制御部138の構成を示すブロック図である。同図の制御部138は、制御部38と比較して、フラグ更新部39、リプレース部40、フラグ改変部41の代わりにフラグ更新部139、リプレース部140、フラグ改変部141を備える点が異なる。
フラグ更新部139は、フラグ更新部39と同様にVフラグ、Dフラグを更新することに加えて、キャッシュメモリがアクセスされたときに使用フラグUの更新処理を行う。
リプレース部140は、通常のLRU方式ではなく、使用フラグUをアクセス順序とする擬似的なLRU方式によりリプレースを行う。ただし、リプレース処理に際してW=1のキャッシュエントリーは真っ先にリプレース対象として選択する。
フラグ改変部141は、プロセッサ1からのコマンドに応じてウィークフラグWを設定する。プロセッサ1は、もはや使用(書き込み及び読み出し)をしないキャッシュエントリーについてウィークフラグの設定を指示するコマンドをキャッシュメモリ3に対して発行する。W=1のキャッシュエントリーは、キャッシュミス時には使用フラグUの値に関わらず、真っ先にリプレース対象となる。また、W=1のキャッシュエントリーがダーティであればクリーニング処理の対象となる。
<使用フラグUの説明>
図12は、フラグ更新部39による使用フラグUの更新例を示す。同図の上段、中断、下段は、ウェイ0〜3に跨るセットNを構成する4つのキャッシュエントリーを示している。4つのキャッシュエントリー右端の1又は0は、それぞれ使用フラグの値である。この4つの使用フラグUをU0〜U3と記す。
同図上段では(U0〜U3)=(1、0、1、0)であるので、ウェイ0、2のキャッシュエントリーはアクセスがあったことを、ウェイ1、3のキャッシュエントリーはアクセスがないことを意味する。
この状態で、メモリアクセスがセットN内のウェイ1のキャッシュエントリーにヒットした場合、同図中段に示すように、(U0〜U3)=(1、1、1、0)に更新される。つまり、実線に示すようにウェイ1の使用フラグU1が0から1に更新される。
さらに、同図中段の状態で、メモリアクセスがセットN内のウェイ3のキャッシュエントリーにヒットした場合、同図下断に示すように、(U0〜U3)=(0、0、0、1)に更新される。つまり、実線に示すようにウェイ3の使用フラグU1が0から1に更新される。加えて、破線に示すようにウェイ3以外の使用フラグU0〜U2が1から0に更新される。これにより、ウェイ3のキャシュエントリーが、ウェイ0〜2の各キャッシュエントリーよりも新しくアクセスされたことを意味することになる。
リプレース部140は、キャッシュミス時にW=1のキャッシュエントリーが存在しなければ、使用フラグに基づいてリプレース対象のキャッシュエントリーを決定してリプレースを行う。例えば、フラグ更新部39は、図5上段では、ウェイ1とウェイ3の何れかをリプレース対象と決定し、図5中段ではウェイ3をリプレース対象と決定し、図5下段ではウェイ0〜2の何れかをリプレース対象と決定する。
<ウィークフラグWの説明>
図13(a)ウィークフラグが存在しないと仮定した場合の比較例であり、キャッシュエントリーがリプレースされる様子を示す図である。同図においても、図12と同様にウェイ0〜3に跨るセットNを構成する4つのキャッシュエントリーを示している。、4つのキャッシュエントリー右端の1又は0は、それぞれ使用フラグの値である。また、データEのみアクセス頻度の低いデータを、データA、B、C、Dはアクセス頻度の高いデータとする。
同図(a)の第1段目の状態で、プロセッサ1がデータEにアクセスすると、キャッシュミスが発生する。このキャッシュミスにより、例えば、U=0のキャッシュエントリーの中からアクセス頻度の高いデータCのキャッシュエントリーがアクセス頻度の低いデータEにリプレースされ、第2段目の状態となる。
第2段目の状態で、プロセッサ1がデータCにアクセスすると、キャッシュミスが発生する。このキャッシュミスにより、U=0のキャッシュエントリーであるアクセス頻度の高いデータDのキャッシュエントリーがアクセス頻度の高いデータCにリプレースされ、第3段目の状態となる。
第3段目の状態で、プロセッサ1がデータDにアクセスすると、キャッシュミスが発生する。このキャッシュミスにより、例えば、アクセス頻度の高いデータCのキャッシュエントリーがアクセス頻度の高いデータDにリプレースされ、第3段目の状態となる。
同様に、第4段目でも、使用頻度の低いデータEはリプレース対象として選択されないで、キャッシュメモリーに残っている。
第5段目の状態で、使用頻度の低いデータEは最も古い(U=0)ことから、リプレース対象として選択されて、追い出される。
このように、擬似LRU方式において(通常のLRU方式においても)、アクセス頻度の低いデータEによって、4ウェイの場合は最悪4回のキャッシュミスを誘発する場合がある。
図13(b)は、リプレース処理におけるウィークフラグWの役割を示す説明図である。
同図(b)の第1段目の状態(同図(a)の第1段目と同じ)で、プロセッサ1がデータEにアクセスすると、キャッシュミスが発生する。このキャッシュミスにより、例えば、U=0のキャッシュエントリーの中からアクセス頻度の高いデータCのキャッシュエントリーがアクセス頻度の低いデータEにリプレースされる。このとき、プロセッサ1は、データEのキャッシュエントリーにウィークフラグWを1に設定するものとする。これにより、次のキャッシュミス時にデータEのキャッシュエントリーが真っ先に追い出され、第2段目の状態となる。
第2段目の状態で、プロセッサ1がデータCにアクセスすると、キャッシュミスが発生する。このキャッシュミスにより、W=1のキャッシュエントリーであるアクセス頻度の低いデータEのキャッシュエントリーがリプレース対象として選択され、アクセス頻度の高いデータCにリプレースされ、第3段目の状態となる。
このように、ウィークフラグWを設けることにより、アクセス頻度の低いデータによるキャッシュミスの誘発を低減することができる。
<Uフラグ更新処理>
図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つを選択する。
さらに、リプレース部140は、当該セットにおける選択されたウェイのキャッシュエントリーを対象にリプレースし(ステップS96)、リプレース後に当該キャッシュエントリーの使用フラグUを1に、ウィークフラグWを0初期化する(ステップS97)。なお、このときバリッドフラグV、ダーティフラグDは、それぞれ1、0に初期化される。
このように、W=1のウェイが存在しない場合、リプレース対象は、使用フラグUが0のキャッシュエントリーの中から1つ選択される。
また、W=1のウェイが存在する場合、リプレース対象は、使用フラグUが0であると1であるとを問わず、W=1のウェイのキャッシュエントリーから1つ選択される。これにより図13(a)(b)に示したように、アクセス頻度の低いデータがキャッシュメモリに残ることによるキャッシュミスの誘発を低減することができる。
<フラグ改変部141の構成>
図16は、フラグ改変部141の構成を示すブロック図である。同図の構成は、図5に示したフラグ改変部41と比較して、フラグ書換部407の代わりにフラグ書換部407aを備える点が異なっている。
フラグ書換部407aは、フラグ書換部407の機能に加えて、Wフラグの改変と使用フラグUの改変とを行う点が異なっている。そのため、コマンドレジスタ401には、Wフラグの設定を指示するWコマンド、Uフラグの設定を指示するUコマンドがプロセッサ1によって設定可能になっている。図17に、これらのコマンドフォーマットの一例を示す。同図のコマンドフォーマットは、図6(d)に示したコマンドフォーマットに対してWコマンド及びUコマンドのフィールドが追加されている。Wコマンド及びUコマンドの内容はDコマンドやVコマンドと同様である。
<Wフラグ設定処理>
図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に設定される。
<Uフラグ設定処理>
フラグ書換部407aは、コマンドレジスタ401にUフラグ設定コマンドが保持されている場合、当該コマンドに従ってUフラグを設定する。この処理は、図18においてWフラグをUフラグと読み替えることにより、Wフラグ設定処理と全く同様に実行される。
以上説明してきたように、本実施の形態におけるキャッシュメモリによれば、Wフラグを設定することにより、W=1のキャッシュエントリーをキャッシュミス時には最古のキャッシュエントリとして真っ先にリプレース対象とすることができる。また、使用フラグUの値は1ビットだけであるがアクセス順序が古いか新しいかをしめすので、Uフラグ設定処理によって、スタートラインからエンドラインまでの各ラインについてアクセス順序を設定することができる。例えば、プロセッサ1は、キャッシュメモリ3に残しておきたいアドレスのデータをアドレス範囲として指定してU=1を設定するUフラグ設定コマンドを発行し、
以上説明してきたように、本実施の形態におけるキャッシュメモリによれば、Wフラグを設定することにより、W=1のキャッシュエントリーをキャッシュミス時には最古のキャッシュエントリとして真っ先にリプレース対象とすることができる。また、使用フラグUの値は1ビットだけであるがアクセス順序が古いか新しいかをしめすので、Uフラグ設定処理によって、スタートラインからエンドラインまでの各ラインについてアクセス順序を設定することができる。例えば、プロセッサ1は、キャッシュメモリ3に残しておきたいアドレスのデータをアドレス範囲として指定してU=1を設定するUフラグ設定コマンドを発行すればよい。逆に、キャッシュメモリ3か追い出してもよいデータをアドレス範囲として指定してU=0を設定するUフラグ設定コマンドを発行すればよい。
<変形例>
(1)W=1のキャッシュエントリーは真っ先にリプレース対象とされるが、制御部は、リプレースされるまでの間に、ダーティであればクリーニング(ライトバック)を行ってもよい。
(2)図6(a)(b)(c)に示した各命令は、コンパイラによりプログラム中に挿入してもよい。その際、コンパイラは、例えば配列データの書き込みや、圧縮動画データをデコードする際のブロックデータの書き込み等、これ以上書き込みをしないプログラム位置に、上記各命令を挿入するようにすればよい。
本発明は、メモリアクセスを高速化するためのキャッシュメモリに適しており、例えば、オンチップキャッシュメモリ、オフチップキャッシュメモリ、データキャッシュメモリ、命令キャッシュメモリ等に適している。
【0002】
機能を有することで、コンピュータシステムは、必要な時にプログラムをキャッシュメモリから読み出して実行することができ、これにより実行時間が短縮する。また、パージ機能は、アクセス頻度は多いが、実行速度がそれほど要求されないようなプログラムやデータをキャッシュメモリ内に保存しておくことなく、その領域を解放する機能である。この機能を有することで、キャッシュメモリに余裕ができ、優先度の高い他のプログラムやデータをキャッシュメモリに取り込むことができ、これにより、キャッシュメモリの利用効率が向上し、総合的な実行時間が短縮する。
【特許文献1】特開2000−200221号公報
【発明の開示】
【発明が解決しようとする課題】
【0006】 しかしながら、フリーズ機能を使用してもパージ機能を使用しても、キャッシュミス発生によりリプレースする場合に無駄なリプレースをしたり、無駄なライトバックをする場合があるという問題がある。
【0007】 例えば、無駄なリプレースが生じる場合として、プロセッサが配列要素を全てライトする場合がある。この場合、メモリから新たにデータをキャッシュメモリにリプレースしても、プロセッサから全てライトされるので、リプレースが無駄に終わる。
【0008】 また、無駄なライトバックが生じる場合として、キャッシュエントリーが単にワークデータとして使用される場合がある。この場合、最終的に破棄してもよいデータであるにも拘らず、無駄なライトバックが発生する。
【課題を解決するための手段】
【0009】 本発明の目的は、無駄なリプレースや無駄なライトバックを防止するキャッシュメモリを提供することにある。
【0010】 上記課題を解決するため本発明のキャッシュメモリは、キャッシュの単位データを保持するキャッシュエントリーに対応させて、当該キャッシュエントリーが有効であるか否かを示すバリッドフラグと、当該キャッシュエントリーに対する書き込みがなされたか否かを示すダーティフラグとを保持するフラグ保持手段と、プロセッサから発行されたコマンドを保持するコマンド保持手段と、コマンド保持手段に保持されたコマンドに基づき、前記バリッドフラグおよびダーティフラグの少なくとも一方をキャッシュエントリーの状態に反して改変する改変手段とを備える。


【0004】
管理のための負荷を解消することができる。
【0019】 ここで、前記改変手段は、さらに、ダーティフラグのリセット指示付きメモリアクセス命令が実行されたことを検出する命令検出手段と、当該命令によってアクセスがなされたキャッシュエントリーに対してダーティフラグをリセットするフラグ書き換え手段とを備える構成としてもよい。
【0020】 ここで、前記改変手段は、さらに、バリッドフラグのリセット指示付きメモリアクセス命令が実行されたことを検出する命令検出手段と、当該命令によってアクセスがなされたキャッシュエントリーに対してバリッドフラグをリセットするフラグ書き換え手段とを備える構成としてもよい。
また、本発明のキャッシュメモリの制御方法についても上記と同様の手段、作用を有する。
【0021】 本発明のキャッシュメモリによれば、配列などのデータを書き込むためのキャッシュエントリーをキャッシュメモリ上に確保することができ、しかも、上書きされる運命にあるデータをメモリからキャッシュメモリへ無駄にロードすることを防止することができる。
また、テンポラリーなワークデータ等破棄される運命にあるデータを保持するキャッシュエントリーから無駄にライトバックすることを防止することができる。
【0022】 さらに、プロセッサは、前記アドレス範囲として、キャッシュメモリのラインサイズ及びライン境界のアドレスとは無関係に任意のアドレスから任意のアドレス(又は任意のサイズ)を指定することができる。つまり、プロセッサにおいてキャッシュメモリのラインサイズ及びライン境界のアドレスを管理する必要がないので、キャッシュメモリ管理のための負荷を解消することができる。
【発明の効果】
【0023】 本発明のキャッシュメモリによれば、プロセッサの指示に基づいて、配列などのデータを書き込むためのキャッシュエントリーをキャッシュメモリ上に確保することができ、しかも、上書きされる運命にあるデータをメモリからキャッシュメモリへ無駄にロードすることを防止することができる。また、テンポラリーなワークデータ等破棄される運命にあるデータを保持するキャッシュエントリーから無駄にライトバックすることを防止することができる。


本発明は、プロセッサのメモリアクセスを高速化するためのキャッシュメモリおよびその制御方法に関する。
近年のマイクロプロセッサでは、例えば、SRAM(Static Random Access Memory)等から成る小容量で高速なキャッシュメモリをマイクロプロセッサの内部、もしくはその近傍に配置し、データの一部をキャッシュメモリに記憶することによって、マイクロプロセッサのメモリアクセスを高速化させている。
コンピュータシステムでは、中央処理装置からキャッシュメモリへのリードアクセスまたはライトアクセスがミスヒットした場合に、主記憶装置から新たに読み出されたデータの一部が、エントリ(登録項目)としてキャッシュメモリの空きブロックに格納される。この時、空きブロックが存在しない場合には、複数のブロックのいずれか1つを選択し、選択されたブロックに格納されているエントリを主記憶装置に戻してブロック内を空き状態にし、この空きブロックに新たに読み出したデータを格納するエントリ置換処理が必要になる。上記エントリ置換処理では、最も以前に参照したデータを格納しているブロックを選択する手法、すなわち、LRU(Least Recently Used)デコード方式が一般的に採用されている。このLRUデコード方式によってキャッシュメモリの使用効率が向上し、その結果、マイクロプロセッサの実行速度が向上する。
マイクロプロセッサが処理するプログラムの中には、アクセス頻度は少ないものの、ひとたび起動された場合には高速に処理しなければならないような特殊な処理と、アクセス頻度は多いが、実行速度がそれほど要求されないような処理とが存在する。
そこで、これに対応するために例えば特許文献1等の従来技術では、キャッシュメモリにフリーズ機能を設けている。フリーズ機能は、アクセスは少ないものの、ひとたび起動された場合には高速に処理しなければならないようなプログラムを予めキャッシュメモリ内にコピーしておき、その領域を書き換え禁止にしておく機能である。この機能を有することで、コンピュータシステムは、必要な時にプログラムをキャッシュメモリから読み出して実行することができ、これにより実行時間が短縮する。また、パージ機能は、アクセス頻度は多いが、実行速度がそれほど要求されないようなプログラムやデータをキャッシュメモリ内に保存しておくことなく、その領域を解放する機能である。この機能を有することで、キャッシュメモリに余裕ができ、優先度の高い他のプログラムやデータをキャッシュメモリに取り込むことができ、これにより、キャッシュメモリの利用効率が向上し、総合的な実行時間が短縮する。
特許文献1:特開2000−200221号公報
しかしながら、フリーズ機能を使用してもパージ機能を使用しても、キャッシュミス発生によりリプレースする場合に無駄なリプレースをしたり、無駄なライトバックをする場合があるという問題がある。
例えば、無駄なリプレースが生じる場合として、プロセッサが配列要素を全てライトする場合がある。この場合、メモリから新たにデータをキャッシュメモリにリプレースしても、プロセッサから全てライトされるので、リプレースが無駄に終わる。
また、無駄なライトバックが生じる場合として、キャッシュエントリーが単にワークデータとして使用される場合がある。この場合、最終的に破棄してもよいデータであるにも拘らず、無駄なライトバックが発生する。
本発明の目的は、無駄なリプレースや無駄なライトバックを防止するキャッシュメモリを提供することにある。
上記課題を解決するため本発明のキャッシュメモリは、キャッシュの単位データを保持するキャッシュエントリーに対応させて、当該キャッシュエントリーが有効であるか否かを示すバリッドフラグと、当該キャッシュエントリーに対する書き込みがなされたか否かを示すダーティフラグとを保持するフラグ保持手段と、プロセッサから発行されたコマンドを保持するコマンド保持手段と、コマンド保持手段に保持されたコマンドに基づき、前記バリッドフラグおよびダーティフラグの少なくとも一方をキャッシュエントリーの状態に反して改変する改変手段とを備える。
前記改変手段は、キャッシュエントリーに対してタグとしてのアドレスを設定し、有効なデータを保持していない状態でバリッドフラグをセットする構成としてもよい。
この構成によれば、配列などのデータを書き込むためのキャッシュエントリーをキャッシュメモリ上に確保することができ、しかも、上書きされる運命にあるデータをメモリからキャッシュメモリへ無駄にロードすることを防止することができる。
また、前記改変手段は、プロセッサからの指定されたキャッシュエントリーに対してライトバックされていない書き換えられたデータを保持している状態でダーティフラグをリセットする。
この構成によれば、テンポラリーなワークデータ等破棄される運命にあるデータを保持するキャッシュエントリーから無駄にライトバックすることを防止することができる。
ここで、前記キャッシュメモリは、さらに、プロセッサから指定されたアドレス範囲を保持する保持手段と、保持されたアドレス範囲に属するデータを保持するキャッシュエントリーを特定する特定手段とを備え、前記改変手段は、特定されたキャッシュエントリーに対して前記バリッドフラグおよびダーティフラグの少なくとも一方を改変する構成としてもよい。
この構成によれば、プロセッサから指定されたアドレス範囲で、キャッシュメモリへの無駄なデータのロード又はメモリへの無駄なライトバックを防止することができる。
ここで、前記特定手段は、前記アドレス範囲の先頭アドレスがラインデータの途中を指す場合、当該先頭アドレスを、前記アドレス範囲に含まれる先頭のラインを指すスタートラインアドレスに変換する第1変換手段と、前記アドレス範囲の末尾アドレスがラインデータの途中を指す場合、当該末尾アドレスを、前記アドレス範囲に含まれる末尾のラインを指すエンドラインアドレスに変換する第2変換手段と、前記スタートラインアドレスからエンドラインアドレスまでの各ラインアドレスに対応するデータを保持するキャッシュエントリーがあるか否かを判定する判定手段と備える構成としてもよい。
この構成によれば、プロセッサは、前記アドレス範囲として、キャッシュメモリのラインサイズ及びライン境界のアドレスとは無関係に任意のアドレスから任意のアドレス(又は任意のサイズ)を指定することができる。つまり、プロセッサにおいてキャッシュメモリのラインサイズ及びライン境界のアドレスを管理する必要がないので、キャッシュメモリ管理のための負荷を解消することができる。
ここで、前記改変手段は、さらに、ダーティフラグのリセット指示付きメモリアクセス命令が実行されたことを検出する命令検出手段と、当該命令によってアクセスがなされたキャッシュエントリーに対してダーティフラグをリセットするフラグ書き換え手段とを備える構成としてもよい。
ここで、前記改変手段は、さらに、バリッドフラグのリセット指示付きメモリアクセス命令が実行されたことを検出する命令検出手段と、当該命令によってアクセスがなされたキャッシュエントリーに対してバリッドフラグをリセットするフラグ書き換え手段とを備える構成としてもよい。
また、本発明のキャッシュメモリの制御方法についても上記と同様の手段、作用を有する。
本発明のキャッシュメモリによれば、配列などのデータを書き込むためのキャッシュエントリーをキャッシュメモリ上に確保することができ、しかも、上書きされる運命にあるデータをメモリからキャッシュメモリへ無駄にロードすることを防止することができる。
また、テンポラリーなワークデータ等破棄される運命にあるデータを保持するキャッシュエントリーから無駄にライトバックすることを防止することができる。
さらに、プロセッサは、前記アドレス範囲として、キャッシュメモリのラインサイズ及びライン境界のアドレスとは無関係に任意のアドレスから任意のアドレス(又は任意のサイズ)を指定することができる。つまり、プロセッサにおいてキャッシュメモリのラインサイズ及びライン境界のアドレスを管理する必要がないので、キャッシュメモリ管理のための負荷を解消することができる。
本発明のキャッシュメモリによれば、プロセッサの指示に基づいて、配列などのデータを書き込むためのキャッシュエントリーをキャッシュメモリ上に確保することができ、しかも、上書きされる運命にあるデータをメモリからキャッシュメモリへ無駄にロードすることを防止することができる。また、テンポラリーなワークデータ等破棄される運命にあるデータを保持するキャッシュエントリーから無駄にライトバックすることを防止することができる。
(実施の形態1)
<全体構成>
図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を備える。
アドレスレジスタ20は、メモリ2へのアクセスアドレスを保持するレジスタである。このアクセスアドレスは32ビットであるものとする。同図に示すように、アクセスアドレスは、最上位ビットから順に、21ビットのタグアドレス、4ビットのセットインデックス(図中のSI)、5ビットのワードインデックス(図中のWI)を含む。ここで、タグアドレスはウェイにマッピングされるメモリ中の領域(そのサイズはセット数×ブロックである)を指す。この領域のサイズは、タグアドレスよりも下位のアドレスビット(A10〜A0)で定まるサイズつまり2kバイトであり、1つのウェイのサイズでもある。セットインデックス(SI)はウェイ0〜3に跨る複数セットの1つを指す。このセット数は、セットインデックスが4ビットなので16セットある。タグアドレスおよびセットインデックスで特定されるキャッシュエントリーは、リプレース単位であり、キャッシュメモリに格納されている場合はラインデータ又はラインと呼ばれる。ラインデータのサイズは、セットインデックスよりも下位のアドレスビットで定まるサイズつまり128バイトである。1ワードを4バイトとすると、1ラインデータは32ワードである。ワードインデックス(WI)は、ラインデータを構成する複数ワード中の1ワードを指す。アドレスレジスタ20中の最下位2ビット(A1、A0)は、ワードアクセス時には無視される。
メモリI/F21は、キャッシュメモリ3からメモリ2へのデータのライトバックや、メモリ2からキャッシュメモリ3へのデータのロード等、キャッシュメモリ3からメモリ2をアクセスするためのI/Fである。
デコーダ30は、セットインデックスの4ビットをデコードし、4つのウェイ0〜3に跨る16セット中の1つを選択する。
4つのウェイ0〜3は、同じ構成を有数する4つのウェイであり、4×2kバイトの容量を有する。各ウェイは、16個のキャッシュエントリーを有する。
図3に1つのキャッシュエントリーにおける詳細なビット構成を示す。同図のように、1つのキャッシュエントリーは、バリッドフラグV0〜V3、21ビットのタグ、128バイトのラインデータ、ダーティフラグD0〜D3を有する。
タグは21ビットのタグアドレスのコピーである。
ラインデータは、タグアドレスおよびセットインデックスにより特定されるブロック中の128バイトデータのコピーであり、32バイトの4つのサブラインからなる。
バリッドフラグV0〜V3は、4つのサブラインに対応し、サブラインが有効か否かを示す。
ダーティフラグD0〜D3は、4つのサブラインに対応し、そのサブラインにプロセッサから書き込みがあったか否か、つまりサブライン中にキャッシュされたデータが存在するが書き込みによりメモリ中のデータと異なるためメモリに書き戻すことが必要か否かを示す。
比較器32aは、アドレスレジスタ20中のタグアドレスと、セットインデックスにより選択されたセットに含まれる4つのタグ中のウェイ0のタグとが一致するか否かを比較する。比較器32b〜32cについても、ウェイ31b〜31dに対応すること以外は同様である。
アンド回路33aは、バリッドフラグと比較器32aの比較結果とが一致するか否かを比較する。この比較結果をh0とする。比較結果h0が1である場合は、アドレスレジスタ20中のタグアドレスおよびセットインデックスに対応するラインデータが存在すること、つまりウェイ0においてヒットしたことを意味する。比較結果h0が0である場合は、ミスヒットしたことを意味する。アンド回路33b〜33dについても、ウェイ31b〜31dに対応すること以外は同様である。その比較結果h1〜h3は、ウェイ1〜3でヒットしたかミスしたかを意味する。
オア回路34は、比較結果h0〜h3のオアをとる。このオアの結果をhitとする。hitは、キャッシュメモリにヒットしたか否かを示す。
セレクタ35は、選択されたセットにおけるウェイ0〜3のラインデータのうち、ヒットしたウェイのラインデータを選択する。
セレクタ36は、セレクタ35により選択された32ワードのラインデータにうち、ワードインデックスに示される1ワードを選択する。
デマルチプレクサ37は、キャッシュエントリにデータを書き込む際に、ウェイ0〜3の1つに書き込みデータを出力する。この書き込みデータはワード単位でよい。
制御部38は、キャッシュメモリ3の全体の制御を行う。特に、プロセッサからのコマンド及びアドレス指定に従って、Vフラグの改変と、Dフラグの改変とを行う。
<制御部の構成>
図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を備える。
コマンドレジスタ401は、プロセッサ1から直接アクセス可能なレジスタであり、プロセッサ1により書き込まれたコマンドを保持する。図6(c)に、コマンドレジスタ401にコマンドを書き込む命令の一例を示す。この命令は、通常の転送命令(mov命令)であり、ソースオペランドとしてコマンドを、デスティネーションオペランドとしてコマンドレジスタ(CR)401を指定している。図6(d)に、コマンドフォーマットの一例を示す。このコマンドフォーマットは、Vフラグ設定コマンド用の2ビットのフィールドと、Dフラグ設定コマンド用の2ビットのフィールドと、サブライン指定用の4ビットのフィールドとを含む。
例えば、Vフラグ設定コマンドは、「10」であればV=0に設定することを指示し(Vリセットコマンド)、「11」であればV=1に設定することを指示し(Vセットコマンド)、「00」であれば無効(ノーオペレーション)を意味する。Dフラグ設定コマンドも同様である。サブライン指定フィールドは、サブラインを個別に指定するためのフィールドであり、個別指定がない場合はライン(全サブライン)指定であるものとする。
スタートアドレスレジスタ402は、プロセッサ1から直接アクセス可能なレジスタであり、プロセッサ1により書き込まれたスタートアドレスを保持する。このスタートアドレスはCフラグを設定すべきアドレス範囲の開始位置を示す。図6(a)に、スタートアドレスレジスタ402にスタートアドレスを書き込む命令の一例を示す。この命令も、図6(c)と同様に通常の転送命令(mov命令)である。
サイズレジスタ403は、プロセッサ1から直接アクセス可能なレジスタであり、プロセッサ1により書き込まれたサイズを保持する。このサイズは、スタートアドレスからのアドレス範囲を示す。図6(b)に、サイズレジスタ403にサイズを書き込む命令の一例を示す。この命令も、図6(c)と同様に通常の転送命令(mov命令)である。なお、サイズの単位は、バイト数であっても、ライン数(キャッシュエントリー数)であってもよく、予め定められた単位であればよい。
加算器404は、スタートアドレスレジスタ402に保持されたスタートアドレスとサイズレジスタ403に保持されたサイズとを加算する。加算結果は、アドレス範囲の終了位置を指すエンドアドレスである。加算器404は、サイズがバイト数指定の場合はバイトアドレスとして加算し、サイズがライン数指定の場合はラインアドレスとして加算すればよい。
スタートアライナ405a、405bは、スタートアドレスをライン境界の位置に調整する。スタートアライナ405aはエンドアドレスの方向に、405bはエンドアドレスとは反対の方向に調整する。この調整によりプロセッサ1はラインサイズ及びライン境界とは無関係に任意のアドレスをスタートアドレスとして指定することができる。
エンドアライナ406a、406bは、エンドアドレスをライン境界の位置に調整する。エンドアライナ4065aはスタートアドレスの方向に、406bはステートアドレスとは反対の方向に調整する。この調整によりプロセッサ1はラインサイズ及びライン境界とは無関係に任意の大きさを上記サイズとして指定することができる。
図7に、スタートアライナ405a、405b及びエンドアライナ406a、406bの説明図を示す。同図において、プロセッサ1から指定されたスタートアドレスはラインNの途中の任意の位置を指す。スタートアライナ405aは、次のライン(N+1)の先頭を指すよう調整し、調整後のアドレスをアラインスタートアドレスaとして出力する。スタートアライナ405bは、スタートアドレスのデータを含むラインNの先頭を指すよう調整し、調整後のアドレスをアラインスタートアドレスbとして出力する。アラインスタートアドレスが指すラインをスタートラインと呼ぶ。
また、エンドアドレスはラインMの途中の任意の位置を指す。エンドアライナ406aは、直前のライン(M−1)の先頭を指すよう調整し、調整後のアドレスをアラインエンドアドレスaとして出力する。エンドアライナ406bは、エンドアドレスのデータを含むラインMの先頭を指すよう調整し、調整後のアドレスをアラインエンドアドレスbとして出力する。アラインエンドアドレスが指すラインをエンドラインと呼ぶ。
同図のように、スタートアライナ405a及びエンドアライナ406aはライン単位で内側アラインを行う。スタートアライナ405b及びエンドアライナ406bはライン単位で外側アラインを行う。さらに、ライン単位の外側アラインの後、さらに、サブライン単位の外側アラインと内側アラインが可能である。
フラグ書換部407は、スタートラインからエンドラインまで、コマンドに従ってVフラグ又はDフラグの値を設定する。その際、スタートライン及びエンドラインが内側アラインか外側アラインかはコマンドに応じて選択される。
<フラグ改変処理>
図8は、フラグ書換部407におけるフラグ改変処理の一例を示すフローチャートである。同図では、DリセットコマンドとVセットコマンドとを示している。
同図において、コマンドレジスタ401にDリセットコマンドが書き込まれている場合(S80)、フラグ書換部407は、スタートアライナ405a、405b、エンドアライナ406a、406bの出力の中から内側アラインによるスタートラインとエンドラインとを選択する(S81)。ここで内側アラインを選択しているのは、ラインNとラインMにおけるスタートアドレスとエンドアドレスの外側のデータは、プロセッサ1により破棄されるとは限らないからである。
さらに、フラグ書換部407は、スタートラインからエンドラインまでの各ラインアドレスを順に出力しながらループ1の処理(S82〜S86)を行う。フラグ書換部407は、各ラインについて同じ処理を行うので、ここでは1ライン分の処理について説明する。
すなわち、フラグ書換部407は、キャッシュメモリ3がプロセッサ1からアクセスされていない間に、ラインアドレスをアドレスレジスタ20に出力し(S83)、アドレスレジスタ20のタグアドレスとキャッシュエントリーのタグとを比較器32a〜32dに比較させ、ヒットするかどうかを判定する(S84)。さらにフラグ書換部407は、ヒットした場合には、ヒットしたキャッシュエントリーに対してD0〜D3フラグを0にリセットし(S85)、ミスヒットした場合には、キャッシュメモリにエントリーされていないのでなにもしない。
このように、スタートラインからエンドラインまでの各ラインについて、キャッシュメモリ3にエントリーされている場合には、D0〜D3フラグに0が設定される。フラグ書換部407は、ループ1の終了後、コマンドレジスタ401のコマンドをクリアする(S98)。これにより、テンポラリーなワークデータ等破棄される運命にあるデータを保持するキャッシュエントリーから無駄にライトバックすることを防止することができる。
また、図8において、コマンドレジスタ401にVセットコマンドが書き込まれている場合(S87)、フラグ書換部407は、スタートアライナ405a、405b、エンドアライナ406a、406bの出力の中から外側アラインによるスタートラインとエンドラインとを選択する(S88)。ここで外側アラインを選択しているのは、内側アラインではスタートアドレスからエンドアドレスまでのサイズを確保できないからである。
さらに、フラグ書換部407は、スタートラインからエンドラインまでの各ラインアドレスを順に出力しながらループ2の処理(S89〜S97)を行う。フラグ書換部407は、各ラインについて同じ処理を行うので、ここでは1ライン分の処理について説明する。
すなわち、フラグ書換部407は、キャッシュメモリ3がプロセッサ1からアクセスされていない間に、ラインアドレスをアドレスレジスタ20に出力し(S90)、アドレスレジスタ20のタグアドレスとキャッシュエントリーのタグとを比較器32a〜32dに比較させ、ヒットするかどうかを判定する(S91)。さらにフラグ書換部407は、ヒットしなかった場合には、当該ラインアドレスに対応するセット内の4つのウェイからLRU方式でリプレース対象のウェイを1つ選択し(S92)、選択されたウェイのダーティフラグD0〜D3の論理和が1であるか否かを判定する(S93)。この論理和が1、つまりダーティであると判定された場合、フラグ書換部407は、ダーティなサブラインのみをライトバックする(S94)。上記の論理和が1でないつまりダーティでないと判定された場合、又はダーティなサブラインのライトバックの後に、フラグ書換部407は、
キャッシュエントリーにメモリからデータをロードすることなく、キャッシュエントリーにラインアドレスをタグとして設定し(S95)、バリッドフラグV0〜V3を1にセットする(S96)。このようにして、有効なデータを保持していないがV0〜V3=1と設定された1ライン分のキャッシュエントリーが確保される。
さらに、フラグ書換部407は、ループ1の終了後、コマンドレジスタ401のコマンドをクリアする(S98)。
これにより、配列などのデータを書き込み用のキャッシュエントリーをキャッシュメモリ上に確保し、かつ、無駄なライトバックを防止することができる。
以上説明してきたように、本実施の形態におけるキャッシュメモリによれば、Dリセットコマンドにより、破棄される運命にあるデータを保持するキャッシュエントリーから無駄にライトバックすることを防止することができる。また、Vセットコマンドにより、配列などのデータを書き込み用のキャッシュエントリーをキャッシュメモリ上に確保し、かつ、無駄なライトバックを防止することができる。
なお、上記実施の形態では、DリセットコマンドとVセットコマンドについて説明したが、Vリセットコマンドについては、図8に示したS87〜S98において、ステップS95を削除し、ステップS96においてV0〜V3を0にリセットすることにより実現することができる。これによれば、無駄なライトバックを防止してキャッシュエントリーを開放することができる。
また、Dセットコマンドは、図8のS80〜S86と同様に実行可能ではあるが、プロセッサ1からストア命令によりデータを書き込めばDフラグがセットされること、Dフラグのセットによりライトバック動作が発生することを考えれば、あまり実用的とはいえない。しかし、キャッシュメモリのテスト動作や性能の評価や検証等に利用することができる。
<変形例>
なお、本発明のキャッシュメモリは、上記の実施の形態の構成に限るものではなく、種々の変形が可能である。以下、変形例のいくつかについて説明する。
(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等他のサイズでもよい。その場合、各キャッシュエントリーは、サブラインと同数のバリッドフラグおよびダーティフラグをそれぞれ保持すればよい。
(実施の形態2)
実施の形態1では、Vフラグの改変とDフラグの改変とを行う構成について説明したが、本実施の形態では、これ以上使用(書き込み及び読み出し)するかしないかを示すW(ウィーク)フラグを有するキャッシュメモリにおいてWフラグを改変する構成について説明する。
<キャッシュメモリの構成>
図9は、本発明の実施の形態2におけるキャッシュメモリの構成を示すブロック図である。同図のキャッシュメモリは、図2の構成と比較して、ウェイ31a〜31dの代わりにウェイ131a〜131dを備える点と、制御部38の代わりに制御部138を備える点とが異なっている。以下、同じ点は説明を省略して、異なる点を中心に説明する。
ウェイ131aは、ウェイ31aと比べて、各キャッシュエントリー中にWフラグ及びUフラグが追加されている点が異なる。ウェイ131b〜131dも同様である。
図10に、キャッシュエントリーのビット構成を示す。1つのキャッシュエントリーは、バリッドフラグV0〜V3、21ビットのタグ、128バイトのラインデータ、ウィークフラグW、使用フラグU及びダーティフラグD0〜D3を保持する。
このうち、ウィークフラグWは、プロセッサからのアクセスに関しては、これ以上使用するか否かを意味し、キャッシュメモリにおけるリプレース制御に関しては、他のキャッシュエントリーよりも真っ先に追い出してもよい最弱のリプレース対象を意味する。このように、ウィークフラグWは二つの意味を有することから、クリーニング処理とリプレース処理との2つの処理で参照される。
使用フラグUは、そのキャッシュエントリーにアクセスがあったか否かを示し、LRU方式におけるミスヒットによるリプレースに際して4つのウェイのキャッシュエントリー間におけるアクセス順序データの代わりに用いられる。より正確には、使用フラグUの1は、アクセスがあったことを、0はないことを意味する。ただし、1つのセット内の4つウェイの使用フラグが全て1になれば、0にリセットされる。別言すれば、使用フラグUは、アクセスされた時期が古いか新しいか2つの相対的な状態を示す。つまり、使用フラグUが1のキャッシュエントリーは、使用フラグが0のキャッシュエントリーよりも新しくアクセスされたことを意味する。
制御部138は、制御部38と比べて、Wフラグを設定する点と、LRU方式におけるアクセス順序情報の代わりに使用フラグUを用いる点とが異なる。
<制御部の構成>
図11は、制御部138の構成を示すブロック図である。同図の制御部138は、制御部38と比較して、フラグ更新部39、リプレース部40、フラグ改変部41の代わりにフラグ更新部139、リプレース部140、フラグ改変部141を備える点が異なる。
フラグ更新部139は、フラグ更新部39と同様にVフラグ、Dフラグを更新することに加えて、キャッシュメモリがアクセスされたときに使用フラグUの更新処理を行う。
リプレース部140は、通常のLRU方式ではなく、使用フラグUをアクセス順序とする擬似的なLRU方式によりリプレースを行う。ただし、リプレース処理に際してW=1のキャッシュエントリーは真っ先にリプレース対象として選択する。
フラグ改変部141は、プロセッサ1からのコマンドに応じてウィークフラグWを設定する。プロセッサ1は、もはや使用(書き込み及び読み出し)をしないキャッシュエントリーについてウィークフラグの設定を指示するコマンドをキャッシュメモリ3に対して発行する。W=1のキャッシュエントリーは、キャッシュミス時には使用フラグUの値に関わらず、真っ先にリプレース対象となる。また、W=1のキャッシュエントリーがダーティであればクリーニング処理の対象となる。
<使用フラグUの説明>
図12は、フラグ更新部39による使用フラグUの更新例を示す。同図の上段、中断、下段は、ウェイ0〜3に跨るセットNを構成する4つのキャッシュエントリーを示している。4つのキャッシュエントリー右端の1又は0は、それぞれ使用フラグの値である。この4つの使用フラグUをU0〜U3と記す。
同図上段では(U0〜U3)=(1、0、1、0)であるので、ウェイ0、2のキャッシュエントリーはアクセスがあったことを、ウェイ1、3のキャッシュエントリーはアクセスがないことを意味する。
この状態で、メモリアクセスがセットN内のウェイ1のキャッシュエントリーにヒットした場合、同図中段に示すように、(U0〜U3)=(1、1、1、0)に更新される。つまり、実線に示すようにウェイ1の使用フラグU1が0から1に更新される。
さらに、同図中段の状態で、メモリアクセスがセットN内のウェイ3のキャッシュエントリーにヒットした場合、同図下断に示すように、(U0〜U3)=(0、0、0、1)に更新される。つまり、実線に示すようにウェイ3の使用フラグU1が0から1に更新される。加えて、破線に示すようにウェイ3以外の使用フラグU0〜U2が1から0に更新される。これにより、ウェイ3のキャシュエントリーが、ウェイ0〜2の各キャッシュエントリーよりも新しくアクセスされたことを意味することになる。
リプレース部140は、キャッシュミス時にW=1のキャッシュエントリーが存在しなければ、使用フラグに基づいてリプレース対象のキャッシュエントリーを決定してリプレースを行う。例えば、フラグ更新部39は、図5上段では、ウェイ1とウェイ3の何れかをリプレース対象と決定し、図5中段ではウェイ3をリプレース対象と決定し、図5下段ではウェイ0〜2の何れかをリプレース対象と決定する。
<ウィークフラグWの説明>
図13(a)ウィークフラグが存在しないと仮定した場合の比較例であり、キャッシュエントリーがリプレースされる様子を示す図である。同図においても、図12と同様にウェイ0〜3に跨るセットNを構成する4つのキャッシュエントリーを示している。、4つのキャッシュエントリー右端の1又は0は、それぞれ使用フラグの値である。また、データEのみアクセス頻度の低いデータを、データA、B、C、Dはアクセス頻度の高いデータとする。
同図(a)の第1段目の状態で、プロセッサ1がデータEにアクセスすると、キャッシュミスが発生する。このキャッシュミスにより、例えば、U=0のキャッシュエントリーの中からアクセス頻度の高いデータCのキャッシュエントリーがアクセス頻度の低いデータEにリプレースされ、第2段目の状態となる。
第2段目の状態で、プロセッサ1がデータCにアクセスすると、キャッシュミスが発生する。このキャッシュミスにより、U=0のキャッシュエントリーであるアクセス頻度の高いデータDのキャッシュエントリーがアクセス頻度の高いデータCにリプレースされ、第3段目の状態となる。
第3段目の状態で、プロセッサ1がデータDにアクセスすると、キャッシュミスが発生する。このキャッシュミスにより、例えば、アクセス頻度の高いデータCのキャッシュエントリーがアクセス頻度の高いデータDにリプレースされ、第3段目の状態となる。
同様に、第4段目でも、使用頻度の低いデータEはリプレース対象として選択されないで、キャッシュメモリーに残っている。
第5段目の状態で、使用頻度の低いデータEは最も古い(U=0)ことから、リプレース対象として選択されて、追い出される。
このように、擬似LRU方式において(通常のLRU方式においても)、アクセス頻度の低いデータEによって、4ウェイの場合は最悪4回のキャッシュミスを誘発する場合がある。
図13(b)は、リプレース処理におけるウィークフラグWの役割を示す説明図である。
同図(b)の第1段目の状態(同図(a)の第1段目と同じ)で、プロセッサ1がデータEにアクセスすると、キャッシュミスが発生する。このキャッシュミスにより、例えば、U=0のキャッシュエントリーの中からアクセス頻度の高いデータCのキャッシュエントリーがアクセス頻度の低いデータEにリプレースされる。このとき、プロセッサ1は、データEのキャッシュエントリーにウィークフラグWを1に設定するものとする。これにより、次のキャッシュミス時にデータEのキャッシュエントリーが真っ先に追い出され、第2段目の状態となる。
第2段目の状態で、プロセッサ1がデータCにアクセスすると、キャッシュミスが発生する。このキャッシュミスにより、W=1のキャッシュエントリーであるアクセス頻度の低いデータEのキャッシュエントリーがリプレース対象として選択され、アクセス頻度の高いデータCにリプレースされ、第3段目の状態となる。
このように、ウィークフラグWを設けることにより、アクセス頻度の低いデータによるキャッシュミスの誘発を低減することができる。
<Uフラグ更新処理>
図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つを選択する。
さらに、リプレース部140は、当該セットにおける選択されたウェイのキャッシュエントリーを対象にリプレースし(ステップS96)、リプレース後に当該キャッシュエントリーの使用フラグUを1に、ウィークフラグWを0初期化する(ステップS97)。なお、このときバリッドフラグV、ダーティフラグDは、それぞれ1、0に初期化される。
このように、W=1のウェイが存在しない場合、リプレース対象は、使用フラグUが0のキャッシュエントリーの中から1つ選択される。
また、W=1のウェイが存在する場合、リプレース対象は、使用フラグUが0であると1であるとを問わず、W=1のウェイのキャッシュエントリーから1つ選択される。これにより図13(a)(b)に示したように、アクセス頻度の低いデータがキャッシュメモリに残ることによるキャッシュミスの誘発を低減することができる。
<フラグ改変部141の構成>
図16は、フラグ改変部141の構成を示すブロック図である。同図の構成は、図5に示したフラグ改変部41と比較して、フラグ書換部407の代わりにフラグ書換部407aを備える点が異なっている。
フラグ書換部407aは、フラグ書換部407の機能に加えて、Wフラグの改変と使用フラグUの改変とを行う点が異なっている。そのため、コマンドレジスタ401には、Wフラグの設定を指示するWコマンド、Uフラグの設定を指示するUコマンドがプロセッサ1によって設定可能になっている。図17に、これらのコマンドフォーマットの一例を示す。同図のコマンドフォーマットは、図6(d)に示したコマンドフォーマットに対してWコマンド及びUコマンドのフィールドが追加されている。Wコマンド及びUコマンドの内容はDコマンドやVコマンドと同様である。
<Wフラグ設定処理>
図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に設定される。
<Uフラグ設定処理>
フラグ書換部407aは、コマンドレジスタ401にUフラグ設定コマンドが保持されている場合、当該コマンドに従ってUフラグを設定する。この処理は、図18においてWフラグをUフラグと読み替えることにより、Wフラグ設定処理と全く同様に実行される。
以上説明してきたように、本実施の形態におけるキャッシュメモリによれば、Wフラグを設定することにより、W=1のキャッシュエントリーをキャッシュミス時には最古のキャッシュエントリとして真っ先にリプレース対象とすることができる。また、使用フラグUの値は1ビットだけであるがアクセス順序が古いか新しいかをしめすので、Uフラグ設定処理によって、スタートラインからエンドラインまでの各ラインについてアクセス順序を設定することができる。例えば、プロセッサ1は、キャッシュメモリ3に残しておきたいアドレスのデータをアドレス範囲として指定してU=1を設定するUフラグ設定コマンドを発行し、
以上説明してきたように、本実施の形態におけるキャッシュメモリによれば、Wフラグを設定することにより、W=1のキャッシュエントリーをキャッシュミス時には最古のキャッシュエントリとして真っ先にリプレース対象とすることができる。また、使用フラグUの値は1ビットだけであるがアクセス順序が古いか新しいかをしめすので、Uフラグ設定処理によって、スタートラインからエンドラインまでの各ラインについてアクセス順序を設定することができる。例えば、プロセッサ1は、キャッシュメモリ3に残しておきたいアドレスのデータをアドレス範囲として指定してU=1を設定するUフラグ設定コマンドを発行すればよい。逆に、キャッシュメモリ3か追い出してもよいデータをアドレス範囲として指定してU=0を設定するUフラグ設定コマンドを発行すればよい。
<変形例>
(1)W=1のキャッシュエントリーは真っ先にリプレース対象とされるが、制御部は、リプレースされるまでの間に、ダーティであればクリーニング(ライトバック)を行ってもよい。
(2)図6(a)(b)(c)に示した各命令は、コンパイラによりプログラム中に挿入してもよい。その際、コンパイラは、例えば配列データの書き込みや、圧縮動画データをデコードする際のブロックデータの書き込み等、これ以上書き込みをしないプログラム位置に、上記各命令を挿入するようにすればよい。
本発明は、メモリアクセスを高速化するためのキャッシュメモリに適しており、例えば、オンチップキャッシュメモリ、オフチップキャッシュメモリ、データキャッシュメモリ、命令キャッシュメモリ等に適している。
本発明の実施の形態1におけるプロセッサ、キャッシュメモリ、メモリを含むシステムの概略構成を示すブロック図である。 キャッシュメモリの構成例を示すブロック図である。 キャッシュエントリーの詳細なビット構成を示す図である。 制御部の構成を示すブロック図である。 フラグ改変部の構成例を示すブロック図である。 (a)スタートアドレスレジスタにスタートアドレスを書き込む命令の一例を示す。(b)サイズレジスタにサイズを書き込む命令の一例を示す。(c)コマンドレジスタにコマンドを書き込む命令の一例を示す。(d)コマンドの一例を示す。 スタートアライナ及びエンドアライナの説明図である。 フラグ書換部407におけるフラグ改変処理の一例を示すフローチャートである。 本発明の実施の形態2におけるキャッシュメモリの構成を示すブロック図である。 キャッシュエントリーのビット構成を示す。 制御部の構成を示すブロック図である。 フラグ更新部による使用フラグUの更新例を示す。 (a)ウィークフラグが存在しない場合にキャッシュエントリーがリプレースされる様子を示す図である。(b)リプレース処理におけるウィークフラグWの役割を示す説明図である。 リプレース部におけるUフラグ更新処理を示すフローチャートである。 リプレース部におけるリプレース処理を示すフローチャートである。 フラグ改変部の構成を示すブロック図である。 コマンドフォーマットの一例を示す。 フラグ書換部におけるWフラグ設定処理の一例を示すフローチャートである。
符号の説明
1 プロセッサ
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. 前記改変手段は、メモリからデータをロードすることなく、キャッシュエントリーに対してタグとしてのアドレスを設定しバリッドフラグをセットする
    ことを特徴とする請求項1記載のキャッシュメモリ。
  3. 前記改変手段は、キャッシュエントリーに対してライトバックされていない書き換えられたデータを保持している状態でダーティフラグをリセットする
    ことを特徴とする請求項2記載のキャッシュメモリ。
  4. 前記キャッシュメモリは、さらに、
    プロセッサから指定されたアドレス範囲を保持する保持手段と、
    保持されたアドレス範囲に属するデータを保持するキャッシュエントリーを特定する特定手段とを備え、
    前記改変手段は、特定されたキャッシュエントリーに対して前記バリッドフラグおよびダーティフラグの少なくとも一方を改変する
    ことを特徴とする請求項2又は3記載のキャッシュメモリ。
  5. 前記特定手段は、
    前記アドレス範囲の先頭アドレスがラインデータの途中を指す場合、当該先頭アドレスを、前記アドレス範囲に含まれる先頭のラインを指すスタートラインアドレスに変換する第1変換手段と、
    前記アドレス範囲の末尾アドレスがラインデータの途中を指す場合、当該末尾アドレスを、前記アドレス範囲に含まれる末尾のラインを指すエンドラインアドレスに変換する第2変換手段と、
    前記スタートラインアドレスからエンドラインアドレスまでの各ラインアドレスに対応するデータを保持するキャッシュエントリーがあるか否かを判定する判定手段と
    を備えることを特徴とする請求項4記載のキャッシュメモリ。
  6. 前記改変手段は、
    ダーティフラグのリセット指示付きメモリアクセス命令が実行されたことを検出する命令検出手段と、
    当該命令によってアクセスがなされたキャッシュエントリーに対してダーティフラグをリセットするフラグ書き換え手段と
    を備えることを特徴とする請求項1記載のキャッシュメモリ。
  7. 前記改変手段は、
    バリッドフラグのリセット指示付きメモリアクセス命令が実行されたことを検出する命令検出手段と、
    当該命令によってアクセスがなされたキャッシュエントリーに対してバリッドフラグをリセットするフラグ書き換え手段と
    を備えることを特徴とする請求項1記載のキャッシュメモリ。
  8. キャッシュの単位データを保持するキャッシュエントリーに対応させて、当該キャッシュエントリーが有効であるか否かを示すバリッドフラグと、当該キャッシュエントリーに対する書き込みがなされたか否かを示すダーティフラグとを有するキャッシュメモリの制御方法であって、
    プロセッサの指示に基づき、メモリからデータをロードすることなく、キャッシュエントリーに対してタグとしてのアドレスを設定しバリッドフラグをセットするステップと、
    プロセッサの指示に基づき、キャッシュエントリーに対してライトバックされていない書き換えられたデータを保持している状態でダーティフラグをリセットするステップと
    を有することを特徴とする制御方法。
JP2005516832A 2003-12-22 2004-12-21 キャッシュメモリ及びその制御方法 Expired - Fee Related JP4008947B2 (ja)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20070093452A (ko) 2005-04-08 2007-09-18 마쯔시다덴기산교 가부시키가이샤 캐시 메모리 시스템 및 그 제어 방법
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
US10740260B2 (en) 2016-05-12 2020-08-11 Lg Electronics Inc. Cache self-clean engine
CN107992433A (zh) * 2017-12-19 2018-05-04 北京云知声信息技术有限公司 二级缓存检测方法及装置

Family Cites Families (11)

* Cited by examiner, † Cited by third party
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

Also Published As

Publication number Publication date
KR100837479B1 (ko) 2008-06-12
EP1698978A4 (en) 2008-11-05
TW200534096A (en) 2005-10-16
KR20060086968A (ko) 2006-08-01
EP1698978A1 (en) 2006-09-06
US7454575B2 (en) 2008-11-18
WO2005066796A1 (ja) 2005-07-21
US20070143548A1 (en) 2007-06-21
CN100517273C (zh) 2009-07-22
JP4008947B2 (ja) 2007-11-14
CN1898654A (zh) 2007-01-17

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