説明

半導体記憶装置及びその読み書き制御方法

【課題】信頼性を向上させることができる半導体記憶装置及びその読み書き制御方法を提供する。
【解決手段】データを記憶する記憶素子と、不良記憶素子を救済するためのリダンダンシー用記憶素子が所定方向に沿って複数配置された記憶部20と、記憶部20のデータ領域20Bから読み出された読み出しデータS30と所定の参照データS10とを比較することにより、不良記憶素子を特定し、不良記憶素子の位置を表すリダンダンシー情報S80を出力する比較部100と、データの書き込み及び読み出し時、不良記憶素子が存在する不良記憶素子列及び不良記憶素子列よりリダンダンシー領域20C側に位置する記憶素子列に対して、リダンダンシー領域20C側に隣接する記憶素子列又はリダンダンシー領域20Cに移動させるリダンダンシー部50とを備える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、半導体記憶装置及びその読み書き制御方法に関する。
【背景技術】
【0002】
コンピュータは、記憶装置として、例えばDRAMなどのメインメモリ(主記憶装置)を有する。CPUは、ハードディスクから必要なデータをメインメモリに転送して記憶し、当該メインメモリに記憶されたデータを読み出して実行することにより、コンピュータの動作を制御する。
【0003】
しかし、メインメモリとして使用されるDRAMの処理速度は、CPUと比較して非常に低速である。このため、CPUは、メインメモリに対してデータの読み出し要求を行っても、当該メインメモリからデータが転送されるのに時間を要し、これによりCPUの処理速度は低下することになる。
【0004】
そこで、処理速度が速い例えばSRAMなどのキャッシュメモリを設け、メインメモリから読み出され、使用頻度の高いデータをキャッシュメモリに記憶した後、再び当該データを読み出す際には、メインメモリではなくキャッシュメモリから読み出すことにより、CPUの処理速度の向上を図っている。
【0005】
具体的には、キャッシュメモリは、CPUからデータの読み出し要求が与えられると、当該データがキャッシュメモリ内に存在するか否かを調べ、その結果をCPUに通知する。CPUは、キャッシュメモリから当該データが存在すると通知された場合には、キャッシュメモリから読み出されたデータを用いて所望の処理を実行する。
【0006】
これに対して、CPUは、キャッシュメモリから当該データが存在しないと通知された場合には、メインメモリから当該データを読み出し、これを用いて所望の処理を実行すると共に、当該データをキャッシュメモリに記憶する。
【0007】
ところで、かかるキャッシュメモリを製造し出荷する際には、メモリテスタを用いて当該キャッシュメモリをテストするが、このとき不良ビット(不良メモリセル)を検出できない場合があり、さらに、出荷後に特定のビット(メモリセル)が故障することにより、不良ビットが発生する場合もあり、これらの場合には、キャッシュメモリが誤動作するという問題があった。
【0008】
例えば、キャッシュメモリから読み出されたデータに発生したエラーが、ノイズなどによる偶発的なエラーである場合には、初期化処理(すなわちブート処理)を行えば、その後はキャッシュメモリを正常に動作させることができる。
【0009】
しかし、データに発生したエラーが、出荷時のテストによって検出できなかった不良ビットや、出荷後の故障によって発生した不良ビットに基づく固定的なエラーである場合には、キャッシュメモリは正常に動作しないという問題があった。
【0010】
また、キャッシュメモリが誤動作した場合には、CPUは正常に動作しないため、不具合の原因を解析することが困難になるという問題があった。
【0011】
さらに、ノイズなどによる偶発的なエラーに対してエラー訂正を行う方法もあるが、不良ビットの存在によって固定的にエラーが発生する場合には、かかる偶発的なエラーに対してエラー訂正を行うことができなくなり、キャッシュメモリの信頼性が低下するという問題があった。
【0012】
以下、キャッシュメモリのエラー検出に関する文献名を記載する。
【特許文献1】特開2003−216493号公報
【発明の開示】
【発明が解決しようとする課題】
【0013】
本発明は、信頼性を向上させることができる半導体記憶装置及びその読み書き制御方法を提供することを目的とする。
【課題を解決するための手段】
【0014】
本発明の一態様による半導体記憶装置によれば、
データを記憶する記憶素子が所定方向に沿って複数配置された記憶素子列を、複数列有するデータ領域と、不良記憶素子を救済するためのリダンダンシー用記憶素子が前記所定方向に沿って複数配置されたリダンダンシー領域とを有する記憶部と、
前記記憶部の前記データ領域から読み出された読み出しデータと所定の参照データとを比較することにより、前記不良記憶素子を特定し、前記不良記憶素子の位置を表すリダンダンシー情報を出力する比較部と、
データの書き込み及び読み出し時、前記不良記憶素子が存在する不良記憶素子列及び前記不良記憶素子列より前記リダンダンシー領域側に位置する前記記憶素子列に対して、データの書き込み及び読み出しを行う際には、前記リダンダンシー情報に基づいて、書き込み及び読み出し対象の前記記憶素子列を、前記リダンダンシー領域側に隣接する前記記憶素子列又は前記リダンダンシー領域に移動させるリダンダンシー部と
を備えることを特徴とする。
【0015】
また本発明の一態様による半導体記憶装置の読み書き制御方法によれば、
データを記憶する記憶素子が所定方向に沿って複数配置された記憶素子列を、複数列有するデータ領域と、不良記憶素子を救済するためのリダンダンシー用記憶素子が前記所定方向に沿って複数配置されたリダンダンシー領域とを有する記憶部を有する半導体記憶装置に対してデータの読み書きを行う際に、
前記記憶部の前記データ領域から読み出された読み出しデータと所定の参照データとを比較することにより、前記不良記憶素子を特定し、前記不良記憶素子の位置を表すリダンダンシー情報を生成するステップと、
データの書き込み及び読み出し時、前記不良記憶素子が存在する不良記憶素子列及び前記不良記憶素子列より前記リダンダンシー領域側に位置する前記記憶素子列に対して、データの書き込み及び読み出しを行う際には、前記リダンダンシー情報に基づいて、書き込み及び読み出し対象の前記記憶素子列を、前記リダンダンシー領域側に隣接する前記記憶素子列又は前記リダンダンシー領域に移動させるステップと
を備えることを特徴とする。
【発明の効果】
【0016】
本発明の半導体記憶装置及びその読み書き制御方法によれば、信頼性を向上させることができる。
【発明を実施するための最良の形態】
【0017】
以下、本発明の実施の形態について図面を参照して説明する。
【0018】
(1)第1の実施の形態
図1に、本発明の第1の実施の形態によるキャッシュメモリ10の基本的な構成を示す。キャッシュメモリ10は、例えばSRAMからなり、データを格納するキャッシュデータ領域部20と、当該データがメインメモリ(図示せず)に格納されているアドレス(以下、これをメモリアドレスと呼ぶ)のうち、所定の上位ビットを格納するキャッシュタグ領域部30とを有する。
【0019】
キャッシュメモリ10は、キャッシュデータ領域部20及びキャッシュタグ領域部30を、いずれもラインと呼ばれる単位で分割して管理し、キャッシュデータ領域部20の各ラインと、キャッシュタグ領域部30の各ラインとは、メモリアドレスのうち所定の下位ビットによって、対応付けられて管理される。
【0020】
具体的には、キャッシュメモリ10は、メインメモリ(図示せず)から読み出されたデータS10をキャッシュデータ領域部20に書き込む場合には、CPU(図示せず)から与えられたメモリアドレスS20の下位ビットによって指定されたラインのうち、キャッシュデータ領域部20にはデータS10を書き込むと共に、キャッシュタグ領域部30にはメモリアドレスS20の上位ビットを書き込む。
【0021】
一方、キャッシュメモリ10は、CPU(図示せず)からデータの読み出し要求が与えられると、メモリアドレスS20の下位ビットによって指定されたラインのキャッシュデータ領域部20から、データS30を読み出して出力する。
【0022】
これと共に、キャッシュメモリ10は、メモリアドレスS20の下位ビットによって指定されたラインのキャッシュタグ領域部30に書き込まれているアドレスと、メモリアドレスS20の上位ビットとを比較する。
【0023】
キャッシュメモリ10は、キャッシュタグ領域部30に書き込まれているアドレスと、メモリアドレスS20の上位ビットとが一致した場合には、ヒット信号S40として“H”レベルをCPU(図示せず)に出力することにより、キャッシュメモリ10内にデータが存在することを、CPU(図示せず)に通知する。
【0024】
この場合、CPU(図示せず)は、メインメモリ(図示せず)からデータを読み出すことなく、キャッシュメモリ10から読み出されたデータS30を用いて所望の処理を実行する。
【0025】
これに対して、キャッシュメモリ10は、キャッシュタグ領域部30に書き込まれているアドレスと、メモリアドレスS20の上位ビットとが一致しなかった場合には、ヒット信号S40として“L”レベルをCPU(図示せず)に出力することにより、キャッシュメモリ10内にデータが存在しないことを、CPU(図示せず)に通知する。
【0026】
この場合、CPU(図示せず)は、キャッシュメモリ10から読み出されたデータS30を採用することなく、メインメモリ(図示せず)からデータを読み出し、これを用いて所望の処理を実行すると共に、当該データをキャッシュメモリ10に書き込む。
【0027】
図2に、キャッシュメモリ10の具体的な構成を示す。一般にキャッシュメモリは、プログラムなどのCPUの命令を格納する命令用キャッシュメモリと、CPUによって処理されたデータを格納するデータ用キャッシュメモリとに分類され、本実施の形態の場合、キャッシュメモリ10は、命令用キャッシュメモリからなる。
【0028】
キャッシュメモリ10は、データS10を書き込む場合には、データS10をパリティ生成回路40に入力し、当該パリティ生成回路40によってパリティコードS50を生成した上で、当該パリティコードS50及びデータS10をリダンダンシー回路部50を介してキャッシュデータ領域部20に与える。
【0029】
キャッシュメモリ10は、メモリアドレスS20の下位ビットによって指定されたラインのキャッシュデータ領域部20のうち、パリティ用ビット領域20AにはパリティコードS50を書き込み、データ用ビット領域20BにはデータS10を書き込む。これと共に、キャッシュメモリ10は、メモリアドレスS20の下位ビットによって指定されたラインのキャッシュタグ領域部30には、メモリアドレスS20の上位ビットを書き込む。
【0030】
一方、キャッシュメモリ10は、CPU(図示せず)からデータの読み出し要求が与えられると、メモリアドレスS20の下位ビットによって指定されたラインのキャッシュデータ領域部20のデータ用ビット領域20BからデータS30を読み出し、これをリダンダンシー回路部50を介してパリティエラー検出回路60及びCPU(図示せず)に出力すると共に、当該ラインのパリティ用ビット領域20AからパリティコードS35を読み出し、これをリダンダンシー回路部50を介してパリティエラー検出回路60に出力する。
【0031】
パリティエラー検出回路60は、パリティコードS35を用いてデータS30に対してパリティテェックを行い、その結果、当該データS30にエラーがないと判定した場合には、パリティエラー信号S60として“L”レベルを、キャッシュデータ無効回路70のNOR回路90及びCPU(図示せず)に出力する。
【0032】
これと共に、キャッシュメモリ10は、メモリアドレスS20の下位ビットによって指定されたラインのキャッシュタグ領域部30に書き込まれているアドレスと、メモリアドレスS20の上位ビットとを比較する。
【0033】
キャッシュメモリ10は、キャッシュタグ領域部30に書き込まれているアドレスと、メモリアドレスS20の上位ビットとが一致した場合には、ヒット信号S40として“H”レベルをキャッシュデータ無効回路70のインバータ80に出力する。
【0034】
インバータ80は、“H”レベルのヒット信号S40を反転して“L”レベルを得、これをNOR回路90に出力する。NOR回路90は、“L”レベルのパリティエラー信号S60と、インバータ80から出力された“L”レベルとの否定的論理和を演算し、その結果得られた“H”レベルをヒット信号S70としてCPU(図示せず)に出力する。
【0035】
この場合、CPU(図示せず)は、メインメモリ(図示せず)からデータを読み出すことなく、キャッシュメモリ10から読み出されたデータS30を用いて所望の処理を実行する。
【0036】
これに対して、キャッシュメモリ10は、キャッシュタグ領域部30に書き込まれているアドレスと、メモリアドレスS20の上位ビットとが一致しなかった場合には、ヒット信号S40として“L”レベルをキャッシュデータ無効回路70のインバータ80に出力する。
【0037】
インバータ80は、“L”レベルのヒット信号S40を反転して“H”レベルを得、これをNOR回路90に出力する。NOR回路90は、“L”レベルのパリティエラー信号S60と、インバータ80から出力された“H”レベルとの否定的論理和を演算し、その結果得られた“L”レベルをヒット信号S70としてCPU(図示せず)に出力する。
【0038】
この場合、CPU(図示せず)は、キャッシュメモリ10から読み出されたデータS30を採用することなく、メインメモリ(図示せず)からデータを読み出し、これを用いて所望の処理を実行すると共に、当該データをキャッシュメモリ10に書き込む。
【0039】
ところで、パリティエラー検出回路60は、パリティコードS35を用いてデータS30に対してパリティテェックを行った結果、当該データS30にエラーがあると判定した場合には、パリティエラー信号S60として“H”レベルをキャッシュデータ無効回路70のNOR回路90に出力すると共に、当該“H”レベルのパリティエラー信号S60を割り込み信号としてCPU(図示せず)に出力する。
【0040】
NOR回路90は、“H”レベルのパリティエラー信号S60と、インバータ80から出力される論理レベルとの否定的論理和を演算し、その結果得られた“L”レベルをヒット信号S70としてCPU(図示せず)に出力する。
【0041】
すなわち、キャッシュデータ無効回路70は、データS30にエラーがあると判定された場合には、ヒット信号S70を強制的に“L”レベルにすることにより、キャッシュデータ領域部20から読み出されたデータS30を無効にする。
【0042】
この場合、CPU(図示せず)は、ヒット信号S70として“L”レベルが与えられると、キャッシュメモリ10から読み出されたデータS30を採用することなく、メインメモリ(図示せず)からデータを読み出し、これを用いて所望の処理を実行すると共に、当該データをキャッシュメモリ10に与える。
【0043】
これと共に、CPU(図示せず)は、割り込み信号として、“H”レベルのパリティエラー信号S60が与えられると、割り込みハンドラによって、キャッシュメモリ10のフラッシュ(無効化)を行うことにより、全てのデータを一括して消去する。その際、CPU(図示せず)は、割り込みハンドラによって、不具合の原因を解析することが可能である。
【0044】
データ比較回路100には、キャッシュメモリ10のフラッシュを行う前に、キャッシュデータ領域部20から読み出された、エラーを有するデータS30が、リダンダンシー回路部50を介して入力されると共に、メインメモリ(図示せず)から読み出された、正当なデータS10が入力される。
【0045】
データ比較回路100は、キャッシュデータ領域部20から読み出されたデータS30と、メインメモリ(図示せず)から読み出されたデータS10とを、1ビット毎に比較することにより、エラーが発生したビット(以下、これを不良ビット呼ぶ)を特定し、当該不良ビットの位置を表すリダンダンシー情報S80を、内部の出力側に設けられたレジスタに記憶すると共に、リダンダンシー回路部50に出力する。リダンダンシー回路部50は、このリダンダンシー情報S80に基づいて、キャッシュデータ領域部20に対してデータS10を書き込む。
【0046】
なお、リダンダンシー情報S80を記憶するためのレジスタを、リダンダンシー回路部50内部に設けても良く、また、データS30とデータS10とを記憶するためのレジスタを、データ比較回路100の入力側に設けても良い。
【0047】
因みに、キャッシュメモリ10から読み出されたデータS30にエラーが発生すると、初期化処理(すなわちブート処理)を行うコンピュータの場合には、キャッシュメモリ10のフラッシュ(無効化)を行う必要はない。この場合、CPU(図示せず)は、割り込み信号として、“H”レベルのパリティエラー信号S60が与えられると、リダンダンシー情報S80をデータ比較回路100内部のレジスタに記憶させた上で、初期化処理を実行すれば良い。
【0048】
ところで、本実施の形態の場合、キャッシュデータ領域部20は、不良ビットを救済するためのリダンダンシー用ビット領域20Cを有する。また、キャッシュデータ領域部20のデータ用ビット領域20Bは、1ビット分のデータを記憶するためのビット(メモリセル)がカラム方向に沿って複数配置されたビット列を、複数列(1〜n列)有する。
【0049】
この場合、パリティ用ビット領域20A側からリダンダンシー用ビット領域20C側に向かって、1〜nビット目のビット列が順次配置され、当該ビット列を、不良ビットを救済する際の置き換えの単位として採用する。
【0050】
ここでは、例えばN(1≦N≦n)ビット目のビット列に不良ビットが存在する場合であって、nビットのデータS10をキャッシュデータ領域部20に書き込む場合について説明する。この場合、リダンダンシー回路部50は、データS10のうち、1ビット目のデータS10を、1ビット目のビット列に書き込み、2ビット目のデータS10を、2ビット目のビット列に書き込む。これ以降、同様にして、データS10の書き込みを行うことにより、(N−1)ビット目のデータS10を、(N−1)ビット目のビット列に書き込む。
【0051】
リダンダンシー回路部50は、Nビット目のデータS10を、Nビット目のビット列に書き込まず、Nビット目のビット列に対してリダンダンシー用ビット領域20C側に隣接する(N+1)ビット目のビット列に、Nビット目のデータS10を書き込む。
【0052】
因みに、Nビット目のビット列に不良ビットが存在しない場合には、リダンダンシー回路部50は、Nビット目のデータS10を、Nビット目のビット列に書き込む。
【0053】
そして、(N+1)ビット目のデータS10を、(N+2)ビット目のビット列に書き込み、これ以降、同様にして、書き込み対象のビット列を、1ビットずつ移動させながら、データS10を書き込んでいくことにより、nビット目のデータS10を、リダンダンシー用ビット領域20Cに書き込む。
【0054】
すなわち、リダンダンシー回路部50は、不良ビットが存在するビット列にはデータS10を書き込まず、当該ビット列及び当該ビット列よりリダンダンシー用ビット領域20C側に位置するビット列にデータS10を書き込む際には、書き込み対象のビット列を、1ビットずつリダンダンシー用ビット領域20C側に移動させながら、データS10を書き込む。
【0055】
続いて、リダンダンシー回路部50は、キャッシュデータ領域部20からデータS30を読み出す際には、1ビット目のビット列から1ビット目のデータS30を読み出し、2ビット目のビット列から2ビット目のデータS30を読み出し、これ以降、同様にして、データS30の読み出しを行うことにより、(N−1)ビット目のビット列から(N−1)ビット目のデータS30を読み出す。
【0056】
リダンダンシー回路部50は、Nビット目のビット列からNビット目のデータS30を読み出さず、Nビット目のビット列に対してリダンダンシー用ビット領域20側に隣接する(N+1)ビット目のビット列から、Nビット目のデータS30を読み出す。
【0057】
そして、(N+2)ビット目のビット列から、(N+1)ビット目のデータS30を読み出し、これ以降、同様にして、読み出し対象のビット列を、1ビットずつ移動させながら、データS30を読み出していくことにより、リダンダンシー用ビット領域20Cからnビット目のデータS30を読み出す。
【0058】
このように本実施の形態によれば、出荷時のテストによって検出できなかった不良ビットや、出荷後の故障によって発生した不良ビットが存在する場合であっても、当該不良ビットを救済することができ、従ってキャッシュメモリ10の信頼性を向上させることができる。
【0059】
なお、図3に示すように、リダンダンシー回路部50は、リダンダンシー回路RDNと同一の回路構成を有する(n+2)個のリダンダンシー回路RD0〜RD(n+1)を含み、当該リダンダンシー回路RD0〜RD(n+1)は、パリティ用ビット領域20A、データ用ビット領域20Bのnビット分の各ビット列、及びリダンダンシー用ビット領域20Cに対応するように設けられている。
【0060】
ここでは、始めに、データ用ビット領域20Bのうち、1〜Nビット目のビット列に不良ビットが存在しない場合における、Nビット目のリダンダンシー回路RDNの動作について説明する。
【0061】
リダンダンシー回路RDNに入力される入力信号SINは、データ用ビット領域20Bのうち、1〜(N−1)ビット目のビット列に、不良ビットが存在するか否かに関する情報を示す。この場合、1〜(N−1)ビット目のビット列には不良ビットが存在しないため、リダンダンシー回路RDNは、入力信号SINとして“L”レベルが与えられ、これをOR回路110Nに入力する。
【0062】
また、Nビット目のビット列にも不良ビットが存在しないため、リダンダンシー回路RDNは、Nビット目のリダンダンシー情報S80Nとして“L”レベルが与えられ、これをOR回路110Nに入力する。
【0063】
OR回路110Nは、“L”レベルの入力信号SINと、“L”レベルのリダンダンシー情報S80Nとの論理和を演算し、その結果得られた“L”レベルを出力信号SOとして、マルチプレクサ120N及び130Nに出力すると共に、隣接する(N+1)ビット目のリダンダンシー回路RD(N+1)に出力する。
【0064】
この場合、マルチプレクサ120Nは、(N−1)ビット目のデータS10(N−1)と、Nビット目のデータS10Nとのうち、Nビット目のデータS10Nを選択し、これをNビット目のビット列に書き込む。
【0065】
一方、マルチプレクサ130Nは、Nビット目のビット列から読み出されたデータS30Nと、(N+1)ビット目のビット列から読み出されたデータS30(N+1)とのうち、Nビット目のビット列から読み出されたデータS10Nを選択し、これを外部に出力する。
【0066】
続いて、1〜(N−1)ビット目のビット列に不良ビットが存在せずに、Nビット目のビット列に不良ビットが存在する場合における、N及び(N+1)ビット目のリダンダンシー回路RDN及びRD(N+1)の動作について説明する。
【0067】
この場合、1〜(N−1)ビット目のビット列には不良ビットが存在しないため、リダンダンシー回路RDNは、入力信号SINとして“L”レベルが与えられ、これをOR回路110Nに入力する。
【0068】
一方、Nビット目のビット列には不良ビットが存在するため、リダンダンシー回路RDNは、Nビット目のリダンダンシー情報S80Nとして“H”レベルが与えられ、これをOR回路110Nに入力する。
【0069】
OR回路110Nは、“L”レベルの入力信号SINと、“H”レベルのリダンダンシー情報S80Nとの論理和を演算し、その結果得られた“H”レベルを出力信号SONとして、マルチプレクサ120N及び130Nに出力すると共に、隣接する(N+1)ビット目のリダンダンシー回路RD(N+1)に出力する。この場合、マルチプレクサ120Nは、Nビット目のデータS10Nを選択しないため、当該Nビット目のデータS10Nは、Nビット目のビット列に書き込まれない。
【0070】
(N+1)ビット目のリダンダンシー回路RD(N+1)のOR回路110(N+1)は、入力信号SI(N+1)として“H”レベルが入力されると、(N+1)ビット目のリダンダンシー情報S80(N+1)にかかわらず、出力信号SO(N+1)として“H”レベルを、マルチプレクサ120(N+1)及び130(N+1)に出力すると共に、図示しない(N+2)ビット目のリダンダンシー回路RD(N+2)に出力する。
【0071】
マルチプレクサ120(N+1)には、Nビット目のデータS10Nと、(N+1)ビット目のデータS10(N+1)とが入力され、当該マルチプレクサ120(N+1)は、“H”レベルの出力信号SO(N+1)が与えられると、これらのうち、Nビット目のデータS10Nを選択し、これを(N+1)ビット目のビット列に書き込む。
【0072】
(N+2)〜nビット目のリダンダンシー回路RD(N+2)〜RDnには、同様に、入力信号SI(N+2)〜SInとして“H”レベルが順次与えられ、これにより書き込み対象のビット列を、1ビットずつリダンダンシー用ビット領域20C側に移動させながら、データS10を書き込む。
【0073】
一方、読み出し時には、マルチプレクサ130Nには、Nビット目のビット列から読み出されたデータS30Nと、(N+1)ビット目のビット列から読み出されたデータS30(N+1)とが入力され、当該マルチプレクサ130Nは、“H”レベルの出力信号SONが与えられると、これらのうち、(N+1)ビット目のビット列から読み出されたデータS30(N+1)を選択し、これを出力する。
【0074】
(N+1)〜nビット目のリダンダンシー回路RD(N+1)〜RDnについても同様に、読み出し対象のビット列を、1ビットずつリダンダンシー用ビット領域20C側に移動させながら、データS30を読み出す。
【0075】
(2)第2の実施の形態
図4に、本発明の第2の実施の形態によるキャッシュメモリ200の具体的な構成を示す。なお、図2に示された要素と同一のものには同一の符号を付して説明を省略する。
【0076】
このキャッシュメモリ200は、データS10を書き込む際には、データS10をエラー訂正コード(ECC:Error Correcting Code)生成回路210に入力し、当該エラー訂正コード生成回路210によってエラー訂正コードS100を生成した後、これをキャッシュデータ領域部20に与える。
【0077】
キャッシュメモリ200は、メモリアドレスS20の下位アドレスによって指定されたラインのキャッシュデータ領域部20のうち、エラー訂正コード用ビット領域20Dに、当該エラー訂正コードS100を書き込む。なお、その際、キャッシュメモリ200は、パリティ用ビット領域20AにはパリティコードS50を書き込み、データ用ビット領域20BにはデータS10を書き込む。
【0078】
一方、キャッシュメモリ200は、データS30を読み出す際には、メモリアドレスS20の下位ビットによって指定されたラインのエラー訂正コード用ビット領域20Dからエラー訂正コードS110を読み出し、これをエラー訂正回路220に出力する。
【0079】
エラー訂正回路220には、データ用ビット領域20Bから読み出されたデータS30が入力され、エラー訂正回路220は、データS30にエラーが発生した場合には、エラー訂正コードS110を用いてデータS30に対してエラー訂正を行い、その結果得られたデータS120をデータ比較回路100に出力する。
【0080】
データ比較回路100は、キャッシュデータ領域部20から読み出された、エラーを有するデータS30と、エラー訂正回路220によってエラー訂正された、正当なデータS120とを、1ビット毎に比較することにより、不良ビットを特定し、当該不良ビットの位置を表すリダンダンシー情報S80を、内部の出力側に設けられたレジスタに記憶すると共に、リダンダンシー回路部50に出力する。
【0081】
これ以降、リダンダンシー回路部50は、第1の実施の形態と同様に、リダンダンシー情報S80に基づいて、キャッシュデータ領域部20に対してデータの書き込み及び読み出しを行うことにより、不良ビットを救済する。
【0082】
このように本実施の形態によれば、第1の実施の形態と同様に、出荷時のテストによって検出できなかった不良ビットや、出荷後の故障によって発生した不良ビットが存在する場合であっても、当該不良ビットを救済することができ、従ってキャッシュメモリ200の信頼性を向上させることができる。
【0083】
なお、上述の実施の形態は一例であって、本発明を限定するものではない。例えばキャッシュメモリ10及び200は、命令用キャッシュメモリに限らず、CPU(図示せず)によって処理されたデータを、キャッシュメモリ10及び200並びにメインメモリ(図示せず)に格納する、ライトスルー方式のデータ用キャッシュメモリを適用することも可能である。
【0084】
また、第2の実施の形態の場合には、エラー訂正によって正当なデータS120を生成することにより、CPU(図示せず)によって処理されたデータを、キャッシュメモリ10及び220のみに格納する、ライトバック方式のデータ用キャッシュメモリなど、他の種々のメモリに適用することも可能である。
【0085】
さらに、この第2の実施の形態では、キャッシュデータ無効回路70を設けず、データS30にパリティエラーが検出されても、キャッシュタグ領域部30に書き込まれているアドレスと、メモリアドレスS20の上位ビットとが一致した場合には、ヒット信号S40として“H”レベルをCPU(図示せず)に通知することにより、エラー訂正されたデータS120をCPU(図示せず)に使用させることも可能である。
【0086】
この場合、不良ビットの存在によって固定的にエラーが発生しても、当該不良ビットをリダンダンシー用ビットによって救済することにより、偶発的なエラーに対してエラー訂正を行うことができ、これによりキャッシュメモリ200の信頼性を向上させることができる。
【図面の簡単な説明】
【0087】
【図1】本発明の第1の実施の形態によるキャッシュメモリの基本的な構成を示すブロック図である。
【図2】同キャッシュメモリの具体的な構成を示すブロック図である。
【図3】リダンダンシー回路部の構成を示す回路図である。
【図4】本発明の第2の実施の形態によるキャッシュメモリの具体的な構成を示すブロック図である。
【符号の説明】
【0088】
10、200 キャッシュメモリ
20 キャッシュデータ領域部
30 キャッシュタグ領域部
40 パリティ生成回路
50 リダンダンシー回路部
60 パリティエラー検出回路
70 キャッシュデータ無効回路
100 データ比較回路
210 エラー訂正コード生成回路
220 エラー訂正回路

