説明

キャッシュメモリおよびキャッシュシステム

【課題】キャッシュメモリの面積の増大を抑制しつつ、高速化する。
【解決手段】キャッシュメモリ2はタグメモリ103と、第1のダーティビットメモリ106と、有効ビットメモリ107と、データメモリ105と、を含む複数のキャッシュラインを有する複数のウエイを備える。また、キャッシュメモリ2は、前記キャッシュラインを特定するためのラインインデックスメモリ101を備える。また、キャッシュメモリ2は、前記ウエイを特定する第1のビットデータおよび前記ラインインデックスを特定する第2のビットデータを記憶するローメモリ202と、前記データメモリへのバイト単位のライトに対応したビット単位の第2のダーティビットを記憶する第2のダーティビットメモリ203と、登録された順番を規定するFIFO情報を記憶するFIFOメモリ204と、を含む複数のラインを有するDBLBシステム201と、を備える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、ライトバック方式のキャッシュメモリおよびキャッシュシステムに関する。
【背景技術】
【0002】
従来、通常のライトバック方式のキャッシュシステムでは、キャッシュメモリに書き込んだデータが外部メモリに反映されていることを保証するために、フラッシュ命令を実行する。フラッシュ命令は、指定されたキャッシュラインのダーティビットを調べ、ダーティビットがダーティだった場合には、キャッシュメモリのデータを外部メモリへライトバックする。フラッシュ命令が連続して実行されると、コアは前のライトバックが完了するまで次のフラッシュ命令を実行することが出来ない。
【0003】
そこで、キャッシュメモリがコアの演算処理などと並行して、すでにダーティビットがダーティになっているキャッシュラインを自動でライトバックする方法もある。
【0004】
しかし、この方法では、通常のキャッシュシステムはキャッシュライン単位でしかダーティビットをもっていないため、まだクリーンなバイトがあっても自動でライトバックを行ってしまい、バンド幅を無駄に消費する可能性があった。
【0005】
このような問題に対し、例えばラインの1/2、1/4などの単位でダーティビットを管理するといった方法が考えられる。しかし、その場合、ダーティビットのビット数が膨大になってしまい、キャッシュメモリの面積が大きくなってしまうという問題があった。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開平9−259036
【発明の概要】
【発明が解決しようとする課題】
【0007】
面積の増大を抑制しつつ、高速化することが可能なキャッシュシメモリを提供する。
【課題を解決するための手段】
【0008】
本発明の実施例に従ったキャッシュメモリは、タグアドレスを記憶するタグメモリと、第1のダーティビットを記憶する第1のダーティビットメモリと、有効ビットを記憶する有効ビットメモリと、データを記憶するデータメモリ105と、を含む複数のキャッシュラインを有する複数のウエイを備える。また、キャッシュメモリは、前記キャッシュラインを特定するためのラインインデックスを記憶するラインインデックスメモリを備える。また、キャッシュメモリは、前記ウエイを特定する第1のビットデータおよび前記ラインインデックスを特定する第2のビットデータを記憶するローメモリと、前記データメモリへのバイト単位のライトに対応したビット単位の第2のダーティビットを記憶する第2のダーティビットメモリと、登録された順番を規定するFIFO情報を記憶するFIFOメモリと、を含む複数のラインを有するDBLBシステムと、を備える。キャッシュメモリは、前記第2のダーティビットに基づいて、対応するデータメモリのキャッシュラインをライトバックさせる。
【図面の簡単な説明】
【0009】
【図1】本発明に係るキャッシュシステム100の構成例を示す図。
【図2】キャッシュシメモリ2の構成の一例を示す図。
【図3】DBLB管理部201の構成の一例を示す図。
【図4】DBLB管理部201のローメモリ202の構成の一例を示す図。
【図5】コア1からキャッシュメモリ2にライトが要求され、要求されたアドレスがキャッシュメモリ2にヒットした場合の例を示す図。
【図6】コア1からキャッシュメモリ2にアクセスするパイプライン処理と、DBLB管理部201が動作するパイプライン処理との一例を示す図。
【図7】コア1からキャッシュメモリ2にアクセスするパイプライン処理と、DBLB管理部201が動作するパイプライン処理との他の例を示す図。
【図8】キャッシュメモリ2でヒットしたキャッシュラインが、DBLB管理部201を検索しても存在しない場合の動作の一例を示す図。
【図9】コア1からキャッシュメモリ2にライトアクセスする時、キャッシュミスする場合における、DBLB管理部201の動作の一例を示す図。
【図10】コア1からキャッシュメモリ2にアクセスするパイプライン処理と、DBLB管理部201が動作するパイプライン処理とのさらに他の例を示す図。
【図11】キャッシュミスした場合に、追い出すラインインデックスとWayを決定したとき、DBLB管理部201のローメモリ202にヒットする場合の例を示す図。
【図12】本発明のキャッシュメモリ2の動作の一例を示すフローチャート。
【発明を実施するための形態】
【0010】
以下、本発明の実施例について図面に基づいて説明する。
図1は、本発明の実施例に係るキャッシュシステム100の構成例を示す図である。キャッシュシステム100は、コア1と、キャッシュメモリ2と、外部メモリ3と、バス4、5と、を備える。
【0011】
コア1は、フラッシュ命令、ライトアクセス指令、リードアクセス命令等のソフトウェア命令を実行する。キャッシュメモリ2は、バス4を介して、コア1に接続されている。外部メモリ3は、バス5を介して、キャッシュメモリ2に接続されている。
【0012】
図2は、キャッシュシメモリ2の構成例を示す図である。キャッシュメモリ2は通常、下位レベルの記憶装置より小容量で高速なSRAMを用いて構成される。キャッシュメモリ2は、データ本体の一部とそのアドレス、フラグなどの属性情報を固定容量のメモリに格納する構造で、データ構造、ライン入替え、データ更新方式などに多数のアーキテクチャが存在する。
キャッシュメモリ2は、複数のキャッシュラインを有する複数のWayと、キャッシュラインを特定するためのラインインデックスを記憶するラインインデックスメモリ101と、LRU(Least Recently Used)メモリ102と、を備える。図2のキャッシュメモリ2は、4−Way Set Associative方式の、4セットタグにより構成されるデータ格納構造を有する。各Wayは、タグアドレスTagを記憶するタグメモリ103と、ダーティビットDを記憶するダーティビットメモリ106と、有効ビットVを記憶する有効ビットメモリ107と、256バイトのデータを記憶するデータメモリ105と、を有する。
【0013】
ここで、キャッシュメモリ2のキャッシュサイズを例えば128KBとする。キャッシュメモリ2は、128のキャッシュラインから構成される。タグメモリ103には、32ビットのライン単位アドレスの上位ビット[31:15](タグアドレス部)である17ビットのタグアドレスTagが格納されている。キャッシュメモリ2は、コア1からアクセス要求があると、検索エントリアドレスのタグアドレス部と、タグメモリ103に記憶されたタグアドレスTagとを比較し、キャッシュのヒットを判定する。
【0014】
キャッシュラインの入替え(リフィル)は、該当エントリアドレスの全キャッシュラインにデータが格納されていて、且つ、同一エントリ新規タグアドレスが入力されてキャッシュミスした(ヒットしなかった)場合に発生する。この場合、どのキャッシュラインを追い出して新規アドレスと入れ替えるかは、例えばLRUアルゴリズムが用いられる。LRUアルゴリズムは、最も古くアクセスされたキャッシュラインをリフィルする方法である。
【0015】
さらに、本発明のキャッシュメモリ2は、DBLB(Dirty Bit Look−Up Block)管理部201を備える。図3は、DBLB管理部201の構成例を示す図である。DBLB管理部201は、該当するキャッシュラインを認識するためのデータRowを記憶するローメモリ202と、データメモリ105の全バイト毎のダーティビットを記録するダーティビットメモリ203と、FIFOメモリ204と、を有する。ダーティビットメモリ203のダーティビットは、データメモリ105へのライト(書き込み)に対応したバイト単位のビット情報である。
【0016】
さらに、DBLB管理部201は、DBLBが溢れた時の追い出し対象のキャッシュラインを決めるアルゴリズムとして、例えばFIFO(First In First Out)を実現する。FIFOメモリ204は、そのラインが登録された順番を規定するFIFO情報を記憶する。例えば、8エントリのDBLB構造において、FIFO情報は3ビットである。なお、入れ替え方式は、エントリ間の入れ替え優先順位を決められれば良いので、他の方式、例えばLRU方式でも構わない。
【0017】
ローメモリ202のデータRowは、Wayを特定するビットデータと、ラインインデックスを特定するビットデータである。ここでは、Way0〜Way4を示す2ビットと、ラインインデックス0〜127を示す7ビットと、の計9ビットの情報を記憶する。
データRowにより、あるキャッシュラインのデータと該当するDBLBシステムのラインが対応づけられる。
【0018】
ダーティビットメモリ203は、データメモリ105に記憶されたデータのデータ単位に対応したダーティビットを保存する。ダーティビットが示すデータ単位は、キャッシュラインサイズよりも小さい単位であればよく、ここではバイト単位としている。すなわち、256バイトのデータに対して、256ビットのダーティビットが保存される。
【0019】
ここで、コア1からキャッシュメモリ2に8バイトのライトアクセスが要求され、要求されたアドレスがキャッシュメモリ2にヒットしたとする。例えば、ラインインデックス値“2”とWay値“0”にヒットした場合について説明する。
【0020】
図5は、コア1からキャッシュメモリ2にライトアクセスが要求され、要求されたアドレスがヒットした場合の例を示す図である。コア1からキャッシュメモリ2に8バイトのライトアクセスが要求されると、要求された検索エントリアドレスのタグアドレス部と、タグメモリ103のタグアドレスTagとを比較する。
【0021】
比較の結果、ラインインデックス“2”、Way“0”にヒットする。そして、キャッシュメモリ2は、Way0のデータメモリ105にライト動作を実行する。このとき、キャッシュメモリ2は、該当するキャッシュラインのダーティビットDを“1”にする(302)。また、キャッシュヒットした、Way値とラインインデックス値に基づいて、DBLB管理部201のローメモリ202のデータRowと比較する。同じ値が存在する場合には、キャッシュメモリ2はDBLBヒットしたと判定する。
【0022】
そして、ライトする8バイトのデータに対応するダーティビットメモリ203のダーティビット(8ビット)を“1”にする(303)。ライトアクセスされたキャッシュラインに対応するダーティビットメメモリ203のダーティビットが全て“1”になってない時は、キャッシュメモリ2は、自動ライトバックを発生しない。すなわち、ライトアクセスされたキャッシュラインのダーティビットが全て“1”になった時(304)、該キャッシュラインのデータの自動ライトバックが行われる。
【0023】
なお、本発明は、データメモリ105へのライト(401)と、ダーティビットメモリ203のダーティビットの更新(402)と、を並行して実行する(図6)。また、コア1は、同じキャッシュラインへ連続してライトアクセスを行う可能性が高い。したがって、コア1から通常のキャッシュライトアクセスをする場合と比べて、速度が落ちることはない。
【0024】
自動ライトバックのタイミングは、通常のライトアクセス性能を保つために、データキャッシュのライト処理が終わるまで、ライトバック処理を待つ。キャッシュメモリ2は、ダーティビットメモリ203のダーティビットに基づいて(すなわち、該ダーティビットが対応するキャッシュライン全体にライトがされた場合には)、キャッシュラインをロックして、対応するデータメモリ105のキャッシュラインを外部メモリ3へライトバックを行う。ライトバックが終わったら、対応するキャッシュラインのダーティビットおよびDBLB管理部201のダーティビットを全て“0”に更新する。
【0025】
図8は、キャッシュメモリ2でヒットしたキャッシュラインが、DBLB管理部201を検索しても存在しない場合(DBLBミス)の動作の一例を示す図である。キャッシュメモリ2においてヒットしたキャッシュラインが、DBLB管理部201を検索しても存在しない場合がある。
【0026】
DBLBに空きがない場合は、DBLB管理部201のラインの入替えを行う。本発明では、例えば一番古い登録順のラインを入れ替え対象のラインにするFIFOアルゴリズムを用いる。FIFOメモリ204に記憶されたFIFO値に基づき、入れ替え対象ラインを決定する。入れ替え対象ラインはFIFO値が一番大きい値“111”のライン(すなわち、一番古く登録されたライン)(601)であり(図8(a))、このラインに新規キャッシュラインの情報を登録する。入れ替え対象ラインのRowを新規キャッシュラインのWayとラインインデックスに対応した値に書き換える。さらに、ダーティビットを新規キャッシュラインのデータの状態に対応した値に書き換える。そして、DBLB管理部201の全てのラインのFIFOに1を加算する。入れ替え対象ラインのFIFO値は“000”にする(図8(b))。
【0027】
なお、DBLB管理部201に空きがある場合は、空いているラインのローメモリ202、ダーティビットメモリ203、FIFOメモリ204に所定のデータが記憶される。
【0028】
一方、コア1からキャッシュメモリ2にライトアクセスする時、キャッシュミスする場合がある。次に、キャッシュミスした場合における、DBLB管理部201の動作を説明する。図9は、キャッシュミスした場合における、DBLB管理部201の動作の一例を示す図である。
【0029】
キャッシュミスした場合、外部メモリ3にそのアドレスのリードアクセスを要求し、新規キャッシュラインとして入れ替え(Replace)するエントリ(701)を決める。入れ替え対象エントリに、外部メモリ3からのリードデータを書き込み、その後、コア1からのライトデータを書き込む。なお、そのエントリに記憶されていた既存データのライトバックが必要な場合には、ライトバッファ(図示せず)にアドレスとデータを退避しておく。その後、外部メモリ3にライトアクセスを要求し、データのライトバックを行う。
【0030】
また、キャッシュミスした場合、対応するタグアドレスTagが存在しないため、DBLB管理部201にもミス動作が発生(ローメモリ202に対応するラインが存在しない)する(702)。そこで、DBLB管理部201に空きがない場合は、入れ替え対象ラインを決めて(703)、このラインのダーティビットを全部クリアする(704)。空きがある場合は、空いているラインに新規情報として登録する。そして、コア1からのライトデータをキャッシュメモリ2に書き込む時に、該入れ替え対象ラインの対応するダーティビットを更新する(705)。
【0031】
次に、図9に示すDBLB管理部201の動作タイミングについて説明する。キャッシュメモリ2でキャッシュミスした場合、入れ替え対象のWayの番号を決めてから、キャッシュメモリ2にリフィルを発生させる。その後、並行して、コア1からキャッシュメモリ2に上書き処理と、DBLB管理部201の新規ラインの登録及びコア1からのライトアクセスによるダーティビットの更新処理が実行される。
【0032】
次に、キャッシュミスした場合に、追い出すラインインデックスとWayを決定したとき、このラインインデックスとWayの値がローメモリ202のビットと一致する場合もあり得る。以下、図11を参照しながら、この場合について説明する。
【0033】
キャッシュミスし、入れ替え対象エントリを決定したとき、このエントリがDBLB管理部201にすでに登録されていたとする(901)と、このラインのダーティビットは古いラインのダーティビット(902)となる。
【0034】
したがって、ダーティビットを全部クリアして(903)、コア1からのライトデータをキャッシュメモリ2に書き込み、DBLB管理部201のダーティビットを更新する(904)。
【0035】
なお、DBLB管理部201への新規登録ラインは無いので、FIFO値は更新しなくてもよい。しかしながら、DBLB管理部201のヒット率を高めるために、FIFO値を更新してもよい。例えば、全エントリのFIFO値に“1”を加算する(905)。そして、ヒットしたラインのFIFO値(図11では“011”)を、“000”に戻ったエントリのFIFO値と交換する(906)。これにより、一番古く登録されたラインが交換され、より新しい情報がDBLB管理部201に登録されていることになる。
【0036】
このように、キャッシュメモリ2は、ライトアクセスに対してキャッシュミスした場合に、リフィルされるキャッシュラインに対応する新規ラインを、DBLB管理部201の一番古く登録されたラインと入れ替える。
【0037】
以上のような機能を有するキャッシュメモリ2の動作をまとめて説明する。図12は、本発明のキャッシュメモリ2の動作の一例を示すフローチャートである。先ず、キャッシュメモリ2は、コア1からライトアクセスされると(S1)、タグメモリ102を参照する(S2)。
【0038】
検索エントリアドレスのタグアドレス部と、タグメモリ103のタグアドレスTagとを比較し(S3)、一致した場合には、キャッシュがヒットしたものと判定される。一致した場合、一致したタグアドレスTagからWayとラインインデックスを得る(S4)。
【0039】
そして、得たWayのキャッシュラインのデータメモリ105にライトデータを書き込む(S5)。また、DBLB管理部201のローメモリ202のビット情報と、ヒットしたタグアドレスTagのWayとラインインデックスと、が一致するか否かを判定する(S6)。なお、S5とS6の動作は、並列処理される。S6で一致する場合(S6−Yes)、DBLB管理部201のヒットしたラインの該当するダーティビットを更新する(S7)。
【0040】
次に、キャッシュメモリ2は、DBLB管理部201の該当するラインの全てのダーティビットが“1”になったかを判定する(S8)。全てのダーティビットが“1”と判定された場合(S8−Yes)、自動ライトバックを実行する(S9)。
一方、全てのダーティビットが“1”でない場合(S8−No)、ライトバックは行わずに処理を終了する。
【0041】
次に、S9の後、ヒットしたキャッシュラインのダーティビットおよびDBLB管理部201のヒットしたラインのダーティビットを全て“0”に更新する(S10)。
【0042】
また、DBLB管理部201のローメモリ202のビット情報と、ヒットしたタグアドレスTagのWayとラインインデックスと、が一致しない(S6−No)場合は、DBLB管理部201に空のラインがあるか否かを判定する(S12)。
【0043】
空のラインが無い場合(S12−No)、DBLB管理部201のラインの入替えを行う(S13)。一方、空のラインが在る場合(S12−Yes)、新規ラインの情報をDBLBシステムの空のラインに記憶する(S14)。
【0044】
S13、S14の後、DBLB管理部201の新規ラインのビット情報、ダーティビットを更新する(S15)。すなわち、ローメモリ202のビットを新規ラインに対応するキャッシュラインのWayとラインインデックスに対応した値に書き換える。また、ダーティビットメモリ203を新規ラインに対応するキャッシュラインのデータの状態に対応したダーティビットに書き換える。
【0045】
次に、キャッシュメモリ2は、DBLB管理部201の該新規ラインのダーティビットメモリ203の全てのダーティビットが“1”であるかを判定する(S16)。全て“1”の場合(S16−Yes)、ヒットしたキャッシュラインのダーティビットおよびDBLB管理部201の該新規ラインのダーティビットを全て“0”に更新する(S17)。一方、全て“1”でない場合(S16−No)、処理を終了する。
【0046】
なお、コア1のフラッシュ命令を実行する場合、キャッシュメモリ2はダーティビットメモリ106のビットがダーティのとき、外部メモリ3へ書き戻す。この場合は、普通のキャッシュメモリと全く同じように動作するが、本発明では、本来ライトバックが必要なラインも、すでに自動でライトバックしている場合があるので、フラッシュ命令を早く終了することができる。フラッシュしたいアドレスのキャッシュメモリ2のラインインデックスとWayが、DBLB管理部201のローメモリ202に存在する場合、該当エントリのダーティビットを全て“0”にする。
【0047】
本発明の実施例は、DBLB管理部201の1つのエントリの全ダーティビットが“1”になった時、すなわち、対応するキャッシュラインの全バイトがダーティになった時、自動的にライトバックすることができる。よって、未だクリーンなバイトが残っているにも拘わらずライトバックされるといった現象を抑制し、グローバルバスへの無駄なバンド幅の消費を削減できる。
【0048】
また、特に一定領域を書き潰すようなアクセスは基本まとまって行われるため、バイト単位のダーティビットを保持する専用のキャッシュ(BDLB管理部201)を持つことで、キャッシュメモリ2の面積増加を抑えることができる。DBLB管理部201の動作パイプライン処理は、通常のキャッシュメモリと完全に別のパイプライン処理で動作しているので、キャッシュアクセスの速度に影響は殆どない。
【0049】
ハードウエア実現にもDBLBシステムのロジックを従来のキャッシュメモリに簡単に付けられる。本発明の実施例のDBLB管理部201は、DBLBのエントリ数が8、1つのラインで268ビット(約34バイト)、キャッシュメモリ(64〜512×260バイト)に対して、非常に小さい面積(1.6%〜0.204%)となる。さらに、無駄なデータライトバックアクセスが減ることによるDynamic電力現象が期待できる。また、DBLB管理部201は、オーバーヘッドが少なく、実現が容易であり、従来技術によりも十分効果があるシステムである。
【0050】
以上のように、本発明の実施例に係るキャッシュメモリによれば、面積の増大を抑制しつつ、高速化することができる。
【0051】
なお、実施形態は例示であり、発明の範囲はそれらに限定されない。
【符号の説明】
【0052】
1 コア
2 キャッシュメモリ
3 外部メモリ
100 キャッシュシステム

