JP2013532422A - Ldpcコードの復号のための方法、システム、およびプログラム - Google Patents

Ldpcコードの復号のための方法、システム、およびプログラム Download PDF

Info

Publication number
JP2013532422A
JP2013532422A JP2013513018A JP2013513018A JP2013532422A JP 2013532422 A JP2013532422 A JP 2013532422A JP 2013513018 A JP2013513018 A JP 2013513018A JP 2013513018 A JP2013513018 A JP 2013513018A JP 2013532422 A JP2013532422 A JP 2013532422A
Authority
JP
Japan
Prior art keywords
state
bit
condition
satisfied
target
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.)
Granted
Application number
JP2013513018A
Other languages
English (en)
Other versions
JP5723975B2 (ja
Inventor
エレフテリオウ、エヴァンジェロス、エス
ハース、ロバート
フウ、シャオユウ
ヴィエット ニュエン、ダン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2013532422A publication Critical patent/JP2013532422A/ja
Application granted granted Critical
Publication of JP5723975B2 publication Critical patent/JP5723975B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • 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/1108Hard decision decoding, e.g. bit flipping, modified or weighted bit flipping
    • 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/2957Turbo codes and decoding

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Quality & Reliability (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Error Detection And Correction (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

【課題】 LDPCコードによって符号化されたビット・シーケンスを復号するための方法を提供する。
【解決手段】 この方法は、第1の状態および第2の状態を含むビット状態セットと、ビット状態を変更するための第1の条件および第2の条件を含む条件セットと、を提供することを含む。第1の条件と第2の条件とは異なっている。この方法は、シーケンスの各ビットの値を読み取り、読み取った値に従って各ビットをセットの各状態に関連付けることと、評価した条件が満足されたことを判定することと、条件が満足されたことの結果としてターゲット・ビットの状態を変更することと、を含む。次いで、この方法は、シーケンスのターゲット・ビットの状態に従ってその値を設定することができる。
かかる方法は、伝統的なビット反転アルゴリズムよりも優れた性能で、複雑度をわずかに増すだけで、LDPCコードにより符号化されたビット・シーケンスを復号するためのソリューションを提供する。
【選択図】図3

Description

本発明はコンピュータ科学の分野に関し、具体的には低密度パリティ・チェック・コード復号の分野に関する。
低密度パリティ・チェック(LDPC:Low-density parity-check)コードは、最初にGallagerにより導入され、MackayおよびMealにより知名度が高まったものであり、許容可能な冗長性レベルで符号化された情報の高速かつロバストな検索を可能とする強力なコードである。このためLDPCコードは、情報をメモリに記憶するためまたは情報を送信するために広く用いられている。なぜなら、それらが必要とする情報の冗長性、ならびに、書き込みと読み取りとの間および送信と受信との間の情報に生じたエラーを訂正するために必要な時間が、極端に大きくはないからである。
メモリ記憶において、情報および符号化理論で広く用いられる言葉であるチャネル・モデルは、読み取られた符号化データと書き込み対象の符号化データとの間で観察されるエラーを記述するために用いられるモデルである。モデルによると、データにエラーが生じた場合、1個のデータはチャネルに追従すると言われる。典型的に、1個のデータが含むビット・シーケンスがメモリへの書き込み対象であり次いで読み取られる場合、ビットの真の値(すなわち書き込み対象のビットの値)は、書き込みの間、または記憶の間、または読み取りの間にも、変わる場合がある。用途およびエラーの理由についての仮説に応じて、異なるチャネル・モードを用いることができる。広く用いられるチャネルは、加法性ホワイト・ガウス・ノイズ(AWGN:additive white Gaussian noise)・チャネルおよび2進対称チャネル(BSC:binary symmetric channel)を含む。
シングル・レベル・セル(SLC)・フラッシュ・メモリは、ビットを書き込むことができる個別のセルから成るメモリである。このため、各セルは単一のビットを表す。フラッシュ・セルは浮動ゲート・トランジスタ技術に基づいている。すなわち、フラッシュ・セルのトランジスタ・ゲート上に「トラップされた」電荷が、フラッシュ・セル上で読み取られる論理レベル(すなわちビットの値)を決定する。いくぶん簡略化すると、フラッシュの動作方法は以下のように説明することができる。セルを「消去する」場合、ゲート上に電荷を配し、このセルを論理1として読み取る(すなわちビットの値が1である)。セル上に「0をプログラムすること(すなわち書き込むこと)」は、ゲートを放電することに相当し、論理値をゼロとする。消去された(それぞれ荷電された)セルをプログラムする(それぞれ放電する)ことができるだけである。
フラッシュは、ページおよびブロックで構成されている。ページは、典型的に多数のフラッシュ・セル(例えば情報ビットを記憶するための4096バイトおよび冗長ビットを記憶するための128バイト)から成り、ブロックは、多数のページ(例えば64)から成る。通常、読み取りおよび書き込み動作はページ・レベルで行われるが、消去動作は全ブロックに対して実行される。0に書き込まれているビットのみが放電されているので、残りのビットはなお荷電されている。これが意味するのは、いずれかの特定のセル/ビットに生じる実際の摩耗は、それまでそこに書き込まれた0の数に比例するということである。典型的にフラッシュ・セルは、10,000消去/書き込みサイクルの耐久性仕様を有する。すなわち、各セルは0により10,000回消去および書き込みを行うことができる。
フラッシュの読み取り/書き込み/消去動作に固有の荷電/放電プロセスのために、最も多く観察されるエラー・パターンは1から0への望ましくない変換であることが認められている。これは、図1に示すいわゆる2進非対称チャネル(BAC:binary asymmetric channel)によってモデル化することができる。図1を参照すると、書き込まれた1は、確率1−aで1として、エラー確率aで0として読み取ることができ、記憶された0は、確率1−a/bで0として、エラー確率1−a/bで1として読み取ることができる。ここでaは10−3から10−5までの範囲の小さい数であり、bは例えば10のような1よりも大きい実数である。あるいは図2に示すように、0から1へのエラー・パターンを無視することによって、フラッシュ・メモリをZチャネルでモデル化することができるが、これはbが無限大になるときのBACの特別な場合である。
他のチャネル・モデルにおいてと同様、LDPCコードによって符号化されたビット・シーケンスをフラッシュ・メモリ上に書き込むことができる。非特許文献1〜非特許文献4は、非対称チャネルについてのLDPC符号化を扱っている。
LDPCコードで符号化された情報を復号するために、実用的な復号アルゴリズムが用いられる。これらには、ビット反転(bitflipping)、Gallager A/B、確率伝播(belief propagation)、および積和(sum-product)等のアルゴリズムが含まれ、これらは長いLDPCコードで動作し、例外的なエラー保護を与えることが実証されている。これらの復号アルゴリズムのうち、ビット反転は最も簡単で実施が容易なものである。
ビット反転アルゴリズムの1つの利点は、他のアルゴリズムに比べて関連する復号の複雑度が著しく低いことである。例えばFeng GuoおよびLajos Hanzolの「Reliability Radio Based Weighted Bit−Flipping Decoding for LDPC codes」と題する文書に開示された、積和アルゴリズムに対する比較を簡単に述べる。積和アルゴリズムでは、繰り返し当たりの符号化ビット当たり、2jq数の加算および7jq/log2(q)の乗算が必要である。ここでqは復号フィールドのサイズであり、この2進状況では2である。ブロック長が1000ビットであり最大の繰り返し数が10である場合、必要な算術演算数は200,000の加算および700,000の乗算である。更に、ビット反転アルゴリズムでは、高コストの加算および乗算を何ら必要としない。ビット反転アルゴリズムでは、シンドロームを評価することによる論理演算を必要とするだけであり、これはデジタル論理をほとんど必要とせず、極めて高速とすることができる。
非特許文献5〜7は、LDPCコードの繰り返し復号についてビット反転アルゴリズムの様々なバージョンを扱っている。
「LDPC codes for binary asymmetric channels」Marina, N.、ICT 2008、International Conference on Telecommunications, 2008、2008年6月16〜19日、1〜7ページ。 「Does the Performance of LDPC Codes Depend on the Channel ?」Franceschini, M.、Ferrari, G.、Raheli, R.、IEEE Transactions on Communications、Volume 54、Issue 12、2006年12月、2129〜2132ページ。 「Maximum Likelihood Decoding of Codes on the Z−channel」Barbero, A、Ellingsen, P.、Spinsante, S.、Ytrehus, O.、IEEE International Conference on Communications, 2006、Volume 3、2006年6月、1200〜1205ページ。 「Density evolution for asymmetric memoryless channels」Wang, C.−C.、Kulkarni, S.R.、Poor, H.V.、IEEE Transactions on Information Theory、Volume 51、Issue 12、2005年12月、4216〜4236ページ。 「An improvement on the modified weighted bit flipping decoding algorithm for LDPC codes」Ming Jiang、Chunming Zhao、Zhihua Shi、Yu Chen、IEEE Communications Letters、Volume 9、Issue 9、2005年9月、814〜816ページ。 「On the Error Correction of Regular LDPC Codes Using the Flipping Algorithm」Burshtein, D.、IEEE Transactions on Information Theory、Volume 54、Issue 2、2008年2月、517〜530ページ。 「A Modification to Weighted Bit−Flipping Decoding Algorithm for LDPC Codes Based on Reliability Adjustment」Dajun Qian、Ming Jiang、Chunming Zhao、Xiaofu Wu、IEEE International Conference on Communications, 2008、ICC ’08、2008年5月19日〜23日、1161〜1165ページ。
以下では、広い範囲でのビット反転アルゴリズムを説明する。
長さNおよび次元Kの2進(N,K)LDPCコードは典型的に、パリティ・チェックの行列Hによって規定される。HはN列およびM行を有し、M≧N−Kである。Hの各列は情報ビットまたはパリティ・ビットに相当し、各行はチェック・サムに相当する。いずれかの一時的なビット決定ベクトルbについて、チェック・サムのセットまたはシンドロームはベクトルs=bHである。
ビット反転アルゴリズムにおいて、復号器は、簡単なXOR演算によって2進入力シーケンスb(すなわち読み取ったフラッシュ・ページ)を用いて各パリティ・チェックを計算する(すなわちs=bH)。パリティ・チェックは、sにおける対応するビットが0の場合は満足され、これが1の場合は満足されない。次いで、あるビットを含む満足されないチェックの数が固定の反転閾値tを超えた場合に、このビットを反転するようにスケジュールする。そして、反転したビットを復号プロセスの次の繰り返しで用いる。復号アルゴリズムは、パリティ・チェックが全て満足された場合または既定の最大繰り返し限度に達した場合に停止する。従って、この結果得られたビット反転アルゴリズムのための疑似コードは、以下のステップを含む。
i.s=bHを用いてパリティ・チェックを計算する。これらのパリティ・チェックの全てが満足された場合、復号を停止する。
ii.さもなければ、各ビットについて満足されないパリティ・チェックの数を検出する。ビットの各々を順番にターゲットと見なす。
iii.ターゲット・ビットを用いたパリティ・チェック式の過半数が満足されない場合、次の復号繰り返しの前にそのビットを反転する。
iv.ステップ(i)から(iii)を繰り返す。
上述のアルゴリズムは、2進対称チャネルに書き込まれたLDPCコードを復号する際に満足な結果を提供する。しかしながら、LDPCコードの復号を改良する方法を提供することが必要とされている。
第1の態様によれば、本発明は、フラッシュ・メモリ等の2進非対称チャネルに追従するメモリ上に書き込まれたビット・シーケンスを復号するための方法として具現化され、ビット・シーケンスが低密度パリティ・チェック・コードすなわちLDPCにより符号化されており、これによってシーケンスの各ビットがLDPCコードにより規定された対応するパリティ・チェックを有する。この方法は、
−第1の状態および第2の状態を含むビット状態セットと、条件セットと、を提供することであって、条件が満足された場合にビット状態が変更されることになり、条件セットが、ビット状態を第1の状態から第2の状態へと変更するための第1の条件と、ビット状態を第2の状態から第1の状態へと変更するための第2の条件と、を含み、第1の条件と第2の条件とは異なっている、ことと、
−ビット・シーケンスの各ビットの値を読み取り、読み取った値に従って各ビットをセットの各状態に関連付けることと、
−ビット・シーケンスのターゲット・ビットについて、条件を評価することであって、
・条件は、ターゲット・ビットの状態に従って条件セットから選択され、
・条件を評価することは、ターゲット・ビットに対応したパリティ・チェックの計算結果を用いる、ことと、
−条件が満足されたことを判定することと、
−条件が満足されたことの結果としてターゲット・ビットの状態を変更することと、
−ターゲット・ビットの状態に従ってターゲット・ビットの値を設定することと、
を含む。
実施形態において、この方法はいかの特徴の1つ以上を含むことができる。
−評価するステップを繰り返し、ターゲット・ビットが、評価するステップの各繰り返しにおいてシーケンスの異なるビットであり、
−パリティ・チェックの計算の結果によって全てのパリティ・チェックが満足されたことが示されるか、または最大繰り返し数に達するまで、評価するステップを繰り返す、
−ビット状態セットが第1の状態および第2の状態から成り、条件セットが第1の状態および第2の状態から成り、各ビットを関連付けるステップにおいて、ビットを、ビットの値が0と読み取られた場合は第1の状態に、ビットの値が1と読み取られた場合は第2の状態に関連付け、ターゲット・ビットの値を設定するステップにおいて、ターゲット・ビットの値を、ターゲット・ビットが第1の状態に関連付けられている場合は0に、ターゲット・ビットが第2の状態に関連付けられている場合は1に設定する、
−ターゲット・ビットに対応したパリティ・チェックの過半数が満足されない場合はいつでも第1の条件が満足され、ターゲット・ビットに対応した全てのパリティ・チェックが満足されない場合はいつでも第2の条件が満足される、
−満足されないターゲット・ビットに対応したパリティ・チェックの数が第1の閾値よりも大きい場合はいつでも第1の条件が満足され、満足されないターゲット・ビットに対応したパリティ・チェックの数が第2の閾値よりも大きい場合はいつでも第2の条件が満足され、第1の閾値と第2の閾値とは異なっている、
−ビット状態セットが第3の状態および第4の状態を更に含み、条件セットが条件対の第1のサブセットを含み、対の一方の条件が、ビット状態をi番目の状態からj番目の状態へと変更するための条件であり、対の他方の条件が、ビット状態をj番目の状態からi番目の状態へと変更するための条件であり、対の条件は異なっており、第1の条件および第2の条件が第1のサブセットの対を形成し、条件セットが条件対の第2のサブセットも含み、対の一方の条件が、ビット状態をk番目の状態からl番目の状態へと変更するための条件であり、対の他方の条件が、ビット状態をl番目の状態からk番目の状態へと変更するための条件であり、第2のサブセットの対の条件は同一である、
−条件セットが、ビット状態をm番目の状態からn番目の状態へと変更するための少なくとも1つの条件を含む第3のサブセットを更に含み、条件セットにおいて、ビット状態をm番目の状態からn番目の状態へ変更するための条件は存在しない、
−ターゲット・ビットに対応した全てのパリティ・チェックの全て、または少なくとも1つであるが過半数よりも少数、または過半数が満足されないか、またはターゲット・ビットに対応した全てのパリティ・チェックが満足された場合はいつでも、条件が満足される、
−第1のビット状態が、メモリへの書き込み対象のビットの値が0であることの高い信頼度に対応し、第2の状態が、メモリへの書き込み対象のビットの値が0であることの低い信頼度に対応し、第3の状態が、メモリへの書き込み対象のビットの値が1であることの高い信頼度に対応し、第4の状態が、メモリへの書き込み対象のビットの値が1であることの低い信頼度に対応し、条件の第1のサブセットが、ターゲット・ビットに対応した全てのパリティ・チェックの少なくとも1つであるが過半数よりも少数が満足されない場合に満足される第1の条件と、ターゲット・ビットに対応した全てのパリティ・チェックが満足されない場合に満足される第2の条件と、ターゲット・ビットに対応した全てのパリティ・チェックの少なくとも1つであるが過半数よりも少数が満足されない場合に満足される、ビットを第3の状態から第4の状態へと変更させるための第3の条件と、ターゲット・ビットに対応した全てのパリティ・チェックが満足されない場合に満足される、ビットを第4の状態から第3の状態へと変更させるための第4の条件と、を含み、条件の第2のサブセットが、ターゲット・ビットに対応した全てのパリティ・チェックの過半数が満足されない場合に満足される、ビットを第2の状態から第4の状態へと変更させるための第5の条件と、ターゲット・ビットに対応した全てのパリティ・チェックの過半数が満足されない場合に満足される、ビットを第4の状態から第2の状態へと変更させるための第6の条件と、を含み、条件の第3のサブセットが、ターゲット・ビットに対応した全てのパリティ・チェックの過半数が満足されない場合に満足される、ビットを第1の状態から第4の状態へと変更させるための第7の条件と、ターゲット・ビットに対応した全てのパリティ・チェックの過半数が満足されない場合に満足される、ビットを第3の状態から第2の状態へと変更させるための第8の条件と、を含む、
−ターゲット・ビットに対応したパリティ・チェックの計算が、対応するビット状態によって決定されたシーケンスのビットの値に従って実行される。
別の態様によれば、本発明は、コンピュータによって実行するための命令を含むコンピュータ・プログラムが記録されたコンピュータ読み取り可能記憶媒体として具現化され、この命令が上述の方法を実行するための手段を含む。
更に別の態様によれば、本発明はシステムとして具現化され、これは、
−LDPCコードによって符号化されたビット・シーケンスを書き込むのに適したメモリと、
−上述の方法を実行するための手段と、
を含む。
実施形態において、メモリは、好ましくは浮動ゲート・トランジスタ技術に基づくフラッシュ・メモリである。
本発明の更に別の特徴および利点は、以下に列挙する添付図面を参照して、非限定の例として与えられる本発明の実施形態の以下の記載から明らかとなろう。
2進非対称チャネルの例を示す。 2進非対称チャネルの例を示す。 ビット・シーケンスを復号するための方法の一例のフローチャートを示す。 ビット・シーケンスを復号するための方法の一例における状態および条件のセットを表す。 ビット・シーケンスを復号するための方法の一例における状態および条件のセットを表す。 ビット・シーケンスを復号するための方法のシミュレーションの結果を示す。 本発明の一実施形態によるコンピュータ・ハードウェアのブロック図である。
メモリ上に書き込まれたビット・シーケンスを復号するためのコンピュータ実施方法を提供する。ビット・シーケンスは、低密度パリティ・チェック(すなわちLDPC)・コードによって符号化されており、これによってビット・シーケンスは、LDPCコードにより規定された対応するパリティ・チェックを有する。この方法は、第1の状態および第2の状態を含むビット状態セットと、条件セットと、を提供することを含む。1つの条件が満足された場合、ビットの状態は変更されることになる。条件セットは少なくとも第1の条件および第2の条件を含む。第1の条件は、ビット状態を第1の状態から第2の状態へと変更するためのものである。第2の条件は、ビット状態を第2の状態から第1の状態へと変更するためのものである。第1の条件と第2の条件とは異なっている。この方法は、メモリ上に書き込まれたビット・シーケンスの各ビットの値を読み取ることと、読み取った値に従って各ビットをセットの各状態に関連付けることと、を含む。この方法は、ビット・シーケンスのターゲット・ビットについて条件を評価することを含む。評価する条件は、ターゲット・ビットの状態に従って条件セットから選択する。評価するステップは、ターゲット・ビットに対応するパリティ・チェックの計算結果を利用する。この方法は、条件が満足されたことを判定し、条件が満足されたことの結果としてターゲット・ビットの状態を変更するステップを含む。次いで、この方法は、その状態に従ってターゲットの値を設定することができる。好ましくは、この方法を、読み取ったビット・シーケンスの各ビットについて繰り返す。最後に、シーケンスの各ビットの値をその各状態に従って設定する。かかる方法は、伝統的なビット反転アルゴリズムよりも優れた性能で、複雑度をわずかに増すだけで、LDPCコードにより符号化されたビット・シーケンスを復号するためのソリューションを提供する。
メモリ上に書き込まれたビット・シーケンスを復号するとは、この方法が、書き込み対象のビット・シーケンスにできる限り近付くことを意味する。この復号方法は、ビット・シーケンスを復号することだけでなく復号後に例えばLDPCコードのビット・シーケンスを単語と関連付けた辞書を用いてビット・シーケンスを解釈することも含むもっと広い方法の一部とすることができる。
ビット・シーケンスはLDPCコードにより符号化されており、これは、書き込み対象のビット・シーケンスの値のシーケンスがLDPCコードにより承認されたシーケンスであることを意味するので、シーケンスのビットはLDPCコードにより規定された対応するパリティ・チェックを有する。これは本質的にLDPC符号化として知られる。以下において、シーケンスを(b、...、b)で表す。シーケンスのビットbの少なくとも一部について、bおよび他のビットに関連した動作(すなわちパリティ・チェック)がある。例えばJ回の動作の各々が、k(j)の他のビット(B 、...、bk(j) )に関連し(jは1からJである)、これについて予想される結果がある。動作はXOR演算であり、b+b +...+bk(j) とすることができ、0に等しいことが予想される。以下において、パリティ・チェックとは、この演算の結果を意味することができる。パリティ・チェックは、予想された値と等しい場合は満足されると言われ、予想されていない値に等しい場合は満足されていないと言われる。
この方法は、第1の状態および第2の状態を含む少なくとも2つの異なる状態を有するビット状態セットと、条件セットと、を提供することを含む。1つの条件が満足された場合、ビットの状態は変更されることになる。条件セットは、第1の条件および第2の条件を含む少なくとも2つの条件を含む。第1の条件は、ビット状態を第1の状態から第2の状態へと変更するための条件である。第2の条件は、ビット状態を第2の状態から第1の状態へと変更するための条件である。第1の条件と第2の条件とは異なっている。状態は、この方法において用いられビットに関連付けられた中間変数である。ビットの状態は、ビットの値にリンクされることになり、従ってビットの値の検索を可能とする。これについては以下で例示する。条件は、ビットの状態を変更するための必要条件である。条件が満足された(すなわち満たされた)と評価されると、ビットの状態はある状態から別の状態へと変更されることになる。状態がsであるビットbでは、条件は、bまたはsあるいはその両方に応じたブール関数とすることができる。関数の評価の結果が真である(それぞれ偽である)場合、条件が満足された(それぞれ満足されない)と言われる。この場合、第1の条件および第2の条件が異なっているという事実により、少なくとも2つの関数が同一の入力について異なる結果を生じるようになっていることが示される。
この方法は、メモリ上に書き込まれたビット・シーケンスの各ビットの値を読み取ることと、読み取った値に従って各ビットをセットの各状態に関連付けることと、を含む。ビットの値は従来の方法で規定される。すなわち、これはその論理レベルであり、1または0に等しい。どのように関連付けを行うかについての例を後に示す。
この方法は、ターゲット・ビットb の状態に従って条件セットから選択した条件を評価することを含む。パリティ・ビットは、シーケンスの1つのビットであり、例えばシーケンスの第1のビットである。ターゲット・ビットの状態s に従って選択を実行するので、状態s を別の状態に変更させない条件、すなわち状態s≠s を別の状態に変更させる条件の評価は行わないことが保証される。これによって、不必要な条件を評価することを防止し、この方法を迅速化する。実施形態において、評価するステップは、ターゲット・ビットに対応したパリティ・チェックを計算することを含む。典型的に、パリティ・チェックの計算は、条件の評価を行うターゲット・ビットを選択した後に行う。しかしながら、他の実施形態では、シーケンスの全ビットに対応したパリティ・チェックの計算を、所与のターゲット・ビットを選択する前、すなわち関連するビットの対応した状態によって決定した現在のビット値に基づいて実行する。このため一般に、評価するステップは、(少なくとも)ターゲット・ビットに対応したパリティ・チェックの計算結果を利用するものと見なすことができる。具体的には、満足されないパリティ・チェックまたは満足されたパリティ・チェックあるいはその両方のパリティ・チェックの数を含む比較を行うことができる。例えば、満足されないパリティ・チェックまたは満足されたパリティ・チェックあるいはその両方の数を閾値と比較することができる。このように、評価によって復号を迅速に実行することができる。
条件が満足されたと評価した場合、この方法は、条件が満足されたことの結果としてターゲット・ビットの状態を変更する。これによって、この方法の終了時に最も適切な状態がターゲット・ビットに関連付けられていることが確実となる。この方法は次いで、ターゲット・ビットの値、およびおそらくは各ビットの状態に従ったシーケンスの各ビットの値を設定することができる。このステップは、何を読み取るかには無関係に、書き込み対象とされたビットの値を決定することになる。ビットを変更し、最も適切な状態をビットに関連付ける可能性によって、各ビットの値を設定した場合に、(少なくとも部分的に)ビットの「正しい」値の検索を可能とする。
パリティ・チェックの計算は、ターゲット・ビットの状態に従って、およびターゲット・ビットに対応したパリティ・チェックに含まれる他のビットの状態に従って実行することができる。パリティ・チェックを計算するために先に与えた式b+b +...+bk(j) において、用いた値b、b 、...、bk(j) は、対応するビット状態に従って各ビットについて設定した値とすることができる。これについては後に例示する。
見て取れるように、複雑な式を解く必要はない。このため、従来技術のビット反転アルゴリズムにおいてと同様、この方法は複雑度が低く、著しく迅速である。
従来技術の伝統的なビット反転アルゴリズムにおいては、ターゲット・ビットに対応したパリティ・チェックの過半数が満足されない場合はいつでもビットの値を反転する。換言すると、条件は1つだけである。本方法では、少なくとも2つの異なる条件を有する条件セットが提供される。異なる条件を有することによって、例えばチャネルの非対称性からメリットを得ることができる。このため、ビットを反転するか否かの決定は、現在のビットの状態に左右される。この方法は、複数のビットに繰り返した場合、終了時に観察されるエラー・レート(エラー・レートは、ターゲット・ビットまたはシーケンスの他のビットあるいはその両方の値を設定するステップの後にこの方法が出力するビット・シーケンスと書き込み対象のビット・シーケンスとの間の差を表すものである)は、伝統的なビット反転アルゴリズムのものよりも低いことが確実とする。従ってこの方法では、ビット反転アルゴリズムが改善(すなわちエラー・レートが低下)し、複雑度は線形に変化するだけである。
先に注記したように、メモリは2進非対称チャネルに従うことができる。これは例えばフラッシュ・メモリとすることができる。この場合、図1および図2を参照すると、この方法の非対称性(すなわちセットの2つの状態が異なるという事実)によってエラー・レートが著しく低下する。このため、ビットの状態に条件を適合させることができる。その考えは、1が読み取られた場合、書き込み対象のビットが1であった可能性が高いことを意味するということである。実際、チャネルは、0が誤って1に変換される確率が低いようになっている。一般的に、1を0に変更する条件は、0を1に変更する条件と同一でない方が良い。2つの異なる条件を有する条件セットによって、確実にこれが検証される。原理的に、ビット反転アルゴリズムは、変更なしの2進非対称チャネル(BAC)上で用いることができるが、BACの特別な性質のために著しい性能劣化があり、これは特に、フラッシュ・メモリにおける場合のようにbが比較的大きい場合に当てはまる。
図3を参照すると、この方法の一実施形態を示すフローチャートが示されている。まず、ビット状態セット10を提供する。これは例えば第1の状態および第2の状態を含む。更に、状態セット20を提供する。前述のように、条件が満足されたと評価した場合にビットの状態を変更するように、条件が設計されている。条件は少なくとも以下を含む。
−第1の条件、すなわち第1の状態から第2の状態へとビット状態を変更させるか否かについて。
−第2の条件、すなわち第2の状態から第1の状態へとビット状態を変更させるためのもの。第2の条件は第1の条件とは異なっている。
図示のように、書き込んだビット・シーケンスの各ビットの値を読み取る。次いで、読み取ったビットの値に従って、対応するビットを各状態に関連付ける(ステップS100)。
次いで、シーケンスの所与のターゲット・ビット(30)について、条件を評価する(ステップS200)。以下のことに留意すべきである。
−条件は、ターゲット・ビットの状態に従って、条件セット20から選択する。
−条件の評価は、先に注記したように、ターゲット・ビットに対応したパリティ・チェックの計算結果を利用する。
全てのパリティ・チェックは、ターゲット・ビット30の選択前に計算可能であることに留意すべきである。これに対して、ターゲット・ビットに対応したパリティ・チェックは、ターゲット・ビットの選択後、条件自体を評価する前に計算することができる。これについては以下で更に詳細に論じる。
次にステップS300において、選択した条件が満足されたと判定した場合、これに応じてターゲット・ビットの状態を変更する(ステップS400)。あるいは、ターゲット・ビットの状態を変更しない(ステップS300a)。
最後に、ターゲット・ビットの値を、その各状態に従って設定することができる(ステップS500)。
好ましくは、図3に示すようなプロセスを繰り返す(ステップS600)。ターゲット・ビット30は、各繰り返しにおいて異なるビットであり、例えばシーケンス内の全てのビットを処理するためにシーケンス内の次のビットとする。各繰り返しは、適切に選択した条件を評価すること、条件が満足されたか否かを判定すること、および、必要な場合は現在処理しているビットの状態を変更することを含む。
一実施形態では、各繰り返しにおいてターゲット・ビットに対応したパリティ・チェックを計算する必要がある。前述のように、パリティ・チェックの計算は、シーケンスのビットの現在の状態から検索することができるビット値を含む。次いで、必要な場合には、現在のターゲット・ビットの値を、(繰り返しの完了時に得た)その現在の状態に従って設定することができる。かかる実施形態は図3のフローチャートに対応する。
一つの変形例においては、パリティ・チェックは最初に、対応した状態によって決定されるシーケンス内のビットの現在の値に従って計算される。次いで、シーケンスの全ビットを繰り返し処理することができる。すなわち、各繰り返しは、適切に選択した条件を評価すること、条件が満足されたか否かを判定すること、および、必要な場合には現在処理しているビットの状態を変更することを含む。最後に、ビット繰り返しが完了すると、シーケンスの各ビットの値を、前記各ビットの現在の状態に従って設定する。これは、ビット繰り返しにおいて各ビットについてパリティ・チェックを再計算する必要がなく時間の節約になるという利点を有する。
全ての場合において、評価ステップは、ターゲット・ビットに対応したパリティ・チェックの計算結果を利用する。
実施形態においては、全てのパリティ・チェックが満足されるまで、すなわちパリティ・チェック計算の結果によってこれが示されるまで、プロセスを更に繰り返す。変形例では、収斂を確実とするために、最大繰り返し数に達するまでプロセスを繰り返す。
従って、繰り返しにより、シーケンスのビットのほとんどが終了時に最も適切な状態に関連付けられていることが確実となる。このため、ビットの値を設定するステップにおいて、設定される値は最も正確であると考えられる。
以下で、この方法の2つの実施形態について図4および図5を参照して論じる。これらは、ビット状態セットおよび条件セットの実際の実施を例示する。
図4の例(「変更ビット反転アルゴリズム」とも称する)において、状態セットは第1の状態S1および第2の状態S2から成る。換言すると、ここではビット状態は2つだけである。このため、ビットが例えば1または0の2進値を有すると仮定した場合、ビットの状態と値との間の全単射対応関係が可能となる(これを以下で考察する)。例えば、S1は0に相当し、S2は1に相当する。条件セットは第1の状態C1および第2の状態C2から成る。各ビットを各状態に関連付けた場合、ビットの値が0と読み取られた場合これは第1の状態S1に関連付けられ、ビットの値が1と読み取られた場合これは第2の状態S2に関連付けられる。上述のように、2つの条件に依拠する。第1の条件C1はビット状態をS1からS2に変更するものであり、第2の条件C2はビット状態をS2からS1に変更するものである。しかしながら、例えばチャネルの非対称性からメリットを得るために、第1の条件と第2の条件とは異なっている。評価プロセスの完了時に、ターゲット・ビットの状態が第1の状態S1である場合はターゲット・ビットの値を0に設定し、ターゲット・ビットの状態が第2の状態S2である場合はターゲット・ビットの値を1に設定する。かかる復号方法は、特に複雑度が低い。このため、この例では、状態S1およびS2は中間変数であり、ビット値と状態との間には完全な対応関係がある。
更に詳細には、ターゲット・ビットに対応したパリティ・チェックの過半数が満足されない場合はいつでも、または、満足されないターゲット・ビットに対応したパリティ・チェックの数が第1の閾値tよりも大きい場合はいつでも、第1の条件C1を満足させることができる。ターゲット・ビットに対応した全てのパリティ・チェックが満足されない場合はいつでも、または、満足されないターゲット・ビットに対応したパリティ・チェックの数が第2の閾値tよりも大きい場合はいつでも、第2の条件C2を満足させることができる。第1の閾値tおよび第2の閾値tを用いる場合、これらはそれぞれ異なっている。典型的に、S1は0に相当し、S2は1に相当するので、t<tである。あるいは、比較のために割合を用いることができる。上述の方法の範囲内で、他にも多くの適切な条件を想定することができる。一般に、ターゲット・ビットに対応したパリティ・チェックの全て、または少なくとも1つであるが過半数よりも少数、または過半数が満足されない場合はいつでも、条件を満足させることができる。他の種類の条件について、第2の例を参照して述べる。2つの例のいずれかに当てはまる条件は、他の例にも適用することができる。閾値の値は、チャネルの値aおよびbに応じて決めることができる。これによって、この方法が実行されるメモリに応じてこの方法を適合することが保証される。
この方法を実行する第2の例(「2ビット−ビット反転アルゴリズム」とも称する)について、図5を参照して論じる。図5に例示するように、ビット状態セットは、第3の状態S3および第4の状態S4を更に含むことができる。条件セットは、例えば{(C1、C2)、(C3、C4)}等、条件対の第1のサブセットを含むことができる。形式上、対(C1、C2)または(C3、C4)の一方の条件(C1またはC3)は、ビット状態をi番目の状態からj番目の状態へと変更するための条件である。対の他方の条件(C2またはC4)は、ビット状態をj番目の状態からi番目の状態へと変更するための条件である。ここで、対の条件はそれぞれ異なっている。すなわち、第1の条件C1および第2の条件C2は第1のサブセット{(C1、C2)、(C3、C4)}の対(C1、C2)を形成する。i番目の状態はS1またはS3とすることができ、j番目の状態はS2またはS4とすることができる。
図5の例において、条件セットは、{(C5、C6)}等、条件対の第2のサブセットも含む。ここで、対{(C5、C6)}の一方の条件C5は、ビット状態をk番目の状態(例えばS2)からl番目の状態(例えばS4)へと変更するための条件であり、他方の条件C6は、ビット状態をl番目の状態からk番目の状態へと変更するための条件である。条件対の第1のサブセットとは異なり、条件は同一である。図5の場合、第2のサブセットは対を1つだけ(C5、C6)を有する。このため、この場合、パラメータkおよびlは値5または6を取ることができる。しかしながら、例えば5つ以上の状態がある場合、第2のサブセットは一般に2つ以上の対を有することができる。かかる方法は、中間状態を導入することによって状態間の遷移を改善する。第1のサブセットは、異なる状態間に非対称性を導入する。非対称性および中間状態の組み合わせにより、書き込み対象のシーケンスにいっそう近い最終結果に達することができる。
条件セットは、{(C7、C8)}等の第3のサブセットを更に含むことができ、これは、ビット状態をm番目の状態(例えばS1またはS3)からn番目の状態(例えばS4またはS2)へと変更するための少なくとも1つの条件C7またはC8を含む。この場合、対になる条件、すなわちビット状態をm番目の状態からn番目の状態へ変更するための条件は存在しないことに留意すべきである。これによって、この方法に更に非対称性が導入され、実際の正確さが改善する。
以下の表Iおよび図6に示す場合のように、第1のビット状態S1は、メモリへの書き込み対象のビットの値が0であることの高い信頼度に対応することができる。第2の状態S2は、メモリへの書き込み対象のビットの値が0であることの低い信頼度に対応することができる。第3の状態S3は、メモリへの書き込み対象のビットの値が1であることの高い信頼度に対応することができる。第2の状態は、メモリへの書き込み対象のビットの値が1であることの低い信頼度に対応することができる。かかる場合に各ビットをセットの各状態に関連付けると、値が0と読み取られた場合はビットを状態S1またはS2に関連付けることができ、値が1と読み取られた場合はS3またはS4に関連付けることができる。シーケンスの各ビットの値を設定するステップでは、ビットの状態がS1またはS2である場合は値を0に設定することができ、状態がS3またはS4である場合は1に設定することができる。このため、図4の例においてと同様に、状態と、ビットが有することができる2つの値0または1との間に、対応関係を持たせることができる(これは一般に当てはまるはずである)。
更に、この対応関係は、パリティ・チェックを計算するために先に与えた式b+b +...+bk(j) において用いることができる。実際、ビットの状態b、b 、...、bk(j) がS1またはS2である場合は、用いる値を0とすることができ、ビットの状態b、b 、...、bk(j) がS3またはS4である場合は、1とすることができる。この第2の例および第1の例で示したように、ターゲット・ビットに対応したパリティ・チェックの計算は、一般的な場合、例えば対応するビット状態によって決定されたシーケンスのビットの値に従って実行することができる。
この方法の第2の例では、状態セットは4つの状態から成ることができる。この場合、ビット状態は各状態について2ビット論理で実施することができ、第1の例に比べてオーバーヘッドを招く。
この方法の第2の例は、条件セットを適切に変更することによって2進対称チャネル(BSC)等の他のチャネル・モデルに使用可能であることに留意すべきである。
以下の表1は、特定の例についての拡張条件セットおよび対応する状態セットを示す。この場合も、かかる状態および条件のセットの実施は、複雑度が比較的低く、実際に良好な結果を達成する。
Figure 2013532422
図6は、ランダム・レギュラーLDPCコードのシミュレーション結果を示す。コード長は1908であり、列重みは4であり、レートは0.8889である。この結果は、4つの異なる復号方法を用いる場合のフレーム・エラー・レート対遷移確率aを示す。aの値は、図1の2進非対称チャネルで用いたものであり、bは10に等しい。フレーム・エラー・レートは、復号方法を実行した後に残っているグローバル・エラーである。換言すると、これは、復号方法が出力したビット・シーケンスと書き込み対象のビット・シーケンスとの間の差である。復号方法の2つは、従来技術のGallager Bアルゴリズムおよび前述した通常のビット反転アルゴリズムである。他の2つの復号方法の一方は、第1の例に対応する「変更ビット反転アルゴリズム」であり、tおよびtはaおよびbに従って選択する。他の2つの方法の他方は、表1に対応する「2ビット−ビット反転アルゴリズム」である。
この結果からわかるように、シミュレーションを行うaの全ての値について、「2ビット−ビット反転アルゴリズム」および「変更ビット反転アルゴリズム」の双方では、最終フレーム・エラー・レートがそれぞれ低く、従来技術のアルゴリズムに比べて復号の改善を示す。
コンピュータ・プログラムは、コンピュータ化システムによって実行するための命令を含むことができる。この命令は、上述の方法の一部または全てを実行するための手段を含む。かかるコンピュータ・プログラムは、例えばCD、ハード・ディスク、またはフラッシュ・メモリのようなコンピュータ読み取り可能記憶媒体上に記録することができる。
システムは、LDPCコードにより符号化されたビット・シーケンスを書き込むのに適したメモリ、および、上述の復号方法を実行するためにこのメモリに適切に接続された手段を含むことができる。メモリは、好ましくは浮動ゲート・トランジスタ技術に基づいたフラッシュ・メモリとすることができる。かかるシステムは、データの記憶について特にロバストである。実際、復号方法を実行するための手段があるので、変更した/失われたデータの検索が迅速かつ正確である。
本発明は、システム、方法、またはコンピュータ・プログラムとして具現化可能であることは理解されよう。具体的には、本発明はコンピュータ実施方法として具現化することができる。従って、本発明の態様は、全体的にハードウェアの実施形態、全体的にソフトウェアの実施形態(ファームウェア、常駐ソフトウェア、マイクロコード等を含む)、または、ソフトウェアおよびハードウェアの態様を組み合わせた実施形態という形態を取ることができ、それらは全て本明細書において、「回路」、「モジュール」、または「システム」と一般的に称することができる。更に、本発明の態様は、具現化されたコンピュータ読み取り可能プログラム・コードを有する1つ以上のコンピュータ読み取り可能媒体(複数の媒体)において具現化されたコンピュータ・プログラムの形態を取ることも可能である。
1つ以上のコンピュータ読み取り可能媒体(複数の媒体)のあらゆる組み合わせを利用することができる。コンピュータ読み取り可能媒体は、コンピュータ読み取り可能信号媒体またはコンピュータ読み取り可能記憶媒体とすることができる。コンピュータ読み取り可能記憶媒体は例えば、限定ではないが、電子、磁気、光、電磁、赤外線、または半導体のシステム、装置、デバイス、または前述のもののいずれかの適切な組み合わせとすることができる。コンピュータ読み取り可能記憶媒体の更に具体的な例(非網羅的な列挙)は、以下を含む。すなわち、1本以上のワイヤを含む電気的接続、携帯型コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み取り専用メモリ(ROM)、消去可能プログラマブル読み取り専用メモリ(EPROMまたはフラッシュ・メモリ)、光ファイバ、携帯型コンパクト・ディスク読み取り専用メモリ(CD−ROM)、光記憶デバイス、磁気記憶デバイス、または前述のもののいずれかの適切な組み合わせである。前述のいずれのものも、特別に設計したASIC(特定用途向け集積回路)によって補足することができ、またはそれに組み込むことができる。この文書の文脈において、コンピュータ読み取り可能記憶媒体は、命令実行システム、装置、またはデバイスによってまたはそれと接続して用いるためにプログラムを含有または記憶することが可能ないずれかのタンジブルな媒体とすることができる。
コンピュータ読み取り可能信号媒体は、例えばベースバンドにおいてまたは搬送波の一部として、具現化されたコンピュータ読み取り可能プログラム・コードを有する伝播データ信号を含むことができる。かかる伝播信号は様々な形態のいずれかを取ることができ、それらは限定ではないが、電磁、光、またはそれらのいずれかの適切な組み合わせを含む。コンピュータ読み取り可能信号媒体は、コンピュータ読み取り可能記憶媒体でないが、命令実行システム、装置、またはデバイスによってまたはそれと接続して用いるためにプログラムを伝達、伝播、または転送することが可能ないずれかのコンピュータ読み取り可能媒体とすることができる。
コンピュータ読み取り可能媒体上で具現化されるプログラム・コードは、限定ではないが、無線、有線、光ファイバ・ケーブル、RF等、または前述のもののいずれかの適切な組み合わせを含むいずれかの適切な媒体を用いて伝送することができる。
本発明の態様の動作を実行するためのコンピュータ・プログラム・コードは、Java、Smalltalk、C++等のオブジェクト指向プログラミング言語、および「C」プログラミング言語または同様のプログラミング言語等の従来の手順プログラミング言語を含む1つ以上のプログラミング言語のいずれかの組み合わせにおいて記述することができる。プログラム・コードは、全体的にユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、スタンドアロンのソフトウェア・パッケージとして、部分的にユーザのコンピュータ上でおよび部分的に遠隔コンピュータ上で、または全体的に遠隔コンピュータもしくはサーバ上で、実行することができる。後者の場合、遠隔コンピュータは、ローカル・エリア・ネットワーク(LAN)またはワイド・エリア・ネットワーク(WAN)を含むいずれかのタイプのネットワークを介してユーザのコンピュータに接続することができ、または、接続は、(例えばインターネット・サービス・プロバイダを用いてインターネットを介して)外部コンピュータに対して行うことができる。
図7は、本発明の一実施形態によるコンピュータ・ハードウェアのブロック図である。本発明の一実施形態によるコンピュータ・システム(501)は、CPU(504)およびメイン・メモリ(502)を含み、これらはバス(500)に接続されている。バス(500)はディスプレイ・コントローラ(512)に接続され、これはLCDモニタ等のディスプレイ(514)に接続されている。ディスプレイ(514)は、コンピュータ・システムに関する情報を表示するために用いられる。また、バス(500)は、IDEまたはSATAコントローラ等のデバイス・コントローラ(506)を介して、ハード・ディスク(508)またはDVD(510)等の記憶デバイスに接続されている。バス(500)は、更に、キーボード/マウス・コントローラ(520)またはUSBコントローラ(図示せず)を介して、キーボード(522)およびマウス(524)に接続されている。また、バスは、例えばイーサネット・プロトコルに準拠した通信コントローラ(518)に接続されている。通信コントローラ(518)は、コンピュータ・システム(501)をネットワーク(516)に物理的に接続するために用いられる。
本発明の態様について、本発明の実施形態に従った方法、装置(システム)、およびコンピュータ・プログラムのフローチャート図またはブロック図あるいはその両方を参照して上述した。フローチャート図またはブロック図あるいはその両方の各ブロック、およびフローチャート図またはブロック図あるいはその両方におけるブロックの組み合わせは、コンピュータ・プログラム命令によって実施可能であるか、または少なくとも誘発されることは理解されよう。これらのコンピュータ・プログラム命令は、汎用コンピュータ、特殊目的コンピュータ、または他のプログラマブル・データ処理装置のプロセッサに提供されて機械を生成することができ、これによって、コンピュータまたは他のプログラマブル・データ処理装置のプロセッサによって実行される命令が、フローチャートまたはブロック図あるいはその両方のブロックまたは複数のブロックに規定された機能/行為を実施するための手段を生成するようになっている。
また、これらのコンピュータ・プログラム命令はコンピュータ読み取り可能媒体に記憶することができ、これによって、コンピュータまたは他のプログラマブル・データ処理装置に特定の方法で機能するように指示することができ、これにより、コンピュータ読み取り可能媒体に記憶された命令が、フローチャートまたはブロック図あるいはその両方のブロックまたは複数のブロックに規定された機能/行為を実施する命令を含む製造品を生成するようになっている。
また、コンピュータ・プログラム命令を、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイスにロードして、そのコンピュータ、他のプログラマブル装置、または他のデバイス上で一連の動作ステップを実行させてコンピュータ実施プロセスを生成することができ、これによって、コンピュータまたは他のプログラマブル装置上で実行する命令が、フローチャートまたはブロック図あるいはその両方のブロックまたは複数のブロックに規定された機能/行為を実施するためのプロセスを提供するようになっている。
図面におけるフローチャートおよびブロック図は、本発明の様々な実施形態に従ったシステム、方法、およびコンピュータ・プログラムの可能な実施のアーキテクチャ、機能性、および動作を例示する。この点で、フローチャートまたはブロック図における各ブロックは、規定された論理機能(複数の機能)を実施するための1つ以上の実行可能命令を含むコードのモジュール、セグメント、または一部を表すことができる。また、いくつかの代替的な実施において、ブロックに明記した機能は、図面に明記した順序どおりでなく発生する場合があることに留意すべきである。例えば、関与する機能性に応じて、連続して示した2つのブロックは実際には実質的に同時に実行されることがあり、またはブロックは時に逆の順序で実行される場合がある。また、ブロック図またはフローチャート図あるいはその両方の各ブロック、およびブロック図またはフローチャート図あるいはその両方におけるブロックの組み合わせは、規定された機能もしくは行為を実行する特殊目的ハードウェア・ベースのシステム、または特殊目的ハードウェアおよびコンピュータ命令の組み合わせによって実施可能であることに留意すべきである。

Claims (14)

  1. フラッシュ・メモリ等の2進非対称チャネルに追従するメモリ上に書き込まれたビット・シーケンスを復号するための方法であって、前記ビット・シーケンスが低密度パリティ・チェック・コードすなわちLDPCにより符号化されており、これによって前記シーケンスの各ビットが前記LDPCコードにより規定された対応するパリティ・チェックを有し、この方法が、
    −第1の状態(S1)および第2の状態(S2)を含むビット状態セット(10)と、条件セット(20)と、を提供することであって、条件が満足された場合にビット状態が変更されることになり、前記条件セットが、ビット状態を前記第1の状態から前記第2の状態へと変更するための第1の条件(C1)と、ビット状態を前記第2の状態から前記第1の状態へと変更するための第2の条件(C2)と、を含み、前記第1の条件と前記第2の条件とは異なっている、ことと、
    −前記ビット・シーケンスの各ビットの値を読み取り、読み取った前記値に従って各ビットを前記セットの各状態に関連付けること(S100)と、
    −前記ビット・シーケンスのターゲット・ビット(30)について、条件を評価すること(S200)であって、
    ・前記条件は、前記ターゲット・ビットの状態に従って前記条件セットから選択され、
    ・前記条件を評価することは、前記ターゲット・ビットに対応した前記パリティ・チェックの計算結果を用いる、ことと、
    −前記条件が満足されたことを判定すること(S300)と、
    −前記条件が満足されたことの結果として前記ターゲット・ビットの前記状態を変更すること(S400)と、
    −前記ターゲット・ビットの前記状態に従って前記ターゲット・ビットの前記値を設定すること(S500)と、
    を含む、方法。
  2. 前記評価するステップを繰り返し(S600)、前記ターゲット・ビットが、前記評価するステップの各繰り返しにおいて前記シーケンスの異なるビットである、請求項1に記載の方法。
  3. 前記パリティ・チェックの前記計算の結果によって全てのパリティ・チェックが満足されたことが示されるか、または最大繰り返し数に達するまで、前記評価するステップを繰り返す、請求項2に記載の方法。
  4. −前記ビット状態セットが前記第1の状態および前記第2の状態から成り、
    −前記条件セットが前記第1の状態および前記第2の状態から成り、
    −各ビットを関連付ける前記ステップにおいて、ビットを、
    ・前記ビットの値が0と読み取られた場合は前記第1の状態に、
    ・前記ビットの値が1と読み取られた場合は前記第2の状態に関連付け、
    −前記ターゲット・ビットの前記値を設定する前記ステップにおいて、前記ターゲット・ビットの前記値を、
    ・前記ターゲット・ビットが前記第1の状態に関連付けられている場合は0に、
    ・前記ターゲット・ビットが前記第2の状態に関連付けられている場合は1に設定する、
    請求項1から3のいずれかに記載の方法。
  5. 前記ターゲット・ビットに対応した前記パリティ・チェックの過半数が満足されない場合はいつでも前記第1の条件が満足され、前記ターゲット・ビットに対応した全ての前記パリティ・チェックが満足されない場合はいつでも前記第2の条件が満足される、請求項4に記載の方法。
  6. 満足されない前記ターゲット・ビットに対応したパリティ・チェックの数が第1の閾値よりも大きい場合はいつでも前記第1の条件が満足され、満足されない前記ターゲット・ビットに対応したパリティ・チェックの数が第2の閾値よりも大きい場合はいつでも前記第2の条件が満足され、前記第1の閾値と前記第2の閾値とは異なっている、請求項4に記載の方法。
  7. −前記ビット状態セットが第3の状態(S3)および第4の状態(S4)を更に含み、
    −前記条件セットが条件対の第1のサブセットを含み、
    ・対の一方の条件が、ビット状態をi番目の状態からj番目の状態へと変更するための条件であり、
    ・前記対の他方の条件が、ビット状態を前記j番目の状態から前記i番目の状態へと変更するための条件であり、
    ・対の前記条件は異なっており、
    ・前記第1の条件および前記第2の条件が前記第1のサブセットの対を形成し、
    −前記条件セットが条件対の第2のサブセットも含み、
    ・対の一方の条件が、ビット状態をk番目の状態からl番目の状態へと変更するための条件であり、
    ・前記対の他方の条件が、ビット状態を前記l番目の状態から前記k番目の状態へと変更するための条件であり、
    ・前記第2のサブセットの対の前記条件は同一である、
    請求項1から3のいずれかに記載の方法。
  8. 前記条件セットが、ビット状態をm番目の状態からn番目の状態へと変更するための少なくとも1つの条件を含む第3のサブセットを更に含み、前記条件セットにおいて、ビット状態を前記m番目の状態から前記n番目の状態へ変更するための条件は存在しない、請求項7に記載の方法。
  9. 前記ターゲット・ビットに対応した全ての前記パリティ・チェックの全て、または少なくとも1つであるが過半数よりも少数、または過半数が満足されないか、または前記ターゲット・ビットに対応した全ての前記パリティ・チェックが満足された場合はいつでも、条件が満足される、請求項8のいずれかに記載の方法。
  10. −前記第1のビット状態が、前記メモリへの書き込み対象の前記ビットの前記値が0であることの高い信頼度に対応し、
    −前記第2の状態が、前記メモリへの書き込み対象の前記ビットの前記値が0であることの低い信頼度に対応し、
    −前記第3の状態が、前記メモリへの書き込み対象の前記ビットの前記値が1であることの高い信頼度に対応し、
    −前記第4の状態が、前記メモリへの書き込み対象の前記ビットの前記値が1であることの低い信頼度に対応し、
    前記条件の第1のサブセットが、
    −前記ターゲット・ビットに対応した全ての前記パリティ・チェックの少なくとも1つであるが過半数よりも少数が満足されない場合に満足される前記第1の条件と、
    −前記ターゲット・ビットに対応した全ての前記パリティ・チェックが満足されない場合に満足される前記第2の条件と、
    −前記ターゲット・ビットに対応した全ての前記パリティ・チェックの少なくとも1つであるが過半数よりも少数が満足されない場合に満足される、ビットを前記第3の状態から前記第4の状態へと変更させるための第3の条件と、
    −前記ターゲット・ビットに対応した全ての前記パリティ・チェックが満足されない場合に満足される、ビットを前記第4の状態から前記第3の状態へと変更させるための第4の条件と、
    を含み、前記条件の第2のサブセットが、
    −前記ターゲット・ビットに対応した全ての前記パリティ・チェックの過半数が満足されない場合に満足される、ビットを前記第2の状態から前記第4の状態へと変更させるための第5の条件と、
    −前記ターゲット・ビットに対応した全ての前記パリティ・チェックの過半数が満足されない場合に満足される、ビットを前記第4の状態から前記第2の状態へと変更させるための第6の条件と、
    を含み、前記条件の第3のサブセットが、
    −前記ターゲット・ビットに対応した全ての前記パリティ・チェックの過半数が満足されない場合に満足される、ビットを前記第1の状態から前記第4の状態へと変更させるための第7の条件と、
    −前記ターゲット・ビットに対応した全ての前記パリティ・チェックの過半数が満足されない場合に満足される、ビットを前記第3の状態から前記第2の状態へと変更させるための第8の条件と、
    を含む、請求項8に記載の方法。
  11. 前記ターゲット・ビットに対応した前記パリティ・チェックの計算が、対応するビット状態によって決定された前記シーケンスのビットの値に従って実行される、請求項1から10のいずれか1項に記載の方法。
  12. コンピュータによって実行するための命令を含むコンピュータ・プログラムが記録されたコンピュータ読み取り可能記憶媒体であって、前記命令が請求項1から11のいずれかに記載の方法を実行するための手段を含む、コンピュータ読み取り可能記憶媒体。
  13. −LDPCコードによって符号化されたビット・シーケンスを書き込むのに適したメモリと、
    −請求項1から11のいずれかに記載の方法を実行するための手段と、
    を含む、システム。
  14. 前記メモリが、好ましくは浮動ゲート・トランジスタ技術に基づくフラッシュ・メモリである、請求項13に記載のシステム。
JP2013513018A 2010-05-31 2011-05-25 Ldpcコードの復号のための方法、システム、およびプログラム Expired - Fee Related JP5723975B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP10164532.3 2010-05-31
EP10164532 2010-05-31
PCT/IB2011/052268 WO2011151759A1 (en) 2010-05-31 2011-05-25 Decoding of ldpc code

Publications (2)

Publication Number Publication Date
JP2013532422A true JP2013532422A (ja) 2013-08-15
JP5723975B2 JP5723975B2 (ja) 2015-05-27

Family

ID=44318213

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013513018A Expired - Fee Related JP5723975B2 (ja) 2010-05-31 2011-05-25 Ldpcコードの復号のための方法、システム、およびプログラム

Country Status (8)

Country Link
US (1) US9531406B2 (ja)
JP (1) JP5723975B2 (ja)
CN (1) CN102893529B (ja)
BR (1) BR112012030634A2 (ja)
DE (1) DE112011101852B4 (ja)
GB (1) GB2494577B (ja)
MX (1) MX2012007899A (ja)
WO (1) WO2011151759A1 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10084479B2 (en) * 2014-07-07 2018-09-25 Toshiba Memory Corporation Low BER hard-decision LDPC decoder
US10374633B2 (en) * 2016-07-08 2019-08-06 Maxlinear, Inc. Method and system for LDPC decoding
TWI685218B (zh) * 2016-12-30 2020-02-11 慧榮科技股份有限公司 解碼方法與相關解碼裝置
TWI632780B (zh) 2016-12-30 2018-08-11 慧榮科技股份有限公司 解碼方法與相關解碼裝置
TWI631830B (zh) * 2016-12-30 2018-08-01 慧榮科技股份有限公司 解碼方法與相關解碼裝置
US10374631B2 (en) 2017-08-22 2019-08-06 Goke Us Research Laboratory Look-ahead LDPC decoder
US10447301B2 (en) * 2017-09-13 2019-10-15 Toshiba Memory Corporation Optimal LDPC bit flip decision
US11777530B2 (en) * 2019-11-14 2023-10-03 Intel Corporation Methods and apparatuses for generating optimized LDPC codes

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006073324A1 (en) * 2004-12-29 2006-07-13 Intel Corporation Channel estimation and fixed thresholds for multi-threshold decoding of low-density parity check codes
WO2010039866A1 (en) * 2008-09-30 2010-04-08 Lsi Corporation Methods and apparatus for soft data generation for memory devices

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7158422B2 (en) * 2004-02-27 2007-01-02 Micron Technology, Inc. System and method for communicating information to a memory device using a reconfigured device pin
FR2871493B1 (fr) * 2004-06-11 2006-08-25 Pyramid Sarl Procede de deconstruction d'une partie de batiment et le dispositif de mise en oeuvre
US20060195765A1 (en) * 2005-02-28 2006-08-31 Texas Instruments Incorporated Accelerating convergence in an iterative decoder
JP4261575B2 (ja) 2006-11-30 2009-04-30 株式会社東芝 誤り訂正処理装置及び誤り訂正処理方法
US7904793B2 (en) * 2007-03-29 2011-03-08 Sandisk Corporation Method for decoding data in non-volatile storage using reliability metrics based on multiple reads
US7975209B2 (en) * 2007-03-31 2011-07-05 Sandisk Technologies Inc. Non-volatile memory with guided simulated annealing error correction control
US7656707B2 (en) * 2007-12-14 2010-02-02 Intel Corporation Systems and methods for discrete channel decoding of LDPC codes for flash memory
US8458536B2 (en) * 2008-07-17 2013-06-04 Marvell World Trade Ltd. Data recovery in solid state memory devices
CN101707485A (zh) * 2009-02-03 2010-05-12 天津博微科技有限公司 混合比特翻转和大数逻辑的ldpc译码方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006073324A1 (en) * 2004-12-29 2006-07-13 Intel Corporation Channel estimation and fixed thresholds for multi-threshold decoding of low-density parity check codes
WO2010039866A1 (en) * 2008-09-30 2010-04-08 Lsi Corporation Methods and apparatus for soft data generation for memory devices

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
JPN6014047999; 前田 遊 他: '多レベルセルフラッシュメモリに対する多元LDPCの構成と評価' FIT2009 第8回情報科学技術フォーラム 講演論文集 第1分冊 , 20090820, pp.217-222 *
JPN6014048002; Ninoslav Marina: 'LDPC codes for binary asymmetric channels' Telecommunications, 2008. ICT 2008. International Conference on , 20080619 *

Also Published As

Publication number Publication date
BR112012030634A2 (pt) 2016-08-16
CN102893529B (zh) 2016-03-30
WO2011151759A1 (en) 2011-12-08
US20150052413A1 (en) 2015-02-19
DE112011101852B4 (de) 2017-07-20
GB2494577B (en) 2013-11-20
GB201222466D0 (en) 2013-01-30
JP5723975B2 (ja) 2015-05-27
US9531406B2 (en) 2016-12-27
DE112011101852T5 (de) 2013-05-29
CN102893529A (zh) 2013-01-23
GB2494577A (en) 2013-03-13
MX2012007899A (es) 2012-08-01

Similar Documents

Publication Publication Date Title
JP5723975B2 (ja) Ldpcコードの復号のための方法、システム、およびプログラム
US8996972B1 (en) Low-density parity-check decoder
TWI411912B (zh) 使用寫入驗證之代碼之錯誤底限減緩
KR101854954B1 (ko) 치환 소행렬의 합을 사용하는 체크섬
US10298261B2 (en) Reduced complexity non-binary LDPC decoding algorithm
US8645810B2 (en) Fast detection of convergence or divergence in iterative decoding
KR102643457B1 (ko) Ldpc 디코더, 반도체 메모리 시스템 및 그것의 동작 방법
WO2015139160A1 (zh) 一种动态阈值比特翻转的ldpc码硬判决译码方法
US8321746B2 (en) Systems and methods for quasi-cyclic LDPC code production and decoding
US8751895B2 (en) Semiconductor memory device and decoding method
TW201320619A (zh) 線性碼之功率最佳化解碼
US20200091933A1 (en) Iterative decoding with early termination criterion that permits errors in redundancy part
US8832525B2 (en) Memory controller with low density parity check code decoding capability and relevant memory controlling method
US9564921B1 (en) Method and system for forward error correction decoding based on a revised error channel estimate
US20120331369A1 (en) Systems and Methods for Error Correction Using Low Density Parity Check Codes Using Multiple Layer Check Equations
CN112860474A (zh) 快速收敛的低密度奇偶校验码的软位翻转解码器
KR101631128B1 (ko) 크기조정 상수를 사용하는 가변 노드 업데이터를 갖는 ldpc 디코더
CN107872231B (zh) Ldpc译码方法与装置
US8443250B2 (en) Systems and methods for error correction using irregular low density parity check codes
CN110708077B (zh) Ldpc码大数逻辑译码方法、装置和译码器
CN111769839B (zh) 快速的比特翻转译码方法
US20230051030A1 (en) Apparatus and method for low density parity check code decoding
CN111106837B (zh) 一种ldpc译码方法、译码装置及存储介质
KR102530269B1 (ko) Ldpc 디코더, 반도체 메모리 시스템 및 그것의 동작 방법
CN114333964A (zh) 用于存储器的纠错方法、装置、电子设备及介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140213

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20141118

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150105

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20150105

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20150105

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150109

TRDD Decision of grant or rejection written
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20150310

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20150310

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150310

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150330

R150 Certificate of patent or registration of utility model

Ref document number: 5723975

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees