(57)【要約】      （修正有）【課題】信頼性を向上させることができる半導体記憶装置及びその読み書き制御方法を提供する。【解決手段】データを記憶する記憶素子と、不良記憶素子を救済するためのリダンダンシー用記憶素子が所定方向に沿って複数配置された記憶部２０と、記憶部２０のデータ領域２０Ｂから読み出された読み出しデータＳ３０と所定の参照データＳ１０とを比較することにより、不良記憶素子を特定し、不良記憶素子の位置を表すリダンダンシー情報Ｓ８０を出力する比較部１００と、データの書き込み及び読み出し時、不良記憶素子が存在する不良記憶素子列及び不良記憶素子列よりリダンダンシー領域２０Ｃ側に位置する記憶素子列に対して、リダンダンシー領域２０Ｃ側に隣接する記憶素子列又はリダンダンシー領域２０Ｃに移動させるリダンダンシー部５０とを備える。【選択図】図２
2006286135.tif 000002
【特許請求の範囲】
【請求項１】
データを記憶する記憶素子が所定方向に沿って複数配置された記憶素子列を、複数列有するデータ領域と、不良記憶素子を救済するためのリダンダンシー用記憶素子が前記所定方向に沿って複数配置されたリダンダンシー領域とを有する記憶部と、
前記記憶部の前記データ領域から読み出された読み出しデータと所定の参照データとを比較することにより、前記不良記憶素子を特定し、前記不良記憶素子の位置を表すリダンダンシー情報を出力する比較部と、
データの書き込み及び読み出し時、前記不良記憶素子が存在する不良記憶素子列及び前記不良記憶素子列より前記リダンダンシー領域側に位置する前記記憶素子列に対して、データの書き込み及び読み出しを行う際には、前記リダンダンシー情報に基づいて、書き込み及び読み出し対象の前記記憶素子列を、前記リダンダンシー領域側に隣接する前記記憶素子列又は前記リダンダンシー領域に移動させるリダンダンシー部と
を備えることを特徴とする半導体記憶装置。
【請求項２】
前記参照データは、外部記憶装置から読み出されたデータであることを特徴とする請求項１記載の半導体記憶装置。
【請求項３】
前記読み出しデータに対して誤り訂正を行うことにより、誤り訂正データを生成する誤り訂正部をさらに備え、
前記参照データは、前記誤り訂正データであることを特徴とする請求項１記載の半導体記憶装置。
【請求項４】
前記記憶部は、エラーの有無を検査するための検査データを記憶する検査データ用記憶素子が前記所定方向に沿って複数配置された検査データ領域をさらに備え、
データの書き込み時には、書き込み対象のデータを基に前記検査データを生成し、これを前記検査データ領域に書き込ませる検査データ生成部と、
データの読み出し時には、前記検査データ領域から読み出された前記検査データを用いて、前記データ領域から読み出されたデータに対してエラー検出を行うエラー検出部と
をさらに備えることを特徴とする請求項１記載の半導体記憶装置。
【請求項５】
データを記憶する記憶素子が所定方向に沿って複数配置された記憶素子列を、複数列有するデータ領域と、不良記憶素子を救済するためのリダンダンシー用記憶素子が前記所定方向に沿って複数配置されたリダンダンシー領域とを有する記憶部を有する半導体記憶装置に対してデータの読み書きを行う際に、
前記記憶部の前記データ領域から読み出された読み出しデータと所定の参照データとを比較することにより、前記不良記憶素子を特定し、前記不良記憶素子の位置を表すリダンダンシー情報を生成するステップと、
データの書き込み及び読み出し時、前記不良記憶素子が存在する不良記憶素子列及び前記不良記憶素子列より前記リダンダンシー領域側に位置する前記記憶素子列に対して、データの書き込み及び読み出しを行う際には、前記リダンダンシー情報に基づいて、書き込み及び読み出し対象の前記記憶素子列を、前記リダンダンシー領域側に隣接する前記記憶素子列又は前記リダンダンシー領域に移動させるステップと
を備えることを特徴とする半導体記憶装置の読み書き制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体記憶装置及びその読み書き制御方法に関する。
【背景技術】
【０００２】
コンピュータは、記憶装置として、例えばＤＲＡＭなどのメインメモリ（主記憶装置）を有する。ＣＰＵは、ハードディスクから必要なデータをメインメモリに転送して記憶し、当該メインメモリに記憶されたデータを読み出して実行することにより、コンピュータの動作を制御する。
【０００３】
しかし、メインメモリとして使用されるＤＲＡＭの処理速度は、ＣＰＵと比較して非常に低速である。このため、ＣＰＵは、メインメモリに対してデータの読み出し要求を行っても、当該メインメモリからデータが転送されるのに時間を要し、これによりＣＰＵの処理速度は低下することになる。
【０００４】
そこで、処理速度が速い例えばＳＲＡＭなどのキャッシュメモリを設け、メインメモリから読み出され、使用頻度の高いデータをキャッシュメモリに記憶した後、再び当該データを読み出す際には、メインメモリではなくキャッシュメモリから読み出すことにより、ＣＰＵの処理速度の向上を図っている。
【０００５】
具体的には、キャッシュメモリは、ＣＰＵからデータの読み出し要求が与えられると、当該データがキャッシュメモリ内に存在するか否かを調べ、その結果をＣＰＵに通知する。ＣＰＵは、キャッシュメモリから当該データが存在すると通知された場合には、キャッシュメモリから読み出されたデータを用いて所望の処理を実行する。
【０００６】
これに対して、ＣＰＵは、キャッシュメモリから当該データが存在しないと通知された場合には、メインメモリから当該データを読み出し、これを用いて所望の処理を実行すると共に、当該データをキャッシュメモリに記憶する。
【０００７】
ところで、かかるキャッシュメモリを製造し出荷する際には、メモリテスタを用いて当該キャッシュメモリをテストするが、このとき不良ビット（不良メモリセル）を検出できない場合があり、さらに、出荷後に特定のビット（メモリセル）が故障することにより、不良ビットが発生する場合もあり、これらの場合には、キャッシュメモリが誤動作するという問題があった。
【０００８】
例えば、キャッシュメモリから読み出されたデータに発生したエラーが、ノイズなどによる偶発的なエラーである場合には、初期化処理（すなわちブート処理）を行えば、その後はキャッシュメモリを正常に動作させることができる。
【０００９】
しかし、データに発生したエラーが、出荷時のテストによって検出できなかった不良ビットや、出荷後の故障によって発生した不良ビットに基づく固定的なエラーである場合には、キャッシュメモリは正常に動作しないという問題があった。
【００１０】
また、キャッシュメモリが誤動作した場合には、ＣＰＵは正常に動作しないため、不具合の原因を解析することが困難になるという問題があった。
【００１１】
さらに、ノイズなどによる偶発的なエラーに対してエラー訂正を行う方法もあるが、不良ビットの存在によって固定的にエラーが発生する場合には、かかる偶発的なエラーに対してエラー訂正を行うことができなくなり、キャッシュメモリの信頼性が低下するという問題があった。
【００１２】
以下、キャッシュメモリのエラー検出に関する文献名を記載する。
【特許文献１】特開２００３−２１６４９３号公報
【発明の開示】
【発明が解決しようとする課題】
【００１３】
本発明は、信頼性を向上させることができる半導体記憶装置及びその読み書き制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１４】
本発明の一態様による半導体記憶装置によれば、
データを記憶する記憶素子が所定方向に沿って複数配置された記憶素子列を、複数列有するデータ領域と、不良記憶素子を救済するためのリダンダンシー用記憶素子が前記所定方向に沿って複数配置されたリダンダンシー領域とを有する記憶部と、
前記記憶部の前記データ領域から読み出された読み出しデータと所定の参照データとを比較することにより、前記不良記憶素子を特定し、前記不良記憶素子の位置を表すリダンダンシー情報を出力する比較部と、
データの書き込み及び読み出し時、前記不良記憶素子が存在する不良記憶素子列及び前記不良記憶素子列より前記リダンダンシー領域側に位置する前記記憶素子列に対して、データの書き込み及び読み出しを行う際には、前記リダンダンシー情報に基づいて、書き込み及び読み出し対象の前記記憶素子列を、前記リダンダンシー領域側に隣接する前記記憶素子列又は前記リダンダンシー領域に移動させるリダンダンシー部と
を備えることを特徴とする。
【００１５】
また本発明の一態様による半導体記憶装置の読み書き制御方法によれば、
データを記憶する記憶素子が所定方向に沿って複数配置された記憶素子列を、複数列有するデータ領域と、不良記憶素子を救済するためのリダンダンシー用記憶素子が前記所定方向に沿って複数配置されたリダンダンシー領域とを有する記憶部を有する半導体記憶装置に対してデータの読み書きを行う際に、
前記記憶部の前記データ領域から読み出された読み出しデータと所定の参照データとを比較することにより、前記不良記憶素子を特定し、前記不良記憶素子の位置を表すリダンダンシー情報を生成するステップと、
データの書き込み及び読み出し時、前記不良記憶素子が存在する不良記憶素子列及び前記不良記憶素子列より前記リダンダンシー領域側に位置する前記記憶素子列に対して、データの書き込み及び読み出しを行う際には、前記リダンダンシー情報に基づいて、書き込み及び読み出し対象の前記記憶素子列を、前記リダンダンシー領域側に隣接する前記記憶素子列又は前記リダンダンシー領域に移動させるステップと
を備えることを特徴とする。
【発明の効果】
【００１６】
本発明の半導体記憶装置及びその読み書き制御方法によれば、信頼性を向上させることができる。
【発明を実施するための最良の形態】
【００１７】
以下、本発明の実施の形態について図面を参照して説明する。
【００１８】
（１）第１の実施の形態
図１に、本発明の第１の実施の形態によるキャッシュメモリ１０の基本的な構成を示す。キャッシュメモリ１０は、例えばＳＲＡＭからなり、データを格納するキャッシュデータ領域部２０と、当該データがメインメモリ（図示せず）に格納されているアドレス（以下、これをメモリアドレスと呼ぶ）のうち、所定の上位ビットを格納するキャッシュタグ領域部３０とを有する。
【００１９】
キャッシュメモリ１０は、キャッシュデータ領域部２０及びキャッシュタグ領域部３０を、いずれもラインと呼ばれる単位で分割して管理し、キャッシュデータ領域部２０の各ラインと、キャッシュタグ領域部３０の各ラインとは、メモリアドレスのうち所定の下位ビットによって、対応付けられて管理される。
【００２０】
具体的には、キャッシュメモリ１０は、メインメモリ（図示せず）から読み出されたデータＳ１０をキャッシュデータ領域部２０に書き込む場合には、ＣＰＵ（図示せず）から与えられたメモリアドレスＳ２０の下位ビットによって指定されたラインのうち、キャッシュデータ領域部２０にはデータＳ１０を書き込むと共に、キャッシュタグ領域部３０にはメモリアドレスＳ２０の上位ビットを書き込む。
【００２１】
一方、キャッシュメモリ１０は、ＣＰＵ（図示せず）からデータの読み出し要求が与えられると、メモリアドレスＳ２０の下位ビットによって指定されたラインのキャッシュデータ領域部２０から、データＳ３０を読み出して出力する。
【００２２】
これと共に、キャッシュメモリ１０は、メモリアドレスＳ２０の下位ビットによって指定されたラインのキャッシュタグ領域部３０に書き込まれているアドレスと、メモリアドレスＳ２０の上位ビットとを比較する。
【００２３】
キャッシュメモリ１０は、キャッシュタグ領域部３０に書き込まれているアドレスと、メモリアドレスＳ２０の上位ビットとが一致した場合には、ヒット信号Ｓ４０として“Ｈ”レベルをＣＰＵ（図示せず）に出力することにより、キャッシュメモリ１０内にデータが存在することを、ＣＰＵ（図示せず）に通知する。
【００２４】
この場合、ＣＰＵ（図示せず）は、メインメモリ（図示せず）からデータを読み出すことなく、キャッシュメモリ１０から読み出されたデータＳ３０を用いて所望の処理を実行する。
【００２５】
これに対して、キャッシュメモリ１０は、キャッシュタグ領域部３０に書き込まれているアドレスと、メモリアドレスＳ２０の上位ビットとが一致しなかった場合には、ヒット信号Ｓ４０として“Ｌ”レベルをＣＰＵ（図示せず）に出力することにより、キャッシュメモリ１０内にデータが存在しないことを、ＣＰＵ（図示せず）に通知する。
【００２６】
この場合、ＣＰＵ（図示せず）は、キャッシュメモリ１０から読み出されたデータＳ３０を採用することなく、メインメモリ（図示せず）からデータを読み出し、これを用いて所望の処理を実行すると共に、当該データをキャッシュメモリ１０に書き込む。
【００２７】
図２に、キャッシュメモリ１０の具体的な構成を示す。一般にキャッシュメモリは、プログラムなどのＣＰＵの命令を格納する命令用キャッシュメモリと、ＣＰＵによって処理されたデータを格納するデータ用キャッシュメモリとに分類され、本実施の形態の場合、キャッシュメモリ１０は、命令用キャッシュメモリからなる。
【００２８】
キャッシュメモリ１０は、データＳ１０を書き込む場合には、データＳ１０をパリティ生成回路４０に入力し、当該パリティ生成回路４０によってパリティコードＳ５０を生成した上で、当該パリティコードＳ５０及びデータＳ１０をリダンダンシー回路部５０を介してキャッシュデータ領域部２０に与える。
【００２９】
キャッシュメモリ１０は、メモリアドレスＳ２０の下位ビットによって指定されたラインのキャッシュデータ領域部２０のうち、パリティ用ビット領域２０ＡにはパリティコードＳ５０を書き込み、データ用ビット領域２０ＢにはデータＳ１０を書き込む。これと共に、キャッシュメモリ１０は、メモリアドレスＳ２０の下位ビットによって指定されたラインのキャッシュタグ領域部３０には、メモリアドレスＳ２０の上位ビットを書き込む。
【００３０】
一方、キャッシュメモリ１０は、ＣＰＵ（図示せず）からデータの読み出し要求が与えられると、メモリアドレスＳ２０の下位ビットによって指定されたラインのキャッシュデータ領域部２０のデータ用ビット領域２０ＢからデータＳ３０を読み出し、これをリダンダンシー回路部５０を介してパリティエラー検出回路６０及びＣＰＵ（図示せず）に出力すると共に、当該ラインのパリティ用ビット領域２０ＡからパリティコードＳ３５を読み出し、これをリダンダンシー回路部５０を介してパリティエラー検出回路６０に出力する。
【００３１】
パリティエラー検出回路６０は、パリティコードＳ３５を用いてデータＳ３０に対してパリティテェックを行い、その結果、当該データＳ３０にエラーがないと判定した場合には、パリティエラー信号Ｓ６０として“Ｌ”レベルを、キャッシュデータ無効回路７０のＮＯＲ回路９０及びＣＰＵ（図示せず）に出力する。
【００３２】
これと共に、キャッシュメモリ１０は、メモリアドレスＳ２０の下位ビットによって指定されたラインのキャッシュタグ領域部３０に書き込まれているアドレスと、メモリアドレスＳ２０の上位ビットとを比較する。
【００３３】
キャッシュメモリ１０は、キャッシュタグ領域部３０に書き込まれているアドレスと、メモリアドレスＳ２０の上位ビットとが一致した場合には、ヒット信号Ｓ４０として“Ｈ”レベルをキャッシュデータ無効回路７０のインバータ８０に出力する。
【００３４】
インバータ８０は、“Ｈ”レベルのヒット信号Ｓ４０を反転して“Ｌ”レベルを得、これをＮＯＲ回路９０に出力する。ＮＯＲ回路９０は、“Ｌ”レベルのパリティエラー信号Ｓ６０と、インバータ８０から出力された“Ｌ”レベルとの否定的論理和を演算し、その結果得られた“Ｈ”レベルをヒット信号Ｓ７０としてＣＰＵ（図示せず）に出力する。
【００３５】
この場合、ＣＰＵ（図示せず）は、メインメモリ（図示せず）からデータを読み出すことなく、キャッシュメモリ１０から読み出されたデータＳ３０を用いて所望の処理を実行する。
【００３６】
これに対して、キャッシュメモリ１０は、キャッシュタグ領域部３０に書き込まれているアドレスと、メモリアドレスＳ２０の上位ビットとが一致しなかった場合には、ヒット信号Ｓ４０として“Ｌ”レベルをキャッシュデータ無効回路７０のインバータ８０に出力する。
【００３７】
インバータ８０は、“Ｌ”レベルのヒット信号Ｓ４０を反転して“Ｈ”レベルを得、これをＮＯＲ回路９０に出力する。ＮＯＲ回路９０は、“Ｌ”レベルのパリティエラー信号Ｓ６０と、インバータ８０から出力された“Ｈ”レベルとの否定的論理和を演算し、その結果得られた“Ｌ”レベルをヒット信号Ｓ７０としてＣＰＵ（図示せず）に出力する。
【００３８】
この場合、ＣＰＵ（図示せず）は、キャッシュメモリ１０から読み出されたデータＳ３０を採用することなく、メインメモリ（図示せず）からデータを読み出し、これを用いて所望の処理を実行すると共に、当該データをキャッシュメモリ１０に書き込む。
【００３９】
ところで、パリティエラー検出回路６０は、パリティコードＳ３５を用いてデータＳ３０に対してパリティテェックを行った結果、当該データＳ３０にエラーがあると判定した場合には、パリティエラー信号Ｓ６０として“Ｈ”レベルをキャッシュデータ無効回路７０のＮＯＲ回路９０に出力すると共に、当該“Ｈ”レベルのパリティエラー信号Ｓ６０を割り込み信号としてＣＰＵ（図示せず）に出力する。
【００４０】
ＮＯＲ回路９０は、“Ｈ”レベルのパリティエラー信号Ｓ６０と、インバータ８０から出力される論理レベルとの否定的論理和を演算し、その結果得られた“Ｌ”レベルをヒット信号Ｓ７０としてＣＰＵ（図示せず）に出力する。
【００４１】
すなわち、キャッシュデータ無効回路７０は、データＳ３０にエラーがあると判定された場合には、ヒット信号Ｓ７０を強制的に“Ｌ”レベルにすることにより、キャッシュデータ領域部２０から読み出されたデータＳ３０を無効にする。
【００４２】
この場合、ＣＰＵ（図示せず）は、ヒット信号Ｓ７０として“Ｌ”レベルが与えられると、キャッシュメモリ１０から読み出されたデータＳ３０を採用することなく、メインメモリ（図示せず）からデータを読み出し、これを用いて所望の処理を実行すると共に、当該データをキャッシュメモリ１０に与える。
【００４３】
これと共に、ＣＰＵ（図示せず）は、割り込み信号として、“Ｈ”レベルのパリティエラー信号Ｓ６０が与えられると、割り込みハンドラによって、キャッシュメモリ１０のフラッシュ（無効化）を行うことにより、全てのデータを一括して消去する。その際、ＣＰＵ（図示せず）は、割り込みハンドラによって、不具合の原因を解析することが可能である。
【００４４】
データ比較回路１００には、キャッシュメモリ１０のフラッシュを行う前に、キャッシュデータ領域部２０から読み出された、エラーを有するデータＳ３０が、リダンダンシー回路部５０を介して入力されると共に、メインメモリ（図示せず）から読み出された、正当なデータＳ１０が入力される。
【００４５】
データ比較回路１００は、キャッシュデータ領域部２０から読み出されたデータＳ３０と、メインメモリ（図示せず）から読み出されたデータＳ１０とを、１ビット毎に比較することにより、エラーが発生したビット（以下、これを不良ビット呼ぶ）を特定し、当該不良ビットの位置を表すリダンダンシー情報Ｓ８０を、内部の出力側に設けられたレジスタに記憶すると共に、リダンダンシー回路部５０に出力する。リダンダンシー回路部５０は、このリダンダンシー情報Ｓ８０に基づいて、キャッシュデータ領域部２０に対してデータＳ１０を書き込む。
【００４６】
なお、リダンダンシー情報Ｓ８０を記憶するためのレジスタを、リダンダンシー回路部５０内部に設けても良く、また、データＳ３０とデータＳ１０とを記憶するためのレジスタを、データ比較回路１００の入力側に設けても良い。
【００４７】
因みに、キャッシュメモリ１０から読み出されたデータＳ３０にエラーが発生すると、初期化処理（すなわちブート処理）を行うコンピュータの場合には、キャッシュメモリ１０のフラッシュ（無効化）を行う必要はない。この場合、ＣＰＵ（図示せず）は、割り込み信号として、“Ｈ”レベルのパリティエラー信号Ｓ６０が与えられると、リダンダンシー情報Ｓ８０をデータ比較回路１００内部のレジスタに記憶させた上で、初期化処理を実行すれば良い。
【００４８】
ところで、本実施の形態の場合、キャッシュデータ領域部２０は、不良ビットを救済するためのリダンダンシー用ビット領域２０Ｃを有する。また、キャッシュデータ領域部２０のデータ用ビット領域２０Ｂは、１ビット分のデータを記憶するためのビット（メモリセル）がカラム方向に沿って複数配置されたビット列を、複数列（１〜ｎ列）有する。
【００４９】
この場合、パリティ用ビット領域２０Ａ側からリダンダンシー用ビット領域２０Ｃ側に向かって、１〜ｎビット目のビット列が順次配置され、当該ビット列を、不良ビットを救済する際の置き換えの単位として採用する。
【００５０】
ここでは、例えばＮ（１≦Ｎ≦ｎ）ビット目のビット列に不良ビットが存在する場合であって、ｎビットのデータＳ１０をキャッシュデータ領域部２０に書き込む場合について説明する。この場合、リダンダンシー回路部５０は、データＳ１０のうち、１ビット目のデータＳ１０を、１ビット目のビット列に書き込み、２ビット目のデータＳ１０を、２ビット目のビット列に書き込む。これ以降、同様にして、データＳ１０の書き込みを行うことにより、（Ｎ−１）ビット目のデータＳ１０を、（Ｎ−１）ビット目のビット列に書き込む。
【００５１】
リダンダンシー回路部５０は、Ｎビット目のデータＳ１０を、Ｎビット目のビット列に書き込まず、Ｎビット目のビット列に対してリダンダンシー用ビット領域２０Ｃ側に隣接する（Ｎ＋１）ビット目のビット列に、Ｎビット目のデータＳ１０を書き込む。
【００５２】
因みに、Ｎビット目のビット列に不良ビットが存在しない場合には、リダンダンシー回路部５０は、Ｎビット目のデータＳ１０を、Ｎビット目のビット列に書き込む。
【００５３】
そして、（Ｎ＋１）ビット目のデータＳ１０を、（Ｎ＋２）ビット目のビット列に書き込み、これ以降、同様にして、書き込み対象のビット列を、１ビットずつ移動させながら、データＳ１０を書き込んでいくことにより、ｎビット目のデータＳ１０を、リダンダンシー用ビット領域２０Ｃに書き込む。
【００５４】
すなわち、リダンダンシー回路部５０は、不良ビットが存在するビット列にはデータＳ１０を書き込まず、当該ビット列及び当該ビット列よりリダンダンシー用ビット領域２０Ｃ側に位置するビット列にデータＳ１０を書き込む際には、書き込み対象のビット列を、１ビットずつリダンダンシー用ビット領域２０Ｃ側に移動させながら、データＳ１０を書き込む。
【００５５】
続いて、リダンダンシー回路部５０は、キャッシュデータ領域部２０からデータＳ３０を読み出す際には、１ビット目のビット列から１ビット目のデータＳ３０を読み出し、２ビット目のビット列から２ビット目のデータＳ３０を読み出し、これ以降、同様にして、データＳ３０の読み出しを行うことにより、（Ｎ−１）ビット目のビット列から（Ｎ−１）ビット目のデータＳ３０を読み出す。
【００５６】
リダンダンシー回路部５０は、Ｎビット目のビット列からＮビット目のデータＳ３０を読み出さず、Ｎビット目のビット列に対してリダンダンシー用ビット領域２０側に隣接する（Ｎ＋１）ビット目のビット列から、Ｎビット目のデータＳ３０を読み出す。
【００５７】
そして、（Ｎ＋２）ビット目のビット列から、（Ｎ＋１）ビット目のデータＳ３０を読み出し、これ以降、同様にして、読み出し対象のビット列を、１ビットずつ移動させながら、データＳ３０を読み出していくことにより、リダンダンシー用ビット領域２０Ｃからｎビット目のデータＳ３０を読み出す。
【００５８】
このように本実施の形態によれば、出荷時のテストによって検出できなかった不良ビットや、出荷後の故障によって発生した不良ビットが存在する場合であっても、当該不良ビットを救済することができ、従ってキャッシュメモリ１０の信頼性を向上させることができる。
【００５９】
なお、図３に示すように、リダンダンシー回路部５０は、リダンダンシー回路ＲＤＮと同一の回路構成を有する（ｎ＋２）個のリダンダンシー回路ＲＤ０〜ＲＤ（ｎ＋１）を含み、当該リダンダンシー回路ＲＤ０〜ＲＤ（ｎ＋１）は、パリティ用ビット領域２０Ａ、データ用ビット領域２０Ｂのｎビット分の各ビット列、及びリダンダンシー用ビット領域２０Ｃに対応するように設けられている。
【００６０】
ここでは、始めに、データ用ビット領域２０Ｂのうち、１〜Ｎビット目のビット列に不良ビットが存在しない場合における、Ｎビット目のリダンダンシー回路ＲＤＮの動作について説明する。
【００６１】
リダンダンシー回路ＲＤＮに入力される入力信号ＳＩＮは、データ用ビット領域２０Ｂのうち、１〜（Ｎ−１）ビット目のビット列に、不良ビットが存在するか否かに関する情報を示す。この場合、１〜（Ｎ−１）ビット目のビット列には不良ビットが存在しないため、リダンダンシー回路ＲＤＮは、入力信号ＳＩＮとして“Ｌ”レベルが与えられ、これをＯＲ回路１１０Ｎに入力する。
【００６２】
また、Ｎビット目のビット列にも不良ビットが存在しないため、リダンダンシー回路ＲＤＮは、Ｎビット目のリダンダンシー情報Ｓ８０Ｎとして“Ｌ”レベルが与えられ、これをＯＲ回路１１０Ｎに入力する。
【００６３】
ＯＲ回路１１０Ｎは、“Ｌ”レベルの入力信号ＳＩＮと、“Ｌ”レベルのリダンダンシー情報Ｓ８０Ｎとの論理和を演算し、その結果得られた“Ｌ”レベルを出力信号ＳＯとして、マルチプレクサ１２０Ｎ及び１３０Ｎに出力すると共に、隣接する（Ｎ＋１）ビット目のリダンダンシー回路ＲＤ（Ｎ＋１）に出力する。
【００６４】
この場合、マルチプレクサ１２０Ｎは、（Ｎ−１）ビット目のデータＳ１０（Ｎ−１）と、Ｎビット目のデータＳ１０Ｎとのうち、Ｎビット目のデータＳ１０Ｎを選択し、これをＮビット目のビット列に書き込む。
【００６５】
一方、マルチプレクサ１３０Ｎは、Ｎビット目のビット列から読み出されたデータＳ３０Ｎと、（Ｎ＋１）ビット目のビット列から読み出されたデータＳ３０（Ｎ＋１）とのうち、Ｎビット目のビット列から読み出されたデータＳ１０Ｎを選択し、これを外部に出力する。
【００６６】
続いて、１〜（Ｎ−１）ビット目のビット列に不良ビットが存在せずに、Ｎビット目のビット列に不良ビットが存在する場合における、Ｎ及び（Ｎ＋１）ビット目のリダンダンシー回路ＲＤＮ及びＲＤ（Ｎ＋１）の動作について説明する。
【００６７】
この場合、１〜（Ｎ−１）ビット目のビット列には不良ビットが存在しないため、リダンダンシー回路ＲＤＮは、入力信号ＳＩＮとして“Ｌ”レベルが与えられ、これをＯＲ回路１１０Ｎに入力する。
【００６８】
一方、Ｎビット目のビット列には不良ビットが存在するため、リダンダンシー回路ＲＤＮは、Ｎビット目のリダンダンシー情報Ｓ８０Ｎとして“Ｈ”レベルが与えられ、これをＯＲ回路１１０Ｎに入力する。
【００６９】
ＯＲ回路１１０Ｎは、“Ｌ”レベルの入力信号ＳＩＮと、“Ｈ”レベルのリダンダンシー情報Ｓ８０Ｎとの論理和を演算し、その結果得られた“Ｈ”レベルを出力信号ＳＯＮとして、マルチプレクサ１２０Ｎ及び１３０Ｎに出力すると共に、隣接する（Ｎ＋１）ビット目のリダンダンシー回路ＲＤ（Ｎ＋１）に出力する。この場合、マルチプレクサ１２０Ｎは、Ｎビット目のデータＳ１０Ｎを選択しないため、当該Ｎビット目のデータＳ１０Ｎは、Ｎビット目のビット列に書き込まれない。
【００７０】
（Ｎ＋１）ビット目のリダンダンシー回路ＲＤ（Ｎ＋１）のＯＲ回路１１０（Ｎ＋１）は、入力信号ＳＩ（Ｎ＋１）として“Ｈ”レベルが入力されると、（Ｎ＋１）ビット目のリダンダンシー情報Ｓ８０（Ｎ＋１）にかかわらず、出力信号ＳＯ（Ｎ＋１）として“Ｈ”レベルを、マルチプレクサ１２０（Ｎ＋１）及び１３０（Ｎ＋１）に出力すると共に、図示しない（Ｎ＋２）ビット目のリダンダンシー回路ＲＤ（Ｎ＋２）に出力する。
【００７１】
マルチプレクサ１２０（Ｎ＋１）には、Ｎビット目のデータＳ１０Ｎと、（Ｎ＋１）ビット目のデータＳ１０（Ｎ＋１）とが入力され、当該マルチプレクサ１２０（Ｎ＋１）は、“Ｈ”レベルの出力信号ＳＯ（Ｎ＋１）が与えられると、これらのうち、Ｎビット目のデータＳ１０Ｎを選択し、これを（Ｎ＋１）ビット目のビット列に書き込む。
【００７２】
（Ｎ＋２）〜ｎビット目のリダンダンシー回路ＲＤ（Ｎ＋２）〜ＲＤｎには、同様に、入力信号ＳＩ（Ｎ＋２）〜ＳＩｎとして“Ｈ”レベルが順次与えられ、これにより書き込み対象のビット列を、１ビットずつリダンダンシー用ビット領域２０Ｃ側に移動させながら、データＳ１０を書き込む。
【００７３】
一方、読み出し時には、マルチプレクサ１３０Ｎには、Ｎビット目のビット列から読み出されたデータＳ３０Ｎと、（Ｎ＋１）ビット目のビット列から読み出されたデータＳ３０（Ｎ＋１）とが入力され、当該マルチプレクサ１３０Ｎは、“Ｈ”レベルの出力信号ＳＯＮが与えられると、これらのうち、（Ｎ＋１）ビット目のビット列から読み出されたデータＳ３０（Ｎ＋１）を選択し、これを出力する。
【００７４】
（Ｎ＋１）〜ｎビット目のリダンダンシー回路ＲＤ（Ｎ＋１）〜ＲＤｎについても同様に、読み出し対象のビット列を、１ビットずつリダンダンシー用ビット領域２０Ｃ側に移動させながら、データＳ３０を読み出す。
【００７５】
（２）第２の実施の形態
図４に、本発明の第２の実施の形態によるキャッシュメモリ２００の具体的な構成を示す。なお、図２に示された要素と同一のものには同一の符号を付して説明を省略する。
【００７６】
このキャッシュメモリ２００は、データＳ１０を書き込む際には、データＳ１０をエラー訂正コード（ＥＣＣ：Error Correcting Code）生成回路２１０に入力し、当該エラー訂正コード生成回路２１０によってエラー訂正コードＳ１００を生成した後、これをキャッシュデータ領域部２０に与える。
【００７７】
キャッシュメモリ２００は、メモリアドレスＳ２０の下位アドレスによって指定されたラインのキャッシュデータ領域部２０のうち、エラー訂正コード用ビット領域２０Ｄに、当該エラー訂正コードＳ１００を書き込む。なお、その際、キャッシュメモリ２００は、パリティ用ビット領域２０ＡにはパリティコードＳ５０を書き込み、データ用ビット領域２０ＢにはデータＳ１０を書き込む。
【００７８】
一方、キャッシュメモリ２００は、データＳ３０を読み出す際には、メモリアドレスＳ２０の下位ビットによって指定されたラインのエラー訂正コード用ビット領域２０Ｄからエラー訂正コードＳ１１０を読み出し、これをエラー訂正回路２２０に出力する。
【００７９】
エラー訂正回路２２０には、データ用ビット領域２０Ｂから読み出されたデータＳ３０が入力され、エラー訂正回路２２０は、データＳ３０にエラーが発生した場合には、エラー訂正コードＳ１１０を用いてデータＳ３０に対してエラー訂正を行い、その結果得られたデータＳ１２０をデータ比較回路１００に出力する。
【００８０】
データ比較回路１００は、キャッシュデータ領域部２０から読み出された、エラーを有するデータＳ３０と、エラー訂正回路２２０によってエラー訂正された、正当なデータＳ１２０とを、１ビット毎に比較することにより、不良ビットを特定し、当該不良ビットの位置を表すリダンダンシー情報Ｓ８０を、内部の出力側に設けられたレジスタに記憶すると共に、リダンダンシー回路部５０に出力する。
【００８１】
これ以降、リダンダンシー回路部５０は、第１の実施の形態と同様に、リダンダンシー情報Ｓ８０に基づいて、キャッシュデータ領域部２０に対してデータの書き込み及び読み出しを行うことにより、不良ビットを救済する。
【００８２】
このように本実施の形態によれば、第１の実施の形態と同様に、出荷時のテストによって検出できなかった不良ビットや、出荷後の故障によって発生した不良ビットが存在する場合であっても、当該不良ビットを救済することができ、従ってキャッシュメモリ２００の信頼性を向上させることができる。
【００８３】
なお、上述の実施の形態は一例であって、本発明を限定するものではない。例えばキャッシュメモリ１０及び２００は、命令用キャッシュメモリに限らず、ＣＰＵ（図示せず）によって処理されたデータを、キャッシュメモリ１０及び２００並びにメインメモリ（図示せず）に格納する、ライトスルー方式のデータ用キャッシュメモリを適用することも可能である。
【００８４】
また、第２の実施の形態の場合には、エラー訂正によって正当なデータＳ１２０を生成することにより、ＣＰＵ（図示せず）によって処理されたデータを、キャッシュメモリ１０及び２２０のみに格納する、ライトバック方式のデータ用キャッシュメモリなど、他の種々のメモリに適用することも可能である。
【００８５】
さらに、この第２の実施の形態では、キャッシュデータ無効回路７０を設けず、データＳ３０にパリティエラーが検出されても、キャッシュタグ領域部３０に書き込まれているアドレスと、メモリアドレスＳ２０の上位ビットとが一致した場合には、ヒット信号Ｓ４０として“Ｈ”レベルをＣＰＵ（図示せず）に通知することにより、エラー訂正されたデータＳ１２０をＣＰＵ（図示せず）に使用させることも可能である。
【００８６】
この場合、不良ビットの存在によって固定的にエラーが発生しても、当該不良ビットをリダンダンシー用ビットによって救済することにより、偶発的なエラーに対してエラー訂正を行うことができ、これによりキャッシュメモリ２００の信頼性を向上させることができる。
【図面の簡単な説明】
【００８７】
【図１】本発明の第１の実施の形態によるキャッシュメモリの基本的な構成を示すブロック図である。
【図２】同キャッシュメモリの具体的な構成を示すブロック図である。
【図３】リダンダンシー回路部の構成を示す回路図である。
【図４】本発明の第２の実施の形態によるキャッシュメモリの具体的な構成を示すブロック図である。
【符号の説明】
【００８８】
１０、２００  キャッシュメモリ
２０  キャッシュデータ領域部
３０  キャッシュタグ領域部
４０  パリティ生成回路
５０  リダンダンシー回路部
６０  パリティエラー検出回路
７０  キャッシュデータ無効回路
１００  データ比較回路
２１０  エラー訂正コード生成回路
２２０  エラー訂正回路
【図１】
2006286135.tif 000003
【図２】
2006286135.tif 000004
【図３】
2006286135.tif 000005
【図４】
2006286135.tif 000006