JP5216593B2 - 多段階誤り訂正方法及び装置 - Google Patents

多段階誤り訂正方法及び装置 Download PDF

Info

Publication number
JP5216593B2
JP5216593B2 JP2008539611A JP2008539611A JP5216593B2 JP 5216593 B2 JP5216593 B2 JP 5216593B2 JP 2008539611 A JP2008539611 A JP 2008539611A JP 2008539611 A JP2008539611 A JP 2008539611A JP 5216593 B2 JP5216593 B2 JP 5216593B2
Authority
JP
Japan
Prior art keywords
bits
decoding
data
decoded
bit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2008539611A
Other languages
English (en)
Other versions
JP2010509790A (ja
Inventor
リツィン、シモン
シャロン、エラン
アルロド、イダン
ラッセル、メナケム
Original Assignee
ラマト アット テル アビブ ユニバーシティ リミテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ラマト アット テル アビブ ユニバーシティ リミテッド filed Critical ラマト アット テル アビブ ユニバーシティ リミテッド
Publication of JP2010509790A publication Critical patent/JP2010509790A/ja
Application granted granted Critical
Publication of JP5216593B2 publication Critical patent/JP5216593B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2906Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
    • H03M13/2927Decoding strategies
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M11/00Coding in connection with keyboards or like devices, i.e. coding of the position of operated keys
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1111Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/152Bose-Chaudhuri-Hocquenghem [BCH] codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/1545Determination of error locations, e.g. Chien search or other methods or arrangements for the determination of the roots of the error locator polynomial
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2903Methods and arrangements specifically for encoding, e.g. parallel encoding of a plurality of constituent codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2906Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/3707Adaptive decoding and hybrid decoding, e.g. decoding methods or techniques providing more than one decoding algorithm for one code
    • H03M13/3715Adaptation to the number of estimated errors or to the channel state
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/63Joint error correction and other techniques
    • H03M13/635Error control coding in combination with rate matching
    • H03M13/6362Error control coding in combination with rate matching by puncturing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L27/00Modulated-carrier systems
    • H04L27/18Phase-modulated carrier systems, i.e. using phase-shift keying

Description

本発明は、包括的には符号化・復号化方式に関する。特に、本発明は、より短い部分符号を符号化・復号化することにより符号の誤り訂正を提供する方法及び装置に関する。
現代の情報時代では、様々な種類の情報、例えばメモリ、映像、音声、統計情報等を表して通信するために、2進値、例えば0と1が使用される。不都合なことに、2進データの記憶中、伝送中、及び/又は処理中に、偶発的にエラーが導入されることがある(例えば、“1”ビットが“0”ビットに変わるか、又はこの逆)。
このようなエラーの存在を解決するために当該技術分野において既知のいくつかの技法は、誤り訂正符号化方式を利用して、記憶されている情報の信頼性を確保する。記憶方法の物理学は、記憶セル核1個当たりの情報ビット数で表すことができる固定容量を示す。この固定容量は、各記憶核セルの信号対雑音比(SNR)の直接の結果であるため、理論上の上限(「シャノン限界」として知られる)を定める。
多くの場合において、このような誤り訂正符号化方式では、所与の符号レートに対する理論上の訂正能力に近づくために、非常に長い符号を使用する必要がある。
しかし、符号長の増大は、符号化回路及び復号化回路の複雑さ及び面積の増大に繋がる。その結果として、あるポイントにおいて、このような誤り訂正符号化方式を含む集積回路の実装がもはや実用的ではなくなるか、又は効率的ではなくなる。別法として、標準復号化技法をサポートするには不十分なシリコン密度が存在する。
用語「誤り訂正」(すなわち、エラーの検出及び訂正)は、本明細書では、データ記憶に適用される。順方向誤り訂正符号による符号化及び復号化は、ソフトウェアにおいて、又はハードウェアを使用して実行される。
シャノン限界[1]が発見された後、シャノンの情報理論の性能限界に近づく符号を提供する必要があった。これらの限界に近づくためには符号長を増大しなければならないことが周知である[2]〜[4]。1993年に、ベロン(Berron)[5]が最初に、反復復号化を使用した、略容量限界に近づく技法を提示した。しかし、長符号のみが考慮された。後に、[6]〜[11]において、低密度パリティ検査(LDPC)符号の導入に伴い、これら容量限界にさらに近づいた新たな構造が成功裏に提示されたが、これもまた長符号、通常は約10ビット長の符号に対してのみであった。
LDPC反復デコーダに基づく具体的な方式は[12]〜[14]に示され、ここでは、計算ユニットの実装複雑性、反復回数、必要なメモリサイズ等を低減することに重点が置かれている。
したがって、これら長符号を複雑性が制限される環境において実施し、その性能の恩恵を受けるには、より短い実用的な方式を利用できるように、長符号のエンコーダ及びデコーダの回路複雑性を低減する方法を提供する必要がある。
パリティオーバーヘッドを低減することにより、エンコーダ及びデコーダの回路複雑性を低減するパンクチャ方法を開示する従来技術による技法が、ドロア(Dror)等に付与された米国特許出願公開第20050160350号明細書に教示されている。
ドロア(Dror)特許には、単一ビット順方向誤り訂正を提供する高速データエンコーダ/デコーダが開示されている。データは、矩形配列内で保護されるように配置され、それにより、単一ビットエラーの位置が行位置及び列位置に従って特定される。その結果、エラーシンドロームをエラー位置に変換するために提供されるルックアップテーブルのサイズが低減される。
しかし、ドロア(Dror)特許において開示される2つの計算フェーズはそれぞれ、第1フェーズにおいて単一のエラーを訂正するのに十分な情報を提供しないため、それ自体は誤り訂正方式ではない。したがって、第1フェーズは、第2フェーズで得られる計算に頼らずには、各部分符号内の単一のエラーさえも訂正することができない。
本発明によれば、符号語の表現を復号化する方法であって、(a)符号語の表現から複数の部分語を生成するステップであって、各部分語のビットは符号語の表現のビットの適切な部分集合である、生成するステップと、(b)各部分語を、各自のビットのみに従って復号化するステップであって、それにより、対応する復号化部分語を生成する、復号化するステップと、(c)部分語の1つの復号化が失敗した場合、復号化が失敗した1つの部分語に対応する復号化部分語を変更するステップであって、それにより、変更復号化部分語が生成され、変更は、少なくとも部分的に、少なくとも1つの復号化が成功した部分語の対応する復号化部分語に従う、変更するステップとを含む方法が提供される。
本発明によれば、Mビット語を復号化する装置であって、(a)N<Mビット語を復号化するデコーダと、(b)デコーダを、Mビット語から選択されるNビットの異なる各部分集合に別個に適用するメカニズムであって、デコーダの各適用は、各適用が適用されるNビットのみに依存し、各適用は、Mビット語の最終復号化データが、適用の対応する復号化データに少なくとも部分的に従って生成されるように対応する復号化データを生成するメカニズムとを含み、メカニズムは、適用の1つが失敗する場合、少なくとも1つの成功した適用の対応する復号化データに少なくとも部分的に従って、失敗した適用の対応する復号化データの変更を行う、装置が提供される。
本発明によれば、Mビット語を復号化する装置であって、(a)N<Mビットの各語を復号化するデコーダと、(b)複数の各デコーダをMビット語から選択される異なるNビットの各部分集合に適用するメカニズムであって、複数の各デコーダの各適用は、各適用が適用されるNビットのみに依存し、各適用は、Mビット語の最終復号化データが、適用の対応する復号化データに少なくとも部分的に従って生成されるように対応する復号化データを生成するメカニズムとを含み、メカニズムは、デコーダの1つが失敗する場合、少なくとも部分的に、少なくとも1つの成功したデコーダの対応する復号化データに従って、失敗したデコーダの対応する復号化データの変更を行う、装置が提供される。
本発明によれば、データビットの誤り訂正方式を提供する方法であって、(a)第1の符号化方式に従ってデータビットを符号化するステップであって、それにより、第1のパリティビット群を生成する、符号化するステップと、(b)第2の符号化方式に従ってデータビットを符号化するステップであって、それにより、第2のパリティビット群を生成する、符号化するステップと、(c)第2のパリティビット群を縮約パリティビット群に変換するステップであって、該変換は多対1である、変換するステップと、(d)第1のパリティビット群を縮約パリティビット群と結合することにより、最終パリティビット群を生成するステップとを含む方法が提供される。
本発明によれば、データビットの誤り訂正方式を提供する方法であって、(a)データビットからビットの複数の部分群を作成するステップであって、各データビットが複数の部分群に少なくとも1回出現する、作成するステップと、(b)対応する第1の符号化方式に従って複数の部分群の各部分群を符号化するステップであって、それにより、各部分群に、対応する少なくとも1つの第1のパリティビットを生成する、符号化するステップと、(c)対応する第2の符号化方式に従って各部分群を符号化するステップであって、それにより、各部分群に、対応する少なくとも1つの第2のパリティビットを生成する、符号化するステップと、(d)複数のすべての部分群の少なくとも1つの第2のパリティビットをすべてジョイント縮約パリティビットに変換するステップであって、多対1である変換するステップと、(e)複数の部分群のすべての少なくとも1つの第1のパリティビットのすべてをジョイント縮約パリティビットと結合することにより、データビットの最終パリティビット群を生成するステップとを含む方法が提供される。
本発明によれば、データビットの誤り訂正方式を提供する方法であって、(a)データビットから複数のビット部分群を作成するステップであって、各データビットが複数の部分群に少なくとも1回出現する、作成するステップと、(b)対応する符号化方式に従って複数の部分群の各部分群を符号化するステップであって、それにより、各部分群に、対応する少なくとも1つのパリティビットを生成する、符号化するステップと、(c)各部分群について、各部分群のビット及び各部分群の対応する少なくとも1つのパリティビットの中から対応する選択部分集合を選択するステップと、(d)複数の部分群のすべての選択部分集合をジョイント凝集選択ビットに変換するステップであって、該変換は多対1である、変換するステップと、(e)各部分群のビットを各部分群の対応する少なくとも1つのパリティビットと結合し、それから各部分群の対応する選択部分集合のビットを除去することにより、各部分群に対応する短縮符号語を生成するステップと、(f)複数の部分群のすべての対応する短縮符号語をジョイント縮約選択ビットと結合することにより、データビットの符号語を生成するステップとを含む方法が提供される。
本発明によれば、データビットの誤り訂正方式を提供する方法であって、(a)データビットから複数のビット部分群を生成するステップであって、各データビットが複数の部分群に少なくとも1回出現する、生成するステップと、(b)対応する符号化方式に従って複数の部分群の各部分群を符号化するステップであって、それにより、各部分群に、対応する符号語を生成する、符号化するステップと、(c)各部分群について、対応する符号語のビットから対応する選択部分集合を選択するステップと、(d)対応する符号語の対応する選択部分集合をジョイント縮約選択ビットに変換するステップであって、該変換は多対1である、変換するステップと、(e)対応する各符号語に対応する選択部分集合のビットを除去することにより、対応する各符号語に対応する短縮符号語を生成するステップと、(f)複数の部分群のすべての対応する短縮符号語をジョイント縮約選択ビットと結合することにより、データビットの符号語を生成するステップとを含む方法が提供される。
本発明によれば、Mデータビット及びP個のパリティビットを含む符号語の表現を復号化する方法であって、a)P個のパリティビットを第1のパリティビット群及び第2のパリティビット群に分けるステップと、b)第1のパリティビット群のみを使用してMデータビットを復号化するステップであって、それにより、訂正済みデータビットを提供する、復号化するステップと、c)第1のパリティビット群のみを使用した復号化が失敗した場合、第1のパリティビット群及び第2のパリティビット群を使用してMデータビットを復号化するステップであって、それにより、訂正済みデータビットを提供する、復号化するステップとを含む方法が提供される。
本発明によれば、Mデータビット及びP個のパリティビットを含む符号語の表現を復号化する方法であって、a)MデータビットをK>1個の部分集合に分けるステップであって、M個の各データビットはK個の部分集合に少なくとも1回出現する、分けるステップと、b)P個のパリティビットを第1のパリティビット群及び第2のパリティビット群に分けるステップと、c)第1のパリティビット群をK個の部分集合に分けるステップであって、第1のパリティビット群の各部分集合はMデータビットの各部分集合に対応する、分けるステップと、d)第1のパリティビット群の対応する部分集合に従ってMデータビットの各部分集合を復号化するステップであって、それにより、Mデータビットの各部分集合の復号化データを生成する、復号化するステップと、e)MデータビットのK個の部分集合の1つの復号化に失敗した場合、第2のパリティビット群に少なくとも部分的に従って、復号化に失敗した部分集合を復号化するステップであって、それにより、復号化に失敗した部分集合の復号化データを生成する、復号化するステップと、f)MデータビットのK個すべての部分集合の復号化データを結合するステップであって、それにより、Mデータビットの完全復号化データを生成する、結合するステップとを含む方法が提供される。
本発明によれば、N>M個のビットを有する符号語の表現からMデータビットを復号化する方法であって、a)Nビットから最大でN−Mビットの選択部分集合を除去するステップであって、それにより、残留ビットの集合を生成する、除去するステップと、b)残留ビットをK>1個の残留ビット部分集合に分けるステップであって、各残留ビットは、K個の部分集合のうちの少なくとも1つのメンバである、分けるステップと、c)各部分集合のビットのみに従ってK個の各部分集合を復号化するステップであって、それにより、各部分集合の復号化データを生成する、復号化するステップと、d)K個の部分集合の1つの復号化に失敗した場合、除去された選択部分集合に少なくとも部分的に従って、復号化に失敗した部分集合を復号化するステップであって、それにより、復号化に失敗した部分集合の復号化データを生成する、復号化するステップと、e)K個すべての部分集合の復号化データを結合するステップであって、それにより、Mデータビットの完全復号化データを生成する、結合するステップとを含む方法が提供される。
本発明の第1の態様は、符号語の表現を復号化する方法である。本発明のこの態様及び本発明の他の同様の態様では、復号化されるのは符号語の表現であって、記憶装置に書き込まれる符号語ではない。何故なら、符号語を書き込み、それから読み出すことにより、符号語にエラーが導入される恐れがあるためである。複数の部分語が、符号語の表現から生成され、各部分語のビットは、符号語の表現のビットの適切な部分集合である。各部分語は、各自のビットのみに従って復号化されて、対応する復号化部分語を生成する。部分語の1つの復号化に失敗した場合、復号化に失敗した部分語に対応する復号化部分語が変更され、それにより、変更復号化部分語を生成する。変更は、復号化に成功した部分語の1つ又は複数に対応する復号化部分語に少なくとも部分的に従う。
後述するように、用語「復号化部分語」の範囲は、部分語の復号化に成功することにより得られる数値及び部分語を復号化しようという試みが失敗したことの論理的な表示の両方を含む。なお、部分語の復号化に成功することにより得られる数値は、その表現のみならず、元の符号語それ自体の部分である。換言すれば、「復号化に成功した部分語」は、部分符号語である。復号化された部分語の「変更」は、復号化された部分語のある数値から別の数値への変更、又は復号化失敗の論理的表示からある数値への変更、又は数値から失敗の論理的表示への変更を意味する。
例えば、以下の実施例1では、2つの部分語C1~short及びC2~shortが、符号語の表現から生成される。各部分語は、[11,7,3]デコーダを使用して別個に復号化される。C1~shortの復号化に失敗するが、C2~shortの復号化に成功する場合、C1~shortの復号化試行が失敗したことの論理的表示は、その論理的表示をC1~から復号化されるC1で置換することにより変更される。この変更は、復号化に成功したC2~shortに対応する部分符号語C2 shortに従う。C2 shortは、[15,7,5]エンコーダを使用して符号化されてP2が生成され、P2は、P~と排他的論理和がとられて、P1~が生成され、C1~shortとP1~とが連接されてC1~が生成される。
好ましくは、部分語の1つの復号化に失敗した場合、変更された復号化部分語からのデータが、復号化に成功した部分語に対応するすべての復号化部分語からのデータと結合される。例えば、以下の実施例1では、C1~shortの復号化に失敗するが、C2~shortの復号化に成功する場合、C1~から復号化されるC1の最初の7ビットがC2 shortの最初の7ビットと連接されて、ヘッダが復元される。
最も好ましくは、変更された復号化部分語からのデータと、復号化に成功した部分語に対応するすべての復号化部分語からのデータとの結合は、変更された復号化部分語からのデータを、復号化に成功した部分語に対応するすべての復号化部分語からのデータとまとめることを含むステップにより行われる。2つ以上の異なるソースからのデータを「まとめる(assemble)」ことは、本明細書では、すべてのソースからのビットを一緒に、レジスタ又は記憶ロケーションに入れることとして定義され、場合によってはビット順が並べ替えられることもあれば、ビットの1つ又は複数が少なくとも1回繰り返されることもある。しかし、通常、以下の実施例1でのように、データは、ビット順を並べ替えずに、且つビットを繰り返さずに各種データソースからのビットを単に連接することにより「まとめ」られる。
好ましくは、部分語は互いに素である。例えば、以下の実施例1では、C1~short及びC2~shortは互いに素である。
好ましくは、部分語はすべて、同一数のビットを含む。例えば、以下の実施例1では、C1~short及びC2~shortは両方とも11ビットを含む。
本発明の第2の態様は、Mビット語を復号化する装置である。装置は、N<Mビット語を復号化するデコーダと、デコーダを、Mビット語から選択されるNビットの異なる各部分集合に別個に適用するためのメカニズムとを含む。デコーダの各適用は、各適用が適用されるNビットのみに依存する。デコーダの各適用は、最終復号化データが、デコーダの適用により生成される復号化データに少なくとも部分的に従って生成されるように、対応する復号化データを生成する。デコーダの適用の1つが失敗する場合、その適用の復号化データは、デコーダのその他の適用により生成される復号化データに少なくとも部分的に従って変更される。
例えば、以下の実施例1では、M=26、N=11であり、デコーダは[11,7,3]デコーダである。11ビット部分集合はC1~short及びC2~shortである。[11,7,3]デコーダは、これら2つの部分集合に別個に適用される。最終復号化データは、復号化14ビットヘッダである。C1~shortの復号化に失敗するが、C2~shortの復号化に成功する場合、C1~shortの復号化試行が失敗したことの論理的表示は、その論理表示をC1~から復号化されるC1で置換することにより変更される。この変更は、復号化に成功したC2~shortに対応する復号化部分語C2 shortに従う。C2 shortは、[15,7,5]エンコーダを使用して符号化されてP2が生成され、P2はP~と排他的論理和がとられて、P1~が生成され、C1~shortとP1~とが連接されてC1~が生成される。
好ましくは、部分集合は互いに素である。例えば、以下の実施例1では、C1~short及びC2~shortは互いに素である。
本発明の第3の態様は、Mビット語を復号化する装置である。装置は、N<Mビット語をそれぞれ復号化する複数のデコーダを含む。装置は、各デコーダを、Mビット語から選択されるNビットの各部分集合に別個に適用するメカニズムも含む。デコーダの各適用は、各適用が適用されているNビットのみに依存する。デコーダの各適用は、Mビット語の最終復号化データが、デコーダの適用により生成される復号化データに少なくとも部分的に従って生成されるように、対応する復号化データを生成する。デコーダの1つが失敗する場合、対応する復号化データは、その他のデコーダにより生成される復号化データに少なくとも部分的に従って変更される。
例えば、以下の実施例1では、M=26、N=11であり、デコーダは[11,7,3]デコーダである。11ビット部分集合はC1~short及びC2~shortである。[11,7,3]デコーダは、これら2つの部分集合のうちの一方に適用される。最終復号化データは、復号化14ビットヘッダである。C1~shortの復号化に失敗するが、C2~shortの復号化に成功する場合、C1~shortの復号化試行が失敗したことの論理的表示は、その論理表示をC1~から復号化されるC1で置換することにより変更される。この変更は、復号化に成功したC2~shortに対応する復号化部分語C2 shortに従う。C2 shortは、[15,7,5]エンコーダを使用して符号化されてP2が生成され、P2はP~と排他的論理和がとられて、P1~が生成され、C1~shortとP1~とが連接されてC1~が生成される。
好ましくは、部分集合は互いに素である。例えば、以下の実施例1では、C1~short及びC2~shortは互いに素である。
本発明の第4の態様は、データビットの誤り訂正方式を提供する方法である。データビットは、第1の符号化方式に従って符号化されて、第1のパリティビット群を生成する。データビットは、第2の符号化方式に従っても符号化され、第2のパリティビット群を生成する。第2のパリティビット群は、多対1変換により縮約パリティビット群に変換される。最終パリティビット群が、第1のパリティビット群と第2のパリティビット群とを結合することにより生成される。
例えば、以下の実施例1では、データビットはヘッダの14ビットである。第1の符号化方式は、C1 short及びC2 shortを生成する[11,7,3]方式である。第1のパリティビット群は、各C1 short及びC2 shortの最後の4ビットである。第2の符号化方式は、第2のパリティビット群P1及びP2を生成する[15,7,5]方式である。第2のパリティビット群は、多対1変換「XOR」(8ビットイン、4ビットアウト)により縮約群(condensed group)Pに変換される。最終パリティビット群は、C1 shortの最後の4ビット及びC2 shortの最後の4ビットをPと結合し、参照番号246及び254により図8に示す符号語のパリティビットを提供する。
好ましくは、最終パリティビット群は、第1のパリティビット群の少なくとも部分を縮約パリティビット群とまとめることにより、縮約パリティビット群と結合される。例えば、以下の実施例1では、C1 shortの最後の4ビット、C2 shortの最後の4ビット、及びPが一緒に共通ロケーションに記憶されるように、C1 short、C2 short、及びPが一緒に、フラッシュ装置の共通ロケーションに書き込まれる。
好ましくは、変換するステップは、第2のパリティビット群の複数の部分群を排他的論理和演算することを含む。例えば、以下の実施例1では、P1とP2との排他的論理和がとられる。
本発明の第5の態様は、データビットの誤り訂正方式を提供する方法である。複数の部分群がデータビットから生成され、各データビットは複数の部分群に少なくとも1回出現する。各部分群は、対応する第1の符号化方式に従って符号化されて、対応する1つ又は複数の第1のパリティビットを生成する。各部分群は、対応する第2の符号化方式に従って符号化されて、対応する1つ又は複数の第2のパリティビットを生成する。第2のパリティビットがすべて、多対1演算によりジョイント縮約パリティビットに変換される。第1のパリティビットのすべてをジョイント縮約パリティビットと結合することにより、最終パリティビット群が生成される。
例えば、以下の実施例1では、データビットはヘッダの14ビットである。2つの部分群はヘッダの最初の7ビット及びヘッダの最後の7ビットである。各データビットは、部分群の1つに厳密に1回、出現し、他方の部分群には全く出現しない。第1の符号化方式はすべて、C1 short及びC2 shortを生成する[11,7,3]方式であり、それにより、第1の部分群に4パリティビット(C1 shortの最後の4ビット)を生成し、第2の部分群に4パリティビット(C2 shortの最後の4ビット)を生成する。第2の符号化方式はすべて[15,7,5]方式であり、それにより、第1の部分群に4パリティビットP1を生成し、第2の部分群に4パリティビットP2を生成する。P1及びP2は、多対1“XOR”演算(8ビットイン、4ビットアウト)により縮約群Pに変換される。最終パリティビット群は、C1 short、C2 short、及びPをフラッシュ装置に書き込むことにより、C1 shortの最後の4ビット及びC2 shortの最後の4ビットをPと結合することにより生成される。
好ましくは、第1のパリティビットは、第1のパリティビットのすべてを縮約パリティビット群とまとめることにより、縮約パリティビット群と結合される。例えば、以下の実施例1では、C1 shortの最後の4ビット、C2 shortの最後の4ビット、及びPが共通のロケーションに記憶されるように、C1 short、C2 short、及びPが一緒にフラッシュ装置に書き込まれる。
好ましくは、各データビットは、複数の部分群に1回のみ出現する。例えば、以下の実施例1では、ヘッダの最初の7個の各ビットが第1の部分群に1回出現し、第2の部分群には全く出現せず、ヘッダの最後の7個の各ビットが第2の部分群に1回出現し、第1の部分群には全く出現しない。別法として、少なくとも1つのデータビットが、複数の部分群に少なくとも2回出現する。例えば、以下の実施例2では、4096個の情報ビットを符号化するために、586個の符号語内に586×7=4102データビットがあるため、例えば、情報ビットのうちの1ビットを6回複製することができる。
好ましくは、すべての部分群は等サイズである。例えば、以下の実施例1では、両部分群はそれぞれ7ビットを有する。
好ましくは、部分群のうちの少なくとも1つについて、対応する第1及び第2の符号化方式は、共通の符号化方法を使用して得られ、それにより、第1の符号化方式は、第1の順番に従って部分群のビットを符号化し、第2の符号化方式は、第2の順番に従って部分群のビットを符号化する。例えば、以下の実施例1に対する代替として、[11,7,3]符号化を、第1の符号化方式としてヘッダの最初の7ビットと最後の7ビットに別個に適用し、それから、ヘッダの最初の7ビットの順番を並べ替え、ヘッダの最後の7ビットの順番を並べ替え、それから、ヘッダの並べ替えられた最初の7ビット及び最後の7ビットに[11,7,3]符号化を第2の符号化方式として別個に適用することができる。縮約パリティビットは、並べ替えられた最初の7ヘッダビットを符号化することにより生成される符号語の最後の4ビットと、並べ替えられた最後の7ヘッダビットを符号化することにより生成される符号語の最後の4ビットとの排他的論理和をとることにより生成される。以下の実施例1でのように、14データビット及び12パリティビットが記憶される。
好ましくは、すべての部分群は、共通の第1の符号化方式に従って符号化される。例えば、以下の実施例1では、共通の第1の符号化方式は[11,7,3]符号化方式である。
好ましくは、すべての部分群は、共通の第2の符号化方式に従って符号化される。例えば、以下の実施例1では、共通の第2の符号化方式は[15,7,5]符号化方式である。
好ましくは、第2のパリティビットをジョイント縮約パリティビットに変換することは、部分群の1つに対応する少なくとも1つの第2のパリティビットと、部分群の別の1つに対応する少なくとも1つの第2のパリティビットとの排他的論理和をとることを含む。例えば、以下の実施例1では、2つの「第2のパリティビット」群はP1及びP2であり、P1とP2との排他的論理和がとられる。
本発明の第6の態様は、データビットの誤り訂正方式を提供する方法である。複数のビット部分群がデータビットから生成され、各データビットは、部分群に少なくとも1回出現する。各部分群は、対応する符号化方式に従って符号化されて、対応する1つ又は複数の第1のパリティビットを生成する。各部分群について、対応する選択部分集合が、部分群のビット及び対応するパリティビットの中から選択される。すべての選択部分集合は、多対1演算によりジョイント縮約選択ビットに変換される。各部分群について、対応する短縮符号語が、各部分群のビットを対応するパリティビットと結合し、それから、対応する選択部分集合のビットを除去することにより生成される。最後に、データビットの符号語が、すべての短縮符号語をジョイント縮約選択ビットと結合することにより生成される。
例えば、以下の実施例1では、データビットはヘッダの14ビットである。2つの部分群はヘッダの最初の7ビット及びヘッダの最後の7ビットである。各データビットは、部分群の1つに厳密に1回、出現し、他方の部分群には全く出現しない。各部分群は、[15,7,5]エンコーダを使用して符号化されて、それぞれ8パリティビットを含む符号語C1及びC2を生成する。C1及びC2のビットから、「選択」部分集合P1及びP2が、多対1演算“XOR”(8ビットイン、4ビットアウト)によりPのジョイント縮約選択ビットに変換される。短縮符号語C1 short及びC2 shortが、部分群のビットを、[15,7,5]エンコーダにより生成されたパリティビットと結合して、完全な符号語C1及びC2を生成し、それから、選択部分集合P1をC1から除去し、選択部分集合P2をC2から除去することにより生成される。最終符号語は、C1 short、C2 short、及びPをフラッシュ装置に書き込むことで、C1 short及びC2 shortをPと結合することにより生成される。
好ましくは、各部分群のビットは、部分群のビットを対応するパリティビットとまとめることにより対応するパリティビットと結合される。例えば、以下の実施例1では、符号語C1は、第1の部分群を、第1の部分群の符号化により生成されるパリティビットと連接することにより生成され、符号語C2は、第2の部分群を、第2の部分群の符号化により生成されるパリティビットと連接することにより生成される。
好ましくは、短縮符号語は、すべての短縮符号語をジョイント選択縮約ビットとまとめることによりジョイント選択縮約ビットと結合される。例えば、以下の実施例1では、C1 short、C2 short、及びPが一緒にフラッシュ装置の共通ロケーションに記憶される。
好ましくは、各データビットは、複数の部分群に1回のみ出現する。例えば、以下の実施例1では、ヘッダの最初の7個の各ビットは、第1の部分群に1回出現するが、第2の部分群には全く出現せず、ヘッダの最後の7個の各ビットは、第2の部分群に1回出現するが、第1の部分群には全く出現しない。別法として、少なくとも1つのデータビットが、複数の部分群に少なくとも2回出現する。例えば、以下の実施例2では、4096個の情報ビットを符号化するために、586個の符号語内に586×7=4102データビットがあるため、例えば、情報ビットのうちの1ビットを6回複製することができる。
好ましくは、すべての部分群は等サイズである。例えば、以下の実施例1では、両部分群はそれぞれ7ビットを有する。
好ましくは、すべての部分群は、共通の符号化方式に従って符号化される。例えば、以下の実施例1では、共通の符号化方式は[15,7,5]符号化方式である。
好ましくは、選択部分集合をジョイント縮約選択ビットに変換することは、ある選択部分集合のビットと別の選択部分集合のビットとの排他的論理和をとることを含む。例えば、以下の実施例1では、P1とP2との排他的論理和がとられる。
本発明の第7の態様は、データビットの誤り訂正方式を提供する方法である。複数のビット部分群がデータビットから生成され、各データビットは、部分群に少なくとも1回出現する。各部分群は、対応する符号化方式に従って符号化されて、対応する符号語を生成する。各符号語から、ビットの対応する「選択部分集合」が選択される。すべての選択部分集合は、多対1変換によりジョイント縮約選択ビットに変換される。各符号語に対応する短縮符号語が、対応する選択部分集合のビットを符号語から除去することにより生成される。データビット全体の符号語が、すべての短縮符号語をジョイント縮約選択ビットと結合することにより生成される。なお、本発明の第7の態様は、データビットと別個であり、かつデータビットと区別可能なパリティビットを使用する必要がないため、本発明のこの態様は、系統的符号化及び非系統的符号化の両方に適用可能である。
例えば、以下の実施例1では、データビットはヘッダの14ビットである。2つの部分群はヘッダの最初の7ビット及びヘッダの最後の7ビットである。各データビットは、部分群の1つに厳密に1回、出現し、他方の部分群には全く出現しない。部分群は、対応する[15,7,5]符号化方式を使用して符号化されて、対応する符号語C1及びC2を生成する。C1から選択部分集合P1が選択され、C2から選択部分集合P2が選択される。P1及びP2は、多対1“XOR”演算(8ビットイン、4ビットアウト)によりPに変換される。短縮符号語C1 short及びC2 shortが、C1からP1を除去し、C2からP2を除去することにより生成される。データビット全体の符号語が、C1 short、C2 short、及びPをフラッシュ装置に書き込むことでC1 short及びC2 shortをPと結合することにより生成される。
好ましくは、短縮符号語は、すべての短縮符号語をジョイント選択縮約ビットとまとめることによりジョイント選択縮約ビットと結合される。例えば、以下の実施例1では、C1 short、C2 short、及びPが一緒にフラッシュ装置の共通ロケーションに記憶される。
好ましくは、各データビットは、複数の部分群に1回のみ出現する。例えば、以下の実施例1では、ヘッダの最初の7個の各ビットは、第1の部分群に1回出現するが、第2の部分群には全く出現せず、ヘッダの最後の7個の各ビットは、第2の部分群に1回出現するが、第1の部分群には全く出現しない。別法として、少なくとも1つのデータビットが、複数の部分群に少なくとも2回出現する。
好ましくは、すべての部分群は等サイズである。例えば、以下の実施例1では、両部分群はそれぞれ7ビットを有する。
好ましくは、すべての部分群は、共通の符号化方式に従って符号化される。例えば、以下の実施例1では、共通の符号化方式は[15,7,5]符号化方式である。
好ましくは、選択部分集合をジョイント縮約選択ビットに変換することは、ある選択部分集合のビットと別の選択部分集合のビットとの排他的論理和をとることを含む。例えば、以下の実施例1では、P1とP2との排他的論理和がとられる。
本発明の第8の態様は、Mデータビット及びPパリティビットを含む符号語の表現を復号化する方法である。Pパリティビットは、第1のパリティビット群及び第2のパリティビット群に分けられる。Mデータビットは、第1のパリティビット群のみを使用して復号化されて、訂正済みデータビットを提供する。第1のパリティビット群のみを使用する復号化に失敗した場合、Mデータビットは、両パリティビット群を使用して復号化されて、訂正済みデータビットを提供する。
例えば、以下の実施例1では、M=14であり、P=12である。14データビットは、C1~shortの最初の7ビット及びC2~shortの最初の7ビットである。12パリティビットは、C1~shortの最後の4ビット、C2~shortの最後の4ビット、及びP~である。第1のパリティビット群は、C1~shortの最後の4ビット及びC2~shortの最後の4ビットである。第2のパリティビット群はP~である。データビットは、[11,7,3]デコーダを第1のパリティビット群のみと共に使用して復号化されて、C1 shortの最初の7ビット及びC2 shortの最初の7ビットの復号化表現を提供する。C1~shortの復号化に失敗するが、C2~shortの復号化に成功する場合、復号化C2 shortは[15,7,5]エンコーダを使用して符号化されてP2が再生成され、P2はP~と排他的論理和演算されてP1~が生成され、C1~shortとP1~とが連接されてC1~が生成され、C1~が[15,7,5]デコーダを使用して復号化される。
本発明の第9の態様は、Mデータビット及びPパリティビットを含む符号語の表現を復号化する方法である。Mデータビットは2つ以上の部分集合に分けられ、各データビットは、部分集合に少なくとも1回出現する。Pパリティビットは、第1のパリティビット群及び第2のパリティビット群に分けられる。第1のパリティビット群は、まるでデータビットが、1:1の対応性で、データビット部分集合と第1のパリティビット群部分集合とに分けられるかのように同数の部分集合にさらに分けられる。各データビット部分集合は、対応する第1のパリティビット部分集合に従って復号化されて、対応する復号化データが生成される。これら復号化の1つが失敗する場合、復号化に失敗したデータビット部分集合は、第2のパリティビット群に少なくとも部分的に従って再び復号化されて、対応する復号化データが生成される。最後に、すべてのデータビット部分集合の復号化データが結合されて、Mデータビットの完全復号化データが生成される。
例えば、以下の実施例1では、M=14であり、P=12である。14データビットは、2つの部分集合:C1~shortの最初の7ビット及びC2~shortの最初の7ビットに分けられる。第1のパリティビット群は、C1~shortの最後の4ビット及びC2~shortの最後の4ビットである。第2のパリティビット群はP~である。C1~shortの最初の7ビットに対応する第1のパリティビットの部分集合は、C1~shortの最後の4ビットである。C2~shortの最初の7ビットに対応する第1のパリティビットの部分集合は、C2~shortの最後の4ビットである。C1~shortの最初の7ビットは、[11,7,3]デコーダによりC1~shortの最後の4ビットのみを使用して復号化される。C2~shortの最初の7ビットは、[11,7,3]デコーダによりC2~shortの最後の4ビットのみを使用して復号化される。C1~shortの復号化に失敗するが、C2~shortの復号化に成功する場合、復号化C2~shortは[15,7,5]エンコーダを使用して符号化されてP2を再生成し、P2はP~と排他的論理和演算されてP1~が生成され、C1~shortとP1~とが連接されてC1~が生成され、C1~が[15,7,5]デコーダを使用して復号化され、それにより、符号語C1が再生成される。再生成されたC1の最初の7ビットと復号化C2 shortの最初の7ビットとが連接されて、復号化14ビットヘッダが生成される。
好ましくは、データビット部分集合の復号化データは、データビット部分集合の復号化データをまとめることにより結合される。例えば、以下の実施例1では、復号化C1 shortの最初の7ビット及び復号化C2 shortの最初の7ビットが連接されて、復号化14ビットヘッダが生成される。
好ましくは、データビット部分集合は互いに素である。例えば、以下の実施例1では、C1~shortの最初の7ビット及びC2~shortの最初の7ビットは、2つの互いに素な部分集合である。
好ましくは、すべてのデータビット部分集合は等サイズである。例えば、以下の実施例1では、すべてのデータビット部分集合は7ビットを有する。
好ましくは、各データビット部分集合は、対応する第1の復号化方式を使用して対応する第1のパリティビット部分集合に従って復号化され、第1の復号化方式による復号化に失敗したデータビット部分集合は、対応する第2の復号化方式を使用することを含む。例えば、以下の実施例1では、第1の復号化方式は[11,7,3]方式であり、第2の復号化方式は[15,7,5]方式である。
好ましくは、データビット部分集合の少なくとも1つについて、対応する第1及び第2の復号化方式は、共通の復号化方法を適用する。例えば、本発明の第5の態様の実施例1に対する代替を続けると、第1の復号化方式及び第2の復号化方式は両方とも、[11,7,3]方式である。第1の復号化方式は、並べ替えられていないヘッダビットの符号化により生成された、記憶されているパリティビットを使用する。記憶されている最初の7データビットの復号化に失敗するが、記憶されている最後の7データビットの復号化に成功する場合、復号化に成功したデータビットが並べ替えられ、符号化されて、対応するパリティビットが再生成される。これら再生成されたパリティビットは、記憶されている最後の4パリティビットと排他的論理和演算されて、並べ替えられた最初の7ヘッダビットのパリティビットが再生成され、これが、並べ替えられ、記憶された最初の7データビットの[11,7,3]復号化を実行することにより、記憶されている最初の7データビットの2回目の復号化試行において使用される。
好ましくは、すべての第1の復号化方式は同一である。例えば、以下の実施例1では、すべての第1の復号化方式は同じ[11,7,3]方式である。
好ましくは、すべての第2の復号化方式は同一である。例えば、以下の実施例1では、すべての第2の復号化方式は同じ[15,7,5]方式である。
本発明の第10の態様は、N>Mビットを有する符号の表現からMデータビットを復号化する方法である。最大でN−Mビットの選択部分集合がNビットから除去され、それにより、残留ビットの集合を生成する。残留ビットは2つ以上の部分集合に分けられ、各残留ビットは部分集合の少なくとも1つのメンバである。各残留ビット部分集合は、各自のビットのみに従って復号化されて、対応する復号化データを生成する。残留ビット部分集合の1つの復号化に失敗する場合、その残留ビット部分集合は、除去された選択部分集合に少なくとも部分的に従って復号化されて、残留ビット部分集合の対応する復号化データを生成する。最後に、すべての復号化データが結合されて、Mデータビットの完全復号化データを生成する。なお、本発明の第10の態様は、データビットと別個であり、かつデータビットと区別可能なパリティビットを使用する必要がないため、本発明のこの態様は、系統的符号化及び非系統的符号化の両方に適用可能である。
例えば、以下の実施例1では、M=14であり、N=26である。除去される選択部分集合はP~である。残留ビットは、2つの部分集合であるC1~short及びC2~shortに分けられる。C1~shortは、各自の11ビットのみに従い、他の情報には従わずに復号化され、その結果として生成される復号化語の最初の7ビットは、C1~shortに対応する復号化データである。C2~shortは、各自の11ビットのみに従い、他の情報には従わずに復号化され、その結果として生成される復号化語の最初の7ビットは、C2~shortに対応する復号化データである。C1~shortの復号化に失敗するが、C2~shortの復号化に成功する場合、復号化されたC2 shortは、[15,7,5]エンコーダを使用して符号化されてP2が生成され、P2はP~と排他的論理和がとられて、P1~が生成され、C1~shortとP1~とが連接されてC1~が生成され、C1~は[15,7,5]デコーダを使用して復号化される。復号化C1 shortの最初の7ビットと復号化C2 shortの最初の7ビットとが連接されて、復号化14ビットヘッダが生成される。
好ましくは、残留ビット部分集合の復号化データは、残留ビット部分集合の復号化データをまとめることにより結合される。例えば、以下の実施例1では、復号化C1 shortの最初の7ビットと復号化C2 shortの最初の7ビットとが連接されて、復号化14ビットヘッダを生成する。
好ましくは、残留ビット部分集合は互いに素である。例えば、以下の実施例1では、C1~shortの最初の7ビット及びC2~shortの最初の7ビットは、2つの互いに素な部分集合である。
好ましくは、すべての残留ビット部分集合は等サイズである。例えば、以下の実施例1では、すべてのデータビット部分集合は7ビットを含む。
好ましくは、各残留ビット部分集合は、対応する第1の復号化方式を使用して各自のビットに従って復号化され、第1の復号化方式による復号化に失敗した残留ビット部分集合の除去された選択部分集合に従っての復号化は、対応する第2の復号化方式を使用することを含む。例えば、以下の実施例1では、第1の復号化方式は[11,7,3]方式であり、第2の復号化方式は[15,7,5]方式である。
好ましくは、残留ビット部分集合のうちの少なくとも1つについて、対応する第1及び第2の復号化方式は共通の復号化方法を適用する。例えば、本発明の第5の態様の実施例1に対する代替を続けると、第1の復号化方式及び第2の復号化方式は両方とも、[11,7,3]方式である。第1の復号化方式は、並べ替えられていないヘッダビットの符号化により生成された、記憶されているパリティビットを使用する。記憶されている最初の7データビットの復号化に失敗するが、記憶されている最後の7データビットの復号化に成功する場合、復号化に成功したデータビットが並べ替えられ、符号化されて、対応するパリティビットを再生成する。これら再生成されたパリティビットは、記憶されている最後の4パリティビットと排他的論理和演算されて、並べ替えられた最初の7ヘッダビットのパリティビットを再生成し、これが、並べ替えられ、記憶されている最初の7データビットの[11,7,3]復号化を実行することにより、記憶されている最初の7データビットの2回目の復号化試行において使用される。
好ましくは、すべての第1の復号化方式は同一である。例えば、以下の実施例1では、すべての第1の復号化方式は同じ[11,7,3]復号化方式である。
好ましくは、すべての第2の復号化方式は同一である。例えば、以下の実施例1では、すべての第2の復号化方式は同じ[15,7,5]復号化方式である。
本発明の実施形態に関連して本発明をよりよく理解するために、添付図面を参照する。添付図面では、同様の参照が全体を通して対応する部分又は要素を示す。
本発明は、記憶されている情報の信頼性を確保するために、誤り訂正符号化方式を提供する方法及び装置を開示する。提案する方法は、長符号のデコーダ及びデコーダの回路複雑性を回避しながら、長符号の性能に近づく。したがって、ハードウェア実施及びソフトウェア実施のサイズ及び複雑性の低減が得られる。
本明細書では、用語「復号化データの変更」は、復号化データの第1の値から復号化データの第2の値への変更を指す。本発明の方法によれば、特定の短符号語表現の復号化データの変更は、他の短符号語表現に基づいて行われる。したがって、復号化が失敗した符号語表現に対するさらなる復号化の試行は、他の短符号語表現の復号化データに従って行われる。
本明細書では、用語「符号語の復号化データの値」は、任意の有効な数値を指す。この用語は、代替として、例えば、復号化の失敗により、目下、既知の値がないことの論理的な表示を指すこともある。したがって、復号化データの「変更」は、ある有効な数値から別の有効な数値への変更、復号化失敗の論理的な表示から有効な数値への変更、又は有効な数値から復号化失敗の論理的な表示への変更であってよい。
本明細書では、用語「部分集合」は、部分集合に対する完全な集合よりも小さい適切な部分集合及び完全な集合それ自体の両方を指す。
1つの短語の復号化データの、他の短語の復号化データに従っての変更は、本明細書によりオプションとして提供され、長符号語の各復号化実施例中に必ずしも行われる必要はないことを理解されたい。特定のエラーが発生する長語の特定の実施例では、すべての短語表現の最初の試行で復号化に成功することがあり得る。このような場合、復号化データの変更は適用されない。このような変更は、少なくとも1つの短語の復号化が失敗する場合のみ行われる。したがって、用語「変更を行う」は、「必要に応じて、オプションとして変更を行う」ことを意味する。
本発明の方法の好ましい実施形態を、実施例1及び実施例2に関連して本明細書において述べる。2つの実施例は、誤り訂正符号化方式を提供する装置を開示し、装置は、特にデータ記憶の用途によく適する。したがって、本発明の好ましい装置は、復号化プロセスのさらなるステップを適用するために、特定の語の遅延を増大させるために設けられるデコーダを備える。(希に)ピーク遅延により、この誤り訂正符号化方式は、固定の制限された遅延を有する同期又は準同期ストリームを適用する通信システムによっては適さない可能性がある。
本発明の方法により導入される平均遅延は、当該技術分野において既知の方法での平均遅延以下であることが強調されるべきである。しかし、遅延がかなり増大する希な場合、本発明の方法は、記憶媒体に特に適し、同期通信システムにはあまり適さない。
(実施例1)
非依存ビットを含むフラッシュ装置であって、各核セルに1ビットがあり、セル誤り率(CER)が4.7×10-5であるフラッシュ装置が提供される。フラッシュ装置は各セルに1ビットを有するため、ビット誤り率(BER)も4.7×10-5である。フラッシュ装置のフラッシュメモリは多くのブロックを含み、画定される各ブロックはいくつかのページを有する。各ページはヘッダ領域又は制御領域及びそれぞれ512データバイト長のいくつかのセクタを含む。14ビットを含む各ブロックのヘッダに信頼性のある記憶を提供するとともに、10-10未満のヘッダ誤り率(HER)性能(HER<10-10)を実現しながら、フラッシュ装置のフラッシュコントローラ内に誤り訂正符号化方式を設計する必要がある。
入力CERが4.7×10-5の14ビットセットにわたってHER<10-10という性能目標を提供するためには、3ビット誤り訂正能力が求められる。1つのエラー(すなわち、t=1)の訂正はHER≒3.8×10-7を提供し、2つのエラー(すなわち、t=2)の訂正はHER≒2.1×10-10を提供する。
したがって、符号レートRが0.4828(すなわち、14/29)に等しく、ヘッダが長さ29ビットの1つの符号語を使用して表される3誤り訂正[29,14]BCH符号が必要とされる。
BCH符号の符号化・復号化並びにこのような回路を構築する方法の文献が、長年にわたって十分に研究されている(参照文献[16]〜[47]参照)。本発明の方法を利用しながら、同じHER目標性能を実現する符号化・復号化の一例を提供する。後述する例は、3つではなく2つのみのエラーを訂正する構成要素符号を含む簡易化コントローラを利用する。さらに、構成要素符号が訂正できる誤りの数(3ではなく2)の直接の結果として、長さの短縮が必要ないが、主に方式全体の構造に関連があるため、符号長は、各ヘッダで29ビット符号ではなく26ビットのみである必要がある(すなわち、符号レートR=14/26=0.5385が実現される)。フラッシュヘッダサイズで実現される低減利得は11.54%である。この利点は、以下の非限定的な例で実現される。
[29,14]BCH符号に代えて、[15,7,5]ブロック符号が設計される(したがって、エンコーダ/デコーダハードウェアの複雑性が低減する)。表記[n,k,d]は、一般に、以下のように符号パラメータを定義する。すなわち、「n」は符号長を指し、「k」は情報ビット数を指し、「d」は符号の最小ハミング距離を指す。
このような符号の入念な選択により、(ビット12〜15を抽出することで)3に等しい最小ハミング距離になる[11,7,3]パンクチャ符号が得られる。したがって、このパンクチャ符号を使用して単一エラーを訂正することが可能である。この観察に基づいて、誤り訂正能力2ビットを有する15ビット符号が開示される。この15ビット符号は、最後の4ビットを除く場合、すなわち最初の11ビットのみを使用する場合、あらゆる単一エラーを修正するために提供される。
この[15,7,5]ブロック符号の生成行列270を図10に示す。符号化プロセス、すなわち7つの情報ビットから8つのパリティビットを導出することは、以下のようにGF(2)上で行列乗算演算を使用して適用される。
・G、[]=1×15、[]=1×7、[G]=7×15、 (1.1)
式中、GF(2)は2つの要素を有するガロア有限体の表記であり、“”は符号語を含む行ベクトルとして定義され、“”は7つの情報ビットを含む行ベクトルとして定義され、“G”は系統的符号化行列として定義される。
[15,7,5]線形系統的ブロック符号の復号化プロセスは、2ステップで行われる。ステップ1において、8ビットシンドロームが、図11に示すようなブロック符号[15,7,5]280のパリティ検査行列“H”を使用して計算される。シンドロームの計算は、以下のようにGF(2)上で行列乗算演算を使用して行われる。
=H・ T、[]=1×15、[]=8×1、[H]=8×15 (1.2)
式中、“”は符号語を含む行ベクトルであり“”は8ビットシンドロームを含む列ベクトルであり、“H”はパリティ検査行列であり、表記()Tは転置を意味し、したがって、 Tは列ベクトルである。
ステップ2において、8ビットシンドロームを使用して、表290(図12参照)にアクセスする。表290は、2つの4ビット数を提供し、各4ビット数は、15ビット符号語内の単一エラーの位置を明らかにする。
表290内の値“0”が「エラーなし」の場合を指すことに留意する。表290が特定のエントリ内に2つの数を含み、一方の値がゼロであり、他方の値が非ゼロである場合、これは、エラーが2つではなく1つ存在することを示す。さらに、シンドローム自体内のゼロは、エラーが全くないことを示す。シンドローム値は、シンドロームベクトルの一番上のビットがLSB(最下位ビット)であるのに対して、一番下のビットがMSB(最上位ビット)であると仮定して得られる。(シンドロームの可能な値256個のうちの)121個のみの値が表に提示されることに気付かれたい。デコーダは誤り検出機能も含むため、表290(図12参照)に提示されない場合、3つ以上のエラーがある。しかし、デコーダはそれらの位置を示すことができない。
この符号が生成される方法が特殊なことにより、単一ビット訂正用の部分行列“H(1)”が提供される。単一ビットの訂正は、同じ符号語の最初の11ビットに適用される。部分行列“H(1)”は、“H”行列の最初の4行及び最初の11列を含む。15ビット語の最初の11ビットの復号化プロセスは、以下のように2つの類似ステップにおいて適用される。
第1のステップにおいて、上述したように、シンドロームの計算が以下のようにGF(2)上での行列乗算演算により得られる。
=H(1) T、[]=1×11、[]=4×1、[H]=4×11 (1.3)
式中、“”は読み取り語(read word:リードワード)を含む行ベクトルであり、“”は4ビットシンドロームを含む列ベクトルであり、H(1)は、行列“H”の上記最初の4行及び上記最初の11列を含む“H”の部分行列である。ブロック符号[11,7,3]300の行列H(1)を図13に示す。
復号化プロセスの第2のステップにおいて、エラーの位置が4ビットシンドローム310から抽出される(図14参照)。値“0”を有するシンドロームビットは「エラーなし」の場合を定義する。
15ビット符号語の最初の11ビットの復号化が成功すると、15ビット符号語の最後の4ビットがデコーダに提供されない場合であっても、(1.1)の行列“G”を使用して、これら最後の4ビットを再生成することができる。最初の11ビットはすでに復号化されているため、エンコーダのサイズは、最後の4ビットを、11復号化ビットのうちの最初の7ビットから直接再生成するように低減される。これは、最後の4ビットの再生成に、行列“G”の最後の4列しか必要ないことを意味する。
上記生成された符号語を使用して、シングル[29,14]BCH符号がC1、C2として示される2つの互いに素の語の集合で置き換えられる。C1及びC2は2つの系統的符号語であり、それぞれの長さは15である。互いに素な語C1は7つの情報ビット及び8つのパリティビットを含むのに対して、互いに素な語C2は残りの7つの情報ビット及びそれぞれに関連する8つのパリティビットを含む。したがって、合計でヘッダの同じ14個の情報ビットが得られる。符号化プロセスは、(1.1)に示すように上記式に従って行われる。
2つの互いに素な各語C1、C2の最後の4つのパリティビットは部分集合P1、P2として定義される。データ全体の関数として上記参照されるものは、単に、これら部分集合の排他的論理和すなわち(XOR)演算である(すなわち、P=P1 2)(図8参照)。7つの各情報ビットを符号化した後、2つの部分集合P1及びP2がC1及びC2から抽出される。次に、残りのビットがフラッシュ装置に書き込まれる(すなわち、C1の最初の11ビット及びC2の最初の11ビットのみ)。“P”で示されるデータ全体の統一関数は、データの互いに素な部分群を統一するため、統一データを定義する。この統一集合Pもフラッシュ装置に書き込まれる。
したがって、この実施例は26(11+11+4)ビットを共に組み込む。フラッシュ装置に書き込まれるビットは、符号語が物理的な記憶装置に送られる前に符号語から抽出されるため、ビットP1、P2を含まないことがさらに強調される。以下において、復号化プロセス中に再生成される抽出ビットを「隠れビット」と定義する。上述したように、最初の11ビットの復号化が成功した場合、符号化プロセスを介して残りの4ビットを再生成することができる。“フラッシュ装置からのヘッダの読み取り(復号化)”の項において後述する復号化プロセスは、この性質を利用する。
公正な比較状況が手元にあり、このような符号化及び復号化プロセスの実施が実現可能なことを当業者は理解することができる。この革新的な誤り訂正符号化方式の帰結として、書き込み(符号化)動作及び読み取り(復号化)動作は以下のようになる。
(1.ヘッダをフラッシュ装置に書き込む(符号化))
・ヘッダの7つの情報ビットの第1の集合を使用し、式(1.1)に関連して詳細に上述したプロセスを用いて、C1として定義される第1の[15,7]ブロック符号を符号化する。この15ビット符号語Cのビット12〜15をP1と示す。
・ヘッダの7つの情報ビットの第2の集合を使用し、式(1.1)に関連して詳細に上述したプロセスを用いて、C2として定義される第2の[15,7]ブロック符号を符号化する。この15ビット符号語C2のビット12〜15をP2と示す。
・それぞれビット単位で集合P1と集合P2との排他的論理和をとり、パリティ−2ビット又はビット“P”として定義される4ビットを得る。
・C1のビット1〜11及びC2のビット1〜11をフラッシュ装置に書き込む。C1のビット1〜11をC1 shortと示し、C2のビット1〜11をC2 shortと示す。
・4ビット“P”をフラッシュ装置に書き込む。
(2.ヘッダをフラッシュ装置から読み取る(復号化))
・2つの11ビット語を読み取る。その結果は、C1~short及びC2~shortと示される2つの語である。フラッシュにエラーがない場合、C1~short=C1 short且つC2~short=C2 shortである。エラーの場合、C1~short又はC2~shortは、フラッシュに元々書き込まれた符号語C1 short及びC2 shortに関してエラーを含む。エラーの場合、C1~short又はC2~shortがそれぞれ語(必ずしも符号語である必要はない)として示されることに留意する。
・式(1.3)、すなわち単一エラー訂正デコーダに関連して詳細に上述したプロセスに従って語C1~short及びC2~shortを復号化する。
両語の復号化に成功する場合(C1~shortが0個又は1個のエラーを有し、且つC2~shortが0個又は1個のエラーを有するため)、ヘッダが、11ビット復号化語C1 shortの最初の7ビット及び11ビット復号化語C2 shortの最初の7ビットとして首尾よく読み取られる。非系統的符号の場合、ヘッダを首尾よく読み取るには、さらなる情報(例えば、表又は他の変換)が必要とされる。
両語の復号化に失敗する場合(C1~shortが2個以上のエラーを有し、且つC2~shortが2個以上のエラーを有するため)、ヘッダは首尾よく読み取られない。
一方の語の復号化に失敗し、他方の語の復号化に成功する場合(一方の語が0個又は1個のエラーを有し、且つ他方の語が2個以上のエラーを有するため)、復号化プロセスはステップ3に進む。
(3.厳密に1個の部分符号が失敗する場合においてヘッダを読み取る)
・フラッシュ装置からビットP~を読み取る。これらのビットは、P~と“P”との間に相違がある可能性もあるため、PではなくP~と定義される。P~ビットも同様にフラッシュ装置から読み取られ、フラッシュ装置がエラーを導入するものと仮定される。
・C1~shortの復号化に失敗し、C2~shortの復号化に成功する場合、P1~が、以下のようにC2 short及びP~から再生成される。
式(1.1)に関連して詳細に上述したように、符号化プロセスを適用することによりC2 shortからC2の隠れP2ビットを再生成する。
ビットP~と再生成された隠れビットP2との排他的論理和をとり、P1~を生成する。
1~内のビットC1~shortをビット位置1〜11に配置し、C1~内のビットP1~をビット位置12〜15に配置することにより、C1~short及びP1~からC1~を生成する。
・式(1.2)に関連して詳細に上述した復号化プロセスを適用することにより、全15ビットを2つの誤り訂正[15,7]ブロック符号として使用してC1~を復号化する。
・復号化が成功した場合、ヘッダが首尾よく読み取られる。復号化が成功しなかった場合、ヘッダの読み取りは失敗する。
・C2~shortの復号化に失敗し、C1~shortの復号化に成功する場合、以下のようにP2~をC1 short及びP~から再生成する。
式(1.1)に関連して詳細に上述したように、符号化プロセスを適用することによりC1 shortからC1の隠れP1ビットを再生成する。
ビットP~と再生成された隠れビットP1との排他的論理和をとり、P2~を生成する。
2~内のビットC2~shortをビット位置1〜11に配置し、C2~内のビットP2~をビット位置12〜15に配置することにより、C2~short及びP2~からC2~を生成する。
・式(1.2)に関連して詳細に上述した復号化プロセスを適用することにより、全15ビットを2つの誤り訂正[15,7]ブロック符号として使用してC2~を復号化する。
・復号化が成功した場合、ヘッダが首尾よく読み取られる。復号化が成功しなかった場合、ヘッダの読み取りは失敗する。
(実施例1の数学的解析)
以下の項に、サイズ及び回路複雑性の低減において実現される利得を評価するために、本発明の方法において実行される数学的解析を詳細に説明する。2個のエラーを訂正可能なデコーダの実施は、3個のエラーを訂正可能なデコーダの実施よりも簡易であるため、コントローラ複雑性に関連して実現される利得は明らかである。
参照方式を計算するために、pをフラッシュ装置の入力BERを表すものとして定義する(すなわち、本例ではp=4.7×10-5)。[n=15、k=7、d=5、t=2]であるデコーダのHER性能は、以下のように2項分布に従って与えられる。
Figure 0005216593
式中、“t”は以下のように誤り訂正能力(すなわち、訂正可能な誤りビットの最大数)を指し、すなわち、
Figure 0005216593
である。(1.4)によれば、HERは10-10よりも高く、2個のエラーを訂正するには不十分であるため、参照方式は3つの誤り訂正BCH符号を使用せざるをえない。これより、本発明の方式を利用するHER性能の計算に目を向けると、[n=11,k=7,d=3,t=1]である本発明の部分符号誤り率(SCER)は、したがって、
Figure 0005216593
により与えられる。
HER性能への第1の寄与因子(contributor)は、ヘッダ内の2つの部分符号の復号化に失敗する場合である。この確率は以下のように計算される。
HER2,1=(SCERn=11,t=12=1.47・10-14 (1.6)
HER性能への第2の寄与因子は、第1の段階において1つの語の復号化に失敗し、第2の段階において3つ以上のエラーの復号化に失敗する(15ビットを使用して最大で2個のエラーを復号化しようとする場合)場合である。この確率は以下のように計算される。
Figure 0005216593
これら2つの確率を結合すると、
Figure 0005216593
がもたらされる。
HER性能HER2,2への第2の寄与因子は、以下のように計算される。
第1の部分符号の復号化に失敗し、第2の部分符号の復号化に成功する2つの確率があるため、左側の2つの因子SCERt=1,n=11(1−SCERt=1,n=11)は2で乗算されるべきである。第1の確率は、単一誤り訂正ブロック符号に従って、第1の部分符号の復号化に失敗するが、第2の部分符号の復号化が成功する場合に得られる。第2の確率は、単一誤り訂正ブロック符号に従って、第1の部分符号の復号化に成功するが、第2の部分符号の復号化が失敗する場合に得られる。
一番右側にある因子(SCERt=2,n=15)/(SCERt=1、n=11)は2つの値の除算の結果である。この結果は、11ビットの部分集合内に“2つ”以上のエラーがある場合、15ビットの集合内に3つ以上のエラーがある確率に相当する。11ビットの部分集合内に2つ以上のエラーがあるイベントをイベント“x”と定義し、15ビットの集合内に3つ以上のエラーがあるイベントをイベント“y”と定義する。したがって、イベントP(y|x)がベイズの法則に従って以下のように得られる。
Figure 0005216593
イベントP(y,x)は、15ビットの集合内に3つ以上のエラーが存在し、且つ11ビットの部分集合内に2つ以上のエラーが存在することを指す。15ビットの集合内に3つ以上のエラーがあるケースはすべて、これら15ビットの部分集合が2つ以上のエラーを含むイベントを含むことは明らかである。したがって、P(y,x)=P(y)であり、式(1.7)の一番右側の要素はP(y)/P(x)である。
(実施例2)
実施例1において上に開示したものと同じフラッシュ装置、すなわち、各セルに1ビットがあり、セル誤り率(CER)が4.7×10-5であるフラッシュ装置が提供される。デコーダが実施されて、(各8ビットの)512バイトを含むセクタデータ領域の信頼性のある記憶を提供するように、デコーダを備えるフラッシュ装置を設計するように求められる。データ自体は各セクタのヘッダよりも重要性が低いため、データの目標性能、すなわちSER(セクタ誤り率)は5×10-8未満である。フラッシュ装置の設計は、単純なECC(誤り訂正符号)ハードウェア(すなわち、ヘッダにすでに設計されている15ビットブロック符号)に制限される。
t=1エラーの訂正では、SER≒1.36×10-4が得られる。t=2エラーの訂正は、SER≒2.8×10-8が得られる。符号レートRは、情報ビット数kを符号長nで割った数により定義される。換言すれば、合計で
Figure 0005216593
個の符号語を使用して、長さ4096ビットのセクタを表すことにより、合計符号レートR=512×8/(586×15)=0.466が提供される。したがって、符号レートR=7/15=0.466を有する2つの誤り訂正[15,7,5]ブロック符号で十分である。
それぞれ長さが15の586個の符号語設計を使用せずに、7個の情報ビット及び4個のパリティビットの586個のパンクチャ符号語を含む新しい設計が、本明細書において上述した制約と同じ制約と保持しながら提供される。全部分符号からの4個のパリティビットの第2の集合の排他的論理和がとられ、4ビットの結果がフラッシュ装置に記憶される。このようにして、本発明の方法は、同じハードウェア設計を使用し、より高い符号レートR=4096/(586×11+4)=0.635ビット/セルを提供して、目標性能SER<5×10-8を満たせるようにする。利得は、フラッシュ装置のサイズが26.6%と大幅に低減することである。セクタの読み取り動作及び書き込み動作は以下のように行われる。
(1.セクタをフラッシュ装置に書き込む(符号化))
・セクタの4096ビットを使用して[15,7,5]ブロック符号の586個の符号語を符号化する。
・586個すべての符号語のビット12〜15の排他的論理和をとり、パリティ−2ビットと定義される4ビットを得る。
・フラッシュ装置に586個すべての符号語のビット1〜11を書き込む。
・4個のパリティ−2ビットをフラッシュ装置に書き込む。
(2.セクタをフラッシュ装置から読み取る(復号化))
・長さ11の586個の符号語をフラッシュ装置から読み取る。
・[11,7,3]ブロック符号デコーダに単一誤り訂正デコーダを使用して586語を復号化する。
・すべての符号語が復号化に成功する場合、セクタは首尾よく復号化される。
・2個以上の語が復号化に失敗する場合、セクタの復号化に不具合がある。
・単一の語が復号化に失敗し、その他の585語が復号化に成功した場合、以下のステップを実行する。
式(1.1)に関連して詳細に上述した符号化を適用することにより、復号化に成功した585個すべての語の隠れパリティビット12〜15を再生成する。
パリティ−2ビットをフラッシュ装置から読み取る。
パリティ−2ビットと復号化に成功した585個すべての符号語の隠れパリティビット12〜15との排他的論理和をとり、復号化に失敗した586番目の語のビット12〜15を推定する。
式(1.2)に関連して詳細に上述した二重誤り訂正[15,7,5]ブロック符号デコーダプロセスを使用して、ここでは15ビットすべてを使用して、失敗した語を再び復号化する。復号化に成功した場合、セクタは首尾よく読み取られる。復号化に成功しない場合、セクタの復号化に不具合があった。
実施例2を使用する本発明の方法は以下の利点を実現する。
・フラッシュ装置サイズの低減(セル数で26%の低減)又はより高い符号レート(0.466ではなく0.635)の提供。
・同じSER性能要件が保持される。
・同じハードウェア複雑性−[15,7,5]ブロック符号エンコーダ/デコーダを使用する
・ヘッダ及びデータの符号化手順並びに復号化手順に統一されたハードウェア
(実施例2の数学的解析)
SER解析は、参照方式と本発明の方式との比較を提供し、これを図9に示す。これらの値を実現するために使用される式は以下の項において与える。
1.参照方式(曲線262)
pをフラッシュ装置のCER性能を表すものとする(すなわち、本例ではp=4.7×10-5)。[n=15、k=7、t=2]ブロック符号デコーダのフレーム誤り率(FER)は、
Figure 0005216593
により与えられる。
参照方式([n=15、k=7、t=2]ブロック符号の586個の符号語)のSER性能は、
Figure 0005216593
により与えられる。
2.本発明の方式(曲線264)
[n=11,k=7,t=1]ブロック符号デコーダのフレーム誤り率は、
Figure 0005216593
により与えられる。
フラッシュ装置のSER性能への第1の寄与因子は、セクタ内の失敗した2個以上の語の実施例を指す。この確率は、
Figure 0005216593
により定義される。
フラッシュ装置のSER性能への第2の寄与因子は、第1の段階において単一の語が失敗し、第2の段階において3つ以上のエラーがある実施例を指す(最大で2個のエラーを復号化可能なデコーダを使用して15ビットを復号化する場合)。この確率は、
Figure 0005216593
により定義される。
これら2つの寄与因子を結合すると、
SER2=SER2,1+SER2,2=3.3・10-8 (2.6)
という確率が提供される。
これより図1を参照して、本発明の装置のエンコーダ及びデコーダを含むブロック図を示す。本発明の装置1は、アプリケーションから情報を受け取り、その情報を装置1内に記憶するホストインタフェースモジュール10を含む。
ホストインタフェース10は、情報を多段階エンコーダ20に転送する。多段階エンコーダ20は、上述した「ヘッダをフラッシュ装置に書き込む」プロセスを実行し、図2及び図3においてさらに詳細に提示される。多段階エンコーダ20は、情報ビットK個のブロックをNビットの符号語に変換する。但し、N>Kである。実施例1に関しては、K=14であり、N=26である。
次に、このNビットブロックはデジタル処理ユニット30に転送される。デジタル処理ユニット30は、実施例2において述べたように、データセクタをブロックに追加するために設けられ、ブロックをセルに書き込む前に他のデジタル手順を実行する。このようなデジタル手順は、任意に、インタリーブ手順及びグレーマッピング手順を含む。デジタル処理ユニット30は、当該技術分野において既知の任意の処理ユニットであってよい。
次に、処理されたNビットブロックは、物理的な情報ビットを記憶するために設けられる記憶装置40に転送される。
ブロックが記憶装置40から読み取られると、そのブロックはデジタル逆処理ユニット50に転送されて、Nビットブロックから、多段階エンコーダ20の出力に提示されたものと同じものに変換される。
次に、Nビットブロックは、デジタル逆処理ユニット50から多段階デコーダ100に転送される。多段階デコーダ100は、「ヘッダをフラッシュ装置から読み取る」項において上述し、図4〜図6においてさらに詳細に述べられるように、26ビットのヘッダ符号語からヘッダの14個の情報ビットを復元するために設けられる。
次に、ヘッダの復元された情報ビットが再びホストインタフェース10に転送される。
これより図2を参照して、図1の多段階エンコーダ20を構成する構成要素のブロック図を示す。14個の情報ビットはホストインタフェース10から転送され、ランダムアクセスメモリ(RAM)21の上部(非ジョイント(disjoint:互いに素)セクション)に記憶される。RAM21の非ジョイントセクションは、22ビットの記憶領域を提供する。
部分符号エンコーダ22をアクティブ化して、[15,7,5]ブロック符号エンコーダを使用して14個の情報ビットからの最初の7個の情報ビットを15ビットに符号化するために、状態機械制御ロジックブロック24が設けられる。
これら15ビットのビット12〜15は、ジョイント(joint)パリティプロセッサ23に転送され、部分符号エンコーダ22からの新しい4個のパリティビット(ビット8〜11)は、RAM21の上部(非ジョイントセクションと呼ばれる)に再び送られる。ジョイントパリティプロセッサ23は、数学的圧縮式(例えば、XOR)をすべての部分符号の第2タイプのパリティビットに対して適用するために設けられる。
RAM21から、情報ビット7個の第2の集合が部分符号エンコーダ22に転送され、符号化されて[15,7,5]ブロック符号語になる。ブロック符号語の15ビットからの情報ビット12〜15は、ジョイントパリティプロセッサ23に転送され、追加の4個のパリティビット(ビット8〜11)は、部分符号エンコーダ22から再びRAM21の上部に転送され、これにより、7ビットの第2の集合の、11情報ビット[11,7,3]符号への符号化が完了する。
ジョイントパリティプロセッサ23において、これら4個の情報ビット12〜15は、ユニット23に既に記憶されている4ビットとビット単位で排他的論理和がとられる。その結果は、RAM21の下部(ジョイントセクションと呼ばれる)に記憶される。
これより図3を参照して、図2の状態機械制御ロジックブロック24において実行される符号化プロセス31のフローチャートを示す。第1のステップ32において、部分符号番号“N”が初期化されて0になる。
次のステップ33において、変数“N”の値が2の値、すなわち、実施例1に関連して2つの部分符号に達したか否かが調べられる。符号化プロセスのこの段階では“N”=0であるため、状態機械制御ロジックブロック24が部分符号1を符号化していることを示すために、“N”の値は1だけインクリメントされる(ステップ34)。
次のステップ35において、部分符号エンコーダ22(図2参照)がアクティブ化されて、部分符号1が符号化される。DJP1として定義されるビット1〜11が、RAM21の上部に記憶される。
ステップ36において、JP1として定義されるビット12〜15がジョイントパリティプロセッサ(JPP)ユニット23(図2参照)に記憶される。
ステップ37において、これら4個のビット12〜15が更新される(すなわち、初期の4つの0と排他的論理和がとられる)。次に、符号化プロセスはステップ33に戻る。
次のステップ33において、変数“N”の値が再び調べられて、ループのこのサイクルにおいて2の値に達したか否かが判断される。この段階においてN=1であるため、符号化プロセスはステップ34に進み、ループの第2のサイクルを実行する。
ステップ34において、変数“N”の値が1だけインクリメントされ、N=2に等しくなる。
ステップ35において、7ビットの第2の群が符号化されて15ビット符号語になる。最初の11ビットの最後の4ビットは、DJP2として定義され、RAM21の上部に記憶される。15ビットの最後の4ビットはJP2として定義される。
ステップ36において、JP2ビットがJPPユニット23(図2参照)に転送される。
次のステップ37において、JP1ビットとJP2ビットとの排他的論理和がビット単位でとられて、JPPユニット23の4個の出力JPPビットが生成される。
このステップに続き、符号化プロセスはステップ33に戻る。ステップ33に到達したとき、変数“N”の値は2に等しい。したがって、肯定(“N”=2)の場合、符号化プロセスはステップ38に進む。
ステップ38において、結果として生成されたJPビットがRAM21の下部に書き込まれる。
最後のステップ39において、符号化プロセスは終了する。
これより図4を参照して、図1の多段階デコーダ100を構成する構成要素のブロック図を示す。多段階デコーダ100の実施態様は、ジョイント情報(JIR)110を記憶するRAMユニットと非ジョイント情報(DJIR)200を記憶するRAMユニットとを区別するために提供される。これら2つのタイプの情報の区別は、先の数学的解析においてJIRユニットを使用する確率を検討した場合、この確率がかなり小さいことが分かったことによる。したがって、回路複雑性を低減するために、これら2つのRAMユニットを区別することが賢明である。
DJIR200は、22ビットの第1及び第2の非ジョイント情報語を記憶するために提供される。これら語は二重モードデコーダユニット130に転送され、このデコーダ130は、制御ユニット190を介してこれら22ビットを読み取る。二重モードエンコーダユニット130は、上述した実施例1に関しては、単一誤り訂正モードでアクティブ化される。
第1の語の復号化に成功する場合、DJIRユニット200は、必要であれば、制御ユニット190を介して訂正済みビットで更新される。次に、復号化プロセスは、第2の11ビット語に対して繰り返される。
第1及び第2の語両方の復号化に成功する場合、JIRユニット110はアクティブ化されないままである。両語の復号化に失敗する場合、全復号化プロセスが失敗する。
両部分語ではなく、いずれか一方の部分語(第1の部分語又は第2の部分語)において復号化が失敗する場合、この失敗した部分語を復号化しようという2度目の試みが、復号化に成功した部分符号を使用して行われる。
例えば、第1の部分符号の復号化に成功し、第2の部分語の復号化に失敗した場合、復号化に成功した第1の部分符号を使用して第2の部分語を復号化しようという2度目の試みが行われる。JIRユニット110からの4ビットが、制御ユニット190を介して読み取られ、中間RAM(IR)ユニット170に記憶される。第1の部分符号は、制御ユニット190を介して多段階エンコーダ20(図2参照)に再び読み込まれる。多段階エンコーダ20は、4個のJP1ビットを再生成し、それからJP1ビットをIRユニット170に転送する。ジョイント情報プロセッサ(JIP)ユニット180が、JPとJPとの排他的論理和をビット単位でとるために設けられる。その結果は、二重モードデコーダユニット130の[15,7,5]ブロック符号の位置12〜15に記憶される。第2の部分符号は、DJIRから二重モードデコーダユニット130の[15,7,5]ブロック符号の位置1〜11に再び読み込まれて、15ビット語を生成する。このような場合、二重モードデコーダユニット130は二重ビット誤り訂正モードでアクティブ化される。二重モードエンコーダユニット130が二重誤り訂正モードでの復号化に失敗する場合、全復号化プロセスが失敗する。しかし、二重モードデコーダユニット130が二重誤り訂正モードでの復号化に成功する場合、DJIRユニット200は訂正されたビットで更新され、読み取りプロセスは成功を宣言する。
別法として、第2の部分語が復号化に成功し(復号化に成功した部分符号として定義される)、第1の部分語の復号化に失敗した場合でも、上記例において上述したような第1の部分符号と第2の部分語との動作機能が交換されて、同様の復号化プロセスが実行される。
本発明を、長符号語を復号化する単一デコーダを提供するものとして本明細書において説明した。しかし、本発明は単一デコーダのみに制限されず、長符号語よりも少数のビットを有する符号語をそれぞれ復号化する複数のデコーダを提供するためにも等しく適用可能である。
図5を参照して、図4の二重モードデコーダユニット130のブロック図を示す。状態機械ユニット138が、二重モードデコーダユニット130により実行される復号化プロセスを制御するために設けられる。
DJIRユニット200、JIRユニット110、及びJIPユニット180(図4参照)から転送される情報ビットは、共にデータ収集ユニット132に収集される。この収集は、状態機械ユニット138により制御される。
データ収集ユニット132から受け取られた情報ビットは、デコーダコアユニット134において復号化される。復号化プロセスに要求される計算のために、パリティ検査行列ユニット136が、単一誤り訂正モード又は二重誤り訂正モードに従って利用される。パリティ検査行列136は、各ラインに、受け取った語に対するパリティ検査を含む。行列内のこのような各ラインは、検査されている位置に値“1”を含む。検査手順は、パリティ検査ラインが値“1”を含む位置にある語の要素の排他的論理和をとる演算である。検査手順は、XOR演算の結果が0を返す場合に成功する。すべての検査手順が0を返す場合、受け取られた語は符号語として判断される。受け取った語に対してパリティ検査行列136を適用した結果は、受け取られた語のシンドロームである。非ゼロ値を含む受け取られた語のシンドロームは、受け取られた語が符号語ではないことを示す。パリティ検査行列136を受け取った語に対して適用することは、式(1.2)又は式(1.3)に関連して詳細に上述した手順に従って実行される。
実施例1に関連して、パリティ検査行列ユニット136(図5参照)において実施される行列は、単一誤り訂正モード及び二重誤り訂正モードの両方に提供され、単一誤り訂正モードで使用される行列は、実際には、二重誤り訂正モードで使用される行列の部分集合である。
図6を参照して、実施例1に関連する復号化プロセスのフローチャート140を示す。初期ステップ141において、第1の語がDJIR200(図4参照)から読み取られる。次に、二重モードデコーダ130が、単一誤り訂正モードでアクティブ化される。
次のステップ142において、状態機械ユニット138(図5参照)が、第1の語の復号化が成功したか否かを調べる。
肯定の場合、復号化プロセスはステップ150に進む。ステップ150において、訂正があった場合、第1の語は訂正で更新される。このステップにおいて、二重モードデコーダ130(図4参照)は、DJIR200(図4参照)から読み取られた第2の語を復号化するために、単一誤り訂正モードでアクティブ化される。次のステップ152において、状態機械ユニット138(図5参照)が、第2の語の復号化に成功したか否かを調べる。否定の(すなわち、第1の語の単一誤り訂正モードでの復号化に成功し、第2の語の単一誤り訂正モードでの復号化に失敗した)場合、復号化プロセスはステップ153に続く。しかし、肯定の場合、復号化プロセスはステップ156に進む。ステップ156において、訂正があった場合、第2の語は訂正で更新され、復号化プロセスは成功して終了する(ステップ149)。
最初が否定の場合(すなわち、第1の語の復号化に失敗する場合)、復号化プロセスはステップ143に続く。ステップ143において、第2の語がDJIR200(図4参照)から読み取られ、単一誤り訂正モードで復号化される。
次のステップ144において、状態機械ユニット138(図5参照)が、第2の語の復号化が成功したか否かを調べる。否定の場合、全復号化プロセスが失敗し、ステップ145において終了する。しかし、肯定の(すなわち、第2の語の復号化に成功した)場合、復号化プロセスはステップ146に続く。
ステップ153において、首尾よく復号化された第1の語及び4個の外部ジョイントビットから得られる情報を使用して第2の語を復号化しようという、追加の復号化試行が行われる。このステップにおいて、第2の語のうちの11ビットがDJIRユニット200(図4参照)から再び読み取られる。第2の語の最後の4ビットは、JIR110(図4参照)から得られる4個のジョイントビットと排他的論和がとられた第1の語の4個の隠れビットから再生成される。第1の語の隠れビットは、第1の語から首尾よく復号化された11ビットに対してエンコーダを適用することにより得られる。二重モードデコーダ130(図4参照)がアクティブ化されて、第2の語を二重誤り訂正モードで復号化する。次のステップ154において、状態機械ユニット138(図5参照)が、第2の語の追加の復号化が成功したか否かを調べる。
否定の場合、全復号化プロセスが失敗し、ステップ155において終了する。
しかし、肯定の場合、復号化プロセスはステップ156に進む。ステップ156において、第2の語は、第2の語の2回目の復号化試行において見つけられた訂正で更新され、DJIR200(図4参照)に記憶される。次に、復号化プロセスは最後のステップ149に進む。最後のステップ149において、復号化プロセスの成功が宣言され、復号化は終了する。
ステップ146において、失敗した第1の語を復号化しようという2回目の試行が、ステップ153において第1の語に対して実行された復号化プロセスと同様にして行われる(第1の語と第2の語との動作的機能が交換されるように)。
次のステップ147において、状態機械ユニット138(図5参照)が、第1の語の追加の復号化が成功したか否かを調べる。
否定の場合、全復号化プロセスが失敗し、ステップ155において終了する。
しかし、肯定の場合、復号化プロセスはステップ148に続く。ステップ148において、第1の語は、第1の語の2回目の復号化試行において見つけられた訂正で更新されて、DJIRユニット200に記憶される。最後のステップ149において、復号化プロセスの成功が宣言され、復号化は終了する。
図7を参照して、実施例2に関連する復号化プロセスのフローチャートを示す。図7において詳述される復号化プロセスは、ソフトデコーダ(soft decoder)の実施にさらに適する。ソフトデコーダを利用する場合に排他的に実施されるユニットは破線で記され、実施例2に関連して使用されない。
初期ステップ211において、復号化プロセスにおいて使用されるいくつかの変数に対して初期化が実行される。これら変数は、復号化に成功した部分符号数(k)、互いに素な部分語の数(nc)、処理する現在の語数(j)、フェーズカウンタ(p)、最大フェーズ値(np)、単一誤り訂正モード(又はより一般的な場合では第1のデコーダ)で失敗した語数(f)、単一誤り訂正モード(又はより一般的な場合では第1のデコーダ)での復号化失敗最大数(mf)を含む。
ベクトル“”が、復号化に成功した各部分符号につき値“1”をベクトル“”の対応する要素位置に記憶するために提供される。復号化プロセスの開示時には、いずれの部分符号についても正確性に関する知識が存在しないため、ベクトル“”のすべての要素は“0”に初期化される。実施例2に関しては、部分語数ncは586に初期化されるため、ベクトル“”内の要素数は586である。
変数“j”は初期化されて0になる。変数“j”は、現在、復号化を終えた部分符号の数である。変数“p”は、復号化プロセスにおいて現在実行されているフェーズ回数を定義し、初期化されて“0”になる。
変数“np”は最大フェーズ数を定義する。実施例2に関連して、2つのみのフェーズ、すなわち単一誤り訂正モードを定義するフェーズ0及び二重誤り訂正モードを定義するフェーズ1のアクティブ化が可能である。なお、ソフトデコーダの実施の場合、単一の部分符号が3回以上復号化されるように、3つ以上のフェーズが実行される場合もある。
変数“f”は、フェーズ0において復号化に失敗した部分語数を定義する。実施例2に関しては、復号化プロセスは、フェーズ0において2つ以上の故障がある場合、部分語の隠れビットを再生成することができない。しかし、ソフトデコーダ実施の場合、変数“f”は、具体的な設計考慮事項に従って最高で“nc”までの任意の値にセットすることができる。
変数“k”は、復号化に成功した部分符号の数を定義し、フェーズ0がすべての部分語で試行され、“f”の値がセットされると、k=586−fにセットされる。変数“f”が更新される度に変数“k”を新たに計算することを回避するために、変数“k”は変数“f”から独立して定義される。復号化プロセスは、変数“k”が値586(又は一般的な場合では“nc”)に達すると終了する。
次のステップ212において、ジョイントパリティビット(JPビット)が、JIRユニット110(図4参照)から中間RAM170(図4)に転送される。続けて、復号化に成功した各部分符号について、JPが、復号化に成功した部分符号の再生成された隠れビットで更新される。
ステップ213において、“j”が値586(nc)と比較される。復号化のこの時点では、“j”の値は586未満(“j=0”)であるため、復号化プロセスはステップ214に続く。
ステップ214において、DJIRユニット200(図4参照)から転送された非ジョイント語0(すなわち、ループの次の適用での語j)が、二重モードデコーダ130(図4参照)においてモード−1で復号化される(すなわち、単一誤り訂正モードが実施例2に関連してアクティブ化される)。
次のステップ215において、状態機械ユニット138(図5参照)が、この部分語の復号化が成功したか否かを調べる。否定の場合、復号化プロセスはステップ216に続く。肯定の場合、復号化プロセスはステップ219に続く。
ステップ219において、語0の隠れビットJPが、語0(すなわち、ループの次の適用における語j)の復号化に成功した11ビットにエンコーダを適用し、その結果として生成される4個のパリティビットと中間RAM170(図5参照)に既に記憶されているJPビットとの排他的論理和をとることにより再構築される。要素v[0]の対応する値は、語0が復号化に成功したことを示すために“1”にセットされ、“k”は1だけインクリメントされる。これら変数の設定動作に続き、語0(すなわち、ループの次の適用における語j)が、訂正結果に従ってDJIRユニット200(図4参照)において更新される。
ステップ221において、“j”が“1”だけインクリメントされ、それにより、次の部分語の復号化が可能になる。次に、復号化プロセスはステップ213に戻る。
ステップ213において、変数“j”の値が586未満であるか否かが判断される。
否定の場合、復号化プロセスはステップ222に続く。肯定の場合、復号化プロセスは、変数“j”の値をインクリメントして、ステップ214、215、及び必要であればステップ216を再適用する。
ステップ216において、変数“f”の値が調べられる。それまでに失敗した部分語の数“f”が値“1”(実施例2に関連して)を超える場合、復号化プロセスは失敗を宣言し、ステップ217において終了する。値“1”を超えない場合、復号化プロセスはステップ220(又は、ソフトデコーダが実施される場合はステップ218)に進む。なお、ソフトデコーダの場合、変数“f”の値は、ページセクタ全体の復号化の失敗が宣言される前に“1”の値を超え得る。
ステップ218において、語“j”の隠れビットに対して実行された推定が中間RAM170に記憶される。ソフトデコーダの実施を考えると、ソフトデコーダが復号化に失敗した場合であっても、隠れビットについての新たな知識を、たとえ部分的にであっても提供することが可能である。しかし、このような推定の提供は、実施例2に関しては可能ではない。したがって、実施例2では、ステップ218は迂回される。
ステップ220において、それまでに失敗した部分語の総数が増大したことを示すために、変数“f”の値が1だけインクリメントされる。次に、復号化プロセスはステップ221に進み、デコーダが次の部分符号の復号化に進むことを示すために、変数“j”の値も1だけインクリメントされる。
ステップ222において、変数“k”の値が値586と比較される。“k”=586の場合、すべての部分語の復号化が成功し、復号化プロセスはステップ223において成功して終了する。実施例2に関して、“k”=586ではない場合、復号化に成功しなかった部分語数は1のみであり得、復号化プロセスはステップ224に進む。
ステップ224において、フェーズ回数“p”が1だけインクリメントされる。
ステップ225において、変数“p”の値が2未満(又は、一般的な場合では“np”未満)であるか否かが調べられる。否定の(すなわち、“p”が2以上である)場合、復号化プロセス全体が失敗であると宣言され、ステップ226において終了する。しかし、ステップ227において肯定の場合、失敗した部分語を再復号化するために、変数“j”の値は“0”にリセットされる。ステップ227の後、復号化プロセスはステップ228に続く。
ステップ228において、ベクトル“”の位置“j”(要素v[j])の値が“0”に等しいか否かが調べられる。肯定の場合、ソフトデコーダであれば、復号化プロセスはステップ229に進み、ハードデコーダ(hard decoder)であれば、復号化プロセスはステップ229を迂回し、ステップ237に直接進む。しかし、否定の場合、復号化プロセスはステップ235に進む。ステップ235において、変数“j”の値は1だけインクリメントされ、復号化プロセスは次のステップ234に進む。ステップ234において、変数“j”の値が586未満であるか否かが調べられる。否定の(すなわち、“j”が586以上である)場合、すべての要素がスキャンされており、復号化プロセスは再び適用ステップ222に続く。しかし、肯定(すなわち、“j”<586)の場合、失敗する部分語が見つけられるまで、ステップ228、235、及び234が繰り返される。
なお、ステップ229は、ソフトデコーダの場合のみ実行される。ソフトデコーダの場合、失敗した部分語の隠れビットは、復号化に成功した部分語のそれまでに更新されたJPビット及びそれまでに失敗した部分語の再構築された隠れビットに提供される推定を使用して再構築される。本発明の好ましい方法は、XOR演算を使用して、失敗部分語の再構築された隠れビットの推定を提供するが、ソフトデコーダの場合、他の演算をさらに考慮することが可能である。
ハードデコーダの場合、他の部分語がすべて、復号化に成功しなければならない。実施例2に関しては、復号化に成功したその他のすべての部分語で更新された後、中間RAM170に記憶されたJPビットが、失敗した部分語“j”の隠れビットの推定として使用される。更新されたJPビットは、2つ以上のエラーが部分語“j”の最初の11ビット内に現れる場合のみ、失敗した部分語“j”の隠れビットの推定に使用される。なお、実施例2に関連して、部分語“j”の2回目の復号化試行が成功する場合、更新されたJPビットはそれ自体、再構築された隠れビットであり、単なる推定ではない。これは、2回目の復号化試行の成功が、厳密に2つのエラーが15ビット語に存在したことを意味するためである。さらに、1回目の試行が失敗したため、15ビット語の最初の11ビットに厳密に2つのエラーが存在する。したがって、15ビット語の最後の4ビットはエラーを有さず、隠れビットを厳密に再構築したものである。
ステップ237において、ハードデコーダ及びソフトデコーダの両方について、語“j”がDJIR200(図4参照)から二重モードデコーダ130(図4参照)に読み込まれる。次に、ジョイント情報が中間RAM170(図4参照)から読み取られる。ジョイント情報は、データ収集器132(図5参照)において語“j”と結合されて、デコーダコア134(図5参照)において第2の復号化モードで復号化される変更語を形成する。実施例2に関しては、この結合動作は単に連接であり、第2の復号化モードは[15,7,5]ブロックデコーダである。変更語“j”がデコーダコア134(図5参照)内に配置されると、状態機械138(図5参照)が、ステップ237の最終段階において復号化動作を開始する。
ステップ230において、語jの2回目の復号化試行が成功したが否かが調べられる。肯定の場合、復号化プロセスはステップ231を実行する。ステップ231において、変数“k”の値が1だけインクリメントされ、要素v[j]の値が“1”にセットされ、符号語jがDJIR200(図4参照)において更新される。ソフトエンコーダの場合、ステップ236において、部分語“j”の完全に再構築された隠れビットが、中間RAM170に記憶されているジョイントパリティビットと結合され、これら隠れビットに提供された推定が、中間RAM170から除去される。(復号化の成功により)完全に再構築された隠れビットとジョイントパリティビットとを結合する一方法は、隠れビットとジョイントパリティビットとの排他的論理和をビット単位でとることである。ステップ231(又は、ソフトデコーダの場合にはステップ236)に続き、復号化プロセスはステップ233に進む。しかし、否定の(すなわち、語jの2回目の復号化が失敗した)場合、復号化プロセスはステップ233(又は、ソフトデコーダが実施される場合にはステップ232)に進む。ステップ232において、語“j”の隠れビットの更新された推定が、中間RAM170に記憶される。
ステップ233において、変数“j”の値が1だけインクリメントされ、復号化プロセスは、復号化の成功が宣言される(ステップ223)か、又は復号化の失敗が宣言される(ステップ226)まで、復号化プロセスにより提供されるステップの適用に戻る。
図8を参照して、実施例1に関連する符号化プロセスの概略図240を示す。番号242で定義される7ビットの各情報ベクトルが、C及びCとして示される15ビット符号語244に変換される。このような各15ビット符号語244の最初の11ビット246は、7個の情報ビット242及び最初の4個のパリティビット250を含む。これら最初の11ビット246はフラッシュ装置に書き込まれる。各15ビット符号語244の最後の4個のパリティビット252は共にビット単位で排他的論理和がとられて、本明細書では“P”ビット254として定義されるパリティビット4個のセットを生成して、第2タイプのパリティビットを提供する。
図9を参照して、実施例2に関連する入力CER性能(x軸)と出力SER性能(y軸)との関係のグラフ図260を示す。グラフ図260に示すように、参照方式により得られるSER性能262(下の線)は、本発明の方式により得られるSER性能264(上の線)とわずかにしか違わない。SERが10-10未満の環境では、性能に実際的な差はないが、本発明のフラッシュメモリサイズは、参照方式のものよりもかなり小さい。
本発明の装置の部分符号のコンポーネントコア符号としてのソフトデコーダの実施がさらに可能である。LDPC(低密度パリティ検査)、TCM(トレリス符号化変調)、TURBO符号等のコンポーネント符号の使用を可能にするために、ソフトデコーダが設けられる。
復号化プロセスはいくつかのフェーズにおいて実行することができるが、各フェーズにおいて、ソフトデコーダは、ジョイント情報(中間RAMに記憶されている)を通してその他の部分語から伝えられる更新情報を使用して、ある部分語に対してアクティブ化される。一般的な場合、ソフトデコーダは、更新情報の各値に、信頼性ビットを含む数ビットを許容することができる。これは、ソフトデコーダに転送された入力ビット値の表現が複数のビットをさらに含み得る(すなわち、更新された情報の各値が、上記の実施例1及び実施例2でのような単一の2進値のみを含むように制限されない)ことを意味する。入力ビットソフト値(soft value)は、入力ビットiの2進値が“0”に等しい(又は逆に“1”に等しい)信頼性を表す確率として考えることができるとともに、その確率に変換することができる。
一般に、以下の(2.7)において定義される対数尤度比(LLR)が、
Figure 0005216593
に従って、当該技術分野において既知の符号化理論において2進値“0”又は“1”の信頼性を表すために使用される。
計算領域とは対照的に、こういった確率は、フラッシュ装置の記憶装置製造プロセス中に予め決定される。フラッシュ装置の記憶ユニットは各セルにビット群を含み、セル電圧レベルがこのビット群を表すシンボルに対応する。したがって、このような任意のシンボルセットは、信号コンステレーション(signal constellaiton)として定義することができる。
フラッシュ装置は、その物理的特性により、書き込まれた略あらゆる電圧レベルを差動電圧レベルとして読み出せるようにすることができる。電圧レベル“r”を書き込み、差動レベル“s”を読み取る確率をクロスオーバ確率Prsと示す。
上述したように、フラッシュ装置の特殊な製造プロセスにより、これら確率は所与の値に固定される。(2.7)でのように、2進値“0”又は“1”の入力信頼性がクロスオーバ確率Prsを含む一定の所与の表を使用して計算される。
第1のフェーズにおいて、ソフトデコーダは互いに素な各部分語を復号化し、その間、“隠れパリティビット”の信頼性はゼロにセットされる(ソフトデコーダにより消去(erasure)として識別される)。
復号化に成功すると、これらパリティビットは首尾よく再生成される。対数尤度比(LLR)フォーマットから2進値フォーマットへの変換は、以下のように行われる。
2進値は、LLRフォーマットでの信頼性の符号ビットである。復号化に成功した場合、隠れ2進値は本出願に従って再生成される(上記の実施例1及び実施例2では、これは互いに素な部分語の符号化に使用されるプロセスにより行われる)。次に、完全に再構築された隠れ2進値が、フラッシュ装置から読み取られたジョイント情報ビットとビット単位で排他的論理和演算される。図7のステップ219及び236参照のこと。その結果、ジョイント情報ビット“P”に対する再生成「隠れパリティビット」の影響が除去される。これは、A XOR B XOR C XOR B=A XOR CというXOR演算を特徴付ける手順による。
なお、フラッシュ装置に記憶されるジョイント情報ビットは、固有の不信頼性も含む。したがって、1つを除くすべての部分語が復号化に成功する場合、復号化に成功したその他の部分符号の隠れビット及びフラッシュ装置に記憶されているジョイント情報を使用して、復号化に失敗した部分語の隠れビットを再生成することは、フラッシュ装置から読み取られたジョイント情報に起因するエラーをやはり含む恐れがある。
ソフトデコーダが失敗した場合であっても、「隠れパリティビット」のLLRフォーマットでの出力信頼性を生成することができる。これら信頼性は中間RAMに記憶される。第1の復号化フェーズが完了すると、すべての部分符号が復号化に成功した場合、復号化手順が成功したと決定される。
第1の復号化フェーズにおいて少なくとも1つの部分語が失敗した場合、追加の復号化試行がソフトデコーダにより実行される。このような新たな各復号化試行につき、ソフトデコーダは、更新されたジョイント情報及び失敗した他の部分語から得られる信頼性を利用する。このような復号化試行は、部分語間で行われる「メッセージパッシング(message−passing)」手順によりサポートされる(ソフトデコーダの場合の図7のステップ229、231、236、及び232に示される)。メッセージは信頼性を指し、中間RAMを介して部分語間をパッシングされる。
この「メッセージパッシング」を行うメカニズムの提供は、(ジョイント情報を除き)外部知識を必要とせずに互いに素な部分語の部分集合の復号化失敗イベントを解消して復号化の成功を可能にするのはこのメカニズムであるため、本発明の本質にある。LLRフォーマットで得られるこれら信頼性は、単一部分語への新たな外因性情報に寄与するため、この部分語が次のフェーズにおいて復号化に成功することになり得る。
“p>0”である、(先に復号化に失敗した)部分語“y”の一般復号化フェーズ“p”において、ソフトデコーダは、部分語“y”それ自体の信頼性の寄与を除き、すべての部分語の隠れパリティビットの(一般にLLRフォーマットの)部分語信頼性を利用する。復号化フェーズ“p”での部分語“y”の「隠れパリティビット」の推定の振幅A及び符号値Sは、同じ位置における「隠れパリティビット」の各群に対して別個に導出される。換言すれば、振幅A及び符号値Sは、同じ部分語のあらゆる隠れビットに対して別個に、同じ部分語の他の隠れビットから独立して以下のように計算される。
Figure 0005216593
式中、“F”は、復号化に失敗した部分語の隠れビット及び外部更新“P”ビットを含む群として定義される。更新された“P”ビットは、復号化プロセスにおいてそれまでに復号化に成功したすべての部分語の再生成された隠れビットにより更新される、フラッシュ装置に記憶されるビットを指す。関数Ψはいくつかの様式で計算することができ、その1つは、
Figure 0005216593
である。なお、関数Ψの有用な属性は、関数Ψがそれ自体の負の逆関数であることである。
Ψ[Ψ(x)]=−|x| (2.10)
符号“Sy”は、本明細書ではLLRフォーマットにおいて測定される信頼性の符号として定義され、
Figure 0005216593
に従って振幅Ayの計算に参加する同じ集合の“F”に対してXOR(排他的OR)演算を適用することから決定される。式中、“F”は、式(2.8)において上で参照された群として定義される。
部分語“y”の隠れパリティビットの更新された信頼性が計算されると、同じソフトデコーダが再アクティブ化されて、部分語“y”を復号化する。復号化及び信頼性更新のプロセスは、復号化の成功が得られるまで、又は予め規定された最大数の復号化試行及び/又は復号化フェーズが復号化方式により実行されるまで繰り返される。
復号化に成功したプロセスは、RAM内の部分語“y”のビットを更新するステップ、及び復号化に成功した部分語“y”の再生成された「隠れパリティビット」の符号ビットを使用して中間RAM内のジョイント情報ビットを更新するステップを含む。したがって、復号化試行失敗の後には、中間RAM内の部分語“y”の隠れパリティビットの信頼性を更新することが続く。復号化試行の失敗の結果として、更新された信頼性が得られるが、これらを同じフェーズ“p”内の他の部分語の復号化において考慮することにより、これら他の部分語の復号化効率が向上する。
次に、ソフトデコーダは、すべての部分語の復号化が成功するまで、又は予め規定される最大数の復号化フェーズが特定の部分符号に対して実行されるまで、次の部分語の復号化に進む。
上述したように、中間RAMは、各失敗部分語の“隠れビット”の信頼性を記憶する。しかし、「隠れビット」の推定に1ビットのみ(すなわち、LLRフォーマットにおいて信頼性を保持する場合では符号ビット)を含むサイズを低減した中間RAMを構成することがさらに可能である。このような場合、部分語“y”の隠れパリティビットは、その他の失敗部分語の現在推定されている隠れパリティビット及び更新された外部“P”ビットから導出される。換言すれば、失敗部分語の隠れパリティビットの信頼性の現在の推定(すなわち、Aj及びSjの両方、但しj∈F)ではなく、失敗部分語の隠れパリティビットの現在推定のみ(すなわち、Sjのみ、但しj∈F)が記憶される。
本発明の革新は、様々な視点から見ることができる。第1の視点から、本発明は、より短い符号語を複数回数、復号化することにより、長符号語の首尾よい復号化を実現する方法及び装置を開示する。上述した実施例1に関連して、長符号語は[15,7,5]ブロック符号であり、より短い符号語は[11,7,3]ブロック符号である。より短い[11,7,3]ブロック符号は2回∈復号化される。
これにより、本発明の装置は、同じ出力BER/SER性能を実現しながら、当該技術分野において既知のデコーダに関連する高い実施複雑性を回避することができる。
この第1の視点によれば、固定サイズの部分語を連続して復号化することによりデータストリームを復号化するために提供される当該技術分野において既知のあらゆる復号化方法は、本発明と同様にして実施されると言える。
例えば、データストリームを復号化する必要があり、各符号語は1,000ビットであり、このような各符号語はそれ自体で復号化され、その前後の符号語から独立して復号化される。当該技術分野において既知の復号化方法によれば、データストリームはN(例えば、N=4)群の符号語として復号化される。N群のストリーム全体は、N=4の場合、4,000ビットの単一長符号語として定義される。短復号化が、それぞれ1,000の4つの各短符号語に対して別個に適用され、すべての短復号化の復号化データが連接されて、長符号語の復号化データが生成される。
しかし、本発明の方法は、短符号語の復号化に失敗した場合に、他の短符号語の復号化データに従って短符号語の復号化データを変更する段階をさらに提供するため、上記の既存の復号化方法と異なる誤り訂正符号化方式を提供する。上記実施例1に関連して、失敗した短符号語の復号化データの隠れビットは、その他の復号化に成功した短符号語の復号化データの再構築された隠れビット及びフラッシュ装置に記憶されているジョイントパリティ(JP)ビットに従って置換される。
この段階は、上記の従来技術による方法には完全になく、本発明のその利点を多くを与える。このような一利点は、1つ又は複数の短語の復号化失敗を解消し、それにより、これらより短い符号語を保護するために必要なパリティビット数が少なくなる。
当該技術分野において既知のさらなる復号化方法は、異なる短符号語間の接続に基づく。一般に連接符号化方式と呼ばれるこの方法によれば、少数の短符号語が第1の符号により符号化されて共にグループ化され、第2の符号により再び符号化されて、長符号語が生成される。このような従来技術による方法は、より長い符号語の復号化に従って、まだ符号化されている短符号語を変更し、その後でのみ、短符号語を復号化する。
例えば、各基本符号語が1,000である符号語4個分のデータストリーム(4,000ビットを含む)が、4,500ビットの1つの長符号語として第1の符号により符号化される。長符号語の復号化には、まず、第2の符号に従って長語を復号化し、それから各短符号語を第1の符号に従って別個に復号化する必要がある。
しかし、実施例1に関連して、本発明の方法は、まず、短符号語を復号化し、それから、他の短符号語の復号化データに従って復号化データの変更を行うため、このような従来技術による方法と異なる。
ターボ復号化と呼ばれる他の復号化方法は「ターボ符号」を利用し、通常、ソフト復号化(soft decoding)方法を利用する。「ターボ符号」は、連接符号構造に加えて反復フィードバックアルゴリズムで構成される順方向誤り訂正技法として定義される。ターボ復号化を適用することにより、同じデータビットが2回以上符号化され(データビットがインタリーブされて、複数の符号化演算において異なる順序を有する)、それにより、符号語は、データビットと、すべての符号化により生成される複数のパリティビットセットとの両方を含む。復号化に際して、複数の復号化プロセスが適用される(並列に、又は非並列に)。各復号化プロセスは、複数のパリティビットセットの1つに従って適用され、同じ情報データに対しての復号化フェーズであるが、異なるパリティビットを有する前の復号化フェーズからの外因性情報を許容する。
順方向誤り訂正技法の利点は、同じデータビットの復号化に適用される複数の復号化プロセス間の相互作用(「メッセージパッシング」)にある。この相互作用は、デコーダの誤り訂正性能を強化する。ターボ復号化を適用するデコーダは、復号化に失敗した場合のみ、上述したように複数のパリティビットセットが復号化されるように、1つのパリティビットセットのみに従ってデータを復号化するようにさらに構成することができる。
本発明の方法は、2、3の態様において当該技術分野において既知のターボ復号化方法と異なる。第1に、部分語自体の復号化と復号化された語の変更を行う手順との間に明らかな分離がある。本発明の方法は、各短語を別個に復号化し、その後でのみ、復号化データのある部分が別の部分に影響するプロセスを適用する。しかし、ターボ復号化方法によれば、部分語の復号化と他の部分語の変更の実施との間にはこのような明確な区分けがなく、両方の手順は同時に行われる。
第2に、本発明の方法によれば、各短語は、その他の短語から独立して復号化される。したがって、復号化された符号語は、独立した復号化データセットを生成する。しかし、ターボ復号化方法によれば、すべての短語(典型的な並列実施において)及び少なくとも1つの短語(2段階実施において)のいずれも、別の短符号語とタンデムに復号化されて復号化ビットのジョイントセットを生成しない。さらに、復号化された短符号語は、必ずしも、「それ自体の復号化データ」として識別される必要はない(すなわち、他の符号語に従属する)。
第3に、本発明によれば、複数の短符号語は、長符号語の互いに素な部分集合である。しかし、このような実施態様は、複数の短符号語がすべて同じデータビットを符号化するターボ復号化方法では提供されない。
第2の視点から、本発明の革新は、2つの符号化方式を使用してデータビットを符号化すること、結果として生成されるパリティビットのすべてを保持するわけではないこと、及び2つのパリティビットセット間の関係に頼り、一方のセットを他方のセットが不適切な場合の「カバーアップ」とすることにより、誤り訂正性能を向上させる。本発明のこの視点から見た場合、以下の態様を考慮に入れるべきである。
a.この視点の顕著な特徴は、最終的に使用されるパリティビットよりも多くのパリティビットを計算する中間段階である。これは、従来技術による方法の「パンクチャリング」に注意を向ける。誤り訂正理論では、用語「パンクチャリング」は、パリティオーバーヘッドを低減するために、計算されたいくつかのパリティビットをドロップし、誤り訂正能力の低減と引き替えにオーバーヘッドの低減を得ることを意味する。しかし、従来技術において理解されている「パンクチャリング」は、本発明とはかなり異なる。本発明は、2つの誤り訂正符号化方式を動作の基礎として利用するのに対して、1つのみの符号化方式を使用する従来技術によるパンクチャリング方法には、この種のものは存在しない。
b.2004年11月29日に出願されドロア(Dror)等に付与された「コンパクト高速単一ビット誤り訂正回路(COMPACT HIGH−SPEED SINGLE−BIT ERROR−CORRECTION CIRCUIT)」と題する米国特許出願第10/998,003号明細書も、符号化フェーズ中に計算されたパリティ情報のいくらかをドロップする誤り訂正方法を開示している。ドロア(Dror)等の方法は、2つの別個の計算フェーズを含み、一方のみのフェーズの結果からのパリティ情報がドロップされ、本発明と同様に見えるため、上記のパンクチャ方法よりも本発明に近い。しかし、ドロア(Dror)等は、上記と同じことにより本発明と異なる。すなわち、本発明が2つの誤り訂正符号化方式を利用するのに対して、これはドロア(Dror)等には当てはまらない。ドロア(Dror)等は2つの計算フェーズを行うが、各フェーズは、それ自体では単一の誤りさえも訂正できないため、誤り訂正方式ではない。2つの計算は一緒になってのみ、誤り訂正に十分なパリティ情報を提供することから、2つの計算が一緒になってのみ、誤り訂正方式を構成する。
本発明は系統的符号に関連するが、本発明の方法は、系統的誤り訂正符号及び非系統的誤り訂正符号の両方に等しく適用可能なことを理解されたい。誤り訂正用語によれば、系統的符号は、エンコーダに転送される各入力データビットが、該当する場合にはパンクチャリング前に、符号化された符号語内の整合ビットと1対1の対応性を有し、符号化された符号語を、一方はオリジナルデータビットを含み、他方はパリティビットを含む2つの互いに素な部分に分けることができる符号として定義される。したがって、非系統的符号は、上記条件を満たさない任意の符号として定義される(すなわち、非系統的符号では、このような明確な区分けが可能ではない)。
本発明の方法は、ハード復号化(hard−decoding)デコーダ及びソフト復号化デコーダの両方に等しく適用可能である。誤り訂正用語によれば、ソフト復号化デコーダは、入力ビットの信頼性尺度を許容し、信頼性尺度を復号化プロセス中に考慮に入れ、プロセス中に信頼性尺度を更新することが可能な復号化プロセスを適用する。ハード復号化デコーダは、上記条件を満たさないデコーダである。
本発明は、上述したように、単純なBCH符号に基づくが、同様の効率及び性能利得を実現する、当該技術分野において既知の他の符号化技法及び復号化技法を利用してもよい。
さらに、本発明の装置が利用する符号構造は、デジタル記憶媒体、ランダムアクセスメモリ、フラッシュメモリ、及びEEPROMを含むような、当該技術分野において既知の任意の装置において利用することが可能である。用語「記憶装置」及び「メモリ」は、本明細書において同義で使用され、このような任意の記憶装置を指す。
本明細書において、本発明はフラッシュメモリに提供されるが、本発明の原理は、通信システム(DSL、DVBS、3G、4G、CDMA2000、802.11及び802.16の派生等を含む無線、有線、有線電話システム、衛星、セルラ)及び信号処理(映像用途及び映像用途)等の他の種類の用途での使用にも適合可能であり、かつそれら他の種類の用途にも恩恵を提供可能なことに留意されたい。
復号化プロセスの第1のフェーズでは不十分な場合、さらなる復号化試行を時によりアクティブ化することに備えてデータを保持するために、当該技術分野において既知の通信システムにバッファを実装してよい。しかし、復号化ユニットがアイドルである間に、追加のバッファが既に通信システムの他の部分に採用されているため、そのようなバッファが必要ない場合もあり得る。
誤り訂正符号化方式を提供する任意の方法及び装置に関連する他の実施態様も、本発明の範囲内で可能なことを理解することができる。
本発明の特定の具体的な実施形態に関連して本発明を説明したが、さらなる変更が当業者に思い浮かぶであろうため、この説明が制限を意味せず、添付の特許請求の範囲内にある変更の包含を意図することを理解されたい。
[参考文献]
[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.
Figure 0005216593
本発明の装置の好ましい実施形態のブロック図である。 図1の多段階エンコーダを構成する構成要素のブロック図である。 図2の状態機械制御ロジックにおいて実行される符号化プロセスのフローチャートである。 図1の多段階デコーダを構成する構成要素のブロック図である。 図4の二重モードデコーダを構成する構成要素のブロック図である。 実施例1に関連する復号化プロセスのフローチャートである。 実施例2に関連する復号化プロセスのフローチャートである。 実施例1に関連する符号化プロセスの概略図である。 実施例2に関連するCER性能とSER性能との関係のグラフ図である。 実施例1及び実施例2に関連するブロック符号[15,7,5]の生成行列の図である。 実施例1及び実施例2に関連するブロック符号[15,7,5]のパリティ検査行列“H”の図である。 実施例1及び実施例2に関連するブロック符号[15,7,5]の二重エラー位置の表図である。 実施例1及び実施例2に関連するブロック符号[11,7,3]のパリティ検査行列H(1)の図である。 実施例1に関連するブロック符号[11,7,3]の単一エラー位置の表図である。

Claims (26)

  1. 符号語の表現を復号化する方法であって、
    (a)前記符号語の前記表現のビットの適切な部分集合であるビットをそれぞれが有する複数の部分語を生成するステップと
    (b)対応する復号化部分語を生成するために、前記各部分語をそれ自体のビットのみに従って復号化するステップと
    (c)前記部分語の1つの前記復号化が失敗した場合、復号化に成功した少なくとも1つの部分語の前記対応する復号化部分語に少なくとも部分的に従って、変更復号化部分語を生成することで、復号化に失敗した前記1つの部分語に対応する前記復号化部分語を変更するステップと
    を含む方法。
  2. (d)前記部分語の1つの前記復号化に失敗した場合、前記変更復号化部分語からのデータを、前記復号化に成功したすべての部分語の前記対応する復号化部分語からのデータと結合するステップをさらに含む、請求項1に記載の方法。
  3. 前記変更復号化部分語からのデータを前記復号化に成功したすべての部分語の前記対応する復号化部分語からのデータと結合することは、前記変更復号化部分語からのデータを前記復号化に成功したすべての部分語の前記対応する復号化部分語からのデータとまとめることを含むステップにより行われる、請求項2に記載の方法。
  4. 前記部分語は互いに素である、請求項1に記載の方法。
  5. 前記部分語は同一数のビットを含む、請求項1に記載の方法。
  6. Mビット語を復号化する装置であって、
    (a)N<Mビット語を復号化するデコーダと、
    (b)該デコーダを、前記Mビット語から選択される異なるNビットの各部分集合に別個に適用するメカニズムであって、前記デコーダの各適用は、前記各適用が適用される前記Nビットのみに依存し、前記各適用は対応する符号化データを生成し、前記Mビット語の最終復号化データは、前記適用の前記対応する復号化データに少なくとも部分的に従って生成され、前記適用の1つが失敗した場合、該メカニズムは、少なくとも1つの成功した適用の前記対応する復号化データに少なくとも部分的に従って、前記失敗した適用の前記対応する復号化データの変更を行う、メカニズムと
    を備える装置。
  7. 前記部分集合は互いに素である、請求項6に記載の装置。
  8. Mビット語を復号化する装置であって、
    (a)N<Mビット語をそれぞれ復号化する複数のデコーダと、
    (b)該複数のデコーダをそれぞれ、前記Mビット語から選択される異なるNビットの各部分集合に別個に適用するメカニズムであって、前記複数のデコーダのそれぞれの各適用は、該各適用が適用される前記Nビットのみに依存し、前記各適用は対応する復号化データを生成し、前記Mビット語の最終復号化データは、前記適用の前記対応する復号化データに少なくとも部分的に従って生成され、前記デコーダの1つが失敗した場合、該メカニズムは、少なくとも1つの成功した前記デコーダの前記対応する復号化データに少なくとも部分的に従って、失敗した前記デコーダの前記対応する復号化データの変更を行う、メカニズムと
    を備える装置。
  9. 前記部分集合は互いに素である、請求項8に記載の装置。
  10. Mデータビット及びPパリティビットを含む符号語の表現を復号化する方法であって、
    (a)前記Pパリティビットを第1のパリティビット群及び第2のパリティビット群に分けるステップと、
    (b)前記Mデータビットを前記第1のパリティビット群を使用して復号化するステップであって、それにより、訂正済みデータビットを提供する、復号化するステップと、
    (c)前記第1のパリティビット群のみを使用する前記復号化に失敗した場合、前記Mデータビットを前記第1のパリティビット群及び前記第2のパリティビット群を使用して復号化するステップであって、それにより、前記訂正済みデータビットを提供する、復号化するステップと
    を含む方法。
  11. Mデータビット及びPパリティビットを含む符号語の表現を復号化する方法であって、
    (a)前記MデータビットのそれぞれのビットがK>1個の部分集合に少なくとも1回出現するように、前記Mデータビットを前記K個の部分集合に分けるステップと、
    (b)前記Pパリティビットを第1のパリティビット群及び第2のパリティビット群に分けるステップと、
    (c)前記第1のパリティビット群を、前記Mデータビットの各部分集合に対応する前記第1のパリティビット群のK個の部分集合に分けるステップと
    (d)前記Mデータビットの前記各部分集合の復号化データを生成するように、前記第1のパリティビット群の前記対応する部分集合に従って、前記Mデータビットの前記各部分集合を復号化するステップと
    (e)前記Mデータビットの前記K個の部分集合の1つの前記復号化に失敗した場合、前記1つの部分集合の前記復号化データを生成するように、前記第2のパリティビット群に少なくとも部分的に従って前記1つの部分集合を復号化するステップと
    (f)前記Mデータビットの完全復号化データを生成するように、前記Mデータビットの前記K個すべての7部分集合の前記復号化データを結合するステップと
    を含む方法。
  12. 前記Mデータビットの前記K個すべての部分集合の前記復号化データを結合することは、前記Mデータビットの前記K個すべての部分集合の前記復号化データをまとめることにより行われる、請求項11に記載の方法。
  13. 前記Mデータビットの前記K個の部分集合は互いに素である、請求項11に記載の方法。
  14. 前記Mデータビットの前記K個の部分集合はすべて等サイズである、請求項11に記載の方法。
  15. 前記第1のパリティビット群の前記対応する部分集合に従って前記各部分集合の前記データビットを復号化することは、対応する第1の復号化方式を使用することを含み、前記第2のパリティビット群に従って、復号化に失敗した前記1つの部分集合の前記データビットを復号化することは、対応する第2の復号化方式を使用することを含む、請求項11に記載の方法。
  16. 前記Mデータビットの前記K個の部分集合のうちの少なくとも1つについて、前記対応する第1の復号化方式及び前記対応する第2の復号化方式は、共通の復号化方法を適用する、請求項15に記載の方法。
  17. 前記第1の復号化方式はすべて同一である、請求項15に記載の方法。
  18. 前記第2の復号化方式はすべて同一である、請求項15に記載の方法。
  19. N>Mビットを有する符号語の表現からMデータビットを復号化する方法であって、
    a)残留ビットの集合を生成するように、Nビットから最大でN−Mビットの選択部分集合を除去するステップと
    b)前記残留ビットを、K>1個の残留ビット部分集合のうちの少なくとも1つのメンバであるように分けるステップと、
    c)前記各部分集合の復号化データを生成するように、前記各部分集合のビットのみに従って前記K個の各部分集合を復号化するステップと
    d)前記K個の部分集合の1つの復号化に失敗した場合、復号化に失敗した前記部分集合の前記復号化データを生成するように、前記除去された選択部分集合に少なくとも部分的に従って、復号化に失敗した前記部分集合を復号化するステップと
    e)前記Mデータビットの完全復号化データを生成するように、前記K個すべての部分集合の前記復号化データを結合するステップと
    を含む方法。
  20. 前記K個すべての部分集合の前記復号化データを結合することは、前記K個すべての部分集合の前記復号化データをすべてまとめることにより行われる、請求項19に記載の方法。
  21. 前記K個の部分集合は互いに素である、請求項19に記載の方法。
  22. 前記K個の部分集合はすべて等サイズである、請求項19に記載の方法。
  23. 前記各部分集合の前記ビットに従って前記各部分集合の前記データビットを復号化することは、対応する第1の復号化方式を使用することを含み、前記除去された選択部分集合に従って、復号化に失敗した前記1つの部分集合の前記データビットを復号化することは、対応する第2の復号化方式を使用することを含む、請求項19に記載の方法。
  24. 前記K個の部分集合のうちの少なくとも1つについて、前記対応する第1の復号化方式及び前記対応する第2の復号化方式は、共通の復号化方法を適用する、請求項23に記載の方法。
  25. 前記第1の復号化方式はすべて同一である、請求項23に記載の方法。
  26. 前記第2の復号化方式はすべて同一である、請求項23に記載の方法。
