(57)【特許請求の範囲】
【請求項１】
複数のビットを記憶する方法であって、
（ａ）少なくとも１つのメモリセルの各々の物理的パラメータの各値を設定するように試みて、前記少なくとも１つのメモリセルの前記物理的パラメータの前記少なくとも１つの値が前記ビットの最初の部分を表すようにするステップ；
（ｂ）前記少なくとも１つのセルの前記物理的パラメータが設定された前記少なくとも１つの値に従って、前記ビットの全てを前記少なくとも１つのメモリセルに記憶するために物理的パラメータ値の範囲に対する前記ビットの適応マッピングを提供するステップ；
および
（ｃ）前記少なくとも１つのメモリセルの各々に対して、前記ビットの全てを前記少なくとも１つのメモリセルに記憶するために、前記各メモリセルの前記物理的パラメータの前記各値を調整する必要がある場合：前記少なくとも１つのメモリセルに記憶されている全てのビットを前記少なくとも１つのメモリセルにおいて消去することなく前記各メモリセルの前記物理的パラメータの前記各値を前記適応マッピングに従って調整するステップ
を含む、方法。
【請求項２】
前記試みるステップがまた、各メモリセルの前記物理的パラメータの前記各値を設定する試みであって、前記ビット全てに対応する前記少なくとも１つのメモリセルの前記物理的パラメータの前記少なくとも１つの値が、前記試みるステップによって設定される、前記少なくとも１つのメモリセルの前記物理的パラメータの前記少なくとも１つの値から、アクセス可能であるように試みる、請求項１に記載の方法。
【請求項３】
前記物理的パラメータが閾値電圧である、請求項１に記載の方法。
【請求項４】
さらに、
（ｄ）前記ビット全てを前記少なくとも１つのセルに記憶するために物理的パラメータ値の範囲に対するビットのデフォルトマッピングを提供するステップ
を含む、請求項１に記載の方法。
【請求項５】
前記適応マッピングが前記デフォルトマッピングと同じである、請求項４に記載の方法。
【請求項６】
前記適応マッピングが前記デフォルトマッピングとは異なる、請求項４に記載の方法。
【請求項７】
前記デフォルトマッピングが、前記ビット全てを前記少なくとも１つのセルに記憶することと矛盾する、請求項６に記載の方法。
【請求項８】
前記少なくとも１つのセルの１つに対して、前記デフォルトマッピングに従って前記ビットのそれぞれ少なくとも一部分に対応する、前記１つのセルの前記物理的パラメータ値の範囲に、前記ビットの前記最初の部分を記憶するために前記１つのセルの前記物理的パラメータが設定された前記各値から、アクセスできない、請求項７に記載の方法。
【請求項９】
前記物理的パラメータ値の範囲が順位を付けられ、および前記ビットの前記それぞれ少なくとも一部分に対応する、前記１つのセルの前記物理的パラメータ値の範囲が、前記ビットの前記最初の部分を記憶するために前記１つのセルの前記物理的パラメータが設定された前記各値未満である、請求項８に記載の方法。
【請求項１０】
前記適応マッピングを提供するステップは、前記ビットの少なくとも一部分を符号語として符号化することを含む、請求項１に記載の方法。
【請求項１１】
前記各セルの前記物理的パラメータの前記各値を調整するステップは、前記セルが前記符号語のそれぞれ少なくとも一部分を記憶するように、前記各セルの前記物理的パラメータの前記各値を調整することを含む、請求項１０に記載の方法。
【請求項１２】
少なくとも１つのビットを記憶する方法であって、
（ａ）少なくとも１つのメモリセルの物理的パラメータの値の範囲の予め定められたセットに対する前記少なくとも１つのビットのデフォルトマッピングを提供するステップ；
（ｂ）前記少なくとも１つのビットが、前記デフォルトマッピングに従って前記少なくとも１つのメモリセルに記憶されるように、前記少なくとも１つのメモリセルの各メモリセルの前記物理的パラメータの各値を設定する試みを行うステップ；および
（ｃ）前記試みが、前記少なくとも１つのメモリセルの１つの前記物理的パラメータの前記各値を、前記デフォルトマッピングに従って前記少なくとも１つのビットに対応する、前記１つのメモリセルの物理的パラメータ値の範囲にアクセスできない値に設定する場合：前記少なくとも１つのメモリセルに前記少なくとも１つのビットを記憶するために、前記少なくとも１つのメモリセルに記憶されている全てのビットを前記少なくとも１つのメモリセルにおいて消去することなく、前記少なくとも１つのビットに対応する前記１つのメモリセルの物理的パラメータ値の範囲にアクセス可能となるように、前記物理的パラメータの前記値の前記範囲の予め定められたセットに対する前記少なくとも１つのビットの適応マッピングを提供するステップ
を含む方法。
【請求項１３】
さらに、
（ｄ）前記適応マッピングに従って前記少なくとも１つのビットが前記少なくとも１つのメモリセルに記憶されるように、各メモリセルの前記物理的パラメータの前記各値を設定するステップ
を含む、請求項１２に記載の方法。
【請求項１４】
前記物理的パラメータが閾値電圧である、請求項１２に記載の方法。
【請求項１５】
前記物理的パラメータ値の範囲が順序付けられ、および前記デフォルトマッピングに従って前記少なくとも１つのビットに対応する前記１つのセルの前記物理的パラメータ値の範囲が、前記試みが前記１つのセルの前記物理的パラメータを設定した前記各値未満である、請求項１２に記載の方法。
【請求項１６】
前記適応マッピングを提供するステップが、前記少なくとも１つのビットの少なくとも一部分を符号語として符号化することを含む、請求項１２に記載の方法。
【請求項１７】
少なくとも１つのビットを記憶する方法が、
（ａ）少なくとも１つのメモリセルの物理的パラメータ値の範囲の予め定められたセットに対する前記少なくとも１つのビットの複数のマッピングを提供するステップ；
（ｂ）前記少なくとも１つのビットが、前記これらマッピングの第１のマッピングに従って前記少なくとも１つのメモリセルに記憶されるように、前記少なくとも１つのメモリセルの各メモリセルの前記物理的パラメータの各値を設定するように試みるステップであって、前記試みが、前記少なくとも１つのメモリセルの１つの前記物理的パラメータの前記各値を、前記第１のマッピングに従って、前記少なくとも１つのビットに対応する前記１つのセルの物理的パラメータ値の範囲にアクセスできない値に設定するステップ；および
（ｃ）前記試みの結果に応答して：前記少なくとも１つのメモリセルに記憶されている全てのビットを前記少なくとも１つのメモリセルにおいて消去することなく前記少なくとも１つのメモリセルに前記少なくとも１つのビットを記憶するために前記マッピングの異なるマッピングを選択して実際に使用するステップ
を含む方法。
【請求項１８】
さらに、
（ｄ）前記少なくとも１つのビットが、前記異なるマッピングに従って前記少なくとも１つのメモリセルに記憶されるように、各メモリセルの前記物理的パラメータの前記各値を設定するステップ
を含む、請求項１７に記載の方法。
【請求項１９】
前記物理的パラメータが閾値電圧である、請求項１７に記載の方法。
【請求項２０】
前記物理的パラメータ値の範囲が順序付けられ、および前記第１のマッピングに従って前記少なくとも１つのビットに対応する前記１つのセルの前記物理的パラメータ値の範囲が、前記試みが前記１つのセルの前記物理的パラメータを設定した前記各値未満である、請求項１７に記載の方法。
【請求項２１】
前記異なるマッピングが、前記少なくとも１つのビットの少なくとも一部分を符号語として符号化することを含む、請求項１７に記載の方法。
【請求項２２】
少なくとも１つのメモリセルを含むメモリに複数のビットを記憶するためのコントローラであって、
（ａ）前記少なくとも１つのメモリセルの物理的パラメータの少なくとも１つの値が、前記ビットの最初の部分を表すように、前記少なくとも１つのメモリセルの各々の前記物理的パラメータの各値を設定するように試み；
（ｂ）前記少なくとも１つのセルの前記物理的パラメータが設定された前記少なくとも１つの値に従って、前記ビットの全てを前記少なくとも１つのメモリセルに記憶するために、物理的パラメータ値の範囲に対する前記ビットの適応マッピングを提供し；および
（ｃ）前記少なくとも１つのメモリセルの各々に対して：前記ビット全てを前記少なくとも１つのメモリセルに記憶するために、前記各メモリセルの前記物理的パラメータの前記各値を調整する必要がある場合、前記少なくとも１つのメモリセルに記憶されている全てのビットを前記少なくとも１つのメモリセルにおいて消去することなく前記適応マッピングに従って前記各メモリセルの前記物理的パラメータの前記各値を調整するように動作可能なコントローラ。
【請求項２３】
少なくとも１つのメモリセルを含むメモリに少なくとも１つのビットを記憶するためのコントローラであって、
（ａ）前記少なくとも１つのビットが、前記物理的パラメータの値の範囲の予め定められたセットに対する前記少なくとも１つのビットのデフォルトマッピングに従って前記少なくとも１つのメモリセルに記憶されるように、前記少なくとも１つのメモリセルの各メモリセルの物理的パラメータの各値を設定するように試み；および
（ｂ）前記試みが、前記少なくとも１つのメモリセルの１つの前記物理的パラメータの前記各値を、前記デフォルトマッピングに従う前記少なくとも１つのビットに対応する前記１つのメモリセルの物理的パラメータ値の範囲にアクセスできない値に設定する場合：前記少なくとも１つのメモリセルに前記少なくとも１つのビットを記憶するために、前記少なくとも１つのメモリセルに記憶されている全てのビットを前記少なくとも１つのメモリセルにおいて消去することなく、前記少なくとも１つのビットに対応する前記１つのメモリセルの物理的パラメータ値の範囲にアクセス可能となるように、前記物理的パラメータの前記値の前記範囲の予め定められたセットに対する前記少なくとも１つのビットの適応マッピングを提供する
ように動作可能なコントローラ。
【請求項２４】
少なくとも１つのメモリセルを含むメモリに少なくとも１つのビットを記憶するためのコントローラであって、
（ａ）前記少なくとも１つのメモリセルの物理的パラメータの値の範囲の予め定められたセットに対する前記少なくとも１つのビットの複数のマッピングを提供し；
（ｂ）前記少なくとも１つのビットが前記これらマッピングの第１のマッピングに従って前記少なくとも１つのメモリセルに記憶されるように、前記少なくとも１つのメモリセルの各メモリセルの前記物理的パラメータの各値を設定するように試み、前記試みが、前記少なくとも１つのメモリセルの１つの前記物理的パラメータの前記各値を、前記第１のマッピングに従って、前記少なくとも１つのビットに対応する前記１つのセルの物理的パラメータ値の範囲にアクセスできない値に設定し；および
（ｃ）前記試みの結果に応答して：前記少なくとも１つのメモリセルに記憶されている全てのビットを前記少なくとも１つのメモリセルにおいて消去することなく、前記少なくとも１つのビットを前記少なくとも１つのメモリセルに記憶するために前記マッピングと異なるマッピングを選択して実際に使用する
ように動作可能なコントローラ。
【請求項２５】
（ａ）少なくとも１つのメモリセルを含むメモリと；
（ｂ）コントローラであって：
（i）前記少なくとも１つのメモリセルの前記物理的パラメータの前記少なくとも１つの値が複数のビットの最初の部分を表すように、前記少なくとも１つのメモリセルの各々の物理的パラメータの各値を設定するように試み、
（ii）前記少なくとも１つのセルの前記物理的パラメータが設定された前記少なくとも１つの値に従って、前記少なくとも１つのメモリセルに前記ビットの全てを記憶するために、物理的パラメータ値の範囲に対する前記ビットの適応マッピングを提供し、および
（iii）前記少なくとも１つのメモリセルの各々に対して：前記ビットの全てを前記少なくとも１つのメモリセルに記憶するために、前記適応マッピングに従って、前記各メモリセルの前記物理的パラメータの前記各値を調整する必要がある場合には、前記少なくとも１つのメモリセルに記憶されている全てのビットを前記少なくとも１つのメモリセルにおいて消去することなく前記適応マッピングに従って前記各メモリセルの前記物理的パラメータの前記各値を調整する
ように動作可能なコントローラと
を含むメモリ素子。
【請求項２６】
（ａ）少なくとも１つのメモリセルを含むメモリと；
（ｂ）コントローラであって：
（i）前記物理的パラメータの値の範囲の予め定められたセットに対する少なくとも１つのビットのデフォルトマッピングに従って前記少なくとも１つのビットが前記少なくとも１つのメモリセルに記憶されるように、前記少なくとも１つのメモリセルの各メモリセルの物理的パラメータの各値を設定するように試み、および
（ii）前記試みが、前記少なくとも１つのメモリセルの１つの前記物理的パラメータの前記各値を、前記デフォルトマッピングに従って、前記少なくとも１つのビットに対応する前記１つのメモリセルの物理的パラメータ値の範囲にアクセスできない値に設定する場合：前記少なくとも１つのメモリセルに前記少なくとも１つのビットを記憶するために、前記少なくとも１つのメモリセルに記憶されている全てのビットを前記少なくとも１つのメモリセルにおいて消去することなく、前記少なくとも１つのビットに対応する前記１つのメモリセルの物理的パラメータ値の範囲にアクセス可能となるように、前記物理的パラメータの前記値の前記範囲の予め定められたセットに対する前記少なくとも１つのビットの適応マッピングを提供する
ように動作可能なコントローラと
を含むメモリ素子。
【請求項２７】
（ａ）少なくとも１つのメモリセルを含むメモリと；
（ｂ）コントローラであって：
（i）前記少なくとも１つのメモリセルの物理的パラメータの値の範囲の予め定められたセットに対する少なくとも１つのビットの複数のマッピングを提供し、
（ii）前記これらマッピングの第１のマッピングに従って前記少なくとも１つのビットが前記少なくとも１つのメモリセルに記憶されるように、前記少なくとも１つのメモリセルの各メモリセルの前記物理的パラメータの各値を設定するように試み、前記試みが、前記少なくとも１つのメモリセルの１つの前記物理的パラメータの前記各値を、前記第１のマッピングに従って前記少なくとも１つのビットに対応する前記１つのセルの物理的パラメータ値の範囲にアクセスできない値に設定し、および
（iii）前記試みの結果に応答して：前記少なくとも１つのメモリセルに記憶されている全てのビットを前記少なくとも１つのメモリセルにおいて消去することなく前記少なくとも１つのビットを前記少なくとも１つのメモリセルに記憶するために前記マッピングの異なるマッピングを選択して実際に使用する
ように動作可能なコントローラと
を含むメモリ素子。
【請求項２８】
（ａ）複数のビットを記憶するために、少なくとも１つのメモリセルを含む第１のメモリと；
（ｂ）前記第１のメモリのホストであって、
（i）前記第１のメモリを：
（Ａ）前記少なくとも１つのメモリセルの前記物理的パラメータの前記少なくとも１つの値が前記ビットの最初の部分を表すように、前記少なくとも１つのメモリセルの各々の物理的パラメータの各値を設定するように試みること、
（Ｂ）前記ビットの全てを前記少なくとも１つのメモリセルに記憶するために、前記少なくとも１つのセルの前記物理的パラメータが設定された前記少なくとも１つの値に従って、物理的パラメータ値の範囲に対する前記ビットの適応マッピングを提供すること、および
（Ｃ）前記少なくとも１つのメモリセルの各々に対して、前記ビットの全てを前記少なくとも１つのメモリセルに記憶するために、前記適応マッピングに従って、前記各メモリセルの前記物理的パラメータの前記各値を調整する必要がある場合：前記少なくとも１つのメモリセルに記憶されている全てのビットを前記少なくとも１つのメモリセルにおいて消去することなく前記適応マッピングに従って前記各メモリセルの前記物理的パラメータの前記各値を調整すること
によって管理するためのコードを記憶するための第２のメモリ、および
（ii）前記コードを実行するプロセッサ
を含むホストと
を含むシステム。
【請求項２９】
（ａ）少なくとも１つのビットを記憶するための、少なくとも１つのメモリセルを含む第１のメモリと；
（ｂ）前記第１のメモリのホストであって、
（i）前記第１のメモリを：
（Ａ）前記少なくとも１つのメモリセルの物理的パラメータの値の範囲の予め定められたセットに対する少なくとも１つのビットのデフォルトマッピングを提供すること、
（Ｂ）前記デフォルトマッピングに従って前記少なくとも１つのビットが前記少なくとも１つのメモリセルに記憶されるように、前記少なくとも１つのメモリセルの各メモリセルの前記物理的パラメータの各値を設定するように試みること、および
（Ｃ）前記試みが、前記少なくとも１つのメモリセルの１つの前記物理的パラメータの前記各値を、前記デフォルトマッピングに従う前記少なくとも１つのビットに対応する前記１つのメモリセルの物理的パラメータ値の範囲にアクセスできない値に設定する場合：前記少なくとも１つのメモリセルに前記少なくとも１つのビットを記憶するために、前記少なくとも１つのメモリセルに記憶されている全てのビットを前記少なくとも１つのメモリセルにおいて消去することなく、前記少なくとも１つのビットに対応する前記１つのメモリセルの物理的パラメータ値の範囲にアクセス可能となるように、前記物理的パラメータの前記値の前記範囲の予め定められたセットに対する前記少なくとも１つのビットの適応マッピングを提供すること
によって管理するためのコードを記憶するための第２のメモリ、および
（ii）前記コードを実行するプロセッサ
を含むホストと
を含むシステム。
【請求項３０】
（ａ）少なくとも１つのビットを記憶するための、少なくとも１つのメモリセルを含む第１のメモリと；
（ｂ）前記第１のメモリのホストであって、
（i）前記第１のメモリを：
（Ａ）前記少なくとも１つのメモリセルの物理的パラメータの値の範囲の予め定められたセットに対する少なくとも１つのビットの複数のマッピングを提供すること、
（Ｂ）前記これらマッピングの第１のマッピングに従って前記少なくとも１つのビットを前記少なくとも１つのメモリセルに記憶するように、前記少なくとも１つのメモリセルの各メモリセルの前記物理的パラメータの各値を設定するように試み、前記試みが、前記少なくとも１つのメモリセルの１つの前記物理的パラメータの前記各値を、前記第１のマッピングに従って前記少なくとも１つのビットに対応する前記１つのセルの物理的パラメータ値の範囲にアクセスできない値に設定すること、および
（Ｃ）前記試みの結果に応答して：前記少なくとも１つのメモリセルに記憶されている全てのビットを前記少なくとも１つのメモリセルにおいて消去することなく、前記少なくとも１つのビットを前記少なくとも１つのメモリセルに記憶するために前記マッピングの異なるマッピングを選択して実際に使用すること
によって管理するためのコードを記憶するための第２のメモリ、および
（ii）前記コードを実行するプロセッサ
を含むホストと
を含むシステム。
【請求項３１】
少なくとも１つのメモリセルを含むメモリに複数のビットを記憶するためのコンピュータ可読コードが埋め込まれているコンピュータ可読記憶媒体であって、前記コンピュータ可読コードが、
（ａ）前記少なくとも１つのメモリセルの前記物理的パラメータの前記少なくとも１つの値が前記ビットの最初の部分を表すように、前記少なくとも１つのメモリセルの各々の物理的パラメータの各値を設定するように試みるプログラムコード；
（ｂ）前記少なくとも１つのセルの前記物理的パラメータが設定された前記少なくとも１つの値に従って、前記ビットの全てを前記少なくとも１つのメモリセルに記憶するために、物理的パラメータ値の範囲に対する前記ビットの適応マッピングを提供するプログラムコード；および
（ｃ）前記少なくとも１つのメモリセルの各々に対して、前記ビットの全てを前記少なくとも１つのメモリセルに記憶するために、前記各メモリセルの前記物理的パラメータの前記各値を調整する必要がある場合：前記少なくとも１つのメモリセルに記憶されている全てのビットを前記少なくとも１つのメモリセルにおいて消去することなく前記適応マッピングに従って前記各メモリセルの前記物理的パラメータの前記各値を調整するプログラムコード
を含む、コンピュータ可読記憶媒体。
【請求項３２】
少なくとも１つのメモリセルを含むメモリに少なくとも１つのビットを記憶するためのコンピュータ可読コードが埋め込まれているコンピュータ可読記憶媒体であって、前記コンピュータ可読コードが、
（ａ）前記少なくとも１つのメモリセルの物理的パラメータの値の範囲の予め定められたセットに対する前記少なくとも１つのビットのデフォルトマッピングを提供するためのプログラムコード；
（ｂ）前記デフォルトマッピングに従って前記少なくとも１つのビットを前記少なくとも１つのメモリセルに記憶するように、前記少なくとも１つのメモリセルの各メモリセルの前記物理的パラメータの各値を設定するように試みるプログラムコード；および
（ｃ）前記試みが、前記少なくとも１つのメモリセルの１つの前記物理的パラメータの前記各値を、前記デフォルトマッピングに従って前記少なくとも１つのビットに対応する前記１つのメモリセルの物理的パラメータ値の範囲にアクセスできない値に設定する場合：前記少なくとも１つのメモリセルに前記少なくとも１つのビットを記憶するために、前記少なくとも１つのメモリセルに記憶されている全てのビットを前記少なくとも１つのメモリセルにおいて消去することなく、前記少なくとも１つのビットに対応する前記１つのメモリセルの物理的パラメータ値の範囲にアクセス可能となるように、前記物理的パラメータの前記値の前記範囲の予め定められたセットに対する前記少なくとも１つのビットの適応マッピングを提供するプログラムコード
を含む、コンピュータ可読記憶媒体。
【請求項３３】
少なくとも１つのメモリセルを含むメモリに少なくとも１つのビットを記憶するためのコンピュータ可読コードが埋め込まれたコンピュータ可読記憶媒体であって、前記コンピュータ可読コードが、
（ａ）前記少なくとも１つのメモリセルの物理的パラメータの値の範囲の予め定められたセットに対する少なくとも１つのビットの複数のマッピングを提供するプログラムコード；
（ｂ）前記これらマッピングの第１のマッピングに従って前記少なくとも１つのビットを前記少なくとも１つのメモリセルに記憶するように、前記少なくとも１つのメモリセルの各メモリセルの前記物理的パラメータの各値を設定するように試みるプログラムコードであって、前記試みが、前記少なくとも１つのメモリセルの１つの前記物理的パラメータの前記各値を、前記第１のマッピングに従って前記少なくとも１つのビットに対応する前記１つのセルの物理的パラメータ値の範囲にアクセスできない値に設定するプログラムコード；および
（ｃ）前記試みの結果に応答して：前記少なくとも１つのメモリセルに記憶されている全てのビットを前記少なくとも１つのメモリセルにおいて消去することなく前記少なくとも１つのビットを前記少なくとも１つのメモリセルに記憶するために前記マッピングの異なるマッピングを選択して実際に使用するプログラムコード
を含む、コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本特許出願は、2008年9月28日出願の米国仮特許出願第61/100,732号の利益を主張する
。
【０００２】
本発明は、フラッシュメモリなどのコンピュータメモリへのデータの記憶に関し、詳細
には、データを記憶するセルが少数の「不良」セルを含むことを可能にするような、コン
ピュータメモリへのデータの記憶方法に関する。
【背景技術】
【０００３】
何年もの間フラッシュメモリ素子が知られている。一般に、フラッシュメモリ内の各メ
モリセルは１ビットの情報を記憶する。フラッシュメモリセルにビットを記憶するための
伝統的な方法は、セルを２つの状態とすることによっていた。一方の状態は論理的な「０
」を表し、他方の状態は論理的な「１」を表す。フラッシュメモリセルでは、２つの状態
は、セルのチャネル（セルのトランジスタのソース要素とドレーン要素を接続するエリア
）上方に浮遊ゲートを有し、かつ浮遊ゲート内に蓄積された電荷量に関して２つの有効状
態を有することによって実装される。一般に、一方の状態は浮遊ゲートはゼロ電荷にあっ
て、消去後のセルの未書き込み状態であり（一般に「１」状態と示すと定義される）、お
よび他方の状態は、浮遊ゲートに少量の負電荷がある（一般に「０」状態を示すと定義さ
れる）。負電荷が浮遊ゲートに与えられるが、それは、セルに電圧パルスを印加して、閾
値電圧が「０」状態を示すのに十分な高さとなるまで、セルのシリコン基板からセルの酸
化物層を通って浮遊ゲートまで電子を注入して行う。ゲートに負電荷を有すると、セルの
トランジスタの閾値電圧（すなわち、トランジスタを導通させるためにトランジスタの制
御ゲートに印加される必要のある電圧）が増大する。セルの閾値電圧をチェックすること
によって、記憶されたビットの読み取りが可能である。閾値電圧が高い状態にある場合に
は、ビット値は「０」であり、および閾値電圧が低い状態にある場合には、ビット値は「
１」である。実際は、セルの閾値電圧を正確に読み取る必要はない。セルが現在置かれて
いるのは２つの状態のどちらであるかを正しく識別する必要があるのみである。このため
に、セルの閾値電圧を、２つの状態間にある基準電圧と比較して、セルの閾値電圧が基準
値未満かあるいは基準値を超えているかを決定することで十分である。
【０００４】
図１Ａ（従来技術）は、この動作の仕方を示すグラフである。具体的には、図１Ａは、
大集団のセルの閾値電圧の分布を示す。フラッシュ素子のセルはそれらの特性およびふる
まいが厳密に同じではないため（例えば、シリコン構造の不純物濃度または欠陥にわずか
に違いがあるため）、全てのセルに同じ書き込み動作を行っても、全てのセルが厳密に同
じ閾値電圧を有することにはならない。その代わりに、閾値電圧は、図１Ａに示すように
分布する。「１」の値を記憶するセルは一般に負の閾値電圧を有して、そのうちの大部分
のセルが、図１Ａの紙面左側の山（１で示す）の中央電圧値付近の閾値電圧を有し、少数
のセルが、左側の山の中央電圧よりも低いかまたは高い閾値電圧を有するようになる。同
様に、「０」の値を記憶するセルは一般に正の閾値電圧を有して、そのうちの大部分のセ
ルが、図１Ａの紙面右側の山（０で示す）の中央電圧付近の閾値電圧を有し、少数のセル
が、右側の山の中央電圧よりも低いかまたは高い閾値電圧を有するようになる。
【０００５】
歴史的な理由から、フラッシュメモリセルへのデータの書き込みはまた、フラッシュセ
ルを「プログラミング」すると呼ばれる。用語「書き込み」および「プログラミング」は
本願明細書では同じ意味で使用される。
【０００６】
近年では、「多値セル（Multi  Level  Cells）」（ＭＬＣ）を使用する新しい種類の
フラッシュ素子が市場に出現している。セル当たり単一ビットを有するフラッシュメモリ
が上述のように複数の値すなわち２値を使用するため、用語「多値セル」は誤解を招く恐
れがある。それゆえ、以下、２値のメモリセルを指す場合には用語「単一ビットセル」（
ＳＢＣ）を使用し、３値以上のメモリセル、すなわちセル当たり２ビット以上を指す場合
には用語「マルチビットセル」（ＭＢＣ）を使用する。本願明細書に提示する技術は、セ
ル当たり２ビットのＭＢＣフラッシュメモリを参照して説明する。しかしながら、本願明
細書に提示する技術は、セル当たり３ビット以上を支持するフラッシュメモリ素子にも等
しく適用可能であることを理解されたい。
【０００７】
２ビットの情報を記憶する単一のＭＢＣセルは、４つの異なる状態の１つにある。セル
の「状態」をセルの閾値電圧で示すように、ＭＢＣセルは、セルの閾値電圧に対して４つ
の異なる有効範囲とする。図１Ｂ（従来技術）に、セル当たり２ビットの典型的なＭＢＣ
セルの閾値電圧の分布を示す。予想通り、図１Ｂは４つの山を有し、各山は１つの状態に
対応する。ＳＢＣに関しては、各状態は実際に１つの電圧範囲であって、かつ単一の電圧
ではない。セルの内容を読み取る場合、セルの閾値電圧は、限られた電圧範囲において正
しく識別される必要がある。
【０００８】
ＭＢＣフラッシュセルのプログラミングは、フールプルーフではない。例えば、１１、
０１、１１、０１、１１、００、１０、００、１０、００の１０個の２進数を１０個のＭ
ＢＣセルに記憶する方法を考慮してみる。ビットパターンに対する閾値電圧のマッピング
を図１Ｂに示す。
【０００９】
【表１】
0005537551.tif 000002
【００１０】
最上位ビット（１０１０１０１０１０）は、２、４、６、８および１０番目のセルを１
Ｖ〜２Ｖの閾値電圧帯にプログラミングすることによって記憶される。次いで、最下位ビ
ット（１１１１１０００００）は、６、８および１０番目のセルを２Ｖを超える値の閾値
電圧帯にプログラミングし、かつ７および９番目のセルを０Ｖ〜１Ｖの閾値電圧帯にプロ
グラミングすることによって記憶される。最上位ビットのプログラミング中、および最上
位ビットのプログラミングと最下位ビットのプログラミングとの間での、例えばプログラ
ミング変化、プログラムディスターブ（program  disturb）および交差結合などの物理的
効果は、例えば、最下位ビットがプログラムされる前に、２番目のセルが不注意に２Ｖを
超える値の帯域にされ、それにより、２番目のセルが、セルを消去してもう一度やり直さ
ないと所望の「０１」ビットパターンを記憶できなくなる原因となり得る。なぜなら、プ
ログラミング動作はセルの閾値電圧を高めるにすぎないためである。しかし、フラッシュ
メモリセルは、同時にセルの全ブロックが消去されるので、少数のセルにおけるエラーを
修正するためにのみセルの全ブロックを消去することは現実的ではない。
【００１１】
プログラミング中にフラッシュメモリセルが中間状態に置かれるこの種のエラーは、本
願明細書ではセルの「オーバープログラミング」と称する。このオーバープログラミング
からは、セルを消去せずには、さらなるプログラミングによってセルの所望の最終状態を
達成することはできない。そのようなオーバープログラミング状態となったことのあるセ
ルを本願明細書では「オーバープログラムされた」セルと称する。
【００１２】
ＭＢＣフラッシュセルのプログラミングがフールプルーフではない理由はオーバープロ
グラミングのみではない。多くのプログラミングおよび消去サイクルの損傷を受けた後、
フラッシュセルはその閾値電圧状態の１つに永久的に留まる可能性がある。例えば、消去
状態にあるセルの条件（上述の表に従って「１１」を記憶する）は、プログラミングをし
ても消去状態からセルを変えることができないようなものとし得るか、または最上位にプ
ログラムされた状態にあるセルの条件（上述の表に従って「００」を記憶する）は、消去
しても、最上位にプログラムされた状態からセルを変えることができないようなものとし
得る。
【００１３】
従来、この種の問題は、記憶するデータを符号語に符号化し、それらをデータの代わり
に記憶することによって、および符号化が、これらのプログラミングエラー、およびそれ
に続いて起こる、経時による閾値電圧のドリフトのようなエラーの双方を解消するのに十
分強力であることを願って取り扱われている。
【００１４】
（ＧＦ（２t+1）に関する指導）
以下説明する方法の１つはガロア体ＧＦ（２t+1）に基づく。
【００１５】
ＧＦ（２t+1）は、明確に定義された加法、乗法および除法の演算のできる１組の２t+1
個の要素（元ともいう）である。体の要素は、ｔ＋１の長さの２値ベクトルとして表すこ
とができる。あるいは、体の要素を、明確に定義された加法、乗法および除法の演算での
最大ｔ次の２値の多項式として表すことができる。
【００１６】
ＧＦ（２t+1）の各要素を、以下のようにＧＦ（２）上で、ｔ＋１座標のベクトルおよ
び最大ｔ次の多項式と関連付ける：
ａ＝（ａ0，ａ1，・・・，ａt）⇔ｐa（ｘ）＝ａ0＋ａ1ｘ＋・・・＋ａtｘt
【００１７】
多項式ｐa（ｘ）の係数はＧＦ（２）の要素であり（すなわち、０または１）、ｐa（ｘ
）とｐb（ｘ）の加法を以下のように定義する：
【００１８】
【数１】
0005537551.tif 000003
【００１９】
２つの要素ａ，ｂの乗法を関連の多項式ｐa（ｘ），ｐb（ｘ）の乗法によって行い、結
果のモジュロを、ＧＦ（２）上でｔ＋１次の予め定められた既約多項式ｇ（ｘ）とする。
乗法の結果ａ・ｂを、ＧＦ（２）上でｔ＋１の長さの２値ベクトルとして表すことができ
、各座標は、ａの要素（係数）ｂの要素（係数）の２元一次結合である。
【００２０】
全体像を得るために、逆演算および除法演算を定義する。ＧＦ（２t+1）の各非零要素
ａは、ａ-1で示される一意の逆元を有し、ａ・ａ-1＝ａ-1・ａ＝１である。ａによる除法
はａ-1による乗法と等しい。
【発明の概要】
【課題を解決するための手段】
【００２１】
本願明細書で説明する方法の好ましい実施形態によれば、複数の符号語が、フラッシュ
メモリにプログラムされる情報ビットのベクトルに関連付けられる。
【００２２】
フラッシュメモリをプログラミングするとき、フラッシュメモリにプログラムされる情
報のみに基づくのではなく、プログラミング動作前のフラッシュメモリのステータスに基
づいて各セルは符号語がプログラムされた。フラッシュメモリをプログラミングする前（
または、いくつかのプログラミング動作の場合には最終的なプログラミング前）、プログ
ラムされるセルは読み取られ、既に高い閾値電圧レベルにあるセルは、不良品セル、また
は電圧を変更できないセルとしてマークされる。次に、ある符号語が、フラッシュセルに
プログラムされる情報ビットのベクトルと関連付けられた１組の複数の符号語中から選択
され、この選択は、フラッシュセルが閾値電圧を変えられないという制限の下で行われる
。選択された符号語は、不良品セルに関連する全てまたはほとんどの座標に０を含む（０
は、１よりも高い電圧レベルに関連付けられていると仮定する）。その後に、選択された
符号語をフラッシュメモリにプログラムする。
【００２３】
それゆえ、本願明細書で提供される一実施形態は、複数のビットを記憶する方法であっ
て、（ａ）少なくとも１つのメモリセルの物理的パラメータの少なくとも１つの値がビッ
トの最初の部分を表すように、少なくとも１つのメモリセルの各々の物理的パラメータの
各値を設定するように試みるステップ；（ｂ）ビットの全てを少なくとも１つのメモリセ
ルに記憶するために、少なくとも１つのセルの物理的パラメータが設定された少なくとも
１つの値に従って、物理的パラメータ値の範囲に対するビットの適応マッピングを提供す
るステップ；および（ｃ）少なくとも１つのメモリセルの各々に対して、ビットの全てを
少なくとも１つのメモリセルに記憶するために、適応マッピングに従って各メモリセルの
物理的パラメータの各値を調整する必要がある場合：適応マッピングに従って各メモリセ
ルの物理的パラメータの各値を調整するステップを含む方法である。
【００２４】
本願明細書で提供される別の実施形態は、少なくとも１つのビットを記憶する方法であ
って、（ａ）少なくとも１つのメモリセルの物理的パラメータの値の範囲の予め定められ
たセットに対する少なくとも１つのビットのデフォルトマッピングを提供するステップ；
（ｂ）デフォルトマッピングに従って少なくとも１つのビットを少なくとも１つのメモリ
セルに記憶するように、少なくとも１つのメモリセルの各メモリセルの物理的パラメータ
の各値を設定するように試みるステップ；および（ｃ）試みが、少なくとも１つのメモリ
セルの１つの物理的パラメータの各値を、デフォルトマッピングに従って少なくとも１つ
のビットに対応する、１つのメモリセルの物理的パラメータ値の範囲にアクセスできない
値に設定する場合：少なくとも１つのビットを少なくとも１つのメモリセルに記憶するた
めに、物理的パラメータの値の範囲の予め定められたセットに対する少なくとも１つのビ
ットの適応マッピングを提供して、適応マッピングに従って少なくとも１つのビットに対
応する１つのメモリセルの物理的パラメータ値の範囲にアクセス可能となるようにするス
テップを含む方法である。
【００２５】
本願明細書で提供される別の実施形態は、少なくとも１つのビットを記憶する方法であ
って、（ａ）少なくとも１つのメモリセルの物理的パラメータの値の範囲の予め定められ
たセットに対する少なくとも１つのビットの複数のマッピングを提供するステップ；（ｂ
）これらマッピングの第１のマッピングに従って少なくとも１つのビットが少なくとも１
つのメモリセルに記憶されるように、少なくとも１つのメモリセルの各メモリセルの物理
的パラメータの各値を設定するように試みるステップ；および（ｃ）試みの結果に応答し
て：少なくとも１つのビットを少なくとも１つのメモリセルに記憶するためにこれらマッ
ピングの１つを選択して実際に使用するステップを含む方法である。
【００２６】
本願明細書で提供される別の実施形態は、少なくとも１つのメモリセルを含むメモリに
複数のビットを記憶するためのコントローラであって、（ａ）少なくとも１つのメモリセ
ルの物理的パラメータの少なくとも１つの値がビットの最初の部分を表すように、少なく
とも１つのメモリセルの各々の物理的パラメータの各値を設定するように試み；（ｂ）ビ
ットの全てを少なくとも１つのメモリセルに記憶するために、少なくとも１つのセルの物
理的パラメータが設定された少なくとも１つの値に従って、物理的パラメータ値の範囲に
対するビットの適応マッピングを提供し；および（ｃ）少なくとも１つのメモリセルの各
々に対して：ビットの全てを少なくとも１つのメモリセルに記憶させるために、適応マッ
ピングに従って各メモリセルの物理的パラメータの各値を調整する必要がある場合、適応
マッピングに従って各メモリセルの物理的パラメータの各値を調整するように動作可能な
コントローラである。
【００２７】
本願明細書で提供される別の実施形態は、少なくとも１つのメモリセルを含むメモリに
少なくとも１つのビットを記憶するためのコントローラであって、（ａ）物理的パラメー
タの値の範囲の予め定められたセットに対する少なくとも１つのビットのデフォルトマッ
ピングに従って少なくとも１つのビットを少なくとも１つのメモリセルに記憶するように
、少なくとも１つのメモリセルの各メモリセルの物理的パラメータの各値を設定するよう
に試み；および（ｂ）試みが、少なくとも１つのメモリセルの１つの物理的パラメータの
各値を、デフォルトマッピングに従って少なくとも１つのビットに対応する１つのメモリ
セルの物理的パラメータ値の範囲にアクセスできない値に設定する場合：少なくとも１つ
のビットを少なくとも１つのメモリセルに記憶するために、物理的パラメータの値の範囲
の予め定められたセットに対する少なくとも１つのビットの適応マッピングを提供して、
適応マッピングに従って少なくとも１つのビットに対応する１つのメモリセルの物理的パ
ラメータ値の範囲にアクセス可能にするように動作可能なコントローラである。
【００２８】
本願明細書で提供される別の実施形態は、少なくとも１つのメモリセルを含むメモリに
少なくとも１つのビットを記憶するためのコントローラであって、（ａ）少なくとも１つ
のメモリセルの物理的パラメータの値の範囲の予め定められたセットに対する少なくとも
１つのビットの複数のマッピングを提供し；（ｂ）これらマッピングの第１のマッピング
に従って少なくとも１つのビットを少なくとも１つのメモリセルに記憶するように、少な
くとも１つのメモリセルの各メモリセルの物理的パラメータの各値を設定するように試み
；および（ｃ）試みの結果に応答して：少なくとも１つのビットを少なくとも１つのメモ
リセルに記憶するためにこれらマッピングの１つを選択して実際に使用するように動作可
能なコントローラである。
【００２９】
本願明細書で提供される別の実施形態は、（ａ）少なくとも１つのメモリセルを含むメ
モリと；（ｂ）コントローラであって：（ｉ）少なくとも１つのメモリセルの物理的パラ
メータの少なくとも１つの値が複数のビットの最初の部分を表すように、少なくとも１つ
のメモリセルの各々の物理的パラメータの各値を設定するように試み、（ii）ビットの全
てを少なくとも１つのメモリセルに記憶するために、少なくとも１つのセルの物理的パラ
メータが設定された少なくとも１つの値に従って、物理的パラメータ値の範囲に対するビ
ットの適応マッピングを提供し、および（iii）少なくとも１つのメモリセルの各々に対
して：ビットの全てを少なくとも１つのメモリセルに記憶させるために、適応マッピング
に従って、各メモリセルの物理的パラメータの各値を調整する必要がある場合、適応マッ
ピングに従って各メモリセルの物理的パラメータの各値を調整するように動作可能なコン
トローラとを含むメモリ素子である。
【００３０】
本願明細書で提供される別の実施形態は、（ａ）少なくとも１つのメモリセルを含むメ
モリと；（ｂ）コントローラであって：（ｉ）物理的パラメータの値の範囲の予め定めら
れたセットに対する少なくとも１つのビットのデフォルトマッピングに従って少なくとも
１つのビットを少なくとも１つのメモリセルに記憶するように、少なくとも１つのメモリ
セルの各メモリセルの物理的パラメータの各値を設定するように試み、および（ii）試み
が、少なくとも１つのメモリセルの１つの物理的パラメータの各値を、デフォルトマッピ
ングに従って少なくとも１つのビットに対応する１つのメモリセルの物理的パラメータ値
の範囲にアクセスできない値に設定する場合：少なくとも１つのビットを少なくとも１つ
のメモリセルに記憶するために、物理的パラメータの値の範囲の予め定められたセットに
対する少なくとも１つのビットの適応マッピングを提供して、適応マッピングに従って少
なくとも１つのビットに対応する１つのメモリセルの物理的パラメータ値の範囲がアクセ
ス可能にするように動作可能なコントローラとを含むメモリ素子である。
【００３１】
本願明細書で提供される別の実施形態は、（ａ）少なくとも１つのメモリセルを含むメ
モリと；（ｂ）コントローラであって：（ｉ）少なくとも１つのメモリセルの物理的パラ
メータの値の範囲の予め定められたセットに対する少なくとも１つのビットの複数のマッ
ピングを提供し、（ii）これらマッピングの第１のマッピングに従って少なくとも１つの
ビットを少なくとも１つのメモリセルに記憶するように、少なくとも１つのメモリセルの
各メモリセルの物理的パラメータの各値を設定するように試み、（iii）試みの結果に応
答して：少なくとも１つのビットを少なくとも１つのメモリセルに記憶するためにこれら
マッピングの１つを選択して実際に使用するように動作可能なコントローラとを含むメモ
リ素子である。
【００３２】
本願明細書で提供される別の実施形態は、（ａ）複数のビットを記憶するために、少な
くとも１つのメモリセルを含む第１のメモリと；（ｂ）第１のメモリのホストであって、
（ｉ）第１のメモリを：（Ａ）少なくとも１つのメモリセルの物理的パラメータの少なく
とも１つの値がビットの最初の部分を表すように、少なくとも１つのメモリセルの各々の
物理的パラメータの各値を設定するように試み、（Ｂ）少なくとも１つのセルの物理的パ
ラメータが設定された少なくとも１つの値に従って、ビットの全てを少なくとも１つのメ
モリセルに記憶するために、物理的パラメータ値の範囲に対するビットの適応マッピング
を提供し、および（Ｃ）少なくとも１つのメモリセルの各々に対して、適応マッピングに
従って、ビットの全てを少なくとも１つのメモリセルに記憶するために各メモリセルの物
理的パラメータの各値を調整する必要がある場合：適応マッピングに従って各メモリセル
の物理的パラメータの各値を調整することによって管理するためのコードを記憶する第２
のメモリ、および（ii）コードを実行するプロセッサを含むホストとを含むシステムであ
る。
【００３３】
本願明細書で提供される別の実施形態は、（ａ）少なくとも１つのビットを記憶するた
めの、少なくとも１つのメモリセルを含む第１のメモリと；（ｂ）第１のメモリのホスト
であって、（ｉ）第１のメモリを：（Ａ）少なくとも１つのメモリセルの物理的パラメー
タの値の範囲の予め定められたセットに対する少なくとも１つのビットのデフォルトマッ
ピングを提供し、（Ｂ）デフォルトマッピングに従って少なくとも１つのビットを少なく
とも１つのメモリセルに記憶するように、少なくとも１つのメモリセルの各メモリセルの
物理的パラメータの各値を設定するように試み、および（Ｃ）試みが、少なくとも１つの
メモリセルの１つの物理的パラメータの各値を、デフォルトマッピングに従って少なくと
も１つのビットに対応する１つのメモリセルの物理的パラメータ値の範囲にアクセスでき
ない値に設定する場合：少なくとも１つのビットを少なくとも１つのメモリセルに記憶す
るために、物理的パラメータの値の範囲の予め定められたセットに対する少なくとも１つ
のビットの適応マッピングを提供して、適応マッピングに従って少なくとも１つのビット
に対応する１つのメモリセルの物理的パラメータ値の範囲にアクセス可能とすることによ
って管理するためのコードを記憶する第２のメモリ、および（ii）コードを実行するプロ
セッサを含むホストとを含むシステムである。
【００３４】
本願明細書で提供される別の実施形態は、（ａ）少なくとも１つのビットを記憶するた
めの、少なくとも１つのメモリセルを含む第１のメモリと；（ｂ）第１のメモリのホスト
であって、（ｉ）第１のメモリを：（Ａ）少なくとも１つのメモリセルの物理的パラメー
タの値の範囲の予め定められたセットに対する少なくとも１つのビットの複数のマッピン
グを提供し、（Ｂ）これらマッピングの第１のマッピングに従って少なくとも１つのビッ
トを少なくとも１つのメモリセルに記憶するように、少なくとも１つのメモリセルの各メ
モリセルの物理的パラメータの各値を設定するように試み、および（Ｃ）試みの結果に応
答して：少なくとも１つのビットを少なくとも１つのメモリセルに記憶するためにこれら
マッピングの１つを選択して実際に使用することによって管理するためのコードを記憶す
る第２のメモリ、および（ii）コードを実行するプロセッサを含むホストとを含むシステ
ムである。
【００３５】
本願明細書で提供される別の実施形態は、少なくとも１つのメモリセルを含むメモリに
複数のビットを記憶するためにコンピュータ可読コードが埋め込まれているコンピュータ
可読記憶媒体であって、コンピュータ可読コードが、（ａ）少なくとも１つのメモリセル
の物理的パラメータの少なくとも１つの値がビットの最初の部分を表すように、少なくと
も１つのメモリセルの各々の物理的パラメータの各値を設定するように試みるプログラム
コード；（ｂ）少なくとも１つのセルの物理的パラメータが設定された少なくとも１つの
値に従って、ビットの全てを少なくとも１つのメモリセルに記憶するために、物理的パラ
メータ値の範囲に対するビットの適応マッピングを提供するプログラムコード；および（
ｃ）少なくとも１つのメモリセルの各々に対して、適応マッピングに従って、ビットの全
てを少なくとも１つのメモリセルに記憶するために各メモリセルの物理的パラメータの各
値を調整する必要がある場合：適応マッピングに従って各メモリセルの物理的パラメータ
の各値を調整するプログラムコードを含む、コンピュータ可読記憶媒体である。
【００３６】
本願明細書で提供される別の実施形態は、少なくとも１つのメモリセルを含むメモリに
少なくとも１つのビットを記憶するためにコンピュータ可読コードが埋め込まれているコ
ンピュータ可読記憶媒体であって、コンピュータ可読コードが、（ａ）少なくとも１つの
メモリセルの物理的パラメータの値の範囲の予め定められたセットに対する少なくとも１
つのビットのデフォルトマッピングを提供するプログラムコード；（ｂ）デフォルトマッ
ピングに従って少なくとも１つのビットを少なくとも１つのメモリセルに記憶するために
、少なくとも１つのメモリセルの各メモリセルの物理的パラメータの各値を設定するよう
に試みるプログラムコード；および（ｃ）試みが、少なくとも１つのメモリセルの１つの
物理的パラメータの各値を、デフォルトマッピングに従って少なくとも１つのビットに対
応する１つのメモリセルの物理的パラメータ値の範囲にアクセスできない値に設定する場
合：少なくとも１つのビットを少なくとも１つのメモリセルに記憶するために、物理的パ
ラメータの値の範囲の予め定められたセットに対する少なくとも１つのビットの適応マッ
ピングを提供して、適応マッピングに従って少なくとも１つのビットに対応する１つのメ
モリセルの物理的パラメータ値の範囲にアクセス可能とするプログラムコードを含む、コ
ンピュータ可読記憶媒体である。
【００３７】
本願明細書で提供される別の実施形態は、少なくとも１つのメモリセルを含むメモリに
少なくとも１つのビットを記憶するために、コンピュータ可読コードが埋め込まれている
コンピュータ可読記憶媒体であって、コンピュータ可読コードが、（ａ）少なくとも１つ
のメモリセルの物理的パラメータの値の範囲の予め定められたセットに対する少なくとも
１つのビットの複数のマッピングを提供するプログラムコード；（ｂ）これらマッピング
の第１のマッピングに従って少なくとも１つのビットを少なくとも１つのメモリセルに記
憶するように、少なくとも１つのメモリセルの各メモリセルの物理的パラメータの各値を
設定するように試みるプログラムコード；および（ｃ）試みの結果に応答して：少なくと
も１つのビットを少なくとも１つのメモリセルに記憶するためにこれらマッピングの１つ
を選択して実際に使用するプログラムコードを含む、コンピュータ可読記憶媒体である。
【００３８】
本願明細書で説明する第１の方法は、複数のビットを記憶する方法である。この方法の
最も一般的な実施形態の第１のステップでは、１つ以上のメモリセルの各々の、閾値電圧
のような物理的パラメータの各値を設定して、物理的パラメータの値がビットの最初の部
分を表すように試みがなされる。この段階では、物理的パラメータの値は、ビットの全て
を表示する必要はない。例えば複数のセルがプログラムされており、かつセルの１つが上
述のような理由で不良品である（その消去状態またはその最上位にプログラムされた状態
で凍結されている）場合、ビットの一部分のみを表示する試みは失敗する可能性もある；
これは、このステップが単に「試み」にすぎないためである。第１のステップにおいて得
られた物理的パラメータの値に従って、物理的パラメータ値の範囲に対するビットの適応
マッピングが、ビットの全てをメモリセルに記憶するために提供される。このマッピング
は、第１のステップの結果に依存してビット記憶セッションごとに変化し得るため「適応
」している。ビットの全てをメモリセルに記憶させるために、各メモリセルに対して、適
応マッピングに従って、物理的パラメータのセルの各値を調整する必要がある場合、メモ
リセルの各値を適応マッピングに従って調整する。
【００３９】
好ましくは、第１のステップは、メモリセルの物理的パラメータの値を設定するように
試みて、最終的にビットの全てを表示する物理的パラメータの値に、第１のステップで設
定された値からアクセス可能となるようにする。物理的パラメータ値に「アクセス可能」
であるとは、物理的パラメータを調整して、セルを消去する必要なく、セルをプログラミ
ングすることによってその値を得ることができることを意味する。例えば、図１Ｂでは、
（０，１）帯の閾値電圧値は（０，０）閾値電圧帯からアクセスできないが、（０，０）
帯の閾値電圧値には（０，１）閾値電圧帯からアクセス可能とする。
【００４０】
好ましくは、第１の方法はまた、ビットの全てをセルに記憶するために物理的パラメー
タ値の範囲に対するビットのデフォルトマッピングを提供することを含む（この場合、第
１のステップで試みがなされるビットの最初の部分の表示は、通常、このデフォルトマッ
ピングに従う）。適応マッピングは、デフォルトマッピングと同じでもよいし（例えば試
みが成功する場合）、デフォルトマッピングと異なってもよい（例えば試みが失敗して、
デフォルトマッピングが、ビットの全てをセルに記憶することと矛盾する）。デフォルト
マッピングが、ビットの全てをセルに記憶することと矛盾する典型的な理由は、デフォル
トマッピングに従って、セルに記憶されるビットに対応する、セル（の１つ）に対する物
理的パラメータ値の範囲が、試みるステップによって物理的パラメータが設定された値か
らアクセスできないためである。例えば、物理的パラメータが閾値電圧である場合のよう
に、物理的パラメータ値の範囲が、最小から最大まで順序付けられる場合、デフォルトマ
ッピングに従って、セルに記憶されるビットに対応する物理的パラメータ値の範囲に、試
みるステップによって設定された物理的パラメータの値よりも低いために、アクセスでき
ない可能性がある。
【００４１】
好ましくは、適応マッピングを提供するステップは、ビットの少なくとも一部分を符号
語として符号化することを含む。次いで、調整する必要のある物理的パラメータ値の調整
を行い、各セルが、符号語の各部分を記憶するようにする。
【００４２】
本願明細書で説明する第２の方法は、１つ以上のビットを記憶する方法である。この方
法の最も一般的な実施形態では、１つ以上のメモリセルの、閾値電圧のような物理的パラ
メータの値の範囲の予め定められたセットに対するビットのデフォルトマッピングが提供
される。そのようなマッピングの一例は、セルの各々に対する図１Ｂに関連して既に示し
た表である。そのようなマッピングの別の例は、以下の、２つのセルの閾値電圧範囲の組
み合わせに対する、３つのビットのシーケンスの全射マッピングであり、それぞれの３つ
のビットは３つの閾値電圧範囲（０、１および２を付す）の１つの範囲にある：
【００４３】
【表２】
0005537551.tif 000004
【００４４】
（このマッピングは、（１，１）閾値電圧範囲の組み合わせを使用していないため、全射
である）。各セルの物理的パラメータの各値を設定して、デフォルトマッピングに従って
ビットがセルに記憶されるような試みがなされる。試みが、セル（の１つ）の物理的パラ
メータの各値を、デフォルトマッピングに従ってビットに対応するセルの物理的パラメー
タ値の範囲にアクセスできない値に設定する場合、デフォルトマッピングを、物理的パラ
メータの範囲の予め定められたセットに対するビットの適応マッピングで置き換えて、ビ
ットに対応するセルの物理的パラメータ値の範囲にアクセス可能とする（値が既にその範
囲にあるためか、またはセルを消去せずにセルを別のプログラミングによってその範囲に
設定できるためのいずれか）。好ましくは、次いで、物理的パラメータの各値を適応マッ
ピングに従って設定する。
【００４５】
好ましくは、物理的パラメータが閾値電圧である場合のように、物理的パラメータ値の
範囲は順序付けられ、およびデフォルトマッピングに従ってビットに対応するセル（の１
つ）の物理的パラメータ値の範囲にアクセスできない理由は、問題となるセルの物理的パ
ラメータが、試みるステップによって設定された各値よりも、その範囲が低い値である可
能性がある。
【００４６】
好ましくは、適応マッピングを提供するステップは、ビットの少なくとも一部分を符号
語として符号化することを含む。
【００４７】
本願明細書で説明する第３の方法は、１つ以上のビットを記憶する方法である。１つ以
上のメモリセルの、閾値電圧のような物理的パラメータの値の範囲の予め定められたセッ
トに対するビットの複数のマッピングが、提供される。各メモリセルの物理的パラメータ
の各値を設定して、これらマッピングの第１のマッピングに従ってビットがセルに記憶さ
れるような試みがなされる。試みの結果に応答して、ビットに記憶するために実際に使用
するためにこれらマッピングの１つを選択する。好ましくは、次いで、選択されたマッピ
ングに従ってビットをセルに記憶するように、各メモリセルの物理的パラメータの各値を
設定する。
【００４８】
選択されたマッピングを第１のマッピング（例えば試みるステップが成功する場合）ま
たはこれらマッピングのうちの異なるマッピング（例えば試みるステップが失敗する場合
）とすることができる。失敗の典型的な徴候は、第１のマッピングに従って、セルに記憶
されるビットに対応する、セル（の１つ）の物理的パラメータ値の範囲に、試みるステッ
プによって物理的パラメータが設定された値からアクセスできないことである。例えば、
物理的パラメータが閾値電圧である場合のように、物理的パラメータ値の範囲が最小から
最大まで順序付けられる場合、デフォルトマッピングに従って、セルに記憶されるビット
に対応する物理的パラメータ値の範囲に、試みるステップによって設定された物理的パラ
メータの値よりも低いために、アクセスできない可能性がある。
【００４９】
好ましくは、選択されたマッピングは、ビットの少なくとも一部分を符号語として符号
化することを含む。
【００５０】
１つ以上のメモリセルを含むメモリに複数のビットを記憶する、上述の第１の方法に対
応するコントローラが、上述の第１の方法を使用してビットをセルに記憶する。１つ以上
のメモリセルを含むメモリに１つ以上のビットを記憶する、上述の第２または第３の方法
に対応するコントローラは、第２または第３の方法を使用してビットをセルに記憶する。
【００５１】
上述の第１の方法に対応するメモリ素子は、１つ以上のメモリセルを有するメモリ、お
よび上述の第１の方法を使用して複数のビットをセルに記憶するコントローラを含む。上
述の第２または第３の方法に対応するメモリ素子は、１つ以上のセルを有するメモリ、お
よび上述の第２または第３の方法を使用して１つ以上のビットをセルに記憶するコントロ
ーラを含む。
【００５２】
上述の３つの方法の１つに対応するシステムは、第１のメモリ、および第１のメモリの
ホストを含む。第１のメモリは１つ以上のメモリセルを含む。ホストは、関連の方法に従
って第１のメモリを管理するためのコードを記憶する第２のメモリ、およびコードを実行
するプロセッサを含む。
【００５３】
上述の３つの方法の１つに対応するコンピュータ可読記憶媒体には、関連の方法を実行
して、１つ以上のメモリセルを含むメモリを管理するためのコンピュータ可読コードが埋
め込まれている。
【００５４】
本願明細書では、一例としてのみ、添付の図面を参照して種々の実施形態を説明する。
【図面の簡単な説明】
【００５５】
【図１Ａ】単一ビットおよびデュアルビットフラッシュメモリセルに関する電圧レベル分布の従来技術の図面である。
【図１Ｂ】単一ビットおよびデュアルビットフラッシュメモリセルに関する電圧レベル分布の従来技術の図面である。
【図２】符号を疎パリティ検査行列または疎二部グラフのいずれかとして表示する方法を示す。
【図３】「ソフト」符号化を収束させるために使用される下三角構造を示す。
【図４】フラッシュメモリ素子の高度に概略的なブロック図である。
【図５】図４のコントローラの部分的な機能ブロック図である。
【図６】フラッシュメモリ素子を管理するためのシステムの概略的なハイレベルブロック図である。
【発明を実施するための形態】
【００５６】
本発明による、フラッシュメモリなどのメモリのプログラミングの原理および動作は、
図面および添付の説明を参照することにより理解されるであろう。
【００５７】
以下、符号構成の２つの例を、対応する符号化および復号化アルゴリズムとともに説明
する。一方の符号構成は、「ハード」フィードバックに好適である。他方の符号構成は「
ソフト」フィードバックに好適である。
【００５８】
説明する符号構成は、以下の特性を満たす：
・情報ビットの全ベクトルが複数の符号語に関連している。
・符号に効果的な低複雑度符号化アルゴリズムが存在する。所望の符号語に対し「ハード
」／「ソフト」制約のセットが与えられている場合、符号化アルゴリズムによって、高確
率で可能な限り近い制約の全てまたはほとんどを満たす符号語への情報ベクトルの低複雑
度符号化を可能とする。
・符号に効果的な低複雑度復号化アルゴリズムが存在し、読み取られた符号語からの情報
ベクトルの復号化を可能とする。
【００５９】
以下の「ハード」制約の例は、情報ビットＩのベクトルの複数の符号化を定義する方法
を示し、この場合、ｔ＋１ビットの冗長のみが加わるが、符号化ベクトルの最大ｔ個の座
標が０に制約される。符号化は、ｋ×（ｔ＋１）の長さのベクトルを（ｋ＋１）×（ｔ＋
１）の長さのベクトルに符号化するブロック符号のファミリーに属する。
【００６０】
ＧＦ（２）上のｋ×（ｔ＋１）の長さの情報ベクトルＩ（すなわちＩの各座標が０また
は１である）は、式Ｉ＝（ν0，ν1，・・・，νk-1）∈ＧＦ（２t+1）kで分割される。
座標ν1の各々はｔ＋１ビットのベクトルであり、および標準的な方法においてＧＦ（２t
+1）の要素と関連する。複数の符号化のファミリーを以下のように設定する：
【００６１】
【数２】
0005537551.tif 000005
【００６２】
それゆえ、各情報ベクトルは２t+1−１符号化のファミリーと関連する。
【００６３】
最大ｔビットが０に制約される特定の符号化を選択することは、基本的な線形代数を用
いて、ｆを構成するｔ＋１個の未知のビット値で最大ｔの同次方程式のセットに置き換え
られる。重要な解法は、その存在が保証されており、標準線形代数方法によって計算でき
る。
【００６４】
具体的には、要素νi∈ＧＦ（２t+1），νi＝（νi0，νi1，・・・，νit）を固定し
、およびｆ∈ＧＦ（２t+1）のνiによる乗法を考慮すると、結果は２値ベクトルであり、
各座標は、ｆの座標の一次結合である。それゆえ、結果のいずれの座標も０に制約するこ
とは、未知数はｆの座標であり、係数はνiの座標である一次方程式を解くことに等しい
。
【００６５】
例えば：セット：
ｔ＝３，ｇ（ｘ）＝１＋ｘ＋ｘ4
ａ＝（ａ0，ａ1，ａ2，ａ3）、    ｂ＝（ｂ0，ｂ1，ｂ2，ｂ3）
ａｂ＝（ａ0ｂ0＋ａ3ｂ1＋ａ2ｂ2＋ａ1ｂ3，
ａ1ｂ0＋（ａ0＋ａ3）ｂ1＋（ａ2＋ａ3）ｂ2＋（ａ1＋ａ2）ｂ3，
ａ2ｂ0＋ａ1ｂ1＋（ａ0＋ａ3）ｂ2＋（ａ2＋ａ3）ｂ3，
ａ3ｂ0＋ａ2ｂ1＋ａ1ｂ2＋（ａ0＋ａ3）ｂ3）
ａ＝（０，１，０，１）の場合：
ａｂ＝（ｂ1＋ｂ3，ｂ0＋ｂ1＋ｂ2＋ｂ3，ｂ1＋ｂ2＋ｂ3，ｂ0＋ｂ2＋ｂ3）
が得られる。
【００６６】
例えば結果の最下位ビットを０に制約することは、ｂ1＋ｂ3＝０の解によって行われる
。
【００６７】
次に、以下の例を考慮する。メモリはＮＡＮＤフラッシュメモリとする。各ワード線は５２８個のセルを有する：５１２個のセルはデータ記憶用であり、１６個のセルはオーバーヘッド情報記憶用である。閾値電圧帯および対応するビットパターンは、図１Ｂに関連して上述の表に示したようなものである。
【００６８】
ワード線をプログラムする前に、全てのセルの閾値電圧は、最も低い閾値電圧帯にある
。セルは、２つの論理ページを記憶するようにプログラムされる。第１の論理ページは５
１２個の情報ビットであり、最初の５１２個のセルに最上位ビットとして記憶される。ま
ず、プログラミング電圧パルスを、「０」の最上位ビットを記憶するはずのセルにこれら
セルの閾値電圧が１Ｖ超となるまで、印加することによって、最上位の情報ビットをプロ
グラムする。第１の論理ページのプログラミングは、第４の閾値帯（＞２Ｖ）にいずれの
閾値電圧も与えることを想定していないが、上述のように、それが発生して、少数のセル
がこの閾値電圧帯にオーバープログラムされる可能性がある。それゆえ、第２の論理ペー
ジの情報ビットを、オーバープログラムされたセルにおいてビットが０ビットである符号
語として符号化する。どのセルがオーバープログラムされたかを調べるためにワード線が
読み取られる。
【００６９】
明確にするために、符号語が、３個までのオーバープログラムされたセル（ｔ＝３）を
調整できると仮定する。これは、各座標νiが４ビットのベクトルであることを意味する
。そのため、ｋ＝１２８である：ν0は、第２の論理ページの最初の４つの情報ビットで
ある；ν127は、第２の論理ページの最後の４つの情報ビットである；１６個のオーバー
ヘッドセルのうちの２つを使用して、ｆを表す４ビットを記憶する。ｆが４ビットがあり
、かつｆ≠０である場合、選択できる１５個の（２4−１）符号語があることを意味する
。どの符号語が好適であるかは、オーバープログラムされたセルの数、およびどのセルが
オーバープログラムされているかに依存する。オーバープログラムされたセルがない場合
、１５個の符号語のいずれもが好適である。オーバープログラムされたセルが１つある場
合、１５個の符号語のうちの７個（２3−１）が好適である。オーバープログラムされた
セルが２つある場合、１５個の符号語のうちの３個（２2−１）（おそらくそれ以上）が
好適である。オーバープログラムされたセルが３つある場合、１５個の符号語のうちの１
個（２1−１）（おそらくそれ以上）が好適である。
【００７０】
さらに明確にするために、３つのオーバープログラムされたセルがセル２５、５０およ
び７５であると仮定する。これは、符号語において、第１のビットν6ｆ、第２のビット
ν12ｆおよび第３のビットν18ｆが０である必要があることを意味する。これらの３つの
条件と、ｆ≠０であるという制約とが、標準線形代数方法によってｆを決定するのに十分
である。
【００７１】
ＧＦ（２t+1）乗法の上述の例は、ν6＝ａ＝（０，１，０，１）およびｂ＝ｆである場
合に本例に対応する。次いで、ｆ＝（ｆ1，ｆ2，ｆ3，ｆ4）である場合、制約「第１のビ
ットν6ｆはゼロである必要がある」はｆ1＋ｆ3＝０となる。
【００７２】
３つの制約に基づいてｆを計算する。得られる符号語は（ν0ｆ，・・・，ν127ｆ，ｆ
）である。ビットν0ｆ，・・・，ν127ｆを初めの５１２個のセルの最下位ビットに記憶
する。このビットｆを、最初の２つのオーバーヘッドセルに記憶できる。この符号化手順
は、プログラミング中にもたらされたエラー（例えばセル２５、５０および７５のオーバ
ープログラミング）に対処することを目的としており、そのようなエラーは、符号化中に
わかることである。しかしながら、追加的なエラーが、例えば経時による閾値電圧ドリフ
トによってプログラミング後にもたらされる可能性もある。これらのエラーに対処するた
めに、追加的なエラー訂正コード（ＥＣＣ）を使用する必要がある。ＥＣＣエンコーダは
、第１の符号化ステージの得られる符号語（ν0ｆ，・・・，ν127ｆ，ｆ）を符号化し、
第２のセットのオーバーヘッドビットを加える。これらのオーバーヘッドビットを、ワー
ド線の残りの５２８−５１２−２＝１４個のセルに記憶できる。
【００７３】
ワード線の読み取り中、まず、最後の１４個のセルに記憶されたオーバーヘッドを用い
て初めの５１４個のセルに記憶されたデータを復元するためにＥＣＣデコーダを使用する
。ＥＣＣがデータの復元に成功したと仮定すると（ＥＣＣは、高確率で成功するように設
計されている）、最初の５１２個のセルの最下位ビットの復元されたデータおよび（ｗ0
，．．．ｗ128）で示す初めの２つのオーバーヘッドセルのビットは、（ν0ｆ，・・・，
ν127ｆ，ｆ）と等しい。次いで、第２の論理ページ（ν0，・・・，ν127）を復元する
ために第２の復号化ステージを行う。ｆはＧＦ（１６）の非零要素であるため、ｆは逆数
ｆ1を有する。それゆえ、符号語の初めの１２８個の要素（ｗ0，．．．ｗ128）の各々を
ｆ1で乗算することによって第２の復号化ステージを行うことができる。例えば、ν0はｗ
0ｆ1として復元される。
【００７４】
情報ビットおよび初めの２つのオーバーヘッドビットを符号語（ν0ｆ，ν1ｆ，・・・
，ν127ｆ，ｆ）として符号化することは、データを正しく使用するためにオーバープロ
グラムされたセルを使用できることのみを目的としている。従来のエラー訂正コード（Ｅ
ＣＣ）符号化は、５１２個の情報ビットを、オーバーヘッドビットに冗長ビットが含まれ
る系統的な符号語として符号化することによって行われる。上述したように、このＥＣＣ
符号化は、例えば経時による閾値電圧ドリフトのために、座標の一部νiおよびまたｆが
不正確に読み取られることが生じた場合にこれを補償する。このＥＣＣ符号化はまた、ｔ
を超えるセルがオーバープログラムされる場合に（ｔ個を超えるセルがオーバープログラ
ムされることが少ない限り）符号語の正確な復号化を可能にするが、但し、このＥＣＣが
、情報ビットを知った上で、ｆによって説明がつかないオーバープログラムされたセルが
オーバープログラムされていないかのように、実行されることを条件とする。このハード
な制約の符号化は、オーバープログラムされたセルのｔ個に対処し、それに続いくＥＣＣ
符号化は、残りのオーバープログラムされたセルに対処する。
【００７５】
１つのセルのみのオーバープログラミングは、より低位のページの情報ビット全てを反
転させること、およびより低位のページのオーバーヘッドビットの１つを使用して、情報
ビットが反転されたことを示すことによって対処できることに留意されたい。概して、２
つ以上のセルがオーバープログラムされている場合にはＧＦ（２t+1）符号化が必要であ
る。
【００７６】
第１の論理ページのプログラミングは、プログラムされたセルの閾値電圧を設定する試
みであり、セルの閾値電圧は、例えば図１Ｂに関連して既に示した表によって定義されて
いる閾値電圧に対するビットのデフォルトマッピングに従った最上位の情報ビットを表わ
すようにする。この試みの結果１つ以上のセルがオーバープログラムされ、そのため、そ
れらのセルに望まれる閾値電圧状態が、実際に得られる閾値電圧状態からアクセスできな
くなる場合には、第２の論理ページを符号語（ν0ｆ，ν1ｆ，・・・，ν127ｆ，ｆ）と
して符号化し、それは、図１Ｂに関連して既に示した表と共に、閾値電圧に対する第２の
論理ページのビットの適応マッピングを構成する。
【００７７】
「ソフト」フィードバックの場合、より意欲的な目標を設定する。提案のスキームは、
プログラミング中に発生するエラーに効率的に対処しようとするだけでなく（すなわち最
小限の冗長で）、セルの閾値電圧の確率分布を狭くしようとしている。すなわち、このス
キームは、同じ状態にプログラムされた全てのセルの、プログラムされた閾値電圧におけ
る圧縮分布を導入することを含もうとしている。この目的は、例えば経時による閾値電圧
ドリフトのために、プログラミング後にエラーが生じる可能性を低減することである。同
様に、これは、メモリの信頼性を高め、かつ、より多くのプログラム・消去サイクルに耐
えること、およびデータ保持を高めることを可能にする。このセル閾値電圧の分布を狭く
することを達成するために、各読み取りセルに、プログラムされるセルが、その閾値電圧
帯の中心からのオーバーシュートの程度に従った、より高い「奇」状態にあることがどの
程度重要であるかを示す測定基準を関連付ける（図１Ｂのセル当たり２ビットのＭＢＣの
例では、問題は、状態２の上部の近くにあるか、または既に状態３にオーバープログラム
されているセルを、状態２から状態３に進めるかどうかということにある。一般的なセル
当たりｎビットのＭＢＣの場合、２n個の状態があり（従来通り０〜２n−１の符号が付け
られている）、問題は、０を超える隅状態にあるセルを次の、上側の奇状態に進めるかど
うかということにある）。オーバーシュートが増大すると、隅状態を次の、上側の奇状態
から区別する閾値までの距離が低減し、およびセルを奇状態にすることの重要性または望
ましさが増大する。「ハード」フィードバックの例のように、オーバーシュートが、セル
を次の、上側の奇状態に実際にするほど強力である場合、セルが奇状態にあるとして処理
する必要性が絶対となることは明らかである。すなわち、この場合、セルのデータが、次
の状態にされるような「再マッピング」が行われない場合、このセルはエラーとなり、Ｅ
ＣＣへの追加的な負担となる（対処されるプログラミング後に発生するセルエラーを少な
くする）。
【００７８】
第２の例は、符号語に対していくつもの「ソフト」な制約を有する１組の複数の符号化
から符号化が選択されるそのような「ソフト」な制約の例である。「ソフト」な制約とは
、いくつかのビットでは、それらが「０」となることが望ましく、それゆえ、それらが、
高い確率で「０」ビットであるように設定される（「１」ビットである確率は低いがゼロ
以外の確率である）が、他のビットでは、それらが「１」であることが望ましく、それゆ
え、複数の選択肢から選択されて、符号語において「０」ビットとなる確率を低く設定さ
れることを意味する。ビットνが０または１である好ましい確率測度は、下に示す対数尤
度比（ＬＬＲ）である：
【００７９】
【数３】
0005537551.tif 000006
（current constraints and observations：現在の制約および観察）
【００８０】
所与の情報ベクトルＩでは、複数の符号化セットは、式ＨＣ＝Ｉ（式中、Ｈは、符号を
定義するパリティ検査行列である）の行列方程式を満たす全ベクトルＣのセットである。
【００８１】
ソフトな制約を満たす符号語としての情報ベクトルの符号化に好ましい１つの手法は、
反復符号化アルゴリズムを使用することである。これは、行列Ｈの二部グラフ表示に適用
された確率伝播（Belief  Propagation）（ＢＰ）のような反復メッセージパッシングア
ルゴリズムを使用することによって行うことができる。そのようなアルゴリズムは、疎行
列Ｈ上で動作するときに上手く機能する。
【００８２】
行列Ｈの等価の二部グラフ表示を以下のように導く：
・Ｎ個の紙面左側のノード（ビットノードと称する）およびＫ個の紙面右側のノード（チ
ェックノードと称する）を有する二部グラフを構成する。ビットノードはＨ列に対応し、
チェックノードはＨ行に対応する。
・いずれかの対（ｉ，ｊ）の場合に対しても、Ｈij＝１は、ビットノードｊからチェック
ノードｉまでのエッジ（ｅｄｇｅ）を描く。
・ビットノードは、符号語Ｃのビットに関連する。チェックノードは情報ベクトルＩのビ
ットに関連する。
・チェックノードは、それらの接続されたビットノード（または関連の符号語ビット）に
制約を課す。チェックノードに関連する対応する情報ビットが「０」である場合、チェッ
クノードは、その接続された符号語ビット（またはビットノード）が偶数の「１」を含む
必要があるという制約を課す。チェックノードに関連する対応する情報ビットが「１」で
ある場合、チェックノードは、その接続された符号語ビット（またはビットノード）が奇
数の「１」を含む必要があるという制約を課す。
【００８３】
ここで図面に戻ると、図２に、（紙面左側に）符号を定義する疎パリティ検査行列Ｈ、
ならびに（紙面右側に）Ｎ個のビットノードのセットＶ（この例ではＮ＝１３）、Ｋ個の
チェックノードのセットＣ（この例ではＫ＝１０）およびビットノードをチェックノード
に接続するエッジのセットＥ（この例ではＥ＝３８）を有する等価の疎二部グラフＧ＝（
Ｖ，Ｃ，Ｅ）を示している。ビットノードは符号語ビットに対応し、チェックノードは、
ビットに対するパリティ検査制約に対応する。ビットノードはエッジによって、それが関
与するチェックノードに接続される。
【００８４】
符号のグラフ表示に基づいて、符号化を、反復メッセージパッシングアルゴリズムを使
用して実行できる。これらのアルゴリズムは、下にある、符号を表す二部グラフのエッジ
を越えてビットノードとチェックノードとの間でメッセージを交換することによって動作
する。エンコーダは、（読み取られたメモリセルからの「ソフト」フィードバックに基づ
いて）符号語ビットの初期推定値を与えられる。これらの初期推定値を、有効な符号語と
してビットが満たす必要のあるチェックノード制約を課すことによって絞り込んでかつ改
善する。これは、グラフのエッジに沿って通過するメッセージを使用して、符号語ビット
を表すビットノードと、符号語ビットに対する制約を表すチェックノードとの間で情報を
交換することによって行われる。
【００８５】
ビット推定値は、上記で定義したＬＬＲである。「現在の制約および観察」は種々のチ
ェックノード制約であり、これらの制約は、手元でのメッセージの計算と、これらのチェ
ックノードに関与する符号語ビットに対応する初期推定値の計算とに考慮される。
【００８６】
反復メッセージパッシングアルゴリズムは、Ｃの座標と関連する「ＬＬＲ」の初期ベク
トルから始まる。例えば、値Ｃに優先的な好みがない場合、初期ＬＬＲを０に設定できる
（「ドントケア（don't  care）」）。オーバープログラミングの場合のように、符号語
ビットが「０」であることが好ましい場合、対応するＬＬＲを正の数、好ましくは２０〜
３２に設定する。消去状態に留まっていて全くプログラムできないセルの分野および背景
のセクションで説明した場合のように、符号語ビットが「１」であることが好ましい場合
、対応するＬＬＲを負の数、好ましくは−２０〜−３２に設定する。ＬＬＲの絶対値は、
「０」または「１」へ向かう傾向の強さを反映する。例えば、Ｃのｔ座標を０にすること
が望ましい場合、これらの座標は、非常に高い正のＬＬＲ値に設定される。
【００８７】
この符号を、符号語Ｃが満たす必要のある追加的なパリティ検査制約を加えることによ
って従来のＥＣＣと組み合わせる。これは、行列Ｈおよび追加的な行列ＨECCの双方で構
成されるパリティ検査行列ＨTを構成することによって行うことができる（Ｃ上に追加的
なパリティ検査を含む）。有効な符号語Ｃは以下の１組の式を満たす：
【００８８】
【数４】
0005537551.tif 000007
【００８９】
Ｃが初期化されるＬＬＲのベクトルを「Ｐ」として示し、メッセージパッシングルール
は以下の通りである：
【００９０】
ビットノードからチェックノードメッセージ：
【００９１】
【数５】
0005537551.tif 000008
【００９２】
チェックノードからビットノードメッセージ：
Ｉの「０」ビットまたは従来のＥＣＣパリティ検査の１つに対応するチェックノードの
場合：
【００９３】
【数６】
0005537551.tif 000009
【００９４】
Ｉの「１」ビットに対応するチェックノードの場合：
【００９５】
【数７】
0005537551.tif 000010
【００９６】
これらのメッセージパッシングルールでは、Ｎ（ｎ，Ｇ）は、グラフＧにおいてノード
ｎに隣接するものを示し
【００９７】
【数８】
0005537551.tif 000011
【００９８】
0005537551.tif 000012
【００９９】
各反復の最後において、符号語要素のＬＬＲの推測値は
【０１００】
【数９】
0005537551.tif 000013
【０１０１】
であり、ビットＣνは、Ｑν＞０の場合「０」であり、Ｑν＜０の場合「１」である。そ
のベクトルＣがＨＣ＝Ｉを満たす場合、反復は収束した。そうでなければ、反復は継続す
る。
【０１０２】
概して、この反復メッセージパッシングは収束しない可能性がある。収束させるために
は、図３に示す下三角行列構造を使用する。
【０１０３】
図３で使用した用語は以下の通りである：
・Ｋ−情報ビット数。
・Ｍ1−情報ベクトル毎に複数の符号語表示を可能にするために加えられた冗長ビット数
（各情報ベクトルＩに関連する２M1（２のＭ1乗）個の可能なベクトルＣがある）。
・Ｍ2−従来のＥＣＣの冗長ビット数。
【０１０４】
以下は、Ｋ＝Ａ、Ｍ1＝２、Ｍ2＝０の例である。
【０１０５】
【数１０】
0005537551.tif 000014
【０１０６】
Ｃ＝（ｃ1，ｃ2，ｃ3，ｃ4，ｃ5，ｃ6）Tであると仮定すると、一般解ＨＣ＝Ｉが、ｃ1
およびｃ2をパラメータとして選択し、かつＣの他の４つの要素を
ｃ3＝ｃ1＋ｃ2＋Ｉ1
ｃ4＝ｃ2＋Ｉ1＋Ｉ2
ｃ5＝ｃ1＋Ｉ1＋Ｉ2＋Ｉ3
ｃ6＝ｃ1＋Ｉ2＋Ｉ4
として表すことによって見出される。
【０１０７】
１つの解（デフォルト）はｃ1＝ｃ2＝０を選択することであり、そうすると
ｃ3＝Ｉ1＝１
ｃ4＝Ｉ1＋Ｉ2＝１
ｃ5＝Ｉ1＋Ｉ2＋Ｉ3＝０
ｃ6＝Ｉ2＋Ｉ4＝０
となる。
【０１０８】
オーバープログラミングがｃ3＝０を必要とする場合、ｃ1＝０およびｃ2＝１を選択する
と、
ｃ3＝ｃ2＋Ｉ1＝０
ｃ4＝ｃ2＋Ｉ1＋Ｉ2＝０
ｃ5＝Ｉ1＋Ｉ2＋Ｉ3＝０
ｃ6＝Ｉ2＋Ｉ4＝０
となる。
【０１０９】
あるいは、ｃ1＝１およびｃ2＝０を設定すると
ｃ3＝ｃ1＋Ｉ1＝０
ｃ4＝Ｉ1＋Ｉ2＝１
ｃ5＝ｃ1＋Ｉ1＋Ｉ2＋Ｉ3＝１
ｃ6＝ｃ1＋Ｉ2＋Ｉ4＝１
が与えられる。
【０１１０】
図３の行列構造は、反復エンコーダが常にＣに対する有効な解に収束することを保証で
きる。これは、初期の符号化オペレーションを実施することによって行われ、および符号
化が収束しない（すなわち、全検査を満たす符号語が見つからなかった）場合には、Ｃの
最初のＭ1ビットが、これらのビットの「傾向」を強めるように修正される、すなわち最
初のＭ1ビットの負の値（負のＬＬＲ従って「１」となる傾向）が、１（大きな負の値）
となる確率を高め、および最初のＭ1ビットの正の値（正のＬＬＲ従って０となる傾向）
が０（大きな正の値）となる確率を高める。次いで符号化を繰り返す。
【０１１１】
この方式は、最初のＭ1ビットの特定の値に関しては、１組の式に対する（一意の）解
があるため、符号化が収束することを保証する。図３から、最初のＭ1ビットが設定され
たら、次のＫ＋Ｍ2個の式でガウス消去法を使用することにより、対応する行列の行（式
）によって値が定義されるビットをもう１つ加えることが明らかである。例えば、最初の
２ビットｃ1，ｃ2がそれぞれ０および１の場合、Ｉ（２）＝１の場合、および行列の第２
の行が（１１１）の場合に、Ｍ1＝２、Ｋ＝３、Ｍ2＝０であると、
【０１１２】
【数１１】
0005537551.tif 000015
であり、ｃ3＝１となる。
【０１１３】
初めに、解を強制しないように、最初のＭ1ビットを偏らないようにする（ＬＬＲ＝０
）。実際には、反復法は少数回の反復に限定され、および最初のＭ1ビットに関連するＬ
ＬＲを設定してから、符号化は、次のＫ＋Ｍ2−１回のステップの間ガウス消去法を続け
る。そのような各ステップにおいて、Ｃの単一の次のビットを計算する。
【０１１４】
符号語がフラッシュメモリからリードバックされるとき、行列ＨECCに基づく従来のＥ
ＣＣを使用してＣの最初のＭ1＋Ｋビットを復元し、およびそれらビットをＨで乗算して
情報ベクトルＩを復元する。
【０１１５】
あるいは、式ＨＣ＝Ｉに関連する二部グラフ（式中、ＨはＫ×Ｎ行列である）は、以下
の通り構成される：
・Ｎ＋１個の紙面左側のノード（ビットノードと称する）およびＫ個の紙面右側のノード
（チェックノードと称する）を有する二部グラフを構成する。
・最初のＮ個のビットノードはＨの列に対応しており、最後のビットノードは「ダミー」
のビットノードである；チェックノードはＨの行に対応する。
・任意の対（ｉ，ｊ）に対して、Ｈij＝１は、ビットノードｊからチェックノードｉまで
のエッジを描く。
・任意の行ｉに対して、Ｉi＝１は、ビットノードＮ＋１からチェックノードｉまでのエ
ッジを描く。
・最初のＮ個のビットノードが符号語Ｃのビットに関連付けられている。
・最後のビットノードは、一定値「１」に関連する「ダミー」ビットノードである。
・チェックノードは、それらの接続されたビットノード（または関連の符号語ビット）に
制約を課す。制約は、各チェックノードに対して、その接続された符号語ビット（または
ビットノード）は、偶数の「１」（「ダミー」ビットノードを含めて）を含む必要がある
というものである。
【０１１６】
この代替的な方法は、ダミービットノードからのチェックノードメッセージへのビット
ノードの規則が
【０１１７】
【数１２】
0005537551.tif 000016
【０１１８】
であるようにダミービットノードを「１」の値に固定する場合を除いて、以下の行列方程
式：
【０１１９】
【数１３】
0005537551.tif 000017
【０１２０】
を解くために従来の復号化メッセージパッシングルールを適用することと等しいことに留
意されたい。
【０１２１】
図４は、フラッシュメモリ素子の高度に概略的なブロック図である。多数の個々にアド
レス可能なメモリセルが、行および列の規則正しい配列１１に配置されている。個々のメ
モリセルを、ビット線、ワード線に配置された選択ゲート、およびステアリングゲートに
よって制御できる。ビット線は、本願明細書では、配列１１の列に沿って延在するように
指定されており、およびワード線は、配列１１の行に沿って延在するように指定されてい
る。ビット線ユニット１３は、ビット線デコーダ、記憶素子、駆動回路およびセンス増幅
器を含み得る。ビット線ユニット１３を線１５によってセル配列１１に、ならびにビット
−制御線２９および読み取り線４１によってコントローラ２７に結合できる。ワード線ユ
ニット１９は選択ゲートデコーダおよび駆動回路を含み得る。ワード線ユニット１９を線
１７によってセル配列１１に、およびワード−制御線３１によってコントローラ２７に結
合できる。ステアリング線ユニット４３はステアリングゲートデコーダおよび駆動回路を
含み得る。ステアリングユニット４３を線２３によってセル配列１１に、ステアリング−
制御線３３によってコントローラ２７に、および線４４によってビット線ユニット１３に
結合できる。ビット線ユニット１３、ワード線ユニット１９およびステアリングユニット
４３をバス２５に結合でき、それを次にコントローラ２７に結合できる。コントローラ２
７を線３５によってホストに結合できる。
【０１２２】
予め選択されたメモリセルがプログラムされるとき、予め選択されたメモリセルに対応
するビット線、ワード線およびステアリングゲートに電圧を、予め選択されたセルのプロ
グラミングに十分な予め定められたレベルで印加できる。コントローラ２７は、予め選択
されたメモリセルのアドレスを、バス２５を通して、それぞれ線２６ａ、２６ｂ、および
２６ｃによってビット線ユニット１３、ワード線ユニット１９、およびステアリングゲー
トユニット４３の各デコーダに送信する。ビット線ユニット１３、ワード線ユニット１９
、ステアリングゲートユニット４３およびコントローラ２７間のステータス・制御コマン
ドを、ビット−制御線２９、ワード−制御線３１およびステアリング−制御線３３を通し
て通信する。
【０１２３】
予め選択されたメモリセルが読み取られるとき、電圧を、予め選択されたメモリセルに
対応して、予め選択されたメモリセルの読み取りを可能にするのに十分な予め定められた
レベルで、対応するビット線、ワード線およびステアリングゲートに印加できる。コント
ローラ２７は、ビット−制御線２９を通してビット線の電圧を印加、ワード−制御線３１
を通してワード線の電圧を印加、およびステアリング制御線３３を通してステアリングゲ
ートの電圧を印加できる。これらの電圧によって、予め選択されたメモリセルを通して電
流を発生できる。電流は、予め選択されたメモリセルがプログラムされたか否か（セル当
たり１つのビットがプログラムされた配列１１のセルの場合）、または予め選択されたメ
モリセルに記憶されたビットパターン（セル当たり２つ以上のビットがプログラムされた
配列１１のセルの場合）を示す。電流の値を増幅して、ビット線ユニット１３においてセ
ンス増幅器によって基準値と比較し、その結果をラッチまたはレジスタに一時的に記憶で
きる。予め選択されたメモリセルから読み取られた、得られるデータを、読み取り線４１
を通してコントローラ２７に送信できる。
【０１２４】
情報ビットをメモリセル配列１１に書き込むとき、コントローラ２７は、上述の符号化
方法が上述のプログラミングの問題：オーバープログラムされたセルなどの一時的な問題
、または消去状態で凍結されている（最小閾値電圧）または高い閾値電圧状態にあるため
にプログラムできないセルなどの恒久的な問題を克服する必要があるかどうかを決定する
。上述の符号化方法が情報ビットをプログラムする必要がある場合、コントローラ２７は
、上述のように情報ビットを符号化して、得られる符号語をメモリセル配列１１に記憶す
る。メモリセル配列１１に記憶されたデータを読み取るとき、コントローラ２７が、読み
取られたデータをそのような符号語であると認識する場合、コントローラ２７は上述のよ
うに符号語からの情報ビットを復元する。
【０１２５】
図５は、コントローラ２７の部分的な機能ブロック図であり、コントローラ２７の機能
ブロックに、セル配列１１をプログラミングするためのプログラミングブロック１００、
およびセル配列１１を読み取るための読み取りブロック１１０を含むことを示す。同様に
、プログラミングブロック１００は、閾値電圧マッピングサブブロック１０２、テスティ
ングサブブロック１０４および符号化サブブロック１０６を含む。閾値電圧マッピングサ
ブブロック１０２は、プログラムされるビットを閾値電圧間隔にマップする、例えば、セ
ル当たり２ビットの場合には図１Ｂに関連して既に示した表に従う。テスティングサブブ
ロック１０４は、閾値電圧マッピングサブブロック１０２よってもたらされた閾値電圧マ
ッピングに従ってプログラムされたセルを読み取りって、そのプログラミングを続けるか
どうか決定する。例えば、ビットの最初の部分のプログラミング中に、プログラムされた
セルの１つ以上がオーバープログラム状態となったために、そのプログラミングが失敗し
た場合、または、例えばプログラムされるセルの１つがその消去状態でまたはその最も高
い閾値電圧状態で凍結されていると分かっているために、そのプログラミングが失敗する
と予期される場合、符号化サブブロック１０６は、上述のようにビットの一部または全て
を符号語として符号化し、それらのビットを閾値電圧マッピングサブブロック１０２によ
ってアクセス可能な閾値電圧間隔にマップする。任意に、コントローラ２７はまた、セル
配列１１のどのセルが不良品であるかの識別情報を記憶するために小型の不揮発性メモリ
１２０も含む（そうでなければ、不良品セルは、それらのセルが正確なプログラムに失敗
するというように識別される）。コントローラ２７の機能ブロックおよび機能サブブロッ
クを、ハードウェア、ファームウェアで実装し得るか、またはハードウェアおよび／また
はファームウェアおよび／またはソフトウェアの組み合わせとして実装し得る。
【０１２６】
図６は、本発明のシステム５０のハイレベルブロック図である。システム５０は、プロ
セッサ５２および４つのメモリ素子：ＲＡＭ５４、ブートＲＯＭ５６、大容量記憶装置（
ハードディスク）５８および従来技術のフラッシュメモリ素子６４を含み、それらは全て
共通のバス６６を介して通信している。フラッシュメモリ素子６４は、例えば、システム
５０がソフトウェアを実行することによってコントローラ２７の機能性をエミュレートす
る場合、コントローラ２７以外の図４のフラッシュメモリ素子の構成要素を含むことがで
きる。フラッシュメモリ素子６４のソフトウェアドライバ６０は、大容量記憶装置５８に
記憶され、プロセッサ５２によって実行されてフラッシュメモリ素子６４にアクセスする
。ドライバ６０は、本願明細書で説明する方法を使用して、フラッシュメモリ素子６４に
記憶されるデータを符号化し、およびフラッシュメモリ素子６４から受信される符号語を
復号化するためのモジュール６２を含む。
【０１２７】
図６では、フラッシュメモリ素子６４以外のシステム５０の構成要素は、フラッシュメ
モリ素子６４のホスト７０を構成する。大容量記憶装置５８は、本願明細書で説明するデ
ータ記憶方法を実施するためのコンピュータ可読コードを有するコンピュータ可読記憶媒
体の例である。そのようなコンピュータ可読記憶媒体の他の例としては、そのようなコー
ドを有するＣＤのような読み出し専用メモリが挙げられる。
【０１２８】
フラッシュメモリのようなメモリにデータを記憶する方法、およびその方法を使用する
装置およびシステムのごく限られた実施形態を説明した。方法、装置およびシステムに多
くの変形、修正および他の適用をなすことができることを理解されたい。
【図１Ａ】
0005537551.tif 000018
【図１Ｂ】
0005537551.tif 000019
【図２】
0005537551.tif 000020
【図３】
0005537551.tif 000021
【図４】
0005537551.tif 000022
【図５】
0005537551.tif 000023
【図６】
0005537551.tif 000024