(57)【要約】【課題】長符号のエンコーダ及びデコーダの回路複雑性を低減する方法を得る。【解決手段】  符号化すべきデータビットが、複数の部分群に分けられる。各部分群は別個に符号化されて、対応する符号語が生成される。選択された部分集合が、対応する符号語から除去され、短縮符号語を残し、多対１変換されて縮約ビットになる。最終符号語は、短縮符号語と縮約ビットとを結合したものである。最終符号語の表現は、選択された部分集合及び複数の残留部分集合に分けられることにより復号化される。各残留部分集合は別個に復号化される。復号化の１つが失敗する場合、復号化に失敗した残留部分集合が、選択された部分集合に少なくとも部分的に従って復号化される。符号化及び復号化が系統的である場合、選択される部分集合はパリティビットの部分集合である。【選択図】図１
2010509790.tif 000002
【特許請求の範囲】
【請求項１】
符号語の表現を復号化する方法であって、
（ａ）前記符号語の前記表現から複数の部分語を生成するステップであって、前記各部分語のビットは、前記符号語の前記表現のビットの適切な部分集合である、生成するステップと、
（ｂ）前記各部分語をそれ自体のビットのみに従って復号化するステップであって、それにより、対応する復号化部分語を生成する、復号化するステップと、
（ｃ）前記部分語の１つの前記復号化が失敗する場合、復号化に失敗した前記１つの部分語に対応する前記復号化部分語を変更するステップであって、それにより、変更復号化部分語を生成し、該変更は、復号化に成功した少なくとも１つの部分語の前記対応する復号化部分語に少なくとも部分的に従う、変更するステップと
を含む方法。
【請求項２】
（ｄ）前記部分語の１つの前記復号化に失敗する場合、前記変更復号化部分語からのデータを、前記復号化に成功したすべての部分語の前記対応する復号化部分語からのデータと結合するステップをさらに含む、請求項１に記載の方法。
【請求項３】
前記変更復号化部分語からのデータを前記復号化に成功したすべての部分語の前記対応する復号化部分語からのデータと結合することは、前記変更復号化部分語からのデータを前記復号化に成功したすべての部分語の前記対応する復号化部分語からのデータとまとめることを含むステップにより行われる、請求項２に記載の方法。
【請求項４】
前記部分語は互いに素である、請求項１に記載の方法。
【請求項５】
前記部分語は同一数のビットを含む、請求項１に記載の方法。
【請求項６】
Ｍビット語を復号化する装置であって、
（ａ）Ｎ＜Ｍビット語を復号化するデコーダと、
（ｂ）該デコーダを、前記Ｍビット語から選択される異なるＮビットの各部分集合に別個に適用するメカニズムであって、前記デコーダの各適用は、前記各適用が適用される前記Ｎビットのみに依存し、前記各適用は対応する符号化データを生成し、前記Ｍビット語の最終復号化データは、前記適用の前記対応する復号化データに少なくとも部分的に従って生成され、前記適用の１つが失敗した場合、該メカニズムは、少なくとも１つの成功した適用の前記対応する復号化データに少なくとも部分的に従って、前記失敗した適用の前記対応する復号化データの変更を行う、メカニズムと
を備える装置。
【請求項７】
前記部分集合は互いに素である、請求項６に記載の装置。
【請求項８】
Ｍビット語を復号化する装置であって、
（ａ）Ｎ＜Ｍビット語をそれぞれ復号化する複数のデコーダと、
（ｂ）該複数のデコーダをそれぞれ、前記Ｍビット語から選択される異なるＮビットの各部分集合に別個に適用するメカニズムであって、前記複数のデコーダのそれぞれの各適用は、該各適用が適用される前記Ｎビットのみに依存し、前記各適用は対応する復号化データを生成し、前記Ｍビット語の最終復号化データは、前記適用の前記対応する復号化データに少なくとも部分的に従って生成され、前記デコーダの１つが失敗した場合、該メカニズムは、少なくとも１つの成功した前記デコーダの前記対応する復号化データに少なくとも部分的に従って、失敗した前記デコーダの前記対応する復号化データの変更を行う、メカニズムと
を備える装置。
【請求項９】
前記部分集合は互いに素である、請求項８に記載の装置。
【請求項１０】
データビットの誤り訂正方式を提供する方法であって、
（ａ）前記データビットを第１の符号化方式に従って符号化するステップであって、それにより、第１のパリティビット群を生成する、符号化するステップと、
（ｂ）前記データビットを第２の符号化方式に従って符号化するステップであって、それにより、第２のパリティビット群を生成する、符号化するステップと、
（ｃ）前記第２のパリティビット群を縮約パリティビット群に変換するステップであって、該変換は多対１である、変換するステップと、
（ｄ）前記第１のパリティビット群を前記縮約パリティビット群と結合することにより、前記データビットの最終パリティビット群を生成するステップと
を含む方法。
【請求項１１】
前記第１のパリティビット群を前記縮約パリティビット群と結合することは、前記第１のパリティビット群の少なくとも部分を前記縮約パリティビット群とまとめることを含むステップにより行われる、請求項１０に記載の方法。
【請求項１２】
前記変換するステップは、前記第２のパリティビット群の複数の部分群を排他的論理和演算することを含む、請求項１０に記載の方法。
【請求項１３】
データビットの誤り訂正方式を提供する方法であって、
（ａ）前記データビットから複数の部分群を生成するステップであって、各データビットは前記複数の部分群に少なくとも１回出現する、生成するステップと、
（ｂ）対応する第１の符号化方式に従って前記複数の部分群の各部分群を符号化するステップであって、それにより、前記各部分群に、対応する少なくとも１つの第１のパリティビットを生成する、符号化するステップと、
（ｃ）対応する第２の符号化方式に従って前記各部分群を符号化するステップであって、それにより、前記各部分群に、対応する少なくとも１つの第２のパリティビットを生成する、符号化するステップと、
（ｄ）前記複数の部分群のすべての前記少なくとも１つの第２のパリティビットのすべてをジョイント縮約パリティビットに変換するステップであって、該変換は多対１である、変換するステップと、
（ｅ）前記複数の部分群のすべての前記少なくとも１つの第１のパリティビットのすべてを前記ジョイント縮約パリティビットと結合することにより、前記データビットの最終パリティビット群を生成するステップと
を含む方法。
【請求項１４】
前記複数の部分群のすべての前記少なくとも１つの第１のパリティビットのすべてを前記ジョイント縮約パリティビットと結合することは、前記複数の部分群のすべての前記少なくとも１つの第１のパリティビットのすべてを前記ジョイント縮約パリティビットとまとめることを含むステップにより行われる、請求項１３に記載の方法。
【請求項１５】
各データビットは前記複数の部分群に１回のみ出現する、請求項１３に記載の方法。
【請求項１６】
少なくとも１つのデータビットが前記複数の部分群に少なくとも２回出現する、請求項１３に記載の方法。
【請求項１７】
前記部分群はすべて等サイズである、請求項１３に記載の方法。
【請求項１８】
前記複数の部分群の少なくとも１つの部分群について、前記対応する第１の符号化方式及び前記対応する第２の符号化方式は、共通の符号化方法を使用して得られ、前記対応する第１の符号化方式は、第１の順番に従って前記少なくとも１つの部分群のビットを符号化し、前記対応する第２の符号化方式は、第２の順番に従って前記ビットを符号化する、請求項１３に記載の方法。
【請求項１９】
前記部分群はすべて、共通の前記第１の符号化方式に従って符号化される、請求項１３に記載の方法。
【請求項２０】
前記部分群はすべて、共通の前記第２の符号化方式に従って符号化される、請求項１３に記載の方法。
【請求項２１】
前記変換するステップは、前記部分群の１つに対応する前記少なくとも１つの第２のパリティビットと、前記部分群の別の１つに対応する前記少なくとも１つの第２のパリティビットとの排他的論理和をとることを含む、請求項１３に記載の方法。
【請求項２２】
データビットの誤り訂正方式を提供する方法であって、
（ａ）前記データビットから複数のビット部分群を生成するステップであって、各データビットは前記複数の部分群に少なくとも１回出現する、生成するステップと、
（ｂ）対応する符号化方式を使用して前記複数の部分群の各部分群を符号化するステップであって、それにより、前記各部分群に、対応する少なくとも１つのパリティビットを生成する、符号化するステップと、
（ｃ）前記各部分群について、前記各部分群の前記ビット及び前記各部分群の前記対応する少なくとも１つのパリティビットの中から対応する選択部分集合を選択するステップと、
（ｄ）前記複数の部分群のすべての前記選択部分集合をジョイント縮約選択ビットに変換するステップであって、該変換は多対１である、変換するステップと、
（ｅ）前記各部分群の前記ビットを前記各部分群の前記対応する少なくとも１つのパリティビットと結合し、それから、前記各部分群の前記対応する選択部分集合のビットを除去することにより、前記各部分群の対応する短縮符号語を生成するステップと、
（ｆ）前記複数の部分群のすべての前記対応する短縮符号語を前記ジョイント縮約選択ビットと結合することにより、前記データビットの符号語を生成するステップと
を含む方法。
【請求項２３】
前記各部分群の前記ビットを前記各部分群の前記対応する少なくとも１つのパリティビットと結合することは、前記各部分群の前記ビットを前記各部分群の前記対応する少なくとも１つのパリティビットとまとめることを含むステップにより行われる、請求項２２に記載の方法。
【請求項２４】
前記複数の部分群のすべての前記対応する短縮符号語を前記ジョイント縮約選択ビットと組み合わせることは、前記複数の部分群のすべての前記対応する短縮符号語を前記ジョイント縮約選択ビットとまとめることにより行われる、請求項２２に記載の方法。
【請求項２５】
各データビットは前記複数の部分群に１回のみ出現する、請求項２２に記載の方法。
【請求項２６】
少なくとも１つのデータビットが、前記複数の部分群に少なくとも２回出現する、請求項２２に記載の方法。
【請求項２７】
前記部分群はすべて等サイズである、請求項２２に記載の方法。
【請求項２８】
前記複数の部分群はすべて、共通の前記符号化方式に従って符号化される、請求項２２に記載の方法。
【請求項２９】
前記変換するステップは、前記部分群の１つに対応する前記選択部分集合の前記ビットと、前記部分群の別の１つに対応する前記選択部分集合の前記ビットとの排他的論理和をとることを含む、請求項２２に記載の方法。
【請求項３０】
データビットの誤り訂正方式を提供する方法であって、
（ａ）前記データビットから複数のビット部分群を生成するステップであって、各データビットは前記複数の部分群に少なくとも１回出現する、生成するステップと、
（ｂ）対応する符号化方式を使用して前記複数の部分群の各部分群を符号化するステップであって、それにより、前記各部分群に、対応する符号語を生成する、符号化するステップと、
（ｃ）前記各部分群について、前記対応する符号語のビットから対応する選択部分集合を選択するステップと、
（ｄ）前記対応する符号語のすべての前記対応する選択部分集合をジョイント縮約選択ビットに変換するステップであって、該変換は多対１である、変換するステップと、
（ｅ）前記各対応する符号語に対応する前記選択部分集合のビットを除去することにより、前記対応する符号語の対応する短縮符号語を生成するステップと、
（ｆ）前記複数の部分群のすべての前記対応する短縮符号語を前記ジョイント縮約選択ビットと結合することにより、前記データビットの符号語を生成するステップと
を含む方法。
【請求項３１】
前記複数の部分群のすべての前記対応する短縮符号語を前記ジョイント縮約選択ビットと組み合わせることは、前記複数の部分群のすべての前記対応する短縮符号語を前記ジョイント縮約選択ビットとまとめることにより行われる、請求項３０に記載の方法。
【請求項３２】
各データビットは前記複数の部分群に１回のみ出現する、請求項３０に記載の方法。
【請求項３３】
少なくとも１つのデータビットが、前記複数の部分群に少なくとも２回出現する、請求項３０に記載の方法。
【請求項３４】
前記部分群はすべて等サイズである、請求項３０に記載の方法。
【請求項３５】
前記複数の部分群はすべて、共通の前記符号化方式に従って符号化される、請求項３０に記載の方法。
【請求項３６】
前記変換するステップは、前記部分群の１つに対応する前記選択部分集合の前記ビットと、前記部分群の別の１つに対応する前記選択部分集合の前記ビットとの排他的論理和をとることを含む、請求項３０に記載の方法。
【請求項３７】
Ｍデータビット及びＰパリティビットを含む符号語の表現を復号化する方法であって、
（ａ）前記Ｐパリティビットを第１のパリティビット群及び第２のパリティビット群に分けるステップと、
（ｂ）前記Ｍデータビットを前記第１のパリティビット群を使用して復号化するステップであって、それにより、訂正済みデータビットを提供する、復号化するステップと、
（ｃ）前記第１のパリティビット群のみを使用する前記復号化に失敗した場合、前記Ｍデータビットを前記第１のパリティビット群及び前記第２のパリティビット群を使用して復号化するステップであって、それにより、前記訂正済みデータビットを提供する、復号化するステップと
を含む方法。
【請求項３８】
Ｍデータビット及びＰパリティビットを含む符号語の表現を復号化する方法であって、
（ａ）前記ＭデータビットをＫ＞１個の部分集合に分けるステップであって、前記Ｍ個の各データビットは前記Ｋ個の部分集合に少なくとも１回出現する、分けるステップと、
（ｂ）前記Ｐパリティビットを第１のパリティビット群及び第２のパリティビット群に分けるステップと、
（ｃ）前記第１のパリティビット群をＫ個の部分集合に分けるステップであって、前記第１のパリティビット群の前記各部分集合は、前記Ｍデータビットの各部分集合に対応する、分けるステップと、
（ｄ）前記第１のパリティビット群の前記対応する部分集合に従って、前記Ｍデータビットの前記各部分集合を復号化するステップであって、それにより、前記Ｍデータビットの前記各部分集合の復号化データを生成する、復号化するステップと、
（ｅ）前記Ｍデータビットの前記Ｋ個の部分集合の１つの前記復号化に失敗する場合、前記第２のパリティビット群に少なくとも部分的に従って前記１つの部分集合を復号化するステップであって、それにより、前記１つの部分集合の前記復号化データを生成する、復号化するステップと、
（ｆ）前記Ｍデータビットの前記Ｋ個すべての部分集合の前記復号化データを結合するステップであって、それにより、前記Ｍデータビットの完全復号化データを生成する、結合するステップと
を含む方法。
【請求項３９】
前記Ｍデータビットの前記Ｋ個すべての部分集合の前記復号化データを結合することは、前記Ｍデータビットの前記Ｋ個すべての部分集合の前記復号化データをまとめることにより行われる、請求項３８に記載の方法。
【請求項４０】
前記Ｍデータビットの前記Ｋ個の部分集合は互いに素である、請求項３８に記載の方法。
【請求項４１】
前記Ｍデータビットの前記Ｋ個の部分集合はすべて等サイズである、請求項３８に記載の方法。
【請求項４２】
前記第１のパリティビット群の前記対応する部分集合に従って前記各部分集合の前記データビットを復号化することは、対応する第１の復号化方式を使用することを含み、前記第２のパリティビット群に従って、復号化に失敗した前記１つの部分集合の前記データビットを復号化することは、対応する第２の復号化方式を使用することを含む、請求項３８に記載の方法。
【請求項４３】
前記Ｍデータビットの前記Ｋ個の部分集合のうちの少なくとも１つについて、前記対応する第１の復号化方式及び前記対応する第２の復号化方式は、共通の復号化方法を適用する、請求項４２に記載の方法。
【請求項４４】
前記第１の復号化方式はすべて同一である、請求項４２に記載の方法。
【請求項４５】
前記第２の復号化方式はすべて同一である、請求項４２に記載の方法。
【請求項４６】
Ｎ＞Ｍビットを有する符号語の表現からＭデータビットを復号化する方法であって、
ａ）Ｎビットから最大でＮ−Ｍビットの選択部分集合を除去するステップであって、それにより、残留ビットの集合を生成する、除去するステップと、
ｂ）前記残留ビットをＫ＞１個の残留ビット部分集合に分けるステップであって、前記各残留ビットは、前記Ｋ個の部分集合のうちの少なくとも１つのメンバである、分けるステップと、
ｃ）前記各部分集合のビットのみに従って前記Ｋ個の各部分集合を復号化するステップであって、それにより、前記各部分集合の復号化データを生成する、復号化するステップと、
ｄ）前記Ｋ個の部分集合の１つの復号化に失敗した場合、前記除去された選択部分集合に少なくとも部分的に従って、復号化に失敗した前記部分集合を復号化するステップであって、それにより、復号化に失敗した前記部分集合の前記復号化データを生成する、復号化するステップと、
ｅ）前記Ｋ個すべての部分集合の前記復号化データを結合するステップであって、それにより、前記Ｍデータビットの完全復号化データを生成する、結合するステップと
を含む方法。
【請求項４７】
前記Ｋ個すべての部分集合の前記復号化データを結合することは、前記Ｋ個すべての部分集合の前記復号化データをすべてまとめることにより行われる、請求項４６に記載の方法。
【請求項４８】
前記Ｋ個の部分集合は互いに素である、請求項４６に記載の方法。
【請求項４９】
前記Ｋ個の部分集合はすべて等サイズである、請求項４６に記載の方法。
【請求項５０】
前記各部分集合の前記ビットに従って前記各部分集合の前記データビットを復号化することは、対応する第１の復号化方式を使用することを含み、前記除去された選択部分集合に従って、復号化に失敗した前記１つの部分集合の前記データビットを復号化することは、対応する第２の復号化方式を使用することを含む、請求項４６に記載の方法。
【請求項５１】
前記Ｋ個の部分集合のうちの少なくとも１つについて、前記対応する第１の復号化方式及び前記対応する第２の復号化方式は、共通の復号化方法を適用する、請求項５０に記載の方法。
【請求項５２】
前記第１の復号化方式はすべて同一である、請求項５０に記載の方法。
【請求項５３】
前記第２の復号化方式はすべて同一である、請求項５０に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、包括的には符号化・復号化方式に関する。特に、本発明は、より短い部分符号を符号化・復号化することにより符号の誤り訂正を提供する方法及び装置に関する。
【背景技術】
【０００２】
現代の情報時代では、様々な種類の情報、例えばメモリ、映像、音声、統計情報等を表して通信するために、２進値、例えば０と１が使用される。不都合なことに、２進データの記憶中、伝送中、及び／又は処理中に、偶発的にエラーが導入されることがある（例えば、“１”ビットが“０”ビットに変わるか、又はこの逆）。
【０００３】
このようなエラーの存在を解決するために当該技術分野において既知のいくつかの技法は、誤り訂正符号化方式を利用して、記憶されている情報の信頼性を確保する。記憶方法の物理学は、記憶セル核１個当たりの情報ビット数で表すことができる固定容量を示す。この固定容量は、各記憶核セルの信号対雑音比（ＳＮＲ）の直接の結果であるため、理論上の上限（「シャノン限界」として知られる）を定める。
【０００４】
多くの場合において、このような誤り訂正符号化方式では、所与の符号レートに対する理論上の訂正能力に近づくために、非常に長い符号を使用する必要がある。
【０００５】
しかし、符号長の増大は、符号化回路及び復号化回路の複雑さ及び面積の増大に繋がる。その結果として、あるポイントにおいて、このような誤り訂正符号化方式を含む集積回路の実装がもはや実用的ではなくなるか、又は効率的ではなくなる。別法として、標準復号化技法をサポートするには不十分なシリコン密度が存在する。
【０００６】
用語「誤り訂正」（すなわち、エラーの検出及び訂正）は、本明細書では、データ記憶に適用される。順方向誤り訂正符号による符号化及び復号化は、ソフトウェアにおいて、又はハードウェアを使用して実行される。
【０００７】
シャノン限界［１］が発見された後、シャノンの情報理論の性能限界に近づく符号を提供する必要があった。これらの限界に近づくためには符号長を増大しなければならないことが周知である［２］〜［４］。１９９３年に、ベロン（Ｂｅｒｒｏｎ）［５］が最初に、反復復号化を使用した、略容量限界に近づく技法を提示した。しかし、長符号のみが考慮された。後に、［６］〜［１１］において、低密度パリティ検査（ＬＤＰＣ）符号の導入に伴い、これら容量限界にさらに近づいた新たな構造が成功裏に提示されたが、これもまた長符号、通常は約１０７ビット長の符号に対してのみであった。
【０００８】
ＬＤＰＣ反復デコーダに基づく具体的な方式は［１２］〜［１４］に示され、ここでは、計算ユニットの実装複雑性、反復回数、必要なメモリサイズ等を低減することに重点が置かれている。
【発明の開示】
【発明が解決しようとする課題】
【０００９】
したがって、これら長符号を複雑性が制限される環境において実施し、その性能の恩恵を受けるには、より短い実用的な方式を利用できるように、長符号のエンコーダ及びデコーダの回路複雑性を低減する方法を提供する必要がある。
【００１０】
パリティオーバーヘッドを低減することにより、エンコーダ及びデコーダの回路複雑性を低減するパンクチャ方法を開示する従来技術による技法が、ドロア（Ｄｒｏｒ）等に付与された米国特許出願公開第20050160350号明細書に教示されている。
【００１１】
ドロア（Ｄｒｏｒ）特許には、単一ビット順方向誤り訂正を提供する高速データエンコーダ／デコーダが開示されている。データは、矩形配列内で保護されるように配置され、それにより、単一ビットエラーの位置が行位置及び列位置に従って特定される。その結果、エラーシンドロームをエラー位置に変換するために提供されるルックアップテーブルのサイズが低減される。
【００１２】
しかし、ドロア（Ｄｒｏｒ）特許において開示される２つの計算フェーズはそれぞれ、第１フェーズにおいて単一のエラーを訂正するのに十分な情報を提供しないため、それ自体は誤り訂正方式ではない。したがって、第１フェーズは、第２フェーズで得られる計算に頼らずには、各部分符号内の単一のエラーさえも訂正することができない。
【課題を解決するための手段】
【００１３】
本発明によれば、符号語の表現を復号化する方法であって、（ａ）符号語の表現から複数の部分語を生成するステップであって、各部分語のビットは符号語の表現のビットの適切な部分集合である、生成するステップと、（ｂ）各部分語を、各自のビットのみに従って復号化するステップであって、それにより、対応する復号化部分語を生成する、復号化するステップと、（ｃ）部分語の１つの復号化が失敗した場合、復号化が失敗した１つの部分語に対応する復号化部分語を変更するステップであって、それにより、変更復号化部分語が生成され、変更は、少なくとも部分的に、少なくとも１つの復号化が成功した部分語の対応する復号化部分語に従う、変更するステップとを含む方法が提供される。
【００１４】
本発明によれば、Ｍビット語を復号化する装置であって、（ａ）Ｎ＜Ｍビット語を復号化するデコーダと、（ｂ）デコーダを、Ｍビット語から選択されるＮビットの異なる各部分集合に別個に適用するメカニズムであって、デコーダの各適用は、各適用が適用されるＮビットのみに依存し、各適用は、Ｍビット語の最終復号化データが、適用の対応する復号化データに少なくとも部分的に従って生成されるように対応する復号化データを生成するメカニズムとを含み、メカニズムは、適用の１つが失敗する場合、少なくとも１つの成功した適用の対応する復号化データに少なくとも部分的に従って、失敗した適用の対応する復号化データの変更を行う、装置が提供される。
【００１５】
本発明によれば、Ｍビット語を復号化する装置であって、（ａ）Ｎ＜Ｍビットの各語を復号化するデコーダと、（ｂ）複数の各デコーダをＭビット語から選択される異なるＮビットの各部分集合に適用するメカニズムであって、複数の各デコーダの各適用は、各適用が適用されるＮビットのみに依存し、各適用は、Ｍビット語の最終復号化データが、適用の対応する復号化データに少なくとも部分的に従って生成されるように対応する復号化データを生成するメカニズムとを含み、メカニズムは、デコーダの１つが失敗する場合、少なくとも部分的に、少なくとも１つの成功したデコーダの対応する復号化データに従って、失敗したデコーダの対応する復号化データの変更を行う、装置が提供される。
【００１６】
本発明によれば、データビットの誤り訂正方式を提供する方法であって、（ａ）第１の符号化方式に従ってデータビットを符号化するステップであって、それにより、第１のパリティビット群を生成する、符号化するステップと、（ｂ）第２の符号化方式に従ってデータビットを符号化するステップであって、それにより、第２のパリティビット群を生成する、符号化するステップと、（ｃ）第２のパリティビット群を縮約パリティビット群に変換するステップであって、該変換は多対１である、変換するステップと、（ｄ）第１のパリティビット群を縮約パリティビット群と結合することにより、最終パリティビット群を生成するステップとを含む方法が提供される。
【００１７】
本発明によれば、データビットの誤り訂正方式を提供する方法であって、（ａ）データビットからビットの複数の部分群を作成するステップであって、各データビットが複数の部分群に少なくとも１回出現する、作成するステップと、（ｂ）対応する第１の符号化方式に従って複数の部分群の各部分群を符号化するステップであって、それにより、各部分群に、対応する少なくとも１つの第１のパリティビットを生成する、符号化するステップと、（ｃ）対応する第２の符号化方式に従って各部分群を符号化するステップであって、それにより、各部分群に、対応する少なくとも１つの第２のパリティビットを生成する、符号化するステップと、（ｄ）複数のすべての部分群の少なくとも１つの第２のパリティビットをすべてジョイント縮約パリティビットに変換するステップであって、多対１である変換するステップと、（ｅ）複数の部分群のすべての少なくとも１つの第１のパリティビットのすべてをジョイント縮約パリティビットと結合することにより、データビットの最終パリティビット群を生成するステップとを含む方法が提供される。
【００１８】
本発明によれば、データビットの誤り訂正方式を提供する方法であって、（ａ）データビットから複数のビット部分群を作成するステップであって、各データビットが複数の部分群に少なくとも１回出現する、作成するステップと、（ｂ）対応する符号化方式に従って複数の部分群の各部分群を符号化するステップであって、それにより、各部分群に、対応する少なくとも１つのパリティビットを生成する、符号化するステップと、（ｃ）各部分群について、各部分群のビット及び各部分群の対応する少なくとも１つのパリティビットの中から対応する選択部分集合を選択するステップと、（ｄ）複数の部分群のすべての選択部分集合をジョイント凝集選択ビットに変換するステップであって、該変換は多対１である、変換するステップと、（ｅ）各部分群のビットを各部分群の対応する少なくとも１つのパリティビットと結合し、それから各部分群の対応する選択部分集合のビットを除去することにより、各部分群に対応する短縮符号語を生成するステップと、（ｆ）複数の部分群のすべての対応する短縮符号語をジョイント縮約選択ビットと結合することにより、データビットの符号語を生成するステップとを含む方法が提供される。
【００１９】
本発明によれば、データビットの誤り訂正方式を提供する方法であって、（ａ）データビットから複数のビット部分群を生成するステップであって、各データビットが複数の部分群に少なくとも１回出現する、生成するステップと、（ｂ）対応する符号化方式に従って複数の部分群の各部分群を符号化するステップであって、それにより、各部分群に、対応する符号語を生成する、符号化するステップと、（ｃ）各部分群について、対応する符号語のビットから対応する選択部分集合を選択するステップと、（ｄ）対応する符号語の対応する選択部分集合をジョイント縮約選択ビットに変換するステップであって、該変換は多対１である、変換するステップと、（ｅ）対応する各符号語に対応する選択部分集合のビットを除去することにより、対応する各符号語に対応する短縮符号語を生成するステップと、（ｆ）複数の部分群のすべての対応する短縮符号語をジョイント縮約選択ビットと結合することにより、データビットの符号語を生成するステップとを含む方法が提供される。
【００２０】
本発明によれば、Ｍデータビット及びＰ個のパリティビットを含む符号語の表現を復号化する方法であって、ａ）Ｐ個のパリティビットを第１のパリティビット群及び第２のパリティビット群に分けるステップと、ｂ）第１のパリティビット群のみを使用してＭデータビットを復号化するステップであって、それにより、訂正済みデータビットを提供する、復号化するステップと、ｃ）第１のパリティビット群のみを使用した復号化が失敗した場合、第１のパリティビット群及び第２のパリティビット群を使用してＭデータビットを復号化するステップであって、それにより、訂正済みデータビットを提供する、復号化するステップとを含む方法が提供される。
【００２１】
本発明によれば、Ｍデータビット及びＰ個のパリティビットを含む符号語の表現を復号化する方法であって、ａ）ＭデータビットをＫ＞１個の部分集合に分けるステップであって、Ｍ個の各データビットはＫ個の部分集合に少なくとも１回出現する、分けるステップと、ｂ）Ｐ個のパリティビットを第１のパリティビット群及び第２のパリティビット群に分けるステップと、ｃ）第１のパリティビット群をＫ個の部分集合に分けるステップであって、第１のパリティビット群の各部分集合はＭデータビットの各部分集合に対応する、分けるステップと、ｄ）第１のパリティビット群の対応する部分集合に従ってＭデータビットの各部分集合を復号化するステップであって、それにより、Ｍデータビットの各部分集合の復号化データを生成する、復号化するステップと、ｅ）ＭデータビットのＫ個の部分集合の１つの復号化に失敗した場合、第２のパリティビット群に少なくとも部分的に従って、復号化に失敗した部分集合を復号化するステップであって、それにより、復号化に失敗した部分集合の復号化データを生成する、復号化するステップと、ｆ）ＭデータビットのＫ個すべての部分集合の復号化データを結合するステップであって、それにより、Ｍデータビットの完全復号化データを生成する、結合するステップとを含む方法が提供される。
【００２２】
本発明によれば、Ｎ＞Ｍ個のビットを有する符号語の表現からＭデータビットを復号化する方法であって、ａ）Ｎビットから最大でＮ−Ｍビットの選択部分集合を除去するステップであって、それにより、残留ビットの集合を生成する、除去するステップと、ｂ）残留ビットをＫ＞１個の残留ビット部分集合に分けるステップであって、各残留ビットは、Ｋ個の部分集合のうちの少なくとも１つのメンバである、分けるステップと、ｃ）各部分集合のビットのみに従ってＫ個の各部分集合を復号化するステップであって、それにより、各部分集合の復号化データを生成する、復号化するステップと、ｄ）Ｋ個の部分集合の１つの復号化に失敗した場合、除去された選択部分集合に少なくとも部分的に従って、復号化に失敗した部分集合を復号化するステップであって、それにより、復号化に失敗した部分集合の復号化データを生成する、復号化するステップと、ｅ）Ｋ個すべての部分集合の復号化データを結合するステップであって、それにより、Ｍデータビットの完全復号化データを生成する、結合するステップとを含む方法が提供される。
【００２３】
本発明の第１の態様は、符号語の表現を復号化する方法である。本発明のこの態様及び本発明の他の同様の態様では、復号化されるのは符号語の表現であって、記憶装置に書き込まれる符号語ではない。何故なら、符号語を書き込み、それから読み出すことにより、符号語にエラーが導入される恐れがあるためである。複数の部分語が、符号語の表現から生成され、各部分語のビットは、符号語の表現のビットの適切な部分集合である。各部分語は、各自のビットのみに従って復号化されて、対応する復号化部分語を生成する。部分語の１つの復号化に失敗した場合、復号化に失敗した部分語に対応する復号化部分語が変更され、それにより、変更復号化部分語を生成する。変更は、復号化に成功した部分語の１つ又は複数に対応する復号化部分語に少なくとも部分的に従う。
【００２４】
後述するように、用語「復号化部分語」の範囲は、部分語の復号化に成功することにより得られる数値及び部分語を復号化しようという試みが失敗したことの論理的な表示の両方を含む。なお、部分語の復号化に成功することにより得られる数値は、その表現のみならず、元の符号語それ自体の部分である。換言すれば、「復号化に成功した部分語」は、部分符号語である。復号化された部分語の「変更」は、復号化された部分語のある数値から別の数値への変更、又は復号化失敗の論理的表示からある数値への変更、又は数値から失敗の論理的表示への変更を意味する。
【００２５】
例えば、以下の実施例１では、２つの部分語Ｃ1~short及びＣ2~shortが、符号語の表現から生成される。各部分語は、［１１，７，３］デコーダを使用して別個に復号化される。Ｃ1~shortの復号化に失敗するが、Ｃ2~shortの復号化に成功する場合、Ｃ1~shortの復号化試行が失敗したことの論理的表示は、その論理的表示をＣ1~から復号化されるＣ1で置換することにより変更される。この変更は、復号化に成功したＣ2~shortに対応する部分符号語Ｃ2shortに従う。Ｃ2shortは、［１５，７，５］エンコーダを使用して符号化されてＰ2が生成され、Ｐ2は、Ｐ~と排他的論理和がとられて、Ｐ1~が生成され、Ｃ1~shortとＰ1~とが連接されてＣ1~が生成される。
【００２６】
好ましくは、部分語の１つの復号化に失敗した場合、変更された復号化部分語からのデータが、復号化に成功した部分語に対応するすべての復号化部分語からのデータと結合される。例えば、以下の実施例１では、Ｃ1~shortの復号化に失敗するが、Ｃ2~shortの復号化に成功する場合、Ｃ1~から復号化されるＣ1の最初の７ビットがＣ2shortの最初の７ビットと連接されて、ヘッダが復元される。
【００２７】
最も好ましくは、変更された復号化部分語からのデータと、復号化に成功した部分語に対応するすべての復号化部分語からのデータとの結合は、変更された復号化部分語からのデータを、復号化に成功した部分語に対応するすべての復号化部分語からのデータとまとめることを含むステップにより行われる。２つ以上の異なるソースからのデータを「まとめる（ａｓｓｅｍｂｌｅ）」ことは、本明細書では、すべてのソースからのビットを一緒に、レジスタ又は記憶ロケーションに入れることとして定義され、場合によってはビット順が並べ替えられることもあれば、ビットの１つ又は複数が少なくとも１回繰り返されることもある。しかし、通常、以下の実施例１でのように、データは、ビット順を並べ替えずに、且つビットを繰り返さずに各種データソースからのビットを単に連接することにより「まとめ」られる。
【００２８】
好ましくは、部分語は互いに素である。例えば、以下の実施例１では、Ｃ1~short及びＣ2~shortは互いに素である。
【００２９】
好ましくは、部分語はすべて、同一数のビットを含む。例えば、以下の実施例１では、Ｃ1~short及びＣ2~shortは両方とも１１ビットを含む。
【００３０】
本発明の第２の態様は、Ｍビット語を復号化する装置である。装置は、Ｎ＜Ｍビット語を復号化するデコーダと、デコーダを、Ｍビット語から選択されるＮビットの異なる各部分集合に別個に適用するためのメカニズムとを含む。デコーダの各適用は、各適用が適用されるＮビットのみに依存する。デコーダの各適用は、最終復号化データが、デコーダの適用により生成される復号化データに少なくとも部分的に従って生成されるように、対応する復号化データを生成する。デコーダの適用の１つが失敗する場合、その適用の復号化データは、デコーダのその他の適用により生成される復号化データに少なくとも部分的に従って変更される。
【００３１】
例えば、以下の実施例１では、Ｍ＝２６、Ｎ＝１１であり、デコーダは［１１，７，３］デコーダである。１１ビット部分集合はＣ1~short及びＣ2~shortである。［１１，７，３］デコーダは、これら２つの部分集合に別個に適用される。最終復号化データは、復号化１４ビットヘッダである。Ｃ1~shortの復号化に失敗するが、Ｃ2~shortの復号化に成功する場合、Ｃ1~shortの復号化試行が失敗したことの論理的表示は、その論理表示をＣ1~から復号化されるＣ1で置換することにより変更される。この変更は、復号化に成功したＣ2~shortに対応する復号化部分語Ｃ2shortに従う。Ｃ2shortは、［１５，７，５］エンコーダを使用して符号化されてＰ2が生成され、Ｐ2はＰ~と排他的論理和がとられて、Ｐ1~が生成され、Ｃ1~shortとＰ1~とが連接されてＣ1~が生成される。
【００３２】
好ましくは、部分集合は互いに素である。例えば、以下の実施例１では、Ｃ1~short及びＣ2~shortは互いに素である。
【００３３】
本発明の第３の態様は、Ｍビット語を復号化する装置である。装置は、Ｎ＜Ｍビット語をそれぞれ復号化する複数のデコーダを含む。装置は、各デコーダを、Ｍビット語から選択されるＮビットの各部分集合に別個に適用するメカニズムも含む。デコーダの各適用は、各適用が適用されているＮビットのみに依存する。デコーダの各適用は、Ｍビット語の最終復号化データが、デコーダの適用により生成される復号化データに少なくとも部分的に従って生成されるように、対応する復号化データを生成する。デコーダの１つが失敗する場合、対応する復号化データは、その他のデコーダにより生成される復号化データに少なくとも部分的に従って変更される。
【００３４】
例えば、以下の実施例１では、Ｍ＝２６、Ｎ＝１１であり、デコーダは［１１，７，３］デコーダである。１１ビット部分集合はＣ1~short及びＣ2~shortである。［１１，７，３］デコーダは、これら２つの部分集合のうちの一方に適用される。最終復号化データは、復号化１４ビットヘッダである。Ｃ1~shortの復号化に失敗するが、Ｃ2~shortの復号化に成功する場合、Ｃ1~shortの復号化試行が失敗したことの論理的表示は、その論理表示をＣ1~から復号化されるＣ1で置換することにより変更される。この変更は、復号化に成功したＣ2~shortに対応する復号化部分語Ｃ2shortに従う。Ｃ2shortは、［１５，７，５］エンコーダを使用して符号化されてＰ2が生成され、Ｐ2はＰ~と排他的論理和がとられて、Ｐ1~が生成され、Ｃ1~shortとＰ1~とが連接されてＣ1~が生成される。
【００３５】
好ましくは、部分集合は互いに素である。例えば、以下の実施例１では、Ｃ1~short及びＣ2~shortは互いに素である。
【００３６】
本発明の第４の態様は、データビットの誤り訂正方式を提供する方法である。データビットは、第１の符号化方式に従って符号化されて、第１のパリティビット群を生成する。データビットは、第２の符号化方式に従っても符号化され、第２のパリティビット群を生成する。第２のパリティビット群は、多対１変換により縮約パリティビット群に変換される。最終パリティビット群が、第１のパリティビット群と第２のパリティビット群とを結合することにより生成される。
【００３７】
例えば、以下の実施例１では、データビットはヘッダの１４ビットである。第１の符号化方式は、Ｃ1short及びＣ2shortを生成する［１１，７，３］方式である。第１のパリティビット群は、各Ｃ1short及びＣ2shortの最後の４ビットである。第２の符号化方式は、第２のパリティビット群Ｐ1及びＰ2を生成する［１５，７，５］方式である。第２のパリティビット群は、多対１変換「ＸＯＲ」（８ビットイン、４ビットアウト）により縮約群（ｃｏｎｄｅｎｓｅｄ  ｇｒｏｕｐ）Ｐに変換される。最終パリティビット群は、Ｃ1shortの最後の４ビット及びＣ2shortの最後の４ビットをＰと結合し、参照番号２４６及び２５４により図８に示す符号語のパリティビットを提供する。
【００３８】
好ましくは、最終パリティビット群は、第１のパリティビット群の少なくとも部分を縮約パリティビット群とまとめることにより、縮約パリティビット群と結合される。例えば、以下の実施例１では、Ｃ1shortの最後の４ビット、Ｃ2shortの最後の４ビット、及びＰが一緒に共通ロケーションに記憶されるように、Ｃ1short、Ｃ2short、及びＰが一緒に、フラッシュ装置の共通ロケーションに書き込まれる。
【００３９】
好ましくは、変換するステップは、第２のパリティビット群の複数の部分群を排他的論理和演算することを含む。例えば、以下の実施例１では、Ｐ1とＰ2との排他的論理和がとられる。
【００４０】
本発明の第５の態様は、データビットの誤り訂正方式を提供する方法である。複数の部分群がデータビットから生成され、各データビットは複数の部分群に少なくとも１回出現する。各部分群は、対応する第１の符号化方式に従って符号化されて、対応する１つ又は複数の第１のパリティビットを生成する。各部分群は、対応する第２の符号化方式に従って符号化されて、対応する１つ又は複数の第２のパリティビットを生成する。第２のパリティビットがすべて、多対１演算によりジョイント縮約パリティビットに変換される。第１のパリティビットのすべてをジョイント縮約パリティビットと結合することにより、最終パリティビット群が生成される。
【００４１】
例えば、以下の実施例１では、データビットはヘッダの１４ビットである。２つの部分群はヘッダの最初の７ビット及びヘッダの最後の７ビットである。各データビットは、部分群の１つに厳密に１回、出現し、他方の部分群には全く出現しない。第１の符号化方式はすべて、Ｃ1short及びＣ2shortを生成する［１１，７，３］方式であり、それにより、第１の部分群に４パリティビット（Ｃ1shortの最後の４ビット）を生成し、第２の部分群に４パリティビット（Ｃ2shortの最後の４ビット）を生成する。第２の符号化方式はすべて［１５，７，５］方式であり、それにより、第１の部分群に４パリティビットＰ1を生成し、第２の部分群に４パリティビットＰ2を生成する。Ｐ1及びＰ2は、多対１“ＸＯＲ”演算（８ビットイン、４ビットアウト）により縮約群Ｐに変換される。最終パリティビット群は、Ｃ1short、Ｃ2short、及びＰをフラッシュ装置に書き込むことにより、Ｃ1shortの最後の４ビット及びＣ2shortの最後の４ビットをＰと結合することにより生成される。
【００４２】
好ましくは、第１のパリティビットは、第１のパリティビットのすべてを縮約パリティビット群とまとめることにより、縮約パリティビット群と結合される。例えば、以下の実施例１では、Ｃ1shortの最後の４ビット、Ｃ2shortの最後の４ビット、及びＰが共通のロケーションに記憶されるように、Ｃ1short、Ｃ2short、及びＰが一緒にフラッシュ装置に書き込まれる。
【００４３】
好ましくは、各データビットは、複数の部分群に１回のみ出現する。例えば、以下の実施例１では、ヘッダの最初の７個の各ビットが第１の部分群に１回出現し、第２の部分群には全く出現せず、ヘッダの最後の７個の各ビットが第２の部分群に１回出現し、第１の部分群には全く出現しない。別法として、少なくとも１つのデータビットが、複数の部分群に少なくとも２回出現する。例えば、以下の実施例２では、４０９６個の情報ビットを符号化するために、５８６個の符号語内に５８６×７＝４１０２データビットがあるため、例えば、情報ビットのうちの１ビットを６回複製することができる。
【００４４】
好ましくは、すべての部分群は等サイズである。例えば、以下の実施例１では、両部分群はそれぞれ７ビットを有する。
【００４５】
好ましくは、部分群のうちの少なくとも１つについて、対応する第１及び第２の符号化方式は、共通の符号化方法を使用して得られ、それにより、第１の符号化方式は、第１の順番に従って部分群のビットを符号化し、第２の符号化方式は、第２の順番に従って部分群のビットを符号化する。例えば、以下の実施例１に対する代替として、［１１，７，３］符号化を、第１の符号化方式としてヘッダの最初の７ビットと最後の７ビットに別個に適用し、それから、ヘッダの最初の７ビットの順番を並べ替え、ヘッダの最後の７ビットの順番を並べ替え、それから、ヘッダの並べ替えられた最初の７ビット及び最後の７ビットに［１１，７，３］符号化を第２の符号化方式として別個に適用することができる。縮約パリティビットは、並べ替えられた最初の７ヘッダビットを符号化することにより生成される符号語の最後の４ビットと、並べ替えられた最後の７ヘッダビットを符号化することにより生成される符号語の最後の４ビットとの排他的論理和をとることにより生成される。以下の実施例１でのように、１４データビット及び１２パリティビットが記憶される。
【００４６】
好ましくは、すべての部分群は、共通の第１の符号化方式に従って符号化される。例えば、以下の実施例１では、共通の第１の符号化方式は［１１，７，３］符号化方式である。
【００４７】
好ましくは、すべての部分群は、共通の第２の符号化方式に従って符号化される。例えば、以下の実施例１では、共通の第２の符号化方式は［１５，７，５］符号化方式である。
【００４８】
好ましくは、第２のパリティビットをジョイント縮約パリティビットに変換することは、部分群の１つに対応する少なくとも１つの第２のパリティビットと、部分群の別の１つに対応する少なくとも１つの第２のパリティビットとの排他的論理和をとることを含む。例えば、以下の実施例１では、２つの「第２のパリティビット」群はＰ1及びＰ2であり、Ｐ1とＰ2との排他的論理和がとられる。
【００４９】
本発明の第６の態様は、データビットの誤り訂正方式を提供する方法である。複数のビット部分群がデータビットから生成され、各データビットは、部分群に少なくとも１回出現する。各部分群は、対応する符号化方式に従って符号化されて、対応する１つ又は複数の第１のパリティビットを生成する。各部分群について、対応する選択部分集合が、部分群のビット及び対応するパリティビットの中から選択される。すべての選択部分集合は、多対１演算によりジョイント縮約選択ビットに変換される。各部分群について、対応する短縮符号語が、各部分群のビットを対応するパリティビットと結合し、それから、対応する選択部分集合のビットを除去することにより生成される。最後に、データビットの符号語が、すべての短縮符号語をジョイント縮約選択ビットと結合することにより生成される。
【００５０】
例えば、以下の実施例１では、データビットはヘッダの１４ビットである。２つの部分群はヘッダの最初の７ビット及びヘッダの最後の７ビットである。各データビットは、部分群の１つに厳密に１回、出現し、他方の部分群には全く出現しない。各部分群は、［１５，７，５］エンコーダを使用して符号化されて、それぞれ８パリティビットを含む符号語Ｃ1及びＣ2を生成する。Ｃ1及びＣ2のビットから、「選択」部分集合Ｐ1及びＰ2が、多対１演算“ＸＯＲ”（８ビットイン、４ビットアウト）によりＰのジョイント縮約選択ビットに変換される。短縮符号語Ｃ1short及びＣ2shortが、部分群のビットを、［１５，７，５］エンコーダにより生成されたパリティビットと結合して、完全な符号語Ｃ1及びＣ2を生成し、それから、選択部分集合Ｐ1をＣ1から除去し、選択部分集合Ｐ2をＣ2から除去することにより生成される。最終符号語は、Ｃ1short、Ｃ2short、及びＰをフラッシュ装置に書き込むことで、Ｃ1short及びＣ2shortをＰと結合することにより生成される。
【００５１】
好ましくは、各部分群のビットは、部分群のビットを対応するパリティビットとまとめることにより対応するパリティビットと結合される。例えば、以下の実施例１では、符号語Ｃ1は、第１の部分群を、第１の部分群の符号化により生成されるパリティビットと連接することにより生成され、符号語Ｃ2は、第２の部分群を、第２の部分群の符号化により生成されるパリティビットと連接することにより生成される。
【００５２】
好ましくは、短縮符号語は、すべての短縮符号語をジョイント選択縮約ビットとまとめることによりジョイント選択縮約ビットと結合される。例えば、以下の実施例１では、Ｃ1short、Ｃ2short、及びＰが一緒にフラッシュ装置の共通ロケーションに記憶される。
【００５３】
好ましくは、各データビットは、複数の部分群に１回のみ出現する。例えば、以下の実施例１では、ヘッダの最初の７個の各ビットは、第１の部分群に１回出現するが、第２の部分群には全く出現せず、ヘッダの最後の７個の各ビットは、第２の部分群に１回出現するが、第１の部分群には全く出現しない。別法として、少なくとも１つのデータビットが、複数の部分群に少なくとも２回出現する。例えば、以下の実施例２では、４０９６個の情報ビットを符号化するために、５８６個の符号語内に５８６×７＝４１０２データビットがあるため、例えば、情報ビットのうちの１ビットを６回複製することができる。
【００５４】
好ましくは、すべての部分群は等サイズである。例えば、以下の実施例１では、両部分群はそれぞれ７ビットを有する。
【００５５】
好ましくは、すべての部分群は、共通の符号化方式に従って符号化される。例えば、以下の実施例１では、共通の符号化方式は［１５，７，５］符号化方式である。
【００５６】
好ましくは、選択部分集合をジョイント縮約選択ビットに変換することは、ある選択部分集合のビットと別の選択部分集合のビットとの排他的論理和をとることを含む。例えば、以下の実施例１では、Ｐ1とＰ2との排他的論理和がとられる。
【００５７】
本発明の第７の態様は、データビットの誤り訂正方式を提供する方法である。複数のビット部分群がデータビットから生成され、各データビットは、部分群に少なくとも１回出現する。各部分群は、対応する符号化方式に従って符号化されて、対応する符号語を生成する。各符号語から、ビットの対応する「選択部分集合」が選択される。すべての選択部分集合は、多対１変換によりジョイント縮約選択ビットに変換される。各符号語に対応する短縮符号語が、対応する選択部分集合のビットを符号語から除去することにより生成される。データビット全体の符号語が、すべての短縮符号語をジョイント縮約選択ビットと結合することにより生成される。なお、本発明の第７の態様は、データビットと別個であり、かつデータビットと区別可能なパリティビットを使用する必要がないため、本発明のこの態様は、系統的符号化及び非系統的符号化の両方に適用可能である。
【００５８】
例えば、以下の実施例１では、データビットはヘッダの１４ビットである。２つの部分群はヘッダの最初の７ビット及びヘッダの最後の７ビットである。各データビットは、部分群の１つに厳密に１回、出現し、他方の部分群には全く出現しない。部分群は、対応する［１５，７，５］符号化方式を使用して符号化されて、対応する符号語Ｃ1及びＣ2を生成する。Ｃ1から選択部分集合Ｐ1が選択され、Ｃ2から選択部分集合Ｐ2が選択される。Ｐ1及びＰ2は、多対１“ＸＯＲ”演算（８ビットイン、４ビットアウト）によりＰに変換される。短縮符号語Ｃ1short及びＣ2shortが、Ｃ1からＰ1を除去し、Ｃ2からＰ2を除去することにより生成される。データビット全体の符号語が、Ｃ1short、Ｃ2short、及びＰをフラッシュ装置に書き込むことでＣ1short及びＣ2shortをＰと結合することにより生成される。
【００５９】
好ましくは、短縮符号語は、すべての短縮符号語をジョイント選択縮約ビットとまとめることによりジョイント選択縮約ビットと結合される。例えば、以下の実施例１では、Ｃ1short、Ｃ2short、及びＰが一緒にフラッシュ装置の共通ロケーションに記憶される。
【００６０】
好ましくは、各データビットは、複数の部分群に１回のみ出現する。例えば、以下の実施例１では、ヘッダの最初の７個の各ビットは、第１の部分群に１回出現するが、第２の部分群には全く出現せず、ヘッダの最後の７個の各ビットは、第２の部分群に１回出現するが、第１の部分群には全く出現しない。別法として、少なくとも１つのデータビットが、複数の部分群に少なくとも２回出現する。
【００６１】
好ましくは、すべての部分群は等サイズである。例えば、以下の実施例１では、両部分群はそれぞれ７ビットを有する。
【００６２】
好ましくは、すべての部分群は、共通の符号化方式に従って符号化される。例えば、以下の実施例１では、共通の符号化方式は［１５，７，５］符号化方式である。
【００６３】
好ましくは、選択部分集合をジョイント縮約選択ビットに変換することは、ある選択部分集合のビットと別の選択部分集合のビットとの排他的論理和をとることを含む。例えば、以下の実施例１では、Ｐ1とＰ2との排他的論理和がとられる。
【００６４】
本発明の第８の態様は、Ｍデータビット及びＰパリティビットを含む符号語の表現を復号化する方法である。Ｐパリティビットは、第１のパリティビット群及び第２のパリティビット群に分けられる。Ｍデータビットは、第１のパリティビット群のみを使用して復号化されて、訂正済みデータビットを提供する。第１のパリティビット群のみを使用する復号化に失敗した場合、Ｍデータビットは、両パリティビット群を使用して復号化されて、訂正済みデータビットを提供する。
【００６５】
例えば、以下の実施例１では、Ｍ＝１４であり、Ｐ＝１２である。１４データビットは、Ｃ1~shortの最初の７ビット及びＣ2~shortの最初の７ビットである。１２パリティビットは、Ｃ1~shortの最後の４ビット、Ｃ2~shortの最後の４ビット、及びＰ~である。第１のパリティビット群は、Ｃ1~shortの最後の４ビット及びＣ2~shortの最後の４ビットである。第２のパリティビット群はＰ~である。データビットは、［１１，７，３］デコーダを第１のパリティビット群のみと共に使用して復号化されて、Ｃ1shortの最初の７ビット及びＣ2shortの最初の７ビットの復号化表現を提供する。Ｃ1~shortの復号化に失敗するが、Ｃ2~shortの復号化に成功する場合、復号化Ｃ2shortは［１５，７，５］エンコーダを使用して符号化されてＰ2が再生成され、Ｐ2はＰ~と排他的論理和演算されてＰ1~が生成され、Ｃ1~shortとＰ1~とが連接されてＣ1~が生成され、Ｃ1~が［１５，７，５］デコーダを使用して復号化される。
【００６６】
本発明の第９の態様は、Ｍデータビット及びＰパリティビットを含む符号語の表現を復号化する方法である。Ｍデータビットは２つ以上の部分集合に分けられ、各データビットは、部分集合に少なくとも１回出現する。Ｐパリティビットは、第１のパリティビット群及び第２のパリティビット群に分けられる。第１のパリティビット群は、まるでデータビットが、１：１の対応性で、データビット部分集合と第１のパリティビット群部分集合とに分けられるかのように同数の部分集合にさらに分けられる。各データビット部分集合は、対応する第１のパリティビット部分集合に従って復号化されて、対応する復号化データが生成される。これら復号化の１つが失敗する場合、復号化に失敗したデータビット部分集合は、第２のパリティビット群に少なくとも部分的に従って再び復号化されて、対応する復号化データが生成される。最後に、すべてのデータビット部分集合の復号化データが結合されて、Ｍデータビットの完全復号化データが生成される。
【００６７】
例えば、以下の実施例１では、Ｍ＝１４であり、Ｐ＝１２である。１４データビットは、２つの部分集合：Ｃ1~shortの最初の７ビット及びＣ2~shortの最初の７ビットに分けられる。第１のパリティビット群は、Ｃ1~shortの最後の４ビット及びＣ2~shortの最後の４ビットである。第２のパリティビット群はＰ~である。Ｃ1~shortの最初の７ビットに対応する第１のパリティビットの部分集合は、Ｃ1~shortの最後の４ビットである。Ｃ2~shortの最初の７ビットに対応する第１のパリティビットの部分集合は、Ｃ2~shortの最後の４ビットである。Ｃ1~shortの最初の７ビットは、［１１，７，３］デコーダによりＣ1~shortの最後の４ビットのみを使用して復号化される。Ｃ2~shortの最初の７ビットは、［１１，７，３］デコーダによりＣ2~shortの最後の４ビットのみを使用して復号化される。Ｃ1~shortの復号化に失敗するが、Ｃ2~shortの復号化に成功する場合、復号化Ｃ2~shortは［１５，７，５］エンコーダを使用して符号化されてＰ2を再生成し、Ｐ2はＰ~と排他的論理和演算されてＰ1~が生成され、Ｃ1~shortとＰ1~とが連接されてＣ1~が生成され、Ｃ1~が［１５，７，５］デコーダを使用して復号化され、それにより、符号語Ｃ1が再生成される。再生成されたＣ1の最初の７ビットと復号化Ｃ2shortの最初の７ビットとが連接されて、復号化１４ビットヘッダが生成される。
【００６８】
好ましくは、データビット部分集合の復号化データは、データビット部分集合の復号化データをまとめることにより結合される。例えば、以下の実施例１では、復号化Ｃ1shortの最初の７ビット及び復号化Ｃ2shortの最初の７ビットが連接されて、復号化１４ビットヘッダが生成される。
【００６９】
好ましくは、データビット部分集合は互いに素である。例えば、以下の実施例１では、Ｃ1~shortの最初の７ビット及びＣ2~shortの最初の７ビットは、２つの互いに素な部分集合である。
【００７０】
好ましくは、すべてのデータビット部分集合は等サイズである。例えば、以下の実施例１では、すべてのデータビット部分集合は７ビットを有する。
【００７１】
好ましくは、各データビット部分集合は、対応する第１の復号化方式を使用して対応する第１のパリティビット部分集合に従って復号化され、第１の復号化方式による復号化に失敗したデータビット部分集合は、対応する第２の復号化方式を使用することを含む。例えば、以下の実施例１では、第１の復号化方式は［１１，７，３］方式であり、第２の復号化方式は［１５，７，５］方式である。
【００７２】
好ましくは、データビット部分集合の少なくとも１つについて、対応する第１及び第２の復号化方式は、共通の復号化方法を適用する。例えば、本発明の第５の態様の実施例１に対する代替を続けると、第１の復号化方式及び第２の復号化方式は両方とも、［１１，７，３］方式である。第１の復号化方式は、並べ替えられていないヘッダビットの符号化により生成された、記憶されているパリティビットを使用する。記憶されている最初の７データビットの復号化に失敗するが、記憶されている最後の７データビットの復号化に成功する場合、復号化に成功したデータビットが並べ替えられ、符号化されて、対応するパリティビットが再生成される。これら再生成されたパリティビットは、記憶されている最後の４パリティビットと排他的論理和演算されて、並べ替えられた最初の７ヘッダビットのパリティビットが再生成され、これが、並べ替えられ、記憶された最初の７データビットの［１１，７，３］復号化を実行することにより、記憶されている最初の７データビットの２回目の復号化試行において使用される。
【００７３】
好ましくは、すべての第１の復号化方式は同一である。例えば、以下の実施例１では、すべての第１の復号化方式は同じ［１１，７，３］方式である。
【００７４】
好ましくは、すべての第２の復号化方式は同一である。例えば、以下の実施例１では、すべての第２の復号化方式は同じ［１５，７，５］方式である。
【００７５】
本発明の第１０の態様は、Ｎ＞Ｍビットを有する符号の表現からＭデータビットを復号化する方法である。最大でＮ−Ｍビットの選択部分集合がＮビットから除去され、それにより、残留ビットの集合を生成する。残留ビットは２つ以上の部分集合に分けられ、各残留ビットは部分集合の少なくとも１つのメンバである。各残留ビット部分集合は、各自のビットのみに従って復号化されて、対応する復号化データを生成する。残留ビット部分集合の１つの復号化に失敗する場合、その残留ビット部分集合は、除去された選択部分集合に少なくとも部分的に従って復号化されて、残留ビット部分集合の対応する復号化データを生成する。最後に、すべての復号化データが結合されて、Ｍデータビットの完全復号化データを生成する。なお、本発明の第１０の態様は、データビットと別個であり、かつデータビットと区別可能なパリティビットを使用する必要がないため、本発明のこの態様は、系統的符号化及び非系統的符号化の両方に適用可能である。
【００７６】
例えば、以下の実施例１では、Ｍ＝１４であり、Ｎ＝２６である。除去される選択部分集合はＰ~である。残留ビットは、２つの部分集合であるＣ1~short及びＣ2~shortに分けられる。Ｃ1~shortは、各自の１１ビットのみに従い、他の情報には従わずに復号化され、その結果として生成される復号化語の最初の７ビットは、Ｃ1~shortに対応する復号化データである。Ｃ2~shortは、各自の１１ビットのみに従い、他の情報には従わずに復号化され、その結果として生成される復号化語の最初の７ビットは、Ｃ2~shortに対応する復号化データである。Ｃ1~shortの復号化に失敗するが、Ｃ2~shortの復号化に成功する場合、復号化されたＣ2shortは、［１５，７，５］エンコーダを使用して符号化されてＰ2が生成され、Ｐ2はＰ~と排他的論理和がとられて、Ｐ1~が生成され、Ｃ1~shortとＰ1~とが連接されてＣ1~が生成され、Ｃ1~は［１５，７，５］デコーダを使用して復号化される。復号化Ｃ1shortの最初の７ビットと復号化Ｃ2shortの最初の７ビットとが連接されて、復号化１４ビットヘッダが生成される。
【００７７】
好ましくは、残留ビット部分集合の復号化データは、残留ビット部分集合の復号化データをまとめることにより結合される。例えば、以下の実施例１では、復号化Ｃ1shortの最初の７ビットと復号化Ｃ2shortの最初の７ビットとが連接されて、復号化１４ビットヘッダを生成する。
【００７８】
好ましくは、残留ビット部分集合は互いに素である。例えば、以下の実施例１では、Ｃ1~shortの最初の７ビット及びＣ2~shortの最初の７ビットは、２つの互いに素な部分集合である。
【００７９】
好ましくは、すべての残留ビット部分集合は等サイズである。例えば、以下の実施例１では、すべてのデータビット部分集合は７ビットを含む。
【００８０】
好ましくは、各残留ビット部分集合は、対応する第１の復号化方式を使用して各自のビットに従って復号化され、第１の復号化方式による復号化に失敗した残留ビット部分集合の除去された選択部分集合に従っての復号化は、対応する第２の復号化方式を使用することを含む。例えば、以下の実施例１では、第１の復号化方式は［１１，７，３］方式であり、第２の復号化方式は［１５，７，５］方式である。
【００８１】
好ましくは、残留ビット部分集合のうちの少なくとも１つについて、対応する第１及び第２の復号化方式は共通の復号化方法を適用する。例えば、本発明の第５の態様の実施例１に対する代替を続けると、第１の復号化方式及び第２の復号化方式は両方とも、［１１，７，３］方式である。第１の復号化方式は、並べ替えられていないヘッダビットの符号化により生成された、記憶されているパリティビットを使用する。記憶されている最初の７データビットの復号化に失敗するが、記憶されている最後の７データビットの復号化に成功する場合、復号化に成功したデータビットが並べ替えられ、符号化されて、対応するパリティビットを再生成する。これら再生成されたパリティビットは、記憶されている最後の４パリティビットと排他的論理和演算されて、並べ替えられた最初の７ヘッダビットのパリティビットを再生成し、これが、並べ替えられ、記憶されている最初の７データビットの［１１，７，３］復号化を実行することにより、記憶されている最初の７データビットの２回目の復号化試行において使用される。
【００８２】
好ましくは、すべての第１の復号化方式は同一である。例えば、以下の実施例１では、すべての第１の復号化方式は同じ［１１，７，３］復号化方式である。
【００８３】
好ましくは、すべての第２の復号化方式は同一である。例えば、以下の実施例１では、すべての第２の復号化方式は同じ［１５，７，５］復号化方式である。
【００８４】
本発明の実施形態に関連して本発明をよりよく理解するために、添付図面を参照する。添付図面では、同様の参照が全体を通して対応する部分又は要素を示す。
【発明を実施するための最良の形態】
【００８５】
本発明は、記憶されている情報の信頼性を確保するために、誤り訂正符号化方式を提供する方法及び装置を開示する。提案する方法は、長符号のデコーダ及びデコーダの回路複雑性を回避しながら、長符号の性能に近づく。したがって、ハードウェア実施及びソフトウェア実施のサイズ及び複雑性の低減が得られる。
【００８６】
本明細書では、用語「復号化データの変更」は、復号化データの第１の値から復号化データの第２の値への変更を指す。本発明の方法によれば、特定の短符号語表現の復号化データの変更は、他の短符号語表現に基づいて行われる。したがって、復号化が失敗した符号語表現に対するさらなる復号化の試行は、他の短符号語表現の復号化データに従って行われる。
【００８７】
本明細書では、用語「符号語の復号化データの値」は、任意の有効な数値を指す。この用語は、代替として、例えば、復号化の失敗により、目下、既知の値がないことの論理的な表示を指すこともある。したがって、復号化データの「変更」は、ある有効な数値から別の有効な数値への変更、復号化失敗の論理的な表示から有効な数値への変更、又は有効な数値から復号化失敗の論理的な表示への変更であってよい。
【００８８】
本明細書では、用語「部分集合」は、部分集合に対する完全な集合よりも小さい適切な部分集合及び完全な集合それ自体の両方を指す。
【００８９】
１つの短語の復号化データの、他の短語の復号化データに従っての変更は、本明細書によりオプションとして提供され、長符号語の各復号化実施例中に必ずしも行われる必要はないことを理解されたい。特定のエラーが発生する長語の特定の実施例では、すべての短語表現の最初の試行で復号化に成功することがあり得る。このような場合、復号化データの変更は適用されない。このような変更は、少なくとも１つの短語の復号化が失敗する場合のみ行われる。したがって、用語「変更を行う」は、「必要に応じて、オプションとして変更を行う」ことを意味する。
【００９０】
本発明の方法の好ましい実施形態を、実施例１及び実施例２に関連して本明細書において述べる。２つの実施例は、誤り訂正符号化方式を提供する装置を開示し、装置は、特にデータ記憶の用途によく適する。したがって、本発明の好ましい装置は、復号化プロセスのさらなるステップを適用するために、特定の語の遅延を増大させるために設けられるデコーダを備える。（希に）ピーク遅延により、この誤り訂正符号化方式は、固定の制限された遅延を有する同期又は準同期ストリームを適用する通信システムによっては適さない可能性がある。
【００９１】
本発明の方法により導入される平均遅延は、当該技術分野において既知の方法での平均遅延以下であることが強調されるべきである。しかし、遅延がかなり増大する希な場合、本発明の方法は、記憶媒体に特に適し、同期通信システムにはあまり適さない。
【００９２】
（実施例１）
非依存ビットを含むフラッシュ装置であって、各核セルに１ビットがあり、セル誤り率（ＣＥＲ）が４．７×１０-5であるフラッシュ装置が提供される。フラッシュ装置は各セルに１ビットを有するため、ビット誤り率（ＢＥＲ）も４．７×１０-5である。フラッシュ装置のフラッシュメモリは多くのブロックを含み、画定される各ブロックはいくつかのページを有する。各ページはヘッダ領域又は制御領域及びそれぞれ５１２データバイト長のいくつかのセクタを含む。１４ビットを含む各ブロックのヘッダに信頼性のある記憶を提供するとともに、１０-10未満のヘッダ誤り率（ＨＥＲ）性能（ＨＥＲ＜１０-10）を実現しながら、フラッシュ装置のフラッシュコントローラ内に誤り訂正符号化方式を設計する必要がある。
【００９３】
入力ＣＥＲが４．７×１０-5の１４ビットセットにわたってＨＥＲ＜１０-10という性能目標を提供するためには、３ビット誤り訂正能力が求められる。１つのエラー（すなわち、ｔ＝１）の訂正はＨＥＲ≒３．８×１０-7を提供し、２つのエラー（すなわち、ｔ＝２）の訂正はＨＥＲ≒２．１×１０-10を提供する。
【００９４】
したがって、符号レートＲが０．４８２８（すなわち、１４／２９）に等しく、ヘッダが長さ２９ビットの１つの符号語を使用して表される３誤り訂正［２９，１４］ＢＣＨ符号が必要とされる。
【００９５】
ＢＣＨ符号の符号化・復号化並びにこのような回路を構築する方法の文献が、長年にわたって十分に研究されている（参照文献［１６］〜［４７］参照）。本発明の方法を利用しながら、同じＨＥＲ目標性能を実現する符号化・復号化の一例を提供する。後述する例は、３つではなく２つのみのエラーを訂正する構成要素符号を含む簡易化コントローラを利用する。さらに、構成要素符号が訂正できる誤りの数（３ではなく２）の直接の結果として、長さの短縮が必要ないが、主に方式全体の構造に関連があるため、符号長は、各ヘッダで２９ビット符号ではなく２６ビットのみである必要がある（すなわち、符号レートＲ＝１４／２６＝０．５３８５が実現される）。フラッシュヘッダサイズで実現される低減利得は１１．５４％である。この利点は、以下の非限定的な例で実現される。
【００９６】
［２９，１４］ＢＣＨ符号に代えて、［１５，７，５］ブロック符号が設計される（したがって、エンコーダ／デコーダハードウェアの複雑性が低減する）。表記［ｎ，ｋ，ｄ］は、一般に、以下のように符号パラメータを定義する。すなわち、「ｎ」は符号長を指し、「ｋ」は情報ビット数を指し、「ｄ」は符号の最小ハミング距離を指す。
【００９７】
このような符号の入念な選択により、（ビット１２〜１５を抽出することで）３に等しい最小ハミング距離になる［１１，７，３］パンクチャ符号が得られる。したがって、このパンクチャ符号を使用して単一エラーを訂正することが可能である。この観察に基づいて、誤り訂正能力２ビットを有する１５ビット符号が開示される。この１５ビット符号は、最後の４ビットを除く場合、すなわち最初の１１ビットのみを使用する場合、あらゆる単一エラーを修正するために提供される。
【００９８】
この［１５，７，５］ブロック符号の生成行列２７０を図１０に示す。符号化プロセス、すなわち７つの情報ビットから８つのパリティビットを導出することは、以下のようにＧＦ（２）上で行列乗算演算を使用して適用される。
【００９９】
ｃ＝ｍ・Ｇ、[ｃ]＝１×１５、[ｍ]＝１×７、[Ｇ]＝７×１５、  （１．１）
式中、ＧＦ（２）は２つの要素を有するガロア有限体の表記であり、“ｃ”は符号語を含む行ベクトルとして定義され、“ｍ”は７つの情報ビットを含む行ベクトルとして定義され、“Ｇ”は系統的符号化行列として定義される。
【０１００】
［１５，７，５］線形系統的ブロック符号の復号化プロセスは、２ステップで行われる。ステップ１において、８ビットシンドロームが、図１１に示すようなブロック符号［１５，７，５］２８０のパリティ検査行列“Ｈ”を使用して計算される。シンドロームの計算は、以下のようにＧＦ（２）上で行列乗算演算を使用して行われる。
ｓ＝Ｈ・ｃT、[ｃ]＝１×１５、[ｓ]＝８×１、[Ｈ]＝８×１５  （１．２）
式中、“ｃ”は符号語を含む行ベクトルであり“ｓ”は８ビットシンドロームを含む列ベクトルであり、“Ｈ”はパリティ検査行列であり、表記()Tは転置を意味し、したがって、ｃTは列ベクトルである。
【０１０１】
ステップ２において、８ビットシンドロームを使用して、表２９０（図１２参照）にアクセスする。表２９０は、２つの４ビット数を提供し、各４ビット数は、１５ビット符号語内の単一エラーの位置を明らかにする。
【０１０２】
表２９０内の値“０”が「エラーなし」の場合を指すことに留意する。表２９０が特定のエントリ内に２つの数を含み、一方の値がゼロであり、他方の値が非ゼロである場合、これは、エラーが２つではなく１つ存在することを示す。さらに、シンドローム自体内のゼロは、エラーが全くないことを示す。シンドローム値は、シンドロームベクトルの一番上のビットがＬＳＢ（最下位ビット）であるのに対して、一番下のビットがＭＳＢ（最上位ビット）であると仮定して得られる。（シンドロームの可能な値２５６個のうちの）１２１個のみの値が表に提示されることに気付かれたい。デコーダは誤り検出機能も含むため、表２９０（図１２参照）に提示されない場合、３つ以上のエラーがある。しかし、デコーダはそれらの位置を示すことができない。
【０１０３】
この符号が生成される方法が特殊なことにより、単一ビット訂正用の部分行列“Ｈ（1）”が提供される。単一ビットの訂正は、同じ符号語の最初の１１ビットに適用される。部分行列“Ｈ（1）”は、“Ｈ”行列の最初の４行及び最初の１１列を含む。１５ビット語の最初の１１ビットの復号化プロセスは、以下のように２つの類似ステップにおいて適用される。
【０１０４】
第１のステップにおいて、上述したように、シンドロームの計算が以下のようにＧＦ（２）上での行列乗算演算により得られる。
ｓ＝Ｈ（1）・ｃT、[ｃ]＝１×１１、[ｓ]＝４×１、[Ｈ]＝４×１１  （１．３）
式中、“ｃ”は読み取り語（ｒｅａｄ  ｗｏｒｄ：リードワード）を含む行ベクトルであり、“ｓ”は４ビットシンドロームを含む列ベクトルであり、Ｈ（1）は、行列“Ｈ”の上記最初の４行及び上記最初の１１列を含む“Ｈ”の部分行列である。ブロック符号［１１，７，３］３００の行列Ｈ（1）を図１３に示す。
【０１０５】
復号化プロセスの第２のステップにおいて、エラーの位置が４ビットシンドローム３１０から抽出される（図１４参照）。値“０”を有するシンドロームビットは「エラーなし」の場合を定義する。
【０１０６】
１５ビット符号語の最初の１１ビットの復号化が成功すると、１５ビット符号語の最後の４ビットがデコーダに提供されない場合であっても、（１．１）の行列“Ｇ”を使用して、これら最後の４ビットを再生成することができる。最初の１１ビットはすでに復号化されているため、エンコーダのサイズは、最後の４ビットを、１１復号化ビットのうちの最初の７ビットから直接再生成するように低減される。これは、最後の４ビットの再生成に、行列“Ｇ”の最後の４列しか必要ないことを意味する。
【０１０７】
上記生成された符号語を使用して、シングル［２９，１４］ＢＣＨ符号がＣ1、Ｃ2として示される２つの互いに素の語の集合で置き換えられる。Ｃ1及びＣ2は２つの系統的符号語であり、それぞれの長さは１５である。互いに素な語Ｃ1は７つの情報ビット及び８つのパリティビットを含むのに対して、互いに素な語Ｃ2は残りの７つの情報ビット及びそれぞれに関連する８つのパリティビットを含む。したがって、合計でヘッダの同じ１４個の情報ビットが得られる。符号化プロセスは、（１．１）に示すように上記式に従って行われる。
【０１０８】
２つの互いに素な各語Ｃ1、Ｃ2の最後の４つのパリティビットは部分集合Ｐ1、Ｐ2として定義される。データ全体の関数として上記参照されるものは、単に、これら部分集合の排他的論理和すなわち（ＸＯＲ）演算である（すなわち、Ｐ＝Ｐ1ｖＰ2）（図８参照）。７つの各情報ビットを符号化した後、２つの部分集合Ｐ1及びＰ2がＣ1及びＣ2から抽出される。次に、残りのビットがフラッシュ装置に書き込まれる（すなわち、Ｃ1の最初の１１ビット及びＣ2の最初の１１ビットのみ）。“Ｐ”で示されるデータ全体の統一関数は、データの互いに素な部分群を統一するため、統一データを定義する。この統一集合Ｐもフラッシュ装置に書き込まれる。
【０１０９】
したがって、この実施例は２６（１１＋１１＋４）ビットを共に組み込む。フラッシュ装置に書き込まれるビットは、符号語が物理的な記憶装置に送られる前に符号語から抽出されるため、ビットＰ1、Ｐ2を含まないことがさらに強調される。以下において、復号化プロセス中に再生成される抽出ビットを「隠れビット」と定義する。上述したように、最初の１１ビットの復号化が成功した場合、符号化プロセスを介して残りの４ビットを再生成することができる。“フラッシュ装置からのヘッダの読み取り（復号化）”の項において後述する復号化プロセスは、この性質を利用する。
【０１１０】
公正な比較状況が手元にあり、このような符号化及び復号化プロセスの実施が実現可能なことを当業者は理解することができる。この革新的な誤り訂正符号化方式の帰結として、書き込み（符号化）動作及び読み取り（復号化）動作は以下のようになる。
【０１１１】
（１．ヘッダをフラッシュ装置に書き込む（符号化））
・ヘッダの７つの情報ビットの第１の集合を使用し、式（１．１）に関連して詳細に上述したプロセスを用いて、Ｃ1として定義される第１の［１５，７］ブロック符号を符号化する。この１５ビット符号語Ｃ１のビット１２〜１５をＰ1と示す。
・ヘッダの７つの情報ビットの第２の集合を使用し、式（１．１）に関連して詳細に上述したプロセスを用いて、Ｃ2として定義される第２の［１５，７］ブロック符号を符号化する。この１５ビット符号語Ｃ2のビット１２〜１５をＰ2と示す。
・それぞれビット単位で集合Ｐ1と集合Ｐ2との排他的論理和をとり、パリティ−２ビット又はビット“Ｐ”として定義される４ビットを得る。
・Ｃ1のビット１〜１１及びＣ2のビット１〜１１をフラッシュ装置に書き込む。Ｃ1のビット１〜１１をＣ1shortと示し、Ｃ2のビット１〜１１をＣ2shortと示す。
・４ビット“Ｐ”をフラッシュ装置に書き込む。
【０１１２】
（２．ヘッダをフラッシュ装置から読み取る（復号化））
・２つの１１ビット語を読み取る。その結果は、Ｃ1~short及びＣ2~shortと示される２つの語である。フラッシュにエラーがない場合、Ｃ1~short＝Ｃ1short且つＣ2~short＝Ｃ2shortである。エラーの場合、Ｃ1~short又はＣ2~shortは、フラッシュに元々書き込まれた符号語Ｃ1short及びＣ2shortに関してエラーを含む。エラーの場合、Ｃ1~short又はＣ2~shortがそれぞれ語（必ずしも符号語である必要はない）として示されることに留意する。
・式（１．３）、すなわち単一エラー訂正デコーダに関連して詳細に上述したプロセスに従って語Ｃ1~short及びＣ2~shortを復号化する。
両語の復号化に成功する場合（Ｃ1~shortが０個又は１個のエラーを有し、且つＣ2~shortが０個又は１個のエラーを有するため）、ヘッダが、１１ビット復号化語Ｃ1shortの最初の７ビット及び１１ビット復号化語Ｃ2shortの最初の７ビットとして首尾よく読み取られる。非系統的符号の場合、ヘッダを首尾よく読み取るには、さらなる情報（例えば、表又は他の変換）が必要とされる。
両語の復号化に失敗する場合（Ｃ1~shortが２個以上のエラーを有し、且つＣ2~shortが２個以上のエラーを有するため）、ヘッダは首尾よく読み取られない。
一方の語の復号化に失敗し、他方の語の復号化に成功する場合（一方の語が０個又は１個のエラーを有し、且つ他方の語が２個以上のエラーを有するため）、復号化プロセスはステップ３に進む。
【０１１３】
（３．厳密に１個の部分符号が失敗する場合においてヘッダを読み取る）
・フラッシュ装置からビットＰ~を読み取る。これらのビットは、Ｐ~と“Ｐ”との間に相違がある可能性もあるため、ＰではなくＰ~と定義される。Ｐ~ビットも同様にフラッシュ装置から読み取られ、フラッシュ装置がエラーを導入するものと仮定される。
・Ｃ1~shortの復号化に失敗し、Ｃ2~shortの復号化に成功する場合、Ｐ1~が、以下のようにＣ2short及びＰ~から再生成される。
式（１．１）に関連して詳細に上述したように、符号化プロセスを適用することによりＣ2shortからＣ2の隠れＰ2ビットを再生成する。
ビットＰ~と再生成された隠れビットＰ2との排他的論理和をとり、Ｐ1~を生成する。
Ｃ1~内のビットＣ1~shortをビット位置１〜１１に配置し、Ｃ1~内のビットＰ1~をビット位置１２〜１５に配置することにより、Ｃ1~short及びＰ1~からＣ1~を生成する。
・式（１．２）に関連して詳細に上述した復号化プロセスを適用することにより、全１５ビットを２つの誤り訂正［１５，７］ブロック符号として使用してＣ1~を復号化する。
・復号化が成功した場合、ヘッダが首尾よく読み取られる。復号化が成功しなかった場合、ヘッダの読み取りは失敗する。
・Ｃ2~shortの復号化に失敗し、Ｃ1~shortの復号化に成功する場合、以下のようにＰ2~をＣ1short及びＰ~から再生成する。
式（１．１）に関連して詳細に上述したように、符号化プロセスを適用することによりＣ1shortからＣ1の隠れＰ1ビットを再生成する。
ビットＰ~と再生成された隠れビットＰ1との排他的論理和をとり、Ｐ2~を生成する。
Ｃ2~内のビットＣ2~shortをビット位置１〜１１に配置し、Ｃ2~内のビットＰ2~をビット位置１２〜１５に配置することにより、Ｃ2~short及びＰ2~からＣ2~を生成する。
・式（１．２）に関連して詳細に上述した復号化プロセスを適用することにより、全１５ビットを２つの誤り訂正［１５，７］ブロック符号として使用してＣ2~を復号化する。
・復号化が成功した場合、ヘッダが首尾よく読み取られる。復号化が成功しなかった場合、ヘッダの読み取りは失敗する。
【０１１４】
（実施例１の数学的解析）
以下の項に、サイズ及び回路複雑性の低減において実現される利得を評価するために、本発明の方法において実行される数学的解析を詳細に説明する。２個のエラーを訂正可能なデコーダの実施は、３個のエラーを訂正可能なデコーダの実施よりも簡易であるため、コントローラ複雑性に関連して実現される利得は明らかである。
【０１１５】
参照方式を計算するために、ｐをフラッシュ装置の入力ＢＥＲを表すものとして定義する（すなわち、本例ではｐ＝４．７×１０-5）。［ｎ＝１５、ｋ＝７、ｄ＝５、ｔ＝２］であるデコーダのＨＥＲ性能は、以下のように２項分布に従って与えられる。
【０１１６】
【数１】
2010509790.tif 000003
式中、“ｔ”は以下のように誤り訂正能力（すなわち、訂正可能な誤りビットの最大数）を指し、すなわち、
2010509790.tif 000004
である。（１．４）によれば、ＨＥＲは１０-10よりも高く、２個のエラーを訂正するには不十分であるため、参照方式は３つの誤り訂正ＢＣＨ符号を使用せざるをえない。これより、本発明の方式を利用するＨＥＲ性能の計算に目を向けると、［ｎ＝１１，ｋ＝７，ｄ＝３，ｔ＝１］である本発明の部分符号誤り率（ＳＣＥＲ）は、したがって、
【数２】
2010509790.tif 000005
により与えられる。
【０１１７】
ＨＥＲ性能への第１の寄与因子（ｃｏｎｔｒｉｂｕｔｏｒ）は、ヘッダ内の２つの部分符号の復号化に失敗する場合である。この確率は以下のように計算される。
ＨＥＲ2,1＝（ＳＣＥＲn=11,t=1）2＝１．４７・１０-14  （１．６）
【０１１８】
ＨＥＲ性能への第２の寄与因子は、第１の段階において１つの語の復号化に失敗し、第２の段階において３つ以上のエラーの復号化に失敗する（１５ビットを使用して最大で２個のエラーを復号化しようとする場合）場合である。この確率は以下のように計算される。
【数３】
2010509790.tif 000006
【０１１９】
これら２つの確率を結合すると、
【数４】
2010509790.tif 000007
がもたらされる。
【０１２０】
ＨＥＲ性能ＨＥＲ2,2への第２の寄与因子は、以下のように計算される。
【０１２１】
第１の部分符号の復号化に失敗し、第２の部分符号の復号化に成功する２つの確率があるため、左側の２つの因子ＳＣＥＲt=1,n=11（１−ＳＣＥＲt=1,n=11）は２で乗算されるべきである。第１の確率は、単一誤り訂正ブロック符号に従って、第１の部分符号の復号化に失敗するが、第２の部分符号の復号化が成功する場合に得られる。第２の確率は、単一誤り訂正ブロック符号に従って、第１の部分符号の復号化に成功するが、第２の部分符号の復号化が失敗する場合に得られる。
【０１２２】
一番右側にある因子（ＳＣＥＲt=2,n=15）／（ＳＣＥＲt=1、n=11）は２つの値の除算の結果である。この結果は、１１ビットの部分集合内に“２つ”以上のエラーがある場合、１５ビットの集合内に３つ以上のエラーがある確率に相当する。１１ビットの部分集合内に２つ以上のエラーがあるイベントをイベント“ｘ”と定義し、１５ビットの集合内に３つ以上のエラーがあるイベントをイベント“ｙ”と定義する。したがって、イベントＰ（ｙ｜ｘ）がベイズの法則に従って以下のように得られる。
【数５】
2010509790.tif 000008
【０１２３】
イベントＰ（ｙ，ｘ）は、１５ビットの集合内に３つ以上のエラーが存在し、且つ１１ビットの部分集合内に２つ以上のエラーが存在することを指す。１５ビットの集合内に３つ以上のエラーがあるケースはすべて、これら１５ビットの部分集合が２つ以上のエラーを含むイベントを含むことは明らかである。したがって、Ｐ（ｙ，ｘ）＝Ｐ（ｙ）であり、式（１．７）の一番右側の要素はＰ（ｙ）／Ｐ（ｘ）である。
【０１２４】
（実施例２）
実施例１において上に開示したものと同じフラッシュ装置、すなわち、各セルに１ビットがあり、セル誤り率（ＣＥＲ）が４．７×１０-5であるフラッシュ装置が提供される。デコーダが実施されて、（各８ビットの）５１２バイトを含むセクタデータ領域の信頼性のある記憶を提供するように、デコーダを備えるフラッシュ装置を設計するように求められる。データ自体は各セクタのヘッダよりも重要性が低いため、データの目標性能、すなわちＳＥＲ（セクタ誤り率）は５×１０-8未満である。フラッシュ装置の設計は、単純なＥＣＣ（誤り訂正符号）ハードウェア（すなわち、ヘッダにすでに設計されている１５ビットブロック符号）に制限される。
【０１２５】
ｔ＝１エラーの訂正では、ＳＥＲ≒１．３６×１０-4が得られる。ｔ＝２エラーの訂正は、ＳＥＲ≒２．８×１０-8が得られる。符号レートＲは、情報ビット数ｋを符号長ｎで割った数により定義される。換言すれば、合計で
2010509790.tif 000009
個の符号語を使用して、長さ４０９６ビットのセクタを表すことにより、合計符号レートＲ＝５１２×８／（５８６×１５）＝０．４６６が提供される。したがって、符号レートＲ＝７／１５＝０．４６６を有する２つの誤り訂正［１５，７，５］ブロック符号で十分である。
【０１２６】
それぞれ長さが１５の５８６個の符号語設計を使用せずに、７個の情報ビット及び４個のパリティビットの５８６個のパンクチャ符号語を含む新しい設計が、本明細書において上述した制約と同じ制約と保持しながら提供される。全部分符号からの４個のパリティビットの第２の集合の排他的論理和がとられ、４ビットの結果がフラッシュ装置に記憶される。このようにして、本発明の方法は、同じハードウェア設計を使用し、より高い符号レートＲ＝４０９６／（５８６×１１＋４）＝０．６３５ビット／セルを提供して、目標性能ＳＥＲ＜５×１０-8を満たせるようにする。利得は、フラッシュ装置のサイズが２６．６％と大幅に低減することである。セクタの読み取り動作及び書き込み動作は以下のように行われる。
【０１２７】
（１．セクタをフラッシュ装置に書き込む（符号化））
・セクタの４０９６ビットを使用して［１５，７，５］ブロック符号の５８６個の符号語を符号化する。
・５８６個すべての符号語のビット１２〜１５の排他的論理和をとり、パリティ−２ビットと定義される４ビットを得る。
・フラッシュ装置に５８６個すべての符号語のビット１〜１１を書き込む。
・４個のパリティ−２ビットをフラッシュ装置に書き込む。
【０１２８】
（２．セクタをフラッシュ装置から読み取る（復号化））
・長さ１１の５８６個の符号語をフラッシュ装置から読み取る。
・［１１，７，３］ブロック符号デコーダに単一誤り訂正デコーダを使用して５８６語を復号化する。
・すべての符号語が復号化に成功する場合、セクタは首尾よく復号化される。
・２個以上の語が復号化に失敗する場合、セクタの復号化に不具合がある。
・単一の語が復号化に失敗し、その他の５８５語が復号化に成功した場合、以下のステップを実行する。
式（１．１）に関連して詳細に上述した符号化を適用することにより、復号化に成功した５８５個すべての語の隠れパリティビット１２〜１５を再生成する。
パリティ−２ビットをフラッシュ装置から読み取る。
パリティ−２ビットと復号化に成功した５８５個すべての符号語の隠れパリティビット１２〜１５との排他的論理和をとり、復号化に失敗した５８６番目の語のビット１２〜１５を推定する。
式（１．２）に関連して詳細に上述した二重誤り訂正［１５，７，５］ブロック符号デコーダプロセスを使用して、ここでは１５ビットすべてを使用して、失敗した語を再び復号化する。復号化に成功した場合、セクタは首尾よく読み取られる。復号化に成功しない場合、セクタの復号化に不具合があった。
【０１２９】
実施例２を使用する本発明の方法は以下の利点を実現する。
・フラッシュ装置サイズの低減（セル数で２６％の低減）又はより高い符号レート（０．４６６ではなく０．６３５）の提供。
・同じＳＥＲ性能要件が保持される。
・同じハードウェア複雑性−［１５，７，５］ブロック符号エンコーダ／デコーダを使用する
・ヘッダ及びデータの符号化手順並びに復号化手順に統一されたハードウェア
【０１３０】
（実施例２の数学的解析）
ＳＥＲ解析は、参照方式と本発明の方式との比較を提供し、これを図９に示す。これらの値を実現するために使用される式は以下の項において与える。
【０１３１】
１．参照方式（曲線２６２）
ｐをフラッシュ装置のＣＥＲ性能を表すものとする（すなわち、本例ではｐ＝４．７×１０-5）。［ｎ＝１５、ｋ＝７、ｔ＝２］ブロック符号デコーダのフレーム誤り率（ＦＥＲ）は、
【数６】
2010509790.tif 000010
により与えられる。
【０１３２】
参照方式（［ｎ＝１５、ｋ＝７、ｔ＝２］ブロック符号の５８６個の符号語）のＳＥＲ性能は、
【数７】
2010509790.tif 000011
により与えられる。
【０１３３】
２．本発明の方式（曲線２６４）
［ｎ＝１１，ｋ＝７，ｔ＝１］ブロック符号デコーダのフレーム誤り率は、
【数８】
2010509790.tif 000012
により与えられる。
【０１３４】
フラッシュ装置のＳＥＲ性能への第１の寄与因子は、セクタ内の失敗した２個以上の語の実施例を指す。この確率は、
【数９】
2010509790.tif 000013
により定義される。
【０１３５】
フラッシュ装置のＳＥＲ性能への第２の寄与因子は、第１の段階において単一の語が失敗し、第２の段階において３つ以上のエラーがある実施例を指す（最大で２個のエラーを復号化可能なデコーダを使用して１５ビットを復号化する場合）。この確率は、
【数１０】
2010509790.tif 000014
により定義される。
【０１３６】
これら２つの寄与因子を結合すると、
ＳＥＲ2＝ＳＥＲ2,1＋ＳＥＲ2,2＝３．３・１０-8                  （２．６）
という確率が提供される。
【０１３７】
これより図１を参照して、本発明の装置のエンコーダ及びデコーダを含むブロック図を示す。本発明の装置１は、アプリケーションから情報を受け取り、その情報を装置１内に記憶するホストインタフェースモジュール１０を含む。
【０１３８】
ホストインタフェース１０は、情報を多段階エンコーダ２０に転送する。多段階エンコーダ２０は、上述した「ヘッダをフラッシュ装置に書き込む」プロセスを実行し、図２及び図３においてさらに詳細に提示される。多段階エンコーダ２０は、情報ビットＫ個のブロックをＮビットの符号語に変換する。但し、Ｎ＞Ｋである。実施例１に関しては、Ｋ＝１４であり、Ｎ＝２６である。
【０１３９】
次に、このＮビットブロックはデジタル処理ユニット３０に転送される。デジタル処理ユニット３０は、実施例２において述べたように、データセクタをブロックに追加するために設けられ、ブロックをセルに書き込む前に他のデジタル手順を実行する。このようなデジタル手順は、任意に、インタリーブ手順及びグレーマッピング手順を含む。デジタル処理ユニット３０は、当該技術分野において既知の任意の処理ユニットであってよい。
【０１４０】
次に、処理されたＮビットブロックは、物理的な情報ビットを記憶するために設けられる記憶装置４０に転送される。
【０１４１】
ブロックが記憶装置４０から読み取られると、そのブロックはデジタル逆処理ユニット５０に転送されて、Ｎビットブロックから、多段階エンコーダ２０の出力に提示されたものと同じものに変換される。
【０１４２】
次に、Ｎビットブロックは、デジタル逆処理ユニット５０から多段階デコーダ１００に転送される。多段階デコーダ１００は、「ヘッダをフラッシュ装置から読み取る」項において上述し、図４〜図６においてさらに詳細に述べられるように、２６ビットのヘッダ符号語からヘッダの１４個の情報ビットを復元するために設けられる。
【０１４３】
次に、ヘッダの復元された情報ビットが再びホストインタフェース１０に転送される。
【０１４４】
これより図２を参照して、図１の多段階エンコーダ２０を構成する構成要素のブロック図を示す。１４個の情報ビットはホストインタフェース１０から転送され、ランダムアクセスメモリ（ＲＡＭ）２１の上部（非ジョイント（ｄｉｓｊｏｉｎｔ：互いに素）セクション）に記憶される。ＲＡＭ２１の非ジョイントセクションは、２２ビットの記憶領域を提供する。
【０１４５】
部分符号エンコーダ２２をアクティブ化して、［１５，７，５］ブロック符号エンコーダを使用して１４個の情報ビットからの最初の７個の情報ビットを１５ビットに符号化するために、状態機械制御ロジックブロック２４が設けられる。
【０１４６】
これら１５ビットのビット１２〜１５は、ジョイント（ｊｏｉｎｔ）パリティプロセッサ２３に転送され、部分符号エンコーダ２２からの新しい４個のパリティビット（ビット８〜１１）は、ＲＡＭ２１の上部（非ジョイントセクションと呼ばれる）に再び送られる。ジョイントパリティプロセッサ２３は、数学的圧縮式（例えば、ＸＯＲ）をすべての部分符号の第２タイプのパリティビットに対して適用するために設けられる。
【０１４７】
ＲＡＭ２１から、情報ビット７個の第２の集合が部分符号エンコーダ２２に転送され、符号化されて［１５，７，５］ブロック符号語になる。ブロック符号語の１５ビットからの情報ビット１２〜１５は、ジョイントパリティプロセッサ２３に転送され、追加の４個のパリティビット（ビット８〜１１）は、部分符号エンコーダ２２から再びＲＡＭ２１の上部に転送され、これにより、７ビットの第２の集合の、１１情報ビット［１１，７，３］符号への符号化が完了する。
【０１４８】
ジョイントパリティプロセッサ２３において、これら４個の情報ビット１２〜１５は、ユニット２３に既に記憶されている４ビットとビット単位で排他的論理和がとられる。その結果は、ＲＡＭ２１の下部（ジョイントセクションと呼ばれる）に記憶される。
【０１４９】
これより図３を参照して、図２の状態機械制御ロジックブロック２４において実行される符号化プロセス３１のフローチャートを示す。第１のステップ３２において、部分符号番号“Ｎ”が初期化されて０になる。
【０１５０】
次のステップ３３において、変数“Ｎ”の値が２の値、すなわち、実施例１に関連して２つの部分符号に達したか否かが調べられる。符号化プロセスのこの段階では“Ｎ”＝０であるため、状態機械制御ロジックブロック２４が部分符号１を符号化していることを示すために、“Ｎ”の値は１だけインクリメントされる（ステップ３４）。
【０１５１】
次のステップ３５において、部分符号エンコーダ２２（図２参照）がアクティブ化されて、部分符号１が符号化される。ＤＪＰ1として定義されるビット１〜１１が、ＲＡＭ２１の上部に記憶される。
【０１５２】
ステップ３６において、ＪＰ1として定義されるビット１２〜１５がジョイントパリティプロセッサ（ＪＰＰ）ユニット２３（図２参照）に記憶される。
【０１５３】
ステップ３７において、これら４個のビット１２〜１５が更新される（すなわち、初期の４つの０と排他的論理和がとられる）。次に、符号化プロセスはステップ３３に戻る。
【０１５４】
次のステップ３３において、変数“Ｎ”の値が再び調べられて、ループのこのサイクルにおいて２の値に達したか否かが判断される。この段階においてＮ＝１であるため、符号化プロセスはステップ３４に進み、ループの第２のサイクルを実行する。
【０１５５】
ステップ３４において、変数“Ｎ”の値が１だけインクリメントされ、Ｎ＝２に等しくなる。
【０１５６】
ステップ３５において、７ビットの第２の群が符号化されて１５ビット符号語になる。最初の１１ビットの最後の４ビットは、ＤＪＰ2として定義され、ＲＡＭ２１の上部に記憶される。１５ビットの最後の４ビットはＪＰ2として定義される。
【０１５７】
ステップ３６において、ＪＰ2ビットがＪＰＰユニット２３（図２参照）に転送される。
【０１５８】
次のステップ３７において、ＪＰ1ビットとＪＰ2ビットとの排他的論理和がビット単位でとられて、ＪＰＰユニット２３の４個の出力ＪＰＰビットが生成される。
【０１５９】
このステップに続き、符号化プロセスはステップ３３に戻る。ステップ３３に到達したとき、変数“Ｎ”の値は２に等しい。したがって、肯定（“Ｎ”＝２）の場合、符号化プロセスはステップ３８に進む。
【０１６０】
ステップ３８において、結果として生成されたＪＰビットがＲＡＭ２１の下部に書き込まれる。
【０１６１】
最後のステップ３９において、符号化プロセスは終了する。
【０１６２】
これより図４を参照して、図１の多段階デコーダ１００を構成する構成要素のブロック図を示す。多段階デコーダ１００の実施態様は、ジョイント情報（ＪＩＲ）１１０を記憶するＲＡＭユニットと非ジョイント情報（ＤＪＩＲ）２００を記憶するＲＡＭユニットとを区別するために提供される。これら２つのタイプの情報の区別は、先の数学的解析においてＪＩＲユニットを使用する確率を検討した場合、この確率がかなり小さいことが分かったことによる。したがって、回路複雑性を低減するために、これら２つのＲＡＭユニットを区別することが賢明である。
【０１６３】
ＤＪＩＲ２００は、２２ビットの第１及び第２の非ジョイント情報語を記憶するために提供される。これら語は二重モードデコーダユニット１３０に転送され、このデコーダ１３０は、制御ユニット１９０を介してこれら２２ビットを読み取る。二重モードエンコーダユニット１３０は、上述した実施例１に関しては、単一誤り訂正モードでアクティブ化される。
【０１６４】
第１の語の復号化に成功する場合、ＤＪＩＲユニット２００は、必要であれば、制御ユニット１９０を介して訂正済みビットで更新される。次に、復号化プロセスは、第２の１１ビット語に対して繰り返される。
【０１６５】
第１及び第２の語両方の復号化に成功する場合、ＪＩＲユニット１１０はアクティブ化されないままである。両語の復号化に失敗する場合、全復号化プロセスが失敗する。
【０１６６】
両部分語ではなく、いずれか一方の部分語（第１の部分語又は第２の部分語）において復号化が失敗する場合、この失敗した部分語を復号化しようという２度目の試みが、復号化に成功した部分符号を使用して行われる。
【０１６７】
例えば、第１の部分符号の復号化に成功し、第２の部分語の復号化に失敗した場合、復号化に成功した第１の部分符号を使用して第２の部分語を復号化しようという２度目の試みが行われる。ＪＩＲユニット１１０からの４ビットが、制御ユニット１９０を介して読み取られ、中間ＲＡＭ（ＩＲ）ユニット１７０に記憶される。第１の部分符号は、制御ユニット１９０を介して多段階エンコーダ２０（図２参照）に再び読み込まれる。多段階エンコーダ２０は、４個のＪＰ1ビットを再生成し、それからＪＰ1ビットをＩＲユニット１７０に転送する。ジョイント情報プロセッサ（ＪＩＰ）ユニット１８０が、ＪＰとＪＰ１との排他的論理和をビット単位でとるために設けられる。その結果は、二重モードデコーダユニット１３０の［１５，７，５］ブロック符号の位置１２〜１５に記憶される。第２の部分符号は、ＤＪＩＲから二重モードデコーダユニット１３０の［１５，７，５］ブロック符号の位置１〜１１に再び読み込まれて、１５ビット語を生成する。このような場合、二重モードデコーダユニット１３０は二重ビット誤り訂正モードでアクティブ化される。二重モードエンコーダユニット１３０が二重誤り訂正モードでの復号化に失敗する場合、全復号化プロセスが失敗する。しかし、二重モードデコーダユニット１３０が二重誤り訂正モードでの復号化に成功する場合、ＤＪＩＲユニット２００は訂正されたビットで更新され、読み取りプロセスは成功を宣言する。
【０１６８】
別法として、第２の部分語が復号化に成功し（復号化に成功した部分符号として定義される）、第１の部分語の復号化に失敗した場合でも、上記例において上述したような第１の部分符号と第２の部分語との動作機能が交換されて、同様の復号化プロセスが実行される。
【０１６９】
本発明を、長符号語を復号化する単一デコーダを提供するものとして本明細書において説明した。しかし、本発明は単一デコーダのみに制限されず、長符号語よりも少数のビットを有する符号語をそれぞれ復号化する複数のデコーダを提供するためにも等しく適用可能である。
【０１７０】
図５を参照して、図４の二重モードデコーダユニット１３０のブロック図を示す。状態機械ユニット１３８が、二重モードデコーダユニット１３０により実行される復号化プロセスを制御するために設けられる。
【０１７１】
ＤＪＩＲユニット２００、ＪＩＲユニット１１０、及びＪＩＰユニット１８０（図４参照）から転送される情報ビットは、共にデータ収集ユニット１３２に収集される。この収集は、状態機械ユニット１３８により制御される。
【０１７２】
データ収集ユニット１３２から受け取られた情報ビットは、デコーダコアユニット１３４において復号化される。復号化プロセスに要求される計算のために、パリティ検査行列ユニット１３６が、単一誤り訂正モード又は二重誤り訂正モードに従って利用される。パリティ検査行列１３６は、各ラインに、受け取った語に対するパリティ検査を含む。行列内のこのような各ラインは、検査されている位置に値“１”を含む。検査手順は、パリティ検査ラインが値“１”を含む位置にある語の要素の排他的論理和をとる演算である。検査手順は、ＸＯＲ演算の結果が０を返す場合に成功する。すべての検査手順が０を返す場合、受け取られた語は符号語として判断される。受け取った語に対してパリティ検査行列１３６を適用した結果は、受け取られた語のシンドロームである。非ゼロ値を含む受け取られた語のシンドロームは、受け取られた語が符号語ではないことを示す。パリティ検査行列１３６を受け取った語に対して適用することは、式（１．２）又は式（１．３）に関連して詳細に上述した手順に従って実行される。
【０１７３】
実施例１に関連して、パリティ検査行列ユニット１３６（図５参照）において実施される行列は、単一誤り訂正モード及び二重誤り訂正モードの両方に提供され、単一誤り訂正モードで使用される行列は、実際には、二重誤り訂正モードで使用される行列の部分集合である。
【０１７４】
図６を参照して、実施例１に関連する復号化プロセスのフローチャート１４０を示す。初期ステップ１４１において、第１の語がＤＪＩＲ２００（図４参照）から読み取られる。次に、二重モードデコーダ１３０が、単一誤り訂正モードでアクティブ化される。
【０１７５】
次のステップ１４２において、状態機械ユニット１３８（図５参照）が、第１の語の復号化が成功したか否かを調べる。
【０１７６】
肯定の場合、復号化プロセスはステップ１５０に進む。ステップ１５０において、訂正があった場合、第１の語は訂正で更新される。このステップにおいて、二重モードデコーダ１３０（図４参照）は、ＤＪＩＲ２００（図４参照）から読み取られた第２の語を復号化するために、単一誤り訂正モードでアクティブ化される。次のステップ１５２において、状態機械ユニット１３８（図５参照）が、第２の語の復号化に成功したか否かを調べる。否定の（すなわち、第１の語の単一誤り訂正モードでの復号化に成功し、第２の語の単一誤り訂正モードでの復号化に失敗した）場合、復号化プロセスはステップ１５３に続く。しかし、肯定の場合、復号化プロセスはステップ１５６に進む。ステップ１５６において、訂正があった場合、第２の語は訂正で更新され、復号化プロセスは成功して終了する（ステップ１４９）。
【０１７７】
最初が否定の場合（すなわち、第１の語の復号化に失敗する場合）、復号化プロセスはステップ１４３に続く。ステップ１４３において、第２の語がＤＪＩＲ２００（図４参照）から読み取られ、単一誤り訂正モードで復号化される。
【０１７８】
次のステップ１４４において、状態機械ユニット１３８（図５参照）が、第２の語の復号化が成功したか否かを調べる。否定の場合、全復号化プロセスが失敗し、ステップ１４５において終了する。しかし、肯定の（すなわち、第２の語の復号化に成功した）場合、復号化プロセスはステップ１４６に続く。
【０１７９】
ステップ１５３において、首尾よく復号化された第１の語及び４個の外部ジョイントビットから得られる情報を使用して第２の語を復号化しようという、追加の復号化試行が行われる。このステップにおいて、第２の語のうちの１１ビットがＤＪＩＲユニット２００（図４参照）から再び読み取られる。第２の語の最後の４ビットは、ＪＩＲ１１０（図４参照）から得られる４個のジョイントビットと排他的論和がとられた第１の語の４個の隠れビットから再生成される。第１の語の隠れビットは、第１の語から首尾よく復号化された１１ビットに対してエンコーダを適用することにより得られる。二重モードデコーダ１３０（図４参照）がアクティブ化されて、第２の語を二重誤り訂正モードで復号化する。次のステップ１５４において、状態機械ユニット１３８（図５参照）が、第２の語の追加の復号化が成功したか否かを調べる。
【０１８０】
否定の場合、全復号化プロセスが失敗し、ステップ１５５において終了する。
【０１８１】
しかし、肯定の場合、復号化プロセスはステップ１５６に進む。ステップ１５６において、第２の語は、第２の語の２回目の復号化試行において見つけられた訂正で更新され、ＤＪＩＲ２００（図４参照）に記憶される。次に、復号化プロセスは最後のステップ１４９に進む。最後のステップ１４９において、復号化プロセスの成功が宣言され、復号化は終了する。
【０１８２】
ステップ１４６において、失敗した第１の語を復号化しようという２回目の試行が、ステップ１５３において第１の語に対して実行された復号化プロセスと同様にして行われる（第１の語と第２の語との動作的機能が交換されるように）。
【０１８３】
次のステップ１４７において、状態機械ユニット１３８（図５参照）が、第１の語の追加の復号化が成功したか否かを調べる。
【０１８４】
否定の場合、全復号化プロセスが失敗し、ステップ１５５において終了する。
【０１８５】
しかし、肯定の場合、復号化プロセスはステップ１４８に続く。ステップ１４８において、第１の語は、第１の語の２回目の復号化試行において見つけられた訂正で更新されて、ＤＪＩＲユニット２００に記憶される。最後のステップ１４９において、復号化プロセスの成功が宣言され、復号化は終了する。
【０１８６】
図７を参照して、実施例２に関連する復号化プロセスのフローチャートを示す。図７において詳述される復号化プロセスは、ソフトデコーダ（ｓｏｆｔ  ｄｅｃｏｄｅｒ）の実施にさらに適する。ソフトデコーダを利用する場合に排他的に実施されるユニットは破線で記され、実施例２に関連して使用されない。
【０１８７】
初期ステップ２１１において、復号化プロセスにおいて使用されるいくつかの変数に対して初期化が実行される。これら変数は、復号化に成功した部分符号数（ｋ）、互いに素な部分語の数（ｎｃ）、処理する現在の語数（ｊ）、フェーズカウンタ（ｐ）、最大フェーズ値（ｎｐ）、単一誤り訂正モード（又はより一般的な場合では第１のデコーダ）で失敗した語数（ｆ）、単一誤り訂正モード（又はより一般的な場合では第１のデコーダ）での復号化失敗最大数（ｍｆ）を含む。
【０１８８】
ベクトル“ｖ”が、復号化に成功した各部分符号につき値“１”をベクトル“ｖ”の対応する要素位置に記憶するために提供される。復号化プロセスの開示時には、いずれの部分符号についても正確性に関する知識が存在しないため、ベクトル“ｖ”のすべての要素は“０”に初期化される。実施例２に関しては、部分語数ｎｃは５８６に初期化されるため、ベクトル“ｖ”内の要素数は５８６である。
【０１８９】
変数“ｊ”は初期化されて０になる。変数“ｊ”は、現在、復号化を終えた部分符号の数である。変数“ｐ”は、復号化プロセスにおいて現在実行されているフェーズ回数を定義し、初期化されて“０”になる。
【０１９０】
変数“ｎｐ”は最大フェーズ数を定義する。実施例２に関連して、２つのみのフェーズ、すなわち単一誤り訂正モードを定義するフェーズ０及び二重誤り訂正モードを定義するフェーズ１のアクティブ化が可能である。なお、ソフトデコーダの実施の場合、単一の部分符号が３回以上復号化されるように、３つ以上のフェーズが実行される場合もある。
【０１９１】
変数“ｆ”は、フェーズ０において復号化に失敗した部分語数を定義する。実施例２に関しては、復号化プロセスは、フェーズ０において２つ以上の故障がある場合、部分語の隠れビットを再生成することができない。しかし、ソフトデコーダ実施の場合、変数“ｆ”は、具体的な設計考慮事項に従って最高で“ｎｃ”までの任意の値にセットすることができる。
【０１９２】
変数“ｋ”は、復号化に成功した部分符号の数を定義し、フェーズ０がすべての部分語で試行され、“ｆ”の値がセットされると、ｋ＝５８６−ｆにセットされる。変数“ｆ”が更新される度に変数“ｋ”を新たに計算することを回避するために、変数“ｋ”は変数“ｆ”から独立して定義される。復号化プロセスは、変数“ｋ”が値５８６（又は一般的な場合では“ｎｃ”）に達すると終了する。
【０１９３】
次のステップ２１２において、ジョイントパリティビット（ＪＰビット）が、ＪＩＲユニット１１０（図４参照）から中間ＲＡＭ１７０（図４）に転送される。続けて、復号化に成功した各部分符号について、ＪＰが、復号化に成功した部分符号の再生成された隠れビットで更新される。
【０１９４】
ステップ２１３において、“ｊ”が値５８６（ｎｃ）と比較される。復号化のこの時点では、“ｊ”の値は５８６未満（“ｊ＝０”）であるため、復号化プロセスはステップ２１４に続く。
【０１９５】
ステップ２１４において、ＤＪＩＲユニット２００（図４参照）から転送された非ジョイント語０（すなわち、ループの次の適用での語ｊ）が、二重モードデコーダ１３０（図４参照）においてモード−１で復号化される（すなわち、単一誤り訂正モードが実施例２に関連してアクティブ化される）。
【０１９６】
次のステップ２１５において、状態機械ユニット１３８（図５参照）が、この部分語の復号化が成功したか否かを調べる。否定の場合、復号化プロセスはステップ２１６に続く。肯定の場合、復号化プロセスはステップ２１９に続く。
【０１９７】
ステップ２１９において、語０の隠れビットＪＰ０が、語０（すなわち、ループの次の適用における語ｊ）の復号化に成功した１１ビットにエンコーダを適用し、その結果として生成される４個のパリティビットと中間ＲＡＭ１７０（図５参照）に既に記憶されているＪＰビットとの排他的論理和をとることにより再構築される。要素ｖ［０］の対応する値は、語０が復号化に成功したことを示すために“１”にセットされ、“ｋ”は１だけインクリメントされる。これら変数の設定動作に続き、語０（すなわち、ループの次の適用における語ｊ）が、訂正結果に従ってＤＪＩＲユニット２００（図４参照）において更新される。
【０１９８】
ステップ２２１において、“ｊ”が“１”だけインクリメントされ、それにより、次の部分語の復号化が可能になる。次に、復号化プロセスはステップ２１３に戻る。
【０１９９】
ステップ２１３において、変数“ｊ”の値が５８６未満であるか否かが判断される。
【０２００】
否定の場合、復号化プロセスはステップ２２２に続く。肯定の場合、復号化プロセスは、変数“ｊ”の値をインクリメントして、ステップ２１４、２１５、及び必要であればステップ２１６を再適用する。
【０２０１】
ステップ２１６において、変数“ｆ”の値が調べられる。それまでに失敗した部分語の数“ｆ”が値“１”（実施例２に関連して）を超える場合、復号化プロセスは失敗を宣言し、ステップ２１７において終了する。値“１”を超えない場合、復号化プロセスはステップ２２０（又は、ソフトデコーダが実施される場合はステップ２１８）に進む。なお、ソフトデコーダの場合、変数“ｆ”の値は、ページセクタ全体の復号化の失敗が宣言される前に“１”の値を超え得る。
【０２０２】
ステップ２１８において、語“ｊ”の隠れビットに対して実行された推定が中間ＲＡＭ１７０に記憶される。ソフトデコーダの実施を考えると、ソフトデコーダが復号化に失敗した場合であっても、隠れビットについての新たな知識を、たとえ部分的にであっても提供することが可能である。しかし、このような推定の提供は、実施例２に関しては可能ではない。したがって、実施例２では、ステップ２１８は迂回される。
【０２０３】
ステップ２２０において、それまでに失敗した部分語の総数が増大したことを示すために、変数“ｆ”の値が１だけインクリメントされる。次に、復号化プロセスはステップ２２１に進み、デコーダが次の部分符号の復号化に進むことを示すために、変数“ｊ”の値も１だけインクリメントされる。
【０２０４】
ステップ２２２において、変数“ｋ”の値が値５８６と比較される。“ｋ”＝５８６の場合、すべての部分語の復号化が成功し、復号化プロセスはステップ２２３において成功して終了する。実施例２に関して、“ｋ”＝５８６ではない場合、復号化に成功しなかった部分語数は１のみであり得、復号化プロセスはステップ２２４に進む。
【０２０５】
ステップ２２４において、フェーズ回数“ｐ”が１だけインクリメントされる。
【０２０６】
ステップ２２５において、変数“ｐ”の値が２未満（又は、一般的な場合では“ｎｐ”未満）であるか否かが調べられる。否定の（すなわち、“ｐ”が２以上である）場合、復号化プロセス全体が失敗であると宣言され、ステップ２２６において終了する。しかし、ステップ２２７において肯定の場合、失敗した部分語を再復号化するために、変数“ｊ”の値は“０”にリセットされる。ステップ２２７の後、復号化プロセスはステップ２２８に続く。
【０２０７】
ステップ２２８において、ベクトル“ｖ”の位置“ｊ”（要素ｖ［ｊ］）の値が“０”に等しいか否かが調べられる。肯定の場合、ソフトデコーダであれば、復号化プロセスはステップ２２９に進み、ハードデコーダ（ｈａｒｄ  ｄｅｃｏｄｅｒ）であれば、復号化プロセスはステップ２２９を迂回し、ステップ２３７に直接進む。しかし、否定の場合、復号化プロセスはステップ２３５に進む。ステップ２３５において、変数“ｊ”の値は１だけインクリメントされ、復号化プロセスは次のステップ２３４に進む。ステップ２３４において、変数“ｊ”の値が５８６未満であるか否かが調べられる。否定の（すなわち、“ｊ”が５８６以上である）場合、すべての要素がスキャンされており、復号化プロセスは再び適用ステップ２２２に続く。しかし、肯定（すなわち、“ｊ”＜５８６）の場合、失敗する部分語が見つけられるまで、ステップ２２８、２３５、及び２３４が繰り返される。
【０２０８】
なお、ステップ２２９は、ソフトデコーダの場合のみ実行される。ソフトデコーダの場合、失敗した部分語の隠れビットは、復号化に成功した部分語のそれまでに更新されたＪＰビット及びそれまでに失敗した部分語の再構築された隠れビットに提供される推定を使用して再構築される。本発明の好ましい方法は、ＸＯＲ演算を使用して、失敗部分語の再構築された隠れビットの推定を提供するが、ソフトデコーダの場合、他の演算をさらに考慮することが可能である。
【０２０９】
ハードデコーダの場合、他の部分語がすべて、復号化に成功しなければならない。実施例２に関しては、復号化に成功したその他のすべての部分語で更新された後、中間ＲＡＭ１７０に記憶されたＪＰビットが、失敗した部分語“ｊ”の隠れビットの推定として使用される。更新されたＪＰビットは、２つ以上のエラーが部分語“ｊ”の最初の１１ビット内に現れる場合のみ、失敗した部分語“ｊ”の隠れビットの推定に使用される。なお、実施例２に関連して、部分語“ｊ”の２回目の復号化試行が成功する場合、更新されたＪＰビットはそれ自体、再構築された隠れビットであり、単なる推定ではない。これは、２回目の復号化試行の成功が、厳密に２つのエラーが１５ビット語に存在したことを意味するためである。さらに、１回目の試行が失敗したため、１５ビット語の最初の１１ビットに厳密に２つのエラーが存在する。したがって、１５ビット語の最後の４ビットはエラーを有さず、隠れビットを厳密に再構築したものである。
【０２１０】
ステップ２３７において、ハードデコーダ及びソフトデコーダの両方について、語“ｊ”がＤＪＩＲ２００（図４参照）から二重モードデコーダ１３０（図４参照）に読み込まれる。次に、ジョイント情報が中間ＲＡＭ１７０（図４参照）から読み取られる。ジョイント情報は、データ収集器１３２（図５参照）において語“ｊ”と結合されて、デコーダコア１３４（図５参照）において第２の復号化モードで復号化される変更語を形成する。実施例２に関しては、この結合動作は単に連接であり、第２の復号化モードは［１５，７，５］ブロックデコーダである。変更語“ｊ”がデコーダコア１３４（図５参照）内に配置されると、状態機械１３８（図５参照）が、ステップ２３７の最終段階において復号化動作を開始する。
【０２１１】
ステップ２３０において、語ｊの２回目の復号化試行が成功したが否かが調べられる。肯定の場合、復号化プロセスはステップ２３１を実行する。ステップ２３１において、変数“ｋ”の値が１だけインクリメントされ、要素ｖ［ｊ］の値が“１”にセットされ、符号語ｊがＤＪＩＲ２００（図４参照）において更新される。ソフトエンコーダの場合、ステップ２３６において、部分語“ｊ”の完全に再構築された隠れビットが、中間ＲＡＭ１７０に記憶されているジョイントパリティビットと結合され、これら隠れビットに提供された推定が、中間ＲＡＭ１７０から除去される。（復号化の成功により）完全に再構築された隠れビットとジョイントパリティビットとを結合する一方法は、隠れビットとジョイントパリティビットとの排他的論理和をビット単位でとることである。ステップ２３１（又は、ソフトデコーダの場合にはステップ２３６）に続き、復号化プロセスはステップ２３３に進む。しかし、否定の（すなわち、語ｊの２回目の復号化が失敗した）場合、復号化プロセスはステップ２３３（又は、ソフトデコーダが実施される場合にはステップ２３２）に進む。ステップ２３２において、語“ｊ”の隠れビットの更新された推定が、中間ＲＡＭ１７０に記憶される。
【０２１２】
ステップ２３３において、変数“ｊ”の値が１だけインクリメントされ、復号化プロセスは、復号化の成功が宣言される（ステップ２２３）か、又は復号化の失敗が宣言される（ステップ２２６）まで、復号化プロセスにより提供されるステップの適用に戻る。
【０２１３】
図８を参照して、実施例１に関連する符号化プロセスの概略図２４０を示す。番号２４２で定義される７ビットの各情報ベクトルが、Ｃ１及びＣ２として示される１５ビット符号語２４４に変換される。このような各１５ビット符号語２４４の最初の１１ビット２４６は、７個の情報ビット２４２及び最初の４個のパリティビット２５０を含む。これら最初の１１ビット２４６はフラッシュ装置に書き込まれる。各１５ビット符号語２４４の最後の４個のパリティビット２５２は共にビット単位で排他的論理和がとられて、本明細書では“Ｐ”ビット２５４として定義されるパリティビット４個のセットを生成して、第２タイプのパリティビットを提供する。
【０２１４】
図９を参照して、実施例２に関連する入力ＣＥＲ性能（ｘ軸）と出力ＳＥＲ性能（ｙ軸）との関係のグラフ図２６０を示す。グラフ図２６０に示すように、参照方式により得られるＳＥＲ性能２６２（下の線）は、本発明の方式により得られるＳＥＲ性能２６４（上の線）とわずかにしか違わない。ＳＥＲが１０-10未満の環境では、性能に実際的な差はないが、本発明のフラッシュメモリサイズは、参照方式のものよりもかなり小さい。
【０２１５】
本発明の装置の部分符号のコンポーネントコア符号としてのソフトデコーダの実施がさらに可能である。ＬＤＰＣ（低密度パリティ検査）、ＴＣＭ（トレリス符号化変調）、ＴＵＲＢＯ符号等のコンポーネント符号の使用を可能にするために、ソフトデコーダが設けられる。
【０２１６】
復号化プロセスはいくつかのフェーズにおいて実行することができるが、各フェーズにおいて、ソフトデコーダは、ジョイント情報（中間ＲＡＭに記憶されている）を通してその他の部分語から伝えられる更新情報を使用して、ある部分語に対してアクティブ化される。一般的な場合、ソフトデコーダは、更新情報の各値に、信頼性ビットを含む数ビットを許容することができる。これは、ソフトデコーダに転送された入力ビット値の表現が複数のビットをさらに含み得る（すなわち、更新された情報の各値が、上記の実施例１及び実施例２でのような単一の２進値のみを含むように制限されない）ことを意味する。入力ビットソフト値（ｓｏｆｔ  ｖａｌｕｅ）は、入力ビットｉの２進値が“０”に等しい（又は逆に“１”に等しい）信頼性を表す確率として考えることができるとともに、その確率に変換することができる。
【０２１７】
一般に、以下の（２．７）において定義される対数尤度比（ＬＬＲ）が、
【数１１】
2010509790.tif 000015
に従って、当該技術分野において既知の符号化理論において２進値“０”又は“１”の信頼性を表すために使用される。
【０２１８】
計算領域とは対照的に、こういった確率は、フラッシュ装置の記憶装置製造プロセス中に予め決定される。フラッシュ装置の記憶ユニットは各セルにビット群を含み、セル電圧レベルがこのビット群を表すシンボルに対応する。したがって、このような任意のシンボルセットは、信号コンステレーション（ｓｉｇｎａｌ  ｃｏｎｓｔｅｌｌａｉｔｏｎ）として定義することができる。
【０２１９】
フラッシュ装置は、その物理的特性により、書き込まれた略あらゆる電圧レベルを差動電圧レベルとして読み出せるようにすることができる。電圧レベル“ｒ”を書き込み、差動レベル“ｓ”を読み取る確率をクロスオーバ確率Ｐrsと示す。
【０２２０】
上述したように、フラッシュ装置の特殊な製造プロセスにより、これら確率は所与の値に固定される。（２．７）でのように、２進値“０”又は“１”の入力信頼性がクロスオーバ確率Ｐrsを含む一定の所与の表を使用して計算される。
【０２２１】
第１のフェーズにおいて、ソフトデコーダは互いに素な各部分語を復号化し、その間、“隠れパリティビット”の信頼性はゼロにセットされる（ソフトデコーダにより消去（ｅｒａｓｕｒｅ）として識別される）。
【０２２２】
復号化に成功すると、これらパリティビットは首尾よく再生成される。対数尤度比（ＬＬＲ）フォーマットから２進値フォーマットへの変換は、以下のように行われる。
【０２２３】
２進値は、ＬＬＲフォーマットでの信頼性の符号ビットである。復号化に成功した場合、隠れ２進値は本出願に従って再生成される（上記の実施例１及び実施例２では、これは互いに素な部分語の符号化に使用されるプロセスにより行われる）。次に、完全に再構築された隠れ２進値が、フラッシュ装置から読み取られたジョイント情報ビットとビット単位で排他的論理和演算される。図７のステップ２１９及び２３６参照のこと。その結果、ジョイント情報ビット“Ｐ”に対する再生成「隠れパリティビット」の影響が除去される。これは、Ａ  ＸＯＲ  Ｂ  ＸＯＲ  Ｃ  ＸＯＲ  Ｂ＝Ａ  ＸＯＲ  ＣというＸＯＲ演算を特徴付ける手順による。
【０２２４】
なお、フラッシュ装置に記憶されるジョイント情報ビットは、固有の不信頼性も含む。したがって、１つを除くすべての部分語が復号化に成功する場合、復号化に成功したその他の部分符号の隠れビット及びフラッシュ装置に記憶されているジョイント情報を使用して、復号化に失敗した部分語の隠れビットを再生成することは、フラッシュ装置から読み取られたジョイント情報に起因するエラーをやはり含む恐れがある。
【０２２５】
ソフトデコーダが失敗した場合であっても、「隠れパリティビット」のＬＬＲフォーマットでの出力信頼性を生成することができる。これら信頼性は中間ＲＡＭに記憶される。第１の復号化フェーズが完了すると、すべての部分符号が復号化に成功した場合、復号化手順が成功したと決定される。
【０２２６】
第１の復号化フェーズにおいて少なくとも１つの部分語が失敗した場合、追加の復号化試行がソフトデコーダにより実行される。このような新たな各復号化試行につき、ソフトデコーダは、更新されたジョイント情報及び失敗した他の部分語から得られる信頼性を利用する。このような復号化試行は、部分語間で行われる「メッセージパッシング（ｍｅｓｓａｇｅ−ｐａｓｓｉｎｇ）」手順によりサポートされる（ソフトデコーダの場合の図７のステップ２２９、２３１、２３６、及び２３２に示される）。メッセージは信頼性を指し、中間ＲＡＭを介して部分語間をパッシングされる。
【０２２７】
この「メッセージパッシング」を行うメカニズムの提供は、（ジョイント情報を除き）外部知識を必要とせずに互いに素な部分語の部分集合の復号化失敗イベントを解消して復号化の成功を可能にするのはこのメカニズムであるため、本発明の本質にある。ＬＬＲフォーマットで得られるこれら信頼性は、単一部分語への新たな外因性情報に寄与するため、この部分語が次のフェーズにおいて復号化に成功することになり得る。
【０２２８】
“ｐ＞０”である、（先に復号化に失敗した）部分語“ｙ”の一般復号化フェーズ“ｐ”において、ソフトデコーダは、部分語“ｙ”それ自体の信頼性の寄与を除き、すべての部分語の隠れパリティビットの（一般にＬＬＲフォーマットの）部分語信頼性を利用する。復号化フェーズ“ｐ”での部分語“ｙ”の「隠れパリティビット」の推定の振幅Ａｙ及び符号値Ｓｙは、同じ位置における「隠れパリティビット」の各群に対して別個に導出される。換言すれば、振幅Ａｙ及び符号値Ｓｙは、同じ部分語のあらゆる隠れビットに対して別個に、同じ部分語の他の隠れビットから独立して以下のように計算される。
【０２２９】
【数１２】
2010509790.tif 000016
式中、“Ｆ”は、復号化に失敗した部分語の隠れビット及び外部更新“Ｐ”ビットを含む群として定義される。更新された“Ｐ”ビットは、復号化プロセスにおいてそれまでに復号化に成功したすべての部分語の再生成された隠れビットにより更新される、フラッシュ装置に記憶されるビットを指す。関数Ψはいくつかの様式で計算することができ、その１つは、
【数１３】
2010509790.tif 000017
である。なお、関数Ψの有用な属性は、関数Ψがそれ自体の負の逆関数であることである。
Ψ［Ψ（ｘ）］＝−｜ｘ｜                        （２．１０）
【０２３０】
符号“Ｓy”は、本明細書ではＬＬＲフォーマットにおいて測定される信頼性の符号として定義され、
【数１４】
2010509790.tif 000018
に従って振幅Ａyの計算に参加する同じ集合の“Ｆ”に対してＸＯＲ（排他的ＯＲ）演算を適用することから決定される。式中、“Ｆ”は、式（２．８）において上で参照された群として定義される。
【０２３１】
部分語“ｙ”の隠れパリティビットの更新された信頼性が計算されると、同じソフトデコーダが再アクティブ化されて、部分語“ｙ”を復号化する。復号化及び信頼性更新のプロセスは、復号化の成功が得られるまで、又は予め規定された最大数の復号化試行及び／又は復号化フェーズが復号化方式により実行されるまで繰り返される。
【０２３２】
復号化に成功したプロセスは、ＲＡＭ内の部分語“ｙ”のビットを更新するステップ、及び復号化に成功した部分語“ｙ”の再生成された「隠れパリティビット」の符号ビットを使用して中間ＲＡＭ内のジョイント情報ビットを更新するステップを含む。したがって、復号化試行失敗の後には、中間ＲＡＭ内の部分語“ｙ”の隠れパリティビットの信頼性を更新することが続く。復号化試行の失敗の結果として、更新された信頼性が得られるが、これらを同じフェーズ“ｐ”内の他の部分語の復号化において考慮することにより、これら他の部分語の復号化効率が向上する。
【０２３３】
次に、ソフトデコーダは、すべての部分語の復号化が成功するまで、又は予め規定される最大数の復号化フェーズが特定の部分符号に対して実行されるまで、次の部分語の復号化に進む。
【０２３４】
上述したように、中間ＲＡＭは、各失敗部分語の“隠れビット”の信頼性を記憶する。しかし、「隠れビット」の推定に１ビットのみ（すなわち、ＬＬＲフォーマットにおいて信頼性を保持する場合では符号ビット）を含むサイズを低減した中間ＲＡＭを構成することがさらに可能である。このような場合、部分語“ｙ”の隠れパリティビットは、その他の失敗部分語の現在推定されている隠れパリティビット及び更新された外部“Ｐ”ビットから導出される。換言すれば、失敗部分語の隠れパリティビットの信頼性の現在の推定（すなわち、Ａj及びＳjの両方、但しｊ∈F）ではなく、失敗部分語の隠れパリティビットの現在推定のみ（すなわち、Ｓjのみ、但しｊ∈F)が記憶される。
【０２３５】
本発明の革新は、様々な視点から見ることができる。第１の視点から、本発明は、より短い符号語を複数回数、復号化することにより、長符号語の首尾よい復号化を実現する方法及び装置を開示する。上述した実施例１に関連して、長符号語は［１５，７，５］ブロック符号であり、より短い符号語は［１１，７，３］ブロック符号である。より短い［１１，７，３］ブロック符号は２回∈復号化される。
【０２３６】
これにより、本発明の装置は、同じ出力ＢＥＲ／ＳＥＲ性能を実現しながら、当該技術分野において既知のデコーダに関連する高い実施複雑性を回避することができる。
【０２３７】
この第１の視点によれば、固定サイズの部分語を連続して復号化することによりデータストリームを復号化するために提供される当該技術分野において既知のあらゆる復号化方法は、本発明と同様にして実施されると言える。
【０２３８】
例えば、データストリームを復号化する必要があり、各符号語は１，０００ビットであり、このような各符号語はそれ自体で復号化され、その前後の符号語から独立して復号化される。当該技術分野において既知の復号化方法によれば、データストリームはＮ（例えば、Ｎ＝４）群の符号語として復号化される。Ｎ群のストリーム全体は、Ｎ＝４の場合、４，０００ビットの単一長符号語として定義される。短復号化が、それぞれ１，０００の４つの各短符号語に対して別個に適用され、すべての短復号化の復号化データが連接されて、長符号語の復号化データが生成される。
【０２３９】
しかし、本発明の方法は、短符号語の復号化に失敗した場合に、他の短符号語の復号化データに従って短符号語の復号化データを変更する段階をさらに提供するため、上記の既存の復号化方法と異なる誤り訂正符号化方式を提供する。上記実施例１に関連して、失敗した短符号語の復号化データの隠れビットは、その他の復号化に成功した短符号語の復号化データの再構築された隠れビット及びフラッシュ装置に記憶されているジョイントパリティ（ＪＰ）ビットに従って置換される。
【０２４０】
この段階は、上記の従来技術による方法には完全になく、本発明のその利点を多くを与える。このような一利点は、１つ又は複数の短語の復号化失敗を解消し、それにより、これらより短い符号語を保護するために必要なパリティビット数が少なくなる。
【０２４１】
当該技術分野において既知のさらなる復号化方法は、異なる短符号語間の接続に基づく。一般に連接符号化方式と呼ばれるこの方法によれば、少数の短符号語が第１の符号により符号化されて共にグループ化され、第２の符号により再び符号化されて、長符号語が生成される。このような従来技術による方法は、より長い符号語の復号化に従って、まだ符号化されている短符号語を変更し、その後でのみ、短符号語を復号化する。
【０２４２】
例えば、各基本符号語が1,000である符号語４個分のデータストリーム（4,000ビットを含む）が、4,500ビットの１つの長符号語として第１の符号により符号化される。長符号語の復号化には、まず、第２の符号に従って長語を復号化し、それから各短符号語を第１の符号に従って別個に復号化する必要がある。
【０２４３】
しかし、実施例１に関連して、本発明の方法は、まず、短符号語を復号化し、それから、他の短符号語の復号化データに従って復号化データの変更を行うため、このような従来技術による方法と異なる。
【０２４４】
ターボ復号化と呼ばれる他の復号化方法は「ターボ符号」を利用し、通常、ソフト復号化（ｓｏｆｔ  ｄｅｃｏｄｉｎｇ）方法を利用する。「ターボ符号」は、連接符号構造に加えて反復フィードバックアルゴリズムで構成される順方向誤り訂正技法として定義される。ターボ復号化を適用することにより、同じデータビットが２回以上符号化され（データビットがインタリーブされて、複数の符号化演算において異なる順序を有する）、それにより、符号語は、データビットと、すべての符号化により生成される複数のパリティビットセットとの両方を含む。復号化に際して、複数の復号化プロセスが適用される（並列に、又は非並列に）。各復号化プロセスは、複数のパリティビットセットの１つに従って適用され、同じ情報データに対しての復号化フェーズであるが、異なるパリティビットを有する前の復号化フェーズからの外因性情報を許容する。
【０２４５】
順方向誤り訂正技法の利点は、同じデータビットの復号化に適用される複数の復号化プロセス間の相互作用（「メッセージパッシング」）にある。この相互作用は、デコーダの誤り訂正性能を強化する。ターボ復号化を適用するデコーダは、復号化に失敗した場合のみ、上述したように複数のパリティビットセットが復号化されるように、１つのパリティビットセットのみに従ってデータを復号化するようにさらに構成することができる。
【０２４６】
本発明の方法は、２、３の態様において当該技術分野において既知のターボ復号化方法と異なる。第１に、部分語自体の復号化と復号化された語の変更を行う手順との間に明らかな分離がある。本発明の方法は、各短語を別個に復号化し、その後でのみ、復号化データのある部分が別の部分に影響するプロセスを適用する。しかし、ターボ復号化方法によれば、部分語の復号化と他の部分語の変更の実施との間にはこのような明確な区分けがなく、両方の手順は同時に行われる。
【０２４７】
第２に、本発明の方法によれば、各短語は、その他の短語から独立して復号化される。したがって、復号化された符号語は、独立した復号化データセットを生成する。しかし、ターボ復号化方法によれば、すべての短語（典型的な並列実施において）及び少なくとも１つの短語（２段階実施において）のいずれも、別の短符号語とタンデムに復号化されて復号化ビットのジョイントセットを生成しない。さらに、復号化された短符号語は、必ずしも、「それ自体の復号化データ」として識別される必要はない（すなわち、他の符号語に従属する）。
【０２４８】
第３に、本発明によれば、複数の短符号語は、長符号語の互いに素な部分集合である。しかし、このような実施態様は、複数の短符号語がすべて同じデータビットを符号化するターボ復号化方法では提供されない。
【０２４９】
第２の視点から、本発明の革新は、２つの符号化方式を使用してデータビットを符号化すること、結果として生成されるパリティビットのすべてを保持するわけではないこと、及び２つのパリティビットセット間の関係に頼り、一方のセットを他方のセットが不適切な場合の「カバーアップ」とすることにより、誤り訂正性能を向上させる。本発明のこの視点から見た場合、以下の態様を考慮に入れるべきである。
【０２５０】
ａ．この視点の顕著な特徴は、最終的に使用されるパリティビットよりも多くのパリティビットを計算する中間段階である。これは、従来技術による方法の「パンクチャリング」に注意を向ける。誤り訂正理論では、用語「パンクチャリング」は、パリティオーバーヘッドを低減するために、計算されたいくつかのパリティビットをドロップし、誤り訂正能力の低減と引き替えにオーバーヘッドの低減を得ることを意味する。しかし、従来技術において理解されている「パンクチャリング」は、本発明とはかなり異なる。本発明は、２つの誤り訂正符号化方式を動作の基礎として利用するのに対して、１つのみの符号化方式を使用する従来技術によるパンクチャリング方法には、この種のものは存在しない。
【０２５１】
ｂ．２００４年１１月２９日に出願されドロア（Ｄｒｏｒ）等に付与された「コンパクト高速単一ビット誤り訂正回路（ＣＯＭＰＡＣＴ  ＨＩＧＨ−ＳＰＥＥＤ  ＳＩＮＧＬＥ−ＢＩＴ  ＥＲＲＯＲ−ＣＯＲＲＥＣＴＩＯＮ  ＣＩＲＣＵＩＴ）」と題する米国特許出願第10/998,003号明細書も、符号化フェーズ中に計算されたパリティ情報のいくらかをドロップする誤り訂正方法を開示している。ドロア（Ｄｒｏｒ）等の方法は、２つの別個の計算フェーズを含み、一方のみのフェーズの結果からのパリティ情報がドロップされ、本発明と同様に見えるため、上記のパンクチャ方法よりも本発明に近い。しかし、ドロア（Ｄｒｏｒ）等は、上記と同じことにより本発明と異なる。すなわち、本発明が２つの誤り訂正符号化方式を利用するのに対して、これはドロア（Ｄｒｏｒ）等には当てはまらない。ドロア（Ｄｒｏｒ）等は２つの計算フェーズを行うが、各フェーズは、それ自体では単一の誤りさえも訂正できないため、誤り訂正方式ではない。２つの計算は一緒になってのみ、誤り訂正に十分なパリティ情報を提供することから、２つの計算が一緒になってのみ、誤り訂正方式を構成する。
【０２５２】
本発明は系統的符号に関連するが、本発明の方法は、系統的誤り訂正符号及び非系統的誤り訂正符号の両方に等しく適用可能なことを理解されたい。誤り訂正用語によれば、系統的符号は、エンコーダに転送される各入力データビットが、該当する場合にはパンクチャリング前に、符号化された符号語内の整合ビットと１対１の対応性を有し、符号化された符号語を、一方はオリジナルデータビットを含み、他方はパリティビットを含む２つの互いに素な部分に分けることができる符号として定義される。したがって、非系統的符号は、上記条件を満たさない任意の符号として定義される（すなわち、非系統的符号では、このような明確な区分けが可能ではない）。
【０２５３】
本発明の方法は、ハード復号化（ｈａｒｄ−ｄｅｃｏｄｉｎｇ）デコーダ及びソフト復号化デコーダの両方に等しく適用可能である。誤り訂正用語によれば、ソフト復号化デコーダは、入力ビットの信頼性尺度を許容し、信頼性尺度を復号化プロセス中に考慮に入れ、プロセス中に信頼性尺度を更新することが可能な復号化プロセスを適用する。ハード復号化デコーダは、上記条件を満たさないデコーダである。
【０２５４】
本発明は、上述したように、単純なＢＣＨ符号に基づくが、同様の効率及び性能利得を実現する、当該技術分野において既知の他の符号化技法及び復号化技法を利用してもよい。
【０２５５】
さらに、本発明の装置が利用する符号構造は、デジタル記憶媒体、ランダムアクセスメモリ、フラッシュメモリ、及びＥＥＰＲＯＭを含むような、当該技術分野において既知の任意の装置において利用することが可能である。用語「記憶装置」及び「メモリ」は、本明細書において同義で使用され、このような任意の記憶装置を指す。
【０２５６】
本明細書において、本発明はフラッシュメモリに提供されるが、本発明の原理は、通信システム（ＤＳＬ、ＤＶＢＳ、３Ｇ、４Ｇ、ＣＤＭＡ２０００、８０２．１１及び８０２．１６の派生等を含む無線、有線、有線電話システム、衛星、セルラ）及び信号処理（映像用途及び映像用途）等の他の種類の用途での使用にも適合可能であり、かつそれら他の種類の用途にも恩恵を提供可能なことに留意されたい。
【０２５７】
復号化プロセスの第１のフェーズでは不十分な場合、さらなる復号化試行を時によりアクティブ化することに備えてデータを保持するために、当該技術分野において既知の通信システムにバッファを実装してよい。しかし、復号化ユニットがアイドルである間に、追加のバッファが既に通信システムの他の部分に採用されているため、そのようなバッファが必要ない場合もあり得る。
【０２５８】
誤り訂正符号化方式を提供する任意の方法及び装置に関連する他の実施態様も、本発明の範囲内で可能なことを理解することができる。
【０２５９】
本発明の特定の具体的な実施形態に関連して本発明を説明したが、さらなる変更が当業者に思い浮かぶであろうため、この説明が制限を意味せず、添付の特許請求の範囲内にある変更の包含を意図することを理解されたい。
【０２６０】
［参考文献］
[1]  Shannon,  “A  mathematical  theory  of  communications”  Bell  System  Telephone  Journal,  Vol.27,  1948,  pt.I,  pp.379-423;  pt.II  pp.623-656.
[2]  M.G.Luby,  M.Mitzenmacher,  M.A.Shokrollahi  and  D.A.Spielman,  “Improved  low  density  parity-check  codes  using  irregular  graphs  and  belief  propagation,”  Proc.  of  the  IEEE  Int.  Symp.  on  Inf.  Theory(ISIT),  p.  117,1998.
[3]  R.G.Gallager,  “Low-density  parity-check  codes,”  IRE  Trans.  Info.  Theory,  vol.IT-8,  pp.21-28,  1962.
[4]  T.J.Richardson  and  R.Urbanke,  “The  capacity  of  low-density  parity-check  codes  under  message  passing  decoding,”  IEEE  Trans.  Inform.  Theory,  vol.47,  pp.599-618,  2001.
[5]  C.Berron,  A.Glavieux,  and  P.Thitimajshima,  “Near  Shannon  limit  error  correcting  coding  and  decoding:  Turbo  codes,”  in  IEEE  Int.  Conf.  on  Communications,  1993,  pp.1064-1070.
[6]  M.M.Mansour  and  N.R.Shanbhag,  “High-Throughput  LDPC  de-coders,”  IEEE  Trans.  on  Very  Large  Scale  Integration  Systems,  vol.11,  pp.976-995,  2003.
[7]  T.J.Richardson,  A.Shokrollahi  and  R.Urbanke,  “Design  of  capacity  approaching  low-density  parity-check  codes,”  IEEE  Trans.  Inform.  Theory,  vol.47,  pp.619{637,  2001.
[8]  E.Sharon,  S.Litsyn,  J.Goldberger  “An  Efficient  Message-Passing  Schedule  for  LDPC  Decoding,”  in  proc.  23rd  IEEE  Convention  in  Tel-Aviv,  Israel,  pp.223-226,  September  6-7,  2004.
[9]  R.M.Tanner,  “A  recursive  approach  to  low  complexity  code”  IEEE  Trans,  on  Info.  Theory,  vol.27(5),  pp.533-547,  1981.
[10]  J.Zhang  and  M.Fossorier,  “Scheduled  belief  propagation  decoding,”  The  Proceedings  36th  Asilomar  Conference  on  Signals,  Systems  and  Computers,  Pacific  Grove,  USA,  vol.l,  pp.8-15,  2002.
[11]  Dale  E.Hocevar,  “Efficient  encoder  for  low-density-parity-check-codes”,  Texas  instruments  incorporated.  US  Patent  application  publication  No.  2004/0148560,  Jul.  29,  2004
[12]  Mustafa  Eroz,  Feng-Wen  Sun,  Lin-Nan  Lee,  “Method  and  apparatus  for  providing  reduced  memory  low  density  parity  check  codes”.  The  direct  TV  group,  INC.,  US  Patent  Application  Publication  No.  2005/0091565  A1  Apr.  28,  2005
[13]  Mustafa  Eroz,  Feng-Wen  Sun,  Lin-Nan  Lee,  “Method  and  system  for  providing  long  and  short  block  length  low  density  parity  check  codes”.  The  direct  TV  group,  INC.,  US  Patent  Application  Publication  No.  2005/0091570  A1,  Apr.  28,  2005
[14]  Mustafa  Eroz,  Feng-Wen  Sun,  Lin-Nan  Lee,  “Encoding  low  density  parity  check  codes  through  an  LDPC  decoder”.  The  direct  TV  group,  INC.,  US  Patent  Application  Publication  No.  2005/0003756  A1,  Jan.  6,  2005
[15]  Richardson,  et  al.  “Methods  and  apparatus  for  decoding  LDPC  codes”,  US  Patent  No.  6,633,856,  Flarion  Technologies,  Inc.  (Bedminister,  NJ),  October  14,  2003.
[16]  Error-correcting  codes,  second  edition  ,  W.  Wesley  Peterson,  E.J.Weldon.
[17]  Elwyn  R.Berlekamp／Algebraic  Coding  Theory,  Revised  1984  Edition.
[18]  Error-Correcting  Codes  and  Finite  Fields／Oliver  Pretzel
[19]  R.E.Blahut,  Theory  and  Practice  of  Error-Correcting  codes,  Addison-Wesley,  1983.
[20]  W.G.Chambers,  R.E.Peile,  K.Y.Tsie,  and  N.Zein,  An  algorithm  for  solving  the  Welch-Berlekamp  key-equation  with  a  simplified  proof,  Electronic  Letters,  vol.29,  1993,  pp.1620-1621.
[21]  V.Guruswami  and  M.  Sudan,  Improved  decoding  of  Reed-Solomon  and  Algebraic-Geometry  codes,  IEEE  Trans.  Inform.  Theory,  6,  1999,  pp.1757-  1767.
[22]  D.Mandelbaum,  Decoding  of  erasures  and  errors  for  certain  RS  codes  by  decreased  redundancy,  IEEE  Trans.  Inform.  Theory,  vol.28,  2,  1982,  pp.330-336.
[23]  J.L.Massey,  Shift-register  synthesis  and  BCH  decoding,  IEEE  Trans.  Inform.  Theory,  vol.15,  1969,  pp.122-127.
[24]  W.Peterson,  and  W.Weldon,  Error  Correcting  Codes,  1974.
[25]  L.Welch  and  E.R.Berlekamp,  Error  correction  for  algebraic  block  codes,  US  Patent  No.  4,633,470,  1983.
【０２６１】
2010509790.tif 000019
【図面の簡単な説明】
【０２６２】
【図１】本発明の装置の好ましい実施形態のブロック図である。
【図２】図１の多段階エンコーダを構成する構成要素のブロック図である。
【図３】図２の状態機械制御ロジックにおいて実行される符号化プロセスのフローチャートである。
【図４】図１の多段階デコーダを構成する構成要素のブロック図である。
【図５】図４の二重モードデコーダを構成する構成要素のブロック図である。
【図６】実施例１に関連する復号化プロセスのフローチャートである。
【図７】実施例２に関連する復号化プロセスのフローチャートである。
【図８】実施例１に関連する符号化プロセスの概略図である。
【図９】実施例２に関連するＣＥＲ性能とＳＥＲ性能との関係のグラフ図である。
【図１０】実施例１及び実施例２に関連するブロック符号［１５，７，５］の生成行列の図である。
【図１１】実施例１及び実施例２に関連するブロック符号［１５，７，５］のパリティ検査行列“Ｈ”の図である。
【図１２】実施例１及び実施例２に関連するブロック符号［１５，７，５］の二重エラー位置の表図である。
【図１３】実施例１及び実施例２に関連するブロック符号［１１，７，３］のパリティ検査行列Ｈ（１）の図である。
【図１４】実施例１に関連するブロック符号［１１，７，３］の単一エラー位置の表図である。
【図１】
2010509790.tif 000020
【図２】
2010509790.tif 000021
【図３】
2010509790.tif 000022
【図４】
2010509790.tif 000023
【図５】
2010509790.tif 000024
【図６】
2010509790.tif 000025
【図７】
2010509790.tif 000026
【図８】
2010509790.tif 000027
【図９】
2010509790.tif 000028
【図１０】
2010509790.tif 000029
【図１１】
2010509790.tif 000030
【図１２】
2010509790.tif 000031
【図１３】
2010509790.tif 000032
【図１４】
2010509790.tif 000033