(57)【要約】      （修正有）【課題】著しいオーバーヘッドまたは性能ペナルティをもたらすことなく、ＥＣＣアルゴリズムを用いて訂正され得るビットの数を増加させる方法および装置を提供すること。【解決手段】本発明による方法は、メモリシステムの不揮発性メモリ内のページと関連するデータを符合化する方法であって、該ページは、データ領域およびオーバーヘッド領域を有し、該方法は、該ページの少なくとも一部分を少なくとも２つの該データのセグメントに分割する工程であって、該少なくとも２つの該データのセグメントは、第１のセグメントおよび第２のセグメントを含む、工程と、該第１のセグメント上でエラー訂正コード（ＥＣＣ）計算を実行して該第１のセグメントを符号化する工程と、該第２のセグメント上でＥＣＣ計算を実行して、該第２のセグメントを符合化する工程であって、該第２のセグメントは、該第１のセグメントとは実質的に別個に符号化する、工程とを包含する。【選択図】図３ｂ
2004152300.tif 000002
【特許請求の範囲】
【請求項１】
メモリシステムの不揮発性メモリ内のページと関連するデータを符合化する方法であって、該ページは、データ領域およびオーバーヘッド領域を有し、該方法は、
該ページの少なくとも一部分を少なくとも２つの該データのセグメントに分割する工程であって、該少なくとも２つの該データのセグメントは、第１のセグメントおよび第２のセグメントを含む、工程と、
該第１のセグメント上でエラー訂正コード（ＥＣＣ）計算を実行して、該第１のセグメントを符号化する工程と、
該第２のセグメント上でＥＣＣ計算を実行して、該第２のセグメントを符合化する工程であって、該第２のセグメントは、該第１のセグメントとは実質的に別個に符号化する、工程と
を包含する、方法。
【請求項２】
前記第１のセグメントは前記データ領域を含み、該第２のセグメントは前記オーバーヘッド領域を含む、請求項１に記載の方法。
【請求項３】
前記第１のセグメントは、前記データ領域の第１のセクションを含み、前記第２のセグメントは、該データ領域の第２のセクションを含む、請求項１に記載の方法。
【請求項４】
前記ＥＣＣ計算は、前記第１のセグメントおよび前記第２のセグメントの各々において２つまでの誤っているビットを検出し、かつ１つまでの該誤っているビットを訂正するように構成されるＥＣＣアルゴリズムと関連付けられる、請求項１に記載の方法。
【請求項５】
前記ＥＣＣアルゴリズムは、ハミングコードＥＣＣアルゴリズムである、請求項４に記載の方法。
【請求項６】
前記ページの前記少なくとも一部分を前記少なくとも２つの前記データのセグメントに分割する工程は、
該ページを３つのセグメントに分割する工程であって、該３つのセグメントは、前記第１のセグメント、前記第２のセグメントおよび第３のセグメントを含む、請求項１に記載の方法。
【請求項７】
前記第３のセグメント上で前記ＥＣＣ計算を実行して、該第３のセグメントを符合化する工程であって、該第３のセグメントは、前記第１のセグメントおよび前記第２のセグメントとは実質的に別個に符合化される、工程をさらに包含する、請求項６に記載の方法。
【請求項８】
前記第１のセグメントは、前記データ領域の第１のセクションを含み、前記第２のセグメントは、該データ領域の第２のセクションを含み、前記第３のセグメントは、前記オーバーヘッド領域を含む、請求項６に記載の方法。
【請求項９】
前記第１のセグメントは、前記データ領域の第１のセクションを含み、前記第２のセグメントは、該データ領域の第２のセクションを含み、前記第３のセグメントは、該データ領域の第３のセクションを含む、請求項６に記載の方法。
【請求項１０】
前記不揮発性メモリは、ＮＡＮＤフラッシュメモリおよびＭＬＣ  ＮＡＮＤフラッシュメモリの１つである、請求項１に記載の方法。
【請求項１１】
不揮発性メモリであって、該不揮発性メモリはページを含み、該ページは、データ領域およびオーバーヘッド領域を有し、該データ領域および該オーバーヘッド領域は、データのビットを含むように構成される、不揮発性メモリと、
該ページの少なくとも一部分を少なくとも２つのセグメントに分割するコードデバイスであって、該少なくとも２つのセグメントは、第１のセグメントおよび第２のセグメントを含む、コードデバイスと、
該第１のセグメント上でエラー訂正コード（ＥＣＣ）計算を実行して、該第１のセグメントを符合化し、かつ、該第２のセグメント上でエラー訂正コード計算を実行して、該第２のセグメントを符合化するコードデバイスであって、該第２のセグメントは、該第１のセグメントとは実質的に別個に符号化される、コードデバイスと、
該コードデバイスを記憶するためのメモリ領域と
を備える、メモリシステム。
【請求項１２】
前記コードデバイスを処理するように構成されるコントローラをさらに備える、請求項１１に記載のメモリシステム。
【請求項１３】
前記第１のセグメントは前記データ領域を含み、前記第２のセグメントは前記オーバーヘッドを含む、請求項１１に記載のメモリシステム。
【請求項１４】
前記第１のセグメントは、前記データ領域の第１のセクションを含み、前記第２のセグメントは、該データ領域の第２のセクションを含む、請求項１１に記載のメモリシステム。
【請求項１５】
前記ＥＣＣ計算は、前記第１のセグメントおよび前記第２のセグメントの各々において２つまでの誤っているビットを検出し、かつ１つまでの該誤っているビットを検出するように構成されるＥＣＣアルゴリズムと関連付けられる、請求項１に記載のメモリシステム。
【請求項１６】
前記ＥＣＣアルゴリズムは、ハミングコードＥＣＣアルゴリズムである、請求項１５に記載のメモリシステム。
【請求項１７】
前記ページの前記少なくとも一部分を前記少なくとも２つのセグメントに分割するための前記コードデバイスは、
該ページを３つのセグメントに分割するコードデバイスであって、該３つのセグメントは、前記第１のセグメント、前記第２のセグメントおよび第３のセグメントを含む、コードデバイスを備える、請求項１１に記載のメモリシステム。
【請求項１８】
前記第３のセグメント上で前記ＥＣＣ計算を実行して、該第３のセグメントを符合化するコードデバイスであって、該第３のセグメントは、前記第１のセグメントおよび前記第２のセグメントとは実質的に別個に符号化される、コードデバイスをさらに備える、請求項１７に記載のメモリシステム。
【請求項１９】
前記第１のセグメントは、前記データ領域の第１のセクションを含み、前記第２のセグメントは、該データ領域の第２のセクションを含み、前記第３のセグメントは、前記オーバーヘッド領域を含む、請求項１７に記載のメモリシステム。
【請求項２０】
前記第１のセグメントは、前記データ領域の第１のセクションを含み、前記第２のセグメントは、該データ領域の第２のセクションを含み、前記第３のセグメントは、該データ領域の第３のセクションを含む、請求項１７に記載のメモリシステム。
【請求項２１】
前記不揮発性メモリは、ＮＡＮＤフラッシュメモリおよびＭＬＣ  ＮＡＮＤフラッシュメモリの１つである、請求項１１に記載のメモリシステム。
【請求項２２】
前記コードデバイスは、ソフトウェアコードデバイスおよびファームウェアコードデバイスの１つである、請求項１１に記載のメモリシステム。
【請求項２３】
不揮発性メモリであって、該不揮発性メモリはページを含み、該ページは、データ領域およびオーバーヘッド領域を有し、該データ領域および該オーバーヘッド領域は、データのビットを含むように構成される、不揮発性メモリと、
該ページの一部分を少なくとも２つのセグメントに分割する手段であって、該少なくとも２つのセグメントは、第１のセグメントおよび第２のセグメントを含む、手段と、
該第１のセグメント上でエラー訂正コード（ＥＣＣ）計算を実行して、該第１のセグメントを符合化し、かつ、該第２のセグメント上でエラー訂正コード計算を実行して、該第２のセグメントを符合化する手段であって、該第２のセグメントは、該第１のセグメントとは実質的に別個に符合化される、手段と
を備える、メモリシステム。
【請求項２４】
前記第１のセグメントは、前記データ領域を含み、前記第２のセグメントは、前記オーバーヘッド領域を含む、請求項２３に記載のメモリシステム。
【請求項２５】
前記第１のセグメントは、前記データ領域の第１のセクションを含み、前記第２のセグメントは、該データ領域の第２のセクションを含む、請求項２３に記載のメモリシステム。
【請求項２６】
前記ＥＣＣ計算は、前記第１のセグメントに含まれる１つまでの誤っているビット、および、前記第２のセグメントに含まれる１つまでの誤っているビットを訂正するように構成されるハミングコードＥＣＣアルゴリズムと関連付けられる、請求項１に記載のメモリシステム。
【請求項２７】
前記ページの前記少なくとも一部分を前記少なくとも２つのセグメントに分割する手段は、該ページを３つのセグメントに分割する手段であって、該３つのセグメントは、前記第１のセグメント、前記第２のセグメントおよび第３のセグメントを含む、手段を含む、請求項２３に記載のメモリシステム。
【請求項２８】
前記第３のセグメント上で前記ＥＣＣ計算を実行して、該第３のセグメントを符合化する手段であって、該第３のセグメントは、前記第１のセグメントおよび前記第２のセグメントとは実質的に別個に符合化される、手段をさらに備える、請求項２７に記載のメモリシステム。
【請求項２９】
前記第１のセグメントは、前記データ領域の第１のセクションを含み、前記第２のセグメントは、該データ領域の第２のセクションを含み、前記第３のセグメントは、前記オーバーヘッド領域を含む、請求項２７に記載のメモリシステム。
【請求項３０】
前記第１のセグメントは、前記データ領域の第１のセクションを含み、前記第２のセグメントは、該データ領域の第２のセクションを含み、前記第３のセグメントは、該データ領域の第３のセクションを含む、請求項２７に記載のメモリシステム。
【請求項３１】
前記不揮発性メモリは、ＮＡＮＤフラッシュメモリおよびＭＬＣ  ＮＡＮＤフラッシュメモリの１つである、請求項２３に記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本特許出願は、米国特許仮出願第６０／４２１，７４６号（２００２年１０月２８日出願）の優先権を主張し、この出願は、参考のため、本明細書中にその全体が援用される。
【０００２】
（関連出願の相互参照）
本発明は、同時係属中の米国特許出願第１０／２８１，７３９号、第１０／２８１，８２３号、第１０／２８１，６７０号、第１０／２８１，８２４号、第１０／２８１，６３１号、第１０／２８１，８５５号、第１０／２８１，７６２号、第１０／２８１，６９６号、第１０／２８１，６２６号および第１０／２８１，８０４号、ならびに同時係属中の米国特許仮出願第６０／４２１，９１０号、第６０／４２１，７２５号、第６０／４２１，９６５号、第６０／４２２，１６６号および第６０／４２１，９１１号（各々、２００２年１０月２８日出願）に関し、これらの出願は、各々、参考のため、本明細書中にその全体が援用される。
【背景技術】
【０００３】
（発明の背景）
（１．発明の分野）
本発明は、概して、大容量デジタルデータ記憶システムに関する。より具体的には、本発明は、著しい量のオーバーヘッドを受けることなくデータ記憶エラーリカバリ能力を改善するシステムおよび方法に関する。
【０００４】
（２．関連技術の説明）
フラッシュメモリ記憶システム等の不揮発性メモリシステムは、このようなメモリシステムの物理サイズが小さく、繰返し再プログラムされるという不揮発性メモリの能力のために益々使用されている。フラッシュメモリ記憶システムの小さい物理サイズは、益々普及しつつあるデバイスにおけるこのような記憶システムの使用を容易にする。フラッシュメモリ記憶システムを用いるデバイスは、デジタルカメラ、デジタルカムコーダ、デジタルミュージックプレーヤー、ハンドヘルドパーソナルコンピュータおよびグローバルポジショニングデバイスを含むがこれらに限定されない。フラッシュメモリ記憶システムに含まれる不揮発性メモリに繰り返し再プログラムする能力は、フラッシュメモリ記憶システムが使用かつ再使用されることを可能にする。
【０００５】
一般に、フラッシュメモリ記憶システムは、フラッシュメモリカードおよびフラッシュメモリチップセットを含み得る。フラッシュメモリチップセットは、通常、フラッシュメモリコンポーネントおよびコントローラコンポーネントを含む。通常、フラッシュメモリチップセットは、埋め込みシステムに組み入れられるように構成され得る。このようなアセンブリまたはホストシステムの製造業者は、通常、コンポーネントの形態のフラッシュメモリ、および他のコンポーネントを取得し、その後、フラッシュメモリおよび他のコンポーネントをホストシステムに組み入れる。
【０００６】
フラッシュメモリの物理ブロックにおいて格納されるデータの精度を確実にするために、エラー訂正コード（ＥＣＣ）アルゴリズム、またはエラーチェックおよび訂正コードアルゴリズムは、記憶するためのデータを符号化し、かつ記憶されたデータを復号化するために用いられ得る。通常、ＥＣＣアルゴリズムは、専用回路またはソフトウェアを用いてデータを符号化および復号化する。複数のＥＣＣアルゴリズムまたは方法は、記憶データと関連するエラーの検出および訂正の両方を行うために用いられ得るパリティビット（単数または複数）を加算し得る。
【０００７】
記憶するためのデータを符号化および復号化するために用いられるいくつかのＥＣＣアルゴリズムは、１ビットＥＣＣアルゴリズムおよび２ビットＥＣＣアルゴリズムとして知られている。１ビットＥＣＣアルゴリズムは、表示のうち１ビットが誤っている、例えば、１ビットが反転（ｆｌｉｐｐｅｄ）された場合でもなおシンボルが正しく識別され、かつ訂正され得るようにシンボルのセットが表されることを可能にする。２ビットＥＣＣアルゴリズムは、表示のうち２ビットが反転されるか、そうでない場合、誤っているである場合でもなおシンボルが正しく識別および訂正され得るようにシンボルのセットが表されることを可能にする。
【０００８】
２ビットＥＣＣアルゴリズムのインプリメンテーションは、１ビットＥＣＣアルゴリズムと比較して、向上したエラー訂正能力を提供する一方で、通常、より多くの計算、従って、１ビットＥＣＣアルゴリズムのインプリメンテーションよりも多くの計算のオーバーヘッドを含む。より多くの計算のオーバーヘッドが必要とされる場合、不揮発性メモリによってより多くの電力、例えば、バッテリ電源が消費され得る。さらに、当業者によって理解されるように、２ビットＥＣＣアルゴリズムのインプリメンテーションは、通常、１ビットＥＣＣアルゴリズムのために必要とされるよりも多くのパリティビットの記憶を必要とし、これは実用的ではあり得ない。
【０００９】
ＥＣＣアルゴリズムは、通常、物理ページのコンテンツを符合化するために用いられる。図１は、物理ページの概略図である。物理ページ２００は、通常、データセクション２０２およびオーバーヘッドセクション２０４を含む。データセクション２０２は、ユーザデータのバイト、例えば、約５１２バイトのユーザデータを含むように構成される一方で、オーバーヘッドセクション２０４は、例えば、約１６バイト等の複数のオーバーヘッドバイトを含むように構成される。通常、図２ａに示されるように、物理ページ２００のすべてのコンテンツがＥＣＣアルゴリズムを用いて共に符合化されるか、または、図２ｂに示されるように、データセクション２０２のコンテンツのみが共に符号化される一方で、オーバーヘッドセクション２０４のコンテンツは符号化されない。
【００１０】
１ビットＥＣＣアルゴリズムを用いる図２ａに示されるように、物理ページ２００のすべてのコンテンツが共に符合化される場合、実質的に、２つの誤っているビットのみが物理ページ２００内で検出され得、検出された誤っているビットの１つのみが訂正され得る。２ビットＥＣＣアルゴリズムを用いて、物理ページ２００のすべてのコンテンツを共に符合化することによって、４つの誤っているビットが検出され得、かつ検出された、誤っているビットの２つが訂正され得るが、２ビットＥＣＣアルゴリズムの使用によって、通常、さらなるオーバーヘッドがもたらされる。いくつかの場合において、さらなるオーバーヘッドをもたらし、かつ、場合によっては、性能ペナルティ（ｐｅｒｆｏｒｍａｎｃｅ  ｐｅｎａｌｔｙ）を引き起こすことは、２つの誤っているビットが訂正されることを可能にすることによって得られる利益にみあうと考えられ得ない。
【００１１】
図２ｂに示されるように、いくつかのシステムは、実質的に、データセクションのコンテンツのみを符号化し、オーバーヘッドセクションのコンテンツは符合化しない。データセクションのコンテンツのみが符合化された場合、ＥＣＣアルゴリズムの使用によって場合によっては訂正されることを必要とし得るビットがより少ない。しかしながら、図２ｂのデータセクション２０２等のデータセクション全体において、実質的に単一の誤っているビットのみが１ビットＥＣＣアルゴリズムを用いて訂正され得、このＥＣＣアルゴリズムは、いくつかの場合において、適切であり得ず、オーバーヘッドセクション２０４内のビットは、実質的に訂正され得ない。
【発明の開示】
【発明が解決しようとする課題】
【００１２】
従って、必要とされるのは、著しいオーバーヘッドまたは性能ペナルティをもたらすことなく、ＥＣＣアルゴリズムを用いて訂正され得るビットの数を増加させる方法および装置である。すなわち、所望されるのは、ＥＣＣアルゴリズムを用いて符合化されたページ内で訂正され得る誤っているビットの数が、オーバーヘッドの必要性を著しく増加させることなく、および、性能ペナルティをもたらすことなく、実質的に増加させることを可能にするシステムおよび装置である。
【課題を解決するための手段】
【００１３】
（発明の要旨）
本発明の方法は、メモリシステムの不揮発性メモリ内のページと関連するデータを符合化する方法であって、該ページは、データ領域およびオーバーヘッド領域を有し、該方法は、該ページの少なくとも一部分を少なくとも２つの該データのセグメントに分割する工程であって、該少なくとも２つの該データのセグメントは、第１のセグメントおよび第２のセグメントを含む、工程と、該第１のセグメント上でエラー訂正コード（ＥＣＣ）計算を実行して、該第１のセグメントを符号化する工程と、該第２のセグメント上でＥＣＣ計算を実行して、該第２のセグメントを符合化する工程であって、該第２のセグメントは、該第１のセグメントとは実質的に別個に符号化する、工程とを包含し、それにより上記目的が達成される。
【００１４】
前記第１のセグメントは前記データ領域を含み、該第２のセグメントは前記オーバーヘッド領域を含んでもよい。
【００１５】
前記第１のセグメントは、前記データ領域の第１のセクションを含み、前記第２のセグメントは、該データ領域の第２のセクションを含んでもよい。
【００１６】
前記ＥＣＣ計算は、前記第１のセグメントおよび前記第２のセグメントの各々において２つまでの誤っているビットを検出し、かつ１つまでの該誤っているビットを訂正するように構成されるＥＣＣアルゴリズムと関連付けられてもよい。
【００１７】
前記ＥＣＣアルゴリズムは、ハミングコードＥＣＣアルゴリズムであってもよい。
【００１８】
前記ページの前記少なくとも一部分を前記少なくとも２つの前記データのセグメントに分割する工程は、該ページを３つのセグメントに分割する工程であって、該３つのセグメントは、前記第１のセグメント、前記第２のセグメントおよび第３のセグメントを含んでもよい。
【００１９】
前記第３のセグメント上で前記ＥＣＣ計算を実行して、該第３のセグメントを符合化する工程であって、該第３のセグメントは、前記第１のセグメントおよび前記第２のセグメントとは実質的に別個に符合化される、工程をさらに包含してもよい。
【００２０】
前記第１のセグメントは、前記データ領域の第１のセクションを含み、前記第２のセグメントは、該データ領域の第２のセクションを含み、前記第３のセグメントは、前記オーバーヘッド領域を含んでもよい。
【００２１】
前記第１のセグメントは、前記データ領域の第１のセクションを含み、前記第２のセグメントは、該データ領域の第２のセクションを含み、前記第３のセグメントは、該データ領域の第３のセクションを含んでもよい。
【００２２】
前記不揮発性メモリは、ＮＡＮＤフラッシュメモリおよびＭＬＣ  ＮＡＮＤフラッシュメモリの１つであってもよい。
【００２３】
本発明のメモリシステムは、不揮発性メモリであって、該不揮発性メモリはページを含み、該ページは、データ領域およびオーバーヘッド領域を有し、該データ領域および該オーバーヘッド領域は、データのビットを含むように構成される、不揮発性メモリと、該ページの少なくとも一部分を少なくとも２つのセグメントに分割するコードデバイスであって、該少なくとも２つのセグメントは、第１のセグメントおよび第２のセグメントを含む、コードデバイスと、該第１のセグメント上でエラー訂正コード（ＥＣＣ）計算を実行して、該第１のセグメントを符合化し、かつ、該第２のセグメント上でエラー訂正コード計算を実行して、該第２のセグメントを符合化するコードデバイスであって、該第２のセグメントは、該第１のセグメントとは実質的に別個に符号化される、コードデバイスと、該コードデバイスを記憶するためのメモリ領域とを備え、それにより上記目的が達成される。
【００２４】
前記コードデバイスを処理するように構成されるコントローラをさらに備えてもよい。
【００２５】
前記第１のセグメントは前記データ領域を含み、前記第２のセグメントは前記オーバーヘッドを含んでもよい。
【００２６】
前記第１のセグメントは、前記データ領域の第１のセクションを含み、前記第２のセグメントは、該データ領域の第２のセクションを含んでもよい。
【００２７】
前記ＥＣＣ計算は、前記第１のセグメントおよび前記第２のセグメントの各々において２つまでの誤っているビットを検出し、かつ１つまでの該誤っているビットを検出するように構成されるＥＣＣアルゴリズムと関連付けられてもよい。
【００２８】
前記ＥＣＣアルゴリズムは、ハミングコードＥＣＣアルゴリズムであってもよい。
【００２９】
前記ページの前記少なくとも一部分を前記少なくとも２つのセグメントに分割するための前記コードデバイスは、該ページを３つのセグメントに分割するコードデバイスであって、該３つのセグメントは、前記第１のセグメント、前記第２のセグメントおよび第３のセグメントを含む、コードデバイスを備えてもよい。
【００３０】
前記第３のセグメント上で前記ＥＣＣ計算を実行して、該第３のセグメントを符合化するコードデバイスであって、該第３のセグメントは、前記第１のセグメントおよび前記第２のセグメントとは実質的に別個に符号化される、コードデバイスをさらに備えてもよい。
【００３１】
前記第１のセグメントは、前記データ領域の第１のセクションを含み、前記第２のセグメントは、該データ領域の第２のセクションを含み、前記第３のセグメントは、前記オーバーヘッド領域を含んでもよい。
【００３２】
前記第１のセグメントは、前記データ領域の第１のセクションを含み、前記第２のセグメントは、該データ領域の第２のセクションを含み、前記第３のセグメントは、該データ領域の第３のセクションを含んでもよい。
【００３３】
前記不揮発性メモリは、ＮＡＮＤフラッシュメモリおよびＭＬＣ  ＮＡＮＤフラッシュメモリの１つであってもよい。
【００３４】
前記コードデバイスは、ソフトウェアコードデバイスおよびファームウェアコードデバイスの１つであってもよい。
【００３５】
本発明のメモリシステムは、不揮発性メモリであって、該不揮発性メモリはページを含み、該ページは、データ領域およびオーバーヘッド領域を有し、該データ領域および該オーバーヘッド領域は、データのビットを含むように構成される、不揮発性メモリと、該ページの一部分を少なくとも２つのセグメントに分割する手段であって、該少なくとも２つのセグメントは、第１のセグメントおよび第２のセグメントを含む、手段と、該第１のセグメント上でエラー訂正コード（ＥＣＣ）計算を実行して、該第１のセグメントを符合化し、かつ、該第２のセグメント上でエラー訂正コード計算を実行して、該第２のセグメントを符合化する手段であって、該第２のセグメントは、該第１のセグメントとは実質的に別個に符合化される、手段とを備え、それにより上記目的が達成される。
【００３６】
前記第１のセグメントは、前記データ領域を含み、前記第２のセグメントは、前記オーバーヘッド領域を含んでもよい。
【００３７】
前記第１のセグメントは、前記データ領域の第１のセクションを含み、前記第２のセグメントは、該データ領域の第２のセクションを含んでもよい。
【００３８】
前記ＥＣＣ計算は、前記第１のセグメントに含まれる１つまでの誤っているビット、および、前記第２のセグメントに含まれる１つまでの誤っているビットを訂正するように構成されるハミングコードＥＣＣアルゴリズムと関連付けられてもよい。
【００３９】
前記ページの前記少なくとも一部分を前記少なくとも２つのセグメントに分割する手段は、該ページを３つのセグメントに分割する手段であって、該３つのセグメントは、前記第１のセグメント、前記第２のセグメントおよび第３のセグメントを含む、手段を含んでもよい。
【００４０】
前記第３のセグメント上で前記ＥＣＣ計算を実行して、該第３のセグメントを符合化する手段であって、該第３のセグメントは、前記第１のセグメントおよび前記第２のセグメントとは実質的に別個に符合化される、手段をさらに備えてもよい。
【００４１】
前記第１のセグメントは、前記データ領域の第１のセクションを含み、前記第２のセグメントは、該データ領域の第２のセクションを含み、前記第３のセグメントは、前記オーバーヘッド領域を含んでもよい。
【００４２】
前記第１のセグメントは、前記データ領域の第１のセクションを含み、前記第２のセグメントは、該データ領域の第２のセクションを含み、前記第３のセグメントは、該データ領域の第３のセクションを含んでもよい。
【００４３】
前記不揮発性メモリは、ＮＡＮＤフラッシュメモリおよびＭＬＣ  ＮＡＮＤフラッシュメモリの１つであってもよい。
【００４４】
本発明は、ページをセグメントに分割し、かつ、拡張エラー訂正コード（ＥＣＣ)計算を用いてセグメントを別々に符合化することによって、ページに関連するデータを符号化するシステムおよび方法に関する。本発明の方法の１局面によると、メモリシステムの不揮発性メモリ内にデータ領域およびオーバーヘッド領域を有するページに関連するデータを符号化する方法は、少なくともページの一部分を、少なくとも２つのデータのセグメントに分割する工程であって、少なくとも２つのデータのセグメントは、第１のセグメントおよび第２のセグメントを含む、工程と、第１のセグメント上でＥＣＣ計算を実行して、第１のセグメントを符号化する工程とを包含する。この方法は、第２のセグメント上でＥＣＣ計算を実行して、第１のセグメントとは実質的に別個に第２のセグメントを符合化する工程をさらに包含する。
【００４５】
１実施形態において、第１のセグメントは、データ領域を含み、第２のセグメントは、オーバーヘッド領域を含む。別の実施形態において、第１のセグメントは、データ領域の第１のセクションを含み、第２のセグメントは、データ領域の第２のセクションを含む。
【００４６】
ＥＣＣ計算がページのセグメントにて含まれるデータを実質的に別々に符号化することを可能にすることによって、オーバーオールページ内の訂正され得る不良または誤っているビットの数は、著しい性能ペナルティをもたらすことなく、または著しい量のさらなるオーバーヘッドをもたらすことなく増加され得る。ページが少なくとも２つのデータのセグメントに分割された場合、２つのセグメントは、ＥＣＣアルゴリズムを用いて別々に符号化され得る。各セグメントを符号化するために、例えば、２つまでの誤っているビットを検出し、かつ１つの誤っているビットを訂正するＥＣＣアルゴリズム等の同じＥＣＣアルゴリズムが用いられる場合、各セグメントにおける２つまでの誤っているビットが検出され得る一方で、各セグメントにおける１つの誤っているビットが訂正され得る。従って、さらなる誤っているビットが、実質的に、追加のオーバーヘッドを必要とすることなく検出および訂正され得る。ページ内のさらなる誤っているビットを訂正する能力は、通常、ページ内に記憶されるデータの信頼性を向上させる。
【００４７】
本発明のこれら、および他の利点は、以下における詳細な説明を読み、かつ図面の種々の図を検討することによって明らかになる。
【００４８】
本発明は、添付の図面と関連付けられた以下の記載を参照することによって最良に理解され得る。
【発明の効果】
【００４９】
本発明により、著しいオーバーヘッドまたは性能ペナルティをもたらすことなく、ＥＣＣアルゴリズムを用いて訂正され得るビットの数を増加させる方法および装置を提供することができる。すなわち、本発明によるシステムおよび装置は、ＥＣＣアルゴリズムを用いて符合化されたページ内で訂正され得る誤っているビットの数が、オーバーヘッドの必要性を著しく増加させることなく、および、性能ペナルティをもたらすことなく、実質的に増加させることを可能にする。
【発明を実施するための最良の形態】
【００５０】
（実施形態の詳細な説明）
１ビットＥＣＣアルゴリズムまたは２ビットＥＣＣアルゴリズムといったエラー訂正コード（ＥＣＣ）アルゴリズムは、多くの場合、不揮発性メモリの物理ページに記憶されるべきデータを符号化し、かつ記憶されたデータを復号化するために用いられる。ＥＣＣアルゴリズムの使用は、通常、物理ページ内に記憶されたデータの精度が改善されることを可能にする。１ビットＥＣＣアルゴリズムを用いて訂正され得る誤ったビットをより多く訂正するような２ビットＥＣＣアルゴリズムの能力のため、より計算集中型の２ビットＥＣＣアルゴリズムの使用が、あまり計算集中型でない１ビットＥＣＣアルゴリズムよりも工程であり得る。しかしながら、２ビットＥＣＣアルゴリズムのインプリメンテーションは、増加したエラー訂正能力を提供する一方で、計算の数および電力需要に関して、１ビットＥＣＣアルゴリズムよりも高価である。
【００５１】
通常、１ビットＥＣＣアルゴリズム等のＥＣＣアルゴリズムが、ページ内に含まれるデータを符号化するために用いられる場合、ページ全体が共に符号化されるか、または、ページのデータセクションのみが符合化される一方で、ページのオーバーヘッドセクションは符号化されない状態で留まる。ページ全体が１ビットＥＣＣアルゴリズムを用いて共に符合化される場合、２つまでの誤っているビットが検出され得、かつ、誤っているビットの多くとも１つが訂正され得る。あるいは、ページのデータセクションのみが１ビットＥＣＣアルゴリズムを用いて符合化される場合、２つまでの誤っているビットがデータセクションにて検出され得、誤っているビットの多くとも１つがデータセクションにて訂正され得る一方で、オーバーヘッド領域においては、いかなる誤っているビットも検出および訂正され得ない。一般に、ページにて検出および訂正され得る、誤っているビットの数を増加させること、すなわち、エラーリカバリ能力を増大させることは、ページ内に含まれるデータの完全性が向上することを可能にする。その結果、ページを含むメモリシステムの信頼性全体が向上し得る。
【００５２】
本発明の１実施形態において、ページは、別々のセグメントに分割され得るか、そうでない場合、グループ分けされ得る。ページをセグメントに分割することによって、各セグメントが実質的に別々に符合化され得るように、セグメント内に含まれるデータを符号化するようにＥＣＣ計算が適用され得る。セグメントが別々に符合化されることを可能にする拡張ＥＣＣ計算は、著しい量の追加的オーバーヘッドをもたらすことなく、セグメントを含むページにおいて誤っているビットを検出および訂正する数全体が増加されることを可能にする。ページが少なくとも２つのセグメントに分割され、各々がページに関連する特定のデータを含む場合、２つのセグメントは、１ビットＥＣＣアルゴリズム等のＥＣＣアルゴリズムを用いて別々に符合化され得る。２つまでの誤っているビットを検出し、かつ１つの誤っているビットを訂正するＥＣＣアルゴリズム等の、同じＥＣＣアルゴリズムが、各セグメントを符合化するために用いられる場合、各セグメントにおける２つまでの誤っているビットが検出され得る一方で、各セグメントにおける１つの誤っているビットが訂正され得る。例えば、２つのセグメントが、各セグメントにおいて１つまでの誤っているビットを訂正するＥＣＣアルゴリズムを用いて符合化される場合、このようなＥＣＣアルゴリズムは、２つのセグメントの各々における１つまでの誤っているビットが訂正され得るのと同様に、２つまでの誤っているビットがページ内で訂正されることを効率的に可能にし得る。すなわち、さらなる誤っているビットは、追加的オーバーヘッドを要求することなく、または、著しい性能ペナルティをもたらすことなく、実質的に、効率的に訂正され得る。ページ内のさらなる誤っているビットを訂正する能力は、記憶データの完全性が改善されることを可能にし、従って、メモリシステム全体の信頼性を高める。
【００５３】
システム内の物理ページが、ＥＣＣアルゴリズムを用いて別々に符合化されるセグメントに実質的に分割されることを可能にするデータインテグリティマネージメントインプリメンテーションを用い得る、フラッシュメモリシステム、または、より一般的には、不揮発性メモリデバイスは、例えば、ＮＡＮＤまたはＭＬＣ  ＮＡＮＤのカードおよびチップセット等のフラッシュメモリを含む。通常、フラッシュメモリシステムは、ホストシステムと関連して用いられ、従って、ホストシステムは、フラッシュメモリシステムへデータを書き込むか、またはフラッシュメモリシステムからのデータを読み出し得る。しかしながら、図３ｃを参照して後述されるように、いくつかのフラッシュメモリシステムは、埋め込みフラッシュメモリ、および、埋め込みフラッシュメモリのコントローラとして実質的に機能するようにホスト上で実行するソフトウェアを含む。図３ａを参照して、例えば、コンパクトフラッシュ（Ｒ）メモリカード等の不揮発性メモリデバイスを含む一般的ホストシステムが記載される。ホストまたはコンピュータシステム１００は、通常、マイクロプロセッサ１０８、ランダムアクセスメモリ（ＲＡＭ）１１２、および入力／出力回路１１６が通信することを可能にする。ホストシステム１００は、通常、例えば、表示デバイスおよびネットワークデバイス等の他のコンポーネンを含み得るが、これらは、例示の目的で図示されない。
【００５４】
一般的に、ホストシステム１００は、静止画像情報、オーディオ情報、およびビデオ画像情報を含むが、これらに限定されない情報を取り込むことができ得る。このような情報は、リアルタイムで取り込まれ得、かつ無線方式でホストシステム１００に転送され得る。ホストシステム１００は、実質的に、任意のシステムであり得るが、ホストシステム１００は、通常、デジタルカメラ、ビデオカメラ、セルラー通信デバイス、オーディオプレーヤまたはビデオプレーヤ等のシステムである。しかしながら、ホストシステム１００は、通常、データまたは情報を記憶し、かつデータまたは情報を取り出す、実質的に、任意のシステムであり得る。
【００５５】
ホストシステム１００は、さらに、データを取り込むだけか、またはデータを取り出すだけかのどちらかのシステムであり得る。すなわち、ホストシステム１００は、１実施形態において、データを記憶する専用システムであり得るか、またはホストシステム１００は、データを読み出す専用システムであり得る。例示的に、ホストシステム１００は、データを書き込むかまたは記憶するようにのみ構成されるメモリライタであり得る。あるいは、ホストシステム１００は、通常、データを読み出しまたは取り出す（データを取り込むのではなく）ように構成されたＭＰ３プレーヤ等のデバイスであり得る。
【００５６】
１実施形態において、除去可能な不揮発性メモリデバイスである不揮発性メモリデバイス１２０は、情報を記憶するためにバス１０４とインターフェース接続するように構成される。選択的インターフェースブロック１３０は、不揮発性メモリデバイス１２０がバス１０４と間接的にインターフェース接続することを可能にし得る。存在する場合、当業者によって理解されるように、入力／出力回路ブロック１１６は、バス１０４上に負荷がかかることを低減するために利用される。不揮発性メモリデバイス１２０は、不揮発性メモリ１２４および選択的メモリ制御システム１２８を含む。１実施形態において、不揮発性メモリデバイス１２０は、単一チップまたはダイ上にインプリメントされ得る。あるいは、不揮発性メモリデバイス１２０は、マルチチップモジュール上、または、チップセットを形成し得、かつ不揮発性メモリデバイス１２０として共に用いられ得る複数のディスクリートコンポーネント上にインプリメントされ得る。不揮発性メモリデバイス１２０の１実施形態において、図３ｂを参照してより詳細に後述される。
【００５７】
例えば、ＮＡＮＤフラッシュメモリまたはＭＬＣ  ＮＡＮＤフラッシュメモリといったフラッシュメモリ等の不揮発性メモリ１２４は、データが必要に応じてアクセスおよび読み出しされ得るようにデータを記憶するように構成される。不揮発性メモリ１２４内に記憶されたデータは、さらに、適切に消去され得るが、不揮発性メモリ１２４内のあるデータは、消去可能ではあり得ないことが理解されるべきである。データを格納、データを読み出し、およびデータを消去するプロセスは、通常、メモリ制御システム１２８によって制御されるか、または、メモリ制御システム１２８が存在しない場合、マイクロプロセッサ１０８により実行されるソフトウェアによって制御される。不揮発性メモリ１２４の動作は、従って、基本的に、不揮発性メモリ１２４のセクションを実質的に等しく消耗させることによって、不揮発性メモリ１２４の寿命が実質的に最大化されるように管理され得る。
【００５８】
不揮発性メモリデバイス１２０は、通常、選択的メモリ制御システム１２８、すなわちコントローラを含むことが記載された。多くの場合、不揮発性メモリデバイス１２０は、不揮発性メモリ１２４およびメモリ制御システム１２８、すなわちコントローラの機能の別個のチップを含み得る。例示的に、ＰＣカード、コンパクトフラッシュ（Ｒ）カード、マルチメディアカード、およびセキュアデジタルカードを含むが、これらに限定されない不揮発性メモリデバイスは、別々のチップ上にインプリメントされ得るコントローラを含む一方で、他の不揮発性メモリデバイスは、別々のチップ上でインプリメントされるコントローラを含み得ない。当業者によって理解されるように、不揮発性メモリデバイス１２０が別々のメモリおよびコントローラチップを含まない実施形態において、メモリおよびコントローラ機能は、単一チップに統合され得る。あるいは、上述のように、例えば、不揮発性メモリデバイス１２０がメモリコントローラ１２８を含まない実施形態において、メモリ制御システム１２８の機能性は、マイクロプロセッサ１０８によって提供され得る。
【００５９】
図３ｂを参照して、不揮発性メモリデバイス１２０は、本発明の実施形態により、より詳細に説明される。上述のように、不揮発性メモリデバイス１２０は、不揮発性メモリ１２４を含み、かつ、メモリ制御システム１２８を含み得る。メモリ１２４および制御システム１２８、またはコントローラは、不揮発性メモリデバイス１２０の一次コンポーネントであり得るが、メモリ１２４が、例えば、埋め込みＭＬＣ  ＮＡＮＤメモリ等の埋め込みＮＡＮＤデバイスである場合、例えば、不揮発性メモリデバイス１２０は、制御システム１２８を含み得ない。メモリ１２４は、半導体基板上に形成されるメモリセルのアレイであり得、ここで、データの１つ以上のビットは、２以上の電荷のレベルの１つをメモリセルの個々の記憶素子に記憶することによって個々のメモリセルに記憶される。不揮発性フラッシュの電気的消去再書込み可能プログラム可能読み出し専用メモリ（ＥＥＰＲＯＭ）は、このようなシステムの一般的なタイプのメモリの例である。
【００６０】
制御システム１２８は、存在する場合、バス１５を介してホストコンピュータ、またはデータを記憶するためにメモリシステムを用いる他のシステムに通信する。バス１５は、通常、図３ａのバス１０４の一部分である。制御システム１２８は、さらに、メモリ１２４の動作を制御し、メモリ１２４は、ホストにより提供されるデータを書き込み、ホストによってリクエストされるデータを読み出し、かつオペレーティングメモリ１２４における種々のハウスキーピング機能を実行するメモリセルアレイ１１を含み得る。制御システム１２８は、通常、関連する不揮発性ソフトウェアメモリ、種々の論理回路等を有する多目的マイクロプロセッサを含む。多くの場合、１つ以上の状態マシンが、特定のルーチンの性能を制御するためにさらに含まれ得る。
【００６１】
メモリセルアレイ１１は、通常、制御システム１２８、またはアドレス復号器１７を通じてマイクロプロセッサ１０８によってアドレス指定される。復号器１７は、制御システム１２８によってアドレス指定されるメモリセルの群にデータをプログラムし、そこからデータを読み出すか、またはそれを消去するために、正確な電圧をアレイ１１のゲートおよびビット線に印加する。さらなる回路１９は、セルのアドレス指定された群にプログラムされるデータに依存するアレイの素子に印加された電圧を制御するプログラミングドライバを含む。回路１９は、センス増幅器、およびアドレス指定されたメモリセルの群からデータを読み出すために必要とされる他の回路をさらに含む。アレイ１１にプログラムされるべきデータ、またはアレイ１１から最近読み出されたデータは、通常、制御システム１２８内のバッファメモリ２１に記憶される。制御システム１２８は、通常、コマンドおよび状態データ等を一時的に記憶するための種々のレジスタもまた含む。
【００６２】
アレイ１１は、多数のＢＬＯＣＫＳ０−Ｎメモリセルに分割される。フラッシュＥＥＰＲＯＭシステムについて一般的であるように、ブロックは、通常、消去の最小ユニットである。すなわち、各ブロックは、共に消去される最小数のメモリセルを含む。各ブロックは、通常、複数のページに分割される。当業者によって理解されるように、ページは、プログラミングの最小ユニットであり得る。すなわち、基本プログラミング動作は、最小限のメモリセルの１つのページにデータを書き込むか、またはここからデータを読み出す。１つ以上のデータのセクタは、通常、各ページ内に記憶される。図３ｂに示されるように、１つのセクタは、ユーザデータおよびオーバーヘッドデータを含む。オーバーヘッドデータは、通常、セクタのユーザデータから計算されたエラー訂正コード（ＥＣＣ）を含む。制御システム１２８の一部分２３は、データがアレイ１１にプログラムされる場合にＥＣＣを計算し、さらに、アレイ１１からデータが読み出される場合、ＥＣＣをチェックする。あるいは、ＥＣＣは、異なったページ、またはこれらが属するユーザデータとは異なるブロックに記憶される。
【００６３】
ユーザデータの１セクタは、通常、５１２バイトであり、磁気ディスクドライブにおけるセクタのサイズに対応する。オーバーヘッドデータまたは冗長データは、通常、さらなる１６バイトである。データの１セクタは、最も一般的には、各ページに含まれるが、２つ以上のセクタは、その代わりにページを形成し得る。任意の数のページは、通常、ブロックを形成し得る。例示的に、ブロックは、８ページから５１２、１０２４またはそれ以上までのページから形成され得る。メモリシステムに所望のデータ記憶容量を提供するためにブロックの数が選択される。アレイ１１は、通常、いくつかのサブアレイ（図示せず）に分割され、これらの各々は、ブロックの一部分を含み、サブアレイは、種々のメモリ動作の実行において並列処理の程度を高めるために、互いにいくらか独立して動作する。複数のサブアレイの使用の例は、米国特許第５，８９０，１９２号に記載され、この出願は、参考のため、その全体が本明細書中に援用される。
【００６４】
１実施形態において、ＭＬＣ  ＮＡＮＤメモリ等の不揮発性メモリは、例えば、ホストシステム等のシステムに埋め込まれる。図３ｃは、埋め込み不揮発性メモリを含むホストシステムの図示である。ホストまたはコンピュータシステム１５０は、通常、マイクロプロセッサ１５８、ＲＡＭ１６２、および入力／出力回路１６６が、ホストシステム１５０の他のコンポーネント（図示せず）の中で通信することを可能にするシステムバス１５４を含む。例えば、フラッシュメモリ等の不揮発性メモリ１７４は、情報がホストシステム１５０内に記憶されることを可能にする。インターフェース１８０は、不揮発性メモリ１７４とバス１５４との間に提供され得、情報が不揮発性メモリ１７４から読み出されおよびこれに書き込まれることを可能にする。
【００６５】
不揮発性メモリ１７４は、ソフトウェア、および不揮発性メモリ１７４を制御するように構成されるファームウェアのどちらか、または両方を有効に実行するマイクロプロセッサ１５８によって管理され得る。すなわち、マイクロプロセッサ１５８は、コードデバイス、すなわち、ソフトウェアコードデバイスまたはファームウェアコードデバイスを実行し得、これは、不揮発性メモリ１７４が制御されることを可能にする。ＣＰＵ内部マイクロプロセッサ１５８、別個のフラッシュＲＯＭ、または内部不揮発性メモリ１７４で実装されるフラッシュメモリであり得るこのようなコードデバイス（後述される）は、不揮発性メモリ１７４における物理ブロックがアドレス指定されることを可能にし得、かつ、情報が物理ブロックに記憶され、ここから読み出され、かつここから消去されることを可能にし得る。
【００６６】
不揮発性等の不揮発性メモリ１７４に含まれるページは、上述のように、ＥＣＣアルゴリズムを用いて別々に符号化され得るデータのセグメントに分割され得る。セグメントは、同じサイズか、または異なったサイズであり得る。通常、ページのオーバーヘッドまたは冗長領域が符合化される場合、ページのオーバーヘッドまたは冗長領域は、１つのセグメントを形成し、これに対して、ページのデータ領域は、単一セグメントまたは複数のセグメントのどちらかに用いられ得る。
【００６７】
図４ａにて示されるように、ユーザデータおよびオーバーヘッド領域４０４を含むデータセクション４０２は、第１のセグメント４０６および第２のセグメント４０８として、実質的に別々に符合化され、またはそうでない場合、処理され得る。すなわち、データセクション４０２およびオーバーヘッド領域４０４を含むページ４００は、別々に符合化されるセグメント４０６、４０８に分割され得る。通常、２つのセグメント４０６、４０８は、実質的に同じＥＣＣアルゴリズム、例えば、１ビットＥＣＣアルゴリズムを用いて符合化されるが、セグメント４０６を符合化するために用いられるアルゴリズム、およびセグメント４０８を符号化するために用いられるアルゴリズムは、異なり得ることが理解されるべきである。
【００６８】
不良または誤っているビットは、ページ４００内で実質的にランダムに分布し得るので、１ビットＥＣＣアルゴリズムを用いてセグメント４０６およびセグメント４０８を別々に符合化することは、２つの誤っているビットがセグメント４０６内で検出され得る一方で、１つの誤っているビットが、場合によっては、セグメント４０６内で訂正されることを可能にし得、かつ、２つの誤っているビットがセグメント４０８内で検出され得る一方で、１つの誤っているビットが、セグメント４０８内で訂正され得る。従って、ページ４００上に１ビットＥＣＣアルゴリズムをインプリメントすることによって、２ビットＥＣＣアルゴリズムをインプリメントすることに関連する著しいオーバーヘッドをもたらすことなく、２つまでの誤っているビットが、有効に訂正され得る。
【００６９】
１実施形態において、２ビットＥＣＣアルゴリズムが、セグメント４０６およびセグメント４０８を別々に符合化するために用いられ得、これにより、２つまでの誤っているビットがセグメント４０６内で訂正されることを可能にし、かつ、２つまでの誤っているビットがセグメント４０８内で訂正されることを可能にする。２ビットＥＣＣアルゴリズムをインプリメントすることと関連するオーバーヘッドは、１ビットＥＣＣアルゴリズムをインプリメントすることと関連するオーバーヘッドよりもかなり高いが、データセクション４０２またはオーバーヘッド領域４０４に含まれるバイトの完全性をさらに確実にするために、２ビットＥＣＣアルゴリズムの使用が選択され得る。
【００７０】
通常、ページ内に含まれるセグメントの数は、システムが検出および訂正を所望する誤っているビットの数によって決定され得る。通常、訂正されるべき誤っているビットの数が増加すると、セグメントの数は増加し得る。さらに、セグメントの数は、さらに、例えば、ページのオーバーヘッド領域におけるように、システムが記憶することができるビットのパリティの数に依存し得る。例示的に、ページは、約３つのセグメントに分割され得るが、セグメントの数は、通常、２以上である、実質的に任意の数であり得る。
【００７１】
図４ｂは、本発明の実施形態によるＥＣＣアルゴリズムを用いて別々に符合化され得る３つのセグメントに効率的に分割される。データセクション４２２およびオーバーヘッド領域４２４を含むページ４２０は、３つのセグメント４２６、４２８に分割され得る。通常、オーバーヘッド領域４２４は、単一セグメント４２８である一方で、ユーザ領域は、例えば、オーバーヘッド領域４２４が５１２バイトを含むように構成されている場合、各々が２５６バイト等のほぼ同じサイズであり得るセグメント４２６ａ、４２６ｂに分割され得る。
【００７２】
各々のセグメント４２６、４２８は、ＥＣＣアルゴリズムを用いて別々に符合化される。セグメント４２６、４２８を符合化するために用いられるＥＣＣアルゴリズムが１ビットＥＣＣアルゴリズムである場合、各セグメント４２６、４２８における２つまでの誤っているビットが検出され得、各セグメントにおける１つの誤っているビットが訂正され得る。従って、ページ４２０内の６つまでの誤っているビットが検出され得る一方で、１ビットＥＣＣアルゴリズムがインプリメントされた場合、３つまでの誤っているビットが訂正され得る。あるいは、セグメント４２６、４２８を符合化するために用いられるＥＣＣアルゴリズムが各セグメント４２６、４２８における約２つのビットが訂正されることを可能にする一方で、３つまでの誤っているビットが各セグメント３２６、４２８にて訂正され得ることが理解されるべきである。
【００７３】
各セグメント４２６、４２８が１ビットＥＣＣアルゴリズムまたは拡張１ビットＥＣＣ計算を用いて符合化される場合、ページ４２０内の３つまでのビットが、１ビットアルゴリズムを用いて有効に訂正され得る。通常、誤っているビットがセグメント４２６ａと、セグメント４２６ｂと、セグメント４２８との間に展開する場合に３ビットが訂正され得る。従って、データセクション４２２において記憶されるユーザデータの完全性およびオーバーヘッド領域４２４において記憶されるオーバーヘッドデータの完全性は、実質的な追加的オーバーヘッドをもたらすことなく有効に改善され得る。なぜなら、ページ４２０内でより多くのエラーが検出および訂正され得るからである。
【００７４】
ページのオーバーヘッド領域は、通常、ＥＣＣアルゴリズムを用いて符合化されるが、オーバーヘッド領域が符合化されない状態で留まるか、または、いくつかの例において、特定の他のアルゴリズムを用いて符合化されることが可能であり得る。図４ｃにて示されるように、ページ４４０のデータセクション４４２は、１ビットＥＣＣアルゴリズム等のＥＣＣアルゴリズムを用いて別個のセグメント４４６として符合化され得る一方で、オーバーヘッド領域４４４は、ＥＣＣアルゴリズムを用いて符合化され得ず、例えば、異なったアルゴリズムを用いて符合化され得る。別個のセグメント４４６は、通常、ほぼ同じサイズであり、すなわち、セグメント４４６ａおよびセグメント４４６ｂは、通常。各々、同じ数のバイトを含む。
【００７５】
データセクション４４２は、通常、２つの別個のセグメント４４６ａ、４４６ｂとして符合化され得るが、データセクション４４２が分割され得るセグメントの数は異なり得る。例示的に、２つのセグメント４４６ａ、４４６ｂに分割する代わりに、データセクション４４２は、その代わりに、３つのセグメントに分割され得る。ＥＣＣ計算器が、３つの別個のセグメントが符号化されることを可能にするように拡張される場合、ＥＣＣアルゴリズムと関連し、従って、オーバーヘッド領域４４４に記憶されるパリティビットの数は、通常、約８である。オーバーヘッドパリティビットは、さらに、オーバーヘッド領域にて記憶される。データセクション４４２が、通常、３つより多いセグメントに分割され得る一方で、通常、データセクション４４２が３つより多いセグメントに分割されるデータフィールドを訂正することが必要とされるパリティビットの数は、オーバーヘッド領域４４４に容易に記憶するには過度に大きくなり得る。
【００７６】
上述のように、ＥＣＣ計算またはＥＣＣアルゴリズムを拡張することによって符合化され得る別個のセグメントにページを分解することによって、ＥＣＣアルゴリズムを用いて訂正され得るビットの数が増加し得る。すなわち、通常、１ビットが訂正されることを可能にする１ビットＥＣＣアルゴリズムは、各セグメントにおける１ビットが訂正されることを可能にするように拡張され得る。次に、図５を参照して、１ビットＥＣＣアルゴリズムを用いるページと関連する１ビットよりも多くのビットを訂正するプロセスが、本発明の実施形態により記載される。ページ５００は、２つのセグメント５０６を含み得る。セグメント５０６ａおよびセグメント５０６ｂの両方がページ５００のデータセクションまたは領域の両方と関連し得、あるいは、セグメント５０６ａは、ページ５００のデータセクションを含み得る一方で、セグメント５０６ｂは、ページ５００のオーバーヘッド領域を含む。
【００７７】
記載される１実施形態において、１ビットＥＣＣアルゴリズムは、セグメント５０６を符合化するように拡張される。従って、各セグメント５０６における１ビットは、１ビットＥＣＣアルゴリズムを用いて訂正され得る。セグメント５０６ａ内のビットは、誤っているビット５１２ａを含む一方で、セグメント５０６ｂ内のビットは、誤っているビット５１２ｂを含む。誤っているビット５１２ａは、セグメント５０６ａ’内でビット５１２ａ’になるように訂正され得る一方で、誤っているビット５１２ｂは、セグメント５０６ｂ’内でビット５１２ｂ’になるように訂正され得、これは、１ビットＥＣＣアルゴリズムと関連するエラーリカバリプロセスの間に行われる。
【００７８】
図６を参照して、ページをセグメントに分割、またはそうでない場合、分解することによって、および拡張ＥＣＣアルゴリズムをインプリメントすることによって、ページと関連するデータを符合化する１方法が、本発明の実施形態により記載される。データを符合化するプロセス６００は、工程６０４において開始し、ここで、ＥＣＣアルゴリズムを用いて符合化されるべきページが識別される。一旦ページが識別されると、工程６０８において、ページのデータセクションがセグメントに分割されるべきか否かに関する判定が下される。ページのデータセクションがセグメントに分割されるべきであることが判定された場合、データセクションは、工程６２０において、セグメントに分割される。データセクションに関連するセグメントの数は、通常、変更され得る。例示的に、データセクションは、２つのセグメントまたは３つのセグメントを含み得る。
【００７９】
データセクションがセグメントに分割された後、データセクションにおける各セグメントは、工程６２４において、実質的に別々に符合化され得る。すなわち、例えば、１ビットＥＣＣアルゴリズムに関連するＥＣＣ計算のように、ＥＣＣ計算は、工程６２０において生成される各セグメントが実質的に別々に符合化され得るように拡張され得る。データセクションにおいて各セグメントを符号化すると、オーバーヘッドセクションは、工程６１６において、別個のセグメントとして符合化される。これは、例えば、工程６２４におけるデータセクションと関連するセグメントを符合化するために用いられる、実質的に同じＥＣＣアルゴリズムを用いて行われ、そして、データを符合化するプロセスが完了する。
【００８０】
工程６０８に戻って、データセクションがセグメントに分割されるべきでないことが判定された場合、データセクションが実質的に単一セグメントとして符合化されるべきであることを示す。従って、プロセスフローは、工程６０８から工程６１２に進み、ここで、データセクションは、単一セグメントとして符合化される。上述のように、データセクションは、１ビットＥＣＣアルゴリズム等のＥＣＣアルゴリズムを用いて符合化され得る。一旦データセクションが符合化されると、オーバーヘッドセクションまたは領域は、工程６１６において、実質的に別々のセグメントとして符合化され、そして、データを符合化するプロセスは終了する。
【００８１】
ページと関連するセグメントがＥＣＣアルゴリズムを用いて別々に符合化されることを可能にするシステムをインプリメントすることに関する機能性は、通常、例えば、プログラムコードデバイス等のソフトウェアに提供されるか、または、ファームウェアとして、不揮発性メモリまたは不揮発性メモリコンポーネントを含むホストシステムに提供される。ホストシステムに提供されるソフトウェアまたはファームウェアと関連する適切なシステムアーキテクチャの１実施形態が図７に示される。システムアーキテクチャ７００は、通常、アプリケーションインターフェースモジュール７０４、システムマネージャモジュール７０８、データマネージャモジュール７１２、データインテグリティマネージャ７１６およびデバイスマネージャならびにインターフェースモジュール７２０を含み得るが、これらに限定されない種々のモジュールを含む。通常、システムアーキテクチャ７００は、ソフトウェアコードデバイス、または、図３ａのプロセッサ１０８等のプロセッサによってアクセスされ得るファームウェアを用いてインプリメントされ得る。
【００８２】
通常、アプリケーションインターフェースモジュール７０４は、ホスト、オペレーティングシステムまたはユーザと直接的に通信するように構成され得る。アプリケーションインターフェースモジュール７０４は、さらに、システムマネージャモジュール７０８およびデータマネージャモジュール７１２と通信する。ユーザがフラッシュメモリから読み出し、書き込みまたはフォーマット化することを所望する場合、ユーザは、オペレーティングシステムにリクエストを送信し、このリクエストは、アプリケーションインターフェースモジュール７０４に渡される。アプリケーションインターフェースモジュール７０４は、このリクエストを、リクエストに依存する、システムマネージャモジュール７０８か、またはデータマネージャモジュール７１２に方向付ける。
【００８３】
システムマネージャモジュール７０８は、システム初期化サブモジュール７２４、消去カウントブロック管理サブモジュール７２６、および電力管理ブロックサブモジュール７３０を含む。システム初期化サブモジュール７２４は、通常、初期化のリクエストが処理されることを可能にするように構成され、通常、消去管理サブモジュール７２６と通信する。システム初期化モジュール７２４は、さらに、１対多の論理対物理ブロックの割り当てに分解するように構成される。
【００８４】
消去カウントブロック管理サブモジュール７２６は、ブロックの消去カウントが記憶されるようにする機能性、ならびに、個々の消去カウントを用いて、平均消去カウントが計算および更新されるようにする機能性を含む。換言すると、消去カウントブロック管理サブモジュール７２６は、消去カウントがリストに入れられることを有効に可能にし、かつ、平均消去カウントが維持されることを可能にする。さらに、１実施形態において、消去カウントブロック管理サブモジュール７２６は、さらに、システム全体の初期化リクエストの間、消去カウントブロックにおける、実質的にすべてのブロックの消去カウントを実質的に同期化する。消去カウントブロック管理サブモジュール７２６は、平均消去カウントが消去カウントブロックに記憶されるように構成され得る一方で、電力管理ブロックサブモジュール７３０は、その代わりに、平均消去カウントが記憶されることを可能にするために用いられ得ることが理解されるべきである。
【００８５】
アプリケーションインターフェースモジュール７０４と通信状態にあることに加えて、システムマネージャモジュール７０８は、データマネージャモジュール７１２、デバイスマネージャおよびインターフェースモジュール７２０とも通信状態にある。システムマネージャモジュール７０８およびアプリケーションインターフェースモジュール７０４の両方と通信するデータマネージャモジュール７１２は、論理セクタを物理セクタに有効に転送するセクタマッピングを提供する機能性を含み得る。すなわち、データマネージャモジュール７１２は、論理ブロックを物理ブロックにマップするように構成される。データマネージャモジュール７１２は、さらに、オペレーティングシステムおよびファイルシステムインターフェースレイヤと関連する機能性を含み得、かつ、ブロック内の群が管理されることを可能にする。これは、同時係属中の米国特許出願第１０／２８１，８５５号（２００２年１０月２８日出願）（アトーニードケット番号第ＳＡＮＤＰ０２９号）に記載され、この出願は、参考のため、その全体が本明細書中に援用される。１実施形態において、データマネージャモジュール７１２は、実質的に、アウトオブシーケンス書き込みプロセスが生じることを可能にするように構成され得る。
【００８６】
システムマネージャモジュール７０８、データマネージャ７１２およびデータインテグリティマネージャ７１６と通信するデバイスマネージャおよびインターフェースモジュール７２０は、通常、フラッシュメモリインターフェースを提供し、かつ、例えば、Ｉ／Ｏインターフェース等のハードウェア抽象化と関連する機能性を含む。データインテグリティマネージャモジュール７１６は、機能性の中でもＥＣＣ処理を提供する。
【００８７】
本発明のほんのわずかな実施形態が記載されたが、本発明は、本発明の主旨または範囲から逸脱することなく、多くの他の特定の形態で具体化され得ることが理解されるべきである。例示的に、１ビットＥＣＣアルゴリズムは、ページのセグメントのコンテンツを実質的に別々に符合化するために用いるために適切であるとして記載された。しかしながら、いくつかの実施形態において、ページのセグメントを実質的に別々に符合化するために、２ビットＥＣＣアルゴリズム等の他のタイプのＥＣＣアルゴリズムが用いられ得ることが理解されるべきである。２ビットＥＣＣアルゴリズムが適切であり得る実施形態は、ページが２つのセグメントに分割される実施形態、および、２ビットＥＣＣアルゴリズムと関連するパリティビットを保持するために十分な記憶空間があり得る実施形態を含み得る。
【００８８】
さらに、ＥＣＣアルゴリズムは、通常、１ビットＥＣＣアルゴリズムまたは２ビットＥＣＣアルゴリズムとして記載された一方で、ＥＣＣアルゴリズムは、その代わりに、１シンボルＥＣＣアルゴリズムまたは２シンボルＥＣＣアルゴリズムのそれぞれであり得る。さらに、用いられる実際のＥＣＣアルゴリズムは、多様であり得る。適切なＥＣＣアルゴリズムは、リードソロモン（Ｒｅｅｄ−Ｓｏｌｏｍｏｎ）アルゴリズム、ハミングコードアルゴリズムおよびバイナリハミングコードアルゴリズムを含み得るが、これらに限定されない。例えば、１実施形態において、ページのセグメントが実質的に別々に符合化されることを可能にする適切な１ビットＥＣＣアルゴリズムは、ハミングアルゴリズムであり得る一方で、適切な２ビットＥＣＣアルゴリズムは、リードソロモンアルゴリズムであり得る。
【００８９】
実質的に、同じＥＣＣアルゴリズムがページの異なったセグメントに適用され得るが、異なったＥＣＣアルゴリズムが、その代わりに、ページの異なったセグメントに適用され得ることが理解されるべきである。換言すると、通常、ページの符合化されたセクションについて同じタイプの符合化が実行されるが、その代わりに異なったタイプの符合化が用いられ得る。
【００９０】
通常、ページのデータセクションがセグメントに分割される場合、セグメントは、実質的に等しいサイズであり、すなわち、セグメントは、各々、ほぼ同じ数のビットを含む。しかしながら、セグメントのサイズは、さらに、いくつかの例において異なり得ることが理解されるべきである。
【００９１】
本発明の種々の方法に関連する工程は、多様であり得る。通常、工程は、本発明の主旨または範囲から逸脱することなく、追加、除去、順序の変更、および改変され得る。従って、本実施例は、例示的であって、限定的ではないと考えられるべきであり、本発明は、本明細書中に示された詳細に限定されるべきでなく、添付の請求項の範囲内で改変され得る。
【００９２】
ページをセグメントに分割し、かつ、拡張エラー訂正コード（ＥＣＣ）計算を用いてこれらのセグメントを別々に符合化することによって、ページと関連付けられたデータを符合化する方法および装置が開示される。本発明の１局面によると、メモリシステムの不揮発性メモリ内にデータ領域およびオーバーヘッド領域を有するページと関連するデータを符合化する方法は、ページの少なくとも一部分を、少なくとも２つのデータのセグメントに分割する工程であって、少なくとも２つのデータのセグメントは、第１のセグメントおよび第２のセグメントを有する、工程と、第１のセグメント上でＥＣＣ計算を実行して、第１のセグメントを符合化する工程とを包含する。この方法は、第２のセグメント上でＥＣＣ計算を実行して、第２のセグメントを第１のセグメントとは実質的に別個に符合化する工程をさらに包含する。
【図面の簡単な説明】
【００９３】
【図１】図１は、不揮発性メモリの物理ページの概略図である。
【図２ａ】図２ａは、ＥＣＣアルゴリズムを用いる全体的に符号化される物理ページの概略図である。
【図２ｂ】図２ｂは、物理ページのデータセクションがＥＣＣアルゴリズムを用いて全体的に符合化される一方で、オーバーヘッドセクションが符合化されない状態で留まる物理ページの概略図である。
【図３ａ】図３ａは、不揮発性メモリを含む一般的ホストシステムの概略図である。
【図３ｂ】図３ｂは、例えば、図３ａのメモリデバイス１２０等のメモリデバイスの概略図である。
【図３ｃ】図３ｃは、埋め込み不揮発性メモリを含むホストシステムの概略図である。
【図４ａ】図４ａは、本発明の実施形態による、ページのデータセクションおよびページのオーバーヘッドに実質的に別々に適用されるＥＣＣアルゴリズムを用いて符合化される物理ページの概略図である。
【図４ｂ】図４ｂは、本発明の実施形態による、ページのデータセクションおよびページのオーバーヘッドの２つのセグメントに、実質的に別々に適用されるＥＣＣアルゴリズムを用いて符合化される物理ページの概略図である。
【図４ｃ】図４ｃは、本発明の実施形態による、ページのデータセクションのセグメントに、実質的に別々に適用されるＥＣＣアルゴリズムを用いて部分的に符合化される物理ページの概略図である。
【図５】図５は、本発明の実施形態による、ページのセグメントに、実質的に別々に適用される１ビットＥＣＣアルゴリズムを用いて訂正される誤っているビットを有するページの概略図である。
【図６】図６は、本発明の実施形態による、ページをセグメントに分割するか、またはそうでない場合、分解し、かつ拡張ＥＣＣアルゴリズムをインプリメントすることによって、ページと関連するデータを符合化する１方法を示すプロセスフローチャートである。
【図７】図７は、本発明の実施形態によるシステムアーキテクチャのブロック図を示す。
【図１】
2004152300.tif 000003
【図２ａ】
2004152300.tif 000004
【図２ｂ】
2004152300.tif 000005
【図３ａ】
2004152300.tif 000006
【図３ｂ】
2004152300.tif 000007
【図３ｃ】
2004152300.tif 000008
【図４ａ】
2004152300.tif 000009
【図４ｂ】
2004152300.tif 000010
【図４ｃ】
2004152300.tif 000011
【図５】
2004152300.tif 000012
【図６】
2004152300.tif 000013
【図７】
2004152300.tif 000014