(57)【要約】データ格納装置は、フラッシュコントローラーと、フラッシュコントローラーに結合されたフラッシュメモリ装置のアレイとを含み得る。アレイは、各々が複数のＦページを含む複数のＳページを含み得る。複数のＦページの各々は、可変量のデータと可変量の誤り訂正符号とを格納するように構成され得る。フラッシュコントローラーは、１つのＳページの各Ｆページに、誤り訂正符号を生成し、最大量のデータを有する１以上のＦページに、生成された誤り訂正符号を格納するように構成され得る。【選択図】図１Ａ
2015535640.tif 000002
【特許請求の範囲】
【請求項１】
ソリッドステートドライブコントローラーであって、
プロセッサを含み、前記プロセッサは、フラッシュメモリ装置のアレイに結合するように構成され、前記アレイは、複数のダイを含み、各ダイは、複数のフラッシュブロック（Ｆブロック）を含み、各Ｆブロックは、複数のフラッシュページ（Ｆページ）を含み、前記Ｆページのうち少なくともいくつかは、１以上の誤り訂正符号ページ（Ｅページ）を含み、前記Ｅページのうち少なくともいくつかは、可変サイズ誤り訂正符号（ＥＣＣ）部及び対応する可変サイズデータ部を含み、１つのＦページ内の前記可変サイズデータ部は、全体として１つのＦページデータ部を定義し、
前記プロセッサは、
前記複数のダイのうち１以上から、複数のＦページを含むＳページを定義し、
前記Ｓページにおいて、
前記複数のＦページ内の各Ｅページの前記可変サイズＥＣＣ部にＥページ誤り訂正符号を格納して、対応する前記可変サイズのデータ部内の誤りを訂正し、
前記Ｓページ内の前記複数のＦページのうち、最大サイズのＦページデータ部を有する１以上のＦページをチェックページとして指定し、
前記１以上のチェックページ内に、交差Ｆページ誤り訂正符号を格納する
ように構成される、ソリッドステートドライブコントローラー。
【請求項２】
請求項１に記載のソリッドステートドライブコントローラーであって、前記交差Ｆページ誤り訂正符号は、前方誤り訂正（ＦＥＣ）符号を含む、ソリッドステートドライブコントローラー。
【請求項３】
請求項２に記載のソリッドステートドライブコントローラーであって、前記ＦＥＣ符号は、リードソロモン符号を含む、ソリッドステートドライブコントローラー。
【請求項４】
請求項１に記載のソリッドステートドライブコントローラーであって、前記Ｅページ誤り訂正符号は、低密度パリティ検査（ＬＤＰＣ）誤り訂正符号を含む、ソリッドステートドライブコントローラー。
【請求項５】
請求項１に記載のソリッドステートドライブコントローラーであって、前記プロセッサは、前記複数のＥページのうち１つを生成する際に、ランタイムで前記Ｅページ誤り訂正符号を生成及び格納するように構成される、ソリッドステートドライブコントローラー。
【請求項６】
請求項１に記載のソリッドステートドライブコントローラーであって、前記プロセッサは、前記Ｓページにデータが書き込まれる際、前記Ｓページ向けに前記交差Ｆページ誤り訂正符号を生成するように更に構成される、ソリッドステートドライブコントローラー。
【請求項７】
請求項１に記載のソリッドステートドライブコントローラーであって、前記プロセッサは、前記Ｓページからデータを読み出し、前記Ｓページ内のチェックページとして指定されている前記１以上のＦページをスキップするように更に構成される、ソリッドステートドライブコントローラー。
【請求項８】
請求項１に記載のソリッドステートドライブコントローラーであって、前記プロセッサは、
Ｓページ内の特定のＦページをチェックページとして指定するためにブロック情報データ構造にフラグを立て、
Ｓページ内の前記Ｆページのどれがチェックページとして指定されているかを決定するために前記ブロック情報データ構造を参照する、
ように更に構成される、ソリッドステートドライブコントローラー。
【請求項９】
請求項１に記載のソリッドステートドライブコントローラーであって、前記プロセッサは、（１）前記アレイの構成、（２）前記アレイの性能、及び（３）前記アレイの所定の部分の利用プロファイル、のうち１以上に基づいて、前記Ｓページ内の追加のＦページをチェックページとして指定するように更に構成される、ソリッドステートドライブコントローラー。
【請求項１０】
請求項１に記載のソリッドステートドライブコントローラーであって、前記プロセッサは、所定の種類の情報を格納するＳページ内で、追加のＦページをチェックページとして指定するように更に構成される、ソリッドステートドライブコントローラー。
【請求項１１】
請求項１０に記載のソリッドステートドライブコントローラーであって、前記所定の種類の情報は、メタデータを含む、ソリッドステートドライブコントローラー。
【請求項１２】
請求項１０に記載のソリッドステートドライブコントローラーであって、前記所定の種類の情報は、ホストによって指定されたデータを含む、ソリッドステートドライブコントローラー。
【請求項１３】
請求項１に記載のソリッドステートドライブコントローラーであって、第１のＳページと第２のＳページとの関係において、前記第１のＳページにおいてチェックページとして指定された前記１以上のＦページは、前記第１のＳページ内の比較的異なる場所を占有し、前記第２のＳページ内でチェックページとして指定された前記１以上のＦページも同様である、ソリッドステートドライブコントローラー。
【請求項１４】
請求項１に記載のソリッドステートドライブコントローラーであって、前記Ｓページは、第１のＳページであり、前記コントローラーは、チェックページとして指定されたＦページの数が前記第１のＳページよりも多い第２のＳページを定義するように更に構成される、ソリッドステートドライブコントローラー。
【請求項１５】
請求項１に記載のソリッドステートドライブコントローラーであって、前記プロセッサは、Ｆブロックに書き込む際に、
（１）各Ｅページの前記可変サイズＥＣＣ部において生成するＥページ誤り訂正符号の強度、
（２）生成する交差Ｆページ誤り訂正符号の強度、及び
（３）Ｓページ内のどのＦページをチェックページとして指定するか
のうち１以上を決定するように更に構成される、ソリッドステートドライブコントローラー。
【請求項１６】
請求項１に記載のソリッドステートドライブコントローラーであって、前記プロセッサは、前記Ｅページ誤り訂正符号が遭遇した誤りの訂正に失敗した際に前記交差Ｆページ誤り訂正符号を適用するように更に構成される、ソリッドステートドライブコントローラー。
【請求項１７】
データ格納装置であって、請求項１に記載のコントローラーと、前記フラッシュメモリ装置のアレイと、を含む、データ格納装置。
【請求項１８】
データ格納装置の制御方法であって、
前記データ格納装置は、プロセッサを含み、前記プロセッサは、フラッシュメモリ装置のアレイに結合するように構成され、前記アレイは、複数のダイを含み、各ダイは、複数のフラッシュブロック（Ｆブロック）を含み、各Ｆブロックは、複数のフラッシュページ（Ｆページ）を含み、前記Ｆページのうち少なくともいくつかは、１以上の誤り訂正符号ページ（Ｅページ）を含み、前記Ｅページのうち少なくともいくつかは、可変サイズ誤り訂正符号（ＥＣＣ）部及び対応する可変サイズデータ部を含み、１つのＦページ内の前記可変サイズデータ部は、全体として１つのＦページデータ部を定義し、
前記方法は、
前記複数のダイのうち１以上から、複数のＦページを含むＳページを定義すること、
前記Ｓページにおいて、
前記複数のＦページ内の各Ｅページの前記可変サイズＥＣＣ部にＥページ誤り訂正符号を格納して、対応する前記可変サイズのデータ部内の誤りを訂正すること、
前記Ｓページ内の前記複数のＦページのうち、最大サイズのＦページデータ部を有する１以上のＦページをチェックページとして指定すること、及び
前記１以上のチェックページ内に、交差Ｆページ誤り訂正符号を格納することを含む、方法。
【請求項１９】
請求項１８に記載の方法であって、前記交差Ｆページ誤り訂正符号は、前方誤り訂正（ＦＥＣ）符号を含む、方法。
【請求項２０】
請求項１９に記載の方法であって、前記ＦＥＣ符号は、リードソロモン符号を含む、方法。
【請求項２１】
請求項１８に記載の方法であって、前記Ｅページ誤り訂正符号は、低密度パリティ検査（ＬＤＰＣ）誤り訂正符号を含む、方法。
【請求項２２】
請求項１８に記載の方法であって、前記Ｅページ誤り訂正符号を格納することは、前記複数のＥページのうち１つを生成する際に、ランタイムで前記Ｅページ誤り訂正符号を生成及び格納することを含む、方法。
【請求項２３】
請求項１８に記載の方法であって、前記交差Ｆページ誤り訂正符号を格納することは、前記Ｓページにデータが書き込まれる際、前記Ｓページ向けに前記交差Ｆページ誤り訂正符号を生成及び格納することを含む、方法。
【請求項２４】
請求項１８に記載の方法であって、前記Ｓページからデータを読み出し、前記Ｓページ内のチェックページとして指定されている前記１以上のＦページをスキップすることを更に含む、方法。
【請求項２５】
請求項１８に記載の方法であって、
Ｓページ内の特定のＦページをチェックページとして指定するためにブロック情報データ構造にフラグを立てること、及び
Ｓページ内の前記Ｆページのどれがチェックページとして指定されているかを決定するために前記ブロック情報データ構造を参照すること、を更に含む、方法。
【請求項２６】
請求項１８に記載の方法であって、（１）前記アレイの構成、（２）前記アレイの性能、及び（３）前記アレイの所定の部分の利用プロファイル、のうち１以上に基づいて、前記Ｓページ内の追加のＦページをチェックページとして指定することを更に含む、方法。
【請求項２７】
請求項１８に記載の方法であって、所定の種類の情報を格納するＳページ内で、追加のＦページをチェックページとして指定することを更に含む、方法。
【請求項２８】
請求項２７に記載の方法であって、前記所定の種類の情報は、メタデータ及びホストによって指定されたデータのうちの１つを含む、方法。
【請求項２９】
請求項１８に記載の方法であって、第１のＳページと第２のＳページとの関係において、前記第１のＳページにおいてチェックページとして指定された前記１以上のＦページは、第１のＳページ内の比較的異なる場所を占有し、前記第２のＳページ内でチェックページとして指定された前記１以上のＦページも同様である、方法。
【請求項３０】
請求項１８に記載の方法であって、前記Ｓページは、第１のＳページであり、前記方法は、チェックページとして指定されたＦページの数が前記第１のＳページよりも多い第２のＳページを定義することを更に含む、方法。
【請求項３１】
請求項１８に記載の方法であって、Ｆブロックに書き込む際に、
（１）各Ｅページの前記可変サイズＥＣＣ部において生成するＥページ誤り訂正符号の強度、
（２）生成する交差Ｆページ誤り訂正符号の強度、及び
（３）Ｓページ内のどのＦページをチェックページとして指定するか
のうち１以上を決定することを更に含む、方法。
【請求項３２】
請求項１８に記載の方法であって、前記Ｅページ誤り訂正符号が遭遇した誤りの訂正に失敗した際に前記交差Ｆページ誤り訂正符号を適用することを更に含む、方法。
【請求項３３】
データ格納装置の制御方法であって、
前記データ格納装置がフラッシュコントローラーと、前記フラッシュコントローラーに結合されたフラッシュメモリ装置のアレイとを含み、前記アレイは、各々が複数のＦページを含む複数のＳページを含み、前記方法は、
前記複数のＦページの各々に、可変量のデータ及び可変量の誤り訂正符号を格納すること、
１つのＳページの各Ｆページにわたって誤り訂正符号を生成すること、及び
最大量のデータを有する１以上のＦページに、生成された誤り訂正符号を格納すること、
を含む、方法。
【請求項３４】
ソリッドステートドライブコントローラーであって、
プロセッサを含み、前記プロセッサは、各々が複数のＦページを含む複数のＳページを含むフラッシュメモリ装置のアレイに結合するように構成され、前記複数のＦページの各々は、可変量のデータ及び可変量の誤り訂正符号を格納するように構成され、
前記プロセッサは、１つのＳページの各Ｆページにわたって誤り訂正符号を生成し、最大量のデータを有する１以上のＦページに、生成された誤り訂正符号を格納するように構成される、
コントローラー。
【請求項３５】
請求項３４に記載のコントローラーと、前記フラッシュメモリ装置のアレイと、を含む、データ格納装置。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の参照
本出願は、参照によりその全体が本明細書に援用される２０１２年１２月３日出願の米国仮出願第６１／７３２，８３０号（代理人整理番号Ｔ５９６１．Ｐ）の優先権を主張する。
【背景技術】
【０００２】
ソリッドステートドライブ（ＳＳＤ）の任意のダイには、加工技術と製造ばらつき等を原因とする、多くの不良メモリブロックが存在すると考えられる。更に、各ブロックの耐久性にも違いがある。ダイの初期においては、ほとんどのブロックが正常である。しかしながら、いくつかの初期不良も存在する。ダイの寿命の大半において、ランダムビット誤りが発生する。その後、ダイの寿命に近づくに従って、消耗の影響が表れ、誤り率が上昇する。速度は異なる可能性があるものの、あらゆるブロックがこのライフサイクルを辿る。実際には、一部のブロックが長い時間をかけてこのライフサイクルを辿るのに対し、他のブロックは比較的短い時間でこのライフサイクルを辿る。しかしながら、十分な安全範囲を設けるために、従来のＳＳＤシステムは最低性能のブロックを基準に設定されている。
【発明の概要】
【０００３】
フラッシュメモリ内のビットは、プログラムされた後で誤って読み取られることがある（すなわち、ビット誤りを発生する）。フラッシュセルのチャージレベルは、複数の条件によって変化する（例えば、時間、温度ブロック内の他のページヘのアクセス等）。最終的に、影響を受けたセルが読み取られると、誤った値が返される。フラッシュの製造者は、加工技術、セル設計、実験室試験、シミュレーション、作動条件等に基づいて、１フラッシュページ当たりのビット誤りの最大数を特定する。ビット誤りの仕様は、通常、Ｍバイト当たりＰ個の誤りという形で表される。いくつかの場合には、コントローラーの製造者は、仕様を満たす、もしくは超える誤り訂正符号（ＥＣＣ）を実装する責任を負う。ＥＣＣの種類には、データビット内のビット誤りを訂正する方式であるリードソロモン符号、ＢＣＨ、及び低密度パリティ検査（ＬＤＰＣ）符号が含まれる。フラッシュ製造者によって特定されるフラッシュ装置の寿命（プログラム／消去（ＰＥ）サイクルで測定される）は、特定された誤り訂正要件の実装に基づく。フラッシュ製造者は、予想されるＥＣＣビットの数と、例えば巡回冗長検査（ＣＲＣ）フィールド、セクタ数等の他のメタデータ用の少量のスペースを提供するために、フラッシュページ内に余剰のバイトを設ける。
【０００４】
Ｏｐｅｎ  ＮＡＮＤ  Ｆｌａｓｈ  Ｉｎｔｅｒｆａｃｅ（ＯＮＦＩ）仕様バージョン２．３は、データ領域とスペア領域を含むものとしてフラッシュページを定義する。スペア領域は、ＥＣＣチェックビットとメタデータとを保持するために利用され、データ領域は、セクタ（論理ブロック）データを含むものとする。誤りは、特定のページのデータ部、及びページ全体で発生する。それぞれのエラーの種類に対し、異なるＥＣＣ符号と異なる誤り訂正方法が必要である。
【図面の簡単な説明】
【０００５】
【図１Ａ】一の実施形態に係るデータ格納装置の物理及び論理データ編成の態様を図示する図である。
【図１Ｂ】各Ｅページのデータ部とＥＣＣ部とが物理的に分離されている、一の実施形態に係るＦページの図である。
【図１Ｃ】特定のＦページにおいて、Ｆページデータ部とＦページＥＣＣ部とがサイズ可変であることを図示する図である。
【図２】一の実施形態に係る、論理−物理アドレス変換マップとその例示的エントリを図示する図である。
【図３】従来型の装置及び方法と一の実施形態とにおける、プログラム／消去サイクルに対する不良ブロックの割合を示すグラフである。
【図４】一の実施形態に係る、データ格納装置の全寿命にわたるブロック誤り率と、データ格納装置の使用寿命を延長するためにＥページのＥＣＣ部及びデータ部が変化しうる様子との関係を示す図である。
【図５】一の実施形態に係るブロック情報データ構造の図である。
【図６】一の実施形態に係る、スーパブロック（Ｓブロック）のブロック図である。
【図７】一の実施形態に係る、スーパーページ（Ｓページ）の別の図である。
【図８】一の実施形態に係る、チェックページの生成と格納を図示するＳページの図である。
【図９】一の実施形態に係る、データ格納装置の全寿命にわたるブロック誤り率と、データ格納装置の使用寿命を延長するためにチェックページの数が変化しうる様子との関係を示す図である。
【図１０】一の実施形態に係る、データ格納装置においてチェックページを生成及び格納する方法のフロー図である。
【発明を実施するための形態】
【０００６】
図１Ａは、一の実施形態に係るデータ格納装置の物理及び論理データ編成の態様を図示する図である。一の実施形態において、データ格納装置は、ＳＳＤである。別の実施形態において、データ格納装置は、フラッシュメモリと回転磁気格納媒体とを含むハイブリッドドライブである。本開示は、ＳＳＤとハイブリッド実装の両方に適用可能であるが、説明の単純化のため、様々な実施形態は、ＳＳＤの実装を参照して説明される。一の実施形態に係るＳＳＤコントローラー１０２は、参照番号１１８で示されるホストに結合されるように構成され得る。ホスト１１８は、論理ブロックアドレス（ＬＢＡ）方式を利用し得る。ＬＢＡのサイズは、通常は固定であるが、ホストは、ＬＢＡのサイズを動的に変化させてよい。例えば、ＬＢＡのサイズは、インターフェイスとインターフェイスモードによって変化し得る。実際、５１２バイトが最も一般的であるものの、４ＫＢサイズや、５１２＋（５２０、５２８等）、４Ｋ＋（４Ｋ＋８、４Ｋ＋１６等）フォーマットも普及しつつある。図示のとおり、ＳＳＤコントローラー１０２は、１以上のページレジスタ１０４を含み得る、又はこれに結合され得る。コントローラー１０２は、ホスト１１８からのデータアクセス命令に応じるフラッシュメモリ装置のアレイからデータをプログラム及び読み取りを行うように構成され得る。本明細書の説明はフラッシュメモリを参照するが、メモリ装置のアレイは、フラッシュ集積回路、カルコゲナイドＲＡＭ（Ｃ−ＲＡＭ）、相変化メモリ（ＰＣ−ＲＡＭ又はＰＲＡＭ）、プログラマブルメタライゼーションセルＲＡＭ（ＰＭＣ−ＲＡＭ又はＰＭＣｍ）、Ｏｖｏｎｉｃ  Ｕｎｉｆｉｅｄ  Ｍｅｍｏｒｙ（ＯＵＭ）、抵抗ＲＡＭ（ＲＲＡＭ（登録商標））、ＮＡＮＤメモリ（例えばシングルレベルセル（ＳＬＣ）メモリ、マルチレベルセル（ＭＬＣ）メモリ、又はこれらの任意の組み合わせ）、ＮＯＲメモリ、ＥＥＰＲＯＭ、強誘電体メモリ（ＦｅＲＡＭ）、磁気抵抗ＲＡＭ（ＭＲＡＭ）、その他のディスクリートＮＶＭ（不揮発性メモリ）チップ、もしくはこれらの任意の組み合わせといったその他の種類の不揮発性メモリを含み得ることが理解される。
【０００７】
ページレジスタ１０４は、コントローラー１０２に、アレイからのデータの読み取りとアレイへのデータの格納を可能にするように構成され得る。フラッシュメモリ装置のアレイは、１以上のダイ（例えば１２８個のダイ）に複数のフラッシュメモリ装置を含み得る。フラッシュメモリ装置は、図１Ａの１０９に示すような複数のフラッシュブロックを含み得る。グループ化されたフラッシュブロックの組み合わせは、スーパブロック又はＳブロックと呼ばれ得る。一部の実施形態において、Ｓブロックを形成する個々のブロックは１以上のダイ、プレーン、又はその他の粒度、から選択され得る。したがって、Ｓブロックには、１以上のダイにわたって散らばった複数のフラッシュブロックが、組み合わされて含まれ得る。このようにして、Ｓブロックは、フラッシュ管理システム（ＦＭＳ）が動作する単位を形成し得る。一部の実施形態においては、Ｓブロックを形成する個々のブロックは、メモリ装置が、プレーン等の構造に分割されるダイを含む場合のように、ダイレベルとは異なる粒度で選択され得る（すなわちブロックは個々のプレーンから選択され得る）。一の実施形態によれば、割り当て、消去、ガベージコレクションがＳブロックレベルで行われ得る。別の実施形態では、ページブロック、プレーン、ダイ等の他の論理グルーピングによって、ＦＭＳがデータ操作を実行し得る。
【０００８】
フラッシュブロック１０９の各々は、フラッシュページ（Ｆページ）２０８等の物理ページを複数含み得る。各Ｆページ２０８は、例えば１６ＫＢのような固定サイズであり得る。一の実施形態によるＦページ２０８のサイズは、特定のフラッシュ装置向けのプログラムの最小単位のサイズとして定義され得る。図１Ａにも図示されるとおり、各Ｆページ２０８は、ＥＣＣページ（以下Ｅページ２１０と呼ぶ）のような１以上の物理サブページを提供するように構成され得る。本稿において、用語「Ｅページ」は、誤り訂正符号が適用された、不揮発性メモリ内でデータを格納するためのデータ構造を指す。一の実施形態によれば、Ｅページ２１０は、ＳＳＤ内における物理アドレスの基礎を形成し得て、フラッシュリードデータ転送の最小単位を構成する。すなわち、各Ｅページ２１０は、コントローラー１０２によって読み取り可能な最小量のデータを格納するように構成され得る。Ｅページ２１０は所定の固定サイズ（例えば２ＫＢ）であり、ＥＣＣシステムのペイロード（例えば、ホスト又はその他のデータ）のサイズを決定し得る。しかしながら、物理ページ（例えばＥページ）のサイズは固定である必要はない。一の実施形態において、Ｅページのアドレスは、フラッシュメモリ内のＥページの位置を一意に識別する。例えば、Ｅページのアドレスはフラッシュチャネル、識別されたフラッシュチャネル内の特定のダイ、ダイ内の特定のブロック、特定のＦページ、さらには、識別されたＦページ内のＥページの開始位置を指定し得る。
【０００９】
一の実施形態によれば、各Ｆページ２０８は、１以上のＥページ２１０を境界内に適合させるように構成され得る。例えば、図１Ａに示されるように、幅１６ＫＢのＦページ２０８と固定サイズの各２ＫＢのＥページ２１０があった場合８つのＥページ２１０が１つのＦページ２０８内に適合される。いずれにせよ、一の実施形態によれば、整数の数のＥページ、例えば、ＥＣＣを含む２のべき乗の数のＥページ２１０は、Ｆページ２０８内に適合されるように構成され得る。図１Ａに示されるように、各Ｅページ２１０は、データ部１１４を含み得るとともに、Ｅページ２１０の位置により、ＥＣＣ部１１６をも含み得る。ＥＣＣ部１１６は、Ｅページ２１０のデータ部１１４に格納されたデータに適用されたＥＣＣを格納するように構成され得る。一の実施形態によれば、データ部１１４及びＥＣＣ部１１６のいずれも固定サイズである必要はない。したがって、一の実施形態によれば、あるＥページサイズについて、Ｅページ内におけるＥＣＣ部のサイズとデータ部のサイズとの比率は異なり得る。
【００１０】
Ｅページ、データ部、及びＥＣＣ部は、図１Ａの例示的配置に従って配置される必要はない。例えば、図１Ｂに示されるように、Ｆページ内でデータ部同士が互いにグループ化され、ＥＣＣ部同士が互いにグループ化されるよう、各Ｅページのデータ部とＥＣＣ部とは物理的に分離され得る。Ｆページ内で、データ部とＥＣＣ部は可変サイズであり得る。実際に、図１Ｃは、図１Ｂに示すＥページのデータ部よりも大きいデータ部を構成要素として有するＦページを示している。これに伴って、図１ＣのＦページのＥＣＣ部のサイズは、図１ＢのＥページのＥＣＣ部に比べて小さい。したがって、Ｆページ内の集合体において、図１ＣのＦページのＦページデータ部は、図１Ｂに示されるＦページのＦページデータ部よりも大きい。同様に、Ｆページ内の集合体において、図１ＣのＦページのＦページＥＣＣ部のサイズは、図１Ｂに示されるＦページデータ部よりも小さい。Ｆページのデータ部とＥＣＣ部が可変サイズであることは、以下に詳述するとおり、Ｆページ誤り訂正符号の格納において有利に働くだろう。様々な実施形態において、Ｅページ、データ部、及びＥＣＣ部のその他の配置も可能であり、また、本稿に開示されるサイズ調整方法は、それらの実施形態にも適用可能である。一の実施形態において、ＦページにＥページが１つだけ含まれる場合もある。
【００１１】
実際に、ＳＳＤ上の物理アドレスとホストによる論理ブロックアドレスとを橋渡しするために、論理ページ（Ｌページ）という概念が導入される。図１Ａ及び図２で参照番号２１２が付されるＬページは、フラッシュ管理システムによって用いられるアドレス変換の最小単位を含み得る。一の実施形態によれば、各Ｌページ２１２は、１つのＬページ番号に関連付けられ得る。一の実施形態において、データは、Ｌページ２１２に論理的に格納され、Ｌページ２１２は、Ｅページ２１０において、ＳＳＤ上に物理的に格納される。一の実施形態によれば、Ｅページ２１０は、固定サイズ（整数の数のＥページが１つのＦページ内に適合され得る）であるが、一の実施形態によれば、格納されるデータの圧縮の変動性によって、Ｌページ１１２のサイズは、可変であり得る。データの圧縮率は様々であるため、一の種類の４ＫＢのデータは２ＫＢのＬページに圧縮され得る一方で、別の種類の４ＫＢのデータは１ＫＢのＬページに圧縮され得る。この圧縮のため、一の実施形態によれば、本稿で詳述されるように、物理サイズと論理サイズはアラインされている必要はない。したがって、Ｌページ２１２と関連付けられたＬページ番号は、コントローラー１０２が、１以上のＥページ２１０に格納された１以上のデータ（例えばホストデータ）を論理的に参照することを可能にするように構成され得る。Ｌページ２１２はまた、圧縮の基本単位として用いられ得る。実際に、一の実施形態によれば、Ｆページ２０８及びＥページ２１０とは異なり、Ｌページ２１２のサイズは固定でなく、例えば約２４バイトの最小圧縮サイズから約４ＫＢ又は４ＫＢ＋の最大圧縮サイズによって定義される範囲内で変動し得る。
【００１２】
図１Ａ及び図２に示されるように、Ｌページ２１２は、Ｅページ２１０の境界とアラインされている必要はない。実際、Ｌページ２１２は、Ｆページ２０８及び／又はＥページ２１０の境界にアラインされている開始アドレスを有するように構成され得るが、Ｆページ２０８又はＥページ２１０のいずれの境界ともアラインされないようにも構成され得る。すなわち、Ｌページの開始アドレスは、図１Ａに示されるように、Ｆページ２０８の開始又は終了アドレス又はＥページ２１０の開始又は終了アドレスのいずれかからの非ゼロオフセットに位置し得る。Ｌページ２１２はサイズが固定でなく、固定サイズのＥページ２１０よりも小さい場合があるため、１以上のＬページ２１２は、１つのＥページ２１０に適合され得る。同様に、図１Ａにおいて参照番号１１７で示されるように、Ｌページ２１２は、Ｅページ２１０よりも大きなサイズであり得て、Ｌページ２１２は、１つのＥページ２１０よりも広い範囲にわたり得て、更に、Ｆページ２０８の境界をも超え得る。以下に詳述されるとおり、境界１１７のうち１つがブロックの境界を表している場合のように、Ｌページ１１２は、ブロックの境界をも超え得る。
【００１３】
ＬＢＡサイズが５１２又は５１２＋バイトである場合、未圧縮のＬページ２１２が４ＫＢ〜４ＫＢ＋であり得るとすれば、例えば最大で８つの連続するＬＢＡが４ＫＢのＬページ２１２に収容され得る。なお、一の実施形態によれば、圧縮後の物理サイズは、最小で数バイトからフルサイズで数千バイトにわたり得ることから、Ｌページ２１２の正確な論理サイズは重要でない。例えば、４ＴＢのＳＳＤ装置について、このＳＳＤ上に潜在的に存在し得る全てのＬページについて各Ｌページ１１２をアドレス付けするために、３０ビットのアドレスが用いられ得る。
【００１４】
図２は、一の実施形態に係る、論理−物理アドレス変換マップ２５０とその例示的エントリを図示する。Ｌページ２１２において、格納されたデータがホストによって参照される際、また、ＳＳＤがＬページ２１２を１以上のＥページ２１０内に格納する際、コントローラー１０２が１つのＬページ２１２を１以上のＥページ２１０に関連付けるために物理−論理アドレス変換マップが必要となる。このような論理−物理アドレス変換マップ（事実上、ＬページからＥページへのアドレス変換マップ）が図２の２５０に示され、一の実施形態においてこれは、Ｌページ２１２ごとに１つのエントリを有するリニアアレイである。このアドレス変換マップ２５０は、ＤＲＡＭ等の揮発性メモリに格納され得る。
【００１５】
図２はまた、図２においてＬページ１、Ｌページ２、Ｌページ３、及びＬページ４として示されている４つの異なるＬページ番号に対応する、アドレス変換マップ２５０内のエントリを示す。一の実施形態によれば、ＳＳＤに格納された各Ｌページは、アドレス変換マップ２５０内の１つの一意なＬページ番号エントリによって示され得る。したがって、本稿で説明される例においては、４つのエントリが示されている。図示のとおり、ＬページからＥページへの変換マップ２５０内の各エントリは、参照されるＬページの開始アドレスを含むＥページの識別情報と、Ｅページ内の開始アドレスのオフセットと、Ｌページの長さと、を含み得る１つのＬページ番号を含み得る。更に、複数のＥＣＣビットは、マップエントリに対して誤り訂正機能を提供し得る。例えば、図２に示すとおり、Ｅページのサイズが２ＫＢであると仮定すると、Ｌページ１は、アドレス変換マップ２５０内で以下のように参照され得る：Ｅページ１００３、オフセット８００、長さ１６２４、これに続いてＥＣＣビットの所定の番号（図示せず）。つまり、物理アドレスの用語においては、Ｌページ番号Ｌページ１によって参照されるＬページの開始は、Ｅページ１００３の内部にあり（アラインされていない）、Ｅページ１００３の物理的な開始位置からオフセット、つまり８００バイト、に位置される。更に、Ｌページ番号Ｌページ１に関連付けられた圧縮されたＬページは、１６２４バイトの長さを有することで、Ｅページの境界を超えてＥページ１００４に達する。したがって、Ｅページ１００３及び１００４の各々は、Ｌページ番号Ｌページ１に関連付けられたＬページの一部を格納する。
【００１６】
同様に、Ｌページ番号Ｌページ２に関連付けられた圧縮されたＬページは、全体がＥページ１００４に格納され、その中の４００バイトのオフセットから開始し、Ｅページ１００４内で長さは６９６バイトしかないため、Ｅページ１００４として指定された開始及び終了アドレスの範囲内に収まる。Ｌページ番号Ｌページ３に関連付けられた圧縮されたＬページは、Ｅページ１００４内で１１２０バイトのオフセットから開始し（Ｌページ２の境界から２４バイトの距離）、Ｅページ１００５を４０９６バイト超越してＥページ１００６に達する。したがって、Ｌページ番号Ｌページ３に関連付けられたＬページは、Ｅページ１００４の一部、Ｅページ１００５の全体、及びＥページ１００６の一部にわたる。最後に、Ｌページ番号Ｌページ４に関連付けられたＬページは、Ｅページ１００６内で１１４４バイトのオフセットから開始し、３１２８バイトの長さを有してＥページ１００７の全体を占め、Ｆページの境界を超えて次のＦページのＥページ１００８に達する。
【００１７】
集合的に、アドレス変換マップ２５０の各エントリの構成要素である識別フィールドの各々（Ｅページ、オフセット、長さ、及びＥＣＣ）は、例えばサイズが８バイトであり得る。すなわち、４ＴＢのドライブを例に取ると、Ｅページのアドレスはサイズが３２ビットであり得て、オフセットは１２ビットであり得て（最大４ＫＢのＥページデータ部に対し）、長さは１３ビットであり得て、ＥＣＣフィールドは提供され得る。Ｌページが書き込み又は変更されるたびに、このような８バイトのエントリが作成され得て、コントローラー１０２は（Ｌページに書き込まれた）データをフラッシュ格納装置内で追跡可能となる。上述のとおり、アドレス変換マップ２５０内のこの８バイトのエントリは、論理ページ番号又はＬＰＮと呼ばれ得る。なお、セクターサイズが４ＫＢである場合、ＬＢＡはＬＰＮと同一である。したがってＬＰＮは、論理−物理アドレス変換テーブル２５０内でＬページのインデックスを構成し得て、不揮発性メモリ内のエントリのアドレスを含み得る。ゆえに、コントローラー１０２がホスト１１８から読み取りコマンドを受信すると、提供されたＬＢＡからＬＰＮが導出され得て、ＬＰＮはアドレス変換マップ２５０の指標としてフラッシュメモリ内の読み取るべきデータの位置を抽出するために用いられ得る。コントローラー１０２がホスト１１８から書き込みコマンドを受信すると、ＬＢＡからＬＰＮが構築され得て、アドレス変換マップ２５０は変更され得る。例えば、マップ内に新規エントリが作成され得る。アドレス変換マップ２５０を格納する揮発性メモリのサイズによって、ＬＰＮは１つのエントリに格納されるか、もしくは例えば２つのエントリに分割され得る。例えば、第１のエントリは、対象であるＬページの開始アドレス（ならびにＥＣＣビット）を含むＥページを識別し得て、第２のエントリはオフセットと長さ（ならびにＥＣＣビット）を識別し得る。これらのエントリは２つ合わせて、フラッシュメモリ内の１つのＬページに対応、及びそれを指し示し得る。別の実施形態において、アドレス変換マップのエントリの特定のフォーマットは、上掲の例とは異なり得る。
【００１８】
Ｅページ内で可変のデータ部のサイズは、フラッシュメモリ装置のアレイ内のメモリブロックの変動する条件に適応するために用いられるブロックの条件は、図３及び４を参照して以下に詳述される。図３は、従来型の装置及び方法と様々な実施形態に係る装置及び方法とにおける、ＰＥサイクルに対する不良ブロックの割合を示すグラフを示す。図４は、一の実施形態に係る、ＳＳＤ等のデータ格納装置の全寿命にわたるブロック誤り率と、データ格納装置の使用寿命を延長するためにＥページのＥＣＣ部及びデータ部が変化しうる様子との関係を示す図であるブロックのライフサイクルはブロック毎、及びダイ毎に異なり、一部のブロックは、他のブロックよりも早く劣化（データを確実に格納できる能力が低下）する。不均等な劣化には他にも様々な要因があるが、このようなばらつきは、ダイ毎の加工ばらつき、ダイ上のブロックの位置、ならびに利用パターンや一のブロックと次のブロックとの間の不均等なＰＥサイクル等に起因し得る。
【００１９】
一の実施形態によれば、データ格納装置は、ブロックの条件に少なくとも部分的に基づいて、複数のＥＣＣプロファイルのうちどれを適用するかを決定する、及び／又はＥＣＣ部１１６のサイズを調整し、それに対応して１以上のＦページ及び／又は１以上のブロック内のＥページ２１０のデータ部１１４のサイズを調整するように構成され得るブロックの条件には、例えばブロックのＰＥカウント、ＥＣＣ誤り率、フラッシュ誤り情報、温度、ドウェル時間（削除イベント間の時間）、及び内部フラッシュ状態情報、もしくは、作動条件、温度、経過時間等のその他多くの測定可能な物理特性が含まれ得る。一の実施形態によれば、コントローラーは、ホストから提供されたメタデータ（例えばＴＲＩＭコマンド等の、ホストから指定されたデータセット管理コマンドの結果として生成される）及び／又はデータ格納装置の全体としての空き領域に基づいてＥＣＣ部のサイズ及び／又はデータ部のサイズを調整するように構成され得る。この際、一の実施形態は、図３に３００で示される当初のＰＥカウントＰＥｉから、３０２に示されるより大きなＰＥカウントＰＥｉ＋ｘ（ここでｘは０より大きい）へとブロックの使用寿命を延長するよう機能し得る。これは、劣化したブロックはより多くのＥＣＣによって保護されることにより使用寿命を延長することができるためである。更にブロック／ページレベルでのＥＣＣの変動性は、適用されたＥＣＣが、個別のブロック／ページの一意の条件に適合可能であり、これらの個別のブロック／ページが経験した劣化経路を追跡可能であることを意味する。
【００２０】
図３で示唆されるとおり、ＳＳＤの使用寿命は、不良ブロックの割合が所定の最高値に達するＰＥカウントまで続く。実際には、この所定の最高値はＳＳＤのガベージコレクション能力に影響される。空きブロックの数が不十分なためにガベージコレクションが不可能になると、ＳＳＤは事実上その使用寿命に達したことになる、もしくは、少なくとも、新規データを格納する能力の終わりに達したことになる。一の実施形態によればブロックの条件に少なくとも部分的に基づいて、ＥＣＣ部１１６のサイズを巧妙に調整し、また、それに対応してＥページ２１０のデータ部１１４のサイズを調整することで、「不良ブロック」と見なされるメモリブロックの数の増加はＰＥサイクルについてより低速になり、結果として、ＰＥサイクルの数で測定されるＳＳＤの寿命が延長される。なお、一の実施形態によればブロックについて選択されたＥＣＣプロファイルは、少なくとも対象となるブロックがガベージコレクションされるまで保持される。
【００２１】
図４に示されるように、観察される不良ブロックの割合は、ＳＳＤのライフサイクルの異なる時点において異なり得る。初期（ＰＥサイクルのカウントが小さい時）には、誤り率は高めであり得る。すなわち、ページブロック関連の誤りの発生が比較的高い。これら初期のページブロック誤りの少なくとも一部は、ＥページのＥＣＣを用いて訂正することは事実上不可能となり得る。これらのＥＣＣで訂正不可能な事例に対応するために、一部の実施形態は、図８〜１０に関連して詳述されるとおり、複数のＦページにわたるデータから算出されたチェックデータを有する「チェックページ」と称される１以上のＦページにおいて追加の誤り訂正機構を提供する。初期における、ＥＣＣで訂正不可能なこれらの誤りに対応するためにチェックページを使うことから、初期には、Ｅページは、寿命の後期よりも比較的弱いＥＣＣで構成され得る。より弱いＥＣＣはまた、比較的強いＥＣＣのために必要となるものよりも少ないバイト数で提供され得る。したがって、図示のとおり、ＥＣＣ部１１６ＥＡＲＬＹはＥページ内の比較的少ない数のバイトを占有するよう調整され得る。同時に、Ｅページが固定サイズであることから、これにより比較的大きなデータ部１１４ＥＡＲＬＹが可能になる。有利なことに、このようなより大きなデータ部１１４ＥＡＲＬＹは余剰のバイトを解放し、データ格納及びガベージコレクション用により大きな領域を確保し、オーバープロビジョニングを増大させる。別法として、一部の実施形態においては、より高い誤り率に適合するためにより大きな量のＥＣＣが使われ得る。
【００２２】
中期において、データ部のサイズとＥＣＣの強度とのバランスを取るＳＳＤの能力はピークに達し、結果として、寿命を最適化するためＥページが効率的に用いられる。図示のとおり、比較的平坦な誤り率曲線で示されるように、ＳＳＤの寿命において中期は比較的安定した時期である。したがって、１１６ＥＡＲＬＹに比べて１１６ＭＩＤでは、ＥＣＣ用に多めのバイト数が用いられ得る。一の実施形態によれば、中期においてデータ部１１４ＭＩＤのために予約されたＥページ内の領域は、１１４ＥＡＲＬＹで示される初期のＥページのデータ部に予約された領域よりも比較的小さいものであり得る。更に、比較的小さいデータ部１１４ＭＩＤは、比較的少ない量の追加の空き領域しか確保し得ないため、オーバープロビジョニングの増大は比較的小さくなる。それでもなお、この比較的小さいデータ部１１４ＭＩＤは、従来のように最悪の誤り率を想定したブロックの場合よりも大きくなり得る。
【００２３】
寿命の後期または最後期に向かって、より強力な（例えばより大きな）ＥＣＣ部１１６ＬＡＴＥのための領域をＥページ内に確保するために、データ部１１４ＬＡＴＥは更に小さく調整され得る。一の実施形態は、データ部とＥＣＣ部のサイズの調整、及びＥＣＣ部プロファイルの選択によってＳＳＤの使用寿命を延長することから、後期または最後期におけるＥＣＣの強度は、従来利用されてきたＥＣＣ部のサイズに比べて向上される必要がある可能性がある。したがって、生成時にＥＣＣ強度を巧妙に選択することで、Ｅページのデータ部とＥＣＣ部のサイズがいずれも静的であった場合に従来可能であったものよりも、ＳＳＤの最大ＰＥカウントは増大され得る。これは、初期及び中期においてＥＣＣに割り当てられていた領域が、データ部とＥＣＣ部のサイズが静的である従来の方法において必要とされ得るよりも小さいためである。一の実施形態によれば、寿命の後期／最後期におけるＥＣＣ部のサイズ増大とそれに伴うデータ部のサイズ縮小を考慮してもなお、データ格納装置の使用寿命全体にわたってＰＥカウントの純増加をもたらす、初期及び中期におけるデータ部のサイズ増大のメリットを否定するには及ばない。更に、一の実施形態によれば、かつ以下に述べるとおり、Ｆページの可変サイズのデータ部を活用すること、ならびに交差Ｆページ誤り訂正（「外側」誤り訂正とも呼ばれる。一方、ＥＣＣ部の場合は「内側」誤り訂正と呼ばれる）を用いることで、ＰＥサイクルの数で測定されるＳＳＤの使用寿命は更に延長され得る。
【００２４】
一の実施形態は、ＳＳＤの全寿命にわたって、ＥＣＣのブロックレベルの構成を動的に支持及び追跡する。寿命にわたってＥＣＣを調整することにとどまらずブロックの品質に基づいて、異なるブロックに異なるＥＣＣが用いられ得る。脆弱なブロックには追加のＥＣＣが提供される一方、比較的強力なブロックには、比較的小さなＥＣＣ部１１６に比較的弱いＥＣＣが提供されることで、追加の空き領域を確保し、その結果としてオーバープロビジョニングを増大させる。
【００２５】
一の実施形態によれば、コントローラー１０２は、ＳＳＤが初期から中期へと推移する際、ＰＥカウントが第１の所定の閾値ＰＥＴＨ１に達した時に１以上のＥページのＥＣＣ部のサイズを増大させ、それに伴ってデータ部を縮小させるように構成され得る。また、一の実施形態によれば、コントローラー１０２は、ＳＳＤが中期から後期／最後期へと推移する際、ＰＥカウントが第２の所定の閾値ＰＥＴＨ２に達した時に１以上のＥページのＥＣＣ部のサイズを更に増大させ、それに伴ってデータ部のサイズも縮小させるように構成され得る。第２の所定の閾値ＰＥＴＨ２は、第１の所定のＰＥ閾値ＰＥＴＨ１よりも大きくてよい。なお、本稿において解説及び示されるライフステージ（初期、中期、及び後期／最後期）は例示的なステージでしかなく、より少ない、又は粒度のより高い（例えば数の多い）ライフステージが、それに伴って数を減らされた又は増やされた所定のＰＥ閾値と共に定義され得ることが理解されるべきである。別法として、物理ページのＥＣＣ部とデータ部の調整を司る閾値は、ＰＥカウントとは完全に独立（もしくはこれのみに依存しない）であり得る。したがって、実施形態は、ＰＥカウントに基づいた物理ページのデータ部とＥＣＣ部の相対サイズの調整に限定されない。実際、オーバープロビジョニング量、空き領域、動作モード、動作温度、データの重要度、安全範囲、等の他の要素がこの調整を機能させ得る、又は寄与し得る。
【００２６】
一の実施形態によれば、ＥＣＣ部の強度（及びサイズ）の選択は、コントローラー１０２が複数のＥＣＣプロファイルのうち１つを選択することによってなされ得る。一の実施形態によれば、この選択はランタイムで行われ得る。この選択は、複数のＥＣＣプロファイルのうちどれを１以上のブロック、Ｆページ、又はＥページに適用するかを決定し得る。ＥＣＣプロファイルのうち少なくとも一部は異なるＥＣＣ強度を定義し得て、それゆえに、より多い又はより少ないバイト数を占有することで物理ページに格納されたより多い又はより少ない量（例えばビット数や記号数）のデータを訂正可能な、誤り訂正符号に対応し得る。固定された物理ページのサイズがあった場合、ＥＣＣプロファイルは、何バイトがデータ部１１４のデータに割り当てられているか、及び、何バイトがＥＣＣ部１１６のＥＣＣに割り当てられているか、を決定し得る。各プロファイルには異なる番号が関連付けられ得る。例えば、１６のＥＣＣプロファイルが定義され得て、したがって、この１６のＥＣＣプロファイルは４ビットを使ってアドレス可能である。ＥＣＣプロファイルはコントローラー１０２内に格納され得る、又は、コントローラー１０２にアクセス可能であり、プログラムされるＥページ、Ｆページ、又はブロックの条件に基づいて選択され得る。
【００２７】
一の実施形態によれば、コントローラー１０２は、ブロック１０９を生成する際に複数のＥＣＣプロファイルのうちどれをブロック１０９のＦページ内のＥページに適用するかを決定するよう更に構成され得る。一方でこれは、コントローラー１０２が、複数のＥＣＣプロファイルをそれぞれ別々に複数のブロック１０９、Ｆページ２０８、及び／又はＥページ２１０に提供できることを意味する。例えばコントローラー１０２は、複数のＥＣＣプロファイルのうち最初のものを選択して第１のブロック１０９のＦページ２０８を生成するよう、また、複数のＥＣＣプロファイルのうち２番目のものを選択して第２のブロック１０９のＦページ２０８を生成するように構成され得る。寿命の初期及び／又は中期では、コントローラー１０２は、例えばブロック１０９のＰＥカウントが所定の、又は動的に選択又は算出された閾値（例えばＰＥＴＨ１又はＰＥＴＨ２）よりも低い場合に、ＥＣＣ部１１６のサイズを縮小し、それに伴ってブロック１０９のＥページ２１０のデータ部１１４のサイズを増大させることでＳＳＤのオーバープロビジョニングを増大させるようい構成され得る。
【００２８】
一の実施形態によれば、コントローラー１０２は、誤り率に基づいて、複数のＥＣＣプロファイルのうちどれをブロック１０９、Ｆページ２０８、又はＥページ２１０に適用するかを決定するよう更に構成され得る。特定のブロック１０９、Ｆページ２０８、又はＥページ２１０内の誤り率が低い時は、次回のプログラミングの際、コントローラー１０２は、特定のＥページ２１０、もしくは特定のブロック１０９又はＦページ２０８内に存在するＥページについて、比較的小さなＥＣＣ部１１６と、それに対応するより大きなデータ部１１４を定義するＥＣＣプロファイルを選択し得る。例えば、誤り率は、ブロック１０９、Ｆページ２０８、Ｅページ２１０内でのＥＣＣ誤りの前回の出現に基づき得る。
【００２９】
再度図２を参照すると、Ｌページ番号Ｌページ４（Ｌページ４）に関連付けられたＬページは、２つのＦページにわたる。更に、引き続いて図２を参照すると、点線１１７がブロックの境界を示し、つまり、Ｌページ４が２つのブロックにわたっている。一の実施形態によれば、第１のＦページ内のＥページのデータ部は、第１のＥＣＣプロファイルによるＥＣＣを用いて訂正され得て、第２のＦページ内のＥページのデータ部は、第１のＥＣＣプロファイルとは異なる第２のＥＣＣプロファイルによるＥＣＣを用いて訂正され得る。したがって、結果として、コントローラー１０２は更に、図２のＬページ４のようなブロックをまたいで（例えば第１のブロックから第２のブロック）存在するＬページを読み取るよう、また、Ｌページに係る１つの読み取り操作に２以上の複数のＥＣＣプロファイルを適合するように構成され得る。例えば、第１のＦページは寿命の後期または最後期に移行したブロックに属し得て、したがってそのＥページは、第２のＦページが属する、まだ寿命の中期にあると分類され得るブロックのＥページのＥＣＣ部１１６よりも比較的大きなサイズを有するＥＣＣ部１１６を含む。したがって、ＳＳＤがランダムなホスト読み取りを処理する際、ページレジスタ１０４内に存在するＥページには、サイズの異なる複数のＥＣＣ部があってよい。
【００３０】
一の実施形態によれば、任意のブロック１０９は、第１のサイズのＥＣＣ部を有する第１のＥページと、第１のサイズとは異なる第２のサイズのＥＣＣ部を有する第２のＥページと、を含み得る。一の実施形態によれば、第２のサイズは、ブロック内の第２のＥページの位置に基づいて選択され得る。一の実施形態において、異なるＥＣＣ部のサイズは、第１及び第２のＥページが存在するＦページのメモリブロック内の物理位置に基づいて選択される。このＦページ位置に基づいたＥＣＣプロファイルの選択は、ブロック内の特定のＦページに適用するＥＣＣプロファイルの選択において有用であり得る。例えばブロックの最初のＦページ（例えば図１ＡのＦページ０）及びブロックのうち最後のＦページ（例えば図１ＡのＦページ２５５）は、誤り発生率の点でブロックの最不良Ｆページであり得る。したがって、一の実施形態によればブロックの最初と最後のＦページ向けに選択されたＥＣＣプロファイルによって、コントローラー１０２は、ブロックの最初と最後のＦページの物理ページ（例えばＥページ）に格納されたデータに対するより強い誤り訂正機能を持つＥＣＣを適用することになる。しかしながら、このような位置の影響を受けたＥＣＣプロファイルの選択は、ブロックの最初と最後のＦページに限定されず、ＳＳＤの寿命を最も効率的に延長するために、及び／又はその他任意の目的のために、必要に応じて広く適用され得る。
【００３１】
図５は、一の実施形態に係るブロック情報データ構造のブロック図である。一の実施形態において、各ブロック１０９は、図５の５００に示されるブロック情報データ構造に格納され得る例えば約３２バイトの情報に関連付けられ得る。この、もしくは同様のブロック情報データ構造５００はブロック情報が不揮発な形で格納されるよう、コントローラーファームウェアによってフラッシュメモリに保存され得る。図示のとおり、「ブロックの種類」フィールドは、その特定のブロックのＥページのデータ部にどのＥＣＣプロファイルが適用されているかを格納するように構成され得る。実際、読み取りの度に取り出されることから、そのブロックのＥページのデータ部に格納されたデータをコントローラー１０２が適切にデコード及び誤り訂正できるよう、各ブロックのＥＣＣプロファイルは追跡されるべきである。図示のとおり、「ブロックの種類」フィールドは、可能性のある１６個のＥＣＣプロファイルをアドレスするために４ビットを占有し得る。しかしながら、提供されるＥＣＣプロファイルの数はより多い又はより少ない可能性があり、より多い又はより少ない数のビットを用いて選択され得る。５０２に示されるとおり、様々なＥＣＣフォーマットそのものがＥＣＣプロファイルテーブルに格納され得る。ＥＣＣプロファイルテーブル５０２は、ブロック情報データ構造５００の「ブロックの種類」フィールドによって参照され得る。
【００３２】
なお、特定のブロックのＥページに格納されたデータの誤り訂正において最強のＥＣＣフォーマットも無効であった場合、そのブロックは、下位のページにのみ切り替えられ得る（ＭＬＣメモリが用いられている場合）すなわち、１つのセルに２ビット格納されるのではなく、１つのセルに１ビットのみ格納されるブロック情報データ構造５００の「ブロックの種類」フィールドは更に、例えばＯｘＦｈ値を格納することにより、それに関連付けられたブロックが完全に不良ブロックであるかどうかを示し得る。このようにして、不良ブロックが今後データ格納に利用不可としてフラグされ、これにより潜在的に空き領域及びオーバープロビジョニングを減少させる。一の実施形態によれば、ＥＣＣプロファイルは、プログラミング時にコントローラー１０２に無効なＦページをスキップさせるよう定義及び選択され得る。コントローラー１０２は、これを認識して無効なＦページをプログラミングせずブロック内の後続のＦページへとスキップする。
【００３３】
図５に示すとおりブロック情報データ構造５００は、前回の書き込みの日時を示す「タイムスタンプ」フィールドを更に含み得るブロック情報データ構造５００は、温度に関連する情報を格納する「温度」フィールド、及びブロックが経たプログラム／消去サイクルの数を追跡するための「ＰＥカウント」フィールドを更に含み得て、このフィールドは例えば、使用するＥＣＣプロファイルを選択する際に用いられ得て、上述のとおりブロックのＥページのデータ部１１４及びＥＣＣ部１１６の選択されるサイズに影響し得るブロック情報データ構造５００の、１以上の「ブロックトリムオフセット」フィールドは、フラッシュ装置の内部設定を調整するために、ＳＳＤのファームウェアによって用いられ得る。「ブロックトリムオフセット」フィールドは、独自の誤り訂正を備え得る。更にブロックのＴＲＩＭ情報は、現在のＥＣＣを用いた誤り訂正が不可能になったかどうかといったブロックの健全性に関連するデータを含むように構成され得て、このような情報は、ＥＣＣプロファイルを変更してそのブロックのＥページに格納されたデータの誤り訂正を提供するために用いられるＥＣＣの強度を増大させるために使用され得る。「読み出しディスターブ」フィールドは、このブロックが読み取りされた回数を格納するために提供され得る。「誤りカウント」フィールドは、ブロック内で遭遇された誤りの数を追跡し得る。以下に説明されるとおり、データ構造５００は更に、Ｓページ内のどのＦページがチェックページとして指定されているかを示す１以上のデータ値（例えばフラグ）を含み得る。
【００３４】
図５は、ブロックに関連する情報を格納するための例示的なフォーマットを示す。他の実施形態において、この情報は異なる粒度で格納され得る。例えば、一部の実施形態において、各Ｅページ又はＦページは、独自のプロファイル指定及び対応する情報を有してよい。また、情報は、図５に示される例とは異なるフォーマットで格納され得る。
【００３５】
一の実施形態によれば、特定のＳブロックのマッピング情報を格納するために、Ｓ−ジャーナル（Ｓ−Ｊｏｕｒｎａｌ）として知られる構造が構成され得る。より詳細には、一の実施形態によれば、Ｓ−ジャーナルは、特定のＳブロック内の所定の範囲のＥページのマッピング情報を含む。図６は、一の実施形態によるＳブロックのブロック図である。図示のとおり、Ｓブロック６０２は、１つのダイ当たり１つのフラッシュブロック（Ｆブロック）６０４（図１の１０９でも示される）を含み得る。したがって、Ｓブロックは、１つのダイ当たり１つのＦブロックが互いに結合されてフラッシュ管理システムの一単位を形成する、Ｆブロックの集合体と考えられる。一の実施形態によれば、割り当て、消去、及びＧＣは、Ｓブロックレベルで管理され得る。各Ｆブロック６０４は、図６に示すとおり、複数のフラッシュページ（Ｆページ）、例えば２５６又は５１２のＦページ、を含み得る。一の実施形態によれば、Ｆページは、特定の不揮発性メモリ装置向けのプログラムの最小単位のサイズであり得る。図７は、一の実施形態によるスーパーページ（Ｓページ）を示す。図示のとおり、Ｓページ７０２は、Ｓブロックの１つのＦブロック当たり１つのＦページを含み得て、すなわち、Ｓページは、Ｓブロック全体にわたることを意味する。
【００３６】
図８は、一の実施形態によるチェックページの生成及び格納を図示するＳページの図である。複数のダイの各々に、対応する番号を付けられたＦページを含むＳページ７０２が示されている。図８の例において、Ｓページ７０２は、１２８個のダイのＦページ３を含む。Ｓページは、図８に示された例示的な１２８個のダイに限定されないことが理解されるべきである。図１Ｂ及び１Ｃに関して図示及び説明されたとおり、フラッシュコントローラー１０２は、可変サイズのＥＣＣ部を生成し、Ｆページ内の対応する可変サイズのデータ部にデータを格納するように構成され得る。したがって、このようなＥＣＣ部は、Ｅページ内部の誤り訂正符号であるものとして特徴付けられ得る；すなわち、Ｆページ内の特定のＥページ内の特定のデータ部にのみ適用される誤り訂正符号である。このようなＥページ内部の誤り訂正符号は、「内側」誤り訂正符号としても特徴付けられ得る。上述のとおり、一のＦページ内のＥページの可変サイズのデータ部は、集合体におけるＦページデータ部を集合的に定義する。
【００３７】
一の実施形態によれば、コントローラー１０２は更に、ＳページのＦページにわたって１以上の誤り訂正符号を生成し、生成された誤り訂正符号を、Ｓページのうち最大のＦページデータ部を有するその（それらの）Ｆページに格納するように構成され得る。生成された誤り訂正符号を格納するために用いられる１以上のＦページは「チェックページ」と称される。このような交差Ｆページ誤り訂正符号（ｃｒｏｓｓ−Ｆ−Ｐａｇｅ  ｅｒｒｏｒ  ｃｏｒｒｅｃｔｉｏｎ  ｃｏｄｅｓ）は、「外側（ｏｕｔｅｒ）」誤り訂正符号として特徴付けられ得て、「内側（ｉｎｎｅｒ）」誤り訂正符号に直交する形で機能して追加のデータ保護層を提供し得る。すなわち、生成された交差Ｆページ誤り訂正符号は、最大のＦページデータ部（このようなデータ部は図１Ｂ及び１Ｃに示される）を有するＦページに格納され得る。図８は、このような交差Ｆページ誤り訂正符号８０２の生成及び格納の様々な態様を示す。一の実施形態によれば、コントローラー１０２は、Ｓページ内のＦページのうち、最大のＦページデータ部を有する１以上のＦページをチェックページ、つまり交差Ｆページ誤り訂正符号を格納するよう指定されたＦページ、として指定するように構成され得る。一の実施形態によれば、交差Ｆページ誤り訂正符号は、リードソロモン（Ｒｅｅｄ−Ｓｏｌｏｍｏｎ）（Ｒ−Ｓ）符号等の前方誤り訂正（Ｆｏｒｗａｒｄ  Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｏｎ）（ＦＥＣ）符号を含み得る。
【００３８】
一の実施形態によれば、コントローラー１０２は、各Ｅページを生成する際に、ランタイムでＥページ誤り訂正符号を生成及び格納するように更に構成され得る。一方、コントローラー１０２は、データ（例えばユーザーデータ）がＳページ内のＦページ内に格納された後で、交差Ｆページ誤り訂正符号（例えばＲ−Ｓ又はその他のＦＥＣ符号）の生成及び格納を完了するように構成され得る。一の実施形態によれば、及び、図８で示唆されるとおり、Ｓページ内のデータ（例えばユーザーデータ）が格納されると、チェック情報生成部（例えばプログラムされたコントローラー又はプロセッサ）はランタイムで、交差Ｆページ（すなわち、同時に複数のＦページにわたる）の手法でＳページを横断し、Ｓページ内のＦページを構成するＥページのデータ部から、１以上のＦＥＣ（例えばＲ−Ｓ）符号８０２を生成し得る。全てのＦページから符号が生成されるようにするため、８１２に示すようなＳページの生成に際して最大のデータ部を有するＦページはスキップされ、コントローラー１０２がその後、ＦＥＣ符号をそのような最大のデータ部を有するＦページ（図８の参照番号８０６及び８０８に示される）に格納できるようにする。８１０に示されるように、ＦＥＣコード８０２が例えばダイ１２７のＦページ３に格納された場合、参照番号８０４に示されるダイ１のＦページ３からはＦＥＣ符号は生成されない。まずＳページ内の前データをエンコードして、その後チェック（例えばパリティ）シンボルを、最大のＦページデータ部を有する指定されたＦページ（指定されたチェックページ）に書き出すだけで、交差Ｆページ誤り訂正符号がＳページ内の全ての可変サイズＦページデータ部をカバーしていることが保証される。チェックページが生成された交差Ｆページ誤り訂正符号を含み、ユーザーデータを含まないため、読み取り操作時にはチェックページはスキップ（読み取りされない）され得る。したがって、チェックページは、Ｆページ内の誤りからの回復が試みられている際のみアクセスされる。従来通り、ＥページのＥＣＣ部に格納されたＥＣＣ符号は、特定のＥページのデータ部内の誤りから回復するために利用され得る。ＥページのＥＣＣ部に格納されたＥＣＣ符号がデータ誤りを訂正できないことは、誤りの対象である、Ｓページの複数のＦページのうちのＦページを識別する。Ｆページ誤りからの回復の試みにおいては、このように識別されたＦページに対して、交差Ｆページ誤り訂正符号が適用され得る。なお、ＦＥＣ符号８０２を生成する際、チェックページとして指定されていないＦページ内のＥページは、これらのＥページのデータフィールドのサイズが、チェックページ内のＥページのデータフィールドのサイズに一致するように、（例えばゼロで）パディングされ得る。逆に、Ｆページを訂正する場合には、ＦＥＣ符号８０２生成の際に用いられるパディングの値は、訂正中に用いられ得る。更に、Ｓページ内の１以上のＦページは、「不良」又はデータ格納に利用不可として既にマークされている可能性がある。このような不良Ｆページは、ＦＥＣ符号８０２の生成中にスキップされ、このようなＦＥＣ符号８０２を用いた後続の訂正には一切参加しないことが理解されるべきである。
【００３９】
一の実施形態によれば、コントローラー１０２は、ブロック情報データ構造（図５の５００等）内にフラグを立ててＳページ内の特定のＦページをチェックページとして識別及び指定するように更に構成され得る。したがって、コントローラー１０２は、ブロック情報データ構造５００を参照してＳページのどのＦページがチェックページとして指定されているかを決定するように構成され得る。その結果、一の実施形態によれば、チェックページの位置は、Ｓページ内で固定されていない。例えば、第１のＳページと第２のＳページとの関係において、第１のＳページにおいてチェックページとして指定されたＦページは、第１のＳページ内の比較的異なる場所を占有し得て、第２のＳページ内でチェックページとして指定されたＦページも同様である。
【００４０】
なお、Ｓページ内の１以上の追加のＦページは、チェックページとして指定され得て、交差Ｆページ誤り訂正符号を格納するように構成され得る。追加の交差Ｆページ誤り訂正符号を生成する決定は、１以上の要素に依存し得る。例えば、追加の交差Ｆページ誤り訂正符号は、メモリアレイの構成、メモリアレイの性能（例えば訂正可能又は不可能な、及び／又はその両方のＥページのＥＣＣ誤りの追跡数）、及び／又はメモリアレイの所定部の利用プロファイルに基づいて生成及び格納され得る。実際には、構成、性能、及び利用プロファイルの一部の組み合わせにおいては、それ以外の場合よりも多数のチェックページを指定することが推奨され得る。例えば、重大な情報を格納しているメモリアレイの一部の領域は、メモリアレイのその他の領域よりも比較的多数のＳページ当たりのチェックページを備えるだろう。例えば、Ｓ−ジャーナル等のファイルシステム情報を格納しているＳページは、そのようなファイルシステム情報を格納しないＳページよりも比較的多数のチェックページを備えるだろう。したがって、一の実施形態によれば、異なるＳページは、異なる数のチェックページを有し得て、このようなチェックページの位置は、複数のＳページにわたって固定されていない。
【００４１】
一の実施形態によれば、コントローラー１０２は、定期的に（例えば、プログラム／消去（ＰＥ）サイクル毎に）、各Ｅページの可変サイズのＥＣＣ部内に生成するＥページ誤り訂正符号の強度、生成されたＳページ内に生成する交差Ｆページ誤り訂正符号の強度、及び生成されたＳページ内のどのＦページがチェックページとして指定されるべきか、を決定するように構成され得る。したがって、ＥページのＥＣＣと交差Ｆページ誤り訂正符号との強度、及びチェックページの数は、例えば複数のＳページにわたって、動的に決定及び変化し得る。
【００４２】
図９は、一の実施形態に係る、データ格納装置の全寿命にわたるブロック誤り率と、データ格納装置の使用寿命を延長するためにチェックページの数が変化しうる様子との関係を示す図である。３つのグラフ９０２、９０４、９０６がＸ軸で相関し、３つのパラメータを同じＰＥカウント増加に対してプロットしている。グラフ９０２は、誤り率をＰＥカウントに対してプロットし、グラフ９０４は、用いられるＥＣＣ強度をＰＥカウントに対してプロットし、グラフ９０６は、チェックページの使用数をＰＥカウントに対してプロットする。
【００４３】
図４について述べたとおり、メモリアレイは、比較的健全であり得るが、寿命の初期においてメモリアレイは、比較的高いＦページ欠陥（ＦページのＥページ内のＥＣＣを用いて訂正不可能な誤り）発生率によって特徴付けられ得る。寿命のより後では、Ｅページ内のＥＣＣの強度は徐々に向上し得る。上述の、メモリアレイの寿命初期における比較的高いページ誤り発生率に対処するために、アレイの寿命の後期に比べ、初期には比較的多数のチェックページが用いられ得る（９１２に示す）。例えば、Ｓページ１つ当たり４つのチェックページ（又はそれ以上）が、ＥページのＥＣＣを用いて訂正不可能なこのような初期のＦページ欠陥の訂正のために用いられ得る。寿命のより後（例えば中期）では、ＥページのＥＣＣの強度が向上され（９１８に示す）、Ｆページ誤りの頻度が低下するにつれ、Ｓページは、比較的少ないチェックページを備え得て、その数は比較的一定に保たれ得る（９１４に示す）。Ｅページ誤りが増加し、Ｆページ誤りの頻度も中期に比べ増加する寿命の後期又は最後期においては、ＥページのＥＣＣの強度は向上され得て（９２０に示す）、Ｓページ当たりのチェックページの数が必要に応じて増加し得る（９１６に示す）。一の実施形態によれば、コントローラー１０２は、ＥページのＥＣＣ誤り率を追跡し得て、追跡された誤り率は、Ｓページが備え得るチェックページ数の決定において、１つの典型的要素として用いられ得る。別の実施形態においては、訂正不可能なＥＣＣ誤りの数は、この決定において少なくとも１つの要素として用いられる。当業者が認識するように、その他のＥページＥＣＣ及び／又はチェックページのプロファイルも適用され得る。例えば、異なるライフステージにおけるＥＣＣの利用量とチェックページの利用量との関係は、図９に示すような相関である必要はない。一部の実施形態において、他の要素の趨勢とは無関係に、それぞれが独立して調整されてもよい。
【００４４】
図１０は、一の実施形態に係る、データ格納装置においてチェックページを生成及び格納する方法のフロー図である。図示のとおりブロックＢ１０１は、図示及び上述のように構成された、すなわち、複数のダイのうち１以上からのＦページを含む、Ｓページを定義することを要求する。Ｂ１０２及び図１Ｃに示すとおり、可変サイズのＥＣＣ部を有するＥページ誤り訂正符号は、Ｅページの対応する可変サイズのデータ部内の誤りを訂正するために、定義されたＳページのＦページの１以上のＥページに格納され得る。図８について図示及び説明されたとおりブロックＢ１０３は、定義されたＳページ内のＦページのうち、最大サイズのＦページデータ部を有する１以上のＦページをチェックページとして指定することを要求する。Ｂ１０４に示すとおり、交差Ｆページ誤り訂正符号はその後、チェックページとして指定された各Ｆページ内に格納され得る。このような交差Ｆページ誤り訂正符号は、例えば、Ｒ−Ｓ符号又はその他のＦＥＣ符号を含み得る。
【００４５】
本開示の特定の実施形態が説明されてきたが、これらの実施形態は例示のためにのみ提供されたものであり、本開示の範囲を限定する目的ではない。実際には、本稿に記載の新規の方法、装置、及びシステムは、その他様々な形態で具体化され得る。更に、本稿に記載の方法、及びシステムの形態の種々の省略、置換、及び変更は、本開示の精神から逸脱することなく行われ得る。添付の請求の範囲及びその等価物は、このような形態又は変形をも、本開示の精神及び範囲に含まれるものとして包含するよう意図されている。例えば、当業者であれば、様々な実施形態において、実際の構造（例えば、ＳＳＤブロックの構造又は物理又は論理ページの構造）が、図示されたものとは異なり得ることを理解するであろう。実施形態によっては、実施例で上述された工程のうち特定のものは省略され得て、また、その他の工程が追加され得る。更に、上述した特定の実施形態の機能及び属性は、異なる方法で組み合わせられて追加の実施形態を成立し得て、その全てが、本開示の範囲に包含される。本開示は特定の好適な実施形態及び応用を提供しているが、本稿に記載の全ての機能及び利点を提供しない実施形態を含む、当業者にとって明白なその他の実施形態も、本開示の範囲に包含される。したがって、本開示の範囲は、添付の請求の範囲を参照することによってのみ定義されるよう意図される。
【図１Ａ】
2015535640.tif 000003
【図１Ｂ】
2015535640.tif 000004
【図１Ｃ】
2015535640.tif 000005
【図２】
2015535640.tif 000006
【図３】
2015535640.tif 000007
【図４】
2015535640.tif 000008
【図５】
2015535640.tif 000009
【図６】
2015535640.tif 000010
【図７】
2015535640.tif 000011
【図８】
2015535640.tif 000012
【図９】
2015535640.tif 000013
【図１０】
2015535640.tif 000014
【国際調査報告】
2015535640.tif 000015
2015535640.tif 000016