(57)【要約】  メモリアレイへ結合されたコントローラは、誤り訂正コード（ＥＣＣ）エンジンと、ＥＣＣエンジンへ結合されたＥＣＣ強化圧縮モジュールとを備える。ＥＣＣ強化圧縮モジュールは、ＥＣＣエンジンへ提供されて符号化される制御データを受信しかつ圧縮するように構成される。ＥＣＣエンジンで生成された圧縮済み符号化済み制御データはコードワードとしてメモリアレイに蓄積される。
2013516000.tif 000002
【特許請求の範囲】
【請求項１】
方法であって、
メモリ装置のコントローラにて、
制御データを圧縮するステップと、
圧縮済み制御データに相当するコードワードを生成するために圧縮済み制御データを符号化するステップと、
前記コントローラへ結合されたメモリアレイにコードワードを蓄積するステップと、を含み、
コードワードは、前記メモリ装置の誤り訂正コード（ＥＣＣ）エンジンにより復号化可能である方法。
【請求項２】
請求項１記載の方法において、
制御データは、前記コントローラで生成される方法。
【請求項３】
請求項１記載の方法において、
制御データは、メモリ装置におけるメモリアレイの論理および物理ブロックアドレステーブル、メモリアレイにおけるデータ構造のインデックス、ポインタ、およびオフセット、およびメモリ装置のウェアレベリングデータからなるグループから選ばれるある種のデータを備える方法。
【請求項４】
請求項１記載の方法において、
前記メモリ装置へ結合された外部装置からユーザデータを受信するステップをさらに含み、前記外部装置はホスト装置であり、ユーザデータは前記メモリ装置にあるホストランダムアクセスメモリ（ＨＲＡＭ）で受信される方法。
【請求項５】
請求項１記載の方法において、
圧縮済み制御データは、バッファランダムアクセスメモリ（ＢＲＡＭ）に蓄積される方法。
【請求項６】
請求項１記載の方法において、
前記ＥＣＣエンジンにおける圧縮済み制御データの有効誤り訂正率は、制御データの有効誤り訂正率を上回る方法。
【請求項７】
請求項１記載の方法において、
前記コードワードを蓄積するステップは、フォーマット済みデータワードを蓄積することを含み、
フォーマット済みデータワードは、
ヘッダデータ部分と、
ペイロード部分と、
パリティ部分と、を含む方法。
【請求項８】
請求項７記載の方法において、
フォーマット済みデータワードはヘッダパリティ部分をさらに含み、圧縮済み制御データのサイズをヘッダデータ部分に蓄積するステップと、フォーマット済みデータワードの蓄積サイズを所定のサイズまで増やすため圧縮済み制御データに追加データを追加するステップとをさらに含む方法。
【請求項９】
請求項８記載の方法において、
追加データは、圧縮済み制御データが符号化された後に圧縮済み制御データに追加される方法。
【請求項１０】
請求項１記載の方法において、
圧縮済み制御データのサイズを前記メモリアレイに蓄積するステップをさらに含む方法。
【請求項１１】
請求項１記載の方法において、
圧縮済み制御データのサイズを前記コントローラに蓄積するステップをさらに含む方法。
【請求項１２】
請求項１記載の方法において、
前記符号化するステップは、圧縮済み制御データに対応するＥＣＣビットを生成することを含む方法。
【請求項１３】
請求項１記載の方法において、
前記符号化するステップは、リード・ソロモン符号、ボース・レイ・チョドーリ・オッケンジェム（ＢＣＨ）符号、および低密度パリティ検査（ＬＤＰＣ）符号のいずれか１つに基づく方法。
【請求項１４】
方法であって、
メモリ装置のコントローラにて、
メモリアレイからコードワードを読み取るステップと、
圧縮済み制御データを生成するために誤り訂正コード（ＥＣＣ）エンジンでコードワードを復号化するステップと、
圧縮済み制御データを展開するステップと、
を含む方法。
【請求項１５】
請求項１４記載の方法において、
圧縮済み制御データは追加データを含み、圧縮済み制御データのサイズに基づいて圧縮済み制御データから追加データを廃棄するステップをさらに含み、圧縮済み制御データのサイズは追加データを除いた圧縮済み制御データのサイズを表す方法。
【請求項１６】
請求項１５記載の方法において、
圧縮済み制御データのサイズを前記メモリアレイから取り出すステップをさらに含む方法。
【請求項１７】
請求項１５記載の方法において、
圧縮済み制御データのサイズを前記コントローラから取り出すステップをさらに含む方法。
【請求項１８】
システムであって、
メモリアレイと、
前記メモリアレイへ結合されたコントローラと、を備え、
前記コントローラは、
誤り訂正コード（ＥＣＣ）エンジンと、
前記ＥＣＣエンジンへ結合されたＥＣＣ強化圧縮モジュールと、を備え、
前記ＥＣＣ強化圧縮モジュールは前記ＥＣＣエンジンへ提供されて符号化される制御データを受信しかつ圧縮するように構成され、前記ＥＣＣエンジンで生成された圧縮済み符号化済み制御データはコードワードとして前記メモリアレイに蓄積されるシステム。
【請求項１９】
請求項１８記載のシステムにおいて、
前記ＥＣＣ強化圧縮モジュールは、
前記メモリアレイから圧縮済み符号化済み制御データを取り出し、かつ
圧縮済み制御データを生成するため圧縮済み符号化済み制御データを復号化するようにさらに構成されるシステム。
【請求項２０】
請求項１８記載のシステムにおいて、
前記ＥＣＣエンジンは、
圧縮済み制御データを符号化するように構成された誤り検出コード回路と、
符号化済み圧縮済み制御データを復号化するように構成された誤り訂正コード回路と、
をさらに備えるシステム。
【請求項２１】
方法であって、
誤り訂正コード（ＥＣＣ）エンジンと１群の蓄積素子を含む複数の蓄積素子とを含み、データ部分とパリティ部分とを含むページ形式に従って情報を前記蓄積素子に蓄積するように構成されたメモリ装置にて、
１群の蓄積素子に蓄積されるデータを圧縮するために圧縮操作を開始し、
データの圧縮範囲に基づき、第１のパリティビット数を生成するＥＣＣエンジンの第１のモードと、第２のパリティビット数を生成するＥＣＣエンジンの第２のモードのうちのいずれか一方を選択し、
圧縮済みデータに対応するパリティビットを生成するために圧縮済みデータを符号化し、かつ
ページ形式に従い１群の蓄積素子に圧縮済みデータとパリティビットとを蓄積することを遂行するステップを含み、
圧縮済みデータはデータ部分に蓄積され、パリティビットの少なくとも一部はパリティ部分に蓄積される方法。
【請求項２２】
請求項２１記載の方法において、
第１のパリティビット数はパリティ部分のサイズに一致し、第２のパリティビット数はパリティ部分のサイズより大きい方法。
【請求項２３】
請求項２２記載の方法において、
第２のモードが選択される場合には、パリティビットの第１の部分はパリティ部分に蓄積され、パリティビットの第２の部分はデータ部分に蓄積される方法。
【請求項２４】
請求項２３記載の方法において、
第２のモードは、データ部分が圧縮済みデータとパリティビットの第２の部分とを含めるにあたって十分なスペースを有する場合に選択される方法。
【請求項２５】
方法であって、
誤り訂正コード（ＥＣＣ）エンジンと複数の蓄積素子とを含み、データ部分とパリティ部分とを含むページ形式に従って情報を前記蓄積素子に蓄積するように構成されたメモリ装置にて、
ページ形式に従い前記蓄積素子から圧縮済みデータとパリティビットとを含む１ページのデータを読み取り、
パリティビットを使用し前記ＥＣＣエンジンで圧縮済みデータを復号化し、かつ
展開済みデータを生成するために圧縮済みデータを展開することを遂行するステップを含み、
圧縮済みデータはページのデータ部分に含まれ、パリティビットの少なくとも一部はページのパリティ部分に含まれ、
前記ＥＣＣエンジンは、パリティビットの全てがページのパリティ部分に含まれる場合には第１のモードに従って動作し、あるいはパリティビットの第１の部分がページのパリティ部分に含まれかつパリティビットの第２の部分がページのデータ部分に含まれる場合には第２のモードに従って動作するように構成可能である方法。
【請求項２６】
請求項２５記載の方法において、
前記メモリ装置はコントローラを備え、展開済みデータは前記コントローラで生成された制御データを含む方法。
【請求項２７】
データ蓄積装置であって、
複数の蓄積素子を含むメモリと、
前記メモリへ結合され、データ部分とパリティ部分とを含むページ形式に従って前記蓄積素子に情報を蓄積するように構成されたコントローラと、を備え、
前記コントローラは、
誤り訂正コード（ＥＣＣ）エンジンと、
前記ＥＣＣエンジンへ結合され、符号化のため前記ＥＣＣエンジンへ提供されるデータを受信しかつ圧縮するように構成された圧縮モジュールと、を備え、
前記ＥＣＣエンジンは、データの圧縮範囲に基づき、第１のパリティビット数を生成する第１のモードで動作し、あるいは第２のパリティビット数を生成する第２のモードで動作するように構成可能であり、
前記コントローラはページ形式に従い前記蓄積素子に圧縮済みデータとパリティビットとを含むページを蓄積するように構成され、圧縮済みデータはページのデータ部分に蓄積され、パリティビットの少なくとも一部はページのパリティ部分に蓄積されるデータ蓄積装置。
【請求項２８】
請求項２７記載のデータ蓄積装置において、
前記コントローラは制御データを生成するようにさらに構成され、受信データは制御データを含み、制御データは、メモリの論理および物理ブロックアドレステーブル、メモリにおけるデータ構造のインデックス、ポインタ、およびオフセット、およびデータ蓄積装置のウェアレベリングデータからなるグループから選ばれるある種のデータを備えるデータ蓄積装置。
【請求項２９】
データ蓄積装置であって、
複数の蓄積素子を含むメモリと、
前記メモリへ結合され、データ部分とパリティ部分とを含むページ形式に従って前記蓄積素子から情報を読み取るように構成されたコントローラと、を備え、
前記コントローラは、
誤り訂正コード（ＥＣＣ）エンジンと、
前記ＥＣＣエンジンへ結合され、前記ＥＣＣエンジンによって提供される復号化済みデータを受信しかつ展開するように構成された展開モジュールと、を備え、
前記ＥＣＣエンジンは、ページ形式に従い前記メモリから読み取られた１ページの圧縮済みデータおよびパリティビットを復号化するように動作し、圧縮済みデータはページのデータ部分に含まれ、パリティビットの少なくとも一部はページのパリティ部分に含まれ、
前記ＥＣＣエンジンは、パリティビットの全てがページのパリティ部分に含まれる場合には第１のモードに従って動作し、あるいはパリティビットの第１の部分がページのパリティ部分に含まれかつパリティビットの第２の部分がページのデータ部分に含まれる場合には第２のモードに従って動作するように構成されるデータ蓄積装置。
【請求項３０】
請求項２９記載のデータ蓄積装置において、
展開済み復号化済みデータは前記コントローラによって使用される制御データを含み、前記メモリはフラッシュメモリを含むデータ蓄積装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的にはメモリ装置における制御データの誤り訂正に関する。
【背景技術】
【０００２】
多くの場合、データをメモリに書き込む過程では、コードワードを形成するためにデータが余分のビットにより符号化される。ノイズが存在するとコードワードを表すビットの一部が変化し、誤りによって元のコードワードが壊れることがある。メモリからコードワードを読み取るときには、復号器を使用し誤り訂正コード（ＥＣＣ）により誤りを特定し訂正する。例えば、ビット誤りが無相関となりがちな用途ではボース・チョドーリ・オッケンジェム（ＢＣＨ）、低密度パリティ検査（ＬＤＰＣ）、リード・ソロモン、およびターボ符号方式が一般的に使用される。
【０００３】
ＥＣＣアルゴリズムのハードウェアおよびソフトウェアの実施例は通常、一定の長さのデータにわたって一定量の誤りを訂正しうるように規定されている。記憶媒体から返されるデータの誤りがＥＣＣエンジンで訂正可能な誤りより多いと、復号化されたデータは当初蓄積されたデータと一致しなくなる。メモリ装置のＥＣＣエンジンの誤り訂正能力が向上すればメモリ装置の信頼性も向上しうる。
【発明の概要】
【０００４】
メモリ装置のＥＣＣエンジンの誤り訂正能力を向上させうる誤り訂正コード（ＥＣＣ）強化圧縮モジュールが開示される。ＥＣＣ強化圧縮モジュールは、制御データが符号化される前に制御データを圧縮することにより、ＥＣＣエンジンで符号化され復号化される必要がある制御データビット数を減らして制御データの誤り訂正を強化する。制御データに相当するビットの数が減ればＥＣＣエンジンで訂正すべきビットが減り、制御データが圧縮されない場合より多くの誤りを訂正できる。その結果、ＥＣＣエンジンの有効誤り訂正能力は向上する。
【図面の簡単な説明】
【０００５】
【図１】誤り訂正コード（ＥＣＣ）強化圧縮モジュールを備えるメモリ装置を含むシステムの特定の例示的な実施形態のブロック図である。
【図２】ＥＣＣ強化圧縮モジュールを備えるメモリ装置を含むシステムの第２の例示的な実施形態のブロック図である。
【図３】制御データ、および圧縮されかつ符号化された制御データを含むフォーマット済みデータワードの例示的な実施形態のブロック図である。
【図４】圧縮されかつ符号化された制御データを含むフォーマット済みデータワードの第２の例示的な実施形態のブロック図である。
【図５】メモリ装置で制御データの誤り訂正を強化する方法の例示的な実施形態の流れ図である。
【図６】メモリ装置で制御データの誤り訂正を強化する方法の第２の例示的な実施形態の流れ図である。
【発明を実施するための形態】
【０００６】
図１にはＥＣＣ強化圧縮モジュール１１０を含むシステムの特定の一実施形態が描かれている。このシステムは全体的に１００と呼ばれる。システム１００は、メモリ装置１０４へ結合されたホスト装置１０２を含む。メモリ装置１０４は、メモリアレイ１０８へ結合されたコントローラ１０６を含む。コントローラ１０６は、ＥＣＣエンジン１１２へ結合されたＥＣＣ強化圧縮モジュール１１０を含む。ＥＣＣ強化圧縮モジュール１１０は、制御データ１４４を圧縮し、かつ圧縮済み制御データ１４０をＥＣＣエンジン１１２へ提供するように構成され、ＥＣＣエンジン１１２へ提供された圧縮済み制御データ１４０はコードワード１６０として符号化され、メモリアレイ１０８に蓄積される。符号化に先立ち制御データ１４４を圧縮することにより、ＥＣＣエンジン１１２の符号化による圧縮済み制御データ１４０の有効誤り訂正率は、圧縮されていない制御データ１４４の符号化に比べて向上する。
【０００７】
ＥＣＣ強化圧縮モジュール１１０は、符号化のためにＥＣＣエンジン１１２へ提供される制御データ１４４を受信し、かつ圧縮するように構成される。例えば、ＥＣＣ強化圧縮モジュール１１０は、制御データ１４４の圧縮を行うために圧縮ソフトウェアを実行するプロセッサを含み、このプロセッサは、例えば「ｚｌｉｂ」圧縮アルゴリズムまたは１つ以上の他のアルゴリズムを実行する。圧縮モジュール１１０は専用のハードウェア圧縮回路によって加速できる。ＥＣＣ強化圧縮モジュール１１０は、圧縮済み制御データ１４０をＥＣＣエンジン１１２へ提供するように構成されうる。加えて、ＥＣＣ強化圧縮モジュール１１０は、ホスト装置１０２からユーザデータ１４５を受信するように構成されうる。ＥＣＣ強化圧縮モジュール１１０は、ユーザデータ１４５の圧縮を遂行し、かつ圧縮済みユーザデータ１４１をＥＣＣエンジン１１２へ提供するように構成され、ＥＣＣエンジン１１２へ提供された圧縮済みユーザデータ１４１は符号化され、メモリアレイ１０８に蓄積される。
【０００８】
ＥＣＣエンジン１１２は、入力データ（例えば、圧縮済み制御データ１４０）を受信し、かつ入力データを符号化したものに相当する１つ以上のコードワード（例えば、コードワード１６０）を生成する回路を含みうる。例えば、ＥＣＣエンジン１１２は、リード・ソロモン符号、ＢＣＨ符号、低密度パリティ検査（ＬＤＰＣ）符号、１つ以上の他の誤り検出訂正符号、またはこれらの任意の組み合わせを利用するように構成されうる。ＥＣＣエンジン１１２は専用のハードウェア回路によって実行されるものとして説明するが、ＥＣＣエンジン１１２は他の実施形態において１つ以上のプロセッサを含んでよく、このプロセッサは、符号化または復号化機能の少なくとも一部分を遂行するための実行可能な命令を実行する。
【０００９】
メモリアレイ１０８はコントローラ１０６に反応し、コントローラ１０６からの命令に応じてデータを蓄積し、かつ取り出しうる。例えば、メモリアレイ１０８は、コントローラ１０６に反応し、メモリアレイ１０８でデータ書き込み操作を遂行しうる。例えば、ＥＣＣエンジン１１２から受信されるコードワード１６０は、コントローラ１０６からのデータ書き込み操作としてメモリアレイ１０８へ提供されうる。コードワード１６０はメモリアレイ１０８に蓄積され、後ほどコントローラ１０６によって取り出されうる。メモリアレイ１０８はフラッシュメモリ等の不揮発性メモリであってよい。
【００１０】
ホスト装置１０２はメモリ装置１０４に対し外部の装置であってよい。例えば、ホスト装置１０２は携帯電話機等の可搬形電子装置であってよく、メモリ装置１０４はホスト装置１０２へ結合されたかまたはホスト装置１０２の中に設置されたフラッシュメモリカードであってよい。
ホスト装置１０２は作動中にメモリアレイ１０８に蓄積されるユーザデータ１４５をメモリ装置１０４へ提供しうる。ユーザデータ１４５はコントローラ１０６で受信され、ＥＣＣ強化圧縮モジュール１１０へ提供されうる。また、コントローラ１０６はメモリ装置１０４の操作に役立つ制御データ（例えば、制御データ１４４）を生成しうる。例えば、コントローラ１０６は、論理−物理アドレスマッピングを遂行するか、消去回数を計算するか、メモリ装置１０４の状態情報を判断するか、またはこれらの任意の組み合わせのために、制御データ１４４を使用しうる。例えば、制御データ１４４は、メモリアレイ１０８の中で論理アドレスを物理アドレスにマッピングする論理ブロックアドレステーブルと物理ブロックアドレステーブルとを含みうる。制御データ１４４はまた、メモリアレイ１０８におけるデータ構造のインデックス、ポインタ、およびオフセット、メモリ装置１０４のウェアレベリングデータ、他の制御データ、またはこれらの任意の組み合わせを含む。制御データ１４４はユーザデータ１４５に対応する場合と対応しない場合とがあり、またユーザデータ１４５と時間的に同期する場合と同期しない場合とがある（つまり、ユーザデータ１４５の受信時間とは大幅に異なる時間に制御データ１４４が生成される場合もある）。制御データ１４４はユーザデータ１４５から独立している。あるいは、制御データ１４４はユーザデータ１４５と交互に配置され、あるいはユーザデータ１４５に付加され、ＥＣＣ強化圧縮モジュール１１０で圧縮される。
【００１１】
ＥＣＣ強化圧縮モジュール１１０で圧縮されたデータ（例えば、制御データ１４０とユーザデータ１４１）は符号化のためにＥＣＣエンジン１１２へ提供され、ＥＣＣエンジン１１２から出力される符号化済みデータ（例えば、コードワード１６０）はメモリアレイ１０８に蓄積されうる。ＥＣＣエンジン１１２は圧縮済み制御データ１４０を符号化するように動作しうる。符号化に先立つ圧縮によりサイズが減少したデータに対して完全な符号化操作を遂行するようにＥＣＣエンジン１１２を操作することにより、ＥＣＣエンジンの有効訂正能力が向上されうる。
例えば、ＥＣＣ強化圧縮モジュール１１０は圧縮比（ＣＲ）に従って制御データ１４４を圧縮しうる。（ＣＲ）は、CR= SizeofCompressedControlData/SizeofControlData で定義される。
【００１２】
ＥＣＣエンジン１１２は、誤り訂正率（ＥＣＲ）に従って誤りを検出し訂正しうる。（ＥＣＲ）は、ECR=CorrectableBitsNumber/ 8* (SizeofControlData) で定義される。
（ＣｏｒｒｅｃｔａｂｌｅＢｉｔｓＮｕｍｂｅｒ）はバイト単位によるサイズ（ＳｉｚｅｏｆＣｏｎｔｒｏｌＤａｔａ）を有するデータワードでＥＣＣエンジン１１２が訂正できるビットの数である。制御データ１４４の圧縮はＥＣＣエンジン１１２の（ＥＣＲ）に影響をおよぼしうる。例えば、ＥＣＣエンジン１１２に圧縮済み制御データ１４０を適用した場合の（ＥＣＲ’）は、ECR'=CorrectableBitsNumber/8* CompressionRatio* SizeofControlData で定義されうる。
例えば、ＥＣＣエンジン１１２は５１２バイトの制御データ１４４で最大１２ビット（すなわち、（ＣｏｒｒｅｃｔａｂｌｅＢｉｔｓＮｕｍｂｅｒ））を訂正するように設計されうる。対応するＥＣＲ（ＣｏｒｒｅｃｔａｂｌｅＢｉｔｓＮｕｍｂｅｒ＝１２）は約２．９Ｅ−３である。制御データ１４４に５０％の圧縮比（ＣＲ）を適用すると圧縮済み制御データ１４０のサイズは２５６バイトとなり、対応するＥＣＲ’は約５．９Ｅ−３となる。ＥＣＣ強化圧縮モジュール１１０による圧縮比が向上（すなわち、減少）すると、ＥＣＣエンジン１１２の誤り訂正能力は高まりうる。
【００１３】
制御データ１４４を圧縮すれば、ＥＣＣエンジン１１２で非力な（例えば、（ＣｏｒｒｅｃｔａｂｌｅＢｉｔｓＮｕｍｂｅｒ）の値が低い）訂正アルゴリズムを使って同じ誤り訂正率を達成できる。例えば、前述したように、５０％で圧縮された制御データに６ビット訂正を適用するＥＣＣエンジンのＥＣＲ’は、ECR'(CorrectableBitsNumber=6; CR=.5)=ECR(CorrectableBitsNumber=12)で表されるように、圧縮されていない制御データに１２ビット訂正を適用するＥＣＣエンジンのＥＣＲに等しくてよい。
【００１４】
ホスト装置１０２から受信されるユーザデータ１４５はメモリ装置１０４で受信される前に圧縮されるため、ＥＣＣ強化圧縮モジュール１１０でユーザデータ１４５の圧縮を大幅に向上させることはできない。しかし、制御データ１４４はＥＣＣ強化圧縮モジュール１１０で受信される前に圧縮されない。ＥＣＣエンジン１１２へ提供される制御データ１４４を圧縮することにより（つまり、圧縮済み制御データ１４０を生成することにより）、サイズは当初の制御データ１４４から大幅に縮小され、ＥＣＣエンジン１１２の有効誤り訂正率は向上しうる。
【００１５】
コードワード１６０はメモリアレイ１０８から取り出され、ＥＣＣエンジン１１２によって復号化されうる。ＥＣＣエンジン１１２は、メモリアレイ１０８における蓄積過程またはコントローラ１０６への伝送過程で生じた多数の誤りを検出し、訂正しうる。圧縮された制御データ１４０の符号化ではＥＣＣエンジン１１２のＥＣＣ処理が縮小されたデータで行われるため、制御データ１４４の誤り訂正は向上しうる。復号化された圧縮済み制御データはＥＣＣ強化圧縮モジュール１１０へ提供されうる。ＥＣＣエンジン１１２から受信された復号化済み圧縮済み制御データ１４６はＥＣＣ強化圧縮モジュール１１０で展開され、制御データ１４４としてコントローラ１０６で使用されうる。さらに、ＥＣＣエンジン１１２はメモリアレイ１０８に蓄積された圧縮済みユーザデータを復号化し、復号化された圧縮済みユーザデータ１４８をＥＣＣ強化圧縮モジュール１１０へ提供する。ＥＣＣ強化圧縮モジュール１１０は復号化された圧縮済みユーザデータ１４８を展開してユーザデータ１４５を生成し、生成されたユーザデータ１４５はホスト装置１０２へ送信されうる。
【００１６】
制御データ１４４を圧縮すると、訂正作業の範囲が狭まってＥＣＣエンジン１１２の誤り訂正能力が高まる。ＥＣＣエンジン１１２における圧縮済み制御データ１４０の有効誤り訂正率は制御データ１４４の有効誤り訂正率を上回る。メモリアレイ１０８における誤り発生頻度がしだいに増加しても、ＥＣＣエンジン１１２の有効誤り訂正率の向上によりメモリ装置１０４の期待寿命は伸びうる。ＥＣＣエンジン１１２の有効誤り訂正率が向上するとメモリ装置１０４の信頼性は向上し、メモリ装置１０４の期待寿命は伸びる。
【００１７】
図２にはシステムの特定の一実施形態が描かれている。このシステムは全体的に２００と呼ばれる。システム２００はホスト装置等の外部装置２０２を含む。外部装置２０２はメモリ装置２０４へ結合される。メモリ装置２０４は、圧縮済み制御データ２４０を符号化データ（例えば、コードワード２５２）としてメモリアレイ２０８に蓄積するため、ＥＣＣエンジン２５４へ結合された誤り訂正コード（ＥＣＣ）強化圧縮モジュール２２４を含む。例えば、メモリ装置２０４は図１のメモリ装置１０４であってよい。
【００１８】
メモリ装置２０４はメモリアレイ２０８へ結合されたコントローラ２０６を含む。コントローラ２０６はＥＣＣ強化圧縮モジュール２２４へ結合された制御管理モジュール２２２を含む。ホストランダムアクセスメモリ（ＨＲＡＭ）２２０はＥＣＣ強化圧縮モジュール２２４へ結合され、外部装置２０２とデータをやり取りするように構成される。コントローラ２０６はまた、ＥＣＣ強化圧縮モジュール２２４とフラッシュインターフェイスモジュール（ＦＩＭ）２２８との間でデータを格納するために結合されたバッファランダムアクセスメモリ（ＢＲＡＭ）２２６を含む。フラッシュインターフェイスモジュール２２８はメモリアレイ２０８とデータをやり取りするために結合される。
【００１９】
制御管理モジュール２２２はメモリ装置２０４に対する制御機能を提供するように構成されうる。制御管理モジュール２２２は、制御データ２４４と、制御データ２４４に関係しうるその他データ、例えば制御データ２４４のサイズ２４８と圧縮済み制御データのサイズ２５０とを生成するように構成されうる。制御管理モジュール２２２はＥＣＣ強化圧縮モジュール２２４へ結合され、制御データ２４４をＥＣＣ強化圧縮モジュール２２４へ提供するように構成され、ＥＣＣ強化圧縮モジュール２２４へ提供された制御データ２４４は圧縮され、符号化され、メモリアレイ２０８に蓄積される。
【００２０】
ＥＣＣ強化圧縮モジュール２２４は、データ、例えば外部装置２０２から提供されるユーザデータを、ＨＲＡＭ２２０から取り出し、かつ制御管理モジュール２２２から制御データ２４４を取り出すように構成されうる。ＥＣＣ強化圧縮モジュール２２４は圧縮モジュール２３０と展開モジュール２３２とを含む。圧縮モジュール２３０は、受信データ、例えばユーザデータまたは制御データ２４４に対し圧縮操作を遂行するように構成されうる。例えば、圧縮モジュール２３０は、圧縮済み制御データ２４０を生成するため、制御データ２４４に対し圧縮操作を遂行するように構成されうる。
【００２１】
展開モジュール２３２は、ＢＲＡＭ２２６に蓄積されたデータ、例えばメモリアレイ２０８から読み取られた復号化済みデータを受信し、かつ受信データに対し展開操作を遂行するように構成されうる。例えば、展開モジュール２３２は、展開済み制御データ２４２を生成するため、ＢＲＡＭ２２６から復号化済み圧縮済み制御データを受信し、かつ展開操作を遂行するように構成されうる。
【００２２】
フラッシュインターフェイスモジュール２２８は、メモリアレイ２０８に蓄積されるデータをＢＲＡＭ２２６から受信し、かつメモリアレイ２０８への蓄積、通信のためのデータ処理を遂行するように構成されうる。例えば、フラッシュインターフェイスモジュール２２８はＥＣＣエンジン２５４を含む。ＥＣＣエンジン２５４は誤り検出コード（ＥＤＣ）回路２３４とＥＣＣ回路２３６とを含みうる。メモリアレイ２０８への伝送過程とメモリアレイ２０８からの伝送過程とメモリアレイ２０８での蓄積過程で生じる誤りの検出および訂正を可能にするため、ＥＣＣエンジン２５４は、メモリアレイ２０８に蓄積されるデータを受信し、かつ符号化操作、例えばリード・ソロモン、ＢＣＨ、またはＬＤＰＣ符号化操作を遂行するように構成されうる。
【００２３】
ＥＣＣ回路２３６は、１つ以上の誤りを含んでいる可能性があるデータをメモリアレイ２０８から受信し、かつ受信データで誤りを検出し訂正するための復号化操作を遂行するように構成されうる。データ書き込み操作のときにはＥＤＣ回路２３４がコードワード２５２を生成し、生成されたコードワード２５２はメモリアレイ２０８に蓄積される。例えば、ＥＤＣ回路２３４は、圧縮済み制御データ２４０を符号化することでコードワード２５２を生成しうる。ＥＤＣ回路２３４で符号化することは、圧縮済み制御データ２４０に対応するＥＣＣビット、例えばパリティビットを生成することを含みうる。ＥＣＣビットはコードワード２５２に含まれうる。
【００２４】
コードワード２５２はメモリアレイ２０８から読み取られ、復号化のためにＥＣＣ回路２３６へ提供される。ＥＣＣ回路２３６は、元のコードワード２５２を回復するために１つ以上の誤りを検出し、かつ復号化済みデータを生成するためにコードワード２５２を復号化するように構成されうる。ＥＣＣエンジン２５４によって回復された復号化済みデータはＢＲＡＭ２２６へ提供されうる。
【００２５】
メモリアレイ２０８は１つ以上の蓄積素子構造配列を含みうる。例えば、メモリアレイ２０８はＮＯＲフラッシュメモリ配列のようにメモリセル列からなり、ビット線とソース線とを含みうる。別の例として、メモリアレイ２０８はＮＡＮＤフラッシュメモリ配列のように直列のメモリセル列からなる。メモリアレイ２０８はマルチバンクメモリであってよく、ＮＡＮＤフラッシュメモリ、ＮＯＲフラッシュメモリ、１つ以上の他のメモリ種別、またはこれらの任意の組み合わせを含みうる。
【００２６】
メモリアレイ２０８は、マルチレベルセル（ＭＬＣ）モードかシングルレベルセル（ＳＬＣ）モードで動作しうる。ＳＬＣモードでは、それぞれのメモリセルが「０」または「１」状態にプログラムされうる。このようなバイナリセルの読み取りにあたっては、対象となるメモリセルのコントロールゲートに単一の制御電圧を印加する。トランジスタは「１」状態までプログラムされると伝導するが、「０」状態ではオフに保たれる。ＭＬＣモードではセルのプログラミングをより細かく制御することにより、各メモリセルにつき３つ以上のデータ状態を可能としうる。ＭＬＣモードではメモリアレイ２０８の各メモリセルにつき４つ以上の状態が規定される。例えば、メモリセルの状態はバイナリ値００、０１、１０、および１１に相当しうる。実際には、２つの中間状態は完全に消去された状態と完全にプログラムされた状態との間の部分的にプログラムされたセルの２つのレベルに相当しうる。それぞれのメモリセルで２ビット以上のデータを蓄積することで、メモリアレイ２０８のデータ容量は二倍、三倍、またはそれ以上に増加する。
【００２７】
制御管理モジュール２２２は作動中に制御データ２４４を生成し、生成された制御データ２４４は圧縮され、符号化され、メモリアレイ２０８に蓄積される。制御管理モジュール２２２はＥＣＣ強化圧縮モジュール２２４に制御データ２４４を提供しうる。圧縮済み制御データ２４０を生成するため、制御データ２４４は圧縮モジュール２３０によって圧縮されうる。ＥＣＣ強化圧縮モジュール２２４か制御管理モジュール２２２では、圧縮済み制御データ２４０のサイズ２５０が（圧縮されていない）制御データ２４４のサイズ２４８に比較される。圧縮済み制御データ２４０のサイズ２５０が制御データ２４４のサイズ２４８に満たなければ、圧縮済み制御データ２４０がＢＲＡＭ２２６へ提供されうる。ただし、制御データ２４４のサイズ２４８が圧縮済み制御データ２４０のサイズ２５０を上回らなければ、圧縮モジュール２３０によって行われた圧縮操作は効果的ではなかったことになり、制御データ２４４のサイズ２４８は増えたか変わらなかったことになる。この場合、圧縮モジュール２３０は圧縮されていない制御データ２４４をＢＲＡＭ２２６へ提供する。ＢＲＡＭ２２６に蓄積されたデータはＥＣＣエンジン２５４のＥＤＣ回路２３４へ提供される。ＥＤＣ回路２３４は、例えば体系的符号化で１セットのパリティビットを生成するか、あるいは非体系的符号化でコードワードを生成するかにより、圧縮済み制御データ２４０を符号化しうる。ＥＤＣ回路２３４で生成された圧縮済み符号化済み制御データはデータワードまたはページとしてフラッシュインターフェイスモジュール２２８へ提供され、さらにメモリアレイ２０８へ提供されてコードワード２５２として蓄積されうる。
【００２８】
コードワード２５２は、例えば図３および４に関して後述するフォーマット済みデータワードを取り出すデータ読み取り操作により、メモリアレイ２０８から取り出される。取り出されたコードワード２５２は誤り訂正コード（ＥＣＣ）回路２３６へ提供されうる。ＥＣＣ回路２３６はコードワード２５２を復号化し誤りを訂正することにより復号化済み圧縮済み制御データを生成し、生成された復号化済み圧縮済み制御データはＢＲＡＭ２２６に蓄積される。
復号化済み圧縮済み制御データはＢＲＡＭ２２６から展開モジュール２３２へ提供され、展開モジュール２３２は復号化済み圧縮済み制御データに働きかけて展開済み制御データ２４２を生成する。展開済み制御データ２４２は、メモリ装置２０４の制御管理のために制御管理モジュール２２２へ提供されうる。
【００２９】
加えて、ユーザデータが外部装置２０２から受信され、ＨＲＡＭ２２０に格納される。ＨＲＡＭ２２０に格納されたユーザデータはＥＣＣ強化圧縮モジュール２２４へ提供され、ＥＣＣ強化圧縮モジュール２２４へ提供されたユーザデータは制御データ２４４とほぼ同様に圧縮され、符号化され、メモリアレイ２０８に蓄積される。
【００３０】
コントローラ２０６は、ＥＣＣ強化圧縮モジュール２２４の圧縮比（ＣＲ）に基づきＥＣＣエンジン２５４の動作モードを選択するように構成されうる。ＥＣＣエンジン２５４のモードの選択は圧縮比が判明するまで遅延されうる。例えば、ＥＣＣエンジン２５４は、２通りの動作モード、すなわち２２バイト長パリティの１２ビット訂正モードと２８バイト長パリティの１６ビット訂正モードとを有しうる。
【００３１】
一例として、メモリアレイ２０８の２，１１２バイトページは次のサイズの次の部分を含みうる。
2013516000.tif 000003
データ部分のサイズはコントローラ２０６によるＥＣＣエンジンのモード選択に影響をおよぼす。例えば、メモリアレイ２０８の２，１１２バイトページでデータ０部分とデータ１部分が２，０４８バイトのスペースを占め、ヘッダとヘッダパリティを合わせたサイズが２０バイトなら、２，１１２バイトページのサイズによりデータ部分のパリティは２２バイトずつになる。この場合、ＥＣＣエンジン２５４は１６ビットモードの訂正機能を使用できない。
【００３２】
データ部分（例えば、データ０およびデータ１）を圧縮すれば、ＥＣＣエンジン２５４はより上位の１６ビット訂正モードを使用できる。例えば、データ０部分とデータ１部分を６バイトずつ圧縮すれば、データ０とデータ１のパリティは６バイトずつ増え、データ部分のパリティは２８バイトずつになる。パリティが増えればＥＣＣエンジン２５４の誤り訂正能力も上がりうる。２，１１２バイトページでデータ部分の圧縮が６バイト、パリティが２８バイトの場合の例を次に示す。
2013516000.tif 000004
【００３３】
コントローラ２０６は、ＥＣＣエンジン２５４で所定のブロック誤り率（ＢＬＥＲ）を達成するためにＥＣＣ強化圧縮モジュール２２４の（ＣＲ）を制御するように構成されうる。例えば、ＢＣＨ符号の場合、ＢＬＥＲは、BLER=Sum((p)i *C(n, i)*(l-p)n-i , i = k, n) で定義されうる。
【００３４】
特定の一実施形態において、（ｐ）は最大入力ビット誤り率であり、（ｋ）はＥＣＣエンジン２５４が（ｎ）ビットのデータで訂正できるビット数＋１である。Ｃ（ｎ，ｋ）関数はサイズ（ｎ）のｎ要素を含むセットからのｋ組み合わせ（サイズ（ｋ））の数の計算である。例えば、Ｃ（ｎ，ｋ）関数は、C(n, k)=n!/k!(n-k)! で定義されうる。
ＢＬＥＲ計算に圧縮比（ＣＲ）を導入すると、BLER=Sum((p)i *C(n, i)*(l-p)n-i , i = k, n) となる。
【００３５】
例えば、ＥＣＣエンジン２５４は、（ＢＬＥＲ）≦１０11により２，０４８バイトのデータで１２２ビットを訂正するように構成されうる。この場合、（ｋ）＝１２２＋１＝１２３、（ｎ）＝２，０４８バイト＊８ビット／バイト＝１６，３８４である。（ｐ）について解くと次のようになる。
2013516000.tif 000005
コントローラ２０６はＥＣＣ強化圧縮モジュール２２４の（ＣＲ）を制御するように構成されうる。例えば、コントローラ２０６は、ＥＣＣエンジン２５４からの所望の最大入力ＢＥＲ（ｐ）が０．４１ならば、ＥＣＣ強化圧縮モジュール２２４に０．８の（ＣＲ）を使用するように指示しうる。例えば、０．００１の一定最大ビット誤り率確率と１Ｋバイトブロックで１６の誤りを訂正できるＥＣＣエンジンを仮定すると、（ｎ）＝８＊１０２４バイト＝８，１９２ビット、（ｋ）＝１７、（ｐ）＝０．００１である。
【００３６】
訂正不能誤り確率についてＢＬＥＲ式を解く場合は次のようになる。
2013516000.tif 000006
【００３７】
圧縮比（ＣＲ）が向上（すなわち、減少）すると、制御データにある全ての誤りをＥＣＣエンジン２５４で訂正できない確率は低下する。例えば、ＥＣＣ強化圧縮モジュール２２４の圧縮が５０％ならば、ＥＣＣエンジン２５４で訂正不能な誤りの確率は、圧縮比１を使う場合に比べて大幅に低下しうる。（ＣＲ）が向上するとＥＣＣエンジン２５４の有効誤り訂正能力は高まり、メモリ装置２０４の信頼性も向上する。
【００３８】
図３には制御データ３２０とフォーマット済みデータワード３０２が描かれている。これらは全体的に３００と呼ばれる。制御データ３２０は、論理および物理ブロックアドレステーブル３２２と、ウェアレベリングデータ３２４と、インデックス、ポインタ、およびオフセット３２６等のデータ構造情報とを含みうる。
制御データ３２０は圧縮され、フォーマット済みデータワード３０２に符号化されうる（３３０）。フォーマット済みデータワード３０２は、ヘッダデータ３０６と、ヘッダパリティデータ３０８と、圧縮済み制御データ３１０と、追加データ３１２と、ＥＣＣビット等のパリティデータ３１４とを含みうる。フォーマット済みデータワード３０２のペイロードは、圧縮済み制御データ３１０と、追加データ３１２とを含みうる。
【００３９】
追加データ３１２は、フォーマット済みデータワード３０２の蓄積サイズを所定のサイズまで増やすため、圧縮済み制御データ３１０へ追加される。例えば、フォーマット済みデータワード３０２は２，１１２バイトページでありうる。追加データ３１２は圧縮済み制御データの符号化後に追加されうる。追加データ３１２は、データ依存プログラム障害を減らすために選択または生成されうる。例えば、追加データ３１２は、パリティデータ３１４に基づくパターン、例えばパリティデータ３１４の反復パターンを含みうる。
【００４０】
追加データ３１２は復号化段階で廃棄される。例えば、追加データ３１２は、圧縮済み制御データ３１０のサイズに基づいて特定されうる。圧縮済み制御データ３１０のサイズは、追加データ３１２を除いた圧縮済み制御データ３１０のサイズを表す。例えば、図２のＥＣＣエンジン２５４またはＥＣＣ強化圧縮モジュール２２４は、追加データ３１２の追加に先立ち圧縮済み制御データ３１０のサイズ２５０を判断し、圧縮済み制御データのサイズ２５０を制御管理モジュール２２２に蓄積しうる。あるいは、圧縮済み制御データのサイズ２５０は、ヘッダデータ３０６、図２のコントローラ２０６、例えばログファイル（図示せず）、または別の場所に蓄積されうる。ＥＣＣエンジン２５４は、フォーマット済みデータワード３０２を復号化する前に、追加データ３１２を廃棄するため、圧縮済み制御データのサイズ２５０を取り出しうる。
【００４１】
図４の可変サイズフォーマット済みデータワード４０２は、ヘッダデータ４０６と、ヘッダパリティ４０８と、圧縮済み制御データ４１０と、パリティデータ４１４とを含みうる。圧縮済み制御データ４１０は可変サイズフォーマット済みデータワード４０２のペイロード４０４を含みうる。ペイロード４０４は、可変サイズフォーマット済みデータワード４０２を所定のサイズまで拡張するために図３の追加データ３１２のような追加データを含んでいない。
追加データを追加せずに圧縮済み制御データ４１０を蓄積する場合は、メモリアレイ、例えば図１〜２のメモリアレイ１０８または２０８に可変サイズフォーマット済みデータワード４０２が蓄積される。可変サイズフォーマット済みデータワードはメモリアレイのスペースを節約し、メモリアレイのデータ蓄積効率を向上させうる。
【００４２】
図５は、制御データを圧縮しかつ符号化する方法５００の一実施形態の流れ図である。方法５００は、メモリ装置のコントローラ、例えば非限定的な例として図１のコントローラ１０６または図２のコントローラ２０６で遂行される。方法５００は、５０２で制御データを圧縮することを含む。例えば、図２の誤り訂正コード（ＥＣＣ）強化圧縮モジュール２２４は制御データ２４４を圧縮する。方法５００はまた、メモリ装置へ結合された外部装置からユーザデータを受信することを含む。外部装置はホスト装置であってよく、ユーザデータはメモリ装置のホストランダムアクセスメモリ（ＨＲＡＭ）で受信されてよい。例えば、図２のＨＲＡＭ２２０は外部装置（例えば、ホスト装置）２０２からユーザデータを受信しうる。制御データはコントローラで生成される。制御データは、メモリ装置におけるメモリアレイの論理および物理ブロックアドレステーブル、メモリアレイにおけるデータ構造のインデックス、ポインタ、およびオフセット、およびメモリ装置のウェアレベリングデータからなるグループから選ばれるある種のデータを備えうる。例えば、図２のコントローラ２０６は制御データ２４４を生成しうる。
【００４３】
方法５００はまた、圧縮済み制御データに相当するコードワードを生成するため、５０４で圧縮済み制御データを符号化することを含む。コードワードはメモリ装置の誤り訂正コード（ＥＣＣ）エンジンにより復号化可能である。例えば、図２のＥＣＣエンジン２５４は圧縮済み制御データ２４０を符号化して、圧縮済み制御データ２４０に相当するコードワード２５２を生成する。圧縮済み制御データはバッファランダムアクセスメモリ（ＢＲＡＭ）に蓄積されうる。例えば、図２のＢＲＡＭ２２６は圧縮済み制御データ２４０を蓄積する。ＥＣＣエンジンにおける圧縮済み制御データの有効誤り訂正率は、制御データの有効誤り訂正率を上回る可能性がある。例えば、図２のＥＣＣエンジン２５４で圧縮済み制御データ２４０の有効誤り訂正率は制御データ２４４の有効誤り訂正率を上回る。圧縮済み制御データを符号化することは、圧縮済み制御データに対応するＥＣＣビットを生成することを含みうる。符号化は、リード・ソロモン符号、ボース・レイ・チョドーリ・オッケンジェム（ＢＣＨ）符号、または低密度パリティ検査（ＬＤＰＣ）符号に基づきうる。
【００４４】
方法５００はまた、５０６でコントローラへ結合されたメモリアレイにコードワードを蓄積することを含む。例えば、図２のコントローラ２０６は、コントローラ２０６へ結合されたメモリアレイ２０８にコードワード２５２を蓄積する。コードワードを蓄積することは、ヘッダデータ部分と、ペイロード部分と、パリティ部分とを含むフォーマット済みデータワードを蓄積することを含みうる。フォーマット済みデータワードはさらにヘッダパリティ部分を含みうる。例えば、図３のフォーマット済みデータワード３０２は、ヘッダデータ３０６と、ペイロード３０４と、パリティデータ３１４と、ヘッダパリティデータ３０８とを含む。
【００４５】
方法５００はまた、フォーマット済みデータワードの蓄積サイズを所定のサイズまで増やすため、圧縮済み制御データに追加データを追加することを含みうる。追加データは、圧縮済み制御データが符号化された後に圧縮済み制御データに追加されうる。例えば、図２のコントローラ２０６は、フォーマット済みデータワード３０２の圧縮済み制御データ３１０に図３の追加データ３１２を追加しうる。あるいは可変サイズフォーマット済みデータワード、例えば図４のフォーマット済みデータワード４０２を生成するため、圧縮済み制御データは追加データなしで符号化される場合もある。
【００４６】
方法５００は圧縮済み制御データのサイズを蓄積することを含む。例えば、サイズはヘッダデータ部分、例えば図３のフォーマット済みデータワード３０２のヘッダデータ３０６に蓄積されうる。別の例として、圧縮済み制御データのサイズはメモリアレイに蓄積されうる。例えば、図２のコントローラ２０６は、圧縮済み制御データ２４０のサイズ２５０をメモリアレイ２０８に蓄積しうる。圧縮済み制御データのサイズはコントローラに蓄積される場合もある。例えば、圧縮済み制御データ２４０のサイズ２５０は図２のコントローラ２０６に蓄積される。方法５００はまた、制御データの第１のサイズを圧縮済み制御データの第２のサイズに比較することと、第２のサイズが第１のサイズ以上なら制御データを符号化のためにＥＣＣエンジンへ提供することとを含みうる。例えば、図２のコントローラ２０６は、制御データ２４４のサイズ２４８を圧縮済み制御データ２４０のサイズ２５０に比較し、圧縮済み制御データのサイズ２５０が制御データのサイズ２４８以上なら、制御データ２４４を符号化のためにＥＣＣエンジン２５４へ提供しうる。別の例として、制御データのサイズ２４８が圧縮済み制御データのサイズ２５０を上回る場合は、圧縮済み制御データ２４０がＥＣＣエンジン２５４に提供されうる。
【００４７】
図６は、制御データを復号化しかつ展開する方法６００の一実施形態の流れ図である。方法６００は、メモリ装置のコントローラ、例えば非限定的な例として図１のコントローラ１０６、あるいは図２のコントローラ２０６にて遂行されうる。方法６００は、６０２でメモリアレイからコードワードを読み取ることを含む。例えば、図２のコントローラ２０６は、メモリアレイ２０８からコードワード２５２を読み取る。方法６００はまた、圧縮済み制御データを生成するため、６０４で誤り訂正コード（ＥＣＣ）エンジンによりコードワードを復号化することを含む。例えば、図２のＥＣＣエンジン２５４は、圧縮済み制御データ２４０を生成するため、コードワード２５２を復号化する。方法６００はまた、６０６で圧縮済み制御データを展開することを含む。例えば、図２のＥＣＣ強化圧縮モジュール２２４は、圧縮済み制御データを展開することで展開済み制御データ２４２を生成する。
【００４８】
圧縮済み制御データは追加データを含む場合がある。追加データは、圧縮済み制御データのサイズに基づいて圧縮済み制御データから廃棄される。例えば、図２のコントローラ２０６は、圧縮済み制御データ２４０のサイズ２５０に基づいて図３の圧縮済み制御データ３１０から追加データ３１２を廃棄しうる。圧縮済み制御データのサイズは追加データを除いた圧縮済み制御データのサイズを表しうる。
【００４９】
方法６００はまた、メモリアレイから圧縮済み制御データのサイズを取り出すことを含みうる。例えば、図２のコントローラ２０６は、メモリアレイ２０８から圧縮済み制御データ２４０のサイズ２５０を取り出す。あるいはまた、圧縮済み制御データのサイズはコントローラから返されうる。例えば、図２のコントローラ２０６は、コントローラ２０６から圧縮済み制御データ２４０のサイズ２５０を取り出しうる。
【００５０】
圧縮済み制御データから追加データを取り除いたら、コントローラは圧縮済み制御データをメモリ装置の操作に使用するために展開しうる。圧縮済み制御データに対して誤り訂正復号化を行うと、訂正作業の範囲が狭まってＥＣＣエンジンの誤り訂正能力が高まる。例えば、ＥＣＣエンジンにおける圧縮済み制御データの有効誤り訂正率は制御データの有効誤り訂正率を上回ってよい。
【００５１】
ここに記述された種々のコンポーネントはブロックコンポーネントとして描かれ、かつ一般的な用語で説明されているが、かかるコンポーネントは、図１のメモリ装置１０４または図２のメモリ装置２０４で、それらのコンポーネントによる特定の機能またはその任意の組み合わせを遂行することを可能にするように構成された１つ以上のマイクロプロセッサ、ステートマシン、または他の回路を含みうる。例えば、図１のＥＣＣ強化圧縮モジュール１１０と図２のＥＣＣ強化圧縮モジュール２２４は、図１のメモリ装置１０４で符号化され蓄積される制御データを圧縮することを可能にする物理的コンポーネント、例えばハードウェアコントローラ、ステートマシン、論理回路、または他の構造に相当しうる。
【００５２】
別の例として、図１のコントローラ１０６は、ＥＣＣ強化圧縮モジュール１１０で制御データの圧縮および展開を遂行し、ＥＣＣエンジン１１２で圧縮済み制御データの符号化および復号化を遂行し、かつメモリアレイ１０８でコードワードの取り出しおよび蓄積を遂行するように構成された専用回路を使って、実装されうる。あるいはまた、コントローラ１０６またはコントローラ１０６の部分は、圧縮、展開、符号化、復号化、またはこれらの任意の組み合わせを遂行するようにプログラムされたマイクロプロセッサまたはマイクロコントローラを使って実装されうる。メモリ装置１０４はプロセッサによって実行される実行可能な命令を含み、その命令はメモリアレイ１０８、例えばフラッシュメモリアレイに蓄積される。あるいはまた、メモリ装置１０４に含まれうるプロセッサによって実行される実行可能な命令は、メモリアレイ１０８とは別の独立したメモリ位置、例えば独立したランダムアクセスメモリ（ＲＡＭ）（図示せず）または読み取り専用メモリ（ＲＯＭ）（図示せず）に蓄積されうる。
【００５３】
図１のメモリ装置１０４は、１つ以上の外部装置、例えばホスト装置に選択的に結合されるように構成された可搬形装置でありうる。ただし、別の実施形態では、メモリ装置１０４は、１つ以上のホスト装置の中、例えば可搬形通信装置の筐体の中に取り付けられるか、さもなくば組み込まれうる。例えば、メモリ装置１０４は、パッケージされた装置の中、例えば無線電話機、携帯用情報端末（ＰＤＡ）、ゲーム装置またはコンソール、可搬形ナビゲーション装置、または内蔵不揮発性メモリを使用する他の装置の中にあってよい。メモリ装置１０４は、不揮発性メモリ、例えばフラッシュメモリ（例えば、ＮＡＮＤ、ＮＯＲ、マルチレベルセル（ＭＬＣ）、ディバイディッドビットラインＮＯＲ（ＤＩＮＯＲ）、ＡＮＤ、高容量結合比（ＨｉＣＲ）、アシンメトリカルコンタクトレストランジスタ（ＡＣＴ）、または他のフラッシュメモリ）、消去可能でプログラム可能な読み取り専用メモリ（ＥＰＲＯＭ）、電気的に消去可能でプログラム可能な読み取り専用メモリ（ＥＥＰＲＯＭ）、読み取り専用メモリ（ＲＯＭ）、ワンタイムプログラマブルメモリ（ＯＴＰ）、または他の何らかのタイプの不揮発性メモリを含みうる。
【００５４】
ここに記載された実施形態の説明は種々の実施形態を全般的に理解するためのものである。本開示から他の実施形態を導き出し利用することもでき、本開示の範囲から逸脱することなく構造的および論理的な代替および変更を行うことができる。本開示は種々の実施形態のあらゆる改作または変形例を対象として含む。
【００５５】
前に開示された主題は制限的ではなく例示的とみなすべきものであり、添付の特許請求の範囲は本開示の範囲内に該当するあらゆる修正、改良、および他の実施形態を対象として含む。法律で許される最大限の範囲において、本発明の範囲は添付の特許請求の範囲およびその同等物の最も広義な解釈によって決定され、前述した詳細な説明によって制限または限定されない。
【図１】
2013516000.tif 000007
【図２】
2013516000.tif 000008
【図３】
2013516000.tif 000009
【図４】
2013516000.tif 000010
【図５】
2013516000.tif 000011
【図６】
2013516000.tif 000012
【手続補正書】
【提出日】平成24年10月16日(2012.10.16)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
方法であって、
データ蓄積装置のコントローラにて、
制御データを圧縮するステップと、
圧縮済み制御データに相当するコードワードを生成するために圧縮済み制御データを符号化するステップと、
フォーマット済みデータワードの蓄積サイズを増やすため、圧縮済み制御データを符号化した後に圧縮済み制御データに追加データを追加するステップと、
前記コントローラへ結合されたメモリにコードワードを蓄積するステップと、を含み、
コードワードは、前記データ蓄積装置の誤り訂正コード（ＥＣＣ）エンジンにより復号化可能であり、
前記コードワードを蓄積するステップは、フォーマット済みデータワードを蓄積することを含む方法。
【請求項２】
請求項１記載の方法において、
制御データは、データ蓄積装置におけるメモリの論理および物理ブロックアドレステーブル、メモリにおけるデータ構造のインデックス、ポインタ、およびオフセット、並びにデータ蓄積装置のウェアレベリングデータからなるグループから選ばれるある種のデータを備える方法。
【請求項３】
請求項１記載の方法において、
前記データ蓄積装置へ結合された外部装置からユーザデータを受信するステップをさらに含み、前記外部装置はホスト装置であり、ユーザデータは前記データ蓄積装置にあるランダムアクセスメモリで受信される方法。
【請求項４】
請求項１記載の方法において、
前記ＥＣＣエンジンにおける圧縮済み制御データの有効誤り訂正率は、制御データの有効誤り訂正率を上回る方法。
【請求項５】
請求項１記載の方法において、
フォーマット済みデータワードは、ヘッダデータ部分、ペイロード部分、パリティ部分、およびヘッダパリティ部分を含み、圧縮済み制御データのサイズをヘッダデータ部分に蓄積するステップをさらに含む方法。
【請求項６】
請求項１記載の方法において、
前記符号化するステップは、圧縮済み制御データに対応するＥＣＣビットを生成することを含む方法。
【請求項７】
方法であって、
データ蓄積装置のコントローラにて、
メモリからコードワードを読み取るステップと、
圧縮済み制御データを生成するために誤り訂正コード（ＥＣＣ）エンジンでコードワードを復号化するステップと、
圧縮済み制御データを展開するステップと、を含み、
圧縮済み制御データは、フォーマット済みデータワードの蓄積サイズを増やすために圧縮済み制御データを符号化した後に追加された追加データを含む方法。
【請求項８】
請求項７記載の方法において、
圧縮済み制御データのサイズに基づいて圧縮済み制御データから追加データを廃棄するステップをさらに含み、圧縮済み制御データのサイズは追加データを除いた圧縮済み制御データのサイズを表す方法。
【請求項９】
請求項８記載の方法において、
圧縮済み制御データのサイズを前記メモリと前記コントローラのうちの少なくとも１つから取り出すステップをさらに含む方法。
【請求項１０】
システムであって、
メモリと、
前記メモリへ結合されたコントローラと、を備え、
前記コントローラは、
誤り訂正コード（ＥＣＣ）エンジンと、
前記ＥＣＣエンジンへ結合されたＥＣＣ強化圧縮モジュールと、を備え、
前記ＥＣＣ強化圧縮モジュールは、前記ＥＣＣエンジンへ提供される制御データを受信しかつ圧縮するように構成され、
前記コントローラは、圧縮済み符号化済み制御データを形成するために前記ＥＣＣエンジンによって圧縮済み制御データが符号化された後に、フォーマット済みデータワードの蓄積サイズを増やすために圧縮済み符号化済み制御データに追加データを追加するように構成され、
前記ＥＣＣエンジンで生成された圧縮済み符号化済み制御データは、コードワードとして前記メモリに蓄積されるシステム。
【請求項１１】
請求項１０記載のシステムにおいて、
前記ＥＣＣ強化圧縮モジュールは、
前記メモリから圧縮済み符号化済み制御データを取り出し、かつ
圧縮済み制御データを生成するために圧縮済み符号化済み制御データを復号化するようにさらに構成されるシステム。
【請求項１２】
請求項１０記載のシステムにおいて、
前記ＥＣＣエンジンは、
圧縮済み制御データを符号化するように構成された誤り検出コード回路と、
符号化済み圧縮済み制御データを復号化するように構成された誤り訂正コード回路と、
をさらに備えるシステム。
【請求項１３】
方法であって、
誤り訂正コード（ＥＣＣ）エンジンと１群の蓄積素子を含む複数の蓄積素子とを含み、データ部分とパリティ部分とを含むページ形式に従って情報を前記蓄積素子に蓄積するように構成されたデータ蓄積装置にて、
１群の蓄積素子に蓄積されるデータを圧縮するために圧縮操作を開始し、
データの圧縮範囲に基づき、第１のパリティビット数を生成するＥＣＣエンジンの第１のモードと、第２のパリティビット数を生成するＥＣＣエンジンの第２のモードのうちのいずれか一方を選択し、
圧縮済みデータに対応するパリティビットを生成するために圧縮済みデータを符号化し、かつ
ページ形式に従い１群の蓄積素子に圧縮済みデータとパリティビットとを蓄積することを遂行するステップを含み、
圧縮済みデータはデータ部分に蓄積され、パリティビットの少なくとも一部はパリティ部分に蓄積される方法。
【請求項１４】
方法であって、
誤り訂正コード（ＥＣＣ）エンジンと複数の蓄積素子とを含み、データ部分とパリティ部分とを含むページ形式に従って情報を前記蓄積素子に蓄積するように構成されたデータ蓄積装置にて、
ページ形式に従い前記蓄積素子から圧縮済みデータとパリティビットとを含む１ページのデータを読み取り、
パリティビットを使用し前記ＥＣＣエンジンで圧縮済みデータを復号化し、かつ
展開済みデータを生成するために圧縮済みデータを展開することを遂行するステップを含み、
圧縮済みデータはページのデータ部分に含まれ、パリティビットの少なくとも一部はページのパリティ部分に含まれ、
前記ＥＣＣエンジンは、パリティビットの全てがページのパリティ部分に含まれる場合には第１のモードに従って動作し、あるいはパリティビットの第１の部分がページのパリティ部分に含まれかつパリティビットの第２の部分がページのデータ部分に含まれる場合には第２のモードに従って動作するように構成可能である方法。
【請求項１５】
データ蓄積装置であって、
複数の蓄積素子を含むメモリと、
前記メモリへ結合され、データ部分とパリティ部分とを含むページ形式に従って前記蓄積素子に情報を蓄積するように構成されたコントローラと、を備え、
前記コントローラは、
誤り訂正コード（ＥＣＣ）エンジンと、
前記ＥＣＣエンジンへ結合され、前記ＥＣＣエンジンへ提供されるデータを受信しかつ圧縮するように構成された圧縮モジュールと、を備え、
前記ＥＣＣエンジンは、データの圧縮範囲に基づき、第１のパリティビット数を生成する第１のモードで動作し、あるいは第２のパリティビット数を生成する第２のモードで動作するように構成可能であり、
前記コントローラはページ形式に従って前記蓄積素子に圧縮済みデータとパリティビットとを含むページを蓄積するように構成され、圧縮済みデータはページのデータ部分に蓄積され、パリティビットの少なくとも一部はページのパリティ部分に蓄積されるデータ蓄積装置。
【請求項１６】
データ蓄積装置であって、
複数の蓄積素子を含むメモリと、
前記メモリへ結合され、データ部分とパリティ部分とを含むページ形式に従って前記蓄積素子から情報を読み取るように構成されたコントローラと、を備え、
前記コントローラは、
誤り訂正コード（ＥＣＣ）エンジンと、
前記ＥＣＣエンジンへ結合され、前記ＥＣＣエンジンによって提供される復号化済みデータを受信しかつ展開するように構成された展開モジュールと、を備え、
前記ＥＣＣエンジンは、ページ形式に従って前記メモリから読み取られた１ページの圧縮済みデータおよびパリティビットを復号化するように動作し、圧縮済みデータはページのデータ部分に含まれ、パリティビットの少なくとも一部はページのパリティ部分に含まれ、
前記ＥＣＣエンジンは、パリティビットの全てがページのパリティ部分に含まれる場合には第１のモードに従って動作し、あるいはパリティビットの第１の部分がページのパリティ部分に含まれかつパリティビットの第２の部分がページのデータ部分に含まれる場合には第２のモードに従って動作するように構成されるデータ蓄積装置。
【国際調査報告】
2013516000.tif 000013
2013516000.tif 000014
2013516000.tif 000015
2013516000.tif 000016
2013516000.tif 000017