(57)【要約】【課題】アプリケーションにおける性能を低減させることなくキャッシュ容量を縮小すること。【解決手段】キャッシャブルメモリアクセス空間２１０がキャッシュ容量の使用状態に応じて、データ構造の異なったメモリアクセスアドレスをプロセッサ１００から受付け、キャッシュヒット検出部２３０が予め設定されたモード信号、enbblk［ｎ］信号および各ウェイの有効または無効に係る信号、キャッシャブル空間２１０から受付けるタグ比較アドレスおよび記憶部２２０から受付けるタグを基にして、データがヒットしたか否かを判定する。【選択図】        図２
2006040176.tif 000002
【特許請求の範囲】
【請求項１】
複数のウェイを有するセットアソシエイティブ方式が採られると共に、プロセッサからの要求に応じて、該当するデータをプロセッサに渡すキャッシュメモリ装置であって、
キャッシュ容量を縮小する場合に、データを記憶する記憶部のウェイ方向またはライン方向の機能を停止させること
を特徴とするキャッシュメモリ装置。
【請求項２】
前記記憶部は、複数のウェイを有し、該ウェイは複数のブロックに分割されていることを特徴とする請求項１に記載のキャッシュメモリ装置。
【請求項３】
複数のウェイを有するセットアソシエイティブ方式が採られると共に、プロセッサからの要求に応じて、該当するデータをプロセッサに渡すキャッシュメモリ装置であって、
前記プロセッサの要求するデータの位置を示すラインアドレスと、該ラインアドレスによって特定されるデータが適切か否かを判定するためのタグ比較アドレスとを含んだアクセスアドレスを取得するアクセスアドレス取得手段と、
前記アクセスアドレスおよび各ウェイの状態を基にして、前記プロセッサが要求するデータにヒットしたか否かを判定する判定処理手段と、
を備えたことを特徴とするキャッシュメモリ装置。
【請求項４】
複数のブロックに分割されたウェイを保持する保持手段を更に備えたことを特徴とする請求項３に記載のキャッシュメモリ装置。
【請求項５】
前記ラインアドレスは、ウェイに含まれるブロックを特定する特定情報を含み、該特定情報によってウェイに含まれる複数のブロックのうち一つのブロックが特定されることを特徴とする請求項４に記載のキャッシュメモリ装置。
【請求項６】
前記ブロックは、複数のタグ情報を含み、キャッシュ容量の使用状況によって、前記タグ情報のアドレス構成が変更されることを特徴とする請求項４に記載のキャッシュメモリ装置。
【請求項７】
前記判定処理手段は、キャッシュ容量の使用状況によって、使用するウェイおよびブロックを予め特定しておくことを特徴とする請求項４に記載のキャッシュメモリ装置。
【請求項８】
前記タグ比較アドレスは、キャッシュ容量の使用状況によって、アドレス構成が変更されることを特徴とする請求項３に記載のキャッシュメモリ装置。
【請求項９】
複数のウェイを有するセットアソシエイティブ方式が採られると共に、プロセッサからの要求に応じて、該当するデータをプロセッサに渡すキャッシュメモリ装置に適用されるメモリ制御方法であって、
前記プロセッサの要求するデータの位置を示すラインアドレスと、該ラインアドレスによって特定されるデータが適切か否かを判定するためのタグ比較アドレスとを含んだアクセスアドレスを取得するアクセスアドレス取得工程と、
前記アクセスアドレスおよび各ウェイの状態を基にして、前記プロセッサが要求するデータにヒットしたか否かを判定する判定処理工程と、
を含んだことを特徴とするメモリ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、複数のウェイを有するセットアソシエイティブ方式が採られると共に、プロセッサからの要求に応じて、該当するデータをプロセッサに渡すキャッシュメモリ装置などに関し、特に、アプリケーションにおける性能を低減させることなくキャッシュ容量を縮小可能なキャッシュメモリ装置およびメモリ制御方法に関するものである。
【背景技術】
【０００２】
近年、ＣＰＵ（Central Processing Unit）の高速化に伴い、メインメモリの処理速度がＣＰＵに追いつかなくなっており、メインメモリのデータアクセス中にＣＰＵが処理を一時中断して待ち状態に陥るメモリ遅延の問題が深刻化している。
【０００３】
そこで、多くのシステムでは、ＣＰＵとメインメモリの間に高速なキャッシュメモリを設けて、両者の速度差を緩和している。ところで、キャッシュメモリの連想方式には、ダイレクトマッピング方式、フルアソシエイティブ方式およびセットアソシエイティブ方式など様々な方式が存在するが、中でもセットアソシエイティブ方式が多く利用されている。
【０００４】
このセットアソシエイティブ方式は、キャッシュラインを複数のウェイに分割し、それぞれのウェイに対してダイレクトマッピング方式を利用する方式であり、一般的にはウェイ数が多いほどヒット率が向上することとなる。
【０００５】
また、キャッシュメモリ内に欠陥が生じた場合、従来のセットアソシエイティブ方式に係る技術ではＬＳＩ（Large Scale Integration）の製造歩留まりなどの観点から、欠陥を含んだウェイの機能を停止させ、欠陥の生じた部分の利用を避けている。
【０００６】
なお、特許文献１に記載されたキャッシュ機構では、ブロックデータのサイズであるラインサイズを変更することによってキャッシュの効率を向上させる技術が公開されており、特許文献２に記載されたキャッシュメモリシステムでは、効率的にキャッシュメモリを再構成する技術が公開されている。
【０００７】
【特許文献１】特開２００１−２１６１９３号公報
【特許文献２】特開平５−２４１９６２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、従来に係る技術では、キャッシュメモリ内に欠陥などが存在し、キャッシュ容量を縮小する場合に、対応するウェイの機能を停止するため、実アプリケーションにおける性能が悪くなるという問題があった。
【０００９】
すなわち、数百〜数十個のウェイを採用するセットアソシエイティブ方式のキャッシュメモリでは、欠陥などの存在するウェイ機能を停止させても特に問題とならないが、一般のＰＣ（Personal Computer）向けのキャッシュメモリでは、僅か４ウェイのセットアソシエイティブ方式が多く採用されているため、該セットアソシエイティブ方式の対応するウェイ機能を停止させることは、アプリケーションに係る性能が著しく低下することとなる。
【００１０】
この発明は、上述した従来技術による問題点を解消するためになされたものであり、アプリケーションにおける性能を低減させることなくキャッシュ容量を縮小することができるキャッシュメモリ装置およびメモリ制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１１】
上述した課題を解決し、目的を達成するため、本発明は、複数のウェイを有するセットアソシエイティブ方式が採られると共に、プロセッサからの要求に応じて、該当するデータをプロセッサに渡すキャッシュメモリ装置であって、キャッシュ容量を縮小する場合に、データを記憶する記憶部のウェイ方向またはライン方向の機能を停止させることを特徴とする。
【００１２】
また、本発明は、上記発明において、前記記憶部は、複数のウェイを有し、該ウェイは複数のブロックに分割されていることを特徴とする。
【００１３】
また、本発明は、複数のウェイを有するセットアソシエイティブ方式が採られると共に、プロセッサからの要求に応じて、該当するデータをプロセッサに渡すキャッシュメモリ装置であって、前記プロセッサの要求するデータの位置を示すラインアドレスと、該ラインアドレスによって特定されるデータが適切か否かを判定するためのタグ比較アドレスとを含んだアクセスアドレスを取得するアクセスアドレス取得手段と、前記アクセスアドレスおよび各ウェイの状態を基にして、前記プロセッサが要求するデータにヒットしたか否かを判定する判定処理手段と、を備えたことを特徴とする。
【００１４】
また、本発明は、上記発明において、複数のブロックに分割されたウェイを保持する保持手段を更に備えたことを特徴とする。
【００１５】
また、本発明は、上記発明において、前記ラインアドレスは、ウェイに含まれるブロックを特定する特定情報を含み、該特定情報によってウェイに含まれる複数のブロックのうち一つのブロックが特定されることを特徴とする。
【００１６】
また、本発明は、上記発明において、前記ブロックは、複数のタグ情報を含み、キャッシュ容量の使用状況によって、前記タグ情報のアドレス構成が変更されることを特徴とする。
【００１７】
また、本発明は、上記発明において、前記判定処理手段は、キャッシュ容量の使用状況によって、使用するウェイおよびブロックを予め特定しておくことを特徴とする。
【００１８】
また、本発明は、上記発明において、前記タグ比較アドレスは、キャッシュ容量の使用状況によって、アドレス構成が変更されることを特徴とする。
【００１９】
また、本発明は、前記判定処理手段は、キャッシュ容量の使用状況によって、使用するウェイおよびブロックを予め特定しておくことを特徴とする。
【００２０】
また、本発明は、複数のウェイを有するセットアソシエイティブ方式が採られると共に、プロセッサからの要求に応じて、該当するデータをプロセッサに渡すキャッシュメモリ装置に適用されるメモリ制御方法であって、前記プロセッサの要求するデータの位置を示すラインアドレスと、該ラインアドレスによって特定されるデータが適切か否かを判定するためのタグ比較アドレスとを含んだアクセスアドレスを取得するアクセスアドレス取得工程と、前記アクセスアドレスおよび各ウェイの状態を基にして、前記プロセッサが要求するデータにヒットしたか否かを判定する判定処理工程と、を含んだことを特徴とする。
【発明の効果】
【００２１】
本発明によれば、プロセッサの要求するデータの位置を示すラインアドレスと、該ラインアドレスによって特定されるデータが適切か否かを判定するためのタグ比較アドレスとを含んだアクセスアドレスを取得し、アクセスアドレスと、各ウェイの状態とを基にして、プロセッサが要求するデータにヒットしたか否かを判定するので、ウェイ数を減らすことなくキャッシュ容量を縮小することができ、アプリケーションにおける性能の低減を防止するという効果を奏する。
【発明を実施するための最良の形態】
【００２２】
以下に添付図面を参照して、この発明に係るキャッシュメモリ装置およびメモリ制御方法の好適な実施の形態を詳細に説明する。
【実施例】
【００２３】
本実施例に係るキャッシュメモリ装置は、ｎ（ｎは１より大きい）ウェイセットアソシエイティブ方式のキャッシュメモリであり、ブロックに欠陥が生じキャッシュ容量を小さくする場合に、ライン方向に機能を停止させることによって、ウェイ数を減少させることなく、キャッシュ容量縮小に対応する。
【００２４】
なお、本実施例に係るキャッシュメモリ装置は、プロセッサに内蔵することやプロセッサに付加させることが可能であるが、以降の説明では、図１に示すように、キャッシュメモリ装置２００が、プロセッサ１００に直接接続されていると共に、メインメモリ３００へのアクセスは、キャッシュ２００を介して行われるシステムを例に挙げて説明する。
【００２５】
図２は、本実施例に係るキャッシュメモリ装置２００の構成を示す機能ブロック図である。同図に示すように、キャッシュメモリ装置２００は、キャッシャブルメモリアクセス空間２１０と、記憶部２２０と、キャッシュヒット検出部２３０と、データ選択部２４０とを有する。
【００２６】
キャッシャブルメモリアクセス空間２１０は、プロセッサ１００からメモリアクセスアドレスを受付ける。なお、プロセッサ１００から受付けるメモリアクセスアドレスは、記憶部２２０（記憶部２２０に関する説明は後述する）に含まれるキャッシュ容量を全て使用する場合と、キャッシュ容量をライン方向に縮小する場合とで異なる。
【００２７】
図３に、キャッシュ容量を全て使用する場合の、メモリアクセスアドレスの一例を示す。同図に示すように、メモリアクセスアドレスは、全４２ビットで構成され、４１ビット目から２０ビット目がタグ比較アドレスとなり、１９ビット目から６ビット目がラインアドレスとなる。なお、本実施例では、メモリアクセスアドレスが全４２ビットで構成される例を示すが、これに限定されるものではない。
【００２８】
ここで、ラインアドレスは、記憶部２２０に含まれるデータの位置を特定するためのものであり、タグ比較アドレスは、ラインアドレスによって特定されるデータがプロセッサ１００の検索中のデータか否かを判定するための情報である。
【００２９】
また、図４に、キャッシュ容量をライン方向に縮小する場合の、メモリアクセスアドレスの一例を示す。同図に示すように、メモリアクセスアドレスは、全４１ビットで構成され、４０ビット目から１９ビット目がタグ比較アドレスとなり、１８ビット目から６ビット目がラインアドレスとなる。すなわち、図３に示すメモリアクセスアドレスと、図４に示すメモリアクセスアドレスとの違いは、１９番目のビットをラインアドレスに含ませるか、タグ比較アドレスに含ませるかの違いとなる。
【００３０】
なお、後述するように、キャッシュ容量を全て使用する場合のラインアドレスは、１９番目のビットが、記憶部２２０に含まれるブロックを選択する場合に利用されることとなる。
【００３１】
キャッシャブルメモリアクセス空間２１０は、受付けたメモリアクセスアドレスに含まれるタグ比較アドレスおよびラインアドレスをそれぞれタグ比較アドレス部２１０ａおよびラインアドレス部２１０ｂに格納する。なお、下位ビット２１０ｃにはその他のデータが格納される。
【００３２】
タグ比較アドレス部２１０ａに格納されたタグ比較アドレスは、キャッシュヒット検出部２３０（キャッシュヒット検出部２３０に関しては後述する）に渡され、ラインアドレス部２１０ｂに格納されたラインアドレスは、記憶部２２０に渡される。
【００３３】
次に、記憶部２２０について説明する。記憶部２２０は、２ブロックに分割された複数のウェイを保持する。また、各ブロックには複数のラインが存在し、ラインごとにデータが格納される。なお、記憶部２２０に含まれるラインの数とウェイの数を乗算したものが、データの総量となる。また本実施例では、各ウェイが２ブロックに分割された場合を示すが、本発明を２ブロック以上に分割されたウェイに適応してもよい。
【００３４】
図５に記憶部２２０のデータ構造の一例を示す。同図に示すように、記録部２２０は、ウェイ０のブロック０およびブロック１と、ウェイ１のブロック０およびブロック１と、ウェイ２のブロック０およびブロック１と、ウェイ３のブロック０およびブロック１とを有する。なお、ここでは説明の便宜上、４個のウェイ（ウェイ０〜３）を保持する場合を示すが、この記憶部２２０は、任意数のウェイを保持しても良い。
【００３５】
また、各ブロックは、ライン毎に、ラインアドレス２２０ａと、タグ２２０ｂと、データ２２０ｃとを有する。ラインアドレス２２０ａは、対応するタグ２２０ｂおよびデータ２２０ｃの位置を示す情報である。また、ラインアドレス２２０ａは、キャッシャブルメモリアクセス空間２１０から渡されるラインアドレスである。
【００３６】
そして、キャッシャブルメモリアクセス空間２１０から渡されるラインアドレスと同一のラインアドレスに対応するタグが、キャッシュヒット検出部２３０に渡される。なお、キャッシュ容量を全て使用する場合には、ラインアドレスに含まれる先頭ビットの値を参照して、各ウェイのブロック０を利用するか、ブロック１を利用するか判定することになる。
【００３７】
具体的には、ラインアドレスに含まれる先頭ビットの値が「１」の場合には、ブロック０が利用され、ラインアドレスに含まれる先頭ビットの値が「０」の場合には、ブロック１が利用されることになる。キャッシュ容量を全て使用する場合の割付の一例を図６に示す。またこの場合、ラインアドレスの先頭アドレスは、ブロックを識別するために利用されるので、先頭アドレスを除いた残りのアドレスを用いて、対応するタグを検索する。
【００３８】
一方、キャッシュ容量をライン方向に縮小する場合には、ウェイごとにenbblk［ｎ］と呼ばれる信号を使用する。ここで、ｎは各ウェイを特定するための情報が格納される（ｎ＝０ならばウェイ０を示し、ｎ＝１ならばウェイ１を示し、ｎ＝２ならばウェイ２を示し、ｎ＝３ならばウェイ３を示す）。このenbblk［ｎ］を利用することによって、製造不良などによって使用できないブロックを避けることができる。
【００３９】
例えば、ウェイ０のブロック０に欠陥が存在する場合には、enbblk［０］を“１”に設定することによって、ウェイ０のブロック０の利用を避けることができる。同様に、ウェイ２のブロック１に欠陥が存在する場合には、enbblk［２］を“０”に設定することによって、ウェイ２のブロック１の利用を避けることができる。キャッシュ容量をライン方向に縮小する場合の割付の一例を図７に示す。なお、enbblk［ｎ］信号は、予め、キャッシュヒット検出部２３０に設定されている。
【００４０】
タグ２１０ｂは、キャッシュヒット検出部２３０に送信され、タグ２１０ｂに含まれるエントリアドレスと、タグ比較アドレスとが比較される。図８にタグ２１０ｂのデータ構造の一例を示す。
【００４１】
図８に示すように、タグ２２０ｂは、エントリアドレス部と、ステータスビット部とを有する。また、タグ２２０ｂは、全２２ビットで構成され、４１ビット目から２０ビット目までがエントリアドレス部となり、そのほかのビットがステータスビット部となる。
【００４２】
また、エントリアドレス部の最上位ビットを「Ｍ」とする。この「Ｍ」は、キャッシュ容量を全て使用する場合と、キャッシュ容量をライン方向に縮小する場合とで対応するビットが異なる。具体的には、キャッシュ容量を全て使用する場合には、「Ｍ」を４１番目のビットに対応させ、キャッシュ容量をライン方向に縮小する場合には、「Ｍ」を１９番目のビットに対応させる。
【００４３】
すなわち、キャッシュ容量を全て使用する場合には、エントリアドレスが、４１ビットから２０ビットまでとなるが、キャッシュ容量をライン方向に縮小する場合には、エントリアドレスが、４０ビットから１９ビットとなる。また、「Ｍ」を利用することによって、エントリアドレス部の利用領域を変更する必要がないため、キャッシュメモリに係るエントリアドレス部を再設計する必要がなくコストを抑えることができる。
【００４４】
ステータスビット部には、対応するタグが有効か否かの情報が含まれる。このタグが有効か否かの情報は、タグバリッドとして、キャッシュヒット検出部２３０によって利用されることになる。
【００４５】
次に、キャッシュヒット検出部２３０の説明を行う。本実施例に係るキャッシュヒット検出部２３０は、キャッシャブルメモリアクセス空間２１０から渡されるタグ比較アドレスや、記憶部２２０に含まれる各ウェイのタグに含まれるエントリアドレスなどを比較して、対応するデータがヒットしたか否かを判定し、判定結果をデータ選択部２４０に渡す。
【００４６】
なお、キャッシュヒット検出部２３０は、ヒット検出回路と、タグバリッド相当信号作成回路とを含む。すなわち、キャッシュヒット検出部２３０は、ヒット検出回路およびタグバリッド相当信号作成回路を利用して、対応するデータにヒットしたか否かを判定する。
【００４７】
図９にヒット検出回路の一例を示す。なお、ここでは、ウェイ０に対してヒットしたか否かを判定するヒット検出回路の例を示すが、ウェイ１〜３に関しても同様のヒット検出回路を利用することによって、データがヒットしたか否かを判定可能である。
【００４８】
図９に示すように、ヒット検出回路は、複数のＸＯＲ演算子、ＡＮＤ演算子およびＯＲ演算子を有する。なお、ＸＯＲ演算子の出力にはインバータが取り付けられているため、ＸＯＲ演算子から出力される値は反転される。
【００４９】
また、図９に示すように、ＸＯＲ演算子２３０ａには、ウェイ０のブロック０のタグエントリアドレス（タグを構成する全２２ビットの内、４０ビット目から２０ビット目まで）と、メモリアクセス要求のタグ比較アドレス（メモリアクセスアドレスを構成する全４２ビットの内、４０ビット目から２０ビット目まで）とが入力される。
【００５０】
そして、ＸＯＲ演算子２３０ａは、タグエントリアドレスと、タグ比較アドレスとを基にＸＯＲ演算を行う。演算結果の値は、インバータによって反転された後、ＡＮＤ演算子２３０ｄに入力される。具体的には、演算結果の値が「１」ならば、ＡＮＤ演算子２３０ｄには反転された「０」が入力される。
【００５１】
ＸＯＲ演算子２３０ｂには、ウェイ０のブロック０のタグエントリアドレスに係る最上位アドレス「Ｍ」と、メモリアクセス要求のタグ比較アドレスのキャッシュ容量の使用状況に応じた値が「Ｍｔ」として入力される。具体的には、キャッシュ容量を全て使用する場合には、「Ｍｔ」には、タグ比較アドレスの先頭のビットが入力される。
【００５２】
一方、キャッシュ容量をライン方向に縮小する場合は、タグ比較アドレスの最後尾のビットが「Ｍｔ」に入力される。すなわち、キャッシュ容量を全て利用する場合には、メモリアクセスアドレスに係る４１番目のビットが「Ｍｔ」に入力され、キャッシュ容量をライン方法に縮小する場合には、メモリアクセスアドレスに係る１９番目のビットが「Ｍｔ」に入力される。
【００５３】
そして、ＸＯＲ演算子２３０ｂは、タグエントリアドレスの「Ｍ」と、タグ比較アドレスの「Ｍｔ」とを基にＸＯＲ演算を行う。演算結果の値は、インバータによって反転された後、ＡＮＤ演算子２３０ｄに入力される。
【００５４】
ＡＮＤ演算子２３０ｃは、後述するタグバリッド相当信号作成回路によって作成されるタグバリッドに相当する信号と、ウェイ０の機能を有効とする信号とが入力される。なお、ウェイ０の機能を有効にする場合には「１」が入力され、ウェイ１の機能を無効にする場合は「０」が入力される。なお、ウェイ０の機能を有効にするか否かは予め、キャッシュヒット検出部２３０に設定されている。
【００５５】
ＡＮＤ演算子２３０ｄには、ＸＯＲ演算子２３０ａの出力値がインバータによって反転された値と、ＸＯＲ演算子２３０ｂの出力値がインバータによって反転された値とが入力される。そして、ＡＮＤ演算子２３０ｄは、ＸＯＲ演算子２３０ａおよび２３０ｂから入力された値を基にして、ＡＮＤ演算を行い、演算結果をＡＮＤ演算子２３０ｅに入力する。
【００５６】
ＡＮＤ演算子２３０ｅは、ＡＮＤ演算子２３０ｄおよびＡＮＤ演算子２３０ｃの出力値を受付け、受付けた値を基に、ＡＮＤ演算を行う。そして、演算結果をＯＲ演算子２３０ｆに入力する。
【００５７】
なお、ＸＯＲ演算子２３０ｇ、ＸＯＲ演算子２３０ｈ、ＡＮＤ演算子２３０ｉ、ＡＮＤ演算子２３０ｊおよびＡＮＤ演算子２３０ｋは、上述したＸＯＲ演算子２３０ａ、ＸＯＲ演算子２３０ｂ、ＡＮＤ演算子２３０ｃ、ＡＮＤ演算子２３０ｄおよびＡＮＤ演算子２３０ｅとほぼ同様であるため説明を省略する。
【００５８】
ＯＲ演算子２３０ｆは、ＡＮＤ演算子２３０ｅおよびＡＮＤ演算子２３０ｋから入力される値を基にＯＲ演算を実行し、演算結果を出力する。なお、ＯＲ演算子２３０ｆから出力される値が「１」ならば、ヒットしたことを示し、出力される値が「０」ならば、ミスしたことを示す。キャッシュヒット検出部２３０は、対応するデータがヒットしたか否かの情報を後述するデータ選択部２４０に通知することになる。
【００５９】
なお、図９では、ウェイ０に係るヒット検出回路を示したが、ウェイ１〜３に関しても同様のヒット検出回路を利用して、ヒット検出を行うことができる。ここでは、ウェイ１〜３に係るヒット検出回路の説明は省略する。
【００６０】
次に、図９に示したタグバリッドに相当する信号を作成するタグバリッド相当信号作成回路の説明をおこなう。図１０は、タグバリッド相当信号作成回路の一例を示す図である。同図に示すように、このタグバリッド相当信号作成回路は複数のＡＮＤ演算子およびＯＲ演算子から構成される。
【００６１】
ＡＮＤ演算子２３５ａは、上述したenbblk［ｎ］信号が反転した値と、キャッシュ容量の使用状態に係るモードの信号（以下、モード信号と表記する）とを受付け、受付けた値を基にしてＡＮＤ演算を実行し、演算結果の値をＯＲ演算子２３５ｂに入力する。なお、ウェイ０に係るenbblk［ｎ］信号はenbblk［０］となる。
【００６２】
ここで、モード信号として入力される値は、キャッシュ容量を全て使用する場合には、「０」となり、キャッシュ容量をライン方向に縮小する場合には、「１」となる。なお、このモード信号は、キャッシュヒット検出部２３０に予め設定されている。また、ＯＲ演算子２３５ｂは、モード信号を反転した値と、ＯＲ演算子２３５ａから入力される値を基にして、ＯＲ演算を行い、演算結果の数値をＡＮＤ演算子２３５ｃに出力する。
【００６３】
ＡＮＤ演算子２３５ｃは、ＯＲ演算子２３５ｅから入力される値と、ブロック０に係るタグのステータスビット部に含まれるタグが有効か否かの情報（以下、タグバリッドと表記する）を基にして、ＡＮＤ演算を実行し、演算結果を図９に示すＡＮＤ演算子２３０ｃに出力する。
【００６４】
ＡＮＤ演算子２３５ｄは、上述したモード信号と、enbblk［０］を受付け、受付けた値を基にして、ＡＮＤ演算を実行し、演算結果の値をＯＲ演算子２３５ｅに出力する。また、ＯＲ演算子２３５ｅは、ＡＮＤ演算子２３５ｄの演算結果の値と、モード信号の値を反転した値を受付け、受付けた値を基にして、ＯＲ演算を実行し、演算結果の値をＡＮＤ演算子２３５ｆに出力する。
【００６５】
ＡＮＤ演算子２３５ｆは、ＯＲ演算子２３５ｅの演算結果の値と、ウェイ０のブロック１のタグステータスからのタグバリッドを基にして、ＡＮＤ演算を実行し、演算結果の値を図９に示すＡＮＤ演算子２３０ｉに出力する。なお、ここでは、ウェイ０に係るタグバリッド相当信号作成回路を示したが、ウェイ１〜３に関しても同様のタグバリッド相当信号作成回路を利用する。本実施例では、ウェイ１〜３に係るタグバリッド相当信号作成回路の説明は省略する。
【００６６】
このように、キャッシュヒット検出部２３０に予め、モード信号、各enbblk［ｎ］信号および各ウェイの有効または無効に係る信号を設定しておくことによって、ウェイ数を減少させることなく、キャッシュ容量を縮小することができる。また、各ウェイの機能を有効する信号を利用することによって、従来どおり、ウェイ数を減少させて、キャッシュ容量を縮小させることもできる。すなわち、キャッシュメモリ装置の各ブロックに存在する欠陥に応じて、臨機応変に該当するウェイまたは、ラインを停止させ、キャッシュ容量の縮小に対応することができる。
【００６７】
データ選択部２４０は、キャッシュヒット検出部２３０からデータがヒットしたか否かの情報を受取り、ヒットした旨の情報を受取った場合には、対応するデータを記憶部２２０から検索し、検索したデータをプロセッサ１００に渡す。なお、データ選択部２４０は、対応するデータが記憶部２２０に存在しない場合には、対応するデータをメモリ３００に要求することとなる。
【００６８】
上述してきたように、本実施例に係るキャッシュメモリ装置２００は、キャッシャブルメモリアクセス空間２１０がキャッシュ容量の使用状態に応じて、データ構造の異なったメモリアクセスアドレスをプロセッサ１００から受付け、キャッシュヒット検出部２３０が予め設定されたモード信号、enbblk［ｎ］信号および各ウェイの有効または無効に係る信号、キャッシャブル空間２１０から受付けるタグ比較アドレスおよび記憶装置２２０から受付けるタグを基にして、データがヒットしたか否かを判定するので、ウェイ数を減らすことなくキャッシュ容量を縮小することができ、アプリケーションにおける性能の低減を防ぐことができる。
【００６９】
（付記１）複数のウェイを有するセットアソシエイティブ方式が採られると共に、プロセッサからの要求に応じて、該当するデータをプロセッサに渡すキャッシュメモリ装置であって、
キャッシュ容量を縮小する場合に、データを記憶する記憶部のウェイ方向またはライン方向の機能を停止させること
を特徴とするキャッシュメモリ装置。
【００７０】
（付記２）前記記憶部は、複数のウェイを有し、該ウェイは複数のブロックに分割されていることを特徴とする付記１に記載のキャッシュメモリ装置。
【００７１】
（付記３）複数のウェイを有するセットアソシエイティブ方式が採られると共に、プロセッサからの要求に応じて、該当するデータをプロセッサに渡すキャッシュメモリ装置であって、
前記プロセッサの要求するデータの位置を示すラインアドレスと、該ラインアドレスによって特定されるデータが適切か否かを判定するためのタグ比較アドレスとを含んだアクセスアドレスを取得するアクセスアドレス取得手段と、
前記アクセスアドレスおよび各ウェイの状態を基にして、前記プロセッサが要求するデータにヒットしたか否かを判定する判定処理手段と、
を備えたことを特徴とするキャッシュメモリ装置。
【００７２】
（付記４）複数のブロックに分割されたウェイを保持する保持手段を更に備えたことを特徴とする付記３に記載のキャッシュメモリ装置。
【００７３】
（付記５）前記ラインアドレスは、ウェイに含まれるブロックを特定する特定情報を含み、該特定情報によってウェイに含まれる複数のブロックのうち一つのブロックが特定されることを特徴とする付記４に記載のキャッシュメモリ装置。
【００７４】
（付記６）前記ブロックは、複数のタグ情報を含み、キャッシュ容量の使用状況によって、前記タグ情報のアドレス構成が変更されることを特徴とする付記４に記載のキャッシュメモリ装置。
【００７５】
（付記７）前記判定処理手段は、キャッシュ容量の使用状況によって、使用するウェイおよびブロックを予め特定しておくことを特徴とする付記４に記載のキャッシュメモリ装置。
【００７６】
（付記８）前記タグ比較アドレスは、キャッシュ容量の使用状況によって、アドレス構成が変更されることを特徴とする付記３に記載のキャッシュメモリ装置。
【００７７】
（付記９）複数のウェイを有するセットアソシエイティブ方式が採られると共に、プロセッサからの要求に応じて、該当するデータをプロセッサに渡すキャッシュメモリ装置に適用されるメモリ制御方法であって、
前記プロセッサの要求するデータの位置を示すラインアドレスと、該ラインアドレスによって特定されるデータが適切か否かを判定するためのタグ比較アドレスとを含んだアクセスアドレスを取得するアクセスアドレス取得工程と、
前記アクセスアドレスおよび各ウェイの状態を基にして、前記プロセッサが要求するデータにヒットしたか否かを判定する判定処理工程と、
を含んだことを特徴とするメモリ制御方法。
【産業上の利用可能性】
【００７８】
以上のように、本発明にかかるキャッシュメモリ装置およびメモリ制御方法は、アプリケーションにおける性能を維持しつつ、キャッシュメモリの容量を縮小させる場合に適している。
【図面の簡単な説明】
【００７９】
【図１】本実施例に係るキャッシュメモリを説明する図である。
【図２】本実施例に係るキャッシュメモリの構成を示す機能ブロック図である。
【図３】キャッシュ容量を全て利用する場合の、メモリアクセスアドレスの一例を示す図である。
【図４】キャッシュ容量をライン方向に縮小する場合の、メモリアクセスアドレスの一例を示す図である。
【図５】記憶部のデータ構造の一例を示す図である。
【図６】キャッシュ容量を全て使用する場合の割付の一例を示す図である。
【図７】キャッシュ容量をライン方向に縮小する場合の割付の一例を示す図である。
【図８】タグのデータ構造の一例を示す図である。
【図９】ヒット検出回路の一例を示す図である。
【図１０】タグバリッド相当信号作成回路の一例を示す図である。
【符号の説明】
【００８０】
１００    プロセッサ
２００    キャッシュメモリ装置
２１０    キャッシャブルメモリアクセス空間
２２０    記憶部
２３０    キャッシュヒット検出部
２４０    データ選択部
３００    メインメモリ
【図１】
2006040176.tif 000003
【図２】
2006040176.tif 000004
【図３】
2006040176.tif 000005
【図４】
2006040176.tif 000006
【図５】
2006040176.tif 000007
【図６】
2006040176.tif 000008
【図７】
2006040176.tif 000009
【図８】
2006040176.tif 000010
【図９】
2006040176.tif 000011
【図１０】
2006040176.tif 000012