(57)【特許請求の範囲】
【請求項１】
いくつかのメモリデバイスに結合されるように構成されるコントローラを備える装置であって、該コントローラは、
前記いくつかのメモリデバイスに書き込まれるデータのいくつかのセクターを受け取ることと、
前記いくつかのセクターに、前記いくつかのセクターに対応し第１の完全性データを含み第１の形式を有する第１のメタデータを付加することと、
第２の形式を有する第２のメタデータで与えられ前記いくつかのセクターの中の少なくとも１つに対応する第２の完全性データを生成することと、
前記第２のメタデータで与えられ前記第２の完全性データおよび前記いくつかのセクターの中の少なくとも１つに対応するエラーデータを含む第３の完全性データを生成することを含み、
前記コントローラは、前記第２の完全性データを生成する前に前記第１の完全性データの検査を実行するように構成される、装置。
【請求項２】
前記メモリデバイスに書き込まれる前記いくつかのセクターに対応する前記第１のメタデータの前記第１の完全性データは、１セクター単位のエラーデータを含み、
第１のいくつかのセクターの中の少なくとも１つに対応する前記第２のメタデータの前記第２の完全性データは、複数セクター単位のエラーデータを含む、請求項１に記載の装置。
【請求項３】
前記コントローラは、前記いくつかのセクターおよび対応する前記第２の形式を有する第２のメタデータを前記いくつかのメモリデバイスに書き込むように構成され、前記コントローラはさらに、
読み出し動作に関連して第１のいくつかのセクターおよび対応する第２のメタデータを前記いくつかのメモリデバイスから受け取ることと、
前記第３の完全性データの前記エラーデータの検査を実行することと、
その後、前記第２の完全性データのエラーデータおよびアドレスデータの少なくとも一方の検査を実行することと、
前記いくつかのセクターをホストに与える前に、前記第１のいくつかのセクターと関連づけられたメタデータ形式を調整して前記第２の形式から前記第１の形式に戻すこととを目的に構成される、請求項１に記載の装置。
【請求項４】
前記コントローラは、第１のいくつかのセクターを前記ホストに与える前に、前記第１のいくつかのセクターと関連づけられたメタデータ形式を調整して前記第２の形式から前記第１の形式に戻すように構成され、該コントローラは、
前記いくつかのセクターに関する１セクター単位のエラーデータを生成することと、
前記いくつかのセクターを前記ホストに与える前に、各セクターの前記エラーデータの検査を実行するように構成される、請求項３に記載の装置。
【請求項５】
いくつかのメモリデバイスに結合されるように構成されるコントローラを備える装置であって、該コントローラは、
前記いくつかのメモリデバイスに書き込まれるデータのいくつかのセクターを受け取ることと、
前記いくつかのセクターに、前記いくつかのセクターに対応し第１の完全性データを含み第１の形式を有する第１のメタデータを付加することと、
第２の形式を有する第２のメタデータで与えられ前記いくつかのセクターの中の少なくとも１つに対応する第２の完全性データを生成することと、
前記第２のメタデータで与えられ前記第２の完全性データおよび前記いくつかのセクターの中の少なくとも１つに対応するエラーデータを含む第３の完全性データを生成することを含み、
前記コントローラは、前記第１のメタデータを付加するように構成され、
該装置は、１セクター単位で前記第１の完全性データのエラーデータを生成することと、書き込み動作に関連して前記第２の完全性データを生成する前に、前記エラーデータを前記第１のメタデータに挿入することを目的に構成される前記コントローラを備える、装置。
【請求項６】
いくつかのメモリデバイスに結合されるように構成されるコントローラを備える装置であって、該コントローラは、
前記いくつかのメモリデバイスに書き込まれるデータのいくつかのセクターを受け取ることと、
前記いくつかのセクターに、前記いくつかのセクターに対応し第１の完全性データを含み第１の形式を有する第１のメタデータを付加することと、
第２の形式を有する第２のメタデータで与えられ前記いくつかのセクターの中の少なくとも１つに対応する第２の完全性データを生成することと、
前記第２のメタデータで与えられ前記第２の完全性データおよび前記いくつかのセクターの中の少なくとも１つに対応するエラーデータを含む第３の完全性データを生成することを含み、
前記データのいくつかのセクターは、データの第１のいくつかのセクターを含み、前記コントローラは、部分ページ書き込み動作に関連して、
１ページのデータに対応する第２のいくつかのセクターを前記いくつかのメモリデバイスから受け取ることであって、前記第２のいくつかのセクターがそれに対応しかつ前記第２の形式を有するメタデータと関連づけられている、受け取ることと、
前記いくつかのメモリデバイスからの前記ページの前記セクターと関連づけられたメタデータ形式を前記第２の形式から前記第１の形式に調整することと、
前記データのページに対応する前記第２のいくつかのセクターの中の少なくとも１つを前記第１のいくつかのセクターの中の少なくとも１つに置き換えることによって結合ページを形成することとを目的にさらに構成される、装置。
【請求項７】
前記コントローラは、前記データのページに対応する前記第２のいくつかのセクターの中の少なくとも１つを前記第１のいくつかのセクターの中の少なくとも１つに置き換える前に、前記第２のいくつかのセクターに対応する前記メタデータのエラーデータの検査を実行するように構成される、請求項６に記載の装置。
【請求項８】
いくつかのメモリデバイスに結合されるように構成されるコントローラを備える装置であって、該コントローラは、
前記いくつかのメモリデバイスに書き込まれるデータのいくつかのセクターを受け取ることと、
前記いくつかのセクターに、前記いくつかのセクターに対応し第１の完全性データを含み第１の形式を有する第１のメタデータを付加することと、
第２の形式を有する第２のメタデータで与えられ前記いくつかのセクターの中の少なくとも１つに対応する第２の完全性データを生成することと、
前記第２のメタデータで与えられ前記第２の完全性データおよび前記いくつかのセクターの中の少なくとも１つに対応するエラーデータを含む第３の完全性データを生成することを含み、
前記いくつかのセクターは第１のいくつかのセクターを含み、前記コントローラは、前記第１のいくつかのセクターおよび対応する前記第２の形式の第２のメタデータを１ページのデータとして前記いくつかのメモリデバイスに書き込むように構成され、前記コントローラは、部分ページ読み出し動作に関連して、
１ページのデータに対応する第２のいくつかのセクターを前記いくつかのメモリデバイスから受け取ることであって、該第２のいくつかのセクターがそれに対応しかつ前記第２の形式を有するメタデータと関連づけられている、受け取ることと、
前記部分ページ読み出し動作に関連した前記第２のいくつかのセクターの中の選択された１つまたは複数のセクターに対応する前記メタデータのエラーデータの検査を実行することと、
前記第２のいくつかのセクターの中の前記選択された１つまたは複数のセクターと関連づけられたメタデータ形式を前記第１の形式に調整し、前記選択されたセクターに対応する前記メタデータに１セクター単位の完全性データが含まれるようにすることと、
前記部分ページの前記選択されたセクターをホストに与える前に、前記選択されたセクターに対応する前記完全性データの検査を実行することと
を目的にさらに構成される、装置。
【請求項９】
前記コントローラは、前記部分ページ読み出し動作に関連して、前記選択されたセクターに対応する前記完全性データの検査を実行する前に、前記いくつかのメモリデバイスから受け取った前記選択されたセクターに対応する前記メタデータの完全性データの検査を実行するようにさらに構成される、請求項８に記載の装置。
【請求項１０】
データ完全性を与えるための方法であって、
メモリデバイスに書き込まれるべきデータのいくつかのセクターであって、前記いくつかのセクターと関連づけられた第１の完全性データを含み特定のメタデータ形式を有する第１のメタデータを有する前記いくつかのセクターを受け取り、
調整メタデータ形式を有する第２のメタデータで与えられ前記いくつかのセクターの中の少なくとも１つに対応する第２の完全性データを生成し、
前記第２のメタデータで与えられ前記第２の完全性データおよび前記いくつかのセクターの中の前記少なくとも１つに対応するエラーデータを含む第３の完全性データを生成することとを含み、
前記第２の完全性データを生成する前に、１つのページを前記メモリデバイスから読み出すことであって、前記ページが複数のセクターと前記調整メタデータ形式を有する対応するメタデータとを含む、読み出すことと、
前記ページと関連づけられた完全性データの検査を実行することと、
前記複数のセクターと関連づけられた前記調整メタデータ形式を前記特定のメタデータ形式に調整することと、
前記読み出しページと関連づけられた前記複数のセクターの中の１つまたは複数のセクターを前記受け取ったいくつかのセクターの中の１つまたは複数のセクターに置き換えることによって、前記メモリデバイスに書き込む前に書き込みページを形成することと
を含む、データ完全性を与えるための方法。
【請求項１１】
前記特定のメタデータ形式は１セクター単位の前記第１の完全性データを含み、前記調整メタデータ形式は複数セクター単位の前記第２の完全性データを含む、請求項１０に記載の方法。
【請求項１２】
前記第１のメタデータを前記第２のメタデータに置き換えることをさらに含む、請求項１０に記載の方法。
【請求項１３】
前記メモリデバイスに書き込まれる前記いくつかのセクターの中の１つまたは複数のセクターに関連する読み出し動作に関連して、
前記１つまたは複数のセクターに対応する前記第２のメタデータで与えられる前記第３の完全性データの検査を実行することと、
前記第３の完全性データの検査後、前記いくつかのセクターの中の前記１つまたは複数のセクターに対応するエラーデータを含む前記第２の完全性データの検査を実行することと、
前記いくつかのセクターの中の前記１つまたは複数のセクターと関連づけられた前記調整メタデータ形式を調整して前記特定のメタデータ形式に戻すことと
を含む、請求項１０から１２のいずれか一項に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、概括的には半導体メモリデバイス、方法、およびシステムに関し、より具体的には、データ完全性を与えるための装置および方法に関する。
【背景技術】
【０００２】
メモリデバイスは、典型的には、コンピュータ内の内部回路、半導体、集積回路またはその他の電子機器として提供される。揮発性メモリおよび不揮発性メモリを含む多くの異なる種類のメモリが存在する。揮発性メモリは、そのメモリのデータを保持するために電力を必要とする場合があり、たとえば、ランダムアクセスメモリ（ＲＡＭ）、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、シンクロナスダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）などがこれに含まれる。不揮発性メモリは、無給電時に格納データを保持することによって永続的データを提供することができ、たとえば、ＮＡＮＤフラッシュメモリ、ＮＯＲフラッシュメモリ、読み出し専用メモリ（ＲＯＭ）、電気的に消去可能なプログラマブルＲＯＭ（ＥＥＰＲＯＭ）、消去可能なプログラマブルＲＯＭ（ＥＰＲＯＭ）のほか、相変化ランダムアクセスメモリ（ＰＣＲＡＭ）、抵抗変化ランダムアクセスメモリ（ＲＲＡＭ（登録商標））、磁気抵抗ランダムアクセスメモリ（ＭＲＡＭ）などの可変抵抗メモリがこれに含まれうる。
【０００３】
メモリデバイスを組み合わせ、ソリッドステートドライブ（ＳＳＤ）などのメモリシステムのストレージボリュームを形成することができる。ソリッドステートドライブには、不揮発性メモリ（たとえばＮＡＮＤフラッシュメモリおよびＮＯＲフラッシュメモリ）および／または揮発性メモリ（たとえばＤＲＡＭおよびＳＲＡＭ）が含まれるほか、その他各種の不揮発性および揮発性メモリが含まれうる。フラッシュメモリデバイスには、データを窒化物層内の電荷トラップ内に格納する半導体−酸化物−窒化物−酸化物−半導体および金属−酸化物−窒化物−酸化物−半導体のコンデンサ構造を使用したフローティングゲートフラッシュデバイスおよびチャージトラップフラッシュ（ＣＴＦ）デバイスが含まれ、これを広範な電子的用途のための不揮発性メモリとして利用することができる。フラッシュメモリデバイスは、典型的には、高メモリ密度、高信頼性、および低電力消費を実現可能な１トランジスタ型メモリセルを使用する。
【０００４】
ＳＳＤは、性能、サイズ、重量、耐久性、動作温度範囲、および電力消費に関してハードドライブに勝る利点を持ちうるため、コンピュータの主記憶装置としてハードディスクドライブを代替するために使用することができる。たとえば、ＳＳＤは、可動部品がないことにより、シークタイム、レイテンシーなど、磁気ディスクドライブに付随する電気機械的遅延を回避しうるため、磁気ディスクドライブと比較して、すぐれた性能を有することができる。ＳＳＤ製造業者は、不揮発性フラッシュメモリを使用して内蔵電池供給が不要なフラッシュＳＳＤを作製することができ、そのためドライブをより多用途かつ小型にすることが可能になる。
【０００５】
ＳＳＤには、いくつかのメモリデバイス（たとえばいくつかのメモリチップ）が含まれうる。メモリデバイスには、いくつかのダイおよび／または論理ユニット（ＬＵＮ）が含まれうる。各ダイの面上にいくつかのメモリアレイおよび周辺回路を設けることができ、そのメモリアレイには、いくつかの物理ページに編成されたメモリセルのいくつかのブロックが含まれうる。
【０００６】
ＳＳＤは、メモリデバイスとホスト間でデータ（たとえばユーザーデータおよびそれに関連するエラーデータ、アドレスデータなどの完全性データ）を転送するための、読み出しおよび書き込み動作などのメモリ動作に関連してホストからコマンドを受け取ることができる。たとえば転送中にデータが破壊されていないという確信を与えるために、それらの動作に関連してメモリデバイスとホストとの間で転送されるデータのエンド−エンド間の完全性を提供することが有益でありうる。
【図面の簡単な説明】
【０００７】
【図１】本開示の１つまたは複数の実施形態による少なくとも１つのメモリシステムを含むコンピューティングシステムの機能ブロック図である。
【図２】本開示の１つまたは複数の実施形態による転送データの完全性を与えることに関連したメモリコントローラの機能ブロック図である。
【図３】本開示の１つまたは複数の実施形態による転送データの完全性を与えることに関連したメタデータ形式を示す図である。
【図４】本開示の１つまたは複数の実施形態による転送データの完全性を与えることに関連したメタデータ形式を示す図である。
【図５】本開示の１つまたは複数の実施形態による転送データの完全性を与えることに関連したメタデータ形式を示す図である。
【図６】本開示の１つまたは複数の実施形態によるメモリコントローラの機能ブロック図である。
【発明を実施するための形態】
【０００８】
本開示は、データ完全性を与えるための装置（たとえばコンピューティングシステム、メモリシステム、コントローラなど）および方法を含む。１つまたは複数の方法実施形態には、たとえば、いくつかのメモリデバイス（たとえば単一メモリデバイス）に書き込まれるデータのいくつかのセクターを受け取ることと、およびそのいくつかのセクターに対応する第１のメタデータを付加することと、そのいくつかのセクターに第１の完全性データを含めることとが含まれ、この第１のメタデータは特定の形式を有するものである。方法実施形態にはさらに、第２のメタデータで与えられる第２の完全性データを生成することが含まれ、この第２の完全性データはいくつかのセクターの中の少なくとも１つに対応するものである（第２のメタデータは第２の形式を有する）。方法実施形態にはさらに、第２のメタデータで与えられる第３の完全性データを生成することが含まれ、この第３の完全性データは、第２の完全性データおよびいくつかのセクターの中の少なくとも１つに対応するエラーデータを含むものである。
【０００９】
本開示の１つまたは複数の実施形態は、たとえばメモリシステム内のエンド−エンド間のデータ完全性を与える柔軟なアーキテクチャを提供する。たとえば、１つまたは複数の実施形態は、メタデータ形式変換を実行することができ、これには、各種メモリデバイスと関連付けられた異なるページサイズおよび／または利用可能メタデータサイズに適合させることが可能になるなど、さまざまな利点がある。１つまたは複数の実施形態は、本明細書に説明する実施形態に従ってデータ完全性を維持しながらエラー回復動作を実行することができるコントローラを含み、これにより、実施されるデバイス製造試験（たとえば消費者に引き渡す前の現場での出荷前試験）の量の低減など、さまざまな利点が提供されうる。
【００１０】
本開示に関する以下の詳細な説明では、本明細書の一部を形成する添付の図面を参照する。各図面には、本開示の１つまたは複数の実施形態を実践することが可能な方法が例示されており、これらの実施形態は、本開示の実施形態を当業者が実践できるように十分な詳しさで説明されている。当然のことながら、その他の実施形態も利用可能であり、また、本開示の範囲から逸脱することなく、プロセスの変更、電気的および／または構造的変更を加えることができる。本明細書で使用される指示記号「Ｎ」は、とくに図面内の参照番号に関して、その記号によって指示されたいくつかの特定機能要素を本開示の１つまたは複数の実施形態に含めることができるということを示す。本明細書で使用される用語の「いくつかの（ａ  ｎｕｍｂｅｒ  ｏｆ）〜」は、１つまたは複数の対象物に言及することができる（たとえば、いくつかのメモリデバイスは１つまたは複数のメモリデバイスに言及しうる）。
【００１１】
本明細書の図は、先頭の数字（１桁または複数桁）が図面番号に対応し、残りの数字が図面内の要素または構成部分を識別するという付番規則に従っている。複数の図に含まれる類似の要素または構成部分は、同様の数字の使用によって識別されうる。たとえば、１０８は図１の要素「０８」を参照し、図２では類似要素が２０８として参照されうる。当然ながら、本明細書中の各種の実施形態に示された要素を追加、交換および／または除去することにより、本開示のいくつかの付加的な実施形態が提供されうる。さらに当然のこととして、図中に示された各要素の比率および相対的な大きさは、本発明の実施形態を図示することを意図したものであり、限定の意味で解釈されるべきではない。
【００１２】
図１は、本開示の１つまたは複数の実施形態による少なくとも１つのメモリシステム１０４を含むコンピューティングシステム１００の機能ブロック図である。メモリシステム１０４は、たとえばソリッドステートドライブ（ＳＳＤ）であってよく、物理ホストインタフェース１０６、メモリシステムコントローラ１０８（たとえばプロセッサおよび／またはその他の制御回路）、および１つまたは複数のメモリデバイス１１０−１〜１１０−Ｎ（たとえばＮＡＮＤフラッシュデバイスなどのソリッドステートメモリデバイス）が含まれうる。これにより、メモリシステム１０４のストレージボリュームが提供される。
【００１３】
図１に示すように、物理ホストインタフェース１０６はコントローラ１０８に結合されており、メモリシステム１０４とホスト１０２との間でデータを通信するために使用することができる。インタフェース１０６は、標準化インタフェースの形であってよい。たとえば、メモリシステム１０４がコンピューティングシステム１００内のデータストレージ用に使用される場合、物理ホストインタフェース１０６は、ＳＡＴＡ（ｓｅｒｉａｌ  ａｄｖａｎｃｅｄ  ｔｅｃｈｎｏｌｏｇｙ  ａｔｔａｃｈｍｅｎｔ）、ＰＣＩｅ（ｐｅｒｉｐｈｅｒａｌ  ｃｏｍｐｏｎｅｎｔ  ｉｎｔｅｒｃｏｎｎｅｃｔ  ｅｘｐｒｅｓｓ）、ユニバーサルシリアルバス（ＵＳＢ）、またはその他各種のコネクタおよびインタフェースでありうる。しかし、一般に物理ホストインタフェース１０６は、メモリシステム１０４とホスト１０２との間で制御、アドレス、データ、およびその他の信号を受け渡しするためのインタフェースを提供することができ、ホスト１０２は物理ホストインタフェース１０６に対する適合レセプタを有する。
【００１４】
ホスト１０２は、パーソナルラップトップコンピュータ、デスクトップコンピュータ、デジタルカメラ、携帯電話、またはメモリカードリーダーなどのホストシステムのほか、その他各種のホストでありうる。ホスト１０２は、システムマザーボードおよび／またはバックプレーンとともにメモリアクセスデバイス（たとえばいくつかのプロセッサ）を備えることができる。
【００１５】
コントローラ１０８は、データの読み出し、書き込み、消去などの各種動作を実行するために、メモリデバイス１１０−１〜１１０−Ｎと通信することができる。コントローラ１０８は、たとえば、いくつかのコンポーネント（たとえば１つまたは複数の集積回路）を含む回路および／またはファームウェアであってよい。たとえば、コントローラ１０８は、メモリデバイス１１０−１〜１１０−Ｎに対するアクセスを制御するための制御回路およびホスト１０２とメモリシステム１０４との間の変換層を与えるための回路を備えることができる。したがって、メモリコントローラ１０８は、適切な信号を適切な時間に適切なＩ／Ｏ接続で受け取るためにメモリデバイス１１０−１〜１１０−ＮのＩ／Ｏ接続（図１に図示せず）を選択的に結合することができる。同様に、ホスト１０２とメモリシステム１０４との間の通信プロトコルは、メモリデバイス１１０−１〜１１０−Ｎにアクセスするために使用されるプロトコルと異なるものであってよい。その場合、コントローラ１０８は、ホスト１０２から受け取ったコマンドを適切なコマンドに変換して、いくつかのメモリデバイス１１０−１〜１１０−Ｎに対する所望のアクセスを達成することができる。
【００１６】
メモリデバイス１１０−１〜１１０−Ｎには、メモリセル（たとえば不揮発性メモリセル）の１つまたは複数のアレイが含まれうる。それらのアレイは、たとえばＮＡＮＤアーキテクチャを有するフラッシュアレイであってよい。しかし、実施形態は、特定の種類のメモリアレイまたはアレイアーキテクチャに限定されない。
【００１７】
メモリデバイス１１０−１〜１１０−Ｎには、たとえば、いくつかの物理ページを含むいくつかのブロックへのグループ化が可能ないくつかのメモリセルが含まれうる。メモリセルのプレーンにいくつかのブロックを含めることができ、１つのアレイにいくつかのプレーンが含まれうる。一例として、１つのメモリデバイスは、１ページ当たり４３２０バイト（Ｂ）のデータ、１ブロック当たり１２８ページ、１プレーン当たり２０４８ブロック、および１デバイス当たり１６プレーンを含むことができる。
【００１８】
動作時には、メモリシステムのメモリデバイス（たとえばシステム１０４のメモリデバイス１１０−１〜１１０−Ｎ）に対し、１ページのデータとしてデータの書き込みおよび／または読み出しを実行することができる。そのような１ページのデータはメモリシステムのデータ転送サイズと呼ぶことができる。ホスト（たとえばホスト１０２）との間でデータをセクター単位で転送することができる。そのような１セクターのデータはホストのデータ転送サイズと呼ぶことができる。
【００１９】
１ページのデータには、ユーザーデータのいくつかのバイト（たとえばデータのいくつかのセクターを含むデータペイロード）とともに、それに対応するメタデータが含まれうるが、多くの場合、１ページのデータのサイズによって表されるのは、ユーザーデータを格納するために使用されるバイト数のみである。一例として、４ＫＢのページサイズを有する１ページのデータには、ユーザーデータを格納するために使用される４ＫＢ（たとえばセクターサイズを５１２Ｂと仮定して８セクター）とともに、そのユーザーデータに対応するメタデータを格納するためのいくつかのバイト（たとえば３２Ｂ、５４Ｂ、２２４Ｂなど）が含まれうる。そのメタデータには、エラーデータ（たとえばエラー検出および／または訂正コードデータ）などの完全性データおよび／またはアドレスデータ（たとえば論理アドレスデータ）のほか、ユーザーデータに対応する各種のメタデータを含めることができる。
【００２０】
メモリデバイス（たとえばデバイス１１０−１〜１１０−Ｎ）の種類によって、提供されるページサイズが異なり、かつ／または格納ページに関連して利用可能なメタデータバイトの量が異なることがある。また、メモリデバイスの種類によってビットエラーレートが異なることがあり、その場合、データページの完全性を確保するために必要なメタデータの量が変化する場合がある（たとえば、ビットエラーレートがより高いメモリデバイスは、ビットエラーレートがより低いメモリデバイスと比較して、より多くのバイト数のエラー訂正コードデータを必要とすることがある）。一例として、マルチレベルセル（ＭＬＣ）ＮＡＮＤフラッシュデバイスのビットエラーレートは、シングルレベルセル（ＳＬＣ）ＮＡＮＤフラッシュデバイスよりも高くなる可能性がある。そのため、ＭＬＣデバイスは、エラーデータに関してＳＬＣデバイスよりも多くのメタデータバイトを使用することがある。場合によっては、１ページのデータに関する所望の完全性を与えるために必要なメタデータの量が１つのメモリデバイスによって提供されるメタデータバイト数を超えることもある。すなわち、当該ページに対応する複数セクター（たとえばユーザーデータ）に関する十分なエンド−エンド間のデータ完全性を与えるために望ましい量よりも利用可能な量のメタデータバイトの方が少ないということが起こりうる。
【００２１】
図２は、本開示の１つまたは複数の実施形態による転送データの完全性を与えることに関連したメモリコントローラ２０８の機能ブロック図である。コントローラ２０８は、図１に示したメモリシステム１０４などのメモリシステムのコンポーネントであってよい。当業者によって理解されるように、図２に示した以外の追加回路およびコンポーネントを設けることができ、また、図２は図示を容易にする目的で細部が簡略化されている。実施形態は図２に示した例に限定されない。たとえば、コントローラ２０８の１つまたは複数の例示コンポーネントを単一コンポーネントとして統合することができる。また、本開示のいくつかの実施形態において、１つまたは複数の例示コンポーネントを任意とすることができる。
【００２２】
図２に示すように、メモリコントローラ２０８は、ホストインタフェース２０６といくつかのメモリデバイス２１０との間でデータを転送するために使用される制御回路を備える。メモリデバイス２１０は、図１に示したメモリデバイス１１０−１〜１１０−Ｎなどのメモリデバイスであってよい。
【００２３】
いくつかの実施形態において、制御回路は、ホストインタフェース２０６といくつかのメモリデバイス２１０との間で転送されるデータの完全性を与えるために、第１の形式と第２の形式との間でメタデータ形式を整合させる（たとえば変更する）ように構成される。一例として、第１のメタデータ形式には１セクター単位の完全性データが含まれ、第２のメタデータ形式には複数セクター単位の完全性データが含まれる。詳しくは後述するように、転送データの完全性を与えることには複数の処理が含まれうる。具体的には、第１の形式を有するメタデータである、ホストから（たとえばホストからの書き込み要求に関連して）受信したいくつかのセクター（たとえば図３に示すデータフィールド３４８に配置されたセクター）に対応するメタデータ（たとえば図３に示すメタデータ３４１）について、第１の完全性データ（たとえばエラーデータおよび／またはアドレスデータ）の検査を実行すること、および第２のメタデータ（たとえば図４に示すメタデータ４４７および／または図５に示すメタデータ５４７−０／５４７−１）に関する第２の完全性データ（たとえば図４に示す完全性データ４５４−０／４５４−１および／または図５に示す５５２／５５４）を生成することが含まれ、この第２の完全性データはいくつかのセクターの中の少なくとも１つに対応しており、上記の処理にはさらに、第２のメタデータに関する第３の完全性データ（たとえば図４に示す完全性データ４５８および／または図５に示す５５８−０／５５８−１）を生成することが含まれる。この第３の完全性データは、いくつかのセクターの中の少なくとも１つに対応するとともに第２の完全性データに対応するエラーデータを含む。
【００２４】
コントローラ２０８は、（たとえばホストからの書き込み要求に応答して）ホストから受信したデータ（たとえばユーザーデータ）のいくつかのセクターを１つのページとして書き込むことができる。さまざまな例において、コントローラ２０８が受信するセクター数は、いくつかのメモリデバイス２１０のページサイズに対応するセクター数よりも少ない可能性がある。そのような場合、コントローラ２０８は、部分ページ書き込み動作を実行することができ、これには、たとえば、ホストから受信したセクターをメモリデバイス２１０から読み出したページのセクターと結合する（たとえば読み出したページのセクターをホストから受信したセクターに置き換える）ことによって結合ページを形成することと、それに続いて結合ページをメモリデバイス２１０に書き込むことが含まれうる。同様に、コントローラ２０８は、（たとえばメモリデバイス２１０のページサイズに対応するセクター数よりも少ないいくつかのセクターを対象としたホスト読み出し要求に応答して）部分ページ読み出し動作を実行することができる。部分ページ読み出し動作には、メモリデバイス２１０から１ページのデータを読み出すこと、および要求されたデータセクターのみをホストに提供することが含まれうる。詳しくは後述するように、本開示の実施形態は、上記のような部分ページ書き込みおよび／または読み出し動作に関連して転送データの完全性を与えることができる。
【００２５】
図２に示すように、コントローラ２０８は、データ完全性（ＤＩ）挿入コンポーネント２２０を備えることができる。コンポーネント２２０は、ホストから受信したデータのセクターに特定のメタデータ形式を有するメタデータを付加することができる。その特定のメタデータ形式はホスト形式と呼ばれうる。例示ホストメタデータ形式を図３に示す。この図では、ユーザーデータのセクターがデータフィールド３４８（セクターフィールド３４８とも呼ばれうる）に配置され、メタデータ３４１が付加されている。図３に示す例において、セクターフィールド３４８のサイズは５１２Ｂであり（たとえばセクターサイズが５１２Ｂ）、メタデータ３４１は８Ｂのデータ完全性フィールド（ＤＩＦ）であって、その中にサブフィールド３４２、３４４、および３４６が含まれ、これによりセクターフィールド３４８に対応するセクターと関連づけられた完全性データが与えられる。実施形態は、この例に限定されない。たとえば、セクターフィールド３４８は、５１２Ｂより大きいか、またはより小さいサイズであってよく、また、メタデータフィールド３４１は、８Ｂより大きいか、またはより小さいサイズであってよい。一例として、データフィールド３４８のサイズが４０９６バイトであり、メタデータフィールド３４１のサイズが１２８Ｂ（たとえば各ホストセクターが１２８Ｂのメタデータと関連づけられる）であるような４０９６Ｂのホストセクターサイズが可能である。図示した例において、フィールド３４６は、セクターフィールド３４８に対応するユーザーデータのセクターに対応したエラーデータを含む。この例において、フィールド３４６のエラーデータは、セクターフィールド３４８に対応するセクターに対応した２Ｂの周期的冗長検査（ＣＲＣ）である。フィールド３４４は２Ｂのアプリケーションタグであって、その中にさらなる完全性データを含むことができ、フィールド３４２は４Ｂの参照フィールドであって、その中にセクターフィールド３４８に対応するセクターと関連づけられたアドレスデータを含むことができる。
【００２６】
いくつかの実施形態において、ホストから受信したユーザーデータの各セクターにメタデータ３４１が付加される（たとえばメタデータ３４１の完全性データは１セクター単位である）。一例として、コンポーネント２２０は、１セクター単位で各セクターに関するエラーデータ３４６を計算することができる。いくつかのセクターおよび対応するメタデータ３４１の各々（たとえばいくつかのデータグループ３４０の各々）を（たとえば書き込み動作に関連してデータバッファ２２２経由で）コントローラ２０８の完全性コンポーネント２２４に転送することができる。いくつかの実施形態において、各データグループ３４０と関連づけられたメタデータ３４１はホストインタフェース２０６を出力元とすることができ、また、コンポーネント２２０を使用して、図４に示すような追加完全性データ（たとえば４５２、４５４−０、４５４−１など）を挿入することができる。いくつかの実施形態において、ホストから受信したデータのセクターに（たとえばコンポーネント２２０を使用して）メタデータ３４１のフィールド３４２、３４４、および３４６と関連づけられたデータを付加することができ、またはコントローラ２０８によって受信される前に当該データのセクターにメタデータ３４１を付加することができる。
【００２７】
図２に示した例において、コントローラ２０８は結合コンポーネント２２８を備え、データグループ３４０を完全性コンポーネント２２４に転送する前に（たとえばセクター数がフルページに対応するセクター数よりも少なく、書き込み動作が部分ページ書き込み動作になる場合）、その結合コンポーネント２２８に転送することができる。図２に示した例において、メモリデバイス２１０と関連づけられたページサイズは４ＫＢである（たとえば８個の５１２Ｂセクター）。
【００２８】
結合コンポーネント２２８は、部分ページ書き込み動作に関連して、いくつかのメモリデバイス２１０から１ページのデータに対応する第２のいくつかのセクター（たとえば８個のセクター）を受け取ることができる。この第２のいくつかのセクターには、それらのセクターに対応する第２の形式（たとえばメモリデバイス２１０と関連づけられた形式であって、メモリメタデータ形式または調整（ａｄｊｕｓｔｅｄ）形式と呼ばれうる）のメタデータが含まれうる。調整形式については、図４および図５に例示して、より詳しく説明する。いくつかの実施形態において、結合コンポーネント２２８は、メモリデバイス２１０から受け取ったデータのページに対応する第２のいくつかのセクターの中の少なくとも１つを、ホストから受信した第１のいくつかのセクター（たとえばセクターフィールド３４８に対応するセクター）の中の少なくとも１つに置き換えることによって、結合ページを形成することができる。結合コンポーネント２２８は、結合ページのセクターを完全性コンポーネント２２４に与える前に、その結合ページのセクターと関連づけられたメタデータ形式を調整形式からホスト形式に変更することもできる。いくつかの実施形態において、結合コンポーネント２２８は、当該データのページに対応する第２のいくつかのセクターの中の少なくとも１つをセクターフィールド３４８に対応する第１のいくつかのセクターの中の少なくとも１つに置き換える前に、その第２のいくつかのセクターに対応するメタデータのエラーデータの検査（たとえばＣＲＣ検査）を実行するように構成される。
【００２９】
完全性コンポーネント２２４は、１つのページとしてデバイス２１０に書き込まれるいくつかのセクターに対応する第１のメタデータ３４１の完全性データの検査を実行するように構成される。たとえば、完全性コンポーネント２２４は、各セクターについて、エラーデータ（たとえばＣＲＣ）を計算し、それをメタデータ３４１のエラーデータ３４６と比較することができ、これにより、コンポーネント２２０からコンポーネント２２４に転送されるデータの完全性の指示が与えられうる。完全性コンポーネント２２４は、ＣＲＣエンジンおよび／またはエラー訂正コード（ＥＣＣ）エンジンのほか、受信データの完全性検査を実行するように構成された各種回路を備えることができる。
【００３０】
完全性コンポーネント２２４は、第２のメタデータ形式（たとえば図４および図５に示すようなメモリメタデータ形式としてメモリデバイス２１０と関連づけられたもの）を有する第２のメタデータ（たとえば図４に示すメタデータ４４７および／または図５に示すメタデータ５４７−０／５４７−１）を生成することもできる。すなわち、コンポーネント２２４は、第１のいくつかのセクター（たとえばセクターフィールド３４８に対応するいくつかのセクター）と関連づけられたメタデータ形式を調整メタデータ形式に変更する。第２のメタデータ形式は、図４および図５に示すような形式であってよく、メモリデバイス２１０の特定の特性（たとえばデバイス種別、エラー検出および／もしくは訂正特性、ページサイズ、ならびに／または利用可能なメタデータバイトの量）およびその他各種の特性に依存するものでありうる。第２のメタデータ形式は、第１のいくつかのセクターの中の少なくとも１つに対応する第２の完全性データ（たとえば図４に示す完全性データ４５４−０／４５４−１および／または図５に示す５５２／５５４）を含むことができる。第２の完全性データには、第１のメタデータ（たとえば３４１）の第１の完全性データに加えて、またはその代わりに、エラーデータおよび／またはアドレスデータを含めることができる。いくつかの実施形態において、第２のメタデータに第３の完全性データも含めることもでき、その第３の完全性データには、第１のいくつかのセクターの中の少なくとも１つのセクターおよび第２の完全性データに対応するエラーデータが含まれうる。たとえば、第３の完全性データは、ユーザーデータの１つまたは複数のセクターとともにそのユーザーデータに対応した第２の完全性データを対象とする（たとえば保護する）ことができるＢＣＨエラー訂正コード（ＥＣＣ）などのエラー訂正コードであってよい。完全性コンポーネント２２４は、メモリデバイス２１０に書き込むユーザーデータと関連づけられたメタデータ形式を変更することに関連して、第２のメタデータの第２の完全性データを生成することができる。
【００３１】
いくつかの実施形態において、コントローラ２０８は、第２のメタデータの第３の完全性データを生成するように構成されたコンポーネント２２６を含む。図２に示した例において、コンポーネント２２６は、ユーザーデータのいくつかのセクターの中の少なくとも１つに対応するとともに第２のメタデータの第２の完全性データに対応するＢＣＨＥＣＣコードの形で第３の完全性データを生成するように構成される。コンポーネント２２６は、ＥＣＣエンジンまたはエラーデータの生成に適したその他のコンポーネントを含むことができる。
【００３２】
コントローラ２０８は、いくつかのセクターおよび対応する第２のメタデータをメモリデバイス２１０に（たとえば１ページのデータとして）書き込むように構成される。図２に示すように、コントローラ２０８は、メモリデバイスに書き込まれるいくつかのセクターの中の１つまたは複数のセクターに関する読み出し動作に関連して、その１つまたは複数のセクターに対応する第２のメタデータと関連づけられた第３の完全性データの検査（たとえば１つまたは複数のセクターおよび誤りデータの存在を検出するための当該セクターに対応する第２の完全性データに対応したＢＣＨＥＣＣの検査）を実行するように構成されたコンポーネント２３０を備えることができる。コンポーネント２３０は、１つまたは複数のセクターおよび／または当該セクターに対応する第２の完全性データに関連したいくつかのエラー（存在する場合）を訂正することもできる。次いで、検査済み（それとともにおそらくは訂正済み）のセクターおよび対応する第２の完全性データ（調整メタデータ形式を有する）がコントローラ２０８の第２の完全性コンポーネント２３４に与えられる。読み出し動作がフルページ読み出し動作の場合、コンポーネント２３０が受け取ったデータをバッファ２３２経由で完全性コンポーネント２３４に直接転送することができる。読み出し動作が部分ページ読み出し動作の場合、コンポーネント２３０が受け取ったデータをバッファ２３２経由で完全性コンポーネント２３４に転送する前に結合コンポーネント２２８に転送することができる。この例では、ページサイズが４ＫＢであるため（たとえば４ＫＢの各フルページには８個の５１２Ｂセクターが含まれる）、ホストから要求された５１２Ｂセクターの数が８セクターより少ない読み出し動作が部分ページ読み出し動作になる。コンポーネント２２６は、ＥＣＣエンジンまたはデータ中のエラーの検出および／または訂正に適したその他のコンポーネントを含むことができる。
【００３３】
完全性コンポーネント２３４は、メモリデバイス２１０から読み出されたユーザーデータセクターを受け取り、それに対応する第２のメタデータの第２の完全性データの検査を実行することができる。一例として、第２の完全性データには、１つまたは複数のセクターに対応するＣＲＣの形でエラーデータを含めることができる。完全性コンポーネント２３４は、第２の完全性データ（たとえば、完全性コンポーネント２２４によって以前に生成され、１つまたは複数のセクターがメモリデバイス２１０に書き込まれる前に第２のメタデータに挿入された第２の完全性データ）のＣＲＣと比較することが可能な１つまたは複数のセクターに関するＣＲＣを生成することができる。詳しくは後述するように、第２の完全性情報には、複数セクター単位でエラーデータ（たとえばＣＲＣ）を含めることができる。
【００３４】
完全性コンポーネント２３４は、メモリデバイス２１０から読み出されたセクターに関連するメタデータ形式を調整メタデータ形式からホスト形式（たとえば図３に示した形式）に戻して整合させる（たとえば変換する）こともできる。調整メタデータ形式をホスト形式に戻す変換には、メモリデバイス２１０から読み出されたいくつかのセクターに対応する第２のメタデータを第３のメタデータに置き換えることが含まれうる。この第３のメタデータには、いくつかのセクターに対応するエラーデータ（たとえばＣＲＣ）などの第４の完全性データを含めることができ、完全性コンポーネントは第４の完全性データを１セクター単位で生成することができる。第３のメタデータはメタデータ３４１に関連付けられるような形式を有してよいため、第４の完全性データを計算して、図３に示したフィールド３４６などのデータフィールドに含めることができる。
【００３５】
いくつかの実施形態において、第２の完全性コンポーネント２３４は、ホスト形式を有するいくつかのセクターをコンポーネント２３６に与えることができ、コンポーネント２３６は、要求されたいくつかのセクターをホストに与える前に、当該いくつかのセクターに対応する第４の完全性データの検査（たとえばコンポーネント２３４によって生成されたＣＲＣ）を実行することができる。このように、ホストへのいくつかのセクターの返送に対応する読み出し要求に関連して、ホストから受信したデータ（たとえばセクターフィールド３４８に対応するいくつかのセクター）をメモリデバイス２１０に書き込む際に、そのデータの完全性を確認することができる。いくつかの実施形態において、コンポーネント２３６は、読み出し要求と関連づけられたセクターをホストインタフェース２０６経由でホストに返送する前に、受け取ったセクターに対応するメタデータを除去（たとえばストリップ処理）することができる。ただし、実施形態はこれに限定されない。たとえば、いくつかの実施形態において、ホスト形式（たとえば図３に示した形式）に対応するメタデータ（たとえば完全性データ）の１つまたは複数の部分をコンポーネント２３６が受け取った後、それを削除することなく（たとえばホストインタフェース２０６経由で）ホストに送ることができる。削除されないままの完全性データは、ホストインタフェース２０６またはホスト自体によって（たとえばアプリケーションレベルで）再検査されうる。
【００３６】
図２に示したコントローラ２０８は、いくつかのセクターおよびそれに対応するメタデータに関するデータ完全性を与える続けることができるとともに、当該のいくつかのセクターと関連づけられたメタデータ形式を異なる形式の間で整合させることができる。詳しくは後述するように、調整メタデータ形式は、当該セクターの書き込みおよび／または読み出しの対象となるメモリデバイス（たとえばメモリデバイス２１０）の種類に依存するものでありえる。
【００３７】
いくつかの実施形態において、ホストを起点としない動作（たとえば読み出しおよび／または書き込み動作）に関連して、メモリデバイス２１０に格納されたデータ（たとえば図４および図５に示すような調整メタデータ形式に従ったもの）をメモリデバイス２１０との間で転送することができる。たとえば、コントローラ２０８と関連づけられたメモリ管理コンポーネント（たとえば図６に示す６１３）は、データ再利用プロセスに関連してメモリデバイス２１０に対するデータの書き込みおよび／または読み出しを実行することができる。当該例において、完全性コンポーネント２２４および／または結合コンポーネント２２８などのコンポーネントは、（たとえば最初にメタデータを調整メタデータ形式からホスト形式に戻した後でホスト形式の完全性データを検査するという方法ではなく）調整メタデータ形式と関連づけられた完全性データを検査することができる。
【００３８】
図４は、本開示の１つまたは複数の実施形態による転送データの完全性を与えることに関連したメタデータ形式を示す。図４に示すメタデータ形式は、特定のメモリデバイス（たとえば図２に示すメモリデバイス２１０）と関連づけられたメタデータ形式である。一例として、図４に示すメタデータ形式をＳＬＣ  ＮＡＮＤメモリデバイスと関連づけることができる。
【００３９】
図４に示すメタデータ形式は、たとえば図３に示すホストメタデータ形式と対比される調整メタデータ形式である。図４のデータグループ４６０は、たとえば、図２に関連して先に説明したコントローラ２０８の完全性コンポーネント２２４によって形成されうる。データグループ４６０は複数のデータグループの中の１つであってよく、その各データグループは、たとえば書き込み動作に関連してホストから受信したいくつかのセクターの中の少なくとも１つを、それに対応するメタデータとともに含むものである。本明細書において、このデータグループ４６０がコードワード４６０と呼ばれる。
【００４０】
図４に示した例では、コードワード４６０はペイロード部分４４５を含み、ペイロード部分４４５は２つのセクターデータフィールド４４８−０および４４８−１を含む。この例において、コードワード４６０は、２つの５１２Ｂセクター（たとえばフィールド４４８−０に対応するＵＳＥＲ  ＳＥＣＴＯＲ０とフィールド４４８−１に対応するＵＳＥＲ  ＳＥＣＴＯＲ１）とともにメタデータ４４７を含む。図４には示していないが、４ＫＢのデータページは４個のコードワード４６０（たとえば、第３および第４のユーザーセクターを含む第１の追加コードワード４６０、第５および第６のユーザーセクターを含む第２の追加コードワード４６０、第７および第８のユーザーセクターを含む第３の追加コードワード４６０がそれぞれの対応メタデータ４４７とともに含まれる）を含むことができ、そのことを読み手が認識する。この例において、メタデータ４４７には５６Ｂのデータが含まれる。このようにして、各コードワード４６０には、１ＫＢのペイロード（たとえば２つの５１２Ｂセクター）および５６Ｂの利用可能メタデータが含まれる。したがって、メモリデバイスに対する１ページのデータの書き込みには、４３２０Ｂのデータ（たとえば４ＫＢのページサイズに対応する４ＫＢのユーザーデータと３２０Ｂのメタデータ）の書き込みが含まれうる。
【００４１】
コードワード４６０と関連づけられたメタデータ４４７は、いくつかのデータフィールドを含む。図４に示す矢印は、特定の完全性データフィールドの対象データ部分を示すために使用される。この例において、フィールド４５０−０は、フィールド４４８−０のユーザーセクターと関連づけられた８ＢのＤＩＦデータ（たとえばＳＥＣＴＯＲ０  ＤＩＦ）を含む完全性データフィールドである。すなわち、フィールド４５０−０には、ＳＥＣＴＯＲ０が完全性コンポーネント２２４に与えられる前に（たとえば図２に示した挿入コンポーネント２２０を介して）ＳＥＣＴＯＲ０に付加されるメタデータ（たとえば３４１）を含めることができる。同様に、フィールド４５０−１は、フィールド４４８−１のユーザーセクターと関連づけられた８ＢのＤＩＦデータ（たとえばＳＥＣＴＯＲ１  ＤＩＦ）を含む完全性データフィールドである。すなわち、フィールド４５０−１には、ＳＥＣＴＯＲ１を完全性コンポーネント２２４に与える前に（たとえば図２に示した挿入コンポーネント２２０を介して）ＳＥＣＴＯＲ１に付加されるメタデータ（たとえば３４１）を含めることができる。
【００４２】
メタデータ４４７のデータフィールド４５２は、コードワード４６０が対応する１ページのデータと関連づけられたアドレスデータを含む４Ｂのデータ完全性フィールドである。アドレスデータ（図中のＦＬＡＳＨ  ＬＢＡ）は、フィールド４４８−０および４４８−１のユーザーデータセクターが対応するデータの論理ページと関連づけられた論理ブロックアドレス（ＬＢＡ）であってよい。同じページに対応する複数の異なるコードワード４６０のフィールド４５２を検査して、そのページに対応するいくつかのコードワードについてアドレスデータの完全性が維持されているか判定することができる。
【００４３】
メタデータ４４７のデータフィールド４５４−０は、２Ｂのエラーデータフィールドである。この例において、フィールド４５４−０に対応するエラーデータ（図中のＦＬＡＳＨ  ＣＲＣ  ＳＥＣＴＯＲ０）は、フィールド４４８−０、４５０−０および４５２に対応するデータを対象とするＣＲＣ（たとえば、ＳＥＣＴＯＲ０対応ページの５１２ＢのＵＳＥＲ  ＳＥＣＴＯＲ０、８ＢのＳＥＣＴＯＲ０  ＤＩＦ、および４ＢのＦＬＡＳＨ  ＬＢＡを対象とするＣＲＣ）である。同様に、メタデータ４４７のデータフィールド４５４−１は、２Ｂのエラーデータフィールドである。この例において、フィールド４５４−１に対応するエラーデータ（図中のＦＬＡＳＨ  ＣＲＣ  ＳＥＣＴＯＲ１）は、フィールド４４８−１、４５０−１および４５２に対応するデータを対象とするＣＲＣ（たとえば、ＳＥＣＴＯＲ１の対応ページの５１２ＢのＵＳＥＲ  ＳＥＣＴＯＲ１、８ＢのＳＥＣＴＯＲ１  ＤＩＦ、および４ＢのＦＬＡＳＨ  ＬＢＡを対象とするＣＲＣ）である。図４に示す調整メタデータ形式のデータフィールド４５２、４５４−０、および４５４−１には、図２に関連して先に説明したように第２の完全性データと呼ばれるデータを含めることができる。
【００４４】
この例において、メタデータ４４７のデータフィールド４５６は４Ｂの予備データフィールドである。メモリシステム（たとえば図１に示すメモリシステム１０４）内部のデータ転送に関連して、フィールド４５６をさまざまな目的に使用することができる。たとえば、フィールド４５６には、ペイロード４４５に関する追加エラーデータおよび／またはその他の完全性データを含めることができる。しかし、フィールド４５６をデータ完全性以外の目的に使用することもできる。
【００４５】
メタデータ４４７のデータフィールド４５８は、２８Ｂのエラーデータフィールドである。この例において、フィールド４５８（図中のＢＣＨＥＣＣ１６）に対応するエラーデータは、ペイロード４４５（たとえばＵＳＥＲ  ＳＥＣＴＯＲ０およびＵＳＥＲ  ＳＥＣＴＯＲ１）に対応する１０２４Ｂのユーザーデータおよびそれと関連づけられた５６Ｂのメタデータ４４７を対象とする１６ビットのエラー訂正コード（ＥＣＣ）である。このようにして、フィールド４５８に対応するエラーデータは、各コードワード４６０（たとえば１０８０Ｂごと）の１６ビット訂正をサポートする。実施形態は、この例に限定されない。図４に示す調整メタデータ形式のデータフィールド４５８は、図２に関連して先に説明したように第３の完全性データと呼ばれうる。
【００４６】
図４に示す調整メタデータ形式は、コントローラを介して実装され、図２に関連して先に説明したようにホストからの書き込みおよび読み出し要求などの動作に関連してデータ完全性を与える目的で使用されうる。たとえば、完全性コンポーネント２２４は、ホストからの受信セクターと関連づけられたメタデータ形式を第１の形式（たとえば図３に示したようなホスト形式）から第２の形式（たとえば図４に示したような調整形式）に変換することができる。メモリデバイス２１０に書き込まれるコードワード（たとえば４６０）には、コンポーネント２２６によって生成されたエラーデータが含まれるエラーデータフィールド（たとえば４５８）が含まれうる。このエラーデータは、当該コードワードの他のメタデータ（たとえばフィールド４５８以外のデータフィールドに対応するメタデータ４４７のデータ）およびペイロード（たとえば４４５）を対象とする。他のメタデータおよびペイロードに関するエラーデータは、当該コードワードが（たとえばホストからの読み出し要求に応答して）メモリデバイス２１０から読み出される時点で、コンポーネント２３０を介して検査することができる。読み出し要求が部分ページ読み出し要求であるかフルページ読み出し要求であるかにかかわらず、コントローラ２０８は、要求セクターをホストに配信する前に、デバイスから読み出されたコードワードに関連づけられたメタデータ形式を変換して調整メタデータ形式からホスト形式に戻すように構成されており、その過程でデータセクターのデータ完全性が維持されている。
【００４７】
図５は、本開示の１つまたは複数の実施形態による転送データの完全性を与えることに関連したメタデータ形式を示す。図５に示すメタデータ形式は、特定のメモリデバイス（たとえば図２に示すメモリデバイス２１０）と関連づけられたメタデータ形式である。一例として、図５に示すメタデータ形式をＭＬＣ  ＮＡＮＤメモリデバイスと関連づけることができる。
【００４８】
図５に示すメタデータ形式は、たとえば図３に示したホストメタデータ形式と対比される調整メタデータ形式である。図５に示す第１のデータグループ５６０−０および第２のデータグループ５６０−１は、たとえば図２に関連して先に説明したコントローラ２０８の完全性コンポーネント２２４およびコンポーネント２２６によって形成されうる。データグループ５６０−０および５６０−１は、コードワード５６０−０および５６０−１と呼ばれうる。
【００４９】
図５に示した例では、コードワード５６０−０および５６０−１は、それぞれのペイロード部分５４５−０および５４５−１とともに、それぞれのメタデータ５４７−０および５４７−１を含む。この例において、コードワード５６０−０と５６０−１の各々は、２つのセクターデータフィールドを含む（たとえばコードワード５６０−０はセクターフィールド５４８−０および５４８−１を含み、コードワード５６０−１はセクターフィールド５４８−２および５４８−３を含む）。コードワード５６０−０は、２つの５１２Ｂセクター（たとえばフィールド５４８−０に対応するＵＳＥＲ  ＳＥＣＴＯＲ０とフィールド５４８−１に対応するＵＳＥＲ  ＳＥＣＴＯＲ１）を含む。コードワード５６０−１は、２つの５１２Ｂセクター（たとえばフィールド５４８−２に対応するＵＳＥＲ  ＳＥＣＴＯＲ２およびフィールド５４８−３に対応するＵＳＥＲ  ＳＥＣＴＯＲ３）を含む。図５には示していないが、４ＫＢのデータページは４個のコードワード（たとえば、第５および第６のユーザーセクターを含む追加コードワード５６０−０、第７および第８のユーザーセクターを含む追加コードワード５６０−１がそれぞれの対応メタデータ５４７−０および５４７−１とともに含まれる）を含むことができ、そのことを読み手が認識する。この例において、メタデータ５４７−０／５４７−１には、５６Ｂのデータが含まれる。このようにして、各コードワードには、１０２４Ｂのペイロード（たとえば２つの５１２Ｂセクター）および５６Ｂの利用可能メタデータが含まれる。したがって、メモリデバイスに対する１ページのデータの書き込みには、４３２０Ｂのデータ（たとえば４ＫＢのページサイズに対応する４ＫＢのユーザーデータと３２０Ｂのメタデータ）の書き込みが含まれうる。
【００５０】
コードワード５６０−０と関連づけられたメタデータ５４７−０およびコードワード５６０−１と関連づけられたメタデータ５４７−１は、それぞれいくつかのデータフィールドを含む。図５に例示した調整メタデータ形式では、コードワード５６０−０のメタデータ５４７−０と関連づけられたデータフィールドがコードワード５６０−１のメタデータ５４７−１と関連づけられたデータフィールドと異なる（たとえば５６Ｂの利用可能メタデータが異なる目的で使用される）。図４と同様、図５に示す矢印は、特定の完全性データフィールドの対象データ部分を示すために使用される。
【００５１】
メタデータ５４７−０のデータフィールド５５２は、４Ｂのデータ完全性フィールドであり、コードワード５６０−０および５６０−１が対応する１ページのデータと関連づけられたアドレスデータが含まれる。そのアドレスデータ（図中のＦＬＡＳＨ  ＬＢＡ）は、フィールド５４８−０、５４８−１、５４８−２、および５４８−３のユーザーデータセクターが対応するデータの論理ページと関連づけられた論理ブロックアドレス（ＬＢＡ）であってよい。同じページに対応する別個のコードワード５６０−０のフィールド５５２を検査して、そのページに対応するいくつかのコードワードについてアドレスデータの完全性が維持されているか判定することができる。
【００５２】
メタデータ５４７−１のデータフィールド５５４は、４Ｂのエラーデータフィールドである。この例において、フィールド５５４に対応するエラーデータ（図中のＦＬＡＳＨ  ＣＲＣ）は、フィールド５４８−０、５４８−１、５４８−２、５４８−３、および５５２に対応するデータを対象とするＣＲＣ（たとえば３２ビットＣＲＣ）である（たとえば５１２ＢのＵＳＥＲ  ＳＥＣＴＯＲ０、ＵＳＥＲ  ＳＥＣＴＯＲ１、ＵＳＥＲ  ＳＥＣＴＯＲ２、ＵＳＥＲ  ＳＥＣＴＯＲ３および各ユーザーセクターが対応するページの４ＢのＦＬＡＳＨ  ＬＢＡを対象とするＣＲＣ）。図５に示す調整メタデータ形式のデータフィールド５５２および５５４には、図２に関連して先に説明したように第２の完全性データと呼ばれるデータを含めることができる。この例において、コードワード５６０−１と関連づけられたメタデータ５４７−１は、コードワード５６０−１と関連づけられたセクター（たとえばＵＳＥＲ  ＳＥＣＴＯＲ２およびＵＳＥＲ  ＳＥＣＴＯＲ３）とともにコードワード５６０−０と関連づけられたセクター（たとえばＵＳＥＲ  ＳＥＣＴＯＲ０およびＵＳＥＲ  ＳＥＣＴＯＲ１）に対応する第２の完全性データ（たとえばデータ完全性フィールド５５４に対応するＣＲＣの形のエラーデータ）を含む。コードワード５６０−０と関連づけられたメタデータ５４７−０も同じく、異なるコードワードと関連づけられたセクターに対応する第２の完全性データ（たとえばデータ完全性フィールド５５２に対応するアドレスデータ）を含む。すなわち、メタデータ５４７−０の第２の完全性データ５５２は、コードワード５６０−０内のセクターおよび異なるコードワード（たとえば５６０−１）内のセクターに対応する。このようにして、コードワード５６０−０／５６０−１と関連づけられた調整メタデータ形式には、複数のセクター（たとえばこの例におけるセクター０〜３）に対応する第２の完全性データ（たとえばフィールド５５２および５５４に対応する完全性データ）が含まれる。
【００５３】
メタデータ５４７−１のメタデータ５４７−０および５５８−１のデータフィールド５５８−０は、それぞれ５２Ｂのエラーデータフィールドである。この例において、フィールド５５８−０および５５８−１に対応するエラーデータ（図中のＢＣＨＥＣＣ２９）は２９ビットのエラー訂正コード（ＥＣＣ）であり、それぞれ、ペイロード５４５−０（たとえばＵＳＥＲ  ＳＥＣＴＯＲ０およびＵＳＥＲ  ＳＥＣＴＯＲ１）およびペイロード５４５−１（たとえばＵＳＥＲ  ＳＥＣＴＯＲ２およびＵＳＥＲ  ＳＥＣＴＯＲ３）に対応する１０２４Ｂのユーザーデータとともに、各ユーザーデータと関連づけられた５６Ｂのメタデータ５４７−０および５４７−１を対象とする。このようにして、フィールド５５８−０および５５８−１に対応するエラーデータは、コードワードごと（たとえば１０８０Ｂごと）の２９ビット訂正をサポートする。実施形態は、この例に限定されない。図５に示す調整メタデータ形式のデータフィールド５５８−０および５５８−１は、図２に関連して先に説明したように第３の完全性データと呼ばれうる。
【００５４】
コードワード５６０−０および５６０−１を当該データのページに対応する追加コードワードとともにメモリデバイス（たとえばメモリデバイス２１０）に書き込むことができる。たとえば、読み出し動作に応答して、メタデータ５４７−０および５４７−１の第３の完全性データ（たとえば完全性データフィールド５５８−０および５５８−１のＥＣＣコード）を検査することができる。第３の完全性データの検査は、図２に示すコンポーネント２３０などのコンポーネントによって実行することができる。いくつかの実施形態において、第３の完全性データの検査実行後、メタデータ５４７−０および５４７−１の第２の完全性データ（たとえばデータ完全性フィールド５５４のＣＲＣ）の検査を（たとえば完全性コンポーネント２３４によって）実行することができる。いくつかの実施形態において、完全性コンポーネント２３４は、１セクター単位で、いくつかのコードワードの中の特定の１つのコードワード内の少なくとも１つのセクター（たとえばコードワード５６０−０のＵＳＥＲ  ＳＥＣＴＯＲ０）に対応する第４の完全性データを生成することができる。上述のように、コンポーネント２３４は、いくつかのコードワードの中の特定の１つと関連づけられたメタデータ（たとえばコードワード５６０−０と関連づけられたメタデータ５４７−０）を少なくとも１つのセクター（たとえばＵＳＥＲ  ＳＥＣＴＯＲ０）に対応する調整メタデータ（たとえば図３に示すメタデータ３４１などのホスト形式を有するメタデータ）に置き換えることができる。この調整メタデータには、第４の完全性データ（たとえばＵＳＥＲ  ＳＥＣＴＯＲ０に対応するＣＲＣなどのエラーデータ）が含まれる。
【００５５】
いくつかの実施形態において、コンポーネント２３６などのコンポーネントは、いくつかのコードワードの中の特定の１つのコードワード内の少なくとも１つのセクターに対応する調整（たとえば修正）メタデータの第４の完全性データの検査を実行することができる。第４の完全性データの検査には、いくつかのコードワードの中の特定の１つのコードワード内の少なくとも１つのセクターに対応する修正メタデータの第４の完全性データとその少なくとも１つのセクターに対応する第１の完全性データとの比較を含めることができる。たとえば、コンポーネント２３６は、第４の完全性データ（たとえば完全性コンポーネント２３４によって生成されたＣＲＣ）を以前に生成されたＣＲＣ（たとえば挿入コンポーネント２２０によって生成され、コントローラのバッファに格納されたもの）と比較することができる。いくつかの実施形態において、その少なくとも１つのセクターをホストに転送する前に、その少なくとも１つのセクターに対応する調整メタデータを（たとえばコンポーネント２３６を介して）削除することができる。しかし、先に示したように、いくつかの実施形態において、コンポーネント２３６が（たとえばコンポーネント２３４から）受け取った修正メタデータの１つまたは複数の部分を削除しないままホストインタフェース２０６に与えることができる。
【００５６】
たとえば、部分読み出し動作に応答して、メタデータ５４７−０および５４７−１の第３の完全性データ（たとえば完全性データフィールド５５８−０および５５８−１のＥＣＣコード）を検査することもできる。そのような実施形態において、第３の完全性データの検査は、図２に示すコンポーネント２３０などのコンポーネントによって実行することができる。いくつかの実施形態において、第３の完全性データの検査実行後、メタデータ５４７−０および５４７−１の第２の完全性データ（たとえばデータ完全性フィールド５５４のＣＲＣ）の検査を（たとえば結合コンポーネント２２８によって）実行することができる。結合コンポーネント２２８は、メタデータ５４７−０および５４７−１の第２の完全性データの検査後、メタデータを図５に示す調整形式からホスト形式（たとえば図３に示すようなセクターごとに完全性データを含む形式）に変換するように構成される。結合コンポーネント２２８は、メモリデバイス２１０から読み出されたページの１つまたは複数のセクターを部分読み出し動作に関連して受け取った１つまたは複数のホストセクターに置き換えることができ、また、そのデータおよび関連メタデータを完全性コンポーネント２２４に転送することができる。完全性コンポーネント２２４は、上述のようなホスト形式によるデータを受け取るように構成される。いくつかの部分読み出し動作において、結合コンポーネント２２８は、メモリデバイス２１０から読み出されたページに対応する各コードワード（たとえばコードワード５６０−０、５６０−１および読み出しページに対応するその他のコードワード）の第２の完全性データの検査を実行しなくてもよい。たとえば、メモリデバイスから読み出されて６個のホストセクターと結合される２個のセクター（たとえばＵＳＥＲ  ＳＥＣＴＯＲ０とＵＳＥＲ  ＳＥＣＴＯＲ１）が部分読み出しに含まれる場合、結合コンポーネント２２８は、完全性データフィールド５５４の完全性データ（たとえばフィールド５４８−１、５４８−２、５４８−３、５４８−４、および５５２に対応するＣＲＣ）を検査することができる。しかし、その読み出しページに対応する他のコードワードにはホストセクターと結合されるセクターが含まれないため、それらのコードワードに関連づけられた第２の完全性データの検査を実行しないように結合コンポーネント２２８を構成することができる。同様に、この部分読み出しの例に関連して、ホストセクターと結合されるセクターを含まない読み出しページ内のコードワードと関連づけられたメタデータについて、調整形式からホスト形式への変換を実行しないように結合コンポーネント２２８を構成することができる。部分読み出し動作と関連づけられたセクターを含まないコードワードのメタデータを変換しないこと、かつ／またはそのメタデータと関連づけられた第２の完全性データを検査しないことにより、処理リソースを節約できるほか、さまざまな利益がもたらされる。
【００５７】
図６は、本開示の１つまたは複数の実施形態によるメモリコントローラ６０８の機能ブロック図である。コントローラ６０８は、図１に関連して説明したコントローラ１０８などのコントローラまたは図２に関連して説明したコントローラ２０８などのコントローラであってよい。
【００５８】
図６に示す例において、コントローラ６０８は、メモリ管理コンポーネント６１３およびメモリ制御コンポーネント６１１を備える。メモリ管理コンポーネント６１３は、ウエアレベリング（たとえばガーベジコレクションおよび／または再使用）、エラー検出および／または訂正、ブロック除外など、メモリデバイス６１０−１〜６１０−Ｎに関する各種のメモリ管理機能と関連づけられたコンポーネント（たとえば回路および／またはファームウェア）を含む。メモリ管理コンポーネント６１３は、ホストコマンド（たとえば、ホストインタフェース６０６を介してホストから受信するコマンド）を解析および／またはフォーマットして、複数のデバイスコマンド（たとえばメモリデバイス６１０−１〜６１０−Ｎの操作に関連したコマンド）に変換することができる。メモリ管理コンポーネント６１３は、（たとえば各種のメモリ管理機能を達成する目的で）デバイスコマンドを生成することもできる。メモリ管理コンポーネント６１３は、メモリ制御コンポーネント６１１にデバイスコマンドを与えるように構成される。
【００５９】
メモリ制御コンポーネント６１１は、いくつかのメモリデバイス６１０−１〜６１０−Ｎに対するデータの書き込み、メモリデバイス６１０−１〜６１０−Ｎからのデータの読み出し、およびメモリデバイス６１０−１〜６１０−Ｎ内のデータ（たとえば複数のブロック）の消去に関連したメモリ動作を制御するように構成される。それらのメモリ動作は、ホストコマンド（たとえばホストインタフェース６０６を介してコントローラ６０８に送られたホストコマンド）に基づく動作（たとえば読み出しおよび／または書き込み）であってよく、ならびに／または（たとえばウエアレベリング、エラー検出および／または訂正などに関連して）制御コンポーネント６１１および／もしくはメモリ管理コンポーネント６１３によって開始される内部的に生成されたデバイスコマンドに基づくものであってよい。
【００６０】
制御コンポーネント６１１に結合されたメモリデバイス６１０−１〜６１０−Ｎは、図１で説明したデバイス１１０−１〜１１０−Ｎなどの不揮発性メモリデバイスであってよい。図６に示す例において、メモリデバイス６１０−１〜６１０−Ｎは、ＮＡＮＤフラッシュメモリデバイスである。上述のように、メモリデバイス６１０−１〜６１０−Ｎ内のメモリセルをいくつかの物理ページと関連づけ、それらの物理ページを有するいくつかのブロックに編成することができる。
【００６１】
メモリ制御コンポーネント６１１はエラー訂正コンポーネント６１９を含み、そのエラー訂正コンポーネント６１９には、メモリデバイス６１０−１〜６１０−Ｎに対する書き込みおよび／もしくは読み出しが行われるデータに関連するエラーを検出ならびに／または訂正するように構成されたＥＣＣエンジンあるいはその他の回路を含むことができる。いくつかの実施形態において、エラー訂正コンポーネント６１９は、提供されたデータ内のビットエラーを検出するためにＢＣＨＥＣＣ（たとえば図２、図４および図５に関連して先に説明した機能など）を利用することができる。検出されたビットエラーには、エラー訂正コンポーネント６１９によって訂正可能な場合と訂正不可能な場合がある（たとえば検出された誤りビットの数および使用ＥＣＣの種類などに依存する）。いくつかの誤りビットがコンポーネント６１９によって訂正可能である場合、当該動作は訂正可能ビットエラーであり、コンポーネント６１９は、その特定動作の完了に伴ってエラー訂正の処理に進むことができる。いくつかの誤りビットがコンポーネント６１９によって訂正可能でない（たとえば誤りビットの数がコンポーネント６１９に関連する訂正可能ビット数の閾値を超える）場合、当該動作は訂正不可能ビットエラーである。訂正可能ビットエラーおよび訂正不可能ビットエラーをメモリ管理コンポーネント６１３に報告するようにメモリ制御コンポーネント６１１を構成することができる。
【００６２】
メモリ管理コンポーネント６１３は、いくつかの管理テーブル６１５を備える。テーブル６１５には、メモリデバイス６１０−１〜６１０−Ｎに関連した各種の情報を保持することができる。たとえば、デバイス６１０−１〜６１０−Ｎ内のブロックに関するブロックエイジおよび／またはブロック消去回数に関する情報をテーブル６１５に含めることができる。また、メモリデバイス６１０−１〜６１０−Ｎと関連づけられたブロックおよび／またはページに関連するエラー履歴に関する情報をテーブル６１５に含めることができる。たとえば、テーブル６１５は、デバイス６１０−１〜６１０−Ｎに関連したいくつかのエラー数（たとえば書き込み動作エラー数、読み出しビットエラー数、読み出し動作エラー数および／または消去エラー数を含む各種エラー数）を保持することができる。書き込み動作エラーは、実行が失敗した書き込み動作（たとえばホスト開始またはデバイス開始による動作）を指す。読み出し動作エラーは、実行が失敗した読み出し動作（たとえばホスト開始またはデバイス開始による動作）を指す。読み出しビットエラーは、結果的にデータ（たとえばページ）の読み出しに関連したいくつかのエラービットが検出される読み出し動作を指すことができる。上述のように、いくつかの検出エラーには、エラー訂正コンポーネント（たとえば６１９）によって訂正可能な場合と訂正不可能な場合がある。検出エラーの数がエラー訂正コンポーネント（たとえば６１９）によって訂正可能なエラー数の閾値を超える場合、そのビットエラーは訂正不可能ビットエラーと呼ばれる。テーブル６１５は、メモリデバイス６１０−１〜６１０−Ｎと関連づけられたブロックに発生した訂正可能および／または訂正不可能な読み出しビットエラーの数を保持することができる。テーブル６１５には、ＬＢＡテーブルなどの各種テーブルを含めることもできる。
【００６３】
コントローラ６０８のメモリ管理コンポーネント６１３は、冗長管理コンポーネント６１７を含む。この冗長管理コンポーネント６１７はＲＡＩＤ（独立ディスク冗長アレイであって、ここでの用語「ディスク」はハードディスクドライブを使用した従来の実装を単純に引き継いだもの）ユニット６１７であってよい。ＲＡＩＤユニット６１７を使用することにより、ＲＡＩＤとしてのメモリデバイスの運用に伴う冗長性を通じて、データ信頼性が提供されうる。ＲＡＩＤユニット６１７は、たとえばＲＡＩＤ排他的論理和（ＸＯＲ）回路など、さまざまなＲＡＩＤレベルと関連づけられた各種回路を含むことができる。
【００６４】
いくつかの実施形態において、コントローラ６０８は、ホストインタフェース６０６とメモリデバイス６１０−１〜６１０−Ｎとの間で転送されるデータの完全性を維持しながら、読み出しおよび書き込み動作など、各種の動作に関連したエラー発生（たとえばビットエラーおよび／または動作エラー）の動的な検出および回復を行うように構成される。コントローラ６０８は、将来の訂正不可能エラーを防止するために障害メモリリソース（たとえばページ、ブロック、および／またはデバイス６１０−１〜６１０−Ｎ）を利用から除外するように構成される。
【００６５】
たとえば、メモリ管理コンポーネント６１３は、メモリ制御コンポーネント６１１に対して（たとえばメモリデバイス６１０−１〜６１０−Ｎ内のブロックの書き込み準備のために）消去コマンドの実行を開始することができる。制御コンポーネント６１１は、消去動作に関連した消去エラーの発生を検出するとともに、そのエラー発生をメモリ管理コンポーネント６１３に報告することができる。消去エラーの場合、当該ブロック内の有効データはすべて消去動作の実行前に別のブロックに移動されているため、データ回復の必要はない。消去エラーに関連したブロックは、消去エラー数が閾値に達した時点で除外することができる。いくつかの実施形態において、消去エラー数の閾値は１であるが、実施形態はこれに限定されない。
【００６６】
さまざまな実施形態において、コントローラ６０８は、各種のデバイス動作および／またはホスト動作（たとえば読み出しおよび／または書き込み動作など）を実行する一方で、ウエアレベリング機能（たとえばガーベジコレクションおよび／または再使用）、エラー検出／訂正機能（たとえばＥＣＣ関連）、ページおよび／またはブロック除外機能、ＲＡＩＤ機能など、メモリデバイス６１０−１〜６１０−Ｎに関連した各種のメモリ管理機能を実行することができる。このようにして、ユーザーに知覚される影響なしに、各種のメモリ管理機能を実行することができる。本明細書に説明する実施形態に従ってデータ完全性を維持しながらエラー回復動作を実行できるコントローラ６０８の機能により、実施されるデバイス製造試験（たとえば消費者に引き渡す前の現場の出荷前試験）の量を減少させることができる。たとえば、本開示の実施形態は、不良ブロックまたは不良メモリデバイス（たとえば６１０−１〜６１０−Ｎ）の位置の判定に関連したデバイス製造試験の発生を低減または防止することができる。図６に示すコンポーネント（たとえば６１１、６１３、６１５、６１７、および６１９）などのハードウェアコンポーネントによって、そのような試験を現場で実施できるためである。すなわち、メモリデバイス６１０−１〜６１０−Ｎは、メモリデバイス６１０−１〜６１０−Ｎに関連付けられた不良ブロック位置に関して無試験とすることができる。当該試験をコントローラ６０８のハードウェアコンポーネントに移すことによるメモリデバイス（たとえば６１０−１〜６１０−Ｎ）の出荷前試験の減少および／または廃止によって、デバイスの出荷前試験に関連したコスト低減が可能になる一方、ユーザーに知覚される影響が生じることは、あったとしてもごくわずかである。
【００６７】
一例として、ホスト読み出し動作に関連して、メモリデバイス６１０−１〜６１０−Ｎから読み出されたデータをエラー訂正コンポーネント６１９によって検査し、データ内のビットエラーを判定（たとえば検出）することができる。いくつかのビットエラー（たとえば存在する場合）が検出され、そのビットエラー数がコンポーネント６１９によって訂正可能なビットエラー数の閾値より少ない（たとえば当該ビットエラーが訂正可能ビットエラーである）場合には、データが訂正されてホストに提供される。訂正可能ビットエラーの発生はメモリ管理コンポーネント６１３に報告される。メモリ管理コンポーネント６１３は、データが読み出されたブロックに関連するビットエラー数（たとえば訂正可能ビットエラーの数）を（たとえばテーブル６１５に）保持することができ、ビットエラー数が特定のビットエラー数閾値を超えた場合、そのブロックを除外することができる。検出ビットエラーの数がコンポーネント６１９によって訂正可能なビットエラー数の閾値を上回る（たとえば当該ビットエラーが訂正不可能ビットエラーである）場合には、要求された読み出しデータをＲＡＩＤユニット６１７によって自動的に回復させてからホストに提供することができる。いくつかの実施形態において、メモリ管理コンポーネント６１３は、受信される訂正不可能ビットエラーの発生指示（たとえばエラー訂正コンポーネント６１９からの報告による）に応答して、自動的に読み出しデータの回復を開始する。メモリ管理コンポーネント６１３は、データが読み出されたブロックに関連するビットエラー数（たとえば訂正不可能ビットエラーの数）を（たとえばテーブル６１５に）保持することができ、ビットエラー数が特定のビットエラー数閾値を超えた場合には、そのブロックを除外することができる。（たとえばビットエラー数の閾値を超えるビットエラー数に応答して）ブロックを除外する前に、ＲＡＩＤユニット６１７を使用して、そのブロックに関連したデータを回復させることができ、さらにそのデータを新しいブロック（たとえば利用可能な有効ブロック）に移動させることができる。
【００６８】
デバイス読み出し動作（たとえば再使用などのメモリ管理プロセスに関連して制御コンポーネント６１１によって開始された読み出し動作）に関連するビットエラーは、同様に扱うことができる。たとえば、訂正可能ビットエラーがコンポーネント６１９によって検出された場合、当該データを訂正し、メモリデバイス６１０−１〜６１０−Ｎ内の新しいブロックに移動させることができる（対照的にホスト読み出し動作の場合はデータがホストに渡される）。訂正可能ビットエラーの発生はメモリ管理コンポーネント６１３に報告され、メモリ管理コンポーネント６１３は、データが読み出されたブロックに関連するビットエラー数を保持することができ、ビットエラー数が特定のビットエラー数閾値を超えた場合には、そのブロックを除外することができる。検出ビットエラーの数がコンポーネント６１９によって訂正可能なビットエラー数の閾値を上回る（たとえば当該ビットエラーが訂正不可能ビットエラーである）場合、ＲＡＩＤユニット６１７を使用して、要求された読み出しデータをただちに回復させることができ、さらにそのデータを新しいブロックに移動させることができる。訂正不可能ビットエラーの発生はメモリ管理コンポーネント６１３に報告され、メモリ管理コンポーネント６１３は、データが読み出されたブロックに関連するビットエラー数を保持することができ、ビットエラー数が特定のビットエラー数閾値を超えた場合には、そのブロックを除外することができる。（たとえばビットエラー数の閾値を超えるビットエラー数に応答して）ブロックを除外する前に、そのブロックに関連したデータをＲＡＩＤユニット６１７によって回復させることができ、そのデータを新しいブロック（たとえば利用可能な有効ブロック）に移動させることができる。
【００６９】
読み出し動作エラー（たとえばホスト読み出し動作エラーおよびデバイス読み出し動作エラー）は、ホストおよびデバイス読み出し動作に対応するビットエラーに関連して先に説明した方法と同様に扱うことができる。たとえば、読み出し要求が失敗した場合、その失敗の指示をメモリ管理コンポーネント６１３に与えることができ、メモリ管理コンポーネント６１３は、要求された読み出しデータの回復を（たとえばＲＡＩＤユニット６１７によって）自動的に開始することができる。
【００７０】
書き込み動作エラー（たとえばホスト書き込み動作エラーおよびデバイス書き込み動作エラー）は、ホストおよびデバイス読み出し動作に対応するビットエラーおよび／または読み出し動作エラーに関連して先に説明した方法と同様に扱うことができる。たとえば、書き込み要求が失敗した場合、その失敗の指示をメモリ管理コンポーネント６１３に与えることができ、メモリ管理コンポーネント６１３は、要求された書き込みデータの回復を（たとえばＲＡＩＤユニット６１７によって）自動的に開始することができる。いくつかの実施形態において、メモリ管理コンポーネント６１３は、受信される書き込みエラーの発生指示（たとえば制御コンポーネント６１１からの報告による）に応答して、自動的に書き込みデータの回復を開始する。メモリ管理コンポーネント６１３は、データが書き込まれたブロックに関連する書き込みエラー数を（たとえばテーブル６１５に）保持することができ、書き込みエラー数が特定の書き込みエラー数閾値を超えた場合には、そのブロックを除外することができる。書き込みデータの自動回復（たとえばＲＡＩＤユニット６１７による）に関して、回復された書き込みデータは新しいブロック（たとえば利用可能な有効ブロック）に移動させることができる。
【００７１】
＜結論＞
本開示は、データ完全性を与えるための装置（たとえばコンピューティングシステム、メモリシステム、コントローラなど）および方法を含む。１つまたは複数の方法実施形態には、たとえば、いくつかのメモリデバイス（たとえば単一メモリデバイス）に書き込まれるデータのいくつかのセクターを受け取ること、およびそのいくつかのセクターに対応する第１のメタデータを付加するとともに、そのいくつかのセクターに第１の完全性データを含めることが含まれ、この第１のメタデータは特定の形式を有するものである。方法実施形態にはさらに、第２のメタデータで与えられる第２の完全性データを生成することが含まれ、この第２の完全性データはいくつかのセクターの中の少なくとも１つに対応するものである（第２のメタデータは第２の形式を有する）。方法実施形態にはさらに、第２のメタデータで与えられる第３の完全性データを生成することが含まれ、この第３の完全性データは、第２の完全性データおよびいくつかのセクターの中の少なくとも１つに対応するエラーデータを含むものである。
【００７２】
当然ながら、１つの要素が別の要素「上」、別の要素「に接続」、または別の要素「と結合」と記載されている場合、その「上」、「接続」、または「結合」は直接的な関係でありうるか、介在要素が存在することもありうる。一方、１つの要素が別の要素の「直上」、別の要素に「直接的に接続」または別の要素と「直接的に結合」と記載されている場合には、介在要素または階層は存在しない。本明細書における用語の「および／または」は、列挙された１つまたは複数の関連項目のあらゆる組み合わせを含む。
【００７３】
本明細書において使用される用語の「および／または」は、列挙された１つまたは複数の関連項目のあらゆる組み合わせを含む。本明細書において使用される用語の「または」は、特段の注記がないかぎり、包含的論理和を意味する。すなわち、「ＡまたはＢ」には、（Ａのみ）、（Ｂのみ）、または（ＡとＢの両方）が含まれうる。言い換えれば、「ＡまたはＢ」は、「Ａおよび／またはＢ」あるいは「ＡとＢの一方または両方」という意味である。
【００７４】
当然ながら、本明細書では各種の要素を記述するために第１、第２、第３などの用語を使用することがあるが、それらの要素は、これらの用語によって限定されるべきではない。これらの用語は、１つの要素を別の要素と区別するためにのみ使用されている。したがって、本開示の教示内容から逸脱することなく、第１の要素が第２の要素と呼ばれることもありえる。
【００７５】
本明細書には具体的な実施形態が例示および説明されているが、当業者によって理解されるように、本明細書中の具体的な実施形態の代替として、同じ結果を達成するように考案された仕組みを用いることができる。本開示は、本開示の１つまたは複数の実施形態の改作物または変形を包含することを意図している。当然ながら、上述の説明は例示的な方法で行われており、制限的ではない。上述の説明を精査することにより、当業者には上述の実施形態と、本明細書に具体的に説明されていない他の実施形態との組み合わせが明らかになるはずである。本開示の１つ以上または複数の実施形態の範囲には、上述の構造および方法を使用する他の用途が含まれる。したがって、本開示の１つ以上または複数の実施形態の範囲は、添付の請求項を参照するとともに、それらの請求項に対して認められる均等物の全範囲を考慮して確定されるべきである。
【００７６】
上述の「発明を実施するための形態」においては、開示内容を簡潔にする目的で、いくつかの特徴が１つの実施形態にまとめられている。この開示方法は、本明細書に開示された実施形態が各請求項に明示的に記載されているよりも多くの特徴を必要とするという意図を反映したものと解釈されるべきではない。正しくは、以下の請求項に反映されているように、発明的主題は１つの開示された実施形態のすべての特徴よりも少ない中に存在する。したがって、本明細書により、以下の請求項は「発明を実施するための形態」に組み込まれるものとし、各請求項は別個の実施形態として自立している。
【図１】
0005792380.tif 000002
【図２】
0005792380.tif 000003
【図３】
0005792380.tif 000004
【図４】
0005792380.tif 000005
【図５】
0005792380.tif 000006
【図６】
0005792380.tif 000007