JP2008539611A 2005-11-15 2006-11-13 多段階誤り訂正方法及び装置 Expired - Fee Related JP5216593B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US73645805P 2005-11-15 2005-11-15
US11/514,182 US7844877B2 (en) 2005-11-15 2006-09-01 Method and device for multi phase error-correction
PCT/IL2006/001305 WO2007057885A2 (en) 2005-11-15 2006-11-13 Method and device for multi phase error-correction

Publications (2)

Publication Number Publication Date
JP2010509790A JP2010509790A (ja) 2010-03-25
JP5216593B2 true JP5216593B2 (ja) 2013-06-19

Family

ID=38049059

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008539611A Expired - Fee Related JP5216593B2 (ja) 2005-11-15 2006-11-13 多段階誤り訂正方法及び装置

Country Status (7)

Country Link
US (3) US7844877B2 (ja)
EP (1) EP1949580B1 (ja)
JP (1) JP5216593B2 (ja)
KR (2) KR101135425B1 (ja)
CN (2) CN101611549B (ja)
AT (1) ATE540480T1 (ja)
WO (1) WO2007057885A2 (ja)

Families Citing this family (163)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006209928A (ja) * 2005-01-31 2006-08-10 Sony Corp 光ディスク製造方法及び装置、光ディスク、並びに、光ディスク再生方法及び装置
US7844877B2 (en) * 2005-11-15 2010-11-30 Ramot At Tel Aviv University Ltd. Method and device for multi phase error-correction
US8271850B2 (en) * 2005-12-29 2012-09-18 Intel Corporation Fast low-density parity-check code encoder
BRPI0709756A2 (pt) * 2006-05-01 2011-07-26 Adaptive Spectrum & Signal mÉtodo e aparelho para a realizaÇço de testes de linha em instalaÇÕes do consumidor
US7840875B2 (en) * 2006-05-15 2010-11-23 Sandisk Corporation Convolutional coding methods for nonvolatile memory
US8042029B2 (en) * 2006-05-21 2011-10-18 Ramot At Tel Aviv University Ltd. Error correction decoding by trial and error
JP4992900B2 (ja) * 2006-08-02 2012-08-08 富士通株式会社 受信装置及びその復号方法
US7904783B2 (en) * 2006-09-28 2011-03-08 Sandisk Corporation Soft-input soft-output decoder for nonvolatile memory
US7805663B2 (en) * 2006-09-28 2010-09-28 Sandisk Corporation Methods of adapting operation of nonvolatile memory
US7818653B2 (en) 2006-09-28 2010-10-19 Sandisk Corporation Methods of soft-input soft-output decoding for nonvolatile memory
US7904788B2 (en) * 2006-11-03 2011-03-08 Sandisk Corporation Methods of varying read threshold voltage in nonvolatile memory
US7904780B2 (en) * 2006-11-03 2011-03-08 Sandisk Corporation Methods of modulating error correction coding
US8001441B2 (en) * 2006-11-03 2011-08-16 Sandisk Technologies Inc. Nonvolatile memory with modulated error correction coding
US8359522B2 (en) 2007-05-01 2013-01-22 Texas A&M University System Low density parity check decoder for regular LDPC codes
KR100873824B1 (ko) * 2007-05-04 2008-12-15 삼성전자주식회사 오류 제어 코드 장치 및 그 방법
US8650352B2 (en) 2007-09-20 2014-02-11 Densbits Technologies Ltd. Systems and methods for determining logical values of coupled flash memory cells
US8365040B2 (en) 2007-09-20 2013-01-29 Densbits Technologies Ltd. Systems and methods for handling immediate data errors in flash memory
US8694715B2 (en) 2007-10-22 2014-04-08 Densbits Technologies Ltd. Methods for adaptively programming flash memory devices and flash memory systems incorporating same
US8443242B2 (en) 2007-10-25 2013-05-14 Densbits Technologies Ltd. Systems and methods for multiple coding rates in flash devices
US8335977B2 (en) * 2007-12-05 2012-12-18 Densbits Technologies Ltd. Flash memory apparatus and methods using a plurality of decoding stages including optional use of concatenated BCH codes and/or designation of “first below” cells
US8341335B2 (en) 2007-12-05 2012-12-25 Densbits Technologies Ltd. Flash memory apparatus with a heating system for temporarily retired memory portions
US8607128B2 (en) 2007-12-05 2013-12-10 Densbits Technologies Ltd. Low power chien-search based BCH/RS decoding system for flash memory, mobile communications devices and other applications
WO2009074979A2 (en) * 2007-12-12 2009-06-18 Densbits Technologies Ltd. Chien-search system employing a clock-gating scheme to save power for error correction decoder and other applications
WO2009074978A2 (en) 2007-12-12 2009-06-18 Densbits Technologies Ltd. Systems and methods for error correction and decoding on multi-level physical media
US8327246B2 (en) 2007-12-18 2012-12-04 Densbits Technologies Ltd. Apparatus for coding at a plurality of rates in multi-level flash memory systems, and methods useful in conjunction therewith
WO2009081708A1 (ja) * 2007-12-20 2009-07-02 Nec Corporation 端末装置、端末装置の制御方法、及び記録媒体
US8301912B2 (en) 2007-12-31 2012-10-30 Sandisk Technologies Inc. System, method and memory device providing data scrambling compatible with on-chip copy operation
US8161166B2 (en) * 2008-01-15 2012-04-17 Adobe Systems Incorporated Information communication using numerical residuals
EP2245784A4 (en) * 2008-02-11 2012-05-09 Zte Usa Inc METHOD AND SYSTEM FOR THE JOINT CODING OF MULTIPLE INDEPENDENT INFORMATION NEWS
US8832518B2 (en) 2008-02-21 2014-09-09 Ramot At Tel Aviv University Ltd. Method and device for multi phase error-correction
KR20090097673A (ko) * 2008-03-12 2009-09-16 삼성전자주식회사 연판정 값에 기반하여 메모리에 저장된 데이터를 검출하는장치
US8972472B2 (en) 2008-03-25 2015-03-03 Densbits Technologies Ltd. Apparatus and methods for hardware-efficient unbiased rounding
US20090282267A1 (en) * 2008-05-09 2009-11-12 Ori Stern Partial scrambling to reduce correlation
US8458563B2 (en) * 2008-06-23 2013-06-04 Ramot At Tel Aviv University Ltd. Reading a flash memory by joint decoding and cell voltage distribution tracking
US8464131B2 (en) * 2008-06-23 2013-06-11 Ramot At Tel Aviv University Ltd. Reading a flash memory by constrained decoding
EP2294510B1 (en) * 2008-06-24 2011-12-28 SanDisk IL Ltd. Method and apparatus for error correction according to erase counts of a solid-state memory
US8407553B2 (en) * 2008-08-15 2013-03-26 Lsi Corporation RAM list-decoding of near codewords
US8332725B2 (en) 2008-08-20 2012-12-11 Densbits Technologies Ltd. Reprogramming non volatile memory portions
US8161345B2 (en) 2008-10-29 2012-04-17 Agere Systems Inc. LDPC decoders using fixed and adjustable permutators
US9356623B2 (en) 2008-11-26 2016-05-31 Avago Technologies General Ip (Singapore) Pte. Ltd. LDPC decoder variable node units having fewer adder stages
US8413029B2 (en) * 2009-01-16 2013-04-02 Lsi Corporation Error correction capability adjustment of LDPC codes for storage device testing
EP2340507A4 (en) 2009-03-05 2012-05-30 Lsi Corp IMPROVED TURBO COMPENSATION PROCESS FOR ITERATIVE DECODER
JP2010212934A (ja) * 2009-03-10 2010-09-24 Toshiba Corp 半導体装置
US8341509B2 (en) * 2009-03-17 2012-12-25 Broadcom Corporation Forward error correction (FEC) scheme for communications
US8572460B2 (en) * 2009-03-17 2013-10-29 Broadcom Corporation Communication device employing binary product coding with selective additional cyclic redundancy check (CRC) therein
US8458574B2 (en) 2009-04-06 2013-06-04 Densbits Technologies Ltd. Compact chien-search based decoding apparatus and method
US8819385B2 (en) 2009-04-06 2014-08-26 Densbits Technologies Ltd. Device and method for managing a flash memory
WO2010123493A1 (en) * 2009-04-21 2010-10-28 Agere Systems, Inc. Error-floor mitigation of codes using write verification
US8578256B2 (en) * 2009-04-22 2013-11-05 Agere Systems Llc Low-latency decoder
US8464123B2 (en) * 2009-05-07 2013-06-11 Ramot At Tel Aviv University Ltd. Matrix structure for block encoding
US8566510B2 (en) 2009-05-12 2013-10-22 Densbits Technologies Ltd. Systems and method for flash memory management
US8995197B1 (en) 2009-08-26 2015-03-31 Densbits Technologies Ltd. System and methods for dynamic erase and program control for flash memory device memories
US8868821B2 (en) 2009-08-26 2014-10-21 Densbits Technologies Ltd. Systems and methods for pre-equalization and code design for a flash memory
US9330767B1 (en) 2009-08-26 2016-05-03 Avago Technologies General Ip (Singapore) Pte. Ltd. Flash memory module and method for programming a page of flash memory cells
US8914697B2 (en) * 2009-08-26 2014-12-16 Seagate Technology Llc Data corruption detection
US8305812B2 (en) 2009-08-26 2012-11-06 Densbits Technologies Ltd. Flash memory module and method for programming a page of flash memory cells
US8730729B2 (en) 2009-10-15 2014-05-20 Densbits Technologies Ltd. Systems and methods for averaging error rates in non-volatile devices and storage systems
US8724387B2 (en) 2009-10-22 2014-05-13 Densbits Technologies Ltd. Method, system, and computer readable medium for reading and programming flash memory cells using multiple bias voltages
US8423861B2 (en) * 2009-11-19 2013-04-16 Lsi Corporation Subwords coding using different interleaving schemes
US8626988B2 (en) 2009-11-19 2014-01-07 Densbits Technologies Ltd. System and method for uncoded bit error rate equalization via interleaving
US8359515B2 (en) * 2009-12-02 2013-01-22 Lsi Corporation Forward substitution for error-correction encoding and the like
US9037777B2 (en) 2009-12-22 2015-05-19 Densbits Technologies Ltd. Device, system, and method for reducing program/read disturb in flash arrays
US8607124B2 (en) 2009-12-24 2013-12-10 Densbits Technologies Ltd. System and method for setting a flash memory cell read threshold
WO2011092532A1 (en) 2010-01-28 2011-08-04 Sandisk Il Ltd. Sliding-window error correction
US8700970B2 (en) 2010-02-28 2014-04-15 Densbits Technologies Ltd. System and method for multi-dimensional decoding
CN102823141B (zh) * 2010-03-30 2015-09-16 国际商业机器公司 用于固态存储器件的两级bch码
US9104610B2 (en) 2010-04-06 2015-08-11 Densbits Technologies Ltd. Method, system and medium for analog encryption in a flash memory
US8527840B2 (en) 2010-04-06 2013-09-03 Densbits Technologies Ltd. System and method for restoring damaged data programmed on a flash device
US8745317B2 (en) 2010-04-07 2014-06-03 Densbits Technologies Ltd. System and method for storing information in a multi-level cell memory
US8464142B2 (en) 2010-04-23 2013-06-11 Lsi Corporation Error-correction decoder employing extrinsic message averaging
US9021177B2 (en) 2010-04-29 2015-04-28 Densbits Technologies Ltd. System and method for allocating and using spare blocks in a flash memory
US8499226B2 (en) 2010-06-29 2013-07-30 Lsi Corporation Multi-mode layered decoding
US8458555B2 (en) 2010-06-30 2013-06-04 Lsi Corporation Breaking trapping sets using targeted bit adjustment
US8539311B2 (en) 2010-07-01 2013-09-17 Densbits Technologies Ltd. System and method for data recovery in multi-level cell memories
US8510639B2 (en) 2010-07-01 2013-08-13 Densbits Technologies Ltd. System and method for multi-dimensional encoding and decoding
US8504900B2 (en) 2010-07-02 2013-08-06 Lsi Corporation On-line discovery and filtering of trapping sets
US20120008414A1 (en) 2010-07-06 2012-01-12 Michael Katz Systems and methods for storing, retrieving, and adjusting read thresholds in flash memory storage system
US8621289B2 (en) 2010-07-14 2013-12-31 Lsi Corporation Local and global interleaving/de-interleaving on values in an information word
US8964464B2 (en) 2010-08-24 2015-02-24 Densbits Technologies Ltd. System and method for accelerated sampling
DE102010035210B4 (de) * 2010-08-24 2012-08-30 Deutsches Zentrum für Luft- und Raumfahrt e.V. Verfahren zur Rückgewinnung verlorener Daten und zur Korrektur korrumpierter Daten
WO2012032371A1 (en) * 2010-09-08 2012-03-15 Agence Spatiale Europeenne Flexible channel decoder.
US8508995B2 (en) 2010-09-15 2013-08-13 Densbits Technologies Ltd. System and method for adjusting read voltage thresholds in memories
US9063878B2 (en) 2010-11-03 2015-06-23 Densbits Technologies Ltd. Method, system and computer readable medium for copy back
US8539321B2 (en) 2010-11-10 2013-09-17 Infineon Technologies Ag Apparatus and method for correcting at least one bit error within a coded bit sequence
US9450613B2 (en) * 2010-11-10 2016-09-20 Infineon Technologies Ag Apparatus and method for error correction and error detection
US8850100B2 (en) 2010-12-07 2014-09-30 Densbits Technologies Ltd. Interleaving codeword portions between multiple planes and/or dies of a flash memory device
US10079068B2 (en) 2011-02-23 2018-09-18 Avago Technologies General Ip (Singapore) Pte. Ltd. Devices and method for wear estimation based memory management
US8693258B2 (en) 2011-03-17 2014-04-08 Densbits Technologies Ltd. Obtaining soft information using a hard interface
US8990665B1 (en) 2011-04-06 2015-03-24 Densbits Technologies Ltd. System, method and computer program product for joint search of a read threshold and soft decoding
US9501392B1 (en) 2011-05-12 2016-11-22 Avago Technologies General Ip (Singapore) Pte. Ltd. Management of a non-volatile memory module
US9110785B1 (en) 2011-05-12 2015-08-18 Densbits Technologies Ltd. Ordered merge of data sectors that belong to memory space portions
US8996790B1 (en) 2011-05-12 2015-03-31 Densbits Technologies Ltd. System and method for flash memory management
US9396106B2 (en) 2011-05-12 2016-07-19 Avago Technologies General Ip (Singapore) Pte. Ltd. Advanced management of a non-volatile memory
US9372792B1 (en) 2011-05-12 2016-06-21 Avago Technologies General Ip (Singapore) Pte. Ltd. Advanced management of a non-volatile memory
US9195592B1 (en) 2011-05-12 2015-11-24 Densbits Technologies Ltd. Advanced management of a non-volatile memory
US8775218B2 (en) * 2011-05-18 2014-07-08 Rga Reinsurance Company Transforming data for rendering an insurability decision
US8667211B2 (en) 2011-06-01 2014-03-04 Densbits Technologies Ltd. System and method for managing a non-volatile memory
US9311969B2 (en) * 2011-07-22 2016-04-12 Sandisk Technologies Inc. Systems and methods of storing data
CN102323901A (zh) * 2011-07-28 2012-01-18 张岭 一种提高固态存储系统纠错码使用效率的方法
US8645810B2 (en) 2011-07-31 2014-02-04 Sandisk Technologies Inc. Fast detection of convergence or divergence in iterative decoding
US9270297B2 (en) 2011-07-31 2016-02-23 SanDisk Technologies, Inc. Error-correction decoding with reduced memory and power requirements
US8588003B1 (en) 2011-08-01 2013-11-19 Densbits Technologies Ltd. System, method and computer program product for programming and for recovering from a power failure
KR101798036B1 (ko) 2011-08-09 2017-11-15 엘에스아이 코포레이션 I/o 디바이스 및 컴퓨팅 호스팅 상호동작
US8553468B2 (en) 2011-09-21 2013-10-08 Densbits Technologies Ltd. System and method for managing erase operations in a non-volatile memory
US8862960B2 (en) * 2011-10-10 2014-10-14 Lsi Corporation Systems and methods for parity shared data encoding
US8768990B2 (en) 2011-11-11 2014-07-01 Lsi Corporation Reconfigurable cyclic shifter arrangement
GB2513749B (en) * 2011-12-21 2014-12-31 Ibm Read/write operations in solid-state storage devices
US8719677B2 (en) 2011-12-22 2014-05-06 Sandisk Technologies Inc. Using ECC encoding to verify an ECC decode operation
US8645789B2 (en) 2011-12-22 2014-02-04 Sandisk Technologies Inc. Multi-phase ECC encoding using algebraic codes
US8947941B2 (en) 2012-02-09 2015-02-03 Densbits Technologies Ltd. State responsive operations relating to flash memory cells
US8996788B2 (en) 2012-02-09 2015-03-31 Densbits Technologies Ltd. Configurable flash interface
GB2499424B (en) 2012-02-16 2016-06-01 Canon Kk Methods for decoding, methods for retrieving, method for encoding, method of transmitting, corresponding devices, information storage means and computer
US8996793B1 (en) 2012-04-24 2015-03-31 Densbits Technologies Ltd. System, method and computer readable medium for generating soft information
US8839073B2 (en) * 2012-05-04 2014-09-16 Lsi Corporation Zero-one balance management in a solid-state disk controller
TW201346922A (zh) 2012-05-14 2013-11-16 Toshiba Kk 記憶體控制器、記憶裝置及錯誤修正方法
US8838937B1 (en) 2012-05-23 2014-09-16 Densbits Technologies Ltd. Methods, systems and computer readable medium for writing and reading data
US8879325B1 (en) 2012-05-30 2014-11-04 Densbits Technologies Ltd. System, method and computer program product for processing read threshold information and for reading a flash memory module
US9921954B1 (en) 2012-08-27 2018-03-20 Avago Technologies General Ip (Singapore) Pte. Ltd. Method and system for split flash memory management between host and storage controller
RU2012146685A (ru) 2012-11-01 2014-05-10 ЭлЭсАй Корпорейшн База данных наборов-ловушек для декодера на основе разреженного контроля четности
US9368225B1 (en) 2012-11-21 2016-06-14 Avago Technologies General Ip (Singapore) Pte. Ltd. Determining read thresholds based upon read error direction statistics
KR101951663B1 (ko) * 2012-12-14 2019-02-25 삼성전자주식회사 Crc 부호와 극 부호에 의한 부호화 방법 및 장치
US9069659B1 (en) 2013-01-03 2015-06-30 Densbits Technologies Ltd. Read threshold determination using reference read threshold
US9148252B2 (en) * 2013-01-11 2015-09-29 Broadcom Corporation Methods and systems for 2-dimensional forward error correction coding
US9124300B2 (en) 2013-02-28 2015-09-01 Sandisk Technologies Inc. Error correction coding in non-volatile memory
US9407290B2 (en) 2013-03-15 2016-08-02 Sandisk Technologies Llc Error-correction decoding with conditional limiting of check-node messages
US9136876B1 (en) 2013-06-13 2015-09-15 Densbits Technologies Ltd. Size limited multi-dimensional decoding
US20150074496A1 (en) * 2013-09-10 2015-03-12 Kabushiki Kaisha Toshiba Memory controller, storage device, and memory control method
US9413491B1 (en) 2013-10-08 2016-08-09 Avago Technologies General Ip (Singapore) Pte. Ltd. System and method for multiple dimension decoding and encoding a message
US9786388B1 (en) 2013-10-09 2017-10-10 Avago Technologies General Ip (Singapore) Pte. Ltd. Detecting and managing bad columns
US9397706B1 (en) 2013-10-09 2016-07-19 Avago Technologies General Ip (Singapore) Pte. Ltd. System and method for irregular multiple dimension decoding and encoding
US9348694B1 (en) 2013-10-09 2016-05-24 Avago Technologies General Ip (Singapore) Pte. Ltd. Detecting and managing bad columns
TWI536749B (zh) * 2013-12-09 2016-06-01 群聯電子股份有限公司 解碼方法、記憶體儲存裝置與記憶體控制電路單元
US9536612B1 (en) 2014-01-23 2017-01-03 Avago Technologies General Ip (Singapore) Pte. Ltd Digital signaling processing for three dimensional flash memory arrays
US10120792B1 (en) 2014-01-29 2018-11-06 Avago Technologies General Ip (Singapore) Pte. Ltd. Programming an embedded flash storage device
US9641285B2 (en) 2014-03-06 2017-05-02 Samsung Electronics Co., Ltd. Ultra low power (ULP) decoder and decoding processing
US9542262B1 (en) 2014-05-29 2017-01-10 Avago Technologies General Ip (Singapore) Pte. Ltd. Error correction
US9892033B1 (en) 2014-06-24 2018-02-13 Avago Technologies General Ip (Singapore) Pte. Ltd. Management of memory units
US10089177B2 (en) 2014-06-30 2018-10-02 Sandisk Technologies Llc Multi-stage decoder
US9614547B2 (en) 2014-06-30 2017-04-04 Sandisk Technologies Llc Multi-stage decoder
US9584159B1 (en) 2014-07-03 2017-02-28 Avago Technologies General Ip (Singapore) Pte. Ltd. Interleaved encoding
US9972393B1 (en) 2014-07-03 2018-05-15 Avago Technologies General Ip (Singapore) Pte. Ltd. Accelerating programming of a flash memory module
US9449702B1 (en) 2014-07-08 2016-09-20 Avago Technologies General Ip (Singapore) Pte. Ltd. Power management
US9524211B1 (en) 2014-11-18 2016-12-20 Avago Technologies General Ip (Singapore) Pte. Ltd. Codeword management
KR102254102B1 (ko) * 2015-01-23 2021-05-20 삼성전자주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US10305515B1 (en) 2015-02-02 2019-05-28 Avago Technologies International Sales Pte. Limited System and method for encoding using multiple linear feedback shift registers
KR102305095B1 (ko) 2015-04-13 2021-09-24 삼성전자주식회사 비휘발성 메모리 컨트롤러의 동작 방법
US10628255B1 (en) 2015-06-11 2020-04-21 Avago Technologies International Sales Pte. Limited Multi-dimensional decoding
US9851921B1 (en) 2015-07-05 2017-12-26 Avago Technologies General Ip (Singapore) Pte. Ltd. Flash memory chip processing
US9954558B1 (en) 2016-03-03 2018-04-24 Avago Technologies General Ip (Singapore) Pte. Ltd. Fast decoding of data stored in a flash memory
US10033407B2 (en) 2016-04-08 2018-07-24 SK Hynix Inc. Optimization of low density parity-check code encoder based on a search for an independent set of nodes
DE102016107285B4 (de) * 2016-04-20 2019-04-25 Infineon Technologies Ag Verfahren zur verwendung einer speichervorrichtung, speichervorrichtung und speichervorrichtungsanordnung
US10423500B2 (en) 2016-06-01 2019-09-24 Seagate Technology Llc Technologies for limiting performance variation in a storage device
US9942005B2 (en) * 2016-08-30 2018-04-10 International Business Machines Corporation Sequence detector
US10243591B2 (en) 2016-08-30 2019-03-26 International Business Machines Corporation Sequence detectors
US10025661B1 (en) 2016-12-27 2018-07-17 Sandisk Technologies Llc Adaptive hard and soft bit decoding
US10855314B2 (en) * 2018-02-09 2020-12-01 Micron Technology, Inc. Generating and using invertible, shortened Bose-Chaudhuri-Hocquenghem codewords
US11146363B2 (en) * 2018-04-13 2021-10-12 Huawei Technologies Co., Ltd. Systems and methods for HARQ retransmission using an outer code
US10606697B2 (en) * 2018-06-21 2020-03-31 Goke Us Research Laboratory Method and apparatus for improved data recovery in data storage systems
TWI742371B (zh) * 2019-05-13 2021-10-11 義守大學 應用單項跡之錯誤更正方法
CN112152751B (zh) * 2019-06-27 2023-09-29 义守大学 单项迹的计算方法及应用单项迹的错误纠正方法
US11405057B2 (en) 2019-10-28 2022-08-02 Huawei Technologies Co., Ltd. System and method for hybrid-ARQ
KR20220054096A (ko) 2020-10-23 2022-05-02 삼성전자주식회사 패리티를 저장하는 메모리 장치 및 이를 포함하는 메모리 시스템
US11481271B2 (en) 2021-03-16 2022-10-25 Western Digital Technologies, Inc. Storage system and method for using subcodes and convolutional-based LDPC interleaved coding schemes with read threshold calibration support

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3546582A (en) * 1968-01-15 1970-12-08 Ibm Computer controlled test system for performing functional tests on monolithic devices
US4633470A (en) 1983-09-27 1986-12-30 Cyclotomics, Inc. Error correction for algebraic block codes
US4736376A (en) * 1985-10-25 1988-04-05 Sequoia Systems, Inc. Self-checking error correcting encoder/decoder
ATE228705T1 (de) * 1996-06-13 2002-12-15 Koninkl Philips Electronics Nv Verfahren und gerät zur spurweisen impulsfehlerkorrektur in einem mehrspurigen speicherformat
US6088387A (en) * 1997-12-31 2000-07-11 At&T Corp. Multi-channel parallel/serial concatenated convolutional codes and trellis coded modulation encoder/decoder
US6430722B1 (en) * 1998-01-23 2002-08-06 Hughes Electronics Corporation Forward error correction scheme for data channels using universal turbo codes
RU2190929C2 (ru) * 1998-08-06 2002-10-10 Самсунг Электроникс Ко., Лтд. Канальное кодирование/декодирование в системе связи
US7356752B2 (en) * 2000-03-14 2008-04-08 Comtech Telecommunications Corp. Enhanced turbo product codes
US6526531B1 (en) 2000-03-22 2003-02-25 Agere Systems Inc. Threshold detection for early termination of iterative decoding
US6721373B1 (en) * 2000-03-29 2004-04-13 Tioga Technologies Ltd. Multi-tone receiver and a method for operating the same
US6516035B1 (en) * 2000-04-07 2003-02-04 Actisys Corporation Intelligent encoding method for wireless data communication and control
US6865708B2 (en) 2000-08-23 2005-03-08 Wang Xiao-An Hybrid early-termination methods and output selection procedure for iterative turbo decoders
US7093179B2 (en) 2001-03-22 2006-08-15 University Of Florida Method and coding means for error-correction utilizing concatenated parity and turbo codes
US6633856B2 (en) 2001-06-15 2003-10-14 Flarion Technologies, Inc. Methods and apparatus for decoding LDPC codes
US7662313B2 (en) * 2002-09-05 2010-02-16 Nanosys, Inc. Oriented nanostructures and methods of preparing
US7162684B2 (en) 2003-01-27 2007-01-09 Texas Instruments Incorporated Efficient encoder for low-density-parity-check codes
US7430396B2 (en) 2003-07-03 2008-09-30 The Directv Group, Inc. Encoding low density parity check (LDPC) codes through an LDPC decoder
US7318187B2 (en) 2003-08-21 2008-01-08 Qualcomm Incorporated Outer coding methods for broadcast/multicast content and related apparatus
US7376883B2 (en) 2003-10-27 2008-05-20 The Directv Group, Inc. Method and system for providing long and short block length low density parity check (LDPC) codes
US7234098B2 (en) 2003-10-27 2007-06-19 The Directv Group, Inc. Method and apparatus for providing reduced memory low density parity check (LDPC) codes
US7546510B2 (en) 2003-12-30 2009-06-09 Sandisk Il Ltd. Compact high-speed single-bit error-correction circuit
US20050193320A1 (en) 2004-02-09 2005-09-01 President And Fellows Of Harvard College Methods and apparatus for improving performance of information coding schemes
US7441175B2 (en) 2004-03-12 2008-10-21 Seagate Technology Llc Turbo product code implementation and decoding termination method and apparatus
KR100594818B1 (ko) 2004-04-13 2006-07-03 한국전자통신연구원 순차적 복호를 이용한 저밀도 패리티 검사 부호의 복호장치 및 그 방법
CN1798012A (zh) * 2004-12-30 2006-07-05 松下电器产业株式会社 基于低密度奇偶校验码的校验式可信度的纠错方法
US7844877B2 (en) * 2005-11-15 2010-11-30 Ramot At Tel Aviv University Ltd. Method and device for multi phase error-correction
US8086940B2 (en) * 2008-04-28 2011-12-27 Newport Media, Inc. Iterative decoding between turbo and RS decoders for improving bit error rate and packet error rate

