(57)【特許請求の範囲】
【請求項１】
データを格納する半導体メモリと、
前記メモリからデータを読み出す手段と、
データのブロック毎に前記読み出したデータのエラーを検出して訂正するエラー検出訂正手段と、
ブロック毎に、当該ブロックに対して行ったエラー訂正の回数を記録する手段と、
前記エラー訂正手段によってブロックのエラーが訂正された場合に、当該ブロック内で一度に発生したエラーの数であるエラー発生数が、予め定められた閾値未満ならば、エラーが訂正されたブロックを当該ブロックが書き込まれていた前記メモリ内の領域に書き込み、
前記エラー発生数が前記閾値以上ならば、エラーが訂正されたブロックを当該ブロックが書き込まれていた前記メモリ内の領域とは異なる領域に書き込む書込手段と
を備え、
前記書込手段は、
前記エラー訂正手段によってエラーが訂正されたブロックのエラー訂正回数が多い場合には、前記エラー訂正手段によってエラーが訂正されたブロックのエラー訂正回数が少ない場合よりも、前記閾値を低く設定すること
を特徴とする記憶装置。
【請求項２】
請求項１に記載の記憶装置であって、
前記メモリは、
データのブロック毎に、通常データ格納領域、前記通常データのエラー訂正回数およびエラー発生数を含む管理情報を格納する通常管理領域、不良のデータ格納領域を代替えするための代替データ格納領域、ならびに前記代替データ格納領域を管理するための代替管理領域を含むことを特徴とする記憶装置。
【発明の詳細な説明】
技術分野
本発明は半導体メモリを記憶媒体とする記憶装置に関連し、特に記憶するデータの信頼性を向上するために誤り訂正符号を用いた記憶装置に関する。
背景技術
情報機器の発展に伴い、情報データの種類や容量の飛躍的増大により、記憶装置は著しい発展を遂げている。そして記憶容量の増大を促進するために記憶媒体に対して記憶密度を向上する技術開発がすすめられている。しかし、一時的に記憶する、すなわち書き換え可能な記憶媒体にデータを記録する場合には、相変化の磁気や、電荷の蓄積などを利用するため、必ずしも格納データの安全性が保証されるものではなく、記憶密度を向上するとその信頼性は低下して行くのが一般的である。
例えばフラッシュメモリを用いた記憶装置では、メモリ素子に蓄えられた電荷が少しずつ漏れ出すことなどにより、データが破壊されることがある。そのため、これら記憶装置にはほとんどのものに誤り訂正符号を用いたデータ保護機能が備えられている。パーソナルコンピュータで扱われる外部記憶装置は、磁気ディスク装置を基準とした５１２バイトを単位として算出される誤り訂正符号をデータとともに記憶し、読み出す際にデータに誤りが発生していないかを検査し、誤りがあれば訂正してデータを出力し、データの安全性を高めている。
上記従来技術では、誤りの発生が確率的に発生するもの、つまり同一ヶ所に再現するものでなければ全く問題ないが、例えば記憶媒体の疲労や傷、異物付着、断線など、その記憶媒体特有の事故により誤りが定着してしまう場合の考慮がなされていない。無視できる程非常に小さい確率によりこれらが起こる場合には問題はないが、通常の使用において、無視できない確率で誤りが起こる場合には、その誤りが蓄積していくことになる。誤り訂正符号では、通常、定められたビット数や領域を訂正する能力を持つが、その能力を越えた誤りが発生した場合には誤りが発生しているのにそれを検出できない（誤検出）、あるいは誤りのある箇所や誤りのパターンを間違えて、正しいデータを誤って訂正してしまう（誤訂正）、といったことが起こり得る。そのため、誤りが起きたデータを出力するときに誤りを訂正しても、記憶媒体上のデータをそのまま放っておくと、別の誤りが発生して、誤りの蓄積による総計が誤り訂正の能力を越えて、記憶データを回復できなくなってしまう状態に陥る。単に誤り検出訂正符号を用いた信頼性の向上策だけでは、このような問題が発生する。
また、他の問題として、記憶媒体の性質上、劣化によるデータ誤りの発生と、突発的な誤りの発生の２種類があり得る。例えば不揮発性半導体メモリにおいては、書き換えサイクルの繰り返しにより劣化が起こり、データの保持特性が悪化することにより、データ誤りが発生する。一方、電気信号雑音、放射線などの要因により、劣化とは無関係で確率的なデータ誤りも発生し得る。この場合は、再度データを読み直すことにより正しいデータを再生できることもあるし、データを再び書き込むことにより以降は正しいデータを得ることができるようになる。しかし、これら２つのデータ誤りは、誤りの結果であるデータを観察しても、どちらによるものかを識別することができない。もし劣化によるデータ誤りであった場合には、先述の通り一つの領域内に誤りが蓄積していくため、放置しておく訳にはいかないため、代替えを充て、その領域を使用不能にすることで蓄積を回避する必要がある。しかし、劣化と関係ない突発的なデータ誤りにおいてはデータの書き直しにより通常の状態になるため、代替えを充てて使用不能にすることは効率が悪い。従来は以上の点での配慮がなかった。
本発明の目的は、半導体記憶装置のデータ誤りの発生において、突発的なものか、劣化により繰り返し起こるものかを判断して、最適な処理を行い、データの安全性を高め、不揮発性半導体記憶装置の寿命を延ばすことにある。
発明の開示
本発明の不揮発性半導体記憶装置では、第１に、データのアクセス単位であるブロック毎に、記憶媒体からデータを再生する際に、エラーが検出された場合には、エラー訂正を行うと共に、エラー訂正を行った回数を領域毎に記録しておく。第２に、データのブロック毎に、エラー訂正を行った回数が規定値に達していないかを判断する。規定値に達していない場合には、訂正した正しいデータを、同領域に再書き込みを行う。規定値に達してしまった場合には、代替え領域を割り当てて、訂正したデータを移し、元の領域は使用不可能の扱いにする。
また、エラー訂正能力を複数の段階に分け、エラー訂正の段階に応じて、データの再書き込みを行う。または代替え領域の割り当てを行う等の処理を選択して実行する。
発明を実施するための最良の形態
本発明の実施の形態について、以下に図を用いて説明する。図１は、本発明の半導体記憶装置、特に不揮発性半導体記憶装置の全体構成の概要図である。図１に示す本発明の記憶装置１０１は、本記憶装置にデータの読み書きを要求するホストのシステムバス１０２に接続される。記憶装置１０１の記憶媒体である書き換え可能な不揮発性メモリ（チップ、モジュール、ユニットなど様々な形態が考えられる）１０３に含まれ、通常使用するデータ格納領域１０４は、複数のブロック（データのアクセス単位）に分割されている。不揮発性メモリ１０３に含まれ、通常使用するデータ格納領域の管理情報が格納される通常管理領域１０５によって、データ格納領域１０４の分割されたブロック単位が管理される。不良のデータ格納領域を代替するために割り当てられている代替えデータ格納領域１０６は、複数のブロックに分割されている。代替えデータ格納領域の管理情報（通常データ格納領域との対応関係、代替えデータに対するエラー検出訂正コードなど）が格納される代替え管理領域１０７によって、代替えデータ格納領域１０６の分割されたブロック単位が管理される。即ち、本発明の記憶装置では、データのアクセス単位であるデータのブロック毎にデータ格納領域の制御が行われる。記憶装置１０１は、さらに、記憶装置１０１内部の制御を司るコントロールユニット１０８、不揮発性メモリに格納されるデータのエラー（誤り）検出訂正回路１０９、及びシステムバスから送られるデータやシステムバスへ送るデータを一時的に格納するバッファメモリ１１０を含む。
次に、記憶装置１０１の動作を説明する。ホストはシステムバスを通して記憶装置１０１に対してデータの格納や、格納データの読み出しを要求する。コントロールユニット１０８はホストからの要求時に同時に指示される論理アドレスから、不揮発性メモリの該当する物理アドレスを割り出し、要求のアクセスに従った処理を行う。
本発明は格納データの読み出しの際に効果を発揮するため、読み出し動作について説明を行う。読み出しの要求の場合には、コントロールユニット１０８では不揮発性メモリの該当する物理アドレスを割り出したらその物理アドレスに該当する通常データ格納領域１０４の特定の領域のデータと通常管理領域１０５の特定の領域の管理情報を読み出す。読み出したデータ及び管理情報をエラー検出訂正回路１０９に入力してエラー検出を行うと共に、バッファメモリ１１０に格納する。
図２は管理情報１０５の内容の例を示す。データ領域のデータの誤りを検出訂正するためのデータ領域エラー検出訂正コード（ＥＣＣ）２０１は、エラー検出訂正回路１０９に格納データを入力することにより得られる。エラー検出訂正回路１０９にデータを入力したことによって得られた検出結果によりエラー訂正が必要かつ可能であった場合のエラー訂正回数２０２は、該当するデータ格納領域の分割されたブロックごとに記録される。ブロックの内容を示すブロック識別コード２０３の識別の種類としては、使用可能ブロック、使用不可ブロック、通常データブロック、代替え領域ブロック、及びデータ未格納ブロックなどがある。領域２０４には当該ブロックが割り当てられた際にホストから指定されている論理アドレス２０４が格納されている。領域２０５には管理情報自身の信頼性を高めるための管理領域エラー検出訂正コード２０５が格納される。
図２に示す管理情報が通常管理領域１０５や代替え管理領域１０７の各ブロック毎に格納される。これらの情報は全てコントロールユニット１０８で作成され、通常管理領域１０５あるいは代替え管理領域１０７の該当箇所に格納される。コントロールユニット１０８は、この情報に基づいて、ホストから要求された読み出しデータの物理的な格納位置（物理アドレス）を割り出し、通常データ格納領域１０４の該当箇所を読み出してホストのアクセス要求に応える。
本動作中において問題となるのは、読み出したデータにエラーが検出された時である。コントロールユニット１０８は、不揮発性メモリの特定のブロックから読み出したデータと管理情報中のエラー検出訂正コードをエラー検出訂正回路１０９に入力することによって、エラーの有無を検出できるが、エラーが検出されたということは不揮発性メモリ１０３中に何らかのエラーが起きたと考えられる。もちろん、装置内の信号線上の通信エラーということも考えられるが、ここでは不揮発性メモリ１０３内に何らかの誤りが起きたものと考える。誤りの起きた原因が突発的なものであり、データを訂正してもう一度書き直せば、問題なく使用できるのであればそうすべきであり、劣化が原因で誤りが起きた場合には、書き直してもまた誤りが発生することが予想される。本実施例では、原因がどちらかを突き止めるために、とりあえずエラー訂正を行ったらデータの再書き込みを行って、訂正した回数を記録しておいて、その回数によって判断するものとする。
図３のフローチャートでリード処理の動作を示す。本フローチャートはホストからシステムバスを通してリードアクセスの要求があったところから開始されている。コントロールユニット１０８では物理的な格納場所を特定してデータおよび管理情報の読み出しを行う（ｓｔｅｐ３０１）。このときエラー検出訂正回路１０９に読み出したデータや管理情報を入力することにより、エラーが発生したかどうかを確認できる（ｓｔｅｐ３０２）。もしこの時エラーが発生していなければ、そのデータをそのままホストに提供して構わないため、読み出しデータの出力を行う（ｓｔｅｐ３１０）。一方、エラーが検出された場合には、エラー検出訂正回路１０９での処理結果に基づいて、エラー訂正可能な範囲かどうかを判定する（ｓｔｅｐ３０３）。この時エラー訂正が不可能な程度のエラーが発生していたら、そのデータを読み出しても仕方がないため、読み出し不可能な旨をホストに報告する（ｓｔｅｐ３０４）。もしエラー訂正可能な程度のエラー発生であった場合には、エラー訂正を実行する（ｓｔｅｐ３０５）とともに、エラー訂正回数をインクリメントして管理情報を更新する（ｓｔｅｐ３０６）。
次に、エラー訂正回数の判定を行い、エラー訂正回数最大値（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔ  Ｍａｘ：ＥＣＭ）との大小比較を行う（ｓｔｅｐ３０７）。ＥＣＭとの比較で、これよりエラー訂正回数が小さかった場合にはデータ領域はまだ使用可能状態であり、訂正データを同じ場所に再書き込みしてデータ領域を引き続き使用する（リフレッシュ処理、ｓｔｅｐ３０８）。一方、エラー訂正回数がＥＣＭより大きくなってしまった場合には、もはやデータ領域は使用不可能であると判断して、代替え処理を行う（ｓｔｅｐ３０９）。つまり、代替えデータ格納領域１０６から未使用ブロックを選んで代替え領域として割り当てる。この際、通常データ格納領域１０４との対応を示す情報を作成して管理情報の該当箇所に書き込む必要がある。ｓｔｅｐ３０８あるいはｓｔｅｐ３０９の処理が終了したら訂正したデータをホストに出力してリード処理を完了する（ｓｔｅｐ３１０）。
本実施例は、エラー訂正回数が規定の回数（ＥＭＣ）を越えたか否かで再書き込み処理か、代替え処理かの切り替えを行っていたが、図４に示すように、訂正回数とともにデータブロック内の誤り発生数も判定の要因にする方法も考えられる。エラーの発生は各データブロック内で一つづつとは限らず、一度に複数個のエラーが発生することもあり得る。そしてエラーの発生数が多いということが劣化によるものである可能性が高いことや、訂正不可能な状態に陥る危険性が高いことから代替え処理を行うのを早めたほうが得策と考えられる。訂正回数が少なくても誤り数が多い場合には代替えを行ってしまうことを図４の表で示している。上記の場合、図２に示すエラー訂正回数２０２には、訂正回数とともにエラー発生数も記録され、図３のｓｔｅｐ３０７では、図４に示した表に基づいて、リフレッシュ処理又は代替え処理が行われる。
図５及び図６はデータの書き直しの動作を示した図である。領域５０１は通常データ領域のあるブロックの格納データ部分であり、領域５０２はそのエラー検出訂正コード（Ｅｒｒｏｒ  ｄｅｔｅｃｔ  ａｎｄ  ｃｏｒｒｅｃｔ  ｃｏｄｅ：ＥＣＣ）である。領域５０３はその他の管理情報であり、詳細は図２に例を示している。領域５０４は格納データを読み出した際に一時的にデータを格納するバッファメモリである。格納データ５０１は読み出されるとエラー検出訂正回路１０９に入力されると同時に、バッファメモリ５０４に格納される（ｓｔｅｐ６０１）。
このときＥＣＣ５０２もエラー検出訂正回路１０９に入力され、エラーの検出を行う。エラーが検出された場合には、図４に示すように、エラーの個数やエラー訂正回数に基づいて、データの書き直し処理（リフレッシュ処理）を実行すべきかどうかを判別する（ｓｔｅｐ６０２）。もしリフレッシュ処理をすべきでないと判断したら別の処理を行って終了する（ｓｔｅｐ６０３）。一方、リフレッシュ処理をすべきと判断したら、さらにエラー検出訂正回路１０９を動作させることによりエラー箇所とエラーパターンの特定が行われ、バッファメモリ上で誤りの訂正を行う（ｓｔｅｐ６０４）。そしてエラー訂正回数のインクリメントを行い（ｓｔｅｐ６０５）、格納データを同じ場所に書き戻す（ｓｔｅｐ６０６）。以上の動作は先の説明と順序等が異なっているが、効果としては問題ないため適宜入れ替えることが可能である。
図７は代替え処理について説明した図であり、訂正を行う動作については図５で説明した通りであるが、その後、訂正したデータは別のブロック７０１を選定してそこに格納する。このとき、ＥＣＣ５０２は格納データ５０１が変わっていないため同じデータとなるのでエラーが発生していなければそのまま書き込むがエラーが発生していたら訂正して書き込むことになる。また、Ｍｉｓｃ．情報（ＥＣＣ以外の管理情報）５０３は適宜更新して書き込むことになる。
この代替え処理全体の流れを図８のフローチャートに示す。図３のフローチャートにおけるｓｔｅｐ３０９では、図８の代替え処理が実行される。まず、ｓｔｅｐ８０１において、訂正したデータの代替え先の選定を行う。なお、この代替え先の選定方法は様々なものが考えられるが、あらかじめ用意された代替え専用の領域（例えば、図１に示す代替データ格納領域１０６）を順番に使用していく方法が選定時間も短く、最も管理し易いと考えられる。その他、劣化の小さいところを選択する方法や、あらかじめ対応付けられたところを使用するなどが考えられる。
次に、ｓｔｅｐ８０２において、代替えを行ったために論理アドレスと物理アドレスの対応が変更されたので、管理テーブルの更新を行う必要がある。管理テーブルは、代替えを行った論理アドレス（ホストからアクセスの際に指定されるアドレス）をメモリ上の物理アドレスに変換するアドレス変換テーブルのようなものであり、代替えを行う記憶装置では必須のものである。ただし、その管理方法は様々なものが考えられる。本装置では不揮発性メモリ上の特定の場所（例えば、図１に示す代替管理領域１０７）に一括して格納しておくことにより管理と更新を容易にしている。それが済むと次にｓｔｅｐ８０３においてデータの転送と格納を行う。訂正済みのデータはバッファに格納されているため、これを代替え先のデータ領域に転送する。また、ＥＣＣデータや、管理情報については先述の通りである。以上で代替え処理の動作を終了する。
本発明によれば、エラーの発生が偶発的なものか、劣化により頻発するものかを判断して代替え処理を実行するかを決定するため、代替え処理をむやみに行わなくてもよく、代替え領域の無駄遣いを減少することができる。また、データの書き直しにより、データの誤りが起きた箇所はもちろん誤りが起きるに至っていなかった箇所についてもセルの状態を安定な状態に引き上げるため、信頼性を向上することができる。また、エラー訂正回数とともにエラー発生個数を判定の要因にするため、より実質的できめ細かい制御が可能となる。
【図面の簡単な説明】
図１は、本発明の記憶装置の構成例である。
図２は、管理情報例である。
図３は、リード処理の動作フローチャートである。
図４は、リフレッシュ代替え判定表である。
図５は、リフレッシュ処理のデータの流れである。
図６は、リフレッシュ処理のフローチャートである。
図７は、代替え処理のデータの流れである。
図８は、代替え処理のフローチャートである。
【図１】
0003937214.tif 000002
【図２】
0003937214.tif 000003
【図３】
0003937214.tif 000004
【図４】
0003937214.tif 000005
【図５】
0003937214.tif 000006
【図６】
0003937214.tif 000007
【図７】
0003937214.tif 000008
【図８】
0003937214.tif 000009