(57)【要約】【課題】短時間で広範囲アドレス空間のキャッシュメモリのフラッシュ動作を行うことを課題とする。【解決手段】ウエイ番号及びエントリ番号に対応するキャッシュデータを記憶するためのキャッシュデータ記憶部（４３３）と、キャッシュデータ記憶部に記憶される各ウエイ番号及び各エントリ番号のキャッシュデータのタグアドレスと該キャッシュデータがモディファイされたか否かを示すモディファイ情報を記憶するタグ記憶部（４３２）とを有するキャッシュメモリシステムが提供される。フラッシュが指示されると、タグ記憶部に記憶されるタグアドレス及びモディファイ情報を基にモディファイされているキャッシュデータをすべてメインメモリにコピーバックする。フラッシュの指示は、指定エントリ番号又は指定ウエイ番号のフラッシュ指示でもよい。【選択図】        図４
2004240584.tif 000002
【特許請求の範囲】
【請求項１】
ウエイ番号及びエントリ番号に対応するキャッシュデータを記憶するためのキャッシュデータ記憶部と、
前記キャッシュデータ記憶部に記憶される各ウエイ番号及び各エントリ番号のキャッシュデータのタグアドレスと該キャッシュデータがモディファイされたか否かを示すモディファイ情報を記憶するタグ記憶部と、
フラッシュが指示されると、前記タグ記憶部に記憶されるタグアドレス及びモディファイ情報を基にモディファイされているキャッシュデータをすべてメインメモリにコピーバックする制御部と
を有するキャッシュメモリシステム。
【請求項２】
さらに、フラッシュ対象のウエイ番号を記憶するためのウエイ記憶部と、
フラッシュ対象のエントリ番号を記憶するためのエントリ記憶部と、
前記ウエイ記憶部に記憶されるウエイ番号をインクリメントするためのウエイインクリメンタと、
前記エントリ記憶部に記憶されるエントリ番号をインクリメントするためのエントリインクリメンタとを有し、
前記制御部は、フラッシュが指示されると、前記タグ記憶部に記憶されるモディファイ情報を基に前記ウエイに記憶されるウエイ番号及び前記エントリ記憶部に記憶されるエントリ番号のキャッシュデータがモディファイされているか否かを判断し、モディファイされていれば前記タグアドレスを基に該キャッシュデータをメインメモリにコピーバックし、前記インクリメントによる次のウエイ番号及びエントリ番号の組みの処理を繰り返す請求項１記載のキャッシュメモリシステム。
【請求項３】
前記タグ記憶部は、前記キャッシュデータ記憶部に記憶される各ウエイ番号及び各エントリ番号のキャッシュデータが有効か否かを示す有効情報を記憶し、
前記制御部は、前記モディファイ情報及び前記有効情報を基に前記キャッシュデータがモディファイされ、かつ有効であると判断すれば前記タグアドレスを基に該キャッシュデータをメインメモリにコピーバックする請求項２記載のキャッシュメモリシステム。
【請求項４】
前記メインメモリは、前記タグアドレス及び前記エントリ番号に対応するアドレスを有する請求項２記載のキャッシュメモリシステム。
【請求項５】
ウエイ番号及びエントリ番号に対応するキャッシュデータを記憶するためのキャッシュデータ記憶部と、
前記キャッシュデータ記憶部に記憶される各ウエイ番号及び各エントリ番号のキャッシュデータのタグアドレスと該キャッシュデータがモディファイされたか否かを示すモディファイ情報を記憶するタグ記憶部と、
指定エントリ番号のフラッシュが指示されると、前記タグ記憶部に記憶されるタグアドレス及びモディファイ情報を基に前記指定エントリ番号においてモディファイされているキャッシュデータをすべてメインメモリにコピーバックする制御部と
を有するキャッシュメモリシステム。
【請求項６】
さらに、フラッシュ対象のウエイ番号を記憶するためのウエイ記憶部と、
前記ウエイ記憶部に記憶されるウエイ番号をインクリメントするためのウエイインクリメンタとを有し、
前記制御部は、指定エントリ番号のフラッシュが指示されると、前記タグ記憶部に記憶されるモディファイ情報を基に前記ウエイ記憶部に記憶されるウエイ番号及び前記指定エントリ番号のキャッシュデータがモディファイされているか否かを判断し、モディファイされていれば前記タグアドレスを基に該キャッシュデータをメインメモリにコピーバックし、前記インクリメントによる次のウエイ番号及びエントリ番号の組みの処理を繰り返す請求項５記載のキャッシュメモリシステム。
【請求項７】
前記タグ記憶部は、前記キャッシュデータ記憶部に記憶される各ウエイ番号及び各エントリ番号のキャッシュデータが有効か否かを示す有効情報を記憶し、
前記制御部は、前記モディファイ情報及び前記有効情報を基に前記キャッシュデータがモディファイされ、かつ有効であると判断すれば前記タグアドレスを基に該キャッシュデータをメインメモリにコピーバックする請求項６記載のキャッシュメモリシステム。
【請求項８】
ウエイ番号及びエントリ番号に対応するキャッシュデータを記憶するためのキャッシュデータ記憶部と、
前記キャッシュデータ記憶部に記憶される各ウエイ番号及び各エントリ番号のキャッシュデータのタグアドレスと該キャッシュデータがモディファイされたか否かを示すモディファイ情報を記憶するタグ記憶部と、
指定ウエイ番号のフラッシュが指示されると、前記タグ記憶部に記憶されるタグアドレス及びモディファイ情報を基に前記指定ウエイ番号においてモディファイされているキャッシュデータをすべてメインメモリにコピーバックする制御部と
を有するキャッシュメモリシステム。
【請求項９】
さらに、フラッシュ対象のエントリ番号を記憶するためのエントリ記憶部と、
前記エントリ記憶部に記憶されるエントリ番号をインクリメントするためのエントリインクリメンタとを有し、
前記制御部は、指定ウエイ番号のフラッシュが指示されると、前記タグ記憶部に記憶されるモディファイ情報を基に前記エントリ記憶部に記憶されるエントリ番号及び前記指定ウエイ番号のキャッシュデータがモディファイされているか否かを判断し、モディファイされていれば前記タグアドレスを基に該キャッシュデータをメインメモリにコピーバックし、前記インクリメントによる次のウエイ番号及びエントリ番号の組みの処理を繰り返す請求項８記載のキャッシュメモリシステム。
【請求項１０】
前記タグ記憶部は、前記キャッシュデータ記憶部に記憶される各ウエイ番号及び各エントリ番号のキャッシュデータが有効か否かを示す有効情報を記憶し、
前記制御部は、前記モディファイ情報及び前記有効情報を基に前記キャッシュデータがモディファイされ、かつ有効であると判断すれば前記タグアドレスを基に該キャッシュデータをメインメモリにコピーバックする請求項９記載のキャッシュメモリシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、キャッシュメモリシステムに関し、特にキャッシュデータをメインメモリにコピーバックするためのフラッシュ動作に関する。
【０００２】
【従来の技術】
図１は、キャッシュメモリシステムの構成例を示す。中央演算処理装置（ＣＰＵ）１００は、プロセッサコア１０１及びキャッシュユニット１０２を有する。メインメモリ１１０は、ＣＰＵ１００の外部に接続される。メインメモリ１１０は、例えばＳＤＲＡＭである。キャッシュユニット１０２は、メインメモリ１１０よりもアクセス速度が速いキャッシュメモリ（例えばＳＲＡＭ）を有する。
【０００３】
プロセッサコア１０１は、キャッシュユニット１０２にデータ読み出しをリクエストする。キャッシュユニット１０２内にそのデータが存在しない場合（キャッシュミスの場合）には、キャッシュユニット１０２はメインメモリ１１０にデータ読み出しをリクエストする。メインメモリ１１０は、リクエストされたデータをキャッシュユニット１０２に出力する。キャッシュユニット１０２は、そのデータを記憶し、プロセッサコア１０１に出力する。
【０００４】
次に、プロセッサコア１０１がキャッシュユニット１０２にデータ読み出しをリクエストし、キャッシュユニット１０２内にそのデータが存在する場合（キャッシュヒットの場合）を説明する。その場合、キャッシュユニット１０２は、自己が記憶するそのデータをプロセッサコア１０１に出力する。キャッシュユニット１０２内のキャッシュメモリは、メインメモリ１１０よりも高速アクセス可能であるので、キャッシュヒットした時にはプロセッサコア１０１に高速にデータを読み出して出力することができる。一般的に、キャッシュヒット率は高いので、プロセッサコア１０１の全体的なアクセス速度が速くなる。
【０００５】
図２は、メインメモリ１１０及びキャッシュユニット１０２のデータ構成例を示す。メインメモリ１１０は、アドレスＡＤによりデータ記憶場所が特定される。アドレスＡＤは、例えば３２ビットであり、上位１２ビットのタグアドレスＴＧ及びそれに続く８ビットのエントリ（ｅｎｔｒｙ）番号ＥＮを有する。アドレスＡＤ、タグアドレスＴＧ及びエントリ番号ＥＮは、１６進数で示す。アドレスＡＤは、「００００００００」〜「ＦＦＦＦＦＦＦＦ」である。タグアドレスＴＧは、「０００」〜「ＦＦＦ」である。エントリ番号ＥＮは、「００」〜「ＦＦ」である。説明の便宜上、アドレス「００００００００」〜「０００００ＦＦＦ」のデータを１つのブロックとして示す。それ以降のアドレスのデータも同様である。この１ブロックのデータ単位で、キャッシュ処理を行う。
【０００６】
キャッシュユニット１０２は、例えば４ウエイのキャッシュメモリ２００〜２０３を有する。キャッシュメモリ２００はウエイ（ｗａｙ）０のキャッシュメモリ、キャッシュメモリ２０１はウエイ１のキャッシュメモリ、キャッシュメモリ２０２はウエイ２のキャッシュメモリ、キャッシュメモリ２０３はウエイ３のキャッシュメモリである。各キャッシュメモリ２００〜２０３は、ＦＦ個（１６進数表現）のエントリを有する。各エントリには、メインメモリ１１０内の１ブロックのデータが記憶される。エントリ０は、メインメモリ１１０内のエントリ番号ＥＮが「００」である１ブロックデータが記憶可能である。エントリ１は、メインメモリ１１０内のエントリ番号ＥＮが「０１」である１ブロックデータが記憶可能である。エントリ２〜ＦＦも、同様に、メインメモリ１１０内のエントリ番号ＥＮが「０２」〜「ＦＦ」である１ブロックデータが記憶可能である。
【０００７】
図３は、ウエイ０のタグメモリ３００の内容例を示す。タグメモリ３００は、図２のウエイ０のキャッシュメモリ２００に対応し、エントリ番号３１１、タグアドレス３１２、モディファイフラグ３１３及び有効フラグ３１４を有する。エントリ番号３１１及びタグアドレス３１２は、図２のエントリ番号ＥＮ及びタグアドレスＴＧに対応する。ウエイ０のタグメモリ３００と同様に、ウエイ１〜ウエイ３のタグメモリも設けられる。以下、ウエイ０のタグメモリ３００を例に説明する。
【０００８】
例えば、キャッシュメモリ２００のエントリ０には、タグアドレス３１２が「０００」、エントリ番号３１１が「００」のデータブロックＡが記憶される。データブロックＡは、アドレス「００００００００」〜「０００００ＦＦＦ」のデータである。キャッシュメモリ２００のエントリ１には、タグアドレス３１２が「００１」、エントリ番号３１１が「０１」のデータブロックＥが記憶される。データブロックＥは、アドレス「００１０１０００」〜「００１０１ＦＦＦ」のデータである。キャッシュメモリ２００のエントリ２には、タグアドレス３１２が「００２」、エントリ番号３１１が「０２」のデータブロックＦが記憶される。データブロックＦは、アドレス「００２０２０００」〜「００２０２ＦＦＦ」のデータである。キャッシュメモリ２００のエントリＦＦには、タグアドレス３１２が「０００」、エントリ番号３１１が「ＦＦ」のデータブロックＧが記憶される。データブロックＧは、アドレス「０００ＦＦ０００」〜「０００ＦＦＦＦＦ」のデータである。
【０００９】
モディファイフラグ３１３は、キャッシュメモリ２００内のデータがモディファイ（変更）されたか否かを示す。図１のプロセッサコア１０１がキャッシュユニット１０２に所定のアドレスのデータ書き込みを指示すると、キャッシュメモリ２００〜２０３内にそのアドレスのデータが存在すれば、そのデータの上書きを行う。これにより、キャッシュメモリ２００〜２０３内のデータがモディファイされ、例えばモディファイフラグ３１３が１になる。モディファイされたデータは、ダーティ（ｄｉｒｔｙ）であると表現される。
【００１０】
有効フラグ３１４は、キャッシュメモリ２００内のデータブロックが有効か否かを示す。キャッシュメモリシステムの電源投入時には、すべてのエントリ番号３１１の有効フラグ３１４が０（無効）になる。その後、メインメモリ１１０からキャッシュメモリ２００にキャッシュデータが記憶されると、有効フラグ３１４が１（有効）になる。
【００１１】
次に、フラッシュについて説明する。コピーバック機能を持ったキャッシュメモリシステムでは、プロセッサコア１０１が書き込む最新のデータは、一時的なキャッシュメモリ２００〜２０３上にのみ存在する。メインメモリ１１０への書き込みは、メインメモリ１１０へ書き込む必要が発生してから行う。メインメモリ１１０への書き込みが行われるまでの間は、キャッシュユニット１０２上のデータとメインメモリ１１０上のデータとには不整合がある状態となる。この状態を、キャッシュユニット１０２上のデータがダーティであるという。最終的には、キャッシュユニット１０２及びメインメモリ１１０上のデータは一致させる必要がある。キャッシュユニット１０２上のデータとメインメモリ１１０上のデータを一致させる動作をフラッシュ処理という。キャッシュユニット１０２上のダーティなデータをメインメモリ１１０上へ書き出す動作そのものをコピーバック（ライトバック）という。
【００１２】
特殊モードへの移行時には、キャッシュメモリ２００〜２０３上のダーティなエントリを全て、メインメモリ１１０上にフラッシュしなければならない場合がある。特殊モードは、例えば、オペレーティングシステム（ＯＳ）上でのプロセススイッチ時や、プログラムデバッグモードへの移行時等である。その場合、従来は、キャッシュメモリ２００〜２０３に存在する可能性のあるアドレスｘｘｘｘｘｘｘｘ番地からｙｙｙｙｙｙｙｙ番地までの全てのアドレスに対して、フラッシュが必要か否かを判定し、必要があればコピーバック処理を行う必要があった。
【００１３】
図７は、従来技術によるフラッシュ動作を行うキャッシュメモリシステムの構成例を示す。プロセッサコア７０１は、キャッシュユニット７０２及びアドレス生成及びリクエスト部７２１を有する。メインメモリ７１０は、プロセッサコア７０１の外部に接続される。プロセッサコア７０１、キャッシュユニット７０２及びメインメモリ７１０は、図１のプロセッサコア１０１、キャッシュユニット１０２及びメインメモリ１１０に対応する。
【００１４】
キャッシュユニット７０２は、キャッシュフラッシュ動作制御回路７３１、タグメモリ（ＲＡＭ）７３２及びキャッシュメモリ（ＲＡＭ）７３３を有する。キャッシュメモリ７３３は、図２のキャッシュメモリ２００〜２０３に対応し、ウエイ番号及びエントリ番号に対応するキャッシュデータを記憶する。タグメモリ７３２は、図３のタグメモリ３００等に対応し、キャッシュメモリ７３３に記憶される各ウエイ番号及び各エントリ番号のキャッシュデータのタグアドレスと該キャッシュデータがモディファイされたか否かを示すモディファイフラグと該キャッシュデータが有効か否かを示す有効フラグを記憶する。
【００１５】
次に、フラッシュ動作を説明する。アドレス生成及びリクエスト部７２１は、制御回路７３１に対して、データフラッシュのリクエスト及びフラッシュ対象アドレスを生成して出力する。この際、キャッシュメモリに存在する可能性のあるアドレスを出力する。
【００１６】
制御回路７３１は、上記のフラッシュリクエスト及びフラッシュ対象アドレスを受け取り、タグメモリ７３２を参照して受け取ったアドレスからキャッシュヒット又はミスを判定する。上記のように、図２のアドレスＡＤは、タグアドレスＴＧ及びエントリ番号ＥＮを含む。図３のタグメモリ３００等に、そのタグアドレス３１２及びエントリ番号３１１が存在し、かつその有効フラグ３１４が有効であれば、キャッシュヒットになる。それ以外は、キャッシュミスになる。
【００１７】
制御回路７３１は、キャッシュミスの場合は動作を終了し、キャッシュヒットである場合はさらにタグメモリ７３２を参照して該当エントリがモディファイされたか否かを判定する。図３のモディファイフラグ３１３が１であれば、モディファイされたと判定する。モディファイされたと判定した場合はキャッシュメモリのフラッシュ処理を行う。すなわち、そのアドレスが属するエントリのブロックをキャッシュメモリ７３３からメインメモリ７１０へコピーバックする。
【００１８】
以上のように、アドレス生成及びリクエスト部７２１が出力したアドレスがキャッシュヒット、かつそのデータがモディファイされている場合は、キャッシュメモリ７３３内の対応ブロックデータをメインメモリ７１０に書き出す。上記の処理を、キャッシュメモリ７３３に格納されている可能性のあるアドレス領域全域にわたって行う必要がある。
【００１９】
また、下記の特許文献１が開示されている。
【００２０】
【特許文献１】
特開平１０−８３３５１号公報
【００２１】
【発明が解決しようとする課題】
従来技術のキャッシュメモリシステムにおいては、キャッシュメモリのフラッシュ動作では、フラッシュしたい単一のアドレスをキャッシュユニット７０２に与え、与えられたアドレスに対してのみキャッシュヒット判定を行い、該当エントリがモディファイされている場合のみフラッシュを行っていた。
【００２２】
キャッシュメモリ７３３内のデータを全てフラッシュする場合、キャッシュユニット７０２に与えるアドレスは、キャッシュメモリを利用するソフトウェアが利用し得るアドレス空間全てを対象とすることになるため、膨大な回数のフラッシュ要求をキャッシュユニット７０２に与えることになっていた。
【００２３】
そのため、キャッシュメモリ７３３の全データをフラッシュさせるためには時間がかかることになっていた。また、アドレス生成及びリクエスト部７２１におけるアドレスのインクリメントはソフトウェアで行っていたため、これもキャッシュメモリ７３３の全データのフラッシュに時間がかかる要因のひとつになっていた。すなわち、キャッシュメモリ内の検索対象アドレスが広範囲になると、検索回数が膨大になるため、時間がかかる。
【００２４】
本発明の目的は、短時間で広範囲アドレス空間のキャッシュメモリのフラッシュ動作を行うことである。
【００２５】
【課題を解決するための手段】
本発明の一観点によれば、ウエイ番号及びエントリ番号に対応するキャッシュデータを記憶するためのキャッシュデータ記憶部と、キャッシュデータ記憶部に記憶される各ウエイ番号及び各エントリ番号のキャッシュデータのタグアドレスと該キャッシュデータがモディファイされたか否かを示すモディファイ情報を記憶するタグ記憶部とを有するキャッシュメモリシステムが提供される。フラッシュが指示されると、タグ記憶部に記憶されるタグアドレス及びモディファイ情報を基にモディファイされているキャッシュデータをすべてメインメモリにコピーバックする。フラッシュの指示は、指定エントリ番号又は指定ウエイ番号のフラッシュ指示でもよい。
【００２６】
フラッシュを行う際に、１回のフラッシュ指示（又はエントリ数分又はウエイ数分の指示）を出せば、全キャッシュデータをフラッシュすることができる。これにより、フラッシュ動作を高速に行うことができ、ＯＳのプロセススイッチ時等の高速化を図ることができる。
【００２７】
【発明の実施の形態】
（第１の実施形態）
図１は、本発明の第１の実施形態によるキャッシュメモリシステムの概略構成例を示す。ＣＰＵ１００は、プロセッサコア１０１及びキャッシュユニット１０２を有する。メインメモリ１１０は、ＣＰＵ１００の外部に接続される。メインメモリ１１０は、例えばＳＤＲＡＭである。キャッシュユニット１０２は、メインメモリ１１０よりもアクセス速度が速いキャッシュメモリ（例えばＳＲＡＭ）を有する。これらの詳細は、上記の説明と同じである。
【００２８】
図２は、メインメモリ１１０及びキャッシュユニット１０２のデータ構成を示す。メインメモリ１１０は、アドレスＡＤによりデータ記憶場所が特定される。アドレスＡＤは、例えば３２ビットであり、上位１２ビットのタグアドレスＴＧ及びそれに続く８ビットのエントリ（ｅｎｔｒｙ）番号ＥＮを有する。キャッシュユニット１０２は、例えば４ウエイのキャッシュメモリ２００〜２０３を有する。これらの詳細は、上記の説明と同じである。
【００２９】
図３は、ウエイ０のタグメモリ３００の内容例を示す。タグメモリ３００は、図２のウエイ０のキャッシュメモリ２００に対応し、エントリ番号３１１、タグアドレス３１２、モディファイフラグ３１３及び有効フラグ３１４を有する。エントリ番号３１１及びタグアドレス３１２は、図２のエントリ番号ＥＮ及びタグアドレスＴＧに対応する。ウエイ０のタグメモリ３００と同様に、ウエイ１〜ウエイ３のタグメモリも設けられる。これらの詳細は、上記の説明と同じである。
【００３０】
特殊モードへの移行時には、キャッシュメモリ２００〜２０３上のモディファイされたエントリを全て、メインメモリ１１０上にフラッシュしなければならない場合がある。特殊モードは、例えば、オペレーティングシステム（ＯＳ）上でのプロセススイッチ時や、プログラムデバッグモードへの移行時等である。
【００３１】
図４は、本実施形態によるフラッシュ動作を行うキャッシュメモリシステムの構成例を示す。プロセッサコア４０１は、キャッシュユニット４０２及びリクエスト部４２１を有する。メインメモリ４１０は、プロセッサコア４０１の外部に接続される。プロセッサコア４０１、キャッシュユニット４０２及びメインメモリ４１０は、図１のプロセッサコア１０１、キャッシュユニット１０２及びメインメモリ１１０に対応する。
【００３２】
キャッシュユニット４０２は、キャッシュフラッシュ動作制御回路４３１、タグメモリ（ＲＡＭ）４３２、キャッシュメモリ（ＲＡＭ）４３３、フラッシュエントリ保持部４３４、フラッシュエントリインクリメンタ４３５、フラッシュウエイ保持部４３６及びフラッシュウエイインクリメンタ４３７を有する。
【００３３】
キャッシュメモリ４３３は、図２のキャッシュメモリ２００〜２０３に対応し、ウエイ番号及びエントリ番号に対応するキャッシュデータを記憶する。タグメモリ４３２は、図３のタグメモリ３００等に対応し、キャッシュメモリ４３３に記憶される各ウエイ番号及び各エントリ番号のキャッシュデータのタグアドレス３１２、モディファイフラグ３１３及び有効フラグ３１４を有する。モディファイフラグ３１３は該キャッシュデータがモディファイされたか否かを示し、有効フラグ３１４は該キャッシュデータが有効か否かを示す。
【００３４】
エントリ保持部４３４は、フラッシュ対象のエントリ番号を記憶する。エントリインクリメンタ４３５は、エントリ保持部４３４に記憶されるエントリ番号をインクリメントする。ウエイ保持部４３６は、フラッシュ対象のウエイ番号を記憶する。ウエイインクリメンタ４３７は、ウエイ保持部４３６に記憶されるウエイ番号をインクリメントする。
【００３５】
次に、フラッシュ動作を説明する。リクエスト部４２１は、制御回路４３１に対して、全データフラッシュのリクエストを出力する。制御回路４３１は、上記のフラッシュリクエストを受け取り、エントリ保持部４３４に記憶されるエントリ番号を０に初期化し、ウエイ保持部４３６に記憶されるウエイ番号を０に初期化する。次に、制御回路４３１は、タグメモリ４３２を参照してウエイ保持部４３６内のウエイ番号及びエントリ保持部４３４内のエントリ番号を基にキャッシュヒット又はミスを判定する。図３のタグメモリ３００等に、そのウエイ番号においてエントリ番号３１１が存在し、かつその有効フラグ３１４が有効であれば、キャッシュヒットになる。それ以外は、キャッシュミスになる。
【００３６】
制御回路４３１は、キャッシュミスの場合は動作を終了し、キャッシュヒットである場合はさらにタグメモリ４３２を参照して該当ウエイのエントリがモディファイされたか否かを判定する。図３のモディファイフラグ３１３が１であれば、モディファイされたと判定する。モディファイされたと判定した場合はキャッシュメモリのフラッシュ処理を行う。すなわち、そのエントリ番号３１１に対応するタグアドレス３１２を基にそのエントリのブロックをキャッシュメモリ４３３からメインメモリ４１０へコピーバックする。上記のように、図２のアドレスＡＤは、タグアドレスＴＧ及びエントリ番号ＥＮを含むので、タグアドレスＴＧ及びエントリ番号ＥＮを基にブロックデータのアドレスＡＤを特定することができる。
【００３７】
次に、ウエイ保持部４３６内のウエイ番号がキャッシュメモリのウエイ数（例えば４ウエイ）に達したか否かを判定する。ウエイ数に満たない場合は、ウエイインクリメンタ４３７によりウエイ保持部４３６内のウエイ番号をインクリメントし、上記の判定及びコピーバック処理を繰り返す。ウエイ数に達した場合は、以下の処理を行う。
【００３８】
エントリ保持部４３４内のエントリ番号がキャッシュメモリのエントリ数（例えばＦＦ）に達したか否かを判定する。エントリ数に満たない場合は、エントリインクリメンタ４３５によりエントリ保持部４３４内のエントリ番号をインクリメントし、上記の判定及びコピーバック処理を繰り返す。エントリ数に達した場合は、フラッシュ動作を完了したものとする。以上により、すべてのエントリ及びウエイについてのフラッシュ動作が終了する。
【００３９】
本実施形態によれば、フラッシュが指示されると、タグメモリ４３２に記憶されるタグアドレス及びモディファイフラグ等を基にしてモディファイされているキャッシュデータをすべてメインメモリにコピーバックすることができる。具体的には、リクエスト部４２１がキャッシュユニット４０２に１回のフラッシュリクエストを出力すれば、キャッシュメモリの全データがフラッシュ可能である。
【００４０】
図７のキャッシュメモリシステムでは、キャッシュメモリに格納されている可能性のあるアドレス領域全域にわたってアドレスを指定してフラッシュ動作を行う必要があった。本実施形態では、アドレスではなく、ウエイ番号及びエントリ番号を基にフラッシュ動作を行うので、高速にフラッシュ動作を行うことができる。これにより、ＯＳ上でのプロセススイッチ時や、プログラムデバッグモードへの移行時等には、キャッシュメモリ上のモディファイされたエントリを全てメインメモリ上に高速にフラッシュすることができる。
【００４１】
（第２の実施形態）
図５は、本発明の第２の実施形態によるフラッシュ動作を行うキャッシュメモリシステムの構成例を示す。本実施形態は、第１の実施形態（図４）のリクエスト部４２１及び制御回路４３１の代わりに、エントリ生成及びリクエスト部５２１及び制御回路５３１を設け、第１の実施形態（図４）のエントリインクリメンタ４３５を削除したものである。その他の点については、本実施形態は第１の実施形態と同じである。
【００４２】
本実施形態のフラッシュ動作を説明する。エントリ生成及びリクエスト部５２１は、制御回路５３１に対して、データフラッシュのリクエスト及びフラッシュ対象エントリ番号を生成して出力する。制御回路５３１は、上記のフラッシュリクエスト及びフラッシュ対象エントリ番号を受け取り、エントリ保持部４３４にそのフラッシュ対象エントリ番号を設定し、ウエイ保持部４３６に記憶されるウエイ番号を０に初期化する。次に、制御回路５３１は、タグメモリ４３２を参照してウエイ保持部４３６内のウエイ番号及びエントリ保持部４３４内のエントリ番号を基にキャッシュヒット又はミスを判定する。図３のタグメモリ３００等に、そのウエイ番号においてエントリ番号３１１が存在し、かつその有効フラグ３１４が有効であれば、キャッシュヒットになる。それ以外は、キャッシュミスになる。
【００４３】
制御回路５３１は、キャッシュミスの場合は動作を終了し、キャッシュヒットである場合はさらにタグメモリ４３２を参照して該当ウエイのエントリがモディファイされたか否かを判定する。図３のモディファイフラグ３１３が１であれば、モディファイされたと判定する。モディファイされたと判定した場合はキャッシュメモリのフラッシュ処理を行う。すなわち、そのエントリ番号３１１に対応するタグアドレス３１２を基にそのエントリのブロックをキャッシュメモリ４３３からメインメモリ４１０へコピーバックする。上記のように、図２のアドレスＡＤは、タグアドレスＴＧ及びエントリ番号ＥＮを含むので、タグアドレスＴＧ及びエントリ番号ＥＮを基にブロックデータのアドレスＡＤを特定することができる。
【００４４】
次に、ウエイ保持部４３６内のウエイ番号がキャッシュメモリのウエイ数（例えば４ウエイ）に達したか否かを判定する。ウエイ数に満たない場合は、ウエイインクリメンタ４３７によりウエイ保持部４３６内のウエイ番号をインクリメントし、上記の判定及びコピーバック処理を繰り返す。ウエイ数に達した場合は、フラッシュ動作を完了したものとする。以上により、指定されたエントリについての全ウエイのフラッシュ動作が終了する。
【００４５】
本実施形態によれば、指定エントリ番号のフラッシュが指示されると、タグメモリ４３２に記憶されるタグアドレス及びモディファイフラグ等を基にして指定エントリ番号においてモディファイされているキャッシュデータをすべてメインメモリにコピーバックすることができる。具体的には、エントリ生成及びリクエスト部５２１がキャッシュユニット４０２にフラッシュ対象エントリ番号を指定してフラッシュリクエストを出力することにより、すべてのウエイ番号についてそのエントリ番号のフラッシュ動作を行うことができる。エントリ生成及びリクエスト部５２１が全エントリ番号についてフラッシュリクエストを出力すれば、キャッシュメモリの全データがフラッシュ可能である。すなわち、全エントリ数分（例えばＦＦ回）のリクエストにより、高速に全データのフラッシュが可能である。
【００４６】
（第３の実施形態）
図６は、本発明の第３の実施形態によるフラッシュ動作を行うキャッシュメモリシステムの構成例を示す。本実施形態は、第１の実施形態（図４）のリクエスト部４２１及び制御回路４３１の代わりに、ウエイ生成及びリクエスト部６２１及び制御回路６３１を設け、第１の実施形態（図４）のウエイインクリメンタ４３７を削除したものである。その他の点については、本実施形態は第１の実施形態と同じである。
【００４７】
本実施形態のフラッシュ動作を説明する。ウエイ生成及びリクエスト部６２１は、制御回路６３１に対して、データフラッシュのリクエスト及びフラッシュ対象ウエイ番号を生成して出力する。制御回路６３１は、上記のフラッシュリクエスト及びフラッシュ対象ウエイ番号を受け取り、ウエイ保持部４３６にそのフラッシュ対象ウエイ番号を設定し、エントリ保持部４３４に記憶されるエントリ番号を０に初期化する。次に、制御回路６３１は、タグメモリ４３２を参照してウエイ保持部４３６内のウエイ番号及びエントリ保持部４３４内のエントリ番号を基にキャッシュヒット又はミスを判定する。図３のタグメモリ３００等に、そのウエイ番号においてエントリ番号３１１が存在し、かつその有効フラグ３１４が有効であれば、キャッシュヒットになる。それ以外は、キャッシュミスになる。
【００４８】
制御回路６３１は、キャッシュミスの場合は動作を終了し、キャッシュヒットである場合はさらにタグメモリ４３２を参照して該当ウエイのエントリがモディファイされたか否かを判定する。図３のモディファイフラグ３１３が１であれば、モディファイされたと判定する。モディファイされたと判定した場合はキャッシュメモリのフラッシュ処理を行う。すなわち、そのエントリ番号３１１に対応するタグアドレス３１２を基にそのエントリのブロックをキャッシュメモリ４３３からメインメモリ４１０へコピーバックする。上記のように、図２のアドレスＡＤは、タグアドレスＴＧ及びエントリ番号ＥＮを含むので、タグアドレスＴＧ及びエントリ番号ＥＮを基にブロックデータのアドレスＡＤを特定することができる。
【００４９】
次に、エントリ保持部４３４内のエントリ番号がキャッシュメモリのエントリ数（例えばＦＦ）に達したか否かを判定する。エントリ数に満たない場合は、エントリインクリメンタ４３５によりエントリ保持部４３４内のエントリ番号をインクリメントし、上記の判定及びコピーバック処理を繰り返す。エントリ数に達した場合は、フラッシュ動作を完了したものとする。以上により、指定されたウエイについての全エントリのフラッシュ動作が終了する。
【００５０】
本実施形態によれば、指定ウエイ番号のフラッシュが指示されると、タグメモリ４３２に記憶されるタグアドレス及びモディファイフラグ等を基にして指定ウエイ番号においてモディファイされているキャッシュデータをすべてメインメモリにコピーバックすることができる。具体的には、ウエイ生成及びリクエスト部６２１がキャッシュユニット４０２にフラッシュ対象ウエイ番号を指定してフラッシュリクエストを出力することにより、そのウエイ番号についての全エントリ番号のフラッシュ動作を行うことができる。ウエイ生成及びリクエスト部６２１が全ウエイ番号についてフラッシュリクエストを出力すれば、キャッシュメモリの全データがフラッシュ可能である。すなわち、全ウエイ数分（例えば４ウエイ）のリクエストにより、高速に全データのフラッシュが可能である。
【００５１】
ここで、フラッシュは、キャッシュの中味を消去し、キャッシュの中味をメインメモリに書き出すことであり、モディファイは、キャッシュの中味を書き換えることを意味する。
【００５２】
なお、上記実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
【００５３】
本発明の実施形態は、例えば以下のように種々の適用が可能である。
【００５４】
（付記１）ウエイ番号及びエントリ番号に対応するキャッシュデータを記憶するためのキャッシュデータ記憶部と、
前記キャッシュデータ記憶部に記憶される各ウエイ番号及び各エントリ番号のキャッシュデータのタグアドレスと該キャッシュデータがモディファイされたか否かを示すモディファイ情報を記憶するタグ記憶部と、
フラッシュが指示されると、前記タグ記憶部に記憶されるタグアドレス及びモディファイ情報を基にモディファイされているキャッシュデータをすべてメインメモリにコピーバックする制御部と
を有するキャッシュメモリシステム。
（付記２）さらに、フラッシュ対象のウエイ番号を記憶するためのウエイ記憶部と、
フラッシュ対象のエントリ番号を記憶するためのエントリ記憶部と、
前記ウエイ記憶部に記憶されるウエイ番号をインクリメントするためのウエイインクリメンタと、
前記エントリ記憶部に記憶されるエントリ番号をインクリメントするためのエントリインクリメンタとを有し、
前記制御部は、フラッシュが指示されると、前記タグ記憶部に記憶されるモディファイ情報を基に前記ウエイに記憶されるウエイ番号及び前記エントリ記憶部に記憶されるエントリ番号のキャッシュデータがモディファイされているか否かを判断し、モディファイされていれば前記タグアドレスを基に該キャッシュデータをメインメモリにコピーバックし、前記インクリメントによる次のウエイ番号及びエントリ番号の組みの処理を繰り返す付記１記載のキャッシュメモリシステム。
（付記３）前記タグ記憶部は、前記キャッシュデータ記憶部に記憶される各ウエイ番号及び各エントリ番号のキャッシュデータが有効か否かを示す有効情報を記憶し、
前記制御部は、前記モディファイ情報及び前記有効情報を基に前記キャッシュデータがモディファイされ、かつ有効であると判断すれば前記タグアドレスを基に該キャッシュデータをメインメモリにコピーバックする付記２記載のキャッシュメモリシステム。
（付記４）さらに、前記制御部にフラッシュの指示を行うための指示部を有する付記２記載のキャッシュメモリシステム。
（付記５）さらに、前記キャッシュデータ記憶部内のキャッシュデータをコピーバックするためのメインメモリを有する付記２記載のキャッシュメモリシステム。
（付記６）前記キャッシュデータ記憶部は、前記メインメモリよりもアクセス速度が速い付記５記載のキャッシュメモリシステム。
（付記７）前記メインメモリは、前記タグアドレス及び前記エントリ番号に対応するアドレスを有する付記５記載のキャッシュメモリシステム。
（付記８）ウエイ番号及びエントリ番号に対応するキャッシュデータを記憶するためのキャッシュデータ記憶部と、
前記キャッシュデータ記憶部に記憶される各ウエイ番号及び各エントリ番号のキャッシュデータのタグアドレスと該キャッシュデータがモディファイされたか否かを示すモディファイ情報を記憶するタグ記憶部と、
指定エントリ番号のフラッシュが指示されると、前記タグ記憶部に記憶されるタグアドレス及びモディファイ情報を基に前記指定エントリ番号においてモディファイされているキャッシュデータをすべてメインメモリにコピーバックする制御部と
を有するキャッシュメモリシステム。
（付記９）さらに、フラッシュ対象のウエイ番号を記憶するためのウエイ記憶部と、
前記ウエイ記憶部に記憶されるウエイ番号をインクリメントするためのウエイインクリメンタとを有し、
前記制御部は、指定エントリ番号のフラッシュが指示されると、前記タグ記憶部に記憶されるモディファイ情報を基に前記ウエイ記憶部に記憶されるウエイ番号及び前記指定エントリ番号のキャッシュデータがモディファイされているか否かを判断し、モディファイされていれば前記タグアドレスを基に該キャッシュデータをメインメモリにコピーバックし、前記インクリメントによる次のウエイ番号及びエントリ番号の組みの処理を繰り返す付記８記載のキャッシュメモリシステム。
（付記１０）前記タグ記憶部は、前記キャッシュデータ記憶部に記憶される各ウエイ番号及び各エントリ番号のキャッシュデータが有効か否かを示す有効情報を記憶し、
前記制御部は、前記モディファイ情報及び前記有効情報を基に前記キャッシュデータがモディファイされ、かつ有効であると判断すれば前記タグアドレスを基に該キャッシュデータをメインメモリにコピーバックする付記９記載のキャッシュメモリシステム。
（付記１１）さらに、前記制御部に指定エントリ番号のフラッシュの指示を行うための指示部を有する付記９記載のキャッシュメモリシステム。
（付記１２）さらに、前記キャッシュデータ記憶部内のキャッシュデータをコピーバックするためのメインメモリを有する付記９記載のキャッシュメモリシステム。
（付記１３）前記キャッシュデータ記憶部は、前記メインメモリよりもアクセス速度が速い付記１２記載のキャッシュメモリシステム。
（付記１４）前記メインメモリは、前記タグアドレス及び前記エントリ番号に対応するアドレスを有する付記１２記載のキャッシュメモリシステム。
（付記１５）ウエイ番号及びエントリ番号に対応するキャッシュデータを記憶するためのキャッシュデータ記憶部と、
前記キャッシュデータ記憶部に記憶される各ウエイ番号及び各エントリ番号のキャッシュデータのタグアドレスと該キャッシュデータがモディファイされたか否かを示すモディファイ情報を記憶するタグ記憶部と、
指定ウエイ番号のフラッシュが指示されると、前記タグ記憶部に記憶されるタグアドレス及びモディファイ情報を基に前記指定ウエイ番号においてモディファイされているキャッシュデータをすべてメインメモリにコピーバックする制御部と
を有するキャッシュメモリシステム。
（付記１６）さらに、フラッシュ対象のエントリ番号を記憶するためのエントリ記憶部と、
前記エントリ記憶部に記憶されるエントリ番号をインクリメントするためのエントリインクリメンタとを有し、
前記制御部は、指定ウエイ番号のフラッシュが指示されると、前記タグ記憶部に記憶されるモディファイ情報を基に前記エントリ記憶部に記憶されるエントリ番号及び前記指定ウエイ番号のキャッシュデータがモディファイされているか否かを判断し、モディファイされていれば前記タグアドレスを基に該キャッシュデータをメインメモリにコピーバックし、前記インクリメントによる次のウエイ番号及びエントリ番号の組みの処理を繰り返す付記１５記載のキャッシュメモリシステム。
（付記１７）前記タグ記憶部は、前記キャッシュデータ記憶部に記憶される各ウエイ番号及び各エントリ番号のキャッシュデータが有効か否かを示す有効情報を記憶し、
前記制御部は、前記モディファイ情報及び前記有効情報を基に前記キャッシュデータがモディファイされ、かつ有効であると判断すれば前記タグアドレスを基に該キャッシュデータをメインメモリにコピーバックする付記１６記載のキャッシュメモリシステム。
（付記１８）さらに、前記制御部に指定ウエイ番号のフラッシュの指示を行うための指示部を有する付記１６記載のキャッシュメモリシステム。
（付記１９）さらに、前記キャッシュデータ記憶部内のキャッシュデータをコピーバックするためのメインメモリを有する付記１６記載のキャッシュメモリシステム。
（付記２０）前記キャッシュデータ記憶部は、前記メインメモリよりもアクセス速度が速い付記１９記載のキャッシュメモリシステム。
（付記２１）前記メインメモリは、前記タグアドレス及び前記エントリ番号に対応するアドレスを有する付記１９記載のキャッシュメモリシステム。
【００５５】
【発明の効果】
以上説明したように、フラッシュを行う際に、１回のフラッシュ指示（又はエントリ数分又はウエイ数分の指示）を出せば、全キャッシュデータをフラッシュすることができる。これにより、フラッシュ動作を高速に行うことができ、ＯＳのプロセススイッチ時等の高速化を図ることができる。
【図面の簡単な説明】
【図１】キャッシュメモリシステムの概略構成例を示す図である。
【図２】メインメモリ及びキャッシュユニットのデータ構成を示す図である。
【図３】ウエイ０のタグメモリの内容例を示す図である。
【図４】本発明の第１の実施形態によるフラッシュ動作を行うキャッシュメモリシステムの構成例を示す図である。
【図５】本発明の第２の実施形態によるフラッシュ動作を行うキャッシュメモリシステムの構成例を示す図である。
【図６】本発明の第３の実施形態によるフラッシュ動作を行うキャッシュメモリシステムの構成例を示す図である。
【図７】従来技術によるフラッシュ動作を行うキャッシュメモリシステムの構成例を示す図である。
【符号の説明】
１００  ＣＰＵ
１０１  プロセッサコア
１０２  キャッシュユニット
１１０  メインメモリ
４０１  プロセッサコア
４０２  キャッシュユニット
４１０  メインメモリ
４２１  リクエスト部
４３１  制御回路
４３２  タグメモリ
４３３  キャッシュメモリ
４３４  エントリ保持部
４３５  エントリインクリメンタ
４３６  ウエイ保持部
４３７  ウエイインクリメンタ
【図１】
2004240584.tif 000003
【図２】
2004240584.tif 000004
【図３】
2004240584.tif 000005
【図４】
2004240584.tif 000006
【図５】
2004240584.tif 000007
【図６】
2004240584.tif 000008
【図７】
2004240584.tif 000009