(57)【特許請求の範囲】
【請求項１】
メモリからデータを検索するためのシステムであって、
メモリと通信するデコーダであって、
前記メモリにおけるページ上に記憶されたコードワードを受信することであって、前記コードワードが、データおよび前記データに応じて発生された第１の層のチェック・シンボルを含む、前記受信することと、
前記コードワードが、前記第１の層のチェック・シンボルを用いて訂正することができないエラーを含むと判定することと、
前記判定に応じて、
第２の層のチェック・シンボルを受信することであって、前記第２の層のチェック・シンボルが、前記データに応じて、更に前記コードワードを含む前記ページよりも前に書き込まれた前記メモリにおける他のページの内容に応じて発生される、前記受信することと、
前記第２の層のチェック・シンボルに応じて前記コードワードを訂正することと、
前記訂正したコードワードを出力することと
を含む方法を実行するための前記デコーダ
を備えている、前記システム。
【請求項２】
前記コードワードを訂正することが更に統計的エラー・モデルに応じて行われる、請求項１に記載のシステム。
【請求項３】
前記統計的エラー・モデルが前記判定に応じて変更される、請求項２に記載のシステム。
【請求項４】
前記コードワードを訂正することが更に各セルごとの集合エラー重みベクトルに応じて行われ、前記ベクトルが、前記セルについてのビット・ライン・ディスターバンス・エラー重みベクトル、前記セルについての浮動ゲート結合エラー重みベクトル、および前記セルについての多数のページ・プログラムから導出されたエラー重みベクトルの少なくとも１つから計算される、請求項１に記載のシステム。
【請求項５】
前記セルについて前記エラー重みベクトルを計算することが更に、前記セルの指定された近隣領域内のセルの内容に応じて行われる、請求項４に記載のシステム。
【請求項６】
前記統計的エラー・モデルが、前記コードワードおよび前記第２の層のチェック・シンボルを用いて前記コードワードを訂正するためにメッセージ伝達アルゴリズムによって用いられる、請求項２に記載のシステム。
【請求項７】
前記メモリがマルチ・レベル・セル（ＭＬＣ）ＮＡＮＤフラッシュ・メモリであり、前記コードワードの前記訂正が更に、２次元データ・パターンに対応したエラー重みを含むルックアップ・テーブル・セットに応じて行われる、請求項１に記載のシステム。
【請求項８】
前記方法が、
前記コードワードが、前記第１の層のチェック・シンボルを用いて訂正することができないエラーを含まないと判定し、これに応じて、前記コードワードおよび前記第１の層のチェック・シンボルに応じて前記コードワードを訂正すること
を更に含む、請求項１に記載のシステム。
【請求項９】
前記第２の層のチェック・シンボルの少なくとも１つのサブセットが第２のメモリに記憶されている、請求項１に記載のシステム。
【請求項１０】
メモリからデータを検索するための、コンピュータにより実施される方法であって、コンピュータが、
前記メモリにおけるページ上に記憶されたコードワードを受信するステップであって、前記コードワードが、データおよび前記データに応じて発生された第１の層のチェック・シンボルを含む、前記受信するステップと、
前記コードワードが、前記第１の層のチェック・シンボルを用いて訂正することができないエラーを含むと判定するステップと、
前記判定に応じて、
第２の層のチェック・シンボルを受信するステップであって、前記第２の層のチェック・シンボルが、前記データに応じて、更に前記コードワードを含む前記ページよりも前に書き込まれた前記メモリにおける他のページの内容に応じて発生される、当該受信するステップと、
前記第２の層のチェック・シンボルに応じて前記コードワードを訂正するステップと、
前記訂正したコードワードを出力するステップと
を実行することを含む、前記方法。
【請求項１１】
前記メモリがマルチ・レベル・セル（ＭＬＣ）ＮＡＮＤフラッシュ・メモリであり、前記コードワードの前記訂正が更に、２次元データ・パターンに対応したエラー重みを含むルックアップ・テーブル・セットに応じて行われる、請求項１０に記載の方法。
【請求項１２】
前記コンピュータが、
前記コードワードが前記第１の層のチェック・シンボルを用いて訂正することができないエラーを含まないと判定し、これに応じて、前記コードワードおよび前記第１の層のチェック・シンボルに応じて前記コードワードを訂正するステップを実行することをさらに含む、請求項１０に記載の方法。
【請求項１３】
メモリからデータを検索するためのコンピュータ・プログラムであって、コンピュータに、請求項１０〜１２のいずれか一項に記載の方法の各ステップを実行させる前記コンピュータ・プログラム。
【請求項１４】
システムであって、
メモリおよびエラー訂正キャッシュと通信するエンコーダであって、
データおよび前記メモリにおけるページの書き込みアドレスを受信することであって、前記メモリが前記ページおよび以前に書き込んだページを含む、当該受信することと、
データに応じて第１の層のチェック・シンボルを発生することと、
前記データおよび前記以前に書き込んだページの少なくとも１つの内容に応じて第２の層のチェック・シンボルを発生することと、
前記第１の層のチェック・シンボルおよび前記データをコードワードとして前記ページに記憶することと、
前記データおよび前記第２の層のチェック・シンボルを前記エラー訂正キャッシュに記憶することと
を含む方法を実行するための前記エンコーダを備えている、前記システム。
【請求項１５】
前記メモリおよび前記エラー訂正キャッシュと通信するデコーダであって、
前記コードワードおよび前記第２の層のチェック・シンボルを受信することと、
前記コードワードが、前記第１の層のチェック・シンボルを用いて訂正することができないエラーを含むと判定することと、
前記第２の層のチェック・シンボルに応じて前記コードワードを訂正することと
を含む方法を実行するための前記デコーダを更に備えている、請求項１４に記載のシステム。
【請求項１６】
前記第２の層のチェック・シンボルを発生させることが更に低密度パリティ・チェック（ＬＤＰＣ）・コードに応じて行われる、請求項１４に記載のシステム。
【請求項１７】
前記第２の層のチェック・シンボルを発生させることが、プログラム可能な数の以前に書き込んだページの内容に応じて行われる、請求項１４に記載のシステム。
【請求項１８】
前記メモリがＮＡＮＤフラッシュ・メモリであり、前記第２の層のチェック・シンボルを発生させることが、現在書き込んでいるページと同じブロック内のプログラム可能な数の以前に書き込んだページに応じて行われ、これらの以前に書き込んだページからのデータが前記エラー訂正キャッシュに記憶されている、請求項１４に記載のシステム。
【請求項１９】
以前に書き込んだページの使用数が、メモリ・ブロックをプログラムした回数、前記メモリ・ブロックのシンボル・エラー・レート、および前記メモリの統計的エラー・モデルの少なくとも１つに応じて変更される、請求項１４に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にコンピュータ・メモリに関し、更に具体的にはＮＡＮＤ（not-and）フラッシュ・メモリにおける確率論的多層エラー訂正に関する。
【背景技術】
【０００２】
ＰＣＭ（phasechange memory：相変化メモリ）およびフラッシュ・メモリは、耐久性が限られた（「寿命が限られた」とも言う）不揮発性メモリの一例である。かかるメモリは、多数の書き込みサイクル（ＰＣＭではリセット・サイクル、フラッシュ・メモリではプログラム／消去サイクル）を経た後にメモリ・セルが摩耗して信頼性高く情報を記憶することができなくなるという意味で、耐久性が限られている。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
ＮＡＮＤフラッシュ・メモリは、消費者向けおよび企業向けの双方の用途で不揮発性記憶媒体としてますます用いられるようになっている。最新のＮＡＮＤフラッシュ・メモリ・デバイスの１つの特徴は、強いデータ依存性およびデバイス依存性のエラー・モードを示すと共に、多くの場合セル間依存性を示すことである。周囲のセルのプログラミングおよび電荷レベルが、隣接セルで生じるエラー状況に対して直接的な影響を及ぼす場合がある。
【０００４】
また、ＮＡＮＤメモリでは、プログラミング段階の間に保持エラーのために引き起こされるランダム・エラーが生じやすい場合がある。典型的なエラー作用には、背景パターン依存（ＢＰＤ：background pattern dependency）エラー、ビット・ライン・ディスターバンス（ＢＬＤ：bit-line disturbance）・エラー、ページおよびプログラム・ディスターバンス（ＰＧＭ：page and program disturbance）・エラー、および浮動ゲート結合（ＦＧＣ：floating gate coupling）エラーが含まれる。これらのタイプのエラー作用は、場合によっては、メモリ使用に制約を課すことによって軽減することができる。例えば、１メモリ・ブロックのみを順次書き込み可能と規定することによって、これらのエラーのいくつかを排除または軽減することができる。しかしながら、かかる制約は、書き込み待ち時間の延長、摩耗の増大、および書き込み増幅等の望ましくない副作用をもたらす場合がある。更に、異なるプログラム・レベルでは同一でないエラー遷移確率を有することがある。
【課題を解決するための手段】
【０００５】
一実施形態は、メモリからデータを検索するためのシステムである。このシステムは、メモリと通信するデコーダを含む。デコーダは、メモリにおけるページ上に記憶されたコードワードを受信することを含む方法を実行するためのものであり、コードワードは、データおよびこのデータに応じて発生された第１の層のチェック・シンボルを含む。この方法は更に、コードワードが第１の層のチェック・シンボルを用いて訂正することができないエラーを含むと判定することを含み、これに応じて第２の層のチェック・シンボルを受信する。第２の層のチェック・シンボルは、データの受信に応じて、更にコードワードを含むページよりも前に書き込まれたメモリにおける他のページの内容に応じて発生させる。第２の層のチェック・シンボルに応じてコードワードを訂正する。訂正したコードワードを出力する。
【０００６】
別の実施形態は、メモリからデータを検索するための、コンピュータにより実施される方法である。この方法は、メモリにおけるページ上に記憶されたコードワードを受信することを含み、コードワードは、データおよびこのデータに応じて発生された第１の層のチェック・シンボルを含む。この方法は更に、コードワードが第１の層のチェック・シンボルを用いて訂正することができないエラーを含むと判定することを含み、これに応じて第２の層のチェック・シンボルを受信する。第２の層のチェック・シンボルは、データに応じて、更にコードワードを含むページよりも前に書き込まれたメモリにおける他のページの内容に応じて発生させる。第２の層のチェック・シンボルに応じてコードワードを訂正する。訂正したコードワードを出力する。
【０００７】
別の実施形態は、メモリからデータを検索するためのコンピュータ・プログラムである。タンジブルな記憶媒体がこのコンピュータ・プログラムを含み、この記憶媒体は処理回路によって読み取り可能であり、方法を実行するために処理回路によって実行される命令を記憶する。この方法は、メモリにおけるページ上に記憶されたコードワードを受信することを含み、コードワードは、データおよびこのデータに応じて発生された第１の層のチェック・シンボルを含む。この方法は更に、コードワードが第１の層のチェック・シンボルを用いて訂正することができないエラーを含むと判定することを含み、この判定に応じて第２の層のチェック・シンボルを受信する。第２の層のチェック・シンボルは、データに応じて、更にコードワードを含むページよりも前に書き込まれたメモリにおける他のページの内容に応じて発生される。第２の層のチェック・シンボルに応じてコードワードを訂正する。訂正したコードワードを出力する。
【０００８】
更に別の実施形態は、メモリおよびエラー訂正キャッシュと通信するエンコーダを含むシステムである。エンコーダは、データおよびメモリにおけるページの書き込みアドレスを受信することを含む方法を実行するためのものである。メモリは、そのページおよび以前に書き込んだページを含む。データに応じて第１の層のチェック・シンボルを発生し、データおよび以前に書き込んだページの少なくとも１つの内容に応じて第２の層のチェック・シンボルを発生する。第１の層のチェック・シンボルおよびデータをコードワードとしてページに記憶する。データおよび第２の層のチェック・シンボルをエラー訂正キャッシュに記憶する。
【０００９】
本実施形態の技法によって、更に別の特徴および利点が実現される。本明細書において他の実施形態および態様が記載され、これらは特許請求する本発明の一部と見なされる。本発明をその利点および特徴と共により良く理解するために、以下の記載および図面を参照する。
【００１０】
本明細書の末尾における特許請求の範囲において、本発明と考えられる主題について特に指摘し明確に特許請求する。本発明の前述およびその他の特徴および利点は、添付図面と関連付けた以下の詳細な説明から明らかとなろう。
【図面の簡単な説明】
【００１１】
【図１】一実施形態に従った、メモリにおいてデータを記憶し検索するためのシステムのブロック図を示す。
【図２】一実施形態に従った、メモリにおいてデータを記憶し検索するためのシステムのブロック図を示す。
【図３】一実施形態によって実施可能であるＮＡＮＤフラッシュ・メモリのブロック図を示す。
【図４】一実施形態に従った、ＮＡＮＤフラッシュ・メモリおよび第２の層の符号化モジュールのブロック図を示す。
【図５】一実施形態に従った、第２の層のエラー訂正コード訂正計算機構を示す。
【図６】一実施形態に従った、ＮＡＮＤフラッシュ・メモリおよび第２の層の復号モジュールのブロック図を示す。
【図７】一実施形態に従った、マルチ・レベル・セル（ＭＬＣ）ＮＡＮＤフラッシュ・セルに４レベルの情報を記憶するために用いる閾値電圧を示す。
【図８】一実施形態に従った、ＭＬＣ  ＮＡＮＤフラッシュの２次元（２Ｄ）データ・パターンに対応した重みを含むルックアップ・テーブルを示す。
【図９】一実施形態に従った、第２の層のエラー訂正を用いた訂正エラーのためのプロセス・フローを示す。
【発明を実施するための形態】
【００１２】
一実施形態は、例えば時間履歴、周囲のビット・パターン、およびかかる周囲のビット・パターンと背景パターン依存（ＢＰＤ）エラー、ビット・ライン・ディスターバンス（ＢＬＤ）・エラー、ページおよびプログラム・ディスターバンス（ＰＧＭ）・エラー、浮動ゲート結合（ＦＧＣ）エラーとの間の関係に基づいて、異なるメモリ・セルについて異なるエラー重みを計算するエラー訂正技法を用いることにより、ＮＡＮＤフラッシュ・メモリの信頼性を向上させることを対象とする。
【００１３】
一実施形態が含む多層エラー訂正システムにおいては、後の層の復号プロセスは、所与のセルに記憶されたデータに対してメモリ・セル近隣領域の時間履歴および二次元（２Ｄ）データ／ビット・パターンが及ぼす影響についての統計的知識を利用する。従って、読み取りレベルおよび近隣ビット・パターンに基づいて、異なるメモリ・セル位置に異なるエラー重みを割り当てる。これらのエラー重みに取り入れられた概念とは、セル位置では多かれ少なかれ誘発エラーが生じる可能性があるというものであり、多かれ少なかれ、プログラムされた値および近隣セル位置に記憶された値に基づいて、ある一定のタイプの誘発エラーが生じる可能性があるというものである（この場合エラーのタイプはエラー発生前後のセルの値によって規定される）。
【００１４】
本明細書に記載する実施形態は、これまでの解決策よりも優れたいくつかの利点を提供する。第１に、実施形態は、一般的なエラー訂正コードを用いるのではなく特定のエラーの作用をモデル化し、これによって実施形態は信頼性を高める。第２に、実施形態はデバイス回路を変更する必要がないので、いかなるＮＡＮＤフラッシュ・デバイスであっても実際に容易に用いることができる。更に、実施形態は、回路レベルの改良のみによって可能であるよりもいっそう信頼性を高めるために、回路レベルの改良と組み合わせて用いることができる。更に、時間履歴を用いてエラー重みを更新することによって、本明細書に記載する実施形態は特定のＮＡＮＤデバイスの特徴に適合する。更に、実施形態は、従来のエラー・コードと共に用いて、従来のコードに障害が発生した場合にのみ呼び出すようにすることができる。これによって、読み取り待ち時間を過度に延長させずに実施形態を使用可能であることを保証する。
【００１５】
一実施形態では２層エラー訂正コード（ＥＣＣ）を用いる。一実施形態において、第１の層のＥＣＣは、代数ＥＣＣを含むアルゴリズムを用いて発生させ、そのパリティ・ビット／シンボルはフラッシュ・メモリのページ・スペア・エリアに記憶されている。第２の層のＥＣＣを発生させ、そのパリティ・ビット／シンボルは部分的にフラッシュ・メモリのページ・スペア・エリアに記憶され、部分的に別の不揮発性メモリ領域（例えばフラッシュ・メモリ、ハード・ディスク）等の二次メモリ構造に記憶されている。一実施形態では、第２の層のＥＣＣパリティ・シンボルを計算するために、前の数ページにおいてプログラムされアクセスのためにキャッシュされたデータを用いる第２の層のＥＣＣエンコーダと共に、ログベース・ファイル構造のフラッシュ・メモリ・デバイスを用いる。
【００１６】
本明細書において用いる場合、「ビット」という言葉は、従来０および１のセットからの２文字の値を取る二進数のことである。本明細書において用いる場合、「シンボル」という言葉は、ビットよりも大きい数の値を取ることができるものを指す。すなわち、可能性としては３つ以上の有限の文字の値を取るもののことである。このため、１つのシンボルは、文字（０、１、２、３）から可能な４つの値を取り得る。
【００１７】
一実施形態においては、復号の際、フラッシュ・メモリから読み取ったデータを最初に待ち時間の短い従来の第１の層のＥＣＣデコーダに入力する。第１の層のＥＣＣデコーダによってこのデータを訂正可能である場合は、訂正済みのデータを出力する。第１の層のＥＣＣデコーダによってこのデータを訂正することができない場合、これを第２の層のＥＣＣモジュールに入力し、第２の層のＥＣＣモジュールが２Ｄブロック・ビット・パターンを読み取ってこれを用いていっそう洗練されたエラー訂正分析を実行する。一実施形態では、これは、各セル位置がエラーを有する可能性がどの程度であるか、およびそのセル位置について各エラー・タイプの可能性がどの程度であるかに基づいて、様々なセル位置についてエラー重みベクトルを計算することを伴う。エラー重み値という言葉は、エラーを含まない、所与のタイプのエラーの可能性を示す従来の確率値を示す。重みまたは条件確率値は、重みまたは確率モデルに従って割り当てられ、これはエラー訂正モジュールが検出したエラーに基づいて更新される。
【００１８】
図１は、一実施形態に従った、メモリにおいてデータを記憶および検索するためのシステムのブロック図を示す。図１に示したシステム１００は、コンピュータ・プロセッサ１０２と、メモリ・セルを有するメモリ１０６と、メモリ１０６に記憶するデータをコンピュータ・プロセッサ１０２から受信するためのメモリ・コントローラ１０４と、を含む。一実施形態では、メモリ・セルはページ内に配列され、ページはブロック内に配列されている。このため、１ブロックは複数のページを含み、各ページは複数のメモリ・セルを含む。
【００１９】
一実施形態において、メモリ・コントローラ１０４は、コンピュータ・プロセッサ１０２と通信可能に結合され、コンピュータ・プロセッサ１０２から書き込み要求を受信する。書き込み要求は、メモリ１０６に書き込まれるデータと、データを書き込むメモリ１０６内の位置を識別するための論理アドレスと、を含む。メモリ・コントローラ１０４は、メモリ１０６内の物理アドレスにデータを記憶する。一実施形態では、メモリ・コントローラ１０４は、データを記憶または検索する場合、論理アドレスをメモリ１０６内の物理アドレスにマッピングする。メモリ１０６内のデータが修正されるたびに、所与の論理アドレスに対する物理アドレスを変更することができる。
【００２０】
システム１００は、本明細書に記載する処理を実行するために利用可能なコンフィギュレーションの一例である。システム１００は、単一のメモリ１０６、メモリ・コントローラ１０４、およびコンピュータ・プロセッサ１０２によって図示しているが、他の実施形態は、２つ以上のメモリ１０６、メモリ・コントローラ１０４、またはコンピュータ・プロセッサ１０２を有する他のシステムにおいても動作することは理解されよう。一実施形態では、メモリ１０６、メモリ・コントローラ１０４、およびコンピュータ・プロセッサ１０２は、同一のコンピュータ内に位置しない。例えば、メモリ１０６およびメモリ・コントローラ１０４は１つの物理位置（例えばメモリ・モジュール上）に位置することができ、コンピュータ・プロセッサ１０２は別の物理位置に位置する（例えばコンピュータ・プロセッサ１０２はネットワークを介してメモリ・コントローラ１０４にアクセスする）。更に、本明細書に記載した処理の部分は、１つ以上のメモリ１０６、メモリ・コントローラ１０４、およびコンピュータ・プロセッサ１０２にまたがる場合がある。
【００２１】
図２は、一実施形態に従った、メモリにおいてデータを記憶し検索するためのシステムのブロック図を示す。図２に示すシステムは、メモリ・セルのブロック（各ブロックは複数のページから成る）を有するメモリ２０２（メモリ１０６等）と、書き込みデータを受信し、メモリ・セルに記憶するためのＥＣＣ書き込みワードを発生するためのエンコーダ２０６と、メモリから読み取りワードを受信し読み取りデータを発生するためのデコーダ２０８と、エンコーダ２０６およびデコーダ２０８の双方によって用いるための記憶データの特徴を記憶する共有データ２１０と、を含む。一実施形態では、エンコーダ２０６および共有データ２１０は書き込みプロセス２１２によって用いられ、デコーダ２０８および共有データ２１０は読み取りプロセス２０４によって用いられる。
【００２２】
一実施形態において、エンコーダ２０６、デコーダ２０８、および共有データ２１０は、メモリ・コントローラ（メモリ・コントローラ１０４等）またはメモリ・モジュール上に位置している。代替的な実施形態では、エンコーダ２０６、デコーダ２０８、および共有データ２１０は、メモリ・デバイス上に位置している。共有データ２１０は、レジスタまたは、エンコーダ２０６およびデコーダ２０８の双方によってアクセス可能である他のいずれかの記憶位置に記憶することができる。
【００２３】
一実施形態において、メモリ２０２は、ＮＡＮＤフラッシュ・メモリ・デバイスまたは、限定ではないがＰＣＭデバイス等の他の不揮発性メモリ・デバイスによって実施される。一実施形態では、メモリ２０２は、シングル・レベル・セルＮＡＮＤフラッシュ・メモリ・デバイスによって実施される。別の実施形態では、メモリ２０２は、マルチ・レベル・セルＮＡＮＤフラッシュ・メモリ・デバイスによって実施される。
【００２４】
図２に示したエンコーダ２０６に対する入力は、書き込まれるページのアドレス（本明細書では「書き込みアドレス」とも称する）と、ページに書き込まれるデータ（本明細書では「書き込みデータ」とも称する）と、を含む。図２に示すように、入力は、エンコーダ２０６上に位置する受信器２０４を介して受信される。一実施形態では、入力は、受信器（例えばメモリ・デバイス、メモリ・モジュール、メモリ・コントローラ、または他の位置に位置する）を介して受信される。受信器は、入力を受信するためのハードウェア、または入力が位置する記憶位置（例えばレジスタ）、あるいはその両方を含む様々な方法で実施することができる。
【００２５】
図２に示すデコーダ２０８に対する入力は、読み取られるメモリ位置（例えばページ）のアドレスを含む。一実施形態では、入力は、受信器２１４（例えばメモリ・デバイス、メモリ・モジュール、メモリ・コントローラ、または他の位置に位置する）を介して受信される。受信器は、入力を受信するためのハードウェア、または入力が位置する記憶位置（例えばレジスタ）、あるいはその両方を含む様々な方法で実施することができる。
【００２６】
図２に示したデコーダ２０８からの出力は読み取りデータを含む。一実施形態では、出力は、送信器（例えばメモリ・デバイス、メモリ・モジュール、メモリ・コントローラ、または他の位置に位置する）によって行われる。送信器（図示せず）は、出力を送信するためのハードウェア、および出力が記憶されている記憶位置またはレジスタを含む様々な方法で実施することができる。エンコーダ２０６およびデコーダ２０８は、本明細書に記載した処理を実行するために利用可能なコンピュータの一例である。
【００２７】
図３は、一実施形態に従った、図１のメモリ１０６または図２のメモリ２０２等のＮＡＮＤフラッシュ・メモリのブロック図を示す。図３に示すＮＡＮＤフラッシュ・メモリ３００は、ワード・ライン３０６およびビット・ライン３０２に配列された複数のメモリ・セルを含む。一実施形態では、１ページは、１ワード・ライン３０６におけるメモリ・セル内の複数のビットから成る。マルチ・レベル・セル（ＭＬＣ）・デバイスを含む実施形態では、各ページは１行分のセルからの所与のビットプレーンから成る。例えば、あるページは１行分のセルの最下位ビットを含むことができ、別のページは１行分のセルの最上位ビットを含むことができる。
【００２８】
一実施形態において、物理ブロック・アドレスと論理ブロック・アドレスとの間のマッピングは、メモリ・コントローラ１０４等のコントローラに維持されている。書き込み用の論理アドレスおよびデータが与えられると、コントローラは、データを書き込むための消去済み物理ページを選択し、論理−物理マッピングを記録する。一実施形態では、ログベースのファイル・システムを用いる。この場合、物理ページは、最後の論理ページが書き込まれたブロック内の次の消去済みページであり、ページは、例えばＧＳＬ（global select line：グローバル選択ライン）に対する近接に基づいて順序付けされる。
【００２９】
ＮＡＮＤフラッシュ・メモリは、多数のファクターに基づいてデータ依存性およびデバイス依存性のエラーを示す。これらのエラーには、例えば、ＢＰＤエラー、ＢＬＤ、ＦＧＣエラー、ＰＧＭエラー、ならびに他の非均一エラーおよびエラー遷移が含まれる。エラーは、ＮＡＮＤフラッシュに記憶されたデータおよびメモリ・セル相互の位置に基づいて発生する。一実施形態では、例えば図３のセル・ブロック３１０等の他の近隣セルをプログラムした場合、図３のターゲットのメモリ・ページ３０８はＦＧＣによって影響を受ける場合がある。同様に、例えば３０４のセルのようなビット・ライン３０２の１つに沿ったセルに書き込んだ場合、ターゲットのメモリ・ページ３０８はＢＬＤ／ＢＰＤによって影響を受ける可能性がある。更に、ページを再プログラムした場合または隣接メモリ・ページに書き込んだ場合、ターゲットのメモリ・ページはＰＧＭエラーによって影響を受ける可能性がある。更に、ＮＡＮＤフラッシュ・メモリ３００の劣化によるシンボルのランダム・スイッチング等のエラーが更に別のエラーを引き起こす場合があり、それらのタイプは非均一である傾向がある（すなわち、デバイスに応じて、あるタイプのエラーが他のタイプのエラーよりも発生の可能性が高いことがある）。これらのタイプのエラーは全て統計的にモデル化して、予測エラー検出および訂正を行うことができる。例えば、ＭＬＣ  ＮＡＮＤブロックにおいて非均一エラーが引き起こす「０１」から「１０」への誤ったビット遷移は、「１０」から「０１」よりも可能性がはるかに高いという知識を用いて、メモリ３００のターゲット・ページにおけるエラーからいっそう正確に復旧することができる。
【００３０】
図４は、一実施形態に従った、２層ＥＣＣプロセスを用いてデータを記憶するためのフラッシュ・メモリ４００を図示する。一実施形態では、フラッシュ・メモリ４００はＮＡＮＤフラッシュ・メモリであり、第１の層のＥＣＣ符号化モジュール４１８および第２の層のＥＣＣ符号化モジュール４１０は、図２に示したような書き込みプロセス２１２の間にエンコーダ２０６によって実施される。
【００３１】
図４に示したフラッシュ・メモリ４００は、ターゲット・ページ４０８に記憶されたワード等の、データおよびＥＣＣチェック・ビット／チェック・シンボルを含む複数の書き込みワード（本明細書においてコードワードとも称する）を記憶している。図４に示すように、各ワードは、データ・バイト（すなわち書き込みデータ）を記憶するためのデータ・セグメント４１４と、データ・セグメント４１４内のデータに関連付けられたチェック・ビット／チェック・シンボルを記憶するための２つ以上のエラー訂正セグメント４０６と、を含む。一実施形態では、エラー訂正セグメント４０６は、第１の層のチェック・ビット／シンボルを記憶するための第１の層のエラー訂正セグメント４０２と、第２の層のチェック・ビット／シンボルを記憶するための第２の層のエラー訂正セグメント４０４と、を含む。フラッシュ・メモリ４００に記憶される予定の書き込みデータ４１２は、第１の層のＥＣＣ符号化モジュール４１８における処理のために（例えば第１の層のチェック・シンボルを発生させるために）受信され、次いで処理のために（例えば第２の層のチェック・シンボルを発生させるために）第２の層のＥＣＣ符号化モジュール４１０に渡される。一実施形態では、書き込みデータ４１２は、図１のコンピュータ・プロセッサ１０２等のコンピュータ・プロセッサから、またはエンコーダ２０６における別の符号化モジュールから受信される。他の実施形態では、書き込みデータ４１２は、第１の層のＥＣＣ符号化モジュール４１８および第２の層のＥＣＣ符号化モジュール４１０の双方によって受信され、これらが、時間的に重複することはあるが別個に処理を行い、データ・セグメント４１４に記憶される書き込みデータ４１２に関連付けられたチェック・シンボルを発生させる。
【００３２】
一実施形態において、第１の層のＥＣＣ符号化モジュール４１８が書き込みデータ４１２からＥＣＣチェック・シンボルを発生させる際には、リード・ソロモン符号または、限定ではないが、繰り返しコード、パリティ・シンボル、チェック・サム、および暗号ハッシュ等の技法を用いる他のＥＣＣコードを用いる。
【００３３】
一実施形態では、第２の層のＥＣＣ符号化モジュール４１０は、低密度パリティ・チェック（ＬＤＰＣ）コードを用いて、書き込みデータ４１２および以前に書き込んだデータ・ページ（例えば書き込みワードまたはコードワードを含む）から、ＥＣＣチェック・シンボルを発生させる。一実施形態では、ＬＤＰＣコードはフラッシュ・エラー・モードの統計的モデルに基づいたものであり、以前に書き込んでエラー訂正キャッシュ４１６にキャッシュされているデータを用いて第２の層のＥＣＣチェック・シンボルを発生させる。これについては以下で更に詳細に説明する。
【００３４】
いったん第１の層のＥＣＣ符号化モジュール４１８および第２の層のＥＣＣ符号化モジュール４１０が処理を完了して、ＥＣＣチェック・シンボルを発生させると、書き込みデータならびに第１および第２の層のＥＣＣチェック・シンボルをターゲット・ページ４０８に記憶する。書き込みデータ４１２（本明細書では「データ」とも称する）をフラッシュ・メモリ４００のデータ・セグメント４１４に記憶し、第１の層のＥＣＣチェック・シンボルを第１の層のエラー訂正セグメント４０２に記憶し、第２の層のＥＣＣチェック・シンボルを第２の層のエラー訂正セグメント４０４に記憶する。代替的な実施形態では、第２の層のＥＣＣチェック・シンボルを別個のフラッシュ・メモリに記憶する。他の実施形態では、第２の層のＥＣＣチェック・シンボルを、第２の層のエラー訂正セグメント４０４および別個のフラッシュ・メモリ間で分割する。また、書き込みデータ４１２および第２の層のＥＣＣエラー訂正シンボル４０４のコピーをエラー訂正キャッシュ４１６に記憶する。別の実施形態では、エラー訂正キャッシュは更に、第１の層のエラー訂正セグメント４０２のチェック・シンボルも記憶する。一実施形態において、エラー訂正キャッシュ４１６は、ＤＲＡＭ（dynamic random access memory）またはｅＤＲＡＭ（embedded DRAM）またはＳＲＡＭ（staticrandom access memory）または他の比較的短い読み取り待ち時間を有する揮発性メモリ等の揮発性メモリに書き込まれる。別の実施形態では、エラー訂正キャッシュ４１６はＰＣＭ等の不揮発性メモリに書き込まれる。
【００３５】
一実施形態において、エラー訂正キャシュ４１６は、「Ｃ」ページの履歴データを記憶するように構成されている。ここで、Ｃは、データ４１２について第２の層のＥＣＣコードを計算するために用いられる履歴データの以前に書き込んだページ数である。一実施形態では、これらのページは、現在のページと同じブロック内にプログラムしたこれまでのＣページである。Ｃはプログラムすることができ、いかなるサイズとすることも可能であるが、Ｃが増大するにつれて、第２の層のＥＣＣコードの有効性およびエラー訂正キャッシュ４１６に対する記憶装置容量の要求の双方が増大する。一実施形態では、Ｃは、メモリ・ブロックをプログラムした回数、メモリ・ブロックのシンボル・エラー・レート、またはメモリの統計的エラー・モデルに基づいてプログラムすることができる。更に別の実施形態では、エラー訂正キャッシュ４１６は、当技術分野において既知であるような、迅速なデータの記憶および検索が可能ないずれかの記憶デバイスである。
【００３６】
図５は、一実施形態に従った、第２の層のＥＣＣチェック・シンボルを発生させるためのブロック図を示す。一実施形態において、第２の層のＥＣＣ発生は、図４の第２の層のＥＣＣ符号化モジュール４１０において実行される。第２の層のＥＣＣにおけるチェック・シンボルの数（またはＥＣＣの「レート」）は、上述した様々なタイプのエラー（例えばＢＰＤ、ＢＬＤ、ＦＧＣ、ＰＧＭ、非均一エラー・タイプ等）の統計的モデルに基づいて発生させる。一実施形態では、第２の層のＥＣＣ符号化モジュール４１０は、チェック・シンボルｉ５１０等のチェックを発生させる。一実施形態では、図１のメモリ１０６等のメモリに記憶するために、時刻「ｉ」で書き込みデータを受信する。この書き込みデータと、現在書き込んでいるページと同じブロック内に書き込まれた最後のＣページの第２の層のＥＣＣチェック・シンボル・コンポーネントと、を用いることによって、チェック・シンボルｉ５１０（すなわちメモリに記憶するための書き込みデータのため）を時刻ｉにおいて計算する。このコンポーネントは、現在のページについて受信した書き込みデータと同様に、図４のエラー訂正キャッシュ４１６に記憶されている。一実施形態では、Ｃは、エラー訂正キャッシュ４１６をシンボル単位のページ・サイズで除算したシンボル単位のサイズとして計算される。一実施形態では、チェック・シンボルｉ５１０は、アプリオリに選択した低密度パリティ・チェック（ＬＤＰＣ）・マトリクスを用いて計算される。パリティ・チェック・マトリクスにより、書き込みデータ・シンボルおよび第２の層のＥＣＣチェック・シンボルの線形結合としてシンドローム・シンボル５０２を計算することができる。更に、パリティ・チェック・マトリクスでは、書き込みデータ・ページ・シンボルと、現在のページおよびエラー訂正キャッシュ４１６に記憶された同一ブロックに属する以前のＣページにのみ属するチェック・シンボルとの線形結合として、シンドローム・シンボルｉ５０２を計算するようになっている。現在のページについてのチェック・シンボル５１０は、シンドローム・シンボル５０２が全てゼロであることを保証するように計算される。書き込みデータおよび第２の層のＥＣＣチェック・シンボルはメモリに記憶される。ＬＤＰＣマトリクスは当業者に既知の技法を用いて生成される。
【００３７】
第２の層のフラッシュ認識ＥＣＣ発生について、図４の第２の層のＥＣＣ符号化モジュール４１０で実行されるものとして説明しているが、第２の層のフラッシュ認識ＥＣＣ発生は、コンピュータ・プロセッサ１０２上のソフトウェアとして、またはメモリ１０６、メモリ・コントローラ１０４、エンコーダ２０６、またはスタンドアロン・モジュールのいずれかのハードウェアまたはソフトウェア・モジュールとして実行可能であることは理解されよう。
【００３８】
図６は、図１のメモリ１０６等のメモリ６００からデータを検索する実施形態を示す。要求側からメモリ・アクセス要求６２２を受信する。一実施形態では、メモリ・アクセス要求６２２（これはメモリ６００内のデータ・ページ６０８に対応するメモリ・アドレスを含む）は、図２のデコーダ２０８等のデコーダにおいて受信される。メモリ６００からデータ・ページ６０８（本明細書では「コードワード」とも称する）を検索する。図６に示すように、データ・ページ６０８は、データ・セグメント６２０、第１の層のＥＣＣチェック・シンボル６０２、および第２の層のＥＣＣチェック・シンボル６０４を含む。第１の層のＥＣＣモジュール６１０はデータ・ページ６０８をチェックして、データがエラーを有するか否か、および、かかるエラーが第１の層のＥＣＣデコーダによって訂正可能であるか否かを判定する。データ・ページがエラーを有しない場合、またはエラーが第１の層のＥＣＣチェック・シンボルによって訂正可能である場合、これは要求側に戻される。一実施形態においては、読み取りデータとして要求側に戻す前に、訂正済みデータ６１２に対して更に復号を実行する（例えばシンボル拡張、伸張等）。
【００３９】
第１の層のＥＣＣ復号モジュール６１０は、データ・ページ６０８が第１の層のＥＣＣ復号モジュール６１０によって訂正可能でないエラーを含むと判定すると、ページ６０８を含むブロック６２４からのデータを、他のチェック・シンボル記憶装置６０６に記憶されたいずれかの追加の第２の層のチェック・シンボルと共に、更に処理するために第２の層のＥＣＣ復号モジュール６１４に渡す。第２の層のＥＣＣ復号モジュール６１４は、第２の層のエラー・チェック・シンボル６０４および記憶装置６０６に記憶された第２の層のＥＣＣチェック・シンボルならびにエラー確率モデル６１６を用いて、データを訂正する。これについては以下で更に詳細に説明する。エラー確率モデルはメタデータであり、揮発性ＤＲＡＭまたは不揮発性メモリまたはそれらの組み合わせに記憶されている。いったんデータが訂正されると、エラー確率モデル６１６は、訂正されたエラーに基づいて更新される。第２の層のエラー訂正が必要となるたびに、更新されたエラー確率モデル６１６が用いられて同様に更新される。いったんデータが訂正されたら、訂正済みデータ６１８は要求側に戻される。
【００４０】
一実施形態において、第１の層のＥＣＣチェック・シンボル６０２および第２の層のＥＣＣチェック・シンボル６０４が異なる位置に記憶されている場合は、メモリ・アクセス要求６２２に応答してデータ・セグメント６２０および第１の層のＥＣＣチェック・シンボル６０２のみが検索される。この実施形態では、第２の層のＥＣＣチェック・シンボル６０４および記憶装置６０６が検索されるのは、第２の層のＥＣＣ復号モジュール６４１を用いてページを復号する場合だけである。
【００４１】
図７は、一実施形態における４マルチ・レベル・セル（４ＭＬＣ）ＮＡＮＤフラッシュ・セルに４レベルの情報を記憶するために用いる閾値電圧を示す。４ＭＬＣは、フラッシュ・メモリの１メモリ・セルにおいて４つの離散データ・シンボルを含む。図７は４ＭＬＣ電圧閾値を示すが、他の実施形態ではＭＬＣの他の電圧閾値および他のビット・レベルを使用可能であることは理解されよう。閾値電圧の低い方から順に、４つのレベルをＬ０、Ｌ１、Ｌ２、およびＬ３と記す。
【００４２】
図８は、ルックアップ・テーブル・セットの形態で要約されたエラー確率モデル６１６の一実施形態を示す。統計的エラー確率モデル６１６は、セル上に記憶された特定のプログラムされたレベルがエラーによって別の特定レベルに変化する可能性がどの程度であるかに関する情報を含む。かかるエラー・イベントの可能性は一般に、セルの近隣領域の２次元（２Ｄ）データ・パターン（これはＦＧＣタイプのエラーに影響を及ぼす）、同一ページおよび他のページ上の他のセルのプログラミング履歴（これはＢＰＤ、ＢＬＤ、およびＰＧＭタイプのエラーに影響を及ぼす）、ならびにデバイス依存性のレベル遷移挙動等のファクターに依存する。一実施形態では、統計的エラー確率モデル６１６は条件確率値（「エラー重み」とも記す）の集合を含み、それらの各々は、上述のファクターの１つ以上を条件としてある記憶値が別の値に変化する可能性を要約する。別の実施形態では、統計的エラー・モデルは１つ以上のアポステリオリ条件確率を含み、それらの各々は、セルから値が読み取られて上述のファクターの１つ以上が与えられた場合に、セルに記憶された元の値が読み取ったレベルとは異なる所与のレベルであった可能性を要約する。
【００４３】
図８の実施形態では、各ルックアップ・テーブルはアポステリオリのエラー重み（すなわち条件確率）を記憶しており、これは、所与のセルから読み取った値ｖ1がエラーの際に真の記憶値ｖ2から生じたものである可能性を、ｖ1、ｖ2、および上述したファクターの１つの関数として要約する。エラー重みベクトルｗ、ｘ、およびｙの各々は１６の成分を有し、ここで成分
【数１】
0005658128.tif 000002
は、読み取り値がｖ1であることを条件として、更に各テーブルがファクターの値に基づくことを条件として、真の記憶値がｖ2であった確率を表す。一実施形態では、重みテーブル１  ８０２における第１のエラー重みベクトルを割り当てるには、ＭＬＣレベルＬ３にある各ページ位置の８近隣（neighbor）数をカウントし、ページ位置におけるデータ値を計算に入れる。このため、例えば、ｗ00は１６成分ベクトルであり、成分
【数２】
0005658128.tif 000003
は、読み取り値がｖ1であることを条件とし、更に８近隣値のどれもＬ３でなかったという事実を条件として、真の記憶値がｖ2であった確率を表す。一実施形態では、重みテーブル２  ８０４に示したような第２のエラー重みベクトルは、現在のセルと同じビット・ライン上のプログラムしたセル値の分布に基づいて、更に現在のデータ値に基づいて計算される。重みテーブル３  ８０６における第３のエラー・ベクトルは、ページ・プログラム数および現在のデータ値に基づいて計算される。これらのテーブルは、第２の層のＥＣＣ復号モジュール６１４による各復号の後に更新され、これによって重みモデルに時間履歴を組み込む。これによって、重みモデルは、他のデバイスとは著しく異なることがある使用中の特定のＮＡＮＤフラッシュ・デバイスに適合することができる。一実施形態では、各第２の層のＥＣＣ復号において観察されるエラー頻度をモデルのエラー重みと線形結合して、新しいモデル・エラー重みを形成する。当技術分野において周知の他の技法を用いて、第２の層のＥＣＣデコーダの各使用時に観察される経験的な頻度を組み込むことによって、モデルを更新することができる。別の実施形態では、第１の層のＥＣＣデコーダの各使用時に観察されるエラーを用いてモデルを更新する。
【００４４】
代替的な実施形態では、図８に示した重みテーブルのサブセットを組み合わせ、もっと高い次元の重みモデルを用いて、これらの条件の連結作用をモデル化する。別の実施形態では、ページに対するプログラム／消去サイクル数の作用、ページ上で以前に認められたエラーの数、近隣ページ上で認められたエラーの数およびタイプ、ならびにページがプログラムされた順序が、重みテーブルに更に組み込まれる。更に別の実施形態では、セルごとでなくベクトルごとに重みを計算する。更に別の実施形態では、記憶されたメタデータは、ブロック・ページがプログラムされた順序を含み、この順序に基づいて重みの計算を行う。このため、例えば、重みテーブル１  ８０２におけるエラー重みベクトルは、所与のセル位置の近隣領域においてこの所与のセル位置の後にプログラムされたセル位置の数に依存する。代替的な実施形態では、多数のページに対して同時に復号を実行する。一実施形態では、図６の第２の層のＥＣＣ復号モジュール６１４は動的プログラミングを用いる。このため、例えばビタビ・アルゴリズムを用いて多数のページを同時に復号することができる。
【００４５】
図９は、一実施形態におけるデータのエラー訂正のためのプロセス・フローを示す。一実施形態では、図９のエラー訂正は、図６の第２の層のＥＣＣ復号モジュール６１４において実行される。ブロック９０２において、第１の層のＥＣＣ復号モジュール６１０によって訂正可能でなかったエラーを含むデータを受信する。ブロック９０４において、データが存在するメモリ・ブロックに対応した２Ｄ読み取りブロック・データに基づいて、エラー確率モデル（エラー確率モデル６１６および図８のエラー確率モデル等）を検索する。ブロック９０６において、セルについての確率ベクトルを計算するために、セルの８セル近隣領域に基づいて各セル値ごとに条件エラー確率をモデル化するエラー確率モデルを、セルから読み取った値と組み合わせて用いる。このベクトルのｉ番目の成分は、セルの真の記憶値がレベルｉである確率である。例示的な実施形態では、テーブル８０２における確率モデルを用いて、各セルごとにかかる確率ベクトルを計算する。この確率ベクトルをエラー重みベクトルとも呼ぶ。ブロック９０８において、セルについての確率ベクトルを計算するために、各ページがプログラムした回数に基づいて各セル値ごとに条件エラー確率をモデル化するエラー確率モデルを、セルから読み取った値と組み合わせて用いる。このベクトルのｉ番目の成分は、セルの真の記憶値がレベルｉである確率である。例示的な実施形態では、図８のエラー重みテーブル３  ８０６における確率モデルを用いて、各セルごとにかかる確率ベクトルを計算する。この確率ベクトルをエラー重みベクトルとも呼ぶ。ブロック９１０において、セルについての確率ベクトルを計算するために、ビット・ライン・パターン（すなわち、所与のセルと同じビット・ライン上の他のセルから読み取った値）に基づいて各セル値ごとに条件エラー確率をモデル化するエラー確率モデルを、セルから読み取った値と組み合わせて用いる。このベクトルのｉ番目の成分は、セルの真の記憶値がレベルｉである確率である。例示的な実施形態では、テーブル８０４における確率モデルを用いて、各セルごとにかかる確率ベクトルを計算する。この確率ベクトルをエラー重みベクトルとも呼ぶ。
【００４６】
ブロック９１２において、ブロック９０６、９０８、および９１０で計算したエラー重みベクトルを組み合わせて、各セルごとに１つのエラー重みベクトルを形成する。このベクトルのｉ番目の成分は、ブロック内のそのセルおよび他のセルから読み取った値を条件として、セルの真の記憶値がレベルｉである確率である。一実施形態では、条件付き独立性の仮定（conditional independenceassumption）を用いて、各セルごとに集合エラー重みベクトル（すなわち、所与のセルについての真の値が、個々のエラー重みベクトルによって与えられる、所与のセルについての真の値がｉである確率を適切に正規化した積である確率）を生成する。ブロック９１４において、ソフト・エラー訂正デコーダは、ブロック９１２で計算した集合重み付け訂正ベクトルを、エラーのあるデータに対して用いる。一実施形態において、デコーダはＬＤＰＣデコーダであり、和積または最大積等の当技術分野において周知のアルゴリズムにより、メッセージ伝達アルゴリズムを用いてデータを復号する。ブロック９１６において、訂正済み読み取りページ・データが生成され、要求側に戻される。
【００４７】
技術的な作用および利点には、エラー訂正を計算する場合にフレッシュ・メモリ・エラー・モードの統計的モデルを考慮することによるエラー訂正の信頼性向上が含まれる。別の利点は、いっそう多くのエラーを正確に訂正することでフラッシュ・メモリの信頼性を高めることによってデバイスの寿命を改善することである。更に別の利点は、本発明を実施するためにハードウェア・デバイスの変更が必要ないことである。また別の利点は、ＢＰＤ、ＢＬＤ、ＦＧＣ、ＰＧＭ等に基づいたエラーの統計的モデルに基づいて訂正を行うことができる機能によって、書き込みの制約（例えば非順次プログラミング、部分的なページ・プログラミングの禁止）を軽減可能であることである。
【００４８】
本明細書において用いた用語は、特定の実施形態を記載する目的のためだけのものであり、本開示を限定することは意図していない。本明細書において用いたように、単数形「１つの」は、文脈によって明らかに他の場合が示されない限り、複数形を含むことが意図されている。また、「含む」または「含んでいる」という言葉あるいはその両方は、本明細書において用いられた場合、述べた特徴、整数、ステップ、動作、要素、または構成要素あるいはそれら全ての存在を規定するが、１つ以上の他の特徴、整数、ステップ、動作、要素、構成要素、またはそれらのグループあるいはそれら全ての存在または追加を除外するものではないことは、理解されよう。
【００４９】
以下の特許請求の範囲における全てのミーンズまたはステップ・プラス・ファンクション要素の対応する構造、材料、行為、および均等物は、具体的に特許請求したような他の特許請求した要素と組み合わせて機能を実行するためのいずれかの構造、材料、または行為を含むことが意図されている。本開示の記載は、例示および記述の目的のために提示したが、網羅的であることや、開示した形態に本発明を限定することは、意図していない。本発明の範囲および思想から逸脱することなく、当業者には多くの変更および変形が明らかであろう。実施形態は、本開示の原理および実際的な用途を最良に説明するため、更に、想定される特定の用途に適した様々な変更と共に様々な実施形態に関して当業者が本発明を理解することを可能とするために、選択し記載したものである。
【００５０】
当業者には認められるであろうが、本発明の態様は、システム、方法、またはコンピュータ・プログラムとして具現化することができる。従って、本発明の態様は、全体的にハードウェアの実施形態、全体的にソフトウェアの実施形態（ファームウェア、常駐ソフトウェア、マイクロコード等を含む）、または、ソフトウェアおよびハードウェアの態様を組み合わせた実施形態という形態を取ることができ、それらは全て本明細書において、「回路」、「モジュール」、または「システム」と一般的に称することができる。更に、本発明の態様は、具現化されたコンピュータ読み取り可能プログラム・コードを有する１つ以上のコンピュータ読み取り可能媒体において具現化されるコンピュータ・プログラムの形態を取ることも可能である。
【００５１】
１つ以上のコンピュータ読み取り可能媒体のあらゆる組み合わせを利用することができる。コンピュータ読み取り可能媒体は、コンピュータ読み取り可能信号媒体またはコンピュータ読み取り可能記憶媒体とすることができる。コンピュータ読み取り可能記憶媒体は例えば、限定ではないが、電子、磁気、光、電磁、赤外線、または半導体のシステム、装置、デバイス、または前述のもののいずれかの適切な組み合わせとすることができる。コンピュータ読み取り可能記憶媒体の更に具体的な例（非網羅的な列挙）は、以下を含む。すなわち、１本以上のワイヤを含む電気的接続、携帯型コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、消去可能プログラマブル読み取り専用メモリ（ＥＰＲＯＭまたはフラッシュ・メモリ）、光ファイバ、携帯型コンパクト・ディスク読み取り専用メモリ（ＣＤ−ＲＯＭ）、光記憶デバイス、磁気記憶デバイス、または前述のもののいずれかの適切な組み合わせである。この文書の文脈において、コンピュータ読み取り可能記憶媒体は、命令実行システム、装置、またはデバイスによってまたはそれと接続して用いるためにプログラムを含有または記憶することが可能ないずれかのタンジブルな媒体とすることができる。
【００５２】
コンピュータ読み取り可能信号媒体は、例えばベースバンドにおいてまたは搬送波の一部として、具現化されたコンピュータ読み取り可能プログラム・コードを有する伝播データ信号を含むことができる。かかる伝播信号は様々な形態のいずれかを取ることができ、それらは限定ではないが、電磁、光、またはそれらのいずれかの適切な組み合わせを含む。コンピュータ読み取り可能信号媒体は、コンピュータ読み取り可能記憶媒体でないが、命令実行システム、装置、またはデバイスによってまたはそれと接続して用いるためにプログラムを伝達、伝播、または転送することが可能ないずれかのコンピュータ読み取り可能媒体とすることができる。
【００５３】
コンピュータ読み取り可能媒体上で具現化されるプログラム・コードは、限定ではないが、無線、有線、光ファイバ・ケーブル、ＲＦ等、または前述のもののいずれかの適切な組み合わせを含むいずれかの適切な媒体を用いて伝送することができる。
【００５４】
本発明の態様の動作を実行するためのコンピュータ・プログラム・コードは、Ｊａｖａ（Ｒ）、Ｓｍａｌｌｔａｌｋ（Ｒ）、Ｃ＋＋等のオブジェクト指向プログラミング言語、および、「Ｃ」プログラミング言語または同様のプログラミング言語等の従来の手順プログラミング言語を含む１つ以上のプログラミング言語のいずれかの組み合わせにおいて記述することができる。プログラム・コードは、全体的にユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、スタンドアロンのソフトウェア・パッケージとして、部分的にユーザのコンピュータ上でおよび部分的に遠隔コンピュータ上で、または全体的に遠隔コンピュータもしくはサーバ上で、実行することができる。後者の場合、遠隔コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）またはワイド・エリア・ネットワーク（ＷＡＮ）を含むいずれかのタイプのネットワークを介してユーザのコンピュータに接続することができ、または、接続は、（例えばインターネット・サービス・プロバイダを用いてインターネットを介して）外部コンピュータに対して行うことができる。
【００５５】
本発明の実施形態に従った方法、装置（システム）、およびコンピュータ・プログラムのフローチャート図またはブロック図あるいはその両方を参照して、本発明の態様について以下に記載する。フローチャート図またはブロック図あるいはその両方の各ブロックならびにフローチャート図またはブロック図あるいはその両方におけるブロックの組み合わせは、コンピュータ・プログラム命令によって実施可能であることは理解されよう。これらのコンピュータ・プログラム命令は、汎用コンピュータ、特殊目的コンピュータ、または他のプログラマブル・データ処理装置のプロセッサに提供されて機械を生成することができ、これによって、コンピュータまたは他のプログラマブル・データ処理装置のプロセッサによって実行される命令が、フローチャートまたはブロック図あるいはその両方のブロックまたは複数のブロックに規定された機能／行為を実施するための手段を生成するようになっている。
【００５６】
また、これらのコンピュータ・プログラム命令はコンピュータ読み取り可能媒体に記憶することができ、これによって、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイスに特定の方法で機能するように指示することができ、これにより、コンピュータ読み取り可能媒体に記憶された命令が、フローチャートまたはブロック図あるいはその両方のブロックまたは複数のブロックに規定された機能／行為を実施する命令を含む製造品を生成するようになっている。
【００５７】
また、コンピュータ・プログラム命令を、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイスにロードして、そのコンピュータ、他のプログラマブル装置、または他のデバイス上で一連の動作ステップを実行させてコンピュータ実施プロセスを生成することができ、これによって、コンピュータまたは他のプログラマブル装置上で実行する命令が、フローチャートまたはブロック図あるいはその両方のブロックまたは複数のブロックに規定された機能／行為を実施するためのプロセスを提供するようになっている。
【００５８】
本明細書に示したフロー図は一例に過ぎない。本発明の思想から逸脱することなく記載した図またはステップ（または動作）に対する多くの変形が可能である。例えば、ステップは異なる順序で実行することができ、またはステップを追加、削除、もしくは変更することも可能である。これらの全ての変形は、特許請求する本発明の一部と見なされる。
【００５９】
本発明の好適な実施形態について記載したが、当業者は、現在および今後の双方で、以下の特許請求の範囲内に該当する様々な改良および向上を実施可能であることは理解されよう。これらの特許請求の範囲は、最初に記載した本発明についての適正な保護を維持するように解釈されるものである。
【符号の説明】
【００６０】
１００  システム
１０２  ＣＰＵ
１０４  メモリ・コントローラ
１０６、２０２  メモリ
２０６  エンコーダ
２０８  デコーダ
２１４  受信器
４１２  第２のＥＣＣ符号化モジュール
４１６  エラー訂正キャッシュ
４１８  第１のＥＣＣ符号化モジュール
６１０  第１の層のＥＣＣ復号モジュール
６１４  第２の層のＥＣＣ復号モジュール
６１６  エラー・モジュール
【図１】
0005658128.tif 000004
【図２】
0005658128.tif 000005
【図３】
0005658128.tif 000006
【図４】
0005658128.tif 000007
【図５】
0005658128.tif 000008
【図６】
0005658128.tif 000009
【図７】
0005658128.tif 000010
【図８】
0005658128.tif 000011
【図９】
0005658128.tif 000012