(57)【要約】【課題】  チップ面積の増大を可及的に防ぎつつ、信頼性を向上させたキャッシュメモリおよびこれを備えたマイクロプロセッサを提供する。【解決手段】  本発明の一態様としてのキャッシュメモリは、複数のキャッシュラインを有するメモリセルと、データ比較バッファと、書き込み要求を受けた場合は、前記書き込み要求に基づくデータを、該当するキャッシュライン及び前記データ比較バッファへ書き込む書き込み回路と、前記書き込み回路によって前記キャッシュライン及び前記データ比較バッファへ書き込まれたデータを読み出し、これらのデータを比較して、両者に相違が存在するか否かを判断する比較回路と、前記相違が存在する場合は、前記キャッシュラインに書き込まれたデータを無効に設定する設定回路と、を備える。【選択図】  図１
2006343851.tif 000002
【特許請求の範囲】
【請求項１】
複数のキャッシュラインを有するメモリセルと、
データ比較バッファと、
書き込み要求を受けた場合は、前記書き込み要求に基づくデータを、該当するキャッシュライン及び前記データ比較バッファへ書き込む書き込み回路と、
前記書き込み回路によって前記キャッシュライン及び前記データ比較バッファへ書き込まれたデータを読み出し、これらのデータを比較して、両者に相違が存在するか否かを判断する比較回路と、
前記相違が存在する場合は、前記キャッシュラインに書き込まれたデータを無効に設定する設定回路と、
を備えたキャッシュメモリ。
【請求項２】
請求項１に記載のキャッシュメモリと、性能重視モード及び信頼性重視モードのいずれかのモードを選択する値を格納する制御レジスタとを備えたマイクロプロセッサであって、
前記制御レジスタに前記性能重視モードを選択する値が格納されている場合は、
前記書き込み回路は、前記書き込み要求を受けた場合は、前記該当するキャッシュラインへ前記データを書き込み、
一方、前記制御レジスタに前記信頼性重視モードを選択する値が格納されている場合は、
前記書き込み回路は、前記書き込み要求を受けた場合は、前記該当するキャッシュライン及び前記データ比較バッファへ前記データを書き込み、
前記比較回路は前記キャッシュライン及び前記データ比較バッファからそれぞれデータを読み出し、これらのデータを比較して、両者に相違が存在するか否かを判断し、
前記設定回路は、前記相違が存在する場合は前記キャッシュラインに書き込まれたデータを無効に設定する、
ことを特徴とするマイクロプロセッサ。
【請求項３】
複数のキャッシュラインを有するメモリセルと、
データ比較バッファと、
書き込み要求を受けた場合は、前記書き込み要求に基づくデータを、前記書き込み要求に対応するインデックスのキャッシュライン及び前記データ比較バッファへ書き込む書き込み回路と、
前記書き込み回路によって前記キャッシュライン及び前記データ比較バッファへ書き込まれたデータをそれぞれ第１データ及び第２データとして読み出し、これら第１及び第２データを比較して、両者に相違が存在するか否かを判断する比較回路と、
前記相違が存在する場合は、エラー設定回路によって、前記相違するビット位置と前記相違するビット位置における第２データの値とを、エラー訂正情報として、前記第１データを読み出したキャッシュラインのインデックスと関連づけて登録される不良ビット管理テーブルと、
読み出し要求を受けた場合は、前記読み出し要求に対応するインデックスのキャッシュラインからデータを読み出す読み出し回路と、
前記読み出し要求に対応するインデックスが前記不良ビット管理テーブルに登録されているか否かを検査する検査部と、
前記インデックスが登録されている場合は、前記インデックスに対応するエラー訂正情報を用いて前記読み出し回路によって読み出されたデータを訂正する訂正回路と、
を備えたキャッシュメモリ。
【請求項４】
請求項３に記載のキャッシュメモリと、性能重視モード及び信頼性重視モードのいずれかのモードを選択する値を格納する制御レジスタとを備えたマイクロプロセッサであって、
前記制御レジスタに前記性能重視モードを選択する値が格納されている場合は、
前記書き込み回路は、前記書き込み要求を受けた場合は、前記書き込み要求に対応するインデックスのキャッシュラインへ前記データを書き込み、
前記読み出し回路は、前記読み出し要求を受けた場合は、前記読み出し要求に対応するインデックスのキャッシュラインからデータを読み出し、
一方、前記制御レジスタに前記信頼性重視モードを選択する値が格納されている場合は、
前記書き込み回路は、前記書き込み要求を受けた場合は、前記書き込み要求に対応するインデックスのキャッシュライン及び前記データ比較バッファへ前記データを書き込み、
前記比較回路は、前記キャッシュライン及び前記データ比較バッファから前記第１及び第２データを読み出し、これら第１及び第２データを比較して、両者に相違が存在するか否かを判断し、
前記相違が存在する場合は、前記エラー設定回路は前記不良ビット管理テーブルに、前記エラー訂正情報を、前記キャッシュラインのインデックスと関連づけて登録し、
前記読み出し要求を受けた場合は、前記キャッシュメモリにおける前記読み出し回路は、前記読み出し要求に対応するインデックスのキャッシュラインからデータを読み出し、
前記検査部は、前記読み出し要求に対応するインデックスが前記不良ビット管理テーブルに登録されているか否かを検査し、
前記訂正回路は、前記インデックスが登録されている場合は、前記インデックスに対応するエラー訂正情報を用いて、前記読み出し回路によって読み出されたデータを訂正する、
ことを特徴とするマイクロプロセッサ。
【請求項５】
キャッシュメモリと、前記キャッシュメモリへアクセスする演算回路と、不揮発性メモリとを備えたマイクロプロセッサであって、
前記キャッシュメモリは、
複数のキャッシュラインを有するメモリセルと、
データ比較バッファと、
前記演算回路から書き込み要求を受けた場合は、前記書き込み要求に基づくデータを、前記書き込み要求に対応するインデックスのキャッシュライン及び前記データ比較バッファへ書き込む書き込み回路と、
前記書き込み回路によって前記キャッシュライン及び前記データ比較バッファへ書き込まれたデータをそれぞれ第１データ及び第２データとして読み出し、これら第１及び第２データを比較して、両者に相違が存在するか否かを判断する比較回路と、
前記相違が存在する場合は、前記相違するビット位置と前記相違するビット位置における第２データの値とを、エラー訂正情報として、前記第１データを読み出したキャッシュラインのインデックスと関連づけて前記不揮発性メモリの不良ビット管理テーブルに登録するエラー設定回路と、
前記演算回路から読み出し要求を受けた場合は、前記読み出し要求に対応するインデックスのキャッシュラインからデータを読み出す読み出し回路と、
前記読み出し要求に対応するインデックスが前記不揮発性メモリの前記不良ビット管理テーブルに登録されているか否かを検査する検査部と、
前記インデックスが登録されている場合は、前記インデックスに対応するエラー訂正情報を用いて、前記読み出し回路によって読み出されたデータを訂正する訂正回路と、
を備えたマイクロプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャッシュメモリおよびマイクロプロセッサに関する。
【背景技術】
【０００２】
近年における動作周波数の高速化、組込みメモリ容量の増大およびプロセスの微細化などにより、ＬＳＩテスタによる内蔵キャッシュメモリの故障検出では完全にスクリーニングすることが厳しくなってきている。万一、キャッシュメモリに不良ビットを持ったマイクロプロセッサが実システム上で稼動した場合、ハードウェア起因によるソフトウェアの異常動作でシステムダウンが発生することも予想される。そこで、このような問題を防ぐべく、近年のキャッシュメモリの中にはエラーを検出または訂正する機能を備えているものもある。
【０００３】
以下、従来におけるキャッシュメモリのエラー検出または訂正の技術についてその一例を説明する。
【０００４】
キャッシュメモリへのデータ書き込みは、まず演算回路（ＣＰＵ）によってアドレスが指定され、アドレスセレクタによってキャッシュメモリのラインが一意に決定される。キャッシュメモリは、タグ部、制御部、データ部および冗長部からなる。
【０００５】
キャッシュメモリの決定されたラインに対し、タグ部へはアドレスを、制御部へはデータ有効のフラグを、データ部へは外部メモリのデータを書き込む。この際、その書き込むデータに対してパリティ計算またはＥＣＣ計算を行い、当該ラインの冗長部にその計算結果を書き込む。エラーを検出する機能のみを持つキャッシュメモリであればこの冗長部にパリティビットの１ビット（または１バイト毎にパリティを１ビット持つ構成も多い）を、またエラーを訂正する機能を持つキャッシュメモリであれば冗長部に複数のビットからなるＥＣＣデータ  （一般的には計算方法によるが、２ｎビットのデータに対し２ｎビットまたはｎ＋２ビットのＥＣＣデータが必要であり、この場合１ビットのエラーは訂正が可能、２ビットエラーは検出までが可能）をライン毎に持つ。
【０００６】
キャッシュメモリからのデータ読み出しは、書き込み時と同様に、まず演算回路によってアドレスが指定され、アドレスセレクタによってキャッシュメモリのラインが一意に決定される。
【０００７】
その決定されたラインにおけるタグ部、制御部およびデータ部からそれぞれデータを取り出し、タグ部からのデータと演算回路によって指定されたアドレスとに基づいてタグ比較器でキャッシュヒットの判定を行い、制御部からのデータに基づき制御比較器で当該ラインの有効または無効の判定を行う。
【０００８】
キャッシュヒット且つ有効の判定の場合は、データ部からのデータをデータ比較器において取り出し、取り出されたデータを用いて、パリティ／ＥＣＣデータ演算回路で冗長データを算出する。一方、上述のキャッシュラインにおける冗長部からもデータが取り出され、冗長部からのデータと、パリティ／ＥＣＣデータ演算回路によって算出された冗長データとを冗長データ比較回路で比較することで、データ比較器によって取り出されたデータに誤りがあるか否かを確認する。
【０００９】
誤りがあり且つ誤りを訂正可能な場合は、データ訂正回路でデータを訂正して出力し、誤りがあり且つ訂正不能な場合はデータ訂正回路からキャッシュミス信号を出力する。
【００１０】
上述のタグ比較器においてミスヒットの判定が行われた場合または制御比較器で無効の判定が行われた場合も同様にキャッシュミス信号を出力する。
【００１１】
上述の通り、既存のエラー検出およびエラー訂正技術では、キャッシュメモリ上のライン毎にパリティビットやＥＣＣデータなどの冗長データを持つため、データ量が多くなり、マイクロプロセッサのチップ面積が増大する問題があった。また、エラー訂正においても一般的にＥＣＣデータはキャッシュライン単位で持つため、エラー訂正できるビット数には限りがある。
【特許文献１】特開平０７−７３１０６公報
【発明の開示】
【発明が解決しようとする課題】
【００１２】
本発明は、チップ面積の増大を可及的に防ぎつつ、信頼性を向上させたキャッシュメモリおよびこれを備えたマイクロプロセッサを提供する。
【課題を解決するための手段】
【００１３】
本発明の第１の態様としてのキャッシュメモリは、複数のキャッシュラインを有するメモリセルと、データ比較バッファと、書き込み要求を受けた場合は、前記書き込み要求に基づくデータを、該当するキャッシュライン及び前記データ比較バッファへ書き込む書き込み回路と、前記書き込み回路によって前記キャッシュライン及び前記データ比較バッファへ書き込まれたデータを読み出し、これらのデータを比較して、両者に相違が存在するか否かを判断する比較回路と、前記相違が存在する場合は、前記キャッシュラインに書き込まれたデータを無効に設定する設定回路と、を備える。
【００１４】
本発明の一態様としてのマイクロプロセッサは、第１の態様のキャッシュメモリと、性能重視モード及び信頼性重視モードのいずれかのモードを選択する値を格納する制御レジスタとを備えたマイクロプロセッサであって、前記制御レジスタに前記性能重視モードを選択する値が格納されている場合は、前記書き込み回路は、前記書き込み要求を受けた場合は、前記該当するキャッシュラインへ前記データを書き込み、一方、前記制御レジスタに前記信頼性重視モードを選択する値が格納されている場合は、前記書き込み回路は、前記書き込み要求を受けた場合は、前記該当するキャッシュライン及び前記データ比較バッファへ前記データを書き込み、前記比較回路は前記キャッシュライン及び前記データ比較バッファからそれぞれデータを読み出し、これらのデータを比較して、両者に相違が存在するか否かを判断し、前記設定回路は、前記相違が存在する場合は前記キャッシュラインに書き込まれたデータを無効に設定する、ことを特徴とする。
【００１５】
本発明の第２の態様としてのキャッシュメモリは、複数のキャッシュラインを有するメモリセルと、データ比較バッファと、書き込み要求を受けた場合は、前記書き込み要求に基づくデータを、前記書き込み要求に対応するインデックスのキャッシュライン及び前記データ比較バッファへ書き込む書き込み回路と、前記書き込み回路によって前記キャッシュライン及び前記データ比較バッファへ書き込まれたデータをそれぞれ第１データ及び第２データとして読み出し、これら第１及び第２データを比較して、両者に相違が存在するか否かを判断する比較回路と、前記相違が存在する場合は、前記エラー設定回路によって、前記相違するビット位置と前記相違するビット位置における第２データの値とを、エラー訂正情報として、前記第１データを読み出したキャッシュラインのインデックスと関連づけて登録される不良ビット管理テーブルと、読み出し要求を受けた場合は、前記読み出し要求に対応するインデックスのキャッシュラインからデータを読み出す読み出し回路と、前記読み出し要求に対応するインデックスが前記不良ビット管理テーブルに登録されているか否かを検査する検査部と、前記インデックスが登録されている場合は、前記インデックスに対応するエラー訂正情報を用いて前記読み出し回路によって読み出されたデータを訂正する訂正回路と、を備える。
【００１６】
本発明の一態様としてのマイクロプロセッサは、第２の態様のキャッシュメモリと、性能重視モード及び信頼性重視モードのいずれかのモードを選択する値を格納する制御レジスタとを備えたマイクロプロセッサであって、前記制御レジスタに前記性能重視モードを選択する値が格納されている場合は、前記書き込み回路は、前記書き込み要求を受けた場合は、前記書き込み要求に対応するインデックスのキャッシュラインへ前記データを書き込み、前記読み出し回路は、前記読み出し要求を受けた場合は、前記読み出し要求に対応するインデックスのキャッシュラインからデータを読み出し、一方、前記制御レジスタに前記信頼性重視モードを選択する値が格納されている場合は、前記書き込み回路は、前記書き込み要求を受けた場合は、前記書き込み要求に対応するインデックスのキャッシュライン及び前記データ比較バッファへ前記データを書き込み、前記比較回路は、前記キャッシュライン及び前記データ比較バッファから前記第１及び第２データを読み出し、これら第１及び第２データを比較して、両者に相違が存在するか否かを判断し、前記相違が存在する場合は、前記エラー設定回路は、前記不良ビット管理テーブルに前記エラー訂正情報を、前記キャッシュラインのインデックスと関連づけて登録し、前記読み出し要求を受けた場合は、前記キャッシュメモリにおける前記読み出し回路は、前記読み出し要求に対応するインデックスのキャッシュラインからデータを読み出し、前記検査部は、前記読み出し要求に対応するインデックスが前記不良ビット管理テーブルに登録されているか否かを検査し、前記訂正回路は、前記インデックスが登録されている場合は、前記インデックスに対応するエラー訂正情報を用いて、前記読み出し回路によって読み出されたデータを訂正する、ことを特徴とする。
【００１７】
本発明の一態様としてのマイクロプロセッサは、キャッシュメモリと、前記キャッシュメモリへアクセスする演算回路と、不揮発性メモリとを備えたマイクロプロセッサであって、前記キャッシュメモリは、複数のキャッシュラインを有するメモリセルと、データ比較バッファと、前記演算回路から書き込み要求を受けた場合は、前記書き込み要求に基づくデータを、前記書き込み要求に対応するインデックスのキャッシュライン及び前記データ比較バッファへ書き込む書き込み回路と、前記書き込み回路によって前記キャッシュライン及び前記データ比較バッファへ書き込まれたデータをそれぞれ第１データ及び第２データとして読み出し、これら第１及び第２データを比較して、両者に相違が存在するか否かを判断する比較回路と、前記相違が存在する場合は、前記相違するビット位置と前記相違するビット位置における第２データの値とを、エラー訂正情報として、前記第１データを読み出したキャッシュラインのインデックスと関連づけて前記不揮発性メモリの不良ビット管理テーブルに登録するエラー設定回路と、前記演算回路から読み出し要求を受けた場合は、前記読み出し要求に対応するインデックスのキャッシュラインからデータを読み出す読み出し回路と、前記読み出し要求に対応するインデックスが前記不揮発性メモリの前記不良ビット管理テーブルに登録されているか否かを検査する検査部と、前記インデックスが登録されている場合は、前記インデックスに対応するエラー訂正情報を用いて、前記読み出し回路によって読み出されたデータを訂正する訂正回路と、を備える。
【発明の効果】
【００１８】
本発明により、チップ面積の増大を可及的に防ぎつつ、信頼性を向上させたキャッシュメモリおよびこれを備えたマイクロプロセッサを提供できる。
【発明を実施するための最良の形態】
【００１９】
（第１の実施の形態）
図１は、本発明の第１の実施の形態としてのキャッシュメモリの構成を概念的に示すブロック図である。このキャッシュメモリは、例えばマイクロプロセッサの一部として組み込まれる（図２参照）。
【００２０】
このキャッシュメモリは、キャッシュ制御方式として、ダイレクトマップ方式を採用している。但し、本発明は、セットアソシアティブ方式にも適用可能であり、セットアソシアティブ方式を用いる場合は、点線の大枠で囲んだ箇所１１２をウェイ数分、設ければよい。
【００２１】
このキャッシュメモリは、メモリセル１０５に加え、メモリセル１０５の１ラインと同じビット数のデータを格納するデータ比較バッファ１０３を有する。なお、このデータ比較バッファ１０３には、データ比較バッファ１０３における不良ビットの位置情報または不良ビットの位置情報と代替ビットを有する冗長部１０３ａが設けられる。この不良ビットの位置情報は、ＥＣＣ回路１１０によって計算される。
【００２２】
より詳細には、マイクロプロセッサの起動時に、テストデータをデータ比較バッファ１０３に書き込み、同時にＥＣＣ回路１１０によって第１のＥＣＣデータを算出し、データ比較バッファの冗長部１０３ａに書き込む。そして、ＥＣＣ回路１１０はデータ比較バッファ１０３からこのテストデータを読み出し、第２のＥＣＣデータを算出して、第１のＥＣＣデータと比較する。相違がある場合は、データ比較バッファ１０３およびその冗長部１０３ａのデータに基づき不良ビットの位置情報を求める。ＥＣＣ回路１１０は、求めた不良ビットの位置情報を冗長部１０３ａに書き込む。また、不良ビットに対応する代替ビットを冗長部に設けた場合は、不良ビットの位置情報毎に代替ビットの１ビットを設ける。
【００２３】
なお、ここで算出した不良ビット数全ての位置情報を冗長部１０３ａに書き込めない場合は、動作モード（後述）を性能重視モードに切替えて実行する。また、システムによってはここで不良ビットが存在すると判定した場合、その位置情報を冗長部１０３ａに書き込めるか否かに関らず、即ち１ビットでも不良ビットが存在する場合は動作モード（後述）を性能重視モードに切替えて実行してもよい。
【００２４】
本キャッシュメモリは、２つの動作モードを実行可能である。一方は、動作速度を重視する性能重視モードであり、他方は、信頼性を重視する信頼性重視モードである。
【００２５】
後者の信頼性重視モードにおけるメモリセル１０５へのデータ書き込みは、まず演算回路（図２参照）によってアドレス１０１が指定される。アドレス１０１はアドレスセレクタおよび書き込み回路１０２に入力される。
【００２６】
アドレスセレクタおよび書き込み回路１０２は、入力されたアドレス１０１の全部又は一部のデータ（インデックス情報１０５ｎ）に基づきメモリセル１０５のラインを一意に決定する。その決定したラインに対し、タグ部１０５ａへはアドレスの全部または一部をタグとして、制御部１０５ｂへは有効フラグを、データ部１０５ｃへは外部メモリ（図２参照）からのデータを書き込む。さらに、タグ部１０５ａ、制御部１０５ｂおよびデータ部１０５ｃへ書き込んだデータと同じデータをデータ比較バッファ１０３にも書き込む。この時、データ比較バッファ１０３に不良ビットが存在し、かつ冗長部１０３ａにその不良ビットの代替ビットを設けている場合は、ＥＣＣ回路１１０によりこの代替ビットにもデータを書き込む。
【００２７】
書き込みデータ比較器１０８は、書き込みが行われたラインにおけるタグ部１０５ａ、制御部１０５ｂおよびデータ部１０５ｃからそれぞれデータを読み出し、さらにデータ比較バッファ１０３からデータを読み出す。書き込みデータ比較器１０８は、タグ部１０５ａ、制御部１０５ｂおよびデータ部１０５ｃから読み出したデータと、データ比較バッファ１０３またはデータ比較バッファ１０３とその冗長部１０３ａにある代替ビットから読み出したデータとを比較し、両データが同一である場合は何もしない。一方、両データに相違がある場合は、相違するビット位置が、冗長部１０３ａに格納された不良ビットの位置情報に全て含まれるか否かを判断し、全て含まれる場合はメモリセル１０５における当該ラインは正常であると判断し何もしない。一方、両データに相違がある場合において、両データの相違するビット位置のうち、冗長部１０３ａに格納された不良ビットの位置情報に含まれない部分がある場合は、その位置に対応するメモリセル１０５におけるビットは不良ビットであると判断し、書き込みデータ比較器１０８は、エラー設定回路１０９に対し、当該ラインの制御部１０５ｂに無効フラグを設定することを指示する。
【００２８】
エラー設定回路１０９は、書き込みデータ比較器１０８の指示に従って、メモリセル１０５内の当該ラインの制御部１０５ｂに無効フラグを設定する。
【００２９】
一方、メモリセル１０５からのデータ読み出しは、書き込み時と同様にまず演算回路によってアドレス１０１が指定される。当該アドレス１０１は、アドレスセレクタおよび書き込み回路１０２およびタグ比較器１０７ａに入力される。
【００３０】
アドレス１０１が入力されたアドレスセレクタおよび書き込み回路１０２は、アドレス１０１の全部又は一部のデータ（インデックス情報１０５ｎ）を元に、メモリセル１０５のラインを一意に決定する。
【００３１】
ここで、メモリセル１０５におけるタグ部１０５ａ、制御部１０５ｂおよびデータ部１０５ｃに対応して選択タグ部１０６ａ、選択制御部１０６ｂおよび選択データ部１０６ｃが配置される。
【００３２】
選択タグ部１０６ａは、アドレスセレクタおよび書き込み回路１０２によって決定されたラインにおけるタグ部１０５ａからタグを取り出してタグ比較器１０７ａに渡す。選択制御部１０６ｂは、アドレスセレクタおよび書き込み回路１０２によって決定されたラインにおける制御部１０５ｂからデータ（有効フラグまたは無効フラグ）を取り出して制御比較器１０７ｂに渡す。選択データ部１０６ｃは、アドレスセレクタおよび書き込み回路１０２によって決定されたラインにおけるデータ部１０５ｃからデータを取り出して読み出しデータ比較器１０７ｃに渡す。
【００３３】
タグ比較器１０７ａは、入力されたアドレス１０１と、選択タグ部１０６ａから受け取ったタグを比較してキャッシュヒットの判定を行い、ヒットした場合（例えば両者が一致した場合）はヒット信号を、ヒットしない場合は、ミスヒット信号を出力する。
【００３４】
制御比較器１０７ｂは、選択制御部１０６から受け取ったデータが有効フラグであり、且つ、タグ比較器１０７ａからヒット信号が入力された場合は、有効判定信号を出力する。一方、制御比較器１０７ｂは、選択制御部１０６から受け取ったデータが無効フラグである場合、または、タグ比較器１０７ａからミスヒット信号が入力された場合は、無効判定信号を出力する。
【００３５】
読み出しデータ比較器１０７ｃは、制御比較器１０７ｂから有効判定信号が入力された場合は、選択データ部１０６ｃから受け取ったデータを出力データ１１１として出力する。一方、読み出しデータ比較器１０７ｃは、制御比較器１０７ｂから無効判定信号が入力された場合は、キャッシュミス信号を出力データ１１１として出力する。
【００３６】
読み出しデータ比較器１０７ｃからキャッシュミス信号が出力された場合、マイクロプロセッサにおける演算回路は、例えば、外部メモリにおける該当アドレスにアクセスしてデータを取得すると共に、当該データをキャッシュメモリにリフィルする。
【００３７】
一方、性能重視モード時におけるメモリセル１０５へのデータ書き込みは、まず演算回路によってアドレス１０１が指定される。アドレス１０１はアドレスセレクタおよび書き込み回路１０２に入力される。アドレスセレクタおよび書き込み回路１０２は、入力されたアドレス１０１の全部又は一部のデータ（インデックス情報１０５ｎ）に基づきメモリセル１０５のラインを一意に決定する。その決定したラインに対し、タグ部１０５ａへはアドレスの全部または一部を、制御部１０５ｂへは有効フラグを、データ部１０５ｃへは外部メモリからのデータを書き込む。
【００３８】
メモリセル１０５からのデータ読み出しは、信頼性重視モード時と同じであるため説明を省略する。
【００３９】
図２は、本実施の形態に係わるマイクロプロセッサ２０１の構成を概略的に示したブロック図である。
【００４０】
マイクロプロセッサ２０１は、演算回路（ＣＰＵ）２０２、制御レジスタ２０３、キャッシュメモリ２０４および外部インターフェース２０５を有する。キャッシュメモリ２０４は、図１に示した構成と同一の構成を有する。
【００４１】
演算回路２０２は、キャッシュメモリ２０４にアクセスし、キャッシュヒットの場合はキャッシュメモリ２０４からデータを取得し、キャッシュミスの場合は、外部インターフェース２０５を介して外部メモリ２０６にアクセスし、外部メモリ２０６からデータを取得する。この際、演算回路２０２は、例えば外部メモリ２０６から読み出されたデータをメモリセルに格納するリフィル処理を行う。
【００４２】
制御レジスタ２０３は、キャッシュメモリ２０４の動作モードを規定するデータを格納する。キャッシュメモリ２０４の動作モードは、制御レジスタ２０３に格納されたデータによって決定される。一般に動作モードの初期値は、設定した外部信号によって与えられ、その内容が制御レジスタ２０３へ反映される。キャッシュメモリ２０４は、上述したように、２つの動作モード、即ち、性能重視モードおよび信頼性重視モードを有する。
【００４３】
図３は、キャッシュメモリ２０４に対する動作モードの設定例を説明する図である。
【００４４】
演算回路２０２は、マイクロプロセッサ２０１の起動時（Ｓ３０１）、制御レジスタ２０３からデータを読み込む（Ｓ３０２）。制御レジスタ２０３の値が、性能重視モードを表す第１の値である場合は、制御レジスタ２０３の値をそのまま維持し、この結果、キャッシュメモリ２０４は、性能重視モードで動作する（Ｓ３０３）。
【００４５】
一方、制御レジスタ２０３の値が、信頼性重視モードを表す第２の値である場合は、演算回路２０２は、データ比較バッファ２０４ａが使用可能であるか否かをチェックする（Ｓ３０４）。
【００４６】
より詳細には、上述したように、ＥＣＣ回路は、起動時に、テストデータを用いて第１および第２のＥＣＣデータを算出する。演算回路２０２は、これら第１および第２のＥＣＣデータを冗長部にアクセスするなどして取得し、第１および第２のＥＣＣデータに基づいてデータ比較バッファ２０４ａにおける不良ビットの数が不良箇所の位置情報として、その冗長部に格納できる範囲にあるか否かを判断する。不良ビットがないまたは不良ビットの位置情報が冗長部に格納できる範囲にある場合は、演算回路２０２は、データ比較バッファ２０４ａは使用可能であると判断し、制御レジスタ２０３の値をそのまま維持する。または、前述したように不良ビットが全くない場合のみ、データ比較バッファ２０４ａを使用可能であると判断してもよい。この結果、キャッシュメモリ２０４は、信頼性重視モードで動作する（Ｓ３０５）。
【００４７】
一方、不良ビットの数がその位置情報を格納できる冗長部の範囲を超える場合（システムによっては不良ビットが１ビットでも存在する場合としてもよい）は、演算回路２０２は、データ比較バッファ２０４ａは使用可能でないと判断し、制御レジスタ２０３の値を第１の値に変更する（Ｓ３０６）。この結果、キャッシュメモリ２０４は性能重視モードに設定される（Ｓ３０３）。
【００４８】
以上に説明した本実施の形態では、データ比較バッファにおける不良ビットの位置を求めるためにＥＣＣデータを生成したが、これ以外の方法を用いてもよい。例えばテストデータをデータ比較バッファに書き込み、データ比較バッファからテストデータを読み出し、読み出したテストデータと、書き込みの対象となったテストデータとを比較することで不良ビットの位置を求めてもよい。この時、不良ビットが１ビットでも存在する場合は、データ比較バッファを使用不可能と判断するのであれば、冗長部を省略することができる。
【００４９】
以上のように本実施の形態によれば、不良ビットを含むラインを検出するために用意するメモリ容量を大きく削減できるため、チップ面積を縮小できる。
【００５０】
例えば、キャッシュメモリが32KByte(256bit x 1024line)の場合に必要な冗長データ用メモリ容量は、
従来：1bit (パリティビット) x 1024line = 128Byte
本実施の形態：256bit (データ比較バッファ)+ 16bit (冗長部) = 34Byte
となる。
【００５１】
また、本実施の形態によれば、不良ビットを含むラインを検出できるため、キャッシュメモリの不良によるシステムの不正動作を回避できる。
【００５２】
また、上述した実施の形態では、メモリセルにおける１ラインのデータを全て比較の対象としたが、データの比較する長さを変更する（例えばラインにおけるデータ部のデータのみを比較する）ことで、システムの仕様に応じて、キャッシュメモリの信頼性レベルを変更できる。
【００５３】
また、データ比較バッファとして不良ビットを有さないものを用いることで、冗長部を無くし、これによりさらなるチップ面積の減縮を図ることができる。
【００５４】
（第２の実施の形態）
図４は、本発明の第２の実施の形態に従ったキャッシュメモリの構成を概略的に示すブロック図である。このキャッシュメモリは、例えばマイクロプロセッサの一部として組み込まれる。
【００５５】
第１の実施の形態と同様に、このキャッシュメモリは、キャッシュ制御方式として、ダイレクトマップ方式を用いているが、本発明は、セットアソシアティブ方式に対しても適用可能であり、この場合は、点線の大枠で囲んだ箇所４１３をウェイ数分、設ければよい。
【００５６】
また、第１の実施の形態と同様に、このキャッシュメモリには、メモリセル４０５の１ラインと同じビット数のデータを格納するデータ比較バッファ４０３と、データ比較バッファ４０３における不良ビットの位置情報または不良ビットの位置情報と代替ビットを有する冗長部４０３ａとが設けられている。
【００５７】
さらに、本実施の形態においては、メモリセル４０５において不良ビットが含まれるラインに関し、当該ラインの位置情報を示すインデックス情報４０５ｎ、当該ラインにおける不良ビットの位置と不良ビットの真値（０あるいは１）とを登録するための不良ビット管理テーブル４０４が設けられる。この不良ビット管理テーブル４０４は、さらに本不良ビット管理テーブル４０４の空き状況（利用可能か否か）を示すフラグ情報も含む。不良ビット管理テーブル４０４のビット幅（ライン幅）は、メモリセル４０５におけるライン幅（ビット数）と同じであっても同じでなくとも良いが、本例では同じであるとする。不良ビット管理テーブル４０４は、単数または複数のラインからなる。
【００５８】
さらに、不良ビット管理テーブル４０４における不良ビットの位置情報または不良ビットの位置情報と代替ビットを有する冗長部４０４ａが設けられる。不良ビットの位置情報は、マイクロプロセッサの起動時に、ＥＣＣ回路４１２によって生成される。
【００５９】
より詳細には、マイクロプロセッサの起動時に、データ比較バッファ４０３および不良ビット管理テーブル４０４の各ラインにテストデータが書き込まれ、同時にＥＣＣ回路４１２によって第１のＥＣＣデータが算出され、各々の冗長部に書き込まれる。そして、ＥＣＣ回路４１２はデータ比較バッファ４０３および不良ビット管理テーブル４０４の各ラインからこのテストデータを読み出し、第２のＥＣＣデータを算出して、各第１のＥＣＣデータとを比較する。これらに相違がある場合は、データ比較バッファ４０３、不良ビット管理テーブル４０４および各々の冗長部に基づいてＥＣＣ回路４１２は各ラインの不良ビットの位置情報を求め、その結果を各ラインの冗長部４０３ａまたは４０４ａに書き込む。また、不良ビットに対応する代替ビットを冗長部に設けた場合は、不良ビットの位置情報毎に代替ビットの１ビットを設ける。
【００６０】
なお、データ比較バッファ４０３において、ここで算出した不良ビット数全ての位置情報を冗長部４０３ａに書き込めない場合は、動作モード（後述）を性能重視モードに切替えて実行する。また、不良ビット管理テーブル４０４において、不良ビット数全ての位置情報を冗長部４０４ａに書き込めない場合は、動作モード（後述）を性能重視モードに切替えるか、または不良ビット管理テーブルを使用しない第１の実施の形態と同じ動作に切替えて実行してもよい。また、システムによっては、ここで不良ビットが存在すると判定した場合、その位置情報を冗長部１０３ａに書き込めるか否かに関らず、即ち１ビットでも不良ビットが存在する場合は動作モード（後述）を性能重視モードに切替えて実行してもよい。
【００６１】
本キャッシュメモリは、第１の実施の形態と同様に、性能重視モードと、信頼性重視モードとを有する。
【００６２】
信頼性重視モード時におけるメモリセル４０５へのデータ書き込みは、まず演算回路によってアドレス４０１が指定される。アドレス４０１はアドレスセレクタおよび書き込み回路４０２に入力される。
【００６３】
アドレスセレクタおよび書き込み回路４０２は、入力されたアドレス４０１の全部又は一部のデータ（インデックス情報４０５ｎ）に基づきメモリセル４０５のラインを一意に決定する。その決定したラインに対し、タグ部４０５ａへはアドレスの全部または一部をタグとして、制御部４０５ｂへは有効フラグを、データ部４０５ｃへは外部メモリからのデータを書き込む。この時、インデックス情報４０５ｎが不良ビット管理テーブル４０４に登録されているか否かを検索し、登録されている場合は外部メモリからのデータの内、不良ビット位置に相当するビットを、不良ビット管理テーブル４０４に真値として登録する。また、不良ビット管理テーブル４０４に不良ビットが存在し、かつ冗長部４０４ａにその不良ビットの代替ビットを設けている場合は、ＥＣＣ回路４１２によりこの代替ビットにもデータを書き込む。さらに、タグ部４０５ａ、制御部４０５ｂおよびデータ部４０５ｃへ書き込んだデータと同じデータをデータ比較バッファ４０３にも書き込む。この時、データ比較バッファ４０３に不良ビットが存在し、かつ冗長部４０３ａにその不良ビットの代替ビットを設けている場合は、ＥＣＣ回路４１２によりこの代替ビットにもデータを書き込む。
【００６４】
書き込みデータ比較器４０８は、書き込みが行われたラインにおけるタグ部４０５ａ、制御部４０５ｂおよびデータ部４０５ｃからそれぞれデータを読み出し、さらにデータ比較バッファ４０３からデータを読み出す。書き込みデータ比較器４０８は、タグ部４０５ａ、制御部４０５ｂおよびデータ部４０５ｃから読み出したデータと、データ比較バッファ４０３またはデータ比較バッファ４０３とその冗長部４０３ａにある代替ビットから読み出したデータとを比較する。比較は、当該ラインのデータ部分についてのみ行っても良い。両データに相違がある場合において、両データの相違するビット位置のうち、冗長部４０３ａに格納された不良ビットの位置情報に含まれない部分がある場合は、その部分に対応するメモリセル４０５におけるビットは不良ビットであると判断し、当該ラインの位置情報を含む選択インデックス情報４０６ｄ、不良ビットの位置および不良ビットの真値（０あるいは１）を不良ビット管理テーブル４０４に登録することをエラー設定回路４０９ａに対し指示する。
【００６５】
指示を受けたエラー設定回路４０９ａは、これらの３種類の情報を不良ビット管理テーブル４０４に登録する。但し、エラー設定回路４０９ａは、これらの情報と同じものが既に不良ビット管理テーブル４０４に登録されていれば何もしない。また不良ビット管理テーブル４０４がフル状態であることを示すフラグ情報が不良ビット管理テーブル４０４に格納されている場合は、エラー設定回路４０９ａは、エラー出力回路４０９ｂに対しその旨を出力し、エラー出力回路４０９ｂは、異常を示す信号４０９ｃを出力する。エラー出力回路４０９ｂから信号４０９ｃが出力された場合は、例えば、第１の実施の形態を用いて、制御部４０５ｂに無効フラグを設定してもよい。エラー設定回路４０９ａによる上記３種類の情報の登録により不良ビット管理テーブル４０４がフル状態になった場合は、不良ビット管理テーブル４０４がフル状態である（利用可能でない）ことを示すフラグ情報を不良ビット管理テーブル４０４の内部に設定する。
【００６６】
一方、比較の結果、両データが同一である場合、または、両データに相違がある場合において、相違するビット位置が、冗長部４０３ａに格納された不良ビットの位置情報に全て含まれる場合は、書き込みデータ比較器４０８は、メモリセル４０５における当該ラインは正常であると判断し（みなし）何もしない。この際、当該ラインの位置情報を含む選択インデックス情報４０６ｄが不良ビット管理テーブル４０４に含まれる場合は、更新する目的でこの情報を消去することをエラー設定回路４０９ａに指示してもよい。
【００６７】
一方、信頼性重視モード時におけるメモリセル４０５からのデータ読み出しは、書き込み時と同様にまず演算回路によりアドレス４０１が指定される。当該アドレス４０１は、アドレスセレクタおよび書き込み回路４０２およびタグ比較器４０７ａに入力される。
【００６８】
アドレス４０１が入力されたアドレスセレクタおよび書き込み回路４０２は、メモリセル４０５のラインを、アドレス４０１の全部又は一部のデータ（インデックス情報４０５ｎ）を元に一意に決定する。
【００６９】
メモリセル４０５におけるタグ部４０５ａに対応して配置された選択タグ部４０６ａは、アドレスセレクタおよび書き込み回路４０２によって決定されたラインにおけるタグ部４０５ａからタグを取り出してタグ比較器４０７ａに渡す。制御部４０５ｂに対応して配置された選択制御部４０６ｂは、その決定されたラインにおける制御部４０５ｂからデータ（有効フラグまたは無効フラグ）を取り出して制御比較器４０７ｂに渡す。データ部４０５ｃに対応して配置された選択データ部４０６ｃは、その決定されたラインにおけるデータ部４０５ｃからデータを取り出して読み出しデータ比較器４０７ｃに渡す。
【００７０】
インデックス比較器４０７ｄは、メモリセルのラインを示す選択インデックス情報４０６ｄを元に、不良ビット管理テーブル４０４内に決定されたラインのインデックスが存在するか否かを検索し、存在する場合は、不良ビットの位置および真値を示す不良ビット存在情報をタグ比較器４０７ａ、制御比較器４０７ｂ及びデータ訂正回路４１０に出力する。
【００７１】
タグ比較器４０７ａは、入力されたアドレス４０１と、選択タグ部４０６ａから受け取ったタグとを比較してヒット／ミスヒットの判定を行う。インデックス比較器４０７ｄから不良ビット存在情報が入力された場合は、この入力データから受け取ったタグに誤りが存在するか否かを判断し、誤りが存在する場合はタグを訂正した上でヒット／ミスヒットの判定を行う。ヒットの場合はヒット信号を、ヒットでない場合はミスヒット信号を出力する。
【００７２】
制御比較器４０７ｂは、選択制御部４０６から受け取ったデータが有効フラグであり、且つ、タグ比較器４０７ａからヒット信号が入力された場合は、有効判定信号を出力する。一方、制御比較器４０７ｂは、選択制御部４０６から受け取ったデータが無効フラグである場合、または、タグ比較器４０７ａからミスヒット信号が入力された場合は、無効判定信号を出力する。ここで、インデックス比較器４０７ｄから不良ビット存在情報が入力された場合は、この入力データを元に選択制御部４０６ｂから受け取ったデータに誤りが存在するか否かを判断し、誤りが存在する場合は当該データを訂正した上で、前述の有効か無効かの判定を行い対応する信号を出力する。
【００７３】
読み出しデータ比較器４０７ｃは、制御比較器４０７ｂから有効判定信号が入力された場合は、選択データ部４０６ｃから受け取ったデータをデータ訂正回路４１０に出力する。一方、読み出しデータ比較器４０７ｃは、制御比較器４０７ｂから無効判定信号が入力された場合は、キャッシュミス信号をデータ訂正回路４１０に出力する。
【００７４】
データ訂正回路４１０は、読み出しデータ比較器４０７ｃから入力されたデータに誤りが存在するか否かを、インデックス比較器４０７ｄから入力された不良ビット存在情報を元に判断し、訂正する必要がある場合は当該データを訂正した後、出力データ４１１として出力する。
【００７５】
一方、データ訂正回路４１０は、読み出しデータ比較器４０７ｃからデータが入力され、且つ、インデックス比較器４０７ｄから不良ビット存在情報が入力されなかった場合は、このデータをそのまま出力データ４１１として出力する。また、データ訂正回路４１０は、読み出しデータ比較器４０７ｃからキャッシュミス信号が入力された場合は、このキャッシュミス信号をそのまま出力データ４１１として出力する。
【００７６】
データ訂正回路４１０がキャッシュミス信号を出力した場合、マイクロプロセッサにおける演算回路（図５参照）は、例えば、外部メモリにおける該当アドレスにアクセスしてデータを取得すると共に、当該データをキャッシュメモリにリフィルする。
【００７７】
一方、性能重視モード時におけるメモリセル４０５へのデータ書き込みは、まず演算回路（図５参照）によってアドレス４０１が指定される。アドレス４０１はアドレスセレクタおよび書き込み回路４０２に入力される。アドレスセレクタおよび書き込み回路４０２は、入力されたアドレス４０１の全部又は一部のデータ（インデックス情報４０５ｎ）に基づきメモリセル４０５のラインを一意に決定する。決定したラインに対し、タグ部４０５ａへはアドレスの全部または一部をタグとして、制御部４０５ｂへは有効フラグを、データ部４０５ｃへは外部メモリからのデータを書き込む。
【００７８】
メモリセル４０５からのデータ読み出しは、書き込み時と同様にまず演算回路（図５参照）によってアドレス４０１が指定される。当該アドレス４０１は、アドレスセレクタおよび書き込み回路４０２およびタグ比較器４０７ａに入力される。
【００７９】
アドレス４０１が入力されたアドレスセレクタおよび書き込み回路４０２は、メモリセル４０５のラインを、アドレス４０１の全部又は一部のデータ（インデックス情報４０５ｎ）を元に一意に決定する。
【００８０】
選択タグ部４０６ａは、その決定されたラインにおけるタグ部４０５ａからタグを取り出してタグ比較器４０７ａに渡す。選択制御部４０６ｂは、その決定されたラインにおける制御部４０５ｂからデータ（有効フラグまたは無効フラグ）を取り出して制御比較器４０７ｂに渡す。選択データ部４０６ｃは、その決定されたラインにおけるデータ部４０５ｃからデータを取り出して読み出しデータ比較器４０７ｃに渡す。
【００８１】
タグ比較器４０７ａは、入力されたアドレス４０１と、選択タグ部４０６ａから受け取ったタグとを比較してキャッシュヒットの判定を行い、ヒットした場合はヒット信号を、ヒットしない場合は、ミスヒット信号を出力する。
【００８２】
制御比較器４０７ｂは、選択制御部４０６から受け取ったデータが有効フラグであり、且つ、タグ比較器４０７ａからヒット信号が入力された場合は、有効判定信号を出力する。一方、制御比較器４０７ｂは、選択制御部４０６から受け取ったデータが無効フラグである場合、または、タグ比較器４０７ａからミスヒット信号が入力された場合は、無効判定信号を出力する。
【００８３】
読み出しデータ比較器４０７ｃは、制御比較器４０７ｂから有効判定信号が入力された場合は、選択データ部４０６ｃから受け取ったデータを出力データ４１１としてデータ訂正回路４１０を介して出力する。一方、読み出しデータ比較器４０７ｃは、制御比較器４０７ｂから無効判定信号が入力された場合は、キャッシュミス信号を出力データ４１１としてデータ訂正回路４１０を介して出力する。
【００８４】
読み出しデータ比較器４０７ｃがキャッシュミス信号を出力した場合、マイクロプロセッサにおける演算回路（図５参照）は、例えば外部メモリにおける該当アドレスにアクセスしてデータを取得すると共に、当該データをキャッシュメモリにリフィルする。
【００８５】
図５は、本実施の形態に係わるマイクロプロセッサ５０１の構成を概略的に示したブロック図である。
【００８６】
マイクロプロセッサ５０１は、演算回路５０２、制御レジスタ５０３、キャッシュメモリ５０４および外部インターフェース５０５を有する。キャッシュメモリ５０４は、図４に示した構成と同一の構成を有する。
【００８７】
制御レジスタ５０３は、キャッシュメモリ５０４の動作モードを規定するデータを格納する。
【００８８】
キャッシュメモリ５０４の動作モードは、この制御レジスタ５０３に設定されたデータの内容に基づいて決定される。一般に動作モードの初期値は、設定した外部信号によって与えられ、その内容が制御レジスタ５０３へ反映される。キャッシュメモリ５０４は、上述したように、２つの動作モード、即ち、性能重視モードおよび信頼性重視モードを有する。
【００８９】
図６は、キャッシュメモリ５０４に対する動作モードの設定例を説明する図である。
【００９０】
演算回路５０２は、マイクロプロセッサ５０１の起動時（Ｓ６０１）、制御レジスタ５０３からデータを読み込む（Ｓ６０２）。制御レジスタ５０３の値が、性能重視モードを表す第１の値である場合は、制御レジスタ５０３の値をそのまま維持し、この結果、キャッシュメモリ５０４は、性能重視モードで動作する（Ｓ６０３）。
【００９１】
一方、制御レジスタ５０３の値が、信頼性重視モードを表す第２の値である場合は、演算回路５０２は、データ比較バッファ５０４ａおよび不良ビット管理テーブル５０４ｂが使用可能であるか否かをチェックする（Ｓ６０４）。使用可能であるか否かは第１の実施の形態と同様の手法を用いて判断すればよい。
【００９２】
チェックの結果、演算回路５０２は、データ比較バッファ５０４ａおよび不良ビット管理テーブル５０４ｂが使用可能であると判断した場合は、制御レジスタ５０３の値をそのまま維持し、この結果、キャッシュメモリ５０４は、信頼性重視モードで動作する（Ｓ６０５）。
【００９３】
一方、データ比較バッファ５０４ａおよび不良ビット管理テーブル５０４ｂの少なくとも一方が使用可能でないと判断した場合は、演算回路５０２は、制御レジスタ５０３の値を第１の値に変更して（Ｓ６０６）、キャッシュメモリ５０４を強制的に性能重視モードに設定する（Ｓ６０３）。
【００９４】
ところで、図４または図５に示した不良ビット管理テーブルの配置箇所を、揮発性メモリではなく、図７に示すように、マイクロプロセッサ７０１内蔵の不揮発性メモリ７０７または外部の不揮発性メモリとしても良い。これにより、マイクロプロセッサがリセット（電源切断）されることによって不良ビットの情報が消去されることを防ぐことができる。具体的には、メモリセルへのデータ書込み時に、予め不良ビットの存在が分かっているので、その不良ビットへの書込みを回避でき、不良ビットの検出および不良ビット管理テーブルへの登録の処理を省略できる。
【００９５】
以上のように、本実施の形態によれば、メモリセルにおける同一ラインのエラー情報を全て不良ビット管理テーブルに登録し、メモリセルから読み出したデータをこの登録したエラー情報に基づいて訂正するため、メモリセルの同一ラインにおけるエラービット数に拘わらず（同一ラインに２ビット以上の不良ビットがある場合でも対応可能。これは不良ビット管理テーブルの容量に依存する）、エラー訂正を行うことができる。これにより、キャッシュメモリ不良によるシステムの不正動作を回避できると共に、リフィル回数を減らすことができ、よって、システムの性能劣化を最小限に抑制できる。
【００９６】
また、本実施の形態によれば、キャッシュメモリ不良の検出に使うメモリ容量を大きく削減できるため、チップ面積を縮小できる。
【００９７】
例えば、キャッシュメモリが32KByte(256bit x 1024line)の場合に必要な冗長データ用メモリ容量は、
従来  ：16bit(ECCデータ) x 1024line = 2048Byte
本実施の形態：34Byte (256bit（データ比較バッファ）+ 16bit(冗長部))
+ 68Byte｛２(2ラインの場合)×（256bit（不良ビット管理テーブル）+ 16bit（冗長部））｝  = 102Byte
となる。
【００９８】
また、不良ビット管理テーブルやデータ比較バッファの大きさを変更することで、システムの仕様に応じて、キャッシュメモリの信頼性レベルを変更できる。
【００９９】
また、不良ビット管理テーブル又はデータ比較バッファとして不良ビットを有さないものを用いることにより、冗長部を削減でき、これによりさらなるチップ面積の減縮を図ることができる。
【図面の簡単な説明】
【０１００】
【図１】本発明の第１の実施の形態に従ったキャッシュメモリの構成を概念的に示すブロック図である。
【図２】本発明の第１の実施の形態に係わるマイクロプロセッサの構成を概略的に示したブロック図である。
【図３】図１のキャッシュメモリに対する動作モードの設定例を説明する図である。
【図４】本発明の第２の実施の形態に従ったキャッシュメモリの構成を概略的に示すブロック図である。
【図５】本発明の第２の実施の形態に係わるマイクロプロセッサの構成を概略的に示したブロック図である。
【図６】図４のキャッシュメモリに対する動作モードの設定例を説明する図である。
【図７】不良ビット管理テーブルを不揮発性メモリ内に含むプロセッサの構成を示すブロック図である。
【符号の説明】
【０１０１】
１０１，４０１  アドレス
１０２，４０２  アドレスセレクタおよび書き込み回路
１０５，４０５  メモリセル
１０５ａ，４０５ａ  タグ部
１０５ｂ，４０５ｂ  制御部
１０５ｃ，４０５ｃ  データ部
１０５ｎ，４０５ｎ  インデックス情報
１０６ａ，４０６ａ  選択タグ部
１０６ｂ，４０６ｂ  選択制御部
１０６ｃ，４０６ｃ  選択データ部
４０６ｄ  選択インデックス情報
１０７ａ，４０７ａ  タグ比較器
１０７ｂ，４０７ｂ  制御比較器
１０７ｃ，４０７ｃ  読み出しデータ比較器
４０７  インデックス比較器
１１０，４１２  ＥＣＣ回路
１１１，４１１  出力データ
１１２，４１３  １ウェイ分を構成するメモリセルや回路
１０３，４０３  データ比較バッファ
１０８，４０８  書き込みデータ比較器
１０９ａ，４０９ａ  エラー設定回路
４０４  不良ビット管理テーブル
４０９ｂ  エラー出力部
４０９ｃ  信号
４１０  データ訂正回路
２０１，５０１  マイクロプロセッサ
２０２，５０２  演算回路
２０３，５０３  制御レジスタ
２０４，５０４  キャッシュメモリ
２０４ａ，５０４ａ  データ比較バッファ
５０４ｂ，７０７ｂ  不良ビット管理テーブル
２０５，５０５外部インターフェース
２０６，５０６  外部メモリ
Ｓ３０１，Ｓ６０１  マイクロプロセッサ起動
Ｓ３０２，Ｓ６０２  制御レジスタ読み込み
Ｓ３０３，Ｓ６０３  性能重視モード
Ｓ３０４  データ比較バッファの不良チェック
Ｓ６０４  データ比較バッファ／不良ビット管理テーブルの不良チェック
Ｓ３０５，Ｓ６０５  信頼性重視モード
Ｓ３０６，Ｓ６０６  制御レジスタ設定
７０７  不揮発性メモリ
【図１】
2006343851.tif 000003
【図２】
2006343851.tif 000004
【図３】
2006343851.tif 000005
【図４】
2006343851.tif 000006
【図５】
2006343851.tif 000007
【図６】
2006343851.tif 000008
【図７】
2006343851.tif 000009