(57)【要約】      （修正有）【課題】キャッシュメモリの面積の増大を抑制しつつ、高速化する。【解決手段】キャッシュメモリ２はタグメモリ１０３と、第１のダーティビットメモリ１０６と、有効ビットメモリ１０７と、データメモリ１０５と、を含む複数のキャッシュラインを有する複数のウエイを備える。また、キャッシュメモリ２は、前記キャッシュラインを特定するためのラインインデックスメモリ１０１を備える。また、キャッシュメモリ２は、前記ウエイを特定する第１のビットデータおよび前記ラインインデックスを特定する第２のビットデータを記憶するローメモリ２０２と、前記データメモリへのバイト単位のライトに対応したビット単位の第２のダーティビットを記憶する第２のダーティビットメモリ２０３と、登録された順番を規定するＦＩＦＯ情報を記憶するＦＩＦＯメモリ２０４と、を含む複数のラインを有するＤＢＬＢシステム２０１と、を備える。【選択図】図５
2012203560.tif 000002
【特許請求の範囲】
【請求項１】
タグアドレスを記憶するタグメモリと、第１のダーティビットを記憶する第１のダーティビットメモリと、有効ビットを記憶する有効ビットメモリと、データを記憶するデータメモリと、を含む複数のキャッシュラインを有する１または複数のウエイと、
前記キャッシュラインを特定するためのラインインデックスを記憶するラインインデックスメモリと、
前記ウエイを特定する第１のビットデータおよび前記ラインインデックスを特定する第２のビットデータを記憶するローメモリと、前記データメモリへの所定単位のライトに対応したビット単位の第２のダーティビットを記憶する第２のダーティビットメモリと、登録された順番を規定するＦＩＦＯ情報を記憶するＦＩＦＯメモリと、を含む複数のラインを有するＤＢＬＢ管理部と、を備え、
前記第２のダーティビットに基づいて、対応するウエイのキャッシュラインのデータをライトバックする
ことを特徴とするキャッシュメモリ。
【請求項２】
前記第２のダーティビットの全てのビットがライトされたことを示した場合に、前記対応するウエイのキャッシュラインのデータをライトバックする
ことを特徴とする請求項１に記載のキャッシュメモリ。
【請求項３】
前記ＤＢＬＢ管理部での処理は、前記データメモリへの書き込み処理と並行して実行する
ことを特徴とする請求項１または２に記載のキャッシュメモリ。
【請求項４】
前記ＤＢＬＢ管理部は、ラインに空きがない場合、前記ＦＩＦＯ情報に基づいて、一番古く登録されたラインをクリアし、新規のラインとして前記第２のダーティビットおよび前記ＦＩＦＯ情報を更新する
ことを特徴とする請求項１ないし３のいずれか一項に記載のキャッシュメモリ。
【請求項５】
コアと、
前記コアにバスを介して接続されたキャッシュメモリと、
前記キャッシュメモリにバスを介して接続された外部メモリと、を備え、
前記キャッシュメモリは、
タグアドレスを記憶するタグメモリと、第１のダーティビットを記憶する第１のダーティビットメモリと、有効ビットを記憶する有効ビットメモリと、データを記憶するデータメモリと、を含む複数のキャッシュラインを有する１または複数のウエイと、
前記キャッシュラインを特定するためのラインインデックスを記憶するラインインデックスメモリと、
前記ウエイを特定する第１のビットデータおよび前記ラインインデックスを特定する第２のビットデータを記憶するローメモリと、前記データメモリへの所定単位のライトに対応したビット単位の第２のダーティビットを記憶する第２のダーティビットメモリと、登録された順番を規定するＦＩＦＯ情報を記憶するＦＩＦＯメモリと、を含む複数のラインを有するＤＢＬＢ管理部と、を備え、
前記第２のダーティビットに基づいて、対応するウエイのキャッシュラインのデータをライトバックする
ことを特徴とするキャッシュシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、ライトバック方式のキャッシュメモリおよびキャッシュシステムに関する。
【背景技術】
【０００２】
従来、通常のライトバック方式のキャッシュシステムでは、キャッシュメモリに書き込んだデータが外部メモリに反映されていることを保証するために、フラッシュ命令を実行する。フラッシュ命令は、指定されたキャッシュラインのダーティビットを調べ、ダーティビットがダーティだった場合には、キャッシュメモリのデータを外部メモリへライトバックする。フラッシュ命令が連続して実行されると、コアは前のライトバックが完了するまで次のフラッシュ命令を実行することが出来ない。
【０００３】
そこで、キャッシュメモリがコアの演算処理などと並行して、すでにダーティビットがダーティになっているキャッシュラインを自動でライトバックする方法もある。
【０００４】
しかし、この方法では、通常のキャッシュシステムはキャッシュライン単位でしかダーティビットをもっていないため、まだクリーンなバイトがあっても自動でライトバックを行ってしまい、バンド幅を無駄に消費する可能性があった。
【０００５】
このような問題に対し、例えばラインの１／２、１／４などの単位でダーティビットを管理するといった方法が考えられる。しかし、その場合、ダーティビットのビット数が膨大になってしまい、キャッシュメモリの面積が大きくなってしまうという問題があった。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平９−２５９０３６
【発明の概要】
【発明が解決しようとする課題】
【０００７】
面積の増大を抑制しつつ、高速化することが可能なキャッシュシメモリを提供する。
【課題を解決するための手段】
【０００８】
本発明の実施例に従ったキャッシュメモリは、タグアドレスを記憶するタグメモリと、第１のダーティビットを記憶する第１のダーティビットメモリと、有効ビットを記憶する有効ビットメモリと、データを記憶するデータメモリ１０５と、を含む複数のキャッシュラインを有する複数のウエイを備える。また、キャッシュメモリは、前記キャッシュラインを特定するためのラインインデックスを記憶するラインインデックスメモリを備える。また、キャッシュメモリは、前記ウエイを特定する第１のビットデータおよび前記ラインインデックスを特定する第２のビットデータを記憶するローメモリと、前記データメモリへのバイト単位のライトに対応したビット単位の第２のダーティビットを記憶する第２のダーティビットメモリと、登録された順番を規定するＦＩＦＯ情報を記憶するＦＩＦＯメモリと、を含む複数のラインを有するＤＢＬＢシステムと、を備える。キャッシュメモリは、前記第２のダーティビットに基づいて、対応するデータメモリのキャッシュラインをライトバックさせる。
【図面の簡単な説明】
【０００９】
【図１】本発明に係るキャッシュシステム１００の構成例を示す図。
【図２】キャッシュシメモリ２の構成の一例を示す図。
【図３】ＤＢＬＢ管理部２０１の構成の一例を示す図。
【図４】ＤＢＬＢ管理部２０１のローメモリ２０２の構成の一例を示す図。
【図５】コア１からキャッシュメモリ２にライトが要求され、要求されたアドレスがキャッシュメモリ２にヒットした場合の例を示す図。
【図６】コア１からキャッシュメモリ２にアクセスするパイプライン処理と、ＤＢＬＢ管理部２０１が動作するパイプライン処理との一例を示す図。
【図７】コア１からキャッシュメモリ２にアクセスするパイプライン処理と、ＤＢＬＢ管理部２０１が動作するパイプライン処理との他の例を示す図。
【図８】キャッシュメモリ２でヒットしたキャッシュラインが、ＤＢＬＢ管理部２０１を検索しても存在しない場合の動作の一例を示す図。
【図９】コア１からキャッシュメモリ２にライトアクセスする時、キャッシュミスする場合における、ＤＢＬＢ管理部２０１の動作の一例を示す図。
【図１０】コア１からキャッシュメモリ２にアクセスするパイプライン処理と、ＤＢＬＢ管理部２０１が動作するパイプライン処理とのさらに他の例を示す図。
【図１１】キャッシュミスした場合に、追い出すラインインデックスとＷａｙを決定したとき、ＤＢＬＢ管理部２０１のローメモリ２０２にヒットする場合の例を示す図。
【図１２】本発明のキャッシュメモリ２の動作の一例を示すフローチャート。
【発明を実施するための形態】
【００１０】
以下、本発明の実施例について図面に基づいて説明する。  
図１は、本発明の実施例に係るキャッシュシステム１００の構成例を示す図である。キャッシュシステム１００は、コア１と、キャッシュメモリ２と、外部メモリ３と、バス４、５と、を備える。
【００１１】
コア１は、フラッシュ命令、ライトアクセス指令、リードアクセス命令等のソフトウェア命令を実行する。キャッシュメモリ２は、バス４を介して、コア１に接続されている。外部メモリ３は、バス５を介して、キャッシュメモリ２に接続されている。
【００１２】
図２は、キャッシュシメモリ２の構成例を示す図である。キャッシュメモリ２は通常、下位レベルの記憶装置より小容量で高速なＳＲＡＭを用いて構成される。キャッシュメモリ２は、データ本体の一部とそのアドレス、フラグなどの属性情報を固定容量のメモリに格納する構造で、データ構造、ライン入替え、データ更新方式などに多数のアーキテクチャが存在する。  
キャッシュメモリ２は、複数のキャッシュラインを有する複数のＷａｙと、キャッシュラインを特定するためのラインインデックスを記憶するラインインデックスメモリ１０１と、ＬＲＵ（Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ）メモリ１０２と、を備える。図２のキャッシュメモリ２は、４−Ｗａｙ  Ｓｅｔ  Ａｓｓｏｃｉａｔｉｖｅ方式の、４セットタグにより構成されるデータ格納構造を有する。各Ｗａｙは、タグアドレスＴａｇを記憶するタグメモリ１０３と、ダーティビットＤを記憶するダーティビットメモリ１０６と、有効ビットＶを記憶する有効ビットメモリ１０７と、２５６バイトのデータを記憶するデータメモリ１０５と、を有する。
【００１３】
ここで、キャッシュメモリ２のキャッシュサイズを例えば１２８ＫＢとする。キャッシュメモリ２は、１２８のキャッシュラインから構成される。タグメモリ１０３には、３２ビットのライン単位アドレスの上位ビット［３１：１５］（タグアドレス部）である１７ビットのタグアドレスＴａｇが格納されている。キャッシュメモリ２は、コア１からアクセス要求があると、検索エントリアドレスのタグアドレス部と、タグメモリ１０３に記憶されたタグアドレスＴａｇとを比較し、キャッシュのヒットを判定する。
【００１４】
キャッシュラインの入替え（リフィル）は、該当エントリアドレスの全キャッシュラインにデータが格納されていて、且つ、同一エントリ新規タグアドレスが入力されてキャッシュミスした（ヒットしなかった）場合に発生する。この場合、どのキャッシュラインを追い出して新規アドレスと入れ替えるかは、例えばＬＲＵアルゴリズムが用いられる。ＬＲＵアルゴリズムは、最も古くアクセスされたキャッシュラインをリフィルする方法である。
【００１５】
さらに、本発明のキャッシュメモリ２は、ＤＢＬＢ（Ｄｉｒｔｙ Ｂｉｔ  Ｌｏｏｋ−Ｕｐ  Ｂｌｏｃｋ）管理部２０１を備える。図３は、ＤＢＬＢ管理部２０１の構成例を示す図である。ＤＢＬＢ管理部２０１は、該当するキャッシュラインを認識するためのデータＲｏｗを記憶するローメモリ２０２と、データメモリ１０５の全バイト毎のダーティビットを記録するダーティビットメモリ２０３と、ＦＩＦＯメモリ２０４と、を有する。ダーティビットメモリ２０３のダーティビットは、データメモリ１０５へのライト（書き込み）に対応したバイト単位のビット情報である。
【００１６】
さらに、ＤＢＬＢ管理部２０１は、ＤＢＬＢが溢れた時の追い出し対象のキャッシュラインを決めるアルゴリズムとして、例えばＦＩＦＯ（Ｆｉｒｓｔ Ｉｎ Ｆｉｒｓｔ Ｏｕｔ）を実現する。ＦＩＦＯメモリ２０４は、そのラインが登録された順番を規定するＦＩＦＯ情報を記憶する。例えば、８エントリのＤＢＬＢ構造において、ＦＩＦＯ情報は３ビットである。なお、入れ替え方式は、エントリ間の入れ替え優先順位を決められれば良いので、他の方式、例えばＬＲＵ方式でも構わない。
【００１７】
ローメモリ２０２のデータＲｏｗは、Ｗａｙを特定するビットデータと、ラインインデックスを特定するビットデータである。ここでは、Ｗａｙ０〜Ｗａｙ４を示す２ビットと、ラインインデックス０〜１２７を示す７ビットと、の計９ビットの情報を記憶する。  
データＲｏｗにより、あるキャッシュラインのデータと該当するＤＢＬＢシステムのラインが対応づけられる。
【００１８】
ダーティビットメモリ２０３は、データメモリ１０５に記憶されたデータのデータ単位に対応したダーティビットを保存する。ダーティビットが示すデータ単位は、キャッシュラインサイズよりも小さい単位であればよく、ここではバイト単位としている。すなわち、２５６バイトのデータに対して、２５６ビットのダーティビットが保存される。
【００１９】
ここで、コア１からキャッシュメモリ２に８バイトのライトアクセスが要求され、要求されたアドレスがキャッシュメモリ２にヒットしたとする。例えば、ラインインデックス値“２”とＷａｙ値“０”にヒットした場合について説明する。
【００２０】
図５は、コア１からキャッシュメモリ２にライトアクセスが要求され、要求されたアドレスがヒットした場合の例を示す図である。コア１からキャッシュメモリ２に８バイトのライトアクセスが要求されると、要求された検索エントリアドレスのタグアドレス部と、タグメモリ１０３のタグアドレスＴａｇとを比較する。
【００２１】
比較の結果、ラインインデックス“２”、Ｗａｙ“０”にヒットする。そして、キャッシュメモリ２は、Ｗａｙ０のデータメモリ１０５にライト動作を実行する。このとき、キャッシュメモリ２は、該当するキャッシュラインのダーティビットＤを“１”にする（３０２）。また、キャッシュヒットした、Ｗａｙ値とラインインデックス値に基づいて、ＤＢＬＢ管理部２０１のローメモリ２０２のデータＲｏｗと比較する。同じ値が存在する場合には、キャッシュメモリ２はＤＢＬＢヒットしたと判定する。
【００２２】
そして、ライトする８バイトのデータに対応するダーティビットメモリ２０３のダーティビット（８ビット）を“１”にする（３０３）。ライトアクセスされたキャッシュラインに対応するダーティビットメメモリ２０３のダーティビットが全て“１”になってない時は、キャッシュメモリ２は、自動ライトバックを発生しない。すなわち、ライトアクセスされたキャッシュラインのダーティビットが全て“１”になった時（３０４）、該キャッシュラインのデータの自動ライトバックが行われる。
【００２３】
なお、本発明は、データメモリ１０５へのライト（４０１）と、ダーティビットメモリ２０３のダーティビットの更新（４０２）と、を並行して実行する（図６）。また、コア１は、同じキャッシュラインへ連続してライトアクセスを行う可能性が高い。したがって、コア１から通常のキャッシュライトアクセスをする場合と比べて、速度が落ちることはない。
【００２４】
自動ライトバックのタイミングは、通常のライトアクセス性能を保つために、データキャッシュのライト処理が終わるまで、ライトバック処理を待つ。キャッシュメモリ２は、ダーティビットメモリ２０３のダーティビットに基づいて（すなわち、該ダーティビットが対応するキャッシュライン全体にライトがされた場合には）、キャッシュラインをロックして、対応するデータメモリ１０５のキャッシュラインを外部メモリ３へライトバックを行う。ライトバックが終わったら、対応するキャッシュラインのダーティビットおよびＤＢＬＢ管理部２０１のダーティビットを全て“０”に更新する。
【００２５】
図８は、キャッシュメモリ２でヒットしたキャッシュラインが、ＤＢＬＢ管理部２０１を検索しても存在しない場合（ＤＢＬＢミス）の動作の一例を示す図である。キャッシュメモリ２においてヒットしたキャッシュラインが、ＤＢＬＢ管理部２０１を検索しても存在しない場合がある。
【００２６】
ＤＢＬＢに空きがない場合は、ＤＢＬＢ管理部２０１のラインの入替えを行う。本発明では、例えば一番古い登録順のラインを入れ替え対象のラインにするＦＩＦＯアルゴリズムを用いる。ＦＩＦＯメモリ２０４に記憶されたＦＩＦＯ値に基づき、入れ替え対象ラインを決定する。入れ替え対象ラインはＦＩＦＯ値が一番大きい値“１１１”のライン（すなわち、一番古く登録されたライン）（６０１）であり（図８（ａ））、このラインに新規キャッシュラインの情報を登録する。入れ替え対象ラインのＲｏｗを新規キャッシュラインのＷａｙとラインインデックスに対応した値に書き換える。さらに、ダーティビットを新規キャッシュラインのデータの状態に対応した値に書き換える。そして、ＤＢＬＢ管理部２０１の全てのラインのＦＩＦＯに１を加算する。入れ替え対象ラインのＦＩＦＯ値は“０００”にする（図８（ｂ））。
【００２７】
なお、ＤＢＬＢ管理部２０１に空きがある場合は、空いているラインのローメモリ２０２、ダーティビットメモリ２０３、ＦＩＦＯメモリ２０４に所定のデータが記憶される。
【００２８】
一方、コア１からキャッシュメモリ２にライトアクセスする時、キャッシュミスする場合がある。次に、キャッシュミスした場合における、ＤＢＬＢ管理部２０１の動作を説明する。図９は、キャッシュミスした場合における、ＤＢＬＢ管理部２０１の動作の一例を示す図である。
【００２９】
キャッシュミスした場合、外部メモリ３にそのアドレスのリードアクセスを要求し、新規キャッシュラインとして入れ替え（Ｒｅｐｌａｃｅ）するエントリ（７０１）を決める。入れ替え対象エントリに、外部メモリ３からのリードデータを書き込み、その後、コア１からのライトデータを書き込む。なお、そのエントリに記憶されていた既存データのライトバックが必要な場合には、ライトバッファ（図示せず）にアドレスとデータを退避しておく。その後、外部メモリ３にライトアクセスを要求し、データのライトバックを行う。
【００３０】
また、キャッシュミスした場合、対応するタグアドレスＴａｇが存在しないため、ＤＢＬＢ管理部２０１にもミス動作が発生（ローメモリ２０２に対応するラインが存在しない）する（７０２）。そこで、ＤＢＬＢ管理部２０１に空きがない場合は、入れ替え対象ラインを決めて（７０３）、このラインのダーティビットを全部クリアする（７０４）。空きがある場合は、空いているラインに新規情報として登録する。そして、コア１からのライトデータをキャッシュメモリ２に書き込む時に、該入れ替え対象ラインの対応するダーティビットを更新する（７０５）。
【００３１】
次に、図９に示すＤＢＬＢ管理部２０１の動作タイミングについて説明する。キャッシュメモリ２でキャッシュミスした場合、入れ替え対象のＷａｙの番号を決めてから、キャッシュメモリ２にリフィルを発生させる。その後、並行して、コア１からキャッシュメモリ２に上書き処理と、ＤＢＬＢ管理部２０１の新規ラインの登録及びコア１からのライトアクセスによるダーティビットの更新処理が実行される。
【００３２】
次に、キャッシュミスした場合に、追い出すラインインデックスとＷａｙを決定したとき、このラインインデックスとＷａｙの値がローメモリ２０２のビットと一致する場合もあり得る。以下、図１１を参照しながら、この場合について説明する。
【００３３】
キャッシュミスし、入れ替え対象エントリを決定したとき、このエントリがＤＢＬＢ管理部２０１にすでに登録されていたとする（９０１）と、このラインのダーティビットは古いラインのダーティビット（９０２）となる。
【００３４】
したがって、ダーティビットを全部クリアして（９０３）、コア１からのライトデータをキャッシュメモリ２に書き込み、ＤＢＬＢ管理部２０１のダーティビットを更新する（９０４）。
【００３５】
なお、ＤＢＬＢ管理部２０１への新規登録ラインは無いので、ＦＩＦＯ値は更新しなくてもよい。しかしながら、ＤＢＬＢ管理部２０１のヒット率を高めるために、ＦＩＦＯ値を更新してもよい。例えば、全エントリのＦＩＦＯ値に“１”を加算する（９０５）。そして、ヒットしたラインのＦＩＦＯ値（図１１では“０１１”）を、“０００”に戻ったエントリのＦＩＦＯ値と交換する（９０６）。これにより、一番古く登録されたラインが交換され、より新しい情報がＤＢＬＢ管理部２０１に登録されていることになる。
【００３６】
このように、キャッシュメモリ２は、ライトアクセスに対してキャッシュミスした場合に、リフィルされるキャッシュラインに対応する新規ラインを、ＤＢＬＢ管理部２０１の一番古く登録されたラインと入れ替える。
【００３７】
以上のような機能を有するキャッシュメモリ２の動作をまとめて説明する。図１２は、本発明のキャッシュメモリ２の動作の一例を示すフローチャートである。先ず、キャッシュメモリ２は、コア１からライトアクセスされると（Ｓ１）、タグメモリ１０２を参照する（Ｓ２）。
【００３８】
検索エントリアドレスのタグアドレス部と、タグメモリ１０３のタグアドレスＴａｇとを比較し（Ｓ３）、一致した場合には、キャッシュがヒットしたものと判定される。一致した場合、一致したタグアドレスＴａｇからＷａｙとラインインデックスを得る（Ｓ４）。
【００３９】
そして、得たＷａｙのキャッシュラインのデータメモリ１０５にライトデータを書き込む（Ｓ５）。また、ＤＢＬＢ管理部２０１のローメモリ２０２のビット情報と、ヒットしたタグアドレスＴａｇのＷａｙとラインインデックスと、が一致するか否かを判定する（Ｓ６）。なお、Ｓ５とＳ６の動作は、並列処理される。Ｓ６で一致する場合（Ｓ６−Ｙｅｓ）、ＤＢＬＢ管理部２０１のヒットしたラインの該当するダーティビットを更新する（Ｓ７）。
【００４０】
次に、キャッシュメモリ２は、ＤＢＬＢ管理部２０１の該当するラインの全てのダーティビットが“１”になったかを判定する（Ｓ８）。全てのダーティビットが“１”と判定された場合（Ｓ８−Ｙｅｓ）、自動ライトバックを実行する（Ｓ９）。  
一方、全てのダーティビットが“１”でない場合（Ｓ８−Ｎｏ）、ライトバックは行わずに処理を終了する。
【００４１】
次に、Ｓ９の後、ヒットしたキャッシュラインのダーティビットおよびＤＢＬＢ管理部２０１のヒットしたラインのダーティビットを全て“０”に更新する（Ｓ１０）。
【００４２】
また、ＤＢＬＢ管理部２０１のローメモリ２０２のビット情報と、ヒットしたタグアドレスＴａｇのＷａｙとラインインデックスと、が一致しない（Ｓ６−Ｎｏ）場合は、ＤＢＬＢ管理部２０１に空のラインがあるか否かを判定する（Ｓ１２）。
【００４３】
空のラインが無い場合（Ｓ１２−Ｎｏ）、ＤＢＬＢ管理部２０１のラインの入替えを行う（Ｓ１３）。一方、空のラインが在る場合（Ｓ１２−Ｙｅｓ）、新規ラインの情報をＤＢＬＢシステムの空のラインに記憶する（Ｓ１４）。
【００４４】
Ｓ１３、Ｓ１４の後、ＤＢＬＢ管理部２０１の新規ラインのビット情報、ダーティビットを更新する（Ｓ１５）。すなわち、ローメモリ２０２のビットを新規ラインに対応するキャッシュラインのＷａｙとラインインデックスに対応した値に書き換える。また、ダーティビットメモリ２０３を新規ラインに対応するキャッシュラインのデータの状態に対応したダーティビットに書き換える。
【００４５】
次に、キャッシュメモリ２は、ＤＢＬＢ管理部２０１の該新規ラインのダーティビットメモリ２０３の全てのダーティビットが“１”であるかを判定する（Ｓ１６）。全て“１”の場合（Ｓ１６−Ｙｅｓ）、ヒットしたキャッシュラインのダーティビットおよびＤＢＬＢ管理部２０１の該新規ラインのダーティビットを全て“０”に更新する（Ｓ１７）。一方、全て“１”でない場合（Ｓ１６−Ｎｏ）、処理を終了する。
【００４６】
なお、コア１のフラッシュ命令を実行する場合、キャッシュメモリ２はダーティビットメモリ１０６のビットがダーティのとき、外部メモリ３へ書き戻す。この場合は、普通のキャッシュメモリと全く同じように動作するが、本発明では、本来ライトバックが必要なラインも、すでに自動でライトバックしている場合があるので、フラッシュ命令を早く終了することができる。フラッシュしたいアドレスのキャッシュメモリ２のラインインデックスとＷａｙが、ＤＢＬＢ管理部２０１のローメモリ２０２に存在する場合、該当エントリのダーティビットを全て“０”にする。
【００４７】
本発明の実施例は、ＤＢＬＢ管理部２０１の１つのエントリの全ダーティビットが“１”になった時、すなわち、対応するキャッシュラインの全バイトがダーティになった時、自動的にライトバックすることができる。よって、未だクリーンなバイトが残っているにも拘わらずライトバックされるといった現象を抑制し、グローバルバスへの無駄なバンド幅の消費を削減できる。
【００４８】
また、特に一定領域を書き潰すようなアクセスは基本まとまって行われるため、バイト単位のダーティビットを保持する専用のキャッシュ（ＢＤＬＢ管理部２０１）を持つことで、キャッシュメモリ２の面積増加を抑えることができる。ＤＢＬＢ管理部２０１の動作パイプライン処理は、通常のキャッシュメモリと完全に別のパイプライン処理で動作しているので、キャッシュアクセスの速度に影響は殆どない。
【００４９】
ハードウエア実現にもＤＢＬＢシステムのロジックを従来のキャッシュメモリに簡単に付けられる。本発明の実施例のＤＢＬＢ管理部２０１は、ＤＢＬＢのエントリ数が８、１つのラインで２６８ビット（約３４バイト）、キャッシュメモリ（６４〜５１２×２６０バイト）に対して、非常に小さい面積（１．６％〜０．２０４％）となる。さらに、無駄なデータライトバックアクセスが減ることによるＤｙｎａｍｉｃ電力現象が期待できる。また、ＤＢＬＢ管理部２０１は、オーバーヘッドが少なく、実現が容易であり、従来技術によりも十分効果があるシステムである。
【００５０】
以上のように、本発明の実施例に係るキャッシュメモリによれば、面積の増大を抑制しつつ、高速化することができる。
【００５１】
なお、実施形態は例示であり、発明の範囲はそれらに限定されない。
【符号の説明】
【００５２】
１  コア
２  キャッシュメモリ
３  外部メモリ
１００  キャッシュシステム
【図１】
2012203560.tif 000003
【図２】
2012203560.tif 000004
【図３】
2012203560.tif 000005
【図４】
2012203560.tif 000006
【図５】
2012203560.tif 000007
【図６】
2012203560.tif 000008
【図７】
2012203560.tif 000009
【図８】
2012203560.tif 000010
【図９】
2012203560.tif 000011
【図１０】
2012203560.tif 000012
【図１１】
2012203560.tif 000013
【図１２】
2012203560.tif 000014