説明

不良ビットエラーを処理するシステムおよび方法

【課題】半導体不揮発性メモリ装置における不良ビットエラーを補償する。
【解決手段】装置は、メモリ装置120から古いページを受け取り、そのページが不良ビットを有するか否かを決定する不良ビット検出モジュール116を含む。装置は、新しいページを生成する不良ビット修正モジュール118を含む。不良ビット修正モジュール118は、不良ビットの位置を特定し、不良ビットの好適値を決定し、不良ビットのユーザ値を決定する。不良ビット修正モジュール118は、古いページの実質的なデータに対応するビット列に好適値を挿入し、好適値が挿入されたビット列を記録する。不良ビット修正モジュール118は、古いページのアドレスに新しいページを格納する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、半導体不揮発性メモリ装置の不良ビットエラーを処理するシステムおよび方法に関する。より詳細には、本発明は、特に永久的なビットエラーを対象として取り扱い、この永久的ビットエラーを補償して半導体不揮発性メモリ装置を使用するためのシステムおよび方法に関する。さらに詳細には、本発明は、メモリのひとつのページの予備データ領域に関する再マッピングに利用可能である。
【背景技術】
【0002】
ほとんどの電子機器は、装置の操作を制御するために、少なくともひとつのマイクロコントローラあるいはマイクロプロセッサと呼ばれる制御装置を含んでいる。求められる機能を実現するために、制御装置は、所定の操作を実行するためのコードあるいは実行可能な命令を実行する。また、制御装置は、操作を実行するために、データを取得する。コードおよびデータは、コンピュータによって読み取り可能なメモリ装置に格納される。メモリ装置として、NAND型またはNOR型のフラッシュメモリ装置のような半導体不揮発性メモリ装置を使用する装置の製造者が増加している。例えば、特許文献1に記載の装置が知られている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開昭64−76338号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、フラッシュメモリ装置における問題は、それらの装置では、読出不能エラーがより頻繁に発生することである。そのような問題は、NAND型のフラッシュメモリ装置においてやや顕著である。読出不能エラーは、永久的、または一時的である。永久的エラーは、例えば、ブロックが物理的に損傷した場合の不良ブロックエラー(bad block error)の場合がある。一時的エラーは、例えば、データ保持エラー(data retention error)や、読出不良エラー(read disturb error)の場合がある。フラッシュメモリ装置のような不揮発性メモリ装置を含む装置の製造業者は、メモリ装置に生じるビットエラーを訂正するためにECC(error correction codes)と呼ばれる誤り訂正符号の仕組みを利用する。
【0005】
データがメモリ装置に書かれている場合の装置の通常動作中に、ECCは、メモリ装置のハードウェアによってそのデータのために生成され、そのデータとともに自動的に格納される。後続の読出し工程において、データの中のエラー、すなわち誤りを修正するために、ECCはハードウェアによって読み出され、利用される。ECCにおける符号は、予め与えられた記憶量の負担を用いて、固定数のエラーを修正するために、ハードウェア設計段階中にパラメータ化することができる。一旦ECCのパラメータがハードウェアの中で選択され、実現されると、ECCのための回路類はECCの仕組みにおいてもともと想定され、設計された数より多くのエラーを修正するように変更することができない。通常のシステムの運用中に読出エラーが発生すると、ECCのアルゴリズムが修正できるより多くのエラーがデータの中に含まれていると決定される場合がある。これらの状況で、データは復元可能ではない。
【0006】
したがって、システム設計者がハードウェアによるECCの中で実現されているより強力なECCのアルゴリズムを要求する場合、ハードウェアECCは無効化されることがあり、装置の制御装置によってより強力なECCのアルゴリズムを実行することができる。しかしながら、フラッシュメモリ装置に読み書きする場合、これらのECCのアルゴリズムは、制御装置の総合的な性能を低下させることがある。
【0007】
上述のように、いくつかのエラーは一時的エラーの場合がある。フラッシュメモリ装置に保存されたデータ中の一時的エラーは、システムの正常な動作の間中に発生した内部的および外部的事象からの妨害により時間の経過につれて蓄積される。一時的エラーは、どんな物理的な欠陥もないメモリセルに生じる。メモリセルが不完全ではないので、ページまたはブロックのデータに対して、リフレッシュ操作を実行することによって正しいデータを回復することができる。このリフレッシュ操作は、ECCに基づくエラー修正処理を含むことができ、修正されたデータの再書き込みに随伴されている。
【0008】
しかしながら、永久的なエラーはリフレッシュ操作によって修正することができない。一時的エラーと異なり、永久的エラーは、典型的には、メモリの物理的な欠陥によって引き起こされる。ECCは永久的エラーを修正することができるが、ECCが修正することができるエラーの量は制限されている。したがって、フラッシュメモリ装置のようなメモリ装置において、一時的エラーと同様に、永久的エラーを取り扱うことができるより効率的な方法とシステムとが求められている。
【0009】
ここに提示された背景技術の記述は、本発明の位置づけを一般的に説明するためのものである。この背景技術の欄に述べられた範囲で、発明者らの開発活動は、出願の時点における先行技術として妥当することのないここの記述の側面と同様に、明示的にも、また、暗示的にも、本発明に対する先行技術として自認されたものではない。
【課題を解決するための手段】
【0010】
本発明により、半導体不揮発性メモリ装置と、この半導体不揮発性メモリ装置における不良ビットエラーを修正するための処理の少なくとも一部を実行する主制御装置とを備える不良ビットエラー処理システムが提供される。
【0011】
半導体不揮発性メモリ装置は、複数のブロックに分割することができる記憶領域を有する。ブロックは、複数のページを有し、ページは、実質的なデータを格納する主データ領域と予備データ領域とを有する。予備データ領域は、主データ領域におけるひとつのビットがエラー状態にあるか否かを示す有効性ビットのフィールドと、主データ領域におけるエラー状態にある不良ビットを示す不良ビット位置のフィールドと、主データ領域におけるエラー状態にある不良ビットの適切な値を示す好適値のフィールドと、エラー状態にある不良ビットの修正値を示すユーザ値のフィールドとを含む。
【0012】
主制御装置は、半導体不揮発性メモリ装置から古いページを受け取り、ページがエラー状態であると検出された不良ビットを有しているか否かを決定する不良ビット検出モジュールと、不良ビットの値を修正する不良ビット修正モジュールとを備える。
【0013】
不良ビット修正モジュールは、(a)−(f)の手段を備える。(a)半導体不揮発性メモリ装置に書込まれるべき新しいページを生成する手段。(b)エラー状態であると検出された不良ビットの位置を決定し、新しいページの不良ビットのフィールドにエラー状態であると検出されたビットの位置を記録する位置記録手段。(c)エラー状態であると検出された不良ビットの好適値を決定し、新しいページの好適値のフィールドに、エラー状態であると検出された不良ビットの好適値を記録する手段。(d)エラー状態であると検出されたビットのユーザ値を決定し、新しいページのユーザ値のフィールドに、エラー状態であると検出された不良ビットのユーザ値を記録する手段。(e)古いページの主データ領域に記録された実質的なデータに対応するビット列に好適値を挿入し、好適値が挿入されたビット列を新しいページの主データ領域に記録する手段。(f)古いページのアドレスに新しいページを格納する手段。
【0014】
本発明により、半導体不揮発性メモリ装置における不良ビットエラーを修正する不良ビットエラー処理方法が提供される。
【0015】
半導体不揮発性メモリ装置は、複数のブロックに分割することができる記憶領域を有する。ブロックは、複数のページを有し、ページは、実質的なデータを格納する主データ領域と予備データ領域とを有する。予備データ領域は、主データ領域におけるひとつのビットがエラー状態にあるか否かを示す有効性ビットのフィールドと、主データ領域におけるエラー状態にある不良ビットを示す不良ビット位置のフィールドと、主データ領域におけるエラー状態にある不良ビットの適切な値を示す好適値のフィールドと、エラー状態にある不良ビットの修正値を示すユーザ値のフィールドとを含む。
【0016】
不良ビットエラー処理方法は、半導体不揮発性メモリ装置から古いページを受け取り、ページがエラー状態であると検出された不良ビットを有しているか否かを決定する工程を備える。不良ビットエラー処理方法は、検出されたビットがエラー状態である場合、半導体不揮発性メモリ装置に書込まれるべき新しいページを生成する。不良ビットエラー処理方法は、エラー状態であると検出された不良ビットの位置を決定し、新しいページの不良ビットのフィールドにエラー状態であると検出された不良ビットの位置を記録する。不良ビットエラー処理方法は、エラー状態であると検出された不良ビットの好適値を決定し、新しいページの好適値のフィールドに、エラー状態であると検出された不良ビットの好適値を記録する。不良ビットエラー処理方法は、エラー状態であると検出された不良ビットのユーザ値を決定し、新しいページのユーザ値のフィールドに、エラー状態であると検出された不良ビットのユーザ値を記録する。不良ビットエラー処理方法は、古いページの主データ領域に記録された実質的なデータに対応するビット列に好適値を挿入し、好適値が挿入されたビット列を新しいページの主データ領域に記録する。不良ビットエラー処理方法は、古いページのアドレスに新しいページを格納する。
【0017】
この発明を適用可能な他の分野は、以下の説明によって明らかにされる。この発明の概要における説明と具体的な例示とは、具体的な説明を与える用途だけを意図したものであって、本発明の技術的範囲を限定することを意図したものではない。
【図面の簡単な説明】
【0018】
【図1】図1は、本発明を適用した第1実施形態に係る装置の構成をブロック図である。
【図2】図2は、メモリ装置の構造を説明するためのブロック図である。
【図3】図3は、ページにおける不良ビットエラーを検出し、不良ビットエラーを操作する方法の一例を説明するためのフローチャートである。
【図4】図4は、ページにおける不良ビットエラーを検出する方法の一例を説明するためのフローチャートである。
【図5】図5は、不良ビットエラーの位置を決定する方法の一例を説明するためのフローチャートである。
【図6】図6は、ビット列の中のひとつのビットを望ましい値に操作し、処理する方法の一例を説明するためのフローチャートである。
【図7】図7は、ひとつのページが不良ビットエラーを含む場合のページのデータを書込む方法の一例を説明するためのフローチャートである。
【図8】図8は、ひとつのページが不良ビットエラーを含む場合のページのデータを読み出す方法の一例を説明するためのフローチャートである。
【図9】図9は、ビット列におけるひとつのビット値を決定する方法の一例を説明するためのフローチャートである。
【発明を実施するための形態】
【0019】
以下に、図面を参照しながら本発明を実施するための複数の形態を説明する。各形態において先行する形態で説明した事項に対応する部分には同一の参照符号を付して重複する説明を省略する場合がある。各形態において構成の一部のみを説明している場合は、構成の他の部分については先行して説明した他の形態を適用することができる。各実施形態で具体的に組合せが可能であることを明示している部分同士の組合せばかりではなく、特に組合せに支障が生じなければ、明示してなくとも実施形態同士を部分的に組み合せることも可能である。
【0020】
ここでの説明は、あくまで一例を示すためのものであって、この開示、その適用範囲、またはその使用形態の限定を意図したものではない。明瞭さのために、同じ参照番号は同様の要素を識別するために図面の中で使用される。ここに使用されたように、「A、BおよびCの少なくともひとつ」との表現は、非排他的論理であるORを用いる論理(AまたはBまたはC)を意味するものとして解されるべきである。方法内のステップは、この開示の原理を変更することなく、異なる順序によって実行可能であるものとして理解されるべきである。
【0021】
図1は、第1実施形態に係る装置100の構成部品、または装置のサブシステムの構成部品を示す。装置100は、メモリ装置における不良ビットエラーを検出し、それを修正処理するように構成されている。装置100は、主制御装置110と、半導体不揮発性メモリ装置120とを備える。主制御装置110は、装置100を操作する。半導体不揮発性メモリ装置120は、装置100を操作するための実行可能な命令群を格納する。メモリ装置120は、主制御装置110によって使用されることがあるデータを格納する。メモリ装置120は、埋め込まれた誤り訂正機能を有している。誤り訂正機能は、例えばECCと呼ばれる誤り訂正符号の仕組みによって提供される。主制御装置110は、読出モジュール112、書込モジュール114、不良ビット検出モジュール116、不良ビット修正モジュール118、およびビット処理モジュール122を少なくとも含むが、主制御装置110に含まれるモジュールはこれらに限定されない。
【0022】
読出モジュール112は、不良ビット修正モジュール118によって以前にマッピングされたメモリ装置120からデータを読み込むように構成される。読出モジュール112はメモリ装置120にアドレスを送信する。また、メモリ装置120は要求されたアドレスに対応するデータのブロックを返す。
【0023】
書込モジュール114は、再マッピング操作を用いてメモリ装置120にデータを書込むように構成されている。再マッピング操作によって、不良ビットエラーが補償されるように不良ビットを含むページを再マッピングすることができる。書込モジュール114は、書込まれるべきデータと同様に、データを書込むためのアドレスを送信する。
【0024】
不良ビット修正モジュール118は、データのブロックの中のページが永久的なビットエラーを有するか否かを決定するように構成されている。また、不良ビット修正モジュール118は、ページが永久的なビットエラーを有している場合、メモリ装置のページを再マッピングする。この再マッピングでは、ページの予備データ領域の一部が、損傷を受けたビットの値を格納するために用いられるように、メモリ装置の利用が再配分される。よって、不良ビット修正モジュール118は、メモリ装置120上の資源を再配分することにより、損傷を受けたビットの使用を回避し、損傷を受けたビットに代わる格納領域を提供する。以下においてより詳細に説明されるように、不良ビット修正モジュール118は、ページにおける不良ビットの位置、不良ビットの好適値、およびそのビットに対するユーザ値、あるいはユーザ価値を決定する。不良ビット修正モジュール118は、読み出し操作に際して修正されたデータが最構築されるように、ページの予備データ領域を使用する。以下に述べられるように、不良ビット修正モジュール118は、ページのリフレッシュ操作を実行するために、さらにページがそこに不良ビットを含んでいるか否かを決定するために、不良ビット検出モジュール116を利用する。
【0025】
不良ビット検出モジュール116は、ページがそこに不良ビットを含んでいるか否かを決定するように構成される。不良ビット検出モジュール116は、拡張されたリフレッシュ操作を実行する。この拡張リフレッシュ操作では、不良ビット検出モジュール116はメモリ装置120のひとつのページをリフレッシュし、メモリ装置120のひとつのブロックの各ページにおける永久的なビットエラーを検出する。以下においてより詳細に説明されるように、不良ビット検出モジュール116は、ECCが許容されたデータのページを読み込む。その後、不良ビット検出モジュール116は、メモリ装置120に訂正されたページを書き戻す。さらに、その後、不良ビット検出モジュール116は、ECCを無効化して埋め込まれた誤り訂正機能を不能状態とした中で、上記と同じデータを再び読み込む。そして、その後、不良ビット検出モジュール116は、ページが不良ビットを含むかどうか判断するために、先に読み込んだデータと、後に読み込んだデータとを比較する。言い換えると、不良ビット検出モジュール116は、埋め込まれた誤り訂正機能が有効な状態で読み出されたデータと、その訂正されたデータを書込んだ後に、埋め込まれた誤り訂正機能が無効な状態で読み込んだデータとを比較する。これにより、永久的なビットエラーを生じる不良ビットを特定することができる。
【0026】
ビット処理モジュール122はデータの塊、データの塊の中のビットの位置、および受信されたビット位置においてデータの塊に挿入されるべき値を受け取るように構成される。ビット処理モジュール122は、不良ビットエラーがあるデータのページを再構築するために読出モジュール112によって使用される。また、ビット処理モジュール122は、再マッピングを伴って、書込まれるべきデータの塊における不良ビット位置における好適値を強制的に処理するために書込モジュール114によって使用される。一旦好適値がデータの塊に書かれれば、ビット処理モジュール122は要求する要素に更新されたデータの塊を返す。
【0027】
メモリ装置120は、主制御装置110からの読出要求および書込要求を受取るように構成される。いくつかの具体化例では、メモリ装置120は、フラッシュメモリ装置のような半導体不揮発性メモリ装置である。さらに、フラッシュメモリ装置はNAND型フラッシュメモリ、またはNOR型フラッシュメモリで構成することができる。将来に開発されるメモリ装置120も装置100に使用されてもよい。
【0028】
いくつかの具体化例では、メモリ装置120はNAND型のフラッシュメモリ装置である。図2は、半導体不揮発性メモリ装置200のデータ構造の一例を示す。図2中の2Aは、半導体不揮発性メモリ装置200の全体のデータ構造を示す。半導体不揮発性メモリ装置200は、フラッシュメモリ装置である。フラッシュメモリ装置200は、分割された複数のブロック210を備える。例えば、典型的なフラッシュメモリ装置200は1028個のブロックに分割することができる。さらに、ひとつのブロック210は複数のページ220に分割されている。例えば、典型的なブロック210は、64個のページに分割することができる。ひとつのページ230は、複数のバイトで構成される。例えば、典型的なページ230は2112バイトで構成することができる。さらに、ページ1230のそれぞれは、図示されない528バイトの4つの読込ユニットに別々に分割することができる。上記の具体的な数値は例示的なものであり、フラッシュメモリ装置200の他の構成が想定可能であることが認識されるべきである。例えば、ひとつのブロックは32個のページで構成することができる。また、ひとつのページは4048バイトで構成することができる。さらに、上述の構造は、異なるタイプのメモリ装置に同様に適用することができる。
【0029】
ひとつのページ230は、主データ領域240と予備データ領域250とに分割されている。主データ領域240は保存されたデータあるいは本質的なデータを含んでいる。例えば、ブロックがプログラム領域にある場合、特定のページ230の主データ領域240は特定の命令に対応することがある。アドレスとパラメータ値も、ひとつのページ230の主データ領域240に格納することができる。予備データ領域250はページ230に関係する情報を記録している。予備データ領域250は、ECCのための複数バイトの領域260を含んでいる。上述のフラッシュメモリ装置は、ページのビットのうちのどれかがエラーを含むか否かを決定するために誤り検出アルゴリズム(error checking algorithm)を実行する図示されないメモリコントローラを含むことができる。そのような場合、予備データ領域のECCのための領域260は、どの単一ビットまたは複数ビットがエラーを含むのかを示す。下に議論されるように、予備データ領域250は追加的な情報を含んでいる。
【0030】
図2中の2Bは、予備データ領域250のデータ構造一例を示している。予備データ領域250は予め設定された所定の長さ、例えば128ビットである。予備データ領域250は、さらに複数の領域258、260、および262に分割されうる。予備データ領域250は、予め設定された所定の長さ、例えば16ビット、の不良ブロック領域258を含む。予備データ領域250は、予め設定された所定の長さ、例えば64ビット、のECCのフィールド260を含む予備データ領域250は、予め設定された所定の長さ、例えば32ビット、のユーザ付加領域262を含む。予備データ領域250のユーザ付加領域262は、ハードウェアによるECCによって保護される場合と、保護されない場合とがある。ハードウェアによるECCが利用可能でない場合、主制御装置110は、チェックサムまたはCRCを使用して、ユーザ付加領域262の中の情報を保護する必要がある。図2中の2Cは、ユーザ付加領域262のデータ構造一例を示している。
【0031】
ユーザ付加領域262は第1部分264と第2部分266とに分割することができる。第1部分264と第2部分266とは、対応する主データ領域における不良ビットエラーを修正するために利用可能である。例えば、第1部分264は、主データ領域240内の第1の位置における不良ビットエラーを修正することができ、第2部分266は、主データ領域240内の第2の位置における不良ビットエラーを修正することができる。第1部分264は4つの部分に分割することができる。第1部分は、第1の有効性ビット268、第1の不良ビット位置のフィールド270、第1の好適値ビット272、および第1のユーザ値ビット274で構成される。有効性ビット268、好適値ビット272、およびユーザ値ビット274が1ビットの長さであり、その一方で不良ビット位置のフィールドはビットの位置を格納するために十分な長さ、例えば13ビットの長さである。同様に、第2部分は、第2の無効性ビット276、第2の不良ビット位置のフィールド278、第2の好適ビット280、および第2のユーザ値ビット282で構成される。
【0032】
有効性ビット268は、第1部分264の中の残りのデータ項目がプログラムされたかどうかを示す。主データ領域240に検出された不良ビットがない場合、有効性ビットは0に設定される。しかしながら、不良ビットが検出される場合、第1部分における残りのデータ項目は有効な意味のある値に初期化されなければならない。また、この場合、有効性ビットは1に設定される。
【0033】
不良ビット位置のフィールド270は、主データ領域240における第1の不良ビットエラーの位置を示す。主データ領域240におけるいかなるビット位置であっても特定することができるように、不良ビット位置のフィールド270は十分な長さを有していなければならない。したがって、Nを主データ領域240のビット長さとして、不良ビット位置のフィールド270に要求される長さは、LogNで表される。さらに、不良ビット位置の0は、主データ領域240の中の最上位ビットまたは最下位ビットにおける不良ビットを示すこともできることが理解される。さらに、追加的な、または代替的なアドレス決定のための仕組みを採用することができることも理解されるべきである。
【0034】
好適値ビット272は、最も少ないECCのエラーに帰着する不良ビットに見合う値である。例えば、ビットが0に至る場合、それは特定のビット位置に書込まれた値に関係なく、常に0として読み出されるビットであり、好適値は0に設定される。同様に、ビットが読出し回数の80%において1として読み出される場合、好適値は1に設定される。
【0035】
ユーザ値ビット274は、読み出しが生じる場合、その位置で読み出すことを主制御装置110が予期する値である。例えば、不良ビットが常に0として読み出されるが、不良ビットが1にセットされるべきである場合、ユーザ値は1である。
【0036】
先の述べた複数のフィールドによって修正することができるビットの数は、予備データ領域250において利用可能な空き領域の量に依存することが理解されるべきである。例えば、それぞれのページが主データエリア当たり8192の規則的なデータビットを有する場合、16ビットは予備データ領域におけるそれぞれのエントリのために必要とされ、1ビットは有効性ビットとして必要とされ、13ビットは不良ビット位置のために必要とされ、1ビットは好適値のために必要とされ、さらに1ビットはユーザ値のために必要とされる。予備データ領域250が32と47との間のビット数を利用可能として提供する場合、データ領域におけるふたつの不良ビットを取り扱うことができる。したがって、48ビットが利用可能な場合、3つの不良ビットを取り扱うことができる。
【0037】
上述のように、不良ビット修正モジュール118はメモリ装置のページにおける不良ビットエラーを修正するように構成される。不良ビット修正モジュール118は、メモリ装置120へ訂正されたページを書込むために、メモリ装置120と通信可能であり、さらに、メモリ装置120のページが不良ビットを含むか否かを決定するために不良ビット検出モジュール116と通信可能である。
【0038】
図3は、不良ビット修正モジュール118によって実行される処理の一例を示す。不良ビット修正モジュール118は、リフレッシュ操作の後に、リフレッシュ操作の間中に、あるいは予め設定された所定の間隔で、下記の処理を実行する。不良ビット修正モジュール118は、ブロックの全体までページを受取り、修正が要求とされる各ページを修正する。したがって、不良ビット修正モジュール118はメモリ装置120の多くのページにわたって繰り返えされるように構成されている。したがって、ステップ312で示されるように、現在のページあるいは現在のページアドレスを示すページカウンタPCNTは、0に設定される。ステップ314で示されるように、現在のページ、つまりページアドレスにおいて決定されるページ、が不良ビットをそこに有するか否かを決定するために、不良ビット修正モジュール118は、不良ビット検出モジュール116にページカウンタの値を伝達する。以下においてさらに述べられるように、不良ビット検出モジュール116としてのステップ316は、不良ビットがページに含まれるかどうか判断するために実データと予期データとを比較する。
【0039】
予期データは、分析の対象となっているページから読み出されるべきデータである。ところが、実データは、読み込まれているページの主データ領域で実際に見つかり、読み出されたデータである。ひとつのページに関する予期データと実データとの間に不一致が発生すれば、不良ビット検出モジュール116は不良ビットの存在を不良ビット修正モジュール118に通知する。したがって、ステップ316で示されるように、不良ビット修正モジュール118は不良ビットが検知されたか否かを決定する。不良ビットが検知されなければ、不良ビット修正モジュール118は、ステップ330で示されるように、分析されるべきページが残されているかどうか判断する。分析しなければならないページが残されている場合、ステップ334で示されるように、ページアドレスをひとつ増加させるために、ページカウンタPCNTを1だけ増加させる。
【0040】
不良ビットが検出された場合、不良ビット修正モジュール118は、ステップ318で示されるように、不良ビットの位置を決定する。下記のように、不良ビット修正モジュール118は予期データおよび実データを使用して、不良ビットを識別し特定することができる。予期データと実データとに対して排他的論理和(XOR)の演算処理を実行し、その結果に対してビットをシフトする処理を実行することによって、不良ビットの位置を識別し特定することができる。不良ビット修正モジュール118は、メモリ装置に書込まれるべきページを生成するために用いられるデータ構造を生成することができる。この生成されるデータ構造は、複数のフィールドを有しており、それらのフィールドは、主データのためのフィールド、不良ビット位置のフィールド、好適ビット値のフィールド、およびユーザビット値のフィールドを含むことができる。したがって、不良ビット修正モジュール118は不良ビット位置のフィールドを不良ビット位置と等しく設定することができる。
【0041】
一旦不良ビットの位置が特定されると、不良ビット修正モジュール118は、ステップ320で示されるように、不良ビットの好適ビット値を決定し、設定する。上述のように、好適値は、現在のページの主データ領域中の不良ビット位置で読まれる可能性が最もありそうな値である。好適値は、不良ビット位置において実データから読まれた値と等しく設定されてもよい。一旦不良ビット修正モジュール118が好適ビット値を決定したならば、好適ビット値フィールドは好適ビット値に設定される。ユーザビット値のフィールドは、ステップ322で示されるように、不良ビット位置にあるビットの望ましい値にセットされる。一旦不良ビット位置、好適ビット値およびユーザビット値がすべて設定されたならば、ステップ324で示されるように、不良ブロック補正モジュール118はページの主データ領域に書込む。ページの主データ領域が予期データとして書込まれるが不良ビット位置にあるビットは好適ビット値に強制的に処理される。下記に述べられるように、ビット処理モジュール122は予期データ、不良ビット位置および好適値を受け取り、不良ビット位置で好適値を備えた予期データを表わすビット列を生成する。
【0042】
その後、ステップ326で示されるように、データ補正モジュール118はメモリに書込まれるべきページの値を設定する。メモリ装置に書込まれるべきページは、ビット処理モジュール122によって強制的に操作された主データ領域と、1に設定された有効性ビット値と、不良ビット位置の値に設定された不良ビット位置と、好適値に設定された好適ビット値と、ユーザ値に設定されたユーザビット値とを含んでいる。ECCのための複数のフィールド、または予備データ領域の不良バイトのフィールドなどの他の複数のフィールドが設けられてもよい。集められたデータ群は、予め設定された所定の長さ、例えばメモリ装置のひとつのページの長さ、の単一のビット列に組み上げられる。この時点で、ページの全体の生成が完了し、ステップ328で示されるように、そのページがメモリ装置に書込まれる。ステップ328は、新しいページの好適値のフィールドに、エラー状態にあると検出された不良ビットの位置における予期データのひとつのビットの値を記録する手段と、新しいページのユーザ値のフィールドに、エラー状態にあると検出された不良ビットの位置における実データのひとつのビットの値を記録する手段とを提供する。よって、不良ビット修正モジュールは、上記記録手段を備える。
【0043】
この後、分析の対象となっているブロック内の他の残されたページを分析するために、処理の実行が継続される。したがって、不良ビット修正モジュール118は、ステップ330で示されるように、分析されるべきものとして残されたページがあるか否かを決定する。分析されるべきページが残っている場合、処理は実行を継続する。また、ステップ334で示されるように、ページカウンタPCNTを1つだけ増加させることによりページアドレスが次のページに変更される。分析されるべきページが残っていない場合、ステップ332で示されるように、不良ビット修正モジュール118は処理の実行を終了する。
【0044】
上述のように、不良ビット検出モジュール116は、ブロックのページのアドレスを受け取り、不良ビットエラーがページに含まれるか否かを決定する。以下の方法は、フラッシュメモリ装置120から一時的エラーを取り除くために使用されるリフレッシュ操作の間中にビットエラーを検知するための処理を示している。特に、リフレッシュ操作は、ECCによる誤り訂正処理が有効化されたフラッシュメモリ装置120からデータを読出し、ECCによる誤り訂正処理にすべてのいかなるエラーも訂正することを許容し、さらに、その後、フラッシュメモリ装置120にそのデータを書き戻す。以下に述べられた拡張的なリフレッシュ操作では、永久的なビットエラーはページの中において検出される。
【0045】
図4は、不良ビット検出モジュール116によって実行されうる不良ビット検出方法を図示する。この不良ビット検出方法では、ひとつのページに不良ビットが存在するか否かを決定し、さらに、そうならば不良ビットの位置を決定する。さらに、図示の方法は、メモリ装置のページのリフレッシュ操作を実行する。以下に説明される方法は単一のページに関して実行されるものとして図示されている。しかし、それらの方法は、メモリ装置のひとつのブロック内における複数のページのそれぞれに対して実行されるように繰り返して継続することができる。
【0046】
不良ビット検出モジュール116は、ステップ412で示されるように、不良ビットの検出がその上において行われるべきページのページアドレスを示す要求を、装置100の一部、例えば不良ビット修正モジュール118から受けとる。不良ビット検出モジュール116は、ステップ414で示されるように、要求されたページアドレスにおけるページのデータを読み出す。呼び出されている不良ビット検出モジュール116に先立って、ページアドレスを含んでいるブロックがメモリ装置120からロードされうる。ページアドレスで見つけられたページを取得する際、ステップ414で示されるように、不良ビット検出モジュール116はページの主データ部分を読む。先の読み取りは、ECCの修正されたデータである。
【0047】
データのECCの修正部分は、メモリのページの主データ領域で見つけられる。このデータは予期データと呼ばれる。ステップ418で示されるように、不良ビット検出モジュール116はメモリに予期データを書く。不良ビット検出モジュール116は、ステップ420で示されるように、ECCによるエラー訂正機能を無効化する。その後不良ビット検出モジュール116は、ステップ422で示されるように、その特定のページ上においてエラー訂正を行なうことなく、そのページを再び読み出す。訂正されないページの主データ領域で見つけられたデータは、実データと呼ばれる。ステップ424で示されるように、不良ビット検出モジュールは、訂正されないページの主データ領域で見つけられたデータを取得し、その後、ステップ426で示されるように、ECCによるエラー訂正機能を有効化する。
【0048】
上述のように、予期データはページから取得されたECCによって訂正されたデータである。その一方で、実データはページから取得されたECCによって訂正されていないデータである。ページに永久ビットエラーがあるか否かを決定するために、ステップ428で示されるように、不良ビット検出モジュール116は、予期データと実データとを比較する。予期データが実データと一致しなければ、ステップ440で示されるように、不良ビット検出モジュール116は、そのページを不良ビットエラーをもつページとして決定する。あるページが不良ビットをもつページとして決定される場合、そのページの予備データ領域の有効性ビットが1に設定されることによって、そのページにマークが付される。予期データが実データと一致すれば、ステップ432で示されるように、不良ビット検出モジュール116は、そのページを不良ビットエラーをもつページとして決定することなく、処理を終了する。
【0049】
上述の方法の変形例を実施することができ、しかもそれら変形例は、この明細書の開示の範囲内であるものと解されるべきである。例えば、方法は全データ・ブロックのために実行するかもしれない。それは、方法がブロック中のページがそれぞれ上に記述された方法で分析されるまで、実行するループを含むほどのものであるさらに、図4に図示されたいくつかのステップは、ひとつのステップに組み合わせることが可能であり、図示されたひとつのステップは複数のステップによって実行することが可能である。更に、不良ビット検出モジュール116は、ページが不良ビットエラーを有するか否かを決定するために、他の異なる方法を実行することもできる。
【0050】
上述のように、不良ビット修正モジュール118は、ページの主データ領域の不良ビットの位置を決定する。図5は、メモリ装置のひとつのページにおける不良ビットの位置を決定する方法の一例を示す。不良ビットの位置を決定するために、不良ビット修正モジュール118は、ステップ512で示されるように、メモリ装置のひとつのページで見つかった予期データの予期値と実データの実値とを用いる。不良ビット修正モジュール118は期待値と実値との間で排他的論理和、XOR、の演算処理を実行することによって検査値を算出し、検査値を用いて演算結果に注目する。検査値は、期待値と実値との間で一致が見出されないすべてのビットにおいて1をもつ。不良ビットの位置を決定するために、ステップ516で示されるように、ビット値のカウンタBVCは0に設定される。その後、不良ビット修正モジュール118は、ステップ518で示されるように、検査値に1が見出される最初の機会を決定するために、検査値にわたって処理を繰り返す。最下位ビットが1と等しくない場合、ステップ520で示されるように、ビット値のカウンタBVCが1だけ増加される。ステップ518で示されるように、検査値は右へ1ビットだけシフトされ、変更後の検査値の最下位ビットを確認するために、最下位ビットの確認に戻る。この方法の処理は、最下位ビットが1であると決定されるまで、実行を継続し、ステップ524で示されるように、その時点でビット位置のカウンタBVCがもとに戻される。その後、図3に関して記述されたように、不良ビット位置はメモリ装置のページの予備データ領域に格納される。
【0051】
上述の方法の変形例を実施することができ、しかもそれら変形例は、この明細書の開示の範囲内であるものと解されるべきである。例えば、メモリ装置の単一のページに関して多数の不良ビット位置が決定されるように、上述の方法は、検査値の中にふたつまたはそれ以上の1が見つかるまで実行することができる。さらに、図5に図示されたいくつかのステップは、ひとつのステップに組み合わせることが可能であり、図示されたひとつのステップは複数のステップによって実行することが可能である。更に、不良ビット検出モジュール116は、不良ビットの位置を決定するために、他の異なる方法を実行することもできる。
【0052】
以前に議論されたように、不良ビット修正モジュール118は、不良ビットを特定の値に処理することによってメモリ装置のページに保存されるべきデータを操作するためにビット処理モジュール122を利用する。図6は、ビット処理モジュール122によって実行することができる方法の一例を示す。書込モジュール114、読出モジュール112、およびビット修正モジュール118のうちのひとつが、ひとつのビットが特定の値に強制的に操作処理されるべきことを要求する時、ビット処理モジュール122は下記の処理方法を実行する。そうするために、ビット処理モジュール122は、ステップ612で示されるように、操作されるデータを表わすデータの塊、処理されるビットの位置、およびビットが処理される値などの処理データを受け取る。ビットの位置は、数値Nによって、与えられる。ビットの位置は、例えば、最上位ビットまたは最下位ビットからN番目の処理されるべきビットを示す値Nである。ひとつのビットを望ましい値に処理するために、ビット処理モジュール122はビットマスクを使用する。ステップ614で示されたように、ビットマスクBMKは1、例えば0X0001、に設定される。ビットマスクBMKは、ステップ616で示されるように、位置の値だけ、左へシフトされる。例えば、3番目のビットが処理されるべきものである場合、ビットマスクは左へ3つの位置だけ、例えば0X0004へ、シフトされる。次に、ビット処理モジュールは、ステップ618において、処理されるビットの値BVFを分析する。処理される対象ビットの値BVFが1である場合、ビット処理モジュール122は、ステップ626を実行し、ビットマスクとデータの塊との間において論理和演算を実行する。すなわち、新データは、データとビットマスクBMKとの論理和、OR、によって与えられる。処理によって変更されるべきビットの値BVFが0である場合、ビットマスクBMKは、ステップ622に示されるように、反転される。その後、ステップ624で示されるように、ビットマスクとデータの塊との間において論理積演算を実行する。すなわち、新データは、データとビットマスクBMKの反転値との論理積、AND、によって与えられる。ステップ626またはステップ624が実行された後、論理和演算または論理積演算によって得られた新データは、要求しているモジュールに返される。
【0053】
上述の方法の変形例を実施することができ、しかもそれら変形例は、この明細書の開示の範囲内であるものと解されるべきである。さらに、図6に図示されたいくつかのステップは、ひとつのステップに組み合わせることが可能であり、図示されたひとつのステップは複数のステップによって実行することが可能である。更に、ビット処理モジュール122は、あるビットを望ましい値に修正処置するために、他の異なる方法を実行することもできる。
【0054】
主制御装置110がメモリ装置への書込みを要求する場合、主制御装置110は書込モジュール114を利用する。それはページが不良ビットを含むことをメモリ装置のページの有効性ビットが示す場合に、メモリ装置のページを再マッピング、すなわち再配分するように構成される。図7は、メモリ装置120にページを書込む場合に、書込モジュール114によって実行することができる方法の一例を示す。書込モジュール114は、ステップ712で示されるように、書込まれるべきページのアドレス、およびそのページの主データ領域に格納されるべきデータを示すデータの塊を受取る。データを書込む前に、書込まれるべきページ、すなわち受け取ったページアドレスにおけるページ、に不良ビットが存在するか否かを決定するために、ステップ714で示されるように、書込モジュール114は、取得されたページからデータを読み出す。ステップ716で示されるように、書込モジュール114はページの有効性ビットを確認し、ステップ718で示されるように、有効性ビットが、そのページがビットエラーを含むことを示しているか否かを決定する。そのページに不良ビットエラーがなければ、書込モジュール114は、有効性ビットが0に設定されている間、データの塊を用いて、書込むためのページを生成する。その後、ステップ730で示されるように、書込モジュール114は、書込まれるべきページを、メモリ装置に書込む。
【0055】
不良ビットが存在する場合、ページが再マッピングされるように、予備データ領域のデータと同様に、データの塊も操作されなければならない。データが適切に操作されることを保証するために、ステップ720で示されるように、書込モジュール114は読まれたデータから不良ビット位置を決定する。書込モジュール114は取得されたページの予備データ領域からの不良ビット位置に対応する値を読み込み、決定する。同様に、ステップ722で示されるように、書込モジュール114は取得されたページの予備データ領域から不良ビットの好適値を読み込み、決定する。ステップ724で示されるように、書込モジュール114は、受取ったデータの塊の中の不良ビット位置におけるビットから、ユーザ値を決定し、設定する。受取ったデータの塊は、不良ビットを備えない。しかし、不良ビットの値に対応するビットにおけるビット値は、書込まれるべきページのユーザ値のフィールドに入力される。
【0056】
その後、書込モジュール114は、ステップ726で示されるように、好適値が不良ビット位置で主データに挿入されるように、ビット処理モジュール122に主データ、不良ビット位置および好適値を伝える。その後、ステップ728で示されるように、書込モジュール114は、書込まれるべきページを生成する。書込まれるべきページは、後続のブロック書き込み処理の中で書込まれるべきメモリ装置の中のページに相当するデータ構造である。書込まれるべきページは主データ、有効性ビット、不良ビット位置、好適値およびユーザ値を含んでいる。一旦書込まれるべきページが生成されれば、書込モジュール114はメモリ装置に、そのページを書込む。
【0057】
主制御装置110は、一度に全ブロックを書込むように構成されうる。したがって、書込モジュール114は、メモリ装置120にひとつのブロックの全体が書き戻される前に、そのブロックの全体における内容が書き直されるまで、待つように構成されうる。
【0058】
上述の方法の変形例を実施することができ、しかもそれら変形例は、この明細書の開示の範囲内であるものと解されるべきである。さらに、図7に図示されたいくつかのステップは、ひとつのステップに組み合わせることが可能であり、図示されたひとつのステップは複数のステップによって実行することが可能である。更に、書込モジュール114は、あるビットを望ましい値に修正処置するために、他の異なる方法を実行することもできる。
【0059】
主制御装置110がメモリ装置120へ読出しを要求する場合、主制御装置110は読出モジュール112を利用する。それは不良ビットエラーを補償するために、主データ領域から主データを再構築するように構成される。図8は、読出モジュール112によって実行することができる方法の一例を示す。ステップ812で示されるように、読出モジュール112はメモリ装置120から読み込まれるべきページのアドレスを受け取る。その後、ステップ814で示されるように、読出モジュール112は要求されたページをメモリ装置120から取得する。その後、ステップ816で示されるように、読出モジュール112は、読まれたページの主データ領域を読み込む。読まれたページの主データ領域に含まれていたデータを格納するように、読出モジュール112は変数、例えば主データを初期化することができる。
【0060】
ステップ818で示されるように、読出モジュール112は読まれたページの有効性ビットを確認し、ステップ820で示されるように、有効性ビットが読まれたページにおける不良ビットエラーを示すかどうかを決定する。有効性ビットが0に設定されている場合、つまり不良ビットエラーがない場合、ステップ828で示されるように、読出モジュール112は要求しているモジュールに主データを返す。また、処理は実行を終了する。
【0061】
しかしながら、有効性ビットが1にセットされる場合、つまり、ページが不良ビットを含んでいる場合、ステップ822で示されるように、読出モジュール112は読まれたページの不良ビットのフィールドから不良ビット位置を読み出す。ステップ824で示されるように、読出モジュール112は、さらに、読まれたページのユーザ値のフィールドからのユーザ値を決定する。例えば、読まれたページのユーザ値のフィールドが、不良ビット位置にあるビットが1であることを示す場合、ユーザ値は、1に等しく設定される。
【0062】
その後、ステップ826で示されるように、読出モジュール112はビット処理モジュール122に可変主データ、不良ビット位置、およびユーザ値を伝える。上述のように、ビット処理モジュールは、不良ビット位置にユーザ値を配置するために、主データを操作し、処理する。ビット処理モジュールは、そこに含まれたユーザ値によって可変の主データを返す。その後、ステップ828で示されるように、読出モジュール112は、要求しているモジュールに主データを伝える。
【0063】
上述の方法の変形例を実施することができ、しかもそれら変形例は、この明細書の開示の範囲内であるものと解されるべきである。さらに、図8に図示されたいくつかのステップは、ひとつのステップに組み合わせることが可能であり、図示されたひとつのステップは複数のステップによって実行することが可能である。更に、読出モジュール112は、あるビットを望ましい値に修正処置するために、他の異なる方法を実行することもできる。
【0064】
一連のビット列における特定のビットの値を決定するために、書込モジュール114、読出モジュール112および不良ビット修正モジュール118のすべては、ある時点で、要求する。図9は、ビット列におけるひとつのビット値を決定する方法の一例を示す。ステップ912で示されるように、ビット列およびビット位置を含む処理データが受け取られる。データ列は、ステップ914で示されるように、ビット位置によって記述されるビットの数だけ、右へシフトされる。要求されたビット値は、シフト操作が実行された後の最下位ビットの値である。最下位ビットは、ステップ916で示されるように、シフト操作されたビット列と、値1、つまり0X0001、をもつマスクとの論理積演算によって与えられる。ステップ918で示されるように、ビット値は要求しているモジュールに返される。
【0065】
上述の方法の変形例を実施することができ、しかもそれら変形例は、この明細書の開示の範囲内であるものと解されるべきである。例えば、マスクはビット位置によって指定されたビットの数だけ、左へシフトすることができる。さらに、図9に図示されたいくつかのステップは、ひとつのステップに組み合わせることが可能であり、図示されたひとつのステップは複数のステップによって実行することが可能である。更に、読出モジュール112は、あるビットを望ましい値に修正処置するために、他の異なる方法を実行することもできる。
【0066】
ここに使用されたように、モジュールは、以下に列挙される構成要素の一部を示すか、またはそれを含むものを示すことがある。構成要素は、(1)ASIC(Application Specific Integrated Circuit)と呼ばれる、特定用途向け集積回路、(2)電気回路、(3)論理回路の組み合わせ、(4)FPGA(Field Programmable Gate Array)と呼ばれる、製造後に構成、機能を設定可能な集積回路、(5)プログラムコードを実行する、共有の、専用の、または一群の、プロセッサー、(6)上述の機能を提供する適切な部品、および(7)チップ上に配置されたシステムのような、上記構成要素の一部またはすべての組み合わせ物を含む。モジュール、および部は、プロセッサーによって実行されたプログラムコードを格納するメモリを含むことがある。メモリは、共有、専用、またはグループとして提供されうる。
【0067】
コード、またはプログラムコードは、上述のように、ソフトウェア、ファームウェアおよび/またはマイクロコードを含みうるものであって、プログラム、ルーチン、機能、クラスおよび/またはオブジェクトを指すことがある。共有は、上述のように、多数のモジュールからの一部またはすべてのコードが単一または共有のプロセッサーを使用して実行される場合があることを意味する。さらに、多数のモジュールからの一部またはすべてのコードは、単一または共有のメモリに格納される場合がある。グループは、上述のように、単一のモジュールからの一部またはすべてのコードが一群のプロセッサーを使用して実行される場合があることを意味する。さらに、単一のモジュールからの一部またはすべてのコードは一群のメモリを使用して格納される場合がある。
【0068】
ここに記述された装置と方法は、1台以上のプロセッサーによって実行された1つ以上のコンピュータプログラムによって具体化することができる。コンピュータプログラムは、コンピュータ読取り可能な非一時的記録を提供し、かつ実体的な記録媒体の上に格納される、プロセッサーによって実行可能な命令群を含んでいる。コンピュータプログラムは、保存されたデータを含むことがある。コンピュータ読取り可能な非一時的記録を提供し、かつ実体的な記録媒体の非制限的な例として、不揮発性メモリ、磁気記憶装置、および光記憶装置を挙げることができる。
【0069】
以上に説明した実施形態によると、半導体不揮発性メモリ装置と、この半導体不揮発性メモリ装置における不良ビットエラーを修正するための処理の少なくとも一部を実行する主制御装置とを備える不良ビットエラー処理システムが提供される。また、不良ビットエラー処理方法が提供される。
【0070】
この実施形態では、半導体不揮発性メモリ装置は、複数のブロックに分割することができる記憶領域を有する。ブロックは、複数のページを有し、ページは、実質的なデータを格納する主データ領域と予備データ領域とを有する。予備データ領域は、主データ領域におけるひとつのビットがエラー状態にあるか否かを示す有効性ビットのフィールドと、主データ領域におけるエラー状態にある不良ビットを示す不良ビット位置のフィールドと、主データ領域におけるエラー状態にある不良ビットの適切な値を示す好適値のフィールドと、エラー状態にある不良ビットの修正値を示すユーザ値のフィールドとを含む。
【0071】
主制御装置は、半導体不揮発性メモリ装置から古いページを受け取り、ページがエラー状態であると検出された不良ビットを有しているか否かを決定する不良ビット検出モジュールと、不良ビットの値を修正する不良ビット修正モジュールとを備える。
【0072】
不良ビット修正モジュールは、(a)半導体不揮発性メモリ装置に書込まれるべき新しいページを生成する手段と、(b)エラー状態であると検出された不良ビットの位置を決定し、新しいページの不良ビットのフィールドにエラー状態であると検出された不良ビットの位置を記録する位置記録手段と、(c)エラー状態であると検出された不良ビットの好適値を決定し、新しいページの好適値のフィールドに、エラー状態であると検出された不良ビットの好適値を記録する手段と、(d)エラー状態であると検出された不良ビットのユーザ値を決定し、新しいページのユーザ値のフィールドに、エラー状態であると検出された不良ビットのユーザ値を記録する手段と、(e)古いページの主データ領域に記録された実質的なデータに対応するビット列に好適値を挿入し、好適値が挿入されたビット列を新しいページの主データ領域に記録する手段と、(f)古いページのアドレスに新しいページを格納する手段とを備える。
【0073】
この実施形態の不良ビット検出モジュールは、(i)誤り訂正機能の仕組みが有効化されているときに、半導体不揮発性メモリ装置から古いページを読込み、古いページの主データ領域の内容を主データ領域における誤りの訂正がある値を示す予期データとして記録する手段と、(ii)古いページを半導体不揮発性メモリ装置に書き戻す手段と、(iii)誤り訂正機能の仕組みが無効化されているときに、半導体不揮発性メモリ装置から古いページを読込み、古いページの主データ領域の内容を主データ領域における誤りの訂正がない値を示す実データとして記録する手段と、(iv)予期データを実データと比較する手段と、(v)予期データが実データと一致しない場合に、古いページにおける検出されたビットがエラー状態にあることを決定する手段とを備える。不良ビット修正モジュールは、新しいページの好適値のフィールドに、エラー状態にあると検出された不良ビットの位置における予期データのひとつのビットの値を記録する手段と、新しいページのユーザ値のフィールドに、エラー状態にあると検出された不良ビットの位置における実データのひとつのビットの値を記録する手段とを備えることができる。
【0074】
不良ビット修正モジュールの位置記録手段は、予期データと実データとの上で排他的論理和演算を実行し、さらにその演算の結果の最下位ビットが1に等しくなるまで結果を1ビットずつシフトすることにより、古いページの主データ領域における検出された不良ビットの位置を決定し、最下位ビットが1に等しくなるまでにシフトされたビット数が検出された不良ビットの位置に等しい。主制御装置は、さらに、書込まれるべきデータを書込まれるべきページに書込む書込モジュールを備えることができる。
【0075】
書込モジュールは、書込まれるべきページの有効性ビットを確認し、書込まれるべきページがエラー状態であることを有効性ビットが示す場合、書込まれるべきページのユーザ値のフィールドを設け、そのフィールドの値を、書込まれるべきページの不良ビット位置のフィールドに格納された不良ビット位置の値に対応して書込まれるべきデータにおけるビットの値とする。
【0076】
主制御装置は、さらに、(i)書込まれるべきデータに対応するビット列、(ii)不良ビット位置に対応する位置の値、および(iii)書込まれるべきページの不良ビット位置に位置するビットの好適値に対応する要求値を受取るビット処理モジュールを備えることができる。ビット処理モジュールは、書込まれるべきページの主領域が、そこに挿入された要求値をもつ書込まれるべきデータを含むように、書込まれるべきデータに、位置の値に対応するビット位置において、要求値を挿入する。
【0077】
主制御装置は、さらに、半導体不揮発性メモリ装置から要求されたページを読み出す読出モジュールを備えることができる。読出モジュールは、要求されたページの有効性ビットを確認し、要求されたページがエラー状態であることを有効性ビットが示す場合、要求されたページのユーザ値のフィールドに格納された値、要求されたページの主領域に格納されたデータの列、および要求されたページの不良ビット位置のフィールドにおける値に対応する不良ビット位置に基づいて要求されたデータを生成する。
【0078】
主制御装置は、さらに、(i)要求されたページの主領域に格納されたビット列、(ii)不良ビット位置、および(iii)ユーザ値を受取るビット処理モジュールを備えることができる。
【0079】
ビット処理モジュールは、要求されたデータが、そこに挿入されたユーザ値をもつビット列によって構成されるように、ビット列に、不良ビット位置に対応するビット位置において、ユーザ値を挿入する。半導体不揮発性メモリ装置は、NAND型のフラッシュメモリ装置とすることができる。
【0080】
この明細書における開示の広い教唆は、様々な形式で具体化することができる。したがって、この明細書における開示は、特定の例示を含んでいるが、図面、明細書および特許請求の範囲の参照および学習に基づいて当業者には他の変形例が明らかになるから、ここに開示された発明の真の技術的範囲はそのように制限されるべきではない。
【符号の説明】
【0081】
100 装置、
110 制御装置(主制御装置)、
120 メモリ装置(半導体不揮発性メモリ装置、フラッシュメモリ装置)、
112 読出モジュール、
114 書込モジュール、
116 不良ビット検出モジュール、
118 不良ビット修正モジュール、
122 ビット処理モジュール。

