(57)【要約】【課題】不揮発性メモリ内ブロックのコンテンツを符号化および復号化するために、異なるエラー訂正コードアルゴリズムを利用するための方法および装置が開示される。【解決手段】本発明の１つの局面によると、不揮発性メモリ内にデータを格納するための方法は、データが格納されるべき第１のブロックを識別するステップと、第１のブロックに関連するインディケータを入手するステップとを包含する。次に、インディケータが、データが第１のアルゴリズムを利用して符号化されるべきことを示すかどうかに関して、判断がなされ得る。データが第１のアルゴリズムを用いて符号化されるべきであると判断される場合に、データは、第１のアルゴリズムを用いて符号化される。その後、第１のアルゴリズムを利用して符号化されたデータは、第１のブロックに書き込まれる。【選択図】図２ａ
2004164634.tif 000002
【特許請求の範囲】
【請求項１】
メモリシステムの不揮発性メモリ内にデータを格納するための方法であって、該方法は、
該データが格納されるべき第１のブロックを識別するステップと、
該第１のブロックに関連するインディケータを入手するステップと、
該インディケータが、該データが第１のアルゴリズムを利用して符号化されるべきことを示す場合を判断するステップと、
該データが該第１のアルゴリズムを利用して符号化されるべきであることが判断される場合に、該第１のアルゴリズムを利用して該データを符号化するステップと、
該第１のアルゴリズムを利用して符号化された該データを該第１のブロックへ書き込むステップと
を包含する、方法。
【請求項２】
前記第１のアルゴリズムを利用して前記データが符号化されるべきでないと判断される場合に、第２のアルゴリズムを利用して該データを符号化するステップと、
該第２のアルゴリズムを利用して符号化された該データを前記第１のブロックへ書き込むステップと
をさらに包含する、請求項１に記載の方法。
【請求項３】
前記第１のアルゴリズムは、１−ビットエラー訂正コード（ＥＣＣ）アルゴリズムであり、前記第２のアルゴリズムは、２−ビットエラー訂正コード（ＥＣＣ）アルゴリズムである、請求項２に記載の方法。
【請求項４】
前記インディケータは、前記ブロックが再要求されたブロックである場合を示すように構成され、該ブロックが再要求されたブロックである場合に、該インディケータは、前記データが前記第２のアルゴリズムを利用して符号化されるべきことを示すようにさらに構成される、請求項２に記載の方法。
【請求項５】
前記インディケータは、前記ブロックが消去された回数を示すように構成される、請求項２に記載の方法。
【請求項６】
前記インディケータが、前記データが前記第１のアルゴリズムを利用して符号化されるべきことを示す場合を前記判断するステップは、
該インディケータが許容限界値よりも小さい場合を判断するステップであって、該インディケータが、該許容限界値よりも小さい場合に、前記データは該第１のアルゴリズム利用して符号化されるべきである、ステップ
を包含する、請求項５に記載の方法。
【請求項７】
前記インディケータは、前記不揮発性メモリ内のブロックが消去されたおよその平均回数を示すように構成される、請求項２に記載の方法。
【請求項８】
前記インディケータは、データ構造に格納され、該データ構造は、前記第１のブロックから実質的に分離されており、前記ブロックと関連する前記インディケータを入手するステップは、該データ構造から該インディケータを入手するステップを包含する、請求項２に記載の方法。
【請求項９】
前記不揮発性メモリはフラッシュメモリである、請求項１に記載の方法。
【請求項１０】
前記フラッシュメモリは、ＮＡＮＤフラッシュメモリおよびＭＬＣ  ＮＡＮＤフラッシュメモリの一方である、請求項９に記載の方法。
【請求項１１】
メモリシステムの不揮発性メモリ内のデータを読み出すための方法であって、該方法は、
データが読み出されるべき第１のブロックを識別するステップと、
該第１のブロックに関連するインディケータを入手するステップと、
該インディケータが、該第１のブロックに格納された該データが第１のアルゴリズムを利用して符号化されたことを示す場合を判断するステップと、
該データが該第１のアルゴリズムを利用して符号化されたと判断される場合に、該第１のアルゴリズムを利用して該データを復号化するステップと
を包含する、方法。
【請求項１２】
前記データが前記第１のアルゴリズムを利用して符号化されていないと判断される場合に、第２のアルゴリズムを利用して該データを復号化するステップ
をさらに包含する、請求項１１に記載の方法。
【請求項１３】
前記第１のアルゴリズムは、１−ビットＥＣＣアルゴリズムであり、前記第２のアルゴリズムは、２−ビットＥＣＣアルゴリズムである、請求項１２に記載の方法。
【請求項１４】
前記インディケータは、前記ブロックが再要求されたブロックである場合を示すように構成され、該ブロックが再要求されたブロックである場合に、該インディケータは、前記データが前記第２のアルゴリズムを利用して符号化されたことを示すようにさらに構成される、請求項１２に記載の方法。
【請求項１５】
前記インディケータは、前記ブロックが消去された回数を示すように構成される、請求項１２に記載の方法。
【請求項１６】
前記インディケータが、前記データが前記第１のアルゴリズムを利用して符号化されたことを示す場合を判断するステップは、
該インディケータが許容限界値よりも小さい場合を判断するステップであって、該インディケータが該許容限界値よりも小さい場合に、該データは該第１のアルゴリズムを利用して符号化されたものである、ステップ
を包含する、請求項１５に記載の方法。
【請求項１７】
前記インディケータは、前記不揮発性メモリの物理ブロックが消去されたおよその平均回数を示すように構成される、請求項１２に記載の方法。
【請求項１８】
前記インディケータは、データ構造に格納され、該データ構造は、前記第１のブロックから実質的に分離されており、前記ブロックと関連する前記インディケータを入手するステップは、該データ構造から該インディケータを入手するステップを包含する、請求項１２に記載の方法。
【請求項１９】
前記不揮発性メモリはフラッシュメモリである、請求項１１に記載の方法。
【請求項２０】
前記フラッシュメモリは、ＮＡＮＤフラッシュメモリおよびＭＬＣ  ＮＡＮＤフラッシュメモリの一方である、請求項１９に記載の方法。
【請求項２１】
複数のブロックを含む不揮発性メモリであって、該複数のブロックは第１のブロックを含む、不揮発性メモリと、
データが格納されるべき該第１のブロックを識別するためのコードデバイスと、
該第１のブロックと関連するインディケータを入手するためのコードデイバスと、
該インディケータは、該データが第１のアルゴリズムを利用して符号化されるべきであることを示す場合を判断するためのコードデバイスと、
該データが該第１のアルゴリズムを利用して符号化されるべきであると判断される場合に、該第１のアルゴリズムを利用して該データを符号化するためのコードデバイスと、
該第１のアルゴリズムを利用して符号化された該データを、該第１のブロックへ書き込むためのコードデバイスと、
該コードデバイスが格納されるメモリ領域と
を備える、メモリシステム。
【請求項２２】
前記データが前記第１のアルゴリズムを利用して符号化されるべきでないと判断される場合に、第２のアルゴリズムを利用して該データを符号化するためのコードデバイスと、
該第２のアルゴリズムを利用して符号化される該データを、該第１のブロックへ書き込むためのコードデバイスと
をさらに備える、請求項２１に記載のメモリシステム。
【請求項２３】
前記第１のアルゴリズムは、１−ビットＥＣＣアルゴリズムであり、前記第２のアルゴリズムは、２−ビットＥＣＣアルゴリズムである、請求項２２に記載のメモリシステム。
【請求項２４】
前記インディケータは、前記ブロックが再要求されたブロックである場合を示すように構成され、該ブロックが再要求されたブロックである場合に、該インディケータは、前記データが前記第２のアルゴリズムを利用して符号化されるべきであることを示すようにさらに構成される、請求項２２に記載のメモリシステム。
【請求項２５】
前記インディケータは、前記ブロックが消去された回数を示すように構成される、請求項２２に記載のメモリシステム。
【請求項２６】
前記インディケータは、前記データが前記第１のアルゴリズムを利用して符号化されるべきことを示す場合を判断するためのコードデバイスは、
該インディケータが許容限界値よりも小さい場合を判断するためのコードデバイスであって、該インディケータが、該許容限界値よりも小さい場合に、前記データは該第１のアルゴリズム利用して符号化されるべきである、コードデバイス
を備える、請求項２５に記載のメモリシステム。
【請求項２７】
前記不揮発性メモリは、ＮＡＮＤフラッシュメモリおよびＭＬＣ  ＮＡＮＤフラッシュメモリの一方である、請求項２１に記載のメモリシステム。
【請求項２８】
複数のブロックを含む不揮発性メモリであって、該複数のブロックは第１のブロックを含み、該第１のブロックはデータを含む、不揮発性メモリと、
該第１のブロックを識別するためのコードデバイスと、
該第１のブロックに関連するインディケータを入手するためのコードデバイスと、
該インディケータが、該データが第１のアルゴリズムを利用して符号化されたことを示す場合を決定するためのコードデバイスと、
該データが該第１のアルゴリズムを利用して符号化されたと判断される場合に、該第１のアルゴリズムを利用して該データを復号化するためのコードデバイスと、
該コードデバイスを格納するメモリ領域と
を備える、メモリシステム。
【請求項２９】
該データが該第１のアルゴリズムを利用して符号化されていないと判断される場合に、第２のアルゴリズムを利用してデータを復号化するためのコードデバイス
をさらに備える、請求項２８に記載のメモリシステム。
【請求項３０】
前記第１のアルゴリズムは、１−ビットＥＣＣアルゴリズムであり、前記第２のアルゴリズムは、２−ビットＥＣＣアルゴリズムである、請求項２９に記載のメモリシステム。
【請求項３１】
前記インディケータは、前記ブロックが再要求されたブロックである場合を示すように構成され、該ブロックが再要求されたブロックである場合に、該インディケータは、前記データが前記第２のアルゴリズムを利用して符号化されたことを示すようにさらに構成される、請求項２９に記載のメモリシステム。
【請求項３２】
前記インディケータは、前記ブロックが消去された回数を示すように構成される、請求項２９に記載のメモリシステム。
【請求項３３】
前記インディケータは、前記データが前記第１のアルゴリズムを利用して符号化されたことを示す場合を判断するための前記コードデバイスは、
該インディケータが許容限界値よりも小さい場合を判断するためのコードデバイスであって、該インディケータが、該許容限界値よりも小さい場合に、前記データは該第１のアルゴリズム利用して符号化されたものである、コードデバイス
を備える、請求項３２に記載のメモリシステム。
【請求項３４】
前記不揮発性メモリは、ＮＡＮＤフラッシュメモリおよびＭＬＣ  ＮＡＮＤフラッシュメモリの一方である、請求項２８に記載のメモリシステム。
【請求項３５】
複数のブロックを含む不揮発性メモリであって、該ブロックは、第１のブロックおよび第２のブロックを含み、該第１のブロックは、第１のアルゴリズムを利用して符号化される第１のコンテンツのセットを含み、該第２のブロックは、該第２のアルゴリズムを利用して符号化される第２のコンテンツのセットを含み、該不揮発性メモリは、該第１のコンテンツのセットが該第１のアルゴリズムを利用して符号化されることと、該第２のコンテンツのセットが該第２のアルゴリズムを利用して符号化されることとを示すように構成されるデータ構造をさらに含む、不揮発性メモリと、
該データ構造にアクセスするためのコードデバイスであって、該データ構造にアクセスするための該コードデバイスは、該第１のコンテンツのセットが該第１のアルゴリズムを利用して符号化されることを判断するためのコードデバイスと、該第２のコンテンツのセットが該第２のアルゴリズムを利用して符号化されることを判断するためのコードデバイスとを含む、コードデバイスと、
該コードデバイスを格納するメモリ領域と
を備える、メモリシステム。
【請求項３６】
前記第１のアルゴリズムは、１−ビットＥＣＣアルゴリズムであり、前記第２のアルゴリズムは、２−ビットＥＣＣアルゴリズムである、請求項３５に記載のメモリシステム。
【請求項３７】
前記不揮発性メモリは、ＮＡＮＤフラッシュメモリおよびＭＬＣ  ＮＡＮＤフラッシュメモリの一方である、請求項３６に記載のメモリシステム。
【請求項３８】
データが格納されるべき第１のブロックを含む不揮発性メモリと、
該第１のブロックを識別する手段と、
該第１のブロックと関連するインディケータを入手する手段と、
該インディケータが、該データが第１のアルゴリズムを利用して符号化されるべきであることを示す場合を判断する手段と、
該データが該第１のアルゴリズムを利用して符号化されるべきであると判断される場合に、該第１のアルゴリズムを利用して該データを符号化する手段と
を備える、メモリシステム。
【請求項３９】
前記データが前記第１のアルゴリズムを利用して符号化されるべきでないと判断される場合に、第２のアルゴリズムを利用して該データを符号化する手段と、
前記第２のアルゴリズムを利用して符号化されたデータを、該第１のブロックへ書き込む手段と
をさらに備える、請求項３８に記載のメモリシステム。
【請求項４０】
前記第１のアルゴリズムは、１−ビットＥＣＣアルゴリズムであり、前記第２のアルゴリズムは、２−ビットＥＣＣアルゴリズムである、請求項３９に記載のメモリシステム。
【請求項４１】
前記不揮発性メモリは、ＮＡＮＤフラッシュメモリおよびＭＬＣ  ＮＡＮＤフラッシュメモリの一方である、請求項３８に記載のメモリシステム。
【請求項４２】
データが読み出されるべき第１のブロックを含む不揮発性メモリシステムと、
該第１のブロックを識別する手段と、
該第１のブロックと関連するインディケータを入手する手段と、
該インディケータが、該第１のブロックに格納される該データが第１のアルゴリズムを利用して符号化されたことを示す場合を判断する手段と、
該データが該第１のアルゴリズムを利用して符号化されたと判断される場合に、該第１のアルゴリズムを利用して該データを復号化する手段と
を備える、メモリシステム。
【請求項４３】
前記データが前記第１のアルゴリズムを利用して符号化されていないと判断される場合に、第２のアルゴリズムを利用して該データを復号化する手段
をさらに備える、請求項４２に記載のメモリシステム。
【請求項４４】
前記第１のアルゴリズムは、１−ビットＥＣＣアルゴリズムであり、前記第２のアルゴリズムは、２−ビットＥＣＣアルゴリズムである、請求項４３に記載のメモリシステム。
【請求項４５】
前記不揮発性メモリは、ＮＡＮＤフラッシュメモリおよびＭＬＣ  ＮＡＮＤフラッシュメモリの一方である、請求項４２に記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
（本発明の背景）
（１．発明の分野）
本発明は一般的に、大容量デジタルデータストレージシステムに関する。より詳細には、本発明は、不揮発性メモリのブロックへ書き込まれ得るデータを符号化するために利用されるアルゴリズムを動的にスイッチ可能にするためのシステムおよび方法に関する。
【背景技術】
【０００２】
（２．関連技術の説明）
フラッシュメモリストレージシステム等の不揮発性メモリシステムの利用は、そのようなメモリシステムの物理サイズがコンパクトであり、かつ、不揮発性メモリは繰り返し再プログラムされ得るために、増加している。フラッシュメモリストレージシステムの物理サイズのコンパクトさが、ますます普及しつつあるデバイスにおいて、そのようなストレージシステムの利用を促進させる。フラッシュメモリストレージシステムを利用するデバイスは、デジタルカメラ、デジタルカムコーダー、デジタル音楽プレイヤー、ハンドヘルドパーソナルコンピューター、および、グローバルポジショニングデバイスを含むが、それらに制限されない。フラッシュメモリストレージシステムに含まれる不揮発性メモリを繰り返し再プログラムできるという能力により、フラッシュメモリストレージシステムは、利用および再利用が可能になる。
【０００３】
一般的に、フラッシュメモリストレージシステムは、フラッシュメモリカードおよびフラッシュメモリチップセットを含む。フラッシュメモリチップセットは、一般的に、フラッシュメモリコンポーネントおよびコントローラーコンポーネントを含む。典型的には、フラッシュメモリチップセットは、組み込みシステムへ組み立てられるように構成され得る。そのような組み立て品またはホストシステムの製造は、典型的には、コンポーネント形式のフラッシュメモリ、および、他のコンポーネントを確保し、その後、フラッシュメモリおよび他のコンポーネントをホストシステムに組み立てる。
【０００４】
多くの場合、フラッシュメモリの物理ブロック内に格納されるデータの正確さを確実にするために、エラー訂正コード（ＥＣＣ）アルゴリズム、または、エラー検査かつ訂正コードアルゴリズムは、記憶のためにデータを符号化し、格納されたデータを復号化するために利用され得る。典型的には、ＥＣＣアルゴリズムは、データを符号化し、かつ、復号化するための専用の回路またはソフトウェアを利用する。多くのＥＣＣアルゴリズムまたは方法は、格納されたデータに関連するエラーの検知かつ訂正の両方のために利用され得る１つまたは複数のパリティビットを加える。
【０００５】
記憶のためにデータを符号化し復号化するために利用されるいくつかのＥＣＣアルゴリズムは、１−ビットＥＣＣアルゴリズムおよび２−ビットＥＣＣアルゴリズムとして知られる。１−ビットＥＣＣアルゴリズムにより、表現の１ビットが不正確である（例えば、反転する）場合は、その符号が訂正され、２ビットが不正確である（例えば、反転する）場合も、その符号が正しく識別され得るように、符号のセットを表現することが可能になる。２−ビットＥＣＣアルゴリズムにより、表現の２ビットが反転されるかそうでなければ不正確である場合に、その２ビットが訂正され、２ビットより多いビットが反転する場合も、その符号が正確に識別され得るように、符号のセットを表現することが可能になる。
【０００６】
一般的に、１−ビットＥＣＣアルゴリズムは２つの不良なビットを検知し得、１ビットを訂正し得る一方で、２−ビットＥＣＣアルゴリズムは２つより多い不良なビットを検知し、かつ、２ビットを訂正することができるために、２−ビットＥＣＣアルゴリズムの利用が、１−ビットＥＣＣアルゴリズムよりも好まれ得る。しかし、２−ビットＥＣＣアルゴリズムの実装は、格納されたデータに対する増強されたエラー訂正能力を提供する一方で、一般的に、１−ビットＥＣＣアルゴリズムの実装よりもより多くの計算、つまり、より多くの計算上のオーバーヘッドを伴う。より多くの計算上のオーバーヘッドが必要とされる場合、より多くの電力（例えば、バッテリー電力）が、不揮発性メモリによって消費され得る。結果として、特に、相対的に少ない回数で消去されたブロックに格納されるデータのインテグリティは、一般的に、相対的に高くなるので、メモリシステムの全体性能は妥協され得る。
【０００７】
２−ビットＥＣＣアルゴリズムの実装に関連する計算および電力所要量を低減するために、いくらかのシステムは、データを符号化しかつ復号化するために、１−ビットＥＣＣアルゴリズムを利用してもよい。しかし、多くの場合、１−ビットＥＣＣアルゴリズムは、２−ビットＥＣＣアルゴリズムよりも正確ではない。さらに、データが格納されるブロックは、そのブロックの耐用年数の終わりに近づいているときは、そのようなブロックに格納されるデータは、エラーをより含みやすい。従って、１−ビットＥＣＣアルゴリズムが、相対的に多い回数で消去されたブロックに格納されたデータを符号化し、かつ、そのようなデータを復号化するために利用される場合、データのインテグリティは妥協され得、かつ、ブロックに関連する性能は不利な影響を受け得る。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
従って、必要とされるのは、相対的に多い回数で消去されたブロックの性能を向上することができる方法および装置である。向上される際には、相対的に少ない回数で消去されたブロックに格納されるデータを符号化し、かつ、復号化するために、相対的に高い計算オーバーヘッドおよび性能ペナルティを要求しない。すなわち、望まれるのは、ブロックが消去される回数に基づいて選択され得る異なるＥＣＣアルゴリズムを利用して、ブロックのコンテンツを符号化することを可能にする方法および装置である。
【課題を解決するための手段】
【０００９】
（本発明の要旨）
本発明は、不揮発性メモリ内ブロックのコンテンツを符号化および復号化するために、異なるエラー訂正コードアルゴリズムを利用するためのシステムおよび方法に関する。本発明の１つの局面によると、不揮発性メモリ内にデータを格納するための方法は、データが格納されるべき第１のブロックを識別するステップと、第１のブロックに関連するインディケータを入手するステップとを含む。次に、インディケータが、データが第１のアルゴリズムを利用して符号化されるべきことを示すかどうかに関して、判断がなされ得る。データが第１のアルゴリズムを用いて符号化されるべきであると判断される場合に、データは、第１のアルゴリズムを用いて符号化される。その後、第１のアルゴリズムを利用して符号化されたデータは、第１のブロックに書き込まれる。
【００１０】
１つの実施形態では、本方法はまた、データが第１のアルゴリズムを利用して符号化されるべきでないと判断される場合、第２のアルゴリズムを利用しデータを符号化するステップと、第２のアルゴリズムを利用して符号化されたデータを第１のブロックへ書き込むステップとを含む。そのような実施形態では、第１のアルゴリズムは、１−ビットエラー訂正コード（ＥＣＣ）であってもよく、第２のアルゴリズムは、２−ビットＥＣＣであってもよい。
【００１１】
不揮発性メモリシステムのブロックに格納されるデータを、ブロック毎を基本に異なるＥＣＣアルゴリズムを利用して符号化できるようにすることによって、メモリシステム内のいくらかのブロックは、１−ビットＥＣＣアルゴリズムを利用して符号化され得る一方で、他のブロックは、２−ビットＥＣＣアルゴリズムを用いて符号化され得る。１−ビットＥＣＣアルゴリズム、もしくは、より計算力が強度でないアルゴリズムは、相対的に大きい消去操作回数を経ていないブロックへ格納されるべきデータを符号化するために利用される一方、２−ビットＥＣＣアルゴリズム、もしくは、より計算力が強度なアルゴリズムは、相対的に大きい消去操作回数を経ているブロックへ格納されるべきデータを符号化するために利用される。２−ビットＥＣＣアルゴリズムは、一般的に、１−ビットＥＣＣアルゴリズムよりも正確にデータを符号化および復号化することができるので、それらの利用可能性の終わりに近づいたブロックに格納されるべきデータを符号化するために２−ビットＥＣＣアルゴリズムを利用することによって、ブロックに関連する性能を向上させることができる。１−ビットＥＣＣアルゴリズムが、ブロックがその利用可能性の終わりに近づいていないときに利用されない場合は、そのようなブロックに格納しかつそのようなブロックから読み出すのに必要となる計算回数は、低減され得、それにより、読み出しおよび書き込みプロセスの速度全体を向上させることができ、かつ、メモリシステムに関連する電力所要量を低減する。
【００１２】
本発明の別の局面によると、メモリシステムの不揮発性メモリ内のデータを読み出すための方法は、データが読み出されるべき第１のブロックを識別するステップと、第１のブロックに関連するインディケータを入手するステップと、インディケータが、第１のブロックに格納されるデータが第１のアルゴリズムを利用して符号化されたことを示す場合を判断するステップとを含む。本方法はまた、データが第１のアルゴリズムを利用して符号化されたと判断される場合に、第１のアルゴリズムを利用してデータを復号化するステップを含む。１つの実施形態では、本方法は、データが第１のアルゴリズムを利用して符号化されていないと判断される場合に、第２のアルゴリズムを利用してデータを復号化するステップをさらに含む。
【００１３】
別の実施形態では、インディケータは、ブロックが再要求されたブロックである場合を示すように構成される。ブロックが再要求されたブロックである場合、インディケータは、データが第２のアルゴリズムを利用して符号化されたことを示すようにさらに構成される。さらに別の実施形態では、インディケータは、ブロックが消去された回数を示すように構成される。そのような実施形態では、インディケータが、データが第１のアルゴリズムを利用して符号化されたことを示す場合を判断するステップは、インディケータが許容限界値よりも小さい場合を判断するステップを含む。インディケータが許容限界値よりも小さい場合、データは第１のアルゴリズムを利用して符号化されたことが暗示される。
【００１４】
本発明のさらに別の実施形態によると、メモリシステムは、第１のブロックおよび第２のブロックを含む不揮発性メモリシステムを含む。第１のブロックは、第１のアルゴリズムを利用して符号化された第１のコンテンツのセットを含み、第２のブロックは、第２のアルゴリズムを利用して符号化された第２のコンテンツのセットを含む。不揮発性メモリはまた、データ構造、例えば、消去カウントブロックを含み、データ構造は、第１のコンテンツのセットは、第１のアルゴリズムを利用して符号化され、かつ、第２のコンテンツのセットは、第２のアルゴリズムを利用して符号化されることを示すように構成される。メモリシステムは、データ構造にアクセスするためのコードデバイスをさらに含む。そのようなコードデバイスは、第１のコンテンツのセットが第１のアルゴリズム利用して符号化されることを判断するためのコードデバイスと、第２のコンテンツのセットが第２のアルゴリズムを利用して符号化されたことを判断するためのコードデバイスとを含む。
【００１５】
本発明によるメモリシステムの不揮発性メモリ内にデータを格納するための方法は、該データが格納されるべき第１のブロックを識別するステップと、該第１のブロックに関連するインディケータを入手するステップと、該インディケータが、該データが第１のアルゴリズムを利用して符号化されるべきことを示す場合を判断するステップと、該データが該第１のアルゴリズムを利用して符号化されるべきであることが判断される場合に、該第１のアルゴリズムを利用して該データを符号化するステップと、該第１のアルゴリズムを利用して符号化された該データを該第１のブロックへ書き込むステップとを包含し、それにより上記目的が達成される。
【００１６】
前記第１のアルゴリズムを利用して前記データが符号化されるべきでないと判断される場合に、第２のアルゴリズムを利用して該データを符号化するステップと、該第２のアルゴリズムを利用して符号化された該データを前記第１のブロックへ書き込むステップと
をさらに包含してもよい。
【００１７】
前記第１のアルゴリズムは、１−ビットエラー訂正コード（ＥＣＣ）アルゴリズムであり、前記第２のアルゴリズムは、２−ビットエラー訂正コード（ＥＣＣ）アルゴリズムであってもよい。
【００１８】
前記インディケータは、前記ブロックが再要求されたブロックである場合を示すように構成され、該ブロックが再要求されたブロックである場合に、該インディケータは、前記データが前記第２のアルゴリズムを利用して符号化されるべきことを示すようにさらに構成されてもよい。
【００１９】
前記インディケータは、前記ブロックが消去された回数を示すように構成されてもよい。
【００２０】
前記インディケータが、前記データが前記第１のアルゴリズムを利用して符号化されるべきことを示す場合を前記判断するステップは、該インディケータが許容限界値よりも小さい場合を判断するステップであって、該インディケータが、該許容限界値よりも小さい場合に、前記データは該第１のアルゴリズム利用して符号化されるべきである、ステップを包含してもよい。
【００２１】
前記インディケータは、前記不揮発性メモリ内のブロックが消去されたおよその平均回数を示すように構成してもよい。
【００２２】
前記インディケータは、データ構造に格納され、該データ構造は、前記第１のブロックから実質的に分離されており、前記ブロックと関連する前記インディケータを入手するステップは、該データ構造から該インディケータを入手するステップを包含してもよい。
【００２３】
前記不揮発性メモリはフラッシュメモリであってもよい。
【００２４】
前記フラッシュメモリは、ＮＡＮＤフラッシュメモリおよびＭＬＣ  ＮＡＮＤフラッシュメモリの一方であってもよい。
【００２５】
本発明によるメモリシステムの不揮発性メモリ内のデータを読み出すための方法は、データが読み出されるべき第１のブロックを識別するステップと、該第１のブロックに関連するインディケータを入手するステップと、該インディケータが、該第１のブロックに格納された該データが第１のアルゴリズムを利用して符号化されたことを示す場合を判断するステップと、該データが該第１のアルゴリズムを利用して符号化されたと判断される場合に、該第１のアルゴリズムを利用して該データを復号化するステップとを包含し、それにより上記目的が達成される。
【００２６】
前記データが前記第１のアルゴリズムを利用して符号化されていないと判断される場合に、第２のアルゴリズムを利用して該データを復号化するステップをさらに包含してもよい。
【００２７】
前記第１のアルゴリズムは、１−ビットＥＣＣアルゴリズムであり、前記第２のアルゴリズムは、２−ビットＥＣＣアルゴリズムであってもよい。
【００２８】
前記インディケータは、前記ブロックが再要求されたブロックである場合を示すように構成され、該ブロックが再要求されたブロックである場合に、該インディケータは、前記データが前記第２のアルゴリズムを利用して符号化されたことを示すようにさらに構成されてもよい。
【００２９】
前記インディケータは、前記ブロックが消去された回数を示すように構成されてもよい。
【００３０】
前記インディケータが、前記データが前記第１のアルゴリズムを利用して符号化されたことを示す場合を判断するステップは、該インディケータが許容限界値よりも小さい場合を判断するステップであって、該インディケータが該許容限界値よりも小さい場合に、該データは該第１のアルゴリズムを利用して符号化されたものである、ステップを包含してもよい。
【００３１】
前記インディケータは、前記不揮発性メモリの物理ブロックが消去されたおよその平均回数を示すように構成されてもよい。
【００３２】
前記インディケータは、データ構造に格納され、該データ構造は、前記第１のブロックから実質的に分離されており、前記ブロックと関連する前記インディケータを入手するステップは、該データ構造から該インディケータを入手するステップを包含してもよい。
【００３３】
前記不揮発性メモリはフラッシュメモリであってもよい。
【００３４】
前記フラッシュメモリは、ＮＡＮＤフラッシュメモリおよびＭＬＣ  ＮＡＮＤフラッシュメモリの一方であってもよい。
【００３５】
本発明によるメモリシステムは、複数のブロックを含む不揮発性メモリであって、該複数のブロックは第１のブロックを含む、不揮発性メモリと、データが格納されるべき該第１のブロックを識別するためのコードデバイスと、該第１のブロックと関連するインディケータを入手するためのコードデイバスと、該インディケータは、該データが第１のアルゴリズムを利用して符号化されるべきであることを示す場合を判断するためのコードデバイスと、該データが該第１のアルゴリズムを利用して符号化されるべきであると判断される場合に、該第１のアルゴリズムを利用して該データを符号化するためのコードデバイスと、該第１のアルゴリズムを利用して符号化された該データを、該第１のブロックへ書き込むためのコードデバイスと、該コードデバイスが格納されるメモリ領域とを備え、それにより上記目的が達成される。
【００３６】
前記データが前記第１のアルゴリズムを利用して符号化されるべきでないと判断される場合に、第２のアルゴリズムを利用して該データを符号化するためのコードデバイスと、該第２のアルゴリズムを利用して符号化される該データを、該第１のブロックへ書き込むためのコードデバイスとをさらに備えてもよい。
【００３７】
前記第１のアルゴリズムは、１−ビットＥＣＣアルゴリズムであり、前記第２のアルゴリズムは、２−ビットＥＣＣアルゴリズムであってもよい。
【００３８】
前記インディケータは、前記ブロックが再要求されたブロックである場合を示すように構成され、該ブロックが再要求されたブロックである場合に、該インディケータは、前記データが前記第２のアルゴリズムを利用して符号化されるべきであることを示すようにさらに構成されてもよい。
【００３９】
前記インディケータは、前記ブロックが消去された回数を示すように構成されてもよい。
【００４０】
前記インディケータは、前記データが前記第１のアルゴリズムを利用して符号化されるべきことを示す場合を判断するためのコードデバイスは、該インディケータが許容限界値よりも小さい場合を判断するためのコードデバイスであって、該インディケータが、該許容限界値よりも小さい場合に、前記データは該第１のアルゴリズム利用して符号化されるべきである、コードデバイスを備えてもよい。
【００４１】
前記不揮発性メモリは、ＮＡＮＤフラッシュメモリおよびＭＬＣ  ＮＡＮＤフラッシュメモリの一方であってもよい。
【００４２】
本発明によるメモリシステムは、複数のブロックを含む不揮発性メモリであって、該複数のブロックは第１のブロックを含み、該第１のブロックはデータを含む、不揮発性メモリと、該第１のブロックを識別するためのコードデバイスと、該第１のブロックに関連するインディケータを入手するためのコードデバイスと、該インディケータが、該データが第１のアルゴリズムを利用して符号化されたことを示す場合を決定するためのコードデバイスと、該データが該第１のアルゴリズムを利用して符号化されたと判断される場合に、該第１のアルゴリズムを利用して該データを復号化するためのコードデバイスと、該コードデバイスを格納するメモリ領域とを備え、それにより上記目的が達成される。
【００４３】
該データが該第１のアルゴリズムを利用して符号化されていないと判断される場合に、第２のアルゴリズムを利用してデータを復号化するためのコードデバイスをさらに備えてもよい。
【００４４】
前記第１のアルゴリズムは、１−ビットＥＣＣアルゴリズムであり、前記第２のアルゴリズムは、２−ビットＥＣＣアルゴリズムであってもよい。
【００４５】
前記インディケータは、前記ブロックが再要求されたブロックである場合を示すように構成され、該ブロックが再要求されたブロックである場合に、該インディケータは、前記データが前記第２のアルゴリズムを利用して符号化されたことを示すようにさらに構成されてもよい。
【００４６】
前記インディケータは、前記ブロックが消去された回数を示すように構成されてもよい。
【００４７】
前記インディケータは、前記データが前記第１のアルゴリズムを利用して符号化されたことを示す場合を判断するための前記コードデバイスは、該インディケータが許容限界値よりも小さい場合を判断するためのコードデバイスであって、該インディケータが、該許容限界値よりも小さい場合に、前記データは該第１のアルゴリズム利用して符号化されたものである、コードデバイスを備えてもよい。
【００４８】
前記不揮発性メモリは、ＮＡＮＤフラッシュメモリおよびＭＬＣ  ＮＡＮＤフラッシュメモリの一方であってもよい。
【００４９】
本発明によるメモリシステムは、複数のブロックを含む不揮発性メモリであって、該ブロックは、第１のブロックおよび第２のブロックを含み、該第１のブロックは、第１のアルゴリズムを利用して符号化される第１のコンテンツのセットを含み、該第２のブロックは、該第２のアルゴリズムを利用して符号化される第２のコンテンツのセットを含み、該不揮発性メモリは、該第１のコンテンツのセットが該第１のアルゴリズムを利用して符号化されることと、該第２のコンテンツのセットが該第２のアルゴリズムを利用して符号化されることとを示すように構成されるデータ構造をさらに含む、不揮発性メモリと、該データ構造にアクセスするためのコードデバイスであって、該データ構造にアクセスするための該コードデバイスは、該第１のコンテンツのセットが該第１のアルゴリズムを利用して符号化されることを判断するためのコードデバイスと、該第２のコンテンツのセットが該第２のアルゴリズムを利用して符号化されることを判断するためのコードデバイスとを含む、コードデバイスと、該コードデバイスを格納するメモリ領域とを備え、それにより上記目的が達成される。
【００５０】
前記第１のアルゴリズムは、１−ビットＥＣＣアルゴリズムであり、前記第２のアルゴリズムは、２−ビットＥＣＣアルゴリズムであってもよい。
【００５１】
前記不揮発性メモリは、ＮＡＮＤフラッシュメモリおよびＭＬＣ  ＮＡＮＤフラッシュメモリの一方であってもよい。
【００５２】
本発明によるメモリシステムは、データが格納されるべき第１のブロックを含む不揮発性メモリと、該第１のブロックを識別する手段と、該第１のブロックと関連するインディケータを入手する手段と、該インディケータが、該データが第１のアルゴリズムを利用して符号化されるべきであることを示す場合を判断する手段と、該データが該第１のアルゴリズムを利用して符号化されるべきであると判断される場合に、該第１のアルゴリズムを利用して該データを符号化する手段とを備え、それにより上記目的が達成される。
【００５３】
前記データが前記第１のアルゴリズムを利用して符号化されるべきでないと判断される場合に、第２のアルゴリズムを利用して該データを符号化する手段と、前記第２のアルゴリズムを利用して符号化されたデータを、該第１のブロックへ書き込む手段とをさらに備えてもよい。
【００５４】
前記第１のアルゴリズムは、１−ビットＥＣＣアルゴリズムであり、前記第２のアルゴリズムは、２−ビットＥＣＣアルゴリズムであってもよい。
【００５５】
前記不揮発性メモリは、ＮＡＮＤフラッシュメモリおよびＭＬＣ  ＮＡＮＤフラッシュメモリの一方であってもよい。
【００５６】
本発明によるメモリシステムは、データが読み出されるべき第１のブロックを含む不揮発性メモリシステムと、該第１のブロックを識別する手段と、該第１のブロックと関連するインディケータを入手する手段と、該インディケータが、該第１のブロックに格納される該データが第１のアルゴリズムを利用して符号化されたことを示す場合を判断する手段と、該データが該第１のアルゴリズムを利用して符号化されたと判断される場合に、該第１のアルゴリズムを利用して該データを復号化する手段とを備え、それにより上記目的が達成される。
【００５７】
前記データが前記第１のアルゴリズムを利用して符号化されていないと判断される場合に、第２のアルゴリズムを利用して該データを復号化する手段
をさらに備えてもよい。
【００５８】
前記第１のアルゴリズムは、１−ビットＥＣＣアルゴリズムであり、前記第２のアルゴリズムは、２−ビットＥＣＣアルゴリズムであってもよい。
【００５９】
前記不揮発性メモリは、ＮＡＮＤフラッシュメモリおよびＭＬＣ  ＮＡＮＤフラッシュメモリの一方であってもよい。
【００６０】
これらおよびその他の本発明の利点は、以下の詳細な説明を読み、図面の様々な図を調べることによって明らかになる。
【００６１】
本発明は、付属の図面に関連する以下の説明を参照することによって最も理解され得る。
【発明の効果】
【００６２】
不揮発性メモリシステムのブロックに格納されるデータを、ブロック毎を基本に異なるＥＣＣアルゴリズムを利用して符号化できるようにすることによって、メモリシステム内のいくらかのブロックは、１−ビットＥＣＣアルゴリズムを利用して符号化され得る一方で、他のブロックは、２−ビットＥＣＣアルゴリズムを用いて符号化され得る。１−ビットＥＣＣアルゴリズム、もしくは、より計算力が強度でないアルゴリズムは、相対的に大きい消去操作回数を経ていないブロックへ格納されるべきデータを符号化するために利用される一方、２−ビットＥＣＣアルゴリズム、もしくは、より計算力が強度なアルゴリズムは、相対的に大きい消去操作回数を経ているブロックへ格納されるべきデータを符号化するために利用される。２−ビットＥＣＣアルゴリズムは、一般的に、１−ビットＥＣＣアルゴリズムよりも正確にデータを符号化および復号化することができるので、それらの利用可能性の終わりに近づいたブロックに格納されるべきデータを符号化するために２−ビットＥＣＣアルゴリズムを利用することによって、ブロックに関連する性能を向上させることができる。１−ビットＥＣＣアルゴリズムが、ブロックがその利用可能性の終わりに近づいていないときに利用されない場合は、そのようなブロックに格納しかつそのようなブロックから読み出すのに必要となる計算回数は、低減され得、それにより、読み出しおよび書き込みプロセスの速度全体を向上させることができ、かつ、メモリシステムに関連する電力所要量を低減する。
【発明を実施するための最良の形態】
【００６３】
本発明は、２００２年１０月２８日に出願され、その全体を本明細書中で参照として援用する米国仮特許出願第６０／４２１，９１１号の優先権を主張する。
（関連出願の相互参照）
本発明は、同時係属中の米国特許出願第１０／２８１，７３９号、第１０／２８１，８２３号、第１０／２８１，６７０号、第１０／２８１，８２４，第１０／２８１，６３１号、第１０／２８１，８５５号、第１０／２８１，７６２号、第１０／２８１，６９６号、第１０／２８１，６２６号、第１０／２８１，８０４号、および、同時係属中の米国仮特許出願第６０／４２１，９１０号、第６０／４２１，７２５号、第６０／４２１，９６５号、第６０／４２２，１６６号、第６０／４２１，７４６号に関連し、それぞれ２００２年１０月２８日に出願され、それぞれその全体を本明細書中で参照として援用する。
【００６４】
（実施形態の詳細な説明）
１−ビットＥＣＣアルゴリズムまたは２−ビットＥＣＣアルゴリズムのどちらか等の誤り訂正コード（ＥＣＣ）アルゴリズムは、多くの場合、不揮発性メモリの物理ブロックに格納されるデータを符号化し、かつ格納されたデータを復号化するために利用される。ＥＣＣアルゴリズムの利用により、一般的に、物理ブロック内に格納されるデータの正確さが向上し得る。さらに計算力の強度な（ｍｏｒｅ  ｃａｌｃｕｌａｔｉｏｎ−ｉｎｔｅｎｓｉｖｅ）２−ビットＥＣＣアルゴリズムの利用は、２−ビットＥＣＣアルゴリズムが１−ビットＥＣＣアルゴリズムを利用して訂正され得るよりも多くの誤りのあるビットを訂正することができるために、より計算力が強度でない（ｌｅｓｓ  ｃａｌｃｕｌａｔｉｏｎ−ｉｎｔｅｎｓｉｖｅ）１−ビットＥＣＣアルゴリズムより好まれ得る。しかし、２−ビットＥＣＣアルゴリズムの実装は、増強されたエラー訂正能力を提供する一方、計算量および電力所要量の点で、１−ビットＥＣＣアルゴリズムよりもより高価である。
【００６５】
多くの場合、データが格納されるブロックが比較的新しく、従って、相対的に多数の消去サイクルを受けてこなかった場合、１−ビットＥＣＣアルゴリズムは、多量のデータのインテグリティを保証するために充分であり得る。従って、２−ビットＥＣＣアルゴリズムの実装を、必要としなくてもよい。しかし、ブロックがより古くなり、相対的に多数の消去サイクルを受けた場合は、１−ビットＥＣＣアルゴリズムは、所望のレベルのデータインテグリティを保証するのに十分となり得ない。２−ビットＥＣＣアルゴリズムの利用により、データのインテグリティを有意に改善し得る。
【００６６】
ハイブリッドＥＣＣ実装により、データを符号化しかつ復号化するためのＥＣＣアルゴリズムを動的にスイッチすることが可能になる。具体的には、１つの実施形態において、相対的に少数の消去サイクルを経てきたブロックに格納されたデータは、より計算力が強度でなくかつより正確でないアルゴリズム（例えば、１−ビットＥＣＣアルゴリズム）を利用して符号化され得る一方で、相対的に多数の消去サイクルを経てきたブロックは、より計算力が強度でありかつより正確なアルゴリズム（例えば、２−ビットＥＣＣアルゴリズム）を利用して符号化され得る。「デフォルト」アルゴリズム（例えば、１−ビットＥＣＣアルゴリズム等のより正確でないアルゴリズム）の代わりに、データが２−ビットＥＣＣアルゴリズム等のより正確なアルゴリズムを利用して符号化されるべきときを動的に判断することによって、特定のブロックに格納されるデータを符号化するために選択されるアルゴリズムは、特定のブロックの特性に依存して選択され得、さらに、より正確なアルゴリズムが、実質的な利点を提供し得る場合に効果的に利用され得る。例えば、あるブロックが予測される耐用年数の終わりに近い場合は、そのブロックに格納されるべきデータを符号化する２−ビットＥＣＣアルゴリズムを利用することによって、ブロックに格納されるデータの正確さまたはインテグリティを向上させ得、また、そのブロックの耐用年数を潜在的に拡張させ得る。さらに、耐用年数の終わりに近づいていないブロックに格納されるべきデータを符号化するために、より計算力が強度でないアルゴリズムを利用することによって、メモリシステム全体の電力所要量は低減され得、従って、メモリシステム全体の耐性は改善される。
【００６７】
１つの実施形態において、許容限界消去カウントまたは許容限界消去サイクル数は、ブロック内に書き込まれるべきデータを符号化するために、より計算力が強度でなくかつ正確でないＥＣＣアルゴリズム、または、より計算力が強度でありかつ正確なＥＣＣアルゴリズムのどちらを利用するべきかのインディケータとして利用され得る。ブロックが経験した消去サイクル数を許容限界数との比較により、ブロックが許容限界数よりも多くの消去サイクルを経ていることが示される場合、そのブロックは耐用年数の終端に近いとみなされ得るので、より正確なＥＣＣアルゴリズムが利用され得る。
【００６８】
フラッシュメモリシステム、または、より一般的には不揮発性メモリデバイスは、システム内のブロックを異なるＥＣＣアルゴリズムを利用して符号化させることができるハイブリッドＥＣＣ実装を利用し得る。フラッシュメモリシステム、または、より一般的には不揮発性メモリデバイスは、一般的に、ＮＡＮＤまたはＭＬＣ  ＮＡＮＤ等のフラッシュメモリ、カード、および、チップセットを含む。典型的には、フラッシュメモリシステムはホストシステムと連携して利用されることにより、ホストシステムは、フラッシュメモリシステムへデータを書き込む、または、フラッシュメモリシステムからデータを読み出し得る。しかし、いくらかのフラッシュメモリシステムは、図１ｃに関連して以下で説明されるように、組み込みフラッシュメモリと、その組み込みフラッシュメモリに対するコントローラーとして実質的に動作するホスト上で実行するソフトウェアとを含む。図１ａを参照して、ＣｏｍｐａｃｔＦｌａｓｈメモリカード等の不揮発性メモリデバイスを含む一般的なホストシステムが説明される。ホストまたはコンピュータシステム１００は、一般的に、マイクロプロセッサ１０８、ランダムアクセスメモリ（ＲＡＭ）１１２、および、入力／出力回路１１６を通信させ得るシステムバス１０４を含む。理解されるべきことは、ホストシステム１００は、一般的に、説明の目的に対して示されないディスプレイデバイスおよびネットワーキングデバイスなどの他のコンポーネントを含み得る。
【００６９】
一般的に、ホストシステム１００は、静止画像、オーディオ情報、および、ビデオイメージ情報を含む情報をキャプチャ可能であってもよい。そのような情報は、リアルタイムでキャプチャされ得、ワイヤレスの態様でホストシステム１００に伝送され得る。ホストシステム１００は実質的に任意のシステムであってもよいが、ホストシステム１００は、典型的には、デジタルカメラ、ビデオカメラ、携帯電話通信デバイス、オーディオプレイヤー、または、ビデオプレイヤー等のシステムである。しかし、理解されるべきことは、ホストシステム１００は、一般的に、データまたは情報を格納し、かつ、データまたは情報を取り出す任意のシステムで実質的にあってよい。
【００７０】
ホストシステム１００はまた、データをキャプチャするのみ、または、データを取り出すのみのどちらかのシステムであってもよい。すなわち、ホストシステム１００は、１つの実施形態では、データを格納する専用のシステムであってもよく、あるいは、ホストシステム１００は、データを読み出す専用のシステムであってもよい。一例として、ホストシステム１００は、データを書き込むまたは保存するためだけに構成されるメモリライターであってもよい。もしくは、ホストシステム１００は、データをキャプチャするためではなく、データを読み出すまたは取り出すために典型的に構成されるＭＰ３プレイヤーなどのデバイスであってもよい。
【００７１】
１つの実施形態では、取り外し可能な不揮発性メモリデバイスである、不揮発性メモリデバイス１２０は、情報を格納するためにシステムバス１０４とインターフェイスするように構成される。選択的インターフェイスブロック１３０は、不揮発性メモリデバイス１２０を、バス１０４と間接的にインターフェイスさせ得る。存在する場合は、入力／出力回路ブロック１１６は、当業者に理解されるように、バス１０４上の負荷を低減するのに役立つ。不揮発性メモリデバイス１２０は、不揮発性メモリ１２４および選択的メモリ制御システム１２８を含む。１つの実施形態では、不揮発性メモリデバイス１２０は、単一のチップまたはダイ上に実装され得る。もしくは、不揮発性メモリデバイス１２０は、マルチチップモジュール、または、チップセットを形成しかつ不揮発性メモリデバイス１２０として一緒に利用され得る複数のディスクリートなコンポーネント上で実装され得る。不揮発性メモリデバイス１２０の１つの実施形態は、図１ｂに関連して以下のより詳細が説明される。
【００７２】
ＮＡＮＤフラッシュメモリまたはＭＬＣ  ＮＡＮＤフラッシュメモリ等の不揮発性メモリ１２４は、必要とされるときにデータにアクセスし読み出し得るように、データを格納するように構成される。不揮発性メモリ１２４に格納されたデータはまた、適切に消去され得るが、不揮発性メモリ１２４におけるいくらかのデータが消去され得ないことが理解されるべきである。データを格納するステップ、データを読み出すステップ、および、データを消去するステップのプロセスは、一般的に、メモリ制御システム１２８によって制御され、あるいはメモリ制御システム１２８が存在しない場合は、マイクロプロセッサ１０８によって実行されるソフトウェアによって制御される。本質的に不揮発性メモリ１２４のセクションを実質的に等しく消耗させることによって、不揮発性メモリ１２４の耐用年数が実質的に最大化されるように、不揮発性メモリ１２４の動作は管理され得る。
【００７３】
不揮発性メモリデバイス１２０は、選択的メモリ制御システム１２８（すなわち、コントローラー）を含むというように一般的に説明された。多くの場合、不揮発性メモリデバイス１２０は、不揮発性メモリ１２４およびメモリ制御システム１２８（すなわち、コントローラー）機能に対して別個のチップを含んでもよい。一例として、制限されないがＰＣカード、ＣｏｍｐａｃｔＦｌａｓｈカード、ＭｕｌｔｉＭｅｄｉａカード、および、安全なデジタルカードを含む不揮発性メモリデバイスが、別個のチップ上で実装され得るコントローラーを含む一方で、他の不揮発性メモリデバイスは、別個のチップ上で実装されるコントローラーを含まなくてもよい。不揮発性メモリデバイス１２０が別個のメモリおよびコントローラーチップを含まない実施形態では、当業者に理解されるように、メモリおよびコントローラー機能は、単一のチップに集積され得る。もしくは、例えば、上述のように不揮発性メモリデバイス１２０がメモリコントローラー１２８を含まない実施形態のように、メモリ制御システム１２８の機能性は、マイクロプロセッサ１０８によって提供され得る。
【００７４】
図１ｂを参照して、不揮発性メモリデバイス１２０は、本発明の実施形態に沿ってより詳細に説明される。上述されたように、不揮発性メモリデバイス１２０は、不揮発性メモリ１２４を含み、かつ、メモリ制御システム１２８を含み得る。メモリ１２４、および、制御システム１２８またはコントローラーは、不揮発性メモリデバイス１２０の主要なコンポーネントであり得るが、メモリ１２４が組み込みＭＬＣ  ＮＡＮＤメモリ等の組み込みＮＡＮＤデバイスである場合、例えば、不揮発性メモリデバイス１２０は、制御システム１２８を含まなくてもよい。メモリ１２４は、半導体基板上に形成されるメモリセルの配列であってもよい。ここで、メモリセルの記憶素子上に２以上のレベルの電荷を格納することによって、１以上のデータビットは、個々のメモリセルに格納される。不揮発性フラッシュの電気的に消去可能プログラム可能リードオンリーメモリ（ＥＥＰＲＯＭ）は、そのようなシステムに対するメモリの共通タイプの例である。
【００７５】
存在する場合は、制御システム１２８は、バス１５を介してホストコンピューター、または、データを格納するためのメモリシステムを利用する他のシステムと通信する。バス１５は、一般的に、図１ａのバス１０４の一部である。制御システム１２８はまた、メモリセル配列１１を含み得る、メモリ１２４の動作を制御して、ホストによって提供されるデータを書き込み、ホストによって要求されるデータを読み出し、動作中のメモリ１２４の様々なハウスキーピング機能を実行する。制御システム１２８は、一般的に、汎用性のマルチプロセッサを含み、これは、関連する不揮発性ソフトウェアメモリ、様々な論理回路等を有する。特定のルーティンの性能を制御するために、多くの場合、１つ以上の状態マシンも含まれる。
【００７６】
メモリセル配列１１は、典型的には、アドレスデコーダ１７を介して制御システム１２８またはマイクロプロセッサ１０８によってアドレス指定される。デコーダ１７は、制御システム１２８によってアドレス指定されるメモリセルのグループに対してデータをプログラムするか、データを読み出すか、または、メモリセルのグループを消去するために、配列１１のゲートおよびビットラインに、適切な電圧を印加する。さらなる回路１９は、アドレス指定されたセルのグループへプログラムされるデータに依存する配列のエレメントに印加される電圧を制御するプログラミングドライバを含む。回路１９はまた、センス増幅器と、アドレス指定されたグループのメモリセルからデータを読み出すのに必要な他の回路とを含む。配列１１にプログラムされるべきデータ、または、配列１１から最近に読み出されたデータは、典型的には、制御システム１２８内のバッファメモリ２１に格納される。制御システム１２８はまた、通常、コマンドおよびステータスデータ等を一時的に格納するための様々なレジスタを含む。
【００７７】
配列１１は、複数のＢＬＯＣＫ０−Ｎメモリセルに分割される。フラッシュＥＥＰＲＯＭシステムに共通なように、ブロックは、典型的には、消去の最小単位である。すなわち、各ブロックは、一緒に消去される最小の数のメモリセルを含む。各ブロックは、典型的には、複数のページに分けられる。当業者に理解されるように、ページは、プログラミングの最小単位であり得る。すなわち、基本のプログラミング操作は、最小のメモリセルの１ページにデータを書き込み、最小のメモリセルの１ページからデータを読み出す。図２ｂに示されるように、１つ以上のデータのセクタは、典型的に、各ページ内に格納される。オーバーヘッドデータは、典型的には、セクタのユーザデータから計算されたＥＣＣを含む。制御システム１２８の一部分２３は、データが配列１１へプログラムされるときにＥＣＣを計算し、また、データが配列１１から読み出されるときにＥＣＣをチェックする。もしくは、ＥＣＣは、ＥＣＣが関連するユーザデータとは異なるページ、または、異なるブロックに格納される。
【００７８】
ユーザデータのセクタは、典型的には、５１２バイトであり、磁気ディスクドライブにおけるセクタのサイズに対応する。オーバーヘッドデータ、または、冗長なデータは、典型的には、付加的な１６バイトである。最もよくある場合では、データの１つのセクタが各ページに含まれるが、そうではなく２つ以上のセクタがページを形成してもよい。任意の数のページが、一般的にブロックを形成し得る。一例としては、ブロックは、８ページから５１２、１０２４またはそれより多いページまでから形成される。ブロックの数は、メモリシステムに所望のデータ記憶容量を提供するために選択される。配列１１は、典型的には、少数のサブ配列（示されない）へ分割され、各サブ配列は、ブロックのある割合を含み、ブロックは、互いに独立していくらか動作することにより、様々なメモリ操作の実行における並行度を増加させる。多重サブ配列を利用する例としては、その全体を本明細書中で参照として援用する、米国特許第５，８９０，１９２号内に記載される。
【００７９】
１つの実施形態では、ＭＬＣ  ＮＡＮＤメモリ等の不揮発性メモリは、システム、例えば、ホストシステムに組み込まれる。図１ｃは、組み込み不揮発性メモリを含むホストシステムの図式表示である。ホストまたはコンピュータシステム１５０は、一般的に、ホストシステム１５０の他のコンポーネント（示されない）の間で、マイクロプロセッサ１５８、ＲＡＭ１６２、および、入力／出力回路１６６を通信させるシステムバス１５４を含む。不揮発性メモリ１７４、例えば、フラッシュメモリは、情報をホストシステム１５０内に格納させることを可能にする。インターフェイス１８０は、不揮発性メモリ１７４と、不揮発性メモリ１７４からの読み出しおよび不揮発性メモリ１７４へ書き込みを可能にするバス１５４と間に提供され得る。
【００８０】
不揮発性メモリ１７４は、不揮発性メモリ１７４を制御するように構成されたソフトウェアとファームウェアのどちらかまたは両方を効果的に実行するマイクロプロセッサ１５８によって、管理され得る。すなわち、マイクロプロセッサ１５８は、コードデバイス、すなわち、ソフトウェアコードデイバスまたはファームウェアコードデバイスを実行するコントローラーとして、役立ち得る。コードデバイスは、不揮発性メモリ１７４を制御することを可能にする。以下に説明されるそのようなコードデバイスは、不揮発性メモリ１７４内の物理ブロックが、アドレス指定されるのを可能にし得、情報の物理ブロックへ格納、物理ブロックからの読み出し、物理ブロックからの消去を可能にする。
【００８１】
ハイブリッドＥＣＣ実装を利用するメモリシステム内では、データがブロックに書き込まれ得る前に、ブロックに書き込まれるべきデータを符号化するために利用する適切なＥＣＣアルゴリズムを決定するために、典型的には、ブロックに関連する情報が調達され、かつ、調べられる。図２ａを参照して、１−ビットまたは２−ビットＥＣＣのどちらかを利用してユーザデータをブロックに書き込むステップが、本発明の実施形態に沿って説明される。データを書き込むプロセス２００は、書き込まれるべきブロックが識別されるステップ２０４から開始する。このブロックは、使用されていないブロック、例えば、スペアブロックのプールから調達されたブロックであり得、あるいは、ブロックは、現在使用中であり、かつ、追加のコンテンツを受取るように構成されているブロックであり得る。一旦、ブロックが識別されると、ブロックに対する消去カウントは、ステップ２０８において消去カウントブロックから読み出される。消去カウントブロックは、同時係属中の米国特許出願第１０／２８１，６２６号に記載されるように、不揮発性メモリに格納され、不揮発性メモリ内の実質的に全ての利用可能なブロックと関連する消去カウントを含むデータ構造である。消去カウントは、一般的に、所与のブロックが消去された回数を示し、従って、ブロックの寿命のインディケーションを提供する。
【００８２】
ブロックの消去カウントが読み出された後に、消去カウントが許容限界消去カウントよりも小さいかどうかが、ステップ２１２において判断される。許容限界消去カウントは、不揮発性メモリシステムのユーザによって特定される消去カウントであり得、あるいは、許容限界消去カウントは、システムパラメーターであり得る。許容限界消去カウントの値は、広範囲に変化し得る。一例として、ブロックが約１０，０００回消去された後はブロックがもはや利用できない可能性が高くなる実施形態において、許容限界消去カウントは、約９，５００から９，８００の間の値に設定され得る。より一般的には、許容限界消去カウントは、ブロックの寿命を決定するために考慮される消去カウントよりも２パーセントから５パーセントの間の小さい値に設定され得る。
【００８３】
ステップ２１２おいて、ブロックの消去カウントが許容限界消去カウントよりも小さいと判断される場合、ブロックに格納されるべきコンテンツ（例えば、ユーザデータ）が１−ビットＥＣＣアルゴリズムを利用して符号化されるべきであることが示される。従って、ステップ２２４では、ブロックに格納されるべきコンテンツが１−ビットＥＣＣアルゴリズムを用いて符号化される。一旦、コンテンツが符号化されると、符号化されたコンテンツは、ステップ２２８においてブロックに書き込まれ、ブロックにコンテンツを書き込むプロセスは完了する。
【００８４】
ステップ２１２に戻ると、消去カウントが許容限界消去カウントよりも小さくないことが判断される場合、そのブロックが耐用年数の終わりに近づいていることが示唆される。従って、ブロックに格納されるべきコンテンツは、２−ビットＥＣＣアルゴリズムを用いて、ステップ２１６で符号化される。ブロックコンテンツが符号化された後、次にステップ２２０では、符号化されたコンテンツがブロック内に書き込まれ、コンテンツをブロックに書き込むプロセスは完了する。
【００８５】
メモリシステム内のブロックのコンテンツ（すなわち、物理ブロック）が、１−ビットＥＣＣアルゴリズムまたは２−ビットＥＣＣアルゴリズムのどちらかを用いて符号化され得る場合は、コンテンツが正確に復号化され得る前に、どちらのＥＣＣアルゴリズムがコンテンツを符号化するために利用されたかに関する判断がなされる。言い換えると、ブロックのコンテンツを読み出すプロセスは一般的に、コンテンツが１−ビットＥＣＣアルゴリズムまたは２−ビットＥＣＣアルゴリズムを利用して符号化されたかどうかを識別するステップを含む。図２ｂは、本発明の実施形態に従った、１−ビットＥＣＣアルゴリズムまたは２−ビットＥＣＣアルゴリズムのどちらかを利用してコンテンツが符号化され得るシステム内で、ブロックからコンテンツを読み出す１つの方法に関連するステップを示すプロセスフロー図である。ブロックのコンテンツを読み出すプロセス２４０は、読み出されるべきブロックが識別されるステップ２４４から開始する。一般に、ブロックは、現在使用中、すなわち、情報を格納するために現在使用されているブロックのプールから調達され得る。ブロックが識別された後、そのブロックに対応するエントリは、ステップ２４８において消去カウントブロックで識別される。典型的には、消去カウントブロックにおけるブロックに対するエントリは、ブロックに対する消去カウントを含む。
【００８６】
ステップ２５２では、ブロックの消去カウントが消去カウント許容限界か、もしくは、ブロックのコンテンツが１−ビットＥＣＣアルゴリズムまたは２−ビットＥＣＣアルゴリズムを用いて何時符号化されるべきであるかを実質的に判断する許容限界以下であるかどうかが、判断される。ブロックの消去カウントが許容限界以下であると判断される場合、ブロックのデータは、ステップ２５６において、１−ビットＥＣＣアルゴリズムを用いて復号化される。一旦、データが１−ビットＥＣＣアルゴリズムを用いて復号化されると、ブロックからコンテンツを読み出すプロセスは完了する。もしくは、消去カウントが許容限界以下でないとステップ２５２において判断された場合、データは２−ビットＥＣＣアルゴリズムを用いて符号化されたと示される。従って、ステップ２６０では、ブロックのデータは、２−ビットＥＣＣアルゴリズムを用いて復号化される。データが復号化された後、ブロックからデータを読み出すプロセスは完了する。
【００８７】
メモリシステムの動作の過程の間は、メモリシステムの不揮発性メモリの寿命を延長させるために、静的なブロック、あるいは、希にしかアップデートまたは消去されないブロックが識別され得る。そのような静的なブロックは、アップデートされる可能性が低いものとして識別され得、従って、そのような静的なブロックコンテンツは、相対的に大きい消去カウントを有するブロックにコピーされ得る。静的なブロックのコンテンツを相対的に大きい消去カウントを有するブロックにコピーすることによって、静的なブロックは、効果的に利用のためにリサイクルされ得る。さらに、静的なブロックのコンテンツを相対的に大きい消去カウントを有するブロックへ格納するステップは、コンテンツはアップデートおよび消去される可能性が高くないので、従って、相対的に大きい消去カウントを有するブロックの寿命を延長し、相対的に大きい消去カウントを有するブロックの効果的な利用となり得る。静的なブロックを相対的に大きい消去カウントを有するブロックとスワッピングするステップは、同時係属中の米国特許出願第１０／２８１，７３９に記載される。
【００８８】
多くの場合、静的なブロックを相対的に大きな消去カウントを有するブロックでスワッピングするステップは、メモリシステムが初期化されるとき、例えば、メモリシステムが電源切断後に電源投入されるときに、実行され得る。図３を参照して、１−ビットＥＣＣアルゴリズムまたは２−ビットＥＣＣアルゴリズムのどちらかを利用してブロックのコンテンツが符号化されるメモリシステムに対する１つの初期化プロセスは、本発明の実施形態に従って説明される。メモリシステムを初期化するプロセス３００は、ステップ３０４において静的なブロックを識別するステップを含む。静的なブロック識別するステップは、一般的に、効果的に活発に使用されていないブロックを識別するステップを含む。一旦、静的なシステムが識別されると、相対的に大きな消去カウントを有する使用されていないブロックが、ステップ３０８において識別される。典型的には、相対的に大きな消去カウントを有する使用されていないブロックを識別するステップは、メモリシステムの不揮発性メモリに関連する全ての使用されていないブロックのうち、最も大きい消去カウントを有する使用されていないブロックのセットを識別するステップを含む。
【００８９】
相対的に大きな消去カウントを有する使用されていないブロックが識別された後、ステップ３１２において、不揮発性メモリのブロックと関連する平均消去カウントが消去カウント許容限界よりも大きいかどうかが判断される。平均消去カウントは、不揮発性メモリ内の利用可能なブロックが消去された平均回数を示し、このことは、同時係属中の米国特許出願第１０／２８１，８２３号に記載される。平均消去カウントは、消去カウント許容限界よりも多くないと判断される場合、静的ブロックのコンテンツが、１−ビットＥＣＣアルゴリズムを利用して、相対的に大きい消去カウントを有する使用されていないブロックへ、記憶のために符号化され得ることが示される。従って、プロセスフローは、静的なブロックのコンテンツが復号化されるステップ３２８へ進む。理解されるべきことは、静的なブロックからの復号化および読み出しに関連するステップは、図２ｂに関連して上述されたステップであり得ることである。
【００９０】
静的なブロックのコンテンツを復号化する際に、復号化されたコンテンツは、ステップ３３２おいて、１−ビットＥＣＣアルゴリズムを利用して符号化される。次に、符号化されたコンテンツは、ステップ３３６において、相対的に大きい消去カウントを有する使用されていないブロックへ、コピーされるか、そうでなければ、格納され、メモリシステムを初期化するプロセスは完了する。
【００９１】
ステップ３１２に戻ると、平均消去カウントが消去カウント許容限界よりも大きいと判断される場合は、相対的に大きい消去カウントを有する使用されていないブロックが、消去カウント許容限界よりも大きい消去カウントを有する可能性が全く高いことを示す。従って、プロセスフローは、ステップ３１２から、静的なブロックのコンテンツが１−ビットＥＣＣアルゴリズムまたは２−ビットＥＣＣアルゴリズムのどちらかを利用して必要に応じて復号化されるステップ３１６へ進む。一旦、静的なブロックのコンテンツが復号化されると、コンテンツは、ステップ３２０において、２−ビットＥＣＣアルゴリズムを利用して符号化される。コンテンツが符号化された後、そのコンテンツは、ステップ３２４において、相対的に大きい消去カウントを有するブロックへコピーされるかまたは格納され、メモリシステムを初期化するプロセスは完了する。
【００９２】
本発明の１つの実施形態では、再要求されたブロックが使用され得る。すなわち、以前に使用不可能なブロックであるとみなされたブロックは、特に、スペアの、利用可能なブロックのプールが不十分な場合には、厳密なテストするプロセスの後に利用するために再要求される。利用不可能であると識別されたブロックを管理するステップと、利用不可能であると識別されたブロックを再要求するステップは、同時継続中の米国仮特許出願第６０／４２１，９６５号に記載される。厳密なテストをするプロセスは、増大する欠損を有すると識別されたブロック、例えば、以前に利用可能であったがもはや利用可能であるとみなせないブロックを、テストコンテンツを２−ビットＥＣＣアルゴリズムを用いてブロックに書き込み、かつ、テストコンテンツを２−ビットＥＣＣアルゴリズムを用いてブロックから読み出すことによって、テストするステップを含み得る。増大する欠損を有するとして識別されたブロックが厳密なテストプロセスに合格すると、このブロックは、もう一度利用可能であるとみなされ得る。しかし、利用される場合は、そのようなブロックは、一般的に、ブロックに格納されるコンテンツのインテグリティを向上させるために、２−ビットＥＣＣアルゴリズムを利用して書き込まれ、かつ、読み出される。
【００９３】
図４ａは、本発明の実施形態に従った、利用不可能なブロックを再要求するプロセスの図のブロック図式表示である。利用不可能であると識別されたブロック４０６のグループまたはプール４０２は、少なくともいくらかの利用不可能なブロック４０６を再要求するための試みがなされる際に、テスター４１０を利用してテストされる。利用不可能なブロック４０６は、消去カウントブロックにおいて、利用不可能であるとして識別され得る。典型的には、ブロック４０６ｃなどの工場欠損（ｆａｃｔｏｒｙ  ｄｅｆｅｃｔｓ）を有するブロックは、そのようなブロックは一般的に再要求可能でないので、可能な再要求にためにテストされない。そのようなブロック（例えば、ブロック４０６ｃ）は、多くの場合、製造者によって利用不可能であると識別され、以前に再要求プロセスに失敗したブロックをも含み得る。
【００９４】
ブロック４０６ａ、４０６ｂ等の増大する欠損を有するブロックは、少なくともいくらかのそのようなブロックが利用可能であり得るかどうかを判断するために、テスター４１０によるテストを受けることになり得る。示されるように、ブロック４０６ａは、ブロック４０６ａ’として再要求される。ブロック４０６ａをブロック４０６ａ’として再要求することによって、説明される実施形態では、２−ビットＥＣＣアルゴリズムを利用して、ブロック４０６ａ’が符号化および復号化するテストに合格したことが示される。
【００９５】
一旦、ブロックが再要求されると、そのブロックは、消去カウントブロックにおいて再要求されたとして識別され得る。図４ｂは、本発明の実施形態に沿った、消去カウントブロックの一部の図式表示である。消去カウント図式ブロック４４０は、不揮発性メモリ内の異なる物理ブロックに対応するエントリ４４２、４４４、４４６を含む。説明される実施形態では、各エントリ４４２、４４４、４４６におけるバイトの数は約３であるが、各エントリ４４２、４４４、４４６に関連するバイトの数は変化し得る。
【００９６】
示されるように、エントリ４４２に関連する最上位ビットは、ブロック４４２が利用可能であることを示すために「０」に設定される。エントリ４４２に関する最下位または複数のビットは、エントリ４４２に関連するブロックに対する消去カウントである。つまり、エントリ４４２に関連するブロックは、利用可能であるとして識別され、２００の消去カウントを有する。典型的には、ＨＥＸ値は、消去カウントを示すために利用され得るが、議論を簡単にするために消去カウントは英数字として示される。理解されるべきことは、エントリ４４２内のビットは、一般的に、様々な異なる態様で組織化され得、すなわち、最上位ビット以外のビットは、エントリ４４２に関連するブロックが利用可能であることを示すように設定され、最下位ビット以外のビットは、ブロックの消去カウントに設定され得ることである。
【００９７】
エントリ４４４における最上位ビットは、エントリ４４４に対応するブロックが再要求されたと識別する。エントリ４４４の最下位１つまたは複数のビットは、対応するブロックが９８７０の消去カウントを有すると識別する。
【００９８】
既に述べられたように、再要求されたブロックがデータを格納するために利用される場合に、再要求されたブロックに格納されるデータは、一般的に、再要求されたブロックの消去カウントが上述の消去カウント許容限界であるかどうかに関係なく、データのインテグリティを確実にするために、２−ビットＥＣＣアルゴリズムを利用して符号化される。従って、再要求されたブロックが存在し得るシステム内で、ブロックが書き込まれ、または、読み出される際に、再要求されたブロックが識別される。次に図５ａを参照して、再要求されたブロックが存在し得、かつ、１−ビットＥＣＣアルゴリズムまたは２−ビットＥＣＣアルゴリズムのどちらかを利用してデータが符号化され得るシステム内で、ブロックに書き込む１つの方法は、本発明の実施形態に沿って説明される。データを書き込むプロセス５００は、書き込まれるべきブロックが識別されるステップ５０４から開始する。ブロックに対応するエントリは、ステップ５０８において、消去カウントブロックから読み出される。典型的には、エントリは、このブロックに対する消去カウントと、ブロックが再要求されたかどうかのインディケーションを含む。
【００９９】
一旦、ステップ５０８においてブロックに対応するエントリが読み出されると、ステップ５１２において、そのブロックが再要求されたブロックであるかどうかが判断される。ブロックが再要求されたブロックであると判断される場合は、ブロックに書き込まれる、または、格納されるコンテンツは、ステップ５１６において、２−ビットＥＣＣアルゴリズムを利用して符号化される。コンテンツが符号化された後に、ステップ５２０において、符号化されたコンテンツがブロックに書き込まれ、コンテンツをブロックに書き込むプロセスは完了する。
【０１００】
ステップ５１２に戻ると、ブロックが再要求されたブロックでないと判断される場合は、プロセスフローは、ステップ５０８において消去カウントブロックから読み出され得るブロックに対する消去カウントが、許容限界消去カウントより小さいかどうかが判断されるステップ５２４に移動する。ブロックに対する消去カウントが許容限界消去カウントよりも小さくないと判断される場合、ステップ５０４において識別されるブロックに格納されるべきコンテンツを符号化するために、２−ビットＥＣＣアルゴリズムが利用されるべきであることが示される。従って、プロセスフローは、ステップ５２４から、２−ビットＥＣＣアルゴリズムを利用してコンテンツが符号化されるステップ５１６に移動する。
【０１０１】
もしくは、ステップ５２４において、消去カウントが許容限界消去カウントよりも小さくないと判断される場合、識別されたブロックに書き込まれるべきコンテンツは、ステップ５２８において、１−ビットＥＣＣアルゴリズムを利用して符号化される。次に、符号化されたコンテンツは、ステップ５３２において、ブロックへ格納される、または、書き込まれ、ブロックへコンテンツを書き込むプロセスは完了する。
【０１０２】
図５ｂは、本発明の実施形態に従った、再要求されたブロックであり得、かつ、１−ビットＥＣＣアルゴリズムまたは２−ビットＥＣＣアルゴリズムのどちらかを利用して符号化されるコンテンツを有し得るブロックからコンテンツを読み出す１つの方法を示すプロセスフロー図である。読み出しプロセス５５０は、読み出されるべきコンテンツを有するブロックが識別されるステップ５５４から開始する。次に、ブロックに対応するエントリは、ステップ５５８において消去カウントブロックで識別される。エントリは、一般的に、そのブロックが再要求されたブロックであるかどうかのインディケーションと、ブロックに対する消去カウントとを含む。
【０１０３】
ブロックに対応するエントリが識別された後、ステップ５６２において、ブロックが再要求されたブロックであるかどうかに関する判断がなされる。典型的には、ステップ５５８において、消去カウントブロックから識別される、または、読み出されるエントリを調べることによって、そのような判断がなされ得る。ブロックが再要求されたブロックであると判断される場合は、ブロックに格納されるコンテンツは、ステップ５７４において、２−ビットＥＣＣアルゴリズムを利用して復号化される。一旦、コンテンツが復号化されると、ブロックからデータまたはコンテンツを読み出すプロセスが完了する。
【０１０４】
もしくは、ステップ５６２において、ブロックが再要求されたブロックでないと判断される場合、ステップ５６６において、ブロックの消去カウントが許容限界消去カウント以下であるかどうかが判断される。ブロックの消去カウントが許容限界以下でないと判断される場合、そのコンテンツは２−ビットＥＣＣアルゴリズムを利用して符号化されたことが示される。従って、ステップ５７４において、データは、２−ビットＥＣＣアルゴリズムを利用して復号化される。一方、ブロックの消去カウントが許容限界以下であると判断される場合、ステップ５７０において、データは１−ビットＥＣＣアルゴリズムを利用して復号化される。データが復号化された後、ブロックからデータまたはコンテンツを読み出すプロセスは完了する。
【０１０５】
一般的に、静的なブロックをスワッピングさせることができ、かつ、再要求され得るブロックを含むシステムに対するシステム初期化プロセスは、静的なブロックをスワッピングさせることができるが、再要求されたブロックとならないシステムに対するシステム初期化プロセスとは異なる。図６を参照して、再要求されたブロックを含むハイブリッドＥＣＣ実装を有するメモリシステムを初期化する１つの方法は、本発明の実施形態に従って説明される。初期化プロセス６００は、静的ブロックが識別されるステップ６０４から開始する。一旦、静的ブロックが識別されると、相対的に大きい消去カウントを有する使用されていないブロックが、ステップ６０８において識別される。相対的に大きい消去カウントを有する使用されていないブロックは、一般的に、静的なブロックとスワップされるように構成されることにより、静的なブロックのコンテンツが、相対的に大きい消去カウントを有する使用されていないブロックへ格納される一方で、静的なブロックは、リサイクルされ得るか、そうでなければ再利用され得る。
【０１０６】
ステップ６１２において、メモリシステムと関連する平均消去カウント（消去カウントブロックから入手され得る）が消去カウント許容限界よりも大きいかどうかに関して、判断がなされる。平均消去カウントが許容限界消去カウントよりも大きいと判断される場合は、ステップ６１６において、再要求されたブロックである任意の静的なブロックが識別される。静的なブロックに関連する冗長な領域を調べるか、または、消去カウントブロック内の関連するエントリを調べるかのどちらかによって、そのような識別がなされ得る。
【０１０７】
再要求された静的なブロックが識別された後、再要求された静的なブロックのコンテンツは、ステップ６２０において、２−ビットＥＣＣアルゴリズムを利用して復号化される。次に、ステップ６２４において、残りの静的なブロックのコンテンツが、必要に応じて復号化される。すなわち、許容限界消去カウントよりも小さい消去カウントを有する残りの静的なブロックのコンテンツは、１−ビットＥＣＣアルゴリズムを利用して復号化されるが、許容限界消去カウントよりも大きい消去カウントを有する残りの静的なブロックのコンテンツは、２−ビットＥＣＣアルゴリズムを用いて復号化される。一旦、静的なブロックの全てのコンテンツが復号化されると、ステップ６２８において、２−ビットＥＣＣアルゴリズムを利用してコンテンツが符号化され、ステップ６３２において、相対的に大きい消去カウントを有するブロックに、符号化されたコンテンツが格納されるか、または、コピーされる。符号化されたコンテンツをブロックにコピーすると同時に、システム初期化プロセスは完了する。
【０１０８】
ステップ６１２に戻り、平均消去カウントが許容限界消去カウントよりも大きいかどうかが判断される。平均消去カウントが許容限界消去カウントよりも大きくないと判断される場合は、相対的に大きい消去カウントを有する使用されていないブロックは、許容限界消去カウントよりも小さい消去カウントを有する可能性が高いことが示される。従って、プロセスフローは、ステップ６１２から、再要求されたブロックである使用されていないブロックが識別されるステップ６３６に移動する。すなわち、以前に再要求された相対的に大きい消去カウントを有する使用されていないブロックが、識別される。一旦、以前に再要求された相対的に大きい消去カウントを有する使用されていないブロックが識別されると、再要求されたブロックである任意の静的なブロックが、ステップ６４０において識別される。
【０１０９】
ステップ６４０から、プロセスフローは、再要求された静的なブロックのコンテンツが２−ビットＥＣＣアルゴリズムを利用して復号化されるステップ６４４に進む。再要求された静的なブロックのコンテンツが復号化された後、残りの静的なブロックのコンテンツは、ステップ６４８において必要に応じて復号化される。典型的には、いくらかの静的なブロックは、１−ビットＥＣＣアルゴリズムを利用して復号化され得るが、他の静的なブロックは、２−ビットＥＣＣアルゴリズムを利用して復号化され得る。残りの静的なブロックのコンテンツを復号化すると直ぐに、再要求された使用されていないブロックに格納されるべき任意のコンテンツは、ステップ６５２において、２−ビットＥＣＣアルゴリズムを利用して符号化される。ステップ６５６において、以前に再要求されていない使用されていないブロックに格納されるべきコンテンツは、１−ビットＥＣＣアルゴリズムを利用して符号化される。一旦、実質的に全てのコンテンツが符号化されると、符号化されたコンテンツは、ステップ６６０において、相対的に大きい消去カウントを有すると意図される使用されていないブロックにコピーされ、初期化プロセスは完了する。
【０１１０】
ハイブリッドＥＣＣ実装を実装するステップと関連する機能性は、ソフトウェア（例えば、プログラムコードデバイス、または、不揮発性メモリもしくは不揮発性メモリコンポーネントを含むホストシステムに対するファームウェア）に提供される。ホストシステムに対して提供されるソフトウェアまたはファームウェアと関連する適切なシステムアーキテクチャの１つの実施形態が、図７に示される。システムアーキテクチャ７００は、一般的に、アプリケーションインターフェイスモジュール７０４、システムマネージャモジュール７０８、データマネージャモジュール７１２、データインテグリティマネージャ７１６、および、デバイスマネージャおよびインターフェイスモジュール７２０を含み得るが、それらに制限されない様々なモジュールを含む。一般的に、システムアーキテクチャ７００は、プロセッサ（例えば、図１ａのプロセッサ１０８）によってアクセスされ得るソフトウェアコードデバイスまたはファームウェアを利用して実装され得る。
【０１１１】
一般的に、アプリケーションインターフェイスモジュール７０４は、要求の初期化、または、システムフォーマッティングの過程の間にメディアを初期化するために、フラッシュメモリ（示されない）などの不揮発性メモリ（より一般的には、メディア）と通信するように構成され得る。アプリケーションインターフェイスモジュール７０４はまた、メディアと関連するセクタ、クラスター、または、ページから読み出し、かつ、メディアと関連するセクタ、クラスター、または、ページへ書き込み得る。典型的には、メディアと通信するステップに加えて、アプリケーションインターフェイスモジュール７０４はまた、システムマネージャモジュール７０８およびデータマネージャモジュール７１２と通信する。
【０１１２】
システムマネージャモジュール７０８は、システム初期化サブモジュール７２４、消去カウントブロック管理サブモジュール７２６、および、電力管理ブロックサブモジュール７３０を含む。システム初期化サブモジュール７２４は、一般的に、初期化要求を処理可能にするように構成され、典型的には、消去カウントブロック管理サブモジュール７２６と通信する。システム初期化モジュール７２４はまた、１対多の論理対物理ブロックの割り当てを分割するように構成される。
【０１１３】
消去カウントブロック管理サブモジュール７２６は、ブロックの消去カウントを格納させる機能性と、個別の消去カウントを利用して、平均消去カウントを計算させ、アップデートさせる機能性とを含む。言い換えると、消去カウントブロック管理サブモジュール７２６により、効果的に消去カウントをカタログ化することができ、平均消去カウントを保持することができる。さらに、１つの実施形態では、消去カウントブロック管理サブモジュール７２６はまた、システム全体の初期化要求の間に、消去カウントブロックの実質的に全てのブロックの消去カウントを、実質的に同期させる。消去カウントブロック管理サブモジュール７２６が、平均消去カウントを消去カウントブロック内に格納させるように構成され得る一方、電力管理ブロックサブモジュール７３０が、その平均消去カウントを格納可能にするために代わりに利用され得ることが、理解されるべきである。
【０１１４】
アプリケーションインターフェイスモジュール７０４との通信に加えて、システムマネージャモジュール７０８はまた、データマネージャモジュール７１２、および、デバイスマネージャおよびインターフェイスモジュール７２０と通信する。システムマネージャモジュール７０８およびアプリケーションインターフェイスモジュール７０４の両方と通信するデータマネージャモジュール７１２は、論理セクタを物理セクタへ効果的に変換するセクタマッピングを提供する機能を含み得る。すなわち、データマネージャモジュール７１２は、論理ブロックを物理ブロックへマップするように構成される。データマネージャモジュールはまた、その全体を本明細書中で参照として援用する同時係属中の米国特許出願第１０／２８１，８５５号に記載されるように、オペレーティングシステムおよびファイルシステムインターフェイス層と関連する機能を含み得、ブロック内のグループを管理可能にする。１つの実施形態では、データマネージャモジュール７１２は、実質的にアウトオブシーケンス（ｏｕｔ−ｏｆ−ｓｅｑｕｅｎｃｅ）書き込みプロセスが発生可能なように構成され得る。
【０１１５】
システムマネージャモジュール７０８、データマネージャ７１２、およびデータインテグリティマネージャ７１６と通信するデバイスマネージャおよびインターフェイスモジュール７２０は、典型的には、フラッシュメモリインターフェイスを提供し、ハードウェア抽象化と関連する機能（例えばＩ／Ｏインターフェイス）を含む。データインテグリティマネージャモジュール７１６は、他にも機能はあるが、ＥＣＣ処理を提供する。
【０１１６】
本発明の２、３の実施形態のみが説明されたが、理解されるべきことは、本発明は、本発明の意図または範囲を逸脱することなしに、多くの他の特定の形式で具現化され得ることである。一例として、１−ビットＥＣＣアルゴリズムは、消去カウント許容限界よりも小さい消去カウントを有するブロックのコンテンツを符号化するために利用するのに適しているとして説明されたが、２−ビットＥＣＣアルゴリズムは、消去カウント許容限界よりも大きい消去カウントを有するブロックのコンテンツを符号化するために利用するのに適しているとして説明された。しかし、理解されるべきは、いくつかの実施形態において、２−ビットＥＣＣアルゴリズムは、消去カウント許容限界よりも小さい消去カウントを有するブロックのコンテンツを符号化するために利用され得、２−ビットＥＣＣアルゴリズムよりもさらに高度な正確さを有するアルゴリズム、例えば、３−ビットＥＣＣアルゴリズムは、消去カウント許容限界よりも大きい消去カウントを有するブロックのコンテンツを符号化するために利用され得る。
【０１１７】
さらに、ＥＣＣアルゴリズムは、一般的に、１−ビットＥＣＣアルゴリズムまたは２−ビットＥＣＣアルゴリズムとして説明されたが、ＥＣＣアルゴリズムは、それぞれ、１−符号ＥＣＣアルゴリズムまたは２−符号ＥＣＣアルゴリズムに代替され得る。さらに、利用される実際のＥＣＣアルゴリズムは、広範囲に変化し得る。適切なＥＣＣアルゴリズムは、Ｒｅｅｄ−Ｓｏｌｏｍｏｎアルゴリズム、Ｈａｍｍｉｎｇコードアルゴリズム、およびバイナリＨａｍｍｉｎｇコードアルゴリズムを含み得るが、それらに制限されない。例えば、１つの実施形態では、適切な１−ビットＥＣＣアルゴリズムは、Ｈａｍｍｉｎｇコードアルゴリズムであってもよく、一方、適切な２−ビットＥＣＣアルゴリズムは、Ｒｅｅｄ−Ｓｏｌｏｍｏｎアルゴリズムであってもよい。
【０１１８】
不揮発性メモリ内ブロックのコンテンツを符号化および復号化するために、異なるエラー訂正コードアルゴリズムを利用するための方法および装置が開示される。
【０１１９】
本発明の１つの局面によると、不揮発性メモリ内にデータを格納するための方法は、データが格納されるべき第１のブロックを識別するステップと、第１のブロックに関連するインディケータを入手するステップとを包含する。次に、インディケータが、データが第１のアルゴリズムを利用して符号化されるべきことを示すかどうかに関して、判断がなされ得る。データが第１のアルゴリズムを用いて符号化されるべきであると判断される場合に、データは、第１のアルゴリズムを用いて符号化される。その後、第１のアルゴリズムを利用して符号化されたデータは、第１のブロックに書き込まれる。
【０１２０】
本発明の様々な方法に関連するステップは広範囲に利用され得る。一般的に、本発明の意図および範囲から逸脱することなく、ステップは付加され、取り除かれ、順序変更が行われ、かつ、変更される。例えば、ハイブリッドＥＣＣ実装を含むメモリシステムを初期化するプロセスは、静的なブロックを消去するステップを含み得る。さらに、再要求されたブロックをデータを格納するために利用し得る実施形態に対しては、ブロックが再要求されたかどうかを判断する前に、最初に、該当のブロックに対する消去カウントが消去カウント許容限界を超えているかどうかが判断され得る。従って、本例は、例であるが制限されないものとしてみなされる。本発明は、本明細書中に与えられた詳細に制限されないが、付属の特許請求の範囲内で改変され得る。
【０１２１】
以上のように、本発明の好ましい実施形態を用いて本発明を例示してきたが、本発明は、この実施形態に限定して解釈されるべきものではない。本発明は、特許請求の範囲によってのみその範囲が解釈されるべきであることが理解される。当業者は、本発明の具体的な好ましい実施形態の記載から、本発明の記載および技術常識に基づいて等価な範囲を実施することができることが理解される。本明細書において引用した特許、特許出願および文献は、その内容自体が具体的に本明細書に記載されているのと同様にその内容が本明細書に対する参考として援用されるべきであることが理解される。
【図面の簡単な説明】
【０１２２】
【図１ａ】図１ａは、不揮発性メモリを含む一般的なホストシステムの図式表示である。
【図１ｂ】図１ｂは、メモリデバイス、例えば、図１ａのメモリデバイス１２０の図式表示である。
【図１ｃ】図１ｃは、組み込み不揮発性メモリを含むホストシステムの図式表示である。
【図２ａ】図２ａは、本発明の実施形態に従った、１−ビットまたは２−ビットＥＣＣのどちらかを利用してユーザデータをブロックへ書き込む方法を示すプロセスフロー図である。
【図２ｂ】図２ｂは、本発明の実施形態に従った、１−ビットＥＣＣアルゴリズムまたは２−ビットＥＣＣアルゴリズムのどちらかを利用してコンテンツが符号化され得るシステム内で、ブロックからコンテンツを読み出す１つの方法を示すプロセスフロー図である。
【図３】図３は、本発明の実施形態に従った、ブロックのコンテンツがハイブリッドＥＣＣ実装を利用して符号化され得るメモリシステムを初期化するための１つの方法を示すプロセスフロー図である。
【図４ａ】図４ａは、本発明の実施形態に従った、利用不可能なブロックを再要求するプロセスのブロック図式表示である。
【図４ｂ】図４ｂは、本発明の実施形態に従った、消去カウントブロックの一部分の図式表示である。
【図５ａ】図５ａは、本発明の実施形態に従った、再要求されたブロックが存在し得、かつ、１−ビットＥＣＣアルゴリズムまたは２−ビットＥＣＣアルゴリズムを利用してデータが符号化され得るシステム内のブロックに書き込む１つの方法を示すプロセスフロー図である。
【図５ｂ】図５ｂは、本発明の実施形態に従った、再要求されたブロックであり得、かつ、１−ビットＥＣＣアルゴリズムまたは２−ビットＥＣＣアルゴリズムのどちらかを利用して符号化されるコンテンツを有し得るブロックからコンテンツを読み出す１つの方法を示すプロセスフロー図である。
【図６】図６は、本発明の実施形態に従った、再要求されたブロックを含むハイブリッドＥＣＣ実装を有するメモリシステムを初期化する１つの方法を示すプロセスフロー図である。
【図７】図７は、本発明の実施形態に従った、システムアーキテクチャのブロック図表示である。
【符号の説明】
【０１２３】
１１  メモリセル配列
１５  バス
１７  アドレスデコーダ
１９  回路
２１  バッファメモリ
２３  制御システムの一部分
１００  ホストシステム
１０４  システムバス
１０８  マイクロプロセッサ
１１２  ランダムアクセスメモリ（ＲＡＭ）
１１６  入力／出力回路
１２０  不揮発性メモリデバイス
１２４  不揮発性メモリ
１２８  メモリ制御システム
１５４  システムバス
１５８  マイクロプロセッサ
１６２  ＲＡＭ
１６６  入力／出力回路
１７４  不揮発性メモリ
１８０  インターフェイス
７０４  アプリケーションインターフェイスモジュール
７０８  システムマネージャモジュール
７１２  データマネージャモジュール
７１６  データインテグリティマネージャ
７２０  デバイスマネージャおよびインターフェイスモジュール
７２４  システム初期化サブモジュール
７２６  消去カウントブロック管理サブモジュール
７３０  電力管理ブロックサブモジュール
【図１ａ】
2004164634.tif 000003
【図１ｂ】
2004164634.tif 000004
【図１ｃ】
2004164634.tif 000005
【図２ａ】
2004164634.tif 000006
【図２ｂ】
2004164634.tif 000007
【図３】
2004164634.tif 000008
【図４ａ】
2004164634.tif 000009
【図４ｂ】
2004164634.tif 000010
【図５ａ】
2004164634.tif 000011
【図５ｂ】
2004164634.tif 000012
【図６】
2004164634.tif 000013
【図７】
2004164634.tif 000014