(58)【調査した分野】(Int.Cl.,DB名)
請求項1において、前記キャッシュメモリは、前記ウェイからリードされた夫々のキャッシュタグを前記タグアドレスと比較し、それらの比較結果が、全て不一致、一つだけ一致、又は複数一致の何れであるかを判別し、前記複数一致を判別したときはキャッシュエラー信号を生成する、データ処理装置。
請求項3において、前記キャッシュメモリは、前記一つだけ一致である比較結果に係るキャッシュタグのキャッシュエントリをデータ操作の対象とする、データ処理装置。
【発明を実施するための形態】
【0018】
1.実施の形態の概要
先ず、本願において開示される発明の代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
【0019】
〔1〕<アドレス情報に基づいて一部のウェイを選択>
本発明の代表的な実施の形態に係るデータ処理装置(1)は、複数のウェイに複数のキャッシュエントリを格納するセットアソシアティブ型のキャッシュメモリ(3)を含む。前記キャッシュメモリはキャッシュタグをリードするとき、前記複数のウェイ(12,13)の中から、アドレス情報の一部であるタグアドレス情報(TAGadrs)に基づいて生成される選択データ(PRTdat)の値に応じて一部のウェイを選択し、選択したウェイの中から、前記アドレス情報の中のインデックスアドレスを用いてキャッシュタグをリードする。また、前記キャッシュメモリはキャッシュフィルを行うとき、前記選択データの値に応ずる一部のウェイの中から選んだキャッシュエントリ(14)にキャッシュフィルを行う。
【0020】
これによれば、キャッシュタグをリードするとき選択データの値に応じて一部のタグウェイだけを選択して、その中からキャッシュタグをインデックスすればよく、すべてのタグウェイを並列的に動作させることを要さず、低消費電力に寄与する。キャッシュフィルの対象とするキャッシュエントリについても選択データの示すウェイに属するキャッシュエントリとするから、キャッシュ動作でリードすべきキャッシュタグを保有するウェイと選択データで選択されるウェイとの対応関係を容易に維持することができ、上記低消費電力が保証される。
【0021】
〔2〕<パリティデータを選択データに用いる>
項1において、前記キャッシュメモリは、前記アドレス情報の一部であるタグアドレス情報に対するパリティデータ(PRTdat)を生成して前記選択データとする。
【0022】
これによれば、キャッシュエントリのリプレースメントには、少なくとも、使用するウェイの範囲を限定するパリティデータを用いることになる。したがって、キャッシュメモリに供給されるアドレス情報に誤りが無いともの仮定すれば、キャッシュタグのリード対象はそのアドレス情報に関するパリティデータの値に応ずるウェイになるので、キャッシュエントリに応じてパリティビットを保存することを要しない。したがって、リードされたキャッシュタグから、比較のためにパリティデータを生成する回路を必要とせずに、ビット反転したキャッシュタグを誤って正規のキャッシュタグとして処理する誤動作を抑制することができる。即ち、パリティデータの値が反転するようなビット反転がキャッシュタグに生じても、当該ビット反転したキャッシュタグが所在するウェイはそのパリティデータの値に従った本来のウェイにならないから、インデックスの対象にされない。これにより、キャッシュタグのビット反転に対する信頼性を向上させながら、パリティ生成回路の数を半減させることができる。更に、パリティ生成回路の数を半減させることができるという点で、更なる低消費電力も達成することができる。
【0023】
〔3〕<複数ヒットでキャッシュエラー>
項1において、前記キャッシュメモリは、前記ウェイからリードされた夫々のキャッシュタグを前記タグアドレスと比較し、それらの比較結果が、全て不一致、一つだけ一致、又は複数一致の何れであるかを判別し、前記複数一致を判別したときはキャッシュエラー信号(41)を生成する。
【0024】
これによれば、キャッシュタグのビット反転によってタグアドレスと不一致になった場合には通常のキャッシュミスと同様に対処すればよい。キャッシュタグの複数ビット反転によって正規のキャッシュタグと同じキャッシュタグを有するキャッシュエントリが見かけ上発生しても、上記複数の一致を判別することによって、そのような異常に対処することができる。
【0025】
〔4〕<キャッシュエラーを例外要因又は割込み要因とする>
項3において、前記キャッシュエラーの信号を例外要因又は割込み要因として入力する割込みコントローラ(9)をさらに有する。
【0026】
これによれば、そのようなキャッシュエラーの発生をビット反転の影響が大きくなったと考えるときには、その状況に応じた処理を割込み処理又は例外処理を介して柔軟に行うことが可能になる。
【0027】
〔5〕<データ操作対象とするキャッシュエントリ>
項3において、前記キャッシュメモリは、前記一つだけ一致である比較結果に係るキャッシュタグのキャッシュエントリをデータ操作の対象とする。
【0028】
これによれば、通常のキャッシュヒットに応ずるキャッシュエントリのデータ操作に容易に移行することができる。
【0029】
〔6〕<ウェイ毎のメモリブロックに対する活性/非活性制御>
項1において、前記ウェイは前記インデックスアドレスに対応して前記キャッシュタグを格納するタグウェイ(12)と、前記インデックスアドレスに対応してデータを格納するデータウェイ(13)とを有する。キャッシュエントリは前記キャッシュタグとそれに対応するデータを含み、前記複数のタグウェイのそれぞれはタグウェイ毎に活性又は非活性が選択されるメモリブロック(16)によって構成される。前記キャッシュメモリはキャッシュタグをリードするとき、前記選択データを用いたメモリブロックの活性化によって前記一部のタグウェイの選択を行う。
【0030】
これによれば、タグウェイ単位の複数のメモリブロックに対する選択的な非活性化によって低消費電力を実現することができる。
【0031】
〔7〕<1ビットパリティデータ>
項6において、前記選択データは前記アドレス情報の一部であるタグアドレス情報の全ビットに対する1ビットのパリティデータPRTdatであり、第1の論理値のパリティデータは前記複数のメモリブロックの半分の選択に用い、第2の論理値のパリティデータは前記複数のメモリブロックの残りの半分の選択に用いる。
【0032】
これにより、アドレス比較のためのキャッシュタグの読み出しに要する電力消費をおおよそ半減することができる。
【0033】
〔8〕<複数ビットパリティデータ>
項6において、前記選択データは前記アドレス情報の一部であるタグアドレス情報の複数分割部分毎のパリティビットから成る複数ビットのパリティデータ(PRTdat[1:0])であり、前記パリティデータの値は複数のタグウェイの中から選択するタグウェイを決める。
【0034】
これによれば、比較的容易な構成によって、アドレス比較のためのキャッシュタグの読み出しに必要な電力消費を更に低減することが可能になる。
【0035】
〔9〕<インデックスするタグウェイの選択機能をオン/オフ>
項6において、前記キャッシュメモリは、前記複数のウェイの中から前記選択データにより一部のタグウェイを選択してキャッシュタグをリードする第1モード(PBS=on)と、キャッシュタグをリードする対象タグウェイをすべてのタグウェイとする第2モード(PBS=off)とを有し、前記第1モード又は第2モードを選択するモード選択信号(MOD)を入力する。
【0036】
これによれば、1ウェイ・1メモリブロックの構成を前提とするから、低消費電力を優先させたい場合には第1モード、高いキャッシュヒット率を優先させたい場合には第2モードを設定するという自由度を、第1モードだけが可能な回路構成に比べて構成の変更を最小限に実現することが可能になる。
【0037】
〔10〕<複数ウェイ毎のメモリブロックに対する活性/非活性制御>
項1において、前記ウェイは前記インデックスアドレスに対応して前記キャッシュタグを格納するタグウェイと、前記インデックスアドレスに対応してデータを格納するデータウェイとを有する。キャッシュエントリは前記キャッシュタグとそれに対応するデータを含む。前記複数のタグウェイは所定複数個毎に一つのメモリブロック(16A)に集約されて構成され、同一メモリブロックに構成される複数のタグウェイは相互に異なる選択データによって選択される。前記キャッシュメモリはキャッシュタグをリードするとき、前記選択データと前記インデックスアドレス情報とを用いてキャッシュタグをリードする。
【0038】
これによれば、1個のメモリブロックには同時に選択されることの無い複数のタグウェイが集約されるから、1個のメモリブロックが備えるセンスアンプやバッファアンプの数は1個のメモリブロックに1個のタグウェイを備えるものと凡そ等しくなり、全メモリブロックの数が少なくなる分だけ、非活性状態におけるサブスレッショルドリーク電流のようなリーク電流が少なくなり、この点で更なる低消費電力に寄与することができる場合がある。
【0039】
〔11〕<1ビットパリティデータ>
項10において、前記選択データは前記アドレス情報の一部であるタグアドレス情報の全ビットに対する1ビットのパリティデータ(PRTdat)である。第1の論理値のパリティデータは夫々の前記メモリブロックの中の一方のタグウェイの選択に用いる。第2の論理値のパリティデータは夫々の前記メモリブロックの中の他方のタグウェイの選択に用いる。
【0040】
これにより、アドレス比較のためのキャッシュタグの読み出しに要する電力消費をおおよそ半減することができる。
【0041】
〔12〕<複数ビットパリティデータ>
項10において、前記選択データは前記アドレス情報の一部であるタグアドレス情報の複数分割部分毎のパリティビットから成る複数ビットのパリティデータ(PRTdat[1:0])であり、前記パリティデータの値は夫々のメモリブロックの中から選択するタグウェイを決める。
【0042】
これによれば、比較的容易な構成によって、アドレス比較のためのキャッシュタグの読み出しに必要な電力消費を更に低減することが可能になる。
【0043】
〔13〕<LRUデータアレイ>
項1において、前記キャッシュメモリがキャッシュフィルを行うキャッシュエントリを決めるとき、キャッシュフィル対象とするキャッシュエントリを疑似LRUにより特定するための指標として用いるLRUデータ(LRU[1:0]、LRU[2:0])を格納するLRUデータアレイ(15,15A)を有する。前記LRUデータアレイは、キャッシュエントリに対するインデックスアドレス毎に、選択データで選択される一部のウェイ毎の利用履歴を示す複数ビットの履歴データを格納する領域を有する。前記キャッシュメモリは、インデックスアドレス情報を用いてLRUデータアレイから読み出した前記履歴データと、対応する選択データとに基づいてキャッシュフィルを行うキャッシュエントリを選ぶ。
【0044】
これによれば、キャッシュフィルを行うキャッシュエントリを選ぶのに履歴データに選択データを併用するので、選択データのビット数分だけ履歴データのビット数を減らすことができ、この点でLRUデータアレイの回路規模縮小とそれにおける電力消費の低減とに寄与する。
【0045】
〔14〕<ウェイ毎のメモリブロックに対応するLRU>
項13において、前記複数のウェイのそれぞれはタグウェイ毎に活性又は非活性が選択されるメモリブロック(16)によって構成される。前記キャッシュメモリはキャッシュタグをリードするとき、前記選択データを用いたメモリブロックの活性化によって前記選択データによる一部のウェイの選択を行う。前記キャッシュメモリはキャッシュフィルを行うとき、夫々のメモリブロックにおいて前記インデックスアドレスが指し示すキャッシュエントリの内、インデックスアドレス情報に基づいて前記LRUデータアレイ(15)から読み出された複数ビットの前記履歴データ(LRU[1:0])と、前記タグアドレスに基づいて生成される前記選択データ(PRTdat)とによって、キャッシュフィルを行うキャッシュエントリを選択する。
【0046】
これによれば、履歴データを格納するときは選択データの値に応じて履歴データの値を決めればよく、インデックスされた履歴データの値に対して何れのメモリブロックを活性化するかはそのときの選択データの値によって決めればよく、活性化されたメモリブロックからキャッシュエントリを選択するために用いるアドレス情報はインデックスアドレス情報だけでよい。
【0047】
〔15〕<複数ウェイ毎のメモリブロックに対応するLRU>
項13において、前記複数のウェイは所定複個毎に一つのメモリブロック(16A)に集約されて構成され、同一メモリブロックに構成される複数のウェイは相互に異なる選択データによって選択される。前記キャッシュメモリはキャッシュタグをリードするとき、活性化された夫々のメモリブロックの中の何れのウェイを選択するかを前記選択データによって指定され、指定されたウェイの中のいずれのキャッシュタグを選択するかを前記アドレス情報の中のインデックスアドレス情報によって指定される。前記キャッシュメモリはキャッシュフィルを行うとき、いずれのメモリブロックを選択するかを、前記LRUデータアレイ(15A)からインデックスアドレス情報によって読み出された複数ビットの履歴データ(LRU[2:0」)によって指定され、指定されたメモリブロックの中から何れのウェイを選択するかを、前記選択データ(PRTdat)によって指定され、指定されたウェイの中から何れのキャッシュエントリをキャッシュフィルの対象とするかを、前記インデックスアドレス(IDXadrs)によって指定される。
【0048】
これによれば、履歴データを格納するときは選択データの値に応じて履歴データの値を決めればよく、インデックスされた履歴データの値に対して何れのメモリブロックの何れのキャッシュエントリを選択するかは、そのときの選択データの値とインデックスアドレス情報とによって決めればよい。
【0049】
〔16〕<パリティデータを用いてウェイを選択>
本発明の別の実施の形態に係るデータ処理装置(1)は、複数ウェイに複数のキャッシュエントリを格納するセットアソシアティブ型のキャッシュメモリ(3)を含む。前記キャッシュメモリはキャッシュタグをリードするとき、前記複数のウェイの中から何れの一部のウェイを選択するかを、アドレス情報の一部であるタグアドレス情報(TAGadrs)に基づいて生成されるパリティデータ(PRTdat)の値に応じて指定され、指定されたウェイの中から何れのキャッシュタグをリードするかを、前記アドレス情報の中のインデックスアドレス情報によって指定される。リードされたキャッシュタグを前記タグアドレスと比較し、それらの比較結果が、全て不一致、一つだけ一致、又は複数一致の何れであるかを判別し、前記複数一致を判別したときはキャッシュエラー信号(41)を生成する。前記キャッシュメモリはキャッシュフィルを行うとき、前記選択データの値に応ずる一部のウェイの中から選んだキャッシュエントリにキャッシュフィルを行う。
【0050】
これによれば、項1と同様に、キャッシュ動作でリードすべきキャッシュタグを保有するウェイと選択データで選択されるウェイとの対応関係を容易に維持して、低消費電力に寄与する。更に、項2同様に、キャッシュエントリに対応してパリティビットを保存することを要せず、キャッシュタグのビット反転に対する信頼性を向上させながら、パリティ生成回路の数を半減させることができる。また、項3同様に、キャッシュタグのビット反転によってタグアドレスと不一致になった場合には通常のキャッシュミスと同様に対処すればよい。キャッシュタグの複数ビット反転によって正規のキャッシュタグと同じキャッシュタグを有するキャッシュエントリが見かけ上発生しても、上記複数の一致を判別することによって、そのような異常に対処することができる。
【0051】
〔17〕<パリティデータを用いてウェイを選択>
本発明の更に別の実施の形態に係るデータ処理装置(1)は、複数にウェイに複数のキャッシュエントリを格納するセットアソシアティブ型のキャッシュメモリ(3)を含む。前記キャッシュメモリはキャッシュタグをリードするとき、前記複数のウェイの中から何れの一部のウェイを選択するかを、アドレス情報の一部であるタグアドレス情報(TAGadrs)に基づいて生成されるパリティデータ(PRTdat)の値に応じて指定され、指定されたウェイの中から何れのキャッシュタグをリードするかを、前記アドレス情報の中のインデックスアドレス情報(IDXadrs)によって指定される。リードされたキャッシュタグを前記タグアドレスと比較し、それらの比較結果が、全て不一致、一つだけ一致、又は複数一致の何れであるかを判別し、前記複数一致を判別したときはキャッシュエラー信号(41)を生成する。前記キャッシュメモリは、キャッシュフィルを行うキャッシュエントリを決めるとき、キャッシュフィルの対象とするキャッシュエントリを疑似LRUにより特定するための指標として用いるLRUデータ(LRU[1:0],LRU[2:0])を格納するLRUデータアレイ(15,15A)を有する。前記LRUデータアレイは、キャッシュエントリに対するインデックスアドレス毎に、パリティデータで選択される一部のウェイ毎の利用履歴を示す複数ビットの履歴データを格納する領域を有する。前記キャッシュメモリは、インデックスアドレス情報を用いてLRUデータアレイから読み出した前記履歴データと、対応する選択データとに基づいてキャッシュフィルを行うキャッシュエントリを選ぶ。
【0052】
これによれば、項1と同様に、キャッシュ動作でリードすべきキャッシュタグを保有するウェイと選択データで選択されるウェイとの対応関係を容易に維持して、低消費電力に寄与する。更に、項2同様に、キャッシュエントリに対応してパリティビットを保存することを要せず、キャッシュタグのビット反転に対する信頼性を向上させながら、パリティ生成回路の数を半減させることができる。また、項3同様に、キャッシュタグのビット反転によってタグアドレスと不一致になった場合には通常のキャッシュミスと同様に対処すればよい。キャッシュタグの複数ビット反転によって正規のキャッシュタグと同じキャッシュタグを有するキャッシュエントリが見かけ上発生しても、上記複数の一致を判別することによって、そのような異常に対処することができる。また、項13と同様に、キャッシュフィルを行うキャッシュエントリを選ぶのに履歴データに選択データを併用するので、選択データのビット数分だけ履歴データのビット数を減らすことができ、この点でLRUデータアレイの回路規模縮小とそれにおける電力消費の低減とに寄与する。
【0053】
〔18〕<一部のウェイの中から操作対象のキャッシュエントリを選ぶ>
本発明の更に別の実施の形態に係るデータ処理装置(1)は、複数のウェイを複数のキャッシュエントリの格納に用いるセットアソシアティブ型のキャッシュメモリ(3)を含む。前記キャッシュメモリはアドレス情報に基づいてウェイを操作するとき、前記アドレス情報の一部であるタグアドレス情報(TAGadrs)に基づいて生成される選択データ(PRTdat)に応ずる一部のウェイの中から操作対象とするキャッシュエントリを選ぶ。
【0054】
これによれば、キャッシュタグのリード又はキャッシュフィルのための操作対象とするキャッシュエントリは、選択データの値に応ずる一部のウェイから選べばよいので、すべてのウェイを並列的に動作させることを要さず、低消費電力に寄与する。操作対象のキャッシュエントリは選択データを用いて選択されるから、キャッシュタグがリードされるウェ
イとキャッシュフィルの対象とされるウェイとの対応関係を容易に維持することができる。
【0055】
〔19〕<一部のウェイの中からキャッシュタグリード又はキャッシュフィル対象のキャッシュエントリを選ぶ>
本発明の更に別の実施の形態に係るデータ処理装置(1)は、複数のウェイを複数のキャッシュエントリの格納に用いるセットアソシアティブ型のキャッシュメモリ(3)を含む。前記キャッシュメモリは、アドレス情報の一部であるタグアドレス情報(TAGadrs)に基づいて生成される選択データに応ずる一部のウェイの中から、アドレスタグと比較するキャッシュタグをリードし、且つ、キャッシュフィルを行うキャッシュエントリを選ぶ。
【0056】
これによれば、キャッシュタグのリード又はキャッシュフィルの操作対象とするキャッシュエントリは、選択データの値に応ずる一部のウェイから選べばよいので、すべてのウェイを並列的に動作させることを要さず、低消費電力に寄与する。操作対象のキャッシュエントリは選択データを用いて選択されるから、キャッシュタグがリードされるウェイトとキャッシュフィルの対象とされるウェイとの対応関係を容易に維持することができる。
【0057】
〔20〕<選択データを用いてキャッシュタグをリードするウェイの選択と、使用履歴に従ったキャッシュフィルを行うキャッシュエントリの選択とを行う>
本発明の更に別の実施の形態に係るデータ処理装置(1)は、複数のウェイを複数のキャッシュエントリの格納に用いるセットアソシアティブ型のキャッシュメモリ(3)を含む。前記キャッシュメモリはキャッシュタグをリードするとき、複数のウェイの内のどのウェイを選択するかを、アドレス情報の一部であるタグアドレス情報(TAGadrs)に基づいて生成される選択データ(PRTdat)の値に応じて指示され、指示されたウェイの中から何れのキャッシュタグをリードするかを、前記アドレス情報の中のインデックスアドレス(IDXadrs)によって指示される。前記キャッシュメモリはキャッシュフィルを行うとき、全てのウェイのキャッシュエントリについての前記インデックスアドレス単位で参照される使用履歴(LRU[1:0],LRU[2:0])と前記選択データ(PRTdat)の値との組み合わせにしたがって、キャッシュフィルを行うキャッシュエントリの選択を行う。
【0058】
これによれば、キャッシュタグのリード又はキャッシュフィルの操作対象とするキャッシュエントリは、選択データの値に応ずる一部のウェイから選べばよいので、すべてのウェイを並列的に動作させることを要さず、低消費電力に寄与する。操作対象のキャッシュエントリは選択データを用いて選択されるから、キャッシュタグがリードされるウェイトとキャッシュフィルの対象とされるウェイとの対応関係を容易に維持することができる。さらに、キャッシュフィルを行うキャッシュエントリを選ぶのに履歴データに選択データを併用するので、選択データのビット数分だけ履歴データのビット数を減らすことができ、この点で履歴データを保持する回路の規模縮小とそれにおける電力消費の低減とに寄与する。
【0059】
2.実施の形態の詳細
実施の形態について更に詳述する。なお、発明を実施するための形態を説明するための全図において、同一の機能を有する要素には同一の符号を付して、その繰り返しの説明を省略する。
【0060】
≪1.マイクロコンピュータ≫
図1にはデータ処理装置の一実施の形態としてマイクロコンピュータ(MCU)1が例示される。同図に示されるマイクロコンピュータ1は、特に制限されないが、単結晶シリコンのような1個の半導体基板にCMOS集積回路製造技術を用いて形成される。
【0061】
マイクロコンピュータ1は、特に制限されないが、命令をフェッチして解読し、解読結果にしたがって、必要なオペランドデータをフェッチして、演算処理を行うCPU(中央処理装置)2を有する。図ではCPU2はシングルコアのように図示されているが、マルチコア構成であってよいことは言うまでもない。また、CPU2のプログラム実行形態はシングルスレッドだけでなく、マルチスレッドにも適用可能になっており、一つのプログラムをマルチスレッドで処理する場合、或いは複数のプログラムをプログラム単位のスレッドとして全体としてマルチスレッドで処理する場合の何れであってもよい。
【0062】
3はキャッシュメモリ(CACHMRY)であり、内部バス4とCPU2との間に配置される。図ではCPUが実行する命令及び命令実行に用いるオペランドや演算データなどのデータは共に一次的にキャッシュメモリ3に配置される。内部バス4には代表意的に示された割込みコントローラ(INTC)9、スタティックランダムアクセスメモリ(SRAM)などで構成されたRAM5、ダイレクトメモリアクセスコントローラ(DMAC)6、電気的に書き換え可能なフラッシュメモリ(FLASH)7、及びその他周辺回路(PRPHRL)8が接続される。その他周辺回路8はタイマやマイクロコンピュータ1の外部への入出力ポートなどを含む。特に制限されないが、RAM5やFLSH7はプログラムやデータの格納に用いられ、例えば、それらはキャッシュメモリ3によるキャッシュの対象にされる。
【0063】
キャッシュメモリ3は、特に制限されないが、キャッシュ制御回路(CACHCNT)10とメモリマット(MRYMAT)11を有し、セットアソシアティブキャッシュメモリの機能が実現されている。
【0064】
図2にはセットアソシアティブキャッシュメモリの機能が実現される場合におけるメモリマット11の概略的な構成が例示される。セットアソシアティブキャッシュメモリは複数のウェイを有し、夫々のウェイはタグウェイ(TagWAY)12とデータウェイ(DataWAY)13を有し、各ウェイに複数のキャッシュエントリ(CachENTRY)14が形成される。タグウェイ(TagWAY)12はキャッシュエントリ14毎にキャッシュタグ、バリッドビット、及びロックビットなどを有する。データウェイ(DataWAY)13はキャッシュエントリ14毎にキャッシュタグに対応するキャッシュデータ(CPUが実行するプログラムやCPUが用いるオペランドデータ)を保有する。
【0065】
ここでは、一つのデータウェイ(DataWAY)14が16バイトのキャッシュデータを保有し、キャッシュエントリ(CachENTRY)14の数が256エントリとする、4ウェイ・セットアソシアティブキャッシュメモリを一例とする。この場合、CPU2が生成する複数ビットのアドレス情報の内、最下位4ビットは一つのデータウェイ(DataWAY)13のキャッシュデータから32ビット(4バイト)を選択するためのオフセットアドレス情報、その上位側8ビットは一つのキャッシュエントリ(CachENTRY)14を選択するためのインデックスアドレス情報、更にその上位側はタグアドレス情報とされる。キャッシュタグには対応するキャッシュエントリ14のキャッシュデータに応ずるタグアドレス情報が用いられる。
【0066】
LRUデータアレイ(LRUARY)15はリプレースするキャッシュエントリ(CachENTRY)14を選択する指標として用いる履歴データを保有する。履歴データは同じインデックスアドレスのキャッシュエントリに関し、最近使用されていないものを特定するための情報とされる。この例ではLRUデータアレイ(LRUARY)15は256個の履歴データを有し、履歴データはインデックスアドレス情報によってアクセスされる。
【0067】
図2において20はキャッシュエントリ14の書き込み経路、21はキャッシュエントリの読み出し経路である。22はタグウェイ12及びデータウェイ13に対するウェイの選択及び選択するウェイに対してインデックスを行う選択経路である。23はLRUアレイ15に対する履歴データの書き込み、経路、24は履歴データの読み出し経路、25は履歴データの選択経路である。
【0068】
キャッシュメモリ3はタグウェイに対するパリティ機能を備えるが、その機能追加に対して回路規模の簡素化と低消費電力が考慮されている。以下、その点についてキャッシュメモリの詳細を説明する。
【0069】
≪2.タグウェイに対するパリティ機能≫
図3にはキャッシュメモリのタグウェイに対するパリティ機能の基本的な構成が例示される。ここではnウェイ・セットアソシアティブキャッシュメモリにおけるn個のタグウェイTagWA
Y#0〜TagWA
Y#n−1に着目する。
【0070】
ACCadrsはCPUが生成するアクセスアドレス情報である。TAGadrsはアクセスアドレス情報ACCadrsに含まれるタグアドレス情報、IDXadrsはアクセスアドレス情報ACCadrsに含まれるインデックスアドレス情報である。図に示されるパリティ生成回路(PRTYG)30、タグ比較回路(TAGCMP)31及びマルチヒット検出回路(MLTHIT)32などはキャッシュ制御回路10によって構成される。
【0071】
パリティ生成回路30は例えばタグアドレス情報TAGadrsの全ビットに対する1ビットのパリティビットをパリティデータPRTYdatとして生成する。偶数パリティ又は奇数パリティの何れを用いるかは偶奇選択信号(ODSEL)42で指定される。具体的には偶奇選択信号42が論理値1の場合、パリティ生成回路は、タグアドレス情報TAGadrsの全ビットについて排他的論理和EXORを行い、当該全ビット中に論理値1が偶数個あるとき論理値0のパリティデータPRTdateを出力し、当該全ビット中に論理値1が奇数個あるとき論理値1のパリティデータPRTdateを出力する。偶奇選択信号42が論理値0の場合、パリティ生成回路は、タグアドレス情報TAGadrsの全ビットについて排他的否定論理和EXNORを行い、当該全ビット中に論理値1が偶数個あるとき論理値1のパリティデータPRTdateを出力し、当該全ビット中に論理値1が奇数個あるとき論理値0のパリティデータPRTdateを出力する。
【0072】
パリティデータPRTdatはタグウェイ12に供給される。パリティデータPRTYdatの論理値1は奇数番号のタグウェイTagWAY#1、TagWAY#3、…のグループの選択を指示し、パリティデータPRTYdatの論理値0は0及び偶数番号のタグウェイTagWAY#0、TagWAY#2、…のグループの選択を指示する。したがって、キャッシュフィルを行うときは、前記パリティデータPRTdatの値に応ずる一方のグループのタグウェイの中から選ばれたキャッシュエントリにキャッシュフィルを行う。また、キャッシュタグをリードするときは、タグウェイTagWAY#0〜TagWAY#n−1のうちパリティデータPRTdatの値に応じて一方のグループのタグウェイの動作が選択され、選択されたウェイの中から、インデックスアドレスIDXadrsを用いてキャッシュタグをリードする。例えばウェイの数が2個の場合、パリティデータPRTdatが論理値0のときは一方のタグウェイTagWAY#0が利用され、パリティデータPRTdatが論理値1のときは他方のタグウェイTagWAY#1が利用される。
【0073】
これによれば、キャッシュタグをリードするときパリティデータPRTdataの値に応じて一部のタグウェイだけを選択して、その中からキャッシュタグをインデックスすればよく、すべてのタグウェイを並列的に動作させることを要さず、その点で低消費電力が実現される。このとき、キャッシュフィルの対象とされるキャッシュエントリもパリティデータPRTdaの値に応ずるウェイに属するキャッシュエントリとされているから、キャッシュ動作でリードすべきキャッシュタグを保有するウェイとパリティデータPRTdaで選択されるウェイとの対応関係が維持されているから、上記低消費電力が保証される。
【0074】
さらに、キャッシュフィルによるキャッシュエントリのリプレースメントには、少なくとも、使用するウェイの範囲を限定するパリティデータPRTdatを用いることになる。キャッシュメモリ3に供給されるアクセスアドレス情報ACCadrsに誤りが無いともの仮定すれば、キャッシュタグのリード対象はそのタグアドレス情報TAGadrsに関するパリティデータPRTdatの値に応ずるウェイになるので、キャッシュエントリ(CashENTRY)14に応じてパリティビットを保存することを要しない。したがって、リードされたキャッシュタグから、比較のためにパリティデータを生成する回路を必要とせずに、ビット反転したキャッシュタグを誤って正規のキャッシュタグとして処理する誤動作を抑制することができる。即ち、パリティデータの値が反転するようなビット反転がキャッシュタグに生じても、当該ビット反転したキャッシュタグが所在するウェイはそのパリティデータPRTdatの値に従った本来のウェイにならないから、インデックスの対象にされない。これにより、キャッシュタグのビット反転に対する信頼性を向上させながら、パリティ生成回路の数を半減させることができる。パリティ生成回路の数を半減させることができるという点で、更なる低消費電力も達成することができる。
【0075】
パリティデータPRTdatの値に応じてタグウェイTagWAY#0〜TagWAY#n−1の内の一方のグループから出力されるn/2個のキャッシュタグ、又は他方のグループから出力されるn/2個のキャッシュタグは、CTAG#0〜CTAG#n/2として図示される。出力されたキャッシュタグCTAG#0〜CTAG#n/2はタグ比較回路31でタグアドレスTAGadrsと比較され、その比較結果を対応するタグウェイに関連つけて比較結果の一致又は不一致を示す信号(ヒットウェイ判別信号:HITWAY)40などを出力する。ヒットウェイ判別信号40は、前記マルチヒット検出回路32に供給されると共に、
図3には示していないが、ヒットに係るデータウェイでインデックスされたキャッシュエントリの選択に用いられる。マルチヒット検出回路32は、ヒットウェイ判別信号40に基づいて、比較結果が、全て不一致、一つだけ一致、又は複数一致の何れであるかを判別し、複数一致を判別したときはキャッシュエラー信号(CERR)41を生成する。すべて不一致の判別結果はキャッシュミス、一つだけ一致の判別結果はキャッシュヒットになる。
【0076】
ヒットウェイ判別信号40及びキャッシュエラー信号41を生成することにより、キャッシュタグのビット反転によってタグアドレスとの比較結果が不一致になった場合には通常のキャッシュミスと同様に対処することができる。更に、キャッシュタグの複数ビット反転によって正規のキャッシュタグと同じキャッシュタグを有するキャッシュエントリが見かけ上発生しても、上記複数の一致を判別することによって、そのような異常に対処することができる。例えば、前記キャッシュエラーの信号41を例外要因又は割込み要因として割込みコントローラ9に与えれば、そのキャッシュエラーの発生をビット反転の影響が大きくなったと考える場合には、その状況に応じた処理をCPU2による割込み処理又は例外処理を介して柔軟に行うことが可能になる。
【0077】
≪3.ウェイ毎のメモリブロックをパリティデータで選択≫
ここではパリティデータを用いてウェイ毎のメモリブロックに対する活性/非活性制御を行う場合について説明する。
【0078】
図4にはキャッシュエントリに対するリード動作系に着目した構成が代表的に示される。各ウェイにおけるキャッシュエントリは256エントリ、データウェイの1ラインを16バイト、とする4ウェイ・セットアソシアティブキャッシュメモリの構成を一例とする。
【0079】
この例では、インデックスアドレスIDXadrsに対応して前記キャッシュタグを格納するタグウェイTagWAY#0〜TagWAY#3と、前記インデックスアドレスIDXadrsに対応してデータを格納するデータウェイDataWAY#0〜DataWAY#3とのそれぞれはタグウェイ、データウェイ毎に活性又は非活性が選択されるメモリブロック16によって構成される。cen0〜cen3はウェイ毎のメモリブロック16のイネーブル信号(ブロックイネーブル信号)であり、対応するブロックイネーブル信号cen0〜cen3が活性化(例えばハイレベル)にされることによって当該メモリブロック16の内部回路が動作可能にされる。例えば、対応するブロックイネーブル信号cen0〜cen3が活性化されることにより、入力アドレス信号に応答してアドレシングを行ってリードデータに対するセンス増幅動作が可能にされる。リードリクエスト信号RDreqのハイレベルによって読み出しが指示されたとき、パリティデータPRTdatが論理値0(ローレベル)であれば、タグウェイTagWAY#0,TagWAY#1及びデータウェイDataWAY#0,DataWAY#1を含む一方のウェイグループが活性化される。これに対して、リードリクエスト信号RDreqのハイレベルによって読み出しが指示されたとき、パリティデータPRTdatが論理値1(ハイレベル)であれば、タグウェイTagWAY#2,TagWAY#3及びデータウェイDataWAY#2,DataWAY#3を含む他方のウェイグループが活性化される。50はアンドゲート、51はインバータである。
【0080】
活性化されたウェイグループのウェイはインデックスアドレス情報IDXadrsによってインデックスされ、キャッシュエントリが選択される。52はインデックスアドレス情報IDXadrsをデコードして対応するキャッシュラインを選択する選択回路を概念的に示すものであり、他の図ではそれぞれのウェイにその機能が含まれるものとして説明されている。キャッシュエントリが選択されたタグウェイから出力されるキャッシュタグは判別回路53,54でタグアドレス情報TAGadrsと比較され、比較結果に応じたヒットウェイ判別信号40a,40b、ヒット信号55a、55b、及び複数ウェイヒット信号56a,56bを生成する。判別回路53,54は
図3で説明したタグ比較回路31及びマルチヒット検出回路32の機能を有する。ヒットウェイ判別信号40a,40bは夫々の判別回路53,54で一つのキャッシュタグがタグアドレスに一致するとき、一致にかかるタグウェイに対応するデータウェイの出力データをセレクタ57a、57bに選択させる。ヒット信号55a、55bは夫々の判別回路53,54で一つのキャッシュタグがタグアドレスに一致するか否かを示す信号である。複数ウェイヒット信号56a,56bは夫々の判別回路53,54で双方のキャッシュタグがタグアドレスに一致するか否かを示す信号である。セレクタ58は、パリティデータPRTdatが値0のとき、それによって活性化されるタグウェイ側の判別回路53の出力を選択し、パリティデータPRTdatが値1のとき、それによって活性化されるタグウェイ側の判別回路54の出力を選択する。セレクタ58で選択されたヒット信号55a又は55bはリードリクエスト信号RDreqとの論理積が採られてキャッシュヒット信号CHITとして用いられる。セレクタ58で選択された複数ウェイヒット信号56a又は56bはキャッシュエラー信号41として用いられる。セレクタ59は、パリティデータPRTdatが値0のとき、それによって活性化されるデータウェイDataWAY#0,dataWAY#1側で選択されて供給されるキャッシュデータを選択し、パリティデータPRTdatが値1のとき、それによって活性化されるデータウェイDataWAY#2,dataWAY#3側で選択されて供給されるキャッシュデータを選択する。セレクタ59で選択されたデータはキャッシュヒットに係るキャッシュデータCDATとしてCPU2に向けて出力される。フリップフロップ(FF)60はウェイのメモリサイクルに応じて入力信号をラッチして所用の動作タイミングを確保する。尚、
図4において、TagWAT#0〜TagWAY#3,DataWAY#0〜DataWAY3以外の構成は例えばキャッシュ制御回路10に含まれている。
【0081】
尚、
図4ではキャッシュヒットの場合にヒットに係るキャッシュエントのデータ操作としてデータリードの場合が例示されており、データ操作が書き込みの場合については図示を省略してあるが、キャッシュデータCDATに読み出し経路とは逆の書き込み経路が設けられているものと理解されたい。
【0082】
図5にはキャッシュエントリに対するリード動作系のキャッシュ動作フローが例示される。
【0083】
アクセスアドレス情報ACCadrsからタグアドレス情報TAGadrsのパリティデータPRTdatを生成する(S1)。生成したパリティデータPRTdatの値が0の場合には(S2)、タグウェイTagWAY#0及びTagWAY#1のキャッシュタグがリードされ(S3)、リード結果から、双方のキャッシュタグがヒットでないことを条件に(S4)、タグウェイTagWAY#0でヒットであれば(S5)、データウェイDataWAY#0の対応するキャッシュエントリがリード又はライトの操作対象にされる(S6)。タグウェイTagWAY#1でヒットであれば(S7)、データウェイDataWAY#1の対応するキャッシュエントリがリード又はライトの操作対象にされる(S8)。ステップS7又はS8の場合はキャッシュヒット、タグウェイTagWAY#0とタグウェイTagWAY#1の双方でヒットがなければキャッシュミスとされる。
【0084】
ステップS2でパリティデータPRTdatの値が1の場合には、タグウェイTagWAY#2及びTagWAY#3のキャッシュタグがリードされ(S9)、リード結果から、双方のキャッシュタグがヒットでないことを条件に(S10)、タグウェイTagWAY#2でヒットであれば(S11)、データウェイDataWAY#2の対応するキャッシュエントリがリード又はライトの操作対象にされる(S12)。タグウェイTagWAY#3でヒットであれば(S13)、データウェイDataWAY#3の対応するキャッシュエントリがリード又はライトの操作対象にされる(S14)。ステップS12又はS14の場合はキャッシュヒット、タグウェイTagWAY#2とタグウェイTagWAY#3の双方でヒットがなければキャッシュミスとされる。
【0085】
ステップS4又はステップS10で双方のタグウェイで重ねてヒットが生じた場合にはキャッシュエラーとされる。
【0086】
図6には
図4のリード動作系の構成に組み合わせられるフィル動作系に着目した構成が例示される。同図において各ウェイの構成は
図4と同一である。LRUデータアレイ15はキャッシュメモリ3がキャッシュフィルを行うキャッシュエントリを決めるとき、キャッシュフィル対象とするキャッシュエントリを疑似LRUにより特定するための指標として用いるLRUデータLRUdatを格納する。このLRUデータアレイ15は、キャッシュエントリに対するインデックスアドレスIDXadrs毎に、パリティデータPRTdatの値に対応して選ばれる一部のウェイ毎の利用履歴を示す2ビットの履歴データLRU[1:0](各ビットをLRU[0],LRU[1]と表す)を格納するメモリ領域を有する。履歴データLRU[1:0]はキャッシュエントリに対するパージによって論理値0に初期化される。履歴データLRU[0]はウェイ#0(タッグウェイTagWAY#0及びデータウェイDataWAY#0)又はウェイ#1(タッグウェイTagWAY#1及びデータウェイDataWAY#1)の何れのウェイの有効なキャッシュエントリを優先してリプレースに用いるかを示す。履歴データLRU[1]はウェイ#2(タッグウェイTagWAY#2及びデータウェイDataWAY#2)又はウェイ#3(タッグウェイTagWAY#3及びデータウェイDataWAY#3)の何れのウェイの有効なキャッシュエントリを優先させてリプレースに用いるかを示す。例えば、インデックスアドレス情報に対応してLRUデータアレイ15に格納されるLRU[0]は、当該インデックスアドレス情報に応ずるウェイ#1のキャッシュエントリが用いられたとき論理値1に反転される。同様に、LRU[1]は、当該インデックスアドレス情報に応ずるウェイ#3のキャッシュエントリが用いられたとき論理値1に反転される。ここでは、履歴データLRU[0],LRU[1]の各ビットは、例えば論理値0の場合は小さなウェイ番号のウェイをリプレース対象とし、論理値1の場合は大きなウェイ番号のウェイをリプレース対象とし、リプレースを行う毎に対応する履歴データビットは反転して更新されるものとする。例えばLRU[0]について、初期値を論理値0とすると、初期化の次のフィルにはウェイ#0が用いられ、LRU[0]を論理値1に反転する。その次のリプレースでは、最近使用されていない方のウェイ#1をリプレース対象と、LRU[0]を論理値0に反転する。LRU[0]は以下同様にトグル操作されればよい。
【0087】
70はインデックスアドレス情報IDXadrsをデコードして対応する履歴データLRU[1:0]を選択する選択回路を概念的に示すものであり、他の図ではLRUアレイ15にその機能が含まれるものとして説明されている。
【0088】
71はキャッシュフィル用のウェイ選択回路である。ウェイ選択回路71は、インデックスアドレス情報IDXadrsを用いてLRUデータアレイ15から読み出した前記履歴データLRU[1:0]、及びパリティデータPRTdat及びバリッドビットVなどに基づいてキャッシュフィルに用いるウェイを選択するためのブロック選択信号を生成する。ブロック選択信号はメモリブロック16にそれぞれ供給するブロックイネーブル信号cen0〜cen3に相当する。ブロック選択信号の選択論理は以下の通りである。
【0089】
ウェイ選択回路71は、例えば、パリティデータPRTdatが論理値0であればタグウェイTagWA
Y#0,TagWA
Y#1から順次インデックスされたキャッシュエントリのバリッドビットVを参照する。バリッドビットVが無効であるキャッシュエントリがキャッシュフィルの対象とされ、ウェイ選択回路71はそのキャッシュエントリの属する一つのタグウェイ(TagWA
Y#0及びTagWA
Y#1のいずれか)が選択されるように対応のブロック選択信号(cen0及びcen1のいずれか)を論理値1にする。他3つのブロック選択信号は論理値0を示しそれぞれ対応のタグウェイを非選択状態とする。ウェイ選択回路71は、さらに、履歴データLRU[0]に対して次のキャッシュフィルではタグウェイTagWA
Y#0,TagWA
Y#1のうちの選択されない側のウェイの優先度が高くなるように必要な更新を行う。バリッドビットVが双方ともに有効な場合には、ウェイ選択回路71は履歴データビットLRU[0]の値によって優先とされる方の一つのウェイが選択されるようにブロック選択信号(cen0又はcen1)を論理値1とし、インデックスされたキャッシュエントリをキャッシュフィルの対象にする。他3つのブロック選択信号はそれぞれ対応のタグウェイを非選択状態とする。この場合にはウェイ選択回路71は履歴データLRU[0]の値を反転させる更新を行う。履歴データの更新は例えば更新情報73による履歴データの書き換えによって行われる。尚、ブロック選択信号cen0〜cen3はキャッシュフィルの要求信号FLreqが活性化されているときアンドゲート72を介して対応するウェイTagWAY#0〜TagWA
Y#3、DataWA
Y#0〜DataWAY#3に供給される。
【0090】
各キャッシュエントリに対応して256エントリ×4ウェイ=1024個のバリッドビットが設けられ、各バリッドビットVは対応するキャッシュエントリの有効性を示す。これらのバリッドビットVはメモリブロック16とは別の図示しない記憶装置(フリップフロップなど)に記憶される。インデックスアドレスIDXadrsに基づいて、1024個のバリッドビットの中から4つのバリッドビットV(4つのタグウェイにそれぞれに属する一つのキャッシュエントリに対応するもの)が特定され、ウェイ選択回路71に供給される。ウェイ選択回路71はパリティデータPRTdatに基づき、参照すべき2つのバリッドビットVを特定する。パリティデータPRTdatが論理値0のときTagWAY#0、TagWAY#1に対応するそれぞれ2つのバリッドビットVが参照され、パリティデータPRTdatが論理値1のときTagWAY#1、TagWAY#2に対応するそれぞれ2つのバリッドビットVが参照される。
【0091】
図7にはキャッシュエントリに対するフィル動作系のキャッシュ動作フローが例示される。
【0092】
アクセスアドレス情報ACCadrsに対応するフィルアドレス情報FLadrsからそのタグアドレス情報TAGadrsのパリティデータPRTdatを生成する(S21)。生成したパリティデータPRTdatの値が0の場合には(S22)、ウェイ#0が空き(バリッドビットVによる無効)であれば(S23)ウェイ#0にキャッシュフィルを行う(S26)。ウェイ#0が空きでなくその代わりにウェイ#1が空きの場合には(S24)、ウェイ#1にキャッシュフィルを行う(S27)。ウェイ#0とウェイ#1の双方が共に有効な場合には履歴ビットLRU[0]の値でウェイの優先度を判別し(S25)、ウェイ#0が優先であればウェイ#0にキャッシュフィルを行い(S26)、ウェイ#1が優先であればウェイ#1にキャッシュフィルを行う(S27)。ステップS26又はS27の後に上述の如く履歴ビットLRU[
0]の更新を行う(S28)。
【0093】
ステップS2
2において、パリティデータPRTdatの値が1と判別された場合には、ウェイ#2が空き(バリッドビットVによる無効)であれば(S29)ウェイ#2にキャッシュフィルを行う(S32)。ウェイ#2が空きでなくその代わりにウェイ#3が空きの場合には(S30)、ウェイ#
3にキャッシュフィルを行う(S33)。ウェイ#2とウェイ#3の双方が共に有効な場合には履歴ビットLRU[1]の値でウェイの優先度を判別し(S31)、ウェイ#2が優先であればウェイ#2にキャッシュフィルを行い(S32)、ウェイ#3が優先であればウェイ#3にキャッシュフィルを行う(S33)。ステップS32又はS33の後に上述の如く履歴ビットLRU[1]の更新を行う(S34)。
【0094】
上記キャッシュフィル動作系の構成によれば、キャッシュフィルを行うキャッシュエントリを選ぶのに履歴データLRU[1:0]にパリティデータPRTdatを併用するので、パリティデータPRTdatのビット数分だけ履歴データのビット数を減らすことができ、この点でLRUデータアレイ15の回路規模縮小とそれにおける電力消費の低減とに寄与する。
【0095】
なお説明の便宜上、リード動作系に関する構成及びのフィル動作系に関する構成は別々の図面で説明されたが、キャッシュ制御回路10が、タグウェイTagWAY#0〜TagWAY#3及びデータウェイDataWAY#0〜#3を除いて
図4に示す構成及び
図6に示す構成を併せもつ。タグウェイTagWAY#0〜TagWAY#3及びデータウェイDataWAY#0〜#3へのそれぞれブロックイネーブル信号の供給方法は次のとおりである。
【0096】
タグウェイWAY#0を例にとれば、
図4に示されるタグウェイTagWAY#0に入力されるブロックイネーブル信号cen0と
図6に示されるタグウェイTagWAY#0に入力されるブロックイネーブル信号cen0とのOR演算を行い、その演算結果をタグウェイTagWAY#0に供給するOR回路(図示せず)がタグウェイWAY#0に対応して設けられる。タグウェイTagWAY#0はリード動作時及びフィル動作時にタグウェイTagWAY#0が選択されたときに論理値1のブロックイネーブル信号を受ける。データウェイDataWAY#0についても、
図4に示されるデータウェイDataWAY#0に入力されるブロックイネーブル信号cen0と
図6に示されるデータウェイDataWAY#0に入力されるブロックイネーブル信号cen0とのOR演算を行い、その演算結果をデータウェイDataWAY#0に供給するOR回路(図示せず)が設けられる。
【0097】
タグウェイTagWAY#1〜3、データウェイDataWAY#0〜4についても同様であり、それぞれに対応するOR回路が設けられ、その出力をそれぞれブロックネーブル信号cen1〜cen3としてタグウェイTagWAY#1〜3、データウェイDataWAY#0〜4に供給される。
【0098】
≪4.パリティデータによるタグウェイ選択機能のオン/オフ≫
次に、上述したパリティチェック機能(単にPBSとも記す)を選択的にオン/オフできるようにする場合について説明する。
【0099】
図8にはパリティチェック機能を選択的にオン/オフできるようにした場合におけるキャッシュエントリに対するリード動作系に着目した構成が例示される。
図4とは、パリティチェック機能の選択/非選択を指示するモード信号MODを入力し、モード信号MODの値に応じて、ウェイの活性化制御形態、キャッシュヒット信号CHITの生成形態、及びキャッシュデータCDATの出力制御形態が相違される。
図9には上述したパリティチェック機能を選択的にオン/オフできるようにした場合におけるキャッシュエントリに対するフィル動作系に着目した構成が例示される。
図6とは、パリティチェック機能の選択/非選択を指示するモード信号MODを入力し、モード信号MODの値に応じて、履歴データの更新機能及び履歴データを用いた疑似LRUによるキャッシュフィル対象ウェイの選択機能が相違される。それら相違点について以下で説明するが、
図4及び
図6と同一機能を有する構成要素についてはそれと同一符号を付してその詳細な説明を省略する。
【0100】
図8において、モード信号MODの論理値1はパリティチェック機能選択、モード信号
MODの論理値0はパ
リティチェック機能の非選択を指示する。パリティデータPRTd
atの反転データ又は非反転データを受けるアンドゲートの一方の入力側に、オアゲート
(論理和ゲート)82を介してモード信号MODの反転信号が供給される。81はモード
信号MODを反転するインバータである。したがって、ウェイ#0〜#3の選択はMOD
=1のときは
図4と同様にパリティデータPRTdatの値に応じてその半分とされ、M
OD=
0のときはすべてのウェイ#0〜#3とされる。
【0101】
モード信号MODを受ける判別回路80は、MOD=1のとき
図4で説明した判別回路53,54及び選択回路58による機能と同じ機能によってキャッシュヒット信号CHIT及びキャッシュエラー信号41を生成する。モード信号MOD=0のときは、パリティデータPRGTdatを使用せず、夫々のタグウェイTagWAY#1〜TagWAY#3でインデックスされたキャッシュタグをタグアドレス情報TAGadrsと比較してキャッシュヒット信号CHITを生成する。この動作モードにおいてキャッシュエラー信号41はインアクティブレベルに固定される。
【0102】
LRUアレイ15Aは、MOD=1のときは
図6で説明した通りパリティデータPRTdatを併用する関係から履歴データは2ビットあればよいが、MOD=0のときは3ビット必要意になる。パリティデータPRTdatを用いないので、それを代用するビットとして履歴ビットLRU[2]は追加されなければならない。したがって、LRUアレイ15Aはインデックスアドレス毎に3ビットの履歴データLRU[2:1]の格納領域を必要とする。履歴ビットLRU[0]はウェイ#0とウェイ#1との間の優先度を示し、履歴ビットLRU[1]はウェイ#E2とウェイ#3との間の優先度を示し、履歴ビットLRU[2]はウェイ#0、#1とウェイ#2、#3との間の優先度を示す。MOD=1のときは2ビットの履歴データLRU[1:0]が有意とされ、MOD=0のときは3ビットの履歴データLRU[2:0]が有意とされる。
【0103】
これによれば、1ウェイ・1メモリブロックの構成を前提とするから、
図4及び
図6の構成に対して少ない回路変更によってパリティチェックの有無を選択可能な構成を得ることができる。パリティチェック機能と低消費電力を優先させたい場合にはMOD=1による第1モード、高いキャッシュヒット率を優先させたい場合にはMOD=0による第2モードを設定するという自由度を得ることができる。
【0104】
なお、説明の便宜上、リード動作系に関する構成及びのフィル動作系に関する構成は別々の図面に記載にされたが、キャッシュ制御回路10が、タグウェイTagWAY#0〜TagWAY#3及びデータウェイDataWAY#0〜#3を除いて
図8に示す構成及び
図9に示す構成を併せもつ。タグウェイTagWAY#0〜TagWAY#3及びデータウェイDataWAY#0〜#3へのそれぞれブロックイネーブル信号の供給方法は、
図4及び
図6の場合と同じであるので説明を省略する。
【0105】
≪5.複数ビットのパリティデータ≫
複数ビットのキャッシュメモリ3にパリティデータを用いる場合について説明する。
【0106】
図10には複数ビットのパリティデータを用いる構成を
図4のキャッシュエントリに対するリード動作系に着目した構成に適用した例が示される。
【0107】
図4の例ではパリティデータはアクセスアドレス情報ACCadrsの一部であるタグアドレス情報TAGadrsの全ビットに対する1ビットのパリティデータであり、論理値0のパリティデータは全ウェイの複数のメモリブロック16の半分の選択に用い、論理値1のパリティデータは全ウェイの複数のメモリブロック16の残りの半分の選択に用いた。これにより、アドレス比較のためのキャッシュタグの読み出しに要する電力消費をおおよそ半減することができる。
【0108】
これに対して
図10の例では、ウェイの数を8個、すなわち、8個のタグウェイTagWAY#0〜TagWA
Y#7と8個のデータウェイDataWAY#0〜DataWA
Y#7をそれぞれメモリブロック1
6で構成し、2ビットのパリティデータPRTdat[1:0]を生成してウェイの選択に用いる。パリティデータPRTdat「1:0」の第1ビット目(PRTdat[0])は、タグアドレス情報TAGadrsの下位10ビットに対するパリティビット、第2ビット目(PRTdat[1])は、タグアドレス情報TAGadrsの上位10ビットに対するパリティビットである。2ビットのパリティデータPRTdat[1:0]はデコーダ90で
デコードされ、そのデコード結果にしたがって複数のウェイの中から選択するウェイを決める。
図10では、PRTdat「1:0」=00でウェイ番号#0、#1のタグウェイとデータウェイのメモリブロック16を活性化する。PRTdat「1:0」=01でウェイ番号#2、#3のタグウェイとデータウェイのメモリブロック16を活性化する。PRTdat「1:0」=10でウェイ番号#4、#5のタグウェイとデータウェイのメモリブロック16を活性化する。PRTdat「1:0」=11でウェイ番号#6、#7のタグウェイとデータウェイのメモリブロック16を活性化する。すなわち、タグ比較のためのキャッシュリード系動作で活性化されるメモリブロックの数は全体の1/4に低減され、更なる低消費電力が実現される。
【0109】
活性化されたタグウェイTagWAY#0〜TagWA
Y#7でインデックスされたキャッシュタグは、パリティデータPRTdat[1:0]による活性化単位
で回路54,54,53A,54Aによりタグアドレス情報TAGadrsと比較され、
図4で説明したのと同様に比較結果55a,56a,55b,56b,55aA,56aA,55bA,56bAがパリティデータPRTdat[1:0]の値に応じてセレクタ58Aで選択されることにより、キャッシュヒット信号CHIT及びキャッシュエラー信号41が形成される。キャッシュヒットの場合にはヒットに係るキャッシュエントリのデータが操作される。
図10に例示されるリードアクセスに応答するキャッシュ動作の場合にはキャッシュヒットにされると、ヒットに係るデータウェイでの選択データが選択回路57a,57b、57aA,57bAを介して選択されてキャッシュデータCDATとして出力される。
【0110】
尚、パリティデータPRTdatのビット数は2ビットに限定されず必定に応じてタグアドレス情報に対する分割数を増やして3ビット以上にしてもよい。
【0111】
そのほかの構成は
図4と同じであるからその詳細な説明は省略する。キャッシュフィルの構成については図示を省略するが、
図6の構成を主体に2ビットのパリティデータPRTdat[1:0]と2ビットのLRUデータLRU[1:0]を用いて8個のウェイのメモリブロックからキャッシュフィルの対象ウェイを選択するようにすればよい。特に図示はしないが、2ビットのパリティデータPRTdat[1:0]を用いる場合も
図8及び
図9で説明したPBSのオン/オフ選択機能につても容易に適用可能である。
【0112】
≪6.複数ウェイ毎のメモリブロックに対する活性/非活性制御≫
次に、メモリブロック毎に複数個のウェイを格納してウェイの選択を行う場合について説明する。
図11にはメモリブロック毎に2個のウェイを格納するようにした場合におけるキャッシュエントリに対するリード動作系に着目した構成が例示される。
図12にはメモリブロック毎に2個のウェイを格納するようにした場合におけるキャッシュエントリに対するフィル動作系に着目した構成が例示される。
図4及び
図6との相違点はメモリブロックの数が半減され、それに応じて操作対象とするキャッシュエントリの選択制御形態とキャッシュタグに対する判別制御回路が相違される。それら相違点について以下で説明するが、
図4及び
図6と同一機能を有する構成要素についてはそれと同一符号を付してその詳細な説明を省略する。
【0113】
1個のメモリブロック16Aには2個のウェイが集約されて格納されるが、集約される2個のウェイはパリティデータPRTdatの相互に異なる値によって選択されるものとする。例えば
図4と同様にパリティデータPRTdatの論理値0はウェイ番号#0、#1のウェイ選択を意味し、パリティデータPRTdatの論理値1はウェイ番号#2、#3のウェイ選択を意味するとき、ウェイ番号#0と#2のウェイを同一のメモリブロックに格納し、ウェイ番号#1と#3のウェイを同一のメモリブロックに格納して、一つのメモリブロック内で複数のウェイが選択されないようにする。具体的には、タグウェイTagWAY#0とTagWAY#2を一組とし、タグウェイTagWAY#1とTagWAY#3を一組とし、データウェイDataWAY#0とDataWAY#2を一組とし、データウェイDataWAY#1とDataWAY#3を一組とし、各組を別々のメモリブロック16Aに格納する。
【0114】
これを実現するために1個のメモリブロック16Aが保有するエントリ数は
図4及び
図6の場合の256の2倍の512エントリとされる。それをインデックスするのに必定な8ビットのアドレス情報の内、下位ビットaddr[7:0]を、7ビットのインデックスアドレス情報INDadrs([1:4])とする。最上位ビットaddr[8]をパリティデータPRTdatとする。最上位ビットaddr[8]を決めるパリティデータPRTdatが、1個のメモリブロック16Aに集約される2個のウェイの何れを選択するかを示す選択ビットとしての意義を有することになる。4個のメモリブロック16Aのブロックイネーブル信号cena,cenbには例えばリードリクエスト信号RDreqを共通に用いることができる。この場合に、2個のメモリブロックから読み出されたキャッシュタグとタグアドレス情報TAGadrsとを比較して判別する回路100は
図4の判別回路53,54と選択回路58の機能を備えて構成されればよい。
【0115】
メモリブロック16Aでインデックスされたキャッシュタグ、キャッシュデータを出力するための増幅回路としてそれぞれのメモリブロック16Aが持つセンスアンプSAの数は、
図4のそれぞれのメモリブロック16が持つセンスアンプの数と等しければ十分である。要するに、
図11の構成において全部のメモリブロック16Aが有するセンスアンプの合計個数は
図4の構成において全部のメモリブロック16が有するセンスアンプの合計個数の大よそ半分になる。したがって、センスアンプで消費される待機電流の大きさも大よそ半分になる。
【0116】
図12に例示されるキャッシュフィル系では、キャッシュフィル用のウェイ選択回路71Aは、パリティデータPRTdat、LRU[1:0]及びバリッドビットVに基づき
図6で説明したウェイ選択回路71と同じ論理をもってキャッシュフィルを行うウェイを決定するが、出力選択信号101は、番号#0又は#2のウェイをフィル対象とするとき論理値0、番号#1又は#3のウェイをフィル対象とするとき論理値1とする。キャッシュフィル要求信号Freqの論理値1によってキャッシュフィル動作が指示されているとき、出力選択信号101はインバータ102とアンドゲート103を介して、相補レベルのブロックイネーブル信号cenaとcenbにされる。ブロックイネーブル信号cenaとは番号#0又は#2のタグウェイとデータウェイに割り当てられた2個のメモリブロック16Aのブロックイネーブル信号であり、ブロックイネーブル信号cenbは番号#1又は#3のタグウェイとデータウェイに割り当てられた2個のメモリブロック16Aのブロックイネーブル信号である。各メモリブロック16Aにおいて何れのウェイを選ぶかは前述同様に1ビットのパリティデータPRTdatがメモリブロック16Aのアドレスビットa[8]として用いられることによって決まる。これにより疑似LRUによるキャッシュフィルのウェイ選択結果は
図6と全く同じとされる。LRUアレイ15に対する更新情報73による履歴データの更新、履歴データの意味など、その他の構成は
図6と同じであるからその詳細な説明は省略する。
【0117】
図11及び
図12の構成によれば、動作電流に比べてセンスアンプなどの待機電流を問題視する場合には、
図4及び
図6の構成よりも低消費電力に寄与できる場合がある。すなわち、1個のメモリブロック16Aには同時に選択されることの無い複数のタグウェイが集約されるから、1個のメモリブロック16Aが備えるセンスアンプやバッファアンプの数は1個のメモリブロックに1個のタグウェイを備えるものと凡そ等しくなり、全メモリブロックの数が少なくなる分だけ、非活性状態におけるサブスレッショルドリーク電流のようなリーク電流が少なくなり、この点で更なる低消費電力を実現できる場合がある。
【0118】
なお、説明の便宜上、リード動作系に関する構成及びのフィル動作系に関する構成は別々の図面に記載にされたが、キャッシュ制御回路10が、タグウェイTagWAY#0〜TagWAY#3及びデータウェイDataWAY#0〜#3を除いて
図11に示す構成及び
図12に示す構成を併せもつ。タグウェイTagWAY#0〜TagWAY#3及びデータウェイDataWAY#0〜#3へのそれぞれブロックイネーブル信号の供給方法は、
図4及び
図6の場合と同じであるので説明を省略する。
【0119】
また、メモリブロック毎に複数個のウェイを格納してウェイの選択を行う
図11及び
図12の場合にも、特に図示はしないが、
図10で説明したようにタグアドレス情報の複数分割部分毎のパリティビットを用いる構成にも適用可能であることは言うまでもない。パリティデータPRTdatのビット数も2ビットに限定されず3ビット以上であってもよい。
【0120】
≪7.タグアドレス情報のバリエーション≫
アドレス情報が物理アドレスであればタグアドレス情報もその物理アドレス情報の一部の情報とされる。アドレス情報が論理アドレスのときもタグアドレス情報はその論理アドレス情報の一部の情報とされてよいことは言うまでもないが、論理アドレス場合には論理アドレスを物理アドレスに変換するときに必要となる情報(α)が含まれる場合もあり、そのときは、タグアドレス情報として情報αを含めて考えることが得策であり、当然、情報αも含めたタグアドレス情報に対してパリティデータを生成する。例えばマルチスレッドで処理を行う場合には夫々のスレッドの処理を行うバーチャルCPU番号(Virtual CPU ID)が上記情報αとされる。
図13にはその場合のタグエントリの構成が例示される。
図13においてタグエントリは、当該キャッシュエントリの有効性を示すバリッドビットV、当該キャッシュエントリのリプレース禁止か否かを示すロックビットL、バーチャルCPU番号を示すVirtual CPU ID、論理アドレスキャッシュタグを示すLogical Address[31:12]を有する。
【0121】
図14には
図13のタグエントリを用いる場合におけるキャッシュエントリに対するリード動作系に着目した構成が例示される。タグエントリのVirtual CPU ID及びLogical Address[31:12]が図示するタグウェイに格納され、バリッドビットV及びロックビットLは図示しない別の記憶装置(フリップフロップなど)に格納される。
図4との相違点は、パリティ生成回路30BはLogical Address[31:12]とVirtual CPU ID[3:0]を用いてパリティデータPRTdatを生成し、また、判別回路53B,54BはLogical Address[31:12]とVirtual CPU ID[3:0]をタグアドレス情報TAGadrsとし、インデックスされたキャッシュタグとの比較対象とすることである
。図15には
図13のタグエントリを用いる場合におけるキャッシュエントリに対するフィル動作系に着目した構成が例示される。
図6との相違点はキャッシュタグとして書き込むエントリ情報はタグアドレス情報TAGadrsに対応するVirtual CPU ID[3:0]及びLogical Address[31:12]になることである。
【0122】
その他の構成については
図4及び
図6の構成と同じであるからその詳細な説明は省略する。また、TAGアドレス情報及びキャッシュタグにVirtual CPU IDを含める場合にも、
図8及び
図9で説明したPBSのオン/オフ選択機能
、図10で説明したパリティデータの複数ビット化、
図11及び
図12で説明した複数ウェイを同じメモリブロックへの集約、の夫々の構成に適用することが可能であることは言うまでもなく、その詳細については説明を省略する。
【0123】
なお、説明の便宜上、リード動作系に関する構成及びのフィル動作系に関する構成は別々の図面に記載にされたが、キャッシュ制御回路10が、タグウェイTagWAY#0〜TagWAY#3及びデータウェイDataWAY#0〜#3を除いて
図13に示す構成及び
図14に示す構成を併せもつ。タグウェイTagWAY#0〜TagWAY#3及びデータウェイDataWAY#0〜#3へのそれぞれブロックイネーブル信号の供給方法は、
図4及び
図6の場合と同じであるので説明を省略する。
【0124】
≪8.メモリブロック≫
図16にはメモリブロック16,16A,15,15Aの具体例が示される。メモリブロック16,16A,15,15Aは例えばスタティックランダムアクセスメモリ(SRAM)として構成され、メモリアレイ(MCA)110には複数のスタティック型のメモリセルMC(図には代表的に1個が図示される)がマトリクス配置される。メモリセルの選択端子は代表的に示されたワード線WLに接続され、メモリセルのデータ入出力端子は代表的示された相補ビット線BLt、BLbに接続される。
【0125】
ワード線WLはワードドライバ(WDRV)111で駆動される。ロウアドレスデコーダ(RDEC)112はロウアドレス信号RAddをデコードしてワード線選択信号を生成し、生成されたワード線選択信号の選択レベルによってワードドライバ(WDRV)111がワード線WLを駆動する。
【0126】
複数の相補ビット線BLt、BLbはカラムスイッチ回路(CSW)113で選択されてセンスアンプ(SA)114又は書き込みアンプ(WA)115に導通される。カラムアドレスデコーダ(CDEC)116はカラムアドレス信号CAddをデコードして相補ビット線選択信号を生成し、生成された相補ビット線選択信号を受けるカラムスイッチ回路113が相補ビット線BLt、BLbを選択する。
【0127】
タイミングコントローラ(TCNT)117は外部からブロックイネーブル信号CEN、ライトイネーブル信号WEN、及びアドレス信号Addを受ける。ブロックイネーブル信号CENは上述のブロックイネーブル信号cenに対応される。タイミングコントローラ117はブロックイネーブル信号CENが選択レベルにされることによって活性化される。すなわち、外部から入力されるアドレス信号ADDを受けてロウアドレス信号RAddをロウアドレスデコーダ112に、カラムアドレス信号CAddをカラムアドレスデコーダ116に供給するとともに、アドレスデコーダ111,116による選択動作を可能とする。更に、ライトイネーブル信号WENによる読み出し動作の指示に応答してセンスアンプ114を活性化し、ライトイネーブル信号WENによる書き込み動作の指示に応答してライトアンプ115を活性化する。
【0128】
活性化されたセンスアンプ114はカラムスイッチ113を介して接続される相補ビット線BLt、BLbにメモリセルMCから転送される微弱な読出しデータを増幅し、データ信号Doutを生成する。活性化されたライトアンプ115は入力データDinをカラムスイッチ113を介して接続される相補ビット線BLt、BLbへ転送し、ワード線WLで選択されたメモリセルMCに書き込む。
【0129】
出力データDout及び入力データDinのビット数はタグウェイの場合にはタグエントリのビット数に応ずるビット数とされ、データウェイの場合にはデータエントリのビット数に応ずるビット数とされる。
【0130】
図17にはタグウェイの一例としてメモリブロック16で構成されるTagWAY#0のメモリセルアレイ(MCA)110に記憶されるタグエントリの配置が例示される。タグエントリの数は全部で256個、メモリセルアレイの一行あたり4個のタグエントリが格納され行数は64行となる。一つのタグエントリはMビットからなり(Mは任意の整数)、
図17では20ビットのタグアドレス情報 [31:12]を例示する。すなわち
図17では
図4、6,8,9,14,15のそれぞれタグウェイが模式的に表わされる。
【0131】
この例では、8ビットのアドレス信号Add(インデックスアドレス情報[11:4])により256個のうちの一つのタグエントリが選択される。具体的には、アドレス信号Ad
dの上位6ビット(ロウアドレス)でワード線上の4個のタグエントリを選択し、下位2ビット(カラムアドレス)によりカラムスイッチで4個のタグエントリの内の一つを選択し、選択された一つのタグエントリの相補ビット線BLt、BLbがセンスアンプ114と電気的に結合する。
【0132】
特に図示はしないが、メモリブロック16で構成されるその他のタグウェイTagWA
Y#1〜TagWAY#3も同様である。
【0133】
図18にはデータウェイの一例としてメモリブロック16で構成されるDataWAY#0のメモリセルアレイ(MCA)110に記憶されるデータエントリの配置が例示される。データエントリの数は全部で256個、メモリセルアレイの一行あたり4個のデータエントリが格納され行数は64行となる。一つのデータエントリ、すなわちデータウェイの1ラインはLビットからなる。Lは任意の整数であり、タグウェイのエントリサイズより大きい。
図18では
図4,
図6,
図8,
図9,14,15のそれぞれデータウェイが模式的に表されており、エントリサイズは16バイト(L=128)とされる。この例では、8ビットのアドレス信号Add(インデックスアドレス情報[11:4])により256個のうちの一つのデータエントリが選択される。具体的には、アドレス信号Ad
dの上位6ビット(ロウアドレス)でワード線上の4個のデータエントリを選択し、下位2ビット(カラムアドレス)によりカラムスイッチで4個のデータエントリの内の一つを選択し、選択された一つのデータエントリの相補ビット線BLt、BLbがセンスアンプ114と電気的に結合する。
【0134】
特に図示はしないが、メモリブロック16で構成されるその他のデータウェイDataWA
Y#1〜DataWAY#3も同様である。
【0135】
図19にはタグウェイの別の例としてメモリブロック16Aで構成されるTagWAY#0及びTagWAY#2のメモリセルアレイ(MCA)110に記憶されるタグエントリの配置が例示される。タグエントリの数は全部で512個、メモリセルアレイの一行あたり4個のタグエントリが格納され行数は128行となる。一つのタグエントリはMビットからなり(Mは任意の整数)、
図19では20ビットのタグアドレス情報 [31:12]を例示する。すなわち
図19では
図11、12のそれぞれタグウェイが模式的に表わされる。
【0136】
この例では、8ビットのアドレス信号Add(インデックスアドレス情報[11:4])と1ビットのパリティデータPRTdat(addr[8])により512個のうちの一つのタグエントリが選択される。
【0137】
特に図示はしないが、メモリブロック16Aで構成されるその他のタグウェイTagWA
Y#1及びTagWAY#3も同様である。
【0138】
図20にはデータウェイの一例としてメモリブロック16で構成されるDataWAY#0及びDataWAY#2のメモリセルアレイ(MCA)110に記憶されるデータエントリの配置が例示される。データエントリの数は全部で512個、メモリセルアレイの一行あたり4個のデータエントリが格納され行数は128行となる。一つのデータエントリ、すなわちデータウェイの1ラインはLビットからなる。Lは任意の整数であり、タグウェイのエントリサイズより大きい。
図20では
図11,12のそれぞれデータウェイが模式的に表されており、エントリサイズは16バイト(L=128)とされる。
【0139】
この例では、8ビットのアドレス信号Add(インデックスアドレス情報[11:4])と1ビットのパリティデータPRTdat(addr[8])により512個のうちの一つのタグエントリが選択される。
【0140】
特に図示はしないが、メモリブロック16Aで構成されるその他のデータウェイDataWAY#1及びDataWAY#3も同様である。
【0141】
図21にはLRUアレイ15,15Aのメモリセルアレイ(MCA)110に記憶されるLRUエントリの配置が例示される。LRUエントリの数は全部で256個、メモリセルアレイの一行あたり4個のLRUエントリが格納され行数は64行となる。一つのLRUエントリは、2ビット又は3ビットからなる。3ビット必要になるには
図9の場合である。
【0142】
この例では、8ビットのアドレス信号Add(インデックスアドレス情報[11:4])により256個のうちの一つのLRUエントリが選択される。具体的には、アドレス信号Ad
dの上位6ビット(ロウアドレス)でワード線上の4個のLRUエントリを選択し、下位2ビット(カラムアドレス)によりカラムスイッチで4個のLRUエントリの内の一つを選択し、選択された一つのLRUエントリの相補ビット線BLt、BLbがセンスアンプ114と電気的に結合する。
【0143】
≪8.タグウェイに対するインデックス動作のまとめ≫
図22にはタグウェイに対するインデックス動作形態の主な態様をまとめとして示す。4個のタグウェイTagWAY#0〜TagWAY#3に対する動作を一例とする。インデックス動作でウェイ単位のメモリブロック(BLCK)16のすべてを活性化する形態では、4個のメモリブロック16を同時アクセスするからそれによる消費電力は以下の動作形態に比べて最も大きくなる。
【0144】
図4に代表されるようにパリティデータPRTdatの値に応じてタグウェイ単位にメモリブロック16を分割選択する場合には、タグウェイTagWAY#0〜TagWAY#3の格納に用いるメモリブロック16の数は上記と同じ4個であるが、キャッシュヒット又はキャッシュミスを検出するときに動作させるメモリブロック16の数は2個になる。パリティデータPRTdat=0のときはタグウェイTagWAY#0,TagWAY#1が同時にアクセスされ、パリティデータPRTdat=1のときはタグウェイTagWAY#2,TagWAY#3が同時にアクセスされる。したがって、そのときの電力消費は上記に比べておおよそ半減する。
【0145】
図11に代表されるようにタグウェイを2個ずつ集約してメモリブロック16Aに格納して、必要なタグウェイを内部で選択する場合、メモリブロック16Aの1個あたりの記憶容量は上記メモリブロック16の2倍とされる。1個のメモリブロック16Aに割り当てられるタグウェイはパリティデータPRTdatの値に応じて同時に選択されないタグウェイ同士とされる。即ち、タグウェイTagWAY#0とTagWAY#1が一方のペアとされ、タグウェイTagWAY#2とTagWAY#3が他方のペアとされる。パリティデータPRTdat=0のときはタグウェイTagWAY#0とTagWAY#2が格納される2個のメモリブロック16Aを同時アクセスして一方のメモリブロックから所要のタグウェイを選択する。パリティデータPRTdat=1のときはタグウェイTagWAY#1とTagWAY#3が格納される2個のメモリブロック16Aを同時アクセスして一方のメモリブロックから所要のタグウェイを選択する。動作させるメモリブロックは2つであり、各メモリブロック16Aの記憶容量はメモリブロック16の2倍であるから、ウェイ単位のメモリブロックを分割選択する選択形態とほぼ同程度の消費電力を見込んでおり、ウェイ単位のメモリブロックを全選択する選択形態よりも全体的な電力消費は少ないと考えられる。消費電力はセンスアンプ動作と、特にサブスレッショルドリーク電流のような待機電流電に大きく影響する。動作するセンスアンプの数は、ウェイから読み出すキャッシュタグのビット数が同じであれば必要なセンスアンプの数はメモリブロック16と等しくて済むからである。しかも、カラム系周辺回路の回路規模もメモリブロック16とほぼ同じで済み、回路規模も小さくなり、この点でも低消費電力が実現される。
【0146】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【0147】
例えばタグウェイとデータウェイは並列してインデックスされる場合を説明したが、それに限定されない。選択データはパリティデータに限定されず、パリティチェック機能が不要の場合にはインデックスアドレス情報の特定ビットを用いてもよい。キャッシュエントリのデータ構成、タグエントリのデータ構成、それらのビット数などについては適宜変更可能である。また、タグアドレス情報は
図13の仮想CPU番号と論理アドレスのペアに限定されず、アドレス空間番号(ASID)と論理アドレスとのペアなどのように、CPUの仮想アドレス空間行構成やデータ処理スレッドの構成に応じて適宜変更可能である。マイクロコンピュータはシングルCPUコアに限定されず、マルチCPUコアにも適用することができ、その場合でもCPUコア毎にマルチスレッドに応じた仮想CPU番号を用いてインデックスアドレス情報を構成してもよい。キャッシュメモリは命令キャッシュ、データキャッシュ、ユニファイドキャッシュの何れであってもよい、また、一次キャッシュであっても、二次キャッシュであっても適用可能である。
【0148】
また、タグアドレスTAGadrsについてパリティデータを生成し、そのパリティデータに基づき複数のタグウェイから一部の1以上のタグウェイ及びその対応するデータウェイを選択し、それ以外のタグウェイ及びその対応するデータウェイは非選択としたが、タグアドレスTAGadrsから任意の方法でタグウェイを選択するデータを生成しても低消費電力を実現する。例えば単純な方法としてはタグアドレスTAGadrs全20ビットのうちいずれか1ビットをウェイの選択信号に用いることができる。