"sf2であるソリッドステートストレージデバイス1のsレベルストレージ2に入力データを記録するための方法であって、前記方法が、第1および第2のBCHコードによりM個の入力データワードからなるグループに入力データワードをエンコードし、M個の第1のコードワードの所定の一次結合が前記第2のBCHコードの第2のコードワードを生成するように、各グループごとに、前記第1のBCHコードのM個の第1のコードワードからなる集合を生成し、前記第2のBCHコードが前記第1のBCHコードのサブコードであることと、M個の第1のコードワードからなる前記集合を前記sレベルストレージ2に記録することを含む、方法。前記集合内の前記M個の第1のコードワードの合計が前記第2のコードワードである、請求項1記載の方法。前記集合内の前記M個の第1のコードワードの複数の加重和のそれぞれがそれぞれの第2のコードワードであり、前記複数の加重和の重み係数が第3の線形コードに対応するパリティチェック行列によって定義される、請求項1または請求項2記載の方法。前記第1および第2のコードワードのそれぞれがN個のq進シンボルを含み、ここでq=pkであり、kは正整数であり、pは素数であり、qおよびsが共通ベースrのそれぞれu乗およびv乗であり、ここでuおよびvは正整数であり、kfuであり、これによりpk/uv=sになる、請求項1ないし3のいずれかに記載の方法。sqである、請求項4記載の方法。前記方法が、前記sレベルストレージ2に記録する前にそれぞれのq進の第1のコードワードをr進の第1のコードワードに変換することを含む、請求項5記載の方法。rsであり、前記方法が、所定のマッピング方式によりそれぞれのr進の第1のコードワードのv個のr進シンボルからなる連続集合を前記sレベルストレージ2のそれぞれの対応するレベルにマッピングすることと、v個のr進シンボルからなる各集合を前記対応するレベルとして前記sレベルストレージ2に記録することを含む、請求項6記載の方法。q=rsであり、前記方法が、所定のマッピング方式によりそれぞれのq進の第1のコードワードのv個のq進シンボルからなる連続集合を前記sレベルストレージ2のそれぞれの対応するレベルにマッピングすることと、v個のq進シンボルからなる各集合を前記対応するレベルとして前記sレベルストレージ2に記録することを含む、請求項5記載の方法。r=s>2である、請求項1ないし6のいずれか1項に記載の方法。r=2およびk=uである、請求項1ないし8のいずれか1項に記載の方法。s>2である、請求項1ないし10のいずれかに記載の方法。M個の第1のコードワードからなる前記集合のそれぞれを前記ソリッドステートストレージ2のそれぞれの書き込み位置に記録することを含む、請求項1ないし11のいずれかに記載の方法。請求項1ないし12のいずれかに記載の方法をコンピュータに実行させるためのプログラムコード手段を含むコンピュータプログラム。sf2であるソリッドステートストレージデバイス1のsレベルストレージ2に記録すべき入力データをエンコードするためのエンコーダ装置であって、前記エンコーダ装置が、第1および第2のBCHコードによりM個の入力データワードからなるグループに入力データワードをエンコードし、M個の第1のコードワードの所定の一次結合が前記第2のBCHコードの第2のコードワードを生成するように、各グループごとに、前記第1のBCHコードのM個の第1のコードワードからなる集合を生成するための2レベルBCHエンコーダ3であって、前記第2のBCHコードが前記第1のBCHコードのサブコードであり、前記第1および第2のコードワードのそれぞれがN個のq進シンボルを含み、ここでqsであり、q=pkであり、kは正整数であり、pは素数であり、qおよびsは共通ベースrのそれぞれu乗およびv乗であり、ここでuおよびvは正整数であり、kfuであり、これによりpk/uv=sになる、2レベルBCHエンコーダ3と、前記sレベルストレージ2に記録するためにそれぞれの第1のコードワードの前記q進シンボルをs進アルファベットに変換するためのシンボルコンバータ4とを含む、エンコーダ装置。sf2であるsレベルソリッドステートストレージ2と、第1および第2のBCHコードによりM個の入力データワードからなるグループに入力データワードをエンコードし、M個の第1のコードワードの所定の一次結合が前記第2のBCHコードの第2のコードワードを生成するように、各グループごとに、前記第1のBCHコードのM個の第1のコードワードからなる集合を生成するための2レベルBCHエンコーダ3であって、前記第2のBCHコードが前記第1のBCHコードのサブコードである、2レベルBCHエンコーダ3とを含むソリッドステートストレージデバイス1であって、前記デバイス1がM個の第1のコードワードからなる前記集合を前記sレベルストレージ2に記録するように適合される、ソリッドステートストレージデバイス1。本発明の一態様の一実施形態は、sf2であるソリッドステートストレージデバイスのsレベルストレージに入力データを記録するための方法を提供する。この方法は、第1および第2のBCHコードによりM個の入力データワードからなるグループに入力データワードをエンコードし、M個の第1のコードワードの所定の一次結合が第2のBCHコードの第2のコードワードを生成するように、各グループごとに、第1のBCHコードのM個の第1のコードワードからなる集合を生成し、第2のBCHコードが第1のBCHコードのサブコードであることと、M個の第1のコードワードからなる集合をsレベルストレージに記録することを含む。上述のRSコードの確立された使用法とは対照的に、本発明を実施する方法は、sレベルソリッドステートストレージデバイスにおける2レベルエンコードにBCHコードを使用する。本発明の諸実施形態は、ある程度、BCHコードが特にSSDストレージチャネル内のエラーパターンの訂正に十分適しているという認識に基づいている。加えて、2レベルBCHコード体系を使用することにより、デコーダの複雑さの影響を最小限にしながら、エラー性能の利点を活用することができる。実際に、実現の複雑さという点で最小限の不利を伴うが、良好なエラー率性能を達成することができる。認識された欠点にもかかわらず、SSDにおける2レベルコーディングにBCHコードを使用することにより、実現の複雑さが低く、消費電力も少ない、非常に効率的なエラー訂正方式を達成することができる。その上、以下に詳述するように、BCHコード特性は、SSDセルのレベルの数sおよびSSDチャネルのエラー構造に適合するように容易に調整することができる。したがって、全体的に見て、本発明を実施する記録方法は、sレベルソリッドステートメモリに情報を確実に保管するための実用的で効率的なシステムを提供することができる。一般に、エンコードすべき入力データワードは複数のデータシンボルを含むことができ、ここでデータシンボルは単一ビットすなわち、2進シンボルまたは複数ビットシンボルにすることができる。本発明の好ましい諸実施形態では、第1および第2のコードワードのそれぞれは複数のNによって示されるq進シンボルを含み、ここでq=pkであり、kは正整数であり、pは素数である。その上、特に好ましい諸実施形態では、特に効率的な動作のためにソリッドステートストレージのレベルの数sに合わせて2レベルBCHコードのq進アルファベットが調整される。これは、qおよびsが共通ベースrのそれぞれu乗およびv乗になるようなコードの使用によって達成され、ここでuおよびvは正整数であり、kfuである。これは、pk/uv=sという条件によりq進コードアルファベットがs進ストレージに整合することを保証するものである。コードがこの整合アルファベットmatchedalphabet制約を満足することを保証することにより、q進コードワードシンボルはsレベルストレージに記録するために単純かつ効率的にs進アルファベットに変換することができ、非常に効率的な動作ならびにコード選択の柔軟性を提供する。特に、事例によってはqおよびsが同じである可能性があるが、qsである好ましい諸実施形態については以下に詳述する。加えて、本発明を実施する方法は2進s=2ソリッドステートストレージに適用することができるが、好ましい諸実施形態はマルチレベルソリッドステートストレージs>2のための柔軟かつ効率的な動作を提供する。特に好ましい諸実施形態では、M個の第1のコードワードからなる各集合はソリッドステートストレージのそれぞれの書き込み位置に記録される。たとえば、フラッシュメモリでは、各ページはM個の第1のコードワードからなる単一集合を含むことになる。しかし、実施形態によっては、M個の第1のコードワードからなる複数の集合を各書き込み位置に、たとえば、フラッシュページのセクタあたり1つの集合を、記録することが望ましい場合もある。また、M個の第1のコードワードからなる各集合がソリッドステートストレージの複数の書き込み位置に記録される諸実施形態も想定することができるであろう。本発明の他の態様の一実施形態により、本発明の第1の態様による方法をコンピュータに実行させるためのプログラムコード手段を含むコンピュータプログラムが提供される。コンピュータという用語は最も一般的な意味で使用され、コンピュータプログラムを実現するためのデータ処理機能を有する任意のデバイス、コンポーネント、またはシステムを含むことが理解されるであろう。その上、本発明を実施するコンピュータプログラムは、独立プログラムを構成する場合もあれば、より大きいプログラムの1つの要素になる場合もあり、たとえば、コンピュータにロードするためにディスクなどのコンピュータ可読媒体または電子伝送で実施して、供給することができる。コンピュータプログラムのプログラムコード手段は、直接またはa他の言語、コード、または表記への変換、およびb異なる物質的形式による複製のいずれか一方または両方の後、当該方法をコンピュータに実行させるための1組の命令を任意の言語、コード、または表記で表した任意の表現を含むことができる。本発明の第3の態様の一実施形態は、sf2であるsレベルソリッドステートストレージと、第1および第2のBCHコードによりM個の入力データワードからなるグループに入力データワードをエンコードし、M個の第1のコードワードの所定の一次結合が第2のBCHコードの第2のコードワードを生成するように、各グループごとに、第1のBCHコードのM個の第1のコードワードからなる集合を生成するための2レベルBCHエンコーダであって、第2のBCHコードが第1のBCHコードのサブコードである、2レベルBCHエンコーダとを含むソリッドステートストレージデバイスであって、このデバイスがM個の第1のコードワードからなる集合をsレベルストレージに記録するように適合される、ソリッドステートストレージデバイスを提供する。本発明の第4の態様の一実施形態は、sf2であるソリッドステートストレージデバイスのsレベルストレージに記録すべき入力データをエンコードするためのエンコーダ装置を提供する。このエンコーダ装置は、第1および第2のBCHコードによりM個の入力データワードからなるグループに入力データワードをエンコードし、M個の第1のコードワードの所定の一次結合が第2のBCHコードの第2のコードワードを生成するように、各グループごとに、第1のBCHコードのM個の第1のコードワードからなる集合を生成するための2レベルBCHエンコーダであって、第2のBCHコードが第1のBCHコードのサブコードであり、第1および第2のコードワードのそれぞれがN個のq進シンボルを含み、ここでqsであり、q=pkであり、kは正整数であり、pは素数であり、qおよびsは共通ベースrのそれぞれu乗およびv乗であり、ここでuおよびvは正整数であり、kfuであり、これによりpk/uv=sになる、2レベルBCHエンコーダと、sレベルストレージに記録するためにそれぞれの第1のコードワードのq進シンボルをs進アルファベットに変換するためのシンボルコンバータとを含む。一般に、本発明の一態様の一実施形態に関連して本明細書に特徴が記載されているが、本発明の他の態様の諸実施形態で対応する特徴を提供することもできる。次に、添付図面に関連して一例として本発明の好ましい諸実施形態について説明する。図1は、ソリッドステートストレージデバイス、ここではフラッシュメモリデバイス1の簡易概略図であり、説明すべきエンコードシステムに含まれる主要要素を示している。デバイス1は、フラッシュメモリセルの統合アレイにデータを保管するためのsレベルフラッシュメモリ2を含み、各セルはsf2通りのストレージレベルを想定することができる。同図には単一ブロックとして示されているが、一般に、フラッシュメモリ2は、たとえば、単一チップまたはダイから、それぞれがストレージチップの複数パッケージを含む複数のストレージバンクに及ぶ、任意の所望の構成のフラッシュストレージユニットを含むことができる。デバイス1は、2レベルBCHエンコーダ3と、同図では破線で囲まれているシンボルコンバータ4とを含むものとして一般化した形で示されているエンコーダ装置を有する。シンボルコンバータ4は、q進-r進コンバータ5と、チャネルマッピングユニット6とを含む。デバイス1の対応するデコーダ装置は、一般に、同図にはデコーダ7として示されている。一般に、BCHエンコーダ3、シンボルコンバータ4、およびデコーダ7の機能性は、ハードウェア、ソフトウェア、またはその組み合わせで実現できるであろう。たとえば、BCHエンコーダ3におけるエンコード動作は、以下に詳述するコード体系を実現するためにエンコーダ装置のプロセッサを構成するソフトウェアによって全部または一部を実行できるであろう。適切なソフトウェアは、本明細書の説明から当業者にとって明白になるであろう。しかし、動作速度の理由により、ハードワイヤード論理回路の使用は、一般に、可能な限り機能性を実現するために好ましいものである。加えて、エンコードプロセスは、一般に、系統的エンコードエンコードプロセスへの入力データはコーディングによって変化しないが、出力コードワードを入手するためにエンコードされないシンボルにパリティビットが追加されるまたは非系統的エンコードエンコードプロセスへの入力データは、コーディングによって出力コードワードに埋め込まれるによって実現できるあろう。しかし、エンコーダおよび対応するデコーダの実現を単純にするために系統的エンコードが好ましい。デバイス1のエンコーダおよびデコーダ装置の適切な実現例は、本明細書の説明から当業者にとって容易に明白になるであろう。デバイス1の動作時に、フラッシュメモリ2に記録すべき入力データはBCHエンコーダ3に供給される。入力データは連続した入力データワードを含み、これらは以下に詳細に説明する2レベルBCHエンコード方式によりBCHエンコーダ3によってM個の入力データワードからなるグループにエンコードされる。M個の入力データワード以下に説明するように異なる数のデータシンボルを有するワードを含む可能性があるからなる各グループごとに、BCHエンコーダ3はM個のq進シンボルコードワードからなる集合を出力しすなわち、これらのコードワードの単一シンボルはq個の可能な値を有する可能性がある、ここでq=pkであり、kは正整数であり、pは素数である。qとsとの関係次第で、シンボルコンバータ4は以下に詳述するように動作して、記録するためにq進シンボルコードワードをs進アルファベットに変換する。次に、s進シンボルコードワードはフラッシュメモリ2に記録され、それにより各フラッシュセルはコードワードの1つのs進シンボルを保管する。この実施形態では、フラッシュメモリの各ページはM個のs進コードワードからなる単一集合に十分な記憶域を提供し、それによりM個のs進コードワードからなる各集合はそれぞれのフラッシュページに保管される。その後、あるページがフラッシュメモリ2から読み取られる場合、デコーダ7はs進コードワードをデコードするためにエンコーダ装置3、4とは逆の処理を実行し、一般に知られている方法でエラー検出および回復動作を実現する。それにより、元の入力データワードは回復され、デコーダ7から出力データとして供給される。次に、BCHエンコーダ3の動作についてより詳細に説明する。エンコーダ3に供給されたM個の入力データワードからなる各グループは、ベクトル空間GFqK1からのM-P個のK1シンボルデータワードと、ベクトル空間GFqK2からのP個のK2シンボルデータワードで構成される。エンコーダ3は、第1のBCHコードによりM-P個のK1シンボルデータワードをそれぞれのNシンボルの第1のコードワードにマッピングする。この第1のBCHコードは、ベクトル空間GFqNからのNタプルの事前定義集合で構成される。したがって、このコードは入力q進シンボルデータワードをq進シンボルの第1のコードワードに1対1でマッピングし、M-P個の第1のコードワードのそれぞれに含まれるN-K1個のパリティシンボルはECCプロセスに必要な冗長性の第1の部分を提供する。さらに、エンコーダ3は第2のBCHコードにより残りのP個のK2シンボルデータワードをそれぞれのNシンボルの第2のコードワードにマッピングする。この第2のBCHコードは、ベクトル空間GFqNからのNタプルのもう1つの事前定義集合で構成され、第1のBCHコードのサブコードであり、すなわち、すべて第2のコードワードの集合はすべて第1のコードワードの集合のサブセットである。したがって、第2のコードは入力q進シンボルデータワードをq進シンボルの第2のコードワード第1のコードワードでもあるに1対1でマッピングし、P個のコードワードのそれぞれに含まれるN-K2個のパリティシンボルはECCプロセスに必要な冗長性の第2の部分を提供する。したがって、エンコーダはM個のコードワードからなる初期集合を生成する。次に、初期集合内のP個の第2のコードワードをP個の変更済み第1のコードワードで置き換えることによりM個のコードワードからなる最終集合が得られ、それぞれの変更済みコードワードのi番目のシンボルここでi=1~Nは初期集合内のM個のコードワードのi番目のシンボルの特定の一次結合である。これらの変更済みコードワードは、M個の第1のコードワードからなる最終集合が第2のBCHコードによって抑制されるように生成される。具体的には、M個の第1のコードワードからなる集合の少なくとも1つの所定の一次結合は第2のBCHコードのコードワードである。したがって、1つまたは複数の所定の一次結合に応じて結合されたときに、M個の第1のコードワードからなる結果集合は、第2のBCHコードの1つまたは複数の第2のコードワードを生成する。上記ではエンコーダ3における2レベルコード体系のための模範的な実現例を説明しているが、様々な2レベルコード構成を想定することができる。本発明の諸実施形態によれば、第1および第2のBCHコードによりM個の入力データワードからなる各グループをエンコードし、M個の第1のコードワードの所定の一次結合が第2のBCHコードの第2のコードワードを生成するように、第1のBCHコードのM個の第1のコードワードからなる集合を生成し、この第2のコードが第1のBCHコードのサブコードになる。単純な例は図2に概略的に示されている。第1および第2のコードワードは同図の一番上に2つの異なる長方形ブロックによって表されている。第1のコードワードのように第2のコードワードはそれぞれ、示されているようにN個のq進シンボルで構成される。M個の入力データワードからなる所与のグループの場合、M個の第1のコードワードからなる結果集合は、定義された順序で連結されると、同図の中心に示されているように、2レベルBCHコード全体のうちの2レベルコードワードを効果的に形成する。この2レベルコードワードは同図の一番下に示されている条件を満足する。すなわち、M個の第1のコードワードの合計シンボルごとは第2のBCHコードのコードワードを生成する。もう1つの模範的な2レベルコード体系は図3に示されている。この場合、M個の第1のコードワードの複数の一次結合のそれぞれは第2のBCHコードのコードワードを生成する。特に、定義された連結順序の場合、M個の第1のコードワードの複数の加重和のそれぞれはそれぞれの第2のコードワードになる。これは同図の一番下の条件によって一般化した形で示されており、は乗算を示している。特に、第2のコードワードはM個のコードワードのP個の加重和から得られ、これらの加重和の重み係数は、以下に説明するように第3の線形コードに対応するパリティチェック行列によって定義される。有限体GFqにおけるこのクラスの2レベルBCHコードCは、有限体GFqにおける3つのコードC1およびC2およびCの定義に基づくものであり、ここでqは素数の累乗である。このコードC1は、N-K1×Nのパリティチェック行列H1によって定義された最小距離dC1を有する第1のBCHコード[N,K1,dC1]である。第2のコードC2は、最小距離dC2を有する第2のBCHコード[N,K2,dC2]である。これは第1のコードC1のサブコードであり、N-K2×Nのパリティチェック行列によって定義され、ここでHaは、C2コードがパリティチェック制約H1に加えて満足しなければならないパリティチェック制約を表すK1-K2×Nのパリティチェック行列である。H=[hi,j]はサイズP×MのGFqにおけるフルランクパリティチェック行列であるとし、これは寸法がK=M-Pであり、最小寸法dCを有する線形[M,K,dC]コードを定義する。長さMNの2レベルコードC全体は、パリティチェック行列H=[hi,j]を有する線形コードCとコードC1およびC2から得られ、ここでC2⊂C1であり、というパリティチェック行列によって定義され、ここではサイズ[N-K1MK1-K2P]×[MN]のブロック行列であり、これは、Hbのi,j番目のサブブロックの単純な表現の使用に基づくHb=[hi,jHa]によって特徴付けることもできる。この場合、行列要素hi,jは図3の加重和のための重み係数を示す。長さMNの結果の2レベルコードCはKK1PK2という寸法とdC=min{dCdC1,dC2}という最小距離を有することが分かる。図2および図3のコーディングアーキテクチャにより多数の2レベルBCHコードを構築することができ、個々のシステムのパラメータに応じて特定のコードC1およびC2およびCを選択できることが認識されるであろう。具体的なコードは、たとえば、s進ストレージのレベルの数sおよび所与のシステムの性能要件に基づいて選択することができる。しかし、性能効率を強化し、実現を単純にするために、デバイス1の好ましい諸実施形態では、以下のようにBCHコードが選択される。1q=pk=ruであり、ここでkfuである。2s=rvである。ここでuおよびvは正整数である。換言すれば、qおよびsは共通ベースrのそれぞれu乗およびv乗である。これは、pk/uv=sという条件を意味するものであり、この条件は本明細書では整合アルファベット制約という。この制約を満足することは、2レベルBCHコードのq進アルファベットが最も効率的なデバイス動作のためにs進ストレージに整合することを保証する。特に、シンボルコンバータ4においてq進コードを単純かつ効率的にs進アルファベットに変換できることを保証しながら、コード選択の柔軟性が提供される。このため、コード体系はq=sのものに限定されないが、特定のsレベルストレージ特性について最良の結果をもたらすように選択することができる。sqであるデバイス1の動作時に、q進シンボルコードワードはq進-r進コンバータ5によってr進シンボルコードワードに変換され、ここで上記で定義されるようにrv=sである。ここでv>1である場合すなわち、rs、チャネルマッピングユニット6においてr進シンボルをメモリ2のsストレージチャネルにマッピングすることができる。特に、各r進入力コードワードのv個のr進シンボルからなる連続集合は、v個のr進シンボルのすべての可能な値をs通りのレベルのそれぞれ異なるレベルにマッピングする所定のマッピング方式によりsレベルストレージのそれぞれの対応するレベルにマッピングされる。チャネルマッピングは、当業者にとって明白になるようにs進ストレージのエラー特性に適合するように、任意の所望の方法で、ここでは、たとえば、既知のグレイマッピング方式を使用して実行することができる。したがって、v個のr進入力シンボルからなる各集合はチャネルマッピングユニット6の出力において1つのs進シンボルに対応し、対応するレベルとしてメモリ2のそれぞれのs進セルに記録される。u=1であり、それによりq=rである諸実施形態では、q進-r進変換は当然のことながら必要ではなく、コンバータ5は省略または迂回することができる。しかし、rsを想定すると、ここではv個のq進シンボルからなる集合について、依然として上述のようにチャネルマッピングを実行することができる。同様に、r=sである実施形態では、チャネルマッピングユニット6は省略または迂回することができる。したがって、一般に、シンボルコンバータ4は、ストレージシステムの特定のパラメータに応じてq進-r進変換およびチャネルマッピングのいずれか一方または両方を実行することができる。上記の2レベルコーディング技法はq=sであるシステムにも適用することができ、その場合、シンボルコンバータ4は全体として省略または迂回できることに留意されたい。上記のシステムはコード選択の並外れた柔軟性を提供することができるが、ストレージデバイス1で使用するための2つの特に興味深い系列のコード体系について以下に説明する。第1の系列のコード体系はr=s>2によって特徴付けられ、独立s進シンボルエラーを有するs進チャネルモデルによってメモリチャネルを記述できるときに特に有用である。第2の系列のコード体系はr=2およびk=uによって特徴付けられ、独立ビットエラーを有する2進チャネルによってチャネルマッピングユニット、メモリチャネル、リードバックプロセス、およびデコーダ7で実行される逆チャネルマッピングの連結を記述できるときに特に有用である。グレイエンコードがチャネルマッピングとして使用され、不揮発性メモリチャネル内のエラーの結果、チャネルレベルが隣接チャネルレベルとして誤って読み取られる場合に、独立ビットエラーチャネルは不揮発性sレベルメモリのための良いモデルである。この場合、q=2k、r=2、およびs=2vである。独立ビットエラーチャネルのための良い選択は、2レベル2進BCHコード体系を選択することになり、ここでq=2、すなわち、p=2およびk=1である。しかし、実現あるいはエラー率性能またはその両方の理由により、q>2であるGFqにおけるコードを使用することは有利なことになる可能性があり、ここでエンコードのための有限体演算はGFq=2kで実行され、k>1である。次に、フラッシュメモリ用の2レベルコードの2つの具体的な例について詳細に説明する。現在、フラッシュメモリ内の典型的な1ページは4KiBのユーザデータを含む。さらに、ページあたり使用可能なECC冗長性は224バイトであると想定される。2進コードを使用する場合、コード長MNは34560ビット単位でなければならず、コードの寸法は少なくとも32768ビット単位でなければならない。GF212におけるデコードアルゴリズムにより、長さ3840の2進BCHコードに基づいて、長さ34560=M×N=9×3840の2つの2進2レベルコードが構築される。第1の例では、[N=3840,K1=3660,d1=31]というパラメータを有する第1の2進BCHコードC1と、[N=3840,K2=3492,d2=59]というパラメータを有する第2の2進BCHコードC2と、長さM=9、寸法K=8、およびdC=2である単一パリティチェックコードCから、2進2レベルコードCが構築される。結果の2レベルコードは32772という寸法を有し、したがって、4KiBのユーザデータに対応することができる。さらに、dC=59であり、すなわち、このコードは29個までのエラーを訂正することができる。第2の例では、[N=3840,K1=3732,d1=19]というパラメータを有する第1の2進BCHコードC1と、[N=3840,K2=3528,d2=53]というパラメータを有する第2の2進BCHコードC2と、長さM=9、寸法K=5、およびdC=3である短縮ハミングコードCから、2進2レベルコードCが構築される。結果の2レベルコードは32772という寸法を有し、したがって、4KiBのユーザデータに対応することができる。さらに、dC=53であり、すなわち、このコードは26個までのエラーを訂正することができる。GF2におけるこれらの2進2レベルコード例は、[34560,32768,225]というパラメータを有する2進BCHコードと比較しなければならない。この長いBCHコードは112個までのエラーを訂正することができるが、そのデコードアルゴリズムは大きい体GF216で機能し、これは現在、SSDメモリでの適用には非現実的である。上記の2レベルコードのもう1つの比較は、[3840,3648,33]というパラメータを有する2進1レベルBCHコードの9ウェイインターリービング方式に関するものであり、これは16個までのエラーを訂正することができる。9個のインターリーブドBCHコードのそれぞれに関するデコーダはGF212において動作する。2レベルコードは同じ体GF212において動作するデコーダを有するが、単純な9ウェイインターリービング方式と比較すると、実質的により多くのエラーを訂正することができる。上記のようにsレベルフラッシュにおけるページエンコードのために整合アルファベット2レベルBCHコードを使用すると、非常に効率的なエラー訂正コーディングを提供することができる。BCHコードは、不揮発性フラッシュおよびPCMメモリなどのsレベルソリッドステートストレージのエラー特性に特に適しており、現行の不揮発性メモリ製品においてシンボルの長さが1ビット~4ビットである場合に記録媒体には独立シンボルエラーが発生する可能性がある。その上、実現の複雑さおよび消費電力に対する最小限の影響で、改善されたエラー性能を達成することができる。したがって、上記のシステムの使用により、並外れた総合性能を得ることができる。当然のことながら、本発明の範囲を逸脱せずに、上記の模範的な諸実施形態に対して多くの変更および修正が可能であることが認識されるであろう。"