(57)【特許請求の範囲】
【請求項１】
半導体不揮発性メモリ装置と、この半導体不揮発性メモリ装置における不良ビットエラーを修正するための処理の少なくとも一部を実行する主制御装置とを備える不良ビットエラー処理システムにおいて、
前記半導体不揮発性メモリ装置は、複数のブロックに分割することができる記憶領域を有し、前記ブロックは、複数のページを有し、前記ページは、実質的なデータを格納する主データ領域と予備データ領域とを有し、前記予備データ領域は、前記主データ領域におけるひとつのビットがエラー状態にあるか否かを示す有効性ビットのフィールドと、前記主データ領域におけるエラー状態にある不良ビットを示す不良ビット位置のフィールドと、前記主データ領域におけるエラー状態にある不良ビットの適切な値を示す好適値のフィールドと、エラー状態にある不良ビットの修正値を示すユーザ値のフィールドとを含み、
前記主制御装置は、
前記半導体不揮発性メモリ装置から古いページを受け取り、前記ページがエラー状態であると検出された不良ビットを有しているか否かを決定する不良ビット検出モジュールと、
前記不良ビットの値を修正する不良ビット修正モジュールとを備え、
前記不良ビット修正モジュールは、
（ａ）前記半導体不揮発性メモリ装置に書込まれるべき新しいページを生成する手段と、
（ｂ）エラー状態であると検出された不良ビットの位置を決定し、前記新しいページの前記不良ビットのフィールドにエラー状態であると検出された不良ビットの位置を記録する位置記録手段と、
（ｃ）エラー状態であると検出された不良ビットの好適値を決定し、前記新しいページの前記好適値のフィールドに、エラー状態であると検出された不良ビットの前記好適値を記録する手段と、
（ｄ）エラー状態であると検出された不良ビットのユーザ値を決定し、前記新しいページの前記ユーザ値のフィールドに、エラー状態であると検出された不良ビットの前記ユーザ値を記録する手段と、
（ｅ）前記古いページの前記主データ領域に記録された実質的なデータに対応するビット列に前記好適値を挿入し、前記好適値が挿入された前記ビット列を前記新しいページの主データ領域に記録する手段と、
（ｆ）前記古いページのアドレスに前記新しいページを格納する手段とを備えることを特徴とする不良ビットエラー処理システム。
【請求項２】
前記不良ビット検出モジュールは、
（ｉ）誤り訂正機能の仕組みが有効化されているときに、前記半導体不揮発性メモリ装置から前記古いページを読込み、前記古いページの前記主データ領域の内容を前記主データ領域における誤りの訂正がある値を示す予期データとして記録する手段と、
（ｉｉ）前記古いページを前記半導体不揮発性メモリ装置に書き戻す手段と、
（ｉｉｉ）誤り訂正機能の仕組みが無効化されているときに、前記半導体不揮発性メモリ装置から前記古いページを読込み、前記古いページの前記主データ領域の内容を前記主データ領域における誤りの訂正がない値を示す実データとして記録する手段と、
（ｉｖ）前記予期データを前記実データと比較する手段と、
（ｖ）前記予期データが前記実データと一致しない場合に、前記古いページにおける検出されたビットがエラー状態にあることを決定する手段とを備えることを特徴とする請求項１に記載の不良ビットエラー処理システム。
【請求項３】
前記不良ビット修正モジュールは、前記新しいページの前記好適値のフィールドに、エラー状態にあると検出された不良ビットの位置における前記予期データのひとつのビットの値を記録する手段と、前記新しいページの前記ユーザ値のフィールドに、エラー状態にあると検出された不良ビットの位置における前記実データのひとつのビットの値を記録する手段とを備えることを特徴とする請求項２に記載の不良ビットエラー処理システム。
【請求項４】
前記不良ビット修正モジュールの前記位置記録手段は、前記予期データと前記実データとの上で排他的論理和演算を実行し、さらにその演算の結果の最下位ビットが１に等しくなるまで前記結果を１ビットずつシフトすることにより、前記古いページの前記主データ領域における検出された不良ビットの位置を決定し、前記最下位ビットが１に等しくなるまでにシフトされたビット数が検出された不良ビットの位置に等しいことを特徴とする請求項２または請求項３に記載の不良ビットエラー処理システム。
【請求項５】
さらに、書込まれるべきデータを書込まれるべきページに書込む書込モジュールを備え、
前記書込モジュールは、書込まれるべきページの有効性ビットを確認し、前記書込まれるべきページがエラー状態であることを前記有効性ビットが示す場合、書込まれるべきページのユーザ値のフィールドを設け、そのフィールドの値を、書込まれるべきページの不良ビット位置のフィールドに格納された不良ビット位置の値に対応して書込まれるべきデータにおけるビットの値とすることを特徴とする請求項１から請求項４のいずれかに記載の不良ビットエラー処理システム。
【請求項６】
さらに、（ｉ）書込まれるべきデータに対応するビット列、（ｉｉ）前記不良ビット位置に対応する位置の値、および（ｉｉｉ）書込まれるべきページの前記不良ビット位置に位置するビットの前記好適値に対応する要求値を受取るビット処理モジュールを備え、
前記ビット処理モジュールは、書込まれるべきページの主領域が、そこに挿入された前記要求値をもつ書込まれるべきデータを含むように、前記書込まれるべきデータに、前記位置の値に対応するビット位置において、前記要求値を挿入することを特徴とする請求項５に記載の不良ビットエラー処理システム。
【請求項７】
さらに、半導体不揮発性メモリ装置から要求されたページを読み出す読出モジュールを備え、
前記読出モジュールは、要求されたページの有効性ビットを確認し、前記要求されたページがエラー状態であることを前記有効性ビットが示す場合、前記要求されたページのユーザ値のフィールドに格納された値、前記要求されたページの主領域に格納されたデータの列、および前記要求されたページの不良ビット位置のフィールドにおける値に対応する不良ビット位置に基づいて要求されたデータを生成することを特徴とする請求項１から請求項６のいずれかに記載の不良ビットエラー処理システム。
【請求項８】
さらに、（ｉ）前記要求されたページの前記主領域に格納されたビット列、（ｉｉ）前記不良ビット位置、および（ｉｉｉ）前記ユーザ値を受取るビット処理モジュールを備え、
前記ビット処理モジュールは、前記要求されたデータが、そこに挿入された前記ユーザ値をもつ前記ビット列によって構成されるように、前記ビット列に、前記不良ビット位置に対応するビット位置において、前記ユーザ値を挿入することを特徴とする請求項７に記載の不良ビットエラー処理システム。
【請求項９】
前記半導体不揮発性メモリ装置は、ＮＡＮＤ型のフラッシュメモリ装置であることを特徴とする請求項１から請求項８のいずれかに記載の不良ビットエラー処理システム。
【請求項１０】
半導体不揮発性メモリ装置における不良ビットエラーを修正するための不良ビットエラー処理方法において、
前記半導体不揮発性メモリ装置は、複数のブロックに分割することができる記憶領域を有し、前記ブロックは、複数のページを有し、前記ページは、実質的なデータを格納する主データ領域と予備データ領域とを有し、前記予備データ領域は、前記主データ領域におけるひとつのビットがエラー状態にあるか否かを示す有効性ビットのフィールドと、前記主データ領域におけるエラー状態にある不良ビットを示す不良ビット位置のフィールドと、前記主データ領域におけるエラー状態にある不良ビットの適切な値を示す好適値のフィールドと、エラー状態にある不良ビットの修正値を示すユーザ値のフィールドとを含み、
前記不良ビットエラー処理方法は、
古いページを前記半導体不揮発性メモリ装置から受け取り、
ページがエラー状態であるとして検出された不良ビットを有するか否かを決定し、
検出されたビットがエラー状態である場合、前記不良ビットエラー処理方法は、さらに、
前記半導体不揮発性メモリ装置に書込まれるべき新しいページを生成し、
エラー状態であると検出された不良ビットの位置を決定し、前記新しいページの前記不良ビットのフィールドに前記エラー状態であると検出されたビットの位置を記録し、
前記エラー状態であると検出されたビットの好適値を決定し、前記新しいページの前記好適値のフィールドに、エラー状態であると検出された不良ビットの前記好適値を記録し、
エラー状態であると検出された不良ビットのユーザ値を決定し、前記新しいページの前記ユーザ値のフィールドに、エラー状態であると検出された不良ビットの前記ユーザ値を記録し、
前記古いページの前記主データ領域に記録された実質的なデータに対応するビット列に前記好適値を挿入し、前記好適値が挿入された前記ビット列を前記新しいページの主データ領域に記録し、
前記古いページのアドレスに前記新しいページを格納することを特徴とする不良ビットエラー処理方法。
【請求項１１】
さらに、誤り訂正機能の仕組みが有効化されているときに、前記半導体不揮発性メモリ装置から前記古いページを読込み、
前記古いページの前記主データ領域の内容を前記主データ領域における誤りの訂正がある値を示す予期データとして記録し、
前記古いページを前記半導体不揮発性メモリ装置に書き戻し、
誤り訂正機能の仕組みが無効化されているときに、前記半導体不揮発性メモリ装置から前記古いページを読込み、前記古いページの前記主データ領域の内容を前記主データ領域における誤りの訂正がない値を示す実データとして記録し、
前記予期データを前記実データと比較し、
前記予期データが前記実データと一致しない場合に、前記古いページにおける前記検出されたビットがエラー状態にあることを決定することを特徴とする請求項１０に記載の不良ビットエラー処理方法。
【請求項１２】
さらに、前記新しいページの前記好適値のフィールドに、エラー状態にあると検出された不良ビットの位置における前記予期データのひとつのビットの値を記録し、前記新しいページの前記ユーザ値のフィールドに、エラー状態にあると検出された不良ビットの位置における前記実データのひとつのビットの値を記録することを特徴とする請求項１１に記載の不良ビットエラー処理方法。
【請求項１３】
前記古いページの前記主領域における前記検出されたビットの位置を決定する工程は、前記予期データと前記実データとの上で排他的論理和演算を実行し、さらにその演算の結果の最下位ビットが１に等しくなるまで前記結果を１ビットずつシフトする工程を含み、前記最下位ビットが１に等しくなるまでにシフトされたビット数が前記検出されたビットの位置に等しいことを特徴とする請求項１１または請求項１２に記載の不良ビットエラー処理方法。
【請求項１４】
さらに、書込まれるべきデータを書込まれるべきページに書込む工程を備え、
この書込む工程は、さらに、書込まれるべきページの有効性ビットを確認し、前記書込まれるべきページがエラー状態であることを前記有効性ビットが示す場合、書込まれるべきページのユーザ値のフィールドを設け、そのフィールドの値を、書込まれるべきページの不良ビット位置のフィールドに格納された不良ビット位置の値に対応して書込まれるべきデータにおけるビットの値とすることを特徴とする請求項１０から請求項１３のいずれかに記載の不良ビットエラー処理方法。
【請求項１５】
さらに、（ｉ）書込まれるべきデータに対応するビット列、（ｉｉ）前記不良ビット位置に対応する位置の値、および（ｉｉｉ）書込まれるべきページの前記不良ビット位置に位置するビットの前記好適値に対応する要求値を受取り、
書込まれるべきページの主領域が、そこに挿入された前記要求値をもつ書込まれるべきデータを含むように、前記書込まれるべきデータに、前記位置の値に対応するビット位置において、前記要求値を挿入することを特徴とする請求項１４に記載の不良ビットエラー処理方法。
【請求項１６】
さらに、半導体不揮発性メモリ装置から要求されたページを読み出す工程を備え、
この読み出す工程は、さらに、要求されたページの有効性ビットを確認し、前記要求されたページがエラー状態であることを前記有効性ビットが示す場合、前記要求されたページのユーザ値のフィールドに格納された値、前記要求されたページの主領域に格納されたデータの列、および前記要求されたページの不良ビット位置のフィールドにおける値に対応する不良ビット位置に基づいて要求されたデータを生成することを特徴とする請求項１０から請求項１５のいずれかに記載の不良ビットエラー処理方法。
【請求項１７】
さらに、（ｉ）前記要求されたページの前記主領域に格納されたビット列、（ｉｉ）前記不良ビット位置、および（ｉｉｉ）前記ユーザ値を受取り、
前記要求されたデータが、そこに挿入された前記ユーザ値をもつ前記ビット列によって構成されるように、前記ビット列に、前記不良ビット位置に対応するビット位置において、前記ユーザ値を挿入することを特徴とする請求項１６に記載の不良ビットエラー処理方法。
【請求項１８】
前記半導体不揮発性メモリ装置は、ＮＡＮＤ型のフラッシュメモリ装置であることを特徴とする請求項１０から請求項１７のいずれかに記載の不良ビットエラー処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体不揮発性メモリ装置の不良ビットエラーを処理するシステムおよび方法に関する。より詳細には、本発明は、特に永久的なビットエラーを対象として取り扱い、この永久的ビットエラーを補償して半導体不揮発性メモリ装置を使用するためのシステムおよび方法に関する。さらに詳細には、本発明は、メモリのひとつのページの予備データ領域に関する再マッピングに利用可能である。
【背景技術】
【０００２】
ほとんどの電子機器は、装置の操作を制御するために、少なくともひとつのマイクロコントローラあるいはマイクロプロセッサと呼ばれる制御装置を含んでいる。求められる機能を実現するために、制御装置は、所定の操作を実行するためのコードあるいは実行可能な命令を実行する。また、制御装置は、操作を実行するために、データを取得する。コードおよびデータは、コンピュータによって読み取り可能なメモリ装置に格納される。メモリ装置として、ＮＡＮＤ型またはＮＯＲ型のフラッシュメモリ装置のような半導体不揮発性メモリ装置を使用する装置の製造者が増加している。例えば、特許文献１に記載の装置が知られている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開昭６４−７６３３８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、フラッシュメモリ装置における問題は、それらの装置では、読出不能エラーがより頻繁に発生することである。そのような問題は、ＮＡＮＤ型のフラッシュメモリ装置においてやや顕著である。読出不能エラーは、永久的、または一時的である。永久的エラーは、例えば、ブロックが物理的に損傷した場合の不良ブロックエラー（bad block error）の場合がある。一時的エラーは、例えば、データ保持エラー（data retention error）や、読出不良エラー（read disturb error）の場合がある。フラッシュメモリ装置のような不揮発性メモリ装置を含む装置の製造業者は、メモリ装置に生じるビットエラーを訂正するためにＥＣＣ（error correction codes）と呼ばれる誤り訂正符号の仕組みを利用する。
【０００５】
データがメモリ装置に書かれている場合の装置の通常動作中に、ＥＣＣは、メモリ装置のハードウェアによってそのデータのために生成され、そのデータとともに自動的に格納される。後続の読出し工程において、データの中のエラー、すなわち誤りを修正するために、ＥＣＣはハードウェアによって読み出され、利用される。ＥＣＣにおける符号は、予め与えられた記憶量の負担を用いて、固定数のエラーを修正するために、ハードウェア設計段階中にパラメータ化することができる。一旦ＥＣＣのパラメータがハードウェアの中で選択され、実現されると、ＥＣＣのための回路類はＥＣＣの仕組みにおいてもともと想定され、設計された数より多くのエラーを修正するように変更することができない。通常のシステムの運用中に読出エラーが発生すると、ＥＣＣのアルゴリズムが修正できるより多くのエラーがデータの中に含まれていると決定される場合がある。これらの状況で、データは復元可能ではない。
【０００６】
したがって、システム設計者がハードウェアによるＥＣＣの中で実現されているより強力なＥＣＣのアルゴリズムを要求する場合、ハードウェアＥＣＣは無効化されることがあり、装置の制御装置によってより強力なＥＣＣのアルゴリズムを実行することができる。しかしながら、フラッシュメモリ装置に読み書きする場合、これらのＥＣＣのアルゴリズムは、制御装置の総合的な性能を低下させることがある。
【０００７】
上述のように、いくつかのエラーは一時的エラーの場合がある。フラッシュメモリ装置に保存されたデータ中の一時的エラーは、システムの正常な動作の間中に発生した内部的および外部的事象からの妨害により時間の経過につれて蓄積される。一時的エラーは、どんな物理的な欠陥もないメモリセルに生じる。メモリセルが不完全ではないので、ページまたはブロックのデータに対して、リフレッシュ操作を実行することによって正しいデータを回復することができる。このリフレッシュ操作は、ＥＣＣに基づくエラー修正処理を含むことができ、修正されたデータの再書き込みに随伴されている。
【０００８】
しかしながら、永久的なエラーはリフレッシュ操作によって修正することができない。一時的エラーと異なり、永久的エラーは、典型的には、メモリの物理的な欠陥によって引き起こされる。ＥＣＣは永久的エラーを修正することができるが、ＥＣＣが修正することができるエラーの量は制限されている。したがって、フラッシュメモリ装置のようなメモリ装置において、一時的エラーと同様に、永久的エラーを取り扱うことができるより効率的な方法とシステムとが求められている。
【０００９】
ここに提示された背景技術の記述は、本発明の位置づけを一般的に説明するためのものである。この背景技術の欄に述べられた範囲で、発明者らの開発活動は、出願の時点における先行技術として妥当することのないここの記述の側面と同様に、明示的にも、また、暗示的にも、本発明に対する先行技術として自認されたものではない。
【課題を解決するための手段】
【００１０】
本発明により、半導体不揮発性メモリ装置と、この半導体不揮発性メモリ装置における不良ビットエラーを修正するための処理の少なくとも一部を実行する主制御装置とを備える不良ビットエラー処理システムが提供される。
【００１１】
半導体不揮発性メモリ装置は、複数のブロックに分割することができる記憶領域を有する。ブロックは、複数のページを有し、ページは、実質的なデータを格納する主データ領域と予備データ領域とを有する。予備データ領域は、主データ領域におけるひとつのビットがエラー状態にあるか否かを示す有効性ビットのフィールドと、主データ領域におけるエラー状態にある不良ビットを示す不良ビット位置のフィールドと、主データ領域におけるエラー状態にある不良ビットの適切な値を示す好適値のフィールドと、エラー状態にある不良ビットの修正値を示すユーザ値のフィールドとを含む。
【００１２】
主制御装置は、半導体不揮発性メモリ装置から古いページを受け取り、ページがエラー状態であると検出された不良ビットを有しているか否かを決定する不良ビット検出モジュールと、不良ビットの値を修正する不良ビット修正モジュールとを備える。
【００１３】
不良ビット修正モジュールは、（ａ）−（ｆ）の手段を備える。（ａ）半導体不揮発性メモリ装置に書込まれるべき新しいページを生成する手段。（ｂ）エラー状態であると検出された不良ビットの位置を決定し、新しいページの不良ビットのフィールドにエラー状態であると検出されたビットの位置を記録する位置記録手段。（ｃ）エラー状態であると検出された不良ビットの好適値を決定し、新しいページの好適値のフィールドに、エラー状態であると検出された不良ビットの好適値を記録する手段。（ｄ）エラー状態であると検出されたビットのユーザ値を決定し、新しいページのユーザ値のフィールドに、エラー状態であると検出された不良ビットのユーザ値を記録する手段。（ｅ）古いページの主データ領域に記録された実質的なデータに対応するビット列に好適値を挿入し、好適値が挿入されたビット列を新しいページの主データ領域に記録する手段。（ｆ）古いページのアドレスに新しいページを格納する手段。
【００１４】
本発明により、半導体不揮発性メモリ装置における不良ビットエラーを修正する不良ビットエラー処理方法が提供される。
【００１５】
半導体不揮発性メモリ装置は、複数のブロックに分割することができる記憶領域を有する。ブロックは、複数のページを有し、ページは、実質的なデータを格納する主データ領域と予備データ領域とを有する。予備データ領域は、主データ領域におけるひとつのビットがエラー状態にあるか否かを示す有効性ビットのフィールドと、主データ領域におけるエラー状態にある不良ビットを示す不良ビット位置のフィールドと、主データ領域におけるエラー状態にある不良ビットの適切な値を示す好適値のフィールドと、エラー状態にある不良ビットの修正値を示すユーザ値のフィールドとを含む。
【００１６】
不良ビットエラー処理方法は、半導体不揮発性メモリ装置から古いページを受け取り、ページがエラー状態であると検出された不良ビットを有しているか否かを決定する工程を備える。不良ビットエラー処理方法は、検出されたビットがエラー状態である場合、半導体不揮発性メモリ装置に書込まれるべき新しいページを生成する。不良ビットエラー処理方法は、エラー状態であると検出された不良ビットの位置を決定し、新しいページの不良ビットのフィールドにエラー状態であると検出された不良ビットの位置を記録する。不良ビットエラー処理方法は、エラー状態であると検出された不良ビットの好適値を決定し、新しいページの好適値のフィールドに、エラー状態であると検出された不良ビットの好適値を記録する。不良ビットエラー処理方法は、エラー状態であると検出された不良ビットのユーザ値を決定し、新しいページのユーザ値のフィールドに、エラー状態であると検出された不良ビットのユーザ値を記録する。不良ビットエラー処理方法は、古いページの主データ領域に記録された実質的なデータに対応するビット列に好適値を挿入し、好適値が挿入されたビット列を新しいページの主データ領域に記録する。不良ビットエラー処理方法は、古いページのアドレスに新しいページを格納する。
【００１７】
この発明を適用可能な他の分野は、以下の説明によって明らかにされる。この発明の概要における説明と具体的な例示とは、具体的な説明を与える用途だけを意図したものであって、本発明の技術的範囲を限定することを意図したものではない。
【図面の簡単な説明】
【００１８】
【図１】図１は、本発明を適用した第１実施形態に係る装置の構成をブロック図である。
【図２】図２は、メモリ装置の構造を説明するためのブロック図である。
【図３】図３は、ページにおける不良ビットエラーを検出し、不良ビットエラーを操作する方法の一例を説明するためのフローチャートである。
【図４】図４は、ページにおける不良ビットエラーを検出する方法の一例を説明するためのフローチャートである。
【図５】図５は、不良ビットエラーの位置を決定する方法の一例を説明するためのフローチャートである。
【図６】図６は、ビット列の中のひとつのビットを望ましい値に操作し、処理する方法の一例を説明するためのフローチャートである。
【図７】図７は、ひとつのページが不良ビットエラーを含む場合のページのデータを書込む方法の一例を説明するためのフローチャートである。
【図８】図８は、ひとつのページが不良ビットエラーを含む場合のページのデータを読み出す方法の一例を説明するためのフローチャートである。
【図９】図９は、ビット列におけるひとつのビット値を決定する方法の一例を説明するためのフローチャートである。
【発明を実施するための形態】
【００１９】
以下に、図面を参照しながら本発明を実施するための複数の形態を説明する。各形態において先行する形態で説明した事項に対応する部分には同一の参照符号を付して重複する説明を省略する場合がある。各形態において構成の一部のみを説明している場合は、構成の他の部分については先行して説明した他の形態を適用することができる。各実施形態で具体的に組合せが可能であることを明示している部分同士の組合せばかりではなく、特に組合せに支障が生じなければ、明示してなくとも実施形態同士を部分的に組み合せることも可能である。
【００２０】
ここでの説明は、あくまで一例を示すためのものであって、この開示、その適用範囲、またはその使用形態の限定を意図したものではない。明瞭さのために、同じ参照番号は同様の要素を識別するために図面の中で使用される。ここに使用されたように、「Ａ、ＢおよびＣの少なくともひとつ」との表現は、非排他的論理であるＯＲを用いる論理（ＡまたはＢまたはＣ）を意味するものとして解されるべきである。方法内のステップは、この開示の原理を変更することなく、異なる順序によって実行可能であるものとして理解されるべきである。
【００２１】
図１は、第１実施形態に係る装置１００の構成部品、または装置のサブシステムの構成部品を示す。装置１００は、メモリ装置における不良ビットエラーを検出し、それを修正処理するように構成されている。装置１００は、主制御装置１１０と、半導体不揮発性メモリ装置１２０とを備える。主制御装置１１０は、装置１００を操作する。半導体不揮発性メモリ装置１２０は、装置１００を操作するための実行可能な命令群を格納する。メモリ装置１２０は、主制御装置１１０によって使用されることがあるデータを格納する。メモリ装置１２０は、埋め込まれた誤り訂正機能を有している。誤り訂正機能は、例えばＥＣＣと呼ばれる誤り訂正符号の仕組みによって提供される。主制御装置１１０は、読出モジュール１１２、書込モジュール１１４、不良ビット検出モジュール１１６、不良ビット修正モジュール１１８、およびビット処理モジュール１２２を少なくとも含むが、主制御装置１１０に含まれるモジュールはこれらに限定されない。
【００２２】
読出モジュール１１２は、不良ビット修正モジュール１１８によって以前にマッピングされたメモリ装置１２０からデータを読み込むように構成される。読出モジュール１１２はメモリ装置１２０にアドレスを送信する。また、メモリ装置１２０は要求されたアドレスに対応するデータのブロックを返す。
【００２３】
書込モジュール１１４は、再マッピング操作を用いてメモリ装置１２０にデータを書込むように構成されている。再マッピング操作によって、不良ビットエラーが補償されるように不良ビットを含むページを再マッピングすることができる。書込モジュール１１４は、書込まれるべきデータと同様に、データを書込むためのアドレスを送信する。
【００２４】
不良ビット修正モジュール１１８は、データのブロックの中のページが永久的なビットエラーを有するか否かを決定するように構成されている。また、不良ビット修正モジュール１１８は、ページが永久的なビットエラーを有している場合、メモリ装置のページを再マッピングする。この再マッピングでは、ページの予備データ領域の一部が、損傷を受けたビットの値を格納するために用いられるように、メモリ装置の利用が再配分される。よって、不良ビット修正モジュール１１８は、メモリ装置１２０上の資源を再配分することにより、損傷を受けたビットの使用を回避し、損傷を受けたビットに代わる格納領域を提供する。以下においてより詳細に説明されるように、不良ビット修正モジュール１１８は、ページにおける不良ビットの位置、不良ビットの好適値、およびそのビットに対するユーザ値、あるいはユーザ価値を決定する。不良ビット修正モジュール１１８は、読み出し操作に際して修正されたデータが最構築されるように、ページの予備データ領域を使用する。以下に述べられるように、不良ビット修正モジュール１１８は、ページのリフレッシュ操作を実行するために、さらにページがそこに不良ビットを含んでいるか否かを決定するために、不良ビット検出モジュール１１６を利用する。
【００２５】
不良ビット検出モジュール１１６は、ページがそこに不良ビットを含んでいるか否かを決定するように構成される。不良ビット検出モジュール１１６は、拡張されたリフレッシュ操作を実行する。この拡張リフレッシュ操作では、不良ビット検出モジュール１１６はメモリ装置１２０のひとつのページをリフレッシュし、メモリ装置１２０のひとつのブロックの各ページにおける永久的なビットエラーを検出する。以下においてより詳細に説明されるように、不良ビット検出モジュール１１６は、ＥＣＣが許容されたデータのページを読み込む。その後、不良ビット検出モジュール１１６は、メモリ装置１２０に訂正されたページを書き戻す。さらに、その後、不良ビット検出モジュール１１６は、ＥＣＣを無効化して埋め込まれた誤り訂正機能を不能状態とした中で、上記と同じデータを再び読み込む。そして、その後、不良ビット検出モジュール１１６は、ページが不良ビットを含むかどうか判断するために、先に読み込んだデータと、後に読み込んだデータとを比較する。言い換えると、不良ビット検出モジュール１１６は、埋め込まれた誤り訂正機能が有効な状態で読み出されたデータと、その訂正されたデータを書込んだ後に、埋め込まれた誤り訂正機能が無効な状態で読み込んだデータとを比較する。これにより、永久的なビットエラーを生じる不良ビットを特定することができる。
【００２６】
ビット処理モジュール１２２はデータの塊、データの塊の中のビットの位置、および受信されたビット位置においてデータの塊に挿入されるべき値を受け取るように構成される。ビット処理モジュール１２２は、不良ビットエラーがあるデータのページを再構築するために読出モジュール１１２によって使用される。また、ビット処理モジュール１２２は、再マッピングを伴って、書込まれるべきデータの塊における不良ビット位置における好適値を強制的に処理するために書込モジュール１１４によって使用される。一旦好適値がデータの塊に書かれれば、ビット処理モジュール１２２は要求する要素に更新されたデータの塊を返す。
【００２７】
メモリ装置１２０は、主制御装置１１０からの読出要求および書込要求を受取るように構成される。いくつかの具体化例では、メモリ装置１２０は、フラッシュメモリ装置のような半導体不揮発性メモリ装置である。さらに、フラッシュメモリ装置はＮＡＮＤ型フラッシュメモリ、またはＮＯＲ型フラッシュメモリで構成することができる。将来に開発されるメモリ装置１２０も装置１００に使用されてもよい。
【００２８】
いくつかの具体化例では、メモリ装置１２０はＮＡＮＤ型のフラッシュメモリ装置である。図２は、半導体不揮発性メモリ装置２００のデータ構造の一例を示す。図２中の２Ａは、半導体不揮発性メモリ装置２００の全体のデータ構造を示す。半導体不揮発性メモリ装置２００は、フラッシュメモリ装置である。フラッシュメモリ装置２００は、分割された複数のブロック２１０を備える。例えば、典型的なフラッシュメモリ装置２００は１０２８個のブロックに分割することができる。さらに、ひとつのブロック２１０は複数のページ２２０に分割されている。例えば、典型的なブロック２１０は、６４個のページに分割することができる。ひとつのページ２３０は、複数のバイトで構成される。例えば、典型的なページ２３０は２１１２バイトで構成することができる。さらに、ページ１２３０のそれぞれは、図示されない５２８バイトの４つの読込ユニットに別々に分割することができる。上記の具体的な数値は例示的なものであり、フラッシュメモリ装置２００の他の構成が想定可能であることが認識されるべきである。例えば、ひとつのブロックは３２個のページで構成することができる。また、ひとつのページは４０４８バイトで構成することができる。さらに、上述の構造は、異なるタイプのメモリ装置に同様に適用することができる。
【００２９】
ひとつのページ２３０は、主データ領域２４０と予備データ領域２５０とに分割されている。主データ領域２４０は保存されたデータあるいは本質的なデータを含んでいる。例えば、ブロックがプログラム領域にある場合、特定のページ２３０の主データ領域２４０は特定の命令に対応することがある。アドレスとパラメータ値も、ひとつのページ２３０の主データ領域２４０に格納することができる。予備データ領域２５０はページ２３０に関係する情報を記録している。予備データ領域２５０は、ＥＣＣのための複数バイトの領域２６０を含んでいる。上述のフラッシュメモリ装置は、ページのビットのうちのどれかがエラーを含むか否かを決定するために誤り検出アルゴリズム（error checking algorithm）を実行する図示されないメモリコントローラを含むことができる。そのような場合、予備データ領域のＥＣＣのための領域２６０は、どの単一ビットまたは複数ビットがエラーを含むのかを示す。下に議論されるように、予備データ領域２５０は追加的な情報を含んでいる。
【００３０】
図２中の２Ｂは、予備データ領域２５０のデータ構造一例を示している。予備データ領域２５０は予め設定された所定の長さ、例えば１２８ビットである。予備データ領域２５０は、さらに複数の領域２５８、２６０、および２６２に分割されうる。予備データ領域２５０は、予め設定された所定の長さ、例えば１６ビット、の不良ブロック領域２５８を含む。予備データ領域２５０は、予め設定された所定の長さ、例えば６４ビット、のＥＣＣのフィールド２６０を含む予備データ領域２５０は、予め設定された所定の長さ、例えば３２ビット、のユーザ付加領域２６２を含む。予備データ領域２５０のユーザ付加領域２６２は、ハードウェアによるＥＣＣによって保護される場合と、保護されない場合とがある。ハードウェアによるＥＣＣが利用可能でない場合、主制御装置１１０は、チェックサムまたはＣＲＣを使用して、ユーザ付加領域２６２の中の情報を保護する必要がある。図２中の２Ｃは、ユーザ付加領域２６２のデータ構造一例を示している。
【００３１】
ユーザ付加領域２６２は第１部分２６４と第２部分２６６とに分割することができる。第１部分２６４と第２部分２６６とは、対応する主データ領域における不良ビットエラーを修正するために利用可能である。例えば、第１部分２６４は、主データ領域２４０内の第１の位置における不良ビットエラーを修正することができ、第２部分２６６は、主データ領域２４０内の第２の位置における不良ビットエラーを修正することができる。第１部分２６４は４つの部分に分割することができる。第１部分は、第１の有効性ビット２６８、第１の不良ビット位置のフィールド２７０、第１の好適値ビット２７２、および第１のユーザ値ビット２７４で構成される。有効性ビット２６８、好適値ビット２７２、およびユーザ値ビット２７４が１ビットの長さであり、その一方で不良ビット位置のフィールドはビットの位置を格納するために十分な長さ、例えば１３ビットの長さである。同様に、第２部分は、第２の無効性ビット２７６、第２の不良ビット位置のフィールド２７８、第２の好適ビット２８０、および第２のユーザ値ビット２８２で構成される。
【００３２】
有効性ビット２６８は、第１部分２６４の中の残りのデータ項目がプログラムされたかどうかを示す。主データ領域２４０に検出された不良ビットがない場合、有効性ビットは０に設定される。しかしながら、不良ビットが検出される場合、第１部分における残りのデータ項目は有効な意味のある値に初期化されなければならない。また、この場合、有効性ビットは１に設定される。
【００３３】
不良ビット位置のフィールド２７０は、主データ領域２４０における第１の不良ビットエラーの位置を示す。主データ領域２４０におけるいかなるビット位置であっても特定することができるように、不良ビット位置のフィールド２７０は十分な長さを有していなければならない。したがって、Ｎを主データ領域２４０のビット長さとして、不良ビット位置のフィールド２７０に要求される長さは、Ｌｏｇ２Ｎで表される。さらに、不良ビット位置の０は、主データ領域２４０の中の最上位ビットまたは最下位ビットにおける不良ビットを示すこともできることが理解される。さらに、追加的な、または代替的なアドレス決定のための仕組みを採用することができることも理解されるべきである。
【００３４】
好適値ビット２７２は、最も少ないＥＣＣのエラーに帰着する不良ビットに見合う値である。例えば、ビットが０に至る場合、それは特定のビット位置に書込まれた値に関係なく、常に０として読み出されるビットであり、好適値は０に設定される。同様に、ビットが読出し回数の８０％において１として読み出される場合、好適値は１に設定される。
【００３５】
ユーザ値ビット２７４は、読み出しが生じる場合、その位置で読み出すことを主制御装置１１０が予期する値である。例えば、不良ビットが常に０として読み出されるが、不良ビットが１にセットされるべきである場合、ユーザ値は１である。
【００３６】
先の述べた複数のフィールドによって修正することができるビットの数は、予備データ領域２５０において利用可能な空き領域の量に依存することが理解されるべきである。例えば、それぞれのページが主データエリア当たり８１９２の規則的なデータビットを有する場合、１６ビットは予備データ領域におけるそれぞれのエントリのために必要とされ、１ビットは有効性ビットとして必要とされ、１３ビットは不良ビット位置のために必要とされ、１ビットは好適値のために必要とされ、さらに１ビットはユーザ値のために必要とされる。予備データ領域２５０が３２と４７との間のビット数を利用可能として提供する場合、データ領域におけるふたつの不良ビットを取り扱うことができる。したがって、４８ビットが利用可能な場合、３つの不良ビットを取り扱うことができる。
【００３７】
上述のように、不良ビット修正モジュール１１８はメモリ装置のページにおける不良ビットエラーを修正するように構成される。不良ビット修正モジュール１１８は、メモリ装置１２０へ訂正されたページを書込むために、メモリ装置１２０と通信可能であり、さらに、メモリ装置１２０のページが不良ビットを含むか否かを決定するために不良ビット検出モジュール１１６と通信可能である。
【００３８】
図３は、不良ビット修正モジュール１１８によって実行される処理の一例を示す。不良ビット修正モジュール１１８は、リフレッシュ操作の後に、リフレッシュ操作の間中に、あるいは予め設定された所定の間隔で、下記の処理を実行する。不良ビット修正モジュール１１８は、ブロックの全体までページを受取り、修正が要求とされる各ページを修正する。したがって、不良ビット修正モジュール１１８はメモリ装置１２０の多くのページにわたって繰り返えされるように構成されている。したがって、ステップ３１２で示されるように、現在のページあるいは現在のページアドレスを示すページカウンタＰＣＮＴは、０に設定される。ステップ３１４で示されるように、現在のページ、つまりページアドレスにおいて決定されるページ、が不良ビットをそこに有するか否かを決定するために、不良ビット修正モジュール１１８は、不良ビット検出モジュール１１６にページカウンタの値を伝達する。以下においてさらに述べられるように、不良ビット検出モジュール１１６としてのステップ３１６は、不良ビットがページに含まれるかどうか判断するために実データと予期データとを比較する。
【００３９】
予期データは、分析の対象となっているページから読み出されるべきデータである。ところが、実データは、読み込まれているページの主データ領域で実際に見つかり、読み出されたデータである。ひとつのページに関する予期データと実データとの間に不一致が発生すれば、不良ビット検出モジュール１１６は不良ビットの存在を不良ビット修正モジュール１１８に通知する。したがって、ステップ３１６で示されるように、不良ビット修正モジュール１１８は不良ビットが検知されたか否かを決定する。不良ビットが検知されなければ、不良ビット修正モジュール１１８は、ステップ３３０で示されるように、分析されるべきページが残されているかどうか判断する。分析しなければならないページが残されている場合、ステップ３３４で示されるように、ページアドレスをひとつ増加させるために、ページカウンタＰＣＮＴを１だけ増加させる。
【００４０】
不良ビットが検出された場合、不良ビット修正モジュール１１８は、ステップ３１８で示されるように、不良ビットの位置を決定する。下記のように、不良ビット修正モジュール１１８は予期データおよび実データを使用して、不良ビットを識別し特定することができる。予期データと実データとに対して排他的論理和（ＸＯＲ）の演算処理を実行し、その結果に対してビットをシフトする処理を実行することによって、不良ビットの位置を識別し特定することができる。不良ビット修正モジュール１１８は、メモリ装置に書込まれるべきページを生成するために用いられるデータ構造を生成することができる。この生成されるデータ構造は、複数のフィールドを有しており、それらのフィールドは、主データのためのフィールド、不良ビット位置のフィールド、好適ビット値のフィールド、およびユーザビット値のフィールドを含むことができる。したがって、不良ビット修正モジュール１１８は不良ビット位置のフィールドを不良ビット位置と等しく設定することができる。
【００４１】
一旦不良ビットの位置が特定されると、不良ビット修正モジュール１１８は、ステップ３２０で示されるように、不良ビットの好適ビット値を決定し、設定する。上述のように、好適値は、現在のページの主データ領域中の不良ビット位置で読まれる可能性が最もありそうな値である。好適値は、不良ビット位置において実データから読まれた値と等しく設定されてもよい。一旦不良ビット修正モジュール１１８が好適ビット値を決定したならば、好適ビット値フィールドは好適ビット値に設定される。ユーザビット値のフィールドは、ステップ３２２で示されるように、不良ビット位置にあるビットの望ましい値にセットされる。一旦不良ビット位置、好適ビット値およびユーザビット値がすべて設定されたならば、ステップ３２４で示されるように、不良ブロック補正モジュール１１８はページの主データ領域に書込む。ページの主データ領域が予期データとして書込まれるが不良ビット位置にあるビットは好適ビット値に強制的に処理される。下記に述べられるように、ビット処理モジュール１２２は予期データ、不良ビット位置および好適値を受け取り、不良ビット位置で好適値を備えた予期データを表わすビット列を生成する。
【００４２】
その後、ステップ３２６で示されるように、データ補正モジュール１１８はメモリに書込まれるべきページの値を設定する。メモリ装置に書込まれるべきページは、ビット処理モジュール１２２によって強制的に操作された主データ領域と、１に設定された有効性ビット値と、不良ビット位置の値に設定された不良ビット位置と、好適値に設定された好適ビット値と、ユーザ値に設定されたユーザビット値とを含んでいる。ＥＣＣのための複数のフィールド、または予備データ領域の不良バイトのフィールドなどの他の複数のフィールドが設けられてもよい。集められたデータ群は、予め設定された所定の長さ、例えばメモリ装置のひとつのページの長さ、の単一のビット列に組み上げられる。この時点で、ページの全体の生成が完了し、ステップ３２８で示されるように、そのページがメモリ装置に書込まれる。ステップ３２８は、新しいページの好適値のフィールドに、エラー状態にあると検出された不良ビットの位置における予期データのひとつのビットの値を記録する手段と、新しいページのユーザ値のフィールドに、エラー状態にあると検出された不良ビットの位置における実データのひとつのビットの値を記録する手段とを提供する。よって、不良ビット修正モジュールは、上記記録手段を備える。
【００４３】
この後、分析の対象となっているブロック内の他の残されたページを分析するために、処理の実行が継続される。したがって、不良ビット修正モジュール１１８は、ステップ３３０で示されるように、分析されるべきものとして残されたページがあるか否かを決定する。分析されるべきページが残っている場合、処理は実行を継続する。また、ステップ３３４で示されるように、ページカウンタＰＣＮＴを１つだけ増加させることによりページアドレスが次のページに変更される。分析されるべきページが残っていない場合、ステップ３３２で示されるように、不良ビット修正モジュール１１８は処理の実行を終了する。
【００４４】
上述のように、不良ビット検出モジュール１１６は、ブロックのページのアドレスを受け取り、不良ビットエラーがページに含まれるか否かを決定する。以下の方法は、フラッシュメモリ装置１２０から一時的エラーを取り除くために使用されるリフレッシュ操作の間中にビットエラーを検知するための処理を示している。特に、リフレッシュ操作は、ＥＣＣによる誤り訂正処理が有効化されたフラッシュメモリ装置１２０からデータを読出し、ＥＣＣによる誤り訂正処理にすべてのいかなるエラーも訂正することを許容し、さらに、その後、フラッシュメモリ装置１２０にそのデータを書き戻す。以下に述べられた拡張的なリフレッシュ操作では、永久的なビットエラーはページの中において検出される。
【００４５】
図４は、不良ビット検出モジュール１１６によって実行されうる不良ビット検出方法を図示する。この不良ビット検出方法では、ひとつのページに不良ビットが存在するか否かを決定し、さらに、そうならば不良ビットの位置を決定する。さらに、図示の方法は、メモリ装置のページのリフレッシュ操作を実行する。以下に説明される方法は単一のページに関して実行されるものとして図示されている。しかし、それらの方法は、メモリ装置のひとつのブロック内における複数のページのそれぞれに対して実行されるように繰り返して継続することができる。
【００４６】
不良ビット検出モジュール１１６は、ステップ４１２で示されるように、不良ビットの検出がその上において行われるべきページのページアドレスを示す要求を、装置１００の一部、例えば不良ビット修正モジュール１１８から受けとる。不良ビット検出モジュール１１６は、ステップ４１４で示されるように、要求されたページアドレスにおけるページのデータを読み出す。呼び出されている不良ビット検出モジュール１１６に先立って、ページアドレスを含んでいるブロックがメモリ装置１２０からロードされうる。ページアドレスで見つけられたページを取得する際、ステップ４１４で示されるように、不良ビット検出モジュール１１６はページの主データ部分を読む。先の読み取りは、ＥＣＣの修正されたデータである。
【００４７】
データのＥＣＣの修正部分は、メモリのページの主データ領域で見つけられる。このデータは予期データと呼ばれる。ステップ４１８で示されるように、不良ビット検出モジュール１１６はメモリに予期データを書く。不良ビット検出モジュール１１６は、ステップ４２０で示されるように、ＥＣＣによるエラー訂正機能を無効化する。その後不良ビット検出モジュール１１６は、ステップ４２２で示されるように、その特定のページ上においてエラー訂正を行なうことなく、そのページを再び読み出す。訂正されないページの主データ領域で見つけられたデータは、実データと呼ばれる。ステップ４２４で示されるように、不良ビット検出モジュールは、訂正されないページの主データ領域で見つけられたデータを取得し、その後、ステップ４２６で示されるように、ＥＣＣによるエラー訂正機能を有効化する。
【００４８】
上述のように、予期データはページから取得されたＥＣＣによって訂正されたデータである。その一方で、実データはページから取得されたＥＣＣによって訂正されていないデータである。ページに永久ビットエラーがあるか否かを決定するために、ステップ４２８で示されるように、不良ビット検出モジュール１１６は、予期データと実データとを比較する。予期データが実データと一致しなければ、ステップ４４０で示されるように、不良ビット検出モジュール１１６は、そのページを不良ビットエラーをもつページとして決定する。あるページが不良ビットをもつページとして決定される場合、そのページの予備データ領域の有効性ビットが１に設定されることによって、そのページにマークが付される。予期データが実データと一致すれば、ステップ４３２で示されるように、不良ビット検出モジュール１１６は、そのページを不良ビットエラーをもつページとして決定することなく、処理を終了する。
【００４９】
上述の方法の変形例を実施することができ、しかもそれら変形例は、この明細書の開示の範囲内であるものと解されるべきである。例えば、方法は全データ・ブロックのために実行するかもしれない。それは、方法がブロック中のページがそれぞれ上に記述された方法で分析されるまで、実行するループを含むほどのものであるさらに、図４に図示されたいくつかのステップは、ひとつのステップに組み合わせることが可能であり、図示されたひとつのステップは複数のステップによって実行することが可能である。更に、不良ビット検出モジュール１１６は、ページが不良ビットエラーを有するか否かを決定するために、他の異なる方法を実行することもできる。
【００５０】
上述のように、不良ビット修正モジュール１１８は、ページの主データ領域の不良ビットの位置を決定する。図５は、メモリ装置のひとつのページにおける不良ビットの位置を決定する方法の一例を示す。不良ビットの位置を決定するために、不良ビット修正モジュール１１８は、ステップ５１２で示されるように、メモリ装置のひとつのページで見つかった予期データの予期値と実データの実値とを用いる。不良ビット修正モジュール１１８は期待値と実値との間で排他的論理和、ＸＯＲ、の演算処理を実行することによって検査値を算出し、検査値を用いて演算結果に注目する。検査値は、期待値と実値との間で一致が見出されないすべてのビットにおいて１をもつ。不良ビットの位置を決定するために、ステップ５１６で示されるように、ビット値のカウンタＢＶＣは０に設定される。その後、不良ビット修正モジュール１１８は、ステップ５１８で示されるように、検査値に１が見出される最初の機会を決定するために、検査値にわたって処理を繰り返す。最下位ビットが１と等しくない場合、ステップ５２０で示されるように、ビット値のカウンタＢＶＣが１だけ増加される。ステップ５１８で示されるように、検査値は右へ１ビットだけシフトされ、変更後の検査値の最下位ビットを確認するために、最下位ビットの確認に戻る。この方法の処理は、最下位ビットが１であると決定されるまで、実行を継続し、ステップ５２４で示されるように、その時点でビット位置のカウンタＢＶＣがもとに戻される。その後、図３に関して記述されたように、不良ビット位置はメモリ装置のページの予備データ領域に格納される。
【００５１】
上述の方法の変形例を実施することができ、しかもそれら変形例は、この明細書の開示の範囲内であるものと解されるべきである。例えば、メモリ装置の単一のページに関して多数の不良ビット位置が決定されるように、上述の方法は、検査値の中にふたつまたはそれ以上の１が見つかるまで実行することができる。さらに、図５に図示されたいくつかのステップは、ひとつのステップに組み合わせることが可能であり、図示されたひとつのステップは複数のステップによって実行することが可能である。更に、不良ビット検出モジュール１１６は、不良ビットの位置を決定するために、他の異なる方法を実行することもできる。
【００５２】
以前に議論されたように、不良ビット修正モジュール１１８は、不良ビットを特定の値に処理することによってメモリ装置のページに保存されるべきデータを操作するためにビット処理モジュール１２２を利用する。図６は、ビット処理モジュール１２２によって実行することができる方法の一例を示す。書込モジュール１１４、読出モジュール１１２、およびビット修正モジュール１１８のうちのひとつが、ひとつのビットが特定の値に強制的に操作処理されるべきことを要求する時、ビット処理モジュール１２２は下記の処理方法を実行する。そうするために、ビット処理モジュール１２２は、ステップ６１２で示されるように、操作されるデータを表わすデータの塊、処理されるビットの位置、およびビットが処理される値などの処理データを受け取る。ビットの位置は、数値Ｎによって、与えられる。ビットの位置は、例えば、最上位ビットまたは最下位ビットからＮ番目の処理されるべきビットを示す値Ｎである。ひとつのビットを望ましい値に処理するために、ビット処理モジュール１２２はビットマスクを使用する。ステップ６１４で示されたように、ビットマスクＢＭＫは１、例えば０Ｘ０００１、に設定される。ビットマスクＢＭＫは、ステップ６１６で示されるように、位置の値だけ、左へシフトされる。例えば、３番目のビットが処理されるべきものである場合、ビットマスクは左へ３つの位置だけ、例えば０Ｘ０００４へ、シフトされる。次に、ビット処理モジュールは、ステップ６１８において、処理されるビットの値ＢＶＦを分析する。処理される対象ビットの値ＢＶＦが１である場合、ビット処理モジュール１２２は、ステップ６２６を実行し、ビットマスクとデータの塊との間において論理和演算を実行する。すなわち、新データは、データとビットマスクＢＭＫとの論理和、ＯＲ、によって与えられる。処理によって変更されるべきビットの値ＢＶＦが０である場合、ビットマスクＢＭＫは、ステップ６２２に示されるように、反転される。その後、ステップ６２４で示されるように、ビットマスクとデータの塊との間において論理積演算を実行する。すなわち、新データは、データとビットマスクＢＭＫの反転値との論理積、ＡＮＤ、によって与えられる。ステップ６２６またはステップ６２４が実行された後、論理和演算または論理積演算によって得られた新データは、要求しているモジュールに返される。
【００５３】
上述の方法の変形例を実施することができ、しかもそれら変形例は、この明細書の開示の範囲内であるものと解されるべきである。さらに、図６に図示されたいくつかのステップは、ひとつのステップに組み合わせることが可能であり、図示されたひとつのステップは複数のステップによって実行することが可能である。更に、ビット処理モジュール１２２は、あるビットを望ましい値に修正処置するために、他の異なる方法を実行することもできる。
【００５４】
主制御装置１１０がメモリ装置への書込みを要求する場合、主制御装置１１０は書込モジュール１１４を利用する。それはページが不良ビットを含むことをメモリ装置のページの有効性ビットが示す場合に、メモリ装置のページを再マッピング、すなわち再配分するように構成される。図７は、メモリ装置１２０にページを書込む場合に、書込モジュール１１４によって実行することができる方法の一例を示す。書込モジュール１１４は、ステップ７１２で示されるように、書込まれるべきページのアドレス、およびそのページの主データ領域に格納されるべきデータを示すデータの塊を受取る。データを書込む前に、書込まれるべきページ、すなわち受け取ったページアドレスにおけるページ、に不良ビットが存在するか否かを決定するために、ステップ７１４で示されるように、書込モジュール１１４は、取得されたページからデータを読み出す。ステップ７１６で示されるように、書込モジュール１１４はページの有効性ビットを確認し、ステップ７１８で示されるように、有効性ビットが、そのページがビットエラーを含むことを示しているか否かを決定する。そのページに不良ビットエラーがなければ、書込モジュール１１４は、有効性ビットが０に設定されている間、データの塊を用いて、書込むためのページを生成する。その後、ステップ７３０で示されるように、書込モジュール１１４は、書込まれるべきページを、メモリ装置に書込む。
【００５５】
不良ビットが存在する場合、ページが再マッピングされるように、予備データ領域のデータと同様に、データの塊も操作されなければならない。データが適切に操作されることを保証するために、ステップ７２０で示されるように、書込モジュール１１４は読まれたデータから不良ビット位置を決定する。書込モジュール１１４は取得されたページの予備データ領域からの不良ビット位置に対応する値を読み込み、決定する。同様に、ステップ７２２で示されるように、書込モジュール１１４は取得されたページの予備データ領域から不良ビットの好適値を読み込み、決定する。ステップ７２４で示されるように、書込モジュール１１４は、受取ったデータの塊の中の不良ビット位置におけるビットから、ユーザ値を決定し、設定する。受取ったデータの塊は、不良ビットを備えない。しかし、不良ビットの値に対応するビットにおけるビット値は、書込まれるべきページのユーザ値のフィールドに入力される。
【００５６】
その後、書込モジュール１１４は、ステップ７２６で示されるように、好適値が不良ビット位置で主データに挿入されるように、ビット処理モジュール１２２に主データ、不良ビット位置および好適値を伝える。その後、ステップ７２８で示されるように、書込モジュール１１４は、書込まれるべきページを生成する。書込まれるべきページは、後続のブロック書き込み処理の中で書込まれるべきメモリ装置の中のページに相当するデータ構造である。書込まれるべきページは主データ、有効性ビット、不良ビット位置、好適値およびユーザ値を含んでいる。一旦書込まれるべきページが生成されれば、書込モジュール１１４はメモリ装置に、そのページを書込む。
【００５７】
主制御装置１１０は、一度に全ブロックを書込むように構成されうる。したがって、書込モジュール１１４は、メモリ装置１２０にひとつのブロックの全体が書き戻される前に、そのブロックの全体における内容が書き直されるまで、待つように構成されうる。
【００５８】
上述の方法の変形例を実施することができ、しかもそれら変形例は、この明細書の開示の範囲内であるものと解されるべきである。さらに、図７に図示されたいくつかのステップは、ひとつのステップに組み合わせることが可能であり、図示されたひとつのステップは複数のステップによって実行することが可能である。更に、書込モジュール１１４は、あるビットを望ましい値に修正処置するために、他の異なる方法を実行することもできる。
【００５９】
主制御装置１１０がメモリ装置１２０へ読出しを要求する場合、主制御装置１１０は読出モジュール１１２を利用する。それは不良ビットエラーを補償するために、主データ領域から主データを再構築するように構成される。図８は、読出モジュール１１２によって実行することができる方法の一例を示す。ステップ８１２で示されるように、読出モジュール１１２はメモリ装置１２０から読み込まれるべきページのアドレスを受け取る。その後、ステップ８１４で示されるように、読出モジュール１１２は要求されたページをメモリ装置１２０から取得する。その後、ステップ８１６で示されるように、読出モジュール１１２は、読まれたページの主データ領域を読み込む。読まれたページの主データ領域に含まれていたデータを格納するように、読出モジュール１１２は変数、例えば主データを初期化することができる。
【００６０】
ステップ８１８で示されるように、読出モジュール１１２は読まれたページの有効性ビットを確認し、ステップ８２０で示されるように、有効性ビットが読まれたページにおける不良ビットエラーを示すかどうかを決定する。有効性ビットが０に設定されている場合、つまり不良ビットエラーがない場合、ステップ８２８で示されるように、読出モジュール１１２は要求しているモジュールに主データを返す。また、処理は実行を終了する。
【００６１】
しかしながら、有効性ビットが１にセットされる場合、つまり、ページが不良ビットを含んでいる場合、ステップ８２２で示されるように、読出モジュール１１２は読まれたページの不良ビットのフィールドから不良ビット位置を読み出す。ステップ８２４で示されるように、読出モジュール１１２は、さらに、読まれたページのユーザ値のフィールドからのユーザ値を決定する。例えば、読まれたページのユーザ値のフィールドが、不良ビット位置にあるビットが１であることを示す場合、ユーザ値は、１に等しく設定される。
【００６２】
その後、ステップ８２６で示されるように、読出モジュール１１２はビット処理モジュール１２２に可変主データ、不良ビット位置、およびユーザ値を伝える。上述のように、ビット処理モジュールは、不良ビット位置にユーザ値を配置するために、主データを操作し、処理する。ビット処理モジュールは、そこに含まれたユーザ値によって可変の主データを返す。その後、ステップ８２８で示されるように、読出モジュール１１２は、要求しているモジュールに主データを伝える。
【００６３】
上述の方法の変形例を実施することができ、しかもそれら変形例は、この明細書の開示の範囲内であるものと解されるべきである。さらに、図８に図示されたいくつかのステップは、ひとつのステップに組み合わせることが可能であり、図示されたひとつのステップは複数のステップによって実行することが可能である。更に、読出モジュール１１２は、あるビットを望ましい値に修正処置するために、他の異なる方法を実行することもできる。
【００６４】
一連のビット列における特定のビットの値を決定するために、書込モジュール１１４、読出モジュール１１２および不良ビット修正モジュール１１８のすべては、ある時点で、要求する。図９は、ビット列におけるひとつのビット値を決定する方法の一例を示す。ステップ９１２で示されるように、ビット列およびビット位置を含む処理データが受け取られる。データ列は、ステップ９１４で示されるように、ビット位置によって記述されるビットの数だけ、右へシフトされる。要求されたビット値は、シフト操作が実行された後の最下位ビットの値である。最下位ビットは、ステップ９１６で示されるように、シフト操作されたビット列と、値１、つまり０Ｘ０００１、をもつマスクとの論理積演算によって与えられる。ステップ９１８で示されるように、ビット値は要求しているモジュールに返される。
【００６５】
上述の方法の変形例を実施することができ、しかもそれら変形例は、この明細書の開示の範囲内であるものと解されるべきである。例えば、マスクはビット位置によって指定されたビットの数だけ、左へシフトすることができる。さらに、図９に図示されたいくつかのステップは、ひとつのステップに組み合わせることが可能であり、図示されたひとつのステップは複数のステップによって実行することが可能である。更に、読出モジュール１１２は、あるビットを望ましい値に修正処置するために、他の異なる方法を実行することもできる。
【００６６】
ここに使用されたように、モジュールは、以下に列挙される構成要素の一部を示すか、またはそれを含むものを示すことがある。構成要素は、（１）ＡＳＩＣ（Application Specific Integrated Circuit）と呼ばれる、特定用途向け集積回路、（２）電気回路、（３）論理回路の組み合わせ、（４）ＦＰＧＡ（Field Programmable Gate Array）と呼ばれる、製造後に構成、機能を設定可能な集積回路、（５）プログラムコードを実行する、共有の、専用の、または一群の、プロセッサー、（６）上述の機能を提供する適切な部品、および（７）チップ上に配置されたシステムのような、上記構成要素の一部またはすべての組み合わせ物を含む。モジュール、および部は、プロセッサーによって実行されたプログラムコードを格納するメモリを含むことがある。メモリは、共有、専用、またはグループとして提供されうる。
【００６７】
コード、またはプログラムコードは、上述のように、ソフトウェア、ファームウェアおよび/またはマイクロコードを含みうるものであって、プログラム、ルーチン、機能、クラスおよび/またはオブジェクトを指すことがある。共有は、上述のように、多数のモジュールからの一部またはすべてのコードが単一または共有のプロセッサーを使用して実行される場合があることを意味する。さらに、多数のモジュールからの一部またはすべてのコードは、単一または共有のメモリに格納される場合がある。グループは、上述のように、単一のモジュールからの一部またはすべてのコードが一群のプロセッサーを使用して実行される場合があることを意味する。さらに、単一のモジュールからの一部またはすべてのコードは一群のメモリを使用して格納される場合がある。
【００６８】
ここに記述された装置と方法は、１台以上のプロセッサーによって実行された１つ以上のコンピュータプログラムによって具体化することができる。コンピュータプログラムは、コンピュータ読取り可能な非一時的記録を提供し、かつ実体的な記録媒体の上に格納される、プロセッサーによって実行可能な命令群を含んでいる。コンピュータプログラムは、保存されたデータを含むことがある。コンピュータ読取り可能な非一時的記録を提供し、かつ実体的な記録媒体の非制限的な例として、不揮発性メモリ、磁気記憶装置、および光記憶装置を挙げることができる。
【００６９】
以上に説明した実施形態によると、半導体不揮発性メモリ装置と、この半導体不揮発性メモリ装置における不良ビットエラーを修正するための処理の少なくとも一部を実行する主制御装置とを備える不良ビットエラー処理システムが提供される。また、不良ビットエラー処理方法が提供される。
【００７０】
この実施形態では、半導体不揮発性メモリ装置は、複数のブロックに分割することができる記憶領域を有する。ブロックは、複数のページを有し、ページは、実質的なデータを格納する主データ領域と予備データ領域とを有する。予備データ領域は、主データ領域におけるひとつのビットがエラー状態にあるか否かを示す有効性ビットのフィールドと、主データ領域におけるエラー状態にある不良ビットを示す不良ビット位置のフィールドと、主データ領域におけるエラー状態にある不良ビットの適切な値を示す好適値のフィールドと、エラー状態にある不良ビットの修正値を示すユーザ値のフィールドとを含む。
【００７１】
主制御装置は、半導体不揮発性メモリ装置から古いページを受け取り、ページがエラー状態であると検出された不良ビットを有しているか否かを決定する不良ビット検出モジュールと、不良ビットの値を修正する不良ビット修正モジュールとを備える。
【００７２】
不良ビット修正モジュールは、（ａ）半導体不揮発性メモリ装置に書込まれるべき新しいページを生成する手段と、（ｂ）エラー状態であると検出された不良ビットの位置を決定し、新しいページの不良ビットのフィールドにエラー状態であると検出された不良ビットの位置を記録する位置記録手段と、（ｃ）エラー状態であると検出された不良ビットの好適値を決定し、新しいページの好適値のフィールドに、エラー状態であると検出された不良ビットの好適値を記録する手段と、（ｄ）エラー状態であると検出された不良ビットのユーザ値を決定し、新しいページのユーザ値のフィールドに、エラー状態であると検出された不良ビットのユーザ値を記録する手段と、（ｅ）古いページの主データ領域に記録された実質的なデータに対応するビット列に好適値を挿入し、好適値が挿入されたビット列を新しいページの主データ領域に記録する手段と、（ｆ）古いページのアドレスに新しいページを格納する手段とを備える。
【００７３】
この実施形態の不良ビット検出モジュールは、（ｉ）誤り訂正機能の仕組みが有効化されているときに、半導体不揮発性メモリ装置から古いページを読込み、古いページの主データ領域の内容を主データ領域における誤りの訂正がある値を示す予期データとして記録する手段と、（ｉｉ）古いページを半導体不揮発性メモリ装置に書き戻す手段と、（ｉｉｉ）誤り訂正機能の仕組みが無効化されているときに、半導体不揮発性メモリ装置から古いページを読込み、古いページの主データ領域の内容を主データ領域における誤りの訂正がない値を示す実データとして記録する手段と、（ｉｖ）予期データを実データと比較する手段と、（ｖ）予期データが実データと一致しない場合に、古いページにおける検出されたビットがエラー状態にあることを決定する手段とを備える。不良ビット修正モジュールは、新しいページの好適値のフィールドに、エラー状態にあると検出された不良ビットの位置における予期データのひとつのビットの値を記録する手段と、新しいページのユーザ値のフィールドに、エラー状態にあると検出された不良ビットの位置における実データのひとつのビットの値を記録する手段とを備えることができる。
【００７４】
不良ビット修正モジュールの位置記録手段は、予期データと実データとの上で排他的論理和演算を実行し、さらにその演算の結果の最下位ビットが１に等しくなるまで結果を１ビットずつシフトすることにより、古いページの主データ領域における検出された不良ビットの位置を決定し、最下位ビットが１に等しくなるまでにシフトされたビット数が検出された不良ビットの位置に等しい。主制御装置は、さらに、書込まれるべきデータを書込まれるべきページに書込む書込モジュールを備えることができる。
【００７５】
書込モジュールは、書込まれるべきページの有効性ビットを確認し、書込まれるべきページがエラー状態であることを有効性ビットが示す場合、書込まれるべきページのユーザ値のフィールドを設け、そのフィールドの値を、書込まれるべきページの不良ビット位置のフィールドに格納された不良ビット位置の値に対応して書込まれるべきデータにおけるビットの値とする。
【００７６】
主制御装置は、さらに、（ｉ）書込まれるべきデータに対応するビット列、（ｉｉ）不良ビット位置に対応する位置の値、および（ｉｉｉ）書込まれるべきページの不良ビット位置に位置するビットの好適値に対応する要求値を受取るビット処理モジュールを備えることができる。ビット処理モジュールは、書込まれるべきページの主領域が、そこに挿入された要求値をもつ書込まれるべきデータを含むように、書込まれるべきデータに、位置の値に対応するビット位置において、要求値を挿入する。
【００７７】
主制御装置は、さらに、半導体不揮発性メモリ装置から要求されたページを読み出す読出モジュールを備えることができる。読出モジュールは、要求されたページの有効性ビットを確認し、要求されたページがエラー状態であることを有効性ビットが示す場合、要求されたページのユーザ値のフィールドに格納された値、要求されたページの主領域に格納されたデータの列、および要求されたページの不良ビット位置のフィールドにおける値に対応する不良ビット位置に基づいて要求されたデータを生成する。
【００７８】
主制御装置は、さらに、（ｉ）要求されたページの主領域に格納されたビット列、（ｉｉ）不良ビット位置、および（ｉｉｉ）ユーザ値を受取るビット処理モジュールを備えることができる。
【００７９】
ビット処理モジュールは、要求されたデータが、そこに挿入されたユーザ値をもつビット列によって構成されるように、ビット列に、不良ビット位置に対応するビット位置において、ユーザ値を挿入する。半導体不揮発性メモリ装置は、ＮＡＮＤ型のフラッシュメモリ装置とすることができる。
【００８０】
この明細書における開示の広い教唆は、様々な形式で具体化することができる。したがって、この明細書における開示は、特定の例示を含んでいるが、図面、明細書および特許請求の範囲の参照および学習に基づいて当業者には他の変形例が明らかになるから、ここに開示された発明の真の技術的範囲はそのように制限されるべきではない。
【符号の説明】
【００８１】
１００  装置、
１１０  制御装置（主制御装置）、
１２０  メモリ装置（半導体不揮発性メモリ装置、フラッシュメモリ装置）、
１１２  読出モジュール、
１１４  書込モジュール、
１１６  不良ビット検出モジュール、
１１８  不良ビット修正モジュール、
１２２  ビット処理モジュール。
【図１】
0005780174.tif 000002
【図２】
0005780174.tif 000003
【図３】
0005780174.tif 000004
【図４】
0005780174.tif 000005
【図５】
0005780174.tif 000006
【図６】
0005780174.tif 000007
【図７】
0005780174.tif 000008
【図８】
0005780174.tif 000009
【図９】
0005780174.tif 000010