Also Published As

Publication number Publication date
WO2007057885A3 (en) 2009-09-03
CN101611549A (zh) 2009-12-23
CN101611549B (zh) 2012-11-28
KR101135425B1 (ko) 2012-04-23
US20070124652A1 (en) 2007-05-31
US8086931B2 (en) 2011-12-27
US7844877B2 (en) 2010-11-30
KR101275041B1 (ko) 2013-06-14
KR20080084970A (ko) 2008-09-22
US20110276856A1 (en) 2011-11-10
WO2007057885A2 (en) 2007-05-24
KR20110014667A (ko) 2011-02-11
US20100169737A1 (en) 2010-07-01
CN103023514A (zh) 2013-04-03
ATE540480T1 (de) 2012-01-15
US8375272B2 (en) 2013-02-12
CN103023514B (zh) 2016-12-21
EP1949580A2 (en) 2008-07-30
EP1949580B1 (en) 2012-01-04
JP2010509790A (ja) 2010-03-25
EP1949580A4 (en) 2010-03-31

Similar Documents

Publication Publication Date Title
JP5216593B2 (ja) 多段階誤り訂正方法及び装置
US8832518B2 (en) Method and device for multi phase error-correction
KR101110586B1 (ko) 연결된 반복 및 대수 코딩
US8448050B2 (en) Memory system and control method for the same
EP1524771B1 (en) Decoding method, decoding device, program, recording/reproduction device and method, and reproduction device and method
US8880976B2 (en) Method and apparatus for encoding LBA information into the parity of a LDPC system
JP2008527760A (ja) レプリカ結合グループシャッフル反復デコーダ及びこの生成方法
JP2013507807A (ja) 非バイナリ符号を復号するための方法
JP2008035524A (ja) 反復確率伝搬を使用して記号ブロックを復号化する装置および方法
US10090860B2 (en) Memory system using integrated parallel interleaved concatenation
US10200066B2 (en) Code reconstruction scheme for multiple code rate TPC decoder
Song et al. On multiple-deletion multiple-substitution correcting codes
US7181677B1 (en) System and method for producing data and ECC code words using a high rate restricted-symbol code
Tan et al. A general and optimal framework to achieve the entire rate region for Slepian–Wolf coding
KR20140145977A (ko) 패리티 검사 부호의 부호화 장치, 그의 부호화 방법, 복호화 장치 및 그의 복호화 방법
Shin et al. New decoding scheme for LDPC codes based on simple product code structure
Hương et al. MÃ REED-SOLOMON
Rajab et al. Product codes and generalized concatenated codes for flash memories
Vallés et al. Hamming codes are rate-efficient array codes
Jue et al. Reed-Solomon Codes: Mechanism, Improvement and Application
Lee et al. Boolean functions over nano-fabrics: Improving resilience through coding
Mitchell Mathematical approach to channel codes with a diagonal matrix structure
Micheloni et al. Error correction codes
Zhang et al. 14 Error correction codes
Sharath et al. Error Locked Encoder and Decoder for Nanomemory Application

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111125

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120112

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120119

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120316

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120326

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120416

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120423

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120525

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130208

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130304

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20160308

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees