(57)【要約】【課題】キャッシュデータ全体に占めるダーティデータの割合が高い場合において必要な面積および処理時間の増大を抑止できるキャッシュメモリシステムを提供する。【解決手段】ダーティテーブル制御回路３１は、ライトリクエストによりダーティテーブルメモリ３０に記憶された第２アドレスの数が所定数を超えた場合すなわちダーティテーブルメモリ３０が溢れた場合には、オーバーフロービットにその旨を記憶する。そして、ダーティテーブルメモリ３０が溢れた状態でコピーバックを行うときは、ダーティテーブルメモリ３０を参照せず、タグ部２０に記憶されたダーティビットをスキャンすることにより、第２アドレスを検知する。【選択図】図１
2008305305.tif 000002
【特許請求の範囲】
【請求項１】
メインメモリの一部領域に記憶されているデータを記憶するキャッシュメモリと、
前記一部領域内の第１アドレスと当該第１アドレスに対応する前記キャッシュメモリ内の第２アドレスとに記憶されているデータに差異が生じていることを示すダーティビットと、
前記差異が生じている前記第２アドレスを記憶するためのダーティテーブルメモリと
を備え、
前記ダーティテーブルメモリに記憶された前記第２アドレスの数が所定数を超えた場合には、前記ダーティテーブルメモリを参照せず前記ダーティビットを参照し、
前記ダーティテーブルメモリに記憶された前記第２アドレスの数が所定数を超えない場合には、前記ダーティビットを参照せず前記ダーティテーブルメモリを参照する
キャッシュメモリシステム。
【請求項２】
メインメモリの一部領域に記憶されているデータを記憶するキャッシュメモリと、
前記一部領域内の第１アドレスと当該第１アドレスに対応する前記キャッシュメモリ内の第２アドレスとに記憶されているデータに差異が生じていることを示すダーティビットと、
前記差異が生じている前記第２アドレスを記憶するためのダーティテーブルメモリと
を備え、
前記ダーティテーブルメモリに記憶された前記第２アドレスの数が所定数を超えた場合には、前記第２アドレスから前記第１アドレスへデータを書き戻すとともに前記ダーティテーブルメモリから前記第２アドレスをクリアする
キャッシュメモリシステム。
【請求項３】
請求項１乃至請求項２に記載のキャッシュメモリシステムを備え、
請求項１又は請求項２に記載のキャッシュメモリシステムを用いた処理、あるいは前記ダーティテーブルメモリを全く参照せず前記ダーティビットのみを参照する処理を、ソフトウェアにより選択できる
キャッシュメモリシステム。
【請求項４】
請求項１又は請求項２に記載のメモリシステムであって、
前記第２アドレスは、ラインアドレスおよびウェイ番号を含んで構成される
キャッシュメモリシステム。
【請求項５】
請求項１又は請求項２に記載のメモリシステムであって、
前記第２アドレスは、ラインアドレスを含みウェイ番号を含まず構成される
キャッシュメモリシステム。
【請求項６】
請求項１又は請求項２に記載のメモリシステムであって、
前記第２アドレスは、ラインアドレスを含まずウェイ番号を含んで構成される
キャッシュメモリシステム。
【請求項７】
請求項１又は請求項２に記載のメモリシステムであって、
前記第２アドレスは、ラインアドレスの上位の一部のみを含んで構成される
キャッシュメモリシステム。
【請求項８】
請求項４乃至請求項７のいずれかに記載のメモリシステムであって、
前記第２アドレスの構成をソフトウェアにより選択できる
キャッシュメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャッシュメモリシステムに関し、特に、必要な面積および処理時間の増大を抑止するための技術に関する。
【背景技術】
【０００２】
従来から、低速大容量のメインメモリに高速小容量のキャッシュメモリを組み合わせたキャッシュメモリシステムが採用されている。このようなキャッシュメモリシステムにおいては、メインメモリのうち、演算処理装置（ＭＰＵ）により呼び出される確率が比較的に高い一部領域に記憶されているデータを、予めキャッシュメモリへコピーしておき、キャッシュメモリ内のデータを用いて演算処理を行っている。演算処理を行われたキャッシュデータは、所定のタイミングで、メインメモリへ書き戻される（コピーバック）。
【０００３】
このコピーバックは、最も基本的な手法としては、キャッシュメモリにダーティビットと呼ばれるビットを付加することにより行われる。すなわち、メインメモリの一部領域内の第１アドレスに対応するキャッシュメモリ内の第２アドレスにおいて、記憶されているデータが、演算処理等の結果、第１アドレスとは異なるものとなった場合（すなわちデータがダーティとなった場合）には、この第２アドレスに対応するダーティビットが”１”に設定される。そして、コピーバックの際には、全ての第２アドレスに対応する全てのダーティビットを順次参照すなわちスキャンし、ダーティビットが”１”である第２アドレスについてのみ、キャッシュメモリからメインメモリへのデータのコピーバックが行われる。
【０００４】
しかし、上記の手法においては、コピーバックを行う際に、全てのダーティビットをスキャンする必要があるので、キャッシュデータ全体に占めるダーティデータの割合が低い場合には、処理時間が長くなるという問題点があった。
【０００５】
そこで、特許文献１等に示されるように、ダーティビットを設ける代わりに、ダーティなデータが記憶されている第２アドレスを記憶するためのダーティテーブルメモリと呼ばれるメモリを設け、コピーバック時にはダーティテーブルメモリに記憶されている第２アドレスのデータのみを書き戻す手法が提案されている。これにより、全てのダーティビットをスキャンする必要がなくなるので、処理時間を低減することが可能となる。
【０００６】
【特許文献１】特開平９−１９８３１２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
ダーティテーブルメモリを設けた場合には、一のダーティデータを示すためには、その第２アドレスを記憶する必要があるので、一のダーティデータを示すために１ビットのみを記憶すればよいダーティビットに比較して、必要な記憶容量は多くなる。
【０００８】
従って、ダーティテーブルメモリを設けた場合には、キャッシュデータ全体に占めるダーティデータの割合が高くなると、記憶すべきデータ量が大きくなってしまうとともに処理時間も長くなる。一方、ダーティビットを設けた場合には、記憶すべきデータ量および処理時間は、ダーティデータの割合にあまり依存しない。
【０００９】
すなわち、ダーティテーブルメモリを設けた場合には、キャッシュデータ全体に占めるダーティデータの割合が高くなると、必要な記憶容量すなわちリソース（面積）が大きくなるとともに必要な処理時間が長くなるという問題点があった。
【００１０】
本発明は上記の問題点を解決するためになされたものであり、キャッシュデータ全体に占めるダーティデータの割合が高い場合において必要な面積および処理時間の増大を抑止できるキャッシュメモリシステムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明の一実施の形態において、ダーティテーブル制御回路は、ライトリクエストによりダーティテーブルメモリに記憶された第２アドレスの数が所定数を超えた場合すなわちダーティテーブルメモリが溢れた場合には、オーバーフロービットにその旨を記憶する。そして、ダーティテーブルメモリが溢れた状態でコピーバックを行うときは、ダーティテーブルメモリを参照せず、タグ部に記憶されたダーティビットをスキャンすることにより、第２アドレスを検知する。
【発明の効果】
【００１２】
本発明においては、ダーティテーブルメモリが溢れた状態でコピーバックを行うときはダーティテーブルメモリを参照せずダーティビットを参照する。従って、キャッシュデータ全体に占めるダーティデータの割合が高い場合において必要な面積および処理時間の増大を抑止できる。
【発明を実施するための最良の形態】
【００１３】
＜実施の形態１＞
図１は、実施の形態１に係るキャッシュメモリシステムの一部の構成を模式的に示すブロック図である。このキャッシュメモリシステムは、一のアドレス（タグアドレス＋ラインアドレス）にｎ（ｎは２以上の自然数）の記憶領域（ウェイ）を対応付けるｎウェイセットアソシアティブ方式を採用するものである。すなわち、このキャッシュメモリシステムにおいて、キャッシュメモリの記憶領域は、タグアドレスとラインアドレスとウェイ番号とで指定される。図１においては、タグアドレス＝１２、ラインアドレス＝３４、およびウェイ番号＝０で、記憶領域が指定される場合が示されている。なお、タグアドレスは、書き込みおよび読み出しを要求するためのリクエストアドレス＝１２３４の上位ビットのみを取り出したものであり、ラインアドレスは、リクエストアドレス＝１２３４の下位ビットのみを取り出したものである。
【００１４】
図１に示されるように、キャッシュメモリシステムは、データ部１０と、データ入出力制御回路１１と、タグ部２０と、タグ部制御回路２１と、ラインデコーダ２２と、ダーティテーブル３０と、ダーティテーブル制御回路３１と、制御レジスタ４０とを備えている。なお、制御レジスタ４０については、実施の形態２以降で説明する。
【００１５】
データ部１０は、メインメモリ（図示しない）の一部領域に記憶されているデータをキャッシュデータとして記憶するためのキャッシュメモリ（本体）である。
【００１６】
タグ部２０は、データ部１０の各記憶領域に記憶されているデータが有効すなわちバリッド（Ｖ：Varid）である場合にのみ”１”となるバリッドビットと、前記データがダーティ（Ｄ：Dirty）である場合にのみ”１”となるダーティビットとを有する属性領域（アトリビュート）である。すなわち、ダーティビットは、メインメモリの一部領域内の第１アドレス・当該第１アドレスに対応する前記キャッシュメモリ内の第２アドレス間において記憶されているデータに差異が生じていることを示すためのビットである。なお、ダーティビットは、有効なデータについてダーティであるかどうかを示すためのものであるので、ダーティビットが”１”となるのは、バリッドビットが”１”となる場合に限られる。従って、書き戻しすなわちコピーバックの際のダーティビットのスキャンは、バリッドビットが”１”であるアドレスについてのみ行われる。
【００１７】
例えば、図１を参照して、タグ部２０において、データ部１０のキャッシュデータの位置を示す第２アドレスが、タグアドレス＝１２、ラインアドレス＝３４、およびウェイ番号＝０で指定されており、当該第２アドレスがバリッドであり且つダーティである場合を例にとり説明する。この場合には、タグ部２０において、ウェイ番号＝０で指定されるウェイのうちラインアドレス＝３４に対応するラインには、タグアドレス＝１２が記憶されているが、このラインに対応して設けられたバリッドビットおよびダーティビットがいずれも１に設定される。
【００１８】
ダーティテーブルメモリ３０は、前記差異が生じている前記第２アドレスを記憶するためのメモリである。図１においては、ラインアドレス＝３４およびウェイ番号＝０を記憶することにより、前記第２アドレスを指定している。
【００１９】
ラインデコーダ２２は、入力されるラインアドレス＝３４に対応するラインを全てのウェイ（ウェイ番号＝０〜ｎ）に対して指定する。
【００２０】
タグ部制御回路２１は、ラインデコーダ２２で指定されたラインのうち、タグアドレス＝１２が記憶されているウェイを全てのウェイから探索し検知する（ここでは、ウェイ番号＝０のウェイが検知される）。これにより、タグアドレス＝１２とラインアドレス＝３４とからなるリクエストアドレスに基づき、ラインアドレス＝３４とウェイ番号＝０とからなる第２アドレスを検知することができる。
【００２１】
データ入出力制御回路１１は、タグ部制御回路２１、図示しないＭＰＵおよびメインメモリからの信号に基づき、データ部１０の第２アドレスの位置におけるキャッシュデータの書き込みおよび読み出しを行う。
【００２２】
ダーティテーブル制御回路３１は、タグ部制御回路２１からの信号に基づき、ダーティテーブルメモリ３０における第２アドレス（ラインアドレス＝３４およびウェイ番号＝０）の書き込みおよび読み出しを行う。
【００２３】
図１のキャッシュメモリシステムは、ＭＰＵからの要求によりデータ部１０へデータが書き込まれる度に、対応する第２アドレス（ラインアドレスおよびウェイ番号）をダーティテーブルメモリ３０へ順に追加していく。そして、所定のタイミングで、ダーティテーブルメモリ３０に記憶された第２アドレスに対応するキャッシュデータに関して、データ部１０からメインメモリへのコピーバックを行うとともに、コピーバックを行われた第２アドレス（ラインアドレスおよびウェイ番号）をダーティテーブルメモリ３０からクリアする。
【００２４】
本実施の形態に係るキャッシュメモリシステムにおいて、ダーティテーブルメモリ３０の記憶容量は、データ部１０の記憶容量の５〜１０％と比較的に小さく、比較的に溢れやすい。ダーティテーブル制御回路３１は、ライトリクエストによりダーティテーブルメモリ３０に記憶された第２アドレスの数が所定数を超えた場合すなわちダーティテーブルメモリ３０が溢れた場合には、オーバーフロービットにその旨を記憶する。そして、ダーティテーブルメモリ３０が溢れた状態でコピーバックを行うときは、ダーティテーブルメモリ３０を参照せず、タグ部２０に記憶されたダーティビットをスキャンすることにより、第２アドレスを検知する。
【００２５】
また、ダーティテーブル制御回路３１は、ライトリクエストによりダーティテーブルメモリ３０に記憶された第２アドレスの数が所定数を超えていない状態すなわちダーティテーブルメモリ３０が溢れていない状態でコピーバックを行うときは、ダーティビットをスキャンせず、ダーティテーブルメモリ３０を参照する。
【００２６】
図２は、図１のキャッシュメモリシステムの動作を示すフローチャートである。
【００２７】
図２（ａ）に示されるように、ＭＰＵからライトリクエストを受けると、ステップＳ１において、ダーティテーブル制御回路３１は、ダーティテーブルメモリ３０が全て埋まっているかどうかを確認することにより、ダーティテーブルメモリ３０が溢れているかどうかを確認する。そして、ダーティテーブルメモリ３０が溢れていない場合にはステップＳ２へ進み、ダーティテーブルメモリ３０が溢れている場合にはステップＳ３へ進む。
【００２８】
ステップＳ２においては、ダーティテーブル制御回路３１は、ダーティテーブルメモリ３０へ、ライトリクエストに対応するエントリすなわちラインアドレスとウェイ番号とからなる第２アドレスを追加する。そして、ステップＳ４へ進む。
【００２９】
ステップＳ３においては、ダーティテーブル制御回路３１は、ダーティテーブルメモリ３０が溢れた旨をオーバーフロービット等に記憶する。そして、ステップＳ４へ進む（すなわち、ステップＳ３においては、ステップＳ２とは異なり、エントリ追加は行われない）。
【００３０】
ステップＳ４においては、データ入出力制御回路１１は、データ部１０へのデータの書き込みおよびタグ部２０の更新（ダーティービットの設定等）を行う（なお、必要に応じて、メインメモリにアクセスする）。これにより、ＭＰＵからライトリクエストに応答したデータ部１０へのデータの書き込みが行われる。
【００３１】
また、図２（ｂ）に示されるように、コピーバック要求を受けると、ダーティテーブル制御回路３１は、ステップＳ１１において、オーバーフロービットを参照することにより、ダーティテーブルメモリ３０が溢れているかどうかを確認する。そして、ダーティテーブルメモリ３０が溢れていない場合にはステップＳ１２へ進み、ダーティテーブルメモリ３０が溢れている場合にはステップＳ１３へ進む。
【００３２】
ステップＳ１２においては、ダーティテーブル制御回路３１は、ダーティテーブルメモリ３０を参照し、エントリされているデータ部１０の第２アドレスに関して、対応するメインメモリの第１アドレスへのコピーバックを行う。
【００３３】
ステップＳ１３においては、ダーティテーブル制御回路３１は、タグ部２０のダーティビットをスキャンし、ダーティビットが”１”に設定されているデータ部１０の第２アドレスに関して、対応するメインメモリの第１アドレスへのコピーバックを行う。これにより、コピーバック要求に応答したコピーバックが行われる。
【００３４】
このように、本実施の形態に係るキャッシュメモリシステムは、ダーティテーブルメモリ３０が溢れた状態でコピーバックを行うときはダーティテーブルメモリ３０を参照せずダーティビットを参照する。従って、キャッシュデータ全体に占めるダーティデータの割合が高い場合において必要な面積および処理時間の増大を抑止できる。
【００３５】
＜実施の形態２＞
実施の形態１においては、図２を参照して、ダーティテーブルメモリ３０が溢れている場合には、ダーティテーブルメモリ３０を参照せずタグ部２０のダーティビットを参照する動作について説明した。しかし、これに限らず、ダーティテーブルメモリ３０が溢れている場合には、直ちにコピーバックを行うようにしてもよい。
【００３６】
図３は、実施の形態２に係るキャッシュメモリシステムの動作を示すフローチャートである。図３は、図２において、ステップＳ３に代えてステップＳ３−１を設ける（図３（ａ））とともに、ステップＳ１１，Ｓ１３を省いた（図３（ｂ））ものである。
【００３７】
図３（ａ）に示されるように、ステップＳ１において、ダーティテーブルメモリ３０が溢れている場合には、ステップＳ３−１において、ダーティテーブルメモリ３０を参照し、エントリされているデータ部１０の第２アドレスの全てに関してコピーバックを行うとともに、ダーティテーブルメモリ３０にエントリされているデータ部１０の第２アドレスの全てをクリアする。これにより、ダーティテーブルメモリ３０が溢れていない（全て空いている）状態となる。従って、図３（ｂ）に示されるように、ステップＳ１１，１３が不要となり、コピーバック要求に応答して、ステップＳ１２のみが実行される（すなわち、ダーティビットは参照されない）。
【００３８】
このように、本実施の形態に係るキャッシュメモリシステムは、ダーティテーブルメモリ３０に記憶された第２アドレスの数が所定数を超えた場合には、第２アドレスから第１アドレスへデータを書き戻すとともにダーティテーブルメモリ３０から第２アドレスをクリアする。従って、実施の形態１に比較して、データ部１０に記憶されているダーティなデータの量が少ない状態を保つことができるので、さらに処理時間を低減できる。
【００３９】
なお、本実施の形態に係る図３の動作と実施の形態１に係る図２の動作とは、制御レジスタ４０を操作することによりソフトウェアから選択できるようにしてもよい。すなわち、いずれの動作を行うかを予め制御レジスタ４０に設定しておき、タグ部制御回路２１やダーティテーブル制御回路３１が制御レジスタ４０を参照しつついずれかの動作を行うようにアプリケーションプログラムを組めばよい。これにより、アプリケーションの処理内容に応じて適切なコピーバック方法を選択できるので、さらに処理時間を低減できる。
【００４０】
＜実施の形態３＞
実施の形態１においては、図１を参照して、ダーティテーブルメモリ３０へエントリされる第２アドレスがラインアドレスとウェイ番号とからなる場合について説明した。しかし、第２アドレスの構成は、ラインアドレスとウェイ番号とに限らず、データ部１０の態様によって、異ならせてもよい。
【００４１】
図４〜５は、実施の形態３に係るキャッシュメモリシステムの一部の構成を模式的に示すブロック図である。
【００４２】
図４は、図１において、ウェイ番号を省きラインアドレス（例えば”３４”）のみを第２アドレスとしてダーティテーブルメモリ３０へエントリさせたものである。これは、一のラインに対応するｎのウェイを全て一単位として纏めて一のダーティビットを設定するような態様において有効である。
【００４３】
また、あるいは、ラインアドレスの上位の一部のみ（例えば”３”）を第２アドレスとしてダーティテーブルメモリ３０へエントリさせてもよい。これは、複数のラインにそれぞれ対応するｎのウェイを全て一単位として纏めて一のダーティビットを設定するような態様において有効である。なお、ラインアドレスは、２進数で表されるので、例えば下位３ビットを省いた場合には、８ラインにそれぞれ対応するｎのウェイを全て一単位として纏めることとなる。
【００４４】
また、図５は、図１において、ラインアドレスを省きウェイ番号のみを第２アドレスとしてダーティテーブルメモリ３０へエントリさせたものである。これは、一のウェイに対応する全ラインを一単位として纏めて一のダーティビットを設定するような態様において有効である。
【００４５】
このように、本実施の形態に係るキャッシュメモリシステムは、実施の形態１において、複数のラインやウェイを纏めて処理する。従って、実施の形態１に比較して、さらに処理時間を低減できる。
【００４６】
なお、ダーティテーブルメモリ３０へエントリする第２アドレスの構成を上記のうちのいずれにするかは、制御レジスタ４０を操作することによりソフトウェアから選択できるようにしてもよい。すなわち、いずれの動作を行うかを予め制御レジスタ４０に設定しておき、タグ部制御回路２１やダーティテーブル制御回路３１が制御レジスタ４０を参照しつついずれかの動作を行うようにアプリケーションプログラムを組めばよい。これにより、アプリケーションの処理内容に応じて適切なコピーバック方法を選択できるので、さらに処理時間を低減できる。
【図面の簡単な説明】
【００４７】
【図１】実施の形態１に係るキャッシュメモリシステムの一部の構成を模式的に示すブロック図である。
【図２】実施の形態１に係るキャッシュメモリシステムの動作を示すフローチャートである。
【図３】実施の形態２に係るキャッシュメモリシステムの動作を示すフローチャートである。
【図４】実施の形態３に係るキャッシュメモリシステムの一部の構成を模式的に示すブロック図である。
【図５】実施の形態３に係るキャッシュメモリシステムの一部の構成を模式的に示すブロック図である。
【符号の説明】
【００４８】
１０  データ部、１１  データ入出力制御回路、２０  タグ部、２１  タグ部制御回路、２２  ラインデコーダ、３０  ダーティテーブル、３１  ダーティテーブル制御回路、４０  制御レジスタ。
【図１】
2008305305.tif 000003
【図２】
2008305305.tif 000004
【図３】
2008305305.tif 000005
【図４】
2008305305.tif 000006
【図５】
2008305305.tif 000007