"複数のページを含む不揮発性メモリNVMにデータを記憶する方法であって、前記複数のページの1つよりも大きなサイズの前記データに対して使用する符号化技術を選択するステップと、前記符号化技術を前記データに適用して、パリティメタデータに値する少なくとも1つのページを生成するステップと、前記データを前記複数のページの第1の部分にプログラムするステップと、前記パリティメタデータを前記複数のページの第2の部分に記憶するステップと、を含み、前記記憶するステップが、前記第2の部分の各ページのメタデータフィールドに、前記第2の部分が前記パリティメタデータを記憶していることを示すマークを付けるステップを含む、ことを特徴とする方法。前記第2の部分が、少なくとも2つのページを含む、ことを特徴とする請求項1に記載の方法。前記第2の部分が前記パリティメタデータを記憶していることを示す前記メタデータフィールドを、前記NVMの第2のメモリ位置に冗長的に記憶するステップをさらに含む、ことを特徴とする請求項1に記載の方法。前記第2の部分が、前記NVMにわたる不規則な分布を含む、ことを特徴とする請求項1に記載の方法。前記第1の部分が、少なくとも1つの訂正不能ページを含んでいると判断するステップと、前記パリティメタデータを使用して、前記少なくとも1つの訂正不能ページを修復するステップと、をさらに含むことを特徴とする請求項1に記載の方法。前記不揮発性メモリが、フラッシュメモリを含む、ことを特徴とする請求項1に記載の方法。各々が一意の物理アドレスに関連する複数のページを含む不揮発性メモリNVMの論理-物理マッピングアドレステーブルを構築する方法であって、前記複数のページの第1のページを、前記第1のページがパリティページであるか否かを示す、前記第1のページの第1のメタデータタグを読み取り、前記第1のメタデータタグが、前記第1のページがパリティページでないことを示していると判断することに応答して、前記第1のページの第1の論理アドレスを決定し、前記第1の論理アドレスを前記第1のページの一意の物理アドレスとともに前記論理-物理間のマッピングのアドレステーブルに記憶し、前記第1のメタデータタグが、前記第1のページがパリティページであることを示していると判断することに応答して、前記第1の論理アドレスが前記アドレステーブルに記憶されないように前記第1のページをスキップする、ことによって処理するステップを含む、ことを特徴とする方法。前記NVMの電源がオンになったと判断するステップをさらに含み、前記第1のメタデータタグの前記読み取りが、前記NVMの電源がオンになったと判断することに応答して行われる、ことを特徴とする請求項7に記載の方法。前記複数のページの各ページを、前記複数のページの次のページに進むことによって連続的に処理し、前記複数のページの最終ページが処理されるまで前記次のページに対して前記処理を行うステップをさらに含む、ことを特徴とする請求項7に記載の方法。前記第1の論理アドレスの決定が、前記第1のページのメタデータから前記第1の論理アドレスを読み取ることを含む、ことを特徴とする請求項7に記載の方法。複数のページを含む不揮発性メモリNVMを備え、前記複数のページのサブセットがパリティページであり、前記複数のページが複数のコードワードにグループ化され、該複数のコードワードの各コードワードが、前記複数のページのうちの少なくとも2つの連続ページと、少なくとも1つのパリティページとを含み、前記複数のコードワードの少なくとも第1のサブセットが、少なくとも2つのパリティページを含み、前記NVMの前記ページへのアクセスを制御するためのプロセッサをさらに備え、前記プロセッサが、各パリティページのメタデータフィールドに、前記ページがパリティページであることを示すためのマークを付けるように構成される、ことを特徴とする電子装置。前記複数のコードワードのうちの特定のコードワードのユーザデータに符号化技術を適用して、前記特定のコードワードに関連するパリティメタデータを生成するように構成されたエラー訂正符号モジュールをさらに備え、前記プロセッサが、前記特定のコードワードの少なくとも1つのパリティページに前記パリティメタデータを記憶するようにさらに構成される、ことを特徴とする請求項11に記載の電子装置。前記プロセッサが、特定のコードワードの各ページを検索し、前記検索中に、前記特定のコードワードの訂正不能ページを識別し、前記遭遇に応答して、前記特定のコードワード内の各ページのデータを、前記訂正不能ページまで左向きに走査してバッファし、前記遭遇に応答して、右向きに走査して前記特定のコードワードの最後を判別し、前記訂正不能ページよりも後の各ページを検索する時に、前記訂正不能ページのデータ、及び前記コードワード内の前記訂正不能ページよりも後の各ページのデータをバッファするようにさらに構成される、ことを特徴とする請求項11に記載の電子装置。前記プロセッサが、パリティページマーカーに遭遇するまで左向きに走査することにより、前記特定のコードワードの先頭を判別するようにさらに構成される、ことを特徴とする請求項13に記載の電子装置。前記プロセッサが、第1のページのメタデータタグに遭遇するまで左向きに走査することにより、前記特定のコードワードの先頭を判別するようにさらに構成される、ことを特徴とする請求項13に記載の電子装置。前記プロセッサが、パリティページマーカーの次の非パリティページマーカーに遭遇するまで右向きに走査することにより、前記特定のコードワードの最後を判別するようにさらに構成される、ことを特徴とする請求項13に記載の電子装置。前記プロセッサが、第1のページのメタデータタグに遭遇するまで右向きに走査することにより、前記特定のコードワードの最後を判別するようにさらに構成される、ことを特徴とする請求項13に記載の電子装置。前記プロセッサが、前記バッファしたデータ、及び前記特定のコードワードに含まれる少なくとも1つのパリティページに基づいて、前記訂正不能ページを修復するようにさらに構成される、ことを特徴とする請求項13に記載の電子装置。前記プロセッサが、特定のコードワードが第1の数の推定されるパリティページを含むという事前推定に基づいて少なくとも2つのパリティ方程式を生成し、前記特定のコードワードを検索し、各ページを検索する時に、前記特定のコードワードの各ページのデータを使用して前記少なくとも2つのパリティ方程式の計算を更新する、ようにさらに構成されることを特徴とする請求項11に記載の電子装置。前記プロセッサが、各実際のパリティページのメタデータタグを読み取ることにより、前記特定のコードワードの最後を検索した時点で前記特定のコードワードに関連する第2の数の実際のパリティページを特定し、前記第2の数が前記第1の数よりも少ないと判断し、前記少なくとも2つのパリティ方程式の第2の数の前記更新された計算を除いて全て廃棄する、ようにさらに構成されることを特徴とする請求項19に記載の電子装置。前記プロセッサが、各実際のパリティページのメタデータタグを読み取ることにより、前記特定のコードワードの最後を検索した時点で前記特定のコードワードに関連する第2の数の実際のパリティページを特定し、前記第2の数が前記第1の数に等しいと判断し、前記少なくとも2つのパリティの方程式の前記更新された計算を使用して、前記特定のコードワードの少なくとも1つの訂正不能ページを修復する、ようにさらに構成されることを特徴とする請求項19に記載の電子装置。前記NVM及び前記プロセッサを含む集積回路パッケージをさらに備える、ことを特徴とする請求項11に記載の電子装置。前記NVMを含む集積回路パッケージをさらに備え、前記プロセッサが、前記集積回路パッケージの外部のシステムオンチップに実装される、ことを特徴とする請求項11に記載の電子装置。前記不揮発性メモリが、フラッシュメモリを含む、ことを特徴とする請求項11に記載の電子装置。NANDフラッシュメモリのようなフラッシュメモリなどの不揮発性メモリNVM内の不規則なパリティ分布のためのシステム及び方法を開示する。さらに、本明細書では、メタデータタグを介してこのような不規則なパリティ分布を検出するためのシステム及び方法を開示する。いくつかの実施形態では、システムオンチップ及びNVMを含むことができる電子装置を提供することができる。NVMは、NANDフラッシュメモリなどのフラッシュメモリ、又は他のいずれかの好適な種類の不揮発性メモリを含むことができる。システムオンチップは、NVMにアクセスするためのNVMインターフェイスを含むことができる。いくつかの実施形態では、NVMインターフェイスが、NVMにユーザデータを記憶するためのファイルシステムからの書き込み要求、NVMに記憶されたデータを検索する例えば、読み取る、又は別様にアクセスするための検索要求、或いはこれらの両方を受け取ることができる。いくつかの実施形態では、全体としてコードワードを構成するNVMの物理アドレスなどの2又はそれ以上の連続するページにデータを記憶することができる。コードワードの各ページは、そのページのエラーを訂正するための内部ECCなどのECCデータを含むことができる。さらに、コードワードには、1又はそれ以上のパリティページを含めることができ、各パリティページは、全体としてのコードワードに関連する外部ECCなどのECCデータを提供することができる。各パリティページは、コードワードのエラーを訂正するための追加の保護層を提供することができる。例えば、コードワードがm個のパリティページを含む場合には、たとえコードワードが最大m個の訂正不能ページを含む場合でも、このコードワード内のエラーを好適に訂正することができる例えば、この場合、訂正不能ページは、このページのエラーを訂正するのに不十分な可能性のある内部ECCデータを含むページを意味することができる。いくつかの実施形態では、パリティページが、NVMにわたって不規則に分布することができる。一例として、パリティページの規則的な分布は、常にNVMのスーパーブロックの同じチップ番号に位置するパリティページを含むことができる。対象的に、パリティページの分布が不規則なNVMは、必ずしも同じチップ番号に位置するとは限らず、むしろNVMのあらゆる好適な位置に存在できるパリティページを含むことができる。同様に、コードワードは、スーパーブロックの同じチップ番号などの同じ位置で開始及び終了することに限定されず、開始位置及び終了位置が不規則に分布すること、及び長さが不規則に分布することを含むことができる。このように、パリティページの不規則な分布は、あるデータをより強力に保護する役に立つことができる。一例として、重要度の高い情報を保護するためにより多くのパリティページを使用することができ、重要度の低い情報を保護するためにより少ないパリティページを使用することができる。別の例として、いくつかの実施形態では、エラーを起こしやすいページを保護するためにより多くのパリティページを使用することができ、エラーを起こしにくいページを保護するためにより少ないパリティページを使用することができる。NVMメモリのパリティページは、不規則に分布することができるので、NVMのどのページ例えば、物理アドレスがパリティページであるかを直ちに認識できないこともある。どのページがパリティページであるかを判断するために、例えば、各ページのメタデータ情報にパリティページマーカーを含めることができる。NVMインターフェイス、又は電子装置の他の好適な構成要素がこのメタデータタグを読み取って、特定のページがパリティページであるか否かを判定することができる。いくつかの実施形態では、電子装置の起動中に、NVMのページの論理-物理アドレスをマッピングするテーブルを生成することができる。このテーブルは、例えば、起動時にページ全体を走査してこれらの論理アドレスを読み取り、次にこれらの論理アドレス及び読み取ったページの関連する物理アドレスを論理-物理アドレステーブルに記憶することによって生成することができる。しかしながら、このようなテーブルに外部ECCデータを含めることが必要な場合もあるので、この走査中に各ページのパリティページマーカーを読み取ることができる。このパリティページマーカーが、ページがパリティページであることを示す場合には、このページをスキップして、このページの情報を論理-物理アドレステーブルに含めないようにすることができる。いくつかの実施形態では、パリティページの不規則な分布が、NVMからのデータの検索に影響することがある。例えば、NVMからコードワードを検索している間に、訂正不能ページに遭遇することがある。しかしながら、パリティページの不規則な分布により、そのコードワードにどれほどのパリティページが関連しているかを直ちに認識できず、従って訂正不能ページを修復できるかどうかを直ちに認識できないことがある。従って、いくつかの実施形態では、コードワードが検索されている間に、このコードワードのデータをバッファすることができる。コードワードの最後に到達すると、NVMインターフェイス又はその他の好適な構成要素などは、そのコードワードにどれほどのパリティページが含まれているか、従ってもしあればこのコードワードの訂正不能ページを修復できるか否かを判断することができる。訂正不能ページを修復できる場合、バッファしたデータ及びパリティページを使用して、この訂正不能ページを修復することができる。いくつかの実施形態では、NVMインターフェイスが、コードワード内の最初の訂正不能ページに遭遇した時にのみ、コードワードのバッファを開始する。このシナリオでは、訂正不能ページに遭遇した場合、NVMインターフェイスが、コードワードを左向きに走査して、コードワードの全ての前のページ及び現在のページをバッファすることができる。次に、NVMインターフェイスは、コードワードの残り部分を検索する時に、コードワードの検索及びコードワードの残りのバッファを継続することができる。コードワードの最後に到達した時点でパリティページの数を特定することができ、好適な数のパリティページが存在する場合には、訂正不能ページを修復することができる。いくつかの実施形態では、データをバッファするのではなく、訂正不能なコードワードの修復に必要な計算をオンザフライで行うことができる。例えば、NVMインターフェイスは、検索中のコードワードに関連するパリティページが2つ又は他のいずれかの好適な数存在すると推定することができる。NVMインターフェイスは、コードワードの検索中に、検索したページのデータを使用して2つの計算を更新し、各計算を、推定されるパリティページの異なる方に関連付けることができる。コードワードの最後に到達した時点で、実際のパリティページの数及び訂正不能ページの数を特定することができる。訂正不能ページがたった1つ又はそれ以下の場合、又は実際のパリティページが1つのみの場合などの第2の計算が必要でない場合、第2の計算を廃棄することができる。実際のパリティページが2つ存在する場合、訂正不能ページが2つ存在する場合などの両方の計算が必要な場合、2つの計算を使用して訂正不能ページを修復することができる。全体を通じて同じ参照記号が同じ部分を示す添付図面とともに以下の詳細な説明を検討すれば、本発明の上記の及びその他の態様及び利点がより明らかになるであろう。図1は、電子装置100の概略図である。いくつかの実施形態では、電子装置100が、カリフォルニア州クパチーノのApple社から市販されているiPod商標などのポータブルメディアプレーヤ、Apple社から市販されているiPhone商標などの携帯電話機、ポケットサイズパーソナルコンピュータ、携帯情報端末PDA、デスクトップコンピュータ、ラップトップコンピュータ、携帯ゲーム機、遠隔制御装置、及びその他のいずれの好適な種類の電子装置であってもよく、又はこれらの電子装置を含んでいてもよい。電子装置100は、システムオンチップSoC110及び不揮発性メモリNVM120を含むことができる。SoC110は、制御回路112、メモリ114、エラー訂正符号ECCモジュール116、及びNVMインターフェイス118を含むことができる。NVMインターフェイス118、ECCモジュール116、及び制御回路112を、システムオンチップに含まれる別個のモジュールとして示しているが、これは本発明の実施形態の説明を単純化するためにすぎない。例えば、いくつかの実施形態では、これらのモジュールを全て別個の物理エンティティとすることができ、及び/又は独自の超小型電子チップとして形成することもできる。別の例として、いくつかの実施形態では、これらのモジュールを全て単一の超小型電子チップに形成することができ、またこれらのモジュールが同じ基板及び/又はハードウェアを共有することもできる。さらに別の例として、いくつかの実施形態では、これらのモジュールが、ハードウェア構成要素、ソフトウェア構成要素、又はこれらの両方のいくつかの部分を共有することもできる。従って、制御回路112及びNVMインターフェイス118を統合した部分を、総称して制御回路と呼ぶこともある。不揮発性メモリ120を使用して情報を記憶し、電子装置100の電力が切断された時にこれを保持することができる。本明細書で使用する場合、及び状況に応じて、不揮発性メモリは、データを記憶できるNVM集積回路、又はこのようなNVM120などのNVM集積回路を含むNVMパッケージを意味することができる。不揮発性メモリ120は、フローティングゲート又は電荷トラップ技術に基づくNANDフラッシュメモリ、NORフラッシュメモリ、EPROM、EEPROM、強誘電RAMFRAM登録商標、磁気抵抗RAMMRAM、他のあらゆる既知の又は将来の不揮発性メモリ技術、或いはこれらのあらゆる組み合わせを含むことができる。いくつかの実施形態では、NVM120が、外部電子装置100である取り外し可能記憶装置を含むことができる。この場合、NVM120は、例えば、ユニバーサルシリアルバスUSBメモリドライブ、フラッシュカードなどのメモリカード、又は他のあらゆる好適な取り外し可能記憶装置を含むことができる。いくつかの実施形態では、電子装置100にNVM120を組み込むことができる。この場合、NVMパッケージ120を、例えば電子装置の統合メモリとすることができる。NVM120は、複数のチップすなわち、集積回路を含むことができ、この場合、各チップを1又はそれ以上のブロックに編成すること、及び各ブロックを一度に消去することができる。各ブロックは、さらにページに編成することができ、この場合、各ページを一度にプログラムすること、及び読み取ることができる。例えば、各ページは、NVMの特定の物理アドレスに対応することができ、この物理アドレスにデータを書き込み、及び/又はこの物理アドレスからデータを読み取ることができる。各チップからの、チップ内の位置又はブロック番号が同じ1つのブロックなどのNVM120の対応するチップからのブロックは、スーパーブロックと呼ばれる論理記憶ユニットを形成することができる。さらに、NVM120のチップは、あらゆる好適な数のブロック及びページを含むことができる。ページに加え、物理ブロックアドレスなどの物理アドレスを使用してNVM120のブロック等の各メモリ位置を処理することもできる。図1及びそれ以降の図、並びに様々な開示する実施形態を、フラッシュ技術を使用する観点から説明することがある。しかしながら、これは限定を意図するものではなく、他のあらゆる種類の不揮発性メモリを代わりに実装することができる。さらに、電子装置100は、電力供給装置又はいずれかのユーザ入力又は出力構成要素などの他のあらゆる好適な構成要素を含むこともでき、これらについては、図が複雑になり過ぎないように図1には示してない。上述したように、システムオンチップ110は、制御回路112、メモリ114、エラー訂正符号ECCモジュール116、並びにNVMインターフェイス150を含むことができる。制御回路112は、SoC110、並びにSoC112及び/又は電子装置100のその他の構成要素の一般的動作及び機能を制御することができる。例えば、制御回路112は、ユーザ入力及び/又はアプリケーションの命令に応答して、NVM120からデータを取得し又はNVM120にデータを記憶するための読み取り又は書き込みコマンドをNVMインターフェイス118に発行することができる。説明を明確にするために、制御回路112が記憶又は検索を要求するデータについては、たとえこのデータがユーザ又はユーザアプリケーションに直接関連しない場合でもユーザデータと呼ぶことができる。むしろ、ユーザデータは、アプリケーションなどを介して制御回路112により生成又は取得されたあらゆる好適な一連のデジタル情報を含むことができる。制御回路112は、ハードウェア、ソフトウェア、及びファームウェアのいずれかの組み合わせ、並びに電子装置100の機能を引き起こすいずれかの構成要素、回路又は論理回路を含むことができる。例えば、制御回路112は、NVM120及び/又はメモリ114に記憶されたソフトウェア/ファームウェアの制御下で動作する1又はそれ以上のプロセッサを含むことができる。メモリ114は、ダイナミックランダムアクセスメモリDRAM、同期ダイナミックランダムアクセスメモリSDRAM、ダブルデータレートDDRRAM、キャッシュメモリ、リードオンリメモリROM、他のいずれかの好適なメモリ、又はこれらのいずれかの組み合わせなどの、あらゆる好適な種類の揮発性又は不揮発性メモリを含むことができる。メモリ140は、不揮発性メモリにプログラムするための、又は不揮発性メモリ120から読み取るためのユーザデータを一時的に記憶することができるデータソースを含むことができる。いくつかの実施形態では、メモリ140が、制御回路112の一部として実現されるあらゆるプロセッサのためのメインメモリとして機能することができる。ECCモジュール116は、リードソロモンRS符号、Bose-Chaudhuri-HocquenghemBCH符号、周期的冗長検査CRC符号、或いはECCデータを生成するためのその他のあらゆる好適なエラー訂正又は検出符号などの1又はそれ以上のエラー訂正符号又はエラー検出符号を採用することができる。本明細書で使用するECCデータという用語は、エラー訂正及び/又は検出符号をユーザデータに適用することにより生成されるあらゆる好適なデータを意味することができ、このECCデータを使用して、ユーザデータの検証、ユーザデータの訂正、又はこれらの両方を行うことができる。いくつかの実施形態では、ECCモジュールが、単一ページのユーザデータにエラー訂正符号を適用して内部ECCデータを生成することができる。その後、この内部ECCデータを使用して、この単一ページのユーザデータを訂正及び/又は検証することができる。さらに、以下でより詳細に説明するように、いくつかの実施形態では、ECCモジュールが、2又はそれ以上の連続ページなどのコードワード全体のユーザデータにエラー訂正符号を適用することもできる。この場合、ECCモジュールは、コードワードのユーザデータを全体として訂正するために使用できる外部ECCデータを生成することができる。この外部ECCデータを1又はそれ以上のパリティページに記憶することができ、このパリティページを、この外部ECCデータの記憶専用のページとすることができる。パリティページ及び外部ECCデータについては、以下でより詳細に説明する。ECCモジュール116は、ある強度を有することができ、このECCの強度は、ECCモジュール116により生成された内部ECCによって訂正できるフリップ化ビットなどの最大エラー数を示すことができる。例えば、ECCモジュール116は、エラー訂正符号を使用して、あるページ内の最大t個のエラーを訂正することができ、あるページ内の最大n個のエラーを検出することができるnは、tよりも大きなエラー数とすることができる。本明細書で使用するt個のエラーという用語は、ECCコードがページ内で訂正できる最大エラー数を意味し、n個のエラーは、ECCコードがページ内で検出できる最大エラー数を意味する。例えば、あるページがt個よりも多くのエラーを含む場合、このページは、内部ECCデータによって訂正不能とすることができる。同様に、あるページがn個よりも多くのエラーを含む場合、内部ECCデータは、このページ内にどれほどのエラーが存在するかを適切に判断することができない。ECCモジュール116は、例えば、1又はそれ以上の線形フィードバックシフトレジスタLFSRなどのハードウェアの形で実現してもよく、或いはプロセッサにより実行されるソフトウェアの形で実現してもよい。ソフトウェアによる実現では、対応するプログラムコードを、例えばNVM120又はメモリ114に記憶することができる。NVMインターフェイス118は、制御回路112とNVM120の間のインターフェイス又はドライバとして機能するように構成されたハードウェアとソフトウェアのあらゆる好適な組み合わせを含むことができる。NVMインターフェイス118に含まれるあらゆるソフトウェアモジュールに関して、対応するプログラムコードをNVM120又はメモリ114に記憶することができる。NVMインターフェイス118は、制御回路112がNVM120にアクセスして、NVM120のページ、ブロック、スーパーブロック、チップなどのメモリ位置及びそこに記憶されたユーザデータなどのデータを管理できるようにする様々な機能を実行することができる。例えば、NVMインターフェイス118は、制御回路112からの読み取り又は書き込みコマンドを解釈し、ECCモジュール116に、NVM120に記憶するユーザデータを符号化するように指示し、ECCモジュール116に、NVM120から読み取ったユーザデータを復号するように指示し、ガーベージコレクションを実行し、ウェアレベリングを実行し、NVM120のバスプロトコルと互換性のある読み取り及びプログラム命令を生成することなどができる。図2は、電子装置200の概略図であり、この図には、様々な実施形態による電子装置100図1のソフトウェア及びハードウェア構成要素のいくつかを詳細に示すことができる。従って、電子装置200は、図1に関連して上述した特徴及び機能のいずれかを有することができ、逆もまた同様である。電子装置200は、ファイルシステム210、NVMインターフェイス218、及びNVM220を含むことができる。NVMインターフェイス218は、例えば、図1のNVMインターフェイス118に対応することができ、NVMドライバ232及びNVMバスコントローラ234を含むことができる。ファイルシステム210及びNVMドライバ232は、ソフトウェアモジュールとすることができ、NVMバスコントローラ234及びNVM220は、ハードウェアモジュールとすることができる。従って、NVMドライバ232は、NVMインターフェイス218のソフトウェア面を表すことができ、NVMバスコントローラ234は、NVMインターフェイス218のハードウェア面を表すことができる。ファイルシステム210は、ファイルアロケーションテーブルFATファイルシステムなどのあらゆる好適な種類のファイルシステムを含むことができ、電子装置200のオペレーティングシステムの一部図1のSoC制御回路112の一部などであることができる。いくつかの実施形態では、ファイルシステム210が、YetAnotherFlashFileSystemYAFFSなどのフラッシュファイルシステムを含むことができる。これらの実施形態では、ファイルシステム210が、以下で説明するNVMドライバ232の機能の一部又は全部を実行することができ、従ってファイルシステム210とNVMドライバ232は別個のモジュールであることも、又はそうでないこともある。ファイルシステム210は、アプリケーション及びオペレーティングシステムのファイル及びフォルダ構造を管理することができる。ファイルシステム210は、電子装置200上で実行されるアプリケーション又はオペレーティングシステムの制御下で動作することができ、このアプリケーション又はオペレーティングシステムによってNVM220から情報を読み取ること又はNVM220に情報を記憶することが要求された時に、NVMドライバ232に読み取り及び書き込みコマンドをそれぞれ与えることができる。ファイルシステム210は、各読み取り又は書き込みコマンドとともに、論理ページアドレス、又はページオフセットを含む論理ブロックアドレスなどの、ユーザデータをどこから読み取り又はどこに書き込むべきかを示す論理アドレスを提供することができる。ファイルシステム210は、NVM220と直接的な互換性のないNVMドライバ232に読み取り及び書き込み要求を提供することができる。例えば、論理アドレスは、ハードドライブベースのシステム固有の規約又は協約を使用することができる。ハードドライブベースのシステムは、フラッシュメモリとは異なり、最初にブロックの削除を行わずにメモリ位置に上書きすることができる。さらに、ハードドライブは、装置の寿命を延ばすためにウェアレベリングを必要としない。従って、NVMインターフェイス218は、ファイルシステム要求を処理するための、及び他の管理機能を実施するためのメモリ固有の、ベンダ固有の、又はこれらの両方のいずれかの機能を、NVM220に適した形で実行することができる。NVMドライバ232は、トランスレーションレイヤ236を含むことができる。いくつかの実施形態では、トランスレーションレイヤ236を、フラッシュトランスレーションレイヤFTLとすることができる。書き込み動作時には、トランスレーションレイヤ236が、NVM220上の未使用の消去済みの物理アドレスに論理アドレスをマッピングすることができる。読み取り動作時には、トランスレーションレイヤ236が、この論理アドレスを使用して、要求されたデータが記憶されている物理アドレスを特定することができる。各NVMは、NVMのサイズ又はベンダに応じて異なるレイアウトを有することができるので、このマッピング動作は、メモリ及び/又はベンダに特化したものとなり得る。トランスレーションレイヤ236は、論理-物理アドレスマッピングに加え、他にもあらゆる好適な機能を実行することができる。例えば、トランスレーションレイヤ236は、ガーベージコレクション及びウェアレベリングなどの、フラッシュトランスレーションレイヤに特有のその他の機能のいずれかを実行することができる。NVMドライバ232は、NVMバスコントローラ234と相互作用して、書き込み要求、読み取り要求、削除要求などのNVMアクセス要求を完了することができる。例えば、NVMドライバ232は、NVMバスコントローラ234に、データを記憶又は検索するための、及び書き込み要求の場合には、対応する書き込むべきデータベクトルを記憶又は検索するための物理アドレスを提供することができる。NVMバスコントローラ216は、NVM220へのハードウェアインターフェイスとして機能することができ、またバスプロトコル、データ速度、及びNVM220のその他の仕様を使用してNVM220と通信することができる。NVMインターフェイス218は、本明細書ではメタデータと呼ぶこともあるメモリ管理データに基づいてNVM220を管理することができる。メタデータは、NVMドライバ232によって生成することもでき、又はNVMドライバ232の制御下で動作するモジュールによって生成することもできる。メタデータは、例えば、ファイルシステム210により提供される論理アドレスなどの論理アドレスと物理アドレスの間のマッピング、不良ブロック管理情報、ウェアレベリング情報、ガーベージコレクション情報、エラー訂正符号ECCデータ、又はこれらのいずれかの組み合わせを管理するために使用されるあらゆる情報を含むことができる。従って、一般に、本明細書で使用するメタデータという用語は、一般に不揮発性メモリの動作及びメモリ位置を管理するために使用できるユーザデータについての又はこれに関連するあらゆる情報及びユーザデータではない情報などを意味することができる。NVMインターフェイス218は、NVM220にメタデータを記憶するように構成することができる。いくつかの実施形態では、NVMインターフェイス218が、ユーザデータに関連するメタデータを、ユーザデータを記憶したページなどの位置と同じメモリ位置に記憶することができる。例えば、NVMインターフェイス218は、ユーザデータ、関連する論理アドレス、ユーザデータのECCデータ、及びその他のあらゆる好適なメタデータを、NVM220の1つのメモリ位置に記憶することができる。別の例として、NVM220のあらゆる好適なメモリ位置にメタデータを記憶することもできる。上述したように、図1のNVM120などの不揮発性メモリは、チップ、ブロック、ページ、スーパーブロックなどに編成することができる。例えば、図3及び図4に、NVM320の概略的なレイアウトを示す。図3及び図4は、NVM320の組織的レイアウトを例示するためのものにすぎず、不揮発性メモリの実際の物理レイアウトを示すものではない。例えば、図3及び図4には、チップ0がチップ1に隣接するように示しているが、これは、これらのチップの機能関係を例示するためのものにすぎず、NVM320の実際の物理レイアウトでは、これらのチップが互いに近くに位置することも、又はしないこともある。さらに、図3及び図4には、一定数のチップ、ブロック、及びページを示しているが、これは例示目的にすぎず、当業者であれば、NVM320があらゆる好適な数のチップ、ブロック、及びページを含むことができると理解するであろう。一例として、NVM320の各チップは、4096個のブロックを含むことができ、各ブロックは、そのブロックがSLCブロックであるか、2-bitMLCブロックであるか、又は3-bitMLCブロックであるかどうかに基づいて、64個、128個、又は192個のページを含むことができ、各ページは512バイトを含むことができる。図3に示すように、NVM320は、チップ0、チップ1、チップ2及びチップ3などの1又はそれ以上のチップすなわち、集積回路を含むことができる。次に、各チップを1又はそれ以上のブロックに編成することができる。例えば、チップ0を、ブロック0~3に編成された形で示している。NVM320の消去コマンド中には、メモリのブロック全体を一度に消去することができる。次に、チップの各ブロックを1又はそれ以上のページに編成することができる。例えば、チップ2のブロック302などのブロック0を、ページ0~3に編成された形で示している。NVM320の読み取り又は書き込みコマンド中には、全ページの読み込み又は書き込みをそれぞれ一度に行うことができる。NVM320は、各チップからのチップ内の同じ位置又はブロック番号を有する1ブロックを含む1又はそれ以上のスーパーブロックを含むこともできる。例えば、NVM320のスーパーブロック0は、チップ0~3の各々のブロック0を含むことができる。同様に、NVM320のスーパーブロック1は、チップ0~3の各々のブロック1を含むことができ、NVM320のスーパーブロック2は、チップ0~3の各々のブロック2を含むことができ、以下同様である。NVM320の各スーパーブロックは、スーパーブロックの各チップからの1ページを含むことにより形成される1又はそれ以上のストライプを含むことができ、各ページは、そのチップ内の同じページ番号を有する。例えば、図4に、NVM320のストライプ310を示している。ストライプ310は、スーパーブロック0のチップ1~3の各々の同じページ番号を含むことができる。NVM320の動作中には、このストライプ及び/又はスーパーブロックのページを順に処理することができる。例えば、ストライプ310の読み取り又は書き込み動作中には、ページ320を処理し、その後ページ330を処理し、ページ340を処理し、そしてページ350を処理することができる。このように、ストライプ312に含まれるデータを、情報のコードワードと見なすことができる。具体的には、本明細書で使用するコードワードという用語は、不揮発性メモリの1又はそれ以上の連続するページに含まれる、全体として1つの情報を形成するデータを意味することができる。以下でより詳細に説明するように、コードワードは、単一のストライプに限定されるわけではなく、1又はそれ以上のストライプの連続するページからのデータを含むことができる。NVM320の各ページは、あらゆる好適な情報を含むことができる。例えば、これらのページは、ユーザデータ、メタデータ、又はこれらの両方を含むことができる。いくつかの実施形態では、ECCデータなどのメタデータをページに含めて、NVM320に記憶された情報のエラー検出及び/又は訂正のために提供することができる。例えば、図1のECCモジュール116などのECCモジュールは、単一ページのユーザデータにエラー訂正符号を適用して内部ECCデータを生成することができる。次に、この内部ECCデータを使用して、この単一ページのユーザデータを訂正及び/又は検証することができる。一例として、図4に、ページ322、332、342及び352を含むことができるストライプ312を示す。ページ322、332、342及び352内のデータは、全体としてコードワード390を形成することができる。例えば、ページ322は、ユーザデータ324から成る第1の部分と、内部ECCデータ326から成る第2の部分とを含むことができる。説明を単純にするために図示してはいないが、ページ322は、NVM320の管理又は動作のための他のあらゆる好適なデータ又は位置データ、生成データなどのメタデータを含むこともできる。上述したように、ECCデータ326は、好適なECCモジュールに、ページ322のユーザデータに対してエラー訂正符号を実行させて、このECCデータを生成することにより生成することができる。記憶されたデータを読み取ること、又はこのデータに別様にアクセスすることなどのページ322の検索中には、ページ322の内部ECCデータを使用して、ページ322のユーザデータの完全性を維持することができる。例えば、ページ322のユーザデータ内にt個以下のエラーしか存在しない場合、このページの内部ECCデータを使用してこれらのエラー訂正することができる。同様に、ページ322のユーザデータ内にn個以下のエラーしか存在しない場合、このページの内部ECCデータは、ページ322内にどれほどのエラーが存在するかを識別することができる例えば、この場合nの方がtよりも大きいものとすることができる。同様に、ページ332及びページ342などのページは、ユーザデータ及びこれらの関連する内部ECCデータを含むことができる。いくつかの実施形態では、ECCデータを1又はそれ以上のページのユーザデータにさらに提供することができる。例えば、図1のECCモジュール116などのECCモジュールは、コードワード全体のユーザデータにエラー訂正符号を適用して、外部ECCデータを生成することができる。この外部ECCデータを使用して、コードワードのユーザデータを全体として訂正することができる。一例として、図4に、ページ322、332及び342のユーザデータに関連できる外部ECCデータ356を含むことができるストライプ312のページ352を示している。換言すれば、ページ352の外部ECCデータ356を使用して、コードワード390全体のエラーを訂正及び/又は検出することができる。外部ECCデータ356を生成するためには、上述したようにコードワード390全体に対して好適なエラー訂正を実行したはずである。ページ352は、例えば、単一ページのみのための内部ECCデータではなくコードワード390全体のための外部ECCデータを含むことができるので、ページ352をパリティページ352と呼ぶことができる。本明細書で使用するパリティページという用語は、2又はそれ以上のデータページのユーザデータ内のエラーを訂正及び/又は検出するための外部ECCデータを含むことができるNVMのページを意味する。いくつかの実施形態では、パリティページを外部ECCデータ専用にすることができ、パリティページが独自のユーザデータを含まなくてもよい。さらに、図4には外部ECCデータ356を示し、これが例えば、パリティページ352内の情報の全てのバイトを使用しているのでパリティページ352全体を満たしているが、これとは別に、外部ECCデータ356がページ352の一部しか満たさない場合もある。具体的には、外部ECCデータは、この外部ECCデータを保持するのに必要なだけのパリティページの空間しか使用しなくてよい。例えば、コードワード390のための外部ECCデータが400バイトの情報を含み、パリティページ352が512バイトを記憶できる場合、この外部ECCデータは、パリティページ352の512バイトのうちの400バイトしか占めなくてよい。このようにすることで、これらのコードワード390の各ページ内のデータを2回保護することができる。最初に、各ページは、そのページの内部ECCデータによって保護される例えば、内部ECCデータ326によってユーザデータ324を保護することができる。一例として、ユーザデータ324がt個以下のエラーしか有していない場合、内部ECCデータ326を使用してこれらのエラーを訂正することができる。次に、パリティページ352の外部ECCデータ356を通じて、ユーザデータ322に第2の保護層を提供することができる。例えば、ユーザデータ322が、t個よりも多くのエラーを有する場合、ページ322の内部ECCデータ326だけでは、ユーザデータ322を訂正するのに不十分な恐れがある。この場合、パリティページ352の外部ECCデータ356を使用して、ユーザデータ322を訂正することができる。例えば、コードワードのページのユーザデータ、及びパリティページの外部ECCデータに関わる方程式を生成することができる。説明を簡単にするために、一例として単純な加算方程式を以下に示す。X=ABC1式中、Xは、パリティページ352の外部ECCデータに関連し、Aは、ページ322のユーザデータに関連し、Bは、ページ332のユーザデータに関連し、Cは、ページ342のユーザデータに関連することができる。説明を単純にするために、方程式1を加算方程式として示しているが、これとは別に、X、A、B、及びCを含む他のあらゆる好適な方程式を使用することもできる。B及びCが両方ともt個よりも少ないエラーしか含まないと仮定すれば、B及びCのユーザデータを正しく認識することができる。Aがt個よりも多くのエラーを有する場合、Aは、Aを訂正するのに内部ECCデータでは不十分な訂正不能ページとなり得る。この場合、方程式1をAについて解くことにより、Aの正しいユーザデータを求めることができる。A=X-B-E2このように、パリティページ352の外部ECCデータ356を使用して、ページの正しいユーザデータを求めることができ、NVM320のユーザデータに第2のレベルの保護を提供することができる。さらに、これにより、あるページがt個よりも多くのエラーを含んでいる場合例えば、ページが訂正不能である場合でも、このページのユーザデータを訂正することができる。いくつかの実施形態では、NVM320が、例えば、不揮発性メモリ内の他のデータよりも重要な又はエラーを起こしやすいユーザデータを含むことがある。このような場合、このようなデータに追加の保護を行うことが望ましい場合がある。例えば、コードワードに1つのパリティページが提供されている場合、t個よりも多くのエラーを有するページが1つ以下の場合には、依然としてこのページ内のユーザデータを訂正することができる。しかしながら、コードワードが、t個よりも多くのエラーを有するページを2つ又はそれ以上含む場合、例えば、方程式1などの1つの方程式から2つの未知数を求めることはできないので単一の外部ECCデータだけでは、これらの両方のページを訂正できない場合がある。従って、いくつかの実施形態では、2又はそれ以上のパリティページなどの2又はそれ以上のECCデータの組をコードワードに提供して、このコードワードのユーザデータに追加の保護を行うことができる。例えば、ECCモジュールは、コードワード全体のユーザデータに対して2つのエラー訂正符号を実行することができ、各エラー訂正符号により1組のECCデータを生成することができる。その後、この2組のECCデータをコードワードの2つのパリティページに記憶することができる。いくつかの実施形態では、コードワードが、単一のストライプに限定されるのではなく、スーパーブロックの2又はそれ以上のストライプにわたることができる。例えば、図5に、不揮発性メモリのスーパーブロック500を示す。例えば、スーパーブロック500は、図3のNVM320のスーパーブロック0~3のいずれかに対応することができる。図5には、スーパーブロック500が、4つのチップすなわち、チップ0~3の各々からのブロックを含むものとして示し、これらのブロックの各々が4つのページすなわち、ページ0~4を有するものとして示しているが、これは例示目的にすぎない。これとは別に、スーパーブロック500は、あらゆる好適な数のチップ及び/又はページを含むことができる。図5に示すように、ページA1、B1及びY1は、単一のコードワードコードワード1を形成することができ、Y1をコードワード1のパリティページとすることができる。同様に、A1、B2、C2、X1及びX2は、単一のコードワードコードワード2を形成することができ、X1及びX2を、それぞれコードワード2のパリティページとすることができる。コードワード1及びコードワード2を、それぞれ3つ及び4つのページを有するものとして示しているが、これは例示目的であり、これとは別に、コードワード1及びコードワード2は、あらゆる好適な数のページを含むことができる。従って、図5には、コードワードがスーパーブロック500のあらゆる好適な位置において開始又は終了することができ、特定の位置において開始及び終了することに限定されない例えば、ストライプの最初から開始し、又はストライプの最後で終了することなどに限定されないことを示している。このように、不揮発性メモリのパリティページは、スーパーブロック内で不規則に分布することができる。図5には、コードワードのユーザデータを保護するために、この単一のコードワードが2又はそれ以上のパリティページを含むことができることも示している。いくつかの実施形態では、重要度の高い情報を保護するためにより多くのパリティページを使用することができ、重要度の低い情報を保護するためにより少ないパリティページを使用することができる。別の例として、いくつかの実施形態では、エラーを起こしやすいページを保護するためにより多くのパリティページを使用することができ、エラーを起こしにくいページを保護するためにより少ないパリティページを使用することができる。従って、コードワードは、これに関連する複数のパリティページを有することができるので、複数のページがt個よりも多くのエラーを有する場合例えば、複数のページが訂正不能である場合にもコードワードを訂正することができる。一例として、図5のコードワード2は、X1及びX2という2つのパリティページを有する。このように、2つのパリティページを利用できるので、コードワードのページのユーザデータ、及びパリティページのECCデータに関わる2つの好適な方程式を生成することができる。例えば、以下に2つの例示的な方程式を示す。X1=A2B2C23X2=A2B2C24方程式3及び4は、例示を目的とするものにすぎず、2つの訂正不能ページの復元を十分にサポートする他のいずれの2つの方程式を使用してもよい。例えば、いくつかの実施形態では、第1の方程式をGF2加算方程式などの単純なXOR方程式とすることができ、第2の方程式をGF2xに基づくリードソロモン方程式とすることができ、この場合、xは、8又はその他のいずれかの好適な数に相当することができる。従って、コードワード2の最大2ページがt個よりも多くのエラーを有する例えば、訂正不能である場合、例えば、2つの方程式からは2つの未知数を求めることができるので方程式3及び4を同時に解いて、これらのページの正しいユーザデータを求めることができる。このように、コードワードのための追加の外部ECCデータの組を生成することにより、追加の保護層を提供して、コードワードをデータエラーから保護することができる。同様に、コードワードを保護するために、あらゆる好適な数のパリティページ及び外部ECCデータの組を含めることができる。例えば、例えば、t個以上のエラーを有する訂正不能なページがn個以下の場合、コードワードのためにn組の外部ECCデータを生成して、このコードワードを訂正することができる。本明細書で使用する訂正不能又は訂正不能ページという用語は、t個よりも多くのエラーを有し、そのページ内の内部ECCデータによって訂正できないページを意味することができる。しかしながら、訂正不能ページを含むコードワードが例えば、適切な数の外部ECCデータの組を有する好適な数のパリティページを有する場合には、依然としてこの訂正不能ページを修復することができる。従って、本明細書で使用する訂正不能ページという用語は、1又はそれ以上のパリティページの使用を通じてこのようなページを修復することができるので、このページを絶対に訂正できないことを意味するものではない。図5のパリティページは不規則に分布しているので、例えば、コードワードはあらゆる位置において開始及び終了できるのでスーパーブロックのパリティページがどこに位置するかを直ちに認識できないこともある。従って、いくつかの実施形態では、ページのメタデータに、どのページがパリティページであるかを示すためのマーカーを含めることができる。例えば、各ページのメタデータタグとしてパリティページマーカーを含めることができる。一般に、このメタデータタグとして単一ビットを使用することができる。例えば、ページがパリティページである場合には、ビットを1とすることができ、ページがパリティページでない場合には、0とすることができ、又は逆であってもよい。或いは、パリティページマーカーのために他のあらゆる好適な数のビットを使用することもできる。各ページのメタデータタグにパリティページマーカーを記憶することにより、システムのメモリ内の空間を節約することができる。例えば、パリティページマーカーを含んでいなければ、不揮発性メモリの各ページ、及びそのページがパリティページであるか否かを記録する例えば、図1のNVM120又はメモリ114に記憶される別個のテーブルを記憶することが必要となり得る。しかしながら、各ページが、別個のテーブルを維持する代わりにパリティページマーカーを含んでいる場合、あるページを読み取り、又はそのデータに別様にアクセスすることなどの処理のために検索する際に、システムは、そのページがパリティページであるかどうかを判断することができる。ページがパリティページ又は非パリティページとして正しく識別されることを支援するために、このパリティページマーカーを含むメタデータタグを冗長的に記憶することができる。例えば、図1のNVMインターフェイス118などのNVMインターフェイスは、書き込み要求に応答して、データ及びその関連するパリティページマーカーをページなどの第1のメモリ位置に記憶し、このパリティページマーカーの冗長コピーを第2のメモリ位置に記憶することができる。こうすれば、たとえ第1のメモリ位置がアクセス不能になったとしても、メモリインターフェイスは、なおも第2のメモリ位置に記憶されたバックアップコピーからパリティページマーカーを回収することができる。従って、システムは、ページがパリティページであるか否かを依然として正確に判断することができる。2009年9月18日に出願された不揮発性メモリのためのメタデータ冗長方式METADATAREDUNDANCYSCHEMESFORNON-VOLATILEMEMORIESという名称の、同一出願人による同時係属中の米国特許出願第12/562,860号に記載されるように、パリティページマーカーに加えて、他のあらゆる好適なメタデータを冗長的に記憶することもでき、この特許出願はその全体が本明細書に組み入れられる。NVMの各ページは、パリティページマーカーを含むことができるので、あらゆるコードワード内からそのコードワードのサイズを特定することができる。例えば、再び図5を参照して、NVMインターフェイス又は電子装置の他のあらゆる好適な構成要素などが、スーパーブロック500のデータを走査例えば、読み取りしているものとする。一例として、NVMインターフェイスが、現在コードワード2のページA2を走査しているものとする。NVMインターフェイスは、コードワード2のサイズを特定するために、パリティページに遭遇するまで左向きに走査することができる。本明細書で使用する左向きに走査という用語は、NVMのページを現在の処理方向とは逆の方向に走査することを意味する。例えば、図5では、左向きに走査するために、スーパーブロック500のページをA2、Y1、B1、A1、のような順序で走査することができる。ここでも、図5はNVMの機能を示すものにすぎず、NVMの物理レイアウトを示すことは意図していないので、左向きに走査という用語は、ページの物理レイアウトを示すものではなく、ページを処理する順序を示すためのものにすぎない。さらに、左向きに走査する場合、この走査は、ページをラップアラウンドして、1つのストリップから別のストリップへ進むことができる。例えば、左向きに走査する場合、C1、B2、A2、のような順序でページを処理することができる。同様に、本明細書で使用する右向きに走査という用語は、NVMのページを現在の処理方向に走査することを意味する。例えば、図5では、右向きに走査するために、スーパーブロック500のページをY1、A2、B2、C1、X1、のような順序で走査することができる。従って、NVMインターフェイス又は電子装置の他の好適な構成要素などは、図示のようなコードワードのサイズを特定するために、ページA2から左向きに走査することができる。NVMインターフェイスは、パリティページすなわち、ページY1に遭遇するまで左向きに走査し続けることができる。例えば、NVMインターフェイスは、ページのパリティページマーカーを読み取ることにより、そのページがパリティページであると判断することができる。ページY1は、前のコードワードの最後を示すことができるので、NVMインターフェイスは、コードワード2がページY1の右側のページすなわち、ページA2から開始すると判断することができる。NVMインターフェイスは、コードワード2の最後を特定するために、パリティページすなわち、ページX1に遭遇するまで右向きに走査することができる。その後、NVMインターフェイスは、非パリティページすなわち、ページA3に遭遇し、従って新たなコードワードの指示が開始されるまで、右向きに走査し続けることができる。この結果、NVMインターフェイスは、これらの2つの走査から、例えば、右向きの走査において2つのパリティページに遭遇したという理由でコードワード2が2つのパリティページを有し、コードワードのサイズがページA2、B2、C2、X1及びX2などの5ページの長さにわたると判断することができる。いくつかの実施形態では、パリティページマーカーに加えて、又はパリティページマーカーの代わりに、ページは、最初のページマーカーを含むことができる。例えば、あるページのメタデータに、このページがコードワードの最初のページであることを示すメタデータタグを含めることができる例えば、ページA2が、最初のページのメタデータタグを含むことができる。従って、この場合、コードワードの先頭を特定するために、NVMインターフェイスは、最初のページのメタデータタグに遭遇するまで左向きに走査することができる。いくつかの実施形態では、不規則な分布のパリティページを含めると、電子装置の様々な動作に影響することがある。一例として、不規則な分布のパリティページは、装置の起動シーケンスに影響を及ぼすことがある。上述したように、NVMインターフェイスは、NVMのユーザデータの論理-物理アドレスマッピングを記憶することができる。具体的には、この論理-物理アドレスマッピングを維持するために別個のテーブルすなわちアドレステーブルを作成することができる。しかしながら、このアドレステーブルは、隣接位置、障害、読み取り動作の失敗による阻害作用、又は他の何らかのエラー誘発現象に起因して、無効になること例えば、テーブルが更新されずにユーザデータが移動すること、或いはエラーを生じること又は読み取り不能になることがある。従って、アドレステーブルの完全性を保持する助けとするために、NVMの起動時にこのテーブルを再構築することができる。例えば、起動時に、NVMの各ページを走査して、ページのメタデータから各ページの論理アドレスを読み取ることができる。その後、この論理アドレスをページの物理アドレスに関連付けて、アドレステーブルに記憶することができる。しかしながら、パリティページは、ユーザデータを含まないこともあるので、一般的には、パリティページの論理アドレスをアドレステーブルに記憶する必要はないと考えられる。従って、電子装置の起動中にアドレステーブルを作成する際に、これらのページをスキップすることができる。しかしながら、パリティページの不規則な分布に起因して、システムがパリティページの位置を容易に認識できないこともある。従って、起動中に、各ページのパリティページマーカーを読み取ることができる。このパリティマーカーが、ページが非パリティページであることを示す場合、このページの論理アドレス及び関連する物理アドレスをアドレステーブルに記憶することができる。一方、パリティページマーカーが、ページがパリティページであることを示す場合には、このページをスキップし、このページの論理アドレスがアドレステーブルに記憶されないようにすることができる。ここで図6を参照すると、本発明のいくつかの実施形態による処理600の例示的なフローチャートを示している。図1の電子装置100などの電子装置の起動時に、処理600を実行してアドレステーブルを構築することができる。具体的には、処理600を実行して、パリティページが不規則な分布した不揮発性メモリに関連するアドレステーブルを構築することができる。処理600は、図1及び図2のNVMインターフェイス118又は218などのあらゆる好適なメモリインターフェイスによってそれぞれ実行することができ、処理600をそのように説明していることもある。しかしながら、メモリシステム又は電子装置内の他のあらゆる好適な単複の構成要素を、これらのステップを実行するように構成することもできると理解されたい。処理600は、ステップ602から開始することができる。例えば、ステップ602は、電子装置の起動時に行うことができる。ステップ604において、処理600は、現在のページのパリティページマーカーを読み取ることによってNVMのページを走査することができる。ステップ606において、パリティページマーカーを解析して、このページがパリティページであるか否かを判定することができる。例えば、1のパリティページマーカーは、ページがパリティページであることを示すことができ、0のパリティページマーカーは、ページがパリティページでないことを示すことができる。これとは別に、他のあらゆる好適なマーカー又はビットシーケンスを使用して、ページがパリティページであるか否かを示すことができる。ページがパリティページでないと判定されたことに応答して、処理600はステップ608へ進み、このページをアドレステーブルに追加することができる。具体的には、ステップ608において、ページの論理アドレスを読み取ることができる。ステップ608において、この読み取った論理アドレスをページの物理アドレスに関連付けて、アドレステーブルに記憶することができる。ステップ612において、処理600は、NVM内に未だ走査されていないページ例えば、物理的位置がさらに存在するかどうかを判断することができる。さらなるページが存在することに応答して、処理600は、ステップ616においてNVMの次のページへ進むことができる。その後、NVM全体が走査されてアドレステーブルが完成するまで、必要に応じてステップ604、606、608、610、612及び616をループ及び反復することができる。NVM内に走査すべきページがこれ以上存在しないことに応答して、処理600は、ステップ612からステップ614へ進んで処理を終えることができる。ステップ606に戻ると、パリティページマーカーが、現在のページがパリティページであることを示すことに応答して、処理600は、直接ステップ612へ進むことができる。このように、ステップ608及びステップ610を迂回することにより、パリティページの論理アドレスをスキップし、これがアドレステーブルに記憶されないようにすることができる。従って、処理600を実行することにより、NVMインターフェイスは、ユーザデータを含むページ例えば、非パリティページの論理-物理アドレスを含むアドレステーブルを構築する一方で、外部ECCデータしか含まない全てのページ例えば、パリティページを迂回する。具体的には、ページがパリティページであると判断した時点で、処理300は、このパリティページを無視し例えば、このパリティページのメタデータの論理アドレス領域を無視し、代わりに非パリティページが見つかるまでNVMのページを走査し続けることができる。パリティページの不規則な分布によって影響されることがあるシステム動作の別の例に、NVMからのデータの検索がある。例えば、データの検索は、いつパリティページが読み取られ、処理され、又はその記憶データに別様にアクセスさせるかを含むことができる。データを検索する際には、t個よりも多くのエラーを有するページなどの1又はそれ以上の訂正不能ページに遭遇することがある。単一のパリティページ及び/又は規則的に分布するパリティページしか含まないシステムでは、システムが、コードワード内のどれほどの訂正不能ページを修復できるかを自動的に認識することができる。しかしながら、不規則な分布のパリティページを含むシステムでは、このシステムは、コードワードを修復できるかどうかを判断する前に、まずこのコードワードに関連するパリティページの数を特定することを必要とすることができる。例えば、コードワードの検索中に、2つの訂正不能ページに遭遇した場合、システムは、このコードワードが2又はそれ以上の組の外部ECCデータを有しているかどうかの判断を必要とすることができる。このコードワードが、2又はそれ以上の組の外部ECCデータを伴っている場合、この2つの訂正不能ページをエラーのないページに置き換えて、コードワードの信憑性を復元することができる。上述したように、システムは、例えば、コードワードが1組の外部ECCデータを有する場合には方程式1、又は例えば、コードワードが2組の外部ECCデータを有する場合には方程式3及び方程式4などの方程式、又は他のあらゆる好適な方程式を適用して、t個よりも多くのエラーを含むコードワード内の訂正不能ページを修復することができる。従って、いくつかの実施形態では、あるコードワードを検索する時に、このコードワードのデータをバッファすることができる。その後、コードワード全体の検索が完了した時に、システムは、どれほどの訂正不能ページが存在し、そのコードワードにどれほどのパリティページが利用可能であるかを判断することができる。この情報から、システムは、訂正不能ページを修復できるかどうかを判断することができ、できる場合には、バッファしているデータを適用して適当な方程式を解き、これにより訂正不能ページの正しい値を求めることができる。いくつかの実施形態では、コードワードを検索する最初からコードワードをバッファするのではなく、訂正不能ページを検出した後にバッファを開始することができる。訂正不能ページを有していないコードワードはバッファしなくてもよいので、例えば、これによりシステム内のメモリを節約することができる。一例として、システムが、図5のコードワード2を検索し、ページB2が訂正不能であると判断したとする。システムは、訂正不能ページに遭遇すると、ページA2などのそのコードワードの先頭に遭遇するまで左向きに走査することができる。次に、システムは、ページB2の左側にある1又は複数のページをバッファするとともに、ページB2自体もバッファすることができる。次に、システムは、ページB2の後のコードワードのページの検索及びバッファに進むことができる。さらなる訂正不能ページに遭遇したことに応答して、システムは、これらの訂正不能ページを修復するための好適な数のパリティページが存在する可能性があるので、コードワードのページの検索及びバッファを継続することができる。換言すれば、これらの訂正不能ページを修復するための好適な数の外部ECCデータの組がコードワードの最後に存在する可能性もあるので、システムは、訂正不能ページに遭遇した時点でコードワードが修復不能であると自動的に見なすことができない。システムは、コードワードの最後に行き着くと、例えば、ページのパリティページマーカーを読み取ることによってどれほどのパリティページが利用可能であるかを判断し、好適な数のパリティページが存在する場合には、例えば、方程式1、3、4、又はいずれかの好適な数の外部ECCデータの組に関連する他のあらゆる好適な方程式を適用することによって訂正不能ページを修復することができる。いくつかの実施形態では、コードワードをバッファするのではなく、コードワードを検索している時に、ページを訂正するための1又はそれ以上の好適な方程式をオンザフライで計算することができる。一例として、システムは、コードワードを検索する時に、このコードワードが2つのパリティページ又は他のいずれかの好適な数のパリティページなどを伴っているかのようにページを処理することができる。従って、ページを検索する時に、このページのデータを使用して、方程式3及び方程式4又はその他のあらゆる好適な方程式などの方程式の計算をオンザフライで更新することができる。システムは、コードワードの最後に到達し、実際にどれほどのパリティページが存在するかを判断した時点で、例えば、両方の方程式を適用し、方程式の一方のみを適用し、方程式を適用せず、又はコードワードを廃棄することができる。例えば、2つの訂正不能ページ及び2つのパリティページが存在するとの判断時には、両方の方程式を適用してこれらのページを修復することができる。別の例として、1つの訂正不能ページ及び1つのパリティページが存在するとの判断時には、計算した方程式の一方を使用してこのページを訂正することができる例えば、同時に他方の計算した方程式を廃棄することができる。さらに別の例として、訂正不能ページが存在しないとの判断時には、修復の必要がないので、いずれの計算した方程式も使用しなくてよい。さらに別の例として、訂正不能ページを修復するのに十分なパリティページが存在しないとの判断時には、このコードワードを不正確なデータを有しているものとして廃棄することができる。同様に、コードワードを検索した時に、3又はそれ以上の方程式を計算するオンザフライ法を使用することもできる。図7A、図7B、及び図8には、不揮発性メモリのコードワードからデータを検索するための処理700、750、及び800をそれぞれ示す。処理700、750、及び800は、図1及び図2のNVMインターフェイス118又は218などのあらゆる好適なメモリインターフェイスによってそれぞれ実行することができ、これらの処理をそのように説明していることもある。しかしながら、メモリシステム又は電子装置内の他のあらゆる好適な単複の構成要素を、これらのステップを実行するように構成することもできると理解されたい。例えば、処理700及び750では、コードワードのページのデータが検索された時に、このデータをバッファすることができる。その後、このバッファされたデータを使用して、コードワードの訂正不能ページを修復することができる。処理700は、ステップ702から開始することができる。704において、NVMから特定のデータの組を検索する要求を受け取ることができる。例えば、データを読み取る要求、データを処理する要求、又は別様にデータにアクセスする要求を受け取ることができる。ステップ706において、この要求を、関連する物理アドレスの組に変換することができる。例えば、特定のデータの組を記憶するページの物理アドレスを決定することができる。ステップ708において、ステップ706の物理アドレスに記憶されたデータを検索することができる。データの検索中、処理700は、ステップ710において、訂正不能ページに遭遇したかどうかを判断することができる。訂正不能ページに遭遇してないことに応答して、物理アドレスのデータの検索を正常に続行することができる。換言すれば、外部ECCデータに関連する、又は訂正不能ページを修復することに関連する追加ステップを実行することなくデータを検索することができる。一方、処理700は、訂正不能ページに遭遇したことに応答してステップ716へ進むことができる。ステップ716において、検索を要求されたデータをバッファすることができる。例えば、NVMは、訂正不能ページから開始して左向きに、その後右向きに走査して、ステップ706において決定された物理アドレスに記憶されているデータをバッファすることができる。その後、このバッファされたデータを使用して、訂正不能ページを修復することができる。例えば、このバッファされたデータを、このデータに関連する1又はそれ以上の外部ECCコードとともに使用して、訂正不能ページ修復することができる。その後、処理700は、ステップ714において終了することができる。図7Bに進むと、処理750は、例えば、コードワードのページのデータを検索する時に、このデータをバッファすることができる。処理750のステップのいくつかは、図7Aの処理700のステップの1又はそれ以上に対応することができる。例えば、処理750のステップは、処理700のステップ708、710、712、及び714をより詳細に示すことができる。処理750は、ステップ752から開始することができる。ステップ754において、コードワードの最初のページ例えば、物理アドレスを検索することができる。例えば、このコードワードは、処理700のステップ706において決定された物理アドレスの組に対応することができる。ページのデータを検索するために、このページを読み取り、処理し、又はその記憶データにアクセスさせることができる。ステップ756において、処理750は、ステップ754において検索されたページが訂正不能であるかどうかを判断することができる。例えば、このページがt個よりも多くのエラーを有している場合、このページを訂正不能、従ってページの内部ECCデータではこのページのエラーを訂正できないものとすることができる。ページが訂正不能でないことに応答して、処理750は、ステップ758において、コードワードの最後に到達したかどうかを判定することができる。コードワードの最後に到達していない場合、処理750は、ステップ754へ戻って次のページ例えば、物理アドレスを検索することができる。或いは、コードワードの最後に到達した場合、処理750は、ステップ760において終了することができる。このように、コードワードのページがいずれも訂正不能でない場合、コードワード全体を検索することができすなわち、ステップ754、756、及び756をループすることにより、処理750は、いずれのページもバッファさせることなく終了することができる。ステップ756に戻ると、コードワードのページが訂正不能であることに応答して、NVMインターフェイスは、ステップ762において、そのコードワードの先頭まで左向きに走査することができる。例えば、NVMインターフェイスは、ページがパリティページであることを示すメタデータタグなどのパリティページマーカーを有するページに到達するまで左向きに走査することにより、コードワードの先頭を識別することができる。この場合、パリティページに直接続くページを、コードワードの先頭として特定することができる。別の例として、NVMインターフェイスは、最初にメタデータタグに遭遇し、従ってそのページがコードワードの最初のページであることが示されるまで左向きに走査することができる。NVMインターフェイスは、ステップ754において検索したページの左側にあるページ、及びステップ754において検索したページ自体をバッファすることができる。その後、処理750は、ステップ764及びステップ766において、コードワードの残りのページの検索及びバッファを継続することができる。コードワードの最後に到達したこと、及びコードワード全体がバッファされたことに応答して、ステップ768において、パリティページ及び訂正不能ページの数を特定することができる。例えば、NVMインターフェイスは、訂正不能ページが検索された時に、これらのページの数の集計を保持しておくことができる。パリティページの数を特定するために、NVMインターフェイスは、これらのパリティページを、ページがパリティページでないことを示す従って、コードワードの全てのパリティページを走査し終えたことなどを示すパリティページマーカーを有するページに到達するまで右向きに走査することができる。1又はそれ以上のパリティページの使用を通じてページを修復できない可能性がある例も存在し得る。これらの例では、NVMコントローラが、複数の訂正不能エラー処理ポリシのいずれか1つを呼び出すことができる。例えば、ユーザデータページが訂正不能である場合、NVMコントローラは、揮発性メモリのデータ構造にアクセスすることによってこのページを回復し、このページのメタデータを取得することができる。訂正不能エラーからの回復により、システムが動作を継続し、データの一貫性を保持できるようになる。訂正不能エラーから回復させるためのさらなる詳細は、例えば、Post他による、__年__月__日に本願と同時に出願された不揮発性メモリのための訂正不能エラー処理方式UncorrectableErrorHandlingSchemesforNon-VolatileMemoriesという名称の米国特許出願第_______号代理人整理番号P8905US1に見出だすことができ、この開示はその全体が引用により組み入れられる。別の例として、インデックスページすなわち、論理セクタから物理アドレスへのマッピングを記憶するNVM内のページが訂正不能である場合、NVMは、復元動作を呼び出す前に、揮発性メモリのデータ構造にアクセスすることによってこのページを再構成しようと試みることができる。訂正不能エラーを有するインデックスページを処理するためのさらなる詳細は、例えば、Wakrat他による、2009年7月24日に出願された米国特許出願第12/509,071号、及びPOSTらによる、__年__月__日に本願と同時に出願された、インデックスブロックのためのガーベージコレクション方式GarbageCollectionSchemesforIndexBlockという名称の米国特許出願第_______号代理人整理番号P8907US1において見出すことができ、これらの両開示はその全体が引用により組み入れられる。ステップ770において、処理750は、コードワードが修復可能であるかどうかを判定することができる。例えば、パリティページの数が訂正不能ページの数以上である場合、このコードワードは修復できる可能性がある。別の例として、パリティページの数が訂正不能ページの数未満である場合、このコードワードは修復できない可能性がある。コードワードが修復可能であることに応答して、ステップ772において、このコードワードを修復することができる。例えば、例えば、コードワードが1組の外部ECCデータを有している場合には方程式1、又は例えば、コードワードが2組の外部ECCデータを有している場合には方程式3及び方程式4などの方程式、又はその他のあらゆる好適な方程式を計算して、訂正不能ページを修復することができる。その後、処理750は、ステップ760において終了することができる。一方、コードワードが修復可能でない場合、ステップ774において、このコードワードを、例えば不正確なデータを有するものとして廃棄することができる。いくつかの実施形態では、これとは別に、処理750がステップ764から開始し、それよりも前のステップを省くことができる。例えば、そうすることで、最初に少なくとも1つの訂正不能ページが存在するかどうかを判断せずに、常にコードワードのデータをバッファするシステムを実現することができる。図8に、不揮発性メモリのコードワードからデータを検索するための処理800を示す。例えば、処理800は、データを検索する時に、方程式をオンザフライで計算して、コードワードの訂正不能ページを修復することができる。換言すれば、処理800は、訂正不能ページのデータをバッファする必要なくこれらのページを修復することができる。説明を単純にするために図示してはいないが、処理800は、処理700のステップ704及びステップ706などの、コードワードの検索要求を受け取り、この検索要求を物理アドレスの組に変換する事前のステップをさらに含むことができる。処理800は、ステップ802から開始することができる。ステップ804において、この処理は、コードワードがm個のパリティページ例えば、m組の外部ECCデータを有し、これらのパリティページに関連する方程式がm個存在すると推定することができる例えば、mは1、2、3、4、又はその他のあらゆる好適な数であってよい。例えば、mが1に等しい場合、処理800は、方程式1を推定することができる。別の例として、mが2に等しい場合、処理800は、方程式3及び方程式4を推定することができる。ステップ806において、コードワード内の最初のページを検索することができる。例えば、このページを読み取り、処理し、又はその記憶データに別様にアクセスさせることができる。ステップ808において、ステップ804で特定した1又は複数の方程式の計算を、検索したページのデータを使用して更新することができる。ステップ810において、処理800は、コードワードの最後に到達したかどうかを判定することができる。最後に到達していないことに応答して、処理800はステップ806へ戻り、ステップ808及びステップ810を繰り返すことができる。このように、コードワードの最後に到達するまでステップ806、808及び810をループすることにより、コードワードを継続的に進行してページを検索し、この検索したページのデータを使用して計算を更新することによってステップ804の方程式をオンザフライで計算することができる。コードワードの最後に到達したことに応答して、処理800は、ステップ812において、そのコードワードに関連する実際のパリティページの数を特定することができる。例えば、NVMインターフェイスは、コードワードのパリティページに到達すると、ページがパリティページでないことを示す従って、このコードワードの全てのパリティページが走査されたことを示すパリティページマーカーを有するページに到達するまでパリティページを右向きに走査することにより、パリティページの数を特定することができる。ステップ812で特定された実際のパリティページの数は、ステップ804で推定したパリティページの数mと等しい場合も、又は等しくない場合もある。ステップ812において、NVMインターフェイスは、コードワード内の訂正不能ページの数を特定することもできる。例えば、NVMインターフェイスは、コードワードを検索する時に、t個よりも多くのエラーを含むページの数の集計を保持しておくことができる。ステップ814において、m個の方程式からもしあれば誤った方程式を廃棄することができる。誤った方程式は、処理800で計算した、存在すると推定はしたものの、方程式を作成するための好適な外部ECCデータが存在しないあらゆる方程式を含むことができる。一例として、ステップ804において、NVMインターフェイスが、2つのパリティページが存在すると推定し、従ってコードワードが検索された時に方程式3及び方程式4をオンザフライで計算したと考える。しかしながら、ステップ812において、NVMインターフェイスが、コードワードに関連する実際のパリティページが1つしか存在しないと判断したと考える。この結果、ステップ814において、方程式4を誤った方程式として廃棄することができる。ステップ816において、処理800は、コードワードが修復可能であるかどうかを判断することができる。例えば、ステップ814で廃棄されなかった方程式の数又はステップ812において特定された実際のパリティページの数などが訂正不能ページの数以上である場合、コードワードを修復することができる。コードワードが修復可能であることに応答して、ステップ818においてこのコードワードを修復し、処理はステップ820において終了することができる。例えば、ステップ814で廃棄されなかった1又はそれ以上のm個の方程式を使用して、訂正不能ページの正しい値を解くことができる。一方、コードワードが修復可能でない場合、ステップ882において、このコードワードを、例えば不正確なデータを有するものとして廃棄することができる。上述した処理は例示にすぎないと理解されたい。本発明の範囲から逸脱することなく、ステップのいずれかを除去し、修正し、又は組み合わせることができ、あらゆる追加のステップを加えることができる。説明した本発明の実施形態は、限定ではなく例示目的で示したものである。"