【誤訳訂正書】
【提出日】平成26年12月22日(2014.12.22)
【誤訳訂正１】
【訂正対象書類名】特許請求の範囲
【訂正対象項目名】全文
【訂正方法】変更
【訂正の内容】
【特許請求の範囲】
【請求項１】
ｓ≧２であるソリッド・ステート・ストレージ・デバイスのｓレベル・ストレージに入力データを記録するための方法であって、
第１および第２のＢＣＨコードによりＭ個の入力データ・ワードからなるグループに入力データ・ワードをエンコードし、Ｍ個の第１のコードワードの所定の一次結合が前記第２のＢＣＨコードの第２のコードワードを生成するように、各グループごとに、前記第１のＢＣＨコードのＭ個の第１のコードワードからなる集合を生成するステップであって、前記第２のＢＣＨコードが前記第１のＢＣＨコードのサブコードである、前記生成するステップと、
Ｍ個の第１のコードワードからなる前記集合を前記ｓレベル・ストレージに記録するステップであって、
前記第１および第２のコードワードのそれぞれがＮ個のｑ進シンボルを含み、ここでｑ＝ｐｋであり、ｋは正整数であり、ｐは素数であり、
ｑおよびｓが共通ベースｒのそれぞれｕ乗およびｖ乗であり、ここでｕおよびｖは正整数であり、ｋ≧ｕであり、これによりｐ（ｋ／ｕ）ｖ＝ｓになる、
前記生成するステップと
を含む、前記方法。
【請求項２】
前記集合内の前記Ｍ個の第１のコードワードの合計が前記第２のコードワードである、請求項１に記載の方法。
【請求項３】
前記集合内の前記Ｍ個の第１のコードワードの複数の加重和のそれぞれがそれぞれの第２のコードワードであり、前記複数の加重和の重み係数が第３の線形コードに対応するパリティチェック行列によって定義される、請求項１または２に記載の方法。
【請求項４】
ｓ≠ｑである、請求項１〜３のいずれか一項に記載の方法。
【請求項５】
前記ｓレベル・ストレージに記録する前にそれぞれのｑ進の第１のコードワードをｒ進の第１のコードワードに変換するステップ
をさらに含む、請求項４に記載の方法。
【請求項６】
ｒ≠ｓであり、
所定のマッピング方式によりそれぞれのｒ進の第１のコードワードのｖ個のｒ進シンボルからなる連続集合を前記ｓレベル・ストレージのそれぞれの対応するレベルにマッピングするステップと、
ｖ個のｒ進シンボルからなる各集合を前記対応するレベルとして前記ｓレベル・ストレージに記録するステップと
をさらに含む、請求項５に記載の方法。
【請求項７】
ｑ＝ｒ≠ｓであり、
所定のマッピング方式によりそれぞれのｑ進の第１のコードワードのｖ個のｑ進シンボルからなる連続集合を前記ｓレベル・ストレージのそれぞれの対応するレベルにマッピングするステップと、
ｖ個のｑ進シンボルからなる各集合を前記対応するレベルとして前記ｓレベル・ストレージに記録するステップと
をさらに含む、請求項５に記載の方法。
【請求項８】
ｒ＝ｓ＞２である、請求項１〜７のいずれか一項に記載の方法。
【請求項９】
ｒ＝２およびｋ＝ｕである、請求項１〜８のいずれか一項に記載の方法。
【請求項１０】
ｓ＞２である、請求項１〜９のいずれか一項に記載の方法。
【請求項１１】
Ｍ個の第１のコードワードからなる前記集合のそれぞれを前記ソリッド・ステート・ストレージのそれぞれの書き込み位置に記録するステップ
を含む、請求項１〜１０のいずれか一項に記載の方法。
【請求項１２】
エンコーダ装置に、請求項１〜１１のいずれか一項に記載の方法の各ステップを実行させるコンピュータ・プログラム。
【請求項１３】
ｓ≧２であるソリッド・ステート・ストレージ・デバイスのｓレベル・ストレージに記録すべき入力データをエンコードするためのエンコーダ装置であって、
第１および第２のＢＣＨコードによりＭ個の入力データ・ワードからなるグループに入力データ・ワードをエンコードし、Ｍ個の第１のコードワードの所定の一次結合が前記第２のＢＣＨコードの第２のコードワードを生成するように、各グループごとに、前記第１のＢＣＨコードのＭ個の第１のコードワードからなる集合を生成するための２レベルＢＣＨエンコーダであって、前記第２のＢＣＨコードが前記第１のＢＣＨコードのサブコードであり、前記第１および第２のコードワードのそれぞれがＮ個のｑ進シンボルを含み、ここでｑ＝ｐｋであり、ｋは正整数であり、ｐは素数であり、ｑおよびｓは共通ベースｒのそれぞれｕ乗およびｖ乗であり、ここでｕおよびｖは正整数であり、ｋ≧ｕであり、これによりｐ（ｋ／ｕ）ｖ＝ｓになる、前記２レベルＢＣＨエンコーダと、
前記ｓレベル・ストレージに記録するためにそれぞれの第１のコードワードの前記ｑ進シンボルをｓ進アルファベットに変換するためのシンボル・コンバータと
を含む、前記エンコーダ装置。
【請求項１４】
ｓ≠ｑである、請求項１３に記載のエンコーダ装置。
【請求項１５】
ソリッド・ステート・ストレージ・デバイスであって、
ｓ≧２であるｓレベル・ソリッド・ステート・ストレージと、
第１および第２のＢＣＨコードによりＭ個の入力データ・ワードからなるグループに入力データ・ワードをエンコードし、Ｍ個の第１のコードワードの所定の一次結合が前記第２のＢＣＨコードの第２のコードワードを生成するように、各グループごとに、前記第１のＢＣＨコードのＭ個の第１のコードワードからなる集合を生成するための２レベルＢＣＨエンコーダであって、前記第２のＢＣＨコードが前記第１のＢＣＨコードのサブコードである、前記２レベルＢＣＨエンコーダと
を含み、
前記デバイスがＭ個の第１のコードワードからなる前記集合を前記ｓレベル・ストレージに記録するように適合され、
前記第１および第２のコードワードのそれぞれがＮ個のｑ進シンボルを含み、ここでｑ＝ｐｋであり、ｋは正整数であり、ｐは素数であり、
ｑおよびｓが共通ベースｒのそれぞれｕ乗およびｖ乗であり、ここでｕおよびｖは正整数であり、ｋ≧ｕであり、これによりｐ（ｋ／ｕ）ｖ＝ｓになる、
前記ソリッド・ステート・ストレージ・デバイス。
【誤訳訂正２】
【訂正対象書類名】明細書
【訂正対象項目名】全文
【訂正方法】変更
【訂正の内容】
【発明の詳細な説明】
【発明の名称】ソリッド・ステート・ストレージ・デバイスのｓレベル・ストレージに入力データを記録するための方法、エンコーダ装置、およびソリッド・ステート・ストレージ・デバイス
【技術分野】
【０００１】
本発明は、一般に、ソリッド・ステート・ストレージ・デバイス（ＳＳＤ）におけるデータ・エンコードに関する。データをエンコードし、エンコードされたデータをｓレベル・ソリッド・ステート・ストレージに記録するための方法および装置が提供され、ここでｓ≧２はソリッド・ステート・メモリの基本記憶単位または「セル」によって想定可能な異なる値またはレベルの数を表す。
【背景技術】
【０００２】
ソリッド・ステート・ストレージは、ディスクおよびテープのような従来の磁気または光メディアではなく、データを保管するために電子回路、典型的には集積回路を使用するメモリである。フラッシュ・メモリ・デバイスなどのソリッド・ステート・ストレージ・デバイスは、現在、データ記憶の分野に革命を起こしている。このようなデバイスは、可動部がないために従来のストレージ・デバイスより堅牢であり、並外れた帯域幅、消費電力の大幅な節約、およびハード・ディスク・ドライブ（ＨＤＤ）より数桁分優れたランダムＩ／Ｏ（入出力）性能を提供する。
【０００３】
ＨＤＤなどの従来のストレージ・デバイスは２進データを記録する。すなわち、このようなデバイス内の基本記憶単位は１ビットの情報のみを保持する。ＤＲＡＭ（ダイナミック・ランダム・アクセス・メモリ）などの揮発性ソリッド・ステート・メモリ技術も２進データを記録し、このようなメモリ内の基本記憶セルは２つのレベルしか想定できず（ｓ＝２）、このため、２進値しか記録できない。しかし、その他のタイプのＳＳＤでは、記憶セルは３つ以上のレベルを想定することができる（ｓ＞２）。たとえば、フラッシュ・メモリおよび相変化メモリ（ＰＣＭ）という２つの重要な不揮発性メモリ技術はマルチレベル記録を可能にする。たとえば、ＮＯＲフラッシュ・メモリはセルあたり４つのレベル、すなわち、２ビットを保管することができる。４３ｎｍプロセス技術を使用して単一フラッシュ・セルあたり４ビットのデータを保管できるマルチレベル・セル（ＭＬＣ）ＮＡＮＤフラッシュ・メモリ・チップが現在入手可能である。ＰＣＭ技術は、１０ｎｍ以下のプロセス技術が必要であるときにフラッシュ・メモリ技術に取って代わることが期待されている。市販のＰＣＭチップは現在、セルあたり１ビットしか保管できないが、ＰＣＭチップ内でセルあたり４ビットを保管することはすでに実験的に実証されている。
【０００４】
デジタル・カメラおよびミュージック・プレーヤのような消費者製品においてフラッシュおよびＰＣＭなどのソリッド・ステート・メモリが成功したことにより、これらのメモリ技術は、現在、エンタープライズ・ストレージ用に考慮されている。エラー性能は、常にデータ・ストレージ・デバイスに関する重要な問題であり、これらの技術がエンタープライズ空間に移行するにつれてますます重要になっている。ＨＤＤのような従来のストレージ・デバイスは約１０％〜１５％のＥＣＣ（エラー訂正コード）オーバヘッドを有するが、市販のフラッシュ・メモリにおけるＥＣＣオーバヘッドは約２．５％〜５％に過ぎない。したがって、これらのデバイスにおけるＥＣコード体系（ｃｏｄｉｎｇ  ｓｃｈｅｍｅ）には、効率が重要である。
【０００５】
ＳＳＤでは、ストレージは記憶領域またはブロック単位で編成され、そのそれぞれが１組の記憶位置を含み、そこにデータを書き込むことができる。ＥＣコーディングは、書き込み単位レベルで、すなわち、それぞれのデータ書き込み位置内で冗長性を追加することによりＳＳＤで実行される。たとえば、フラッシュ・メモリは、「ページ」として知られるデータ書き込み位置を含む。それぞれのページは複数のセクタを含むが、書き込み動作は通常、ページごとに実行される。各フラッシュ・ページまたはあるページ内の各セクタに書き込まれた入力データについて１つのＥＣコードが計算され、そのＥＣコードは入力データとともにそのページまたはセクタに記録される。このコーディングにより、個々のデータ・ページ内でエラーからの回復が可能になる。このいわゆる「１レベル」ＥＣコーディングにはＲＳ（リード・ソロモン）コードおよびＢＣＨ（ボース・チャウドゥーリー・オッカンガム）コードなどの線形コードが使用されてきた。「長い」１レベル・コードは、そのエンコードがページごとに（すなわち、ページあたり１つのコードワードで）実行される場合、使用可能なページ冗長性を最も十分に利用し、したがって、最良のエラー性能をもたらすが、このような方式は実現するには極めて複雑であり、ページ・サイズおよび所望のエラー訂正能力が大きい場合に大量の消費電力を必要とする。このようなコードに関連する複雑さは、エンコードおよびデコード演算が実行される有限体（ガロア体（ＧＦ））のサイズに依存する。（以下では、ＧＦ（ｑ）によって示されるｑ個の要素を有するガロア体からの要素を有するすべてのＮタプルからなる集合は、ＧＦ（ｑ）Ｎによって示されるベクトル空間である。）たとえば、２ＫｉＢおよび４ＫｉＢというペイロードを有する２つの異なるページ・サイズ用の長い１レベル・コードが設計されている。２ＫｉＢおよび４ＫｉＢというペイロードを有する長い１レベル・コードの使用可能なＥＣＣオーバヘッド（冗長性）はそれぞれ５６バイトと１２０バイトであると想定されていた。最良の２ＫｉＢの１レベルＲＳコード（ここで２ＫｉＢはページ・サイズである）は、ページあたり２０個までのランダムに選択された１１ビット・シンボルを訂正することができるが、エンコードとデコードの両方にＧＦ（２１１）の演算が必要である。最良の４ＫｉＢの１レベルＲＳコードは、１ページ内で４０個までのランダムに選択された１２ビット・シンボルを訂正することができるが、エンコードとデコードにＧＦ（２１２）の演算が必要である。その上、最良の２ＫｉＢの１レベルＢＣＨコードは、ページあたり２９個までのランダムに選択されたビットを訂正することができ、エンコードにはＧＦ（２）の演算が必要であるが、デコードにはＧＦ（２１５）の演算が必要である。最良の４ＫｉＢの１レベルＢＣＨコードは、ページあたり６０個までのランダムに選択されたビットを訂正することができ、エンコードにはＧＦ（２）の演算が必要であるが、デコードにはＧＦ（２１６）の演算が必要である。これらの長いコードは過度に複雑であるので、実際には単一ページに複数のより短いコードワードが含まれる「短い」１レベル・コードが使用され、実現の実用性のためにエラー性能が犠牲になる。
【０００６】
米国特許第７０４７４７８Ｂ２号では、すべての使用可能なストレージ・レベルが使用されるモードから、すべてのレベルが使用されるわけではないモードに、オペレーティング・モードが切り替え可能であるマルチレベル・セル・メモリ用の１レベル・コーディング・システムを開示している。これに対応するために、コード体系はｑ進アルファベット（すなわち、ｑ通りの値を取ることができるシンボルでコードワードが形成される）を使用し、ここでｑはマルチレベル・セルの使用可能なレベルの数に等しい。
【０００７】
Ｍ．Ｈａｓｓｎｅｒ他による「Ｉｎｔｅｇｒａｔｅｄ  Ｉｎｔｅｒｌｅａｖｉｎｇ  −  Ａ  Ｎｏｖｅｌ  ＥＣＣ  Ａｒｃｈｉｔｅｃｔｕｒｅ」（ＩＥＥＥ  Ｔｒａｎｓ．ｏｎ  Ｍａｇｎ．、第３７巻、第２号、７７３〜７７５ページ、２００１年３月）ならびに米国特許第５９４６３２８号、第５９４２００５号、および第７２３１５７８Ｂ２号に記載されているように、ＨＤＤではインターリーブドＲＳコード（ｉｎｔｅｒｌｅａｖｅｄ  ＲＳ  ｃｏｄｅ）を使用する２レベル・コード体系が使用されてきた。これらのシステムは、たとえば、Ｅ．Ｌ．ＢｌｏｋｈおよびＶ．Ｖ．Ｚｙａｂｌｏｖによる「Ｇｅｎｅｒａｌｉｚｅｄ  ｃｏｎｃａｔｅｎａｔｅｄ  ｃｏｄｅｓ」（Ｐｌｅｎｕｍ  Ｐｕｂｌｉｓｈｉｎｇ  Ｃｏｒｐｏｒａｔｉｏｎ、２１８〜２２２ページ、１９７６年（Ｐｒｏｂｌｅｍｙ  Ｐｅｒｅｄａｃｈｉ  Ｉｎｆｏｒｍａｔｓｉｉ、第１０巻、第３号、４５〜５０ページから翻訳、１９７４年７〜９月）ならびにＪ．Ｍａｕｃｈｅｒ他による「Ｏｎ  ｔｈｅ  Ｅｑｕｉｖａｌｅｎｃｅ  ｏｆ  Ｇｅｎｅｒａｌｉｚｅｄ  Ｃｏｎｃａｔｅｎａｔｅｄ  Ｃｏｄｅｓ  ａｎｄ  Ｇｅｎｅｒａｌｉｚｅｄ  Ｅｒｒｏｒ  Ｌｏｃａｔｉｏｎ  Ｃｏｄｅｓ」（ＩＥＥＥ  Ｔｒａｎｓ．ｏｎ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｔｈｅｏｒｙ、第４６巻、第２号、２０００年３月）に記載されている汎用型連結コードに基づくものである。上記で参照したＨａｓｓｎｅｒ他による２レベルＲＳコード体系は、それぞれＣ１およびＣ２によって示される第１および第２のＲＳコードを使用し、ここで第２のＲＳコードは第１のＲＳコードのサブコードである。Ｍ個の第１の（Ｃ１）コードワードからなる集合は、これらのＭ個のコードワードからなる一次結合が第２の（Ｃ２）コードワードになるように生成される。特に、前述の集合内のＭ個のＣ１コードワードのＢｆ１個の加重和（ｗｅｉｇｈｔｅｄ  ｓｕｍ）は第２のＲＳコードのそれぞれのＣ２コードワードである。これらの加重和のための重み係数（ｗｅｉｇｈｔｉｎｇ  ｃｏｅｆｆｉｃｉｅｎｔ）はヴァンデルモンド行列（Ｖａｎｄｅｒｍｏｎｄｅ  ｍａｔｒｉｘ）によって定義される。加えて、このコード体系はＭ＜ｑという制限の対象になり、すなわち、前述の集合内のＣ１コードワードの数Ｍはガロア体要素の総数ｑより小さい。たとえば、ＧＦ（ｑ＝２）における２進線形コードの場合、統合インターリービング・コードについてＭ＜２という条件が適用され、、すなわち、Ｍ＝１であり、Ｈａｓｓｎｅｒ他によって定義された統合インターリービング・コードの系列は２進の２レベル・コードを含まない。この体系において、１つのセクタについてインターリーブされた複数のＲＳコードワードを使用すると、ＨＤＤチャネルにおけるバースト・エラーに対するロバストネスが増加する。ＲＳコードはこれに十分適しており、一般に広く支持されている。ＲＳコードの重み分布が分かっているので、これは、ある程度、性能評価が容易であるためである可能性がある。また、上記で例示したように、実現の複雑さはＢＣＨコードに比べて勝るとも劣らず、特にデコードはＲＳコードの場合より著しく簡単である。
【０００８】
Ｊｕｎｓｈｅｎｇ  Ｈａｎ他による「Ｒｅｌｉａｂｌｅ  Ｍｅｍｏｒｉｅｓ  ｗｉｔｈ  Ｓｕｂｌｉｎｅ  Ａｃｃｅｓｓｅｓ」（ＩＳＩＴ２００７、フランス・ニース、６月２４日〜６月２９日、２５３１〜２５３５ページ）および米国特許出願第２００８／０１６８３２９Ａ１号に述べられているように、２レベルＲＳコーディングはＤＲＡＭにも採用されてきた。この２レベルＲＳコーディングは、上記で参照したＨａｓｓｎｅｒ他による統合インターリービング方式に基づくものであるが、コード設計の詳細およびデコード・アルゴリズムは指定されていない。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】米国特許第７０４７４７８Ｂ２号
【特許文献２】米国特許第５９４６３２８号
【特許文献３】米国特許第５９４２００５号
【特許文献４】米国特許第７２３１５７８Ｂ２号
【特許文献５】米国特許出願第２００８／０１６８３２９Ａ１号
【非特許文献】
【００１０】
【非特許文献１】Ｍ．Ｈａｓｓｎｅｒ他による「Ｉｎｔｅｇｒａｔｅｄ  Ｉｎｔｅｒ  ｌｅａｖｉｎｇ  −  Ａ  Ｎｏｖｅｌ  ＥＣＣ  Ａｒｃｈｉｔｅｃｔｕｒｅ」（ＩＥＥＥ  Ｔｒａｎｓ．  ｏｎ  Ｍａｇｎ．、第３７巻、第２号、７７３〜７７５ページ、２００１年３月）
【非特許文献２】Ｅ．Ｌ．ＢｌｏｋｈおよびＶ．Ｖ．Ｚｙａｂｌｏｖによる「Ｇｅｎｅｒａｌｉｚｅｄ  ｃｏｎｃａｔｅｎａｔｅｄ  ｃｏｄｅｓ」（Ｐｌｅｎｕｍ  Ｐｕｂｌｉｓｈｉｎｇ  Ｃｏｒｐｏｒａｔｉｏｎ、２１８〜２２２ページ、１９７６年（Ｐｒｏｂｌｅｍｙ  Ｐｅｒｅｄａｃｈｉ  Ｉｎｆｏｒｍａｔｓｉｉ、第１０巻、第３号、４５〜５０ページから翻訳、１９７４年７〜９月）
【非特許文献３】Ｊ．Ｍａｕｃｈｅｒ他による「Ｏｎ  ｔｈｅ  Ｅｑｕｉｖａｌｅｎｃｅ  ｏｆ  Ｇｅｎｅｒａｌｉｚｅｄ  Ｃｏｎｃａｔｅｎａｔｅｄ  Ｃｏｄｅｓ  ａｎｄ  Ｇｅｎｅｒａｌｉｚｅｄ  Ｅｒｒｏｒ  Ｌｏｃａｔｉｏｎ  Ｃｏｄｅｓ」（ＩＥＥＥ  Ｔｒａｎｓ．ｏｎ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｔｈｅｏｒｙ、第４６巻、第２号、２０００年３月）
【非特許文献４】Ｊｕｎｓｈｅｎｇ  Ｈａｎ他による「Ｒｅｌｉａｂｌｅ  Ｍｅｍｏｒｉｅｓ  ｗｉｔｈ  Ｓｕｂｌｉｎｅ  Ａｃｃｅｓｓｅｓ」（ＩＳＩＴ２００７、フランス・ニース、６月２４日〜６月２９日、２５３１〜２５３５ページ）
【発明の概要】
【発明が解決しようとする課題】
【００１１】
本発明の一態様の一実施形態は、ｓ≧２であるソリッド・ステート・ストレージ・デバイスのｓレベル・ストレージに入力データを記録するための方法を提供する。この方法は、
第１および第２のＢＣＨコードによりＭ個の入力データ・ワードからなるグループに入力データ・ワードをエンコードし、Ｍ個の第１のコードワードの所定の一次結合が第２のＢＣＨコードの第２のコードワードを生成するように、各グループごとに、第１のＢＣＨコードのＭ個の第１のコードワードからなる集合を生成し、第２のＢＣＨコードが第１のＢＣＨコードのサブコードであることと、
Ｍ個の第１のコードワードからなる集合をｓレベル・ストレージに記録すること
を含む。
【課題を解決するための手段】
【００１２】
上述のＲＳコードの確立された使用法とは対照的に、本発明を実施する方法は、ｓレベル・ソリッド・ステート・ストレージ・デバイスにおける２レベル・エンコードにＢＣＨコードを使用する。本発明の諸実施形態は、ある程度、ＢＣＨコードが特にＳＳＤストレージ・チャネル内のエラー・パターンの訂正に十分適しているという認識に基づいている。加えて、２レベルＢＣＨコード体系を使用することにより、デコーダの複雑さの影響を最小限にしながら、エラー性能の利点を活用することができる。実際に、実現の複雑さという点で最小限の不利を伴うが、良好なエラー率性能を達成することができる。認識された欠点にもかかわらず、ＳＳＤにおける２レベル・コーディングにＢＣＨコードを使用することにより、実現の複雑さが低く、消費電力も少ない、非常に効率的なエラー訂正方式を達成することができる。その上、以下に詳述するように、ＢＣＨコード特性は、ＳＳＤセルのレベルの数ｓおよびＳＳＤチャネルのエラー構造に適合するように容易に調整することができる。したがって、全体的に見て、本発明を実施する記録方法は、ｓレベル・ソリッド・ステート・メモリに情報を確実に保管するための実用的で効率的なシステムを提供することができる。
【００１３】
一般に、エンコードすべき入力データ・ワードは複数のデータ・シンボルを含むことができ、ここでデータ・シンボルは単一ビット（すなわち、２進）シンボルまたは複数ビット・シンボルにすることができる。本発明の好ましい諸実施形態では、第１および第２のコードワードのそれぞれは複数の（Ｎによって示される）ｑ進シンボルを含み、ここでｑ＝ｐｋであり、ｋは正整数であり、ｐは素数である。その上、特に好ましい諸実施形態では、特に効率的な動作のためにソリッド・ステート・ストレージのレベルの数ｓに合わせて２レベルＢＣＨコードのｑ進アルファベットが調整される。これは、ｑおよびｓが共通ベースｒのそれぞれｕ乗およびｖ乗になるようなコードの使用によって達成され、ここでｕおよびｖは正整数であり、ｋ≧ｕである。これは、ｐ（ｋ／ｕ）ｖ＝ｓという条件によりｑ進コード・アルファベットがｓ進ストレージに「整合」することを保証するものである。コードがこの「整合アルファベット（ｍａｔｃｈｅｄ  ａｌｐｈａｂｅｔ）」制約を満足することを保証することにより、ｑ進コードワード・シンボルはｓレベル・ストレージに記録するために単純かつ効率的にｓ進アルファベットに変換することができ、非常に効率的な動作ならびにコード選択の柔軟性を提供する。特に、事例によってはｑおよびｓが同じである可能性があるが、ｑ≠ｓである好ましい諸実施形態については以下に詳述する。加えて、本発明を実施する方法は２進（ｓ＝２）ソリッド・ステート・ストレージに適用することができるが、好ましい諸実施形態はマルチレベル・ソリッド・ステート・ストレージ（ｓ＞２）のための柔軟かつ効率的な動作を提供する。
【００１４】
特に好ましい諸実施形態では、Ｍ個の第１のコードワードからなる各集合はソリッド・ステート・ストレージのそれぞれの書き込み位置に記録される。たとえば、フラッシュ・メモリでは、各ページはＭ個の第１のコードワードからなる単一集合を含むことになる。しかし、実施形態によっては、Ｍ個の第１のコードワードからなる複数の集合を各書き込み位置に、たとえば、フラッシュ・ページのセクタあたり１つの集合を、記録することが望ましい場合もある。また、Ｍ個の第１のコードワードからなる各集合がソリッド・ステート・ストレージの複数の書き込み位置に記録される諸実施形態も想定することができるであろう。
【００１５】
本発明の他の態様の一実施形態により、本発明の第１の態様による方法をコンピュータに実行させるためのプログラム・コード手段を含むコンピュータ・プログラムが提供される。「コンピュータ」という用語は最も一般的な意味で使用され、コンピュータ・プログラムを実現するためのデータ処理機能を有する任意のデバイス、コンポーネント、またはシステムを含むことが理解されるであろう。その上、本発明を実施するコンピュータ・プログラムは、独立プログラムを構成する場合もあれば、より大きいプログラムの１つの要素になる場合もあり、たとえば、コンピュータにロードするためにディスクなどのコンピュータ可読媒体または電子伝送で実施して、供給することができる。コンピュータ・プログラムのプログラム・コード手段は、直接または（ａ）他の言語、コード、または表記への変換、および（ｂ）異なる物質的形式による複製のいずれか一方または両方の後、当該方法をコンピュータに実行させるための１組の命令を任意の言語、コード、または表記で表した任意の表現を含むことができる。
【００１６】
本発明の第３の態様の一実施形態は、
ｓ≧２であるｓレベル・ソリッド・ステート・ストレージと、
第１および第２のＢＣＨコードによりＭ個の入力データ・ワードからなるグループに入力データ・ワードをエンコードし、Ｍ個の第１のコードワードの所定の一次結合が第２のＢＣＨコードの第２のコードワードを生成するように、各グループごとに、第１のＢＣＨコードのＭ個の第１のコードワードからなる集合を生成するための２レベルＢＣＨエンコーダであって、第２のＢＣＨコードが第１のＢＣＨコードのサブコードである、２レベルＢＣＨエンコーダと
を含むソリッド・ステート・ストレージ・デバイスであって、
このデバイスがＭ個の第１のコードワードからなる集合をｓレベル・ストレージに記録するように適合される、ソリッド・ステート・ストレージ・デバイスを提供する。
【００１７】
本発明の第４の態様の一実施形態は、ｓ≧２であるソリッド・ステート・ストレージ・デバイスのｓレベル・ストレージに記録すべき入力データをエンコードするためのエンコーダ装置を提供する。このエンコーダ装置は、
第１および第２のＢＣＨコードによりＭ個の入力データ・ワードからなるグループに入力データ・ワードをエンコードし、Ｍ個の第１のコードワードの所定の一次結合が第２のＢＣＨコードの第２のコードワードを生成するように、各グループごとに、第１のＢＣＨコードのＭ個の第１のコードワードからなる集合を生成するための２レベルＢＣＨエンコーダであって、第２のＢＣＨコードが第１のＢＣＨコードのサブコードであり、第１および第２のコードワードのそれぞれがＮ個のｑ進シンボルを含み、ここでｑ≠ｓであり、ｑ＝ｐｋであり、ｋは正整数であり、ｐは素数であり、ｑおよびｓは共通ベースｒのそれぞれｕ乗およびｖ乗であり、ここでｕおよびｖは正整数であり、ｋ≧ｕであり、これによりｐ（ｋ／ｕ）ｖ＝ｓになる、２レベルＢＣＨエンコーダと、
ｓレベル・ストレージに記録するためにそれぞれの第１のコードワードのｑ進シンボルをｓ進アルファベットに変換するためのシンボル・コンバータと
を含む。
【００１８】
一般に、本発明の一態様の一実施形態に関連して本明細書に特徴が記載されているが、本発明の他の態様の諸実施形態で対応する特徴を提供することもできる。
【００１９】
次に、添付図面に関連して一例として本発明の好ましい諸実施形態について説明する。
【図面の簡単な説明】
【００２０】
【図１】本発明を実施するｓレベル・ソリッド・ステート・ストレージ・デバイスの概略ブロック図である。
【図２】図１のデバイスで使用するための第１の２レベル・コード体系を示す図である。
【図３】図１のデバイスで使用するための第２の２レベル・コード体系を示す図である。
【発明を実施するための形態】
【００２１】
図１は、ソリッド・ステート・ストレージ・デバイス、ここではフラッシュ・メモリ・デバイス１の簡易概略図であり、説明すべきエンコード・システムに含まれる主要要素を示している。デバイス１は、フラッシュ・メモリ・セルの統合アレイにデータを保管するためのｓレベル・フラッシュ・メモリ２を含み、各セルはｓ≧２通りのストレージ・レベルを想定することができる。同図には単一ブロックとして示されているが、一般に、フラッシュ・メモリ２は、たとえば、単一チップまたはダイから、それぞれがストレージ・チップの複数パッケージを含む複数のストレージ・バンクに及ぶ、任意の所望の構成のフラッシュ・ストレージ・ユニットを含むことができる。デバイス１は、２レベルＢＣＨエンコーダ３と、同図では破線で囲まれているシンボル・コンバータ４とを含むものとして一般化した形で示されているエンコーダ装置を有する。シンボル・コンバータ４は、ｑ進−ｒ進コンバータ５と、チャネル・マッピング・ユニット６とを含む。デバイス１の対応するデコーダ装置は、一般に、同図にはデコーダ７として示されている。
【００２２】
一般に、ＢＣＨエンコーダ３、シンボル・コンバータ４、およびデコーダ７の機能性は、ハードウェア、ソフトウェア、またはその組み合わせで実現できるであろう。たとえば、ＢＣＨエンコーダ３におけるエンコード動作は、以下に詳述するコード体系を実現するためにエンコーダ装置のプロセッサを構成するソフトウェアによって全部または一部を実行できるであろう。適切なソフトウェアは、本明細書の説明から当業者にとって明白になるであろう。しかし、動作速度の理由により、ハードワイヤード論理回路の使用は、一般に、可能な限り機能性を実現するために好ましいものである。加えて、エンコード・プロセスは、一般に、系統的エンコード（エンコード・プロセスへの入力データはコーディングによって変化しないが、出力コードワードを入手するためにエンコードされないシンボルにパリティ・ビットが追加される）または非系統的エンコード（エンコード・プロセスへの入力データは、コーディングによって出力コードワードに埋め込まれる）によって実現できるであろう。しかし、エンコーダ（および対応するデコーダ）の実現を単純にするために系統的エンコードが好ましい。デバイス１のエンコーダおよびデコーダ装置の適切な実現例は、本明細書の説明から当業者にとって容易に明白になるであろう。
【００２３】
デバイス１の動作時に、フラッシュ・メモリ２に記録すべき入力データはＢＣＨエンコーダ３に供給される。入力データは連続した入力データ・ワードを含み、これらは以下に詳細に説明する２レベルＢＣＨエンコード方式によりＢＣＨエンコーダ３によってＭ個の入力データ・ワードからなるグループにエンコードされる。Ｍ個の入力データ・ワード（以下に説明するように異なる数のデータ・シンボルを有するワードを含む可能性がある）からなる各グループごとに、ＢＣＨエンコーダ３はＭ個のｑ進シンボル・コードワードからなる集合を出力し（すなわち、これらのコードワードの単一シンボルはｑ個の可能な値を有する可能性がある）、ここでｑ＝ｐｋであり、ｋは正整数であり、ｐは素数である。ｑとｓとの関係次第で、シンボル・コンバータ４は以下に詳述するように動作して、記録するためにｑ進シンボル・コードワードをｓ進アルファベットに変換する。次に、ｓ進シンボル・コードワードはフラッシュ・メモリ２に記録され、それにより各フラッシュ・セルはコードワードの１つのｓ進シンボルを保管する。この実施形態では、フラッシュ・メモリの各ページはＭ個のｓ進コードワードからなる単一集合に十分な記憶域を提供し、それによりＭ個のｓ進コードワードからなる各集合はそれぞれのフラッシュ・ページに保管される。その後、あるページがフラッシュ・メモリ２から読み取られる場合、デコーダ７はｓ進コードワードをデコードするためにエンコーダ装置３、４とは逆の処理を実行し、一般に知られている方法でエラー検出および回復動作を実現する。それにより、元の入力データ・ワードは回復され、デコーダ７から出力データとして供給される。
【００２４】
次に、ＢＣＨエンコーダ３の動作についてより詳細に説明する。エンコーダ３に供給されたＭ個の入力データ・ワードからなる各グループは、ベクトル空間ＧＦ（ｑ）Ｋ１からの（Ｍ−Ｐ）個のＫ１シンボル・データ・ワードと、ベクトル空間ＧＦ（ｑ）Ｋ２からのＰ個のＫ２シンボル・データ・ワードで構成される。エンコーダ３は、第１のＢＣＨコードにより（Ｍ−Ｐ）個のＫ１シンボル・データ・ワードをそれぞれのＮシンボルの第１のコードワードにマッピングする。この第１のＢＣＨコードは、ベクトル空間ＧＦ（ｑ）ＮからのＮタプルの事前定義集合で構成される。したがって、このコードは入力ｑ進シンボル・データ・ワードをｑ進シンボルの第１のコードワードに１対１でマッピングし、（Ｍ−Ｐ）個の第１のコードワードのそれぞれに含まれるＮ−Ｋ１個のパリティ・シンボルはＥＣＣプロセスに必要な冗長性の第１の部分を提供する。さらに、エンコーダ３は第２のＢＣＨコードにより残りのＰ個のＫ２シンボル・データ・ワードをそれぞれのＮシンボルの第２のコードワードにマッピングする。この第２のＢＣＨコードは、ベクトル空間ＧＦ（ｑ）ＮからのＮタプルのもう１つの事前定義集合で構成され、第１のＢＣＨコードのサブコードであり、すなわち、すべて第２のコードワードの集合はすべて第１のコードワードの集合のサブセットである。したがって、第２のコードは入力ｑ進シンボル・データ・ワードをｑ進シンボルの第２のコードワード（第１のコードワードでもある）に１対１でマッピングし、Ｐ個のコードワードのそれぞれに含まれるＮ−Ｋ２個のパリティ・シンボルはＥＣＣプロセスに必要な冗長性の第２の部分を提供する。したがって、エンコーダはＭ個のコードワードからなる初期集合を生成する。次に、初期集合内のＰ個の第２のコードワードをＰ個の変更済み（第１の）コードワードで置き換えることによりＭ個のコードワードからなる最終集合が得られ、それぞれの変更済みコードワードのｉ番目のシンボル（ここでｉ＝１〜Ｎ）は初期集合内のＭ個のコードワードのｉ番目のシンボルの特定の一次結合である。これらの変更済みコードワードは、Ｍ個の第１のコードワードからなる最終集合が第２のＢＣＨコードによって抑制されるように生成される。具体的には、Ｍ個の第１のコードワードからなる集合の少なくとも１つの所定の一次結合は第２のＢＣＨコードのコードワードである。したがって、１つまたは複数の所定の一次結合に応じて結合されたときに、Ｍ個の第１のコードワードからなる結果集合は、第２のＢＣＨコードの１つまたは複数の第２のコードワードを生成する。
【００２５】
上記ではエンコーダ３における２レベル・コード体系のための模範的な実現例を説明しているが、様々な２レベル・コード構成を想定することができる。本発明の諸実施形態によれば、第１および第２のＢＣＨコードによりＭ個の入力データ・ワードからなる各グループをエンコードし、Ｍ個の第１のコードワードの所定の一次結合が第２のＢＣＨコードの第２のコードワードを生成するように、第１のＢＣＨコードのＭ個の第１のコードワードからなる集合を生成し、この第２のコードが第１のＢＣＨコードのサブコードになる。単純な例は図２に概略的に示されている。第１および第２のコードワードは同図の一番上に２つの異なる長方形ブロックによって表されている。第１のコードワードのように第２のコードワードはそれぞれ、示されているようにＮ個のｑ進シンボルで構成される。Ｍ個の入力データ・ワードからなる所与のグループの場合、Ｍ個の第１のコードワードからなる結果集合は、定義された順序で連結されると、同図の中心に示されているように、２レベルＢＣＨコード全体のうちの２レベル・コードワードを効果的に形成する。この２レベル・コードワードは同図の一番下に示されている条件を満足する。すなわち、Ｍ個の第１のコードワードの合計（シンボルごと）は第２のＢＣＨコードのコードワードを生成する。
【００２６】
もう１つの模範的な２レベル・コード体系は図３に示されている。この場合、Ｍ個の第１のコードワードの複数の一次結合のそれぞれは第２のＢＣＨコードのコードワードを生成する。特に、定義された連結順序の場合、Ｍ個の第１のコードワードの複数の加重和のそれぞれはそれぞれの第２のコードワードになる。これは同図の一番下の条件によって一般化した形で示されており、「＊」は乗算を示している。特に、第２のコードワードはＭ個のコードワードのＰ個の加重和から得られ、これらの加重和の重み係数は、以下に説明するように第３の線形コードに対応するパリティチェック行列によって定義される。
【００２７】
有限体ＧＦ（ｑ）におけるこのクラスの２レベルＢＣＨコードＣは、有限体ＧＦ（ｑ）における３つのコードＣ１およびＣ２およびＣ＊の定義に基づくものであり、ここでｑは素数の累乗である。このコードＣ１は、（Ｎ−Ｋ１）×Ｎのパリティチェック行列Ｈ１によって定義された最小距離ｄ（Ｃ１）を有する第１のＢＣＨコード［Ｎ，Ｋ１，ｄ（Ｃ１）］である。第２のコードＣ２は、最小距離ｄ（Ｃ２）を有する第２のＢＣＨコード［Ｎ，Ｋ２，ｄ（Ｃ２）］である。これは第１のコードＣ１のサブコードであり、（Ｎ−Ｋ２）×Ｎのパリティチェック行列
【数１】
2013524609.tif 000001
によって定義され、ここでＨａは、Ｃ２コードがパリティチェック制約Ｈ１に加えて満足しなければならないパリティチェック制約を表す（Ｋ１−Ｋ２）×Ｎのパリティチェック行列である。Ｈ＊＝［ｈ＊ｉ，ｊ］はサイズＰ×ＭのＧＦ（ｑ）におけるフルランク・パリティチェック行列であるとし、これは寸法がＫ＊＝Ｍ−Ｐであり、最小寸法ｄ（Ｃ＊）を有する線形［Ｍ，Ｋ＊，ｄ（Ｃ＊）］コードを定義する。長さＭＮの２レベル・コードＣ全体は、パリティチェック行列Ｈ＊＝［ｈ＊ｉ，ｊ］を有する線形コードＣ＊とコードＣ１およびＣ２から得られ、ここでＣ２⊂Ｃ１であり、
【数２】
2013524609.tif 000002
というパリティチェック行列によって定義され、ここで
【数３】
2013524609.tif 000003
はサイズ［（Ｎ−Ｋ１）Ｍ＋（Ｋ１−Ｋ２）Ｐ］×［ＭＮ］のブロック行列であり、これは、Ｈｂの（ｉ，ｊ）番目のサブブロックの単純な表現の使用に基づくＨｂ＝［ｈ＊ｉ，ｊＨａ］によって特徴付けることもできる。この場合、行列要素ｈ＊ｉ，ｊは図３の加重和のための重み係数を示す。長さＭＮの結果の２レベル・コードＣはＫ＊Ｋ１＋ＰＫ２という寸法と
ｄ（Ｃ）＝ｍｉｎ｛ｄ（Ｃ＊）ｄ（Ｃ１），ｄ（Ｃ２）｝
という最小距離を有することが分かる。
【００２８】
図２および図３のコーディング・アーキテクチャにより多数の２レベルＢＣＨコードを構築することができ、個々のシステムのパラメータに応じて特定のコードＣ１およびＣ２およびＣ＊を選択できることが認識されるであろう。具体的なコードは、たとえば、ｓ進ストレージのレベルの数ｓおよび所与のシステムの性能要件に基づいて選択することができる。しかし、性能効率を強化し、実現を単純にするために、デバイス１の好ましい諸実施形態では、以下のようにＢＣＨコードが選択される。
（１）ｑ＝ｐｋ＝ｒｕであり、ここでｋ≧ｕである。
（２）ｓ＝ｒｖである。
ここでｕおよびｖは正整数である。換言すれば、ｑおよびｓは共通ベースｒのそれぞれｕ乗およびｖ乗である。これは、
ｐ（ｋ／ｕ）ｖ＝ｓ
という条件を意味するものであり、この条件は本明細書では「整合アルファベット」制約という。この制約を満足することは、２レベルＢＣＨコードのｑ進アルファベットが最も効率的なデバイス動作のためにｓ進ストレージに「整合」することを保証する。特に、シンボル・コンバータ４においてｑ進コードを単純かつ効率的にｓ進アルファベットに変換できることを保証しながら、コード選択の柔軟性が提供される。このため、コード体系はｑ＝ｓのものに限定されないが、特定のｓレベル・ストレージ特性について最良の結果をもたらすように選択することができる。ｓ≠ｑであるデバイス１の動作時に、ｑ進シンボル・コードワードはｑ進−ｒ進コンバータ５によってｒ進シンボル・コードワードに変換され、ここで上記で定義されるようにｒｖ＝ｓである。ここでｖ＞１である場合（すなわち、ｒ≠ｓ）、チャネル・マッピング・ユニット６においてｒ進シンボルをメモリ２のｓストレージ・チャネルにマッピングすることができる。特に、各ｒ進入力コードワードのｖ個のｒ進シンボルからなる連続集合は、ｖ個のｒ進シンボルのすべての可能な値をｓ通りのレベルのそれぞれ異なるレベルにマッピングする所定のマッピング方式によりｓレベル・ストレージのそれぞれの対応するレベルにマッピングされる。チャネル・マッピングは、当業者にとって明白になるようにｓ進ストレージのエラー特性に適合するように、任意の所望の方法で、ここでは、たとえば、既知のグレイ・マッピング方式を使用して実行することができる。したがって、ｖ個のｒ進入力シンボルからなる各集合はチャネル・マッピング・ユニット６の出力において１つのｓ進シンボルに対応し、対応するレベルとしてメモリ２のそれぞれのｓ進セルに記録される。
【００２９】
ｕ＝１であり、それによりｑ＝ｒである諸実施形態では、ｑ進−ｒ進変換は当然のことながら必要ではなく、コンバータ５は省略または迂回することができる。しかし、ｒ≠ｓを想定すると、ここではｖ個のｑ進シンボルからなる集合について、依然として上述のようにチャネル・マッピングを実行することができる。同様に、ｒ＝ｓである実施形態では、チャネル・マッピング・ユニット６は省略または迂回することができる。したがって、一般に、シンボル・コンバータ４は、ストレージ・システムの特定のパラメータに応じてｑ進−ｒ進変換およびチャネル・マッピングのいずれか一方または両方を実行することができる。上記の２レベル・コーディング技法はｑ＝ｓであるシステムにも適用することができ、その場合、シンボル・コンバータ４は全体として省略または迂回できることに留意されたい。
【００３０】
上記のシステムはコード選択の並外れた柔軟性を提供することができるが、ストレージ・デバイス１で使用するための２つの特に興味深い系列のコード体系について以下に説明する。
【００３１】
第１の系列のコード体系はｒ＝ｓ＞２によって特徴付けられ、独立ｓ進シンボル・エラーを有するｓ進チャネル・モデルによってメモリ・チャネルを記述できるときに特に有用である。第２の系列のコード体系はｒ＝２およびｋ＝ｕによって特徴付けられ、独立ビット・エラーを有する２進チャネルによってチャネル・マッピング・ユニット、メモリ・チャネル、リードバック・プロセス、およびデコーダ７で実行される逆チャネル・マッピングの連結を記述できるときに特に有用である。グレイ・エンコードがチャネル・マッピングとして使用され、不揮発性メモリ・チャネル内のエラーの結果、チャネル・レベルが隣接チャネル・レベルとして誤って読み取られる場合に、独立ビット・エラー・チャネルは不揮発性ｓレベル・メモリのための良いモデルである。この場合、ｑ＝２ｋ、ｒ＝２、およびｓ＝２ｖである。独立ビット・エラー・チャネルのための良い選択は、２レベル２進ＢＣＨコード体系を選択することになり、ここでｑ＝２、すなわち、ｐ＝２およびｋ＝１である。しかし、実現あるいはエラー率性能またはその両方の理由により、ｑ＞２であるＧＦ（ｑ）におけるコードを使用することは有利なことになる可能性があり、ここでエンコードのための有限体演算はＧＦ（ｑ＝２ｋ）で実行され、ｋ＞１である。
【００３２】
次に、フラッシュ・メモリ用の２レベル・コードの２つの具体的な例について詳細に説明する。現在、フラッシュ・メモリ内の典型的な１ページは４ＫｉＢのユーザ・データを含む。さらに、ページあたり使用可能なＥＣＣ冗長性は２２４バイトであると想定される。２進コードを使用する場合、コード長ＭＮは３４５６０（ビット単位）でなければならず、コードの寸法は少なくとも３２７６８（ビット単位）でなければならない。ＧＦ（２１２）におけるデコード・アルゴリズムにより、長さ３８４０の２進ＢＣＨコードに基づいて、長さ３４５６０＝Ｍ×Ｎ＝９×３８４０の２つの２進２レベル・コードが構築される。
【００３３】
第１の例では、［Ｎ＝３８４０，Ｋ１＝３６６０，ｄ１＝３１］というパラメータを有する第１の２進ＢＣＨコードＣ１と、［Ｎ＝３８４０，Ｋ２＝３４９２，ｄ２＝５９］というパラメータを有する第２の２進ＢＣＨコードＣ２と、長さＭ＝９、寸法Ｋ＊＝８、およびｄ（Ｃ＊）＝２である単一パリティチェック・コードＣ＊から、２進２レベル・コードＣが構築される。結果の２レベル・コードは３２７７２という寸法を有し、したがって、４ＫｉＢのユーザ・データに対応することができる。さらに、ｄ（Ｃ）＝５９であり、すなわち、このコードは２９個までのエラーを訂正することができる。
【００３４】
第２の例では、［Ｎ＝３８４０，Ｋ１＝３７３２，ｄ１＝１９］というパラメータを有する第１の２進ＢＣＨコードＣ１と、［Ｎ＝３８４０，Ｋ２＝３５２８，ｄ２＝５３］というパラメータを有する第２の２進ＢＣＨコードＣ２と、長さＭ＝９、寸法Ｋ＊＝５、およびｄ（Ｃ＊）＝３である短縮ハミング・コードＣ＊から、２進２レベル・コードＣが構築される。結果の２レベル・コードは３２７７２という寸法を有し、したがって、４ＫｉＢのユーザ・データに対応することができる。さらに、ｄ（Ｃ）＝５３であり、すなわち、このコードは２６個までのエラーを訂正することができる。
【００３５】
ＧＦ（２）におけるこれらの２進２レベル・コード例は、［３４５６０，３２７６８，２２５］というパラメータを有する２進ＢＣＨコードと比較しなければならない。この長いＢＣＨコードは１１２個までのエラーを訂正することができるが、そのデコード・アルゴリズムは大きい体ＧＦ（２１６）で機能し、これは現在、ＳＳＤメモリでの適用には非現実的である。
【００３６】
上記の２レベル・コードのもう１つの比較は、［３８４０，３６４８，３３］というパラメータを有する２進１レベルＢＣＨコードの９ウェイ・インターリービング方式に関するものであり、これは１６個までのエラーを訂正することができる。９個のインターリーブドＢＣＨコードのそれぞれに関するデコーダはＧＦ（２１２）において動作する。２レベル・コードは同じ体ＧＦ（２１２）において動作するデコーダを有するが、単純な９ウェイ・インターリービング方式と比較すると、実質的により多くのエラーを訂正することができる。
【００３７】
上記のようにｓレベル・フラッシュにおけるページ・エンコードのために整合アルファベット２レベルＢＣＨコードを使用すると、非常に効率的なエラー訂正コーディングを提供することができる。ＢＣＨコードは、不揮発性フラッシュおよびＰＣＭメモリなどのｓレベル・ソリッド・ステート・ストレージのエラー特性に特に適しており、現行の不揮発性メモリ製品においてシンボルの長さが１ビット〜４ビットである場合に記録媒体には独立シンボル・エラーが発生する可能性がある。その上、実現の複雑さおよび消費電力に対する最小限の影響で、改善されたエラー性能を達成することができる。したがって、上記のシステムの使用により、並外れた総合性能を得ることができる。
【００３８】
当然のことながら、本発明の範囲を逸脱せずに、上記の模範的な諸実施形態に対して多くの変更および修正が可能であることが認識されるであろう。