(57)【要約】  複数のウェイの中からアドレス情報の一部であるタグアドレス情報に基づいて生成される選択データの値に応じて一部のウェイを選択して、キャッシュタグをリードする。また、キャッシュメモリはキャッシュフィルを行うとき、前記選択データの値に応ずる一部のウェイの中から選んだキャッシュエントリにキャッシュフィルを行う。ウェイの選択に用いる選択データには例えばタグアドレス情報に対するパリティデータを用い、パリティデータの値に基づいてキャッシュタグをリードするウェイの選択、更には，キャッシュフィルを行うキャッシュエントリのウェイの選択を行う。
2013098919.tif 000002
【特許請求の範囲】
【請求項１】
複数のウェイに複数のキャッシュエントリを格納するセットアソシアティブ型のキャッシュメモリを含むデータ処理装置であって、
前記キャッシュメモリはキャッシュタグをリードするとき、前記複数のウェイの中から、アドレス情報の一部であるタグアドレス情報に基づいて生成される選択データの値に応じて一部のウェイを選択し、選択したウェイの中から、前記アドレス情報の中のインデックスアドレスを用いてキャッシュタグをリードし、
前記キャッシュメモリはキャッシュフィルを行うとき、前記選択データの値に応ずる一部のウェイの中から選んだキャッシュエントリにキャッシュフィルを行う、データ処理装置。
【請求項２】
請求項１において、前記キャッシュメモリは、前記アドレス情報の一部であるタグアドレス情報に対するパリティデータを生成して前記選択データとする、データ処理装置。
【請求項３】
請求項１において、前記キャッシュメモリは、前記ウェイからリードされた夫々のキャッシュタグを前記タグアドレスと比較し、それらの比較結果が、全て不一致、一つだけ一致、又は複数一致の何れであるかを判別し、前記複数一致を判別したときはキャッシュエラー信号を生成する、データ処理装置。
【請求項４】
請求項３において、前記キャッシュエラーの信号を例外要因又は割込み要因として入力する割込みコントローラをさらに有する、データ処理装置。
【請求項５】
請求項３において、前記キャッシュメモリは、前記一つだけ一致である比較結果に係るキャッシュタグのキャッシュエントリをデータ操作の対象とする、データ処理装置。
【請求項６】
請求項１において、前記ウェイは前記インデックスアドレスに対応して前記キャッシュタグを格納するタグウェイと、前記インデックスアドレスに対応してデータを格納するデータウェイとを有し、キャッシュエントリは前記キャッシュタグとそれに対応するデータを含み、前記複数のタグウェイのそれぞれはタグウェイ毎に活性又は非活性が選択されるメモリブロックによって構成され、
前記キャッシュメモリはキャッシュタグをリードするとき、前記選択データを用いたメモリブロックの活性化によって前記一部のタグウェイの選択を行う、データ処理装置。
【請求項７】
請求項６において、前記選択データは前記アドレス情報の一部であるタグアドレス情報の全ビットに対する１ビットのパリティデータであり、第１の論理値のパリティデータは前記複数のメモリブロックの半分の選択に用い、第２の論理値のパリティデータは前記複数のメモリブロックの残りの半分の選択に用いる、データ処理装置。
【請求項８】
請求項６において、前記選択データは前記アドレス情報の一部であるタグアドレス情報の複数分割部分毎のパリティビットから成る複数ビットのパリティデータであり、前記パリティデータの値は複数のタグウェイの中から選択するタグウェイを決める、データ処理装置。
【請求項９】
請求項６において、前記キャッシュメモリは、前記複数のウェイの中から前記選択データにより一部のタグウェイを選択してキャッシュタグをリードする第１モードと、キャッシュタグをリードする対象タグウェイをすべてのタグウェイとする第２モードとを有し、前記第１モード又は第２モードを選択するモード選択信号を入力する、データ処理装置。
【請求項１０】
請求項１において、前記ウェイは前記インデックスアドレスに対応して前記キャッシュタグを格納するタグウェイと、前記インデックスアドレスに対応してデータを格納するデータウェイとを有し、キャッシュエントリは前記キャッシュタグとそれに対応するデータを含み、前記複数のタグウェイは所定複数個毎に一つのメモリブロックに集約されて構成され、同一メモリブロックに構成される複数のタグウェイは相互に異なる選択データによって選択され、
前記キャッシュメモリはキャッシュタグをリードするとき、前記選択データと前記インデックスアドレス情報とを用いてキャッシュタグをリードする、データ処理装置。
【請求項１１】
請求項１０において、前記選択データは前記アドレス情報の一部であるタグアドレス情報の全ビットに対する１ビットのパリティデータであり、第１の論理値のパリティデータは夫々の前記メモリブロックの中の一方のタグウェイの選択に用い、第２の論理値のパリティデータは夫々の前記メモリブロックの中の他方のタグウェイの選択に用いる、データ処理装置。
【請求項１２】
請求項１０において、前記選択データは前記アドレス情報の一部であるタグアドレス情報の複数分割部分毎のパリティビットから成る複数ビットのパリティデータであり、前記パリティデータの値は夫々のメモリブロックの中から選択するタグウェイを決める、データ処理装置。
【請求項１３】
請求項１において、前記キャッシュメモリがキャッシュフィルを行うキャッシュエントリを決めるとき、キャッシュフィル対象とするキャッシュエントリを疑似ＬＲＵにより特定するための指標として用いるＬＲＵデータを格納するＬＲＵデータアレイを有し、
前記ＬＲＵデータアレイは、キャッシュエントリに対するインデックスアドレス毎に、選択データで選択される一部のウェイ毎の利用履歴を示す複数ビットの履歴データを格納する領域を有し、
前記キャッシュメモリは、インデックスアドレス情報を用いてＬＲＵデータアレイから読み出した前記履歴データと、対応する選択データとに基づいてキャッシュフィルを行うキャッシュエントリを選ぶ、データ処理装置。
【請求項１４】
請求項１３において、前記複数のウェイのそれぞれはタグウェイ毎に活性又は非活性が選択されるメモリブロックによって構成され、
前記キャッシュメモリはキャッシュタグをリードするとき、前記選択データを用いたメモリブロックの活性化によって前記選択データによる一部のウェイの選択を行い、
前記キャッシュメモリはキャッシュフィルを行うとき、夫々のメモリブロックにおいて前記インデックスアドレスが指し示すキャッシュエントリの内、インデックスアドレス情報に基づいて前記ＬＲＵデータアレイから読み出された複数ビットの前記履歴データと、前記タグアドレスに基づいて生成される前記選択データとによって、キャッシュフィルを行うキャッシュエントリを選択する、データ処理装置。
【請求項１５】
請求項１３において、前記複数のウェイは所定複個毎に一つのメモリブロックに集約されて構成され、同一メモリブロックに構成される複数のウェイは相互に異なる選択データによって選択され、
前記キャッシュメモリはキャッシュタグをリードするとき、活性化された夫々のメモリブロックの中の何れのウェイを選択するかを前記選択データによって指定され、指定されたウェイの中のいずれのキャッシュタグを選択するかを前記アドレス情報の中のインデックスアドレス情報によって指定され、
前記キャッシュメモリはキャッシュフィルを行うとき、いずれのメモリブロックを選択するかを、前記ＬＲＵデータアレイからインデックスアドレス情報によって読み出された複数ビットの履歴データによって指定され、指定されたメモリブロックの中から何れのウェイを選択するかを、前記選択データによって指定され、指定されたウェイの中から何れのキャッシュエントリをキャッシュフィルの対象とするかを、前記インデックスアドレスによって指定される、データ処理装置。
【請求項１６】
複数ウェイに複数のキャッシュエントリを格納するセットアソシアティブ型のキャッシュメモリを含むデータ処理装置であって、
前記キャッシュメモリはキャッシュタグをリードするとき、前記複数のウェイの中から何れの一部のウェイを選択するかを、アドレス情報の一部であるタグアドレス情報に基づいて生成されるパリティデータの値に応じて指定され、指定されたウェイの中から何れのキャッシュタグをリードするかを、前記アドレス情報の中のインデックスアドレス情報によって指定され、リードされたキャッシュタグを前記タグアドレスと比較し、それらの比較結果が、全て不一致、一つだけ一致、又は複数一致の何れであるかを判別し、前記複数一致を判別したときはキャッシュエラー信号を生成し、
前記キャッシュメモリはキャッシュフィルを行うとき、前記選択データの値に応ずる一部のウェイの中から選んだキャッシュエントリにキャッシュフィルを行う、データ処理装置。
【請求項１７】
複数にウェイに複数のキャッシュエントリを格納するセットアソシアティブ型のキャッシュメモリを含むデータ処理装置であって、
前記キャッシュメモリはキャッシュタグをリードするとき、前記複数のウェイの中から何れの一部のウェイを選択するかを、アドレス情報の一部であるタグアドレス情報に基づいて生成されるパリティデータの値に応じて指定され、指定されたウェイの中から何れのキャッシュタグをリードするかを、前記アドレス情報の中のインデックスアドレス情報によって指定され、リードされたキャッシュタグを前記タグアドレスと比較し、それらの比較結果が、全て不一致、一つだけ一致、又は複数一致の何れであるかを判別し、前記複数一致を判別したときはキャッシュエラー信号を生成し、
前記キャッシュメモリは、キャッシュフィルを行うキャッシュエントリを決めるとき、キャッシュフィルの対象とするキャッシュエントリを疑似ＬＲＵにより特定するための指標として用いるＬＲＵデータを格納するＬＲＵデータアレイを有し、
前記ＬＲＵデータアレイは、キャッシュエントリに対するインデックスアドレス毎に、パリティデータで選択される一部のウェイ毎の利用履歴を示す複数ビットの履歴データを格納する領域を有し、
前記キャッシュメモリは、インデックスアドレス情報を用いてＬＲＵデータアレイから読み出した前記履歴データと、対応する選択データとに基づいてキャッシュフィルを行うキャッシュエントリを選ぶ、データ処理装置。
【請求項１８】
複数のウェイを複数のキャッシュエントリの格納に用いるセットアソシアティブ型のキャッシュメモリを含むデータ処理装置であって、
前記キャッシュメモリはアドレス情報に基づいてウェイを操作するとき、前記アドレス情報の一部であるタグアドレス情報に基づいて生成される選択データに応ずる一部のウェイの中から操作対象とするキャッシュエントリを選ぶ、データ処理装置。
【請求項１９】
複数のウェイを複数のキャッシュエントリの格納に用いるセットアソシアティブ型のキャッシュメモリを含むデータ処理装置であって、
前記キャッシュメモリは、アドレス情報の一部であるタグアドレス情報に基づいて生成される選択データに応ずる一部のウェイの中から、アドレスタグと比較するキャッシュタグをリードし、且つ、キャッシュフィルを行うキャッシュエントリを選ぶ、データ処理装置。
【請求項２０】
複数のウェイを複数のキャッシュエントリの格納に用いるセットアソシアティブ型のキャッシュメモリを含むデータ処理装置であって、
前記キャッシュメモリはキャッシュタグをリードするとき、複数のウェイの内のどのウェイを選択するかを、アドレス情報の一部であるタグアドレス情報に基づいて生成される選択データの値に応じて指示され、指示されたウェイの中から何れのキャッシュタグをリードするかを、前記アドレス情報の中のインデックスアドレスによって指示され、
前記キャッシュメモリはキャッシュフィルを行うとき、全てのウェイのキャッシュエントリについての前記インデックスアドレス単位で参照される使用履歴と前記選択データの値との組み合わせにしたがって、キャッシュフィルを行うキャッシュエントリの選択を行う、データ処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はセットアソシアティブ型のキャッシュメモリを含むデータ処理装置に関し、例えばマイクロコンピュータに適用して有効な技術に関する。
【背景技術】
【０００２】
オペランドデータや命令に対するＣＰＵの高速アクセスを可能にするために大容量のワークメモリとＣＰＵとの間にキャッシュメモリが配置される。比較的回路規模が小さく比較的高いキャッシュヒット率を得ることができるものとしてセットアソシアティブ型のキャッシュメモリ（以下単にセットアソシアティブキャッシュメモリとも称する）が用いられている。セットアソシアティブキャッシュメモリは、同一のキャッシュエントリに異なるタグのデータを複数格納することができる構造を有する。タグウェイとデータウェイとのペアを複数個備え、それらウェイのキャッシュエントリを例えば２５６種類とする場合にはアドレス情報の下位側８ビットのインデックスアドレス情報によって各ウェイのキャッシュエントリを選択する。タグウェイにはインデックスアドレスで指定されるキャッシュエントリ毎に、当該インデックスアドレス情報の上位側複数ビットのタグアドレス情報がキャッシュタグとして格納され、データウェイにはインデックスアドレスで指定されるキャッシュエントリ毎に、対応するインデックスアドレス情報及びタグアドレス情報によって特定されるアドレスのデータが格納される。ＣＰＵによるリードアクセス又はライトアクセスでは、そのアクセスアドレスのインデックスアドレス情報によって全てのタグウェイがリードされ、リードされたキャッシュタグがアクセスアドレス情報のタグアドレス情報に一致するとき、当該タグウェイとペアを成すデータウェイの対応するキャッシュエントリがデータリード又はデータライトによる操作の対象になる。ここで説明したセットアソシアティブキャッシュメモリについての内容は広く知られていることである。【０００３】
上述に代表されるように複数個のタグウェイを持つキャッシュメモリにおいては全てのタグウェイから同時にキャッシュタグを読み出して、逸早くキャッシュタグとタグアドレスとの一致不一致を判別することが行われているが、その場合には全てのタグウェイが並列に活性化されるので電力消費が増大する。この点について、特許文献１はダイレクトマップ形式とセットアソシアティブ形式とを切り換える可能にすることによって低消費電力化を実現しよとする。また、特許文献２はウェイの分割数を定めて、順番にウェイをアクセスするようにし、複数のウェイに対する並列的なインデックス動作を不用とするものである。【０００４】
また、キャッシュメモリについてもその記憶情報が宇宙線（α線、β線）等の影響によって不所望に反転するビット反転エラー（ソフトエラー）を生ずる場合がある。そのようなビット反転エラーはパリティビットを用いて検出することができる。特に、パリティチェックを用いた特許文献３はアクセスアドレスデータに対してパリティチェックを行うことにより、メモリアレイ毎のパリティチェック回路を不要とするものであり、これによってパリティチェック回路の数か減ることにより低消費電力を実現しようとする。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００２−２３６６１６号公報
【特許文献２】特開２０１０−２６７１６号公報
【特許文献３】特開２０００−１３２４６０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
セットアソシアティブキャッシュメモリについての本発明者による低消費電力化の検討によれば、特許文献１の場合はダイレクトマップ形式を選択して低消費電力とするときキャッシュヒット率を犠牲にしなければならない。特許文献２の場合にはキャッシュメモリ動作の遅延が余儀なくされる。特許文献３の場合にはパリティチェック回路の数を減らすことによるものであり、それ以上を期待することはできない。【０００７】
更にセットアソシアティブキャッシュメモリに対する本発明者によるビット反転エラーを検出する回路規模の縮小についての検討によれば、特許文献３はアクセス要求アドレスそれ自体にエラーがあったかどうかの確認に止むもので、ウェイが保持するデータのビット反転エラーを検出する回路に対する縮小を期待することはできない。特許文献１は不所望なビット反転エラーに対するパリティチェックについて考慮していない。特許文献２はデータアレイから読み出されたデータの転送タイミングについての誤り検出について考慮され、ウェイが保持するデータの不所望なビット反転エラーの検出については考慮されていない。【０００８】
本発明の目的はセットアソシアティブキャッシュメモリにおいてウェイの選択という点でキャッシュエントリの選択動作速度を犠牲にすることなく低消費電力を図ることである。【０００９】
本発明の別の目的はセットアソシアティブキャッシュメモリにおいてウェイのビット反転エラーを検出する回路の規模を縮小することである。【００１０】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１１】
本願において開示される発明のうち代表的なものについて簡単に説明すれば下記のとおりである。【００１２】
すなわち、複数のウェイの中からアドレス情報の一部であるタグアドレス情報に基づいて生成される選択データの値に応じて一部のウェイを選択して、キャッシュタグをリードする。また、キャッシュメモリはキャッシュフィルを行うとき、前記選択データの値に応ずる一部のウェイの中から選んだキャッシュエントリにキャッシュフィルを行う。【００１３】
ウェイの選択に用いる選択データには例えばタグアドレス情報に対するパリティデータを用い、パリティデータの値に基づいてキャッシュタグをリードするウェイの選択、更には，キャッシュフィルを行うキャッシュエントリのウェイの選択を行う。
【発明の効果】
【００１４】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記の通りである。【００１５】
すなわち、セットアソシアティブキャッシュメモリにおいてウェイの選択という点でキャッシュエントリの選択動作速度を犠牲にすることなく低消費電力を図ることができる。【００１６】
セットアソシアティブキャッシュメモリにおいてウェイのビット反転エラーを検出する回路の規模を縮小することができる。
【図面の簡単な説明】
【００１７】
【図１】図１はデータ処理装置の一実施の形態としてマイクロコンピュータを例示するブロック図である。
【図２】図２はセットアソシアティブキャッシュメモリの機能が実現される場合におけるメモリマットの概略的な構成を例示するブロック図である。
【図３】図３はキャッシュメモリのタグウェイに対するパリティ機能の基本的な構成を例示するブロック図である。
【図４】図４はキャッシュエントリに対するリード動作系に着目した構成を代表的に示すブロック図である。
【図５】図５はキャッシュエントリに対するリード動作系のキャッシュ動作フローを例示するフローチャートである。
【図６】図６は図４のリード動作系の構成に組み合わせられるフィル動作系に着目した構成を例示するブロック図である。
【図７】図７はキャッシュエントリに対するフィル動作系のキャッシュ動作フローを例示するフローチャートである。
【図８】図８はパリティチェック機能を選択的にオン／オフできるようにした場合におけるキャッシュエントリに対するリード動作系に着目した構成を例示するブロック図である。
【図９】図９はパリティチェック機能を選択的にオン／オフできるようにした場合におけるキャッシュエントリに対するフィル動作系に着目した構成を例示するブロック図である。
【図１０】図１０は複数ビットのパリティデータを用いる構成を図４のキャッシュエントリに対するリード動作系に着目した構成に適用した例を示すブロック図である。
【図１１】図１１はメモリブロック毎に２個のウェイを格納するようにした場合におけるキャッシュエントリに対するリード動作系に着目した構成を例示するブロック図である。
【図１２】図１２はメモリブロック毎に２個のウェイを格納するようにした場合におけるキャッシュエントリに対するフィル動作系に着目した構成を例示するブロック図である。
【図１３】図１３はマルチスレッドで処理を行う場合に夫々のスレッドの処理を行うバーチャルＣＰＵ番号（Virtual CPU ID）が上記情報αとされる場合におけるタグエントリの構成を例示する説明図である。
【図１４】図１４は図１３のタグエントリを用いる場合におけるキャッシュエントリに対するリード動作系に着目した構成を例示するブロック図である。
【図１５】図１５は図１３のタグエントリを用いる場合におけるキャッシュエントリに対するフィル動作系に着目した構成を例示するブロック図である。
【図１６】図１６はメモリブロック１６，１６Ａ，１５，１５Ａの具体例を示すブロック図である。
【図１７】図１７はタグウェイの一例としてメモリブロック１６で構成されるＴａｇＷＡＹ＃０のメモリセルアレイに記憶されるタグエントリの配置を例示する説明図である。
【図１８】図１８はデータウェイの一例としてメモリブロック１６で構成されるＤａｔａＷＡＹ＃０のメモリセルアレイに記憶されるデータエントリの配置を例示する説明図である。
【図１９】図１９はタグウェイの別の例としてメモリブロック１６Ａで構成されるＴａｇＷＡＹ＃０及びＴａｇＷＡＹ＃２のメモリセルアレイに記憶されるタグエントリの配置を例示する説明図である。
【図２０】図２０はデータウェイの一例としてメモリブロック１６で構成されるＤａｔａＷＡＹ＃０及びＤａｔａＷＡＹ＃２のメモリセルアレイに記憶されるデータエントリの配置を例示する説明図である。
【図２１】図２１はＬＲＵアレイ１５，１５Ａのメモリセルアレイに記憶されるＬＲＵエントリの配置を例示する説明図である。
【図２２】図２２はタグウェイに対するインデックス動作形態の主な態様をまとめとして示す説明図である。
【発明を実施するための形態】
【００１８】
１．実施の形態の概要
先ず、本願において開示される発明の代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
【００１９】
〔１〕＜アドレス情報に基づいて一部のウェイを選択＞
本発明の代表的な実施の形態に係るデータ処理装置（１）は、複数のウェイに複数のキャッシュエントリを格納するセットアソシアティブ型のキャッシュメモリ（３）を含む。前記キャッシュメモリはキャッシュタグをリードするとき、前記複数のウェイ（１２，１３）の中から、アドレス情報の一部であるタグアドレス情報（ＴＡＧａｄｒｓ）に基づいて生成される選択データ（ＰＲＴｄａｔ）の値に応じて一部のウェイを選択し、選択したウェイの中から、前記アドレス情報の中のインデックスアドレスを用いてキャッシュタグをリードする。また、前記キャッシュメモリはキャッシュフィルを行うとき、前記選択データの値に応ずる一部のウェイの中から選んだキャッシュエントリ（１４）にキャッシュフィルを行う。
【００２０】
これによれば、キャッシュタグをリードするとき選択データの値に応じて一部のタグウェイだけを選択して、その中からキャッシュタグをインデックスすればよく、すべてのタグウェイを並列的に動作させることを要さず、低消費電力に寄与する。キャッシュフィルの対象とするキャッシュエントリについても選択データの示すウェイに属するキャッシュエントリとするから、キャッシュ動作でリードすべきキャッシュタグを保有するウェイと選択データで選択されるウェイとの対応関係を容易に維持することができ、上記低消費電力が保証される。
【００２１】
〔２〕＜パリティデータを選択データに用いる＞
項１において、前記キャッシュメモリは、前記アドレス情報の一部であるタグアドレス情報に対するパリティデータ（ＰＲＴｄａｔ）を生成して前記選択データとする。
【００２２】
これによれば、キャッシュエントリのリプレースメントには、少なくとも、使用するウェイの範囲を限定するパリティデータを用いることになる。したがって、キャッシュメモリに供給されるアドレス情報に誤りが無いともの仮定すれば、キャッシュタグのリード対象はそのアドレス情報に関するパリティデータの値に応ずるウェイになるので、キャッシュエントリに応じてパリティビットを保存することを要しない。したがって、リードされたキャッシュタグから、比較のためにパリティデータを生成する回路を必要とせずに、ビット反転したキャッシュタグを誤って正規のキャッシュタグとして処理する誤動作を抑制することができる。即ち、パリティデータの値が反転するようなビット反転がキャッシュタグに生じても、当該ビット反転したキャッシュタグが所在するウェイはそのパリティデータの値に従った本来のウェイにならないから、インデックスの対象にされない。これにより、キャッシュタグのビット反転に対する信頼性を向上させながら、パリティ生成回路の数を半減させることができる。更に、パリティ生成回路の数を半減させることができるという点で、更なる低消費電力も達成することができる。
【００２３】
〔３〕＜複数ヒットでキャッシュエラー＞
項１において、前記キャッシュメモリは、前記ウェイからリードされた夫々のキャッシュタグを前記タグアドレスと比較し、それらの比較結果が、全て不一致、一つだけ一致、又は複数一致の何れであるかを判別し、前記複数一致を判別したときはキャッシュエラー信号（４１）を生成する。
【００２４】
これによれば、キャッシュタグのビット反転によってタグアドレスと不一致になった場合には通常のキャッシュミスと同様に対処すればよい。キャッシュタグの複数ビット反転によって正規のキャッシュタグと同じキャッシュタグを有するキャッシュエントリが見かけ上発生しても、上記複数の一致を判別することによって、そのような異常に対処することができる。
【００２５】
〔４〕＜キャッシュエラーを例外要因又は割込み要因とする＞
項３において、前記キャッシュエラーの信号を例外要因又は割込み要因として入力する割込みコントローラ（９）をさらに有する。
【００２６】
これによれば、そのようなキャッシュエラーの発生をビット反転の影響が大きくなったと考えるときには、その状況に応じた処理を割込み処理又は例外処理を介して柔軟に行うことが可能になる。
【００２７】
〔５〕＜データ操作対象とするキャッシュエントリ＞
項３において、前記キャッシュメモリは、前記一つだけ一致である比較結果に係るキャッシュタグのキャッシュエントリをデータ操作の対象とする。
【００２８】
これによれば、通常のキャッシュヒットに応ずるキャッシュエントリのデータ操作に容易に移行することができる。
【００２９】
〔６〕＜ウェイ毎のメモリブロックに対する活性／非活性制御＞
項１において、前記ウェイは前記インデックスアドレスに対応して前記キャッシュタグを格納するタグウェイ（１２）と、前記インデックスアドレスに対応してデータを格納するデータウェイ（１３）とを有する。キャッシュエントリは前記キャッシュタグとそれに対応するデータを含み、前記複数のタグウェイのそれぞれはタグウェイ毎に活性又は非活性が選択されるメモリブロック（１６）によって構成される。前記キャッシュメモリはキャッシュタグをリードするとき、前記選択データを用いたメモリブロックの活性化によって前記一部のタグウェイの選択を行う。
【００３０】
これによれば、タグウェイ単位の複数のメモリブロックに対する選択的な非活性化によって低消費電力を実現することができる。
【００３１】
〔７〕＜１ビットパリティデータ＞
項６において、前記選択データは前記アドレス情報の一部であるタグアドレス情報の全ビットに対する１ビットのパリティデータＰＲＴｄａｔであり、第１の論理値のパリティデータは前記複数のメモリブロックの半分の選択に用い、第２の論理値のパリティデータは前記複数のメモリブロックの残りの半分の選択に用いる。
【００３２】
これにより、アドレス比較のためのキャッシュタグの読み出しに要する電力消費をおおよそ半減することができる。
【００３３】
〔８〕＜複数ビットパリティデータ＞
項６において、前記選択データは前記アドレス情報の一部であるタグアドレス情報の複数分割部分毎のパリティビットから成る複数ビットのパリティデータ（ＰＲＴｄａｔ［１：０］）であり、前記パリティデータの値は複数のタグウェイの中から選択するタグウェイを決める。
【００３４】
これによれば、比較的容易な構成によって、アドレス比較のためのキャッシュタグの読み出しに必要な電力消費を更に低減することが可能になる。
【００３５】
〔９〕＜インデックスするタグウェイの選択機能をオン／オフ＞
項６において、前記キャッシュメモリは、前記複数のウェイの中から前記選択データにより一部のタグウェイを選択してキャッシュタグをリードする第１モード（ＰＢＳ＝ｏｎ）と、キャッシュタグをリードする対象タグウェイをすべてのタグウェイとする第２モード（ＰＢＳ＝ｏｆｆ）とを有し、前記第１モード又は第２モードを選択するモード選択信号（ＭＯＤ）を入力する。
【００３６】
これによれば、１ウェイ・１メモリブロックの構成を前提とするから、低消費電力を優先させたい場合には第1モード、高いキャッシュヒット率を優先させたい場合には第2モードを設定するという自由度を、第１モードだけが可能な回路構成に比べて構成の変更を最小限に実現することが可能になる。
【００３７】
〔１０〕＜複数ウェイ毎のメモリブロックに対する活性／非活性制御＞
項１において、前記ウェイは前記インデックスアドレスに対応して前記キャッシュタグを格納するタグウェイと、前記インデックスアドレスに対応してデータを格納するデータウェイとを有する。キャッシュエントリは前記キャッシュタグとそれに対応するデータを含む。前記複数のタグウェイは所定複数個毎に一つのメモリブロック（１６Ａ）に集約されて構成され、同一メモリブロックに構成される複数のタグウェイは相互に異なる選択データによって選択される。前記キャッシュメモリはキャッシュタグをリードするとき、前記選択データと前記インデックスアドレス情報とを用いてキャッシュタグをリードする。
【００３８】
これによれば、１個のメモリブロックには同時に選択されることの無い複数のタグウェイが集約されるから、１個のメモリブロックが備えるセンスアンプやバッファアンプの数は１個のメモリブロックに１個のタグウェイを備えるものと凡そ等しくなり、全メモリブロックの数が少なくなる分だけ、非活性状態におけるサブスレッショルドリーク電流のようなリーク電流が少なくなり、この点で更なる低消費電力に寄与することができる場合がある。
【００３９】
〔１１〕＜１ビットパリティデータ＞
項１０において、前記選択データは前記アドレス情報の一部であるタグアドレス情報の全ビットに対する１ビットのパリティデータ（ＰＲＴｄａｔ）である。第１の論理値のパリティデータは夫々の前記メモリブロックの中の一方のタグウェイの選択に用いる。第２の論理値のパリティデータは夫々の前記メモリブロックの中の他方のタグウェイの選択に用いる。
【００４０】
これにより、アドレス比較のためのキャッシュタグの読み出しに要する電力消費をおおよそ半減することができる。
【００４１】
〔１２〕＜複数ビットパリティデータ＞
項１０において、前記選択データは前記アドレス情報の一部であるタグアドレス情報の複数分割部分毎のパリティビットから成る複数ビットのパリティデータ（ＰＲＴｄａｔ［１：０］）であり、前記パリティデータの値は夫々のメモリブロックの中から選択するタグウェイを決める。
【００４２】
これによれば、比較的容易な構成によって、アドレス比較のためのキャッシュタグの読み出しに必要な電力消費を更に低減することが可能になる。
【００４３】
〔１３〕＜ＬＲＵデータアレイ＞
項１において、前記キャッシュメモリがキャッシュフィルを行うキャッシュエントリを決めるとき、キャッシュフィル対象とするキャッシュエントリを疑似ＬＲＵにより特定するための指標として用いるＬＲＵデータ（ＬＲＵ［１：０］、ＬＲＵ［２：０］）を格納するＬＲＵデータアレイ（１５，１５Ａ）を有する。前記ＬＲＵデータアレイは、キャッシュエントリに対するインデックスアドレス毎に、選択データで選択される一部のウェイ毎の利用履歴を示す複数ビットの履歴データを格納する領域を有する。前記キャッシュメモリは、インデックスアドレス情報を用いてＬＲＵデータアレイから読み出した前記履歴データと、対応する選択データとに基づいてキャッシュフィルを行うキャッシュエントリを選ぶ。
【００４４】
これによれば、キャッシュフィルを行うキャッシュエントリを選ぶのに履歴データに選択データを併用するので、選択データのビット数分だけ履歴データのビット数を減らすことができ、この点でＬＲＵデータアレイの回路規模縮小とそれにおける電力消費の低減とに寄与する。
【００４５】
〔１４〕＜ウェイ毎のメモリブロックに対応するＬＲＵ＞
項１３において、前記複数のウェイのそれぞれはタグウェイ毎に活性又は非活性が選択されるメモリブロック（１６）によって構成される。前記キャッシュメモリはキャッシュタグをリードするとき、前記選択データを用いたメモリブロックの活性化によって前記選択データによる一部のウェイの選択を行う。前記キャッシュメモリはキャッシュフィルを行うとき、夫々のメモリブロックにおいて前記インデックスアドレスが指し示すキャッシュエントリの内、インデックスアドレス情報に基づいて前記ＬＲＵデータアレイ（１５）から読み出された複数ビットの前記履歴データ（ＬＲＵ［１：０］）と、前記タグアドレスに基づいて生成される前記選択データ（ＰＲＴｄａｔ）とによって、キャッシュフィルを行うキャッシュエントリを選択する。
【００４６】
これによれば、履歴データを格納するときは選択データの値に応じて履歴データの値を決めればよく、インデックスされた履歴データの値に対して何れのメモリブロックを活性化するかはそのときの選択データの値によって決めればよく、活性化されたメモリブロックからキャッシュエントリを選択するために用いるアドレス情報はインデックスアドレス情報だけでよい。
【００４７】
〔１５〕＜複数ウェイ毎のメモリブロックに対応するＬＲＵ＞
項１３において、前記複数のウェイは所定複個毎に一つのメモリブロック（１６Ａ）に集約されて構成され、同一メモリブロックに構成される複数のウェイは相互に異なる選択データによって選択される。前記キャッシュメモリはキャッシュタグをリードするとき、活性化された夫々のメモリブロックの中の何れのウェイを選択するかを前記選択データによって指定され、指定されたウェイの中のいずれのキャッシュタグを選択するかを前記アドレス情報の中のインデックスアドレス情報によって指定される。前記キャッシュメモリはキャッシュフィルを行うとき、いずれのメモリブロックを選択するかを、前記ＬＲＵデータアレイ（１５Ａ）からインデックスアドレス情報によって読み出された複数ビットの履歴データ（ＬＲＵ［２：０」）によって指定され、指定されたメモリブロックの中から何れのウェイを選択するかを、前記選択データ（ＰＲＴｄａｔ）によって指定され、指定されたウェイの中から何れのキャッシュエントリをキャッシュフィルの対象とするかを、前記インデックスアドレス（ＩＤＸａｄｒｓ）によって指定される。
【００４８】
これによれば、履歴データを格納するときは選択データの値に応じて履歴データの値を決めればよく、インデックスされた履歴データの値に対して何れのメモリブロックの何れのキャッシュエントリを選択するかは、そのときの選択データの値とインデックスアドレス情報とによって決めればよい。
【００４９】
〔１６〕＜パリティデータを用いてウェイを選択＞
本発明の別の実施の形態に係るデータ処理装置（１）は、複数ウェイに複数のキャッシュエントリを格納するセットアソシアティブ型のキャッシュメモリ（３）を含む。前記キャッシュメモリはキャッシュタグをリードするとき、前記複数のウェイの中から何れの一部のウェイを選択するかを、アドレス情報の一部であるタグアドレス情報（ＴＡＧａｄｒｓ）に基づいて生成されるパリティデータ（ＰＲＴｄａｔ）の値に応じて指定され、指定されたウェイの中から何れのキャッシュタグをリードするかを、前記アドレス情報の中のインデックスアドレス情報によって指定される。リードされたキャッシュタグを前記タグアドレスと比較し、それらの比較結果が、全て不一致、一つだけ一致、又は複数一致の何れであるかを判別し、前記複数一致を判別したときはキャッシュエラー信号（４１）を生成する。前記キャッシュメモリはキャッシュフィルを行うとき、前記選択データの値に応ずる一部のウェイの中から選んだキャッシュエントリにキャッシュフィルを行う。
【００５０】
これによれば、項１と同様に、キャッシュ動作でリードすべきキャッシュタグを保有するウェイと選択データで選択されるウェイとの対応関係を容易に維持して、低消費電力に寄与する。更に、項２同様に、キャッシュエントリに対応してパリティビットを保存することを要せず、キャッシュタグのビット反転に対する信頼性を向上させながら、パリティ生成回路の数を半減させることができる。また、項３同様に、キャッシュタグのビット反転によってタグアドレスと不一致になった場合には通常のキャッシュミスと同様に対処すればよい。キャッシュタグの複数ビット反転によって正規のキャッシュタグと同じキャッシュタグを有するキャッシュエントリが見かけ上発生しても、上記複数の一致を判別することによって、そのような異常に対処することができる。
【００５１】
〔１７〕＜パリティデータを用いてウェイを選択＞
本発明の更に別の実施の形態に係るデータ処理装置（１）は、複数にウェイに複数のキャッシュエントリを格納するセットアソシアティブ型のキャッシュメモリ（３）を含む。前記キャッシュメモリはキャッシュタグをリードするとき、前記複数のウェイの中から何れの一部のウェイを選択するかを、アドレス情報の一部であるタグアドレス情報（ＴＡＧａｄｒｓ）に基づいて生成されるパリティデータ（ＰＲＴｄａｔ）の値に応じて指定され、指定されたウェイの中から何れのキャッシュタグをリードするかを、前記アドレス情報の中のインデックスアドレス情報（ＩＤＸａｄｒｓ）によって指定される。リードされたキャッシュタグを前記タグアドレスと比較し、それらの比較結果が、全て不一致、一つだけ一致、又は複数一致の何れであるかを判別し、前記複数一致を判別したときはキャッシュエラー信号（４１）を生成する。前記キャッシュメモリは、キャッシュフィルを行うキャッシュエントリを決めるとき、キャッシュフィルの対象とするキャッシュエントリを疑似ＬＲＵにより特定するための指標として用いるＬＲＵデータ（ＬＲＵ［１：０］，ＬＲＵ［２：０］）を格納するＬＲＵデータアレイ（１５，１５Ａ）を有する。前記ＬＲＵデータアレイは、キャッシュエントリに対するインデックスアドレス毎に、パリティデータで選択される一部のウェイ毎の利用履歴を示す複数ビットの履歴データを格納する領域を有する。前記キャッシュメモリは、インデックスアドレス情報を用いてＬＲＵデータアレイから読み出した前記履歴データと、対応する選択データとに基づいてキャッシュフィルを行うキャッシュエントリを選ぶ。
【００５２】
これによれば、項１と同様に、キャッシュ動作でリードすべきキャッシュタグを保有するウェイと選択データで選択されるウェイとの対応関係を容易に維持して、低消費電力に寄与する。更に、項２同様に、キャッシュエントリに対応してパリティビットを保存することを要せず、キャッシュタグのビット反転に対する信頼性を向上させながら、パリティ生成回路の数を半減させることができる。また、項３同様に、キャッシュタグのビット反転によってタグアドレスと不一致になった場合には通常のキャッシュミスと同様に対処すればよい。キャッシュタグの複数ビット反転によって正規のキャッシュタグと同じキャッシュタグを有するキャッシュエントリが見かけ上発生しても、上記複数の一致を判別することによって、そのような異常に対処することができる。また、項１３と同様に、キャッシュフィルを行うキャッシュエントリを選ぶのに履歴データに選択データを併用するので、選択データのビット数分だけ履歴データのビット数を減らすことができ、この点でＬＲＵデータアレイの回路規模縮小とそれにおける電力消費の低減とに寄与する。
【００５３】
〔１８〕＜一部のウェイの中から操作対象のキャッシュエントリを選ぶ＞
本発明の更に別の実施の形態に係るデータ処理装置（１）は、複数のウェイを複数のキャッシュエントリの格納に用いるセットアソシアティブ型のキャッシュメモリ（３）を含む。前記キャッシュメモリはアドレス情報に基づいてウェイを操作するとき、前記アドレス情報の一部であるタグアドレス情報（ＴＡＧａｄｒｓ）に基づいて生成される選択データ（ＰＲＴｄａｔ）に応ずる一部のウェイの中から操作対象とするキャッシュエントリを選ぶ。
【００５４】
これによれば、キャッシュタグのリード又はキャッシュフィルのための操作対象とするキャッシュエントリは、選択データの値に応ずる一部のウェイから選べばよいので、すべてのウェイを並列的に動作させることを要さず、低消費電力に寄与する。操作対象のキャッシュエントリは選択データを用いて選択されるから、キャッシュタグがリードされるウェイトとキャッシュフィルの対象とされるウェイとの対応関係を容易に維持することができる。
【００５５】
〔１９〕＜一部のウェイの中からキャッシュタグリード又はキャッシュフィル対象のキャッシュエントリを選ぶ＞
本発明の更に別の実施の形態に係るデータ処理装置（１）は、複数のウェイを複数のキャッシュエントリの格納に用いるセットアソシアティブ型のキャッシュメモリ（３）を含む。前記キャッシュメモリは、アドレス情報の一部であるタグアドレス情報（ＴＡＧａｄｒｓ）に基づいて生成される選択データに応ずる一部のウェイの中から、アドレスタグと比較するキャッシュタグをリードし、且つ、キャッシュフィルを行うキャッシュエントリを選ぶ。
【００５６】
これによれば、キャッシュタグのリード又はキャッシュフィルの操作対象とするキャッシュエントリは、選択データの値に応ずる一部のウェイから選べばよいので、すべてのウェイを並列的に動作させることを要さず、低消費電力に寄与する。操作対象のキャッシュエントリは選択データを用いて選択されるから、キャッシュタグがリードされるウェイトとキャッシュフィルの対象とされるウェイとの対応関係を容易に維持することができる。
【００５７】
〔２０〕＜選択データを用いてキャッシュタグをリードするウェイの選択と、使用履歴に従ったキャッシュフィルを行うキャッシュエントリの選択とを行う＞
本発明の更に別の実施の形態に係るデータ処理装置（１）は、複数のウェイを複数のキャッシュエントリの格納に用いるセットアソシアティブ型のキャッシュメモリ（３）を含む。前記キャッシュメモリはキャッシュタグをリードするとき、複数のウェイの内のどのウェイを選択するかを、アドレス情報の一部であるタグアドレス情報（ＴＡＧａｄｒｓ）に基づいて生成される選択データ（ＰＲＴｄａｔ）の値に応じて指示され、指示されたウェイの中から何れのキャッシュタグをリードするかを、前記アドレス情報の中のインデックスアドレス（ＩＤＸａｄｒｓ）によって指示される。前記キャッシュメモリはキャッシュフィルを行うとき、全てのウェイのキャッシュエントリについての前記インデックスアドレス単位で参照される使用履歴（ＬＲＵ［１：０］，ＬＲＵ［２：０］）と前記選択データ（ＰＲＴｄａｔ）の値との組み合わせにしたがって、キャッシュフィルを行うキャッシュエントリの選択を行う。
【００５８】
これによれば、キャッシュタグのリード又はキャッシュフィルの操作対象とするキャッシュエントリは、選択データの値に応ずる一部のウェイから選べばよいので、すべてのウェイを並列的に動作させることを要さず、低消費電力に寄与する。操作対象のキャッシュエントリは選択データを用いて選択されるから、キャッシュタグがリードされるウェイトとキャッシュフィルの対象とされるウェイとの対応関係を容易に維持することができる。さらに、キャッシュフィルを行うキャッシュエントリを選ぶのに履歴データに選択データを併用するので、選択データのビット数分だけ履歴データのビット数を減らすことができ、この点で履歴データを保持する回路の規模縮小とそれにおける電力消費の低減とに寄与する。
【００５９】
２．実施の形態の詳細
実施の形態について更に詳述する。なお、発明を実施するための形態を説明するための全図において、同一の機能を有する要素には同一の符号を付して、その繰り返しの説明を省略する。
【００６０】
≪１．マイクロコンピュータ≫
図１にはデータ処理装置の一実施の形態としてマイクロコンピュータ（ＭＣＵ）１が例示される。同図に示されるマイクロコンピュータ１は、特に制限されないが、単結晶シリコンのような１個の半導体基板にＣＭＯＳ集積回路製造技術を用いて形成される。
【００６１】
マイクロコンピュータ１は、特に制限されないが、命令をフェッチして解読し、解読結果にしたがって、必要なオペランドデータをフェッチして、演算処理を行うＣＰＵ（中央処理装置）２を有する。図ではＣＰＵ２はシングルコアのように図示されているが、マルチコア構成であってよいことは言うまでもない。また、ＣＰＵ２のプログラム実行形態はシングルスレッドだけでなく、マルチスレッドにも適用可能になっており、一つのプログラムをマルチスレッドで処理する場合、或いは複数のプログラムをプログラム単位のスレッドとして全体としてマルチスレッドで処理する場合の何れであってもよい。
【００６２】
３はキャッシュメモリ（ＣＡＣＨＭＲＹ）であり、内部バス４とＣＰＵ２との間に配置される。図ではＣＰＵが実行する命令及び命令実行に用いるオペランドや演算データなどのデータは共に一次的にキャッシュメモリ３に配置される。内部バス４には代表意的に示された割込みコントローラ（ＩＮＴＣ）９、スタティックランダムアクセスメモリ（ＳＲＡＭ）などで構成されたＲＡＭ５、ダイレクトメモリアクセスコントローラ（ＤＭＡＣ）６、電気的に書き換え可能なフラッシュメモリ（ＦＬＡＳＨ）７、及びその他周辺回路（ＰＲＰＨＲＬ）８が接続される。その他周辺回路８はタイマやマイクロコンピュータ１の外部への入出力ポートなどを含む。特に制限されないが、ＲＡＭ５やＦＬＳＨ７はプログラムやデータの格納に用いられ、例えば、それらはキャッシュメモリ３によるキャッシュの対象にされる。
【００６３】
キャッシュメモリ３は、特に制限されないが、キャッシュ制御回路（ＣＡＣＨＣＮＴ）１０とメモリマット（ＭＲＹＭＡＴ）１１を有し、セットアソシアティブキャッシュメモリの機能が実現されている。
【００６４】
図２にはセットアソシアティブキャッシュメモリの機能が実現される場合におけるメモリマット１１の概略的な構成が例示される。セットアソシアティブキャッシュメモリは複数のウェイを有し、夫々のウェイはタグウェイ（ＴａｇＷＡＹ）１２とデータウェイ（ＤａｔａＷＡＹ）１３を有し、各ウェイに複数のキャッシュエントリ（ＣａｃｈＥＮＴＲＹ）１４が形成される。タグウェイ（ＴａｇＷＡＹ）１２はキャッシュエントリ１４毎にキャッシュタグ、バリッドビット、及びロックビットなどを有する。データウェイ（ＤａｔａＷＡＹ）１３はキャッシュエントリ１４毎にキャッシュタグに対応するキャッシュデータ（ＣＰＵが実行するプログラムやＣＰＵが用いるオペランドデータ）を保有する。
【００６５】
ここでは、一つのデータウェイ（ＤａｔａＷＡＹ）１４が１６バイトのキャッシュデータを保有し、キャッシュエントリ（ＣａｃｈＥＮＴＲＹ）１４の数が２５６エントリとする、４ウェイ・セットアソシアティブキャッシュメモリを一例とする。この場合、ＣＰＵ２が生成する複数ビットのアドレス情報の内、最下位４ビットは一つのデータウェイ（ＤａｔａＷＡＹ）１３のキャッシュデータから３２ビット（４バイト）を選択するためのオフセットアドレス情報、その上位側８ビットは一つのキャッシュエントリ（ＣａｃｈＥＮＴＲＹ）１４を選択するためのインデックスアドレス情報、更にその上位側はタグアドレス情報とされる。キャッシュタグには対応するキャッシュエントリ１４のキャッシュデータに応ずるタグアドレス情報が用いられる。
【００６６】
ＬＲＵデータアレイ（ＬＲＵＡＲＹ）１５はリプレースするキャッシュエントリ（ＣａｃｈＥＮＴＲＹ）１４を選択する指標として用いる履歴データを保有する。履歴データは同じインデックスアドレスのキャッシュエントリに関し、最近使用されていないものを特定するための情報とされる。この例ではＬＲＵデータアレイ（ＬＲＵＡＲＹ）１５は２５６個の履歴データを有し、履歴データはインデックスアドレス情報によってアクセスされる。
【００６７】
図２において２０はキャッシュエントリ１４の書き込み経路、２１はキャッシュエントリの読み出し経路である。２２はタグウェイ１２及びデータウェイ１３に対するウェイの選択及び選択するウェイに対してインデックスを行う選択経路である。２３はＬＲＵアレイ１５に対する履歴データの書き込み、経路、２４は履歴データの読み出し経路、２５は履歴データの選択経路である。
【００６８】
キャッシュメモリ３はタグウェイに対するパリティ機能を備えるが、その機能追加に対して回路規模の簡素化と低消費電力が考慮されている。以下、その点についてキャッシュメモリの詳細を説明する。
【００６９】
≪２．タグウェイに対するパリティ機能≫
図３にはキャッシュメモリのタグウェイに対するパリティ機能の基本的な構成が例示される。ここではｎウェイ・セットアソシアティブキャッシュメモリにおけるｎ個のタグウェイＴａｇＷＡＴ＃０〜ＴａｇＷＡＴ＃ｎ−１に着目する。
【００７０】
ＡＣＣａｄｒｓはＣＰＵが生成するアクセスアドレス情報である。ＴＡＧａｄｒｓはアクセスアドレス情報ＡＣＣａｄｒｓに含まれるタグアドレス情報、ＩＤＸａｄｒｓはアクセスアドレス情報ＡＣＣａｄｒｓに含まれるインデックスアドレス情報である。図に示されるパリティ生成回路（ＰＲＴＹＧ）３０、タグ比較回路（ＴＡＧＣＭＰ）３１及びマルチヒット検出回路（ＭＬＴＨＩＴ）３２などはキャッシュ制御回路１０によって構成される。
【００７１】
パリティ生成回路３０は例えばタグアドレス情報ＴＡＧａｄｒｓの全ビットに対する１ビットのパリティビットをパリティデータＰＲＴＹｄａｔとして生成する。偶数パリティ又は奇数パリティの何れを用いるかは偶奇選択信号（ＯＤＳＥＬ）４２で指定される。具体的には偶奇選択信号４２が論理値１の場合、パリティ生成回路は、タグアドレス情報ＴＡＧａｄｒｓの全ビットについて排他的論理和ＥＸＯＲを行い、当該全ビット中に論理値１が偶数個あるとき論理値０のパリティデータＰＲＴｄａｔｅを出力し、当該全ビット中に論理値１が奇数個あるとき論理値１のパリティデータＰＲＴｄａｔｅを出力する。偶奇選択信号４２が論理値０の場合、パリティ生成回路は、タグアドレス情報ＴＡＧａｄｒｓの全ビットについて排他的否定論理和ＥＸＮＯＲを行い、当該全ビット中に論理値１が偶数個あるとき論理値１のパリティデータＰＲＴｄａｔｅを出力し、当該全ビット中に論理値１が奇数個あるとき論理値０のパリティデータＰＲＴｄａｔｅを出力する。
【００７２】
パリティデータＰＲＴｄａｔはタグウェイ１２に供給される。パリティデータＰＲＴＹｄａｔの論理値１は奇数番号のタグウェイＴａｇＷＡＹ＃１、ＴａｇＷＡＹ＃３、…のグループの選択を指示し、パリティデータＰＲＴＹｄａｔの論理値０は０及び偶数番号のタグウェイＴａｇＷＡＹ＃０、ＴａｇＷＡＹ＃２、…のグループの選択を指示する。したがって、キャッシュフィルを行うときは、前記パリティデータＰＲＴｄａｔの値に応ずる一方のグループのタグウェイの中から選ばれたキャッシュエントリにキャッシュフィルを行う。また、キャッシュタグをリードするときは、タグウェイＴａｇＷＡＹ＃０〜ＴａｇＷＡＹ＃ｎ−１のうちパリティデータＰＲＴｄａｔの値に応じて一方のグループのタグウェイの動作が選択され、選択されたウェイの中から、インデックスアドレスＩＤＸａｄｒｓを用いてキャッシュタグをリードする。例えばウェイの数が２個の場合、パリティデータＰＲＴｄａｔが論理値０のときは一方のタグウェイＴａｇＷＡＹ＃０が利用され、パリティデータＰＲＴｄａｔが論理値１のときは他方のタグウェイＴａｇＷＡＹ＃１が利用される。
【００７３】
これによれば、キャッシュタグをリードするときパリティデータＰＲＴｄａｔａの値に応じて一部のタグウェイだけを選択して、その中からキャッシュタグをインデックスすればよく、すべてのタグウェイを並列的に動作させることを要さず、その点で低消費電力が実現される。このとき、キャッシュフィルの対象とされるキャッシュエントリもパリティデータＰＲＴｄａの値に応ずるウェイに属するキャッシュエントリとされているから、キャッシュ動作でリードすべきキャッシュタグを保有するウェイとパリティデータＰＲＴｄａで選択されるウェイとの対応関係が維持されているから、上記低消費電力が保証される。
【００７４】
さらに、キャッシュフィルによるキャッシュエントリのリプレースメントには、少なくとも、使用するウェイの範囲を限定するパリティデータＰＲＴｄａｔを用いることになる。キャッシュメモリ３に供給されるアクセスアドレス情報ＡＣＣａｄｒｓに誤りが無いともの仮定すれば、キャッシュタグのリード対象はそのタグアドレス情報ＴＡＧａｄｒｓに関するパリティデータＰＲＴｄａｔの値に応ずるウェイになるので、キャッシュエントリ（ＣａｓｈＥＮＴＲＹ）１４に応じてパリティビットを保存することを要しない。したがって、リードされたキャッシュタグから、比較のためにパリティデータを生成する回路を必要とせずに、ビット反転したキャッシュタグを誤って正規のキャッシュタグとして処理する誤動作を抑制することができる。即ち、パリティデータの値が反転するようなビット反転がキャッシュタグに生じても、当該ビット反転したキャッシュタグが所在するウェイはそのパリティデータＰＲＴｄａｔの値に従った本来のウェイにならないから、インデックスの対象にされない。これにより、キャッシュタグのビット反転に対する信頼性を向上させながら、パリティ生成回路の数を半減させることができる。パリティ生成回路の数を半減させることができるという点で、更なる低消費電力も達成することができる。
【００７５】
パリティデータＰＲＴｄａｔの値に応じてタグウェイＴａｇＷＡＹ＃０〜ＴａｇＷＡＹ＃ｎ−１の内の一方のグループから出力されるｎ／２個のキャッシュタグ、又は他方のグループから出力されるｎ／２個のキャッシュタグは、ＣＴＡＧ＃０〜ＣＴＡＧ＃ｎ／２として図示される。出力されたキャッシュタグＣＴＡＧ＃０〜ＣＴＡＧ＃ｎ／２はタグ比較回路３１でタグアドレスＴＡＧａｄｒｓと比較され、その比較結果を対応するタグウェイに関連つけて比較結果の一致又は不一致を示す信号（ヒットウェイ判別信号：ＨＩＴＷＡＹ）４０などを出力する。ヒットウェイ判別信号４０は、前記マルチヒット検出回路３２に供給されると共に、図３には示していないが、ヒットに係るデータウェイでインデックスされたキャッシュエントリの選択に用いられる。マルチヒット検出回路３２は、ヒットウェイ判別信号４０に基づいて、比較結果が、全て不一致、一つだけ一致、又は複数一致の何れであるかを判別し、複数一致を判別したときはキャッシュエラー信号（ＣＥＲＲ）４１を生成する。すべて不一致の判別結果はキャッシュミス、一つだけ一致の判別結果はキャッシュヒットになる。
【００７６】
ヒットウェイ判別信号４０及びキャッシュエラー信号４１を生成することにより、キャッシュタグのビット反転によってタグアドレスとの比較結果が不一致になった場合には通常のキャッシュミスと同様に対処することができる。更に、キャッシュタグの複数ビット反転によって正規のキャッシュタグと同じキャッシュタグを有するキャッシュエントリが見かけ上発生しても、上記複数の一致を判別することによって、そのような異常に対処することができる。例えば、前記キャッシュエラーの信号４１を例外要因又は割込み要因として割込みコントローラ９に与えれば、そのキャッシュエラーの発生をビット反転の影響が大きくなったと考える場合には、その状況に応じた処理をＣＰＵ２による割込み処理又は例外処理を介して柔軟に行うことが可能になる。
【００７７】
≪３．ウェイ毎のメモリブロックをパリティデータで選択≫
ここではパリティデータを用いてウェイ毎のメモリブロックに対する活性／非活性制御を行う場合について説明する。
【００７８】
図４にはキャッシュエントリに対するリード動作系に着目した構成が代表的に示される。各ウェイにおけるキャッシュエントリは２５６エントリ、データウェイの１ラインを１６バイト、とする４ウェイ・セットアソシアティブキャッシュメモリの構成を一例とする。
【００７９】
この例では、インデックスアドレスＩＤＸａｄｒｓに対応して前記キャッシュタグを格納するタグウェイＴａｇＷＡＹ＃０〜ＴａｇＷＡＹ＃３と、前記インデックスアドレスＩＤＸａｄｒｓに対応してデータを格納するデータウェイＤａｔａＷＡＹ＃０〜ＤａｔａＷＡＹ＃３とのそれぞれはタグウェイ、データウェイ毎に活性又は非活性が選択されるメモリブロック１６によって構成される。ｃｅｎ０〜ｃｅｎ３はウェイ毎のメモリブロック１６のイネーブル信号（ブロックイネーブル信号）であり、対応するブロックイネーブル信号ｃｅｎ０〜ｃｅｎ３が活性化（例えばハイレベル）にされることによって当該メモリブロック１６の内部回路が動作可能にされる。例えば、対応するブロックイネーブル信号ｃｅｎ０〜ｃｅｎ３が活性化されることにより、入力アドレス信号に応答してアドレシングを行ってリードデータに対するセンス増幅動作が可能にされる。リードリクエスト信号ＲＤｒｅｑのハイレベルによって読み出しが指示されたとき、パリティデータＰＲＴｄａｔが論理値０（ローレベル）であれば、タグウェイＴａｇＷＡＹ＃０，ＴａｇＷＡＹ＃１及びデータウェイＤａｔａＷＡＹ＃０，ＤａｔａＷＡＹ＃１を含む一方のウェイグループが活性化される。これに対して、リードリクエスト信号ＲＤｒｅｑのハイレベルによって読み出しが指示されたとき、パリティデータＰＲＴｄａｔが論理値１（ハイレベル）であれば、タグウェイＴａｇＷＡＹ＃２，ＴａｇＷＡＹ＃３及びデータウェイＤａｔａＷＡＹ＃２，ＤａｔａＷＡＹ＃３を含む他方のウェイグループが活性化される。５０はアンドゲート、５１はインバータである。
【００８０】
活性化されたウェイグループのウェイはインデックスアドレス情報ＩＤＸａｄｒｓによってインデックスされ、キャッシュエントリが選択される。５２はインデックスアドレス情報ＩＤＸａｄｒｓをデコードして対応するキャッシュラインを選択する選択回路を概念的に示すものであり、他の図ではそれぞれのウェイにその機能が含まれるものとして説明されている。キャッシュエントリが選択されたタグウェイから出力されるキャッシュタグは判別回路５３，５４でタグアドレス情報ＴＡＧａｄｒｓと比較され、比較結果に応じたヒットウェイ判別信号４０ａ，４０ｂ、ヒット信号５５ａ、５５ｂ、及び複数ウェイヒット信号５６ａ，５６ｂを生成する。判別回路５３，５４は図３で説明したタグ比較回路３１及びマルチヒット検出回路３２の機能を有する。ヒットウェイ判別信号４０ａ，４０ｂは夫々の判別回路５３，５４で一つのキャッシュタグがタグアドレスに一致するとき、一致にかかるタグウェイに対応するデータウェイの出力データをセレクタ５７ａ、５７ｂに選択させる。ヒット信号５５ａ、５５ｂは夫々の判別回路５３，５４で一つのキャッシュタグがタグアドレスに一致するか否かを示す信号である。複数ウェイヒット信号５６ａ，５６ｂは夫々の判別回路５３，５４で双方のキャッシュタグがタグアドレスに一致するか否かを示す信号である。セレクタ５８は、パリティデータＰＲＴｄａｔが値０のとき、それによって活性化されるタグウェイ側の判別回路５３の出力を選択し、パリティデータＰＲＴｄａｔが値１のとき、それによって活性化されるタグウェイ側の判別回路５４の出力を選択する。セレクタ５８で選択されたヒット信号５５ａ又は５５ｂはリードリクエスト信号ＲＤｒｅｑとの論理積が採られてキャッシュヒット信号ＣＨＩＴとして用いられる。セレクタ５８で選択された複数ウェイヒット信号５６ａ又は５６ｂはキャッシュエラー信号４１として用いられる。セレクタ５９は、パリティデータＰＲＴｄａｔが値０のとき、それによって活性化されるデータウェイＤａｔａＷＡＹ＃０，ｄａｔａＷＡＹ＃１側で選択されて供給されるキャッシュデータを選択し、パリティデータＰＲＴｄａｔが値１のとき、それによって活性化されるデータウェイＤａｔａＷＡＹ＃２，ｄａｔａＷＡＹ＃３側で選択されて供給されるキャッシュデータを選択する。セレクタ５９で選択されたデータはキャッシュヒットに係るキャッシュデータＣＤＡＴとしてＣＰＵ２に向けて出力される。フリップフロップ（ＦＦ）６０はウェイのメモリサイクルに応じて入力信号をラッチして所用の動作タイミングを確保する。尚、図４において、ＴａｇＷＡＴ＃０〜ＴａｇＷＡＹ＃３，ＤａｔａＷＡＹ＃０〜ＤａｔａＷＡＹ３以外の構成は例えばキャッシュ制御回路１０に含まれている。
【００８１】
尚、図４ではキャッシュヒットの場合にヒットに係るキャッシュエントのデータ操作としてデータリードの場合が例示されており、データ操作が書き込みの場合については図示を省略してあるが、キャッシュデータＣＤＡＴに読み出し経路とは逆の書き込み経路が設けられているものと理解されたい。
【００８２】
図５にはキャッシュエントリに対するリード動作系のキャッシュ動作フローが例示される。
【００８３】
アクセスアドレス情報ＡＣＣａｄｒｓからタグアドレス情報ＴＡＧａｄｒｓのパリティデータＰＲＴｄａｔを生成する（Ｓ１）。生成したパリティデータＰＲＴｄａｔの値が０の場合には（Ｓ２）、タグウェイＴａｇＷＡＹ＃０及びＴａｇＷＡＹ＃１のキャッシュタグがリードされ（Ｓ３）、リード結果から、双方のキャッシュタグがヒットでないことを条件に（Ｓ４）、タグウェイＴａｇＷＡＹ＃０でヒットであれば（Ｓ５）、データウェイＤａｔａＷＡＹ＃０の対応するキャッシュエントリがリード又はライトの操作対象にされる（Ｓ６）。タグウェイＴａｇＷＡＹ＃１でヒットであれば（Ｓ７）、データウェイＤａｔａＷＡＹ＃１の対応するキャッシュエントリがリード又はライトの操作対象にされる（Ｓ８）。ステップＳ７又はＳ８の場合はキャッシュヒット、タグウェイＴａｇＷＡＹ＃０とタグウェイＴａｇＷＡＹ＃１の双方でヒットがなければキャッシュミスとされる。
【００８４】
ステップＳ２でパリティデータＰＲＴｄａｔの値が１の場合には、タグウェイＴａｇＷＡＹ＃２及びＴａｇＷＡＹ＃３のキャッシュタグがリードされ（Ｓ９）、リード結果から、双方のキャッシュタグがヒットでないことを条件に（Ｓ１０）、タグウェイＴａｇＷＡＹ＃２でヒットであれば（Ｓ１１）、データウェイＤａｔａＷＡＹ＃２の対応するキャッシュエントリがリード又はライトの操作対象にされる（Ｓ１２）。タグウェイＴａｇＷＡＹ＃３でヒットであれば（Ｓ１３）、データウェイＤａｔａＷＡＹ＃３の対応するキャッシュエントリがリード又はライトの操作対象にされる（Ｓ１４）。ステップＳ１２又はＳ１４の場合はキャッシュヒット、タグウェイＴａｇＷＡＹ＃２とタグウェイＴａｇＷＡＹ＃３の双方でヒットがなければキャッシュミスとされる。
【００８５】
ステップＳ４又はステップＳ１０で双方のタグウェイで重ねてヒットが生じた場合にはキャッシュエラーとされる。
【００８６】
図６には図４のリード動作系の構成に組み合わせられるフィル動作系に着目した構成が例示される。同図において各ウェイの構成は図４と同一である。ＬＲＵデータアレイ１５はキャッシュメモリ３がキャッシュフィルを行うキャッシュエントリを決めるとき、キャッシュフィル対象とするキャッシュエントリを疑似ＬＲＵにより特定するための指標として用いるＬＲＵデータＬＲＵｄａｔを格納する。このＬＲＵデータアレイ１５は、キャッシュエントリに対するインデックスアドレスＩＤＸａｄｒｓ毎に、パリティデータＰＲＴｄａｔの値に対応して選ばれる一部のウェイ毎の利用履歴を示す２ビットの履歴データＬＲＵ［１：０］（各ビットをＬＲＵ［０］，ＬＲＵ［１］と表す）を格納するメモリ領域を有する。履歴データＬＲＵ［１：０］はキャッシュエントリに対するパージによって論理値０に初期化される。履歴データＬＲＵ［０］はウェイ＃０（タッグウェイＴａｇＷＡＹ＃０及びデータウェイＤａｔａＷＡＹ＃０）又はウェイ＃１（タッグウェイＴａｇＷＡＹ＃１及びデータウェイＤａｔａＷＡＹ＃１）の何れのウェイの有効なキャッシュエントリを優先してリプレースに用いるかを示す。履歴データＬＲＵ［１］はウェイ＃２（タッグウェイＴａｇＷＡＹ＃２及びデータウェイＤａｔａＷＡＹ＃２）又はウェイ＃３（タッグウェイＴａｇＷＡＹ＃３及びデータウェイＤａｔａＷＡＹ＃３）の何れのウェイの有効なキャッシュエントリを優先させてリプレースに用いるかを示す。例えば、インデックスアドレス情報に対応してＬＲＵデータアレイ１５に格納されるＬＲＵ［０］は、当該インデックスアドレス情報に応ずるウェイ＃１のキャッシュエントリが用いられたとき論理値１に反転される。同様に、ＬＲＵ［１］は、当該インデックスアドレス情報に応ずるウェイ＃３のキャッシュエントリが用いられたとき論理値１に反転される。ここでは、履歴データＬＲＵ［０］，ＬＲＵ［１］の各ビットは、例えば論理値０の場合は小さなウェイ番号のウェイをリプレース対象とし、論理値１の場合は大きなウェイ番号のウェイをリプレース対象とし、リプレースを行う毎に対応する履歴データビットは反転して更新されるものとする。例えばＬＲＵ［０］について、初期値を論理値０とすると、初期化の次のフィルにはウェイ＃０が用いられ、ＬＲＵ［０］を論理値１に反転する。その次のリプレースでは、最近使用されていない方のウェイ＃１をリプレース対象と、ＬＲＵ［０］を論理値０に反転する。ＬＲＵ［０］は以下同様にトグル操作されればよい。
【００８７】
７０はインデックスアドレス情報ＩＤＸａｄｒｓをデコードして対応する履歴データＬＲＵ［１：０］を選択する選択回路を概念的に示すものであり、他の図ではＬＲＵアレイ１５にその機能が含まれるものとして説明されている。
【００８８】
７１はキャッシュフィル用のウェイ選択回路である。ウェイ選択回路７１は、インデックスアドレス情報ＩＤＸａｄｒｓを用いてＬＲＵデータアレイ１５から読み出した前記履歴データＬＲＵ［１：０］、及びパリティデータＰＲＴｄａｔ及びバリッドビットＶなどに基づいてキャッシュフィルに用いるウェイを選択するためのブロック選択信号を生成する。ブロック選択信号はメモリブロック１６にそれぞれ供給するブロックイネーブル信号ｃｅｎ０〜ｃｅｎ３に相当する。ブロック選択信号の選択論理は以下の通りである。
【００８９】
ウェイ選択回路７１は、例えば、パリティデータＰＲＴｄａｔが論理値０であればタグウェイＴａｇＷＡＴ＃０，ＴａｇＷＡＴ＃１から順次インデックスされたキャッシュエントリのバリッドビットＶを参照する。バリッドビットＶが無効であるキャッシュエントリがキャッシュフィルの対象とされ、ウェイ選択回路７１はそのキャッシュエントリの属する一つのタグウェイ（ＴａｇＷＡＴ＃０及びＴａｇＷＡＴ＃１のいずれか）が選択されるように対応のブロック選択信号（ｃｅｎ０及びｃｅｎ１のいずれか）を論理値１にする。他３つのブロック選択信号は論理値０を示しそれぞれ対応のタグウェイを非選択状態とする。ウェイ選択回路７１は、さらに、履歴データＬＲＵ［０］に対して次のキャッシュフィルではタグウェイＴａｇＷＡＴ＃０，ＴａｇＷＡＴ＃１のうちの選択されない側のウェイの優先度が高くなるように必要な更新を行う。バリッドビットＶが双方ともに有効な場合には、ウェイ選択回路７１は履歴データビットＬＲＵ［０］の値によって優先とされる方の一つのウェイが選択されるようにブロック選択信号（ｃｅｎ０又はｃｅｎ１）を論理値１とし、インデックスされたキャッシュエントリをキャッシュフィルの対象にする。他３つのブロック選択信号はそれぞれ対応のタグウェイを非選択状態とする。この場合にはウェイ選択回路７１は履歴データＬＲＵ［０］の値を反転させる更新を行う。履歴データの更新は例えば更新情報７３による履歴データの書き換えによって行われる。尚、ブロック選択信号ｃｅｎ０〜ｃｅｎ３はキャッシュフィルの要求信号ＦＬｒｅｑが活性化されているときアンドゲート７２を介して対応するウェイＴａｇＷＡＹ＃０〜ＴａｇＷＡＴ＃３、ＤａｔａＷＡＴ＃０〜ＤａｔａＷＡＹ＃３に供給される。
【００９０】
各キャッシュエントリに対応して２５６エントリ×４ウェイ＝１０２４個のバリッドビットが設けられ、各バリッドビットＶは対応するキャッシュエントリの有効性を示す。これらのバリッドビットＶはメモリブロック１６とは別の図示しない記憶装置（フリップフロップなど）に記憶される。インデックスアドレスＩＤＸａｄｒｓに基づいて、１０２４個のバリッドビットの中から４つのバリッドビットＶ（４つのタグウェイにそれぞれに属する一つのキャッシュエントリに対応するもの）が特定され、ウェイ選択回路７１に供給される。ウェイ選択回路７１はパリティデータＰＲＴｄａｔに基づき、参照すべき２つのバリッドビットＶを特定する。パリティデータＰＲＴｄａｔが論理値０のときＴａｇＷＡＹ＃０、ＴａｇＷＡＹ＃１に対応するそれぞれ２つのバリッドビットＶが参照され、パリティデータＰＲＴｄａｔが論理値１のときＴａｇＷＡＹ＃１、ＴａｇＷＡＹ＃２に対応するそれぞれ２つのバリッドビットＶが参照される。
【００９１】
図７にはキャッシュエントリに対するフィル動作系のキャッシュ動作フローが例示される。
【００９２】
アクセスアドレス情報ＡＣＣａｄｒｓに対応するフィルアドレス情報ＦＬａｄｒｓからそのタグアドレス情報ＴＡＧａｄｒｓのパリティデータＰＲＴｄａｔを生成する（Ｓ２１）。生成したパリティデータＰＲＴｄａｔの値が０の場合には（Ｓ２２）、ウェイ＃０が空き（バリッドビットＶによる無効）であれば（Ｓ２３）ウェイ＃０にキャッシュフィルを行う（Ｓ２６）。ウェイ＃０が空きでなくその代わりにウェイ＃１が空きの場合には（Ｓ２４）、ウェイ＃１にキャッシュフィルを行う（Ｓ２７）。ウェイ＃０とウェイ＃１の双方が共に有効な場合には履歴ビットＬＲＵ［０］の値でウェイの優先度を判別し（Ｓ２５）、ウェイ＃０が優先であればウェイ＃０にキャッシュフィルを行い（Ｓ２６）、ウェイ＃１が優先であればウェイ＃１にキャッシュフィルを行う（Ｓ２７）。ステップＳ２６又はＳ２７の後に上述の如く履歴ビットＬＲＵ［１］の更新を行う（Ｓ２８）。
【００９３】
ステップＳ２１において、パリティデータＰＲＴｄａｔの値が１と判別された場合には、ウェイ＃２が空き（バリッドビットＶによる無効）であれば（Ｓ２９）ウェイ＃２にキャッシュフィルを行う（Ｓ３２）。ウェイ＃２が空きでなくその代わりにウェイ＃３が空きの場合には（Ｓ３０）、ウェイ＃１にキャッシュフィルを行う（Ｓ３３）。ウェイ＃２とウェイ＃３の双方が共に有効な場合には履歴ビットＬＲＵ［１］の値でウェイの優先度を判別し（Ｓ３１）、ウェイ＃２が優先であればウェイ＃２にキャッシュフィルを行い（Ｓ３２）、ウェイ＃３が優先であればウェイ＃３にキャッシュフィルを行う（Ｓ３３）。ステップＳ３２又はＳ３３の後に上述の如く履歴ビットＬＲＵ［１］の更新を行う（Ｓ３４）。
【００９４】
上記キャッシュフィル動作系の構成によれば、キャッシュフィルを行うキャッシュエントリを選ぶのに履歴データＬＲＵ［１：０］にパリティデータＰＲＴｄａｔを併用するので、パリティデータＰＲＴｄａｔのビット数分だけ履歴データのビット数を減らすことができ、この点でＬＲＵデータアレイ１５の回路規模縮小とそれにおける電力消費の低減とに寄与する。
【００９５】
なお説明の便宜上、リード動作系に関する構成及びのフィル動作系に関する構成は別々の図面で説明されたが、キャッシュ制御回路１０が、タグウェイＴａｇＷＡＹ＃０〜ＴａｇＷＡＹ＃３及びデータウェイＤａｔａＷＡＹ＃０〜＃３を除いて図４に示す構成及び図６に示す構成を併せもつ。タグウェイＴａｇＷＡＹ＃０〜ＴａｇＷＡＹ＃３及びデータウェイＤａｔａＷＡＹ＃０〜＃３へのそれぞれブロックイネーブル信号の供給方法は次のとおりである。
【００９６】
タグウェイＷＡＹ＃０を例にとれば、図４に示されるタグウェイＴａｇＷＡＹ＃０に入力されるブロックイネーブル信号ｃｅｎ０と図６に示されるタグウェイＴａｇＷＡＹ＃０に入力されるブロックイネーブル信号ｃｅｎ０とのＯＲ演算を行い、その演算結果をタグウェイＴａｇＷＡＹ＃０に供給するＯＲ回路（図示せず）がタグウェイＷＡＹ＃０に対応して設けられる。タグウェイＴａｇＷＡＹ＃０はリード動作時及びフィル動作時にタグウェイＴａｇＷＡＹ＃０が選択されたときに論理値１のブロックイネーブル信号を受ける。データウェイＤａｔａＷＡＹ＃０についても、図４に示されるデータウェイＤａｔａＷＡＹ＃０に入力されるブロックイネーブル信号ｃｅｎ０と図６に示されるデータウェイＤａｔａＷＡＹ＃０に入力されるブロックイネーブル信号ｃｅｎ０とのＯＲ演算を行い、その演算結果をデータウェイＤａｔａＷＡＹ＃０に供給するＯＲ回路（図示せず）が設けられる。
【００９７】
タグウェイＴａｇＷＡＹ＃１〜３、データウェイＤａｔａＷＡＹ＃０〜４についても同様であり、それぞれに対応するＯＲ回路が設けられ、その出力をそれぞれブロックネーブル信号ｃｅｎ１〜ｃｅｎ３としてタグウェイＴａｇＷＡＹ＃１〜３、データウェイＤａｔａＷＡＹ＃０〜４に供給される。
【００９８】
≪４．パリティデータによるタグウェイ選択機能のオン／オフ≫
次に、上述したパリティチェック機能（単にＰＢＳとも記す）を選択的にオン／オフできるようにする場合について説明する。
【００９９】
図８にはパリティチェック機能を選択的にオン／オフできるようにした場合におけるキャッシュエントリに対するリード動作系に着目した構成が例示される。図４とは、パリティチェック機能の選択／非選択を指示するモード信号ＭＯＤを入力し、モード信号ＭＯＤの値に応じて、ウェイの活性化制御形態、キャッシュヒット信号ＣＨＩＴの生成形態、及びキャッシュデータＣＤＡＴの出力制御形態が相違される。図９には上述したパリティチェック機能を選択的にオン／オフできるようにした場合におけるキャッシュエントリに対するフィル動作系に着目した構成が例示される。図６とは、パリティチェック機能の選択／非選択を指示するモード信号ＭＯＤを入力し、モード信号ＭＯＤの値に応じて、履歴データの更新機能及び履歴データを用いた疑似ＬＲＵによるキャッシュフィル対象ウェイの選択機能が相違される。それら相違点について以下で説明するが、図４及び図６と同一機能を有する構成要素についてはそれと同一符号を付してその詳細な説明を省略する。
【０１００】
図８において、モード信号ＭＯＤの論理値１はパリティチェック機能選択、モード信号ＭＯＤの論理値０はパルティチェック機能の非選択を指示する。パリティデータＰＲＴｄａｔの反転データ又は非反転データを受けるアンドゲートの一方の入力側に、オアゲート（論理和ゲート）８２を介してモード信号ＭＯＤの反転信号が供給される。８１はモード信号ＭＯＤを反転するインバータである。したがって、ウェイ＃０〜＃３の選択はＭＯＤ＝１のときは図４と同様にパリティデータＰＲＴｄａｔの値に応じてその半分とされ、ＭＯＤ＝１のときはすべてのウェイ＃０〜＃３とされる。
【０１０１】
モード信号ＭＯＤを受ける判別回路８０は、ＭＯＤ＝１のとき図４で説明した判別回路５３，５４及び選択回路５８による機能と同じ機能によってキャッシュヒット信号ＣＨＩＴ及びキャッシュエラー信号４１を生成する。モード信号ＭＯＤ＝０のときは、パリティデータＰＲＧＴｄａｔを使用せず、夫々のタグウェイＴａｇＷＡＹ＃１〜ＴａｇＷＡＹ＃３でインデックスされたキャッシュタグをタグアドレス情報ＴＡＧａｄｒｓと比較してキャッシュヒット信号ＣＨＩＴを生成する。この動作モードにおいてキャッシュエラー信号４１はインアクティブレベルに固定される。
【０１０２】
ＬＲＵアレイ１５Ａは、ＭＯＤ＝１のときは図６で説明した通りパリティデータＰＲＴｄａｔを併用する関係から履歴データは２ビットあればよいが、ＭＯＤ＝０のときは３ビット必要意になる。パリティデータＰＲＴｄａｔを用いないので、それを代用するビットとして履歴ビットＬＲＵ［２］は追加されなければならない。したがって、ＬＲＵアレイ１５Ａはインデックスアドレス毎に３ビットの履歴データＬＲＵ［２：１］の格納領域を必要とする。履歴ビットＬＲＵ［０］はウェイ＃０とウェイ＃１との間の優先度を示し、履歴ビットＬＲＵ［１］はウェイ＃Ｅ２とウェイ＃３との間の優先度を示し、履歴ビットＬＲＵ［２］はウェイ＃０、＃１とウェイ＃２、＃３との間の優先度を示す。ＭＯＤ＝１のときは２ビットの履歴データＬＲＵ［１：０］が有意とされ、ＭＯＤ＝０のときは３ビットの履歴データＬＲＵ［２：０］が有意とされる。
【０１０３】
これによれば、１ウェイ・１メモリブロックの構成を前提とするから、図４及び図６の構成に対して少ない回路変更によってパリティチェックの有無を選択可能な構成を得ることができる。パリティチェック機能と低消費電力を優先させたい場合にはＭＯＤ＝１による第１モード、高いキャッシュヒット率を優先させたい場合にはＭＯＤ＝０による第２モードを設定するという自由度を得ることができる。
【０１０４】
なお、説明の便宜上、リード動作系に関する構成及びのフィル動作系に関する構成は別々の図面に記載にされたが、キャッシュ制御回路１０が、タグウェイＴａｇＷＡＹ＃０〜ＴａｇＷＡＹ＃３及びデータウェイＤａｔａＷＡＹ＃０〜＃３を除いて図８に示す構成及び図９に示す構成を併せもつ。タグウェイＴａｇＷＡＹ＃０〜ＴａｇＷＡＹ＃３及びデータウェイＤａｔａＷＡＹ＃０〜＃３へのそれぞれブロックイネーブル信号の供給方法は、図４及び図６の場合と同じであるので説明を省略する。
【０１０５】
≪５．複数ビットのパリティデータ≫
複数ビットのキャッシュメモリ３にパリティデータを用いる場合について説明する。
【０１０６】
図１０には複数ビットのパリティデータを用いる構成を図４のキャッシュエントリに対するリード動作系に着目した構成に適用した例が示される。
【０１０７】
図４の例ではパリティデータはアクセスアドレス情報ＡＣＣａｄｒｓの一部であるタグアドレス情報ＴＡＧａｄｒｓの全ビットに対する１ビットのパリティデータであり、論理値０のパリティデータは全ウェイの複数のメモリブロック１６の半分の選択に用い、論理値１のパリティデータは全ウェイの複数のメモリブロック１６の残りの半分の選択に用いた。これにより、アドレス比較のためのキャッシュタグの読み出しに要する電力消費をおおよそ半減することができる。
【０１０８】
これに対して図１０の例では、ウェイの数を８個、すなわち、８個のタグウェイＴａｇＷＡＹ＃０〜ＴａｇＷＡＴ＃７と８個のデータウェイＤａｔａＷＡＹ＃０〜ＤａｔａＷＡＴ＃７をそれぞれメモリブロック１６ｃで構成し、２ビットのパリティデータＰＲＴｄａｔ［１：０］を生成してウェイの選択に用いる。パリティデータＰＲＴｄａｔ「１：０」の第１ビット目（ＰＲＴｄａｔ［０］）は、タグアドレス情報ＴＡＧａｄｒｓの下位１０ビットに対するパリティビット、第２ビット目（ＰＲＴｄａｔ［１］）は、タグアドレス情報ＴＡＧａｄｒｓの上位１０ビットに対するパリティビットである。２ビットのパリティデータＰＲＴｄａｔ［１：０］はデコーダ９０でコードされ、そのデコード結果にしたがって複数のウェイの中から選択するウェイを決める。図１０では、ＰＲＴｄａｔ「１：０」＝００でウェイ番号＃０、＃１のタグウェイとデータウェイのメモリブロック１６を活性化する。ＰＲＴｄａｔ「１：０」＝０１でウェイ番号＃２、＃３のタグウェイとデータウェイのメモリブロック１６を活性化する。ＰＲＴｄａｔ「１：０」＝１０でウェイ番号＃４、＃５のタグウェイとデータウェイのメモリブロック１６を活性化する。ＰＲＴｄａｔ「１：０」＝１１でウェイ番号＃６、＃７のタグウェイとデータウェイのメモリブロック１６を活性化する。すなわち、タグ比較のためのキャッシュリード系動作で活性化されるメモリブロックの数は全体の１／４に低減され、更なる低消費電力が実現される。
【０１０９】
活性化されたタグウェイＴａｇＷＡＹ＃０〜ＴａｇＷＡＴ＃７でインデックスされたキャッシュタグは、パリティデータＰＲＴｄａｔ［１：０］による活性化単位で判定回路５４，５４，５３Ａ，５４Ａによりタグアドレス情報ＴＡＧａｄｒｓと比較され、図４で説明したのと同様に比較結果５５ａ，５６ａ，５５ｂ，５６ｂ，５５ａＡ，５６ａＡ，５５ｂＡ，５６ｂＡがパリティデータＰＲＴｄａｔ［１：０］の値に応じてセレクタ５８Ａで選択されることにより、キャッシュヒット信号ＣＨＩＴ及びキャッシュエラー信号４１が形成される。キャッシュヒットの場合にはヒットに係るキャッシュエントリのデータが操作される。図１０に例示されるリードアクセスに応答するキャッシュ動作の場合にはキャッシュヒットにされると、ヒットに係るデータウェイでの選択データが選択回路５７ａ，５７ｂ、５７ａＡ，５７ｂＡを介して選択されてキャッシュデータＣＤＡＴとして出力される。
【０１１０】
尚、パリティデータＰＲＴｄａｔのビット数は２ビットに限定されず必定に応じてタグアドレス情報に対する分割数を増やして３ビット以上にしてもよい。
【０１１１】
そのほかの構成は図４と同じであるからその詳細な説明は省略する。キャッシュフィルの構成については図示を省略するが、図６の構成を主体に２ビットのパリティデータＰＲＴｄａｔ［１：０］と２ビットのＬＲＵデータＬＲＵ［１：０］を用いて８個のウェイのメモリブロックからキャッシュフィルの対象ウェイを選択するようにすればよい。特に図示はしないが、２ビットのパリティデータＰＲＴｄａｔ［１：０］を用いる場合も図８及び図９で説明したＰＢＳのオン／オフ選択機能につても容易に適用可能である。
【０１１２】
≪６．複数ウェイ毎のメモリブロックに対する活性／非活性制御≫
次に、メモリブロック毎に複数個のウェイを格納してウェイの選択を行う場合について説明する。図１１にはメモリブロック毎に２個のウェイを格納するようにした場合におけるキャッシュエントリに対するリード動作系に着目した構成が例示される。図１２にはメモリブロック毎に２個のウェイを格納するようにした場合におけるキャッシュエントリに対するフィル動作系に着目した構成が例示される。図４及び図６との相違点はメモリブロックの数が半減され、それに応じて操作対象とするキャッシュエントリの選択制御形態とキャッシュタグに対する判別制御回路が相違される。それら相違点について以下で説明するが、図４及び図６と同一機能を有する構成要素についてはそれと同一符号を付してその詳細な説明を省略する。
【０１１３】
１個のメモリブロック１６Ａには２個のウェイが集約されて格納されるが、集約される２個のウェイはパリティデータＰＲＴｄａｔの相互に異なる値によって選択されるものとする。例えば図４と同様にパリティデータＰＲＴｄａｔの論理値０はウェイ番号＃０、＃１のウェイ選択を意味し、パリティデータＰＲＴｄａｔの論理値１はウェイ番号＃２、＃３のウェイ選択を意味するとき、ウェイ番号＃０と＃２のウェイを同一のメモリブロックに格納し、ウェイ番号＃１と＃３のウェイを同一のメモリブロックに格納して、一つのメモリブロック内で複数のウェイが選択されないようにする。具体的には、タグウェイＴａｇＷＡＹ＃０とＴａｇＷＡＹ＃２を一組とし、タグウェイＴａｇＷＡＹ＃１とＴａｇＷＡＹ＃３を一組とし、データウェイＤａｔａＷＡＹ＃０とＤａｔａＷＡＹ＃２を一組とし、データウェイＤａｔａＷＡＹ＃１とＤａｔａＷＡＹ＃３を一組とし、各組を別々のメモリブロック１６Ａに格納する。
【０１１４】
これを実現するために１個のメモリブロック１６Ａが保有するエントリ数は図４及び図６の場合の２５６の２倍の５１２エントリとされる。それをインデックスするのに必定な８ビットのアドレス情報の内、下位ビットａｄｄｒ［７：０］を、７ビットのインデックスアドレス情報ＩＮＤａｄｒｓ（［１：４］）とする。最上位ビットａｄｄｒ［８］をパリティデータＰＲＴｄａｔとする。最上位ビットａｄｄｒ［８］を決めるパリティデータＰＲＴｄａｔが、１個のメモリブロック１６Ａに集約される２個のウェイの何れを選択するかを示す選択ビットとしての意義を有することになる。４個のメモリブロック１６Ａのブロックイネーブル信号ｃｅｎａ，ｃｅｎｂには例えばリードリクエスト信号ＲＤｒｅｑを共通に用いることができる。この場合に、２個のメモリブロックから読み出されたキャッシュタグとタグアドレス情報ＴＡＧａｄｒｓとを比較して判別する回路１００は図４の判別回路５３，５４と選択回路５８の機能を備えて構成されればよい。
【０１１５】
メモリブロック１６Ａでインデックスされたキャッシュタグ、キャッシュデータを出力するための増幅回路としてそれぞれのメモリブロック１６Ａが持つセンスアンプＳＡの数は、図４のそれぞれのメモリブロック１６が持つセンスアンプの数と等しければ十分である。要するに、図１１の構成において全部のメモリブロック１６Ａが有するセンスアンプの合計個数は図４の構成において全部のメモリブロック１６が有するセンスアンプの合計個数の大よそ半分になる。したがって、センスアンプで消費される待機電流の大きさも大よそ半分になる。
【０１１６】
図１２に例示されるキャッシュフィル系では、キャッシュフィル用のウェイ選択回路７１Ａは、パリティデータＰＲＴｄａｔ、ＬＲＵ［１：０］及びバリッドビットＶに基づき図６で説明したウェイ選択回路７１と同じ論理をもってキャッシュフィルを行うウェイを決定するが、出力選択信号１０１は、番号＃０又は＃２のウェイをフィル対象とするとき論理値０、番号＃１又は＃３のウェイをフィル対象とするとき論理値１とする。キャッシュフィル要求信号Ｆｒｅｑの論理値１によってキャッシュフィル動作が指示されているとき、出力選択信号１０１はインバータ１０２とアンドゲート１０３を介して、相補レベルのブロックイネーブル信号ｃｅｎａとｃｅｎｂにされる。ブロックイネーブル信号ｃｅｎａとは番号＃０又は＃２のタグウェイとデータウェイに割り当てられた２個のメモリブロック１６Ａのブロックイネーブル信号であり、ブロックイネーブル信号ｃｅｎｂは番号＃１又は＃３のタグウェイとデータウェイに割り当てられた２個のメモリブロック１６Ａのブロックイネーブル信号である。各メモリブロック１６Ａにおいて何れのウェイを選ぶかは前述同様に１ビットのパリティデータＰＲＴｄａｔがメモリブロック１６Ａのアドレスビットａ［８］として用いられることによって決まる。これにより疑似ＬＲＵによるキャッシュフィルのウェイ選択結果は図６と全く同じとされる。ＬＲＵアレイ１５に対する更新情報７３による履歴データの更新、履歴データの意味など、その他の構成は図６と同じであるからその詳細な説明は省略する。
【０１１７】
図１１及び図１２の構成によれば、動作電流に比べてセンスアンプなどの待機電流を問題視する場合には、図４及び図６の構成よりも低消費電力に寄与できる場合がある。すなわち、１個のメモリブロック１６Ａには同時に選択されることの無い複数のタグウェイが集約されるから、１個のメモリブロック１６Ａが備えるセンスアンプやバッファアンプの数は１個のメモリブロックに１個のタグウェイを備えるものと凡そ等しくなり、全メモリブロックの数が少なくなる分だけ、非活性状態におけるサブスレッショルドリーク電流のようなリーク電流が少なくなり、この点で更なる低消費電力を実現できる場合がある。
【０１１８】
なお、説明の便宜上、リード動作系に関する構成及びのフィル動作系に関する構成は別々の図面に記載にされたが、キャッシュ制御回路１０が、タグウェイＴａｇＷＡＹ＃０〜ＴａｇＷＡＹ＃３及びデータウェイＤａｔａＷＡＹ＃０〜＃３を除いて図１１に示す構成及び図１２に示す構成を併せもつ。タグウェイＴａｇＷＡＹ＃０〜ＴａｇＷＡＹ＃３及びデータウェイＤａｔａＷＡＹ＃０〜＃３へのそれぞれブロックイネーブル信号の供給方法は、図４及び図６の場合と同じであるので説明を省略する。
【０１１９】
また、メモリブロック毎に複数個のウェイを格納してウェイの選択を行う図１１及び図１２の場合にも、特に図示はしないが、図１０で説明したようにタグアドレス情報の複数分割部分毎のパリティビットを用いる構成にも適用可能であることは言うまでもない。パリティデータＰＲＴｄａｔのビット数も２ビットに限定されず３ビット以上であってもよい。
【０１２０】
≪７．タグアドレス情報のバリエーション≫
アドレス情報が物理アドレスであればタグアドレス情報もその物理アドレス情報の一部の情報とされる。アドレス情報が論理アドレスのときもタグアドレス情報はその論理アドレス情報の一部の情報とされてよいことは言うまでもないが、論理アドレス場合には論理アドレスを物理アドレスに変換するときに必要となる情報(α)が含まれる場合もあり、そのときは、タグアドレス情報として情報αを含めて考えることが得策であり、当然、情報αも含めたタグアドレス情報に対してパリティデータを生成する。例えばマルチスレッドで処理を行う場合には夫々のスレッドの処理を行うバーチャルＣＰＵ番号（Virtual CPU ID）が上記情報αとされる。図１３にはその場合のタグエントリの構成が例示される。図１３においてタグエントリは、当該キャッシュエントリの有効性を示すバリッドビットＶ、当該キャッシュエントリのリプレース禁止か否かを示すロックビットＬ、バーチャルＣＰＵ番号を示すVirtual CPU ID、論理アドレスキャッシュタグを示すLogical Address[31:12]を有する。
【０１２１】
図１４には図１３のタグエントリを用いる場合におけるキャッシュエントリに対するリード動作系に着目した構成が例示される。タグエントリのVirtual CPU ID及びLogical Address[31:12]が図示するタグウェイに格納され、バリッドビットＶ及びロックビットＬは図示しない別の記憶装置（フリップフロップなど）に格納される。図４との相違点は、パリティ生成回路３０ＢはLogical Address[31:12]とVirtual CPU ID[3:0]を用いてパリティデータＰＲＴｄａｔを生成し、また、判別回路５３Ｂ，５４ＢはLogical Address[31:12]とVirtual CPU ID[3:0]をタグアドレス情報ＴＡＧａｄｒｓとし、インデックスされたキャッシュタグとの比較対象とすることである図１５には図１３のタグエントリを用いる場合におけるキャッシュエントリに対するフィル動作系に着目した構成が例示される。図６との相違点はキャッシュタグとして書き込むエントリ情報はタグアドレス情報ＴＡＧａｄｒｓに対応するVirtual CPU ID[3:0]及びLogical Address[31:12]になることである。
【０１２２】
その他の構成については図４及び図６の構成と同じであるからその詳細な説明は省略する。また、ＴＡＧアドレス情報及びキャッシュタグにVirtual CPU IDを含める場合にも、図８及び図９で説明したＰＢＳのオン／オフ選択機能、上記上位機図１０で説明したパリティデータの複数ビット化、図１１及び図１２で説明した複数ウェイを同じメモリブロックへの集約、の夫々の構成に適用することが可能であることは言うまでもなく、その詳細については説明を省略する。
【０１２３】
なお、説明の便宜上、リード動作系に関する構成及びのフィル動作系に関する構成は別々の図面に記載にされたが、キャッシュ制御回路１０が、タグウェイＴａｇＷＡＹ＃０〜ＴａｇＷＡＹ＃３及びデータウェイＤａｔａＷＡＹ＃０〜＃３を除いて図１３に示す構成及び図１４に示す構成を併せもつ。タグウェイＴａｇＷＡＹ＃０〜ＴａｇＷＡＹ＃３及びデータウェイＤａｔａＷＡＹ＃０〜＃３へのそれぞれブロックイネーブル信号の供給方法は、図４及び図６の場合と同じであるので説明を省略する。
【０１２４】
≪８．メモリブロック≫
図１６にはメモリブロック１６，１６Ａ，１５，１５Ａの具体例が示される。メモリブロック１６，１６Ａ，１５，１５Ａは例えばスタティックランダムアクセスメモリ（ＳＲＡＭ）として構成され、メモリアレイ（ＭＣＡ）１１０には複数のスタティック型のメモリセルＭＣ（図には代表的に１個が図示される）がマトリクス配置される。メモリセルの選択端子は代表的に示されたワード線ＷＬに接続され、メモリセルのデータ入出力端子は代表的示された相補ビット線ＢＬｔ、ＢＬｂに接続される。
【０１２５】
ワード線ＷＬはワードドライバ（ＷＤＲＶ）１１１で駆動される。ロウアドレスデコーダ（ＲＤＥＣ）１１２はロウアドレス信号ＲＡｄｄをデコードしてワード線選択信号を生成し、生成されたワード線選択信号の選択レベルによってワードドライバ（ＷＤＲＶ）１１１がワード線ＷＬを駆動する。
【０１２６】
複数の相補ビット線ＢＬｔ、ＢＬｂはカラムスイッチ回路（ＣＳＷ）１１３で選択されてセンスアンプ（ＳＡ）１１４又は書き込みアンプ（ＷＡ）１１５に導通される。カラムアドレスデコーダ（ＣＤＥＣ）１１６はカラムアドレス信号ＣＡｄｄをデコードして相補ビット線選択信号を生成し、生成された相補ビット線選択信号を受けるカラムスイッチ回路１１３が相補ビット線ＢＬｔ、ＢＬｂを選択する。
【０１２７】
タイミングコントローラ（ＴＣＮＴ）１１７は外部からブロックイネーブル信号ＣＥＮ、ライトイネーブル信号ＷＥＮ、及びアドレス信号Ａｄｄを受ける。ブロックイネーブル信号ＣＥＮは上述のブロックイネーブル信号ｃｅｎに対応される。タイミングコントローラ１１７はブロックイネーブル信号ＣＥＮが選択レベルにされることによって活性化される。すなわち、外部から入力されるアドレス信号ＡＤＤを受けてロウアドレス信号ＲＡｄｄをロウアドレスデコーダ１１２に、カラムアドレス信号ＣＡｄｄをカラムアドレスデコーダ１１６に供給するとともに、アドレスデコーダ１１１，１１６による選択動作を可能とする。更に、ライトイネーブル信号ＷＥＮによる読み出し動作の指示に応答してセンスアンプ１１４を活性化し、ライトイネーブル信号ＷＥＮによる書き込み動作の指示に応答してライトアンプ１１５を活性化する。
【０１２８】
活性化されたセンスアンプ１１４はカラムスイッチ１１３を介して接続される相補ビット線ＢＬｔ、ＢＬｂにメモリセルＭＣから転送される微弱な読出しデータを増幅し、データ信号Ｄｏｕｔを生成する。活性化されたライトアンプ１１５は入力データＤｉｎをカラムスイッチ１１３を介して接続される相補ビット線ＢＬｔ、ＢＬｂへ転送し、ワード線ＷＬで選択されたメモリセルＭＣに書き込む。
【０１２９】
出力データＤｏｕｔ及び入力データＤｉｎのビット数はタグウェイの場合にはタグエントリのビット数に応ずるビット数とされ、データウェイの場合にはデータエントリのビット数に応ずるビット数とされる。
【０１３０】
図１７にはタグウェイの一例としてメモリブロック１６で構成されるＴａｇＷＡＹ＃０のメモリセルアレイ（ＭＣＡ）１１０に記憶されるタグエントリの配置が例示される。タグエントリの数は全部で２５６個、メモリセルアレイの一行あたり４個のタグエントリが格納され行数は６４行となる。一つのタグエントリはＭビットからなり（Ｍは任意の整数）、図１７では２０ビットのタグアドレス情報 [31:12]を例示する。すなわち図１７では図４、６，８，９，１４，１５のそれぞれタグウェイが模式的に表わされる。
【０１３１】
この例では、８ビットのアドレス信号Ａｄｄ（インデックスアドレス情報[11:4]）により２５６個のうちの一つのタグエントリが選択される。具体的には、アドレス信号Ａｄｄ信号の上位６ビット（ロウアドレス）でワード線上の４個のタグエントリを選択し、下位２ビット（カラムアドレス）によりカラムスイッチで４個のタグエントリの内の一つを選択し、選択された一つのタグエントリの相補ビット線ＢＬｔ、ＢＬｂがセンスアンプ１１４と電気的に結合する。
【０１３２】
特に図示はしないが、メモリブロック１６で構成されるその他のタグウェイＴａｇＷＡＴ＃１〜ＴａｇＷＡＹ＃３も同様である。
【０１３３】
図１８にはデータウェイの一例としてメモリブロック１６で構成されるＤａｔａＷＡＹ＃０のメモリセルアレイ（ＭＣＡ）１１０に記憶されるデータエントリの配置が例示される。データエントリの数は全部で２５６個、メモリセルアレイの一行あたり４個のデータエントリが格納され行数は６４行となる。一つのデータエントリ、すなわちデータウェイの１ラインはＬビットからなる。Ｌは任意の整数であり、タグウェイのエントリサイズより大きい。図１８では図４，図６，図８，図９，１４，１５のそれぞれデータウェイが模式的に表されており、エントリサイズは１６バイト（Ｌ＝１２８）とされる。この例では、８ビットのアドレス信号Ａｄｄ（インデックスアドレス情報[11:4]）により２５６個のうちの一つのデータエントリが選択される。具体的には、アドレス信号Ａｄｄ信号の上位６ビット（ロウアドレス）でワード線上の４個のデータエントリを選択し、下位２ビット（カラムアドレス）によりカラムスイッチで４個のデータエントリの内の一つを選択し、選択された一つのデータエントリの相補ビット線ＢＬｔ、ＢＬｂがセンスアンプ１１４と電気的に結合する。
【０１３４】
特に図示はしないが、メモリブロック１６で構成されるその他のデータウェイＤａｔａＷＡＴ＃１〜ＤａｔａＷＡＹ＃３も同様である。
【０１３５】
図１９にはタグウェイの別の例としてメモリブロック１６Ａで構成されるＴａｇＷＡＹ＃０及びＴａｇＷＡＹ＃２のメモリセルアレイ（ＭＣＡ）１１０に記憶されるタグエントリの配置が例示される。タグエントリの数は全部で５１２個、メモリセルアレイの一行あたり４個のタグエントリが格納され行数は１２８行となる。一つのタグエントリはＭビットからなり（Ｍは任意の整数）、図１９では２０ビットのタグアドレス情報 [31:12]を例示する。すなわち図１９では図１１、１２のそれぞれタグウェイが模式的に表わされる。
【０１３６】
この例では、８ビットのアドレス信号Ａｄｄ（インデックスアドレス情報[11:4]）と１ビットのパリティデータＰＲＴｄａｔ（addr[8]）により５１２個のうちの一つのタグエントリが選択される。
【０１３７】
特に図示はしないが、メモリブロック１６Aで構成されるその他のタグウェイＴａｇＷＡＴ＃１及びＴａｇＷＡＹ＃３も同様である。
【０１３８】
図２０にはデータウェイの一例としてメモリブロック１６で構成されるＤａｔａＷＡＹ＃０及びＤａｔａＷＡＹ＃２のメモリセルアレイ（ＭＣＡ）１１０に記憶されるデータエントリの配置が例示される。データエントリの数は全部で５１２個、メモリセルアレイの一行あたり４個のデータエントリが格納され行数は１２８行となる。一つのデータエントリ、すなわちデータウェイの１ラインはＬビットからなる。Ｌは任意の整数であり、タグウェイのエントリサイズより大きい。図２０では図１１，１２のそれぞれデータウェイが模式的に表されており、エントリサイズは１６バイト（Ｌ＝１２８）とされる。
【０１３９】
この例では、８ビットのアドレス信号Ａｄｄ（インデックスアドレス情報[11:4]）と１ビットのパリティデータＰＲＴｄａｔ（addr[8]）により５１２個のうちの一つのタグエントリが選択される。
【０１４０】
特に図示はしないが、メモリブロック１６Ａで構成されるその他のデータウェイＤａｔａＷＡＹ＃１及びＤａｔａＷＡＹ＃３も同様である。
【０１４１】
図２１にはＬＲＵアレイ１５，１５Ａのメモリセルアレイ（ＭＣＡ）１１０に記憶されるＬＲＵエントリの配置が例示される。ＬＲＵエントリの数は全部で２５６個、メモリセルアレイの一行あたり４個のＬＲＵエントリが格納され行数は６４行となる。一つのＬＲＵエントリは、２ビット又は３ビットからなる。3ビット必要になるには図９の場合である。
【０１４２】
この例では、８ビットのアドレス信号Ａｄｄ（インデックスアドレス情報[11:4]）により２５６個のうちの一つのＬＲＵエントリが選択される。具体的には、アドレス信号Ａｄｄ信号の上位６ビット（ロウアドレス）でワード線上の４個のＬＲＵエントリを選択し、下位２ビット（カラムアドレス）によりカラムスイッチで４個のＬＲＵエントリの内の一つを選択し、選択された一つのＬＲＵエントリの相補ビット線ＢＬｔ、ＢＬｂがセンスアンプ１１４と電気的に結合する。
【０１４３】
≪８．タグウェイに対するインデックス動作のまとめ≫
図２２にはタグウェイに対するインデックス動作形態の主な態様をまとめとして示す。４個のタグウェイＴａｇＷＡＹ＃０〜ＴａｇＷＡＹ＃３に対する動作を一例とする。インデックス動作でウェイ単位のメモリブロック（ＢＬＣＫ）１６のすべてを活性化する形態では、４個のメモリブロック１６を同時アクセスするからそれによる消費電力は以下の動作形態に比べて最も大きくなる。
【０１４４】
図４に代表されるようにパリティデータＰＲＴｄａｔの値に応じてタグウェイ単位にメモリブロック１６を分割選択する場合には、タグウェイＴａｇＷＡＹ＃０〜ＴａｇＷＡＹ＃３の格納に用いるメモリブロック１６の数は上記と同じ４個であるが、キャッシュヒット又はキャッシュミスを検出するときに動作させるメモリブロック１６の数は２個になる。パリティデータＰＲＴｄａｔ=０のときはタグウェイＴａｇＷＡＹ＃０，ＴａｇＷＡＹ＃１が同時にアクセスされ、パリティデータＰＲＴｄａｔ=１のときはタグウェイＴａｇＷＡＹ＃２，ＴａｇＷＡＹ＃３が同時にアクセスされる。したがって、そのときの電力消費は上記に比べておおよそ半減する。
【０１４５】
図１１に代表されるようにタグウェイを２個ずつ集約してメモリブロック１６Ａに格納して、必要なタグウェイを内部で選択する場合、メモリブロック１６Ａの１個あたりの記憶容量は上記メモリブロック１６の２倍とされる。１個のメモリブロック１６Ａに割り当てられるタグウェイはパリティデータＰＲＴｄａｔの値に応じて同時に選択されないタグウェイ同士とされる。即ち、タグウェイＴａｇＷＡＹ＃０とＴａｇＷＡＹ＃１が一方のペアとされ、タグウェイＴａｇＷＡＹ＃２とＴａｇＷＡＹ＃３が他方のペアとされる。パリティデータＰＲＴｄａｔ＝０のときはタグウェイＴａｇＷＡＹ＃０とＴａｇＷＡＹ＃２が格納される２個のメモリブロック１６Ａを同時アクセスして一方のメモリブロックから所要のタグウェイを選択する。パリティデータＰＲＴｄａｔ＝１のときはタグウェイＴａｇＷＡＹ＃１とＴａｇＷＡＹ＃３が格納される２個のメモリブロック１６Ａを同時アクセスして一方のメモリブロックから所要のタグウェイを選択する。動作させるメモリブロックは２つであり、各メモリブロック１６Ａの記憶容量はメモリブロック１６の２倍であるから、ウェイ単位のメモリブロックを分割選択する選択形態とほぼ同程度の消費電力を見込んでおり、ウェイ単位のメモリブロックを全選択する選択形態よりも全体的な電力消費は少ないと考えられる。消費電力はセンスアンプ動作と、特にサブスレッショルドリーク電流のような待機電流電に大きく影響する。動作するセンスアンプの数は、ウェイから読み出すキャッシュタグのビット数が同じであれば必要なセンスアンプの数はメモリブロック１６と等しくて済むからである。しかも、カラム系周辺回路の回路規模もメモリブロック１６とほぼ同じで済み、回路規模も小さくなり、この点でも低消費電力が実現される。
【０１４６】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【０１４７】
例えばタグウェイとデータウェイは並列してインデックスされる場合を説明したが、それに限定されない。選択データはパリティデータに限定されず、パリティチェック機能が不要の場合にはインデックスアドレス情報の特定ビットを用いてもよい。キャッシュエントリのデータ構成、タグエントリのデータ構成、それらのビット数などについては適宜変更可能である。また、タグアドレス情報は図１３の仮想ＣＰＵ番号と論理アドレスのペアに限定されず、アドレス空間番号（ＡＳＩＤ）と論理アドレスとのペアなどのように、ＣＰＵの仮想アドレス空間行構成やデータ処理スレッドの構成に応じて適宜変更可能である。マイクロコンピュータはシングルＣＰＵコアに限定されず、マルチＣＰＵコアにも適用することができ、その場合でもＣＰＵコア毎にマルチスレッドに応じた仮想ＣＰＵ番号を用いてインデックスアドレス情報を構成してもよい。キャッシュメモリは命令キャッシュ、データキャッシュ、ユニファイドキャッシュの何れであってもよい、また、一次キャッシュであっても、二次キャッシュであっても適用可能である。
【０１４８】
また、タグアドレスＴＡＧａｄｒｓについてパリティデータを生成し、そのパリティデータに基づき複数のタグウェイから一部の１以上のタグウェイ及びその対応するデータウェイを選択し、それ以外のタグウェイ及びその対応するデータウェイは非選択としたが、タグアドレスＴＡＧａｄｒｓから任意の方法でタグウェイを選択するデータを生成しても低消費電力を実現する。例えば単純な方法としてはタグアドレスＴＡＧａｄｒｓ全２０ビットのうちいずれか１ビットをウェイの選択信号に用いることができる。
【産業上の利用可能性】
【０１４９】
本発明はセットアソシアティブ方式を用いてキャッシングを行う半導体集積回路、１次または２次キャッシュを持つマイクロコンピュータやシステムオンチップの所謂ＳｏＣのような半導体集積回路、モジュール化された半導体装置などに広く適用することができる。
【符号の説明】
【０１５０】
１  マイクロコンピュータ（ＭＣＵ）
２  ＣＰＵ（中央処理装置）
３  キャッシュメモリ（ＣＡＣＨＭＲＹ）
４  内部バス
９  割込みコントローラ（ＩＮＴＣ）
５  ランダムアクセスメモリ（ＲＡＭ）
６  ダイレクトメモリアクセスコントローラ（ＤＭＡＣ）
７  フラッシュメモリ（ＦＬＡＳＨ）
８  その他周辺回路（ＰＲＰＨＲＬ）
１０  キャッシュ制御回路（ＣＡＣＨＣＮＴ）
１１  メモリマット（ＭＲＹＭＡＴ）
１２  タグウェイ（ＴａｇＷＡＹ）
１３  データウェイ（ＤａｔａＷＡＹ）
１４  キャッシュエントリ（ＣａｃｈＥＮＴＲＹ）
１５  ＬＲＵデータアレイ（ＬＲＵＡＲＹ）
１６  メモリブロック
ＴａｇＷＡＴ＃０〜ＴａｇＷＡＴ＃ｎ−１  タグウェイ
ＡＣＣａｄｒｓ  アクセスアドレス情報
ＴＡＧａｄｒｓ  タグアドレス情報
ＩＤＸａｄｒｓ  インデックスアドレス情報
３０  パリティ生成回路（ＰＲＴＹＧ）
３１  タグ比較回路（ＴＡＧＣＭＰ）
３２  マルチヒット検出回路（ＭＬＴＨＩＴ）
ＰＲＴｄａｔ  パリティデータ
ｃｅｎ０〜ｃｅｎ３  ｃｅｎａ、ｃｅｎｂ  イネーブル信号（ブロックイネーブル信号）
【図１】
2013098919.tif 000003
【図２】
2013098919.tif 000004
【図３】
2013098919.tif 000005
【図４】
2013098919.tif 000006
【図５】
2013098919.tif 000007
【図６】
2013098919.tif 000008
【図７】
2013098919.tif 000009
【図８】
2013098919.tif 000010
【図９】
2013098919.tif 000011
【図１０】
2013098919.tif 000012
【図１１】
2013098919.tif 000013
【図１２】
2013098919.tif 000014
【図１３】
2013098919.tif 000015
【図１４】
2013098919.tif 000016
【図１５】
2013098919.tif 000017
【図１６】
2013098919.tif 000018
【図１７】
2013098919.tif 000019
【図１８】
2013098919.tif 000020
【図１９】
2013098919.tif 000021
【図２０】
2013098919.tif 000022
【図２１】
2013098919.tif 000023
【図２２】
2013098919.tif 000024
【国際調査報告】
2013098919.tif 000025
2013098919.tif 000026
2013098919.tif 000027