(57)【要約】【課題】設定されるウェイの数に応じて構成が変更された後のキャッシュメモリに対するデータの書き込みがデータの書き込みを実現する。【解決手段】２ｎ個の制御手段５０の各々は、データの書き込み時において、バンク選択データ（Ｘ１，Ｘ０）およびウェイ指定データＭｅｍに基づいて、当該制御手段５０に対応するバンクＢが有効であるか否かを判定し、有効であると判定した場合にインデックスデータIndexにて指定される当該バンクＢのキャッシュラインＣにタグデータTgと当該タグデータTgに対応する外部メモリ内のデータとの書き込みを許可する。【選択図】図２
2010218507.tif 000002
【特許請求の範囲】
【請求項１】
外部メモリに格納されたデータを記憶可能なキャッシュラインを各々が複数備えた２ｎ個（ｎは１以上の整数）のバンクを、２ｍ（ｍはｎ≧ｍ≧０の整数）個のウェイに分割し、１ウェイ当たり２ｎ／２ｍ個のバンクが属するように管理するキャッシュメモリ装置であって、
前記ウェイの数であるウェイ数を可変に設定可能なウェイ数設定手段と、
前記外部メモリのアドレスを指定するアドレスデータを、上位ビットから、タグデータ、ｎビットのバンク選択データ、前記バンクのキャッシュラインを指定するインデックスデータに分割して生成するアドレスデータ生成手段と、
前記アドレスデータを前記ウェイ数で割った余りに基づいて当該アドレスデータに対応するデータが２ｍ個のウェイのいずれに属するかを指定するウェイ指定データを生成するウェイ指定手段と、
前記２ｎ個のバンクの各々に対応して設けられた２ｎ個の制御手段と、を備え、
前記２ｎ個の制御手段の各々は、データの書き込み時において、
前記バンク選択データおよび前記ウェイ指定データに基づいて、当該制御手段に対応する前記バンクが有効であるか否かを判定し、
有効であると判定した場合に前記インデックスデータにて指定される当該バンクのキャッシュラインに前記タグデータと当該タグデータに対応する外部メモリ内のデータとの書き込みを許可する、
ことを特徴とするキャッシュメモリ装置。
【請求項２】
前記ウェイ指定手段は、
ｋをｍ≧ｋ≧１を満たす全ての整数としたとき、前記アドレスデータを２ｋで割り算して余りを各々算出し、算出した余りに応じた信号を出力するｍ個の剰余演算回路と、
前記２ｎ個の制御手段の各々に対応して設けられ、前記ｍ個の剰余演算回路からの出力信号と前記ウェイ数が１であることを示す信号との中から一つを前記ウェイ数に基づいて選択する２ｎ個の選択回路とを備え、
前記２ｎ個の選択回路から出力される信号を前記ウェイ指定データとして出力する、
ことを特徴とする請求項１のキャッシュメモリ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャッシュメモリ装置に関する。
【背景技術】
【０００２】
従来、ＣＰＵ（Central Processing Unit）などの処理装置と、外部メモリ（主記憶装置）に格納されたデータの一部が格納されたキャッシュメモリとを有するキャッシュメモリ装置が知られている。キャッシュメモリの方式としては、例えばｎ（ｎは２以上の自然数）ウェイセットアソシアティブ方式が知られている。
【０００３】
図１は、特許文献１に開示された４ウェイセットアソシアティブ方式のキャッシュメモリの構造を示す図である。図１に示すように、キャッシュメモリ１０は、タグメモリ１１とデータメモリ１２とから構成される。データメモリ１２は、外部メモリ（図示省略）に格納されたデータの一部のコピーを保持する。また、タグメモリ１１は、データメモリ１２内のブロックに格納されているデータのアドレス情報を保持する。例えば図１において、タグメモリ１１内のブロック００には、データメモリ１２内のブロック００に格納されたデータのアドレス情報が保持され、タグメモリ１１内のブロック１０には、データメモリ１２内のブロック１０に格納されたデータのアドレス情報が保持されるという具合である。図１に示すＡは基本ブロックの単位を示し、Ｂは縦方向（Ｙ方向）のエントリ数（図１では８個）を示し、Ｃは横方向（Ｘ方向）のウェイ数（図１では４個）を示す。
【０００４】
図１に示すアドレスレジスタ２０は、データをアクセスするために生成されたアドレスデータＡｄをタグメモリ１１およびデータメモリ１２に対して出力する手段である。タグメモリ１１およびデータメモリ１２の各々における縦方向の８個のエントリのうちアドレスデータＡｄに対応するエントリが指定されると、当該エントリに対応する４ウェイ分のデータがタグメモリ１１およびデータメモリ１２の各々から読み出される。そして、タグメモリ１１から読み出された４ウェイ分のデータとアクセスすべきデータの実アドレスとが比較器（図示省略）にて比較されてヒットかミスヒットかが判定される。データメモリ１２から読み出された４ウェイ分のデータのうち比較器によってヒットと判定されたウェイに対応するデータは選択回路（図示省略）によって選択される。
【０００５】
図１に示す構成変更手段３３は、キャッシュメモリ１０の構成を変更するための信号３００をキャッシュメモリ１０に対して出力する。例えば構成変更手段３３から出力される信号３００によって、横方向に並ぶ２個の基本ブロックＡでひとつの基本ブロック（＝２×Ａ）が構成されるように指定された場合、縦方向のエントリの数は８個のままであるが、横方向のウェイの数は４個から２個に変更される。すなわち、４ウェイセットアソシアティブ方式のキャッシュメモリ１０から２ウェイセットアソシアティブ方式のキャッシュメモリ１０へ変更される。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０００―２０３９６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上述の特許文献１には、構成変更手段３３から出力される信号３００に応じてキャッシュメモリ１０の構成が変更される構成について開示されている。しかしながら、特許文献１には、構成が変更された後のキャッシュメモリ１０に対するデータの書き込み方法については何ら開示がされていない。このため、構成が変更された後のキャッシュメモリ１０に対するデータの書き込みをどのようにして行うのかが不明であるという問題があった。
以上の事情に鑑みて、本発明は、構成が可変であるキャッシュメモリ装置において、キャッシュメモリ装置の構成が変更されても、変更の態様に応じたデータの書き込みを実現するという課題の解決を目的としている。
【課題を解決するための手段】
【０００８】
以上の課題を解決するために、本発明に係るキャッシュメモリ装置は、外部メモリに格納されたデータを記憶可能なキャッシュラインを各々が複数備えた２ｎ個（ｎは１以上の整数）のバンクを、２ｍ（ｍはｎ≧ｍ≧０の整数）個のウェイに分割し、１ウェイ当たり２ｎ／２ｍ個のバンクが属するように管理するキャッシュメモリ装置であって、ウェイの数であるウェイ数を可変に設定可能なウェイ数設定手段と、外部メモリのアドレスを指定するアドレスデータを、上位ビットから、タグデータ、ｎビットのバンク選択データ、バンクのキャッシュラインを指定するインデックスデータに分割して生成するアドレスデータ生成手段と、アドレスデータをウェイ数で割った余りに基づいて当該アドレスデータが対応するウェイを指定するウェイ指定データを生成するウェイ指定手段と、２ｎ個のバンクの各々に対応して設けられた２ｎ個の制御手段と、を備え、２ｎ個の制御手段の各々は、データの書き込み時において、バンク選択データおよびウェイ指定データに基づいて、当該制御手段に対応するバンクが有効であるか否かを判定し、有効であると判定した場合にインデックスデータにて指定される当該バンクのキャッシュラインにタグデータと当該タグデータに対応する外部メモリ内のデータとの書き込みを許可する。
【０００９】
この発明は、ウェイ数設定手段を備えるからウェイ数は可変に設定可能である。ウェイ数の指定に伴ってバンク単位でどのウェイに属するかを切り替える。バンク数が２ｎ個である場合に、指定可能なウェイ数は、１（＝２０）、２（＝２１）、４（＝２２）、…２ｎとなる。インデックスデータは、バンク内のキャッシュラインを指定するものであるから、ウェイ数が変更されてもバンク内のアドレスを指定するものとして共通に使用することができる。一方、バンク選択データは、ｎビットで構成されるので、ウェイ数が１の場合にも、２ｎ個のバンクを個別に指定することができる。そして、バンク選択データおよびどのウェイに属するかを指定するウェイ指定データに基づいて、外部メモリ内のデータの書き込みを許可するバンクを特定することができる。
つまり、ウェイ数が変更されても共通に使用可能なインデックスデータと、さらに上位のバンク選択データに分けてアドレスを管理することによって、キャッシュメモリの構成が変更されても、変更の態様に応じてデータの書き込みを行うことが可能となる。
【００１０】
また、上記態様においては、アドレスデータをウェイ数で割った余りに基づいて当該アドレスデータがどのウェイに属するかが区別されるが、ウェイ数が１の場合には、アドレスデータがどのような値であっても余りは０になり、どのウェイに属するかが区別されることはない（この場合は、ダイレクトマッピング方式になる）。すなわち、「前記アドレスデータを前記ウェイ数で割った余りに基づいて」とは、必ずしもアドレスデータをウェイ数で割る演算を実行することを要しない。
【００１１】
また、本発明に係るキャッシュメモリ装置の具体的な態様として、ウェイ指定手段は、ｋをｍ≧ｋ≧１を満たす全ての整数としたとき、前記アドレスデータを２ｋで割り算して余りを各々算出し、算出した余りに応じた信号を出力するｍ個の剰余演算回路と、前記２ｎ個の制御手段の各々に対応して設けられ、前記ｍ個の剰余演算回路からの出力信号と前記ウェイ数が１であることを示す信号との中から一つを前記ウェイ数に基づいて選択する２ｎ個の選択回路とを備え、前記２ｎ個の選択回路から出力される信号を前記ウェイ指定データとして出力する。
例えば、ｍ＝２の場合、ｋは２≧ｋ≧１の整数となるから、ｋの取り得る値は「２」と「１」となる。このため、２（＝ｍ）個の剰余演算回路は、アドレスデータを２２で割り算して余りを算出するものと、アドレスデータを２１で割り算して余りを算出するものから構成される。
【図面の簡単な説明】
【００１２】
【図１】従来のキャッシュメモリの構成を示す図である。
【図２】本実施形態に係るキャッシュメモリ装置の構成を示す図である。
【図３】ウェイ数が４に設定されてデータの書き込みが行われる態様を示す図である。
【図４】ウェイ数が２に設定されてデータの書き込みが行われる態様を示す図である。
【図５】ウェイ数が１に設定されてデータの書き込みが行われる態様を示す図である。
【図６】ウェイ数が４に設定されてデータの読み出しが行われる態様を示す図である
【図７】ウェイ数が２に設定されてデータの読み出しが行われる態様を示す図である。
【図８】ウェイ数が１に設定されてデータの読み出しが行われる態様を示す図である。
【発明を実施するための形態】
【００１３】
＜Ａ：キャッシュメモリ装置の構成＞
図２は、本実施形態に係るキャッシュメモリ装置１０の概略構成を示すブロック図である。図２に示すように、キャッシュメモリ装置１０は、ＣＰＵ２０と、バンクＢ１〜Ｂ４と、制御レジスタ３０と、ウェイ指定部４０と、バンクＢ１〜Ｂ４の各々に対応して設けられる制御部５０ａ〜５０ｄとを含む。バンクＢ１〜Ｂ４（以下においては、適宜、単に「バンクＢ」と記載する）の各々は、複数（本実施形態においては２５６個）のキャッシュラインＣ１〜Ｃ２５６（以下においては、適宜、単に「キャッシュラインＣ」と記載する）からなる。複数のキャッシュラインＣの各々は、外部メモリ（図示省略）に格納された複数の単位データｄのうちの何れかの単位データｄと、当該単位データｄが格納された外部メモリ内のアドレスを示すタグデータTgと、当該キャッシュラインＣに単位データｄが格納されているか否かを示す有効ビットＶとを記憶可能である。有効ビットＶが「１」の場合は、当該キャッシュラインＣに単位データｄが格納されていることを示し、有効ビットＶが「０」の場合は、当該キャッシュラインＣに単位データｄが格納されていないことを示す。
【００１４】
図２に示すＣＰＵ２０は、所定のプログラムを実行すると共に、外部メモリとバンクＢ１〜Ｂ４との間で単位データｄの書き込みおよび読み出しを制御する手段である。ＣＰＵ２０は、外部メモリのアドレスを指定するアドレスデータ２２を発行する。アドレスデータ２２は、上位ビットから、タグデータTg、バンク選択データ（Ｘ１，Ｘ０）、インデックスデータIndexで構成される。タグデータTgは、単位データｄの外部メモリ内のアドレスを示す２１ビットのデータである。バンク選択データ（Ｘ１，Ｘ０）は、対応するバンクＢを選択するための２ビットのデータである。インデックスデータIndexは、バンクＢに属する複数のキャッシュラインＣのうちのいずれかを指定する８ビットのデータである。つまり、外部メモリのアドレス空間は３１ビット（＝２１＋２＋８）で表される。
なお、ひとつの単位データｄを複数のブロックに分割して管理する態様においては、単位データｄを構成する複数のブロックのうちのいずれかのブロックを指定するブロック内オフセットデータをアドレスデータ２２に付加することもできる。例えば単位データｄが４つのブロックから構成される場合は、２ビットのブロック内オフセットデータがアドレスデータ２２に付加される。
【００１５】
図２に示す制御レジスタ３０はウェイの数を可変に設定するための手段である。ウェイの数は、例えば実行するプログラムによって指定されてＣＰＵ２０が制御レジスタ３０に書き込む。例えば制御レジスタ３０にてウェイの数が「４」に設定される場合は、図３に示すように、４個のバンクＢ１〜Ｂ４は４個のウェイ１〜４に分割され、１ウェイ当たり１個のバンクＢが属するように設定される。図３において、ウェイ１にはバンクＢ１が属し、ウェイ２にはバンクＢ２が属し、ウェイ３にはバンクＢ３が属し、ウェイ４にはバンクＢ４が属するという具合である。また、ウェイの数が「２」に設定される場合は、図４に示すように、４個のバンクＢ１〜Ｂ４は２個のウェイ（図４に示すウェイ１およびウェイ２）に分割され、１ウェイ当たり２個のバンクＢが属するように設定される。図４において、ウェイ１にはバンクＢ１およびＢ２が属し、ウェイ２にはバンクＢ３およびＢ４はウェイ２が属するという具合である。さらに、ウェイの数が「１」に設定される場合は、図５に示すように、バンクＢ１〜Ｂ４はひとつのウェイ１に属するように設定される。つまり、この場合はダイレクトマッピング方式となる。
【００１６】
図２に示すウェイ指定部４０は、ＣＰＵ２０から発行されるアドレスデータ２２が何れのウェイに属するかを指定する手段である。図２に示すように、ウェイ指定部４０は、剰余演算回路４１ａおよび４１ｂと、選択回路４２ａ〜４２ｄとを含む。選択回路４２ａ〜４２ｄは、剰余演算回路４１ａおよび４１ｂの各々から出力される信号とウェイ数が１であることを示す信号との中から１つをウェイ数に基づいて選択する手段である。その詳細な態様については後述する。
【００１７】
図２に示す制御部５０ａ〜５０ｄは、データの書き込み時において、各々に対応する選択回路４２ａ〜４２ｄから出力される信号とバンク選択データ（Ｘ１，Ｘ０）とに基づいて、当該制御部５０に対応するバンクＢが有効であるか否かを判定し、有効であると判定した場合に当該バンクＢに対するデータの書き込みを許可する手段である。また、制御部５０ａ〜５０ｄの各々は、データの読み出し時において、バンク選択データ（Ｘ１，Ｘ０）と制御レジスタ３０から出力される制御信号とに基づいて、当該制御部５０に対応するバンクＢが有効であるか否かを判定し、有効であると判定した場合に当該バンクＢに対するデータの読み出しを許可する手段である。その詳細な態様については後述する。
【００１８】
＜Ｂ：データの書き込み動作＞
次に、キャッシュメモリ装置１０におけるデータの書き込み動作について説明する。図２に示すように、ＣＰＵ２０から発行されるアドレスデータ２２は、剰余演算回路４１ａおよび４１ｂへ供給される。また、ＣＰＵ２０から発行されるインデックスデータIndexおよびバンク選択データ（Ｘ１，Ｘ０）は、各制御部５０ａ〜５０ｄへ供給される。
【００１９】
剰余演算回路４１ａは、ＣＰＵ２０から供給されるアドレスデータ２２について「４」に基づく剰余演算を行い、得られた演算値に応じて各選択回路４２へ出力する第１選択信号mod4[０]〜mod４[３]をアクティブレベルまたは非アクティブレベルに設定する。具体的には以下のとおりである。剰余演算回路４１ａは、アドレスデータ２２を「４」で割った余りが「０」の場合、選択回路４２ａへ出力する第１選択信号mod4[０]をアクティブレベルに設定し、選択回路４２ｂ〜４２ｄへ出力する第１選択信号mod4[１]〜mod4[３]を非アクティブレベルに設定する。同様にして、余りが「１」の場合、剰余演算回路４１ａは、選択回路４２ｂへ出力する第１選択信号mod4[１]をアクティブレベルに設定し、選択回路４２ａ、４２ｃ、４２ｄへ出力する第１選択信号mod4[０]、mod4[２]、mod4[３]を非アクティブレベルに設定する。また、余りが「２」の場合、剰余演算回路４１ａは、選択回路４２ｃへ出力する第１選択信号mod4[２]をアクティブレベルに設定し、選択回路４２ａ、４２ｂ、４２ｄへ出力する第１選択信号mod4[０]、mod4[１]、mod4[３]を非アクティブレベルに設定する。さらに、余りが「３」の場合、剰余演算回路４１ａは、選択回路４２ｄへ出力する第１選択信号mod4[３]をアクティブレベルに設定し、選択回路４２ａ〜４２ｃへ出力する第１選択信号mod4[０]〜mod4[２]を非アクティブレベルに設定する。
【００２０】
剰余演算回路４１ｂも同様に、ＣＰＵ２０から供給されるアドレスデータ２２について「２」に基づく剰余演算を行い、得られた演算値に応じて各選択回路４２へ出力する第２選択信号mod2[０]およびmod2[１]をアクティブレベルまたは非アクティブレベルに設定する。本実施形態では、剰余演算回路４１ｂは、アドレスデータ２２を「２」で割った余りが「０」の場合、選択回路４２ａおよび選択回路４２ｂの各々へ出力する第２選択信号mod2[０]をアクティブレベルに設定し、選択回路４２ｃおよび選択回路４２ｄの各々へ出力する第２選択信号mod2[１]を非アクティブレベルに設定する。同様にして、余りが「１」の場合、剰余演算回路４１ｂは、選択回路４２ｃおよび選択回路４２ｄの各々へ出力する第２選択信号mod2[１]をアクティブレベルに設定し、選択回路４２ａおよび選択回路４２ｂの各々へ出力する第２選択信号mod2[０]を非アクティブレベルに設定する。
【００２１】
また、各選択回路４２ａ〜４２ｄには、ウェイ数が１であることを示す第３選択信号1'b1が図示しない信号発生回路から供給される。第３選択信号1'b1は常時アクティブレベルに設定される。
【００２２】
いま、制御レジスタ３０にてウェイの数が「４」に設定される場合を考える。この場合、図３に示すように、制御レジスタ３０は各選択回路４２ａ〜４２ｄに対して第１選択信号mod4の選択を指示する信号５１ａを供給する。信号５１ａが各選択回路４２ａ〜４２ｄに供給されると、各選択回路４２ａ〜４２ｄは、当該選択回路４２に供給される第１選択信号mod4、第２選択信号mod2、第３選択信号1'b1の中から第１選択信号mod4のみを選択し、選択した第１選択信号mod4の状態に応じて、制御部５０へ出力するウェイ指定データＭｅｍをアクティブレベルまたは非アクティブレベルに設定する。より具体的には、各選択回路４２ａ〜４２ｄは、当該選択回路４２に供給される第１選択信号mod4がアクティブレベルであれば、当該選択回路４２に対応する制御部５０へ出力するウェイ指定データＭｅｍをアクティブレベルに設定し、当該選択回路４２に供給される第１選択信号mod4が非アクティブレベルであれば、制御部５０へ出力するウェイ指定データＭｅｍを非アクティブレベルに設定する。本実施形態では、アクティブレベルのウェイ指定データＭｅｍが制御部５０へ出力されることは、当該制御部５０に対応するバンクＢが属するウェイがアドレスデータ２２に対応するウェイとして指定されることを意味する。
【００２３】
例えば図３において、選択回路４２ａに供給される第１選択信号mod4[０]がアクティブレベルである一方、選択回路４２ｂ〜４２ｄに供給される第１選択信号mod4[１]〜[３]が非アクティブレベルである場合、選択回路４２ａは、当該選択回路４２ａに対応する制御部５０ａへ出力するウェイ指定データＭｅｍをアクティブレベルに設定し、他の選択回路４２ｂ〜４２ｄの各々は、各々に対応する制御部５０ｂ〜５０ｄへ出力するウェイ指定データＭｅｍを非アクティブレベルに設定する。すなわち、制御部５０ａに対応するバンクＢ１が属するウェイ１がアドレスデータ２２に対応するウェイとして指定される。
【００２４】
そのようにして、４つのウェイ１〜４のうちのいずれかがアドレスデータ２２に対応するウェイとして指定されると、当該指定されたウェイに属する１つのバンクＢに対応する制御部５０は、バンク選択データ（Ｘ１，Ｘ０）の値とは無関係に、当該１つのバンクＢに含まれる複数のキャッシュラインＣ１〜Ｃ２５６のうちインデックスデータIndexにて指定されたキャッシュラインＣに対してデータの書き込みを許可する。
【００２５】
例えばアドレスデータ２２に対応するウェイとしてウェイ１が指定される場合、制御部５０ａには当該制御部５０ａに対応する選択回路４２ａからアクティブレベルのウェイ指定データＭｅｍが供給される。このとき、制御部５０ａは、バンクＢ１を選択するためのチップセレクト信号ＣＳＮとバンクＢ１に対するデータの書き込みの可否を決定するためのライトイネーブル信号ＷＲＮとの双方をアクティブレベルに設定してバンクＢ１へ出力する。これにより、バンクＢ１に対するデータの書き込みが許可され、インデックスデータIndexにて指定されるバンクＢ１のキャッシュラインＣにアドレスデータ２２中のタグデータTgと当該タグデータTgに対応する単位データｄとが書き込まれる。そして、当該キャッシュラインＣに対応する有効ビットＶの値が「１」に設定される。一方、アドレスデータ２２に対応するウェイとしてウェイ１が指定されない場合、制御部５０ａには非アクティブレベルのウェイ指定データＭｅｍが供給される。このとき、制御部５０ａは、チップセレクト信号ＣＳＮおよびライトイネーブル信号ＷＲＮの双方を非アクティブレベルに設定して、バンクＢ１に対するデータの書き込みを許可しない。なお、他のウェイ２〜ウェイ４についても上記と同様である。
【００２６】
次に、制御レジスタ３０にてウェイの数が「２」に設定される場合を考える。この場合、図４に示すように、制御レジスタ３０は各選択回路４２ａ〜４２ｄに対して第２選択信号mod2の選択を指示する信号５１ｂを供給する。信号５１ｂが各選択回路４２ａ〜４２ｄに供給されると、各選択回路４２ａ〜４２ｄは、当該選択回路４２に供給される第１選択信号mod4、第２選択信号mod2、第３選択信号1'b1の中から第２選択信号mod2のみを選択し、選択した第２選択信号mod2の状態に応じて、制御部５０へ出力するウェイ指定データＭｅｍをアクティブレベルまたは非アクティブレベルに設定する。より具体的には、各選択回路４２ａ〜４２ｄは、当該選択回路４２に供給される第２選択信号mod2がアクティブレベルであれば、当該選択回路４２に対応する制御手段５０へ出力するウェイ指定データＭｅｍをアクティブレベルに設定し、当該選択回路４２に供給される第２選択信号mod2が非アクティブレベルであれば、制御部５０へ出力するウェイ指定データＭｅｍを非アクティブレベルに設定する。
【００２７】
例えば図４において、選択回路４２ａおよび４２ｂに供給される第２選択信号mod2[０]がアクティブレベルである一方、選択回路４２ｃおよび４２ｄに供給される第２選択信号mod2[１]が非アクティブレベルである場合、選択回路４２ａおよび４２ｂの各々は、各々に対応する制御部５０ａおよび５０ｂへ出力するウェイ指定データＭｅｍをアクティブレベルに設定し、選択回路４２ｃおよび４２ｄの各々は、各々に対応する制御部５０ｃおよび５０ｄへ出力するウェイ指定データＭｅｍを非アクティブレベルに設定する。この場合、制御部５０ａおよび５０ｂに対応するバンクＢ１およびＢ２が属するウェイ１がアドレスデータ２２に対応するウェイとして指定される。
【００２８】
各制御部５０ａ〜５０ｄは、当該制御部５０に供給されるウェイ指定データＭｅｍおよびバンク選択データ（Ｘ１，Ｘ０）に基づいて、当該制御部５０に対応するバンクＢが有効であるか否かを判定し、有効と判定した場合にインデックスデータIndexにて指定される当該バンクＢのキャッシュラインＣに対するデータの書き込みを許可する。より具体的には以下のとおりである。例えば制御部５０ａは、当該制御部５０ａに供給されるウェイ指定データＭｅｍがアクティブレベルであって、かつ、バンク選択データ（Ｘ１，Ｘ０）の下位のビットであるＸ０の値が「０」の場合、当該制御部５０ａに対応するバンクＢ１が有効であると判定する。このとき、制御部５０ａは、チップセレクト信号ＣＳＮおよびライトイネーブル信号ＷＲＮの双方をアクティブレベルに設定してバンクＢ１に対するデータの書き込みを許可する。これにより、インデックスデータIndexにて指定されるバンクＢ１のキャッシュラインＣにデータが書き込まれる。一方、制御部５０ａは、当該制御部５０ａに供給されるウェイ指定データＭｅｍが非アクティブレベルである場合またはＸ０の値が「１」である場合は、バンクＢ１は無効であると判定し、チップセレクト信号ＣＳＮおよびライトイネーブル信号ＷＲＮの双方を非アクティブレベルに設定してバンクＢ１に対するデータの書き込みを許可しない。
【００２９】
また、例えば制御手段５０ｂは、ウェイ指定データＭｅｍがアクティブレベルであって、かつ、Ｘ０の値が「１」の場合、当該制御部５０ｂに対応するバンクＢ２が有効であると判定する。このとき、制御部５０ｂは、チップセレクト信号ＣＳＮおよびライトイネーブル信号ＷＲＮの双方をアクティブレベルに設定してバンクＢ２に対するデータの書き込みを許可する。これにより、インデックスデータIndexにて指定されるバンクＢ２のキャッシュラインＣにデータが書き込まれる。一方、制御部５０ｂは、ウェイ指定データＭｅｍが非アクティブレベルである場合やＸ０の値が「１」の場合は、バンクＢ２は無効であると判定し、チップセレクト信号ＣＳＮおよびライトイネーブル信号ＷＲＮの双方を非アクティブレベルに設定してバンクＢ２に対するデータの書き込みを許可しない。
【００３０】
すなわち、アドレスデータ２２に対応するウェイとしてウェイ１が指定されてＸ０の値が「０」の場合、制御部５０ａはバンクＢ１が有効であると判定してバンクＢ１に対するデータの書き込みを許可する一方、制御部５０ｂはバンクＢ２が無効であると判定してバンクＢ２に対するデータの書き込みを許可しない。また、ウェイ１が指定されてＸ０の値が「１」の場合は、制御部５０ａはバンクＢ１が無効であると判定してバンクＢ１に対するデータの書き込みを許可しない一方、制御部５０ｂはバンクＢ２が有効であると判定してバンクＢ２に対するデータの書き込みを許可する。
【００３１】
同様にして、ウェイ２に属するバンクＢ３に対応する制御手段５０ｃは、ウェイ指定データＭｅｍがアクティブレベルであって、かつ、Ｘ０の値が「０」の場合、当該制御部５０ｃに対応するバンクＢ３が有効であると判定してバンクＢ３に対するデータの書き込みを許可する。これにより、インデックスデータIndexにて指定されるバンクＢ３のキャッシュラインＣにデータが書き込まれる。一方、制御部５０ｃは、ウェイ指定データＭｅｍが非アクティブレベルである場合やＸ０の値が「１」の場合は、バンクＢ３は無効であると判定してバンクＢ３に対するデータの書き込みを許可しない。また、ウェイ２に属するバンクＢ４に対応する制御手段５０ｄは、ウェイ指定データＭｅｍがアクティブレベルであって、かつ、Ｘ０の値が「１」の場合、当該制御部５０ｄに対応するバンクＢ４が有効であると判定してバンクＢ４に対するデータの書き込みを許可する。これにより、インデックスデータIndexにて指定されるバンクＢ４のキャッシュラインＣにデータが書き込まれる。一方、制御部５０ｄは、ウェイ指定データＭｅｍが非アクティブレベルである場合やＸ０の値が「０」の場合は、バンクＢ４は無効であると判定してバンクＢ４に対するデータの書き込みを許可しない。
【００３２】
つまり、アドレスデータ２２に対応するウェイとしてウェイ２が指定されてＸ０の値が「０」の場合、制御部５０ｃはバンクＢ３が有効であると判定してバンクＢ３に対するデータの書き込みを許可する一方、制御部５０ｄはバンクＢ４が無効であると判定してバンクＢ４に対するデータの書き込みを許可しない。また、ウェイ２が指定されてＸ０の値が「１」の場合、制御部５０ｃはバンクＢ３が無効であると判定してバンクＢ３に対するデータの書き込みを許可しない一方、制御部５０ｄはバンクＢ４が有効であると判定してバンクＢ４に対するデータの書き込みを許可する。
【００３３】
ところで、本実施形態においては、例えばウェイ１に属するバンクＢ１およびＢ２にデータを書き込む場合、ＣＰＵ２０は、最初にバンク選択データ（Ｘ１，Ｘ０）の下位ビットのＸ０の値を「０」に設定したうえで、８ビットのインデックスデータIndexに対応する２５６個のアドレスデータ２２を発行する。そして、２５６個のアドレスデータ２２の各々に対応するデータ（タグデータTgおよび単位データｄ）がバンクＢ１のキャッシュラインＣ１〜Ｃ２５６に書き込まれる。その書き込み動作が終了すると、ＣＰＵ２０は、バンク選択データ（Ｘ１，Ｘ０）の下位ビットのＸ０の値を「１」に設定したうえで、８ビットのインデックスデータIndexに対応する２５６個のアドレスデータ２２を発行する。そして、２５６個のアドレスデータ２２の各々に対応するデータがバンクＢ２のキャッシュラインＣ１〜Ｃ２５６に書き込まれる。すなわち、連続する５１２個のアドレスデータ２２に対応するデータが、ウェイ１に属するバンクＢ１およびＢ２に書き込まれる。これにより、ひとつのウェイに格納されるデータの数を増やすことができるとともに連続するデータを読み出す際のヒット率を上げることが可能になるという利点がある。同様に、ウェイ２に属するバンクＢ３およびＢ４にデータを書き込む場合においても、連続する５１２個のアドレスデータ２２に対応するデータが、ウェイ２に属するバンクＢ３およびＢ４に書き込まれる。
【００３４】
次に、制御レジスタ３０にてウェイの数が「１」に設定される場合を考える。この場合、図５に示すように、制御レジスタ３０は各選択回路４２ａ〜４２ｄに対して第３選択信号1'b1の選択を指示する信号５１ｃを共通に供給する。信号５１ｃが各選択回路４２ａ〜４２ｄに供給されると、各選択回路４２ａ〜４２ｄは、当該選択回路４２に供給される第１選択信号mod4、第２選択信号mod2、第３選択信号1'b1の中から第３選択信号1'b1のみを選択し、当該選択回路４２から制御部５０へ出力するウェイ指定データＭｅｍをアクティブレベルに設定する。すなわち、ウェイの数が「１」に設定される場合は、各制御部５０に出力されるウェイ指定データＭｅｍは全てアクティブレベルに設定される。この場合、各制御部５０ａ〜５０ｄは、２ビットのバンク選択データ（Ｘ１，Ｘ０）の値に基づいて当該制御部５０に対応するバンクＢが有効であるか否かを判定し、有効と判定した場合にインデックスデータIndexにて指定される当該バンクＢのキャッシュラインＣに対するデータの書き込みを許可する。
【００３５】
例えばバンク選択データ（Ｘ１，Ｘ０）＝（０，０）の場合、制御部５０ａは、当該制御手段５０ａに対応するバンクＢ１が有効であると判定する一方、他の制御手段５０ｂ〜５０ｄは各々に対応するバンクＢ２〜Ｂ４が無効であると判定する。このとき、制御部５０ａは、チップセレクト信号ＣＳＮおよびライトイネーブル信号ＷＲＮの双方をアクティブレベルに設定してバンクＢ１に対するデータの書き込みを許可する一方、他の制御部５０ｂ〜５０ｄは、チップセレクト信号ＣＳＮおよびライトイネーブル信号ＷＲＮの双方を非アクティブレベルに設定してバンクＢ２〜Ｂ４に対するデータの書き込みを許可しない。従って、この場合は、インデックスデータIndexにて指定されるバンクＢ１のキャッシュラインＣにデータが書き込まれる。
【００３６】
同様にして、バンク選択データ（Ｘ１，Ｘ０）＝（０，１）の場合、制御部５０ｂは、バンクＢ２が有効であると判定する一方、他の制御部５０（５０ａ，５０ｃ，５０ｄ）は各々に対応するバンクＢ（Ｂ１，Ｂ３，Ｂ４）が無効であると判定する。このとき、制御部５０ｂは、チップセレクト信号ＣＳＮおよびライトイネーブル信号ＷＲＮの双方をアクティブレベルに設定してバンクＢ２に対するデータの書き込みを許可する一方、他の制御部５０は、チップセレクト信号ＣＳＮおよびライトイネーブル信号ＷＲＮを非アクティブレベルに設定して各々に対応するバンクＢに対するデータの書き込みを許可しない。従って、この場合は、インデックスデータIndexにて指定されるバンクＢ２のキャッシュラインＣにデータが書き込まれる。
【００３７】
また、バンク選択データ（Ｘ１，Ｘ０）＝（１，０）の場合、制御部５０ｃは、バンクＢ３が有効であると判定する一方、他の制御部５０（５０ａ，５０ｂ，５０ｄ）は各々に対応するバンクＢ（Ｂ１，Ｂ２，Ｂ４）が無効であると判定する。このとき、制御部５０ｃは、チップセレクト信号ＣＳＮおよびライトイネーブル信号ＷＲＮの双方をアクティブレベルに設定してバンクＢ３に対するデータの書き込みを許可する一方、他の制御部５０は、チップセレクト信号ＣＳＮおよびライトイネーブル信号ＷＲＮの双方を非アクティブレベルに設定して各々に対応するバンクＢに対するデータの書き込みを許可しない。従って、この場合は、インデックスデータIndexにて指定されるバンクＢ３のキャッシュラインＣにデータが書き込まれる。
【００３８】
さらに、バンク選択データ（Ｘ１，Ｘ０）＝（１，１）の場合、制御部５０ｄは、バンクＢ４が有効であると判定する一方、他の制御手段５０（５０ａ，５０ｂ，５０ｃ）は各々に対応するバンクＢ（Ｂ１，Ｂ２，Ｂ３）が無効であると判定する。このとき、制御部５０ｄは、チップセレクト信号ＣＳＮおよびライトイネーブル信号ＷＲＮの双方をアクティブレベルに設定してバンクＢ４に対するデータの書き込みを許可する一方、他の制御部５０は、チップセレクト信号ＣＳＮおよびライトイネーブル信号ＷＲＮの双方を非アクティブレベルに設定して各々に対応するバンクＢに対するデータの書き込みを許可しない。従って、この場合は、インデックスデータIndexにて指定されるバンクＢ４のキャッシュラインＣにデータが書き込まれる。
【００３９】
以上に説明したとおり、本実施形態においてはバンクＢの数は４（＝２２）個であり、指定可能なウェイ数は、１（＝２０）、２（＝２１）、４（＝２２）である。インデックスデータIndexは、バンクＢ内のキャッシュラインＣを指定するものであるから、ウェイ数が変更されてもバンクＢ内のアドレスを指定するものとして共通に使用される。一方、バンク選択データ（Ｘ０，Ｘ１）は、２ビットで構成されるので、ウェイ数が１の場合にも、４個のバンクＢを個別に指定することができる。そして、バンク選択データ（Ｘ０，Ｘ１）およびウェイ指定データＭｅｍに基づいて、外部メモリ内のデータの書き込みを許可するバンクＢを特定できる。
つまり、ウェイ数が変更されても共通に使用可能なインデックスデータIndexと、さらに上位のバンク選択データ（Ｘ０，Ｘ１）に分けてアドレスを管理することによって、キャッシュメモリの構成が変更されても、変更の態様に応じてデータの書き込みを行うことが可能となるという利点がある。
【００４０】
＜Ｃ：データの読み出し動作＞
次に、図６を参照しながら、キャッシュメモリ装置１０におけるデータの読み出し動作について説明する。図６に示すように、キャッシュメモリ装置１０は、４つの比較器Comと、４つのヒット判定部６０と、マルチプレクサＭＵＸとをさらに備える。４つの比較器Comおよび４つのヒット判定部６０の各々は、各バンクＢ１〜Ｂ４に対応して設けられる。
【００４１】
キャッシュメモリ装置１０が外部メモリに格納された単位データｄのうちの何れかの単位データｄを読み出す場合、ＣＰＵ２０は、読み出しが要求される単位データｄの外部メモリ内のアドレスを示すタグデータTgと、バンク選択データ（Ｘ０，Ｘ１）と、インデックスデータIndexとを含むアドレスデータ２２を発行する。図６に示すように、ＣＰＵ２０から発行されるインデックスデータIndexおよびバンク選択データ（Ｘ１，Ｘ０）は、各制御回路５０ａ〜５０ｄに供給される。また、ＣＰＵ２０から発行されるタグデータTgは、４つの比較器Comの各々へ供給される。
【００４２】
いま、制御レジスタ３０にてウェイ数が「４」に設定される場合を考える。この場合、制御レジスタ３０は各制御部５０ａ〜５０ｄに対して読み出し制御信号Ｒ４を供給する。読み出し制御信号Ｒ４が各制御部５０に供給される場合、各制御部５０は、バンク選択データ（Ｘ１，Ｘ０）およびバンク指定データＭｅｍとは無関係に、当該制御部５０に対応するバンクを選択するためのチップセレクト信号ＣＳＮと当該バンクＢに対するデータの読み出しの可否を決定するためのリードイネーブル信号ＲＤＮとの双方をアクティブレベルに設定して当該バンクＢに対するデータの読み出しを許可する。この場合、各制御部５０に対応するバンクＢ１〜Ｂ４の各々において、インデックスデータIndexにて指定されるキャッシュラインＣに対応する有効ビットＶとタグデータＴｇと単位データｄとが読み出される。図６に示すように、各バンクＢから読み出された有効ビットＶはヒット判定部６０へ出力され、タグデータTgは比較器Comへ出力され、単位データｄはマルチプレクサＭｕｘへ出力される。
【００４３】
各比較器Comでは、当該比較器Comに対応するバンクＢから読み出されたタグデータTgと、ＣＰＵ２０から供給されるタグデータTgとが比較され、その比較結果に基づく信号ｐがヒット判定部６０へ出力される。本実施形態においては、バンクＢから読み出されたタグデータTgと、ＣＰＵから供給されるタグデータTgとが一致すれば信号ｐはアクティブ状態に設定され、両者が不一致の場合は信号ｐは非アクティブ状態に設定される。ヒット判定部６０は、比較器Comから出力される信号ｐがアクティブ状態であり、かつ、バンクＢから読み出された有効ビットＶの値が「１」である場合はヒットと判定し、アクティブ状態のヒット判定信号ＨｊをマルチプレクサＭＵＸへ出力する。一方、ヒット判定部６０は、比較器Comから出力される信号ｐが非アクティブ状態、または、バンクＢから読み出された有効ビットＶの値が「０」である場合はミスヒットと判定し、非アクティブ状態のヒット判定信号ＨｊをマルチプレクサＭＵＸへ出力する。
【００４４】
マルチプレクサＭＵＸは、４つのヒット判定部６０の各々から出力されるヒット判定信号Ｈｊと、バンクＢ１〜Ｂ４の各々から読み出された単位データｄとに基づいて、読み出しが要求される単位データｄを出力する。例えばバンクＢ１に対応するヒット判定部６０から出力されるヒット判定信号Ｈｊがアクティブ状態であって、他のバンクＢに対応するヒット判定部６０から出力されるヒット判定信号Ｈｊが非アクティブ状態である場合は、バンクＢ１から読み出される単位データｄが読み出しが要求される単位データｄとしてマルチプレクサＭＵＸから出力される。また、例えばバンクＢ２に対応するヒット判定部６０から出力されるヒット判定信号Ｈｊがアクティブ状態であって、他のバンクＢに対応するヒット判定部６０から出力されるヒット判定信号Ｈｊが非アクティブ状態である場合は、バンクＢ２から読み出される単位データｄが読み出しが要求される単位データｄとしてマルチプレクサＭＵＸから出力されるという具合である。
【００４５】
次に、図７に示すように、制御レジスタ３０にてウェイ数が「２」に設定される場合を考える。この場合、制御レジスタ３０は各制御部５０ａ〜５０ｄに対して読み出し制御信号Ｒ２を供給する。読み出し制御信号Ｒ４が各制御部５０に供給されると、各制御部５０は、ウェイ指定データＭｅｍとは無関係に、バンク選択データ（Ｘ１，Ｘ０）の下位ビットであるＸ０の値に基づいて、当該制御部５０に対応するバンクＢが有効であるか否かを判定し、有効と判定した場合に当該バンクＢに対するデータの読み出しを許可する。
【００４６】
本実施形態では、バンク選択データ（Ｘ１，Ｘ０）の下位ビットであるＸ０の値が「０」の場合、制御部５０ａおよび制御部５０ｃの各々は、当該制御部５０に対応するバンクＢ（Ｂ１またはＢ３）を選択するためのチップセレクト信号ＣＳＮと当該バンクＢに対するデータの読み出しの可否を決定するためのリードイネーブル信号ＲＤＮとの双方をアクティブレベルに設定して当該バンクＢに対するデータの読み出しを許可する。一方、制御部５０ｂおよび制御部５０ｄの各々は、当該制御部５０に対応するバンクＢ（Ｂ２またはＢ４）を選択するためのチップセレクト信号ＣＳＮと当該バンクＢに対するデータの読み出しの可否を決定するためのリードイネーブル信号ＲＤＮとの双方を非アクティブレベルに設定して当該バンクＢに対するデータの読み出しを許可しない。すなわち、ウェイ１に属するバンクＢ１およびウェイ２に属するバンクＢ３の各々において、インデックスデータIndexにて指定されたキャッシュラインＣに対応する有効ビットＶとタグデータTgと単位データｄとが読み出される。そして、ウェイ数が「４」に設定される場合と同様にしてヒット判定が行われ、その結果に応じて読み出しが要求される単位データｄが出力される。
【００４７】
また、バンク選択データ（Ｘ１，Ｘ０）の下位ビットであるＸ０の値が「１」の場合は、制御部５０ａおよび制御部５０ｃの各々は、チップセレクト信号ＣＳＮおよびリードイネーブル信号ＲＤＮを非アクティブレベルに設定してバンクＢに対するデータの読み出しを許可しない。一方、制御部５０ｂおよび制御部５０ｄの各々は、チップセレクト信号ＣＳＮおよびリードイネーブル信号ＲＤＮの双方をアクティブレベルに設定してバンクＢに対するデータの読み出しを許可する。
【００４８】
次に、図８に示すように、制御レジスタ３０にてウェイ数が「１」に設定される場合を考える。この場合、制御レジスタ３０は各制御部５０ａ〜５０ｄに対して読み出し制御信号Ｒ１を供給する。読み出し制御信号Ｒ１が各制御手段５０に供給されると、各制御手段５０は、当該制御手段５０に対応する選択回路４２から出力されるウェイ指定データＭｅｍの状態とは無関係に、２ビットのバンク選択データ（Ｘ１，Ｘ０）の値に基づいて、当該制御部５０に対応するバンクＢが有効であるか否かを判定し、有効と判定した場合に当該バンクＢに対するデータの読み出しを許可する。
【００４９】
本実施形態では、バンク選択データ（Ｘ１，Ｘ０）＝（０，０）の場合、制御部５０ａは、当該制御部５０ａに対応するバンクＢ１を選択するためのチップセレクト信号ＣＳＮと当該バンクＢ１に対するデータの読み出しの可否を決定するためのリードイネーブル信号ＲＤＮとの双方をアクティブレベルに設定して当該バンクＢ１に対するデータの読み出しを許可する。一方、他の制御部５０（５０ｂ，５０ｃ，５０ｄ）は、当該制御部５０に対応するバンクＢ（Ｂ２，Ｂ３，Ｂ４）を選択するためのチップセレクト信号ＣＳＮと当該バンクＢに対するデータの読み出しの可否を決定するためのリードイネーブル信号ＲＤＮとの双方を非アクティブレベルに設定して当該バンクＢに対するデータの読み出しを許可しない。すなわちこの場合は、バンクＢ１において、インデックスデータIndexにて指定されたキャッシュラインＣに対応する有効ビットＶとタグデータTgと単位データｄとが読み出される。そして、比較器６０にてヒット判定が行われ、ヒットと判定された場合は、インデックスデータIndexにて指定されたバンクＢ１のキャッシュラインＣに対応する単位データｄがマルチプレクサＭＵＸから出力される。
【００５０】
同様にして、バンク選択データ（Ｘ１，Ｘ０）＝（０，１）の場合、制御部５０ｂは、チップセレクト信号ＣＳＮおよびリードイネーブル信号ＲＤＮの双方をアクティブレベルに設定してバンクＢ２に対するデータの読み出しを許可する。一方、他の制御部５０（５０ａ，５０ｃ，５０ｄ）は、チップセレクト信号ＣＳＮおよびリードイネーブル信号ＲＤＮの双方を非アクティブレベルに設定してバンクＢ（Ｂ１，Ｂ３，Ｂ４）に対するデータの読み出しを許可しない。
【００５１】
また、バンク選択データ（Ｘ１，Ｘ０）＝（１，０）の場合、制御部５０ｃは、チップセレクト信号ＣＳＮおよびリードイネーブル信号ＲＤＮの双方をアクティブレベルに設定してバンクＢ３に対するデータの読み出しを許可する。一方、他の制御部５０（５０ａ，５０ｂ，５０ｄ）は、チップセレクト信号ＣＳＮおよびリードイネーブル信号ＲＤＮの双方を非アクティブレベルに設定してバンクＢ（Ｂ１，Ｂ２，Ｂ４）に対するデータの読み出しを許可しない。
【００５２】
さらに、バンク選択データ（Ｘ１，Ｘ０）＝（１，１）の場合、制御部５０ｄは、チップセレクト信号ＣＳＮおよびリードイネーブル信号ＲＤＮの双方をアクティブレベルに設定してバンクＢ４に対するデータの読み出しを許可する。一方、他の制御部５０（５０ａ，５０ｂ，５０ｃ）は、チップセレクト信号ＣＳＮおよびリードイネーブル信号ＲＤＮの双方を非アクティブレベルに設定してバンクＢ（Ｂ１，Ｂ２，Ｂ３）に対するデータの読み出しを許可しない。
【００５３】
＜Ｄ：変形例＞
本発明は上述した各実施形態に限定されるものではなく、例えば、以下の変形が可能である。また、以下に示す変形例のうちの２以上の変形例を組み合わせることもできる。
【００５４】
（１）変形例１
上述の実施形態においては、４つのバンクＢを２ｍ（ｍ＝０，１，２）個のウェイに分割し、１ウェイ当たり４／２ｍ（＝４，２，１）個のバンクＢが属するように設定する態様が例示されているが、これに限らず、バンクＢの数およびウェイの数は任意に設定できる。要するに、２ｎ（ｎは１以上の整数）個のバンクＢを２ｍ（ｍは、ｎ≧ｍ≧０の整数）個のウェイに分割し、１ウェイ当たり２ｎ／２ｍ個のバンクＢが属するように設定される態様であればよい。
また、上述の実施形態においては、アドレスデータ２２を「４」で割り算して余りを算出する剰余演算回路４１ａと、アドレスデータ２２を「２」で割り算して余りを算出する剰余演算回路４１ｂとが設けられる態様が例示されているが、剰余演算回路４１の数はこれに限られるものではない。要するに、ｋをｍ≧ｋ≧１を満たす全ての整数としたとき、アドレスデータを２ｋで割り算して余りを各々算出し、算出した余りに応じた信号を出力するｍ個の剰余演算回路４１が設けられる態様であればよい。
また、上述の実施形態においては、バンク選択データ（Ｘ０，Ｘ１）は、２ビットで構成される態様が例示されているが、これに限らず、バンク選択データのビット数はバンクＢの数に応じて変更可能である。要するに、バンク選択データは、２ｎ個のバンクを個別に指定可能なｎビットのデータであればよい。
【００５５】
（２）変形例２
上述の実施形態では、データの書き込み時において、剰余演算回路４１ａおよび４１ｂの各々は、設定されるウェイの数に関わらず、アドレスデータ２２が供給されるたびに剰余演算を行う態様が例示されているが、これに限らず、例えば設定されるウェイの数に応じて剰余演算を行うべき剰余演算回路４１が指定され、当該指定された剰余演算回路４１のみが剰余演算を行う態様とすることもできる。例えば設定されるウェイの数が「４」の場合、剰余演算回路４１ａのみが剰余演算を行うべき回路として指定されて当該剰余演算回路４１ａのみが剰余演算を行い、剰余演算回路４１ｂは剰余演算を行わない態様とすることもできる。また、例えば設定されるウェイの数が「２」の場合、剰余演算回路４１ｂのみが剰余演算を行うべき回路として指定されて当該剰余演算回路４１ｂのみが剰余演算を行い、剰余演算回路４１ａは剰余演算を行わない態様とすることができる。また、例えば設定されるウェイの数が「１」の場合、剰余演算回路４１ａおよび４１ｂのいずれも剰余演算を行うべき回路として指定されず、双方が剰余演算を行わない態様とすることもできる。この態様によれば、上述の実施形態に比べて、剰余演算回路４１ａおよび４１ｂにて無駄な演算が行われることを抑制できるとともに各々で消費される電力量も低減できるという利点がある。
【００５６】
（３）変形例３
上述の本実施形態においては、ＣＰＵ２０がアドレスデータ２２を発行する態様について例示されているが、例えばアドレスデータ２２を発行するアドレスデータ発行手段をＣＰＵ２０とは別に設ける態様であってもよい。
【符号の説明】
【００５７】
１０……キャッシュメモリ装置、２０……ＣＰＵ、２２……アドレスデータ、３０……制御レジスタ、４０……ウェイ指定部、４１……剰余演算回路、４２……選択回路、５０……制御部、６０……ヒット判定部、Ｂ……バンク、Ｃ……キャッシュライン、Tg……タグデータ、Index……インデックスデータ、Ｘ１，Ｘ０……バンク選択データ、ｄ……単位データ、Ｍｅｍ……ウェイ指定データ、mod4……第１選択信号、mod２……第２選択信号、1'b1……第３選択信号、com……比較器、ＣＳＮ……チップセレクト信号、ＷＲＮ……ライトイネーブル信号、ＲＤＮ……リードイネーブル信号。
【図１】
2010218507.tif 000003
【図２】
2010218507.tif 000004
【図３】
2010218507.tif 000005
【図４】
2010218507.tif 000006
【図５】
2010218507.tif 000007
【図６】
2010218507.tif 000008
【図７】
2010218507.tif 000009
【図８】
2010218507.tif 000010