JP5792380B2 - データ完全性を与えるための装置および方法 - Google Patents

データ完全性を与えるための装置および方法 Download PDF

Info

Publication number
JP5792380B2
JP5792380B2 JP2014513640A JP2014513640A JP5792380B2 JP 5792380 B2 JP5792380 B2 JP 5792380B2 JP 2014513640 A JP2014513640 A JP 2014513640A JP 2014513640 A JP2014513640 A JP 2014513640A JP 5792380 B2 JP5792380 B2 JP 5792380B2
Authority
JP
Japan
Prior art keywords
data
sectors
metadata
integrity
format
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2014513640A
Other languages
English (en)
Other versions
JP2014515536A (ja
Inventor
エム. クローニン,テリー
エム. クローニン,テリー
エム. ジェデロー,ジョセフ
エム. ジェデロー,ジョセフ
Original Assignee
マイクロン テクノロジー, インク.
マイクロン テクノロジー, インク.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by マイクロン テクノロジー, インク., マイクロン テクノロジー, インク. filed Critical マイクロン テクノロジー, インク.
Publication of JP2014515536A publication Critical patent/JP2014515536A/ja
Application granted granted Critical
Publication of JP5792380B2 publication Critical patent/JP5792380B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1666Error detection or correction of the data by redundancy in hardware where the redundant component is memory or memory area
    • G06F11/167Error detection by comparing the memory output
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/108Parity data distribution in semiconductor storages, e.g. in SSD

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本開示は、概括的には半導体メモリデバイス、方法、およびシステムに関し、より具体的には、データ完全性を与えるための装置および方法に関する。
メモリデバイスは、典型的には、コンピュータ内の内部回路、半導体、集積回路またはその他の電子機器として提供される。揮発性メモリおよび不揮発性メモリを含む多くの異なる種類のメモリが存在する。揮発性メモリは、そのメモリのデータを保持するために電力を必要とする場合があり、たとえば、ランダムアクセスメモリ(RAM)、ダイナミックランダムアクセスメモリ(DRAM)、シンクロナスダイナミックランダムアクセスメモリ(SDRAM)などがこれに含まれる。不揮発性メモリは、無給電時に格納データを保持することによって永続的データを提供することができ、たとえば、NANDフラッシュメモリ、NORフラッシュメモリ、読み出し専用メモリ(ROM)、電気的に消去可能なプログラマブルROM(EEPROM)、消去可能なプログラマブルROM(EPROM)のほか、相変化ランダムアクセスメモリ(PCRAM)、抵抗変化ランダムアクセスメモリ(RRAM(登録商標))、磁気抵抗ランダムアクセスメモリ(MRAM)などの可変抵抗メモリがこれに含まれうる。
メモリデバイスを組み合わせ、ソリッドステートドライブ(SSD)などのメモリシステムのストレージボリュームを形成することができる。ソリッドステートドライブには、不揮発性メモリ(たとえばNANDフラッシュメモリおよびNORフラッシュメモリ)および/または揮発性メモリ(たとえばDRAMおよびSRAM)が含まれるほか、その他各種の不揮発性および揮発性メモリが含まれうる。フラッシュメモリデバイスには、データを窒化物層内の電荷トラップ内に格納する半導体−酸化物−窒化物−酸化物−半導体および金属−酸化物−窒化物−酸化物−半導体のコンデンサ構造を使用したフローティングゲートフラッシュデバイスおよびチャージトラップフラッシュ(CTF)デバイスが含まれ、これを広範な電子的用途のための不揮発性メモリとして利用することができる。フラッシュメモリデバイスは、典型的には、高メモリ密度、高信頼性、および低電力消費を実現可能な1トランジスタ型メモリセルを使用する。
SSDは、性能、サイズ、重量、耐久性、動作温度範囲、および電力消費に関してハードドライブに勝る利点を持ちうるため、コンピュータの主記憶装置としてハードディスクドライブを代替するために使用することができる。たとえば、SSDは、可動部品がないことにより、シークタイム、レイテンシーなど、磁気ディスクドライブに付随する電気機械的遅延を回避しうるため、磁気ディスクドライブと比較して、すぐれた性能を有することができる。SSD製造業者は、不揮発性フラッシュメモリを使用して内蔵電池供給が不要なフラッシュSSDを作製することができ、そのためドライブをより多用途かつ小型にすることが可能になる。
SSDには、いくつかのメモリデバイス(たとえばいくつかのメモリチップ)が含まれうる。メモリデバイスには、いくつかのダイおよび/または論理ユニット(LUN)が含まれうる。各ダイの面上にいくつかのメモリアレイおよび周辺回路を設けることができ、そのメモリアレイには、いくつかの物理ページに編成されたメモリセルのいくつかのブロックが含まれうる。
SSDは、メモリデバイスとホスト間でデータ(たとえばユーザーデータおよびそれに関連するエラーデータ、アドレスデータなどの完全性データ)を転送するための、読み出しおよび書き込み動作などのメモリ動作に関連してホストからコマンドを受け取ることができる。たとえば転送中にデータが破壊されていないという確信を与えるために、それらの動作に関連してメモリデバイスとホストとの間で転送されるデータのエンド−エンド間の完全性を提供することが有益でありうる。
本開示の1つまたは複数の実施形態による少なくとも1つのメモリシステムを含むコンピューティングシステムの機能ブロック図である。 本開示の1つまたは複数の実施形態による転送データの完全性を与えることに関連したメモリコントローラの機能ブロック図である。 本開示の1つまたは複数の実施形態による転送データの完全性を与えることに関連したメタデータ形式を示す図である。 本開示の1つまたは複数の実施形態による転送データの完全性を与えることに関連したメタデータ形式を示す図である。 本開示の1つまたは複数の実施形態による転送データの完全性を与えることに関連したメタデータ形式を示す図である。 本開示の1つまたは複数の実施形態によるメモリコントローラの機能ブロック図である。
本開示は、データ完全性を与えるための装置(たとえばコンピューティングシステム、メモリシステム、コントローラなど)および方法を含む。1つまたは複数の方法実施形態には、たとえば、いくつかのメモリデバイス(たとえば単一メモリデバイス)に書き込まれるデータのいくつかのセクターを受け取ることと、およびそのいくつかのセクターに対応する第1のメタデータを付加することと、そのいくつかのセクターに第1の完全性データを含めることとが含まれ、この第1のメタデータは特定の形式を有するものである。方法実施形態にはさらに、第2のメタデータで与えられる第2の完全性データを生成することが含まれ、この第2の完全性データはいくつかのセクターの中の少なくとも1つに対応するものである(第2のメタデータは第2の形式を有する)。方法実施形態にはさらに、第2のメタデータで与えられる第3の完全性データを生成することが含まれ、この第3の完全性データは、第2の完全性データおよびいくつかのセクターの中の少なくとも1つに対応するエラーデータを含むものである。
本開示の1つまたは複数の実施形態は、たとえばメモリシステム内のエンド−エンド間のデータ完全性を与える柔軟なアーキテクチャを提供する。たとえば、1つまたは複数の実施形態は、メタデータ形式変換を実行することができ、これには、各種メモリデバイスと関連付けられた異なるページサイズおよび/または利用可能メタデータサイズに適合させることが可能になるなど、さまざまな利点がある。1つまたは複数の実施形態は、本明細書に説明する実施形態に従ってデータ完全性を維持しながらエラー回復動作を実行することができるコントローラを含み、これにより、実施されるデバイス製造試験(たとえば消費者に引き渡す前の現場での出荷前試験)の量の低減など、さまざまな利点が提供されうる。
本開示に関する以下の詳細な説明では、本明細書の一部を形成する添付の図面を参照する。各図面には、本開示の1つまたは複数の実施形態を実践することが可能な方法が例示されており、これらの実施形態は、本開示の実施形態を当業者が実践できるように十分な詳しさで説明されている。当然のことながら、その他の実施形態も利用可能であり、また、本開示の範囲から逸脱することなく、プロセスの変更、電気的および/または構造的変更を加えることができる。本明細書で使用される指示記号「N」は、とくに図面内の参照番号に関して、その記号によって指示されたいくつかの特定機能要素を本開示の1つまたは複数の実施形態に含めることができるということを示す。本明細書で使用される用語の「いくつかの(a number of)〜」は、1つまたは複数の対象物に言及することができる(たとえば、いくつかのメモリデバイスは1つまたは複数のメモリデバイスに言及しうる)。
本明細書の図は、先頭の数字(1桁または複数桁)が図面番号に対応し、残りの数字が図面内の要素または構成部分を識別するという付番規則に従っている。複数の図に含まれる類似の要素または構成部分は、同様の数字の使用によって識別されうる。たとえば、108は図1の要素「08」を参照し、図2では類似要素が208として参照されうる。当然ながら、本明細書中の各種の実施形態に示された要素を追加、交換および/または除去することにより、本開示のいくつかの付加的な実施形態が提供されうる。さらに当然のこととして、図中に示された各要素の比率および相対的な大きさは、本発明の実施形態を図示することを意図したものであり、限定の意味で解釈されるべきではない。
図1は、本開示の1つまたは複数の実施形態による少なくとも1つのメモリシステム104を含むコンピューティングシステム100の機能ブロック図である。メモリシステム104は、たとえばソリッドステートドライブ(SSD)であってよく、物理ホストインタフェース106、メモリシステムコントローラ108(たとえばプロセッサおよび/またはその他の制御回路)、および1つまたは複数のメモリデバイス110−1〜110−N(たとえばNANDフラッシュデバイスなどのソリッドステートメモリデバイス)が含まれうる。これにより、メモリシステム104のストレージボリュームが提供される。
図1に示すように、物理ホストインタフェース106はコントローラ108に結合されており、メモリシステム104とホスト102との間でデータを通信するために使用することができる。インタフェース106は、標準化インタフェースの形であってよい。たとえば、メモリシステム104がコンピューティングシステム100内のデータストレージ用に使用される場合、物理ホストインタフェース106は、SATA(serial advanced technology attachment)、PCIe(peripheral component interconnect express)、ユニバーサルシリアルバス(USB)、またはその他各種のコネクタおよびインタフェースでありうる。しかし、一般に物理ホストインタフェース106は、メモリシステム104とホスト102との間で制御、アドレス、データ、およびその他の信号を受け渡しするためのインタフェースを提供することができ、ホスト102は物理ホストインタフェース106に対する適合レセプタを有する。
ホスト102は、パーソナルラップトップコンピュータ、デスクトップコンピュータ、デジタルカメラ、携帯電話、またはメモリカードリーダーなどのホストシステムのほか、その他各種のホストでありうる。ホスト102は、システムマザーボードおよび/またはバックプレーンとともにメモリアクセスデバイス(たとえばいくつかのプロセッサ)を備えることができる。
コントローラ108は、データの読み出し、書き込み、消去などの各種動作を実行するために、メモリデバイス110−1〜110−Nと通信することができる。コントローラ108は、たとえば、いくつかのコンポーネント(たとえば1つまたは複数の集積回路)を含む回路および/またはファームウェアであってよい。たとえば、コントローラ108は、メモリデバイス110−1〜110−Nに対するアクセスを制御するための制御回路およびホスト102とメモリシステム104との間の変換層を与えるための回路を備えることができる。したがって、メモリコントローラ108は、適切な信号を適切な時間に適切なI/O接続で受け取るためにメモリデバイス110−1〜110−NのI/O接続(図1に図示せず)を選択的に結合することができる。同様に、ホスト102とメモリシステム104との間の通信プロトコルは、メモリデバイス110−1〜110−Nにアクセスするために使用されるプロトコルと異なるものであってよい。その場合、コントローラ108は、ホスト102から受け取ったコマンドを適切なコマンドに変換して、いくつかのメモリデバイス110−1〜110−Nに対する所望のアクセスを達成することができる。
メモリデバイス110−1〜110−Nには、メモリセル(たとえば不揮発性メモリセル)の1つまたは複数のアレイが含まれうる。それらのアレイは、たとえばNANDアーキテクチャを有するフラッシュアレイであってよい。しかし、実施形態は、特定の種類のメモリアレイまたはアレイアーキテクチャに限定されない。
メモリデバイス110−1〜110−Nには、たとえば、いくつかの物理ページを含むいくつかのブロックへのグループ化が可能ないくつかのメモリセルが含まれうる。メモリセルのプレーンにいくつかのブロックを含めることができ、1つのアレイにいくつかのプレーンが含まれうる。一例として、1つのメモリデバイスは、1ページ当たり4320バイト(B)のデータ、1ブロック当たり128ページ、1プレーン当たり2048ブロック、および1デバイス当たり16プレーンを含むことができる。
動作時には、メモリシステムのメモリデバイス(たとえばシステム104のメモリデバイス110−1〜110−N)に対し、1ページのデータとしてデータの書き込みおよび/または読み出しを実行することができる。そのような1ページのデータはメモリシステムのデータ転送サイズと呼ぶことができる。ホスト(たとえばホスト102)との間でデータをセクター単位で転送することができる。そのような1セクターのデータはホストのデータ転送サイズと呼ぶことができる。
1ページのデータには、ユーザーデータのいくつかのバイト(たとえばデータのいくつかのセクターを含むデータペイロード)とともに、それに対応するメタデータが含まれうるが、多くの場合、1ページのデータのサイズによって表されるのは、ユーザーデータを格納するために使用されるバイト数のみである。一例として、4KBのページサイズを有する1ページのデータには、ユーザーデータを格納するために使用される4KB(たとえばセクターサイズを512Bと仮定して8セクター)とともに、そのユーザーデータに対応するメタデータを格納するためのいくつかのバイト(たとえば32B、54B、224Bなど)が含まれうる。そのメタデータには、エラーデータ(たとえばエラー検出および/または訂正コードデータ)などの完全性データおよび/またはアドレスデータ(たとえば論理アドレスデータ)のほか、ユーザーデータに対応する各種のメタデータを含めることができる。
メモリデバイス(たとえばデバイス110−1〜110−N)の種類によって、提供されるページサイズが異なり、かつ/または格納ページに関連して利用可能なメタデータバイトの量が異なることがある。また、メモリデバイスの種類によってビットエラーレートが異なることがあり、その場合、データページの完全性を確保するために必要なメタデータの量が変化する場合がある(たとえば、ビットエラーレートがより高いメモリデバイスは、ビットエラーレートがより低いメモリデバイスと比較して、より多くのバイト数のエラー訂正コードデータを必要とすることがある)。一例として、マルチレベルセル(MLC)NANDフラッシュデバイスのビットエラーレートは、シングルレベルセル(SLC)NANDフラッシュデバイスよりも高くなる可能性がある。そのため、MLCデバイスは、エラーデータに関してSLCデバイスよりも多くのメタデータバイトを使用することがある。場合によっては、1ページのデータに関する所望の完全性を与えるために必要なメタデータの量が1つのメモリデバイスによって提供されるメタデータバイト数を超えることもある。すなわち、当該ページに対応する複数セクター(たとえばユーザーデータ)に関する十分なエンド−エンド間のデータ完全性を与えるために望ましい量よりも利用可能な量のメタデータバイトの方が少ないということが起こりうる。
図2は、本開示の1つまたは複数の実施形態による転送データの完全性を与えることに関連したメモリコントローラ208の機能ブロック図である。コントローラ208は、図1に示したメモリシステム104などのメモリシステムのコンポーネントであってよい。当業者によって理解されるように、図2に示した以外の追加回路およびコンポーネントを設けることができ、また、図2は図示を容易にする目的で細部が簡略化されている。実施形態は図2に示した例に限定されない。たとえば、コントローラ208の1つまたは複数の例示コンポーネントを単一コンポーネントとして統合することができる。また、本開示のいくつかの実施形態において、1つまたは複数の例示コンポーネントを任意とすることができる。
図2に示すように、メモリコントローラ208は、ホストインタフェース206といくつかのメモリデバイス210との間でデータを転送するために使用される制御回路を備える。メモリデバイス210は、図1に示したメモリデバイス110−1〜110−Nなどのメモリデバイスであってよい。
いくつかの実施形態において、制御回路は、ホストインタフェース206といくつかのメモリデバイス210との間で転送されるデータの完全性を与えるために、第1の形式と第2の形式との間でメタデータ形式を整合させる(たとえば変更する)ように構成される。一例として、第1のメタデータ形式には1セクター単位の完全性データが含まれ、第2のメタデータ形式には複数セクター単位の完全性データが含まれる。詳しくは後述するように、転送データの完全性を与えることには複数の処理が含まれうる。具体的には、第1の形式を有するメタデータである、ホストから(たとえばホストからの書き込み要求に関連して)受信したいくつかのセクター(たとえば図3に示すデータフィールド348に配置されたセクター)に対応するメタデータ(たとえば図3に示すメタデータ341)について、第1の完全性データ(たとえばエラーデータおよび/またはアドレスデータ)の検査を実行すること、および第2のメタデータ(たとえば図4に示すメタデータ447および/または図5に示すメタデータ547−0/547−1)に関する第2の完全性データ(たとえば図4に示す完全性データ454−0/454−1および/または図5に示す552/554)を生成することが含まれ、この第2の完全性データはいくつかのセクターの中の少なくとも1つに対応しており、上記の処理にはさらに、第2のメタデータに関する第3の完全性データ(たとえば図4に示す完全性データ458および/または図5に示す558−0/558−1)を生成することが含まれる。この第3の完全性データは、いくつかのセクターの中の少なくとも1つに対応するとともに第2の完全性データに対応するエラーデータを含む。
コントローラ208は、(たとえばホストからの書き込み要求に応答して)ホストから受信したデータ(たとえばユーザーデータ)のいくつかのセクターを1つのページとして書き込むことができる。さまざまな例において、コントローラ208が受信するセクター数は、いくつかのメモリデバイス210のページサイズに対応するセクター数よりも少ない可能性がある。そのような場合、コントローラ208は、部分ページ書き込み動作を実行することができ、これには、たとえば、ホストから受信したセクターをメモリデバイス210から読み出したページのセクターと結合する(たとえば読み出したページのセクターをホストから受信したセクターに置き換える)ことによって結合ページを形成することと、それに続いて結合ページをメモリデバイス210に書き込むことが含まれうる。同様に、コントローラ208は、(たとえばメモリデバイス210のページサイズに対応するセクター数よりも少ないいくつかのセクターを対象としたホスト読み出し要求に応答して)部分ページ読み出し動作を実行することができる。部分ページ読み出し動作には、メモリデバイス210から1ページのデータを読み出すこと、および要求されたデータセクターのみをホストに提供することが含まれうる。詳しくは後述するように、本開示の実施形態は、上記のような部分ページ書き込みおよび/または読み出し動作に関連して転送データの完全性を与えることができる。
図2に示すように、コントローラ208は、データ完全性(DI)挿入コンポーネント220を備えることができる。コンポーネント220は、ホストから受信したデータのセクターに特定のメタデータ形式を有するメタデータを付加することができる。その特定のメタデータ形式はホスト形式と呼ばれうる。例示ホストメタデータ形式を図3に示す。この図では、ユーザーデータのセクターがデータフィールド348(セクターフィールド348とも呼ばれうる)に配置され、メタデータ341が付加されている。図3に示す例において、セクターフィールド348のサイズは512Bであり(たとえばセクターサイズが512B)、メタデータ341は8Bのデータ完全性フィールド(DIF)であって、その中にサブフィールド342、344、および346が含まれ、これによりセクターフィールド348に対応するセクターと関連づけられた完全性データが与えられる。実施形態は、この例に限定されない。たとえば、セクターフィールド348は、512Bより大きいか、またはより小さいサイズであってよく、また、メタデータフィールド341は、8Bより大きいか、またはより小さいサイズであってよい。一例として、データフィールド348のサイズが4096バイトであり、メタデータフィールド341のサイズが128B(たとえば各ホストセクターが128Bのメタデータと関連づけられる)であるような4096Bのホストセクターサイズが可能である。図示した例において、フィールド346は、セクターフィールド348に対応するユーザーデータのセクターに対応したエラーデータを含む。この例において、フィールド346のエラーデータは、セクターフィールド348に対応するセクターに対応した2Bの周期的冗長検査(CRC)である。フィールド344は2Bのアプリケーションタグであって、その中にさらなる完全性データを含むことができ、フィールド342は4Bの参照フィールドであって、その中にセクターフィールド348に対応するセクターと関連づけられたアドレスデータを含むことができる。
いくつかの実施形態において、ホストから受信したユーザーデータの各セクターにメタデータ341が付加される(たとえばメタデータ341の完全性データは1セクター単位である)。一例として、コンポーネント220は、1セクター単位で各セクターに関するエラーデータ346を計算することができる。いくつかのセクターおよび対応するメタデータ341の各々(たとえばいくつかのデータグループ340の各々)を(たとえば書き込み動作に関連してデータバッファ222経由で)コントローラ208の完全性コンポーネント224に転送することができる。いくつかの実施形態において、各データグループ340と関連づけられたメタデータ341はホストインタフェース206を出力元とすることができ、また、コンポーネント220を使用して、図4に示すような追加完全性データ(たとえば452、454−0、454−1など)を挿入することができる。いくつかの実施形態において、ホストから受信したデータのセクターに(たとえばコンポーネント220を使用して)メタデータ341のフィールド342、344、および346と関連づけられたデータを付加することができ、またはコントローラ208によって受信される前に当該データのセクターにメタデータ341を付加することができる。
図2に示した例において、コントローラ208は結合コンポーネント228を備え、データグループ340を完全性コンポーネント224に転送する前に(たとえばセクター数がフルページに対応するセクター数よりも少なく、書き込み動作が部分ページ書き込み動作になる場合)、その結合コンポーネント228に転送することができる。図2に示した例において、メモリデバイス210と関連づけられたページサイズは4KBである(たとえば8個の512Bセクター)。
結合コンポーネント228は、部分ページ書き込み動作に関連して、いくつかのメモリデバイス210から1ページのデータに対応する第2のいくつかのセクター(たとえば8個のセクター)を受け取ることができる。この第2のいくつかのセクターには、それらのセクターに対応する第2の形式(たとえばメモリデバイス210と関連づけられた形式であって、メモリメタデータ形式または調整(adjusted)形式と呼ばれうる)のメタデータが含まれうる。調整形式については、図4および図5に例示して、より詳しく説明する。いくつかの実施形態において、結合コンポーネント228は、メモリデバイス210から受け取ったデータのページに対応する第2のいくつかのセクターの中の少なくとも1つを、ホストから受信した第1のいくつかのセクター(たとえばセクターフィールド348に対応するセクター)の中の少なくとも1つに置き換えることによって、結合ページを形成することができる。結合コンポーネント228は、結合ページのセクターを完全性コンポーネント224に与える前に、その結合ページのセクターと関連づけられたメタデータ形式を調整形式からホスト形式に変更することもできる。いくつかの実施形態において、結合コンポーネント228は、当該データのページに対応する第2のいくつかのセクターの中の少なくとも1つをセクターフィールド348に対応する第1のいくつかのセクターの中の少なくとも1つに置き換える前に、その第2のいくつかのセクターに対応するメタデータのエラーデータの検査(たとえばCRC検査)を実行するように構成される。
完全性コンポーネント224は、1つのページとしてデバイス210に書き込まれるいくつかのセクターに対応する第1のメタデータ341の完全性データの検査を実行するように構成される。たとえば、完全性コンポーネント224は、各セクターについて、エラーデータ(たとえばCRC)を計算し、それをメタデータ341のエラーデータ346と比較することができ、これにより、コンポーネント220からコンポーネント224に転送されるデータの完全性の指示が与えられうる。完全性コンポーネント224は、CRCエンジンおよび/またはエラー訂正コード(ECC)エンジンのほか、受信データの完全性検査を実行するように構成された各種回路を備えることができる。
完全性コンポーネント224は、第2のメタデータ形式(たとえば図4および図5に示すようなメモリメタデータ形式としてメモリデバイス210と関連づけられたもの)を有する第2のメタデータ(たとえば図4に示すメタデータ447および/または図5に示すメタデータ547−0/547−1)を生成することもできる。すなわち、コンポーネント224は、第1のいくつかのセクター(たとえばセクターフィールド348に対応するいくつかのセクター)と関連づけられたメタデータ形式を調整メタデータ形式に変更する。第2のメタデータ形式は、図4および図5に示すような形式であってよく、メモリデバイス210の特定の特性(たとえばデバイス種別、エラー検出および/もしくは訂正特性、ページサイズ、ならびに/または利用可能なメタデータバイトの量)およびその他各種の特性に依存するものでありうる。第2のメタデータ形式は、第1のいくつかのセクターの中の少なくとも1つに対応する第2の完全性データ(たとえば図4に示す完全性データ454−0/454−1および/または図5に示す552/554)を含むことができる。第2の完全性データには、第1のメタデータ(たとえば341)の第1の完全性データに加えて、またはその代わりに、エラーデータおよび/またはアドレスデータを含めることができる。いくつかの実施形態において、第2のメタデータに第3の完全性データも含めることもでき、その第3の完全性データには、第1のいくつかのセクターの中の少なくとも1つのセクターおよび第2の完全性データに対応するエラーデータが含まれうる。たとえば、第3の完全性データは、ユーザーデータの1つまたは複数のセクターとともにそのユーザーデータに対応した第2の完全性データを対象とする(たとえば保護する)ことができるBCHエラー訂正コード(ECC)などのエラー訂正コードであってよい。完全性コンポーネント224は、メモリデバイス210に書き込むユーザーデータと関連づけられたメタデータ形式を変更することに関連して、第2のメタデータの第2の完全性データを生成することができる。
いくつかの実施形態において、コントローラ208は、第2のメタデータの第3の完全性データを生成するように構成されたコンポーネント226を含む。図2に示した例において、コンポーネント226は、ユーザーデータのいくつかのセクターの中の少なくとも1つに対応するとともに第2のメタデータの第2の完全性データに対応するBCHECCコードの形で第3の完全性データを生成するように構成される。コンポーネント226は、ECCエンジンまたはエラーデータの生成に適したその他のコンポーネントを含むことができる。
コントローラ208は、いくつかのセクターおよび対応する第2のメタデータをメモリデバイス210に(たとえば1ページのデータとして)書き込むように構成される。図2に示すように、コントローラ208は、メモリデバイスに書き込まれるいくつかのセクターの中の1つまたは複数のセクターに関する読み出し動作に関連して、その1つまたは複数のセクターに対応する第2のメタデータと関連づけられた第3の完全性データの検査(たとえば1つまたは複数のセクターおよび誤りデータの存在を検出するための当該セクターに対応する第2の完全性データに対応したBCHECCの検査)を実行するように構成されたコンポーネント230を備えることができる。コンポーネント230は、1つまたは複数のセクターおよび/または当該セクターに対応する第2の完全性データに関連したいくつかのエラー(存在する場合)を訂正することもできる。次いで、検査済み(それとともにおそらくは訂正済み)のセクターおよび対応する第2の完全性データ(調整メタデータ形式を有する)がコントローラ208の第2の完全性コンポーネント234に与えられる。読み出し動作がフルページ読み出し動作の場合、コンポーネント230が受け取ったデータをバッファ232経由で完全性コンポーネント234に直接転送することができる。読み出し動作が部分ページ読み出し動作の場合、コンポーネント230が受け取ったデータをバッファ232経由で完全性コンポーネント234に転送する前に結合コンポーネント228に転送することができる。この例では、ページサイズが4KBであるため(たとえば4KBの各フルページには8個の512Bセクターが含まれる)、ホストから要求された512Bセクターの数が8セクターより少ない読み出し動作が部分ページ読み出し動作になる。コンポーネント226は、ECCエンジンまたはデータ中のエラーの検出および/または訂正に適したその他のコンポーネントを含むことができる。
完全性コンポーネント234は、メモリデバイス210から読み出されたユーザーデータセクターを受け取り、それに対応する第2のメタデータの第2の完全性データの検査を実行することができる。一例として、第2の完全性データには、1つまたは複数のセクターに対応するCRCの形でエラーデータを含めることができる。完全性コンポーネント234は、第2の完全性データ(たとえば、完全性コンポーネント224によって以前に生成され、1つまたは複数のセクターがメモリデバイス210に書き込まれる前に第2のメタデータに挿入された第2の完全性データ)のCRCと比較することが可能な1つまたは複数のセクターに関するCRCを生成することができる。詳しくは後述するように、第2の完全性情報には、複数セクター単位でエラーデータ(たとえばCRC)を含めることができる。
完全性コンポーネント234は、メモリデバイス210から読み出されたセクターに関連するメタデータ形式を調整メタデータ形式からホスト形式(たとえば図3に示した形式)に戻して整合させる(たとえば変換する)こともできる。調整メタデータ形式をホスト形式に戻す変換には、メモリデバイス210から読み出されたいくつかのセクターに対応する第2のメタデータを第3のメタデータに置き換えることが含まれうる。この第3のメタデータには、いくつかのセクターに対応するエラーデータ(たとえばCRC)などの第4の完全性データを含めることができ、完全性コンポーネントは第4の完全性データを1セクター単位で生成することができる。第3のメタデータはメタデータ341に関連付けられるような形式を有してよいため、第4の完全性データを計算して、図3に示したフィールド346などのデータフィールドに含めることができる。
いくつかの実施形態において、第2の完全性コンポーネント234は、ホスト形式を有するいくつかのセクターをコンポーネント236に与えることができ、コンポーネント236は、要求されたいくつかのセクターをホストに与える前に、当該いくつかのセクターに対応する第4の完全性データの検査(たとえばコンポーネント234によって生成されたCRC)を実行することができる。このように、ホストへのいくつかのセクターの返送に対応する読み出し要求に関連して、ホストから受信したデータ(たとえばセクターフィールド348に対応するいくつかのセクター)をメモリデバイス210に書き込む際に、そのデータの完全性を確認することができる。いくつかの実施形態において、コンポーネント236は、読み出し要求と関連づけられたセクターをホストインタフェース206経由でホストに返送する前に、受け取ったセクターに対応するメタデータを除去(たとえばストリップ処理)することができる。ただし、実施形態はこれに限定されない。たとえば、いくつかの実施形態において、ホスト形式(たとえば図3に示した形式)に対応するメタデータ(たとえば完全性データ)の1つまたは複数の部分をコンポーネント236が受け取った後、それを削除することなく(たとえばホストインタフェース206経由で)ホストに送ることができる。削除されないままの完全性データは、ホストインタフェース206またはホスト自体によって(たとえばアプリケーションレベルで)再検査されうる。
図2に示したコントローラ208は、いくつかのセクターおよびそれに対応するメタデータに関するデータ完全性を与える続けることができるとともに、当該のいくつかのセクターと関連づけられたメタデータ形式を異なる形式の間で整合させることができる。詳しくは後述するように、調整メタデータ形式は、当該セクターの書き込みおよび/または読み出しの対象となるメモリデバイス(たとえばメモリデバイス210)の種類に依存するものでありえる。
いくつかの実施形態において、ホストを起点としない動作(たとえば読み出しおよび/または書き込み動作)に関連して、メモリデバイス210に格納されたデータ(たとえば図4および図5に示すような調整メタデータ形式に従ったもの)をメモリデバイス210との間で転送することができる。たとえば、コントローラ208と関連づけられたメモリ管理コンポーネント(たとえば図6に示す613)は、データ再利用プロセスに関連してメモリデバイス210に対するデータの書き込みおよび/または読み出しを実行することができる。当該例において、完全性コンポーネント224および/または結合コンポーネント228などのコンポーネントは、(たとえば最初にメタデータを調整メタデータ形式からホスト形式に戻した後でホスト形式の完全性データを検査するという方法ではなく)調整メタデータ形式と関連づけられた完全性データを検査することができる。
図4は、本開示の1つまたは複数の実施形態による転送データの完全性を与えることに関連したメタデータ形式を示す。図4に示すメタデータ形式は、特定のメモリデバイス(たとえば図2に示すメモリデバイス210)と関連づけられたメタデータ形式である。一例として、図4に示すメタデータ形式をSLC NANDメモリデバイスと関連づけることができる。
図4に示すメタデータ形式は、たとえば図3に示すホストメタデータ形式と対比される調整メタデータ形式である。図4のデータグループ460は、たとえば、図2に関連して先に説明したコントローラ208の完全性コンポーネント224によって形成されうる。データグループ460は複数のデータグループの中の1つであってよく、その各データグループは、たとえば書き込み動作に関連してホストから受信したいくつかのセクターの中の少なくとも1つを、それに対応するメタデータとともに含むものである。本明細書において、このデータグループ460がコードワード460と呼ばれる。
図4に示した例では、コードワード460はペイロード部分445を含み、ペイロード部分445は2つのセクターデータフィールド448−0および448−1を含む。この例において、コードワード460は、2つの512Bセクター(たとえばフィールド448−0に対応するUSER SECTOR0とフィールド448−1に対応するUSER SECTOR1)とともにメタデータ447を含む。図4には示していないが、4KBのデータページは4個のコードワード460(たとえば、第3および第4のユーザーセクターを含む第1の追加コードワード460、第5および第6のユーザーセクターを含む第2の追加コードワード460、第7および第8のユーザーセクターを含む第3の追加コードワード460がそれぞれの対応メタデータ447とともに含まれる)を含むことができ、そのことを読み手が認識する。この例において、メタデータ447には56Bのデータが含まれる。このようにして、各コードワード460には、1KBのペイロード(たとえば2つの512Bセクター)および56Bの利用可能メタデータが含まれる。したがって、メモリデバイスに対する1ページのデータの書き込みには、4320Bのデータ(たとえば4KBのページサイズに対応する4KBのユーザーデータと320Bのメタデータ)の書き込みが含まれうる。
コードワード460と関連づけられたメタデータ447は、いくつかのデータフィールドを含む。図4に示す矢印は、特定の完全性データフィールドの対象データ部分を示すために使用される。この例において、フィールド450−0は、フィールド448−0のユーザーセクターと関連づけられた8BのDIFデータ(たとえばSECTOR0 DIF)を含む完全性データフィールドである。すなわち、フィールド450−0には、SECTOR0が完全性コンポーネント224に与えられる前に(たとえば図2に示した挿入コンポーネント220を介して)SECTOR0に付加されるメタデータ(たとえば341)を含めることができる。同様に、フィールド450−1は、フィールド448−1のユーザーセクターと関連づけられた8BのDIFデータ(たとえばSECTOR1 DIF)を含む完全性データフィールドである。すなわち、フィールド450−1には、SECTOR1を完全性コンポーネント224に与える前に(たとえば図2に示した挿入コンポーネント220を介して)SECTOR1に付加されるメタデータ(たとえば341)を含めることができる。
メタデータ447のデータフィールド452は、コードワード460が対応する1ページのデータと関連づけられたアドレスデータを含む4Bのデータ完全性フィールドである。アドレスデータ(図中のFLASH LBA)は、フィールド448−0および448−1のユーザーデータセクターが対応するデータの論理ページと関連づけられた論理ブロックアドレス(LBA)であってよい。同じページに対応する複数の異なるコードワード460のフィールド452を検査して、そのページに対応するいくつかのコードワードについてアドレスデータの完全性が維持されているか判定することができる。
メタデータ447のデータフィールド454−0は、2Bのエラーデータフィールドである。この例において、フィールド454−0に対応するエラーデータ(図中のFLASH CRC SECTOR0)は、フィールド448−0、450−0および452に対応するデータを対象とするCRC(たとえば、SECTOR0対応ページの512BのUSER SECTOR0、8BのSECTOR0 DIF、および4BのFLASH LBAを対象とするCRC)である。同様に、メタデータ447のデータフィールド454−1は、2Bのエラーデータフィールドである。この例において、フィールド454−1に対応するエラーデータ(図中のFLASH CRC SECTOR1)は、フィールド448−1、450−1および452に対応するデータを対象とするCRC(たとえば、SECTOR1の対応ページの512BのUSER SECTOR1、8BのSECTOR1 DIF、および4BのFLASH LBAを対象とするCRC)である。図4に示す調整メタデータ形式のデータフィールド452、454−0、および454−1には、図2に関連して先に説明したように第2の完全性データと呼ばれるデータを含めることができる。
この例において、メタデータ447のデータフィールド456は4Bの予備データフィールドである。メモリシステム(たとえば図1に示すメモリシステム104)内部のデータ転送に関連して、フィールド456をさまざまな目的に使用することができる。たとえば、フィールド456には、ペイロード445に関する追加エラーデータおよび/またはその他の完全性データを含めることができる。しかし、フィールド456をデータ完全性以外の目的に使用することもできる。
メタデータ447のデータフィールド458は、28Bのエラーデータフィールドである。この例において、フィールド458(図中のBCHECC16)に対応するエラーデータは、ペイロード445(たとえばUSER SECTOR0およびUSER SECTOR1)に対応する1024Bのユーザーデータおよびそれと関連づけられた56Bのメタデータ447を対象とする16ビットのエラー訂正コード(ECC)である。このようにして、フィールド458に対応するエラーデータは、各コードワード460(たとえば1080Bごと)の16ビット訂正をサポートする。実施形態は、この例に限定されない。図4に示す調整メタデータ形式のデータフィールド458は、図2に関連して先に説明したように第3の完全性データと呼ばれうる。
図4に示す調整メタデータ形式は、コントローラを介して実装され、図2に関連して先に説明したようにホストからの書き込みおよび読み出し要求などの動作に関連してデータ完全性を与える目的で使用されうる。たとえば、完全性コンポーネント224は、ホストからの受信セクターと関連づけられたメタデータ形式を第1の形式(たとえば図3に示したようなホスト形式)から第2の形式(たとえば図4に示したような調整形式)に変換することができる。メモリデバイス210に書き込まれるコードワード(たとえば460)には、コンポーネント226によって生成されたエラーデータが含まれるエラーデータフィールド(たとえば458)が含まれうる。このエラーデータは、当該コードワードの他のメタデータ(たとえばフィールド458以外のデータフィールドに対応するメタデータ447のデータ)およびペイロード(たとえば445)を対象とする。他のメタデータおよびペイロードに関するエラーデータは、当該コードワードが(たとえばホストからの読み出し要求に応答して)メモリデバイス210から読み出される時点で、コンポーネント230を介して検査することができる。読み出し要求が部分ページ読み出し要求であるかフルページ読み出し要求であるかにかかわらず、コントローラ208は、要求セクターをホストに配信する前に、デバイスから読み出されたコードワードに関連づけられたメタデータ形式を変換して調整メタデータ形式からホスト形式に戻すように構成されており、その過程でデータセクターのデータ完全性が維持されている。
図5は、本開示の1つまたは複数の実施形態による転送データの完全性を与えることに関連したメタデータ形式を示す。図5に示すメタデータ形式は、特定のメモリデバイス(たとえば図2に示すメモリデバイス210)と関連づけられたメタデータ形式である。一例として、図5に示すメタデータ形式をMLC NANDメモリデバイスと関連づけることができる。
図5に示すメタデータ形式は、たとえば図3に示したホストメタデータ形式と対比される調整メタデータ形式である。図5に示す第1のデータグループ560−0および第2のデータグループ560−1は、たとえば図2に関連して先に説明したコントローラ208の完全性コンポーネント224およびコンポーネント226によって形成されうる。データグループ560−0および560−1は、コードワード560−0および560−1と呼ばれうる。
図5に示した例では、コードワード560−0および560−1は、それぞれのペイロード部分545−0および545−1とともに、それぞれのメタデータ547−0および547−1を含む。この例において、コードワード560−0と560−1の各々は、2つのセクターデータフィールドを含む(たとえばコードワード560−0はセクターフィールド548−0および548−1を含み、コードワード560−1はセクターフィールド548−2および548−3を含む)。コードワード560−0は、2つの512Bセクター(たとえばフィールド548−0に対応するUSER SECTOR0とフィールド548−1に対応するUSER SECTOR1)を含む。コードワード560−1は、2つの512Bセクター(たとえばフィールド548−2に対応するUSER SECTOR2およびフィールド548−3に対応するUSER SECTOR3)を含む。図5には示していないが、4KBのデータページは4個のコードワード(たとえば、第5および第6のユーザーセクターを含む追加コードワード560−0、第7および第8のユーザーセクターを含む追加コードワード560−1がそれぞれの対応メタデータ547−0および547−1とともに含まれる)を含むことができ、そのことを読み手が認識する。この例において、メタデータ547−0/547−1には、56Bのデータが含まれる。このようにして、各コードワードには、1024Bのペイロード(たとえば2つの512Bセクター)および56Bの利用可能メタデータが含まれる。したがって、メモリデバイスに対する1ページのデータの書き込みには、4320Bのデータ(たとえば4KBのページサイズに対応する4KBのユーザーデータと320Bのメタデータ)の書き込みが含まれうる。
コードワード560−0と関連づけられたメタデータ547−0およびコードワード560−1と関連づけられたメタデータ547−1は、それぞれいくつかのデータフィールドを含む。図5に例示した調整メタデータ形式では、コードワード560−0のメタデータ547−0と関連づけられたデータフィールドがコードワード560−1のメタデータ547−1と関連づけられたデータフィールドと異なる(たとえば56Bの利用可能メタデータが異なる目的で使用される)。図4と同様、図5に示す矢印は、特定の完全性データフィールドの対象データ部分を示すために使用される。
メタデータ547−0のデータフィールド552は、4Bのデータ完全性フィールドであり、コードワード560−0および560−1が対応する1ページのデータと関連づけられたアドレスデータが含まれる。そのアドレスデータ(図中のFLASH LBA)は、フィールド548−0、548−1、548−2、および548−3のユーザーデータセクターが対応するデータの論理ページと関連づけられた論理ブロックアドレス(LBA)であってよい。同じページに対応する別個のコードワード560−0のフィールド552を検査して、そのページに対応するいくつかのコードワードについてアドレスデータの完全性が維持されているか判定することができる。
メタデータ547−1のデータフィールド554は、4Bのエラーデータフィールドである。この例において、フィールド554に対応するエラーデータ(図中のFLASH CRC)は、フィールド548−0、548−1、548−2、548−3、および552に対応するデータを対象とするCRC(たとえば32ビットCRC)である(たとえば512BのUSER SECTOR0、USER SECTOR1、USER SECTOR2、USER SECTOR3および各ユーザーセクターが対応するページの4BのFLASH LBAを対象とするCRC)。図5に示す調整メタデータ形式のデータフィールド552および554には、図2に関連して先に説明したように第2の完全性データと呼ばれるデータを含めることができる。この例において、コードワード560−1と関連づけられたメタデータ547−1は、コードワード560−1と関連づけられたセクター(たとえばUSER SECTOR2およびUSER SECTOR3)とともにコードワード560−0と関連づけられたセクター(たとえばUSER SECTOR0およびUSER SECTOR1)に対応する第2の完全性データ(たとえばデータ完全性フィールド554に対応するCRCの形のエラーデータ)を含む。コードワード560−0と関連づけられたメタデータ547−0も同じく、異なるコードワードと関連づけられたセクターに対応する第2の完全性データ(たとえばデータ完全性フィールド552に対応するアドレスデータ)を含む。すなわち、メタデータ547−0の第2の完全性データ552は、コードワード560−0内のセクターおよび異なるコードワード(たとえば560−1)内のセクターに対応する。このようにして、コードワード560−0/560−1と関連づけられた調整メタデータ形式には、複数のセクター(たとえばこの例におけるセクター0〜3)に対応する第2の完全性データ(たとえばフィールド552および554に対応する完全性データ)が含まれる。
メタデータ547−1のメタデータ547−0および558−1のデータフィールド558−0は、それぞれ52Bのエラーデータフィールドである。この例において、フィールド558−0および558−1に対応するエラーデータ(図中のBCHECC29)は29ビットのエラー訂正コード(ECC)であり、それぞれ、ペイロード545−0(たとえばUSER SECTOR0およびUSER SECTOR1)およびペイロード545−1(たとえばUSER SECTOR2およびUSER SECTOR3)に対応する1024Bのユーザーデータとともに、各ユーザーデータと関連づけられた56Bのメタデータ547−0および547−1を対象とする。このようにして、フィールド558−0および558−1に対応するエラーデータは、コードワードごと(たとえば1080Bごと)の29ビット訂正をサポートする。実施形態は、この例に限定されない。図5に示す調整メタデータ形式のデータフィールド558−0および558−1は、図2に関連して先に説明したように第3の完全性データと呼ばれうる。
コードワード560−0および560−1を当該データのページに対応する追加コードワードとともにメモリデバイス(たとえばメモリデバイス210)に書き込むことができる。たとえば、読み出し動作に応答して、メタデータ547−0および547−1の第3の完全性データ(たとえば完全性データフィールド558−0および558−1のECCコード)を検査することができる。第3の完全性データの検査は、図2に示すコンポーネント230などのコンポーネントによって実行することができる。いくつかの実施形態において、第3の完全性データの検査実行後、メタデータ547−0および547−1の第2の完全性データ(たとえばデータ完全性フィールド554のCRC)の検査を(たとえば完全性コンポーネント234によって)実行することができる。いくつかの実施形態において、完全性コンポーネント234は、1セクター単位で、いくつかのコードワードの中の特定の1つのコードワード内の少なくとも1つのセクター(たとえばコードワード560−0のUSER SECTOR0)に対応する第4の完全性データを生成することができる。上述のように、コンポーネント234は、いくつかのコードワードの中の特定の1つと関連づけられたメタデータ(たとえばコードワード560−0と関連づけられたメタデータ547−0)を少なくとも1つのセクター(たとえばUSER SECTOR0)に対応する調整メタデータ(たとえば図3に示すメタデータ341などのホスト形式を有するメタデータ)に置き換えることができる。この調整メタデータには、第4の完全性データ(たとえばUSER SECTOR0に対応するCRCなどのエラーデータ)が含まれる。
いくつかの実施形態において、コンポーネント236などのコンポーネントは、いくつかのコードワードの中の特定の1つのコードワード内の少なくとも1つのセクターに対応する調整(たとえば修正)メタデータの第4の完全性データの検査を実行することができる。第4の完全性データの検査には、いくつかのコードワードの中の特定の1つのコードワード内の少なくとも1つのセクターに対応する修正メタデータの第4の完全性データとその少なくとも1つのセクターに対応する第1の完全性データとの比較を含めることができる。たとえば、コンポーネント236は、第4の完全性データ(たとえば完全性コンポーネント234によって生成されたCRC)を以前に生成されたCRC(たとえば挿入コンポーネント220によって生成され、コントローラのバッファに格納されたもの)と比較することができる。いくつかの実施形態において、その少なくとも1つのセクターをホストに転送する前に、その少なくとも1つのセクターに対応する調整メタデータを(たとえばコンポーネント236を介して)削除することができる。しかし、先に示したように、いくつかの実施形態において、コンポーネント236が(たとえばコンポーネント234から)受け取った修正メタデータの1つまたは複数の部分を削除しないままホストインタフェース206に与えることができる。
たとえば、部分読み出し動作に応答して、メタデータ547−0および547−1の第3の完全性データ(たとえば完全性データフィールド558−0および558−1のECCコード)を検査することもできる。そのような実施形態において、第3の完全性データの検査は、図2に示すコンポーネント230などのコンポーネントによって実行することができる。いくつかの実施形態において、第3の完全性データの検査実行後、メタデータ547−0および547−1の第2の完全性データ(たとえばデータ完全性フィールド554のCRC)の検査を(たとえば結合コンポーネント228によって)実行することができる。結合コンポーネント228は、メタデータ547−0および547−1の第2の完全性データの検査後、メタデータを図5に示す調整形式からホスト形式(たとえば図3に示すようなセクターごとに完全性データを含む形式)に変換するように構成される。結合コンポーネント228は、メモリデバイス210から読み出されたページの1つまたは複数のセクターを部分読み出し動作に関連して受け取った1つまたは複数のホストセクターに置き換えることができ、また、そのデータおよび関連メタデータを完全性コンポーネント224に転送することができる。完全性コンポーネント224は、上述のようなホスト形式によるデータを受け取るように構成される。いくつかの部分読み出し動作において、結合コンポーネント228は、メモリデバイス210から読み出されたページに対応する各コードワード(たとえばコードワード560−0、560−1および読み出しページに対応するその他のコードワード)の第2の完全性データの検査を実行しなくてもよい。たとえば、メモリデバイスから読み出されて6個のホストセクターと結合される2個のセクター(たとえばUSER SECTOR0とUSER SECTOR1)が部分読み出しに含まれる場合、結合コンポーネント228は、完全性データフィールド554の完全性データ(たとえばフィールド548−1、548−2、548−3、548−4、および552に対応するCRC)を検査することができる。しかし、その読み出しページに対応する他のコードワードにはホストセクターと結合されるセクターが含まれないため、それらのコードワードに関連づけられた第2の完全性データの検査を実行しないように結合コンポーネント228を構成することができる。同様に、この部分読み出しの例に関連して、ホストセクターと結合されるセクターを含まない読み出しページ内のコードワードと関連づけられたメタデータについて、調整形式からホスト形式への変換を実行しないように結合コンポーネント228を構成することができる。部分読み出し動作と関連づけられたセクターを含まないコードワードのメタデータを変換しないこと、かつ/またはそのメタデータと関連づけられた第2の完全性データを検査しないことにより、処理リソースを節約できるほか、さまざまな利益がもたらされる。
図6は、本開示の1つまたは複数の実施形態によるメモリコントローラ608の機能ブロック図である。コントローラ608は、図1に関連して説明したコントローラ108などのコントローラまたは図2に関連して説明したコントローラ208などのコントローラであってよい。
図6に示す例において、コントローラ608は、メモリ管理コンポーネント613およびメモリ制御コンポーネント611を備える。メモリ管理コンポーネント613は、ウエアレベリング(たとえばガーベジコレクションおよび/または再使用)、エラー検出および/または訂正、ブロック除外など、メモリデバイス610−1〜610−Nに関する各種のメモリ管理機能と関連づけられたコンポーネント(たとえば回路および/またはファームウェア)を含む。メモリ管理コンポーネント613は、ホストコマンド(たとえば、ホストインタフェース606を介してホストから受信するコマンド)を解析および/またはフォーマットして、複数のデバイスコマンド(たとえばメモリデバイス610−1〜610−Nの操作に関連したコマンド)に変換することができる。メモリ管理コンポーネント613は、(たとえば各種のメモリ管理機能を達成する目的で)デバイスコマンドを生成することもできる。メモリ管理コンポーネント613は、メモリ制御コンポーネント611にデバイスコマンドを与えるように構成される。
メモリ制御コンポーネント611は、いくつかのメモリデバイス610−1〜610−Nに対するデータの書き込み、メモリデバイス610−1〜610−Nからのデータの読み出し、およびメモリデバイス610−1〜610−N内のデータ(たとえば複数のブロック)の消去に関連したメモリ動作を制御するように構成される。それらのメモリ動作は、ホストコマンド(たとえばホストインタフェース606を介してコントローラ608に送られたホストコマンド)に基づく動作(たとえば読み出しおよび/または書き込み)であってよく、ならびに/または(たとえばウエアレベリング、エラー検出および/または訂正などに関連して)制御コンポーネント611および/もしくはメモリ管理コンポーネント613によって開始される内部的に生成されたデバイスコマンドに基づくものであってよい。
制御コンポーネント611に結合されたメモリデバイス610−1〜610−Nは、図1で説明したデバイス110−1〜110−Nなどの不揮発性メモリデバイスであってよい。図6に示す例において、メモリデバイス610−1〜610−Nは、NANDフラッシュメモリデバイスである。上述のように、メモリデバイス610−1〜610−N内のメモリセルをいくつかの物理ページと関連づけ、それらの物理ページを有するいくつかのブロックに編成することができる。
メモリ制御コンポーネント611はエラー訂正コンポーネント619を含み、そのエラー訂正コンポーネント619には、メモリデバイス610−1〜610−Nに対する書き込みおよび/もしくは読み出しが行われるデータに関連するエラーを検出ならびに/または訂正するように構成されたECCエンジンあるいはその他の回路を含むことができる。いくつかの実施形態において、エラー訂正コンポーネント619は、提供されたデータ内のビットエラーを検出するためにBCHECC(たとえば図2、図4および図5に関連して先に説明した機能など)を利用することができる。検出されたビットエラーには、エラー訂正コンポーネント619によって訂正可能な場合と訂正不可能な場合がある(たとえば検出された誤りビットの数および使用ECCの種類などに依存する)。いくつかの誤りビットがコンポーネント619によって訂正可能である場合、当該動作は訂正可能ビットエラーであり、コンポーネント619は、その特定動作の完了に伴ってエラー訂正の処理に進むことができる。いくつかの誤りビットがコンポーネント619によって訂正可能でない(たとえば誤りビットの数がコンポーネント619に関連する訂正可能ビット数の閾値を超える)場合、当該動作は訂正不可能ビットエラーである。訂正可能ビットエラーおよび訂正不可能ビットエラーをメモリ管理コンポーネント613に報告するようにメモリ制御コンポーネント611を構成することができる。
メモリ管理コンポーネント613は、いくつかの管理テーブル615を備える。テーブル615には、メモリデバイス610−1〜610−Nに関連した各種の情報を保持することができる。たとえば、デバイス610−1〜610−N内のブロックに関するブロックエイジおよび/またはブロック消去回数に関する情報をテーブル615に含めることができる。また、メモリデバイス610−1〜610−Nと関連づけられたブロックおよび/またはページに関連するエラー履歴に関する情報をテーブル615に含めることができる。たとえば、テーブル615は、デバイス610−1〜610−Nに関連したいくつかのエラー数(たとえば書き込み動作エラー数、読み出しビットエラー数、読み出し動作エラー数および/または消去エラー数を含む各種エラー数)を保持することができる。書き込み動作エラーは、実行が失敗した書き込み動作(たとえばホスト開始またはデバイス開始による動作)を指す。読み出し動作エラーは、実行が失敗した読み出し動作(たとえばホスト開始またはデバイス開始による動作)を指す。読み出しビットエラーは、結果的にデータ(たとえばページ)の読み出しに関連したいくつかのエラービットが検出される読み出し動作を指すことができる。上述のように、いくつかの検出エラーには、エラー訂正コンポーネント(たとえば619)によって訂正可能な場合と訂正不可能な場合がある。検出エラーの数がエラー訂正コンポーネント(たとえば619)によって訂正可能なエラー数の閾値を超える場合、そのビットエラーは訂正不可能ビットエラーと呼ばれる。テーブル615は、メモリデバイス610−1〜610−Nと関連づけられたブロックに発生した訂正可能および/または訂正不可能な読み出しビットエラーの数を保持することができる。テーブル615には、LBAテーブルなどの各種テーブルを含めることもできる。
コントローラ608のメモリ管理コンポーネント613は、冗長管理コンポーネント617を含む。この冗長管理コンポーネント617はRAID(独立ディスク冗長アレイであって、ここでの用語「ディスク」はハードディスクドライブを使用した従来の実装を単純に引き継いだもの)ユニット617であってよい。RAIDユニット617を使用することにより、RAIDとしてのメモリデバイスの運用に伴う冗長性を通じて、データ信頼性が提供されうる。RAIDユニット617は、たとえばRAID排他的論理和(XOR)回路など、さまざまなRAIDレベルと関連づけられた各種回路を含むことができる。
いくつかの実施形態において、コントローラ608は、ホストインタフェース606とメモリデバイス610−1〜610−Nとの間で転送されるデータの完全性を維持しながら、読み出しおよび書き込み動作など、各種の動作に関連したエラー発生(たとえばビットエラーおよび/または動作エラー)の動的な検出および回復を行うように構成される。コントローラ608は、将来の訂正不可能エラーを防止するために障害メモリリソース(たとえばページ、ブロック、および/またはデバイス610−1〜610−N)を利用から除外するように構成される。
たとえば、メモリ管理コンポーネント613は、メモリ制御コンポーネント611に対して(たとえばメモリデバイス610−1〜610−N内のブロックの書き込み準備のために)消去コマンドの実行を開始することができる。制御コンポーネント611は、消去動作に関連した消去エラーの発生を検出するとともに、そのエラー発生をメモリ管理コンポーネント613に報告することができる。消去エラーの場合、当該ブロック内の有効データはすべて消去動作の実行前に別のブロックに移動されているため、データ回復の必要はない。消去エラーに関連したブロックは、消去エラー数が閾値に達した時点で除外することができる。いくつかの実施形態において、消去エラー数の閾値は1であるが、実施形態はこれに限定されない。
さまざまな実施形態において、コントローラ608は、各種のデバイス動作および/またはホスト動作(たとえば読み出しおよび/または書き込み動作など)を実行する一方で、ウエアレベリング機能(たとえばガーベジコレクションおよび/または再使用)、エラー検出/訂正機能(たとえばECC関連)、ページおよび/またはブロック除外機能、RAID機能など、メモリデバイス610−1〜610−Nに関連した各種のメモリ管理機能を実行することができる。このようにして、ユーザーに知覚される影響なしに、各種のメモリ管理機能を実行することができる。本明細書に説明する実施形態に従ってデータ完全性を維持しながらエラー回復動作を実行できるコントローラ608の機能により、実施されるデバイス製造試験(たとえば消費者に引き渡す前の現場の出荷前試験)の量を減少させることができる。たとえば、本開示の実施形態は、不良ブロックまたは不良メモリデバイス(たとえば610−1〜610−N)の位置の判定に関連したデバイス製造試験の発生を低減または防止することができる。図6に示すコンポーネント(たとえば611、613、615、617、および619)などのハードウェアコンポーネントによって、そのような試験を現場で実施できるためである。すなわち、メモリデバイス610−1〜610−Nは、メモリデバイス610−1〜610−Nに関連付けられた不良ブロック位置に関して無試験とすることができる。当該試験をコントローラ608のハードウェアコンポーネントに移すことによるメモリデバイス(たとえば610−1〜610−N)の出荷前試験の減少および/または廃止によって、デバイスの出荷前試験に関連したコスト低減が可能になる一方、ユーザーに知覚される影響が生じることは、あったとしてもごくわずかである。
一例として、ホスト読み出し動作に関連して、メモリデバイス610−1〜610−Nから読み出されたデータをエラー訂正コンポーネント619によって検査し、データ内のビットエラーを判定(たとえば検出)することができる。いくつかのビットエラー(たとえば存在する場合)が検出され、そのビットエラー数がコンポーネント619によって訂正可能なビットエラー数の閾値より少ない(たとえば当該ビットエラーが訂正可能ビットエラーである)場合には、データが訂正されてホストに提供される。訂正可能ビットエラーの発生はメモリ管理コンポーネント613に報告される。メモリ管理コンポーネント613は、データが読み出されたブロックに関連するビットエラー数(たとえば訂正可能ビットエラーの数)を(たとえばテーブル615に)保持することができ、ビットエラー数が特定のビットエラー数閾値を超えた場合、そのブロックを除外することができる。検出ビットエラーの数がコンポーネント619によって訂正可能なビットエラー数の閾値を上回る(たとえば当該ビットエラーが訂正不可能ビットエラーである)場合には、要求された読み出しデータをRAIDユニット617によって自動的に回復させてからホストに提供することができる。いくつかの実施形態において、メモリ管理コンポーネント613は、受信される訂正不可能ビットエラーの発生指示(たとえばエラー訂正コンポーネント619からの報告による)に応答して、自動的に読み出しデータの回復を開始する。メモリ管理コンポーネント613は、データが読み出されたブロックに関連するビットエラー数(たとえば訂正不可能ビットエラーの数)を(たとえばテーブル615に)保持することができ、ビットエラー数が特定のビットエラー数閾値を超えた場合には、そのブロックを除外することができる。(たとえばビットエラー数の閾値を超えるビットエラー数に応答して)ブロックを除外する前に、RAIDユニット617を使用して、そのブロックに関連したデータを回復させることができ、さらにそのデータを新しいブロック(たとえば利用可能な有効ブロック)に移動させることができる。
デバイス読み出し動作(たとえば再使用などのメモリ管理プロセスに関連して制御コンポーネント611によって開始された読み出し動作)に関連するビットエラーは、同様に扱うことができる。たとえば、訂正可能ビットエラーがコンポーネント619によって検出された場合、当該データを訂正し、メモリデバイス610−1〜610−N内の新しいブロックに移動させることができる(対照的にホスト読み出し動作の場合はデータがホストに渡される)。訂正可能ビットエラーの発生はメモリ管理コンポーネント613に報告され、メモリ管理コンポーネント613は、データが読み出されたブロックに関連するビットエラー数を保持することができ、ビットエラー数が特定のビットエラー数閾値を超えた場合には、そのブロックを除外することができる。検出ビットエラーの数がコンポーネント619によって訂正可能なビットエラー数の閾値を上回る(たとえば当該ビットエラーが訂正不可能ビットエラーである)場合、RAIDユニット617を使用して、要求された読み出しデータをただちに回復させることができ、さらにそのデータを新しいブロックに移動させることができる。訂正不可能ビットエラーの発生はメモリ管理コンポーネント613に報告され、メモリ管理コンポーネント613は、データが読み出されたブロックに関連するビットエラー数を保持することができ、ビットエラー数が特定のビットエラー数閾値を超えた場合には、そのブロックを除外することができる。(たとえばビットエラー数の閾値を超えるビットエラー数に応答して)ブロックを除外する前に、そのブロックに関連したデータをRAIDユニット617によって回復させることができ、そのデータを新しいブロック(たとえば利用可能な有効ブロック)に移動させることができる。
読み出し動作エラー(たとえばホスト読み出し動作エラーおよびデバイス読み出し動作エラー)は、ホストおよびデバイス読み出し動作に対応するビットエラーに関連して先に説明した方法と同様に扱うことができる。たとえば、読み出し要求が失敗した場合、その失敗の指示をメモリ管理コンポーネント613に与えることができ、メモリ管理コンポーネント613は、要求された読み出しデータの回復を(たとえばRAIDユニット617によって)自動的に開始することができる。
書き込み動作エラー(たとえばホスト書き込み動作エラーおよびデバイス書き込み動作エラー)は、ホストおよびデバイス読み出し動作に対応するビットエラーおよび/または読み出し動作エラーに関連して先に説明した方法と同様に扱うことができる。たとえば、書き込み要求が失敗した場合、その失敗の指示をメモリ管理コンポーネント613に与えることができ、メモリ管理コンポーネント613は、要求された書き込みデータの回復を(たとえばRAIDユニット617によって)自動的に開始することができる。いくつかの実施形態において、メモリ管理コンポーネント613は、受信される書き込みエラーの発生指示(たとえば制御コンポーネント611からの報告による)に応答して、自動的に書き込みデータの回復を開始する。メモリ管理コンポーネント613は、データが書き込まれたブロックに関連する書き込みエラー数を(たとえばテーブル615に)保持することができ、書き込みエラー数が特定の書き込みエラー数閾値を超えた場合には、そのブロックを除外することができる。書き込みデータの自動回復(たとえばRAIDユニット617による)に関して、回復された書き込みデータは新しいブロック(たとえば利用可能な有効ブロック)に移動させることができる。
<結論>
本開示は、データ完全性を与えるための装置(たとえばコンピューティングシステム、メモリシステム、コントローラなど)および方法を含む。1つまたは複数の方法実施形態には、たとえば、いくつかのメモリデバイス(たとえば単一メモリデバイス)に書き込まれるデータのいくつかのセクターを受け取ること、およびそのいくつかのセクターに対応する第1のメタデータを付加するとともに、そのいくつかのセクターに第1の完全性データを含めることが含まれ、この第1のメタデータは特定の形式を有するものである。方法実施形態にはさらに、第2のメタデータで与えられる第2の完全性データを生成することが含まれ、この第2の完全性データはいくつかのセクターの中の少なくとも1つに対応するものである(第2のメタデータは第2の形式を有する)。方法実施形態にはさらに、第2のメタデータで与えられる第3の完全性データを生成することが含まれ、この第3の完全性データは、第2の完全性データおよびいくつかのセクターの中の少なくとも1つに対応するエラーデータを含むものである。
当然ながら、1つの要素が別の要素「上」、別の要素「に接続」、または別の要素「と結合」と記載されている場合、その「上」、「接続」、または「結合」は直接的な関係でありうるか、介在要素が存在することもありうる。一方、1つの要素が別の要素の「直上」、別の要素に「直接的に接続」または別の要素と「直接的に結合」と記載されている場合には、介在要素または階層は存在しない。本明細書における用語の「および/または」は、列挙された1つまたは複数の関連項目のあらゆる組み合わせを含む。
本明細書において使用される用語の「および/または」は、列挙された1つまたは複数の関連項目のあらゆる組み合わせを含む。本明細書において使用される用語の「または」は、特段の注記がないかぎり、包含的論理和を意味する。すなわち、「AまたはB」には、(Aのみ)、(Bのみ)、または(AとBの両方)が含まれうる。言い換えれば、「AまたはB」は、「Aおよび/またはB」あるいは「AとBの一方または両方」という意味である。
当然ながら、本明細書では各種の要素を記述するために第1、第2、第3などの用語を使用することがあるが、それらの要素は、これらの用語によって限定されるべきではない。これらの用語は、1つの要素を別の要素と区別するためにのみ使用されている。したがって、本開示の教示内容から逸脱することなく、第1の要素が第2の要素と呼ばれることもありえる。
本明細書には具体的な実施形態が例示および説明されているが、当業者によって理解されるように、本明細書中の具体的な実施形態の代替として、同じ結果を達成するように考案された仕組みを用いることができる。本開示は、本開示の1つまたは複数の実施形態の改作物または変形を包含することを意図している。当然ながら、上述の説明は例示的な方法で行われており、制限的ではない。上述の説明を精査することにより、当業者には上述の実施形態と、本明細書に具体的に説明されていない他の実施形態との組み合わせが明らかになるはずである。本開示の1つ以上または複数の実施形態の範囲には、上述の構造および方法を使用する他の用途が含まれる。したがって、本開示の1つ以上または複数の実施形態の範囲は、添付の請求項を参照するとともに、それらの請求項に対して認められる均等物の全範囲を考慮して確定されるべきである。
上述の「発明を実施するための形態」においては、開示内容を簡潔にする目的で、いくつかの特徴が1つの実施形態にまとめられている。この開示方法は、本明細書に開示された実施形態が各請求項に明示的に記載されているよりも多くの特徴を必要とするという意図を反映したものと解釈されるべきではない。正しくは、以下の請求項に反映されているように、発明的主題は1つの開示された実施形態のすべての特徴よりも少ない中に存在する。したがって、本明細書により、以下の請求項は「発明を実施するための形態」に組み込まれるものとし、各請求項は別個の実施形態として自立している。

Claims (13)

  1. いくつかのメモリデバイスに結合されるように構成されるコントローラを備える装置であって、該コントローラは、
    前記いくつかのメモリデバイスに書き込まれるデータのいくつかのセクターを受け取ることと、
    前記いくつかのセクターに、前記いくつかのセクターに対応し第1の完全性データを含み第1の形式を有する第1のメタデータを付加することと、
    第2の形式を有する第2のメタデータで与えられ前記いくつかのセクターの中の少なくとも1つに対応する第2の完全性データを生成することと、
    前記第2のメタデータで与えられ前記第2の完全性データおよび前記いくつかのセクターの中の少なくとも1つに対応するエラーデータを含む第3の完全性データを生成することを含み、
    前記コントローラは、前記第2の完全性データを生成する前に前記第1の完全性データの検査を実行するように構成される、装置。
  2. 前記メモリデバイスに書き込まれる前記いくつかのセクターに対応する前記第1のメタデータの前記第1の完全性データは、1セクター単位のエラーデータを含み、
    第1のいくつかのセクターの中の少なくとも1つに対応する前記第2のメタデータの前記第2の完全性データは、複数セクター単位のエラーデータを含む、請求項1に記載の装置。
  3. 前記コントローラは、前記いくつかのセクターおよび対応する前記第2の形式を有する第2のメタデータを前記いくつかのメモリデバイスに書き込むように構成され、前記コントローラはさらに、
    読み出し動作に関連して第1のいくつかのセクターおよび対応する第2のメタデータを前記いくつかのメモリデバイスから受け取ることと、
    前記第3の完全性データの前記エラーデータの検査を実行することと、
    その後、前記第2の完全性データのエラーデータおよびアドレスデータの少なくとも一方の検査を実行することと、
    前記いくつかのセクターをホストに与える前に、前記第1のいくつかのセクターと関連づけられたメタデータ形式を調整して前記第2の形式から前記第1の形式に戻すこととを目的に構成される、請求項1に記載の装置。
  4. 前記コントローラは、第1のいくつかのセクターを前記ホストに与える前に、前記第1のいくつかのセクターと関連づけられたメタデータ形式を調整して前記第2の形式から前記第1の形式に戻すように構成され、該コントローラは、
    前記いくつかのセクターに関する1セクター単位のエラーデータを生成することと、
    前記いくつかのセクターを前記ホストに与える前に、各セクターの前記エラーデータの検査を実行するように構成される、請求項に記載の装置。
  5. いくつかのメモリデバイスに結合されるように構成されるコントローラを備える装置であって、該コントローラは、
    前記いくつかのメモリデバイスに書き込まれるデータのいくつかのセクターを受け取ることと、
    前記いくつかのセクターに、前記いくつかのセクターに対応し第1の完全性データを含み第1の形式を有する第1のメタデータを付加することと、
    第2の形式を有する第2のメタデータで与えられ前記いくつかのセクターの中の少なくとも1つに対応する第2の完全性データを生成することと、
    前記第2のメタデータで与えられ前記第2の完全性データおよび前記いくつかのセクターの中の少なくとも1つに対応するエラーデータを含む第3の完全性データを生成することを含み、
    前記コントローラは、前記第1のメタデータを付加するように構成され、
    該装置は、1セクター単位で前記第1の完全性データのエラーデータを生成することと、書き込み動作に関連して前記第2の完全性データを生成する前に、前記エラーデータを前記第1のメタデータに挿入することを目的に構成される前記コントローラを備える、装置。
  6. いくつかのメモリデバイスに結合されるように構成されるコントローラを備える装置であって、該コントローラは、
    前記いくつかのメモリデバイスに書き込まれるデータのいくつかのセクターを受け取ることと、
    前記いくつかのセクターに、前記いくつかのセクターに対応し第1の完全性データを含み第1の形式を有する第1のメタデータを付加することと、
    第2の形式を有する第2のメタデータで与えられ前記いくつかのセクターの中の少なくとも1つに対応する第2の完全性データを生成することと、
    前記第2のメタデータで与えられ前記第2の完全性データおよび前記いくつかのセクターの中の少なくとも1つに対応するエラーデータを含む第3の完全性データを生成することを含み、
    前記データのいくつかのセクターは、データの第1のいくつかのセクターを含み、前記コントローラは、部分ページ書き込み動作に関連して、
    1ページのデータに対応する第2のいくつかのセクターを前記いくつかのメモリデバイスから受け取ることであって、前記第2のいくつかのセクターがそれに対応しかつ前記第2の形式を有するメタデータと関連づけられている、受け取ることと、
    前記いくつかのメモリデバイスからの前記ページの前記セクターと関連づけられたメタデータ形式を前記第2の形式から前記第1の形式に調整することと、
    前記データのページに対応する前記第2のいくつかのセクターの中の少なくとも1つを前記第1のいくつかのセクターの中の少なくとも1つに置き換えることによって結合ページを形成することとを目的にさらに構成される、装置。
  7. 前記コントローラは、前記データのページに対応する前記第2のいくつかのセクターの中の少なくとも1つを前記第1のいくつかのセクターの中の少なくとも1つに置き換える前に、前記第2のいくつかのセクターに対応する前記メタデータのエラーデータの検査を実行するように構成される、請求項に記載の装置。
  8. いくつかのメモリデバイスに結合されるように構成されるコントローラを備える装置であって、該コントローラは、
    前記いくつかのメモリデバイスに書き込まれるデータのいくつかのセクターを受け取ることと、
    前記いくつかのセクターに、前記いくつかのセクターに対応し第1の完全性データを含み第1の形式を有する第1のメタデータを付加することと、
    第2の形式を有する第2のメタデータで与えられ前記いくつかのセクターの中の少なくとも1つに対応する第2の完全性データを生成することと、
    前記第2のメタデータで与えられ前記第2の完全性データおよび前記いくつかのセクターの中の少なくとも1つに対応するエラーデータを含む第3の完全性データを生成することを含み、
    前記いくつかのセクターは第1のいくつかのセクターを含み、前記コントローラは、前記第1のいくつかのセクターおよび対応する前記第2の形式の第2のメタデータを1ページのデータとして前記いくつかのメモリデバイスに書き込むように構成され、前記コントローラは、部分ページ読み出し動作に関連して、
    1ページのデータに対応する第2のいくつかのセクターを前記いくつかのメモリデバイスから受け取ることであって、該第2のいくつかのセクターがそれに対応しかつ前記第2の形式を有するメタデータと関連づけられている、受け取ることと、
    前記部分ページ読み出し動作に関連した前記第2のいくつかのセクターの中の選択された1つまたは複数のセクターに対応する前記メタデータのエラーデータの検査を実行することと、
    前記第2のいくつかのセクターの中の前記選択された1つまたは複数のセクターと関連づけられたメタデータ形式を前記第1の形式に調整し、前記選択されたセクターに対応する前記メタデータに1セクター単位の完全性データが含まれるようにすることと、
    前記部分ページの前記選択されたセクターをホストに与える前に、前記選択されたセクターに対応する前記完全性データの検査を実行することと
    を目的にさらに構成される、装置。
  9. 前記コントローラは、前記部分ページ読み出し動作に関連して、前記選択されたセクターに対応する前記完全性データの検査を実行する前に、前記いくつかのメモリデバイスから受け取った前記選択されたセクターに対応する前記メタデータの完全性データの検査を実行するようにさらに構成される、請求項に記載の装置。
  10. データ完全性を与えるための方法であって、
    メモリデバイスに書き込まれるべきデータのいくつかのセクターであって、前記いくつかのセクターと関連づけられた第1の完全性データを含み特定のメタデータ形式を有する第1のメタデータを有する前記いくつかのセクターを受け取り、
    調整メタデータ形式を有する第2のメタデータで与えられ前記いくつかのセクターの中の少なくとも1つに対応する第2の完全性データを生成し、
    前記第2のメタデータで与えられ前記第2の完全性データおよび前記いくつかのセクターの中の前記少なくとも1つに対応するエラーデータを含む第3の完全性データを生成することとを含み、
    前記第2の完全性データを生成する前に、1つのページを前記メモリデバイスから読み出すことであって、前記ページが複数のセクターと前記調整メタデータ形式を有する対応するメタデータとを含む、読み出すことと、
    前記ページと関連づけられた完全性データの検査を実行することと、
    前記複数のセクターと関連づけられた前記調整メタデータ形式を前記特定のメタデータ形式に調整することと、
    前記読み出しページと関連づけられた前記複数のセクターの中の1つまたは複数のセクターを前記受け取ったいくつかのセクターの中の1つまたは複数のセクターに置き換えることによって、前記メモリデバイスに書き込む前に書き込みページを形成することと
    を含む、データ完全性を与えるための方法。
  11. 前記特定のメタデータ形式は1セクター単位の前記第1の完全性データを含み、前記調整メタデータ形式は複数セクター単位の前記第2の完全性データを含む、請求項10に記載の方法。
  12. 前記第1のメタデータを前記第2のメタデータに置き換えることをさらに含む、請求項10に記載の方法。
  13. 前記メモリデバイスに書き込まれる前記いくつかのセクターの中の1つまたは複数のセクターに関連する読み出し動作に関連して、
    前記1つまたは複数のセクターに対応する前記第2のメタデータで与えられる前記第3の完全性データの検査を実行することと、
    前記第3の完全性データの検査後、前記いくつかのセクターの中の前記1つまたは複数のセクターに対応するエラーデータを含む前記第2の完全性データの検査を実行することと、
    前記いくつかのセクターの中の前記1つまたは複数のセクターと関連づけられた前記調整メタデータ形式を調整して前記特定のメタデータ形式に戻すことと
    を含む、請求項10から12のいずれか一項に記載の方法。
JP2014513640A 2011-05-31 2012-05-29 データ完全性を与えるための装置および方法 Active JP5792380B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/149,488 2011-05-31
US13/149,488 US8589761B2 (en) 2011-05-31 2011-05-31 Apparatus and methods for providing data integrity
PCT/US2012/039851 WO2012166725A2 (en) 2011-05-31 2012-05-29 Apparatus and methods for providing data integrity

Publications (2)

Publication Number Publication Date
JP2014515536A JP2014515536A (ja) 2014-06-30
JP5792380B2 true JP5792380B2 (ja) 2015-10-14

Family

ID=47260250

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014513640A Active JP5792380B2 (ja) 2011-05-31 2012-05-29 データ完全性を与えるための装置および方法

Country Status (7)

Country Link
US (2) US8589761B2 (ja)
EP (1) EP2715550B1 (ja)
JP (1) JP5792380B2 (ja)
KR (1) KR101560077B1 (ja)
CN (1) CN103620565B (ja)
TW (1) TWI468942B (ja)
WO (1) WO2012166725A2 (ja)

Families Citing this family (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4148883B2 (ja) * 2002-12-18 2008-09-10 株式会社パイオラックス グローブボックス用リッドロック装置
US8860117B2 (en) 2011-04-28 2014-10-14 Micron Technology, Inc. Semiconductor apparatus with multiple tiers of memory cells with peripheral transistors, and methods
US9026887B2 (en) 2012-03-15 2015-05-05 Micron Technology, Inc. Physical page, logical page, and codeword correspondence
US8964474B2 (en) 2012-06-15 2015-02-24 Micron Technology, Inc. Architecture for 3-D NAND memory
US9015554B2 (en) * 2012-12-20 2015-04-21 Seagate Technology Llc Management of non-valid decision patterns of a soft read retry operation
US9813080B1 (en) 2013-03-05 2017-11-07 Microsemi Solutions (U.S.), Inc. Layer specific LDPC decoder
US10230396B1 (en) 2013-03-05 2019-03-12 Microsemi Solutions (Us), Inc. Method and apparatus for layer-specific LDPC decoding
US9183081B2 (en) * 2013-03-12 2015-11-10 Sandisk Technologies Inc. Systems and methods for performing defect detection and data recovery in a memory system
KR20150020385A (ko) * 2013-08-13 2015-02-26 에스케이하이닉스 주식회사 데이터 저장 장치, 그것의 동작 방법 및 그것을 포함하는 데이터 처리 시스템
JPWO2015029230A1 (ja) * 2013-08-30 2017-03-02 株式会社日立製作所 記憶装置及びデータ制御方法
GB201322075D0 (en) 2013-12-13 2014-01-29 Ibm Device for selecting a level for at least one read voltage
US9262268B2 (en) * 2013-12-20 2016-02-16 Seagate Technology Llc Method to distribute user data and error correction data over different page types by leveraging error rate variations
US8874835B1 (en) * 2014-01-16 2014-10-28 Pure Storage, Inc. Data placement based on data properties in a tiered storage device system
US10365966B1 (en) * 2014-03-25 2019-07-30 Marvell lnternational Ltd. Methods and systems for wordline based encoding and decoding in NAND flash
TWI545581B (zh) * 2014-04-15 2016-08-11 群聯電子股份有限公司 資料寫入方法、記憶體儲存裝置及記憶體控制電路單元
US9940193B2 (en) 2014-06-06 2018-04-10 Micron Technology, Inc. Chunk definition for partial-page read
US9766972B2 (en) 2014-08-07 2017-09-19 Pure Storage, Inc. Masking defective bits in a storage array
US9558069B2 (en) 2014-08-07 2017-01-31 Pure Storage, Inc. Failure mapping in a storage array
US9652321B2 (en) * 2014-09-23 2017-05-16 Intel Corporation Recovery algorithm in non-volatile memory
US9563373B2 (en) 2014-10-21 2017-02-07 International Business Machines Corporation Detecting error count deviations for non-volatile memory blocks for advanced non-volatile memory block management
US10073735B1 (en) * 2014-10-28 2018-09-11 Seagate Technology Llc Seeding mechanism for error detection codes
US10339048B2 (en) * 2014-12-23 2019-07-02 International Business Machines Corporation Endurance enhancement scheme using memory re-evaluation
US9990279B2 (en) 2014-12-23 2018-06-05 International Business Machines Corporation Page-level health equalization
US10332613B1 (en) * 2015-05-18 2019-06-25 Microsemi Solutions (Us), Inc. Nonvolatile memory system with retention monitor
CN105068939A (zh) * 2015-07-21 2015-11-18 广东明阳龙源电力电子有限公司 一种应用于工业级嵌入式软件***的存储芯片及其方法
US9799405B1 (en) 2015-07-29 2017-10-24 Ip Gem Group, Llc Nonvolatile memory system with read circuit for performing reads using threshold voltage shift read instruction
US9886214B2 (en) 2015-12-11 2018-02-06 Ip Gem Group, Llc Nonvolatile memory system with erase suspend circuit and method for erase suspend management
US9892794B2 (en) 2016-01-04 2018-02-13 Ip Gem Group, Llc Method and apparatus with program suspend using test mode
US9899092B2 (en) 2016-01-27 2018-02-20 Ip Gem Group, Llc Nonvolatile memory system with program step manager and method for program step management
US9679650B1 (en) 2016-05-06 2017-06-13 Micron Technology, Inc. 3D NAND memory Z-decoder
US9672905B1 (en) 2016-07-22 2017-06-06 Pure Storage, Inc. Optimize data protection layouts based on distributed flash wear leveling
US10283215B2 (en) 2016-07-28 2019-05-07 Ip Gem Group, Llc Nonvolatile memory system with background reference positioning and local reference positioning
US10291263B2 (en) 2016-07-28 2019-05-14 Ip Gem Group, Llc Auto-learning log likelihood ratio
US10236915B2 (en) 2016-07-29 2019-03-19 Microsemi Solutions (U.S.), Inc. Variable T BCH encoding
US9747158B1 (en) 2017-01-13 2017-08-29 Pure Storage, Inc. Intelligent refresh of 3D NAND
US20190065303A1 (en) * 2017-08-31 2019-02-28 Hewlett Packard Enterprise Development Lp Processor analysis
DE102017124313B4 (de) * 2017-10-18 2021-03-18 Infineon Technologies Ag Speicheranordnung und verfahren zum verifizieren eines speicherzugriffs
TW202001565A (zh) * 2018-06-21 2020-01-01 慧榮科技股份有限公司 管理快閃記憶體模組的方法及相關的快閃記憶體控制器及電子裝置
CN110659151B (zh) 2018-06-28 2023-05-02 阿里巴巴集团控股有限公司 数据校验方法及装置,存储介质
JP7177338B2 (ja) * 2018-09-06 2022-11-24 富士通株式会社 メモリコントローラ装置、メモリコントローラ装置を有するメモリ装置及びメモリコントロール方法
CN112133362B (zh) * 2019-06-25 2023-05-16 华邦电子股份有限公司 存储器存储装置及其存储器测试方法
US11450381B2 (en) 2019-08-21 2022-09-20 Micron Technology, Inc. Multi-deck memory device including buffer circuitry under array
US11150988B1 (en) * 2020-03-30 2021-10-19 Dell Products L.P. Metadata pattern to detect write loss/inconsistencies of optimized-write-once operations
US20230393930A1 (en) * 2022-06-02 2023-12-07 Micron Technology, Inc. Memory sub-system addressing for data and additional data portions

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7020835B2 (en) * 2000-10-19 2006-03-28 Oracle International Corporation Enhancements to data integrity verification mechanism
US7315976B2 (en) * 2002-01-31 2008-01-01 Lsi Logic Corporation Method for using CRC as metadata to protect against drive anomaly errors in a storage array
US20040153746A1 (en) 2002-04-24 2004-08-05 Talagala Nisha D. Mechanisms for embedding and using integrity metadata
US20040123032A1 (en) * 2002-12-24 2004-06-24 Talagala Nisha D. Method for storing integrity metadata in redundant data layouts
US7577804B2 (en) 2004-10-06 2009-08-18 International Business Machines Corporation Detecting data integrity
JP4953648B2 (ja) * 2006-02-03 2012-06-13 パナソニック株式会社 不揮発性記憶装置およびメモリコントローラ
US20080086615A1 (en) * 2006-10-06 2008-04-10 John Charles Elliott Method and Apparatus to Internalize Non-Volatile Data Function for Sector Size Conversion
US7877665B2 (en) 2006-12-29 2011-01-25 Sandisk Corporation Page by page ECC variation in a memory device
US7873878B2 (en) * 2007-09-24 2011-01-18 International Business Machines Corporation Data integrity validation in storage systems
US8234539B2 (en) 2007-12-06 2012-07-31 Sandisk Il Ltd. Correction of errors in a memory array
JP5166074B2 (ja) * 2008-02-29 2013-03-21 株式会社東芝 半導体記憶装置、その制御方法、および誤り訂正システム
US8213229B2 (en) 2008-08-22 2012-07-03 HGST Netherlands, B.V. Error control in a flash memory device
US8468417B2 (en) * 2009-02-18 2013-06-18 Micron Technology, Inc. Data integrity in memory controllers and methods
WO2011019794A2 (en) 2009-08-11 2011-02-17 Texas Memory Systems, Inc. Method and apparatus for addressing actual or predicted failures in a flash-based storage system

Also Published As

Publication number Publication date
JP2014515536A (ja) 2014-06-30
TWI468942B (zh) 2015-01-11
EP2715550A2 (en) 2014-04-09
WO2012166725A3 (en) 2013-01-24
EP2715550A4 (en) 2014-11-12
US9152512B2 (en) 2015-10-06
US8589761B2 (en) 2013-11-19
KR20140018393A (ko) 2014-02-12
KR101560077B1 (ko) 2015-10-13
EP2715550B1 (en) 2015-10-21
US20140101490A1 (en) 2014-04-10
US20120311388A1 (en) 2012-12-06
CN103620565B (zh) 2016-08-17
TW201303596A (zh) 2013-01-16
CN103620565A (zh) 2014-03-05
WO2012166725A2 (en) 2012-12-06

Similar Documents

Publication Publication Date Title
JP5792380B2 (ja) データ完全性を与えるための装置および方法
KR101536853B1 (ko) 데이터 무결성을 제공하기 위한 방법 및 장치
US10055164B2 (en) Data storage at an access device
US9037946B2 (en) Detecting effect of corrupting event on preloaded data in non-volatile memory
US8650446B2 (en) Management of a non-volatile memory based on test quality
US8645776B2 (en) Run-time testing of memory locations in a non-volatile memory
US8812935B2 (en) Using a data ECC to detect address corruption
US9003264B1 (en) Systems, methods, and devices for multi-dimensional flash RAID data protection
US10127103B2 (en) System and method for detecting and correcting mapping table errors in a non-volatile memory system
US20130304970A1 (en) Systems and methods for providing high performance redundant array of independent disks in a solid-state device
US9165653B2 (en) Determining sector status in a memory device
US20080072119A1 (en) Allowable bit errors per sector in memory devices
TW202223651A (zh) 快閃記憶體裝置、快閃記憶體控制器及快閃記憶體儲存管理方法
JP5908106B2 (ja) 妥当性マスクを記憶する装置および方法ならびに操作装置
US20220254435A1 (en) Semiconductor storage device and error processing method for defective memory cell in the device
CN117632579B (zh) 存储器控制方法和存储器存储装置
CN117716342A (zh) 存储器装置的裸片上ecc数据

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20131126

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20131227

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131227

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20131227

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20141014

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20141021

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150115

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20150115

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20150210

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150610

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20150610

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20150617

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150707

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150805

R150 Certificate of patent or registration of utility model

Ref document number: 5792380

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250