【特許請求の範囲】
【請求項1】
タグアドレスを記憶するタグメモリと、第1のダーティビットを記憶する第1のダーティビットメモリと、有効ビットを記憶する有効ビットメモリと、データを記憶するデータメモリと、を含む複数のキャッシュラインを有する1または複数のウエイと、
前記キャッシュラインを特定するためのラインインデックスを記憶するラインインデックスメモリと、
前記ウエイを特定する第1のビットデータおよび前記ラインインデックスを特定する第2のビットデータを記憶するローメモリと、前記データメモリへの所定単位のライトに対応したビット単位の第2のダーティビットを記憶する第2のダーティビットメモリと、登録された順番を規定するFIFO情報を記憶するFIFOメモリと、を含む複数のラインを有するDBLB管理部と、を備え、
前記第2のダーティビットに基づいて、対応するウエイのキャッシュラインのデータをライトバックする
ことを特徴とするキャッシュメモリ。
【請求項2】
前記第2のダーティビットの全てのビットがライトされたことを示した場合に、前記対応するウエイのキャッシュラインのデータをライトバックする
ことを特徴とする請求項1に記載のキャッシュメモリ。
【請求項3】
前記DBLB管理部での処理は、前記データメモリへの書き込み処理と並行して実行する
ことを特徴とする請求項1または2に記載のキャッシュメモリ。
【請求項4】
前記DBLB管理部は、ラインに空きがない場合、前記FIFO情報に基づいて、一番古く登録されたラインをクリアし、新規のラインとして前記第2のダーティビットおよび前記FIFO情報を更新する
ことを特徴とする請求項1ないし3のいずれか一項に記載のキャッシュメモリ。
【請求項5】
コアと、
前記コアにバスを介して接続されたキャッシュメモリと、
前記キャッシュメモリにバスを介して接続された外部メモリと、を備え、
前記キャッシュメモリは、
タグアドレスを記憶するタグメモリと、第1のダーティビットを記憶する第1のダーティビットメモリと、有効ビットを記憶する有効ビットメモリと、データを記憶するデータメモリと、を含む複数のキャッシュラインを有する1または複数のウエイと、
前記キャッシュラインを特定するためのラインインデックスを記憶するラインインデックスメモリと、
前記ウエイを特定する第1のビットデータおよび前記ラインインデックスを特定する第2のビットデータを記憶するローメモリと、前記データメモリへの所定単位のライトに対応したビット単位の第2のダーティビットを記憶する第2のダーティビットメモリと、登録された順番を規定するFIFO情報を記憶するFIFOメモリと、を含む複数のラインを有するDBLB管理部と、を備え、
前記第2のダーティビットに基づいて、対応するウエイのキャッシュラインのデータをライトバックする
ことを特徴とするキャッシュシステム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate