(57)【特許請求の範囲】
【請求項１】
読み出し／書き込み動作において少なくとも１つの不揮発性メモリデバイスにアクセスする際に用いられる読み出し／書き込み配置構成であって、
前記不揮発性メモリデバイスは複数のメモリセルによって構成され、前記複数のメモリセルは１組のページとして編成され、前記１組のページは、物理的かつ逐次的にアドレス指定可能であり、各ページは、前記１組のページのうちの前記ページの連続するページ間にページ境界が規定されるようなページ長さを有し、
前記読み出し／書き込み配置構成は、データブロック群を保存およびアクセスするように構成された制御配置構成を含み、前記データブロック群は、連続する一連の前記ページにおける所与の書き込み動作と関連付けられ、これにより、前記一連のページのうちの少なくとも最初のページが充填されるように、かつ、前記データブロック群の各データブロックが前記ページ長さとは異なるブロック長さを含むようになされており、
前記制御配置構成の動的変換テーブルが、前記データブロック群の各データブロックに対する論理アドレス／物理アドレス変換を含み、前記論理アドレスは前記データブロック群のうちの或るデータブロックと関連付けられ、前記物理アドレスは前記一連のページのうちの或るページと関連付けられている、読み出し／書き込み配置構成と、
前記不揮発性メモリデバイスを複数有するとともに、前記複数の不揮発性メモリデバイスに複数のメディアポートを介して接続されたデータ経路及び制御部であって、前記複数のメディアポートへのデータトラフィック及び前記複数のメディアポートからのデータトラフィックを管理・調整するデータ経路及び制御部と、
を有するモジュールと、
前記モジュールとデータ通信するコントローラと、
を含む、メモリシステム。
【請求項２】
前記制御配置構成は、前記データブロックのうちの少なくとも１つを、任意のページ境界からオフセットされた位置に保存するように構成される、請求項１に記載のメモリシステム。
【請求項３】
前記一連のページは、２つ以上のページからなる初期群と、最終ページとを含み、前記制御配置構成は、前記データブロック群に基づいて、少なくとも前記初期群のページのうちの各ページを充填するように構成される、請求項１に記載のメモリシステム。
【請求項４】
前記制御配置構成は、前記初期群のページのうちの少なくとも特定のページを保存するように構成され、これにより、前記特定のページが、第１のデータブロックの少なくとも最終部分および第２のデータブロックの少なくとも初期部分を含むようになされ、これにより、前記特定のページが、前記第１のデータブロックと前記第２のデータブロックとの間の境界を含むようになされている、請求項３に記載のメモリシステム。
【請求項５】
前記データブロック群を保存するための前記連続する一連のページを特定するためのガーベジコレクション機能を含む、請求項１に記載のメモリシステム。
【請求項６】
前記モジュールは、少なくとも前記不揮発性メモリデバイスに対する変換層を維持し、かつ、前記変換層中に前記オフセットを指定する、ように構成される、請求項２に記載のメモリシステム。
【請求項７】
前記変換層は前記コントローラによって方向付けられ、前記コントローラは、パラメータおよびコマンドのうちの少なくとも一方を前記モジュールに提供する、請求項６に記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性メモリ（例えば、ソリッドステートドライブ（「ＳＳＤ」）および他の記憶装置）を用いたメモリシステムの分野に主に関し、より詳細には、ブロックオリエンテッド不揮発性メモリにアクセスするための制御配置構成および方法に関する。
【背景技術】
【０００２】
従来技術のソリッドステートドライブは典型的には、コントローラを含む。コントローラは、標準的ホストデバイスおよび複数のフラッシュメモリデバイスとインターフェースをとり得る。これらのフラッシュメモリデバイスはそれぞれ、概してメモリダイの形態をとる。コントローラとフラッシュメモリデバイスとの間の接続は典型的には、フラッシュオリエンテッドインターフェースの形態をとり、各メモリデバイスは、フラッシュオリエンテッドインターフェースへと個別に接続される。コントローラは、複数のフラッシュオリエンテッドインターフェースを持ち得る。これらのインターフェースはそれぞれ、複数のメモリデバイスへと接続される。出願人は、この従来技術構成の場合、特に大容量のソリッドステートドライブの場合において複数の不利点があることを認識する。例えば、コントローラは、多数の個々のメモリデバイスを制御する必要がある。別の例として、コントローラ上に必要な信号接続点数が、ドライブの容量に比例して増加する。さらに別の例において、コントローラは、管理機能（例えば、オーバーヘッド機能（例えば、ウェアレベリング）を担当し、そのため、コントローラとメモリデバイスとの間のインターフェースが、これらの機能に関連するトラフィックの負担を負う。さらに別の例として、多数のメモリデバイスの試験および監視をコントローラによって行うことは、複雑なタスクである。
【０００３】
出願人はまた、従来技術における不揮発性メモリをブロックオリエンテッド不揮発性メモリについて用いた場合、関連して懸念が発生することを認識している。ブロックオリエンテッド不揮発性メモリへのアクセスについての従来技術の一般的アプローチの場合、ユーザデータおよび付随する追加情報を高精度に物理ページ上へと割り当てる方法が用いられることが理解されるべきである。本議論の目的のため、「ブロックオリエンテッド」という用語は、ページベースのメモリの利用に関連する。ページベースのメモリは、ユーザデータブロックを用いることにより、用いられる。これらのユーザデータブロックの長さは、概してページ長さに等しい。さらに説明するように、ブロックオリエンテッドメモリについて、いくつかのページは、１ページ長さよりも短いユーザデータブロックに基づいて部分的に非使用である場合があるが、ユーザデータブロックは、ページ長さよりも長くない。非限定的な例により、ＮＡＮＤフラッシュは典型的には、この種のブロックオリエンテッドメモリとなるように構成される。そのため、このようにブロックオリエンテッドメモリにおける割当を非柔軟に行うことが、記憶情報と各物理ページを含む記憶素子数との間に正確な対応を発生させ、シングルビットパーセルメモリ（ＳＢＣ）およびマルチビットパーセルメモリ（ＭＢＣ）双方において業界において慣習となっている。
【０００４】
出願人は、ユーザデータを特定のメモリデバイス中のページ単位に整合させる場合、このようなアプローチは柔軟性に欠けることをさらに認識している。物理ページサイズは、メモリの設計パラメータであり、変更することができない。物理ページ内の記憶素子数と、アプリケーションにおいてブロック毎に必要な素子数との間に不整合が発生した場合、ペナルティが発生してしまう。このようなペナルティは、ＥＣＣ要求を満たさない不十分な素子の形態をとり得、その結果、アプリケーションの信頼性低下に繋がる場合もあるし、あるいは、このようなペナルティは、各物理ページ内に必要な素子数を超える素子数となり得、その結果記憶が不十分になる場合もある。そのため、不揮発性メモリデバイス（例えば、ＮＡＮＤフラッシュ）の設計者にとって、メモリ製造の前に行われる必要なページサイズの予測する作業が困難になる。そのため、当該メモリが用いられるアプリケーションのうち少なくとも一部に対して、所与のページサイズが不適切になることがほとんど回避できなくなる。
【０００５】
上記の関連技術およびその制約の例は例示的なものであり、排他的なものではない。当業者であれば、本明細書および図面を読めば、関連分野の他の制約を理解する。
【０００６】
図面中、例示的実施形態を示す。本明細書中に開示される実施形態および図は例示的なものであり、限定的なものではないことが意図される。
【図面の簡単な説明】
【０００７】
【図１】本開示の実施形態によるＳＳＤを示すブロック図である。ＳＳＤは、システム全体の一部として図示されている。
【図２】本開示の実施形態によるＳＳＤのさらなる詳細を示すブロック図である。
【図３】ＳＳＤ（例えば、図１および／または図２のＳＳＤ）内において用いられるモジュールの実施形態のブロック図である。
【図４】モジュール（例えば、図３のモジュール）と共に用いられるモジュールインターフェースの実施形態のブロック図である。
【図５】モジュールのメモリデバイスを模式的に示すブロック図であり、モジュールは、これらのメモリデバイス上のメモリ部の配置構成と共に用いられる。
【図６】モジュール（例えば、図３のモジュール）において用いることが可能な機能エンジンの実施形態のブロック図である。
【図７】図６の機能エンジンを用いて行うことが可能なウェアレベリング機能の実施形態のフロー図である。
【図８】図６の機能エンジンを用いて行うことが可能なガーベジコレクション機能の実施形態のフロー図である。
【図９】図６の機能エンジンを用いて行うことが可能なビット密度構成機能の実施形態のフロー図である。
【図１０】図６の機能エンジンを用いて行うことが可能なＦＴＬ（フラッシュ変換層）機能の実施形態のフロー図である。
【図１１】図６の機能エンジンを用いて行うことが可能な読出動作の実施形態のフロー図である。
【図１２】図６の機能エンジンを用いて行うことが可能な書込動作の実施形態のフロー図である。
【図１３】図６の機能エンジンを用いて行うことが可能な消去機能の実施形態のフロー図である。
【図１４】物理ページの長さに相対して異なる長さを有するユーザデータブロックの模式図である。
【図１５】１組のユーザデータブロックを保存する１組の連続する物理ページのブロック図である。これらのユーザデータブロックそれぞれの長さは、１つの物理ページの長さよりも短い。
【図１６】１組のユーザデータブロックを保存する１組の連続する物理ページのブロック図である。これらのユーザデータブロックそれぞれの長さは、１つの物理ページの長さよりも長い。
【図１７】ユーザデータブロックの保存／書込方法の実施形態のフロー図である。この方法は、図１５および図１６の文脈に記載されるデータ構造を達成する。図１５および図１６の文脈において、ブロック長さおよびページ長さは異なり得る。
【図１８】ブロック長さおよびページ長さが異なり得る図１５および図１６の文脈において上述したデータ構造からユーザデータブロックらを読み出すための方法の実施形態を示す別のフロー図である。
【発明を実施するための形態】
【０００８】
以下の記載は、当業者が本発明を作製および利用できるようにするためのものであり、特許出願およびその要求の文脈において記載される。当業者であれば、記載の実施形態において、多様な改変例を想起し、本明細書中に教示される一般的原理は、他の実施形態に適用され得る。よって、本発明は、記載の実施形態に限定されるものではなく、本明細書中に記載の原理および特徴ならびに添付の特許請求の範囲中に記載のその改変例および均等例に基づいた最大の範囲と一致する。図面は縮尺通りではなく、対象となる特徴を最良に例示するために模式的に示したものである点に留意されたい。記述用語は、図面中に記載される多様な図面について読者の理解の向上のために用いられるものであり、限定的なものではない。
【０００９】
以下、図面を参照する。図面中、多様な図面中、類似の要素は、類似の構成要素を指し得る。図１は、本開示の実施形態によるソリッドステートドライブ（ＳＳＤ）１０のブロック図である。ソリッドステートドライブ（ＳＳＤ）１０は、システム１２全体の一部を形成する。システム１２において、ソリッドステートドライブは、ホスト２０とインターフェースをとる。図２の例示的実施形態において、ＳＳＤ１０の記憶容量は、合計２０個のモジュールによって得られる。これらのモジュールのうちいくつかを参照番号３０によって示す。本明細書中の教示範囲内において、任意の適切な数のモジュールを用いることが可能である。各モジュールは、不揮発性メモリ（「ＮＶＭ」）部（例えば、複数のＮＶＭデバイス（例えば、複数のＮＶＭダイ））を含む。不揮発性メモリはフラッシュメモリであり得るが、任意の適切なメモリ技術を用いることが可能である（例えば、相変化メモリ（「ＰＣＭ」）および他の形態の可変抵抗メモリ）。図１のモジュール配置構成は、「スペア」モジュール（例えば、合計モジュール数のうち一部の利用の損失を確保するためのもの）の利用をサポートすることが理解されるべきである。ＳＳＤの目標合計容量が１テラバイト（１ＴＢ）である場合、１６個のモジュールそれぞれの容量を６４ギガバイト（６４ＧＢ）にすることで、この目標を満足させることができる。よって、合計２０個のモジュールを用意した場合、５個のモジュールが余分になり、スペアとして用いることができる。単一のモジュール中に複数のＮＶＭデバイスを含めることにより、読出動作および書込動作時におけるコントローラに直接接続される個々のメモリデバイス数を、メモリモジュール内のＮＶＭダイ数の倍数だけ低減させることが可能になる。
【００１０】
理解されるように、モジュールとの通信は、モジュールインターフェースを介して提供される。モジュールインターフェースは、ポイントツーポイントインターフェースであり得、モジュールインターフェースの独立インスタンスをシステム内の各モジュールのために設けることができる。これは、低モジュールピンカウントに起因して実際的であり得る。このような低ピンカウントにより、ＡＳＩＣ形態のＳＳＤコントローラの従来のパッドリング制約内において多数のモジュールインターフェースポートを得ることが可能になり、各ポートにより、１つのモジュールに対するインターフェースが得られる。モジュールおよびＳＳＤコントローラポートのポイントツーポイント相互接続により、特定のモジュールインターフェースのリソースをＳＳＤコントローラと当該特定のモジュールとの間のトランザクションへ専用に割り当てることが可能になる。主要コントローラと各モジュールとの間のモジュールインターフェースによって確立された相互接続が専用のものである場合、主要コントローラとモジュールとの間のトランザクションは、インターフェースのリソースを他のモジュールと共有する必要が無い。そのため、これらのトランザクションを各モジュールインターフェースの全帯域幅において実行することが可能になる。また、接続が１つのモジュールの専用である場合、インターフェースが１つよりも多くのモジュールへ接続された場合に必要となるアービトレーションおよびリソース共有を回避することが可能になる。その結果、トランザクション数およびインターフェースを介して転送されるデータ量双方において性能が向上するため、システム性能の向上が可能になる。
【００１１】
再度図１を参照して、コントローラ４０は、各モジュールのためのモジュールインターフェース４２を介して各モジュール３０とインターフェースをとる（モジュール３０のうちいくつかを参照番号を用いて示す）。コントローラは、適切な高レベルホストインターフェース４４を介してホスト２０とインターフェースをとる。高レベルホストインターフェース４４は、例えばメモリシステムをコンピュータへ取り付けるための多様なインターフェースのうち任意のものでよい。例示目的のため、ホストインターフェース４４は、何らかのシステム１２のためのＳＡＴＡ（シリアルＡＴＡ）インターフェースであり得る。他のシステム１２において、ＳＡＳ（直列に取り付けられたＳＣＳＩ）インターフェースを用いてもよいし、あるいはインターフェースをバックプレーンオリエンテッドとしてもよい（例えば、ＰＣＩエクスプレスを用いたもの）。この点について、特定の最終用途に合わせて、適切な形態のホストインターフェースを選択することができる。
【００１２】
例えばＳＳＤシステム１０全体の性能を向上させる目的のために、キャッシュ４６を設けることができる。キャッシュは、任意の適切なメモリデバイス（例えば、ＳＤＲＡＭ、ＰＣＭ、高速フラッシュ（例えば、ＳＢＣ））を取り付けることにより、実現することができる。ＳＳＤコントローラ４０は、１つ以上のキャッシュデバイスとの通信のための専用インターフェースを持ち得る。特定のＳＳＤ設計に合わせて選択されたキャッシュ技術の特性に応じて、このインターフェースを当該キャッシュ専用としてもよい。キャッシュデバイス４６がモジュールである場合、キャッシュインターフェースは、ＮＶＭモジュールインターフェースと同一または類似のものでよい。
【００１３】
コントローラ４０と従来技術ＳＳＤのためのコントローラとを比較した場合、コントローラ４０はより簡略化されたものとみなすことができる。システム１０内のモジュールは、以下に記載する詳細な管理機能によって給電可能であるため、ＳＳＤコントローラは、従来技術コントローラによって行われることが多かった多数の機能を負担しなくてよくなる。オフロードされる機能の非限定的な例は、少なくとも以下を含み得る：（１）ウェアレベリング、（２）ガーベジコレクション、（３）論理／物理アドレス変換、（４）物理ページ／論理ブロック抽象化、（５）ＥＣＣ機能および（６）メモリ調整および信号処理。機能のうち多くは、高速ＣＰＵおよび従来技術ＳＳＤコントローラにおける他の支援動作（例えば、上述したもの）を必要とするものを低減または除去することが可能であるため、ＳＳＤコントローラの帯域幅のうちより多くを、ホストと接続先モジュールとの間のユーザデータ転送に専用に用いることが可能になる。
【００１４】
ここで図２を図１と共に参照して、図２は、コントローラ４０の実施形態を示すブロック図である。コントローラは、複数のコントローラモジュールポート１００を含む。これらのコントローラモジュールポート１００はそれぞれ、複数の記憶モジュール３０（図１）との通信のためのモジュールインターフェース４２を提供する。各コントローラモジュールポート１００は、関連付けられたインターフェース信号接続部を１組提供する。これらのインターフェース信号接続部は、コントローラモジュールポート間において同じである。非限定的な例として、コントローラ４０は、図１に示すように、２０個の個々のモジュールインターフェース４２を介して２０個のモジュール３０と通信することができる。ＳＳＤコントローラ中のコントローラモジュールポートの数は、変動し得る。所与のＳＳＤコントローラ中において実装される特定の数のコントローラモジュールポートは、ＳＳＤコントローラそのものを含む設計事項ならびにＳＳＤシステムに依存し得る。これらの設計事項は、ＳＳＤの所望の記憶容量、所望の性能および所望のコストを含み得る。コントローラモジュールインターフェースの恩恵は、特定の実施形態のＳＳＤコントローラにおいて実装されるコントローラモジュールポート数に関係無く、提供される。
【００１５】
主要コントローラ４０の説明を続ける。データ経路および制御論理部１２０は、各活性コントローラモジュールポート１００およびＳＳＤコントローラの残りの部分との間で、双方向データ経路（例えば、バス接続部１２２（そのうちいくつかを参照番号によって示す））を用いてデータ転送を行うように構成される。制御バス１２４は、マイクロプロセッサ１３０とレジスタ１３４との間のデータ経路を提供することができる。マイクロプロセッサ１３０は、メモリ１３２中に保存されたコードを用いて動作する。レジスタ１３４は、ＳＳＤコントローラを構成する論理ブロック中に含まれる。各コントローラモジュールポートがバス１２４へと接続されることで、マイクロプロセッサ１３０による制御が促進される。よって、マイクロプロセッサ１３０は、各モジュールポート中のレジスタ１３６からの読み出しおよび各モジュールポート中のレジスタ１３６への書き込みを行うことができ、このような読み出しおよび書き込みを行うことで、各コントローラモジュールポートの動作（例えば、設定、起動、停止および監視）を管理することができる。データバッファ部１４０は、ＳＳＤコントローラ中を流れるデータのブロックをホストインターフェースポート１４４を通じてホストへ転送されるべき読み出しデータとしてまたはコントローラモジュールポート１００のうちの１つを通じてモジュールへと転送されるべき書き込みデータとして中継するためのメモリを提供することができる。双方向データ経路１４６（そのうちいくつかを参照番号を用いて示す）は、データ経路および制御部１２０と、データバッファ部１４０との間に設けられ得る。双方向データ経路１４６の数とコントローラモジュールポート１００の数との間の一対一の対応は不要であることが理解されるべきである。この点について、充分なデータ帯域幅全体を確保するために、充分な数の別個の双方向データ経路１４６を設けることができる。すなわち、双方向データ経路１４６の合計数は、コントローラモジュールポートの合計数未満であり、モジュールポートの合計数に等しくあるか、またはコントローラモジュールポートの合計数を超え得る。
【００１６】
メモリ１３２は、マイクロプロセッサ１３０によってアクセス可能であり、これにより、ＳＳＤコントローラを管理する機能（例えば、ＳＳＤコントローラの通常動作時において発生し得るようなエラーおよび例外（例えば、モジュールのうち１つ以上から受信されたデータ中のエラーに起因するもの、ＳＳＤコントローラ中の例外条件に起因するもの（例えば、リソース矛盾、バッファメモリエラー）、および他の通常動作時において発生する予期しない問題に起因するもの）が行われる。
【００１７】
高速データ経路（例えば、バス１５０）を用いて、バッファ部１４０とホストインターフェースポート１４４との間のデータ転送を行うことができる。このバスは、例えば、以下の項目についてＳＳＤシステム要求をサポートする任意の適切な設計であればよい：ホストインターフェースを通じた転送速度、ホストインターフェースを通じて発行されたコマンドとこれらのコマンドに対する応答との間の待ち時間、および複数のコマンドの同時実行をサポートする並行度の集計。ホストインターフェースポート１４４は、制御バス１２４を介してマイクロプロセッサ１３０と通信して、マイクロプロセッサがホストインターフェース４４を管理（例えば、制御および／または監視）することが可能になる。図２中においては単一のホストインターフェース４４のみを図示しているが、１つよりも多くのホストインターフェースが所与のＳＳＤコントローラ実施形態中において存在することができる。複数のホストインターフェースを用いた実施形態において、ホストインターフェースの各インスタンスは、同一種類のインターフェース（複数のＳＡＳポートの場合と同様の）であってもよいし、あるいは異なる種類のインスタンス（例えば、ＳＡＳ、ＳＡＴＡおよびＰＣＩエクスプレスの一定の組み合わせ）であってもよい。
【００１８】
ＳＳＤコントローラインターフェース４４へのホストは、ホストインターフェースポート１４４によって提供され得る。このようなポート１４４は、ホストインターフェース定義に必要な全動作を行うように構成された信号接続部および／または回路を含む。ＳＡＳまたはＳＡＴＡインターフェースがホストインターフェースポート１４４によって提供された場合、物理的接続は、最少で４つの信号接続部によって構成される。これら４つの信号接続部は、２つの差動対として構成される。他の実施形態において、例えばＳＡＳが用いられる場合および第２のインターフェース信号接続部が用いられる場合、さらなる差動信号対が存在し得る。ＳＡＳの場合、１つよりも多くのホストポートが用いられ得る。このような実施形態において、１組ではなく２組の物理的コネクタが存在し得る。
【００１９】
ここで図３を参照して、図３は、本開示の実施形態に従って生成されたモジュール３０（図１も参照）を示すブロック図である。モジュールは、複数のメモリデバイス１７０を含み得る。メモリデバイスの合計数は、１〜８以上の範囲で変動し得、メモリデバイスは、任意の適切な技術に基づき得る。いくつかの実施形態において、メモリ技術はＮＡＮＤフラッシュである。モジュールのメモリ全体を構成するデバイスは、標準的な市販の部品であってもよいし、あるいはモジュール単位でカスタマイズされたデバイスであってもよい。例えば、取り付けられたメモリデバイスの同時動作の増加および／またはＳＳＤ中のデータスループットの増加のために複数のメモリデバイス１７０をメディアポート１７６に取り付けることができる。図３に示すように、いくつかの実施形態において、各メディアポート１７６は、メモリデバイス群に対してインターフェースを提供することができる。
【００２０】
さらに図３を参照して、各メディアポート１７６は、メモリデバイスインターフェース１８０を提供する。メモリデバイスインターフェース１８０を用いて、複数のメモリデバイスと通信することができる。さらに、各モジュール３０は、複数のメディアポート１７６を含み得る。いくつかの実施形態において、メディアポートの数は、２個または４個である。各メディアポート１７６は、標準的ＮＡＮＤフラッシュデバイスと通信するための業界標準のインターフェースを提供し得る（例えば、ＯＮＦＩ（オープンＮＡＮＤフラッシュインターフェース））。あるいは、各メディアポートは、カスタマイズされたメモリデバイスとの通信のためのカスタムインターフェースを提供し得る。上述したように、１つ以上のメモリデバイス１７０は、各メモリデバイスインターフェース１８０を介して通信し得る。いくつかの実施形態において、数は、１〜４の範囲で変化し得る。さらに、各メディアポートに同一数のメモリデバイスを接続すべき要求は無い。さらに、いくつかの場合において、特定のメディアポートに対し、メモリデバイスがまったく接続されていない場合もある。このような状況は、例えば、特定のモジュール配置構成において利用可能なメディアポート全てが用いられるわけではない場合において発生し得る。
【００２１】
データ経路および制御部１９０は、モジュール３０の一部を形成し、多様なシステムリソースをメディアポートそのものと共に用いて複数のメディアポートへのデータトラフィックおよび複数のメディアポートからのデータトラフィックを管理（例えば、調整）する様態で、メディアポート１７６へのデータトラフィックおよびメディアポート１７６からのデータトラフィックを方向付けるように構成され得る。複数のデータ経路は、各メディアポート１７６と残りのモジュールとの間のデータフロー中においてサポートされ得る。デコーダ読み出しデータ経路２００は、デコーダ２０２へのデータ経路と、データバッファ部２１０への直接データ経路２０４と、読み出し論理２１２へのデータ経路と、少なくともデータ経路および制御部１９０中を流れている（読み出しモードにおける）１つのメディアポートから（書き込みモードにおける）別のメディアポートへのデータ経路とを含む。書き込みデータ経路は、エンコーダ２２０からのデータ経路と、データバッファ部２１０からの直接データ経路２３０と、書き込み論理２２２からのデータ経路とを含み得る。全てではないにしろ、これらの多様なデータ経路上に発生し得るデータフローを他のデータフロー全てと同時に保持することが可能である点に留意されたい。このような並行処理を保持することが可能な様態のうちいくつかを以下に記載する。
【００２２】
ａ．１つのメディアポート１７６を用いて、取り付けられたメモリデバイス１７０のうち１つに対して第１の書き込み機能を行う。第１の書き込み機能によって用いられるデータ経路は、モジュール内の利用可能な書き込みデータ経路のうちの１つである。同時に、別のメディアポート１７６を用いて、取り付けられたメモリデバイス１７０のうちの１つに対して第２の書き込み機能を行う。第２の書き込み機能において用いられるデータ経路は、第１の書き込み機能によって未だ用いられていない残りの書き込みデータ経路のうちいずれかでよい。２つのメディアポートが同時書き込み機能を行うため、書き込みモードデータを受信する２つのメモリデバイスは別個のデバイスである。単一のメモリデバイスが２つのメディアポートからの同時コマンドの標的である場合、このシナリオは不可能である点に留意されたい。なぜならば、各メモリデバイスは１つのメディアポートのみに取り付けられるからである。
【００２３】
ｂ．第１のメディアポート１７６を用いて、取り付けられたメモリデバイス１７０のうち１つに対して書き込み機能を行う。書き込み機能によって用いられるデータ経路は、モジュール内の利用可能な書き込みデータ経路のうちの１つである。同時に、第２のメディアポート１７６を用いて、取り付けられたメモリデバイスのうち１つから読み出し機能を行う。読み出しデータ経路は、第２のメディアポートにとって利用可能な任意の読み出しデータ経路でよい。
【００２４】
ｃ．単一のメディアポート１７６を用いて、１つよりも多くのコマンドを同時に行うことができる。これは、同一メディアポート１７６に取り付けられた２つ以上のメモリデバイスそれぞれの上の活性コマンドとして発生させることもできるし、あるいは、同一メディアポート１７６に取り付けられた単一のメモリデバイス上の複数のコマンドとして発生させることもできる。いずれの状況においても、コマンドの並行処理を行うためには、モジュールの特定のメディアポート１７６およびデータ経路および制御部１９０によって提供された単一のメディアインターフェース１９２上における同時データフローが必要となる。このデータフローの並行処理は、任意の単一の瞬間において特定のメディアポートインターフェース１９２上においてデータ値が１つだけ存在し得るという事実に起因する時間的制約があるため、上記した（ａ）および（ｂ）の場合と異なる。複数のデータフローを維持するために、特定のメディアポートインターフェース１９２は経時的に共有されるように動作することができ、これにより、各活性コマンドがデータ転送を限られた時間にわたって行った後、当該活性コマンドからその他の活性コマンドのうち１つへと変化する。データ通信分野においてこのコンセプトを指す際に一般的に用いられる用語として、当業者によく知られている「時間領域多重化」がある。
【００２５】
ｄ．単一のデータ単位（例えば、ブロック）を分割して１つよりも多くのメモリデバイス上に書き込む場合、複数のメディアポート１７６を用いて、単一の読み出しコマンドまたは書き込みコマンドを実行することができる。データの分割は、本開示の文脈において多様な方法で行うことができる。１つの分割として、１つのブロックをインターリービングによって２つ以上に分割する方法がある。インターリービングは、ビットまたはバイト境界に沿って行ってもよいし、あるいはより大きな単位を用いて行ってもよい（例えば、ワード、ダブルワード、セクター）。インターリービングは、書込動作に対する符号化の前に行ってもよいし、後に行ってもよい。インターリービングステップを符号化の前に行うかまたは後に行うかにより、デコーダの対応する順序が決定される。インターリービングを符号化前に行う場合、別個の符号化ステップが各分割に対して行われる（つまり、この機能をサポートするために、分割数と同数のエンコーダが必要となる）。複数のメモリデバイス上において単一のブロックを書き込む／読み出すインターリービング機能の１つの利点として、インターリービングを用いないアプローチと比較してデータスループットを大幅に高くすることが可能である点がある。
【００２６】
モジュール３０は、１つ以上のデコーダ２０２を含む。データ経路リソースとして、本実施形態において、各デコーダ２０２は、一度に１つの転送（例えば、１つのデータブロックまたは１つの分割データの転送）しかサポートできないため、複数の異なる転送を同時復号化する場合、図３に示すようなモジュール実施形態に記載の複数のデコーダが必要となる。複数のデコーダを設けることにより、２つの異なる転送を真に同時に復号化する能力が得られる。
【００２７】
デコーダの構成は、メモリデバイスの使用方法によって異なり得るため、モジュール中において複数の改変例がある。一例として、特定のモジュールのメモリデバイスがフラッシュ技術に基づく場合、異なる種類のフラッシュメモリを用いることができる。さらに、複数の種類の利用可能なフラッシュ内において、各フラッシュ種類について１つ以上の使用モードがあり得る。例えば、市販のフラッシュデバイスが選択された場合、メモリデバイス（またはメモリデバイスの一部）をシングルビットセル（ＳＢＣ）モードまたはマルチプルビットセル（ＭＢＣ）モードにおいて用いることができる。実施形態において、代数エラー訂正符号（「代数ＥＣＣ」）で符号化されたデータを（使用モードに関係無く）書き込むことができる。よって、この場合における適切なデコーダは、適用された特定のコードを復号化し、特定のコードによって許容される範囲までエラーを訂正するデコーダである。別の場合として、ＳＢＣまたはＭＢＣメモリのためのモジュールによって用いられる特定の代数コードは、ＳＢＣまたはＭＢＣメモリがメモリデバイスのページ構造に直接対応する単位でアクセスされるかまたはホストのビュー（および管理責任）からのページレベル詳細を除去するホストの代わりにモジュールが抽象化サービスを行うかにさらに依存し得る。いずれの場合も、異なるデコーダ実施形態が用いられ得る。
【００２８】
別の例として、読み出し、書き込みおよび消去に関連するメモリデバイスの内部機能について可視性、アクセスおよび制御を提供するメモリデバイスが用いられる。このようなメモリデバイスによって構成されるモジュールは、先ほど述べた例において典型的に用いられる標準的メモリよりもずっと高い精度で書き込みおよび読み出しが可能である。より高精度が可能となることにより、情報記憶密度が向上するだけでなく、復号化機能において有利に用いることが可能なさらなる情報も得ることができる。このさらなる情報は、フラッシュメモリに書き込まれたデータおよびフラッシュメモリから読み出されたデータ中においてさらなるビット精度の様態で存在し得、「ソフトビット」と呼ばれ得る。「ソフトビット」とは、データ通信分野の当業者にとって公知の用語である。また、このようなメモリにより、データ中における読み出しまたは書き込みに関連するゆがみを補償する機能も得られ、これにより、読み出し機能および書き込み機能の構成（例えば、適合および／または訂正）の能力が得られ、これにより、（セルあたりのより多ビットの）より高いデータ記憶密度と、（フラッシュメモリ中のプログラム／消去サイクル増加として現れることが多い）より高い信頼性とのうちいずれかまたは双方を提供することができる。このような能力には、異なる構成のデコーダ（単数または複数）が必要になり得る。
【００２９】
これらの例を鑑みて、モジュールの実施形態の１つの基準が異なる種類のメモリデバイスの利用についての柔軟性を提供することである場合、モジュール中の対応する復号化配置構成により、マルチモード機能が得られる。予測され得る特定の変形例を以下に挙げる。
【００３０】
ａ）１つ以上のビットエラー容量設定を用いたＢＣＨ（ボースチャウドゥーリーオッカンガム）復号化のみ、
ｂ）もう１つの符号エラー容量設定を用いたＲＳ（リードソロモン）復号化のみ、
ｃ）適切な形態の逐次復号化（例えば、畳み込み）と組み合わされたＢＣＨ復号化、および
ｄ）適切な形態の逐次復号化と組み合わされたＲＳ復号化
１つよりも多くのデコーダ機能を提供するように構成可能なモジュールは、デコーダの特定のインスタンスを特定のモードで動作させることができる。例えば、２デコーダモジュールは、２つのデータ経路上の真の復号化並行処理をサポートすることができる。モジュール中の複数のデコーダによって提供される柔軟性の一部は、所与の時間において非限定的な例として１つのデコーダがＢＣＨオンリーデコーダとして構成することができる一方、その他のデコーダが畳み込み（ビタビ検出器）デコーダおよびリードソロモンデコーダの組み合わせとして構成することができる点に起因する。
【００３１】
図３のエンコーダ２２０について、直前の議論は、少なくともエンコーダおよび符号化機能にまで一般的に拡張されうる。なぜならば、これら２つの機能は直接的に類似するからである。そのため、メモリ利用、デコーダモード、柔軟性および並行処理についての議論は、符号化の場合にも等しく適用される。
【００３２】
読み出し論理２１２は、記憶サブシステムとしてのモジュールの少なくとも半自律能力の動作サポートとして提供され得る。読み出し論理２１２によって行われる機能を例示目的のために挙げると、較正および／または補償機能により内部動作に対する特定の制御を行うメモリデバイスについての、較正または補償（例えば、平均値およびアレイプロセッサ機能（共有されている同時係属中の米国特許出願シリアル番号第１２／８８８，５８５号（出願日：２０１０年９月２３日、名称：「ＭＥＭＯＲＹ  ＱＵＡＬＩＴＹ  ＭＯＮＩＴＯＲ  ＢＡＳＥＤ  ＣＯＭＰＥＮＳＡＴＩＯＮ  ＭＥＴＨＯＤ  ＡＮＤ  ＡＰＰＡＲＡＴＵＳ」（本明細書中以下‘５８５出願と呼ぶ））中に記載）と共に用いられるデータ処理がある。詳細には、補償においては、メモリデバイスの物理的配置構成と関連付けられたパラメータを用いた信号処理が行われ、較正においては、計量収集分析機能が行われ得る。計量収集分析機能は、直接ソフトウェア制御下のハードウェア機能として行われ得る。
【００３３】
書き込み論理２２２について、読み出し論理２１２および読み出し機能についての議論は、書き込み論理および書き込み機能にも概して適用され得る。いくつかの場合において、読み出しモードの代わりに書き込みモードにおける補償または適応と関連付けられた動作を行う特定の理由または利点があり得る。このような適応について、情報（例えば、信号対ノイズ比（「ＳＮＲ」）関連データ）を後続パラメータ値のために収集することができる。ビット密度構成の例および非限定的な例において、モジュールは、ガーベジコレクション機能によってリクレイムされたメモリの特定の物理的領域が再割当される際に当該領域のビット密度を構成する際、当該物理的領域に対し、ＳＮＲ統計値を用いることができる。これは、書き込み機能と読み出し機能との間の主な差であり得る。モジュールは、読み出し機能および書き込み機能の任意の適切な組み合わせを含み得る。よって、所与のモジュールにおいて、構成可能（コンフィギュラブル）な書き込み機能はあり得るが構成可能な読み出し機能は無く、あるいは、構成可能な読み出し機能はあり得るが構成可能な書き込み機能は無い。いくつかの実施形態において、構成可能な読み出し機能および書き込み機能をどちらとも提供することができる。
【００３４】
データバッファ部２１０からデータ経路および制御部１９０への直接書き込みデータ経路２３０により、必要なときに低遅延データ通信を提供することができ、復号化機能または読み出し機能が不要な転送のための別のデータ転送経路も提供することができる。この直接書き込み経路は、メディアポート１７６および関連付けられたメモリデバイス１７０のうち１つへとデータ転送が行われる点において、書き込み経路である。
【００３５】
直接読み出しデータ経路２０４は、直接書き込み経路２３０に類似し、例えば必要な時に低遅延データ通信と、符号化機能または書き込み機能が不要な転送のための別のデータ転送経路とを提供するために、データ経路および制御部１９０からデータバッファ部２１０へと延びる。直接読み出し経路は、メディアポート１７６および関連付けられたメモリデバイス１７０のうち１つからデータ転送が行われる点において、読み出し経路である。
【００３６】
データバッファ部２１０は、コントローラポート２４０へと接続される。コントローラポート２４０は、モジュールインターフェース４２の１つのインスタンスを提供する（図１および図２を参照）。データバッファ部は、データバッファ機能を実行する。このデータバッファ機能により、データバッファとメディアポートとの間およびデータバッファとモジュールインターフェースとの間のデータ中継が可能になる。このようなデータバッファ機能により、例えば、バッファ内への転送とバッファからの転送との間の速度マッチングが可能になる。例えば、任意のフラッシュ読み出しコマンドにおいては、モジュールインターフェースへのメモリデバイスデータの転送が必要になり得る。この転送は、以下の組み合わせとなる：（１）メモリデバイス１７０から発生しかつバッファ２１０において終了する別個の転送、および（２）バッファ２１０から発生しかつモジュールインターフェース４２中を流れる後続転送。逆に、メモリデバイスへの書き込みを含む任意の機能は、以下の組み合わせを含む：（１）モジュールインターフェース４２を通じて送られかつデータバッファ２１０において終了する別個の転送、および（２）データバッファ２１０から発生しかつメモリデバイス１７０において終了する後続転送。
【００３７】
データバッファ部２１０は、ＤＭＡ部２４２を含み得る点が理解されるべきである。ＤＭＡ部２４２は、データバッファ内外におけるデータフローを制御するように構成される。一般的に、ＤＭＡリソースは、開始オフセット、カウントによって構成され、優先順位付け機能が各可能なデータ経路へと割り当てられる。
【００３８】
続けて図３を参照して、各モジュール３０は、埋設マイクロプロセッサ３００を含む。埋設マイクロプロセッサ３００は、プログラムメモリ３０２から動作する。マイクロプロセッサは、マイクロプロセッサバスを介して接続される。マイクロプロセッサバスは存在していることが理解されるが、モジュールを構成する多様なコンポーネントの例示を明確にする目的のために図示していない。詳細には、マイクロプロセッサは、多様なコンポーネントレジスタにアクセスすることができる。プログラムメモリ３０２中に保存されているソフトウェアは、特定の実施形態に基づき得る。当業者であれば、所与の機能に対するハードウェアサポートの範囲は異なり得ることを認識する。よって、管理機能を実行する際のソフトウェアとハードウェアとの間の協働は、以下の変動に応答するように構成することができる。
【００３９】
ａ．メモリデバイス種類。
ｂ．符号化機能および復号化機能（例えば、アルゴリズム）。
ｃ．補償機能（読み出しデータ上の補償およびデータ書き込み前の補償に適用される）。
ｄ．フラッシュメモリのためのブロック消去機能。
ｅ．モジュールインターフェースサポート（コマンド実行）機能。
ｆ．自律性ウェアレベリング機能（モジュールが、主要コントローラから独立した自立型機能としてウェアレベリングを実行する）。
ｇ．半自律ウェアレベリング機能（主要コントローラが、関連パラメータおよびコマンドをモジュールインターフェースを介してモジュールへと提供することにより、ウェアレベリング機能を制御する）。
ｈ．ローカル自律性フラッシュ変換層（ＦＴＬ）の実装。
ｉ．指向性フラッシュ変換層の（ホストによって制御された）実装（主要コントローラが、関連パラメータおよびコマンドをモジュールインターフェースを介してモジュールへと提供することにより、フラッシュ変換動作を制御する）。
ｊ．ホストによって指示される物理的メモリアクセス。ホストは、主要コントローラに適切なコマンドを発行することにより、複数のモジュール中の物理的メモリへアクセスすることができ、主要コントローラは、選択されたモジュールへ取り付けられたメモリデバイスのうち１つに適切な直接アクセスコマンドを発行することにより、このようなコマンドに応答することができる。
ｋ．ホストに対する論理ブロック抽象化により、モジュールによって指示された物理的メモリアクセス。
ｌ．自律性ガーベジコレクション（通常はローカルＦＴＬに適用される）。
ｍ．半自律ガーベジコレクション（主要コントローラは、この制御の適用先であるモジュールに適切なパラメータを書き込むことにより、主要コントローラに取り付けられたモジュールのうち１つ以上におけるガーベジコレクション機能を制御する）。
ｎ．指向性ガーベジコレクションのサポート（例えば、内部ブロックコピー機能）（主要コントローラは、各モジュールのモジュールインターフェースを介して複数のモジュールのうち少なくとも一部に適切なパラメータを書き込むことにより、ガーベジコレクション機能を制御する）。
ｏ．取り付けられたメモリデバイスのローカルセルフテスト
ｐ．自律性電力管理機能
【００４０】
リストは例示目的のためのものであり、包括的または限定的なものを意図していないことが理解されるべきである。よって、モジュール構成は、少なくともモジュール動作の前述の態様の選択および再構成を任意の適切な組み合わせで支援する。
【００４１】
再度図３を参照して、モジュール３０は、機能エンジン３２０を含む。機能エンジン３２０を用いて、ＣＰＵ３００およびプログラムメモリ３０２を通じてリソースとして提供される機能の任意の適切な組み合わせを実行（例えば、表現）することができる。機能エンジン３２０の実施形態は、例えば、前述の多様な管理機能のうち１つ以上を実行することができる。例えば、ウェアレベリング、ＦＴＬ、およびガーベジコレクションおよび所望および／または必要とされ得る他の機能を実施形態において提供することができる。さらに、機能エンジンは、コントローラ４０からかつ／または機能を構成するモジュールそのものから提供された１組のパラメータを受信し得る。すなわち、モジュールの管理機能は、コントローラまたはモジュールそのものから提供されたパラメータに基づいて少なくとも一定範囲において構成することが可能である。例えば、コントローラによって管理機能が指示される範囲は、コントローラによって設定することが可能なパラメータに基づいて構成され得る。しかし、パラメータが確立された後、管理機能は、実施形態において自律的に動作することができる。本明細書中以下、パラメータ優先順位について詳述する。しかし、いずれの場合においても、機能エンジンは、以下にさらに説明するような対象機能（単数または複数）を行うように構成される。主要コントローラ４０は、コントローラから機能エンジンの共有パラメータ部３２２へと提供される１組の構成パラメータを通じて、所与の機能についての動作特性を決定することができる。例えばＣＰＵ３００がコントローラ４０（図２）およびモジュール３０（図３）のモジュールインターフェース４２に応答することにより、共有パラメータ部を設けることができる。これらの構成パラメータにより、機能エンジンがどのように各機能（例えば、ウェアレベリング、ガーベジコレクションおよびビット密度構成）を実行（例えば、初期化および／または作動）するかが決定される。各機能についてパラメータによって規定された構成により、モジュールおよび主要コントローラ双方によって実行されるべき活動についての要求が規定され得る。例えば、少なくとも半自律ウェアレベリングがモジュールによって実行され得、主要コントローラからの最少量の関連通信が元々の構成に追随する。一方、指向性ウェアレベリングの場合、コントローラからの連続的構成または定期的構成の後、モジュールからの何らかの形態の報告を介してウェアレベリング活動の監視をコントローラによって行う必要があり得る。このような報告は、モジュールによって達成することができる（例えば、（後述する）報告部を介して提供される出力パラメータ値を更新することにより、達成することができる）。そのため、各モジュールの機能エンジンを、１つ以上のモジュール入力パラメータに少なくとも部分的に基づいて、当該モジュールのみの不揮発性メモリデバイスのための管理機能を行うように構成することができる。主要コントローラは、ホストデバイスとのデジタルデータ通信を提供し、複数のモジュールの各モジュールとのモジュールデジタルデータ通信を提供し、これにより、モジュールのうち１つの内外において流れるデータ全てがコントローラを通じて流れる。さらに、コントローラは、入力パラメータを各モジュールへと提供するように構成され得、これにより、各対象機能の少なくとも半自律実行を構成することができる。
【００４２】
モジュールインターフェース４２からデータバッファ２１０への入力データ経路３３０は、モジュールインターフェースからのデータおよび制御情報をバッファ部中へと転送する。このデータ経路は、比較的高速のものであり得る（例えば、バッファ部２１０とデータ経路および制御部１９０との間に延びる少なくともいくつかの他のデータ経路よりも比較的高速のものであり得る）。なぜならば、入来経路３３０は、データバッファ部２１０からの複数のデータ経路をデータ経路および制御部１９０へと提供できるからである。
【００４３】
出力データ経路３４０は、データバッファ部２１０からコントローラポート２４０へと延びて、データおよび制御情報をバッファ部からモジュールインターフェースへと転送し、モジュール３０からＳＳＤコントローラ４０への出力データ経路の一部をコントローラポート２４０によって提供されるモジュールインターフェース４２を介して形成する。データ経路３４０は、バッファ部２１０の内外の他のデータ経路よりも高い帯域幅を持ち得る。なぜならば、データ経路３３０と同様に、複数の他のデータ経路が出力データ経路３４０によって提供され得るからである。
【００４４】
モジュールインターフェース４２の実施形態の詳細を図４のブロック図に示す。インターフェース接続が、図２のコントローラ４０のモジュールポート１００と、図３に示すモジュール３０のコントローラポート２４０との間に延びる。コントローラポートおよびモジュールポートにより、各モジュールインターフェース４２を構成する各モジュール３０およびコントローラ４０間にコマンドおよびデータ接続が提供される。データ伝送経路４００により、コントローラからのコマンド、データ、状態および他の情報をモジュールへと伝送するための通信経路が得られる。もちろん、これらのアイテムは、ホストデバイス２０（図１）から発生し得る。実施形態において、データ伝送経路は差動信号生成によって確立され得、これにより、２つの物理的信号によってデータ伝送経路が構成され得る。データ伝送経路は、双方向信号対の形態で任意選択的に具現化することができ、これにより、逆方向の動作が、（後述する）データ受信経路のデータ転送能力の性能向上として機能することができる。
【００４５】
データ受信経路４０２は、モジュール３０からのデータ、状態および他の情報をコントローラ４０へと伝送するための通信経路を提供する。データ伝送経路４００と同様に、経路４０２は、実施形態において差動信号生成によって確立することができ、これにより、２つの物理的信号がデータ受信経路を構成する。実施形態において、データ受信経路は、双方向信号対として実装することができ、これにより、逆方向の動作で動作する場合、データ受信経路のデータ転送容量の性能向上として機能することができる。
【００４６】
信号差動対により、モジュールインターフェース４２上にクロック４１０が提供され得る。クロック対上を指向するクロック信号は、ホスト中において生成され得、データ送信および受信の同期する際にもホストによって用いられ得る。モジュールインターフェース上に提供された差動クロック信号を用いて、モジュール中におけるデータ送信および受信を同期させることができる。モジュールによって受信されたクロックは、ホストによって生成および利用されるクロックに直接関連する。送信遅延および他の回路効果に起因して、モジュールによって受信されたクロック信号は、ホストによって用いられる信号から位相がずれる場合があるため、ホストおよびモジュール双方内のサンプリング回路をクロックアライメント回路（例えば、ＤＬＬまたはＰＬＬ）によって支援することができる。クロックアライメント回路は、クロック信号とデータ信号との間の最適アライメントを達成できるように、動的に構成（例えば、適合）され得る。
【００４７】
開示のインターフェースを用いれば、ＳＳＤコントローラに必要なピン数を大幅に減少させることができる。各メモリモジュールは８個のフラッシュチップを支持することが可能であるため、ピンカウントが少ないモジュールインターフェースを１個介してモジュールからＳＳＤインターフェースへの接続を行うことができる。このようにすることにより、各メモリデバイスが直接コントローラへと接続された従来技術の実装と比較して、システム中の全フラッシュデバイスを制御するために必要なピン数を低減することが可能になる。図１および図４に示す実施形態を用いることにより、コントローラからモジュールへの接続に必要なピンを限定することにより、ピン数を低減することができる。すなわち、図４のピンカウントが低減したモジュールインターフェースを用いることにより、従来技術インターフェース（例えば、ＯＮＦＩ）と比較して、コントローラへの接続をより少数のピンにより行うことが可能になる。このようにして、ＳＳＤコントローラは、ＳＳＤアプリケーションに適したトランザクションレートおよびデータスループットレートを達成しつつ、（代替例（例えば、ＯＮＦＩ）と比較して）コントローラ上の少数のピンで多数のモジュールへの接続および多数のモジュールの制御を行うことができる。本明細書中に記載のモジュールインターフェースにより、高レベルＳＳＤ機能から低レベルフラッシュ機能を抽象化することが可能になる。よって、コントローラを例えば高レベルのコマンド実行局面のみで構成することにより、コントローラの負荷を低減することができる。低レベル機能（例えば、物理的フラッシュ特性に関連する機能）は、モジュールレベルにおいて実行することができる。より多数の取り付けられたメモリデバイスにより、少なくともメモリデバイス管理のための半自律機能の利用を通じて、ＳＳＤ性能を向上させることができることが理解されるべきである。単一のハードウェア構成（事前構成されたモジュールおよび特定のＳＳＤコントローラの特定の組み合わせ）内において、モジュールを少なくとも半自律性のエンティティとするようにＳＳＤを構成することができ、コントローラの役割は、モジュール中の論理アドレス指定されたデータ単位にアクセスすることである。このようなシステムにおいて、管理についてのコントローラの主な役割は、各モジュールによって提供される（モジュール単位の集約としての）記憶を単一のより大きな容量で管理することである。
【００４８】
モジュールインターフェースは、意図するアプリケーションをＳＳＤ利用に合わせてカスタマイズするための、コマンドおよびプロトコルレベルにおける機能および能力を含み得る。これらの機能および能力を上げると、低遅延読み出し機能および書き込み機能の支援、高データスループットの支援、コマンド待ち行列および同時動作コマンドの支援、多ブロック転送動作を含むデータブロックの、非順次転送の支援、異なるレベルのブロック抽象化におけるコマンドの支援、および簡単かつ高度な高性能プロトコルがあり、これらそれぞれについて、本明細書中以下に説明していく。
【００４９】
低遅延読み出し機能および書き込み機能の支援
【００５０】
コントローラ４０から受信されたコマンドに対する最も高速の可能な応答を支援することにより、低遅延がモジュール３０によって支援される。この支援は、以下の少なくとも２つのアプローチを用いた実施形態を用いて、モジュールインターフェース４２によって達成される：第１に同時実行コマンドを支援することと、第２に、短データパケットを任意選択すること。第１のアプローチを通じて、コマンドをコントローラ４０からモジュール３０へと発行することができ、１つ以上の他のコマンドが既に実行している場合であっても、すぐに作用することができる。その結果、（コマンドが同一メモリデバイスに既にアクセスしていない場合でも）コマンドが標的メモリデバイスへとアクセスすることができ、（現在活性状態のコマンドを完了させた後に別のコマンド実行を開始する場合よりも）コントローラ４０とモジュール中のメモリデバイス１７０との間のデータ転送をより迅速に開始することが可能になる。コマンド待ち行列および同時コマンド実行のためのインターフェース支持により、このような同時実行能力が可能になる。第２のアプローチを通じて、読み出しコマンドまたは書き込みコマンドのデータ転送位相をより迅速に開始することができるため、（より長いパケットを用いた場合よりも）より迅速に完了することが可能になる。第２のアプローチと、短いパケットではなく長いパケットを用いたアプローチとの間の違いとして、より短いパケットを用いることにより、待ち時間を短くすることができる点がある。なぜならば、長パケットと比較して、短パケットは転送時間を短縮できるため、同時に実行されている転送全てに対し、低遅延ベースでバッファ帯域幅が割り当てられるからである。所与のコマンドに対し、短データパケットにより、（より長いデータパケットが用いられる場合に長期化し得る待ち時間と比較して）インターフェースへのアクセス待ち時間がより短縮することができる。データパケット長さを構成することができる。しかし、特定の実施形態のためのデータパケット長さは、例えば、部分割当時間において用いられるパラメータによって決定され得る。このパラメータは、アクセス待ち時間をパケット長さに従って優先順位付けする。そのため、所与のモジュール構成について最大パケット長さをコントローラ４０によって決定することができる。また、第２のアプローチを用いて、図４のデータ伝送経路４００およびデータ受信経路４０２について説明した方向切り換え機能を用いることができる。選択された場合、方向切り換え機能により、全パケットサイズのより高速な送信が可能になり、これにより、スループットおよび待ち時間性能双方が増加する。
【００５１】
高データスループットの支援
【００５２】
高スループットのためにより大型のパケットが必要な場合、高スループットおよび低遅延は時に相反する目的となる。短パケットサイズを用いれば待ち時間性能が向上するが、スループット性能の劣化も招く。なぜならば、インターフェースの固有オーバーヘッドは、大型パケットの場合よりも小型データパケットの場合によって比例的に増大するからである。すなわち、長パケットの場合よりも短パケットの場合の方が転送効率が低下する。そのため、インターフェースに対する要求がインターフェースの帯域幅容量に近づいた場合、短パケットの場合よりも長パケットの場合の方がデータスループットが向上する。構成選択肢として、パケットサイズを選択できる能力も、高スループットおよび低遅延の競合する利益に対処するための、高データスループット支持のための局面である。
【００５３】
コマンド待ち行列および同時動作コマンドの支援
【００５４】
実施形態において、コマンド待ち行列機能は、主にハードウェア機能として、モジュールインターフェース４２中に存在し得る。各実行コマンドは、コマンド実行に関係する全トランザクション（例えば、コマンド転送、データ転送、およびハンドシェーキングトランザクションの状態）を支援する必要がある。これらのトランザクションは、施設（例えば、手続き中のＤＭＡリソース）を用いることができる。このようなハードウェアリソースは、コマンド待ち行列機能をイネーブルするために必要な範囲において、モジュールインターフェース定義中に設けることができる。コマンド待ち行列のさらなる機能として、キュータグの生成および確認がある。キュータグとは短い２値であり、コマンドに必要な前述のハードウェアリソースをアドレス指定するために用いられる整数である。キュータグは、ホストからデバイスへと送られる各新規コマンドコードと共に送信され、コマンドが実行し続けている限り、活性状態のままである。コマンドが終了した後、キュータグは活性状態ではなくなり、後続コマンドが発行されたときにキュータグを再度割り当てることが可能になる。
【００５５】
多ブロック転送動作を含むデータブロックの非順次転送の支援
【００５６】
モジュールインターフェースプロトコルは、長多ブロック転送内におけるブロックの非順次送信を可能にするコントローラおよびモジュール間のトランザクションモデルを支援することができる。トランザクションモデルにより、任意の読み出しまたは書き込みコマンド中に１つ以上の「接続」を含めることが可能になる。各接続は仮想構成概念であり、より長い転送の一部についてアドレス指定制御およびカウント制御を割り当てる。そのため、接続は時間エンティティとして存在し、コマンドの一部（通常はデータ転送）を維持するために存在し、存在において時間的制約があるため終了する必要がある。時間的制約は、活性状態になり得る他のコマンドに対してインターフェースが必ず利用できるようにするためのものである。この制約は、固定してもよいし、あるいは変化してもよい。読み出しまたは書き込み転送においては、単一の接続のみが必要である場合もあるし、あるいは多数の接続が必要な場合もある。そして、コマンドに必要な接続数は、読み出しまたは書き込みコマンドの合計長さ（単位：バイト）の関数であり、また、時間的制約のサイズの関数である。この接続数の決定は、モジュール中において実行しているコマンド取り扱いソフトウェアによって行われ得る。複数の接続を一度に確立することができるため、所与の時間において所与のコマンド内に１つの接続のみが存在するか、または、所与のコマンドが複数の活性接続を持っていてもよく、各接続からコマンドの合計転送長さの異なる部分が転送される。（ブロックの）非順次転送は、例えば以下のようにして支援することができる。すなわち、コマンドによって転送されているブロックの全範囲内のオフセットと比較して非順次ブロックまたはいくつかのブロックを転送する接続を確立する。
【００５７】
コマンド全体の実行の一部として、各接続を確立することができる。接続は、割り当てられたデータ長さ（これは、（コマンドに相対して規定された）ブロックであり得る）を転送できるだけの充分な長さで存在するか、または、コマンドコード中のカウントフィールドによって規定されたバイト数として存在する。規定長さのデータが転送された後、接続が終了する。
【００５８】
異なるレベルのブロック抽象化におけるコマンドの支援
【００５９】
コントローラ４０は、モジュール３０へ取り付けられたメモリデバイスへアクセスするために異なるアプローチを用いることができる。変動がある場合、本明細書中以下に記載するような２つの実施形態が一般的である。
【００６０】
第１の実施形態において、コントローラは、標準的メディアとしてモジュールに取り付けられたメモリデバイスへモジュールインターフェース４２を介してアクセスする。標準的メディアでは、メモリデバイスが階層状に配置されたメモリを含み、その階層の最低レベルにページが位置し、その階層のより高レベルに消去ブロックが位置する。読み出しまたは書き込みアクセスは、一定量のデータを有するページを有する特定のページを標的とし、ＥＣＣパリティに通常用いられるさらなるビットを含み得る。別の種類のアクセスとして消去があり、消去ブロックを標的とする。フラッシュメモリ中の消去ブロックは、ページよりもずっと大きな構造である。実際、消去ブロックは、整数のページをいくつか含み、整数は変動し得る。典型的な値は、消去ブロックあたり１２８ページである。ページは一般的には単位で書き込む必要があり、消去は一般的には消去ブロック全体に対して行う必要がある。メモリデバイスからのページ読み出しは全体的に行ってもあるいは部分的に行ってもよいが、ページを部分的に読み出した場合、ＥＣＣ符号化機能および復号化機能に影響が出る場合がある。いくつかのＥＣＣ符号化機能においては、ページ全体を符号化することができるため、ＥＣＣ復号化を行うために、ページ全体を読み出す必要が出てくる。他のＥＣＣ符号化機能も実装可能であり、符号化および復号化をページ中のデータ区画上に行う。この場合、部分的ページ読み出しにより、これらの区画のうち１つ以上を読み出すことができ、ＥＣＣ復号化を行うことができる。ページを全体的または部分的に読み出すかに関係無くまたページ全体に書き込むかに関係無く、物理アドレスを用いて、物理ページのアドレス指定を行う。物理アドレスを用いるためには、標的モジュールへ取り付けられた各メモリデバイス中のページの物理的配置構成について、コマンドの発行者（この場合はコントローラ４０）において知識が必要になる。
【００６１】
第１の実施形態は、モジュール中の符号化、復号化およびデータ経路ハードウェアによって支援される。アドレス指定、読み出し、書き込みならびにＥＣＣ符号化および復号化は全て、選択可能な構成としてそしてこれまでみられなかった様態で、モジュール中において支援される。
【００６２】
第２の実施形態において、メモリデバイスが論理単位として、アドレス指定およびアクセスされる。これらの論理単位は、（物理アドレスではなく）論理アドレスを用いた論理セクターまたは論理ブロックを含む。このアプローチにおいては、データ長さはページの物理的長さによる制約を受けないため、モジュールは、論理構造を物理的構造上にマッピングするように物理ページおよび消去ブロックを管理することができ、これにより、コントローラは、所望のデータを転送する際に、コマンドに論理アドレスを付加するだけですむ。この論理形態のアクセス（ブロック抽象化とも呼ばれる）をサポートするモジュール中の機能を挙げると、図３を参照して説明するようなエンコーダおよびデコーダ構成の多様な局面がある。このサポートの他の局面についても図３を参照して説明しており、例を挙げると、データ経路配置構成や、補償および較正に関連するその他の読み出し機能および書き込み機能がある。ソフトウェア機能および機能は、このサポートの重要部分である。なぜならば、ソフトウェアは、ブロック抽象化能力に関連する機能を支援するからである。これらの機能をいくつか挙げると、ローカルフラッシュ変換層（ＦＴＬ）、消去動作（例えば、ガーベジコレクション）に対する制御、ウェアレベリング、ビット密度構成（例えば、エンコーダ／デコーダ構成）などがある。ブロック抽象化についてのさらなる詳細について、図５を参照してさらに説明する。
【００６３】
簡単かつ高性能なプロトコル
【００６４】
最も重要な機能のみを実行することにより、モジュールインターフェースは、可能なコマンドオーバーヘッドよりも低いコマンドオーバーヘッドで動作することができる。インターフェースはポイントツーポイント接続のみの形態をとるため、プロトコルは、多デバイスサポートの負担から逃れられる。ホストがデバイスとのトランザクションを開始、実行および監視する際、デバイスアドレスの生成、記録または利用は不要である。同様に、モジュールインターフェースによって実装されるポイントツーポイント物理的接続は、（コマンド実行の一部として既に述べた有限時間論理／仮想接続とは対照的に）動的に確立するのではなく、専用として用いられる。固有のモジュールインターフェースを介した各ホスト／デバイス接続の構成は製造時において確立されるため、ホストがデバイスをパワーオン時間に構成する必要が無くなる。
【００６５】
加えて、インターフェースは、真の並行処理（同時独立転送）および時間領域多重並行処理の両方をサポートする。真の並行処理は、１つ以上の読み出しコマンドおよび１つ以上の書き込みコマンドが同時に実行される際に発生する。インターフェース並行処理は、読み出しコマンドおよび書き込みコマンド双方のデータ転送段階が発生する際に発生し、これにより、データ伝送経路４００がコントローラ４０からのデータをモジュール３０へと活性転送するのと同時に、モジュールインターフェース（図７）のデータ受信経路４０２がモジュール３０からのデータをコントローラ４０へと活性転送する。この種類の並行処理は、前述の方向切り換え機能が関わっていない構成またはコマンドのみに対して発生する点に留意されたい。
【００６６】
時分割多重化形態の並行処理は、モジュールインターフェースによって頻繁に達成することができる。これは、例えば、１つ以上の活性コマンドがモジュールインターフェース上におけるデータパケットを用いてデータ位相トランザクションを実行する接続を確立した場合に発生する。複数の活性接続を確立することができるが、単一のデータ送信またはデータ受信信号対に沿った任意の瞬間において、最大でも１つのパケットを送信することができる。時間領域並行処理が発生するのは、活性接続によってデータパケットが交互に転送されるからであり、１つの接続がデータパケットを１つの瞬間において転送し、別の接続が別の瞬間においてデータパケットを転送する。このようにして、複数のコマンドがデータパケットを同時に転送することができるが、このようなことは、物理的転送接続へのアクセスを共有することによって行われる。例えば、図４に示すように、Ｐ１、Ｐ２およびＰ３のパケットをデータ受信経路４０２を介して順次転送し、各パケットは、データ転送全体の異なる部分を形成する。同様の転送は、データ伝送経路４００を介してサポートすることもできる。実施形態において、このようなパケット転送は、データ伝送経路およびデータ受信経路上において同時に発生し得る。
【００６７】
コントローラによって異なるモジュールに対する異なる数の管理が可能なように、ＳＳＤを構成することができる。このような実施形態は、モジュールに対する混合モードアプローチとして呼ばれる場合があり、機能（例えば、ウェアレベリング、ガーベジコレクションおよびビット密度構成）の実行についてのコントローラとの少なくとも何らかの相互作用によってモジュールの一部を管理することができ、モジュールの別の部分は、これらの機能の詳細管理について自律的に動作することができる。
【００６８】
ビット密度構成について、各モジュールは、高密度動作（例えば、素子あたり２ビットを超える密度）が可能なメモリデバイスを含み得、実施形態において、各モジュールは、モジュール中に含まれる全メモリデバイス上において高密度モードで動作するかまたは低密度モード（例えば、素子あたり２ビット以下）で動作するように構成することができるように、コントローラによって構成することができる。いくつかの実施形態において、いくつかのメモリデバイスを高密度モードで（例えば、素子あたり２ビットを超える密度で密度で）動作させかつ他のメモリデバイスを低密度モードで（例えば、素子あたり２ビット以下で）動作させるように、モジュールをコントローラによって構成することができる。モジュールが低密度動作（例えば、素子あたり１または２ビット）が可能なメモリデバイスを含む場合、低密度動作に従った符号化および復号化構成で動作するように、このモジュールをコントローラによって構成することができる。この選択のための構成パラメータは、各ＥＣＣ符号化および復号化単位に適用されるデータ長さと、各ＥＣＣ符号化および復号化単位と共に含まれるパリティビット数とを含み得る。さらに、低密度メモリが素子毎に１ビットまたは２ビットとして構成される場合、モジュールを選択された低密度モードを用いるようにコントローラによって構成することができる。
【００６９】
上述したように、少なくとも半自律性のメモリモジュールは、多様な機能を独立的に行うことができる。ウェアレベリング機能をさらに考慮すると、モジュールに提供されたパラメータに基づいて、各メモリモジュールがその固有の１組のメモリチップ内においてウェアレベリングを行う機能を担うことができることが理解されるべきである。分散型ウェアレベリング制御により、コントローラに各個々のメモリチップ上の摩耗を、監視および調節させる負担がほとんどなくなる。
【００７０】
非限定的な例として、本開示によるモジュールにより、他の機能を少なくとも半自律的に取り扱うことができる。例えば、各メモリモジュールは、その固有の電力消費を管理することができる。メモリモジュールが不活性であるかまたは軽負荷を受けている場合、メモリモジュール上の電力管理回路を活性化することで、電力消費をモジュール毎に低減することができる。その結果、コントローラオーバーヘッドが各メモリモジュールの電力状態を監視および制御する必要無く、分散型電力管理が可能となる。
【００７１】
別の例として、各メモリモジュールは、その固有の１組のメモリチップのデータの監視および更新を行うことができる。その結果、コントローラが各メモリチップ中のデータ品質を監視する負担が無くなる。
【００７２】
さらに別の例として、各メモリモジュールは、その固有のＮＶＭチップのための誤差修正を全て取り扱うことができる。このような分散型誤差修正処理を用いることにより、従来のＳＳＤの場合のように誤差修正全てをコントローラが担当する場合に達成可能なスループットよりも、スループットを大幅に高くすることが可能になる。誤差修正処理はＳＳＤ内において分散させることが可能であるため、適用可能な誤差修正量を従来のＳＳＤよりもずっと高くすることが可能になり、その結果、いくつかの実施形態の個々のメモリチップ内のデータ密度を高くすることが可能になる。
【００７３】
本明細書中に記載されるメモリモジュールの分散型処理電力に起因して、このようなモジュールを含むＳＳＤのスループットを、従来のＳＳＤアーキテクチャによって達成されるスループットの数倍だけ増加させることができる。機能（例えば、誤差修正、データ更新および低レベルウェアレベリング）により、ＳＳＤコントローラには負担がかからなくなる（かまたは少なくとも低減された負担を有する）。各メモリモジュールは、（例えば、メモリモジュール毎に少なくとも８ＮＶＭダイまで）制御することができるため、高データレートを取り扱うことができる。コントローラからの各バス上に複数のメモリモジュールを設けることが可能であるため、高データレートを倍加させることが可能になる。コントローラとメモリモジュールとの間に並列に延びるいくつかのバスを設けることが可能であるため、これを倍加させることができる。全体的な結果として、ＳＳＤにより、既存のＳＳＤまたはハードドライブのデータレート（スループット）を複数倍にすることができる。
【００７４】
モジュールインターフェースにより、少なくともコントローラが担う代わりに、少なくとも半自律的に各モジュールによって分散的に行われる低レベル機能に関連する大量のデータを搬送する必要性からコントローラインターフェースに対するモジュールが逃れることができるという理由のため、従来技術を用いた場合よりも高い性能が可能になる。そのため、これらの低レベル機能の負担無く、コントローラが自由に動作することができる。その結果、ＳＳＤコントローラが高レベルＳＳＤ機能の実行をより簡潔かつより効率的に行うことが可能になる。このように処理デューティを分離することにより、より効率的かつ高性能ＳＳＤシステムが得られる。
【００７５】
図５を図３と共に参照して、図５は、図３の１つのメモリモジュール３０の複数のメモリデバイスを模式的に示すブロック図であり、例示目的のため、このモジュールＮＶＭメモリをまとめて参照番号５００によって示す。本例において、モジュールＮＶＭメモリは、８個のメモリデバイスを有する。これら８個のメモリデバイスをＮＶＭ１〜ＮＶＭ８として示す。８個のメモリデバイスの利用は例示目的のためであり、限定的なものではなく、本明細書中の教示の範囲内において他のモジュールが異なる様態で配置された異なる数のメモリデバイスを含み得ることが理解されるべきである。よって、モジュールＮＶＭメモリ５００は、数個の部分から構成されるようにコントローラ４０（図２）によって配置され得る。コントローラは、以下に示すような多様な基準のうちのいずれかに基づいて、複数のメモリデバイスを部分（セクション）に分割することができる。部分を極めて柔軟に８個のメモリデバイス間に割り当てることができる。先ず、どちらのモジュールも同一特性のＮＶＭを含む場合であっても、１つのモジュールのメモリの部分を次の部分に割り当てることは完全に異なり得、物理的領域およびビット密度双方に依存しないことが理解されるべきである。第１の例として、第１のメモリ部（第１のメモリセクション）５０２は、メモリデバイスＮＶＭ１を１つだけ含む。第２の例として、第２のメモリ部（第２のメモリセクション）５０４は、メモリデバイスＮＶＭ２およびＮＶＭ４を含む。第３の例として、第３のメモリ部（第３のメモリセクション）５０６は、メモリデバイスＮＶＭ３の一部と、メモリデバイスＮＶＭ５の全体とを含む。第４の例として、第４のメモリ部（第４のメモリセクション）５０８は、メモリデバイスＮＶＭ８の一部を含む。これらの例の目的のため、部分の外側に図示されているメモリデバイスの場所は割り当てられていないことが推定され得る。よって、任意の１つの部分（セクション）は、個々のメモリデバイスの一部および／または１つ以上のメモリデバイス全体を任意の所望の組み合わせで含み得る。ＮＡＮＤフラッシュメモリデバイスを用いた実施形態において、部分（セクション）のサイズ上の下界は、単一の消去ブロック中に保存可能なデータ範囲であり得る。よって、所与の１組のメモリデバイス中において利用可能な記憶空間をパラメータ（例えば、記憶容量、記憶保持、プログラム／消去サイクル、データスループット、またはこれらの何らかの組み合わせ）に基づいて最適化する目的のために、モジュールを構成しているメモリデバイスを分割することができる。メモリデバイスの分割は動的な能力であり得、必要に応じてメモリの特定の物理的部分の割当、割当解除および再割当を可能にして、メモリデバイスを寿命にわたって管理することが可能になる。部分の利用を通じて、例えば、物理的特性またはメモリ種類に基づきかつ物理的範囲の固有の特性およびその摩耗履歴に従ったメモリデバイスの最適利用が可能になる。
【００７６】
図５を参照して、ブロック抽象化においては一般的には、ページ境界を跨ぐ（これをページラッピングと呼び得る）様態で、１つよりも多くのページの書き込みおよび読み出しが行われることが理解されるべきである。この点について非限定的な例として、ＮＶＭ１は、物理的に隣接したページ５１０ａ〜５１０ｄを含むものとして図示されている。読出動作または書込動作が、ページ５１０ａのうちの斜線表示された第２の半分と、ページ５１０ｂのうちの斜線表示された第１の半分とを含む場合、読出動作または書込動作においては、ページ５１０ａおよび５１０ｂ全体が読み出されるかまたは書き込まれる。これらのページの斜線表示領域は、例えば、図３のエンコーダ２２０およびデコーダ２０２によって用いられるコードワードを示し得る。そのため、ページラッピングにより、動作目的のためにページ間に物理的切れ目が無いかのような、ページ境界を跨ぐ符号化機能および復号化機能が可能となる。
【００７７】
ここで図６を参照する。図６は、図３に示すようなモジュール３０の機能エンジン３２０の実施形態を示すブロック図である。機能エンジンのコンポーネントおよびその相互接続が図示されている。図示の多様なコンポーネントの機能を達成する目的のために、ハードウェアおよびソフトウェアの任意の適切な組み合わせが利用可能であることが理解されるべきである。実施形態において、ＣＰＵ３００およびプログラムメモリ３０２は、機能エンジンの動作を包含し得る。機能エンジンの共通施設（例えば、領域）６０２は、１組のデータ構造を構成し得る。１組のデータ構造は、パラメータ（例えば、パラメータを含むデータテーブル）を含む。これらのパラメータは、例えばウェアレベリング機能６１０、ガーベジコレクション機能６１２、ビット密度構成機能６１４、およびＦＴＬ機能６１６によって共通的または共有的に利用または変更される。これらの機能はそれぞれ、割当タスクを少なくとも部分的に特定の入力パラメータに基づいて実行するように、構成される。共有パラメータ部３２２（図３）が共通施設６０２の一部を形成している様子が図示されており、よって、共有パラメータ部３２２（図３）を図３または図６を参照して言及する場合がある点に留意されたい。これらの入力パラメータを必要とする他に、各機能は、他のモジュールまたはＳＤＤシステムおよびコントローラに対して全体的に自律的に動作することができる。共通施設６０２は、これらの機能の間において情報導管として機能する。なぜならば、場合によっては、多様な機能は、情報を共有し、協働して動作するからである。一般的に、各機能は、タスク完了のために、共通施設中のデータ構造からの最新情報にアクセスする。例えば、ＦＴＬ機能６１６は、最新論理／物理アドレス変換を用いる。最新論理／物理アドレス変換は、データ単位の論理アドレスが付与されたデータ単位の物理的位置を返送する機能を提供するために、例えばテーブル領域６２０中に保存され得る。さらに、共通施設中に保持される情報の例について、本明細書中以下におおて適切なときに説明する。本実施形態において、共通施設は、報告部６２４をさらに含む。報告部６２４は、１つ以上の出力パラメータ（例えば、利用統計を示すもの）を報告するように構成される。これらの出力パラメータは、モジュールの不揮発性メモリに関連する。利用統計は、機能エンジンそのものおよび主要コントローラにとって利用可能であり、読出動作時に得られた１組の読出値に基づき得る。利用統計は、例示目的のため、１組のリードバック値に対するリードバック動作に基づいて生成され得る１組の読取値についての平均リードバック値と、その１組のリードバック値の標準偏差と、のうち少なくとも１つを含み得る。利用統計はまた、誤差修正統計値も含み得る（例えば、読出動作によってブロック誤差修正コードが復号化される場合における、累積誤差カウントおよびブロック毎の誤差カウント）。誤差修正統計値は、１つ以上のデコーダ２０２（図３）から生成され得ることが理解されるべきである。これら１つ以上のデコーダ２０２（図３）から、報告部が統計情報を入手する。利用統計に基づいて、機能エンジンは、利用統計によって示されるメモリの状態を鑑みて、パラメータを設定および／または選択することができる。例えば、利用統計が多数のプログラム／消去サイクルに基づいてメモリ劣化を示す場合、メモリのビット密度を低下させることができる。実施形態において、プログラム／消去サイクルの数は、閾値プログラム消去パラメータを超え得る。閾値プログラム消去パラメータは、利用されている特定の不揮発性メモリについて指定される。
【００７８】
いくつかの実施形態において、利用統計に基づいたモジュールの不揮発性メモリに関連して健康指標を提供するように、モジュールの一部のモジュールの報告部を構成することができる。例えば、パラメータは、閾値を指定し得る。閾値において、機能エンジンは、以下のように応答する。すなわり、メモリの一部から離隔方向に既存のデータをコピーすることによりより高いビット密度で前回割り当てられたメモリの一部を回収し、その部分を消去し、その後、その部分を相対的により低いビット密度へと再割当して、当該部分へのさらなる書き込みがより低いビット密度となるようにする。この活動は、少なくともいくつかのコントローラパラメータ（例えば、メモリの進行中の摩耗に基づいて初期構成中に設けられるもの）に優先し得る。実施形態において、コントローラは、健康指標にアクセスおよび監視し得、パラメーター制御を提供して、上記のようにメモリの一部を回収するようモジュールに命令し得る。もちろん、これらの多様な活動を行うためには、以下において適切なときに詳述される、機能エンジンによって提供される機能の利用が必要である。
【００７９】
上記を鑑みて、コントローラパラメータ６３０は主要コントローラ４０によって提供され、モジュールパラメータ６３２はモジュールそのものの内部から発生することが理解されるべきである。後者の非限定的な例を挙げると、デコーダ２０２（図３）によって生成される利用統計がある。これらのコントローラパラメータおよびモジュールパラメータは、共通施設６０２へと提供される。これらのパラメータは、主に４つの例示の機能そのものによって用いられ得、各機能の構成に影響を及ぼし得る。
【００８０】
さらに図６を参照すると、ウェアレベリング機能６１０は、モジュール中の全メモリデバイス上におけるサイクル利用数を均一に最大化することに関する。当業者であれば、ウェアレベリング機能の構成についての基本的原理を理解し、このような機能が必要となる理由として、特定の形態の不揮発性メモリが限られた数のプログラム／消去サイクルに耐える際に限られた寿命を示す点があることを理解する。ウェアレベリング機能は、特定のモジュールのメモリデバイスの有効寿命を延ばすことに関する。
【００８１】
ガーベジコレクション機能６１２は、不要になったデータが書き込まれたメモリ単位（部分、ブロックまたはページ）を特定し、新規データの後続書き込みにおいて利用可能なメモリ単位のプールにこのメモリを返送する。ウェアレベリング機能と同様に、当業者であれば、ガーベジコレクション機能の構成の基礎となる原理を理解する。
【００８２】
ビット密度構成機能６１４は、メモリ単位にビット密度構成を割り当てる。ビット密度構成は、メモリ中の各適用可能な物理的部分中の好適なビット密度構成について、基準（後述する）に基づいて決定された選択の結果決定される。実施形態において、メモリ単位は、ブロックによって構成された部分であり得る。
【００８３】
ＦＴＬ機能６１６は、特定のデータ単位（部分、ブロックまたはページ）の物理的位置を当該単位の論理アドレスのみに基づいて提供する。ウェアレベリング、ガーベジコレクション、およびビット密度構成は全て動的な機能であり得、進行する更新を発生させて、アドレス変換テーブルに影響を与えるため、ＦＴＬおよび他の機能は、リアルタイムで相互に協働して、共通施設６０２中に最新状態を保持することができる。
【００８４】
類似のパラメータがコントローラパラメータ６３０およびモジュールパラメータ６３２の一部を形成する場合、実施形態において、一般的にはコントローラパラメータが優先される。この点について、パラメータを任意の適切かつ柔軟な様態で編成することができる。例えば、いくつかの実施形態において、パラメータをサブセットとして編成することで、類似するパラメータからなる１つのサブセットについてはコントローラ４０からの値が優先され、類似するパラメータからなる別のサブセットについてはモジュール３０からの値が優先されるようにする。
【００８５】
ここで図７を参照して、図６のウェアレベリング機能６１０の実施形態は一般的には、参照番号７００によって示される。このウェアレベリング機能は、７０２において主要コントローラ４０から利用可能なパラメータと、７０４においてモジュールから利用可能な内部パラメータ（例えば、機能エンジンの共有パラメータ部３２２（図３および図６）中に含まれるもの）とに基づいて動作し得る。そのため、特定のパラメータ源の範囲内において、ウェアレベリング機能の性能において高い柔軟性が可能となる。パラメータ源に関係無く、ウェアレベリング機能は典型的には、これらのメモリデバイスが一定数のプログラムおよび消去動作の後に劣化する記憶素子を含む場合において、モジュールのメモリデバイスの動作寿命を最大化することに関連する。
【００８６】
共有パラメータ部３２２に提供されるパラメータを選択することにより、主要コントローラ４０（図２）は、ウェアレベリング機能に対する制御をウェアレベリング機能について増減を行使することができる。上述したように、主要コントローラによって確立されたパラメータは、モジュールによって提供されたパラメータよりも優先される場合がある。コントローラおよびモジュールから提供されたパラメータは、初期化パラメータおよび動作パラメータによって特徴付けられ得る。これらの初期化パラメータは、７０８において選択され、これらの動作パラメータは、７１０において選択され、初期動作後の進行中のウェアレベリングに適用され得る。初期化パラメータの例を挙げると、ブロック合計と、ブロック合計のサブセットのうちデータ記憶のために初期に利用可能であるものとによってモジュールのメモリ容量の初期範囲を示すアドレスがある。初期化パラメータはまた、パラメータ（例えば、部分サイズ、部分割当順序、ブロック割当順序）を含み得る。これらのパラメータは、シーケンスに対するディレクティブとして機能し、これらのパラメータに基づいて、ステップ７２０、７２４および７３０が当該部分内の部分およびブロックを初期メモリ配置構成に割り当てる。初期化パラメータ選択７０８は、プロセス全体の初期化分岐７１２の開始を含む点に留意されたい。これらの初期化パラメータは一般的には主要コントローラによって提供され、動作開始時においてウェアレベリング機能の構成を確立する。一般的には、モジュールの元々のウェアレベリング構成を確立するため、初期化を一度行うことができる。主要コントローラからの動作パラメータは、ウェアレベリング機能の非初期化局面に適用することができる。いくつかの実施形態において、モジュールによって提供される動作パラメータにより、主要コントローラからの初期パラメータに基づいた初期動作の後、進行中のウェアレベリング活動を定義することができる。ウェアレベリング機能の非初期化局面について設けられ得る種類のパラメータの例を挙げると、部分およびブロック割当および再割当のための順序付けディレクティブがある。他の例を挙げると、再割当が必要となるまでにブロックまたは部分中に静的データを保存しておく期間についての数値基準またはウェアレベリング再割当決定の判断基準として用いられる他の数値基準（例えば、累積書き込み／消去サイクル数、誤差修正統計値）がある。
【００８７】
７２０において、部分（セクション）割当初期化を行ってモジュールのメモリデバイス間の元々の１組の部分を割り当てることにより、初期化分岐７１２を継続する。その後、ブロック割当機能７２４を行って、１組のブロックを各部分（各セクション）中に割り当てる。部分割当の例を図５に示し、図５に関連して上述した。
【００８８】
７２４の後、初期構成が確立され、７３０において例えば機能エンジン（図３および図６）の共有パラメータ部３２２中に保存される。そのため、初期構成が完成し、ウェアレベリング機能の動作分岐７４０時において参照および更新のために利用可能となる。
【００８９】
７４４において、回収構成プロセスが行われる。初期化分岐７１２の後、７３０において構成記憶によって確立された初期構成を回収することができる。その後、進行中の動作と共に、構成を動作分岐７４０によって管理することができる。進行中の動作時において、現在のＦＴＬテーブル情報をＦＴＬ更新経路７４８を介して（例えば、機能エンジンのテーブル領域６２０（図６）から）回収することができる。ＦＴＬ更新は、後述する書込および消去活動の結果発生する。書込および消去活動において、ＦＴＬ機能によって物理アドレスが付加または削除されると、ウェアレベリング機能への影響が必ず発生する。ＦＴＬ機能を更新する目的のために、経路７４８は双方向性であることが理解されるべきである。同様に、ウェアレベリング機能も、例えばテーブル領域６２０のＦＴＬ領域を編集することにより、ＦＴＬ機能にとって可視状態の変更を行うことができる、一例として、書込動作の前に、ＦＴＬは、書き込みに好適な位置をウェアレベリング機能から入手する。なぜならば、ウェアレベリング機能の役割は、さらに詳述するように、全ての利用可能な位置内からの各新規書込動作について物理的位置を定義することであるからである。ガーベジコレクション機能６１２からの更新は、ガーベジコレクション更新経路７５０上において利用可能となる。これらの更新は、通常のＦＴＬ更新およびガーベジコレクション更新に加えて、ウェアレベリング機能への専用としてもよい。ウェアレベリング機能はガーベジコレクション機能にとって可視性であるため、例えばテーブル領域６２０を介して、ウェアレベリング機能は、ガーベジコレクション機能によって利用可能な状態に戻されたメモリから、新規書き込みのための物理アドレスを割り当てることができる。ガーベジコレクション機能を更新する目的のために、経路７５０は双方向性になっていることが理解されるべきである。
【００９０】
７６０における各書込動作は、メモリ構成内の書き込みのための物理的位置を確立するために、ウェアレベリング機能の回収構成ステップ７４４とインターフェースをとり得る。さらに記載するように、ウェアレベリング機能は通常は、（主要コントローラ４０（図２）からの書き込みコマンドによって開始される）書き込み機能と、ＦＴＬ機能との双方と通信するため、経路７４８および７６０は双方向性である。新規書き込みデータ位置が書き込み機能によって用いられる場合、この新規位置を（データ書き込み対象となる論理アドレスに対応する物理的位置として）ＦＴＬに付加する必要がある。既存の論理データ単位が書き込みコマンドによって上書きされている場合、ウェアレベリング機能は、論理上書きが構成更新の目的のために（ＮＡＮＤフラッシュの場合のように）新規物理アドレスへのデータ書き込みだけでなく、データの現在の物理的位置の割当解除にも対応していることを認識する必要がある。
【００９１】
消去動作においては、書込動作と同様に、ウェアレベリング機能およびＦＴＬ機能双方が対応すべき変更を必要とする物理的動作が行われる。そのため、７７０において、各書込動作は、回収構成ステップ７４４とインターフェースをとって、メモリ構成内における消去のための物理的位置を確立する。消去機能更新の目的のため、経路７７０は双方向性であることが理解されるべきである。論理消去においては、既存の物理的データ単位の割当解除が行われ得る。物理的消去は、メモリの物理的範囲の実際の消去に対応し、その結果、当該メモリに対する新規書き込みが可能となる。
【００９２】
７７４において、部分（セクション）割当ステップにおいて、回収された構成に基づいて、モジュール中の累積メモリデバイス上における現在の部分（セクション）構成を調査し、新規部分の割当が必要かを決定する。現在の部分構成への部分付加は全て、ウェアレベリング構成に対して更新される。後者は、例えば機能エンジンのテーブル領域６２０（図６）中へと保存され得る。
【００９３】
７７６において、各部分内においてブロック構成を分析して、現在未割当のブロックを割当する必要があるかを決定する。付加が行われると、ウェアレベリング構成の適切な部分へ付加が行われる。また、変更はＦＴＬおよびガーベジコレクション機能とも呼ばれる。
【００９４】
７７８において、陳腐化したブロックでいっぱいになった部分（セクション）を再割当することができる。ＮＡＮＤフラッシュにおいて、この動作は、消去ステップの後、新規消去されたメモリを１組の利用可能な部分に付加するかまたは新規消去されたメモリを新規部分への再割当を待機している空の記憶部へ付加することに対応する。
【００９５】
７８０において、部分内の各ブロックを評価して、当該ブロックを再割当する必要があるかを決定する。再割当は通常は、陳腐化したデータ（書き込まれているが無効フラグが付けられているデータ）がブロックに書き込まれる結果発生し、この場合、ブロックを消去することができ、新規書き込み用に利用可能である旨のフラグを空のブロックに付ける。次に、その結果得られた構成を７３０において保存し、動作分岐７４０が終了して、再実行の必要性が保留となる。
【００９６】
図８を参照して、図６のガーベジコレクション機能６１２の実施形態は一般的には、参照番号８００によって示される。ガーベジコレクション機能は、８０４における主要コントローラ４０から利用（入手）可能なパラメータ８０１の一部と、機能エンジンの共有パラメータ部３２２（図３）に含まれる８０６におけるモジュールから利用（入手）可能な内部パラメータとに基づいて動作することができる。パラメータ源に関係無く、ガーベジコレクション機能は、前回書き込まれたメモリ位置をリクレイムし、ウェアレベリング機能と協働してメモリ位置を後続の書き込み対象としてアクセス可能とすることに関する。本開示において用いられるように、ページが最下層レベルに位置するような単位の階層として使用できるようにメモリが割り当てられる。限られた数のページが累積してブロックとなる。１つのページは通常は、一定数の物理的記憶素子からなる。しかし、１つのページ内のデータ記憶量は、ビット密度構成によって異なり得る。部分（セクション）は、幾つかのブロックから構成され、１つの部分（セクション）中のブロック数は、部分（セクション）毎に異なり得る。各モジュールは、或る数の部分（セクション）（図５を参照）を含む。これらの部分は、モジュールのメモリデバイス上において多様な様態で割り当てることができる。
【００９７】
不揮発性メモリの動作は一般的には、メモリデバイスの物理的構成と無関係の規則に縛られることが理解されるべきである。本議論の目的のため、非限定的な例として、一般的にはＮＡＮＤフラッシュメモリの挙動に準拠した規則が用いられるが、当業者であれば、本議論を他の不揮発性メモリ技術に容易に適合することができる。メモリデバイス（例えば、ＮＡＮＤデバイス）の読み出しおよび書き込みについての一般的規則を以下に示す。
【００９８】
ａ．１つのページは、一度に書き込むことが可能な最小物理的メモリ範囲である。ページへの部分的書き込みは不可能である。
ｂ．１つのブロック中の全ページを満たすだけの充分なデータを収集した後、ブロックへの書き込みを開始し、その後、データ全てを１単位としてブロック中へと書き込むことが（必須ではないにしろ）望ましい。このようにすることで、ページ間干渉機構に対する補償が得られる。
ｃ．１つのブロックは、一度に消去することが可能なメモリの最小単位である。
【００９９】
前述の規則は、読み出しおよび書き込みアクセスのためのブロック中心の機構を暗示する。そのため、ガーベジコレクションステップにおいて、全ての活性データページまたは全ての陳腐化データページを含むブロックとしてページを整理することによって活性データページから陳腐化ページを分離することにより、記憶容量が取り出され得る。陳腐化データページしか含んでいないブロックは消去することができ、利用可能な状態にすることができる。なお、本文脈における「陳腐化」という用語は、メモリの単位（ページ、ブロックまたは部分（セクション））であって、この単位のセルに書き込まれている値がもはやモジュールによって有効と認識されていないもの、を指している。これは、モジュールによって有効と認識されている書き込みデータの別の場合とは対照的である。この後者の場合を「活性（アクティブ）」データと呼ぶ。セル中の消去状態以外の、何も値が現在書き込まれていないデータ単位を、「利用可能」なものとして定義する。
【０１００】
再度図８を参照して、主要コントローラ４０およびモジュール３０から得られたパラメータ８０１のサブセットと、他の構成パラメータとがウェアレベリング機能に適用される。他の構成パラメータを挙げると、メモリ構成およびウェアレベリング構成に関する情報がある。メモリ構成は、モジュールのメモリデバイスの割り当てられた場所上の部分、ブロックおよびページの配置構成を含み、ウェアレベリング構成は、ガーベジコレクション機能とウェアレベリング機能との間の関係を含むパラメータを含み得る。
【０１０１】
ガーベジコレクションは、１組の動作を含む。この１組の動作に起因して、陳腐化したページの特定と、陳腐化ページの陳腐化ブロックへの連結と、ブロック消去とが行われる。機能はまた、部分のレベルにおいて動作することができ、陳腐化したデータ単位を連結して部分とした後、部分の構成ブロックを消去することにより、これらの部分を利用可能な部分中へと移動させる。ガーベジコレクション機能および消去機能は、メモリ中のブロックへ影響を与える更新についての情報を通信して交換することが理解されるべきである。消去機能８０２は、ガーベジコレクション機能に対してブロック消去完了を通知し、その結果、ガーベジコレクション機能は、消去保留となっているブロックのリストからこのような消去ブロックを消去することができる。８０３において、双方向通信をパラメータ８０１を介してガーベジコレクション機能６１２とウェアレベリング機能８００との間に行う。例えば、ウェアレベリング機能は、書き込み完了および消去完了双方について、ガーベジコレクション機能へと信号送信する。これらの通知に起因して、ガーベジコレクション機能は、消去保留となっているブロックと書き込まれているブロックとについて自身が保持している構成情報を更新する。その後、ガーベジコレクション機能は、これらの変更についてウェアレベリング機能に通知し、これにより、ウェアレベリング機能は、次の書き込み位置としての優先順位に従って、利用可能な物理アドレスのリストを命令することができる。
【０１０２】
ガーベジコレクション機能は開始８１０から開始し、部分（セクション）毎に行われる。第１のステップにおいて、第１の部分（第１のセクション）の状態が８１２において取り出される。８１４において、部分（セクション）状態によって反映される部分状態を測定するための部分（セクション）基準が適用される。部分（セクション）は：（ａ）完全に有効ブロックからなるか、（ｂ）陳腐化したブロックおよび有効ブロックの混合からなるか、または、（ｃ）完全に陳腐化したブロックからなる。場合（ａ）が適用される場合、現在の部分においてウェアレベリング活動を行う必要は無いが、部分内において、部分のコンポーネントブロックにガーベジコレクションを適用する必要があり得、その結果、制御がブロックレベルプロセスへ転送され、このブロックレベルプロセスは、ブロック状態入手ステップ８１６を開始する。場合（ｂ）が８１４において適用された場合、部分基準が肯定され、陳腐化したブロックの数と、現在の部分の特定の構成について適用されたブロック閾値パラメータ８１８とを比較する。陳腐化したブロックの数が閾値よりも高い場合、８２０において部分を再割当するプロセスが行われる。実施形態において、再割当において、現在の部分と同一の構成の新規部分が割り当てられ得、未だに有効なブロック全てを現在の部分から新規部分へとコピーされる。その後、現在の部分中の全ブロックを陳腐化したものとして指定する。その後、ブロックそれぞれを消去することにより、現在の部分を消去することができる。これらのステップの後、現在の部分は、未割当のメモリのプールへと戻ることができる。８１４において場合（ｃ）が適用された場合、部分基準が肯定され、陳腐化したブロック数が閾値を超える。なぜならば、ブロック全てが陳腐化しているからである。８２０における再割当により、ブロック全てが消去され得、現在の部分が未割当のメモリのプールへと返送され得る。その後、動作は８２２へと進み、別の部分が利用可能かが決定される。別の部分が利用可能ではない場合、プロセスは８２４において終了する。別の部分が利用可能である場合、動作は８１２へと戻って、その部分が現在の部分となる。割り当てられた部分全てが取り扱われるまで、プロセスが繰り返される。
【０１０３】
８１６においてブロックレベルプロセスに入った部分については、上述したように、ブロックレベルプロセスは部分内において動作する。いくつかの場合において、各部分においてブロックレベル処理が必要になり得、これにより、モジュール全体上においてブロックレベルプロセスが完了した場合、モジュールの部分それぞれの内部においてブロックレベル処理を連続して行うことが可能になる。
【０１０４】
ブロック基準決定８３０において、ブロック再割当を必要とする１つのブロック内の陳腐化ページ数のページ閾値パラメータ８３２が呼び出される。このブロックレベルプロセスは、陳腐化単位が部分を構成するブロックではなくブロックを構成するページである点を除いて、８１４の部分基準について上述したような場合（ａ）、（ｂ）および（ｃ）における部分レベルプロセスに類似する。８３０において、ページ閾値８３２を超えるページが現在のブロック内において陳腐化した場合、場合（ｂ）および（ｃ）に対応して、新規ブロックが８３６において現在の部分内に割り当てられる。新規ブロックは、未だに活性であるページを現在のブロックから受信する。新規に割り当てられたブロックに活性ページを充填するために、このステップを複数の現在のブロック上において同時に実行することにより、新規に割り当てられたブロックに複数の現在のブロックからの活性ページを含ませることが可能になる点に留意されたい。その後、活性ページが除去された現在のブロック（または現在のブロックの組み合わせ）を消去してから、部分内の利用可能な記憶部へと消去されたブロックを返送することができる。従って、新規ブロック（単数または複数）が現在の部分内へと割り当てられて、消去対象となっているブロックから有効ページが受信される。このような割り当てられたブロックは、活性データページを含む。
【０１０５】
ブロック再割当が完了した後、動作は８４０へと進み、最終ブロックが確認される。別のブロックが利用可能である場合、動作は８１６へと戻り、ブロックレベル取り扱いの目的のために次のブロックが現在のブロックとして割り当てられる。他に利用可能なブロックが無い場合、動作は８４２へと進み、別の部分が試される。別の部分が利用可能である場合、動作は８１２へと戻る。一方、別の部分が利用不可能である場合、動作は８２４において終了する。よって、ブロックレベルプロセスは、ブロックレベル処理が行われている１つの部分中の全ブロックについて実行されるが、しかし、一定比率の活性データまたは陳腐化したページを含むブロックのみがプロセスによって調査される。活性データページも陳腐化したデータページも含まないブロックの場合、このプロセスによる調査は不要である。しかし、このようなブロックは、プロセスによる割当のために利用することが可能である。
【０１０６】
８２４において最終部分が完了することは、ウェアレベリング機能において１つのアプリケーションが完了することに対応する。いくつかの実施形態において、モジュールによって明確に呼び出された場合にのみ、ウェアレベリング機能が実行され得る。他の実施形態において、連続的に実行するバックグラウンドタスクとしてウェアレベリング機能を用いることができる。ウェアレベリングが完了した場合、ブロックレベルまたは部分レベルにおいて、ガーベジコレクション機能によって更新７５０（図７）が適用され得る。更新７５０は、ウェアレベリング機能７００（図７）および後述するＦＴＬ機能にとって可視性であり、ウェアレベリング機能７００（図７）および後述するＦＴＬ機能へ影響へ与える。
【０１０７】
図９を参照して、図６のビット密度構成機能６１４の実施形態は一般的には、参照番号９００によって示され、モジュールの不揮発性メモリのビット密度を構成する機能を示すフロー図として示される。ビット密度構成機能は、９０４において主要コントローラ４０から利用可能なパラメータ９０２の一部と、機能エンジンの共有パラメータ部３２２（図３）に含有され得る、９０６においてモジュールから利用可能な内部パラメータと、に基づいて動作することができる。この実施形態によれば、特定のビット密度における動作のためにモジュール内に部分が再割当される機能は、ガーベジコレクション機能による部分の初期割当の後に行われることが図示されている。多数の異なるビット密度が利用可能であり、これらの利用可能なビット密度は、モジュールのメモリデバイスのメモリ技術と、読み出し動作および書込動作時に用いられる符号化／復号化機能との双方に少なくとも部分的に基づいて決定することができることが理解されるべきである。ビット密度構成は、シングルビットセル構成からマルチビットセル構成へと変化し得る。セル毎に保存されたビットについての各ビット密度値も、符号化および復号化アプローチと、符号化および復号化機能によって用いられるさらなるオーバーヘッドの量および種類とに関係して変動し得る。符号化および復号化アプローチは、上述したようなコードの組み合わせを含み得る。この組み合わせは、適用されたオーバーヘッドの量の関数として結果を達成する。畳み込みコードおよびブロックコードはどちらとも、多様なレベルのオーバーヘッドにおいて動作し得、特定の量のオーバーヘッドが、このようなコードをコントローラ設定において実行するために適用されたパラメータによって決定される。オーバーヘッド量は通常は、ＳＮＲと、手元にあるメモリデバイス部の他の任意の劣化機構特性とを前にして最適性能が得られるように指定される。ビット密度は、ＮＡＮＤフラッシュ中のブロック単位レベルまで適用可能な属性として、適用され得る。最終的に、ビット密度構成の粒度は、選択された符号化および復号化機能と、モジュールのメモリデバイスにおけるメモリ技術との関数であり得る。本開示に記載される例において、所与の部分（セクション）内の全ブロックが当該部分に対して選択されたビット密度において動作するように、ビット密度構成が当該部分レベルに設定される。この部分は、単一のブロックを含み得、これはＮＡＮＤフラッシュの利用に対する関係を示し、個々のビット密度構成は、単一のブロックと同じ位に小さいデータ保持単位に適用される点に留意されたい。
【０１０８】
方法９００は、初期化分岐９１０と、更新分岐９１２とを含む。初期化分岐９１０は、新規の部分（セクション）が割り当てられる（または例えばガーベジコレクションおよびメモリ再構成に起因して再割当される）たびに、実行される。更新分岐９１２は、１つの部分の下側の物理的メモリの１領域に適用されるビット密度構成について、モジュール寿命の間に定期的に実行され得る。メモリデバイスの寿命にわたって、特定の範囲の物理的メモリは、異なる時期において異なる部分に属し得るが、任意の所与の時期において、特定の範囲は、１つよりも多くの部分に属さない場合がある。活性利用されている部分の場合、ビット密度構成機能は、部分を構成している物理的メモリの状態を監視することができる。例えば、特定のビット密度構成において動作している物理的メモリの一部分を監視しているビット密度構成機能は、物理的メモリの劣化を検出し得、これにより、同一の物理的メモリの後続再割当において、劣化に起因するより低いＳＮＲ（信号対ノイズ比）により良く耐久するビット密度構成が必要になり得る。
【０１０９】
主要コントローラ４０（図２）からのパラメータは、モジュールから供給されたものよりも優先され得る。いくつかの場合において、主要コントローラは、機能エンジンによってコントローラパラメータに基づいて行われるビット密度構成機能のうち大部分または全体をカスタマイズすることができる。他の場合において、主要コントローラは管理をモジュールに委託して、ビット密度構成機能がモジュールパラメータによって定義されるようにする。さらに他の場合において、１組の管理用パラメータは、コントローラおよびモジュールパラメータの協働的な組み合わせであり得る。しかし、いずれの場合においても、実際のビット密度構成機能は、例えば自律的にパラメータが確立された後、特定パラメータ源に無関係にモジュールによって行われる。パラメータ値は、各部分についてのビット密度構成の選択と、１つのビット密度構成から別のビット密度構成への変化と、さらには（最大数のプログラム／消去サイクルを超えることに起因して「摩耗した」コンポーネントメモリの場合のような）活性メモリプールからの一部の割当解除とについて、ビット密度の局面を決定することができることが理解されるべきである。
【０１１０】
パラメータ９０２のサブセットは、包括的なものを意図していない点に留意されたい。主要パラメータ分類を挙げると、標的使用モード（例えば、容量、密度）ならびに寿命基準（例えば、プログラム／消去サイクル数）がある。パラメータによって決定される他の基準としてメモリ物理特性があり、割当、再割当および割当解除を行う際にビット密度構成機能によって用いられる。別のパラメータ分類により、可能な構成が定義される（例えば、部分レベルにおけるビット密度構成）。複数の制御ディレクティブが、エラーレートおよびビット密度構成の変化を決定するための他の測定基準に適用される閾値を規定するパラメータと共に用いられ得る。これらの制御ディレクティブは、閾基準に相対して何らかのアクションをとる（かまたはとらない）ように機能エンジンを命令し得る。一例として、ページ中の修正されたエラーレートが一定の規定された閾値を超え始めた場合、関連付けられた制御ディレクティブに起因して、ガーベジコレクション機能が影響を受ける部分に対してプロセスを開始する。
【０１１１】
続けて図９を参照して、初期化分岐９１０は、モジュール動作の初期開始時に実行されるプロセスに適用される。初期化は一般的には、ビット密度構成の継続がパラメータの進行中の維持（例えば、モジュールメモリの動作寿命における多様な劣化および摩耗機構から発生するもの）に依存するため、１回だけ発生する。９２０において、メモリ能力データの形態で情報が収集されて、モジュール中の特定のメモリの能力の決定が可能となる。メモリ能力データは、モジュール中のメモリデバイスの局所化された部分について分類することができ、これにより、パラメータ（例えば、測定基準）がこれらの局所化された部分についてそれぞれ存在する。この局所化の粒度は、実装様態に依存し得、単一のモジュール内においても変動し得る。初期メモリ能力情報は、モジュールまたは主要コントローラによってビット密度構成についてメモリ能力を決定する目的のために行われる自己試験または他の機能の１つの結果として、得られ得る。１つの有用なパラメータとして、メモリのＳＮＲ（信号対ノイズ比）の測定値があり、この測定値そのものが、メモリの素子が保存することが可能なビット数の指標である。モジュールのメモリデバイスの使用履歴が累積するにつれて、さらなるパラメータ（例えば、ビット密度構成機能に対して更新時において収集された利用統計）により、各メモリデバイスの各物理的範囲のためにビット密度構成および再構成について後続決定が可能になる。他の利用統計が例えばデコーダ２０２（図３）から利用可能となる。初期化および動作（例えば、前述の援用された’５８５出願中に記載のもの）の目的のために、品質測定基準および関連利用統計を生成することができる。上述したようなメモリ性能に関連するパラメータ（例えば、１組の測定情報）についてこの開示において用いられる一般的用語としてメモリ能力データがあることが理解されるべきである。
【０１１２】
１組の初期メモリ能力データが初期化分岐９１０によって取得された後、１組のビット密度構成パラメータ（例えば、テンプレート）を９２４において組み立てることができる。このパラメータは、モジュールのためのビット密度構成メニューを示す。メニュー選択は、所定の１組のビット密度構成から直接得ることもできるし、あるいは導出することもできる。所定の１組のビット密度構成は、符号化および復号化機能によって用いられるパラメータの組み合わせ全体を示す。本実施形態において、各メニュー選択はメモリの一部に適用可能であるが、他の実施形態において、メニュー選択は、ブロックレベルにおいてまたはメモリ階層中におけるより低レベルにおいて適用することができる。広範囲のパラメータがメニュー選択間において可能であるが、各パラメータは、少なくともメモリ素子（メモリセル）中のビット数、符号化／復号化パラメータおよび用いられるべきパリティ量を定義することができる。
【０１１３】
９２８において、９２４からのビット密度構成パラメータをサブセット９０２からの他のパラメータと共に適用することにより、部分（セクション）マップを生成する。部分マップは、図５に模式的に示すようなデータ構造であり、各割り当てられた部分（セクション）の位置、範囲および構成をリスト化することができる。その結果、１組の部分がモジュールのメモリデバイス（図５）上にマッピングされる。部分マップ中において、各部分は、少なくとも固有のビット密度構成と共に構成され得る。部分に、ビット密度構成を適用することにより、同一ビット密度構成（例えば、メモリ素子（メモリセル）あたり４ビット）を用いた各部分から異なるビット密度構成を用いた各部分にわたる広範囲の変動に対応することが可能になる。
【０１１４】
９３０において、部分マップ生成の後、ビット密度構成が部分割当の一部として適用される。これは、論理アドレスに対応する物理的メモリの位置および範囲を定義する共有パラメータ部３２２（図３）中のＦＴＬテーブルの更新を含み得る。加えて、（ビット密度構成テンプレートからの）ビット密度構成と、その対応する部分との間の関連付けを得ることができる。この関連付けにより、主要コントローラからのコマンドにアクセスするための論理上から物理上への正しいマッピングを後続の読み出し機能、書き込み機能および消去機能によって特定することができるだけでなく、モジュール中の読み出し／書き込み設定を正しく構成することも可能になる。
【０１１５】
部分割当９３０によって定義された各部分は最終的には、１組のブロックを含む。ブロックの数を定義する必要がある。９３４において、例えば部分を含むことになるブロックの正確な数に対応できるようにテーブル領域６２０中のテーブル構造を更新することにより、各部分に対してブロック割当を行う。
【０１１６】
９３６において、モジュールのための部分構成を保存する。部分構成は、適切なパラメータ（例えば、テーブルおよび）テンプレートを含み得る。これらのパラメータおよびテンプレートを用いて、（少なくとも初期化フローの終了時における）モジュールの部分構造を完全に定義し、用いられ得る多様なビット密度構成を認識したメモリ動作をイネーブルし、継続使用に起因する劣化および摩耗効果によって必要になり得る将来の更新をイネーブルする。
【０１１７】
ここで、ビット密度構成機能の更新分岐９１２を参照して、更新分岐は、いくつかの実施形態において、モジュールの寿命にわたって間隔を空けて実行され得る。初期化プロセスの場合と同様に、適用されるパラメータは、主要コントローラおよびモジュールのいずれかによって提供される。ここでも、主要コントローラ４０（図２）からのパラメータが、モジュールから供給されるパラメータよりも優先され得る。ビット密度構成機能は、コントローラから提供されたパラメータ、モジュールから提供されたパラメータまたはこれらの任意の適切な組み合わせによって規定され得る。しかし、いずれの場合も、実際のビット密度構成機能は、特定のパラメータ源に関係無く、モジュールによって行われる。更新分岐９１２は通常は、既存の部分についてビット密度構成の変更が必要になる度に行われる。例を挙げると、ウェアレベリングおよびガーベジコレクションアクションに起因して部分を割当解除しかつ／または割り当てる必要またはメモリ劣化に起因してビット密度構成を訂正する必要がある。
【０１１８】
９４０において、初期化分岐９１０によって元々展開されたメモリ能力データを訂正することにより、更新分岐が開始する。ガーベジコレクションおよびウェアレベリング機能は、９４２および９４４それぞれにおいて入力をステップ９４０へ提供する。なぜならば、これらの機能はメモリ能力データに影響を与えるからである。上述したように、メモリ能力データは、メモリが多様なビット密度においてデータを保存および保持する能力を示し指標であるパラメータを含む。ガーベジコレクションおよびウェアレベリング機能からの入力により、メモリ能力データが訂正される。９４６において訂正されたメモリ能力データを鑑みて、再割当マップを決定する。再割当マップは、現在の部分の現在の割当と比較したときの現在の部分のビット密度構成の変化を反映する。このマップは、（ガーベジコレクション結果からの）新規割当において必要な部分を確立し、これらの部分を（ウェアレベリングから）配置することが可能な位置を確立する。
【０１１９】
ステップ９４６からの再割当マップを用いて、ステップ９４８は、現在の割当から新規割当への変更を指定することにより、更新された部分マップを生成し（ただし、現在の割当が初期分岐９１０または更新分岐９１２の前回の通過によって決定されている）、これらの変化が現在のバージョンの部分マップへと付加される。９５０において、新規／更新部分マップによって指定された通りに、新規部分がメモリへと再割当される。更新は、例えばテーブル領域６２０（図６）中のデータ構造へ更新を書き込むことにより、達成することができる。その後、ブロック割当は上述したように９３４に進む。
【０１２０】
図１０を参照して、図６のフラッシュ変換層（ＦＴＬ）機能６１６の実施形態を主に参照番号１０００によって示す。図６は、本開示のモジュールのうちの１つの不揮発性メモリに関連するフラッシュ変換層を管理するためのフロー図を示す。ＦＴＬ機能は、コマンド中に設けられた論理アドレスに基づいてデータの物理的位置を見つけることにより、主要コントローラコマンドにサービスする。この点について、図６を参照して、ウェアレベリング機能６１０、ガーベジコレクション機能６１２およびビット密度構成機能６１４の活動に起因して、モジュール中への記憶データの物理的配置が動的に行われる点に留意されたい。よって、ＦＴＬ機能は、静的物理的配置のための論理／物理アドレス変換よりも複雑なものである。すなわち、ＦＴＬ機能は、その他の機能から生成されたパラメータを用いて、部分、ブロックおよびページ中へのデータ配置に対応する動的ＦＴＬデータ構造を決定して、対応する論理アドレスのみに基づいて活性データ単位を常に配置することができるようにする。これらの動的データ構造は、図６のテーブル領域６２０中に保存することができる点に留意されたい。
【０１２１】
ＦＴＬパラメータ部１００２は、機能エンジンの共有パラメータ部３２２（図３）の一部を形成することができ、主要コントローラからのパラメータを１００４において受信し、１００６においてモジュールからモジュールパラメータを受信する。これらのパラメータの値は、モジュールによって実行されるカスタマイゼーション量とは対照的に、主要コントローラによるＦＴＬ機能の相対的カスタマイゼーションレベルに影響を及ぼし得る。他の機能の場合と同様に、上述したように、いくつかのパラメータ値に起因して、主要コントローラは、モジュールに相対してＦＴＬへより高く影響し得、他のパラメータは、モジュールによって影響を受ける傾向になる。主要コントローラまたはモジュールによる影響レベルに関係無く、機能エンジンは、パラメータ入力のみに基づいてＦＴＬ機能を例えば自律的に行うことができる。
【０１２２】
ＦＴＬパラメータ部１００２は、以下の情報も受信する：１０１０においてウェアレベリング機能７００（図７）によって生成された情報、１０１２においてガーベジコレクション機能８００（図８）によって生成された情報、１０１４においてビット密度構成機能９００（図９）によって生成された情報。ＦＴＬ機能の初期化分岐１０２０は、モジュールの初回利用の前かつユーザデータ記憶動作の任意の実行における主要コントローラによる任意のアクセスの前に、実行される。１０２４において、ウェアレベリング機能からの入力１０１０およびビット密度構成機能からの入力１０１４（例えば、ＦＴＬパラメータ部１００２によって反映されるようなもの）により、初期データ構造の構成を、論理テーブル入力の出力生成と共に開始することが可能になる。これらのデータ構造は、本質的に多レベルであるため、部分（セクション）レベル、ブロックレベルおよびページレベルにおけるマッピングを提供する。マッピングも、本質的に動的である。なぜならば、マッピングは、新規データがモジュールに書き込まれた際、および、前回書き込まれたデータが上書きまたは消去に起因して無効化される際に変更が必要である。
【０１２３】
１０２８において、物理的位置がデータ構造中の各論理入力に対応するように、論理／物理マップ入力が各論理アドレスについて生成される。初期化分岐は、実際のデータがモジュール中に書き込まれる前に発生するため、論理入力は、モジュールメモリ中の既に割り当てられかつ未だ空の領域を指定する。よって、この時点におけるデータ構造は、主要コントローラにとってアクセス可能でありかつデータを含んでいないメモリボリュームを形成する１組の部分を指し得る。論理データブロックおよび物理的ブロックとボリューム内のページとの間の接続によりこれらのデータ構造を増強することは、後続の読み出し機能、書き込み機能および消去機能のタスクである。
【０１２４】
初期化の後、１０３０において、通常動作に入り、メモリがデータ保存のためにアクセス可能となる。ＦＴＬ機能との相互作用に関する限り、読み出し動作、書き込み動作および消去動作について記載する点に留意されたい。当業者であれば、これらの動作の他の局面を理解する。機能の読み出し分岐１０３４は、読み出しコマンドに応答して実行することができ、１０３６において、機能の消去／書き込み分岐は、さらに説明するように、書き込みコマンドまたは消去コマンドに応答して実行することができる。
【０１２５】
読出動作は記憶データを変更しないため、ＦＴＬデータ構造の更新の際、読み出し分岐１０３４は不要であることが理解されるべきである。そのため、１０３８において、読み出し分岐は、自身に提出された各論理アドレスの物理アドレスを返送する。よって、モジュールが読み出しデータコマンドを主要コントローラから受信した場合、その結果得られたＦＴＬ機能への呼び出しは、物理アドレスルックアップ動作のみを必要とする。単一の読み出しコマンドに応答して、読み出し分岐を通る１つよりも多くの通過が発生し得る。なぜならば、読み出しコマンド中で要求されたデータは、複数の論理アドレスに存在するデータを含むからである。
【０１２６】
消去／書き込み分岐１０３６は、前回書き込まれていないデータブロックが書き込まれているときまたは現在書き込まれている論理アドレスの存在するデータが上書きされているときに、実行され得る。前者の場合において、論理アドレス（単数または複数）をメモリ中の物理的位置へと割り当てる必要がある。そのためには、物理的メモリを既存の部分内から特定のブロックおよびページへと指定する必要がある。コマンドによって書き込まれるべき全データを対応する物理的位置へと割り当てるために、必要なだけ消去／書き込み分岐を通過することができる。１０４０において、書込動作の対象となる物理的メモリを割り当てることができる。１０４２において、書込動作を反映するように、ＦＴＬテーブルを更新する。消去動作が必要な場合、後者の場合、ステップ１０４０は、論理アドレス（単数または複数）に対応する物理アドレス（単数または複数）に前回書き込まれたデータを無効化するために、対象メモリ位置の消去を考慮することができる。その後、ステップ１０４２は、ＦＴＬテーブルを更新して、書き込み機能に備えた無効データを含むものとして対象メモリ位置を指定する。ＦＴＬ消去機能は、主要コントローラからモジュールへの書き込みコマンドまたは消去コマンドと共に行われ得る。消去／書き込み分岐１０３６のＦＴＬ消去機能は、対応する論理アドレスの物理的消去を達成しないが、その代わりに、テーブル構造を更新して、論理アドレスと物理的位置との間の対応が無効となったことを示す。よって、消去／書き込み分岐１０３６を通じた第１の通過は、ＦＴＬ構造についての消去を考慮することができ、第２の通過は、対応する書込動作を考慮することができる。テーブル入力は、ガーベジコレクション機能６１２が陳腐化した物理的データ単位を特定した際にガーベジコレクション機能６１２によって後で更新することができ、物理的ブロック消去を行って、影響を受ける物理的データ単位を後続書き込みにおいて利用可能とする。通常動作は１０４４へ進む。
【０１２７】
ここで図１１を参照して、読出動作の実施形態がブロック図の形態で図示され、機能エンジン３２０（図６）による読出動作の補助的な相互作用を例示する目的のために、主に参照番号１１００によって示されている。１１０２において、読出動作が開始される。読出動作の機構は、個々のメモリ素子のアクセスおよび読み出しに関する限り、当業者にとって周知であり、広範な適切なプロセスをこの目的のために利用することが可能である点に留意されたい。各読出動作は、論理アドレスに向けられる。論理アドレスは、読み出し実行コマンドの一部としてホストから外部的に得られる場合もあれば、あるいは、内部的にモジュールへ得られる場合もある。いずれの場合においても、１１０４において、実際のデータが読み出し可能となる前に、読出動作により、論理アドレスがＦＴＬ機能６１６（図６および図１０）へと送られる。１１０６において、ＦＴＬ機能６１６は、読出動作からの論理アドレスの受信に応答して、物理アドレスを上記読み出し機能へと返送する。これは読出動作であるため、テーブル部６２０（図６）中のＦＴＬテーブルおよびウェアレベリングおよびガーベジコレクション機能に対する更新は不要である。なぜならば、メモリは何も変更されないからである。物理アドレスを入手した後、１１０８において、読出動作は、読み出しデータを得るように実行される。図１１は、記載を簡略化するために、単一の論理アドレスまたは物理アドレスの交換に基づく、読み出し動作について言及しているように見えるが、読出動作は複数のアドレスを用い得ることが理解されるべきである。よって、図示された読出動作の多様なステップにおいて、物理アドレスそれぞれに対する対応する読み出しステップを用いた複数の論理／物理アドレス変換も行われ得る。１１１０において、読出動作が完了し、通常動作が再開する。
【０１２８】
図１２を参照して、書込動作の実施形態がブロック図の形態で図示されており、機能エンジン３２０（図６）との書込動作の補助的相互作用を例示する目的のために、主に参照番号１２００によって示されている。１２０２において、書込動作が開始される。書込動作の機構は、個々のメモリ素子に対するアクセスおよび書き込みに関する限り、当業者にとって周知であり、この目的のために広範な適切なプロセスを用いることが可能である点に留意されたい。書込動作に起因して、一定範囲のメモリが書き込まれる。このような動作は、前回書き込まれていない論理アドレスに対して行うこともできるし、あるいは、現在書き込まれている論理アドレスに対して行うこともできる。いずれの場合においても、書込動作は、１２０４において、標的論理アドレスをＦＴＬ機能６１６（図６および図１０）へと送る。１２０６において、ＦＴＬ機能は、書き込みデータがメモリ中へと物理的に書き込まれるべき物理アドレスを返送することにより、応答する。当該書き込みが新規である（前回書き込まれていない論理アドレスに対するもの）であるにしろまたは上書きである（現在書き込まれている論理アドレスを標的とするもの）であるにしろ、ＦＴＬ機能は、書き込まれるべき物理アドレスを返送する。いずれかの場合も、ＦＴＬ機能によってＦＴＬ構成に対して更新が行われ、これは、ウェアレベリング機能６１０（図６および図）７）ならびにガーベジコレクション機能６１２（図６および図８）にとって可視化状態となる。１２０８において、書込動作によって用いられる物理アドレスが返送されるのに応答して、書込動作が実行される。図１２は記載を簡潔にするために単一の論理アドレスまたは物理アドレスの交換に基づいて書込動作に言及しているかのように見えるが、書込動作において、複数のアドレスを行うことが可能であることが理解されるべきである。よって、例示されてきた書込動作の多様なステップにおいて、物理アドレスそれぞれについての対応する書き込みステップを用いた複数の論理／物理アドレス変換が含まれ得る。同様に、ＦＴＬ、ウェアレベリングおよびガーベジコレクションパラメータを更新することで、書込動作によって書き込まれた複数の物理アドレスを反映する。１２１０において、通常動作が再開する。
【０１２９】
図１３を参照して、消去動作の実施形態がブロック図の形態で図示されており、機能エンジン３２０（図６）との消去動作の補助的相互作用を例示する目的のために、主に参照番号１３００によって示されている。１３０２において、消去動作が開始される。消去動作の構造は、個々のメモリ素子のアクセスおよび消去に関する限り、当業者にとって周知であり、この目的のために広範な適切なプロセスを用いることが可能である点に留意されたい。
【０１３０】
ここに示される消去動作の結果、一定範囲のメモリの物理的消去が行われる。そのため、この動作は、ホストから送られた消去コマンドから発生し得るような論理消去とは異なる。しかし、ホスト消去コマンドは最終的にはこの動作を呼び出す。このような物理的消去は、ホストからではなくモジュールから行われる。
【０１３１】
図６および図１３を参照して、１３０４において、現在のガーベジコレクション構成パラメータに例えば機能エンジン（図６）のテーブル部６２０からアクセスして、消去すべき物理的ブロック位置を得る（ただし、利用可能である場合）。このような消去対象となる物理的位置の同定情報は、ガーベジコレクション機能６１２（図６）によって生成され得る。１３０６において、消去のためにブロックが利用可能であるかが決定される。このようなブロックアドレスが現在利用できない場合、消去プロシージャは１３１０において終了して、通常動作へと戻る。ブロックアドレスが利用可能である場合、消去プロシージャは、ガーベジコレクション機能によって指定された消去対象として利用可能な次のブロックアドレスを得る目的のために１３１２へと進む。１３１４において、消去機能は、１３１２において得られた物理アドレスにおけるブロックをアクセスおよび消去するための消去動作を実行する。消去が完了した後、動作は１３１６へと進み、例えばテーブル部６２０を介してガーベジコレクション機能６１２を完了状態とする。実施形態において、完了状態はガーベジ接続機能へと直接提供され得その結果、ガーベジコレクション機能の構成の更新が可能となる。１３１０において、消去動作が終了して、通常動作状態へと戻る。
【０１３２】
図３および図６を参照して、各モジュール３０は、コントローラパラメータ６３０に応じて、多様なモードにおける動作に合わせて構成することができる。実施形態において、モジュールは、第１のモードにおいて機能のうち選択された１つに合わせてコントローラからの第１の１組のモジュール入力パラメータに基づいて動作することができ、第２のモードにおいて選択された機能に合わせてコントローラからの第２の１組のモジュール入力パラメータに基づいて動作することができる。第１の１組のモジュール入力パラメータは、第２の１組のモジュール入力パラメータと異なる。１組のパラメータは、例えば共有パラメータ部３２２によって保存され得る。例示目的のため、モジュールは、モジュール入力パラメータに基づいて、第１のモードをモジュールの所与の不揮発性メモリ部分（不揮発性メモリセクション）のうちの第１の部分（例えば、第１のセクション）へ適用し、第２のモードを所与の不揮発性メモリ部分（不揮発性メモリセクション）のうちの第２の部分（例えば、第２のセクション）へと適用するように構成され得る。第１の部分は、第２の部分と異なる。よって、図５において、入力パラメータに基づいて、ＮＶＭ１（部５０２）は第１のビット密度でデータを保存するように構成され得、ＮＶＭ２およびＮＶＭ４（部５０４）は、第１のビット密度と異なる第２のビット密度でデータを保存するように構成され得る。実施形態において、不揮発性メモリ全体の部分をコントローラパラメータ６３０に基づいて決定することができ、モジュールの不揮発性メモリの１つ以上のモジュールパラメータ（例えば、監視特性）に基づいてビット密度を決定することができる。いくつかの実施形態において、モジュールパラメータは誤差修正統計値であり得、例えば以下にさらに説明するようにデコーダによって生成され得る。
【０１３３】
いくつかの実施形態において、１つ以上のモジュールが、共有パラメータ部３２２（図３および図６）を介してコントローラから送られた第１の１組のモジュール入力パラメータに基づいて、機能のうち選択された１つに対して第１のモードにおいて動作することができ、これにより、このように構成された各モジュールが（コントローラからの管理またはコントローラとの相互作用無く）機能を例えば自律的に行い、共有パラメータ部３２２からの第２の１組のモジュール入力パラメータに基づいて選択された機能に対して第２のモードで動作することができる。第１の１組のモジュール入力パラメータは、第２の１組のモジュール入力パラメータと異なるため、このように構成された各モジュールは、少なくともコントローラからの部分的制御の下、機能を第２のモードにおいて行う。例えば、第１のモードにおいて、モジュールは、テーブル領域６２０（図６）内のフラッシュ変換層をコントローラから独立して自律的に管理することができ、これにより、ローカルフラッシュ変換層はコントローラによってアクセス可能となるが変更はされず、一方、第２のモードにおいて、モジュールは、コントローラからの一定の貢献（例えば、モジュールフラッシュ変換層のモジュール部を変化させること）により、フラッシュ変換層全体のモジュール部を管理することができる、なぜならば、コントローラは、多様なモジュール全てのフラッシュ変換層に対して可視性であるからである。
【０１３４】
図５を参照して上述したように、本開示は、ページ境界を跨ぐことが可能なブロック抽象化を提供する。ブロック抽象化についてのさらなる詳細について、先ず図１４を参照して説明する。図１４は、物理ページ１４０２の模式図である。物理ページ１４０２は、典型的な不揮発性メモリにより、第１のユーザデータブロック１４０４および第２のユーザデータブロック１４０６に関連して提供される。第１のユーザデータブロック１４０４は、物理ページ１４０２よりも短い。第２のユーザデータブロック１４０６は、物理ページ１４０２よりも長い。長さは、関連付けられた量のデータを示す。上述したように、従来技術は一般的には、物理ページサイズとブロックサイズとの高精度のマッチングを強要する。ブロックがページよりも短い場合、フィラービットを用いて未充填ページ中の空き空間を充填することができるが、ブロックがページよりも長い場合、従来技術の従来の制約に起因して、ブロックを保存することができない。従来技術の場合、これらの状況下において保存を行う場合は、各ページのうち少なくとも一部が利用されず、このような利用されない部分のサイズは、ブロックサイズとより大型のページサイズとの間の不整合に依存する。そのため、従来技術の場合、ユーザデータのページサイズ単位は、極めて特定の量のデータとなる。しかし、図１４のユーザデータブロックはそれぞれ、図示の物理ページと長さが異なる。物理ページ中の合計素子数未満の素子数を用いたユーザデータブロックの場合、従来技術は、このような状況に対応することができる。なぜならば、ブロックは（未使用の素子がある場合でも）１つの物理ページ中へ適合することができるからである。そのため記憶効率において損失が発生する。ユーザデータブロックが物理ページの範囲を超えた場合、従来技術の場合は、このような状況に対応することができない。なぜならば、ユーザブロックを単一の物理ページ中に適合させることが不可能だからである。
【０１３５】
しかし、本開示は、サイズ各ブロックのサイズを単一の物理ページに適合させる必要無く情報ブロックを不揮発性メモリデバイス中に保存することにより、従来技術の制約を一蹴する。例えば、各物理ページ中に含まれるスペアビット数に関係無く、ユーザデータブロックを物理的メモリに割り当てることが可能である。この点について、各ページには一般的にはスペアビットが割り当てられる。スペアビットは、例えば、パリティデータ、多様な形態のメタデータ（例を非限定的に挙げると、論理ブロックアドレス、およびＦＴＬ、ウェアレベリング、およびガーベジコレクション機能によって用いられ得るその他のフラグ、ポインタおよびカウンタカウント）に方向付けられることが理解されるべきである。本明細書中の教示内容を通じて、ユーザデータ、ＥＣＣパリティまたはメタデータとしての使用を考慮することなく、各物理ページ中のユーザデータビットおよびスペアビットの組み合わせ全てが、実質的に各ページ中の記憶空間となる。そのため、図１４のユーザデータブロックにおいて、実際のユーザデータとオーバーヘッドデータとは区別されない。しかし、関連付けられたオーバーヘッドを含むユーザ情報のブロックを、第１のユーザデータブロック１４０４の場合のように物理ページ１４０２よりも小さくすることもできるし、あるいは第２のユーザデータブロック１４０６の場合のように物理ページ１４０２よりも大きくすることもできる。いずれの場合においても、理解されるように、ユーザブロック数と物理ページ数との対応関係を用いること無く、複数のユーザ−ブロックシーケンスを物理ページの群に適合させることができる。非限定的な例として、ユーザデータブロックは、関連付けられたオーバーヘッドを含む１つ以上の５１２バイト単位（セクター）として定義することができる。すなわち、１つのブロックが１つのセクターまたは複数のセクターで構成されているかは重要ではない。なぜならば、ブロックは所望のサイズでよいからである。特定のページ内の各ブロックの起点（例えば、開始点）は、指定されたオフセットによって特徴付けられる。オフセットの追跡は、ファームウェア、ハードウェアまたはこれらの任意の適切な組み合わせで実装することができる。１つのユーザブロックが１つの物理ページを超える場合、ブロックの残り部分が後続の物理ページへと割り当てられる。このような状況が発生した場合、（以下にさらに詳述するような）ユーザブロック起点を追跡する場合と同様の方法により、ユーザブロック内の切れ目の位置をアプリケーションによって追跡する。
【０１３６】
ここで図１５を参照して、図１５は、主に参照番号１５００によって示されるブロック図であり、不揮発性メモリの一部を形成する４つの連続する物理ページＰＰ１〜ＰＰ４を模式的に示す。連続する物理ページにおいて、例えば物理アドレスを所要量だけ１つのページから次のページへとインクリメントすることにより、この１組の物理ページを連続的に物理的にアドレス指定することができる。この例において、ユーザデータブロックＢ１〜Ｂ４が用いられる。これらのユーザデータブロックＢ１〜Ｂ４それぞれの長さは、図１４の第１のユーザデータブロック１４０４によって例示され、ユーザデータブロックは、物理ページよりも短い。例示を明確にするため、ブロック長さＢＬはページ長さＰＬの０．７５倍に等しいと仮定する。理解されるように、ブロックＢ１は、物理ページＰＰ１によって完全に包含される。ブロックＢ２は、第１の部分１５１０と、第２の部分１５１２とを含む。第１の部分１５１０は、物理ページＰＰ１の最終の四分の一中に保存され、ブロックＢ１の長さ（すなわち、３/４ＰＬ）に対応する、ページ開始部からのオフセット位置にある。第２の部分１５１２は、物理ページＰＰ２中に保存され、ＰＰ２の開始部からＰＰ２の第１の半分を充填し、ブロックＢ２の最終２／３を示す。ブロックＢ３の初期部１５２０は、ＰＰ２の開始部から１/２ＰＬだけオフセットして物理ページＰＰ２の第２の半分中に保存される。ブロックＢ３の最終１／３部分１５２２は、物理ページＰＰ３の第１の１/４中に保存される。ブロックＢ４は、物理ページＰＰ３の残り部分１５２４を充填する。その後、ブロックＢ５は、ＰＰ４の開始から１/４ＰＬだけオフセットして物理ページＰＰ４の初期３/４部１５２６を充填する。ＰＰ４の最終１/４部分１５２８が空の状態で図示されているが、ＰＰ４の最終１/４部分１５２８を後続ブロックの一部によって充填してもよいし、あるいは空のままにしておいてもよい。本例において、５個のユーザブロックが４つの物理ページ上に保存される。理解されるように、ブロック長さがページ長さよりも短い場合でも、物理ページを完全に利用することが可能である。さらに、ページ境界を跨ぐ様態でブロックを保存することができる。図１５に例示するような保存は、任意の数のユーザデータブロックに対して継続してもよいし、あるいは、シーケンス中の最終ユーザデータブロックが保存されるまで継続してもよい。いくつかの場合において、シーケンス中の最終の物理ページは未利用のメモリ素子（メモリセル）を含み得るが、従来技術の場合と比べて、効率を実質的に向上させて、先行する物理ページ全てを完全に利用することが可能である。
【０１３７】
図１６は、参照番号１６００によって示されるブロック図であり、４つの連続する物理ページＰＰ１〜ＰＰ４を模式的に示す。これら４つの連続する物理ページＰＰ１〜ＰＰ４は、不揮発性メモリの一部を形成する。この例において、ユーザデータブロックＢ１〜Ｂ３が用いられる。ユーザデータブロックＢ１〜Ｂ３それぞれの長さは、図１４の第２のユーザデータブロック１４０６によって例示される。ユーザデータブロックは、物理ページよりも長い。もちろん、従来技術の場合は、このように比較的長いブロックを保存することはできない。本例において例示を明確にするために、ブロック長さＢＬはページ長さＰＬの１．２５倍に等しいと仮定する。理解されるように、初期ブロックＢ１は物理ページＰＰ１によって部分的に包含され、Ｂ１の最終部分１６１０（２０パーセント）は物理ページＰＰ２によって包含される。ブロックＢ２の初期部１６１２は、ＰＰ２の開始部から１/４ＰＬのオフセットで物理ページＰＰ２の残りを充填する。ブロックＢ２の最終部分１６１４は、物理ページＰＰ３の第１の５０パーセントを充填する。ブロックＢ３の初期部１６１６は、ＰＰ３の開始部から１/２ＰＬのオフセットで物理ページＰＰ３の最終５０パーセントを充填する。ブロックＢ３の最終部分１６１８は、物理ページＰＰ４の初期７５パーセントを充填する。ＰＰ４の最終の２５パーセントは、利用可能なブロックがもう無いため利用されないか、または、後続ブロックによって利用可能である。本例において、３つのユーザブロックが４つの物理ページ上に保存される。ブロック長さがページ長さよりも長い場合でも、物理ページを完全に利用することができる。ここでも、ページ境界を跨ぐ様態でブロックを保存することができる。この点について、本明細書中に記載された教示内容に基づいて、ユーザデータブロックサイズと物理ページサイズとの間の任意の関係に対応することができる。このような柔軟性により、従来技術で可能であった記憶効率に比して、記憶効率の向上または最大化が可能になる。このような柔軟性により、ユーザブロックサイズを変更できる能力が得られる（例えば、所与のメモリ中の物理ページサイズを、それに対応して増加させる必要無く、ユーザブロックフォーマットにＥＣＣパリティを付加できる能力）。所与のメモリデバイス中の物理ページリソースをフル活用できる傾向により、記憶効率の最適化が可能となる。
【０１３８】
図１７はフロー図であり、主に参照番号１７００によって示される。図１７は、図１５および図１６の文脈において上述したデータ構造を達成するような様態でユーザデータブロックを保存／書き込みする方法の実施形態を示す。先ず、図１５および図１６に示すように、書込動作を含む連続するかまたは一連のユーザデータブロックがプロセスによって受信され得る点に留意されたい。ブロック長さおよびページ長さは異なり得る。この方法は１７０２から開始し、１７０４へと進み、プロセスの開始時において初期ユーザデータブロックを回収する。１７０６において、物理ページのその開始部から幾らかオフセットした位置に、現在のユーザデータブロックをマッピングする。幾らかのオフセットは、ゼロまたは非ゼロのオフセット値であり得る。オフセットは、例えば、先行ブロックメタデータ中の値として保存してもよいし、あるいは、ＦＴＬ機能によって生成および利用されるテーブル中に含まれるアドレスとして保存してもよい。１７１０において、現在のユーザデータブロックが書き込み転送における最終ブロックであるかが決定される。現在のユーザデータブロックが書き込み転送における最終ブロックではない場合、動作は１７１２へと進み、現在のページが満杯であるかについて試験が行われる。現在のページが満杯である場合、動作は１７１４へと進み、ページが書き込まれる。その後、動作は１７０４へと戻る。１７１２において、ページが満杯ではない場合、動作は１７０４へと戻る。ここで１７１０へと戻って、最終ユーザブロックが検出された場合、動作は１７１６へと進み、現在のページ中に空間が残っている場合、当該空間を充填する。１７１８において、最終ページが書き込まれ、動作は１７２０において終了し、次の書込動作を待機する。
【０１３９】
図１８は別のフロー図であり、主に参照番号１８００によって示される。図１８は、ユーザデータブロックを図１５および図１６の文脈において上記したデータ構造から読み出す方法の実施形態を示す。ブロック長さおよびページ長さは異なり得る。方法は１８０２から開始し、１８０４へと進んで、プロセス開始時において初期物理ページを回収する。１８０６において、回収されたページをユーザブロックへとマッピングして、ユーザブロックを回復させる。マッピングは、ユーザブロックを取り出すためにものであり、例えば書込動作（図１７）時に生成されたオフセットに基づき得、先行ブロックと共にメタデータとして保存されたかまたはＦＴＬ機能によって生成および利用されるテーブル中に保存されたアドレスとして保存される。１８０８において試験を行って、ユーザデータブロックの回復が完了したかを決定する。回復が完了した場合、回復されたブロックを１８１０において転送する。しかし、一方、１８０８において、ブロックが１つの物理ページから次の物理ページに跨がっていること（例えば、図１５中のブロックＢ２および図１６中のブロックＢ１を参照）に起因してユーザデータブロックが不完全であることが特定される場合もあることが理解されるべきである。この場合、動作は１８０４へと戻り、次のページを読み出す。この次のページは、不完全なブロックの残り部分を含む。マッピング１８０６により、不完全なブロックが再度組み立てられ、完成したブロックがブロック送り１８１０へと送られる。１８１２において、現在の読出動作の最終ユーザブロックが回復されたかが試験により決定される。現在の読出動作の最終ユーザブロックが回復されていない場合、動作は１８０４へ戻って次のページを読み出す。最終のユーザブロックが回復された場合、現在の読出動作は１８１６において終了し、次の読出動作を待機する。
【０１４０】
上記を鑑みて、極めて柔軟な読み出し／書き込み配置構成および関連付けられた方法が提供される。この構成および方法は、読出／書込動作において少なくとも１つのソリッドステートメモリデバイスへアクセスするために用いられる。メモリデバイスは、複数のメモリ素子から構成される。これらのメモリ素子は、１組のページとして編成される。これらのページは、物理的かつ逐次的にアドレス指定可能であり、１組のページ中の連続するページ間にページ境界が規定されるように、各ページがページ長さを有する。システムによって提供される制御配置構成は、連続する一連のページにおける所与の書込動作と関連付けられたデータブロックの群を保存およびアクセスするように構成され、これにより、一連のページのうち少なくとも最初のページが充填され、群の各ブロックのブロック長さは、ページ長さと異なり得る。ブロックのうち少なくとも１つは、任意のページ境界からオフセットした様態で保存することができることが理解されるべきである。一連の物理ページが最初の２ページ以上および最終ページを有する場合、システムは、データブロックの群に基づいて、最初のページのうち少なくとも各ページを充填することができる。最終ページは、充填してもよいし、あるいは部分的に充填してもよい。最終ページが部分的に充填された場合、利用可能な空間が別のブロックのうち少なくとも一部によって充填され得る。物理ページは、１つ以上のブロック境界を含み得る。ブロックの開始は、例えば、物理ページの開始からオフセットした状態で特定され得る。これを少し言い換えると、特定のブロックの第１の部分が第１のページ内に保存されかつ特定のブロックの第２の部分が第２のページ内に保存されるよう、１つのデータブロック群中の特定のブロックを保存することができ、これにより、特定のブロックの保存は、第１のページと第２のページとの間のページ境界を横断する。本議論の目的のため、第１のページおよび第２のページは、図１５および図１６のデータ構造内の任意の２つの隣接する物理ページであり得る。
【０１４１】
本明細書中に詳述される本開示のＳＳＤおよび関連付けられたモジュールにより、分散型機能を備えたシステムが得られ、このシステムは、従来技術のアプローチの場合は集中して行われることが多かった活動を分散させることが理解されるべきである。スケーラビリティの属性は、集中型機能よりも非集中型（分散型）機能によってより容易に達成される。すなわち、非集中型機能を備えた分散型コンポーネント（例えば、上記したモジュール）を用いれば、所与のシステムがスケールアップされる際の、システムオーバーヘッドのインクリメント付加を限定することが可能になる。これとは対照的に、集中型システムの場合、記憶装置の追加と共にシステム複雑性もさらに増すため、集中型コントローラの能力増強が必要になる。集中型埋設マイクロプロセッサおよび埋設ソフトウェアの場合、リソース管理能力が、中央コントローラの演算能力および他の能力の制約によって限定される。そのため、より低い機能階層レベルにおいて機能を追加することが可能なシステムを用いれば、集中型能力として同一機能を追加しようとするシステムの場合よりも、属性としてのスケーラビリティをより容易に達成することができる。
【０１４２】
本発明の上記の記載を、例示および説明目的のために提示してきた。この記載は網羅的なものではなく、本発明を開示の様態のみに限定するものでもない。上記教示内容を鑑みれば、他の改変および変更が可能である。当業者であれば、特定の改変、置換、追加およびその副結合が可能であることを認識する。
【図１】
0005894192.tif 000002
【図２】
0005894192.tif 000003
【図３】
0005894192.tif 000004
【図４】
0005894192.tif 000005
【図５】
0005894192.tif 000006
【図６】
0005894192.tif 000007
【図７】
0005894192.tif 000008
【図８】
0005894192.tif 000009
【図９】
0005894192.tif 000010
【図１０】
0005894192.tif 000011
【図１１】
0005894192.tif 000012
【図１２】
0005894192.tif 000013
【図１３】
0005894192.tif 000014
【図１４】
0005894192.tif 000015
【図１５】
0005894192.tif 000016
【図１６】
0005894192.tif 000017
【図１７】
0005894192.tif 000018
【図１８】
0005894192.tif 000019