"不揮発性記憶装置を動作させる方法であって、不揮発性記憶素子にデータをプログラムすること、及び、前記プログラミングの後に、前記不揮発性記憶素子から前記データを読み出すことと、を備え、前記データを読み出すことは、温度情報と少なくとも1つの隣接不揮発性記憶素子に関する状態情報とに基づいて温度補償を提供することを含む、方法。前記データを読み出すことは、温度差が閾値よりも大きいと判断することを含み、前記温度差は、現在の温度と、前記データをプログラムする時点の温度と、の差であり、温度情報と少なくとも1つの隣接不揮発性記憶素子に関する状態情報とに基づいて温度補償を提供することは、少なくとも1つの隣接不揮発性記憶素子に関する状態情報と、前記温度差が前記閾値よりも大きいと判断することに応じた前記温度差と、に基づいて、補償を提供することを含む、請求項1に記載の方法。温度情報と少なくとも1つの隣接不揮発性記憶素子に関する状態情報とに基づいて温度補償を提供することは、温度に基づいて初期補償値を決定すること、及び、少なくとも1つの隣接不揮発性記憶素子に関する前記状態情報に基づいて前記初期補償値を調整すること、を含む、請求項1または2に記載の方法。温度情報と少なくとも1つの隣接不揮発性記憶素子に関する状態情報とに基づいて温度補償を提供することは、温度と少なくとも1つの隣接不揮発性記憶素子に関する状態情報とに基づいて補償値を決定することを含む、請求項1または2に記載の方法。前記データを読み出すことは、前記不揮発性記憶素子から情報を検知すること、前記検知の後に、前記温度補償を適用すること、及び、前記検知及び前記適用に基づいて前記データを決定すること、を含む、請求項1から4のいずれか一項に記載の方法。データを読み出すことは、前記温度補償を適用すること、及び、前記温度補償の前記適用の後に、前記温度補償の前記適用に基づいて前記不揮発性記憶素子から情報を検知すること、を含む、請求項1から4のいずれか一項に記載の方法。温度情報と少なくとも1つの隣接不揮発性記憶素子に関する状態情報とに基づいて温度補償を提供することは、温度情報と少なくとも1つの隣接不揮発性記憶素子に関する状態情報とに基づいてエラー訂正符号復号化プロセスのためのLRRテーブルを調整することを含む、請求項1から6のいずれか一項に記載の方法。温度情報と少なくとも1つの隣接不揮発性記憶素子に関する状態情報とに基づいて温度補償を提供することは、前記データの前記読み出しのための読み出し比較レベルを調整することを含み、前記読み出し比較レベルは、温度情報と少なくとも1つの隣接不揮発性記憶素子に関する状態情報とに基づいて調整される、請求項1から6のいずれか一項に記載の方法。温度情報と少なくとも1つの隣接不揮発性記憶素子に関する状態情報とに基づいて温度補償を提供することは、温度情報と少なくとも1つの隣接不揮発性記憶素子に関する状態情報とに基づいてエラー訂正符号復号化プロセスを調整することを含む、請求項1から6のいずれか一項に記載の方法。読み出すことは、現在の温度情報を決定すること、前記データのプログラミングからの温度情報にアクセスすること、前記現在の温度情報と、前記データのプログラミングからの前記温度情報と、の温度差を決定すること、1以上の目標不揮発性記憶素子に対して、1以上の隣接不揮発性記憶素子に関する状態情報を決定すること、前記温度差が閾値よりも大きいと判断すること、前記温度差と、前記温度差が前記閾値よりも大きいと判断することに応じた適切な隣接不揮発性記憶素子に関する状態情報と、に基づいて、1以上の目標不揮発性記憶素子のための温度補償を適用すること、目標不揮発性記憶素子から情報を検知すること、及び、前記検知と前記温度補償とに基づいてデータを報告すること、を含む、請求項1に記載の方法。読み出すことは、現在の温度情報を決定すること、前記データのプログラミングからの温度情報にアクセスすること、前記現在の温度情報と、前記データのプログラミングからの前記温度情報と、の温度差を決定すること、前記受け取られた現在の温度情報に基づいて読み出しパラメータを調整すること、前記読み出し動作パラメータを用いて前記不揮発性記憶素子から初期情報を検知すること、前記温度差と、前記不揮発性記憶素子に関する1以上の隣接不揮発性記憶素子の状態を表す情報と、に基づく温度補償を用いて、前記初期情報から前記不揮発性記憶素子に記憶されたデータを特定すること、及び、前記特定されたデータを報告すること、を含む、請求項1に記載の方法。不揮発性記憶素子と、前記不揮発性記憶素子と通信する1以上の管理回路と、を備え、前記1以上の管理回路は、温度情報と少なくとも1つの隣接不揮発性記憶素子に関する状態情報とに基づいて温度補償を提供することによって、前記不揮発性記憶素子からデータを読み出す、不揮発性記憶システム。前記1以上の管理回路は、温度差が閾値よりも大きいと判断し、前記温度差が前記閾値よりも大きいと判断することに応じて、温度情報と少なくとも1つの隣接不揮発性記憶素子に関する状態情報とに基づいて温度補償を提供し、前記温度差は、前記データのプログラミングの際の温度と、前記データを読み出す際の温度と、の差であり、前記温度情報は、前記温度差である、請求項12に記載の不揮発性記憶システム。前記1以上の管理回路は、温度情報と少なくとも1つの隣接不揮発性記憶素子に関する状態情報とに基づいてエラー訂正符号復号化プロセスを調整することによって、温度情報と少なくとも1つの隣接不揮発性記憶素子に関する状態情報とに基づいて温度補償を提供する、請求項12または13に記載の不揮発性記憶システム。前記1以上の管理回路は、前記データを読み出すための読み出し比較レベルを調整することによって、温度情報と少なくとも1つの隣接不揮発性記憶素子に関する状態情報とに基づいて温度補償を提供する、請求項12または13に記載の不揮発性記憶システム。前記1以上の管理回路は、現在の温度情報を決定し、前記データのプログラミングからの温度情報にアクセスし、前記現在の温度情報と、前記データのプログラミングからの温度情報と、の温度差を決定し、1以上の隣接不揮発性記憶素子に関する状態情報を決定し、前記温度差と適切な隣接不揮発性記憶素子に関する前記状態情報とに基づいて1以上の目標不揮発性記憶素子のための温度補償を決定して適用し、目標不揮発性記憶素子から情報を検知し、前記検知と前記温度補償とに基づいてデータを報告することによって、前記不揮発性記憶素子からデータを読み出す、請求項12に記載の不揮発性記憶システム。前記1以上の管理回路は、現在の温度情報を決定し、データのプログラミングからの温度情報にアクセスし、前記現在の温度情報と、データのプログラミングからの温度情報と、の温度差を決定し、前記受け取られた現在の温度情報に基づいて1以上の動作パラメータを調整し、前記1以上の動作パラメータを用いて、前記不揮発性記憶素子から初期情報を検知し、前記温度差と、前記不揮発性記憶素子に対する1以上の隣接不揮発性記憶素子の状態を表す情報と、に基づく温度補償を用いて、前記初期情報から前記不揮発性記憶素子に記憶されたデータを特定し、前記特定されたデータを報告することによって、前記不揮発性記憶素子からデータを読み出す、請求項12に記載の不揮発性記憶システム。前記1以上の管理回路は、各データ状態のための複数の比較値において読み出し動作を実行し、前記読み出し動作、温度情報、及び、隣接状態情報に基づく特定のデータ値を表すデータの各ビットのための確率を決定することによって、前記不揮発性記憶素子からデータを読み出す、請求項12に記載の不揮発性記憶システム。温度が所与のメモリセルの挙動および動作に与える影響は、所与のメモリセルに隣接または近接するメモリセルの状態に応じて変化する。したがって、1以上の隣接メモリセルの温度ならびに条件あるいは状態に基づく温度補償を提供することが提案される。図1Aは、プログラミングの時点と読み出しの時点の温度および温度差が閾値電圧Vt分布のシフトと拡大をもたらす場合の様子の例を示す。Vt分布Aは、比較的高い温度におけるプログラミングの直後に得られたVt分布である。Vt分布Aは、この例では、10ビットの右端および左端レベルで約0.6Vの幅を有する。しかしながら、同じVt分布が低い温度で測定されるとき、Vt分布はシフトアップして拡大しVt分布Dを形成する。不揮発性記憶素子は負の温度係数Tcoを有するのでVt分布はシフトアップする。しかしながら、不揮発性記憶素子間のTcoには変動があるので、Vt分布はさらに拡大する。例えば、分布Cにおける不揮発性記憶素子分布Dにおける不揮発性記憶素子の全体集合の部分集合であるは、分布Bにおける不揮発性記憶素子よりも大きいTcoを有する。部分集合BおよびCはいずれも、分布Aのように、不揮発性記憶素子からなる不揮発性記憶素子Dの集合を一体に形成する。この場合、分布BおよびCにおける不揮発性記憶素子のTcoの差は、かなりあり、それゆえに、この例では約0.2Vの著しいVt分布の拡大をもたらす。このようなTcoの大きな差は、隣接する不揮発性記憶素子間に密接な相互作用がある大規模な不揮発性記憶素子において生じる可能性がある。不揮発性記憶素子のTcoは隣接する不揮発性記憶素子に記憶されるデータに依存することが分かっている。特に、大きいTcoは、隣接する不揮発性記憶素子が目標不揮発性記憶素子よりも著しく低いプログラムまたは消去状態にあるときに生じる。隣接する不揮発性記憶素子が同様のプログラム状態または高いプログラム状態にプログラムされるとき不揮発性記憶素子のTcoは小さい。隣接する不揮発性記憶素子のプログラム状態の情報を考慮することによって、目標不揮発性記憶素子のTcoはより正確に知られ、それゆえに、適合検知レベルadaptedsenselevelsなどの補償技術によるより正確な読み出し動作がプログラミングと読み出しとの間の温度差と、隣接する不揮発性記憶素子のデータ状態とに基づいて適用されうる。データは、目標メモリセルにプログラムされてこれらから読み出される。データを読み出す際に、温度補償が提供される。温度補償は、温度情報と1以上の隣接メモリセルの状態とに基づく。一実施形態では、データが目標メモリセルから読み出される際に、システムは、現在温度を検知して、現在温度とデータがプログラムされた時点の温度との温度差を決定する。温度差が閾値よりも大きい場合、データを読み出すプロセスは、温度情報と隣接セルの状態情報とに基づいて温度補償を提供することを含む。一代替手段では、温度補償を提供する判断は、温度差以外の条件によってトリガーされ得る。本明細書で説明されている技術を実行するための不揮発性記憶システムの一例は、NAND構造を用いるフラッシュメモリシステムであり、2つの選択ゲートの間に複数のトランジスタを直列接続で配置することを含んでいる。直列接続されたトランジスタと選択ゲートは、NANDストリングと呼ばれる。図1は、1つのNANDストリングを示す平面図である。図2は、その等価回路である。図1と図2に示すNANDストリングは、第1のドレイン側選択ゲート120と第2のソース側選択ゲート122の間に挟まれている、直列接続されている4つのトランジスタ100、102、104及び106を有する。選択ゲート120は、ビットラインコンタクト126を介してNANDストリングをビットラインに接続している。選択ゲート122は、NANDストリングをソースライン128に接続している。選択ゲート120は、選択ラインSGDに適切な電圧を印加することによって制御される。選択ゲート122は、選択ラインSGSに適切な電圧を印加することによって制御される。トランジスタ100、102、104、及び106のそれぞれは、制御ゲートとフローティングゲートを有している。例えば、トランジスタ100は、制御ゲート100CGとフローティングゲート100FGを備えている。トランジスタ102は、制御ゲート102CGとフローティングゲート102FGを備えている。トランジスタ104は、制御ゲート104CGとフローティングゲート104FGを備えている。トランジスタ106は、制御ゲート106CGとフローティングゲート106FGを備えている。制御ゲート100CGはワードラインWL3に接続されており、制御ゲート102CGはワードラインWL2に接続されており、制御ゲート104CGはワードラインWL1に接続されており、制御ゲート106CGはワードラインWL0に接続されている。図1と図2は、NANDストリング内の4個のメモリセルを示しているが、4個のメモリセルの使用は単に一例として提示されている点に留意されたい。NANDストリングは、4個よりも少ない、或いは、4個よりも多いメモリセルを有していてよい。例えば、NANDストリングによっては8個、16個、32個、64個、128個などの数のメモリセルを有していてよい。本明細書の説明は、NANDストリング内のメモリセルの数をいかなる特定の数にも限定しない。一実施形態は、66個のメモリセルを備えたNANDストリングを使用する。66個のメモリセルのうち、64個のメモリセルはデータを記憶し、メモリセルの2個はデータを記憶しないためダミーメモリセルとされる。NAND構造を用いたフラッシュメモリシステムの一般的なアーキテクチャは、いくつかのNANDストリングを含んでいる。各NANDストリングは、ソース選択ゲートによって共通ソースラインに接続されているとともに、ドレイン選択ゲートによって関連するビットラインに接続されている。ここで、ソース選択ゲートは、選択ラインSGSによって制御され、ドレイン選択ゲートは、選択ラインSGDによって制御されている。各ビットラインと、そのビットラインにビットラインコンタクトを介して接続されているそれぞれのNANDストリングとが、メモリセルアレイの列を構成する。ビットラインは、複数のNANDストリングによって共有されている。典型的には、ビットラインは、ワードラインと直交する方向でNANDストリングの最上部を通っており、1のセンスアンプと接続されている。NANDタイプのフラッシュメモリおよびそれらの動作に関連する例は、以下の米国特許/特許出願に記載されており、それらの文献は、その全体が参照により本明細書に組み込まれる。米国特許第5,570,315号、米国特許第5,774,397号、米国特許第6,046,935号、米国特許第6,456,528号、及び、米国公開公報第US2003/0002348号。NANDフラッシュメモリに加えて、他のタイプの不揮発性記憶デバイスも使用されうる。例えば、不揮発性メモリデバイスは、電荷を蓄える誘電体層を採用するメモリセルからも製造される。前述の導電性フローティングゲート素子の代わりに、誘電体層が使用される。誘電体記憶素子を利用するこのようなメモリデバイスは、Eitan等のNROM:ANovelLocalizedTrapping,2-BitNonvolatileMemoryCell,IEEEElectronDeviceLetters,vol.21,no.11,November2000,pp.543-545に掲載されている。ONO誘電体層が、ソース-ドレイン間の拡散チャネルに広がる。1つのデータビットに対応する電荷はドレインに隣接する誘電体層に局在し、他のデータビットに対応する電荷はソースに隣接する誘電体層に局在する。米国特許第5,768,192号および米国特許第6,011,725号には、2つの二酸化ケイ素層の間に挟まれたトラッピング誘電体を有する不揮発性メモリセルが開示されている。マルチ状態データ記憶装置が、誘電体内の空間的に分離された電荷記憶領域のバイナリ状態を別々に読み出すことによって実現される。MONOSタイプの構造ベースの不揮発性記憶装置、TANOSタイプの構造ベースの不揮発性記憶装置、またはナノ結晶ベースの不揮発性記憶装置も採用されうる。他のタイプの不揮発性記憶装置も採用されうる。図3は、メモリセル例えば、NANDマルチ状態フラッシュメモリの1ページあるいは他の単位に対して同時に読み出しおよびプログラミングを行うためのリード/ライト回路を備える記憶デバイス210を示している。記憶デバイス210は、1つ以上のメモリダイ212又は1つ以上のメモリチップ212を有していてもよい。メモリダイあるいは集積回路212は、メモリセルの2次元又は3次元のアレイ200、制御回路220、及び、リード/ライト回路230Aと230Bを有する。一実施形態では、様々な周辺回路によるメモリアレイ200へのアクセスはアレイの両側で対称的に実装されており、これにより、各側のアクセスライン及び各側の回路の密度が半分に低減される。リード/ライト回路230A及び230Bは、複数のセンスブロック300を有しており、それらのセンスブロック300によって1ページのメモリセルを同時に読み出し又はプログラムすることができる。メモリアレイ200は、行デコーダ240Aと240Bを介したワードラインと、列デコーダ242Aと242Bを介したビットラインによってアドレス指定される。ワードラインとビットラインは、制御ラインの一例である。典型的な実施形態では、コントローラ244は、1つ以上のメモリダイ212のような同じメモリデバイス210例えば、取り外し可能なストレージカード又はパッケージ内に含まれる。命令及びデータは、ライン232を介してホストとコントローラ244の間で転送され、また、ライン234を介してコントローラと1つ以上のメモリダイ212の間で転送される。制御回路220は、リード/ライト回路230Aと230Bと協調して、メモリアレイ200に対してメモリ動作を実行する。制御回路220は、ステートマシン222、オンチップアドレスデコーダ224、電力制御モジュール226、及び、温度センサー228を有している。ステートマシン222は、メモリ動作のチップレベル制御を提供する。オンチップアドレスデコーダ224は、ホスト又はメモリコントローラによって用いられるアドレスと、デコーダ240A、240B、242A及び242Bによって用いられるハードウェアアドレスとの間にアドレスインターフェースを提供する。電力制御モジュール226は、メモリ動作中のワードライン及びビットラインに供給される電力及び電圧を制御する。一実施形態では、電力制御モジュール226は、供給電力より大きな電圧を作り出すことができる一つ以上のチャージポンプを有する。制御回路220は、アドレスラインADDRを、行デコーダ240Aおよび204Bと列デコーダ242Aおよび242Bとに提供する。列デコーダ242Aおよび242Bは、DataI/Oと標識された信号線を介してコントローラ244にデータを提供する。温度センサー228は、当技術分野で周知のアナログまたはディジタル温度センサーであってよい。一実施形態では、コントローラ244は、メモリチップ212とは異なるダイまたは集積回路で実施される。一部の実施形態では、コントローラ244は、ホストとインターフェースをとり、さらに制御回路220やデコーダともインターフェースをとる。一部の実施形態では、コントローラ244は、リード/ライト回路とインターフェースをとる。一実施形態では、制御回路220、電源制御回路226、デコーダ回路224、ステートマシン回路222、デコーダ回路242A、デコーダ回路242B、デコーダ回路240A、デコーダ回路240B、リード/ライト回路230A、リード/ライト回路230B、温度センサー228、および/またはコントローラ244の1つまたは任意の組み合わせは、1以上の管理回路と称されうる。1以上の管理回路は、本明細書に記載されるプロセスを実施する。図5Aは、メモリセルアレイ200の例示的な構造を示す。一実施形態においては、メモリセルのアレイは、数多くのブロックに例えば、ブロック0~1023に、あるいは、その他の量のブロックに分割される。フラッシュメモリシステムに一般的であるように、ブロックは消去の単位である。すなわち、各ブロックは共に消去される最小数のメモリセルを含む。他の消去の単位もまた、用いることができる。ブロックは、ビットライン例えば、ビットラインBL0~BL69623とワードラインWL0,WL1,WL2,WL3,と、を介してアクセス可能な、NANDストリングのセットを含む。図4は、直列接続されることでNANDストリングを形成している、4つのメモリセルを示している。各々のNANDストリングに4つのセルが含まれることが示されているが、4個よりも少ない、或いは、4個よりも多いメモリセルを有していてよい例えば、NANDストリングに、16個、32個、64個、128個やその他の数のメモリセルがあってもよい。各NANDストリングの一端は、選択ゲートドレインラインSGDに接続されているドレイン選択ゲートを介して対応するビットラインに接続されており、他端は、選択ゲートソースラインSGSに接続されているソース選択ゲートを介してソースラインに接続されている。各ブロックは、典型的に、多くのページに分割される。一実施形態では、ページがプログラミングの単位である。他の単位のプログラミングも採用されうる。1以上のデータページが典型的にメモリセルの1行に記憶される。例えば、1以上のデータページは、共通ワードラインに接続されたメモリセルに記憶されてもよい。ページは1以上のセクターを記憶しうる。セクターは、ユーザーデータおよびオーバーヘッドデータシステムデータとも呼ばれるを含む。ユーザーデータのセクターは、典型的に、磁気ディスクドライブのセクターのサイズに対応する512バイトである。8ページから、例えば、最大32、64、128またはそれ以上のページに及ぶ多くのページがブロックを形成する。また、種々のサイズのブロック、ページ、およびセクターが採用されうる。さらに、ブロックは、69,624本前後のビットラインを有しうる。図4は、センスモジュール480と呼ばれるコア部と共通部490とに分割された個々のセンスブロック300のブロック図である。一実施形態では、各ビットラインに対して個別のセンスモジュール480を用意し、複数のセンスモジュール480に対して一つの共通部490を用意してもよい。一例として、1個のセンスブロックは、1個の共通部490と8個のセンスモジュール480とを有している。グループ内の各センスモジュールは、データバス472を介して協働する共通部と通信する。さらなる詳細としては、その全体を参照することにより本明細書に組み込まれる米国特許出願公開公報2006/0140007号を参照されたい。センスモジュール480は、接続されたビットライン内の伝導電流が所定のレベルより高いか低いかを判定するセンス回路470を備えている。幾つかの実施形態では、センスモジュール480は、センスアンプと一般に呼ばれる回路を有する。センスモジュール480は、さらに、接続されたビットラインに電圧状態を設定するために用いられるビットラインラッチ482を有している。例えば、メモリセルをプログラミングから保護する目的で、ビットラインラッチ482内で所定の状態がラッチされることによって、接続されたビットラインを、プログラム禁止を指定する状態例えば、Vddに引き上げるプルする。共通部490は、プロセッサ492、複数のデータラッチ494、及び、複数のデータラッチ494とデータバス420との間を接続するI/Oインターフェース496を備えている。プロセッサ492は計算を実行する。例えば、その機能の1つは、検知されたメモリセル内に記憶されているデータを特定し、特定されたデータを複数のデータラッチ内に記憶することである。複数のデータラッチ494は、読み出し動作において、プロセッサ492によって特定されたデータビット群を記憶するために用いられる。複数のデータラッチ494は、プログラム動作において、データバス420から取り込んだデータビット群を記憶するためにも用いられる。取り込まれるデータビット群は、メモリ内に書き込む予定の書き込みデータライトデータを表す。I/Oインターフェース496は、データラッチ494とデータバス420の間のインターフェースを提供する。読み出し又は検知中には、システムの動作はステートマシン222の制御下にあり、ステートマシン222はアドレス指定されたセルへの種々の制御ゲート電圧の供給を電力制御226を用いて制御する。メモリに用意された様々なメモリ状態に対応する様々な既定制御ゲート電圧のステップを進む毎に、センスモジュール480はこれらの電圧の1つにトリップし、バス472を介してセンスモジュール480からプロセッサ492に出力が提供される。その時点で、プロセッサ492は、センスモジュールのトリッピングイベントと、ステートマシンから入力ライン493を介して印加された制御ゲート電圧についての情報によって、結果としてのメモリ状態を特定する。それから、プロセッサ492は、メモリ状態に対するバイナリ符号化を計算し、得られたデータビット群をデータラッチ494に格納する。コア部の別の実施形態では、ビットラインラッチ482は、センスモジュール480の出力をラッチするラッチ、及び、上記のようなビットラインラッチの二つの役割を持つ。いくつかの実装形態では複数のプロセッサ492を有することができる。一実施形態では、各プロセッサ492は出力ライン図5には示されていないを有し、各出力ラインは共にワイヤードOR配線論理和接続される。いくつかの実施形態では、出力ラインは、ワイヤードORラインに接続される前段階で反転される。この構成は、ワイヤードORの結果を受け取るステートマシンが、プログラムされる全てのビットがいつ所望のレベルに到達したかを判断できるので、プログラム処理の完了時点を判定するプログラム検証処理における素早い判定を可能にする。例えば、各ビットがその所望のレベルに到達すると、そのビット用の論理0がワイヤードORラインに送られる又はデータ1が反転される。全てのビットがデータ0を出力すると又はデータ1が反転されると、ステートマシンはプログラミング処理の完了を知る。各プロセッサが8個のセンスモジュールと通信する実施形態では、いくつかの実施形態においてステートマシンはワイヤードORラインを8回読み出す必要があってもよいし、あるいは、協働するビットラインの結果を蓄積するための論理をプロセッサ492に追加し、ステートマシンがワイヤードORラインを一度だけ読み出せば良いようにしてもよい。データラッチスタック494は、センスモジュールに対応するデータラッチのスタックを有する。一実施形態では、センスモジュール480毎に3個または4個、或いはその他の数のデータラッチが存在する。一実施形態では、ラッチはそれぞれ1ビットである。プログラム又は検証処理の間、プログラムされるべきデータはデータバス420から複数のデータラッチ494内に記憶される。検証処理の間、プロセッサ492は、所望のメモリ状態に対する検証メモリ状態を監視する。その2つが一致したとき、プロセッサ492は、プログラム禁止を指定する状態にビットラインを引き上げるプルするようにビットラインラッチ482を設定する。これにより、たとえプログラミングパルスがその制御ゲートに影響しても、ビットラインに接続したメモリセルがさらにプログラミングされないようにすることができる。他の実施形態では、プロセッサが最初にビットラインラッチ482をロードし、センス回路が検証処理中にそれに禁止値を設定する。いくつかの実装形態では、必須ではないがデータラッチはシフトレジスタとして実装され、内部に記憶されたパラレルデータをデータバス420用にシリアルデータに変換したり、その逆を行ったりする。好適な一実施形態では、メモリセルのリード/ライトブロックに対応する全てのデータラッチを相互にリンクしてブロックシフトレジスタを構成し、シリアル転送によってデータのブロックを入力または出力できるようにする。特に、リード/ライトモジュールの一群のデータラッチのそれぞれが、データバスへ或いはデータバスからデータを順に転送するようにリード/ライトモジュールのバンクを構成し、一群のデータラッチがあたかもリード/ライトブロック全体のシフトレジスタの一部であるかのようにしてもよい。検知動作、センスアンプについての、さらなる情報は、次の文献に記載されている。1米国特許出願公開公報第2004/0057287号、NonVolatileMemoryAndMethodWithReducedSourceLineBiasErrors、2004年3月25日発行、2米国特許出願公開公報第2004/0109357号、NonVolatileMemoryAndMethodwithImprovedSensing、2004年6月10日発行、3米国特許出願公開公報第20050169082号、4米国特許出願公開公報第2006/0221692号、タイトルはCompensatingforCouplingDuringReadOperationsofNonVolatileMemory、発明者JianChen、2005年4月5日出願、及び、5米国特許出願公開公報第2006/0158947号、タイトルはReferenceSenseAmplifierForNonVolatileMemory、発明者SiuLungChanおよびRaulAdrianCernea、2005年12月28日出願。これら5個の特許文献の全ては、その全体を参照することにより本明細書に組み込まれる。成功したプログラミング処理検証を含むの後に、メモリセルの閾値電圧は、プログラムされたメモリセルについての1つ以上の閾値電圧の分布の範囲内、または、消去されたメモリセルについての1つの閾値電圧の分布の範囲内のうち、どちらか適切な範囲内である必要がある。図6は、各メモリセルがデータの2ビットを記憶する場合の、メモリセルアレイについてのデータ状態に応じた閾値電圧分布の例を示している。しかしながら他の実施形態では、1メモリセル当り、データの2ビットよりも多いまたは少ないビットを用いることができる例:1メモリセル当りデータの3ビット、あるいは4ビット以上。図6は、消去されたメモリセルについての、第1の閾値電圧分布Eを示している。プログラムされたメモリセルについての3つの閾値電圧分布A、BおよびCも、示されている。一実施形態では、分布E内の閾値電圧は負であり、A、BおよびC分布内の閾値電圧は正である。図6のそれぞれの閾値電圧範囲は、データビットのセットの所定値に対応する。メモリセルにプログラミングされたデータとセルの閾値電圧レベルの特殊な関係は、セルのために採用されるデータ符号化方式に依存する。例えば、両方ともその全体を参照することにより本明細書に組み込まれる、米国特許第6,222,762号、及び、TrackingCellsForAMemorySystemと題する2003年7月13日出願の米国特許出願公表第20040255090号は、マルチ状態フラッシュメモリセルの多様なデータ符号化方式を説明する。一実施形態では、フローティングゲートの閾値電圧が誤ってその近傍の物理状態にシフトした場合に1ビットだけが影響を受けるように、データ値がグレーコード割り当てを使用して閾値電圧範囲に割り当てられる。一例は、閾値電圧範囲E状態Eに11を、閾値電圧範囲A状態Aに10を、閾値電圧範囲B状態Bに00を、及び閾値電圧範囲C状態Cに01を割り当てる。しかしながら、他の実施形態では、グレーコードは使用されない。図6では4つの状態が示されているが、本発明は、4つの状態より多い、又は、少ない構造を含む他のマルチ状態構造に使用することもできる。また、図6は、データをメモリセルから読み出すための3つの読み出し基準電圧Vra、Vrb、およびVrc読み出し比較レベル/値とも呼ばれるを示す。所与のメモリセルの閾値電圧がVra、Vrb、およびVrc以上であるかそれとも以下であるかを試験することによって、システムはメモリセルがどの状態にあるかを判断することができる。例えば、メモリセルがVraよりも小さい閾値電圧を有する場合、メモリセルは状態Eにあるものと見なされる。メモリセルがVrbも小さくかつVraよりも大きい閾値電圧を有する場合、メモリセルは状態Aにあるものと見なされる。メモリセルがVrcよりも小さくかつVrbよりも大きい閾値電圧を有する場合、メモリセルは状態Bにあるものと見なされる。メモリセルがVrcよりも大きい閾値電圧を有する場合、メモリセルは状態Cにあるものと見なされる。図6は、3つの検証参照電圧Vva、Vvb、及び、Vvc検証比較値/レベルとも呼ばれるを示している。メモリセルを状態Aにプログラミングするとき、システムは、それらのメモリセルがVva以上の閾値電圧を有するかどうかをテストする。メモリセルを状態Bにプログラミングするとき、システムは、メモリセルがVvb以上の閾値電圧を有するかどうかをテストする。メモリセルを状態Cにプログラミングするとき、システムは、メモリセルがVvc以上の閾値電圧を有するかどうかをテストする。全シーケンスプログラミングとして知られる一実施形態では、メモリセルは消去状態Eからプログラム状態A、B、またはCのいずれかに直接プログラムされうる。例えば、プログラムされるべきメモリセルの母集団は、母集団内のすべてのメモリセルが消去状態Eにあるようにするために、まず消去されてよい。この後、メモリセルを状態A、B、またはCに直接プログラムするためにプログラミングプロセスが採用される。一部のメモリセルが状態Eから状態Aにプログラムされている間に、他のメモリセルは状態Eから状態Bおよび/または状態Eから状態Cにプログラムされている。図7は、2つの異なるページ下位ページと上位ページに対してデータを記憶するマルチ状態メモリセルにプログラムする、2パス技術の一例を示している。状態E11、状態A10、状態B00及び状態C01の4つの状態が示されている。状態Eの場合、両方のページが1を記憶する。状態Aの場合、下位ページが0を記憶し、上位ページが1を記憶する。状態Bの場合、両方のページが0を記憶する。状態Cの場合、下位ページが1を記憶し、上位ページが0を記憶する。なお、各状態に対して特定のビットパターンが割り当てられているが、異なるビットパターンを割り当てることも可能である。第1プログラミングパスでは、メモリセルの閾値電圧レベルは下位の論理ページにプログラムされるビットに従って設定される。そのビットが論理1であれば、各々のメモリセルは、以前に消去された結果として適切な状態にあるので閾値電圧は変更されない。しかし、プログラムされるデータビットが論理0であれば、矢印504で示したように、セルの閾値レベルは状態Aになるように増大される。第2プログラミングパスでは、メモリセルの閾値電圧レベルは上位論理ページ内にプログラムされるビットに従って設定される。上位論理ページビットが論理1を記憶する場合、セルは下位ページビットのプログラミングに依存する状態E又はAの一方であり、どちらも上位ページビットは1を保持するのでプログラミングは生じない。上位ページビットが論理0となる場合、閾値電圧はシフトされる。第1パスによってメモリセルが消去状態Eに留まっていれば第2段階でメモリセルをプログラムし、矢印502で示したように閾値電圧が状態C内になるように増大させる。第1プログラミングパスの結果としてメモリセルが状態A内にプログラムされれば、メモリセルはさらに第2パスでプログラムされ、矢印506で示したように閾値電圧が状態B内になるように増大させる。第2パスの結果は、下位ページ用のデータを変更することなく、上位ページの論理0を記憶するように指定した状態にメモリセルをプログラムすることである。一実施形態では、1ページ全体を充填するのに十分なデータを書き込まれた場合、システムは全シーケンス書き込みを実行するように設定される。十分ではないデータが1ページ全体に書き込まれる場合、プログラミング処理は、受け取ったデータを用いて下位ページをプログラムすることができる。次のデータを受け取ったときは、システムは上位ページをプログラミングする。さらに別の実施形態では、システムは下位ページをプログラムするモードで書き込みを開始することができ、次に、ワードラインのメモリセルの全体又は大部分を充填するために十分なデータを受け取った場合、全シーケンスプログラミングモードに変換する。このような実施形態のさらなる詳細は、米国特許出願第20060126390号に開示されている。その全体は参照することによって本明細書に組み込まれる。図8A~Cは、不揮発性メモリをプログラムする別の多段階プログラミングプロセスを説明する。図8A~Cのプロセスは、ある特定のメモリセルに対して、特定ページに関するその特定メモリセルへの書込みによってフローティングゲート間結合を抑制する。その書き込みは、前ページの隣接メモリセルへの書込みの次にある。図8A~Cによって教示されるプロセスの実施形態の一例では、不揮発性メモリセルは、4つのデータ状態を用いてメモリセル当たり2ビットのデータを記憶する。例えば、状態Eは消去状態であり、状態A、B、およびCはプログラム状態であると仮定する。図9は状態と記憶されるデータとの関係の一例を示す。状態Eはデータ11を記憶する。状態Aはデータ01を記憶する。状態Bはデータ00を記憶する。状態Cはデータ10を記憶する。これはグレーコーディングの例である。また、物理データ状態への他のデータ符号化も採用されうる。各メモリセルは2ページのデータを記憶する。参考のために、これらのページのデータは上位ページおよび下位ページと呼ばれるが、これらは他のラベルを与えられうる。図8A~Cのプロセスに対する状態Aを参照すると、上位ページはデータ0を記憶し、下位ページはデータ1を記憶する。状態Bを参照すると、いずれのページもデータ0を記憶する。状態Cを参照すると、下位ページはデータ0を記憶し、上位ページは1を記憶する。図8A~Cのプログラミングプロセスは2パスプログラミングプロセスであるが、図8A~Cのプロセスは3パスプロセス、4パスプロセスなどを実施するために使用されうる。第1段階では、下位ページがプログラムされる。下位ページがデータ1のままでなければならない場合、メモリセル状態は状態Eに保たれる。データが0にプログラムされなければならない場合、メモリセルが状態B’にプログラムされるようにメモリセルの電圧の閾値が上昇される。したがって、図8Aは、状態Eから状態B’へのメモリセルのプログラミングを示す。図8Aに示される状態B’は中間状態Bであり、したがって、検証点はVvbよりも低いVvb’として示される。一実施形態では、メモリセルが状態Eから状態B’にプログラムされた後、NANDストリングのワードラインWLn1の隣接メモリセルが、その下位ページについてプログラムされることになる。隣接メモリセルのプログラミング後、フローティングゲート間結合の影響により、以前にプログラムされたメモリセルの見かけ閾値電圧を上昇させる場合がある。これは、状態B’に対する閾値電圧分布を図8Bの閾値電圧分布520として示された閾値電圧分布に拡大する効果を有することになる。この見かけ閾値電圧分布の拡大は、上位ページをプログラムするときに修正されることになる。図8Cは、上位ページをプログラムするプロセスを示す。メモリセルが消去状態Eにありかつ上位ページが1のままでなければならない場合、メモリセルは状態Eのままになる。メモリセルが状態Eにありかつその上位ページデータが0にプログラムされなければならない場合、メモリセルの閾値電圧はメモリセルが状態Aにあるように上昇されることになる。メモリセルが中間閾値電圧分布520にありかつ上位ページデータが1のままでなければならない場合、メモリセルは最終状態Cにプログラムされることになる。メモリセルが中間閾値電圧分布520にありかつ上位ページデータがデータ0にならなければならない場合、メモリセルは状態Bになる。所与のメモリセルの見かけ閾値電圧に影響を及ぼすのは隣接メモリセルの上位ページプログラミングのみであるので、図8A~Cで示されるプロセスはフローティングゲート間結合の影響を抑制する。図8A~Cは4つのデータ状態と2ページのデータに関する例を示しているが、図8A~Cによって教示される概念は4つ前後の状態と2ページとは異なる他の実施形態に適用されうる。図8A~Cのプログラミングプロセスに関するさらなる詳細が、米国特許第7,196,928号明細書に見られ、参照によって本明細書に組み込まれる。図10A~Dは、共通ワードラインに接続されたメモリセルをプログラムする別のマルチ状態プログラミングプロセスを示しており、当該プロセスは、図8A~Cのプロセスと同様に採用されうる。図10A~Dのプロセスの第1段階は、閾値電圧分布BおよびCから図10Aの閾値電圧分布530で示されるような中間閾値電圧分布B’までを対象とする第1のプログラミングメモリセルを含む。この第1の段階は、この後、隣接するワードラインで実施され、隣接するワードラインは隣接するフローティングゲートからの結合によって中間閾値電圧分布を拡大させる図10B参照。第2のプログラミング段階は、閾値電圧分布B’から閾値電圧分布Cまでを対象とするメモリセルのプログラミングを含む図10C参照。プログラミングプロセスの第3の段階は、分布Eから分布Aにメモリセルをプログラムするステップと、および分布B’から分布Bにメモリセルをプログラムするステップとを含む図10D参照。図11は、図3のシステムまたは他のシステムなど、不揮発性メモリを動作させるプロセスの一実施形態を説明するフローチャートである。ステップ600において、データをプログラムする要求が受け取られる。要求は、ホスト、別のデバイス、またはコントローラから受け取られうる。要求は、コントローラ、制御回路、ステートマシン、またはその他のデバイスで受け取られてもよい。要求に応じて、コントローラ、制御回路、ステートマシン、またはその他のデバイスは、ステップ602において、データの記憶に使用されるフラッシュメモリセルのブロックを決定することになる。データは、ステップ604において、前述のプログラミングプロセスまたは他のプログラミングプロセスのいずれかを用いて決定されたブロックにプログラムされることになる。プログラムされたデータは、ステップ606において、1回以上読み出されることになる。各ステップの間に予測不可能な時間が経過し得るのでステップ604と606との間は破線であり、ステップ606はステップ604に応じて実施されない。むしろ、ステップ606はデータまたはその他の事象を読み出す要求に応じて実施される。図12は、ブロック内のメモリセルをプログラムするプログラミングプロセスを説明するフローチャートである。図12のプロセスは、図11のステップ604の一実施形態である。ステップ632において、メモリセルはプログラミングに先立ってブロックなどの単位で消去される。メモリセルは、一実施形態において、pウエルを消去電圧例えば、20Vまで十分な時間上昇させ、ソースおよびビットラインがフローティング状態の間に選択ブロックのワードラインをグラウンドに接続することによって消去される。それゆえ、強力な電場が選択メモリセルのトンネル酸化物層に印加され、選択メモリセルは、フローティングゲートの電子が典型的にFowler-Nordheimトンネリング機構によって基板側に放射されると消去される。電子がフローティングゲートからpウエル領域に移動されると、選択メモリセルの閾値電圧が低下される。消去は、メモリアレイ全体、個々のブロック、またはセルの別の単位で実施されうる。他の消去方法も採用されうる。ステップ634において、消去されたメモリセルの閾値電圧分布を狭めるためにソフトプログラミングが実施される。一部のメモリセルは、消去プロセスの結果として必要以上に深い消去状態にある可能性がある。ソフトプログラミングでは、深く消去されたメモリセルの閾値電圧を消去状態に対してなお有効範囲にある高い閾値電圧に移動させるためにプログラミングパルスを印加することができる。ステップ636において、ブロックのメモリセルは、本明細書に記載のようにプログラムされる。図12のプロセスは、前述の様々な回路を用いて、ステートマシン、コントローラ、またはステートマシンおよびコントローラの組み合わせの指示の下で実施されうる。例えば、コントローラは、データをプログラムするために、ステートマシンに対してコマンドおよびデータを発行してもよい。それに応じて、ステートマシンはプログラミング動作を実行するために前述の回路を動作させてもよい。図13は、共通ワードラインに接続されたメモリセルのプログラミングを実施するプロセスの一実施形態を説明するフローチャートである。図13のプロセスは、図12のステップ636の間に1回以上実施されうる。例えば、図13のプロセスは、メモリセルを状態Eから状態A、B、またはCのいずれかに直接プログラム例えば、全シーケンスプログラミングするために採用されうる。あるいは、図13のプロセスは、図7、図8A~C、図10A~Dのプロセス、またはその他のプログラミング方式のプロセスの1つまたは各々を実施するために採用されうる。例えば、図8A~Cのプロセスを実施するとき、図13のプロセスは、メモリセルの一部を状態Eから状態B’にプログラムするステップを含む第1の段階を実施するために採用されうる。図13のプロセスは、この後、メモリセルの一部を状態Eから状態Aにプログラムするステップと、状態B’から状態BおよびCにプログラムするステップと、を含む第2の段階をさらに実施するために再び採用されうる。図13のステップ768において、現在の温度が温度センサー228を用いて検知される。その温度読取り値は、メモリアレイなどの不揮発性記憶装置に記憶される。一部の実施形態では、温度読取り値は記憶のためにコントローラによって直ちにコントローラ244に送られる。一部の実施形態では、温度はメモリ回路例えば、コントローラ、ホスト、またはその他の場所に存在しないセンサーによって検知されうる。典型的に、プログラム動作中に制御ゲートに印加されるプログラム電圧は、一連のプログラムパルスとして印加される。プログラミングパルス間には検証を実施するための1以上の検証パルスがある。多くの実施形態では、プログラムパルスの大きさは、連続するパルスごとに所定のステップサイズだけ増加される。図13のステップ770において、プログラミング電圧Vpgmは開始時の大きさ例えば、~12~16Vまたは別の適当なレベルに初期化され、ステートマシン222によって維持されるプログラムカウンタPCは1で初期化される。ステップ772において、プログラム信号Vpgmのプログラムパルスは、選択ワードラインプログラミングのために選択されたワードラインに印加される。一実施形態では、プログラムされているメモリセルのグループは、すべて同じワードライン選択ワードラインに接続される。非選択ワードラインは、当技術分野で周知のブースティング方式を実施するために1以上のブースティング電圧例えば、~9Vを受け取る。一実施形態では、メモリセルがプログラムされるべきであれば、対応するビットラインがグランドに接続される。一方、メモリセルがその現在の閾値電圧に保たれるべきであれば、対応するビットラインはプログラミングを阻止するためにVddに接続される。ステップ772において、選択ワードラインに接続されたメモリセルのすべてが同時にプログラムされるように、プログラムパルスは、選択ワードラインに接続されたすべてのメモリセルに同時に印加される。すなわち、メモリセルは同時にすなわち、時間的に重なり合ってプログラムされる。このように、選択ワードラインに接続されたメモリセルのすべては、プログラミングからロックアウトされていない限り、同時に閾値電圧変化を有することになる。ステップ774において、適切なメモリセルは、1以上の検証動作を実施するために、適切な目標レベルを使用して検証される。メモリセルは、その目標レベルに達していることが検証されると、さらなるプログラミングからロックアウトされる。メモリセルをさらなるプログラミングからロックアウトする一実施形態では、対応するビットライン電圧を、例えば、Vddに上昇させるべきである。ステップ776において、すべてのメモリセルがそれらの目標閾値電圧に達しているかどうかが判断される。すべてのメモリセルがそれらの目標閾値電圧に達していれば、すべての選択メモリセルがそれらの目標状態にプログラムされて検証されているのでプログラミングプロセスは終了し成功している。PASSのステータスがステップ778において報告される。ステップ776においてメモリセルのすべてがそれらの目標閾値電圧に達しているわけではないと判断されれば、プログラミングプロセスはステップ780に進む。ステップ780において、システムは、それぞれの目標閾値電圧分布にまだ達していないメモリセルの数を計数する。すなわち、システムは、検証プロセスに不合格になったセルの数を計数する。この計数は、ステートマシン、コントローラ、またはその他の論理によって行なわれうる。一実施形態では、センスブロック300図3参照の各々が各自のセルのステータス合否を記憶することになる。これらの値は、デジタルカウンタを用いて計数されうる。前述のように、センスブロックの多くは一緒にワイヤードOR接続される出力信号を有する。それゆえ、1本のラインをチェックすると、セルの大きなグループの中にある、どのセルも検証に不合格になっていないことを示すことができる。一緒にワイヤードOR接続されている例えば、バイナリ樹状構造ラインを適切に構成することによって、不合格になっているセルの数を判断するためにバイナリサーチ法が採用されうる。このようにして、少数のセルが不合格であった場合は計数が短時間で終了する。多数のセルが不合格であった場合は計数に長い時間を要する。米国特許公開2008/0126676号にはさらに多くの情報が見られ、参照によってその全体が本明細書に組み込まれる。別の代替手段では、その対応するメモリセルが不合格になり、アナログ電圧または電流加算回路が、不合格となったメモリセルの数を計数するために採用されうる場合に、センスアンプの各々はアナログ電圧または電流を出力することができる。一実施形態では、最終検証ステップに不合格となった現在プログラムされているメモリセルの総数を反映する1つの総数が計数される。別の実施形態では、各データ状態に対して別々の計数が保存される。ステップ782において、ステップ780からの計数が所定の制限値以下であるかどうかが判断される。一実施形態では、所定の制限値はメモリセルのページに対する読み出しプロセス中にECCによって訂正されうるビット数である。不合格セルの数が所定の制限値以下であれば、プログラミングプロセスを停止することができ、PASSのステータスがステップ778において報告される。この状況では、十分なメモリセルが正しくプログラムされており、完全にプログラムされていない、残るわずかなメモリセルが読み出しプロセス中にECCを用いて訂正され得る。一部の実施形態では、ステップ780において、各セクター、各目標データ状態などの単位で不合格セルの数が計数され、これらの計数はステップ782において個別または集合的に閾値と比較されることになる。別の実施形態では、将来のエラーを見込んで、所定の制限値は、読み出しプロセス中にECCによって訂正されうるビット数未満であってもよい。ページに対して全数未満のメモリセルをプログラムするとき、あるいは唯一のデータ状態または全状態未満の状態の計数を比較するとき、所定の制限値はメモリセルのページに対して読み出しプロセス中にECCによって訂正されうるビット数の一部案分または非案分であってもよい。一部の実施形態では、制限値は事前に決定されない。代わりに、制限値は、ページに対して既に計数されたエラーの数、実施されたプログラム-消去サイクルの数、温度などの基準に応じて変化する。不合格セルの数が少なくとも所定の制限値であれば、プログラミングプロセスはステップ784に進み、プログラムカウンタPCはプログラム制限値PLと照合される。プログラム制限値の一例は20であるが、他の値も採用されうる。プログラムカウンタPCがプログラム制限値PL未満でなければ、プログラムプロセスは不合格であったものと考えられ、ステップ788においてFAILのステータスが報告される。プログラムカウンタPCがプログラム制限値PL未満であれば、プロセスはステップ786に進み、その間にプログラムカウンタPCは1だけインクリメントされ、プログラム電圧Vpgmは次の大きさにステップアップされる。例えば、次のパルスは前のパルスよりもステップサイズ例えば、0.1~0.4Vのステップサイズだけ大きくなる。ステップ786の後、プロセスはステップ772にループバックして、別のプログラムパルスが選択ワードラインに印加される。検証動作例えば、ステップ774および読み出し動作の間に、選択ワードラインは電圧に接続され、関連メモリセルの閾値電圧が所定レベルに達しているかどうかを判断するために電圧のレベルは各読み出し動作例えば、Vra、Vrb、およびVrcまたは検証動作例えば、Vva、Vvb、およびVvcについて指定される。ワードライン電圧を印加した後、メモリセルの伝導電流が測定されてメモリセルが、ワードラインに印加された電圧に応じてターンオンしたかどうかが判断される。一定値よりも大きい伝導電流が測定されると、メモリセルがターンオンしており、ワードラインに印加された電圧がメモリセルの閾値電圧よりも大きいものと見なされる。一定値よりも大きい伝導電流が測定されなければ、メモリセルはターンオンしておらず、ワードラインに印加された電圧がメモリセルの閾値電圧よりも大きくないものと見なされる。読み出し動作中または検証動作中にメモリセルの伝導電流を測定する方法は多数ある。一例では、メモリセルの伝導電流は、センスアンプ内の専用コンデンサを充放電する速度によって測定される。別の例では、選択メモリセルの伝導電流によって、このメモリセルを含むNANDストリングは、対応するビットラインを放電させるまたは放電させないことができる。ビットラインの電圧は、これが放電されているかどうかを調べるためにしばらくしてから測定される。なお、本明細書で説明する技術は、検証/読み出しに関する当技術分野で周知の種々の方法とともに採用されうる。検証/読み出しに関するさらなる情報は、特許文献1米国特許出願公開第2004/0057287号、2米国特許出願公開第2004/0109357号、3米国特許出願公開第2005/0169082号、および4米国特許出願公開第2006/0221692号に見られ、その全体が参照によって本明細書に組み込まれる。前述の消去、読み出し、および検証動作は、当技術分野で周知の方法によって実施される。それゆえ、説明される詳細の多くは、当業者によって変更されうる。当技術分野で周知の他の消去、読み出し、および検証方法も採用されうる。プログラミングの終了後、メモリセルは、図6~10によって示されるように、1以上の閾値電圧分布をしていることになる。この時点で、データは読み出しが可能である。多くの場合、データは、これがプログラムされた時期よりもかなり後で読み出されうる。場合によっては、プログラミング中のメモリシステムの温度は、読み出し動作を実施している間の温度と同じでない可能性がある。この温度変化は、読み出し動作にエラーを導入し、性能に影響を与えかねない。集積回路が種々の温度範囲で異なった働きをすることは周知である。従前のメモリシステムでは、読み出し/検証比較レベル、ビットライン電流、センスアンプ、選択ゲートの制御ゲート電圧、および温度に基づくボディバイアス条件を調整することによって必ず温度補償をする。プログラミングの時点と読み出しの時点との間に著しい温度変化がある場合、読み出しプロセスは失敗する可能性があることが観測されている。温度が上昇すると、閾値電圧分布は下方にシフトする傾向がある。また、高い状態例えば、C状態は低い状態例えば、A状態よりも多く下方にシフトすることが観測されている。データ状態が、互いに近い、あるいは部分的に重なるメモリシステムの場合、温度変化に対する前述の対策は、プログラミング時点と読み出し時点との温度差に対応した閾値電圧分布の拡大を明らかにする十分な働きをしない可能性がある。本発明者らは、プログラミングが実施された時点と読み出しが実施された時点との間の温度変化に応じた閾値電圧の様々な拡大の1つの原因は、隣接するメモリセルが目標メモリセルに与える影響によるものであることを観測している。すなわち、隣接するメモリセルのデータ状態は、目標メモリセルのTCOに影響を及ぼすことになる。目標メモリセルに影響を与える隣接するメモリセルは、同じワードライン上の目標メモリセルの隣のメモリセル、または同じビットライン上の目標メモリセルの隣のメモリセルを含む。さらに、隣接するメモリセルは目標メモリセルに対して斜めになっている場合もある例えば、1本のビットラインおよび1本のワードラインを横切って。したがって、メモリシステムはメモリがプログラムされた時点とメモリが読み出された時点との間の温度差に基づいて温度補償を提供する決定をすることが提案される。提供される温度補償では、温度データと、隣接するメモリセルのデータ状態と、を考慮に入れることになる。図14は、温度データと、隣接するメモリセルのデータ状態とに基づいて温度補償を実施する読み出しプロセスを説明するフローチャートである。図14の処理は、読み出しデータに対するホストからの要求に応じて、あるいは読み出しデータに関する内部プロセスの一部として実施されうる。図14のステップ800において、システムは温度データを決定することになる。一実施形態では、システムは現在の温度を読み取ることになる。一実施形態では、コントローラ244、ステートマシン222などの回路と通信している温度センサーがある。別の実施形態では、メモリチップ上の温度センサー228がステートマシン222、コントローラ244、または別の回路に温度データを提供するために採用される。別の実施形態では、コントローラ244はオンボード温度センサーを含む。別の実施形態では、ホストは温度データをコントローラ244に提供する。現在の温度を得るための特別な手段は必要でない。また、ステップ800は、データがプログラムされたときに、メモリシステムの温度を含む過去の温度データを得るステップを含みうる。ステップ802において、システムは、適切な温度補償を決定して、適用することになる。ステップ802は、当技術分野で周知の標準温度補償である。例えば、読み出し比較レベル、センス電流、センスアンプ性能、およびその他の動作条件は、現在の温度、または現在の温度とデータをプログラムするときに存在した温度との差に基づいて変更されうる。ステップ802において決定され、適用される温度補償では、隣接セル状態情報が考慮されない。ステップ804において、システムは隣接セル状態情報を得ることになる。例えば、図4を振り返って、読み出されるべき目標メモリセルはメモリセル312であると仮定する。同じワードライン上の隣接メモリセルの2つの例は、メモリセル314および316である。同じビットラインにある隣接セルも、隣接メモリセルであるとしてよい。図14のステップ804は、メモリセル314および/または316ならびにメモリセル312と同じビットライン上にある他のメモリセルの状態例えば、E、A、B、またはCを決定するステップを含む。ステップ806において、システムは、ステップ804において得られた隣接セル状態情報と温度データとに基づく追加温度補償を決定することになる。ステップ806のさらなる詳細を以下で示す。ステップ808において、ステップ806において決定された温度補償は、ステップ808における読み出しプロセスに適用される。ステップ808のさらなる詳細を以下で示す。ステップ810において、目標メモリセルがステップ802、806、および808で前述した補償を含む読み出し動作を用いて検知される。ステップ812において、目標メモリセルで検知されたデータが報告される。ステップ812の例は、データをコントローラ244に報告するステップ、コントローラ244からのデータをホストに報告するステップ、あるいはデータをユーザーに提示するステップを含む。なお、ステップの順序は図14に示した順序とは変わっていてもよい。ステップの多くは、異なる順序で実施されてもよく、同時に実施されてもよい。例えば、ステップ810の目標メモリセルを検知する前、目標メモリセルを検知する間、または目標メモリセルを検知した後に、2組の温度補償ステップ802およびステップ808が実施されてもよい。さらに、2つのタイプの温度補償が組み合わされてもよく、ステップ802の補償を省いてステップ808の補償のみが採用されてもよい。図15は、図14のプロセスの1つの実施形態例を説明するフローチャートである。この例では、コントローラ244はプログラミングの時点と読み出しの時点との温度差に基づいて温度補償を提供する決定をすることになる。コントローラが温度補償を必要であると判断する場合、補償の量は目標メモリセルの隣接セルのデータ状態に基づくことになる。一部の実施形態では、温度補償はやはりプログラミングの時点の温度と、読み出しの時点または現在の温度との温度差に基づいている。図15に関して後述する例では、温度はメモリチップ212内の温度センサー228によって検知され、補償はコントローラ244の指示で提供される。しかしながら、他の実施形態では、図15のプロセスは、温度がメモリチップ上で測定されない実施形態において採用されうるが、温度に依存するメカニズムを補償するために、メモリシステム内の他の部品やメモリシステム外の別の部品によって測定される。例えば、データを記憶するためのフラッシュメモリなどの不揮発性記憶装置を使用する半導体ディスクドライブSSDを採用するシステムでは、温度は、ホストなどのSSD外部の部品から得られてもよい。SSDのコントローラでは、本明細書で開示されるように、温度の影響を補償するための温度情報を利用することができる。温度情報の由来は問題でない。メモリシステムは、追加温度補償を提供するために隣接セルのデータ状態を使用する。これによって、メモリシステムは、エラーを防止および/または訂正するために、データがプログラムされた時点とデータが読み出された時点との温度差による閾値電圧の拡大およびシフトを明らかにすることができる。図15のステップ850において、コントローラ244は、ホストからデータを読み出すための要求を受け取る。一実施形態では、ステップ850は実施されず、図15のプロセスは内部読み出しプロセスの一部として実施される例えば、レベリング、ガベージコレクションなどのために。ステップ852において、コントローラ244は温度データを温度センサー228に要求する。一実施形態では、コントローラ244はこの要求をステートマシン222、または制御回路220の別の部分に伝達し、ステートマシン222、または制御回路220の別の部分は温度データを温度センサー228から得ることになる。ステップ854において、メモリチップ212は、温度センサー228を用いて現在の温度を検知することになる。ステップ856において、温度データは制御回路220からコントローラ244に転送される。ステップ858において、コントローラ244は、現在の温度に基づいて、読み出しパラメータまたは他の動作パラメータのいずれかを調整するかどうかを判断する。調整すると判断すれば、ステップ860において、読み出しパラメータに対する調整が現在の温度に基づいて行なわれる。ステップ860において行なわれる調整は、読み出し比較レベルの変更、センス電流の変更、センスアンプの動作の変更、ボディバイアス条件の変更など、当技術分野で周知のものである。調整の別の例は、スキャンされているメモリセルの母集団全体に対する閾値電圧分布全体を近似するデータを得るためにワードライン上のすべてのメモリセルまたはメモリセルの他の単位のスキャンを実施することであってもよい。これらの分布から、システムは最大点の間の最小点を特定することができる。これらの最小点は新たな読み出し比較レベルを定めるために使用される。一部の実施形態では、ステップ852~860がメモリ212によって自動的に実施されうる。ステップ860の後、コントローラ244は、読み出されているデータが最初にプログラムされた時点からの温度データを得ることになる。一部の実施形態では、プログラミング温度が例えば同じワードライン上の余分なセルに記憶される場合に、プログラミング中の温度情報がステップ868の検知動作の一部として得られる可能性がある。ステップ858において、コントローラ244がパラメータを調整しないと決定すると、プロセスはステップ860をスキップしてステップ862に直接進み、プログラミングの時点の温度データを得る。一実施形態では、温度センサー228は、プログラミングの温度データと、メモリ200などの不揮発性記憶デバイスにおける他の動作とを記憶することになる。ステップ862において、コントローラ244は読み出されているデータを特定することができ、制御回路220はデータがプログラムされたときと関係のある温度データに関する以前に記憶された温度データを得ることになる。その温度情報は、ステップ862の一部としてコントローラ244に送られる。ステップ864において、コントローラ244は、温度変化に基づいて読み出しパラメータまたは他の操作パラメータを調整することになる。例えば、ステップ856において、コントローラ244は現在の温度を受け取る。ステップ862において、コントローラ244はプログラミングの時点における温度を受け取る。それゆえ、2つの温度を差し引く例えば、現在の温度-過去の温度ことによって、コントローラ244はプログラミングの時点と読み出しの時点現在は読み出しの時点であるものとしてとの温度差を知る。その温度差が閾値よりも大きければ、ステップ866において、コントローラ244はその温度例えば、現在の温度または温度差に基づいて温度補償を提供する決定をしてもよい。ステップ866において提供される温度補償は、隣接セルの状態データに基づかない温度補償であり、どちらかといえば従来型の温度補償である。なお、ステップ864において、コントローラ244が温度補償を提供しないと決定すれば、プロセスはステップ866をスキップして直接ステップ868に進む。ステップ868において、コントローラ244は、目標メモリセルで1以上の検知動作を実施することになる。ステップ850の読み出し要求は、複数のメモリセル、例えば、ワードライン上のメモリセルのすべてまたは部分集合または複数のワードラインに接続されたメモリセルのすべてまたは部分集合からデータを要求することになる可能性が高い。目標メモリセルに対する最初の組のデータを得るために様々な検知動作が実施される。また、ステップ868は、目標メモリセルに対する隣接メモリセルの検知動作を実施するステップを含む。一実施形態では、隣接メモリセルが同じワードライン上のメモリセルであるとき、同じワードラインのすべてのメモリセルに対して検知動作を実施する当該実施により目標メモリセルに対するデータを得るステップでは隣接メモリセルに対するデータも得られる。場合によっては、この目標メモリセルは、目標メモリセルの各々に対する隣接メモリセルを含んでいてもよい。一部の実施形態では、ステップ868において検知されたデータは、後述する温度補償で調整されていない初期データである。一部の実施形態では、プログラミング温度が、例えば、同じワードライン上の余分なメモリセルに記憶される場合、プログラミング中の温度情報はステップ868の検知動作の一部として得られてもよい。ステップ870において、検知動作からの初期情報はメモリチップ212からコントローラ244に転送される。ステップ872では、コントローラは、隣接セル状態情報および/または温度情報に基づく温度補償を用いて、最終データの読み出しを決定する。ステップ872のさらなる詳細を以下に示す。ステップ874において、コントローラ244はデータを報告する図14のステップ812参照。なお、図15の上述の議論において、温度補償はステップ860、ステップ866、およびステップ872の3回実施される。他の実施形態では、温度補償は、1回のみステップ872または2回ステップ872と、ステップ860またはステップ866のいずれか実施される。前述のように、プログラムされて読み出されたデータは、エラーを有する場合がある。これらのエラーを修復するために、システムはプログラミング中にエラー訂正符号でデータを符号化し、読み出しプロセス中にデータを復号化するECCプロセスを採用する。図16は、一実施形態に従って採用されうる不揮発性記憶装置に対してデータを符号化し復号化するシステムを示す。不揮発性メモリアレイにおける誤ったデータや破損したデータの読み出しを検出して訂正するためにエラー訂正制御が採用される。一般的に、一部の追加ECCまたはパリティビットが入力データから計算され符号化方式に従ってメモリアレイに記憶される。読み出しの際、入力データおよびECCビットがともに読み出され、デコーダではこれら両方を使用してエラーが存在するかどうかと、場合によってはエラーがどのビットで発生しているかと、が検出される。図16のエラー訂正制御システムは、一実施形態においてコントローラ244の一部として実装されうるが、種々のシステムおよびアーキテクチャが採用されうる。図16のシステムは、エンコーダ880、不揮発性記憶装置882例えば、メモリアレイ200、LLR対数尤度比表884、およびデコーダ886を含む。エンコーダ880は、不揮発性記憶装置882に記憶されるべき、情報ビットとも称されるユーザーデータを受け取る。情報ビットは、マトリクスi=[10]で表わされるなお、2ビットは単なる例として採用されるもので、多くの実施形態では2ビットよりも長い符号語を有する。エンコーダ802は、このプロセスでは、2パリティビットがデータビットに追加されていることを示すマトリクスまたは符号語v=[1010]によって表わされたデータを提供するために情報ビットにパリティビットが追加されるエラー訂正符号化プロセスを実施する。入力データをより複雑な方法で出力データにマッピングする、以下で議論するような他の方法が採用されうる。Gallagerコードとも称される低密度パリティチェックLDPCコードが採用されうる。実際には、このようなコードは、典型的に、多数の記憶要素にわたって符号化される複数ページに適用される。LDPCに関するさらなる情報がD.MacKay,InformationTheory,InferenceandLearningAlgorithms,CambridgeUniversityPress2003,chapter47に見られる。データビットは、この後、1組の不揮発性記憶素子の各不揮発性記憶素子を1以上のプログラムされた状態にプログラムすることによって、論理ページにマッピングされて不揮発性記憶装置882に記憶されうる。典型的に、符号語は多数のビットを有しており、多くのメモリセルに記憶される。符号語のビットの部分集合は、特定のメモリセルに記憶されることになる。1つの可能な実施形態では、エラー訂正復号化を実施する反復メッセージパッシング復号化プロセスが使用される。当該エラー訂正復号化は、エンコーダ880において実装された符号化によって提供された冗長ビットを採用している。反復メッセージパッシング復号化に関するさらなる詳細は、前述のD.MacKayの原本に見られる。反復確率的メッセージパッシング復号化では、符号語の各ビットに初期確率評価基準を割り当てることによって符号語を復号しようとする。確率評価基準は、各ビットの信頼性、すなわち、そのビットが誤っていない可能性を示す。一アプローチでは、確率評価基準は、LLR表884から得られる対数尤度比LLRである。LLR値は、記憶素子から読み出される様々なバイナリビットの値が既知であることの信頼性の尺度である。一実施形態では、ビットに対するLLRが下記の数1で与えられ、ここで、Pv=0|Yは、状態読み出しがYであるとの条件が与えられる場合に、ビットが0である確率であり、Pv=1|Yは、状態読み出しがYであるとの条件が与えられる場合に、ビットが1である確率である。それゆえ、LLR>0はビットが1よりも0である可能性が高いことを示し、LLR<0はビットが0よりも1である可能性が高いことを示す。さらに、大きさが大きいことは確率が大きいこと、すなわち、信頼性の増大を示す。それゆえ、LLR=63であるビットは、LLR=5であるビットよりも0である可能性が高く、LLR=-63であるビットは、LLR=-5であるビットよりも1である可能性が高い。LLR=0は、ビットが0である可能性と1である可能性とが等しいことを示す。LLR値は、符号語におけるビット位置の各々に対して提供されうる。さらに、ビット列間のマッピングと不揮発性メモリのプログラムされた状態とを検討するに際して、不揮発性メモリから読み出された電圧レベルに関してビットが0または1のいずれかを保持する傾向が強いときにより大きい大きさのLLRが使用されるように、LLR表は複数の読み出し結果を明示することができる。デコーダ886は、LLRを受け取り、符号を表すパリティチェックが満たされているかどうかを判断する逐次代入を繰り返す。すべてのパリティチェックが満たされると、復号プロセスは収束しており、符号語は再構成されている。1以上のパリティチェックが満たされていなければ、デコーダはパリティチェックと矛盾する1以上のビットのLLRを調整してから、プロセスにおけるパリティチェックまたは次のチェックを再適用してこれが満たされているかどうかを判断する。例えば、LLRの大きさおよび/またはLLRの極性が調整されうる。問題となっているパリティチェックがなお満たされなければ、LLRは別の反復中に再び調整されうる。LLRを調整すると、場合によってはビットフリッピング例えば、0から1へのまたは1から0へのが生じる可能性がある。一実施形態では、問題となっているパリティチェックが満たされた時点で、該当する場合、別のパリティチェックが符号語に適用される。あるいは、プロセスは次のパリティチェックに移り、後で、失敗したチェックにループバックする。プロセスはすべてのパリティチェックを満たそうとして継続する。それゆえ、Y1の復号プロセスは、パリティビットvと復号化情報ビットiを含む復号化情報を得るために完遂される。図17は、4つの状態にあるメモリセル当たり2ビットのデータを記憶するデバイスの種々の状態の各ビット位置に対する初期LLR値を有するLRR表の例を示す|M3|>|M2|の場合。各メモリセルに記憶された2ビットは、下位ビットおよび上位ビットと称される。正のLLR値は対応ビットに対する論理0を示し、負のLLR値は対応ビットに対する論理1を示す。大きさが大きいことは、その論理状態にあるビットに関する信頼性、すなわち確率が大きいことを示す。図17のLLR表は、電圧ウィンドウ全体にわたって状態が均一に分布する場合のデータ例と、ガウス雑音と、図9の符号化に対応するグレーコードデータと、に関するものである。前述のように、メモリは情報ビットおよびパリティビットまたはECCビットを表すデータを記憶し、パリティビットはエラー訂正符号に従って提供される。パリティビットは情報ビットとともに符号語を規定する。1つの可能なアプローチでは、低密度パリティチェックLDPC符号が使用されてもよい。実際には、このような符号は、典型的に、多数の記憶素子に対して符号化される多くのビットに適用されるすなわち、あらゆるセルがパリティビットを記憶するわけではなく、チェックは複数セルにわたって分散している。LDPC符号は、発生するオーバーヘッドコストが比較的低いので望ましい。さらに、LDPC符号は反復メッセージパッシング復号アルゴリズムの下でShannon限界に近い性能を示す。しかしながら、これは、いかなるタイプのエラー訂正符号も採用されうるので、一例にすぎない。例えば、他の線形ブロック符号が採用されてもよい。LDPC符号は、スパースパリティチェック行列を特徴とする線形ブロック符号である。行列はK個の情報ビットおよびM個のパリティビットを含み、符号長はN=KMである。さらに、パリティビットはM個のパリティチェック方程式が満たされるように規定され、行列の各行がパリティチェック方程式を表す。特に、行列の行はチェックノードによって特定され、列は記憶素子に記憶されるデータを示す変数、例えば、符号語ビットによって特定される。このデータは、下記の方程式に基づく情報ビットiおよびパリティビットpを含む。ここで、Hはスパースパリティチェック行列であり、vはデータベクトルであり、iは情報ビットベクトルであり、pはパリティビットベクトルである。パリティベクトルpは上式を解くことによって決定されうる。さらに、これは、行列Hの右側が下三角である場合はガウス消去法を用いて効果的に実施されうる。LDPCに対する復号化プロセスは、反復メッセージパッシング復号として知られる確率的反復復号化プロセスである。様々なメッセージパッシング復号アルゴリズムが当技術分野で周知である。一般的なこのようなアルゴリズムは、確率伝播アルゴリズムである。一実施形態では、反復は、チェックノードを連続的に横断するステップと各パリティチェックに基づいて関連ビットのLLR値を更新するステップとを含む。一アプローチでは、パリティチェック行列の第1のパリティチェックを満たすための試みがなされる。そのパリティチェックが満たされた時点で、第2のパリティチェックを満たすための試みがなされ、以下同様である。なお、ビットの正負符号がフリップされると、以前に満たされたパリティチェックがフリップの発生によって満たされなくなる場合がある。LLRは、すべてのチェックが当業者に周知の方法で満たされるまで修正される。なお、反復復号アルゴリズム群はメッセージパッシング復号アルゴリズム群を含み、メッセージパッシング復号アルゴリズム群はさらに確率伝播復号アルゴリズムを含む。図18は、隣接セル状態情報および/または温度情報に基づく温度補償を用いてデータを決定するための、コントローラ244に関するプロセスの一実施形態を説明するフローチャートである図15のステップ872。図18のプロセスでは、前述の確率的反復復号プロセスが使用される。ステップ902において、コントローラ244または別のエンティティが各メモリセルに対する信頼性尺度例えば、あるビットが0または1である確率を割り当てることになる。セルが2、3、またはそれ以上のビットを表す場合、コントローラは複数の信頼性尺度を各セルに割り当てる。その尺度は、2つの要因、すなわち、雑音モデル例えば、1つの状態をプログラムし、もう1つの状態を読み出す確率とビットの状態へのマッピングとに依存している。他の実施形態では、ステップ902は、シミュレーション、実験、または過去の実績に基づいていてもよい。1つの実施態様例では、コントローラ244は、適切なLLR表図17参照にアクセスすることになる。LRR表は、製造前に、製造後試験後に、またはメモリシステムの動作中において動的に、作成されうる。検知動作から受け取られた初期情報に基づいてステップ868、コントローラ244は、各メモリセルの読み出し、または各ビットの読み出しに対してLLR表から適切な信頼性を割り当てることになる。ステップ904において、コントローラ244は、各メモリセルに関する温度オフセットを特定することになる。ステップ904におけるこの温度オフセットは、温度差のみに基づいており、例えば、ステップ904における温度オフセットは、プログラミングの時点の温度と読み出しの時点の温度との差に基づいていてもよい。一実施形態では、オフセットは乗数である。別の実施形態では、オフセットは加算される定数であってもよい。例えば、コントローラ244は、各温度差の値または値の集合に対する記載を有する表を、オフセットのあるべき姿を示すために、維持することができる。一実施形態では、表は、温度差の範囲と各範囲に対するオフセットとを有することになる。ステップ904は、適切なオフセットを特定するための温度差を用いるステップを含む。一実施形態では、温度オフセットは各メモリセルに対して提供される。メモリセルの温度オフセットが明らかになると、温度補償の影響はそのメモリセルによって記憶されたビットの各々に対して別々に算出されうる。ステップ906において、コントローラ244は、各目標メモリセルに対する隣接セル状態に基づいて温度オフセットを特定することになる。先に説明したように、コントローラ244は、目標メモリセルと、各目標に対する隣接メモリセルと、を含む各メモリセルに関する初期検知情報とを有することになる。一実施形態では、コントローラ244によって、ワードラインに接続されたすべてのメモリセルが読み出されることになる。したがって、あらゆる目標メモリセルがワードライン上にある場合ある事例ではすべてのメモリセルがワードラインに接続される、ワードライン上の隣接メモリセルもそのデータをコントローラ244によって受け取られていることになる。一方または両方の隣接セルあるいは、同じビットラインまたは斜め隣接セルを考慮する場合は2つよりも多くの隣接セルのデータに基づいて、コントローラ244はオフセットを特定することができる。オフセットは、前述したように表などのデータ構造を用いて、乗数であってもよく、加算される定数であってよい。ステップ908において、複合温度補償値が各メモリセルあるいは一部の実施形態では、各ビットに対して与えられる。複合温度補償は、各目標メモリセルに対してまたは読み出された各ビットに対して隣接セルデータ状態に基づく温度オフセットステップ906によって調整された温度のみに基づく温度オフセットを含むステップ904。例えば、ステップ904からのオフセットは乗数X1であり、ステップ906からのオフセットが第2の乗数X2である場合、複合温度補償は2つの乗数の積X1×X2であってもよい。ステップ910において、各目標メモリセルまたは読み出された各ビットに対して、LLR表からの適切な確率値が複合温度補償に基づいて調整される。例えば、乗数はLLR表の値が乗じられ、定数はLLR表内の値に加算される。ステップ912において、ECC復号処理が実施される図16のステップ886参照。ECC処理912の結果は、符合語に収束することである。特定された符号語がプログラムされた符号語と異なる確率が小さいとき、デコーダは実際のプログラムされたデータを再現構成する。ステップ916において、そのデータはコントローラ244によってホストに報告される。一部の実施形態では、データ内のエラーの数がデコーダの訂正能力よりも大きい場合、たとえ反復回数および確率調整の回数が大きくてもデコーダは機能しないであろう。図18は、ステップ920、922、924、および926を含むECC復号処理912を示す。ステップ920において、データは、現在の確率に基づいて復号化される。ステップ922において、復号化されたデータが正当な符号語に一致すると、プロセスは成功裏に完了しており、データはステップ916において報告される。ステップ920からの復号化されたデータが認められた符号語に一致しなければステップ924、ステップ926における確率の調整が必要であり、プロセスはステップ920にループバックしてデータの復号を再び試みる。確率の調整前に、システムはステップ920~926のループが最大回数maxより多く実施されるかどうかを試験する。最大回数より多く実施されれば、プロセスは失敗であるステップ930。最大回数より多く実施されなければ、ステップ926において確率を調整する必要がある。ステップ926の一実施形態は、確率の大きさを調整するステップを含む。ステップ926の別の実施形態は、確率の正負符号を調整するステップを含む。さらに別の実施形態では、大きさ、および正負符号が調整されうる。大きさ、または正負符号の調整には様々な方法がある。一実施形態では、ゼロに最も近い1以上の確率値はそれらの正負符号がフリップされて大きさが変更されることになる。ステップ912のプロセスは、前述されかつ当技術分野で周知であるLDPC符号の教示を用いる反復処理である。前述の議論において、目標メモリセルの初期検知は、読み出し比較レベルVra、Vrb、およびVrcを使用するステップを含む図6参照。別の実施形態において、追加読み出し比較レベルは、大きい分解能で検知するために採用されうる。例えば、図19は、読み出し比較レベルVra、Vrb1、Vrb2、Vrb3、Vrc1、Vrc2、およびVrc3の重複閾値電圧分布を示す。これらの読み出し比較レベルの各々を読み出すことによって、より正確な確率が様々な初期データセットに割り当てられうる。例えば、メモリセルがVraとVrb1との間の閾値電圧を有する場合、そのメモリセルは範囲R1の閾値電圧を有する。範囲R1にあるメモリセルは状態Aにある確率が高い。メモリセルがVrb1よりも大きくVrb2よりも小さい閾値電圧を有する場合、そのメモリセルの閾値電圧は範囲R2にある。範囲R2に閾値電圧を有するメモリセルは、状態Aにある確率が低く状態Bにある確率も同様に低い。メモリセルがVrb2よりも大きくVrb3よりも小さい閾値電圧を有する場合、閾値電圧は範囲R3にある。範囲R3に閾値電圧を有するメモリセルは、状態Bにある確率が低いが状態Aにある確率はさらに低い。範囲R2にあるメモリセルが状態Bにある確率は、範囲R3にあるメモリセルが状態Bにある確率よりも小さい。メモリセルがVrb3よりも大きくVrc1よりも小さい閾値電圧を有する場合、その閾値電圧は範囲R4にある。閾値電圧が範囲R4にあるメモリセルは、状態Bにある確率が高い。メモリセルがVrc1よりも大きくVrc2よりも小さい閾値電圧を有する場合、そのメモリセルは範囲R5の閾値電圧を有する。範囲R5に閾値電圧を有するメモリセルは状態Bにある確率が低く状態Cにある確率はさらに低い。メモリセルがVrc2よりも大きくVrc3よりも小さい閾値電圧を有する場合、その閾値電圧は範囲R6にある。範囲R6に閾値電圧を有するメモリセルは状態Cにある確率が低く状態Bにある確率はさらに低い。メモリセルがVrc3よりも大きい閾値電圧を有する場合、そのメモリセルは範囲R7にある。範囲R7に閾値電圧を有するメモリセルは、状態Cにある確率が高い。なお、状態Eは図19に示されていない。しかしながら、メモリセルがVraよりも小さい閾値電圧を有する場合、閾値電圧は範囲R0にあり、状態Eにある確率が高い。図20は、図19の閾値電圧範囲の各々にあるビット当たりの信頼性尺度LLRを示すLLR表である。図20のLLR表では、メモリセル当たり2ビットが記憶されるものと見なしている。図20のLLR表の例では、大きさM1~M5が|M5|>|M4|>|M3|>|M2|>|M1|を満たしている。表内の大きさの各々は、そのビットが1または0である対数尤度比を示す。負符号でビットのLLRが1であることを示し、正符号でそのビットのLLRが0であることを示す。一実施形態は、図19の読み出し比較レベルと図20のLLR表とを用いた図15および図18図15のステップ872のプロセスを含む。検知動作を実施するときステップ868参照、メモリチップは、メモリセルがどの範囲R0、R1R7にあるかを特定するために、Vra、Vrb1、Vrb2、Vrb3、Vrc1、Vrc2、およびVrc3において読み出し比較レベルを実施することになる。このデータはソフト情報と称される。このソフト情報はこの後コントローラ244に伝達される。コントローラ244は、この後、図18のステップ902において図20のLLR表を用いて初期確率を特定することになる。図20のLLR表の値は、この後、先に説明したように、温度情報と隣接データ状態情報との組み合わせに基づいてステップ910において調整されることになるステップ904および906。一実施形態では、各電圧範囲はビットシーケンスにマッピングされるが、そのシーケンスは、コントローラに対して、電圧範囲を特定している。そのシーケンスは3ビット以上を含む。通常、そのシーケンスの最初の2ビットはハードビットであり、例えば、これらは下位ページのビットの正負符号と上位ページのビットの正負符号とを表すが、シーケンスの残りのビットはソフトビットである。しかしながら、別のマッピングでは、各閾値を表すビットシーケンスとビットの各々の正負符号に関する情報とは、単に、LLR表に見られるだけである。4つを超える範囲があると、特定された電圧はソフト情報を表す。ハードビットおよびソフトビットは、シーケンスまたはマッピングを表す範囲で、システムはマッピングにおけるハードビットHBに等価である記憶されたビットSBを直接特定することができるが、シーケンスにおけるビットの残りはソフトビットである。グレーマッピングを使用するとセルの容量が改善されることが分かる。例えば、SB表現が重要ではなくても、HBがグレー符号であれば十分である。その一方で、セルの容量の改善はBICMビットインターリーブ符号化変調方式の下での最適訂正能力の効果である。隣接セルデータ状態情報に基づいて温度補償を提供する別の実施形態は、隣接セルデータ状態情報を提供するか否かを判断するために、読み出し時の温度とプログラミング時の温度との温度差ΔTを用いるステップを含む。例えば、図18のステップ904~910は、図21のステップ980、982、および984に置き換えられる。ステップ982または984に続いて、プロセスは図18のステップ912に進むことになる。ステップ980において、システムはΔTがある閾値定数Kよりも大きいかどうかを判断することになる。ΔTが定数Kより大きくなければ、補償は提供されないステップ982。しかしながら、ΔTが定数Kよりも大きければ、ステップ984において補償が隣接セルデータ状態に基づいて提供される。2009年3月26日に公開された米国特許出願公開第2009/0080259号Post-FactoCorrectionforCrossCouplinginaFlashMemoryには、不揮発性記憶素子からデータを読み出す方法が開示されており、そこではメモリセルに記憶されたデータが、測定値と、隣接セルが目標メモリセルの読み出しを妨げるそれぞれの程度とに基づいて推定される。図21のステップ984は、米国特許出願公開第2009/0080259号のプロセスを実現することによって実施されうる。別の一連の実施形態では、温度補償隣接セルデータ状態を考慮に入れたが読み出しプロセスに対して読み出し比較レベルを調整するために採用されうる。図22および23は、温度補償隣接セルデータ状態に基づいて調整されるに基づいた読み出し比較値の変更について2つの実施形態を説明するフローチャートである。図22のプロセスは、同じワードラインに沿った他のメモリセルに対する隣接セルデータ状態を考慮に入れるステップを含み、検知のステップ後に補償を提供する。図23のプロセスでは、同じワードライン上または同じビットライン上の隣接セルデータ状態を考慮に入れることができ、検知の前に補償を提供する。図22のステップ1000では、コントローラはデータを読み出すための要求を受け取る。ステップ1002において、コントローラ244は、前述のようにメモリチップからの温度データを要求する。ステップ1004において、メモリチップは、前述のように、温度情報を例えば、温度センサー228を用いて検知することになる。ステップ1006において、ステップ1004で検知された現在の温度データと、過去の温度データ読み出されるデータのプログラミングの時点における温度データとがコントローラ244に転送される。ステップ1008において、コントローラ244は、ΔT現在の温度と、データがプログラムされた時点で測定された温度との差がある定数Kよりも大きいかどうかを判断する。ΔTがKよりも大きくなければ、ステップ1020において、検知動作が標準比較レベル例えば、Vra、Vrb、およびVrcで実施される。ステップ1022において、検知されたデータはコントローラ244に転送される。ステップ1024において、コントローラは当技術分野で周知の方法のいずれかを用いて最終データを決定することになる。一実施形態では、標準ECC復号化が採用されうる。別の実施形態では、前述のように、あるいは先行技術で知られる他の反復ECCプロセスが採用されうる。ステップ1026において、データはホストに報告される。ステップ1008において、コントローラ244は、ΔTが定数Kよりも大きいと判断すると、ステップ1030において、検知動作が各データ状態に対して複数の比較レベルで実施される。例えば、読み出し動作は、標準比較レベルと、標準比較レベルよりも大きい1以上の比較レベルと、標準比較レベルより小さい1以上の比較レベルと、で実施されうる。一実施形態では、状態の各対の間での3つの読み出し動作が、例えば、Vra、Vra.2v、Vra-.2v、Vrb、Vrb.2v、Vrb-.2v、Vrc、Vrc.2v、およびVrc-.2vで実施されうる。他の実施形態では、さらに多くの比較レベルが採用可能であり、±.2以外のインクリメントが採用されうる。ステップ1032において、データはコントローラ244に転送される。一実施形態では、各検知動作の結果が転送されうる。ステップ1034において、コントローラ244は、温度差プログラミングの時点の温度と読み出しの時点との温度差と隣接メモリセルの1以上のデータ状態との組み合わせに基づいて各メモリセルに使用するための適切なデータを選定することになる。温度差プログラミングの時点の温度と読み出しの時点の温度との温度差と、データを使用するために様々な読み出し動作のどれかを特定すべく隣接セルが状態E、A、B、またはCのいずれにあるかと、を考慮に入れた関数が作成されうる。別の実施形態では、1以上の表に温度差プログラミングの時点の温度と読み出しの時点の温度との温度差と隣接メモリセルのデータ状態の各組み合わせに関する情報が備えられうる。ステップ1034の後、データはステップ1026において報告される。なお、前述の図22のプロセスは、コントローラ244によって実施される。別の実施形態では、図22のプロセスはステートマシン222によって実施されうる。ステートマシンにおいてプロセスを実施することによって、システムは複数の検知動作からのデータをコントローラ244に転送する時間を節約することになる。図23は、隣接セル状態情報を考慮に入れた温度補償に基づく読み出し比較値を調整するための別の実施形態を説明するフローチャートである。図23のプロセスにおいて、補償は検知動作に先立って提供される。図23のステップ1100において、温度は前述のように検知される。ステップ1102において、プログラミングの時点の温度データがアクセスされる。ΔT現在の温度とプログラミングの時点の温度との差が定数Kよりも大きければ、データはステップ1106において隣接メモリセルからアクセスされる。一実施形態では、システムは隣接メモリセルを積極的に読み出すことができる。別の実施形態では、システムはメモリセルのワードライン、メモリセルのブロックなどに対する検知動作を事前に実施してその結果を保存していることになる。別の実施形態では、隣接メモリセルは、事前の読み出しおよび記憶が、他の動作のために行なわれていてもよい。ステップ1108において、隣接メモリセル状態とΔTに基づいて、読み出し比較レベルに対する調整がなされる。例えば、一実施形態では、場合によって、標準読み出し比較値よりも大きい1つのオフセットと、標準読み出し比較値よりも小さい1つのオフセットと、があり、状態の各対の間にある読み出し比較レベルは全部で3つとなる。例えば、Vra、Vra.2v、Vra-.2v、Vrb、Vrb.2v、Vrb-.2v、Vrc、Vrc.2v、およびVrc-.2vが採用されうる。別の実施形態では、複数のオフセットが採用されうる。別の実施形態では、標準読み出し比較値よりも大きい1つのオフセットと、標準読み出し比較値よりも小さい1つのオフセットと、が採用されうるが、標準読み出し比較電圧を読み出すことはなく、状態の各対の間にある読み出し比較レベルは全部で2つとなる。ΔTと1以上の隣接セルのデータ状態とに基づいて、複数の読み出し比較値のどれを使用するかを特定する関数が設定されうる。あるいは、ΔTと1以上の隣接セルのデータ状態との組み合わせに基づいて、読み出し比較値のどれかを選定するために表が設定されうる。ステップ1110において、検知動作は新たな読み出し比較値を用いて実施される。一実施形態では、様々なメモリセルが様々な読み出し比較レベルを利用することになる。したがって、複数の検知動作が種々のメモリセルに必要なすべての比較レベルにおける各状態に対して実施されることになる。しかしながら、どのメモリセルにとっても、データは、ステップ1108で特定される関連読み出し比較レベルに対して記憶されるだけになる。ステップ1112において、データはホストまたはコントローラなどの構成要素に報告される。なお、ステップ1104において、ΔTが定数Kよりも大きいと判断されなければ、プロセスはステップ1106および1108をスキップして直接ステップ1110に進み、当初の比較値で検知動作を実施する。なお、隣接セルの状態情報は、温度差補償に加えて他の補償を調整するために使用されうる。例えば、隣接セルに依存する閾値電圧はフローティングゲートまたはフローティングゲート結合に起因してシフトし、プログラミングセルデータに依存するプログラムディスターブは、他のメカニズムと同様に、やはり1以上の隣接メモリセルの状態に基づいて調整されうる。上記の実施形態では、システムがプログラミングの時点の温度と読み出しの時点の温度との一定温度差を検知すると、システムは、温度差と1以上の隣接メモリセルのデータ状態とを考慮に入れた追加の補償を適用することになる。別の実施形態では、システムは、温度差と1以上の隣接メモリセルのデータ状態とを考慮に入れた追加の補償を適用することなくまず読み出しプロセスを実施しようとする。このような読み出しプロセスは、ソフトビットの有無を問わずECC例えば、BHCまたはLDPCベースのの採用を含んでいてもよい。ECCプロセスが失敗するとまたは読み出しプロセスが失敗すると、システムは回復モードで動作することになる。回復モードでは、システムは、温度差と1以上の隣接メモリセルのデータ状態とを考慮に入れた追加補償を適用するために前述の技術を用いて読み出しプロセスを再び実施することになる。一実施形態は、データを不揮発性記憶素子にプログラムすること、及び、そのプログラミング後にデータを不揮発性記憶素子から読み出すことを含む。データを読み出すことは、温度情報と少なくとも1つの隣接不揮発性記憶素子に関する状態情報とに基づいて温度補償を提供することを含む。一実施形態は、現在の温度情報を決定すること、目標不揮発性記憶素子へのデータのプログラミングからの温度情報にアクセスすること、現在の温度情報とデータのプログラミングからの温度情報との温度差を決定すること、目標不揮発性記憶素子の1以上の隣接不揮発性記憶素子に関する状態情報を決定すること、温度差が閾値よりも大きい場合に温度データに基づく目標不揮発性記憶素子に対する温度補償の量と1以上の隣接不揮発性記憶素子に関する状態情報とを決定して適用すること、目標不揮発性記憶素子から情報を検知すること、及び、検知に基づくデータと適用された温度補償とを報告することを含む。温度データは、現在の温度、温度差、またはその他の温度データを含みうる。一実施形態は、不揮発性記憶素子に関する現在の温度情報を受け取ること、不揮発性記憶素子の以前のプログラミング中の温度に対応する不揮発性記憶素子に関するプログラミング温度情報を受け取ること、少なくとも現在の温度情報に基づいて動作パラメータを調整すること、動作パラメータを用いて不揮発性記憶素子から初期情報を検知すること、不揮発性記憶素子の各々に関する1以上の隣接不揮発性素子の状態を表す情報と、現在の温度情報とプログラミング温度情報との温度差と、に基づく温度補償を用いて、初期情報から不揮発性記憶素子に記憶されたデータを特定すること、及び、特定されたデータを報告することを含む。一実施形態は、不揮発性記憶素子と、不揮発性記憶素子と通信するための1以上の管理回路と、を含む。1以上の管理回路は、温度情報と少なくとも1つの隣接不揮発性記憶素子に関する状態情報とに基づく温度補償を提供することによって不揮発性記憶素子からデータを読み出す。一実施形態は、ホストインターフェース、メモリ回路、およびコントローラ回路を含む。メモリ回路は、複数の不揮発性記憶素子、デコーダ、温度センサー、およびステートマシンを含む。コントローラ回路は、メモリ回路、およびホストインターフェースと通信している。コントローラ回路は、ステートマシンと通信している。メモリ回路から、コントローラ回路は、温度センサーからの現在の温度情報と、不揮発性記憶素子のプログラミングからの温度情報とを受け取る。メモリ回路から、コントローラは、不揮発性記憶素子から検知された初期情報を受け取る。コントローラは、少なくとも1つの隣接不揮発性記憶素子に関する状態情報と、現在の温度情報と不揮発性記憶素子のプログラミングからの温度情報との温度差と、に基づいて温度補償を決定する。コントローラは、不揮発性記憶素子に記憶されたユーザーデータを特定するために、温度補償と組み合わせた初期情報を用いてデータ復元プロセスを実施する。一実施形態は、不揮発性記憶素子の中にデータをプログラムする手段と、プログラミング後にその不揮発性記憶素子からデータを読み出す手段とを含む。データを読み出すステップは、温度情報および隣接セル状態情報に基づいて温度補償を提供するステップを含む。本発明についての先の詳細な記述は、例示および説明を目的として提示されている。これは、本発明を網羅するものではなく、本発明を開示された厳格な形態に制限するものでもない。上記の教示に照らして多くの修正形態および変更形態が考えられる。記載された実施形態は、本発明の原理およびその実用化を最もよく説明し、それによって、その実際的応用では、当業者が本発明を様々な実施形態で、かつ期待される具体的使用に適する様々な修正形態で最もよく利用しうるように選定された。本発明の範囲は、本明細書に添付された特許請求の範囲によって規定されることを意図するものである。"