(57)【特許請求の範囲】
【請求項１】
複数の不揮発性集積回路メモリデバイス中にデータを記憶する方法であって、
データを畳み込み符号化すること、および
前記畳み込み符号化されたデータが少なくとも２つの不揮発性集積回路メモリデバイスに交互配置で分配されるように、前記畳み込み符号化されたデータを記憶すること、
を含み、
前記畳み込み符号化の符号化率ｍ／ｎは、データが分配される不揮発性集積回路メモリデバイスの数に、少なくとも部分的に基づいている方法。
【請求項２】
畳み込み符号化することは、少なくともｍ個のブロック符号化されたデータのセクタに対応するデータを畳み込み符号化することを含み、ここでｍ／ｎは前記畳み込み符号の符号化率に対応し、
記憶することは、前記畳み込み符号化されたデータをｎ個の不揮発性集積回路メモリデバイスに記憶することを含む、請求項１の方法。
【請求項３】
さらに、
ｍ個のセクタに対応する符号化されていないデータをホストから受け取ること、および
前記ｍ個のブロック符号化されたセクタを生成するために、前記符号化されていないデータのｍ個のセクタをブロック符号化すること、
を含む請求項２の方法。
【請求項４】
ｍ個のセクタは、ファイルシステムに従う一クラスタ中のセクタの数に対応する、請求項２の方法。
【請求項５】
さらに、符号化率ｍ／ｎを用いて畳み込み符号化することを含み、ｎはｍ＋１に等しい、請求項２の方法。
【請求項６】
さらに、
前記ｍ個のブロック符号化されたデータのセクタのいずれかの中のデータがブランクデータに対応するかどうかを決定すること、および
もしそのデータがブランクデータに対応すると決定されたならば、前記ブロック符号化されたデータの畳み込み符号化をバイパスすること、
を含む、請求項２の方法。
【請求項７】
セクタがブランクであることを決定することは、前記セクタに対するフォーマッティングの検査に少なくとも部分的に基づく、請求項６の方法。
【請求項８】
さらに、パンクチャリングパターンを、データが分配される不揮発性集積回路メモリデバイスの数に少なくとも部分的に基づいて選択すること、を含む請求項２の方法。
【請求項９】
複数の不揮発性集積回路メモリデバイスからデータを読み出す方法であって、
少なくとも２つの不揮発性集積回路メモリデバイスから畳み込み符号化されたデータを取り出すことであって、前記畳み込み符号化されたデータは前記少なくとも２つの不揮発性集積回路メモリデバイスに分配されている、ということ、および
前記メモリデバイスから取り出された前記畳み込み符号化されたデータを逆畳み込み化することであって、逆畳み込み化すべき畳み込み符号化されたデータが格納されるだろう、少なくとも２である、不揮発性集積回路メモリデバイスの数に少なくとも部分的に基づいて選択された、畳み込み符号化されたデータを逆畳み込み化するための符号化率を決定し、逆畳み込み化することは前記畳み込み符号化されたデータの元々の順序を復元するために、前記畳み込み符号化されたデータを再配列することを含む、ということ、
前記取り出されたデータの部分がブランクデータに対応するか判定すること、
それらの部分について、逆畳み込み化をバイパスすること、
を含む方法。
【請求項１０】
逆畳み込み化することは、データを挿入すること、およびビタビアルゴリズムによって復号すること、を含む請求項９の方法。
【請求項１１】
さらに、取り出すことの前に、前記取り出された畳み込み符号化されたデータに対応するデータのクラスタに対するホストからのリクエストを受け取ること、
を含む請求項９の方法。
【請求項１２】
さらに、前記逆畳み込み化されたデータをブロック復号化すること、を含む請求項９の方法。
【請求項１３】
複数の不揮発性集積回路メモリデバイス中にデータを記憶する方法であって、
畳み込み符号化されたデータが分配されるだろう、少なくとも２である、不揮発性集積回路メモリデバイスの数ｎに少なくとも部分的に基づいて、畳み込み符号化の符号化率を選択することと、
ｍ個のデータの第１のサイズの部分を、前記選択された符号化率にしたがって、ｍ／ｎの符号化率を用いて、ｍ個の畳み込み符号の第２のサイズの部分に畳み込み符号化することであって、
前記第２の部分は、前記第１のサイズのセクタよりｎ／ｍ倍大きく、前記ｍ個の第１のサイズの部分の少なくとも１つは、ブランクデータとは対照的な実データを含む、ということ、及び、
ｎ個の不揮発性集積回路メモリデバイス中に前記ｍ個の畳み込み符号の第２のサイズの部分を記憶することであって、前記ｍ個の不揮発性集積回路メモリデバイスはｍ個の第１のサイズの部分を記憶するように構成され、ｎは少なくとも２である、ということ、
を含む方法。
【請求項１４】
さらに、畳み込み符号化することはさらに、前記畳み込み符号をパンクチャすることを含むことを含む、請求項１３の方法。
【請求項１５】
さらに、
ブランクデータに対応する前記ｍ個のデータの第１の部分の少なくとも１つを決定すること、および
前記ｍ個の不揮発性集積回路メモリデバイスに対する前記ｍ個の畳み込み符号の第２のサイズのセクタの対応する部分の畳み込み符号化をバイパスすること、
を含む請求項１３の方法。
【請求項１６】
さらに、畳み込み符号化をすることの前に前記データをブロック符号化することを含む、請求項１３の方法。
【請求項１７】
複数の不揮発性集積回路メモリデバイスからデータにアクセスする方法であって、
ホストからデータに対するリクエストを受け取ること、
２つ以上の前記不揮発性集積回路メモリデバイスの少なくとも１つから１つ以上のデータの関連するセクタを取り出すことであって、前記１つ以上の関連するセクタは、第１のサイズである、ということ、
逆畳み込み化すべき畳み込み符号化されたデータが格納されるだろう、少なくとも２である、不揮発性集積回路メモリデバイスの数に少なくとも部分的に基づいて選択された、畳み込み符号化されたデータを逆畳み込み化するための符号化率を決定することと、および
前記リクエストされたページの少なくとも部分に関する１つ以上の情報のセクタを生成するために、前記１つ以上の関連するセクタの少なくとも一部を逆畳み込み化することであって、前記生成された情報の前記１つ以上のセクタは、逆畳み込み化された畳み込み符号の符号化率だけ前記第１のセクタサイズより小さい第２のセクタサイズであり、前記生成された情報のセクタは、前記不揮発性集積回路メモリデバイスから、次々に、ページを逆畳み込み化するために、読み出される、ということ、
を含む方法。
【請求項１８】
逆畳み込み化することは、
パンクチャされたデータの補償をすること、および
ビタビアルゴリズムによって復号化すること、
を含む請求項１７の方法。
【請求項１９】
前記ホストから前記リクエストを受け取ることは、前記ホストからデータのクラスタに対するリクエストを受け取ること、を含む請求項１７の方法。
【請求項２０】
さらに、前記リクエストされたデータを生成するために、前記生成された情報からブロック符号を復号化すること、を含む請求項１７の方法。
【請求項２１】
さらに、
前記取り出されたセクタの１つ以上がブランクであると決定すること、および
前記ブランクセクタを、前記生成された情報がブランクデータに対応するように逆畳み込み化すること、
を含む請求項１７の方法。
【請求項２２】
装置であって、
第１のバッファ、
第２のバッファ、
ホストおよび複数の不揮発性集積回路メモリデバイスの間のインターフェイスを取り、前記第２のバッファから前記不揮発性集積回路メモリデバイスへのデータの前記記憶を、そのデータが前記不揮発性集積回路メモリデバイスに交互配置で分配されるように制御する、ように構成され制御ロジック、
前記第１のバッファ中に記憶されるデータを畳み込み符号化し、前記不揮発性集積回路メモリデバイスへの転送のために前記第２のバッファ中に前記畳み込み符号化されたデータを記憶し、畳み込み符号化されたデータが分配されるだろう、少なくとも２である、不揮発性集積回路メモリデバイスの数に少なくとも部分的に基づいて、畳み込み符号化の符号化率を選択するように構成される畳み込み符号エンコーダ、および
畳み込み符号化されたデータが分配されるだろう不揮発性集積回路メモリデバイスの数に少なくとも部分的に基づいて、前記不揮発性集積回路メモリデバイスから取り出された前記第２のバッファ中に記憶されるデータを逆畳み込みし、前記第１のバッファ中に前記復号化されたデータを記憶する、ように構成された畳み込み符号デコーダ、
を含む装置。
【請求項２３】
前記制御ロジックはさらに、前記第１のバッファへのデータ転送、および／または、前記第１のバッファから前記第２のバッファへのデータ転送を制御するように構成される、
請求項２２の装置。
【請求項２４】
さらに、前記ホストから転送されたデータをブロック符号化し、前記ホストに転送されるブロック符号化されたデータを復号化する、ように構成された誤り訂正符号（ＥＣＣ）モジュールを含む、請求項２２の装置。
【請求項２５】
さらに、ブランクデータを検知することに応答して、前記畳み込み符号エンコーダおよび／または畳み込み符号デコーダをバイパスするように構成されたブランクセクタバイパスモジュールを含む、請求項２２の装置。
【請求項２６】
前記ブランクセクタバイパスモジュールはさらに、セクタが、前記セクタに対するフォーマッティングの検査に少なくとも部分的に基づいて、ブランクであることを決定するように構成されている、請求項２５の装置。
【請求項２７】
前記装置は、ＮＡＮＤフラッシュメモリコントローラに埋め込まれている、請求項２２の装置。
【請求項２８】
前記制御ロジックはさらに、前記畳み込み符号エンコーダに対する符号化率ｍ／ｎを、データが分配される不揮発性集積回路メモリデバイスの数に少なくとも部分的に基づいて選択するように構成されている、請求項２２の装置。
【請求項２９】
前記制御ロジックはさらに、前記畳み込み符号エンコーダに対するパンクチャリングパターンを、データが分配される不揮発性集積回路メモリデバイスの数に少なくとも部分的に基づいて選択するように構成されている、請求項２２の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、全般的には固体メモリに関する。特に、本発明の１つ以上の実施形態は不揮発性集積回路メモリ回路のためのコントローラに関する。
【背景技術】
【０００２】
フラッシュメモリは、消去可能かつ再プログラミング可能な不揮発性集積回路メモリの一形態である。フラッシュメモリでは、メモリセルは消去のために“ブロック”状に配置される。ブロックが消去されたあとで、もし望むならばプログラミングは実行可能である。ＮＯＲフラッシュメモリは、データの取り出しのために個々のバイトへのアクセスを提供するが、比較的低密度である、フラッシュメモリの一種である。ＮＡＮＤフラッシュメモリは比較的高密度であるフラッシュメモリの一種である。高密度は、ある程度は、直列に接続されたセルの列を形成することによって実現される。加えて、ＮＡＮＤメモリフラッシュメモリではデータは、データのページのような比較的大きなバイトの集まりの中にプログラミングされ（“書き込まれ”）、アクセス（読み出しまたは書き込み）される。
【０００３】
データの“ページ”は、典型的には、一般的に一度にＮＡＮＤフラッシュメモリに書き込まれるまたはＮＡＮＤフラッシュメモリから読み出されるデータの量のことを指す。１つ以上の実施形態では、そのようなページは、ＮＡＮＤフラッシュメモリアレイ中の行または行の一部に対応させることが可能である。たとえば、一ページは２１１２バイトを含み得るが、そのうち２０４８は通常のデータバイトであり６４は予備バイトである。予備バイトは典型的には、誤り訂正符号（ＥＣＣ）データ、ウェアレベリング情報、または別のオーバーヘッドデータのために使用される。誤り訂正の使用は、記憶されたデータのロバスト性を増やす。典型的には、ブロック符号として知られる誤り訂正符合（ＥＣＣ）の一形式は、巡回冗長検査（ＣＲＣ）チェックサム、ハミング符号、リード・ソロモン誤り訂正等などの誤り訂正符号データを生成するために用いられる。これら誤り訂正符号は読み出し時に読み出しデータバイト中に誤りがあるかどうかを検知するために用いられ得て、誤りが誤り訂正符号の能力を超えないならば、データバイト中の誤りを訂正することができる。
【０００４】
フラッシュメモリは多くの用途を有している。例は、フラッシュメモリハードドライブ（ハードドライブの代替）、ＵＳＢフラッシュドライブまたはサムドライブ、携帯電話、デジタルカメラ、デジタルメディアプレーヤ、ゲーム、メモリカード、ナビゲーションデバイス、パーソナルデジタルアシスタント、コンピュータ等を含む。限界内で、誤り訂正符号は、データバイト中のデータの中の多くの誤りを訂正することができる。しかしながら、これらの限界を超えると、誤りを含むデータは通常は訂正され得ない。従来の技術の一つの欠点は、誤りが訂正不可能になるときには、データを保管するための対策を取ることが手遅れになることが良くあることである。
【０００５】
データ記憶のためにフラッシュメモリを用いるデバイスの多くはまた、オペレーティングシステムを用いている。オペレーティングシステムは、ハードウェアと他のソフトウェアの間の抽象化層（アブストラクションレイヤ）として機能する。たとえば、オペレーティングシステムのファイルシステムおよびデバイスドライバは、典型的にはメモリデバイスに記憶されたデータへのアクセスを提供する。オペレーティングシステム内に、追加のレイヤ（層）が存在しても良い。
【０００６】
図１は、ホスト１００、メモリコントローラ１１６、および不揮発性メモリデバイス１０６を含む処理環境の一部の例である。メモリデバイス１０６はＮＡＮＤフラッシュメモリデバイスであって良い。ホスト１００は、ＣＰＵ１０２およびオペレーティングシステム１０４の形式でマイクロプロセッサを含んでいて良い。オペレーティングシステム１０４はさらに、ファイルシステム１０８およびデバイスドライバ１１０を含む。オペレーティングシステム１０４は、１つ以上のファイルシステムおよび１つ以上のデバイスドライバならびにここでの議論に関連しない他のコンポーネントのためのサポートを有しても良い。
【０００７】
ＣＰＵ１０２は、オペレーティングシステム１０４のコードを含む命令を実行する。ファイルシステム１０８のコードは、メモリデバイス１０６に対する論理アドレスのような低水準情報と、ファイル名およびディレクトリのような高水準情報の間の抽象化（アブストラクション）を与える。デバイスドライバ１１０に対するコードは、典型的には、メモリデバイス１０６とやり取りするデータ転送のための低水準情報を処理する。デバイスドライバ１１０は、（プロセッサ入力／出力として知られる）メモリデバイス１０６に直接的にアクセスするためのＣＰＵ１０２に対するコードを提供することが可能であり、またはデータがメモリデバイス１０６へ転送され、且つ、メモリデバイス１０６から入手できるように、バス制御を処理するために、メモリコントローラ１１６を作動させるコードを提供することが可能である。メモリコントローラ１１６を使用することによって、ＣＰＵ１０２は他のタスクを処理するために解放される。
【０００８】
プロセッサ入力／出力（ＰＩＯ）を用いて、デバイスドライバ１１０は、書き込み動作および読み出し動作に関連するＥＣＣ情報を処理することができる。多くのオペレーティングシステムでは、様々な異なるタイプのメモリデバイスへの読み出し、および様々な異なるタイプのメモリデバイスからの書き込みをサポートするために、多くのデバイスドライバが存在している。ファイルシステム１０８によるマッピングに加えて、多くのＮＡＮＤフラッシュメモリデバイスは、論理アドレスと物理アドレスの間の、不良ブロックの管理および使用寿命管理のためのフラッシュ変換層として参照され得る仮想マッピングを利用する。
【０００９】
従来の処理環境においてデータ記憶のために用いられる従来のハードディスクと共によく用いられる一つの技術は、安価な複数のディスクの冗長なアレイ（ＲＡＩＤ）として知られているものである。例えばＲＡＩＤ−３のようなＲＡＩＤシステムでは、冗長なハードディスクは、他のハードディスクの排他的論理和（ＸＯＲ）を記憶する。たとえば、第３のハードディスクは、ハードディスク１および２の中身のＸＯＲを含むことが可能である。よって、もし一つのハードディスクが破局的に故障しても、故障したハードディスクの中身は、残りのハードディスクから再構築することができる。しかしながら、もし１つより多くのハードディスクが破局的に故障すれば、データは再構築され得ない。
【００１０】
しかしながら、例えばＮＡＮＤフラッシュのような固体不揮発性メモリデバイスでは、破局的故障は一般的ではない。むしろ、固体不揮発性メモリデバイスは、個別のビットエラーをより起こしがちである。
【００１１】
本明細書中の図面および関連する記述は、本発明の特定の実施形態を示すために提示され、それらに限定されることは意図されていない。
【図面の簡単な説明】
【００１２】
【図１】ホスト、コントローラ、および不揮発性集積回路メモリデバイスを含む処理環境を示している。
【図２】３つのメモリデバイスのページ毎に１セクタに分配された２セクタ分のデータから生成される、畳込み符号の記憶を示している。
【図３】メモリデバイスの有効的により大きなセクタ中に書き込まれた２セクタ分のデータから生成される、畳込み符号の記憶を示している。
【図４】メモリコントローラの例を概略的に示している。
【図５】畳込み符号をパンクチャリング（ｐｕｎｃｔｕｒｉｎｇ）するためのデータ流れを概略的に示している。
【図６】不揮発性集積回路メモリデバイスにデータを書き込むための処理の実施形態を全般的に示すフローチャートである。
【図７】不揮発性集積回路メモリデバイスからデータを読み出すための処理の実施形態を全般的に示すフローチャートである。
【発明を実施するための形態】
【００１３】
装置および方法は、畳込み符号を用いて複数の不揮発性集積回路メモリデバイスにデータを記憶する。データが畳込み符号に符号化されると、結果として生じる畳込み符号はオリジナルのデータよりサイズが大きい。畳込み符号に対する比較的高い符号化率（ｃｏｄｅ  ｒａｔｅ）は、比較的わずかしか余分なメモリを消費しない。畳込み符号の符号化率ｍ／ｎは、情報シンボルｍの数と符号シンボルｎの数との比である。ある実施形態では、畳込み符号は、特定のメモリデバイスのあるページ内に集められているよりむしろ、複数のメモリデバイスの部分に分配されている。ある実施形態では、ｍ／ｎの符号化率が用いられ、畳込み符号はｎ個のメモリデバイスにわたって記憶される。ある実施形態では、畳込み符号は、ｎ個のメモリデバイスの中に交互配置（インターリーブ）することによってｎ個のメモリデバイスにわたって分配される。
【００１４】
本明細書では特定の実施形態が記述されるが、本明細書中で示される全ての利点および特徴（フィーチャ）を示さない実施形態を含む本発明の他の実施形態は、当業者には明らかであろう。
【００１５】
従来のハードディスクストレージの文脈では、セクタは典型的には、従来のハードディスクおよびディスケットを用いるときにアクセスが可能であるデータの最小量、たとえば、５１２バイトを示す（セクタのサイズは変化させることが可能であり、たとえば、光ディスクは２０４８バイトであり得る）。そのようなデータのセクタが不揮発性メモリに書き込まるとき、セクタ中のデータに、典型的には、誤り訂正符号データが追加されている。たとえば、５１２バイトの通常データは、１６バイトのＥＣＣデータにより、事実上５２８バイトに膨れる可能性がある。ＥＣＣデータのバイト数は、ＥＣＣの所望の強さに依存して、記憶容量および復号化複雑度を犠牲に、非常に広い範囲で変化し得る。加えて、現在の議論に直接関係のない他のデータもまた、記憶される可能性があり、よってセクタを記憶するために割り当てられる実際のメモリの量は、変化する可能性がある。
【００１６】
ファイル記憶に関しては、ファイルシステム１０８（図１）は、１つ以上のセクタに対応するデータを、典型的にはクラスタとして参照される部分にグループ化をする。ファイルシステムの視点からは、クラスタのデータは、一ファイルの記憶のために割り当てられ得るデータの最小サイズである。ＮＡＮＤフラッシュメモリなどのあるタイプのメモリデバイスでは、データは典型的には、メモリデバイスから一度に１“ページ”が書き込まれる、または読み出される。ページは１つ以上のセクタ中に記憶され得るデータに対応しても良い。部分ページ書き込み、つまり、１ページの全部より少ないデータのプログラミング（たとえば、実施形態によっては、行の一部のみへ書き込むことは、“部分”ページ書き込みと考えることができる）が、可能である。部分ページ書き込みを実行するために、書き込みがされていないページの部分のビットは、典型的には論理“１”である消去状態と同じ状態のままとされる。
【００１７】
本発明の実施形態は、畳込み的に符号化されたデータを２つ以上の不揮発性メモリデバイスに分配する。図２は、３つのメモリデバイスのページ毎に一つの部分に分配された２つの部分に値する非畳込み的に符号化されたデータから生成される、畳込み符号化されたデータの記憶を示している。ある実施形態では、一つの部分は一セクタである。図２は、第１のメモリデバイス（メモリ＿０）のページ２０２、第２のメモリデバイス（メモリ＿１）のページ２０４、第３のメモリデバイス（メモリ＿２）のページ２０６を示す。図示された実施形態では、これらのページ２０２、２０４、２０６の各々は、Ａ、Ｂ、Ｃ、およびＤでラベル付けされた４つの部分を含む。図示された実施形態では、部分の各々は、５２８バイトを所有する（ページの各々は２１１２バイトを保持する）。
【００１８】
図示された例では、（５１２バイトのセクタ２つに対応する）ホスト１００（図１）からの１０２４バイトのデータは、２つの５２８バイト“セクタ”としてブロック符号化される。１０５６バイトは次に、１５８４バイトの畳込み的に符号化されたデータを生成するために、２／３の符号率ｍ／ｎを用いて畳込み符号化される。一例では、符号化率ｍ／ｎの分母ｎの値は、用いられるメモリデバイスの数と同じである。一例では、符号化率ｍ／ｎは、ｎがｍ＋１と等しくなるように選択される。こうすることによって、符号化率ｍ／ｎは、比較的大きくなる。畳込み符号に対しては、符号化率ｍ／ｎは、符号化するデータビットの数ｍを符号化したあとのデータビットの数ｎで割ったものに対応する。比較的大きな符号化率はパンクチャリングすることによって畳込み的に符号化されたデータから生成され得る。たとえば、符号化率２／３を有する畳込み的に符号化されたデータは、符号化率１／２を有する畳込み的に符号化されたデータ（“オリジナルの畳込み的に符号化されたデータ”）からオリジナルの畳込み的に符号化されたデータの４ビット毎に一つを、パンクチャパターン（ｐｕｎｃｔｕｒｅ  ｐａｔｔｅｒｎ）に従ってパンクチャリングすること（または除去すること）によって生成され得る。パンクチャリングされた畳込み符号データの例は、後に、図５との関係で非常に詳細に記述されるだろう。他の適切な符号化率およびパンクチャパターンは、当業者であれば決定することはできるであろう。
【００１９】
ある実施形態では、２つのセクタに対応する畳込み的に符号化されたデータは３つのメモリデバイス１０６（図１）のページ２０２、２０４、２０６中に記憶される。図示されているように、畳込み的に符号化されたデータの５２８バイトはページ２０２の部分Ａ２１２に記憶され、畳込み的に符号化されたデータの別の５２８バイトはページ２０４の部分Ａ２１４に記憶され、畳込み的に符号化されたデータの残りの５２８バイトはページ２０６の部分Ａ２１６に記憶される。複数のメモリデバイス１０６への符号化されたデータの分配は、どれか１つのメモリデバイス中でのエラーに対するデータの脆弱性を減少させる。
【００２０】
図３は、メモリデバイスのページの有効的により大きな部分（たとえば、セクタ群）中への１５８４バイトの畳込みに符号化されたデータの記憶を示している。たとえば、その部分は、符号化率ｍ／ｎの逆数ｎ／ｍだけサイズが増えていても良い。図３は、３つのメモリデバイス１０６（図１）の各々の一ページのデータを示している。たとえば、（図２に関連して議論した実施形態の場合のように）５２８バイトである部分を用いる代わりに、図示されているページ３０２、３０４、３０６の部分の少なくとも幾つかは５２８バイトより大きい。図示されている例では、２／３の符号化率ｍ／ｎは同じままであり、ホスト１００（図１）は再び、ファイルシステムが２つの５１２バイトのデータのセクタであるとみなすものを書き込んでいるが、それは、ブロック符号化の後には、各々は５２８バイトのデータに対応し、そして符号化率ｍ／ｎが２／３での畳込み符号化の後には、各々は７９２バイトのデータに対応する。
【００２１】
図３に示されている実施形態では、部分サイズは、図２の実施形態に関連して議論した部分サイズと比較して大きくなっており、符号化されたデータを記憶するために用いられる部分の数は、（ファイルシステムの視点からは）オリジナルのデータの“セクタ”の数と同一のままである。たとえば、図２中に示されているように３つの５２８バイト部分を用いる代わりに、図３中の畳込み的に符号化されたデータは、２つの７２９バイト部分に記憶される。図示されているように、畳込み的に符号化されたデータは、メモリデバイスの１つのページ３０２の２つの部分３１０、３１２中に記憶される。セクタ３１０、３１２は、５２８バイト部分よりさらに大きい、たとえば、７２８バイトであり、ホスト１００（図１）の視点からのセクタの数と、メモリデバイス１０６のすべての視点からの部分の数は、同一のままである。幾つかのセクタに対応するデータは、各々がメモリデバイス１０６の異なるデバイスからの２つのページに分配されても良い。たとえば、ファイルシステムがセクタＣだとみなすものに対応するデータは、部分Ｃ０およびＣ１として示されているメモリ＿０のページ３０２およびメモリ＿１のページ３０４に分配されても良い。図３中に示されているような遣り方でデータを記憶することの一つの利点は、書き込みを一度に一つのメモリデバイス１０６に限ることができるので、メモリデバイスのデータバスは、より小さい幅を有すれば良いことである。しかしながら、図２中に示されている構成は、もし図２のメモリデバイスの構成が並列データ伝送のためにより広いデータバスを用いて設定されているならば、一般的にはより高速なものであろう。
【００２２】
図４は、メモリコントローラ１１６（図１）のさらなる詳細と共に例を概略的に示している。図示されている実施形態では、メモリコントローラ１１６は、ＮＡＮＤフラッシュメモリデバイス１０６（図１）とインターフェイスを取るように構成されている。メモリコントローラ１１６は、ハードウェアによってもしくはファームウェア／ソフトウェアによって、またはハードウェアとファームウェアの両方の組み合わせによって実装され得る。メモリコントローラ１１６は、ＣＰＵ１０２（図１）によって実行されるソフトウェアまたはファームウェアの部分のような、ホスト１００の一部であっても良いし、直接メモリアクセス（ＤＭＡ）コントローラのような、別個のチップの部分であっても良く、複数のメモリデバイスを有するモジュールの部分等であっても良い。
【００２３】
メモリコントローラ１１６は、第１のバッファ４０２、第２のバッファ４０４、制御ロジック４０６、畳込み符号エンコーダ４０８、および畳込み符号デコーダ４１０を含んでいる。誤り訂正符号モジュール４１２およびブランク（空白）セクタバイパスモジュール４１４もまた使用され得る。インターフェイスの容易さのために、メモリコントローラ１１６は、畳込み符号デバイスおよび固体メモリデバイスがホスト１００に対して透明となるような従来の方法で、メモリコントローラ１１６およびメモリデバイス１０６がデータを記憶する外観（ａｐｐｅａｒａｎｃｅ）を、ホスト１００に提供して良い。たとえば、２／３の符号化率および３つのメモリデバイス１０６を用いて、メモリコントローラ１１６は、ホスト１００に、ホスト１００が従来のハードディスクドライブと通信している外観を提供しても良い。このことは、多くのシステムと互換性を持つことを可能とする。
【００２４】
これらのシステムは、Ｗｉｎｄｏｗｓ（登録商標）またはＤＯＳなどのオペレーティングシステム、ＵＳＢインターフェイス、メモリカードなどを有するコンピュータシステムを含むことが可能である。ハードディスクドライブを模擬する、ホスト１００のためのインターフェイスを備えることは、メモリコントローラ１１６にとって望ましいことがある。ある実施形態では、ハードディスクドライブを模擬するよりむしろ、メモリコントローラ１１６は、メモリアドレッシングを介して、メモリデバイス１０６へのアクセスを提供する。
【００２５】
たとえば、ファイルを、オペレーティングシステムを動作する処理環境の中に保存するとき、データを記憶するために用いられるデータのページの数は、データそのもののサイズよりむしろ、ディスクストレージ中にデータを保持するための用いられるクラスタの数に関連しても良い。したがって、ホスト１００によって開始された書き込みがメモリデバイスのページの一部しかわたらないとき、メモリコントローラ１１６は、部分ページ書き込みを実行することができる。たとえば、典型的なＮＡＮＤフラッシュデバイスでは、メモリビットは論理“１”状態で“消去（erased）”である。プログラミングの間、選択されたビットは、論理“０”状態に書き込まれる（ビットは、ブロック全体に対する消去動作を介して以外には論理“１”状態には書き込まれ得ない）。書き込まれることが意図されていないページの部分（たとえば、メモリアレイの列の部分）は、消去されたまま、または、以前のプログラミングのままであり、それらの部分の以前の状態を維持する。
【００２６】
これを実行するために、１つ以上の実施形態では、第１のバッファ４０２は、ホスト１００とやり取りする転送用のデータを一時的に記憶する。第１のバッファ４０２は典型的には、ハードウェアで実装される。ファイルシステム１０８（図１）は、クラスタ中の読み出しまたは書き込み用のデータにアクセスし得る。クラスタサイズは変化しても良いし、オペレーティングシステムによってはエンドユーザによって設定可能であっても良い。メモリデバイス１０６は、ページ中のデータへのアクセスを提供する。ページサイズは、異なるタイプのデバイス間で変わるが、典型的にはユーザ設定はできない。
【００２７】
図示されている実施形態では、ホスト１００は、一度に２つの５１２バイトセクタからなるクラスタの読み出しまたは書き込みをする。したがって、第１のバッファ４０２は、サイズが少なくとも１０２４バイトである。しかしながら、クラスタサイズは変化し得る。セクタサイズもまた変化し得る。たとえば、ブロックＥＣＣデータおよび他のスペアデータを含んでいる、ファイルシステムから見たデータのセクタは、５２８バイトに対応しても良い。ＥＣＣデータの量もまた変化し得る。加えて、追加のメモリデバイス１０６が構成によっては存在しても良いし、計算結果を保持するためのバッファもまた存在しても良いし、入力および出力のための別個のバッファを用いても良い。したがって、第１のバッファ４０２のサイズは変化し得るし、特定のタスクのために必要とされるサイズより大きくても良い。
【００２８】
各々が４セクタからなるページサイズを有する３つのメモリデバイス１０６とインターフェイスを取り、２／３の符号化率を用いる実施形態を備えるメモリコントローラ１１６のために、メモリコントローラ１１６は、ホスト１００がハードディスクストレージの８つのセクタとインターフェイスを取っている外観を、ホスト１００に提供しも良い。この例では、第１のバッファ４０２は少なくとも８つのセクタ（たとえば、４２２４バイト）を保持する。他の例は、当業者であれば決定することはできるであろう。
【００２９】
第２のバッファ４０４は、メモリデバイス１０６とやり取りする転送用のデータを一時的に記憶する。第２のバッファ４０４は、典型的にはハードウェアで実装される。図示されている例では、メモリデバイス１０６の各々は、各々５２８バイトの４つの部分を有するページを含む。第２のバッファ４０４は、メモリデバイス１０６にデータを提供するまたはメモリデバイス１０６からデータを受け入れるために、サイズが少なくとも６３３６バイトであるべきである。第２のバッファ４０４のサイズは、読み出しおよび書き込みのために別個のバッファが用いられるか、メモリデバイス１０６のページのサイズ、メモリデバイス１０６の数などによって変化しても良い。
【００３０】
制御ロジック４０６はメモリコントローラの全般的な制御を提供し、ホスト１００とメモリデバイス１０６との間のアドレス線に対するインターフェイスを提供し、ホスト１００および／またはメモリデバイス１０６に対する制御信号を与える、などをする。ある実施形態では、制御ロジック４０６はまた、畳込み符号エンコーダ４０８、畳込み符号デコーダ４１０、ＥＣＣモジュール４１２のブロック符号化、およびブランクセクタバイパスモジュール４１４の動作を制御することが可能である。制御ロジック４０６は、ハードウェア、ソフトウェア、またはハードウェアおよびソフトウェアの両方の組み合わせによって実装され得る。
【００３１】
畳込み符号エンコーダ４０８は第１のバッファ４０２からデータを取り出し、そのデータを畳込み的に符号化（エンコード）する。畳込み的に符号化されたデータは次に、第２のバッファ４０４中に記憶される。畳込み符号エンコーダ４０８は、ハードウェアによって、ソフトウェアによってのいずれか、またはハードウェアおよびソフトウェアの両方によって実装され得る。ある実施形態では、畳込み符号エンコーダ４０８は、選択可能な符号化率ｍ／ｎおよび選択可能なパンクチャパターンを有する。このことは、メモリデバイス１０６の数の比較的幅広い範囲に対して、適当なデータを畳込み的に符号化する柔軟性を与える。たとえば、ある実施形態では、ｎ個のメモリデバイスがあり、符号化率はｍがn＋１に等しいように選択される。第２のバッファ４０４に記憶されている畳込み的に符号化されたデータは次に、メモリデバイス１０６に記憶される。たとえば、制御ロジック４０６は、データ転送のためのアドレッシング信号および制御信号を与えることができる。ホスト１００がデータの読み出しをリクエストすると、対応する畳込み的に符号化されたデータはメモリデバイス１０６から選択され、第２のバッファ４０４に記憶される。
【００３２】
畳込み符号デコーダ４１０は、第２のバッファ４０４に記憶されている畳込み的に符号化されたデータを復号化（デコード）する。復号化されたデータは第１のバッファ４０２に記憶される。ある実施形態では、畳込み符号デコーダ４１０は、ビタビデコーダである。畳込み符号デコーダ４１０はまた、パンクチャリングされた（除去された）ビットを補償するために適宜、“ダミー”データを挿入する、または削除ポインタを使用する挿入回路を含んでいても良い。ある実施形態では、畳込み符号デコーダ４１０がダミーデータまたは削除ポインタに出会うと、畳込み符号デコーダ４１０は復号化についてそのデータを信頼しない。
【００３３】
図示されている実施形態の誤り訂正符号（ＥＣＣ）モジュール４１２およびブランクセクタバイパスモジュール４１４をこれから記述する。ECCモジュール４１２は、記憶されるデータの前方誤り訂正（ＦＥＣ)符号データのためのような、ブロック符号データを生成する。ブロック符号データを有するオリジナルデータは、今後は“ブロック符号化データ”として参照されよう。ＥＣＣモジュール４１２は、ハードウェアもしくはソフトウェアのいずれかによって、または両方の組み合わせによって実装され得る。たとえば、ブロック符号化は、マイクロプロセッサによって実行され得るタスクである。ホスト１００からメモリデバイス１０６にデータを書き込むためには、ＥＣＣモジュール４１２は、第１のバッファ４０２中のデータを読み出し、ブロック符号を計算し、ブロック符号化データを第１のバッファ４０２に記憶する。ブロック符号化されたデータは次に、畳込み的に符号化され、メモリデバイス１０６に記憶される。ＥＣＣモジュール４１２によるブロック符号化は、後にデータが検索されるときに、誤りが検出され、（誤り訂正符号の限界内で）誤りが訂正されることを可能にする。
【００３４】
フラッシュメモリを組み込んでいる従来のシステムでは、部分ページ書き込みが用意されていることがある。典型的なフラッシュメモリ（ＮＡＮＤまたはＮＯＲ）において、データは論理“１”に消去され、適宜、書き込みサイクル中に論理“０”に選択的に書き込まれる。ページのブランク（空白）部分、たとえば全て論理“１”の部分、に対する典型的な誤り訂正符号データはまた、全て論理“１”であり、ページのプログラムされていない消去状態またはページに対する他の予備のデータを上書きしない。しかしながら、畳込み符号化の後は、以前は全て論理“１”であったブランクデータは、様々な論理“０”または“１”状態として符号化されるだろうし、ページのプログラミングされていない消去状態を上書きするだろう。よって、畳込み的に符号化されたデータのプログラミングは消去状態を上書きするであろう。ある実施形態では、メモリコントローラ１１６は、プログラムされていないままにすべきページの部分を検知し、これらの部分に対する畳込み符号化をパイパスする（回避する）。このことは、たとえば、第１のバッファ４０２の中身のセクタサイズおよび検査によって決定され得る。
【００３５】
図示されている実施形態では、ブランクセクタバイパスモジュール４１４は、ブランクセクタを検知し、畳込み符号化または復号化をスキップする。ブランクセクタバイパスモジュール４１４は、ハードウェアによって、ソフトウェアによって、または両方の組み合わせによって実装され得る。部分ページ書き込みが１つ以上のメモリデバイス１０６上で実行されているときに、プログラミングされていないページ（群）の部分は、消去状態、たとえば論理“１”状態のままに留まるだろう。たとえば、１バイトのデータに対して、そのビットに対して全て論理“１”とは、二進表記で“１１１１１１１１”、または十六進表記で“ＦＦ”である。したがって、ブランクセクタバイパスモジュール４１４は、将来にページの残りの部分をプログラミングする能力を保持するために、適切に論理“１”状態を第２のバッファ４０４に書き込み、引き続き、論理“１”のフラッシュデバイスへの“書き込み”（実際の書き込みは起こらない）は、ページの中身が論理“１”で消去されても、“０”にプログラミングされても、以前の状態を保持するだろう。メモリデバイスに対するキャッシュまたはページレジスタはまた、第２のバッファ４０４を使用しないメモリ書き込みを用いて論理“１”で満たされていても良い。ブランクセクタバイパスモジュール４１４はまた、以前にプログラミングされたデータを上書きすることを妨げてもよい。たとえば、図２を参照すると、もしＢ、Ｃ、およびＤでラベル付けされた部分に書き込まれるデータがないならば、第２のバッファ４０４は、それらの部分の以前に消去された状態またはプログラミングされた状態を維持するために、論理“１”で満たされても良い。
【００３６】
データがメモリデバイス１０６から読み出されているとき、ブランクセクタバイパスモジュール４１４は同様に、メモリデバイス１０６のページの１つ以上のブランク部分の存在を検知し、ページのこれらの部分に対する畳込み符号復号化をバイパスする。ある実施形態では、ブランクセクタバイパスモジュール４１４は、フォーマッティング、たとえば、部分へのデータの割り当てによって、および第２のバッファ４０４の対応するメモリ空間中の全て“１”の存在によって、ある部分がブランクであることを決定する。ブランクセクタバイパスモジュール４１４は次に、たとえば、全て“１”を第１のバッファ４０２の対応する部分中に書き込む。もちろん、バッファ４０２、４０４はまた、最初に全て“１”で書き込まれ得て、次に、メモリデバイス１０６（図１）に転送される前に畳込み的に符号化されたデータで適切に上書きされるか、またはホスト１００（図１）によって取り出される前に復号化された畳込み符号データを用いて上書きされても良い。
【００３７】
図５は、２／３の符号化率を有する畳込み的に符号化されたデータを生成するために、初期には１／２の符号化率を有する畳込み的に符号化されたデータをパンクチャリングするデータの流れを概略的に示している。たとえば、図４を参照すると、データの流れは、第１のバッファ４０２から、畳込み符号エンコーダ４０８、第２のバッファ４０４を介して、メモリデバイス１０６に記憶され、次に引き続いてメモリデバイス１０６から取り出され、第２のバッファ４０４、畳込み符号デコーダ４１０、そして第１のバッファ４０２に至る経路に対応し得る。
【００３８】
データストリームｘ０、ｘ１、ｘ２、ｘ３、．．．はパンクチャリングすることなく、２つの出力データ、たとえば、（ビット）ストリームｙ００、ｙ１０、ｙ２０、ｙ３０、．．．およびｙ０１、ｙ１１、ｙ２１、ｙ３１、．．．を生成するために、図示されている畳込み符号化がなされ、次にｙ００、ｙ１０、ｙ２０、ｙ３０、．．．およびｙ０１、ｙ２１、．．．にパンクチャされ、次にメモリデバイス１０６中に記憶される。
【００３９】
データ読み出しに対しては、パンクチャリングされたデータｙ００、ｙ１０、ｙ２０、ｙ３０、．．．およびｙ０１、ｙ２１、．．．が、メモリデバイス１０６から取り出される。（ダッシュで表される）削除ポインタは、デコーダに対して削除箇所を示し、示された削除箇所を有するパンクチャリングされたデータｙ００、ｙ１０、ｙ２０、ｙ３０、．．．およびｙ０１、−、ｙ２１、−、．．．は、オリジナルのデータストリームｘ０、ｘ１、ｘ２、ｘ３、．．．に復号化して戻るように、畳込み符号デコーダ４１０によって復号化される。前方誤り訂正の冗長性は、削除箇所があったとしても、および誤り箇所があったとしても、オリジナルのデータストリームの正しい復号化を与える。さらに、誤り訂正は、ブロック誤り訂正符号による復号化によって与えられ得る。
【００４０】
図６は、データを不揮発性集積化回路メモリデバイスに書き込む処理の実施形態を全般的に示すフローチャートである。たとえば、処理はマイクロプロセッサまたはコントローラによって実行され得る。当業者には、図示された処理は様々方法で変形され得ることが認識されるだろう。たとえば、別の実施形態では、図示された処理の様々な部分が組み合わされても良いし、別の順序に再配列されても良いし、除かれても良いし、といった具合である。図６中に図示されている処理は、データを、図２中に示されている形式で、たとえば、複数のメモリデバイスに記憶されたデータが分配されるように、データを記憶するために用いられても良い。処理の開始において、データは既にホスト１００（図１または図４）によって第１のバッファ４０２（図４）にロードされており、データはブロック符号化されていると仮定する。
【００４１】
処理はデータ（たとえば、ブロック符号化されたオリジナルデータ）の畳込み符号化６１０によって始まる。たとえば、データ（たとえば、ブロック符号化されたデータ）は、比較的低い符号化率を有する畳込み符号化されたデータを生成するために畳込み的に符号化され得るし、比較的高い符号化率を有する畳込み的に符号化されたデータは低い率の重畳込みに符号化されたデータから図５に関連して以前に示したようなパンクチャリングによって生成され得る。
【００４２】
ある実施形態では、（パンクチャリングされているまたはされていない）畳込み的に符号化されたデータを分配するために、第２のバッファ４０４中に記憶されたときに、畳込み的に符号化されたデータが少なくとも２つの部分に、たとえば、少なくとも２つの異なるメモリデバイス１０６（図１または４）の各々のページのある部分に、交互配置の方式で記憶されるように畳込み的に符号化されたデータは配列される６２０。別の実施形態では、畳込み的に符号化されたデータは、それが第２のバッファ４０４からメモリデバイス１０６の対応するページバッファにコピーされるときに配列される６２０。畳込み的に符号化されたデータは、記憶されたときに、第１のメモリデバイスのページの部分、第２のメモリデバイスのページの部分等に書き込まれるように配列されることも可能である。ある実施形態では、デバイスの間のストレージは、デバイスにわたって記憶されるデータを交互に分配する。たとえば、図２に示されているように、畳込み的に符号化されたデータは３つの異なるメモリデバイスの部分２１２、２１４、２１６中に記憶される。
【００４３】
処理は次に進み、メモリデバイス１０６（図１または４）中に畳込み的に符号化されたデータを記憶する６３０。たとえば、データはメモリデバイス１０６内のキャッシュまたはバッファに転送されても良く、次にロードされたページを記憶するための命令がメモリデバイス１０６に送られても良い。部分ページ書き込みが実行されるとき、書き込みがされていないページの部分は、消去状態、たとえば典型的なフラッシュデバイスに対しては、論理“１”と同じ状態のままであろう。
【００４４】
ある実施形態では、符号化率ｍ／ｎを有する畳込み符号化は、メモリデバイス１０６（図１または４）の数に基づいて選択される。たとえば、メモリデバイス１０６の数は、畳込み符号のｎを決定するために用いられても良い。ある実施形態では、畳込み符号のｎは、メモリデバイスの数と等しくなるように選択される。次に、同一サイズのセクタに対して、ブロック符号化されたデータのｍ個のセクタは畳込み的に符号化され、ｎ個のメモリデバイスに記憶される。もちろん、ブロック符号化されたデータのｍ個のセクタの倍数、たとえば２ｍ個のセクタを使って、メモリデバイスあたりページの１つの部分より多くを、畳込み的に符号化されたデータを記憶するために用いることも可能である。ある実施形態では、符号化率のｍは、有効的に高い符号化率とするために、ｎ＋１に等しい。ある実施形態では、ｍはファイルシステムのクラスタ中の複数のセクタに対応する。
【００４５】
図７は、不揮発性集積回路メモリデバイスからデータを読み出すための処理の実施形態を全般的に示すフローチャートである。当業者には、図示された処理は様々な仕方で変形し得ることは認識されよう。たとえば、別の実施形態では、図示された処理の様々な部分は組み合わせ得るし、代替のシーケンスに再配列され得るし、取り除かれ得るし、といった具合である。図６に図示された処理は、図２に示されているように編成されたデータを読み出すことに用いることが可能である。処理の開始において、畳込み的に符号化されたデータは取り出しのために、複数のメモリデバイス１０６（図１または４）中に記憶されても良い。
【００４６】
処理は、ホスト１００（図１または４）からデータに対するリクエスト７１０を受け取ることによって始まる。たとえば、デバイスドライバ１１０（図１）は、データの１つ以上の“セクタ”をリクエストすることができる。処理は２つ以上のメモリデバイス１０６（図１または４）から畳込み的に符号化されたデータの１つ以上の対応するページを取り出す７２０。たとえば、畳込み的に符号化されたデータのページは、次に第２のバッファ４０４（図４）中に記憶され得る。
【００４７】
処理は次に、畳込み的に符号化されたデータを逆畳込みする７３０。畳込み的に符号化されたデータは第２のバッファ４０４、またはメモリデバイス１０６のいずれかから、逆畳込み化（デコンボリューヴィング）としても知られる復号化のために読み出される。逆畳込み化７３０は、以前にパンクチャリングされたデータを置き換えるためもしくは補償するために、“ダミー”データまたは削除ポインタの挿入を含んでも良く、ビタビアルゴリズムに従って実行されても良い。逆畳込み化のためには、畳込み的に符号化されたデータは、畳込み的に符号化されたデータのオリジナルの順序を修復するために、第２のバッファ４０４またはメモリデバイス１０６の読み出しデータの通常の順序から再配列される。たとえば、もし畳込み的に符号化されたデータが３つの異なるメモリデバイスの各々のあるページに分配されるならば、各メモリデバイスのページデータをページ毎に配列するよりむしろ、畳込み的に符号化されたデータは、データをもともと書き込まれた順序に戻すように配列することによって再構成される。さらに、ブロック復号化が誤りの検知および／または訂正のために用いられることが可能である。
【００４８】
ある実施形態は、複数の不揮発性集積回路メモリデバイス中にデータを記憶する方法であって、方法は、データを畳込み的に符号化すること、および畳込み的に符号化されたデータは少なくとも２つの不揮発性集積回路メモリデバイスに交互配置に分配されるように、畳込み的に符号化されたデータを記憶すること、を含む。
【００４９】
ある実施形態は、複数の不揮発性集積回路メモリデバイスからデータを読み出す方法であって、方法は、畳込み的に符号化されたデータが少なくとも２つの不揮発性集積回路メモリデバイスに分配されており、その少なくとも２つの不揮発性集積回路メモリデバイスから畳込み的に符号化されたデータを取り出すこと、およびメモリデバイスから取り出された重畳的に符号化されたデータを逆畳込み化することであって、逆畳込み化することは、畳込み符号化されたデータのオリジナルの順序に戻すように、畳込み符号化されたデータを再配列することを含む。
【００５０】
ある実施形態は、複数の不揮発性集積回路メモリデバイス中にデータを記憶する方法であって、方法は、データのｍ個の第１のサイズの部分を、符号化率ｍ／ｎを用いて、ｍ個の畳込み符号の第２のサイズの部分に畳込み符号化することであって、第２のサイズの部分は、第１のサイズのセクタよりｎ／ｍ倍大きく、ｍ個の第１のサイズの部分の少なくとも１つは、ブランクデータとは対照的な実データを含むこと、およびｍ個の畳込み符号の第２のサイズの部分をｎ個の不揮発性集積回路メモリデバイス中に記憶することであって、ｍ個の不揮発性集積回路メモリデバイスはｍ個の第１のサイズの部分を記憶するように構成され、ｎは少なくとも２であることを含む。
【００５１】
ある実施形態は、複数の不揮発性集積回路メモリデバイスのデータにアクセスする方法であって、方法は、ホストからデータに対するリクエストを受け取ること、２つ以上の不揮発性集積回路メモリデバイスの少なくとも１つから１つ以上の関連するセクタのデータを検索することであって、１つ以上の関連するセクタは、第１のセクタサイズのものであること、及び、リクエストされたページの少なくとも部分に関する情報の１つ以上のセクタを生成するために、１つ以上の関連するセクタの少なくとも一部分を逆畳込み化することであって、生成された情報の１つ以上のセクタは、逆畳込み化される畳込み符号の符号化率だけ第１のセクタサイズより小さい第２のセクタサイズのものであり、生成された情報のデータセクタは、不揮発性集積回路メモリデバイスから、次々に、ページを逆畳込み化するために読み出されること、を含む。
【００５２】
ある実施形態は、装置であって、装置は、第１のバッファ、第２のバッファ、ホストおよび複数の不揮発性集積回路メモリデバイスの間のインターフェイスをとり、データは不揮発性集積回路メモリデバイスにわたって交互配置で分配されるように、第２のバッファから不揮発性集積回路メモリデバイスへのデータの記憶を制御するように構成される制御ロジック、第１のバッファ中に記憶されたデータを符号化し、符号化されたデータを、不揮発性集積回路メモリデバイスへ転送するために第２のバッファに記憶するように構成される畳込み符号エンコーダ、および不揮発性集積回路メモリデバイスから取り出された第２のバッファ中に記憶されているデータを復号し、復号されたデータを第１のバッファに記憶するように構成される畳込み符号デコータ、を含む。
【００５３】
様々な実施形態を上述してきた。これらの特定の実施形態を参照して記述してきたが、記述は例示することが意図されており、限定することは意図されていない。様々な変形および応用が当業者には思い付くことであろう。
【図１】
0005522480.tif 000002
【図２】
0005522480.tif 000003
【図３】
0005522480.tif 000004
【図４】
0005522480.tif 000005
【図５】
0005522480.tif 000006
【図６】
0005522480.tif 000007
【図７】
0005522480.tif 000008