【特許請求の範囲】
【請求項1】
データを記憶する記憶素子が所定方向に沿って複数配置された記憶素子列を、複数列有するデータ領域と、不良記憶素子を救済するためのリダンダンシー用記憶素子が前記所定方向に沿って複数配置されたリダンダンシー領域とを有する記憶部と、
前記記憶部の前記データ領域から読み出された読み出しデータと所定の参照データとを比較することにより、前記不良記憶素子を特定し、前記不良記憶素子の位置を表すリダンダンシー情報を出力する比較部と、
データの書き込み及び読み出し時、前記不良記憶素子が存在する不良記憶素子列及び前記不良記憶素子列より前記リダンダンシー領域側に位置する前記記憶素子列に対して、データの書き込み及び読み出しを行う際には、前記リダンダンシー情報に基づいて、書き込み及び読み出し対象の前記記憶素子列を、前記リダンダンシー領域側に隣接する前記記憶素子列又は前記リダンダンシー領域に移動させるリダンダンシー部と
を備えることを特徴とする半導体記憶装置。
【請求項2】
前記参照データは、外部記憶装置から読み出されたデータであることを特徴とする請求項1記載の半導体記憶装置。
【請求項3】
前記読み出しデータに対して誤り訂正を行うことにより、誤り訂正データを生成する誤り訂正部をさらに備え、
前記参照データは、前記誤り訂正データであることを特徴とする請求項1記載の半導体記憶装置。
【請求項4】
前記記憶部は、エラーの有無を検査するための検査データを記憶する検査データ用記憶素子が前記所定方向に沿って複数配置された検査データ領域をさらに備え、
データの書き込み時には、書き込み対象のデータを基に前記検査データを生成し、これを前記検査データ領域に書き込ませる検査データ生成部と、
データの読み出し時には、前記検査データ領域から読み出された前記検査データを用いて、前記データ領域から読み出されたデータに対してエラー検出を行うエラー検出部と
をさらに備えることを特徴とする請求項1記載の半導体記憶装置。
【請求項5】
データを記憶する記憶素子が所定方向に沿って複数配置された記憶素子列を、複数列有するデータ領域と、不良記憶素子を救済するためのリダンダンシー用記憶素子が前記所定方向に沿って複数配置されたリダンダンシー領域とを有する記憶部を有する半導体記憶装置に対してデータの読み書きを行う際に、
前記記憶部の前記データ領域から読み出された読み出しデータと所定の参照データとを比較することにより、前記不良記憶素子を特定し、前記不良記憶素子の位置を表すリダンダンシー情報を生成するステップと、
データの書き込み及び読み出し時、前記不良記憶素子が存在する不良記憶素子列及び前記不良記憶素子列より前記リダンダンシー領域側に位置する前記記憶素子列に対して、データの書き込み及び読み出しを行う際には、前記リダンダンシー情報に基づいて、書き込み及び読み出し対象の前記記憶素子列を、前記リダンダンシー領域側に隣接する前記記憶素子列又は前記リダンダンシー領域に移動させるステップと
を備えることを特徴とする半導体記憶装置の読み書き制御方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate


【公開番号】特開2006−286135(P2006−286135A)
【公開日】平成18年10月19日(2006.10.19)
【国際特許分類】
【出願番号】特願2005−107297(P2005−107297)
【出願日】平成17年4月4日(2005.4.4)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】