【特許請求の範囲】
【請求項1】
半導体不揮発性メモリ装置と、この半導体不揮発性メモリ装置における不良ビットエラーを修正するための処理の少なくとも一部を実行する主制御装置とを備える不良ビットエラー処理システムにおいて、
前記半導体不揮発性メモリ装置は、複数のブロックに分割することができる記憶領域を有し、前記ブロックは、複数のページを有し、前記ページは、実質的なデータを格納する主データ領域と予備データ領域とを有し、前記予備データ領域は、前記主データ領域におけるひとつのビットがエラー状態にあるか否かを示す有効性ビットのフィールドと、前記主データ領域におけるエラー状態にある不良ビットを示す不良ビット位置のフィールドと、前記主データ領域におけるエラー状態にある不良ビットの適切な値を示す好適値のフィールドと、エラー状態にある不良ビットの修正値を示すユーザ値のフィールドとを含み、
前記主制御装置は、
前記半導体不揮発性メモリ装置から古いページを受け取り、前記ページがエラー状態であると検出された不良ビットを有しているか否かを決定する不良ビット検出モジュールと、
前記不良ビットの値を修正する不良ビット修正モジュールとを備え、
前記不良ビット修正モジュールは、
(a)前記半導体不揮発性メモリ装置に書込まれるべき新しいページを生成する手段と、
(b)エラー状態であると検出された不良ビットの位置を決定し、前記新しいページの前記不良ビットのフィールドにエラー状態であると検出された不良ビットの位置を記録する位置記録手段と、
(c)エラー状態であると検出された不良ビットの好適値を決定し、前記新しいページの前記好適値のフィールドに、エラー状態であると検出された不良ビットの前記好適値を記録する手段と、
(d)エラー状態であると検出された不良ビットのユーザ値を決定し、前記新しいページの前記ユーザ値のフィールドに、エラー状態であると検出された不良ビットの前記ユーザ値を記録する手段と、
(e)前記古いページの前記主データ領域に記録された実質的なデータに対応するビット列に前記好適値を挿入し、前記好適値が挿入された前記ビット列を前記新しいページの主データ領域に記録する手段と、
(f)前記古いページのアドレスに前記新しいページを格納する手段とを備えることを特徴とする不良ビットエラー処理システム。
【請求項2】
前記不良ビット検出モジュールは、
(i)誤り訂正機能の仕組みが有効化されているときに、前記半導体不揮発性メモリ装置から前記古いページを読込み、前記古いページの前記主データ領域の内容を前記主データ領域における誤りの訂正がある値を示す予期データとして記録する手段と、
(ii)前記古いページを前記半導体不揮発性メモリ装置に書き戻す手段と、
(iii)誤り訂正機能の仕組みが無効化されているときに、前記半導体不揮発性メモリ装置から前記古いページを読込み、前記古いページの前記主データ領域の内容を前記主データ領域における誤りの訂正がない値を示す実データとして記録する手段と、
(iv)前記予期データを前記実データと比較する手段と、
(v)前記予期データが前記実データと一致しない場合に、前記古いページにおける検出されたビットがエラー状態にあることを決定する手段とを備えることを特徴とする請求項1に記載の不良ビットエラー処理システム。
【請求項3】
前記不良ビット修正モジュールは、前記新しいページの前記好適値のフィールドに、エラー状態にあると検出された不良ビットの位置における前記予期データのひとつのビットの値を記録する手段と、前記新しいページの前記ユーザ値のフィールドに、エラー状態にあると検出された不良ビットの位置における前記実データのひとつのビットの値を記録する手段とを備えることを特徴とする請求項2に記載の不良ビットエラー処理システム。
【請求項4】
前記不良ビット修正モジュールの前記位置記録手段は、前記予期データと前記実データとの上で排他的論理和演算を実行し、さらにその演算の結果の最下位ビットが1に等しくなるまで前記結果を1ビットずつシフトすることにより、前記古いページの前記主データ領域における検出された不良ビットの位置を決定し、前記最下位ビットが1に等しくなるまでにシフトされたビット数が検出された不良ビットの位置に等しいことを特徴とする請求項2または請求項3に記載の不良ビットエラー処理システム。
【請求項5】
さらに、書込まれるべきデータを書込まれるべきページに書込む書込モジュールを備え、
前記書込モジュールは、書込まれるべきページの有効性ビットを確認し、前記書込まれるべきページがエラー状態であることを前記有効性ビットが示す場合、書込まれるべきページのユーザ値のフィールドを設け、そのフィールドの値を、書込まれるべきページの不良ビット位置のフィールドに格納された不良ビット位置の値に対応して書込まれるべきデータにおけるビットの値とすることを特徴とする請求項1から請求項4のいずれかに記載の不良ビットエラー処理システム。
【請求項6】
さらに、(i)書込まれるべきデータに対応するビット列、(ii)前記不良ビット位置に対応する位置の値、および(iii)書込まれるべきページの前記不良ビット位置に位置するビットの前記好適値に対応する要求値を受取るビット処理モジュールを備え、
前記ビット処理モジュールは、書込まれるべきページの主領域が、そこに挿入された前記要求値をもつ書込まれるべきデータを含むように、前記書込まれるべきデータに、前記位置の値に対応するビット位置において、前記要求値を挿入することを特徴とする請求項5に記載の不良ビットエラー処理システム。
【請求項7】
さらに、半導体不揮発性メモリ装置から要求されたページを読み出す読出モジュールを備え、
前記読出モジュールは、要求されたページの有効性ビットを確認し、前記要求されたページがエラー状態であることを前記有効性ビットが示す場合、前記要求されたページのユーザ値のフィールドに格納された値、前記要求されたページの主領域に格納されたデータの列、および前記要求されたページの不良ビット位置のフィールドにおける値に対応する不良ビット位置に基づいて要求されたデータを生成することを特徴とする請求項1から請求項6のいずれかに記載の不良ビットエラー処理システム。
【請求項8】
さらに、(i)前記要求されたページの前記主領域に格納されたビット列、(ii)前記不良ビット位置、および(iii)前記ユーザ値を受取るビット処理モジュールを備え、
前記ビット処理モジュールは、前記要求されたデータが、そこに挿入された前記ユーザ値をもつ前記ビット列によって構成されるように、前記ビット列に、前記不良ビット位置に対応するビット位置において、前記ユーザ値を挿入することを特徴とする請求項7に記載の不良ビットエラー処理システム。
【請求項9】
前記半導体不揮発性メモリ装置は、NAND型のフラッシュメモリ装置であることを特徴とする請求項1から請求項8のいずれかに記載の不良ビットエラー処理システム。
【請求項10】
半導体不揮発性メモリ装置における不良ビットエラーを修正するための不良ビットエラー処理方法において、
前記半導体不揮発性メモリ装置は、複数のブロックに分割することができる記憶領域を有し、前記ブロックは、複数のページを有し、前記ページは、実質的なデータを格納する主データ領域と予備データ領域とを有し、前記予備データ領域は、前記主データ領域におけるひとつのビットがエラー状態にあるか否かを示す有効性ビットのフィールドと、前記主データ領域におけるエラー状態にある不良ビットを示す不良ビット位置のフィールドと、前記主データ領域におけるエラー状態にある不良ビットの適切な値を示す好適値のフィールドと、エラー状態にある不良ビットの修正値を示すユーザ値のフィールドとを含み、
前記不良ビットエラー処理方法は、
古いページを前記半導体不揮発性メモリ装置から受け取り、
ページがエラー状態であるとして検出された不良ビットを有するか否かを決定し、
検出されたビットがエラー状態である場合、前記不良ビットエラー処理方法は、さらに、
前記半導体不揮発性メモリ装置に書込まれるべき新しいページを生成し、
エラー状態であると検出された不良ビットの位置を決定し、前記新しいページの前記不良ビットのフィールドに前記エラー状態であると検出されたビットの位置を記録し、
前記エラー状態であると検出されたビットの好適値を決定し、前記新しいページの前記好適値のフィールドに、エラー状態であると検出された不良ビットの前記好適値を記録し、
エラー状態であると検出された不良ビットのユーザ値を決定し、前記新しいページの前記ユーザ値のフィールドに、エラー状態であると検出された不良ビットの前記ユーザ値を記録し、
前記古いページの前記主データ領域に記録された実質的なデータに対応するビット列に前記好適値を挿入し、前記好適値が挿入された前記ビット列を前記新しいページの主データ領域に記録し、
前記古いページのアドレスに前記新しいページを格納することを特徴とする不良ビットエラー処理方法。
【請求項11】
さらに、誤り訂正機能の仕組みが有効化されているときに、前記半導体不揮発性メモリ装置から前記古いページを読込み、
前記古いページの前記主データ領域の内容を前記主データ領域における誤りの訂正がある値を示す予期データとして記録し、
前記古いページを前記半導体不揮発性メモリ装置に書き戻し、
誤り訂正機能の仕組みが無効化されているときに、前記半導体不揮発性メモリ装置から前記古いページを読込み、前記古いページの前記主データ領域の内容を前記主データ領域における誤りの訂正がない値を示す実データとして記録し、
前記予期データを前記実データと比較し、
前記予期データが前記実データと一致しない場合に、前記古いページにおける前記検出されたビットがエラー状態にあることを決定することを特徴とする請求項10に記載の不良ビットエラー処理方法。
【請求項12】
さらに、前記新しいページの前記好適値のフィールドに、エラー状態にあると検出された不良ビットの位置における前記予期データのひとつのビットの値を記録し、前記新しいページの前記ユーザ値のフィールドに、エラー状態にあると検出された不良ビットの位置における前記実データのひとつのビットの値を記録することを特徴とする請求項11に記載の不良ビットエラー処理方法。
【請求項13】
前記古いページの前記主領域における前記検出されたビットの位置を決定する工程は、前記予期データと前記実データとの上で排他的論理和演算を実行し、さらにその演算の結果の最下位ビットが1に等しくなるまで前記結果を1ビットずつシフトする工程を含み、前記最下位ビットが1に等しくなるまでにシフトされたビット数が前記検出されたビットの位置に等しいことを特徴とする請求項11または請求項12に記載の不良ビットエラー処理方法。
【請求項14】
さらに、書込まれるべきデータを書込まれるべきページに書込む工程を備え、
この書込む工程は、さらに、書込まれるべきページの有効性ビットを確認し、前記書込まれるべきページがエラー状態であることを前記有効性ビットが示す場合、書込まれるべきページのユーザ値のフィールドを設け、そのフィールドの値を、書込まれるべきページの不良ビット位置のフィールドに格納された不良ビット位置の値に対応して書込まれるべきデータにおけるビットの値とすることを特徴とする請求項10から請求項13のいずれかに記載の不良ビットエラー処理方法。
【請求項15】
さらに、(i)書込まれるべきデータに対応するビット列、(ii)前記不良ビット位置に対応する位置の値、および(iii)書込まれるべきページの前記不良ビット位置に位置するビットの前記好適値に対応する要求値を受取り、
書込まれるべきページの主領域が、そこに挿入された前記要求値をもつ書込まれるべきデータを含むように、前記書込まれるべきデータに、前記位置の値に対応するビット位置において、前記要求値を挿入することを特徴とする請求項14に記載の不良ビットエラー処理方法。
【請求項16】
さらに、半導体不揮発性メモリ装置から要求されたページを読み出す工程を備え、
この読み出す工程は、さらに、要求されたページの有効性ビットを確認し、前記要求されたページがエラー状態であることを前記有効性ビットが示す場合、前記要求されたページのユーザ値のフィールドに格納された値、前記要求されたページの主領域に格納されたデータの列、および前記要求されたページの不良ビット位置のフィールドにおける値に対応する不良ビット位置に基づいて要求されたデータを生成することを特徴とする請求項10から請求項15のいずれかに記載の不良ビットエラー処理方法。
【請求項17】
さらに、(i)前記要求されたページの前記主領域に格納されたビット列、(ii)前記不良ビット位置、および(iii)前記ユーザ値を受取り、
前記要求されたデータが、そこに挿入された前記ユーザ値をもつ前記ビット列によって構成されるように、前記ビット列に、前記不良ビット位置に対応するビット位置において、前記ユーザ値を挿入することを特徴とする請求項16に記載の不良ビットエラー処理方法。
【請求項18】
前記半導体不揮発性メモリ装置は、NAND型のフラッシュメモリ装置であることを特徴とする請求項10から請求項17のいずれかに記載の不良ビットエラー処理方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate


【公開番号】特開2012−221488(P2012−221488A)
【公開日】平成24年11月12日(2012.11.12)
【国際特許分類】
【出願番号】特願2012−28631(P2012−28631)
【出願日】平成24年2月13日(2012.2.13)
【出願人】(000004260)株式会社デンソー (27,639)
【出願人】(500164385)デンソー インターナショナル アメリカ インコーポレーテッド (49)
【Fターム(参考)】