(57)【要約】  【解決手段】  フラッシュメモリとともに使用される順応ＥＣＣ技術は、フラッシュメモリ寿命、信頼性、性能、および／または記憶容量の改善を可能にする。本技術は、様々な符号化率および／または様々な符号長を備えるＥＣＣスキーム（異なる誤り訂正能力を提供する）、ならびに（専用ハードウェア論理ブロックなどを通じた）誤り統計収集または追跡のセットを含む。本技術は、さらに、１若しくはそれ以上のＥＣＣスキームにしたがった符号化または復号、ならびに少なくとも部分的に誤り統計収集または追跡からの（専用誤り統計収集または追跡ハードウェア論理ブロックからの入力を受け付けるハードウェア論理順応コーデックを通じてなど）情報に基づいて、１若しくはそれ以上の前記ＥＣＣスキームの間で符号化または復号の動的な切り替えを行うことを含む。本技術はさらに、経時的に様々な動作モードで（たとえば、ＭＬＣページまたはＳＬＣページとして）前記フラッシュメモリの一部分（たとえばページまたはブロック）を選択的に動作させることを含む。  【選択図】      図１
2013542533.tif 000002
【特許請求の範囲】
【請求項１】
システムであって、
フラッシュメモリの一部分へのアクセスにおける生ビット誤り率（ＢＥＲ）を動的に決定する誤り統計収集および追跡手段と、
複数の誤り訂正符号の中から選択された１つにしたがって符号化を行い、さらに少なくとも部分的に前記生ＢＥＲに基づいて前記動的に選択された誤り訂正符号を動的に決定する順応（ａｄａｐｔｉｖｅ）符号化手段と、
を有するシステム。
【請求項２】
請求項１記載のシステムにおいて、前記誤り訂正符号のうちの第１の誤り訂正符号による符号化の結果、前記誤り訂正符号のうちの第２の誤り訂正符号による符号化よりも少ない数の誤り訂正ビットが前記部分に格納されるものであるシステム。
【請求項３】
請求項２記載のシステムにおいて、前記第１の誤り訂正符号にしたがって符号化する場合、ユーザデータとして使用される部分のビット数が、最大で、前記第２の誤り訂正符号によって使用される誤り訂正ビットの数から前記第１の誤り訂正符号によって使用される誤り訂正ビットの数を引いた差分だけ増加するものであるシステム。
【請求項４】
請求項２記載のシステムにおいて、前記第２の誤り訂正符号にしたがって符号化する場合、ユーザデータとして使用される部分のビット数が、最大で、前記第２の誤り訂正符号によって使用される誤り訂正ビットの数から前記第１の誤り訂正符号によって使用される誤り訂正ビットの数を引いた差分だけ減少するものであるシステム。
【請求項５】
請求項２記載のシステムにおいて、前記順応符号化手段は、さらに、前記部分の寿命の第１の時期の間は前記第１の誤り訂正符号を選択し、前記寿命の第２の時期の間は前記第２の誤り訂正符号を選択するものであり、前記第２の時期は前記第１の時期より後であるシステム。
【請求項６】
請求項２記載のシステムにおいて、前記誤り統計収集および追跡手段および前記順応符号化手段のうちの１若しくはそれ以上は少なくとも部分的に、ハードウェア論理回路および／または１若しくはそれ以上のソフトウェアルーチンを通じて実現されるものであるシステム。
【請求項７】
システムであって、
フラッシュメモリの一部分へのアクセスにおける生ビット誤り率（ＢＥＲ）を決定する誤り統計収集および追跡手段と、
順応符号化手段および順応復号手段を有する順応符号化または復号手段であって、
前記順応符号化手段は、複数の誤り訂正符号の中から第１に選択された誤り訂正符号にしたがって符号化を行い、
前記順応復号手段は、前記誤り訂正符号の中から第２に選択された誤り訂正符号したがって復号を行うものであり、
前記順応符号化または復号手段は、さらに、少なくとも部分的に前記誤り統計収集および追跡手段から受信した情報に基づいて、前記第１に選択された誤り訂正符号を決定するものである、
前記順応符号化または復号手段と
を有するシステム。
【請求項８】
請求項７記載のシステムにおいて、前記順応符号化手段は、前記誤り訂正符号のいずれかにしたがって符号化を行うユニバーサル符号化手段であるシステム。
【請求項９】
請求項７記載のシステムにおいて、前記順応復号手段は、前記誤り訂正符号のいずれかにしたがって復号を行うユニバーサル復号手段であるシステム。
【請求項１０】
請求項７記載のシステムにおいて、前記第１に選択された誤り訂正符号による符号化の結果、前記第２に選択された誤り訂正符号による符号化よりも少ない数の誤り訂正ビットが前記部分に格納されるものであるシステム。
【請求項１１】
請求項１０記載のシステムにおいて、前記第１に選択された誤り訂正符号にしたがって符号化する場合、ユーザデータとして使用される部分のビット数は、最大で、前記第２に選択された誤り訂正符号にしたがって符号化を行うときに使用される誤り訂正ビット数から前記第１に選択された誤り訂正符号にしたがって符号化を行うときに使用される誤り訂正ビット数を引いた差分だけ増加するものであるシステム。
【請求項１２】
請求項１０記載のシステムにおいて、前記第２に選択された誤り訂正符号にしたがって符号化する場合、ユーザデータとして使用される部分のビット数は、最大で、前記第２に選択された誤り訂正符号にしたがって符号化を行うときに使用される誤り訂正ビット数から前記第１に選択された誤り訂正符号にしたがって符号化を行うときに使用される誤り訂正ビット数を引いた差分だけ減少するものであるシステム。
【請求項１３】
請求項１０記載のシステムにおいて、前記順応符号化手段は、さらに、前記部分の寿命の第１の時期の間は前記第１に選択された誤り訂正符号を選択し、前記寿命の第２の時期の間は前記第２に選択された誤り訂正符号を選択するものであり、前記第２の時期は前記第１の時期より後であるシステム。
【請求項１４】
請求項７記載のシステムにおいて、前記誤り統計収集および追跡手段および前記順応符号化手段のうちの１若しくはそれ以上は少なくとも部分的に、ハードウェア論理回路および／または１若しくはそれ以上のソフトウェアルーチンを通じて実現されるものであるシステム。
【請求項１５】
システムであって、
フラッシュメモリの複数の部分の各々に関連付けられた符号化率を動的に決定する動的符号化率選択手段と、
前記決定された各符号化率にしたがって動作可能な符号化手段と、
前記決定された各符号化率にしたがって動作可能な復号手段と
を有し、
前記決定された各符号化率の特定の１つにしたがって前記符号化手段によって符号化されたデータが前記部分のうちの特定の１つに書き込まれ、次に、前記特定部分から読み出されて前記復号手段によって復号されるものであるシステム。
【請求項１６】
請求項１５記載のシステムにおいて、前記動的符号化率選択手段は、少なくとも部分的に、前記部分のうちの１若しくはそれ以上ごとに１若しくはそれ以上のパラメータに基づいて、または前記パラメータのうちの１若しくはそれ以上の１若しくはそれ以上の履歴に基づいて、前記各符号化率を動的に決定するものであり、前記パラメータは、
訂正された誤りの数と、
検出された誤りの数と、
プログラムサイクルまたは消去サイクルの数と、
読み出しサイクルの数と、
プログラム時間と、
消去時間と、
読み出し時間と、
温度と、
閾値電圧と
を含むものであるシステム。
【請求項１７】
請求項１５記載のシステムにおいて、前記動的決定は、
前記部分のうちの第１の部分に当該第１の部分の寿命の比較的初期において関連付けられる比較的低い符号化率の決定と、
前記第１の部分に前記寿命の比較的後期に関連付けられる比較的高い符号化率の決定とを有するものであるシステム。
【請求項１８】
請求項１７記載のシステムにおいて、前記比較的低い符号化率にしたがって符号化する場合、ユーザデータとして使用される前記第１の部分のビット数は、前記比較的高い符号化率にしたがって符号化するときよりも大きいものであるシステム。
【請求項１９】
請求項１５記載のシステムにおいて、前記動的符号化率選択手段、前記符号化手段、および前記復号手段のうちの１若しくはそれ以上は少なくとも部分的に、ハードウェア論理回路および／または１若しくはそれ以上のソフトウェアルーチンを通じて実現されるものであるシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本願に基づく優先権の利益は、添付の出願データシート、願書、または送付状（該当する場合）にて主張されている。本願の種別により許可される範囲内で、本願はあらゆる目的のため、発明がなされた時点で全て本願とともに所有されていた以下のものを、参照により本明細書に組み込むものとする。
【背景技術】
【０００２】
２０１０年１０月２７日付で出願され、第一発明者をＹａｎ  Ｌｉとし、フラッシュメモリベースのデータ記憶のための順応ＥＣＣ技術と題される、米国仮特許出願（整理番号ＳＦ−１０−０３および米国特許出願第６１／４０７，１７８号）。
【０００３】
性能、効率、および使いやすさを改善するために、フラッシュメモリ記憶技術の進歩が必要とされている。
【０００４】
文脈、定義、または比較目的のものを含め、本明細書で説明される技術および概念は、公知または周知であるとの明示的な断りがない限り、このような技術および概念がこれまでに公知であり、または先行技術の一部であったと認めるように解釈されるべきではない。特許、特許出願、および刊行物を含む本明細書における全ての参照は（もしあれば）、具体的に組み込まれているか否かに関わらず、全ての目的のために、参照によりその全体が本明細書に組み込まれる。
【発明の概要】
【課題を解決するための手段】
【０００５】
本発明は多数の方法で実現でき、工程、製造品、機器、システム、組成物、その他コンピュータ可読記憶媒体（たとえば、ディスクなどの光および／または磁気による大容量記憶装置における媒体、あるいはフラッシュストレージ等の不揮発性記憶装置を有する集積回路）、あるいは光または電子通信リンク経由でプログラム命令が送信されるコンピュータネットワークなどとして、実施可能である。本明細書では、これらの実施態様、または本発明が取りうる他のいかなる形態も、技術と称されてよい。詳細な説明では、上記で特定された分野において性能、効率、および実用性の改善を可能にする本発明の１若しくはそれ以上の実施形態について、解説している。詳細な説明は、当該詳細な説明の残部のより迅速な理解を促すため、序論を含めている。序論は、本明細書で説明する概念に基づいたシステム、方法、製造品、およびコンピュータ可読媒体のうちの１若しくはそれ以上の実施形態例を含む。結論において詳述されるように、本発明は、請求項の範囲内で可能な全ての変更形態および変形形態を包含する。
【図面の簡単な説明】
【０００６】
【図１】図１は、フラッシュメモリベースのデータ記憶のための順応ＥＣＣ技術を用いるシステムの実施形態の、選択された詳細を示す図である。
【図２Ａ】図２Ａは、フラッシュメモリベースのデータ記憶のための順応ＥＣＣ技術を用いるＳＳＤコントローラを含むＳＳＤの実施形態の、選択された詳細を示す図である。
【図２Ｂ】図２Ｂは、図２ＡのＳＳＤを含むシステムの実施形態の、選択された詳細を示す図である。
【図２Ｃ】図２Ｃは、図２ＡのＳＳＤを含むシステムの別の実施形態の、選択された詳細を示す図である。
【発明を実施するための形態】
【０００７】
本発明の１若しくはそれ以上の実施形態の詳細な説明が、本発明の選択された詳細を示す添付図面とともに以下に示される。本発明は、実施形態に関連付けて記載される。本明細書の実施形態は単に例示的であると理解され、本発明は明らかに本明細書の実施形態に限定されるものではなく、またはそのいずれかまたは全てによって限定されるものでもなく、本発明は、多くの代替形態、変更形態、変形形態、および同等物を包含する。説明の単調さを回避するために、多様な単語ラベル（これらに限定されるものではないが、第１の、最後の、特定の（ｃｅｒｔａｉｎ）、様々な、さらなる、別の、特定の（ｐａｒｔｉｃｕｌａｒ）、選択された、いくつかの、および特筆すべき、を含む）が、別個の実施形態セットに適用されてもよい。本明細書において、このようなラベルは、品質、または何らかの形態の嗜好性または偏見を伝えることではなく、別個のセットの間で都合よく区別することを、明確に意味している。開示された工程のいくつかの操作の順序は、本発明の範囲内で変更可能である。工程、方法、および／またはプログラム命令の特徴の変形形態を説明するのに多数の実施形態が役立っている場合は、所定の基準、または動的に決定される基準にしたがって、前記多数の実施形態のうちの複数にそれぞれ対応する複数の動作モードのうちの１つの静的または動的な選択を実行する、その他の実施形態が考えられる。本発明の完全な理解を提供するために、多数の具体的詳細が以下の説明に記載される。詳細は例示目的で提供され、本発明は、詳細の一部または全てがなくとも、請求項にしたがって実施されることが可能である。明瞭性のため、本発明が不必要に曖昧にならないよう、本発明に関する技術分野において周知の技術事項は、詳述されていない。
【０００８】
序論
本序論は、詳細な説明のより迅速な理解を促すために含めたものである。序論のいずれの段落も、必然的に当該主題全体を概説するものであり、完全なまたは限定的な説明を意図するものではないので、本発明は、序論に示される概念（もしあれば明確な例を含む）に限定されるものではない。たとえば、以下の序論は、紙面と構成により特定の実施形態のみに限定された概略情報を提供する。最終的に請求項と整合するものも含め、本明細書の残部を通じてその他多くの実施形態が論じられている。
【０００９】
頭字語
本明細書の他の部分では、様々な略称または頭字語が、特定の要素を指す。頭字語の少なくともいくつかの説明は、以下のとおりである。
【００１０】
【表１】
2013542533.tif 000003
2013542533.tif 000004
【００１１】
ＮＡＮＤ型フラッシュメモリは、情報を格納するためにフローティング・ゲート・トランジスタのアレイを使用する。ＳＬＣ技術においては、各ビットセル（たとえばフローティング・ゲート・トランジスタ）は、１ビットの情報を格納できる。ＭＬＣ技術では、各ビットセルは、多ビットの情報を格納できる。製造技術（たとえばＣＭＯＳ技術）が微細化するにつれて、各フローティングゲートに格納される電子の数が減少する。さらに、記憶容量および密度が増加するにつれて、各ビットセルはより多くのビットを格納するようになる。したがって、ビットセルに格納された値は、より低い電圧範囲で表されるようになる。セルに格納された電子数の検出および／または経時変化の不確実性は、データが誤って格納または読み出しされる可能性を増加させる。１若しくはそれ以上のＥＣＣ技術の使用により、通常であれば破損しているデータの正しい修正を可能にする。
【００１２】
いくつかのＳＳＤは、不揮発性記憶装置を提供するために、フラッシュメモリを提供する（たとえば、電力を印加せずに情報が保持される）。いくつかのＳＳＤは、ＨＤＤ、ＣＤドライブ、およびＤＶＤドライブなど、磁気および／または光による不揮発性記憶装置によって使用されるフォームファクタ、電気的インターフェース、および／またはプロトコルと互換性がある。様々な実施形態において、前記ＳＳＤは、０若しくはそれ以上のＲＳ符号、０若しくはそれ以上のＢＣＨ符号、０若しくはそれ以上のビタビまたはその他のトレリス符号の、様々な組み合わせを用いる。
【００１３】
生ＢＥＲの一例は、ＥＣＣの恩恵を受けずにフラッシュメモリから読み出されたデータのＢＥＲである。いくつかの要因が生ＢＥＲ（書き込み誤り、記憶誤り、およびリードディスターブエラーなど）に貢献し、生ＢＥＲは経時的に変化可能である。フラッシュメモリへのデータの格納は、２部工程である。まず前記フラッシュメモリのブロックが消去され、その後に前記ブロックが書き込まれる。２部工程は、ＰＥサイクルの一例である。様々な使用シナリオおよび／または実施形態において、フラッシュメモリの誤りの全てまたは１若しくはそれ以上の部分は、前記フラッシュメモリにおける特定のブロックがいくつのＰＥサイクルを受けたかの関数である。いくつかの使用シナリオおよび／または実施形態において、特定ブロックはＰＥサイクルを受けているので（たとえば消去されてから書き込まれているので）、特定ブロックの生ＢＥＲが増加する。
【００１４】
いくつかの手法において、フラッシュメモリの全寿命にわたって、固定ＥＣＣが使用される。たとえばフラッシュメモリが最初に動作されたときから前記フラッシュメモリが最後に動作されるときまで単一のＥＣＣスキームが使用される。前記単一のＥＣＣスキームは、フラッシュメモリのライフサイクルにわたって可能性のある最悪な生ＢＥＲを訂正するのに十分な誤り訂正能力を有するように、設計されている（たとえば、前記フラッシュメモリの寿命の後期の間に訂正可能となっている）。誤り訂正能力は、前記フラッシュメモリの寿命の初期および中期の間に比較的低い生ＢＥＲから生じる誤りを訂正するのに十分すぎるほどであり、こうして有効な記憶容量を減少させる（誤りを訂正するのに必要なＥＣＣに、より多くの記憶容量が割り当てられる）。
【００１５】
様々な実施形態および／または使用シナリオにおいて、フラッシュメモリとともに使用するための順応ＥＣＣ技術は、フラッシュメモリ寿命、信頼性、性能、および／または記憶容量の改善を可能にする。本技術は、様々な符号種別、符号化率、および／または符号長を備えるＥＣＣスキーム（異なる誤り訂正能力を提供する）、ならびに誤り統計収集または追跡（専用ハードウェア論理ブロックを通じてなど）のセットを含む。本技術は、１若しくはそれ以上のＥＣＣスキームによる符号化または復号、ならびに少なくとも部分的に誤り統計収集または追跡からの（専用誤り統計収集または追跡ハードウェア論理ブロックからの入力を受け付けるハードウェア論理順応コーデックを通じてなど）情報に基づくそれぞれの１若しくはそれ以上のＥＣＣスキームの間でのフラッシュメモリの全てまたはいずれかの部分の符号化または復号の動的な切り替えを、さらに含む。本技術は、経時的に様々な動作モードで（たとえば、ＭＬＣページまたはＳＬＣページとして）前記フラッシュメモリの一部分（たとえばページまたはブロック）を選択的に動作させることを、さらに含む。たとえば、フラッシュメモリ寿命の初期においては長さの短い符号が使用され、寿命におけるそれ以降の部分では、長さの長い符号が使用される。別の例としては、前記フラッシュメモリのページの動作期間の間、ページはＭＬＣページとして動作させられ、その後の動作期間の間は、ページはＳＬＣページとして動作させられる。寿命または動作期間は、たとえば電力が印加される時間、プログラムサイクルまたは消去サイクルの数、読み出しサイクルの数、測定および／または予測ＢＥＲ、プログラム時間、消去時間、読み出し時間、温度、および／またはフラッシュメモリの記憶セルの閾値電圧などに基づいて、測定可能である。
【００１６】
例示的な実施形態
詳細な説明の序論の結びとして、少なくとも「ＥＣ」（Ｅｘａｍｐｌｅ  Ｃｏｍｂｉｎａｔｉｏｎｓ、組み合わせ例）として明示的に列挙されたいくつかを含む実施形態例集を以下に示し、本明細書に記載される概念にしたがって様々な実施形態タイプのさらなる説明を提供する。これらの例は、相互に排他的、網羅的、または限定的となるように意図されるものではなく、本発明はこれらの実施形態例に限定されず、むしろ特許請求の範囲内で可能な全ての変更形態および変形形態を包含する。
【００１７】
ＥＣ１）システムであって、
フラッシュメモリの一部分へのアクセスにおける生ビット誤り率（ＢＥＲ）を決定する誤り統計収集または追跡ハードウェア論理ブロックと、
複数の誤り訂正符号の中から選択された１つにしたがって符号化を行い、さらに少なくとも部分的に前記生ＢＥＲに基づいて前記選択された誤り訂正符号を動的に決定する順応エンコーダハードウェアブロックと、
を有するシステム。
【００１８】
ＥＣ２）ＥＣ１記載のシステムにおいて、前記誤り訂正符号の１つによる符号化の結果、別の誤り訂正符号による符号化よりも少ない数の誤り訂正ビットが前記部分に格納されるものであるシステム。
【００１９】
ＥＣ３）ＥＣ１記載のシステムにおいて、前記誤り訂正符号の１つによる符号化の結果、別の誤り訂正符号による符号化よりも多い数の誤り訂正ビットが前記部分に格納されるものであるシステム。
【００２０】
ＥＣ４）ＥＣ１記載のシステムにおいて、前記選択された誤り訂正符号が第１の誤り訂正符号である場合、第２の誤り訂正符号よりも比較的多くのデータ情報および比較的少ない誤り訂正情報が順応エンコーダによって出力されるものであるシステム。
【００２１】
ＥＣ５）ＥＣ４記載のシステムにおいて、前記選択された誤り訂正符号が前記第１誤り訂正符号であるときのデータ情報の量は、前記選択された誤り訂正符号が前記第２の誤り訂正符号であるときのデータ情報の量よりも大きいものであるシステム。
【００２２】
ＥＣ６）ＥＣ４記載のシステムにおいて、前記選択された誤り訂正符号が前記第２の誤り訂正符号であるときのデータ情報の量は、２のべき乗であるシステム。
【００２３】
ＥＣ７）ＥＣ４記載のシステムにおいて、前記選択された誤り訂正符号が前記第２の誤り訂正符号であるときのデータ情報の量は２のべき乗であり、前記選択された誤り訂正符号が前記第１誤り訂正符号であるときのデータ情報の量は、前記選択された誤り訂正符号が前記第２の誤り訂正符号であるときのデータ情報の量よりも大きいものであるシステム。
【００２４】
ＥＣ８）ＥＣ１記載のシステムにおいて、さらに
前記誤り訂正符号のいずれかにしたがって復号する順応デコーダを有するものであるシステム。
【００２５】
ＥＣ９）ＥＣ１記載のシステムにおいて、前記誤り訂正符号はリードソロモン（ＲＳ）符号のみを有するものであるシステム。
【００２６】
ＥＣ１０）ＥＣ１記載のシステムにおいて、前記誤り訂正符号はＢｏｓｅ  Ｃｈａｕｄｈｕｒｉ  Ｈｏｃｑｕｅｎｇｈｅｍ（ＢＣＨ）符号のみを有するものであるシステム。
【００２７】
ＥＣ１１）ＥＣ１記載のシステムにおいて、前記誤り訂正符号は低密度パリティ検査（ＬＤＰＣ）符号のみを有するものであるシステム。
【００２８】
ＥＣ１２）ＥＣ１記載のシステムにおいて、前記誤り訂正符号は少なくとも２種類の誤り訂正符号を有し、誤り訂正符号の種類はリードソロモン（ＲＳ）型符号、Ｂｏｓｅ  Ｃｈａｕｄｈｕｒｉ  Ｈｏｃｑｕｅｎｇｈｅｍ（ＢＣＨ）型符号、および低密度パリティ検査（ＬＤＰＣ）型符号を含むものであるシステム。
【００２９】
ＥＣ１３）ＥＣ１記載のシステムにおいて、前記誤り訂正符号のうちの少なくとも２つは異なる符号化率であるシステム。
【００３０】
ＥＣ１４）ＥＣ１記載のシステムにおいて、前記誤り訂正符号のうちの少なくとも２つは異なる符号長であるシステム。
【００３１】
ＥＣ１５）ＥＣ１記載のシステムにおいて、前記部分は前記フラッシュメモリの１若しくはそれ以上のブロックであり、前記ブロックの各々は個別に消去可能であるシステム。
【００３２】
ＥＣ１６）ＥＣ１記載のシステムにおいて、前記部分は前記フラッシュメモリの１若しくはそれ以上のページであり、前記ページの各々は個別に書き込み可能であるシステム。
【００３３】
ＥＣ１７）ＥＣ１記載のシステムにおいて、前記誤り統計収集および追跡ハードウェア論理ブロックは、さらに、前記フラッシュメモリのそれぞれの部分へのアクセスにおけるそれぞれの生ＢＥＲを決定するものであるシステム。
【００３４】
ＥＣ１８）ＥＣ１記載のシステムにおいて、前記フラッシュメモリは１若しくはそれ以上のフラッシュメモリダイを有するものであるシステム。
【００３５】
ＥＣ１９）ＥＣ１記載のシステムにおいて、前記生ＢＥＲは予測される生ＢＥＲであるシステム。
【００３６】
ＥＣ２０）ＥＣ１９記載のシステムにおいて、前記予測される生ＢＥＲは少なくとも部分的に、前記部分上でプログラムサイクルまたは消去サイクルが実行される数を計測することによって決定されるシステム。
【００３７】
ＥＣ２１）ＥＣ１９記載のシステムにおいて、前記予測される生ＢＥＲは少なくとも部分的に、前記部分上で読み出しサイクルが実行される数を計測することによって決定されるシステム。
【００３８】
ＥＣ２２）ＥＣ１９記載のシステムにおいて、前記予測される生ＢＥＲは少なくとも部分的に、前記部分の少なくとも１つのセルに関連付けられた閾値電圧を決定することによって決定されるシステム。
【００３９】
ＥＣ２３）ＥＣ１９記載のシステムにおいて、前記予測される生ＢＥＲは少なくとも部分的に、１若しくはそれ以上の所定閾値に基づいて決定されるシステム。
【００４０】
ＥＣ２４）ＥＣ１９記載のシステムにおいて、前記予測される生ＢＥＲは、少なくとも部分的に１若しくはそれ以上の統計モデルに基づいて決定されるシステム。
【００４１】
ＥＣ２５）ＥＣ１記載のシステムにおいて、前記生ＢＥＲは測定された生ＢＥＲであるシステム。
【００４２】
ＥＣ２６）ＥＣ２５記載のシステムにおいて、前記測定された生ＢＥＲは定期的に決定されるものであるシステム。
【００４３】
ＥＣ２７）ＥＣ２５記載のシステムにおいて、前記測定された生ＢＥＲは少なくとも部分的に、前記部分に所定パターンを書き込むこと、および引き続き前記部分を読み出すことによって決定されるシステム。
【００４４】
ＥＣ２８）ＥＣ２５記載のシステムにおいて、前記測定された生ＢＥＲは少なくとも部分的に、前記部分の少なくとも一部の読み出しに関連付けられたＢＥＲを監視することによって決定されるシステム。
【００４５】
ＥＣ２９）ＥＣ２５記載のシステムにおいて、前記測定された生ＢＥＲは少なくとも部分的に、前記フラッシュメモリからの生読み出しデータを前記生読み出しデータの誤り訂正済みバージョンと比較することによって決定されるものであるシステム。
【００４６】
ＥＣ３０）ＥＣ１記載のシステムにおいて、前記誤り統計収集および追跡ハードウェア論理ブロックは独立したハードウェア論理ブロックであるシステム。
【００４７】
ＥＣ３１）ＥＣ１記載のシステムにおいて、前記誤り統計収集および追跡ハードウェア論理ブロックは専用ハードウェア論理ブロックであるシステム。
【００４８】
ＥＣ３２）ＥＣ１記載のシステムにおいて、前記誤り統計収集および追跡ハードウェア論理ブロックは分散型ハードウェア論理ブロックであるシステム。
【００４９】
ＥＣ３３）ＥＣ１記載のシステムにおいて、前記誤り統計収集および追跡ハードウェア論理ブロックは少なくとも部分的に、前記誤り訂正符号のいずれかにしたがって復号する順応デコーダハードウェア論理ブロック内に実装されるものであるシステム。
【００５０】
ＥＣ３４）ＥＣ１記載のシステムにおいて、前記誤り統計収集および追跡ハードウェア論理ブロックは少なくとも部分的に、前記フラッシュメモリからの生読み出しデータを、前記生読み出しデータの誤り訂正済みバージョンと比較して、少なくとも部分的に前記生ＢＥＲを決定する順応デコーダハードウェア論理ブロック内に実装されるものであるシステム。
【００５１】
ＥＣ３５）ＥＣ１記載のシステムにおいて、前記誤り統計収集および追跡ハードウェア論理ブロックは少なくとも部分的に、前記フラッシュメモリと互換性があり、前記部分上でプログラムサイクルまたは消去サイクルが実行される数を計測するフラッシュメモリインターフェースハードウェア論理ブロック内に実装され、前記順応エンコーダは、さらに、少なくとも部分的に前記計測に基づいて前記選択された誤り訂正符号を動的に決定するものであるシステム。
【００５２】
ＥＣ３６）ＥＣ１記載のシステムにおいて、前記誤り統計収集および追跡ハードウェア論理ブロックは少なくとも部分的に、前記フラッシュメモリと互換性があり、前記部分上で読み出しサイクルが実行される数を計測するフラッシュメモリインターフェースハードウェア論理ブロック内に実装され、前記順応エンコーダは、さらに、少なくとも部分的に前記計測に基づいて前記選択された誤り訂正符号を動的に決定するものであるシステム。
【００５３】
ＥＣ３７）ＥＣ１記載のシステムにおいて、前記誤り統計収集および追跡ハードウェア論理ブロックは少なくとも部分的に、前記フラッシュメモリと互換性があり、前記部分の少なくとも１つのセルに関連付けられた閾値電圧を決定するフラッシュメモリインターフェースハードウェア論理ブロック内に実装され、前記順応エンコーダは、さらに、少なくとも部分的に前記閾値電圧に基づいて前記選択された誤り訂正符号を動的に決定するものであるシステム。
【００５４】
ＥＣ３８）ＥＣ１記載のシステムにおいて、前記部分は複数のサブ部分（ｓｕｂ−ｐｏｒｔｉｏｎ）を有し、前記順応デコーダは、さらに、誤り訂正情報が１若しくはそれ以上の前記サブ部分に格納可能となり、データ情報が１つのサブ部分のみに格納可能となるように復号するものであるシステム。
【００５５】
ＥＣ３９）ＥＣ１記載のシステムにおいて、前記ハードウェアブロックはソリッドステートディスク（ＳＳＤ）コントローラに含まれるものであるシステム。
【００５６】
ＥＣ４０）ＥＣ１記載のシステムにおいて、前記ハードウェアブロックはソリッドステートディスク（ＳＳＤ）に含まれるものであるシステム。
【００５７】
ＥＣ４１）ＥＣ１記載のシステムにおいて、前記ハードウェアブロックは不揮発性記憶構成要素コントローラを有するものであるシステム。
【００５８】
ＥＣ４２）ＥＣ１記載のシステムにおいて、前記ハードウェアブロックは不揮発性記憶構成要素に含まれるものであるシステム。
【００５９】
ＥＣ４３）ＥＣ４２記載のシステムにおいて、前記不揮発性記憶構成要素は、ユニバーサルシリアルバス（ＵＳＢ）記憶構成要素、コンパクトフラッシュ（ＣＦ）（登録商標）記憶構成要素、マルチメディアカード（ＭＭＣ）記憶構成要素、セキュアデジタル（ＳＤ）記憶構成要素、メモリスティック記憶構成要素、およびｘＤ記憶構成要素のうちの１若しくはそれ以上を有するものであるシステム。
【００６０】
ＥＣ４４）システムであって、
フラッシュメモリの一部分へのアクセスにおける生ビット誤り率（ＢＥＲ）を決定する誤り統計収集または追跡ハードウェア論理ブロックと、
順応エンコーダおよび順応デコーダを有する順応コーデックであって、
前記順応エンコーダは複数の誤り訂正符号の中から第１に選択された誤り訂正符号にしたがって符号化を行い、
前記順応デコーダは前記誤り訂正符号の中から第２に選択された１つにしたがって復号を行うものであり、
前記順応コーデックは、さらに、少なくとも部分的に前記誤り統計収集および追跡ハードウェア論理ブロックから受信した情報に基づいて、前記誤り訂正符号の中から第１に選択された誤り訂正符号を決定する前記制御ハードウェア論理ブロックと
を有するものである、前記順応コーデックと、
を有するシステム。
【００６１】
ＥＣ４５）ＥＣ４４記載のシステムにおいて、前記順応コーデックは、さらに、前記誤り訂正符号の各々を記述できる符号ライブラリを有するものであるシステム。
【００６２】
ＥＣ４６）ＥＣ４４記載のシステムにおいて、前記順応エンコーダは、前記誤り訂正符号のいずれかにしたがって符号化できるユニバーサルエンコーダであるシステム。
【００６３】
ＥＣ４７）ＥＣ４４記載のシステムにおいて、前記順応デコーダは、前記誤り訂正符号のいずれかにしたがって復号できるユニバーサルデコーダであるシステム。
【００６４】
ＥＣ４８）システムであって、
フラッシュメモリの複数の部分の各々に関連付けられた符号化率を決定する符号化率選択ブロックと、
前記決定された各符号化率にしたがって動作可能なエンコーダと、
前記決定された各符号化率にしたがって動作可能なデコーダと
を有し、
前記決定された各符号化率の特定の１つにしたがって前記エンコーダによって符号化されたデータが前記フラッシュメモリの前記部分の特定の１つに書き込まれ、次に前記特定部分から読み出されて前記デコーダによって復号されるものであるシステム。
【００６５】
ＥＣ４９）ＥＣ４８記載のシステムにおいて、前記符号化率選択ブロックはハードウェア論理回路を有するものであるシステム。
【００６６】
ＥＣ５０）ＥＣ４８記載のシステムにおいて、前記符号化率選択ブロックは、１若しくはそれ以上の部分ごとに１若しくはそれ以上のパラメータ、あるいは１若しくはそれ以上のパラメータの１若しくはそれ以上の履歴に基づいて、前記各符号化率を決定するものであり、前記パラメータは、
訂正された誤りの数と、
検出された誤りの数と、
プログラムサイクルまたは消去サイクルの数と、
読み出しサイクルの数と、
プログラム時間、
消去時間と、
読み出し時間と、
温度と、
閾値電圧と
を含むものであるシステム。
【００６７】
システムおよび動作
図１は、フラッシュメモリベースのデータ記憶のための順応ＥＣＣ技術を用いるシステム１００の実施形態の選択された詳細を示す。書き込み記憶データパス１１０は、様々なハードウェアブロックを含む。ユニバーサルエンコーダ１２０は制御／インターフェース１３０に接続され、これは同様に（たとえば１若しくはそれ以上のフラッシュメモリダイを有する）フラッシュユニット１４０に接続されている。読み出し記憶データパス１５０は様々なハードウェアブロックを含む。フラッシュユニットおよび制御／インターフェースはユニバーサルデコーダ１６０に接続されている。符号ライブラリ１７０ハードウェアブロックは、ユニバーサルエンコーダおよびユニバーサルデコーダのハードウェアブロックに接続されている。誤り統計収集または追跡１８０ハードウェアブロックは、ユニバーサルエンコーダ、符号ライブラリ、ユニバーサルデコーダ、および制御／インターフェースのハードウェアブロックに接続されている。
【００６８】
動作中、記憶データとして書き込む「ホストからのユーザデータ」がユニバーサルエンコーダによって受信され、誤り訂正符号にしたがって符号化される。誤り訂正符号は、符号ライブラリからの情報によって記述され、少なくとも部分的に誤り統計収集または追跡ブロックによって提供される情報などに基づいて選択される。次にユニバーサルエンコーダは、フラッシュユニットに情報を書き込む制御／インターフェースに、データ情報および誤り訂正情報を提供する。
【００６９】
制御／インターフェースがフラッシュユニットの１若しくはそれ以上の部分（たとえばページまたはブロック）から生情報を読み出すことによって記憶情報の読み出しが開始し、ユニバーサルデコーダに生情報を提供する。次に前記ユニバーサルデコーダは、前記生情報に含まれる誤り訂正情報を用いて、誤り訂正符号にしたがって前記生情報（誤り訂正を含む）をデータ情報に復号する。前記誤り訂正符号は、符号ライブラリからの情報によって記述され、少なくとも部分的に誤り統計収集または追跡ブロックおよび／または生情報の１若しくはそれ以上の部分によって提供される情報などに基づいて選択される。次に前記データ情報はホストに渡される。様々な代替実施形態において、処理は１若しくはそれ以上の代替順序で実施される。たとえばいくつかの実施形態において、記憶データの読み出しは符号ライブラリの読み出しによって開始され、続いて制御／インターフェースが生情報を読み出す。
【００７０】
符号化（および復号）に使用される誤り訂正符号は、誤り訂正符号のセットから選択される。様々な実施形態において、セットはＲＳ符号のみ、ＢＣＨ符号のみ、トレリス符号のみ、またはＬＤＰＣ符号のみを含む。様々な実施形態において、セットはＲＳ、ＢＣＨ、トレリス、および／またはＬＤＰＣ符号種別の様々な組み合わせなど、１より多くの種類を含み、符号種別の各々はそれぞれの種別の１若しくはそれ以上の特定の符号を含む。様々な実施形態において、セットは様々な速度および／または長さの符号を含む。さらなる実施形態において、１つの符号種別（ＢＣＨ符号種別など）の符号が高速符号に使用され、別の符号種別（ＬＤＰＣ符号種別など）の符号が低速符号に使用される。
【００７１】
誤り統計収集または追跡ハードウェアブロックは、独立した機能ハードウェアブロックとして、あるいは１若しくはそれ以上のハードウェアブロック中に分散する機能ブロックとして実装される。たとえば誤り統計収集または追跡ハードウェアブロックは、部分的にユニバーサルデコーダ・ハードウェアブロック内に実装され、フラッシュユニットから読み出された生情報を、生情報を復号することによって生成された誤り訂正済みデータ情報と比較することによって、測定された生ＢＥＲを計算できる。別の例として、誤り統計収集または追跡ハードウェアブロックは、部分的に制御／インターフェース・ハードウェアブロック内に実装され、（たとえば、フラッシュストレージのページまたはブロックなどのストレージユニットあたりの）ＰＥサイクルおよび／または読み出しサイクルの数を計測し、所定の統計モデル用のパラメータとしてその数を使用することによって、予測される生ＢＥＲを計算することができ、次に当該所定の統計モデルが予測される生ＢＥＲを提供する。さらに別の例としては、誤り統計収集または追跡ハードウェアブロックは、部分的に制御／インターフェース・ハードウェアブロック内に実装され、フラッシュストレージの一部分（フラッシュストレージのページまたはブロックなど）から読み出された１若しくはそれ以上のセルのための閾値電圧（またはその代用物）を取得し、所定の統計モデル用のパラメータとして電圧を使用することによって、予測される生ＢＥＲを計算することができ、次に当該所定の統計モデルが予測される生ＢＥＲを提供する。さらに別の例としては、誤り統計収集または追跡ハードウェアブロックは、（ユニバーサルエンコーダを迂回することなどによって）フラッシュストレージに書き込まれる１若しくはそれ以上の所定パターンを提供し、さらに（ユニバーサルデコーダを迂回することなどによって）フラッシュストレージから戻される生ビット誤りの数を検証して測定された生ＢＥＲを決定する。所定パターンは、全０パターン、全１パターン、または１若しくはそれ以上のＰＲＢＳパターンを含む。さらに別の例として、誤り統計収集または追跡ハードウェアブロックは、たとえば所定パターンのうちの１若しくはそれ以上を提供および検証することを通じて、フラッシュストレージの１若しくはそれ以上の部分の現在の生（測定された）ＢＥＲを定期的に（１００ＰＥサイクルごとなど）決定できる。さらなる利点として、上述の例のいずれか１若しくはそれ以上が様々な組み合わせにおいて実現される。
【００７２】
様々な実施形態において、上述の誤り統計収集または追跡ハードウェアブロックによって実行される１若しくはそれ以上の機能は、１若しくはそれ以上のソフトウェア技術を通じて、全体としてまたは部分的に実現される。たとえば、プログラマブルハードウェアタイマは、プロセッサへの割り込みを提供する。これに応答して、プロセッサは、ユニバーサルデコーダ・ハードウェアブロックの一部分に１若しくはそれ以上の測定された生ＢＥＲ値をプロセッサに対して提供するように命令するソフトウェア割り込みハンドラルーチンを実行する。プロセッサは前記値を移動平均として蓄積する。移動平均は、少なくとも部分的に、誤り訂正符号を選択できるソフトウェア機能への入力を通じて、あるいは誤り訂正符号を選択できるハードウェアユニットへの入力として、選択された誤り訂正符号を決定するために使用される。別の例として、プロセッサは、ストレージユニットあたりのＰＥおよび／または読み出しサイクルを計測するために、１若しくはそれ以上のソフトウェアルーチンを実行する。計測は、プロセッサによってアドレス可能なメモリから以前のカウンタ値を読み出し、カウンタ値をインクリメントし、インクリメントされたカウンタ値をメモリに格納し直すルーチンを通じて、行われる。ハードウェアおよびソフトウェアの様々な組み合わせにおいて実行される様々な誤り統計収集および追跡機能を有するその他の実施形態も考えられる。
【００７３】
いくつかの実施形態において、誤り統計収集または追跡ブロックは、経時的な情報の履歴を保持し、履歴の観点から履歴を意識した生ＢＥＲを計算することが可能である。たとえば、誤り統計収集または追跡ブロックは、（アクセスごとまたは動作時間ごとなどに対し、ブロックごとまたはページごとに）測定（または予測）された生ＢＥＲの履歴を保持し、履歴を意識した測定（または予測）生ＢＥＲを履歴から決定することが可能である。
【００７４】
符号化のために選択される誤り訂正符号は、様々な基準、使用シナリオ、および実施形態にしたがって、動的に決定される。たとえば、測定（または予測）された生ＢＥＲは、符号化のためにどの誤り訂正符号が選択されるかに対して動的に影響を及ぼす。別の例として、履歴を意識した測定された（または予測される）生ＢＥＲは、符号化のためにどの誤り訂正符号が選択されるかに対して影響を及ぼす。フラッシュストレージの特定部分の複合のために選択される誤り訂正符号は、特定部分を最後に書き込んだときに使用された符号化と一致するように動的に決定される。
【００７５】
様々な実施形態は、（測定または予測された）生ＢＥＲの明確な計算を伴わない符号化のための誤り訂正符号の選択を実行し、むしろ１若しくはそれ以上のパラメータまたは１若しくはそれ以上のパラメータの履歴に基づいて誤り訂正符号を直接動的に選択する。前記パラメータは、訂正および／または検出された誤りの数、ＰＥサイクルの数、読み出しサイクルの数、プログラム時間、消去時間、読み出し時間、温度、および閾値電圧を含む。様々な実施形態において、前記パラメータ（および／またはその履歴）は、フラッシュストレージ部分による（フラッシュストレージのページごとまたはブロックごとなど）。
【００７６】
いくつかの実施形態において、フラッシュメモリ（フラッシュユニットに含まれるものなど）は（ページまたはブロックなどの）部分として構成され、各部分は、（２Ｋまたは４Ｋバイトの情報などの）所定量の情報を格納できる。前記情報は、データ情報および誤り訂正情報を含む。いくつかの実施形態において、いずれの部分も同じ特定バイト数を誤り訂正情報として格納することができ、別の実施形態では、いくつかの部分が異なるバイト数の誤り訂正情報を格納できる。様々な誤り訂正符号（符号ライブラリによって記述されるものなど）が、異なるバイト（またはビット）数の誤り訂正情報を生成する。
【００７７】
たとえば、（フラッシュメモリの寿命において比較的早い時期に使用されるように）第１の誤り訂正符号を通じて符号化することで、（寿命の後期に使用されるような）第２の誤り訂正符号と比較して、比較的少ないバイト数の誤り訂正情報（たとえば誤り訂正のための冗長情報など）を生成する。いくつかの実施形態において、フラッシュメモリ（および／またはその使用）は、各部分における第２の誤り訂正符号を通じての符号化に十分な誤り訂正情報を格納することができるようになっており、第１の誤り訂正符号が使用されるときに誤り訂正情報記憶を使用しないままにしておく。別の実施形態において、フラッシュメモリ（および／またはその使用）は、各部分における第１の誤り訂正符号を通じての符号化に十分な誤り訂正情報を格納することができるが、第２の誤り訂正符号を通じての符号化に十分な誤り訂正情報を（各部分に）格納することはできない。その他の実施形態のいくつかは、部分ごとの誤り訂正情報記憶と組み合わせて、第２の誤り訂正符号を通じて符号化された誤り訂正情報を格納するのに十分な、追加フラッシュメモリストレージ（追加誤り訂正情報の格納に特化されたフラッシュメモリの領域など）を含む。
【００７８】
いくつかの実施形態において、フラッシュメモリは部分（ページまたはブロックまたはその重複など）として動作し、各部分はデータサブ部分（ｓｕｂ−ｐｏｒｔｉｏｎ）、およびそれぞれの対応する誤り訂正サブ部分として構成される。フラッシュメモリ（および／またはその使用）は、複数の誤り訂正符号のうちの動的に選択された特定の１つにしたがって特定量の記憶データを符号化することができ、特定量の記憶データに対応する誤り訂正情報を生成する。記憶データは、誤り訂正情報と組み合わせられて、データサブ部分の特定の１つおよび誤り訂正サブ部分の対応する特定の１つの組み合わせとして格納される。前記部分は全て同じサイズであるか、あるいは異なるサイズであってもよい。
【００７９】
たとえば、フラッシュメモリ（および／またはその使用）は、比較的小さい誤り訂正符号を通じて符号化するのに十分な大きさの誤り訂正情報を、誤り訂正サブ部分に完全に格納することができ、これにより対応するデータサブ部分の全てを（誤り訂正情報が生成される）記憶データの格納に利用することが可能になる。しかしながら、前記誤り訂正サブ部分は、比較的大きい誤り訂正符号を通じて符号化された誤り訂正情報を格納するのに十分な大きさではない。むしろ、データ記憶サブ部分は、誤り訂正サブ部分に適合しない誤り訂正情報の残部を格納するために「借りられる」ものであり、それによりデータ記憶サブ部分に記憶データを格納するために利用可能なスペースが（借りた量の分だけ）減少する。このため、データ記憶サブ部分の比較的小さい部分が利用可能となるため、比較的小さい誤り訂正符号を使用するときの記憶データの量と比較して、比較的大きい誤り訂正符号を使用する場合は記憶データの量が少なくなる。したがって、比較的大きい誤り訂正符号を使用するときには、フラッシュメモリ（および／またはその使用）によって、比較的少ない総利用可能スペースが提供される。
【００８０】
別の例として、フラッシュメモリ（および／または）は、比較的大きい誤り訂正符号を通じて符号化するのに十分な大きさの誤り訂正情報を、誤り訂正サブ部分に完全に格納することができ、対応するデータサブ部分の全てを（誤り訂正情報がそこから生成される）記憶データの格納に利用可能なままにしておく。前記誤り訂正サブ部分は、比較的小さい誤り訂正符号を通じて符号化された誤り訂正情報を格納するには十分すぎる大きさである。比較的小さい誤り訂正符号を通じて符号化された誤り訂正情報を構成した後に誤り訂正サブ部分に残っている全てのスペースを含み、これを最大限とする誤り訂正サブ部分の量は、追加記憶データを格納するために「借りられる」ものである。このため、データ記憶サブ部分の比較的大きい部分が利用可能なので、比較的大きい誤り訂正符号を使用するときの記憶データの量と比較して、比較的小さい誤り訂正符号を使用するときの方が記憶データの量が多い。したがって、比較的小さい誤り訂正符号を使用するときには、フラッシュメモリ（および／またはその使用）によって、比較的大きい総利用可能スペースが提供される。
【００８１】
様々な実施形態および／または使用シナリオにおいて、フラッシュメモリのいくつかの部分は、（たとえば誤り訂正サブ部分を「オーバーフローさせる」誤り訂正符号にしたがって符号化するときに必要な）上述のようなデータサブ部分からの借用にしたがって動作し、その一方でフラッシュメモリの別の部分は、（たとえばデータサブ部分に利用可能なスペースを残す誤り訂正符号にしたがって符号化するときに可能となる）上述のような誤り訂正サブ部分からの借用にしたがって動作する。様々な実施形態および／またはその使用シナリオにおいて、フラッシュメモリのいくつかの部分は、（たとえば符号化に使用される誤り訂正符号に応じて必要となる）データまたは誤り訂正サブ部分からの借用によって動作させられる。これらの部分は同じサイズまたは様々なサイズであってもよく、これらの部分はデータ（または誤り訂正）サブ部分が同じように割り当てられて、または異なる割当てによって、構成される（たとえば、全てのデータサブ部分が特定のサイズであり、あるいは全てのデータサブ部分が複数のサイズのいずれかである）。
【００８２】
様々な実施形態において、フラッシュメモリの一部分の使用モードは、生ＢＥＲおよび／またはデータ情報を符号化するために誤り訂正符号を動的に選択するために使用される上記パラメータのうちの１若しくはそれ以上に基づいて変更される。たとえば、生ＢＥＲが閾値を超えたとき、以前ＭＬＣページとして動作していたフラッシュメモリの部分（ページなど）はその後、（「ｌｏｗｅｒ  ｏｎｌｙ」のページとして当該ページを動作させることなどによって）ＳＬＣページとして動作する。別の例として、フラッシュメモリの部分の寿命の初期の間、当該部分はＭＬＣ部分として動作し、寿命におけるそれ以降の間は、当該部分はＳＬＣ部分として動作する。データを格納するために利用可能なスペースは、当該部分がＳＬＣ部分として動作しているときには（ＭＬＣ部分と比較して）減少するが、しかし利用可能なスペースは、寿命の後期に利用不可能であるとマークされた場合よりも大きくなる。
【００８３】
様々な実施形態において、符号化のための誤り訂正符号の動的選択は、フラッシュ部分動作モードの動的選択と併せて使用される。たとえば、フラッシュメモリのページの初期動作期間の間、ページはＭＬＣページとして動作し、第１の短符号長ＥＣＣを用いて符号化される。これに続く動作期間の間、ページはまだＭＬＣページとして動作されているが、しかし第１の長符号長ＥＣＣにしたがって符号化される。さらに続く動作期間の間、ページはＳＬＣページとして動作し、第２の短符号長ＥＣＣを用いて符号化される。さらに続く動作期間の間、ページはまだＳＬＣページとして動作させられているが、しかし第２の長符号長ＥＣＣにしたがって符号化される。（ページが第１の短符号長ＥＣＣを用いて、次に第１の長符号長ＥＣＣを用いて符号化され、その後第２の短符号長ＥＣＣを用いて、次に第２の長符号長ＥＣＣを用いてＳＬＣページとして動作させられるため）データを格納するために利用可能なスペースは動作期間にわたって減少するが、利用可能なスペースは、ページが利用不可能であるとマークされた場合よりも大きい。
【００８４】
あるいは、フラッシュメモリのページの生ＢＥＲが第１の閾値よりも小さい間、ページはＭＬＣページとして動作し、第１の短符号長ＥＣＣを用いて符号化される。前記生ＢＥＲが第１の閾値を超えた（しかし第２の閾値未満のままである）場合またはそのようなときには、（まだＭＬＣページとして動作したままで）ページは第１の比較的長符号長ＥＣＣを用いて符号化される。前記生ＢＥＲが第２の閾値を超えた（しかし第３の閾値未満のままである）場合またはそのようなときには、ページはさらに長い符号長のＥＣＣを用いて符号化される。前記生ＢＥＲが第３の閾値を超える（しかし第４の閾値未満のままである）場合またはそのようなときには、ページはＳＬＣページとして動作させられ、第２の短符号長ＥＣＣを用いて符号化される。前記生ＢＥＲが第４の閾値を超えた場合またはそのようなときには、ページはＳＬＣページとして動作し続け、第２の比較的長符号長ＥＣＣを用いて符号化される。
【００８５】
いくつかの実施形態において、ページは第１の動作モード（ＭＬＣページなど）で動作し、ページ用にデータを符号化するために使用される誤り訂正符号は、（上述のパラメータのいずれかにしたがうなどして）動的に選択される。動的に選択された誤り訂正符号にしたがって使用される誤り訂正符号情報が閾値を超えた場合には、ページは第２の動作モード（ＳＬＣページなど）に入る。
【００８６】
様々な実施形態および／または使用シナリオにおいて、特定の状況下で、ページは誤り訂正符号選択とは無関係に、ＳＬＣページとして動作する。特定状況の例は、頻繁にアクセス可能なデータ、頻繁に書き込まれるデータ、および／またはより速いスループットの恩恵を受けるデータにページが使用されることを含む。
【００８７】
様々な実施形態および／または使用シナリオにおいて、フラッシュメモリの部分（たとえばページ、ブロック、またはその重複など）は、寿命の後期の長い誤り訂正符号と比較して、フラッシュメモリの寿命の初期にはより短い誤り訂正符号を用いて動作する。このため、より多くの有効量のフラッシュメモリがユーザデータに利用可能となり、したがってフラッシュメモリの寿命はその有効なオーバープロビジョンによって延長される。たとえば、フラッシュメモリ装置は、８９３６（７４４＋２１３）バイトなど、２のべき乗よりもわずかに大きいページサイズを有する。ユーザデータのために保存されるページの比率を、フラッシュメモリ装置寿命の初期において２のべき乗よりも大きくし、寿命の後期において２のべき乗よりも小さくするように変更することで、その寿命にわたって同じ比率を使用する場合と比較して、寿命が延びる。
【００８８】
ＳＳＤコントローラ実装
図２Ａは、フラッシュメモリベースのデータ記憶のための順応ＥＣＣ技術を用いるＳＳＤコントローラを含むＳＳＤの実施形態の、選択された詳細を図示する。ＳＳＤコントローラ２００は、１若しくはそれ以上の外部インターフェース２１０を経由して、ホスト（図示せず）と通信可能に接続されている。様々な実施形態によれば、外部インターフェース２１０は、ＳＡＴＡインターフェース、ＳＡＳインターフェース、ＰＣＩｅインターフェース、ファイバーチャネルインターフェース、イーサネット（登録商標）インターフェース（１０ギガビットイーサネット（登録商標）など）、上記インターフェースの非標準バージョン、カスタムインターフェース、あるいは記憶および／または通信および／または計算装置を相互接続するために使用されるその他いずれかのタイプのインターフェース、のうちの１若しくはそれ以上である。
【００８９】
ＳＳＤコントローラ２００は、１若しくはそれ以上の装置インターフェース２９０を経由して、フラッシュ装置２９２などの１若しくはそれ以上の記憶装置を含む不揮発性メモリ２９９にさらに通信可能に接続されている。様々な実施形態によれば、装置インターフェース２９０は、非同期インターフェース、同期インターフェース、ＤＤＲ同期インターフェース、ＯＮＦＩ２．２互換インターフェースなどのＯＮＦＩ互換インターフェース、トグルモード互換フラッシュ・インターフェース、上記インターフェースの非標準バージョン、カスタムインターフェース、あるいは記憶装置に接続するために使用されるその他いずれかの種類のインターフェース、のうちの１若しくはそれ以上である。
【００９０】
フラッシュ装置２９２は、いくつかの実施形態において、１若しくはそれ以上の個々のフラッシュダイ２９４を有する。フラッシュ装置２９２のうちの特定の１つの種類に応じて、特定のフラッシュ装置２９２の複数のフラッシュダイ２９４は、並行して任意におよび／または選択的にアクセス可能である。フラッシュ装置２９２は、単にＳＳＤコントローラ２００と通信可能に接続されることが可能な１種類を表すに過ぎない。様々な実施形態において、ＳＬＣ  ＮＡＮＤ型フラッシュメモリ、ＭＬＣ  ＮＡＮＤ型フラッシュメモリ、ＮＯＲフラッシュメモリ、読み出し専用メモリ、静的ランダムアクセスメモリ、動的ランダムアクセスメモリ、強磁性メモリ、相変化メモリ、レーストラックメモリ、あるいはその他いずれかのタイプのメモリ装置または記憶媒体など、いずれの種類の記憶装置も使用可能である。
【００９１】
様々な実施形態によれば、装置インターフェース２９０は、バスごとに１若しくはそれ以上のフラッシュ装置２９２を備える１若しくはそれ以上のバス、バスごとに１若しくはそれ以上のフラッシュ装置２９２を備えるバスの１若しくはそれ以上の群であって、群に含まれるバスが全般的に並行してアクセス可能であるもの、または装置インターフェース２９０上へのフラッシュ装置２９２のその他いずれかの構成として、構成される。
【００９２】
引き続き図２Ａにおいて、ＳＳＤコントローラ２００は、ホストインターフェース２１１、データ処理２２１、バッファ２３１、マップ２４１、リサイクラ２５１、ＥＣＣ２６１、装置インターフェース論理２９１、およびＣＰＵ２７１などの、１若しくはそれ以上のモジュールを有する。図２Ａに示される特定のモジュールおよび相互接続は、単に一実施形態を示すに過ぎず、図示されない追加モジュールも含め、モジュールのいくつかまたは全ての多くの配置および相互接続が考えられる。第１の例において、デュアルポーティングを提供するために、２若しくはそれ以上のホストインターフェース２１１がある。第２の例では、いくつかの実施形態において、データ処理２２１および／またはＥＣＣ２６１がバッファ２３１と組み合わせられる。第３の例では、いくつかの実施形態において、ホストインターフェース２１１はバッファ２３１に直接接続されており、データ処理２２１は任意におよび／または選択的に、バッファ２３１に格納されたデータ上で動作する。第４の例では、いくつかの実施形態において、装置インターフェース論理２９１はバッファ２３１に直接接続されており、ＥＣＣ２６１は任意におよび／または選択的に、バッファ２３１に格納されたデータ上で動作する。
【００９３】
ホストインターフェース２１１は、外部インターフェース２１０を経由してコマンドおよび／またはデータを送受信し、いくつかの実施形態において、タグ追跡２１３を通じて個々のコマンドの進捗状況を追跡する。たとえば、コマンドは、アドレス（ＬＢＡなど）および読み出されるデータ量（たとえばセクタなどのＬＢＡ量など）を指定する読み出しコマンドを含む。これに応えてＳＳＤは、読み出しステータスおよび／または読み出しデータを提供する。別の例として、コマンドは、アドレス（ＬＢＡなど）および書き込まれるデータ量（たとえばセクタなどのＬＢＡ量など）を指定する書き込みコマンドを含む。これに応えてＳＳＤは、書き込みステータスを提供し、および／または書き込みデータを要求し、場合により引き続き書き込みステータスを提供する。さらに別の例として、コマンドは、もはや割り当てられる必要のないアドレス（ＬＢＡなど）を指定する割当て解除コマンドを含む。これに応えてＳＳＤは相応にマップを変更し、場合により割当て解除ステータスを提供する。さらに別の例として、コマンドは、超コンデンサテストコマンドまたはデータハードニング成功クエリを含む。これに応えて、ＳＳＤは適切なステータスを提供する。いくつかの実施形態において、ホストインターフェース２１１はＳＡＴＡプロトコルと互換性があり、ＮＣＱコマンドを用いて最高３２までの保留コマンドを有することができ、その各々は０から３１の数字で表される固有のタグを有する。いくつかの実施形態において、タグ追跡２１３は、外部インターフェース２１０経由で受信されたコマンドの外部タグを、ＳＳＤコントローラ２００による処理の間、コマンドを追跡するために使用される内部タグに関連付けることができる。
【００９４】
様々な実施形態によれば、データ処理２２１は任意におよび／または選択的に、バッファ２３１と外部インターフェース２１０との間で送信されるデータの一部または全てを処理し、および／またはデータ処理２２１は任意におよび／または選択的にバッファ２３１に格納されたデータを処理する。いくつかの実施形態において、データ処理２２１は、フォーマット、リフォーマット、トランスコード、およびその他いずれかのデータ処理および／または操作タスクのうちの１若しくはそれ以上を実行するために、１若しくはそれ以上のエンジン２２３を使用する。
【００９５】
バッファ２３１は、外部インターフェース２１０と装置インターフェース論理２９１との間で送受信されるデータを格納する。いくつかの実施形態において、バッファ２３１は付加的に、フラッシュ装置２９２を管理するためにＳＳＤコントローラ２００によって使用される、一部または全てのマップテーブルなどのシステムデータを格納する。様々な実施形態において、バッファ２３１は、データの一次記憶に使用されるメモリ２３７、バッファ２３１に出入りするデータの移動を制御するために使用されるＤＭＡ２３３、およびその他のデータ移動および／または操作機能のうち、１若しくはそれ以上を有する。
【００９６】
様々な実施形態によれば、ＥＣＣ２６１は任意におよび／または選択的に、バッファ２３１と装置インターフェース論理２９１との間で送信されるデータを処理し、および／またはＥＣＣ２６１は任意におよび／または選択的に、バッファ２３１に格納されたデータを処理する。
【００９７】
装置インターフェース論理２９１は、装置インターフェース２９０を通じてフラッシュ装置２９２を制御する。装置インターフェース論理２９１は、フラッシュ装置２９２のプロトコルにしたがって、フラッシュ装置２９２とデータを送受信できる。装置インターフェース論理２９１は、装置インターフェース２９０を通じてフラッシュ装置２９２の制御を選択的に順序づけするためのスケジューリング２９３を含む。たとえば、いくつかの実施形態において、スケジューリング２９３は、フラッシュ装置２９２に対する処理をキューイングことができ、個々のフラッシュ装置２９２（またはフラッシュダイ２９４）が利用可能であれば、フラッシュ装置２９２（またはフラッシュダイ２９４）の各々に対する処理を選択的に送信することができる。
【００９８】
マップ２４１は、外部データアドレスを不揮発性メモリ２９９内の場所にマッピングするためのテーブル２４３を用いて、外部インターフェース２１０上で使用されるデータアドレス指定と装置インターフェース２９０上で使用されるデータアドレス指定との間で変換を行う。たとえば、いくつかの実施形態において、マップ２４１は、外部インターフェース２１０上で使用されるＬＢＡを、テーブル２４３によって提供されるマッピングを通じて、１若しくはそれ以上のフラッシュダイ２９４を対象とするブロックおよび／またはページアドレスに変換する。ドライブ製造または割当て解除以来書き込まれていないＬＢＡについては、ＬＢＡが読み出された場合に戻るべきデフォルト値を指定する。たとえば、割当て解除コマンドを処理するとき、マップは、割当て解除されたＬＢＡに対応する入力がデフォルト値の１つを指定するように変更される。様々な実施形態には、各々が対応するポインタを有する、複数のデフォルト値がある。複数のデフォルト値は、別の割当て解除されたＬＢＡ（第２の範囲のものなど）を別のデフォルト値として読み出しながら、いくつかの割当て解除されたＬＢＡ（第１の範囲のものなど）をあるデフォルト値として読み出すことを可能にする。デフォルト値は、様々な実施形態において、フラッシュメモリ、ハードウェア、ファームウェア、コマンドまたはプリミティブ引数またはパラメータ、プログラマブルレジスタ、またはこれらの様々な組み合わせによって定義される。
【００９９】
いくつかの実施形態において、リサイクラ２５１はガーベジコレクションを行う。たとえばいくつかの実施形態において、フラッシュ装置２９２は、ブロックが書き換え可能となる前に消去されるべきブロックを含む。リサイクラ２５１は、マップ２４１によって保持されているマップを走査することによって、（たとえば割当て解除ではなく割り当てられて）フラッシュ装置２９２のどの部分が活発に使用されているかを判断することができ、フラッシュ装置２９２の未使用の（たとえば割当て解除された）部分を消去することによって、書き込み可能とすることができる。さらなる実施形態において、リサイクラ２５１は、フラッシュ装置２９２のより大きな連続部分を書き込みのために利用可能とするため、フラッシュ装置２９２内に格納されたデータを移動することができる。
【０１００】
ＣＰＵ２７１は、ＳＳＤコントローラ２００の様々な部分を制御する。ＣＰＵ２７１はＣＰＵコア２８１を含む。ＣＰＵコア２８１は、様々な実施形態によれば、１若しくはそれ以上のシングルコアまたはマルチコアプロセッサである。ＣＰＵコア２８１内の個々のプロセッサコアは、いくつかの実施形態において、マルチスレッドである。ＣＰＵコア２８１は、命令および／またはデータキャッシュおよび／またはメモリを含む。たとえば前記命令メモリは、ＣＰＵコア２８１がソフトウェア（場合によりファームウェアと呼ばれる）を実行してＳＳＤコントローラ２００を制御できるようにする命令を含む。いくつかの実施形態において、ＣＰＵコア２８１によって実行されるファームウェアの一部または全ては、フラッシュ装置２９２に格納される。
【０１０１】
様々な実施形態において、ＣＰＵ２７１はさらに、外部インターフェース２１０を経由して受信されたコマンドを、当該コマンドの進行中に追跡および制御するためのコマンド管理２７３と、バッファ２３１の割当ておよび使用を制御するためのバッファ管理２７５と、マップ２４１を制御するための変換管理２７７と、データアドレス指定の一貫性を制御し、外部データアクセスとリサイクルデータアクセスとの間などのデータ競合を回避するための、コヒーレンシ管理２７９と、装置インターフェース論理２９１を管理するための装置管理２８２と、場合によりその他の管理ユニットとを含む。様々な実施形態によれば、ＣＰＵ２７１によって実行される管理機能のいずれかまたは全てが、ハードウェアによって、ソフトウェア（ＣＰＵコア２８１上でまたは外部インターフェース２１０経由で接続されたホスト上で実行されるソフトウェアなど）によって、またはこれらのいずれかの組み合わせによって、制御および／または管理され、あるいは管理機能のいずれもこれらによって制御および／または管理されない。
【０１０２】
いくつかの実施形態において、ＣＰＵ２７１は、他の管理タスク、たとえば性能統計を収集および／または報告することと、ＳＭＡＲＴを実行する工程と、電源シーケンスを制御し、消費電力を管理および／または監視および／または調整することと、電源障害に対応することと、クロック速度を制御および／または監視および／または調整することと、その他の管理タスクとのうちの１若しくはそれ以上を、実行することができる。
【０１０３】
様々な実施形態は、ＳＳＤコントローラ２００と類似であって、ホストインターフェース２１１および／または外部インターフェース２１０の適合などによって様々なコンピューティングホストとの動作互換性がある、コンピューティングホスト・フラッシュメモリ・コントローラを含む。様々なコンピューティングホストは、コンピュータ、ワークステーションコンピュータ、サーバコンピュータ、ストレージサーバ、ＰＣ、ラップトップコンピュータ、ノートブックコンピュータ、ネットブックコンピュータ、ＰＤＡ、メディアプレーヤ、メディアレコーダ、デジタルカメラ、携帯電話ハンドセット、コードレス電話ハンドセット、および電子ゲーム機のうちの１つ若しくはいずれかの組み合わせを含む。
【０１０４】
様々な実施形態において、ＳＳＤコントローラ（またはコンピューティングホスト・フラッシュメモリ・コントローラ）の全てまたはいずれかの部分は、単一のＩＣ、マルチダイＩＣの単一のダイ、マルチダイＩＣの複数のダイ、または複数のＩＣにおいて実現される。たとえば、バッファ２３１はＳＳＤコントローラ２００の別の要素と同じダイで実現される。別の例では、バッファ２３１はＳＳＤコントローラ２００の別の要素とは異なるダイで実現される。
【０１０５】
様々な実施形態において、ＳＳＤコントローラ２００の要素は、全体としてまたは部分的に、図１の様々なハードウェアブロック（または前記ハードウェアブロックによって実行される機能）を実現する。たとえば、ＥＣＣ２６１は、図１の誤り統計収集または追跡、ユニバーサルエンコーダ、ユニバーサルデコーダ、および／または符号ライブラリ・ハードウェアブロックによって実行される１若しくはそれ以上の機能を実現する。別の例として、装置インターフェース論理２９１は図１の制御／インターフェース・ハードウェアブロックによって実行される１若しくはそれ以上の機能を実現し、不揮発性メモリ２９９は図１のフラッシュユニットを実現する。
【０１０６】
図２Ｂは、図２ＡのＳＳＤを含むシステムの別の実施形態の選択された詳細を示す。ＳＳＤ２０１は、装置インターフェース２９０を経由して不揮発性メモリ２９９に接続されたＳＳＤコントローラ２００を含む。ＳＳＤは、外部インターフェース２１０を経由してホスト２０２に接続される。いくつかの実施形態において、ＳＳＤ２０１（またはその変更例）は、ホスト２０２として動作するイニシエータに接続されているＳＡＳドライブまたはＳＡＴＡドライブに対応する。
【０１０７】
図２Ｃは、図２ＡのＳＳＤを含むシステムの別の実施形態の選択された詳細を示す。図２Ｂのように、ＳＳＤ２０１は、装置インターフェース２９０を経由して不揮発性メモリ２９９に接続されたＳＳＤコントローラ２００を含む。ＳＳＤは外部インターフェース２１０を通じてホスト２０２に接続され、前記外部インターフェース２１０は中間コントローラ２０３に、そして中間インターフェース２０４を通じてホスト２０２に接続される。様々な実施形態において、ＳＳＤコントローラ２００は、ＲＡＩＤコントローラなど、中間レベルの別のコントローラの１若しくはそれ以上を経由して、前記ホストに接続される。いくつかの実施形態において、ＳＳＤ２０１（またはその変更例）はＳＡＳドライブまたはＳＡＴＡドライブに対応し、中間コントローラ２０３はその後イニシエータに接続されるエキスパンダに対応するか、あるいは中間コントローラ２０３はエキスパンダを経由してイニシエータに間接的に接続されるブリッジに対応する。
【０１０８】
様々な実施形態において、ＳＳＤコントローラおよび／またはコンピューティングホスト・フラッシュメモリ・コントローラは、１若しくはそれ以上の不揮発性メモリと組み合わせて、ＵＳＢ記憶構成要素、ＣＦ記憶構成要素、ＭＭＣ記憶構成要素、ＳＤ記憶構成要素、メモリスティック記憶構成要素、およびｘＤピクチャカード記憶構成要素などの不揮発性記憶構成要素として実現される。
【０１０９】
様々な実施形態において、ＳＳＤコントローラ（またはコンピューティングホスト・フラッシュメモリ・コントローラ）、またはその機能は、コントローラが接続されたホストにおいて実現される（たとえば図２Ｃのホスト２０２など）。様々な実施形態において、ＳＳＤコントローラ（またはコンピューティングホスト・フラッシュメモリ・コントローラ）の全てまたはいずれかの部分、あるいはその機能は、ハードウェア（たとえば論理回路）、ソフトウェア（たとえばドライバプログラム）、またはこれらのいずれかの組み合わせを通じて実現される。たとえば、ＥＣＣユニット（図２ＡのＥＣＣ２６１と類似のものなど）の機能性、またはこれに関連付けられた機能性は、ＳＳＤコントローラ内で、部分的にソフトウェアを通じて、また部分的にハードウェアを通じて、実現される。別の例として、リサイクラユニット（図２Ａのリサイクラ２５１と類似のものなど）の機能性、またはこれに関連付けられた機能性は、コンピューティングホスト・フラッシュメモリ・コントローラ内で、部分的にソフトウェアを通じて、また部分的にハードウェアを通じて、実現される。
【０１１０】
実施技術例
いくつかの実施形態において、たとえば図１のハードウェアブロック、コンピューティングホスト・フラッシュメモリ・コントローラおよび／またはＳＳＤコントローラ（図２ＡのＳＳＤコントローラ２００など）、など、システムが実現するするフラッシュメモリベースのデータ記憶のための順応ＥＣＣ技術によって実行される動作の全てまたは一部、およびプロセッサ、マイクロプロセッサ、システムオンチップ、特定用途向け集積回路、ハードウェアアクセラレータ、または上記動作の全てまたは一部を提供するその他の回路の様々な組み合わせは、コンピュータシステムによる処理と互換性のある仕様によって指定される。前記仕様は、ハードウェア記述言語、回路記述、ネットリスト記述、マスク記述、またはレイアウト記述など、様々な記述に準拠している。記述の例は、Ｖｅｒｉｌｏｇ、ＶＨＤＬ、ＳＰＩＣＥ、ＳＰＩＣＥ、ＰＳｐｉｃｅなどのＳＰＩＣＥの変更例、ＩＢＩＳ、ＬＥＦ、ＤＥＦ、ＧＤＳ−ＩＩ、ＯＡＳＩＳ、またはその他の記述を含む。様々な実施形態において、前記処理は、１若しくはそれ以上の集積回路への搭載に適した論理および／または回路を生成、検証、または指定するための解釈、コンパイル、シミュレーション、および合成の、いずれかの組み合わせを含む。各集積回路は、様々な実施形態によれば、様々な技術にしたがって設計可能および／または製造可能である。前記技術は、プログラマブル技術（フィールドまたはマスク・プログラマブル・ゲートアレイ集積回路など）、セミカスタム技術（完全または部分的セルベース集積回路など）、およびフルカスタム技術（実質的に特化された集積回路など）、これらのいずれかの組み合わせ、あるいは集積回路の設計および／または製造と互換性のあるその他いずれかの技術を含む。
【０１１１】
いくつかの実施形態において、命令セットを格納しているコンピュータ可読媒体によって記述されるような動作の全てまたは一部の様々な組み合わせは、１若しくはそれ以上のプログラム命令の実行および／または解釈によって、１若しくはそれ以上のソースおよび／またはスクリプト言語の解釈および／またはコンパイルによって、あるいは言語ステートメントのプログラミングおよび／または記述において表現される情報をコンパイル、翻訳、および／または解釈することによって生成されるバイナリ命令の実行によって、実行される。ステートメントは、いずれの標準的なプログラミングまたは記述言語とも互換性がある（Ｃ、Ｃ＋＋、Ｆｏｒｔｒａｎ、Ｐａｓｃａｌ、Ａｄａ、Ｊａｖａ（登録商標）、ＶＢｓｃｒｉｐｔ、およびＳｈｅｌｌなど）。前記プログラム命令、前記言語ステートメント、または前記バイナリ命令のうちの１若しくはそれ以上は、任意に１若しくはそれ以上のコンピュータ可読媒体要素に格納される。様々な実施形態において、前記プログラム命令のいくつか、全て、または様々な部分は、１若しくはそれ以上の機能、ルーチン、サブルーチン、インラインルーチン、プロシージャ、マクロ、またはその部分として、実現される。
【０１１２】
結論
本文および図面を作成する利便性のみのため、本明細書において特定の選択がなされてきたが、別途指示のない限り、前記選択は本質的に、記載される実施形態の構造または動作に関する付加的な情報を伝達するものとして解釈されるべきではない。前記選択の例は、図の参照番号に使用される指定の具体的な構成または割当て、および実施形態の特徴および要素を識別および参照するために使用される要素識別子（付記また参照番号など）の具体的な構成または割当てを含む。
【０１１３】
「含む」または「含んでいる」という語は、非限定的な範囲の論理セットを記述する抽象概念として科解釈されるように特に意図されており、明確に「内に（ｗｉｔｈｉｎ）」という語が続くのでない限り、物理的な包含を伝えるように意図されるものではない。
【０１１４】
上記の実施形態は、記述および理解の明確さを目的としてある程度詳細に記載されてきたが、本発明は記載された詳細に限定されるものではない。本発明には多くの実施形態がある。開示された実施形態は例示的であって、限定的ではない。
【０１１５】
構造、構成、および使用については前記説明と一致する多くの変更例が可能であり、本発明の特許請求の範囲に含まれることは、理解されるだろう。たとえば、相互接続および機能単位のビット幅、クロック速度、および使用される技術の種類は、各構成要素ブロックにおける様々な実施形態に応じて異なる。相互接続および論理に付与される名称は単なる例示に過ぎず、記載される概念を限定するものとして解釈されるべきではない。フローチャートおよびフロー図の工程、アクション、および機能要素の順序および構成は、様々な実施形態に応じて異なる。また、別途具体的に明記されない限り、指定された値の範囲、使用される最大値および最小値、またはその他特定の仕様（フラッシュメモリ技術の種類、ならびにレジスタおよびバッファの入力または段の数など）は、単に記載される実施形態のものに過ぎず、実施技術における改良および変化をたどると期待され、限定として解釈されるべきではない。
【０１１６】
様々な構成要素、サブシステム、動作、機能、ルーチン、サブルーチン、インラインルーチン、プロシージャ、マクロ、またはその部分を実行するために記載された技術の代わりに、当該技術分野において周知の、機能的に同等の技術が採用されてもよい。また、実施形態の多くの機能態様は、実施形態に応じた設計上の制約と、処理の高速化（以前はハードウェアに含まれていた機能のソフトウェアへの移行を促進する）および集積密度の向上（以前はソフトウェアに含まれていた機能のハードウェアへの移行を促進する）の技術トレンドとに応じて、ハードウェア（すなわち一般的には専用回路）またはソフトウェア（すなわち、プログラムされたコントローラまたはプロセッサの何らかの様式による）のいずれかにおいて、選択的に実現可能であることは理解されるべきである。様々な実施形態における具体的な変更例は、これに限定されるものではないが、パーティショニングの違い、異なるフォームファクタおよび構成、異なるオペレーティングシステムおよび別のシステムソフトウェアの使用、異なるインターフェース規格、ネットワークプロトコル、または通林リンクの使用、ならびに特定用途の固有のエンジニアリングおよびビジネス上の制約にしたがって本明細書に記載される概念を実現する際に予想されるその他の変更例を含む。
【０１１７】
以上の実施形態は、記載される実施形態の多くの態様の最小限の実現に必要とされるものをはるかに超えた、詳細および環境的文脈とともに記載されてきた。いくつかの実施形態は、残りの要素間での基本的な連係を変更することなく、開示された構成要素または特徴を省略していることを、当業者は認識するだろう。したがって、開示された詳細の多くは、記載された実施形態の様々な態様を実現するために必要とされるものではないことが理解される。残りの要素が先行技術のものと識別可能である限り、省略された構成要素および特徴は、本明細書に記載される概念に対して限定するものではない。
【０１１８】
設計におけるこのような変更例の全ては、記載された実施形態によって伝えられる教示に対する実質的な変更とはならない。また、本明細書に記載された実施形態は、他のコンピューティングおよびネットワーキング用途への幅広い適用性を有しており、記載された実施形態の特定の用途または業界に限定されるものではないことも、理解される。したがって本発明は、本発明の特許請求の範囲に含まれる全ての可能な変更形態および変形形態を含むと解釈されるべきである。
【符号の説明】
【０１１９】
１００...システム
１１０...書き込み記憶データパス
１２０...ユニバーサルエンコーダ
１３０...制御／インターフェース
１４０...フラッシュユニット
１５０...読み出し記憶データパス
１６０...ユニバーサルデコーダ
１７０...符号ライブラリ
１８０...誤り統計収集または追跡
２００...ＳＳＤコントローラ
２０１...ＳＳＤ
２０２...ホスト
２０３...中間コントローラ
２０４...中間インターフェース
２１０...外部インターフェース
２１１...ホストインターフェース
２１３...タグ追跡
２２１...データ処理
２２３...エンジン
２３１...バッファ
２３３...ＤＭＡ
２３７...メモリ
２４１...マップ
２４３...テーブル
２５１...リサイクラ
２６１...ＥＣＣ
２７１...ＣＰＵ
２７３...コマンド管理
２７５...バッファ管理
２７７...変換管理
２７９...コヒーレンシ管理
２８１...ＣＰＵコア
２８２...装置管理
２９０...装置インターフェース
２９１...装置インターフェース論理
２９２...フラッシュ装置
２９３...スケジューリング
２９４...フラッシュダイ
２９９...不揮発性メモリ
【図１】
2013542533.tif 000005
【図２Ａ】
2013542533.tif 000006
【図２Ｂ】
2013542533.tif 000007
【図２Ｃ】
2013542533.tif 000008
【国際調査報告】
2013542533.tif 000009
2013542533.tif 000010