(57)【要約】本発明のキャッシュメモリは、第１キャッシュメモリと並列に動作する第２キャッシュメモリと、第１キャッシュメモリおよび第２キャッシュメモリの両者がミスヒットした場合に、ミスヒットしたメモリアクセス対象データの属性に関連する真偽を判定する判定手段と、真であると判定された場合に、第２キャッシュメモリにメモリデータを格納し、偽であると判定された場合に、第１キャッシュメモリにメモリデータを格納する制御手段とを備える。
2006109421.tif 000002
【特許請求の範囲】
【請求項１】
第１キャッシュメモリと、
第１キャッシュメモリと並列に動作する第２キャッシュメモリと、
第１キャッシュメモリおよび第２キャッシュメモリの両者がミスヒットした場合に、ミスヒットしたメモリアクセス対象データの属性に関連する真偽を判定する判定手段と、
真であると判定された場合に、第２キャッシュメモリにメモリデータを格納し、偽であると判定された場合に、第１キャッシュメモリにメモリデータを格納する制御手段とを備えることを特徴とするキャッシュメモリ。
【請求項２】
前記アクセスするデータの属性は、アクセスアドレスであり、
前記判定手段は、前記アクセスアドレスが特定のアドレス範囲内であるか否かを判定することを特徴とする請求項１記載のキャッシュメモリ。
【請求項３】
前記キャッシュメモリは、さらに、
前記特定のアドレス範囲を保持する保持手段を備えることを特徴とする請求項２記載のキャッシュメモリ。
【請求項４】
前記保持手段はプロセッサによりアクセスされる
ことを特徴とする請求項３に記載の何れかのキャッシュメモリ。
【請求項５】
前記第２キャッシュメモリの容量は、前記第１キャッシュメモリよりも小さい
ことを特徴とする請求項１に記載の何れかのキャッシュメモリ。
【請求項６】
前記第１キャッシュメモリはセットアソシエイティブキャッシュメモリであり、
前記第２キャッシュメモリはフルアソシエイティブキャッシュメモリである
ことを特徴とする請求項５記載のキャッシュメモリ。
【請求項７】
前記第１キャッシュメモリはＮ１個のウェイを有し、前記第１キャッシュメモリの各ウェイはＮ２個のエントリを有し、
前記第２キャッシュメモリはＭ個のエントリを有し、
ＭはＮ１よりも小さく、Ｎ２よりも小さい
ことを特徴とする請求項５記載のキャッシュメモリ。
【請求項８】
前記Ｍは２であることを特徴とする請求項７記載のキャッシュメモリ。
【請求項９】
前記保持手段はプロセッサによりアクセスされる
ことを特徴とする請求項８に記載の何れかのキャッシュメモリ。
【請求項１０】
前記第２キャンシュメモリの容量は、前記第１キャッシュメモリよりも小さい
ことを特徴とする請求項３に記載の何れかのキャッシュメモリ。
【請求項１１】
前記第１キャッシュメモリはセットアソシエイティブキャッシュメモリであり、
前記第２キャッシュメモリはフルアソシエイティブキャッシュメモリである
ことを特徴とする請求項１０記載のキャッシュメモリ。
【請求項１２】
前記第１キャッシュメモリはＮ１個のウェイを有し、前記第１キャッシュメモリの各ウェイはＮ２個のエントリを有し、
前記第２キャッシュメモリはＭ個のエントリを有し、
ＭはＮ１よりも小さく、Ｎ２よりも小さい
ことを特徴とする請求項１０記載のキャッシュメモリ。
【請求項１３】
前記Ｍは２であることを特徴とする請求項１２記載のキャッシュメモリ。
【請求項１４】
前記保持手段はプロセッサによりアクセスされる
ことを特徴とする請求項１３に記載の何れかのキャッシュメモリ。
【発明の詳細な説明】
【技術分野】
【０００１】  本発明は、プロセッサのメモリアクセスを高速化するためのキャッシュメモリに関する。
【背景技術】
【０００２】  たとえば特許文献１および非特許文献１には、キャッシュミスを低減する技術としてビクティムキャッシュ（ｖｉｃｔｉｍ  ｃａｃｈｅ）が開示されている。【０００３】  図１は、従来技術におけるビクティムキャッシュを有するシステム例を示すブロック図である。同図のシステムは、ＣＰＵ５０１と、キャッシュメモリ５０２と、フルアソシエイティブ型のビクティムキャッシュ５０３とを有する。ビクティムキャッシュ５０３は、タグアドレスおよびラインデータを保持するエントリを少なくとも１つ有する。【０００４】  キャッシュメモリ５０２およびビクティムキャッシュ５０３においてミスヒットが生じると、キャッシュメモリ５０２において、ＬＲＵ（Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ）により最古のエントリがリプレース対象として選択される。選択されたエントリがリプレースされる前に、当該エントリの内容がキャッシュメモリ５０２からビクティムキャッシュ５０３に転送される。これにより、ビクティムキャッシュ５０３のエントリが更新される。この後、キャッシュメモリ５０２における選択されたエントリがリプレースされる。【０００５】  その結果、ビクティムキャッシュ５０３は、キャッシュメモリ５０２から最後に破棄された少なくとも１つのラインデータを常に保持する。【０００６】  これにより、ＣＰＵ５０１がキャッシュメモリ５０２から破棄されたデータに対して再度アクセスする場合には、ビクティムキャッシュ５０３にヒットする可能性が高いので、キャッシュミスによって生じるペナルティを低減している。【０００７】  特に、時間的局所性（アクセスしたデータが、近いうちにアクセスされやすい性質）が非常に強く、極めて短期間に集中し、かつ、空間的局所性（アクセスしたデータの近傍のデータが、近いうちにアクセスされやすい性質）も強く、極めて小さい領域に閉じているデータをアクセスする場合には、そのデータをアクセスする間、元々保持していたデータはビクティムキャッシュ５０３に保持されている可能性が高いため、キャッシュミスペナルティを削減するという効果が高い。
【特許文献１】米国特許第５２６１０６６号明細書
【非特許文献１】Ｊｏｕｐｐｉ，Ｎ．Ｐ．［１９９０］，″Ｉｍｐｒｏｖｉｎｇ  ｄｉｒｅｃｔ−ｍａｐｐｅｄ  ｃａｃｈｅ  ｐｅｒｆｏｒｍａｎｃｅ  ｂｙ  ｔｈｅ  ａｄｄｉｔｉｏｎ  ｏｆ  ａ  ｓｍａｌｌ  ｆｕｌｌｙ−ａｓｓｏｃｉａｔｉｖｅ  ｃａｃｈｅ  ａｎｄ  ｐｒｅｆｅｔｃｈ  ｂｕｆｆｅｒｓ，″Ｐｒｏｃ．１７ｔｈ  Ａｎｎｕａｌ  Ｉｎｔ’ｌ  Ｓｙｍｐｏｓｉｕｍ  ｏｎ  Ｃｏｍｐｕｔｅｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ，３６４−７３
【発明の開示】
【発明が解決しようとする課題】
【０００８】  しかしながら、上記従来技術によれば、たとえば、空間的局所性は強いが、時間的局所性が弱いデータに順にアクセスした場合、多くのキャッシュミスが発生してしまい、キャッシュメモリの使用効率が低下するという問題がある。空間的局所性が強く、時間的局所性が弱いデータとは、例えばデジタル信号処理におけるフィルタの係数の配列データなどであり、ＣＰＵから順次アクセスされるようなデータをいう。【０００９】  配列データがキャッシュエントリーの容量よりも大きい場合や、複数の配列データが存在する場合に、ＣＰＵが順次配列データをアクセスすると、キャッシュメモリの複数のエントリが配列データを保持するためにリプレースされてしまうことになる。【００１０】  その結果、キャッシュメモリの一部又は大部分のエントリが配列データに占有されてしまい、元々キャッシュメモリに保持されていたデータが破棄されているので、配列データのヒット率が向上する反面、元々保持されていたデータのヒット率が低下してしまうという問題が生じる。この場合、元々保持されていたデータを再度キャッシュに保持させるためにキャッシュエントリーがリプレースされるというペナルティが発生し、キャッシュメモリの使用効率が低下する。【００１１】  本発明は、時間的局所性が強く、極めて短期間に集中し、かつ、空間的局所性も強く、極めて小さい領域に閉じているデータだけでなく、空間的局所性が強く、かつ、時間的局所性が弱いデータに対してもメモリアクセス効率を向上させ、しかもキャッシュメモリ全体の使用効率を向上させるキャッシュメモリを提供することを目的とする。
【課題を解決するための手段】
【００１２】  上記目的を達成するために本発明のキャッシュメモリは、第１キャッシュメモリと、第１キャッシュメモリと並列に動作する第２キャッシュメモリと、第１キャッシュメモリおよび第２キャッシュメモリの両者がミスヒットした場合に、ミスヒットしたメモリアクセス対象データの属性に関連する真偽を判定する判定手段と、真であると判定された場合に、第２キャッシュメモリにメモリデータを格納し、偽であると判定された場合に、第１キャッシュメモリにメモリデータを格納する制御手段とを備える。【００１３】  この構成によれば、メモリアクセス対象データの属性に関連する真偽に応じて異なるキャッシュメモリが使用されるので、前記属性によって物理的にキャッシュを分離するとともに、アドレスに応じて不均質なキャッシングを実現している。前記真と判定される属性のデータによって第１キャッシュメモリのデータがリプレースされることがないので、第１キャッシュメモリの使用効率を向上させることができる。【００１４】  ここで、前記アクセスするデータの属性は、アクセスアドレスであり、前記判定手段は、前記アクセスアドレスが特定のアドレス範囲内であるか否かを判定するようにしてもよい。【００１５】  この構成によれば、前記アドレス範囲を空間的局所性が強いが、時間的局所性が弱いデータを記憶するメモリ領域に対応させることにより、空間的局所性が強いが、時間的局所性が弱いデータは第２キャッシュメモリに保持される。ここで、第１キャッシュメモリを汎用的な構成にし、第２キャッシュメモリを、空間的局所性が強いが、時間手局所性が弱いデータに対して特に効率的な構成をとることにより、第２キャッシュメモリにおける空間的局所性が強いが、時間的局所性が弱いデータへのメモリアクセス効率を向上させることができる。しかも、汎用的に構成した第１キャッシュメモリのデータが、空間的局所性が強いが、時間的局所性が弱いデータによってリプレースされることがないので、第１キャッシュメモリの使用効率を向上させることができる。このように、キャッシュメモリ全体の使用効率を向上させることができる。【００１６】  ここで、前記第２キャッシュメモリの容量は、前記第１キャッシュメモリよりも小さくてもよい。【００１７】  ここで、前記第１キャッシュメモリはセットアソシエイティブキャッシュメモリであり、前記第２キャッシュメモリはフルアソシエイティブキャッシュメモリであってもよい。【００１８】  ここで、前記第１キャッシュメモリはＮ１個のウェイを有し、前記第１キャッシュメモリの各ウェイはＮ２個のエントリを有し、前記第２キャッシュメモリはＭ個のエントリを有し、ＭはＮ１よりも小さく、Ｎ２よりも小さいようにしてもよい。【００１９】  ここで、前記Ｍは２であるようにしてもよい。【００２０】  この構成によれば、第１キャッシュメモリに比べて第２キャッシュメモリの容量は極少ないので、少ないハードウェアの追加で製造コストをかけずに、キャッシュメモリ全体の使用効率を向上させることができる。【００２１】  ここで、前記保持手段はプロセッサによりアクセスされるようにしてもよい。【００２２】  この構成によれば、アドレス範囲はプロセッサからプログラマブルに設定��ることができる。【００２３】  また、キャッシュミス時に、アクセスするデータを第１キャッシュメモリに置くか、第２キャッシュメモリに置くかの判定は、データのアドレスに限らず、その他のデータに関する属性を持って判定しても良い。
【発明の効果】
【００２４】  本発明のキャッシュメモリによれば、アドレス空間によって物理的にキャッシュを分離するとともに、アドレスに応じて不均質なキャッシングを実現し、前記アドレス範囲内のメモリデータによって第１キャッシュメモリのデータがリプレースされることがないので、第１キャッシュメモリの使用効率を向上させることができる。【００２５】  たとえば、第１キャッシュメモリの使用効率を向上させ、キャッシュメモリ全体の使用効率を向上させることができる。【００２６】  さらに、少ないハードウェアの追加で製造コストをかけずに、キャッシュメモリ全体の使用効率を向上させることができる。【００２７】  また、プロセッサからプログラマブルにアドレス範囲を設定することができる。
【図面の簡単な説明】
【００２８】
【図１】図１は従来技術におけるビクティムキャッシュを有するシステム例を示すブロック図である。
【図２】図２は実施の形態１におけるキャッシュメモリの構成を示すブロック図である。
【図３】図３はデータエントリの構成を示す説明図である。
【図４】図４はメインキャッシュ内のアドレスエントリの構成を示す説明図である。
【図５】図５はサブキャッシュ内のアドレスエントリの構成を示す説明図である。
【図６】図６はアドレステーブルのアドレスエントリの構成を示す説明図である。
【図７】図７はテーブルエントリレジスタを設定するためのプログラム例を示す説明図である。
【図８】図８はサブキャッシュ属性が設定されたメモリ領域とサブキャッシュ２との関係を示す説明図である。
【図９】図９は各データに対するメモリアクセス回数の対応関係を示すパターンの一例を示す図である。
【図１０】図１０はプロセッサがメモリアクセスするときの制御部６の制御によるキャッシュメモリの動作を示すフローチャートである。
【図１１】図１１は実施の形態２におけるキャッシュメモリの構成を示すブロック図である。
【符号の説明】
【００２９】  １０００  キャッシュメモリ
１  メインキャッシュ
２  サブキャッシュ
３  アドレスレジスタ
４  アドレステーブル
５  比較器
６  制御部
００  ウェイ
１５  ウェイ
００００  エントリ
００００ａ  アドレスエントリ
００００ｄ  データエントリ
００１５ａ  アドレスエントリ
００１５ｄ  データエントリ
１２０  デコーダ
１５０  比較器
１６５  比較器
１７０  バスＩ／Ｆ
２０  ウェイ
２１  ウェイ
２００  エントリ
２００ａ  アドレスエントリ
２００ｄ  データエントリ
２０１ａ  アドレスエントリ
２０１ｄ  データエントリ
【発明を実施するための最良の形態】
【００３０】（実施の形態１）
図２は、実施の形態１におけるキャッシュシステムの構成を示すブロック図である。同図のようにキャッシュメモリ１０００は、メインキャッシュ１、サブキャッシュ２、アドレスレジスタ３、アドレステーブル４、比較器５および制御部６を備え、アドレステーブル４に設定されたアドレス範囲内のデータに対しては、第２キャッシュメモリにキャッシュし、アドレス範囲外のデータに対しては、第１キャッシュメモリにキャッシングするように構成されている。【００３１】  メインキャッシュ１は、セットアソシエイティブキャッシュメモリであり、１６個のウェイ００〜ウェイ１５、デコーダ１２０、１６個の比較器１５０〜比較器１６５、バスＩ／Ｆ１７０を備える。ウェイ００は、１６個のエントリ００００〜エントリ００１５を備える。ウェイ０１〜１５についてもウェイ００と同様であるので説明を省略する。【００３２】  エントリ００００は、タグアドレスを保持するためのアドレスエントリ００００ａとラインデータを保持するためのデータエントリ００００ｄを備える。エントリ０００１〜００１５についてもエントリ００００と同様の構成なので説明を省略する。【００３３】  デコーダ１２０は、アドレスレジスタ３に保持されたメモリアクセスアドレス中の一部（セットインデックスと呼ぶ。）をデコードし、１６個のウェイ００〜ウェイ１５のそれぞれから１つずつエントリを選択する。各ウェイから１つずつ選択されたエントリからなる１６個のエントリをセットと呼ぶ。選択された１６個のエントリは、各アドレスエントリに保持されたタグアドレスを比較器１５０〜１６５に出力する。【００３４】  比較器１５０は、ウェイ００に対応して設けられ、デコーダ１２０によって選択されたエントリから出力される有効なタグアドレスとアドレスレジスタ３から出力されるタグとを比較し、一致する場合にはウェイ００にヒットしたことを示すヒット信号を制御部６に出力する。当該タグアドレスが有効であるか否かは当該エントリから出力されるバリッドビットによる。つまり、バリッドビットが有効である場合のみ、比較器１５０は比較結果を出力する。比較器１５１〜比較器１６５は、ウェイ０１〜１５に対応する点以外は比較器１５０と同様なので説明を省略する。【００３５】  バスＩ／Ｆ１７０は、デコーダ１２０によって選択されたセット中のヒットしたエントリ中のデータエントリと、データバスとの間でデータを入出力するためのインタフェースである。【００３６】  サブキャッシュ２は、フルアソシエイティブキャッシュメモリであり、ウェイ２０、ウェイ２１、比較器２５０、比較器２５１、バスＩ／Ｆ２７０を備える。【００３７】  ウェイ２０は、１個のエントリ２００を有する。エントリ２００は、タグアドレスを保持するためのアドレスエントリ２００ａとラインデータを保持するためのデータエントリ２００ｄを備える。ウェイ２１についても同様の構成なので説明を省略する。【００３８】  比較器２５０は、ウェイ２０に対応して設けられ、アドレスエントリ２００ａから出力される有効なタグアドレスと、アドレスレジスタ３から出力されるアドレス部分（タグとセットインデックス）とを比較し、一致する場合にはウェイ２０にヒットしたことを示すヒ��ト信号を制御部６に出力する。当該アドレス部分が有効であるか否かは当該エントリから出力されるバリッドビットによる。つまり、バリッドビットが有効である場合のみ、比較器２５０は比較結果を出力する。比較器２５１は、ウェイ２１に対応する点以外は比較器２５０と同様なので説明を省略する。【００３９】  アドレスレジスタ３は、プロセッサから出力されるメモリアクセスアドレスを保持する。同図の例では、アドレスレジスタ３は、３２ビット長である。また、ビットの重みを併記してある。アドレスレジスタ３中のタグおよびセットインデックス（ビット３１〜７）は、１２８バイトのラインデータを特定する。セットインデックス（ビット１０〜７）は、１６個のセットのうちの１つのセットを特定する。サブラインアドレス（ＳＬ：ビット６、５）はラインデータ中の４つのサブラインのうち１つのサブラインを特定する。バイトアドレス（ｂｙｔｅ＿Ａ）はサブライン中の１つのバイトデータを特定する。【００４０】  アドレステーブル４は、アドレス範囲を示す情報とサブキャッシュ２を使用するか否かを示すサブキャッシュ属性とを対応させて保持する。このアドレス範囲を示す情報は、プロセッサにより設定され、サブキャッシュ２を使用すべきデータのアドレス範囲を示す。【００４１】  比較器５は、第１キャッシュメモリおよび第２キャッシュメモリの両者がミスヒットした場合に、アドレステーブル４に保持されるアドレス範囲を示す情報と、アドレスレジスタ３から出力されるアドレス部分とを比較する。これにより、比較器５は、ミスヒットしたメモリアクセスアドレスが上記のアドレス範囲内であるか否かを判定する。【００４２】  制御部６は、メインキャッシュ１およびサブキャッシュ２においてキャッシュミスが発生した場合に、比較器５によってメモリアクセスアドレスが前記アドレス範囲内であると判定されたとき、第２キャッシュメモリにメモリデータを格納し、前記アドレス範囲内でないと判定されたとき、第１キャッシュメモリにメモリデータを格納する。【００４３】  図３は、メインキャッシュ１およびサブキャッシュ２におけるデータエントリのデータ構成を示す説明図である。各データエントリは１２８バイトのラインデータを保持する。１つのラインデータは、４つのサブラインデータ１〜サブラインデータ４に分割される。これにより、ライトバック、リプレースなどのキャッシュ操作は、ラインデータ単位のサブラインデータ単位のいずれでも可能になっている。【００４４】  図４は、メインキャッシュ１におけるアドレスエントリの構成を示す説明図である。タグアドレスは、アドレスレジスタ３のタグに対応する。バリッドビットＶ１〜Ｖ４は、サブラインデータ１〜４に対応し、対応するサブラインデータが有効か無効かを示す。ダーティビットＤ１〜Ｄ４は、サブラインデータ１〜４に対応し、対応するサブラインデータにプロセッサからの書き込みがあったか否かを示す。【００４５】  ＬＲＵビットＬは、セット内の１６個のエントリについてのプロセッサからのアクセス順序を示す。アクセス順序を１番〜１６番まで正確に表現するためには本来少なくとも４ビットが必要であるが、ここでは、１ビットのＬＲＵビットは、セット内のエントリ毎に１番（新しい）と２番（古い）の２つのアクセス順序を表現している。リプレース対象は、ＬＲＵビットＬが２番（古い）であるエントリのうちの１つのエントリが選択される。【００４６】  ウィークビットＷは、セット内の１６個のエントリのうち即リプレースしてよいか否かを示し、言い換えればアクセス順序を強制的に最古化するためのビットである。ウィークビットＷが１（最古）であるエントリは、ＬＲＵビットに関わらずリプレース対象として選択される。【００４７】  図５は、サブキャッシュ２におけるアドレスエントリの構成を示す説明図である。タグアドレスは、アドレスレジスタ３のビット３１〜７（タグおよびセットインデックス）に対応する。バリッドビットＶ１〜Ｖ４、ダーティビットＤ１〜Ｄ４、ＬＲＵビットＬは図４と同様であるので説明を省略する。【００４８】  図６は、アドレステーブル４に含まれるテーブルエントリレジスタの構成を示す説明図である。アドレステーブル４は少なくとも１つのテーブルエントリレジスタを備える。同図のテーブルエントリレジスタＴＥＲ１は、ベースアドレスＢＡ、ページサイズＰＳ、サブキャッシュ属性ＳＣ、バリッドビットＶを保持する。ベースアドレスＢＡは、アドレス範囲の先頭を示す。ページサイズＰＳは、当該アドレス範囲の大きさ（メモリ領域の大きさ）を示す。同図の例では、ＰＳ＝００ならアドレス範囲の大きさは４ｋバイト、ＰＳ＝１０なら１２８ｋバイト、ＰＳ＝１１なら４Ｍバイトである。サブキャッシュ属性ＳＣは、当該アドレス範囲に対応するメモリデータをサブキャッシュ２に割り当てるか否かを示す。バリッドビットは、テーブルエントリレジスタＴＥＲ１が有効か否かを示す。テーブルエントリレジスタはプロセッサから直接書き込みおよび読み出し可能である。【００４９】  図７は、アドレステーブル４内のテーブルエントリレジスタＴＥＲ１に設定するためのプログラム例を示す説明図である。同図において、１および２行目における”ｅｑｕ”は変数の値を定義するためのアセンブラに対する擬似命令である。各行の”／／”以下はコメントを意味する。１行目ではテーブルエントリレジスタＴＥＲ１のアドレスを変数ＡＤＲ＿ＴＥＲ１の値として定義している。２行目ではテーブルエントリレジスタＴＥＲ１に設定すべきデータ（０ｘ９０００２２０５）を変数ＤＡＴ＿ＴＥＲ１の値として定義している。この例では、ベースアドレスＢＡは０ｘ９０００２０００番地、ページサイズＰＳは１０（１２８ｋバイト）、サブキャッシュ属性ＳＣは１（サブキャッシュに割り当てる）、バリッドビットＶは１（有効）を意味する。６行目のｍｏｖ命令は、変数ＡＤＲ＿ＴＥＲ１の値をレジスタｒ２８に転送する命令である。７行目のｍｏｖ命令は、変数ＤＡＴ＿ＴＥＲ１の値をレジスタｒ２９に転送する命令である。８行目のｓｔ命令は、レジスタｒ２８の内容をアドレスとして、レジスタｒ２９のデータを書き込む命令である。これにより、テーブルエントリレジスタＴＥＲ１に変数ＤＡＴ＿ＴＥＲ１の値が設定される。【００５０】  図８は、サブキャッシュ属性が設定されたメモリ領域とサブキャッシュ２との関係を示す説明図である。同図は図７のプログラム例によってサブキャッシュに割��当てられたメモリ領域を示す。すなわち、ベースアドレスＢＡ（０ｘ９０００２０００番地）からページサイズＰＳ（１２８ｋバイト）の大きさのメモリ領域のメモリデータは、メインキャッシュ１ではなくサブキャッシュ２にキャッシングされる。このメモリ領域は、例えば配列データＡ、Ｂなど空間的局所性が強いが、時間的局所性が弱いデータを格納するのに適している。また、このメモリ領域以外の領域のメモリデータはメインキャッシュ１にキャッシングされる。【００５１】  また、時間的局所性が強く、かつ、アクセスが極めて短期間に集中し、かつ、空間的局所性も強く、かつ、小さい領域（たとえば、ラインのサイズ以下、またはサブキャッシュ２のサイズ以下）に閉じているデータを格納するのに適しているのは明らかである。【００５２】  図９は、各データに対するメモリアクセス回数のパターンの一例を示す図である。同図は例えば動画の圧縮、伸張処理における各データのアクセス回数を示している。この場合、アクセス回数が少ないデータは広く存在し、逆に多くのアクセスが少ないデータに集中している傾向があることがわかる。そこで、この傾向を利用し、たとえば、サブキャッシュ２にはアクセス回数が少なく広く存在するデータ領域を、メインキャッシュ１にはアクセス回数が多く、メインキャッシュ１の大きさに収まる程度のデータ領域を割り当てることにより、メインキャッシュ１およびサブキャッシュ２を効率よく使用することができる。【００５３】  図１０は、プロセッサがメモリアクセスするときの制御部６の制御によるキャッシュメモリの動作を示すフローチャートである。同図において制御部６は、メモリアクセスがヒットした場合、つまりメモリアクセスアドレスを保持するアドレスレジスタ３のタグとメインキャッシュ１またはサブキャッシュ２に保持された何れかのタグアドレスとが一致する場合（Ｓ９１：ｙｅｓ）には、当該ヒットしたエントリに対してリードまたはライトを行う（Ｓ９２）。【００５４】  メモリアクセスがミスヒットした場合、メモリアクセスアドレスがアドレステーブル４に示されるアドレス範囲内であり（Ｓ９３：ｙｅｓ）、かつ当該アドレス範囲がサブキャッシュに割り当てられていれば（Ｓ９４：ｙｅｓ）、サブキャッシュ２のエントリをリプレースし、当該エントリにアクセスする（Ｓ９５）。また、メモリアクセスアドレスがアドレステーブル４に示されるアドレス範囲外であり（Ｓ９３：ｎｏ）、または当該アドレス範囲がサブキャッシュに割り当てられていなければ（Ｓ９４：ｎｏ）、メインキャッシュ１のエントリをリプレースし、当該エントリにアクセスする（Ｓ９５）。【００５５】  以上説明したように本実施の形態におけるキャッシュメモリによれば、メモリデータがアドレステーブル４に設定されたアドレス範囲内のデータであるか否かによって異なるキャッシュメモリが使用されるので、アドレス空間によって物理的にキャッシュを分離するとともに、アドレスに応じて不均質なキャッシングを実現している。前記アドレス範囲内のメモリデータによってメインキャッシュ１のデータがリプレースされることがないので、メインキャッシュ１の使用効率を向上させることができる。【００５６】  たとえば、アド��ステーブル４に設定されるアドレス範囲を、空間的局所性が強いが、時間的局所性が弱いデータを記憶するメモリ領域に対応させることにより、空間的局所性が強いが、時間的局所性が弱いデータはサブキャッシュ２に保持され、それ以外のデータはメインキャッシュ１に保持される。その結果、空間的局所性が強いが、時間的局所性が弱いデータへのメモリアクセス効率を向上させることができる。しかも、メインキャッシュ１のデータが、空間的局所性が強いが、時間的局所性が弱いデータによってリプレースされることがないので、第１キャッシュメモリの使用効率を向上させることができる。このように、キャッシュメモリ全体の使用効率を向上させることができる。【００５７】  また、メインキャッシュ１に比べてサブキャッシュ２はごく少ない容量で良いので、少ないハードウェアの追加で製造コストをかけずに、キャッシュメモリ全体の使用効率を向上させることができる。【００５８】  さらに、アドレステーブル４はプロセッサからプログラマブルに設定することができるので、アプリケーション毎またはタスク毎に柔軟にメインキャッシュ１とサブキャッシュ２を利用することができる。【００５９】  なお、アドレステーブル４をプログラマブルにする必要はなく、静的に割り当てても良いことは明らかである。【００６０】  以下、実施の形態１におけるキャッシュメモリの変形例について説明する。【００６１】  メインキャッシュ１は、１６ウェイセットアソシエイティブキャッシュメモリである場合の例を説明したが、ｎ（ｎは１６以外）ウェイセットアソシエイティブキャッシュメモリであってもよい。また、ウェイ毎に１６エントリを備える場合の例を説明したが、ｍ（ｍは１６以外）個のエントリを備えてもよい。【００６２】  サブキャッシュ２のエントリ数は、２個としてもよい。ハードウェア規模の増加を抑えること、およびハードウェアコストの増加を抑えるためには、サブキャッシュ２のエントリ数は１個から数個でよい。【００６３】  メインキャッシュ１は、セットアソシエイティブキャッシュメモリの例を説明したが、フルアソシエイティブキャッシュメモリ、ダイレクトマップキャッシュメモリであってもよい。【００６４】  サブキャッシュ２は、ダイレクトマップキャッシュメモリ、セットアソシエイティブキャッシュメモリであってもよい。【００６５】  さらに、メインキャッシュ１に図１に示したビクティムキャッシュを付加してもよい。また、サブキャッシュ２に図１に示したビクティムキャッシュを付加してもよい。【００６６】  （実施の形態２）
本実施の形態ではサブキャッシュを２つ備える構成について説明する。【００６７】  図１１は、実施の形態２におけるキャッシュメモリの構成を示すブロック図である。同図のキャッシュメモリ２０００は、図２に示したキャッシュメモリ１０００と比較して、サブキャッシュ２ａ、アドレステーブル４ａ、比較器５ａが新たに追加された点と、制御部６の代わりに制御部６ａを備える点とが異なっている。以下、図２と同じ点は説明を省略し、異なる点を中心に説明する。【００６８】  サブキャッシュ２ａは、サブキャッシュ２と同じくフルアソシエイティブキャッシュメモリである。【００６９】  アドレステーブル４ａは、サブキャッシュ２ａに割り当てるメモリ領域を示すアドレス範囲を保持する。【００７０】  比較器５ａは、アドレスレジスタ３のタグがアドレステーブル４ａに保持されるアドレス範囲に含まれるか否かを判定する。【００７１】  制御部６ａは、制御部６の機能に加えて、サブキャッシュ２ａを制御する。サブキャッシュ２ａはサブキャッシュ２と同時に動作させてもよいし、アプリケーションまたはタスクに応じて択一的に動作させてもよい。【００７２】  このように本実施の形態におけるキャッシュメモリ２０００によれば、複数のサブキャッシュを同時または択一的に動作させることができ、アプリケーションまたはタスクに応じて柔軟に利用することができ、キャッシュメモリ２０００の利用効率を向上させることができる。【００７３】  なお、実施の形態１で説明した変形例は本実施の形態においても同様に適用してよい。
【産業上の利用可能性】
【００７４】  本発明は、メモリアクセスを高速化するためのキャッシュメモリに適しており、例えば、オンチップキャッシュメモリ、オフチップキャッシュメモリ、データキャッシュメモリ、命令キャッシュメモリ等に適している。
【図１】
2006109421.tif 000003
【図２】
2006109421.tif 000004
【図３】
2006109421.tif 000005
【図４】
2006109421.tif 000006
【図５】
2006109421.tif 000007
【図６】
2006109421.tif 000008
【図７】
2006109421.tif 000009
【図８】
2006109421.tif 000010
【図９】
2006109421.tif 000011
【図１０】
2006109421.tif 000012
【図１１】
2006109421.tif 000013
【手続補正書】
【提出日】平成18年7月18日(2006.7.18)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
第１キャッシュメモリと、
第１キャッシュメモリと並列に動作する第２キャッシュメモリと、
第１キャッシュメモリおよび第２キャッシュメモリの両者がミスヒットした場合に、ミスヒットしたメモリアクセス対象データの属性に関連する真偽を判定する判定手段と、
真であると判定された場合に、第２キャッシュメモリにメモリデータを格納し、偽であると判定された場合に、第１キャッシュメモリにメモリデータを格納する制御手段とを備えることを特徴とするキャッシュメモリ。
【請求項２】
前記アクセスするデータの属性は、アクセスアドレスであり、
前記判定手段は、前記アクセスアドレスが特定のアドレス範囲内であるか否かを判定することを特徴とする請求項１記載のキャッシュメモリ。
【請求項３】
前記キャッシュメモリは、さらに、
前記特定のアドレス範囲を保持する保持手段を備えることを特徴とする請求項２記載のキャッシュメモリ。
【請求項４】
前記保持手段はプロセッサによりアクセスされる
ことを特徴とする請求項３に記載の何れかのキャッシュメモリ。
【請求項５】
前記第２キャッシュメモリの容量は、前記第１キャッシュメモリよりも小さい
ことを特徴とする請求項１に記載の何れかのキャッシュメモリ。
【請求項６】
前記第１キャッシュメモリはセットアソシエイティブキャッシュメモリであり、
前記第２キャッシュメモリはフルアソシエイティブキャッシュメモリである
ことを特徴とする請求項５記載のキャッシュメモリ。
【請求項７】
前記第１キャッシュメモリはＮ１個のウェイを有し、前記第１キャッシュメモリの各ウェイはＮ２個のエントリを有し、
前記第２キャッシュメモリはＭ個のエントリを有し、
ＭはＮ１よりも小さく、Ｎ２よりも小さい
ことを特徴とする請求項５記載のキャッシュメモリ。
【請求項８】
前記Ｍは２であることを特徴とする請求項７記載のキャッシュメモリ。
【請求項９】
前記保持手段はプロセッサによりアクセスされる
ことを特徴とする請求項８に記載の何れかのキャッシュメモリ。
【請求項１０】
前記第２キャッシュメモリの容量は、前記第１キャッシュメモリよりも小さい
ことを特徴とする請求項３に記載の何れかのキャッシュメモリ。
【請求項１１】
前記第１キャッシュメモリはセットアソシエイティブキャッシュメモリであり、
前記第２キャッシュメモリはフルアソシエイティブキャッシュメモリである
ことを特徴とする請求項１０記載のキャッシュメモリ。
【請求項１２】
前記第１キャッシュメモリはＮ１個のウェイを有し、前記第１キャッシュメモリの各ウェイはＮ２個のエントリを有し、
前記第２キャッシュメモリはＭ個のエントリを有し、
ＭはＮ１よりも小さく、Ｎ２よりも小さい
ことを特徴とする請求項１０記載のキャッシュメモリ。
【請求項１３】
前記Ｍは２であることを特徴とする請求項１２記載のキャッシュメモリ。
【請求項１４】
前記保持手段はプロセッサによりアクセスされる
ことを特徴とする請求項１３に記載の何れかのキャッシュメモリ。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサのメモリアクセスを高速化するためのキャッシュメモリに関する。
【背景技術】
【０００２】
たとえば特許文献１および非特許文献１には、キャッシュミスを低減する技術としてビクティムキャッシュ（victim cache）が開示されている。
【０００３】
図１は、従来技術におけるビクティムキャッシュを有するシステム例を示すブロック図である。同図のシステムは、ＣＰＵ５０１と、キャッシュメモリ５０２と、フルアソシエイティブ型のビクティムキャッシュ５０３とを有する。ビクティムキャッシュ５０３は、タグアドレスおよびラインデータを保持するエントリを少なくとも１つ有する。
【０００４】
キャッシュメモリ５０２およびビクティムキャッシュ５０３においてミスヒットが生じると、キャッシュメモリ５０２において、ＬＲＵ（Least Recently Used）により最古のエントリがリプレース対象として選択される。選択されたエントリがリプレースされる前に、当該エントリの内容がキャッシュメモリ５０２からビクティムキャッシュ５０３に転送される。これにより、ビクティムキャッシュ５０３のエントリが更新される。この後、キャッシュメモリ５０２における選択されたエントリがリプレースされる。
【０００５】
その結果、ビクティムキャッシュ５０３は、キャッシュメモリ５０２から最後に破棄された少なくとも１つのラインデータを常に保持する。
【０００６】
これにより、ＣＰＵ５０１がキャッシュメモリ５０２から破棄されたデータに対して再度アクセスする場合には、ビクティムキャッシュ５０３にヒットする可能性が高いので、キャッシュミスによって生じるペナルティを低減している。
【０００７】
特に、時間的局所性（アクセスしたデータが、近いうちにアクセスされやすい性質）が非常に強く、極めて短期間に集中し、かつ、空間的局所性（アクセスしたデータの近傍のデータが、近いうちにアクセスされやすい性質）も強く、極めて小さい領域に閉じているデータをアクセスする場合には、そのデータをアクセスする間、元々保持していたデータはビクティムキャッシュ５０３に保持されている可能性が高いため、キャッシュミスペナルティを削減するという効果が高い。
【特許文献１】米国特許第５２６１０６６号明細書
【非特許文献１】Jouppi, N. P. [1990], "Improving direct-mapped cache performance by the addition of a small fully-associative cache and prefetch buffers, "Proc. 17th Annual Int'l Symposium on Computer Architecture, 364-73
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、上記従来技術によれば、たとえば、空間的局所性は強いが、時間的局所性が弱いデータに順にアクセスした場合、多くのキャッシュミスが発生してしまい、キャッシュメモリの使用効率が低下するという問題がある。空間的局所性が強く、時間的局所性が弱いデータとは、例えばデジタル信号処理におけるフィルタの係数の配列データなどであり、ＣＰＵから順次アクセスされるようなデータをいう。
【０００９】
配列データがキャッシュエントリーの容量よりも大きい場合や、複数の配列データが存在する場合に、ＣＰＵが順次配列データをアクセスすると、キャッシュメモリの複数のエントリが配列データを保持するためにリプレースされてしまうことになる。
【００１０】
その結果、キャッシュメモリの一部又は大部分のエントリが配列データに占有されてしまい、元々キャッシュメモリに保持されていたデータが破棄されているので、配列データのヒット率が向上する反面、元々保持されていたデータのヒット率が低下してしまうという問題が生じる。この場合、元々保持されていたデータを再度キャッシュに保持させるためにキャッシュエントリーがリプレースされるというペナルティが発生し、キャッシュメモリの使用効率が低下する。
【００１１】
本発明は、時間的局所性が強く、極めて短期間に集中し、かつ、空間的局所性も強く、極めて小さい領域に閉じているデータだけでなく、空間的局所性が強く、かつ、時間的局所性が弱いデータに対してもメモリアクセス効率を向上させ、しかもキャッシュメモリ全体の使用効率を向上させるキャッシュメモリを提供することを目的とする。
【課題を解決するための手段】
【００１２】
上記目的を達成するために本発明のキャッシュメモリは、第１キャッシュメモリと、第１キャッシュメモリと並列に動作する第２キャッシュメモリと、第１キャッシュメモリおよび第２キャッシュメモリの両者がミスヒットした場合に、ミスヒットしたメモリアクセス対象データの属性に関連する真偽を判定する判定手段と、真であると判定された場合に、第２キャッシュメモリにメモリデータを格納し、偽であると判定された場合に、第１キャッシュメモリにメモリデータを格納する制御手段とを備える。
【００１３】
この構成によれば、メモリアクセス対象データの属性に関連する真偽に応じて異なるキャッシュメモリが使用されるので、前記属性によって物理的にキャッシュを分離するとともに、アドレスに応じて不均質なキャッシングを実現している。前記真と判定される属性のデータによって第１キャッシュメモリのデータがリプレースされることがないので、第１キャッシュメモリの使用効率を向上させることができる。
【００１４】
ここで、前記アクセスするデータの属性は、アクセスアドレスであり、前記判定手段は、前記アクセスアドレスが特定のアドレス範囲内であるか否かを判定するようにしてもよい。
【００１５】
この構成によれば、前記アドレス範囲を空間的局所性が強いが、時間的局所性が弱いデータを記憶するメモリ領域に対応させることにより、空間的局所性が強いが、時間的局所性が弱いデータは第２キャッシュメモリに保持される。ここで、第1キャッシュメモリを汎用的な構成にし、第2キャッシュメモリを、空間的局所性が強いが、時間手局所性が弱いデータに対して特に効率的な構成をとることにより、第２キャッシュメモリにおける空間的局所性が強いが、時間的局所性が弱いデータへのメモリアクセス効率を向上させることができる。しかも、汎用的に構成した第１キャッシュメモリのデータが、空間的局所性が強いが、時間的局所性が弱いデータによってリプレースされることがないので、第１キャッシュメモリの使用効率を向上させることができる。このように、キャッシュメモリ全体の使用効率を向上させることができる。
【００１６】
ここで、前記第２キャッシュメモリの容量は、前記第１キャッシュメモリよりも小さくてもよい。
【００１７】
ここで、前記第１キャッシュメモリはセットアソシエイティブキャッシュメモリであり、前記第２キャッシュメモリはフルアソシエイティブキャッシュメモリであってもよい。
【００１８】
ここで、前記第１キャッシュメモリはＮ１個のウェイを有し、前記第１キャッシュメモリの各ウェイはＮ２個のエントリを有し、前記第２キャッシュメモリはＭ個のエントリを有し、ＭはＮ１よりも小さく、Ｎ２よりも小さいようにしてもよい。
【００１９】
ここで、  前記Ｍは２であるようにしてもよい。
【００２０】
この構成によれば、第１キャッシュメモリに比べて第２キャッシュメモリの容量は極少ないので、少ないハードウェアの追加で製造コストをかけずに、キャッシュメモリ全体の使用効率を向上させることができる。
【００２１】
ここで、前記保持手段はプロセッサによりアクセスされるようにしてもよい。
【００２２】
この構成によれば、アドレス範囲はプロセッサからプログラマブルに設定することができる。
【００２３】
また、キャッシュミス時に、アクセスするデータを第1キャッシュメモリに置くか、第2キャッシュメモリに置くかの判定は、データのアドレスに限らず、その他のデータに関する属性を持って判定しても良い。
【発明の効果】
【００２４】
本発明のキャッシュメモリによれば、アドレス空間によって物理的にキャッシュを分離するとともに、アドレスに応じて不均質なキャッシングを実現し、前記アドレス範囲内のメモリデータによって第１キャッシュメモリのデータがリプレースされることがないので、第１キャッシュメモリの使用効率を向上させることができる。
【００２５】
たとえば、第１キャッシュメモリの使用効率を向上させ、キャッシュメモリ全体の使用効率を向上させることができる。
【００２６】
さらに、少ないハードウェアの追加で製造コストをかけずに、キャッシュメモリ全体の使用効率を向上させることができる。
【００２７】
また、プロセッサからプログラマブルにアドレス範囲を設定することができる。
【発明を実施するための最良の形態】
【００２８】
（実施の形態１）
図２は、実施の形態１におけるキャッシュシステムの構成を示すブロック図である。同図のようにキャッシュメモリ１０００は、メインキャッシュ１、サブキャッシュ２、アドレスレジスタ３、アドレステーブル４、比較器５および制御部６を備え、アドレステーブル４に設定されたアドレス範囲内のデータに対しては、第２キャッシュメモリにキャッシュし、アドレス範囲外のデータに対しては、第１キャッシュメモリにキャッシングするように構成されている。
【００２９】
メインキャッシュ１は、セットアソシエイティブキャッシュメモリであり、１６個のウェイ００〜ウェイ１５、デコーダ１２０、１６個の比較器１５０〜比較器１６５、バスＩ／Ｆ１７０を備える。ウェイ００は、１６個のエントリ００００〜エントリ００１５を備える。ウェイ０１〜１５についてもウェイ００と同様であるので説明を省略する。
【００３０】
エントリ００００は、タグアドレスを保持するためのアドレスエントリ００００ａとラインデータを保持するためのデータエントリ００００ｄを備える。エントリ０００１〜００１５についてもエントリ００００と同様の構成なので説明を省略する。
【００３１】
デコーダ１２０は、アドレスレジスタ３に保持されたメモリアクセスアドレス中の一部（セットインデックスと呼ぶ。）をデコードし、１６個のウェイ００〜ウェイ１５のそれぞれから１つずつエントリを選択する。各ウェイから１つずつ選択されたエントリからなる１６個のエントリをセットと呼ぶ。選択された１６個のエントリは、各アドレスエントリに保持されたタグアドレスを比較器１５０〜１６５に出力する。
【００３２】
比較器１５０は、ウェイ００に対応して設けられ、デコーダ１２０によって選択されたエントリから出力される有効なタグアドレスとアドレスレジスタ３から出力されるタグとを比較し、一致する場合にはウェイ００にヒットしたことを示すヒット信号を制御部６に出力する。当該タグアドレスが有効であるか否かは当該エントリから出力されるバリッドビットによる。つまり、バリッドビットが有効である場合のみ、比較器１５０は比較結果を出力する。比較器１５１〜比較器１６５は、ウェイ０１〜１５に対応する点以外は比較器１５０と同様なので説明を省略する。
【００３３】
バスＩ／Ｆ１７０は、デコーダ１２０によって選択されたセット中のヒットしたエントリ中のデータエントリと、データバスとの間でデータを入出力するためのインタフェースである。
【００３４】
サブキャッシュ２は、フルアソシエイティブキャッシュメモリであり、ウェイ２０、ウェイ２１、比較器２５０、比較器２５１、バスＩ／Ｆ２７０を備える。
【００３５】
ウェイ２０は、１個のエントリ２００を有する。エントリ２００は、タグアドレスを保持するためのアドレスエントリ２００ａとラインデータを保持するためのデータエントリ２００ｄを備える。ウェイ２１についても同様の構成なので説明を省略する。
【００３６】
比較器２５０は、ウェイ２０に対応して設けられ、アドレスエントリ２００ａから出力される有効なタグアドレスと、アドレスレジスタ３から出力されるアドレス部分（タグとセットインデックス）とを比較し、一致する場合にはウェイ２０にヒットしたことを示すヒット信号を制御部６に出力する。当該アドレス部分が有効であるか否かは当該エントリから出力されるバリッドビットによる。つまり、バリッドビットが有効である場合のみ、比較器２５０は比較結果を出力する。比較器２５１は、ウェイ２１に対応する点以外は比較器２５０と同様なので説明を省略する。
【００３７】
アドレスレジスタ３は、プロセッサから出力されるメモリアクセスアドレスを保持する。同図の例では、アドレスレジスタ３は、３２ビット長である。また、ビットの重みを併記してある。アドレスレジスタ３中のタグおよびセットインデックス（ビット３１〜７）は、１２８バイトのラインデータを特定する。セットインデックス（ビット１０〜７）は、１６個のセットのうちの１つのセットを特定する。サブラインアドレス（ＳＬ：ビット６、５）はラインデータ中の４つのサブラインのうち１つのサブラインを特定する。バイトアドレス（byte＿A）はサブライン中の１つのバイトデータを特定する。
【００３８】
アドレステーブル４は、アドレス範囲を示す情報とサブキャッシュ２を使用するか否かを示すサブキャッシュ属性とを対応させて保持する。このアドレス範囲を示す情報は、プロセッサにより設定され、サブキャッシュ２を使用すべきデータのアドレス範囲を示す。
【００３９】
比較器５は、第１キャッシュメモリおよび第２キャッシュメモリの両者がミスヒットした場合に、アドレステーブル４に保持されるアドレス範囲を示す情報と、アドレスレジスタ３から出力されるアドレス部分とを比較する。これにより、比較器５は、ミスヒットしたメモリアクセスアドレスが上記のアドレス範囲内であるか否かを判定する。
【００４０】
制御部６は、メインキャッシュ１およびサブキャッシュ２においてキャッシュミスが発生した場合に、比較器５によってメモリアクセスアドレスが前記アドレス範囲内であると判定されたとき、第２キャッシュメモリにメモリデータを格納し、前記アドレス範囲内でないと判定されたとき、第１キャッシュメモリにメモリデータを格納する。
【００４１】
図３は、メインキャッシュ１およびサブキャッシュ２におけるデータエントリのデータ構成を示す説明図である。各データエントリは１２８バイトのラインデータを保持する。１つのラインデータは、４つのサブラインデータ１〜サブラインデータ４に分割される。これにより、ライトバック、リプレースなどのキャッシュ操作は、ラインデータ単位のサブラインデータ単位のいずれでも可能になっている。
【００４２】
図４は、メインキャッシュ１におけるアドレスエントリの構成を示す説明図である。タグアドレスは、アドレスレジスタ３のタグに対応する。バリッドビットＶ１〜Ｖ４は、サブラインデータ１〜４に対応し、対応するサブラインデータが有効か無効かを示す。ダーティビットＤ１〜Ｄ４は、サブラインデータ１〜４に対応し、対応するサブラインデータにプロセッサからの書き込みがあったか否かを示す。
【００４３】
ＬＲＵビットＬは、セット内の１６個のエントリについてのプロセッサからのアクセス順序を示す。アクセス順序を１番〜１６番まで正確に表現するためには本来少なくとも４ビットが必要であるが、ここでは、１ビットのＬＲＵビットは、セット内のエントリ毎に１番（新しい）と２番（古い）の２つのアクセス順序を表現している。リプレース対象は、ＬＲＵビットＬが２番（古い）であるエントリのうちの１つのエントリが選択される。
【００４４】
ウィークビットＷは、セット内の１６個のエントリのうち即リプレースしてよいか否かを示し、言い換えればアクセス順序を強制的に最古化するためのビットである。ウィークビットＷが１（最古）であるエントリは、ＬＲＵビットに関わらずリプレース対象として選択される。
【００４５】
図５は、サブキャッシュ２におけるアドレスエントリの構成を示す説明図である。タグアドレスは、アドレスレジスタ３のビット３１〜７（タグおよびセットインデックス）に対応する。バリッドビットＶ１〜Ｖ４、ダーティビットＤ１〜Ｄ４、ＬＲＵビットＬは図４と同様であるので説明を省略する。
【００４６】
図６は、アドレステーブル４に含まれるテーブルエントリレジスタの構成を示す説明図である。アドレステーブル４は少なくとも１つのテーブルエントリレジスタを備える。同図のテーブルエントリレジスタＴＥＲ１は、ベースアドレスＢＡ、ページサイズＰＳ、サブキャッシュ属性ＳＣ、バリッドビットＶを保持する。ベースアドレスＢＡは、アドレス範囲の先頭を示す。ページサイズＰＳは、当該アドレス範囲の大きさ（メモリ領域の大きさ）を示す。同図の例では、ＰＳ＝００ならアドレス範囲の大きさは４ｋバイト、ＰＳ＝１０なら１２８ｋバイト、ＰＳ＝１１なら４Ｍバイトである。サブキャッシュ属性ＳＣは、当該アドレス範囲に対応するメモリデータをサブキャッシュ２に割り当てるか否かを示す。バリッドビットは、テーブルエントリレジスタＴＥＲ１が有効か否かを示す。テーブルエントリレジスタはプロセッサから直接書き込みおよび読み出し可能である。
【００４７】
図７は、アドレステーブル４内のテーブルエントリレジスタＴＥＲ１に設定するためのプログラム例を示す説明図である。同図において、１および２行目における"ｅｑｕ"は変数の値を定義するためのアセンブラに対する擬似命令である。各行の"//"以下はコメントを意味する。１行目ではテーブルエントリレジスタＴＥＲ１のアドレスを変数ＡＤＲ＿ＴＥＲ１の値として定義している。２行目ではテーブルエントリレジスタＴＥＲ１に設定すべきデータ（0x90002205）を変数ＤＡＴ＿ＴＥＲ１の値として定義している。この例では、ベースアドレスＢＡは0x90002000番地、ページサイズＰＳは１０（１２８ｋバイト）、サブキャッシュ属性ＳＣは１（サブキャッシュに割り当てる）、バリッドビットＶは１（有効）を意味する。６行目のｍｏｖ命令は、変数ＡＤＲ＿ＴＥＲ１の値をレジスタｒ２８に転送する命令である。７行目のｍｏｖ命令は、変数ＤＡＴ＿ＴＥＲ１の値をレジスタｒ２９に転送する命令である。８行目のｓｔ命令は、レジスタｒ２８の内容をアドレスとして、レジスタｒ２９のデータを書き込む命令である。これにより、テーブルエントリレジスタＴＥＲ１に変数ＤＡＴ＿ＴＥＲ１の値が設定される。
【００４８】
図８は、サブキャッシュ属性が設定されたメモリ領域とサブキャッシュ２との関係を示す説明図である。同図は図７のプログラム例によってサブキャッシュに割り当てられたメモリ領域を示す。すなわち、ベースアドレスＢＡ（0x90002000番地）からページサイズＰＳ（１２８ｋバイト）の大きさのメモリ領域のメモリデータは、メインキャッシュ１ではなくサブキャッシュ２にキャッシングされる。このメモリ領域は、例えば配列データＡ、Ｂなど空間的局所性が強いが、時間的局所性が弱いデータを格納するのに適している。また、このメモリ領域以外の領域のメモリデータはメインキャッシュ１にキャッシングされる。
【００４９】
また、時間的局所性が強く、かつ、アクセスが極めて短期間に集中し、かつ、空間的局所性も強く、かつ、小さい領域（たとえば、ラインのサイズ以下、またはサブキャッシュ２のサイズ以下）に閉じているデータを格納するのに適しているのは明らかである。
【００５０】
図９は、各データに対するメモリアクセス回数のパターンの一例を示す図である。同図は例えば動画の圧縮、伸張処理における各データのアクセス回数を示している。この場合、アクセス回数が少ないデータは広く存在し、逆に多くのアクセスが少ないデータに集中している傾向があることがわかる。そこで、この傾向を利用し、たとえば、サブキャッシュ２にはアクセス回数が少なく広く存在するデータ領域を、メインキャッシュ１にはアクセス回数が多く、メインキャッシュ１の大きさに収まる程度のデータ領域を割り当てることにより、メインキャッシュ１およびサブキャッシュ２を効率よく使用することができる。
【００５１】
図１０は、プロセッサがメモリアクセスするときの制御部６の制御によるキャッシュメモリの動作を示すフローチャートである。同図において制御部６は、メモリアクセスがヒットした場合、つまりメモリアクセスアドレスを保持するアドレスレジスタ３のタグとメインキャッシュ１またはサブキャッシュ２に保持された何れかのタグアドレスとが一致する場合（Ｓ９１：yes）には、当該ヒットしたエントリに対してリードまたはライトを行う（Ｓ９２）。
【００５２】
メモリアクセスがミスヒットした場合、メモリアクセスアドレスがアドレステーブル４に示されるアドレス範囲内であり（Ｓ９３：yes）、かつ当該アドレス範囲がサブキャッシュに割り当てられていれば（Ｓ９４：yes）、サブキャッシュ２のエントリをリプレースし、当該エントリにアクセスする（Ｓ９５）。また、メモリアクセスアドレスがアドレステーブル４に示されるアドレス範囲外であり（Ｓ９３：no）、または当該アドレス範囲がサブキャッシュに割り当てられていなければ（Ｓ９４：no）、メインキャッシュ１のエントリをリプレースし、当該エントリにアクセスする（Ｓ９５）。
【００５３】
以上説明したように本実施の形態におけるキャッシュメモリによれば、メモリデータがアドレステーブル４に設定されたアドレス範囲内のデータであるか否かによって異なるキャッシュメモリが使用されるので、アドレス空間によって物理的にキャッシュを分離するとともに、アドレスに応じて不均質なキャッシングを実現している。前記アドレス範囲内のメモリデータによってメインキャッシュ１のデータがリプレースされることがないので、メインキャッシュ１の使用効率を向上させることができる。
【００５４】
たとえば、アドレステーブル４に設定されるアドレス範囲を、空間的局所性が強いが、時間的局所性が弱いデータを記憶するメモリ領域に対応させることにより、空間的局所性が強いが、時間的局所性が弱いデータはサブキャッシュ２に保持され、それ以外のデータはメインキャッシュ１に保持される。その結果、空間的局所性が強いが、時間的局所性が弱いデータへのメモリアクセス効率を向上させることができる。しかも、メインキャッシュ１のデータが、空間的局所性が強いが、時間的局所性が弱いデータによってリプレースされることがないので、第１キャッシュメモリの使用効率を向上させることができる。このように、キャッシュメモリ全体の使用効率を向上させることができる。
【００５５】
また、メインキャッシュ１に比べてサブキャッシュ２はごく少ない容量で良いので、少ないハードウェアの追加で製造コストをかけずに、キャッシュメモリ全体の使用効率を向上させることができる。
【００５６】
さらに、アドレステーブル４はプロセッサからプログラマブルに設定することができるので、アプリケーション毎またはタスク毎に柔軟にメインキャッシュ１とサブキャッシュ２を利用することができる。
【００５７】
なお、アドレステーブル４をプログラマブルにする必要はなく、静的に割り当てても良いことは明らかである。
【００５８】
以下、実施の形態１におけるキャッシュメモリの変形例について説明する。
【００５９】
メインキャッシュ１は、１６ウェイセットアソシエイティブキャッシュメモリである場合の例を説明したが、ｎ（ｎは１６以外）ウェイセットアソシエイティブキャッシュメモリであってもよい。また、ウェイ毎に１６エントリを備える場合の例を説明したが、ｍ（ｍは１６以外）個のエントリを備えてもよい。
【００６０】
サブキャッシュ２のエントリ数は、２個としてもよい。ハードウェア規模の増加を抑えること、およびハードウェアコストの増加を抑えるためには、サブキャッシュ２のエントリ数は１個から数個でよい。
【００６１】
メインキャッシュ１は、セットアソシエイティブキャッシュメモリの例を説明したが、フルアソシエイティブキャッシュメモリ、ダイレクトマップキャッシュメモリであってもよい。
【００６２】
サブキャッシュ２は、ダイレクトマップキャッシュメモリ、セットアソシエイティブキャッシュメモリであってもよい。
【００６３】
さらに、メインキャッシュ１に図１に示したビクティムキャッシュを付加してもよい。また、サブキャッシュ２に図１に示したビクティムキャッシュを付加してもよい。
【００６４】
（実施の形態２）
本実施の形態ではサブキャッシュを２つ備える構成について説明する。
【００６５】
図１１は、実施の形態２におけるキャッシュメモリの構成を示すブロック図である。同図のキャッシュメモリ２０００は、図２に示したキャッシュメモリ１０００と比較して、サブキャッシュ２ａ、アドレステーブル４ａ、比較器５ａが新たに追加された点と、制御部６の代わりに制御部６ａを備える点とが異なっている。以下、図２と同じ点は説明を省略し、異なる点を中心に説明する。
【００６６】
サブキャッシュ２ａは、サブキャッシュ２と同じくフルアソシエイティブキャッシュメ
モリである。
【００６７】
アドレステーブル４ａは、サブキャッシュ２ａに割り当てるメモリ領域を示すアドレス範囲を保持する。
【００６８】
比較器５ａは、アドレスレジスタ３のタグがアドレステーブル４ａに保持されるアドレス範囲に含まれるか否かを判定する。
【００６９】
制御部６ａは、制御部６の機能に加えて、サブキャッシュ２ａを制御する。サブキャッシュ２ａはサブキャッシュ２と同時に動作させてもよいし、アプリケーションまたはタスクに応じて択一的に動作させてもよい。
【００７０】
このように本実施の形態におけるキャッシュメモリ２０００によれば、複数のサブキャッシュを同時または択一的に動作させることができ、アプリケーションまたはタスクに応じて柔軟に利用することができ、キャッシュメモリ２０００の利用効率を向上させることができる。
【００７１】
なお、実施の形態１で説明した変形例は本実施の形態においても同様に適用してよい。
【産業上の利用可能性】
【００７２】
本発明は、メモリアクセスを高速化するためのキャッシュメモリに適しており、例えば、オンチップキャッシュメモリ、オフチップキャッシュメモリ、データキャッシュメモリ、命令キャッシュメモリ等に適している。
【図面の簡単な説明】
【００７３】
【図１】図１は従来技術におけるビクティムキャッシュを有するシステム例を示すブロック図である。
【図２】図２は実施の形態１におけるキャッシュメモリの構成を示すブロック図である。
【図３】図３はデータエントリの構成を示す説明図である。
【図４】図４はメインキャッシュ内のアドレスエントリの構成を示す説明図である。
【図５】図５はサブキャッシュ内のアドレスエントリの構成を示す説明図である。
【図６】図６はアドレステーブルのアドレスエントリの構成を示す説明図である。
【図７】図７はテーブルエントリレジスタを設定するためのプログラム例を示す説明図である。
【図８】図８はサブキャッシュ属性が設定されたメモリ領域とサブキャッシュ２との関係を示す説明図である。
【図９】図９は各データに対するメモリアクセス回数の対応関係を示すパターンの一例を示す図である。
【図１０】図１０はプロセッサがメモリアクセスするときの制御部６の制御によるキャッシュメモリの動作を示すフローチャートである。
【図１１】図１１は実施の形態２におけるキャッシュメモリの構成を示すブロック図である。
【符号の説明】
【００７４】
１０００  キャッシュメモリ
１  メインキャッシュ
２  サブキャッシュ
３  アドレスレジスタ
４  アドレステーブル
５  比較器
６  制御部
００  ウェイ
１５  ウェイ
００００  エントリ
００００ａ  アドレスエントリ
００００ｄ  データエントリ
００１５ａ  アドレスエントリ
００１５ｄ  データエントリ
１２０  デコーダ
１５０  比較器
１６５  比較器
１７０  バスＩ／Ｆ
２０  ウェイ
２１  ウェイ
２００  エントリ
２００ａ  アドレスエントリ
２００ｄ  データエントリ
２０１ａ  アドレスエントリ
２０１ｄ  データエントリ
【手続補正３】
【補正対象書類名】図面
【補正対象項目名】全図
【補正方法】変更
【補正の内容】
【図１】
2006109421.tif 000014
【図２】
2006109421.tif 000015
【図３】
2006109421.tif 000016
【図４】
2006109421.tif 000017
【図５】
2006109421.tif 000018
【図６】
2006109421.tif 000019
【図７】
2006109421.tif 000020
【図８】
2006109421.tif 000021
【図９】
2006109421.tif 000022
【図１０】
2006109421.tif 000023
【図１１】
2006109421.tif 000024
【手続補正書】
【提出日】平成19年7月19日(2007.7.19)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
第１キャッシュメモリと、
第１キャッシュメモリと並列に動作する第２キャッシュメモリと、
前記第１キャッシュメモリに格納されるデータと比して空間的局所性は強いが時間的局所性が弱いデータを格納するメモリ領域のアドレス範囲と、前記第１キャッシュメモリに格納されるデータと比してアクセス回数が少ないデータを格納するメモリ領域のアドレス範囲の、少なくとも一方を保持する保持手段と、
第１キャッシュメモリおよび第２キャッシュメモリの両者がミスヒットした場合に、ミスヒットしたメモリアクセス対象データのアクセスアドレスが、前記アドレス範囲内であるか否かを判定する判定手段と、
前記アドレス範囲内であると判定された場合に、第２キャッシュメモリにメモリデータを格納し、偽であると判定された場合に、第１キャッシュメモリにメモリデータを格納する制御手段とを備え、
前記第２のキャッシュメモリの容量は、前記第１のキャッシュメモリよりも小さいことを特徴とするキャッシュメモリ。
【請求項２】
前記保持手段はプロセッサによりアクセスされ、命令によってプログラマブルに設定される
ことを特徴とする請求項１記載のキャッシュメモリ。
【請求項３】
前記第１キャッシュメモリはセットアソシエイティブキャッシュメモリであり、
前記第２キャッシュメモリはフルアソシエイティブキャッシュメモリである
ことを特徴とする請求項１記載のキャッシュメモリ。
【請求項４】
前記第１キャッシュメモリはＮ１個のウェイを有し、前記第１キャッシュメモリの各ウェイはＮ２個のエントリを有し、
前記第２キャッシュメモリはＭ個のエントリを有し、
ＭはＮ１よりも小さく、Ｎ２よりも小さい
ことを特徴とする請求項１記載のキャッシュメモリ。
【請求項５】
前記Ｍは２であることを特徴とする請求項４記載のキャッシュメモリ。
【請求項６】
前記保持手段は、プロセッサから命令によってアクセスされるレジスタで構成され、前記アドレス範囲を保持するための少なくとも１つのビットフィールドと、前記第２キャッシュメモリに使用すべきか否かを示すサブキャッシュ属性を保持するためのビットフィールドとを有し、
前記制御手段は、前記サブキャッシュ属性が前記第２キャッシュメモリを使用すべきことを示すときに限り、前記第２キャッシュメモリへとメモリデータを格納することを特徴とする請求項１記載のキャッシュメモリ。
【請求項７】
前記制御手段は、前記第１キャッシュメモリあるいは前記第２キャッシュメモリにヒットした場合、当該ヒットした方のキャッシュメモリに対してリードまたはライトを行い、ヒットしなかった方のキャッシュメモリに対してはリード及びライトを行わないことを特徴とする請求項１記載のキャッシュメモリ。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００１２
【補正方法】変更
【補正の内容】
【００１２】
上記目的を達成するために本発明のキャッシュメモリは、第１キャッシュメモリと、第１キャッシュメモリと並列に動作する第２キャッシュメモリと、前記第１キャッシュメモリに格納されるデータと比して空間的局所性は強いが時間的局所性が弱いデータを格納するメモリ領域のアドレス範囲と、前記第１キャッシュメモリに格納されるデータと比してアクセス回数が少ないデータを格納するメモリ領域のアドレス範囲の、少なくとも一方を保持する保持手段と、第１キャッシュメモリおよび第２キャッシュメモリの両者がミスヒットした場合に、ミスヒットしたメモリアクセス対象データのアクセスアドレスが、前記アドレス範囲内であるか否かを判定する判定手段と、前記アドレス範囲内であると判定された場合に、第２キャッシュメモリにメモリデータを格納し、偽であると判定された場合に、第１キャッシュメモリにメモリデータを格納する制御手段とを備え、前記第２のキャッシュメモリの容量は、前記第１のキャッシュメモリよりも小さいことを特徴とする。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００２１
【補正方法】変更
【補正の内容】
【００２１】
ここで、前記保持手段はプロセッサによりアクセスされ、命令によってプログラマブルに設定されるようにしてもよい。
【手続補正書】
【提出日】平成19年10月4日(2007.10.4)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
第１キャッシュメモリと、
第１キャッシュメモリと並列に動作する第２キャッシュメモリと、
前記第１キャッシュメモリに格納されるデータと比して空間的局所性は強いが時間的局所性が弱いデータを格納するメモリ領域のアドレス範囲と、前記第１キャッシュメモリに格納されるデータと比してアクセス回数が少ないデータを格納するメモリ領域のアドレス範囲の、少なくとも一方を保持する保持手段と、
第１キャッシュメモリおよび第２キャッシュメモリの両者がミスヒットした場合に、ミスヒットしたメモリアクセス対象データのアクセスアドレスが、前記アドレス範囲内であるか否かを判定する判定手段と、
前記アドレス範囲内であると判定された場合に、第２キャッシュメモリにメモリデータを格納し、偽であると判定された場合に、第１キャッシュメモリにメモリデータを格納する制御手段とを備え、
前記第２キャッシュメモリの容量は、前記第１キャッシュメモリよりも小さく、
前記第１キャッシュメモリはセットアソシエイティブキャッシュメモリであり、
前記第２キャッシュメモリはフルアソシエイティブキャッシュメモリである
ことを特徴とするキャッシュメモリ。
【請求項２】
前記保持手段はプロセッサによりアクセスされ、命令によってプログラマブルに設定される
ことを特徴とする請求項１記載のキャッシュメモリ。
【請求項３】
前記第１キャッシュメモリはＮ１個のウェイを有し、前記第１キャッシュメモリの各ウェイはＮ２個のエントリを有し、
前記第２キャッシュメモリはＭ個のエントリを有し、
ＭはＮ１よりも小さく、Ｎ２よりも小さい
ことを特徴とする請求項１記載のキャッシュメモリ。
【請求項４】
前記Ｍは２であることを特徴とする請求項３記載のキャッシュメモリ。
【請求項５】
前記保持手段は、プロセッサから命令によってアクセスされるレジスタで構成され、前記アドレス範囲を保持するための少なくとも１つのビットフィールドと、前記第２キャッシュメモリに使用すべきか否かを示すサブキャッシュ属性を保持するためのビットフィールドとを有し、
前記制御手段は、前記サブキャッシュ属性が前記第２キャッシュメモリを使用すべきことを示すときに限り、前記第２キャッシュメモリへとメモリデータを格納することを特徴とする請求項１記載のキャッシュメモリ。
【請求項６】
前記制御手段は、前記第１キャッシュメモリあるいは前記第２キャッシュメモリにヒットした場合、当該ヒットした方のキャッシュメモリに対してリードまたはライトを行い、ヒットしなかった方のキャッシュメモリに対してはリード及びライトを行わないことを特徴とする請求項１記載のキャッシュメモリ。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００１２
【補正方法】変更
【補正の内容】
【００１２】
上記目的を達成するために本発明のキャッシュメモリは、第１キャッシュメモリと、第１キャッシュメモリと並列に動作する第２キャッシュメモリと、前記第１キャッシュメモリに格納されるデータと比して空間的局所性は強いが時間的局所性が弱いデータを格納するメモリ領域のアドレス範囲と、前記第１キャッシュメモリに格納されるデータと比して
アクセス回数が少ないデータを格納するメモリ領域のアドレス範囲の、少なくとも一方を
保持する保持手段と、第１キャッシュメモリおよび第２キャッシュメモリの両者がミスヒットした場合に、ミスヒットしたメモリアクセス対象データのアクセスアドレスが、前記アドレス範囲内であるか否かを判定する判定手段と、前記アドレス範囲内であると判定された場合に、第２キャッシュメモリにメモリデータを格納し、偽であると判定された場合に、第１キャッシュメモリにメモリデータを格納する制御手段とを備え、前記第２キャッシュメモリの容量は、前記第１キャッシュメモリよりも小さく、前記第１キャッシュメモリはセットアソシエイティブキャッシュメモリであり、前記第２キャッシュメモリはフルアソシエイティブキャッシュメモリであることを特徴とする。
【国際調査報告】
2006109421.tif 000025
2006109421.tif 000026