JP6446730B2 - データをデコードするための方法およびデコーダ - Google Patents

データをデコードするための方法およびデコーダ Download PDF

Info

Publication number
JP6446730B2
JP6446730B2 JP2015561611A JP2015561611A JP6446730B2 JP 6446730 B2 JP6446730 B2 JP 6446730B2 JP 2015561611 A JP2015561611 A JP 2015561611A JP 2015561611 A JP2015561611 A JP 2015561611A JP 6446730 B2 JP6446730 B2 JP 6446730B2
Authority
JP
Japan
Prior art keywords
decoding
variable node
decoding scheme
decoder
updated
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.)
Active
Application number
JP2015561611A
Other languages
English (en)
Other versions
JP2016514428A (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 JP2016514428A publication Critical patent/JP2016514428A/ja
Application granted granted Critical
Publication of JP6446730B2 publication Critical patent/JP6446730B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0045Arrangements at the receiver end
    • H04L1/0047Decoding adapted to other signal detection operation
    • H04L1/005Iterative decoding, including iteration between signal detection and decoding operation
    • 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
    • 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • 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
    • 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/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/1148Structural properties of the code parity-check or generator matrix
    • H03M13/116Quasi-cyclic LDPC [QC-LDPC] codes, i.e. the parity-check matrix being composed of permutation or circulant sub-matrices
    • 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/25Error detection or forward error correction by signal space coding, i.e. adding redundancy in the signal constellation, e.g. Trellis Coded Modulation [TCM]
    • H03M13/255Error detection or forward error correction by signal space coding, i.e. adding redundancy in the signal constellation, e.g. Trellis Coded Modulation [TCM] with Low Density Parity Check [LDPC] 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/2957Turbo codes and decoding
    • 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
    • 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
    • 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/39Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes
    • H03M13/41Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes using the Viterbi algorithm or Viterbi processors
    • H03M13/4138Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes using the Viterbi algorithm or Viterbi processors soft-output Viterbi algorithm based decoding, i.e. Viterbi decoding with weighted decisions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0045Arrangements at the receiver end
    • H04L1/0052Realisations of complexity reduction techniques, e.g. pipelining or use of look-up tables
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0056Systems characterized by the type of code used
    • H04L1/0057Block codes

Description

[関連出願]
本開示は、米国特許法第119条(e)による、2013年3月7日に出願された、米国仮出願第61/774、167による利益を主張し、参照により本明細書にその全体が組み込まれる。
本開示は概して、データデコードに関し、より具体的には、低密度パリティチェック(LDPC)エンコーダでエンコードされたデータのための複数の信頼性入力を持つ複数のデコーダに関する。
複数のLDPCコードおよび複数のLDPCコードをデコードするために使用される複数のデコーダが、多数のアプリケーションおよびデバイスにおいて使用される可能性がある。例えば、データストレージ、複数の衛星通信、複数の無線通信、複数の有線通信、および複数の電力線通信はそれぞれ、複数のLDPCコードおよびLDPCデコーダを使用し得る複数の用途である。デジタルカメラフラッシュメモリストレージのような複数のデバイス、複数の衛星、複数の携帯電話、および他の複数のモバイルデバイスもそれぞれ、複数のLDPCコードおよび複数のLDPCデコーダを使用し得る。
複数のLDPCコードは、ノイズの多いデータストレージまたは通信チャネル内の送信された情報における複数のエラーを訂正するために使用されてよい。当該情報は、送信前にエンコードされてよく(LDPCエンコーダによって)、その後、受信時にデコードされてよい(LDPCデコーダによって)。複数のLDPCコードは、通信およびデータストレージチャネル内の送信された情報における複数のエラーを訂正する用途のための、Turboコードと並ぶ、最も高性能なエラー訂正コードのうちの1つである。
従来の複数の硬デコードLDPC技術は通常、ビット反転するかどうか、あるいは記号の値を更新するかどうかを、特定数のチェックが満たされないことにのみ基づいて、判断する。例えば、更新された複数の記号のどの組み合わせが、満たされないチェックノード数を最も減少させる可能性が高いかということに基づいて、更新される1または複数の記号の値が選択されてよい。
本開示の一実装例によると、データをデコードするための複数のシステムおよび方法が提供される。第1の時点において、可変ノードのための可変ノード値が受信され、第2の時点において、可変ノードのための信頼性データが受信される。第1の時点の後および第2の時点の前に、第1のデコードスキームを使用して、可変ノードはデコードされ、第2の時点の後、可変ノードは、第1のデコードスキームとは異なる第2のデコードスキームを使用してデコードされる。
いくつかの実装において、第1のデコードスキームは、可変ノード値に基づく、硬デコードスキームである。第2のデコードスキームは、可変ノード値および信頼性データに基づく、軟デコードスキームである。
いくつかの実装において、第2の時点より後の、第3の時点において、可変ノードのための追加の信頼性データは受信され、第3の時点の後、第3のデコードスキームを使用して可変ノードがデコードされる。
いくつかの実装において、可変ノードのための可変ノード値を受信することは、メモリに対し、読み取り動作を実行する命令を送信することを含む。可変ノードのための信頼性データを受信することは、メモリに対し、1または複数の追加の読み取り動作を実行する命令を送信することを含む。メモリは、NANDフラッシュメモリであってよい。
第1のデコードスキームの結果は、バッファ内に格納されてよく、そこでは、第2のデコードスキームを使用して、可変ノードをデコードすることは、バッファから第1のデコードスキームの結果を取得することを含む。
いくつかの実装において、第1のデコードスキームが成功した場合、デコードは、第2の時点の前に終了される。第2の時点において、信頼性データを受信すること、および第2のデコードスキームを使用して、可変ノードをデコードすることは、第第1のデコードスキームが成功しないと判断することに応答して実行されてよい。
本開示の一実装例によると、デコーダは、デコード回路を含む。デコード回路は、第1の時点において、可変ノードのための可変ノード値を受信し、第2の時点において、可変ノードのための信頼性データを受信するよう構成される。第1の時点の後および第2の時点の前に、第1のデコードスキームを使用して、可変ノードがデコードされ、第2の時点後、第1のデコードスキームとは異なる第2のデコードスキームを使用して、可変ノードがデコードされる。
本開示の上記および他の複数の特徴は、その本質およびその様々な利点を含め、以下の詳細な説明を、複数の添付図面と合わせて考慮すると、より明らかになる。
本開示の一実施形態による、LDPCデコードを採用する、例示的な通信システムのブロック図である。 本開示の一実施形態による、受信されたコードワードの複数の記号を表わす複数の可変ノードと、受信されたコードワードをデコードするための複数のチェックノードとの間の、複数の通信の図である。 本開示の一実施形態による、受信されたコードワードの複数の記号を表わす複数の可変ノードと、受信されたコードワードをデコードするための複数のチェックノードとの間の、複数の通信の図である。 本開示の一実施形態による、最新の信頼性情報に基づいてデコードするための例示的システムのブロック図である。 本開示の一実施形態による、最新の信頼性情報に基づいてデコードするための例示的な処理のフローチャートである。 本開示の一実施形態による、最新の信頼性情報に基づいて、多段階デコードのための例示的な処理のフローチャートである。
本開示は概して、デコーダにおけるデコードの実行に関する。本開示の全体的な理解を提供すべく、最新の信頼性情報に基づいてデコードを実行する、多段階デコーダを含む、複数の特定の例示的実施形態がここに記載される。しかしながら、本明細書に記載される複数のシステムおよび方法は、対処されるアプリケーションにとって適切なように、適合および修正され得、および、本明細書に記載される複数のシステムおよび方法は、他の複数の好適なアプリケーションにおいて採用され得、および、そのような他の複数の追加および変形は、それらの範囲から逸脱しないことが当業者によって理解されるだろう。
複数の特定のフラッシュメモリユニットのような、いくつかの通信システムにおいて、複数のデータ推定(または硬判定データ)は、複数の硬判定に関する信頼性データが利用可能になる前に、デコーダに対し利用可能になる。デコードが開始する前に、複数の硬判定および信頼性データの両方が利用可能になるまで、軟デコーダに待機を強制させるよりむしろ、本明細書に記載された複数のシステムおよび方法は、複数の段階におけるデコードを可能にする。本開示に係る複数のデコードシステムおよび方法は、複数の硬判定が利用可能な場合、第1の段階で硬デコードを実行する。後で、特定量の信頼性データが利用可能である場合、複数の硬判定および信頼性データの両方を利用する、軟デコードが第2の段階で実行される。任意に、追加の信頼性データが受信されると、複数の追加の軟デコードの段階が使用される。そのような多段階デコーダは、本明細書において、複数の最新の信頼性デコーダと言及される。
図1は、本開示の複数の実施形態による、複数の信頼性入力に部分的に基づく、LDPCデコードのための例示的な通信システム100を示す。送信ユーザまたはアプリケーション102から、受信ユーザまたはアプリケーション130へ、情報を送信すべく、通信システム100が使用される。送信ユーザまたはアプリケーション102は、情報を生成するオブジェクトまたはエンティティを表わす。例えば、送信ユーザまたはアプリケーション102は、コンピュータシステムのソフトウェアプログラム、または無線システムの無線通信送信機の構成要素に対応してよい。送信ユーザまたはアプリケーション102は、データストリームの形態で情報を生成し、データストリームは、例えば、ソースエンコーダ(図1に不図示)によって前処理されている、一連の記号値によって表わされてよい。送信ユーザまたはアプリケーション102によって生成される情報は、音声情報、ビデオ情報、金融情報、またはデジタルまたはアナログの形態で表わされ得る、任意の他のタイプの情報に対応してよく、送信ユーザまたはアプリケーション102によって生成されるデータストリームは、デジタルデータストリームであってよい。
送信ユーザまたはアプリケーション102は、データストリームを、k個の記号の固定長のブロックに、セグメント化あるいは分割されてよい。特に、mとも言及されるメッセージ104は、これらのブロックのうちの1つを表わす。特に、メッセージ104は、長さにおいて複数のk記号であり、各記号は、バイナリデータまたは3値データ、4値データのような非バイナリデータ、任意の他の好適なタイプのデータ、あるいはこれら任意の好適な組み合わせであってよい。コードワード110を生成すべく、メッセージ104をエンコードするためのエンコーダ106が使用される。本開示の一実施形態において、エンコーダ106は、LDPCエンコーダである。しかしながら、本明細書に提供される開示および複数の教示に基づき、エンコーダ106は、任意の他の好適なエンコーダであってよいことが明らかであろう。cとも言及されるコードワード110は、n個の記号の長さを有し、n>kである。エンコーダ106は、標記の便宜上、Gとも言及される、コードワード110を生成する、ジェネレータ行列G108を使用する。例えば、エンコーダ106は、メッセージ104をコードワード110に変換すべく、1または複数の行列演算を実行してよい。一実施形態において、エンコーダ106は、以下の行列乗算=Gによる、ジェネレータ行列G108を使用して、メッセージ104からのコードワード110を生成する。
コードワード110は、変調器112によって、チャネル114上での送信および/または格納のために好適な波形に、変調または変換されてよい。例えば、波形は、アナログ二位相偏移変調(BPSK)信号、アナログ位相偏移変調(PSK)信号、アナログ周波数偏移変調(FSK)信号、アナログ直角位相振幅変調(QAM)信号、または任意の他の好適なアナログまたはデジタル信号に対応してよい。
チャネル114は、物理媒体を表わし、復調器116において受信される前に、送信される波形はそこを介して通過し、またはそこに格納される。例えば、チャネル114は、コンピュータシステム環境における格納媒体を表わす格納チャネル、または無線通信環境における無線伝搬環境を表わす通信チャネルであってよい。チャネル114の様々な特徴は、そこで通信される、またはそこに格納されるデータを破損する場合がある。例えば、チャネル114は、非理想的無記憶チャネルまたはメモリを備えるチャネルであってよい。チャネル114は、消去チャネルであってよく、対称的または非対称的であってよい。受信されたコードワード118を生成すべく、チャネル114の出力は、復調器116によって復調および処理される。復調器116は、複数の周波数フィルタ、複数の周期関数による乗算および積分、および/またはチャネル114の出力を復調および/または処理するための任意の他の好適な復調技術を使用してよい。
受信されたコードワード118は、コードワード110に関連付けられた情報を含み、エンコーダ106によって元々出力されたコードワード110の、破損された、あるいは変更されたバージョンであってよい。例えば、受信されたコードワード118は、コードワード110の予備的推定またはノイズのあるバージョン、エンコーダ106によって生成されたコードワードの複数の可能値の確率分布ベクトル、またはこれらの複数の組み合わせ並びに他の複数の値を含んでよい。
検出器サンプル122を生成すべく、受信されたコードワード118を処理するのに、検出器120が使用され、検出器サンプル122は、元のデータメッセージ104の推定であってよく、また本明細書において1または複数の硬判定として言及され得る。検出器120は、受信されたコードワード118内の各記号をサンプリングし、各記号を記号の値に基づくビンに割り当てる。いくつかの実施形態において、ビンは、確率分布に基づいて割り当てられる。検出器120によってサンプリングされた各記号は、2または2より多い可能性のあるビンまたは状態に割り当てられてよい。検出器サンプル122に対し判断される複数の状態は、サンプルコードワードとして、メモリ内に格納される。このメモリは、「硬判定メモリ」と呼ばれ、受信されたコードワード118とは異なるメモリ場所に存在してよい。
いくつかの実施形態において、チャネル114は、複数回読み取られ、当該複数の読み取りは、復調器116、検出器120、またはそれら両方によって、連携的または別々に処理され、硬判定サンプルコードワードに加え、信頼性データを生成してよい。例えば、フラッシュメモリストレージデバイスに格納された特定の記号の入力状態を判断すべく、記号の受信された値が格納されたメモリセルが1回より多く読み取られてよい。信頼性データおよび硬判定データの形態で検出器サンプル122を生成すべく、同一記号に対応するチャネル114の複数の読み取りは、検出器120によって処理されてよい。例えば、サンプルコードワード内の各ビットのための硬判定データの1ビットおよび信頼性データの1ビットを生成すべく、バイナリコードで、チャネル114の複数の読み取りは、復調器116、検出器120、またはそれら両方によって処理されてよい。別の例において、信頼性データの2ビットが、サンプルコードワード内の各ビットに対し生成されてよい。一般的に、信頼性データの任意の数のビットが、サンプルコードワード内の各ビットに対し生成されてよい。そのような信頼性データは、硬判定メモリとは別個の「信頼性データメモリ」場所に格納されてよく、あるいは、同一メモリ場所の複数の硬判定とともに格納されてよい。検出器サンプル122内の形態での硬判定および信頼性データの両方が、複数の後のデコード動作のための入力として、デコーダ124に送信される。
デコーダ124は、複数の段階において、検出器サンプル122を受信および反復的に処理する。検出器120およびデコーダ124は、2つの別個のプロセッサであってよく、あるいは、単一のプロセッサが、検出器120およびデコーダ124の両方として使用されてよい。一般的に、デコーダ124は、例えば、チャネル114を介した送信による、検出器サンプル122内に存在する複数のエラーを反復的に訂正および/または検出すべく使用される、制御回路および/またはデコード回路を含む。いくつかの実施形態において、デコードされたメッセージ128を生成すべく、デコーダ124は、パリティチェック行列H126およびデコード技術を使用する。一般的に、LDPCデコードは、数学的ベクトルモデル
Figure 0006446730
を使用して記述可能である。式中cは、バイナリストリング長n、およびHはパリティチェック行列H126であり、これは低密度で疎のm×n行列である。式中、上記の通り、nはコードワード内の記号数、mはm≧n−kを満たすチェックノード数、およびkはメッセージ内の記号数である。モデルは、バイナリストリングcがコードワードc110である場合にのみ満たされる。パリティチェック行列H126は必ずしも一意でなくてよく、コンピュータ的に便利なように、デコーダ124のデコード技術によって生成されるエラー数を低減するように、あるいはそれら両方のために、選択されてよい。
本開示によると、デコーダ124によって使用される多段階デコード技術は、1または複数の「更新ルール」に基づいて、複数の記号、信頼性データ、またはそれら両方を更新することによって、複数の検出器サンプル122を処理することを伴う。一例において、更新ルールは、記号の複数のチェックが満たされるか満たされないか、信頼性データの値に基づいて、記号が既に更新、反転、またはトグルされたかどうか、またはこれら好適な組み合わせに基づいてよい。概して、本明細書において使用されるように記号を「反転」または「トグル」することは、記号の値を、現在の値とは異なる値に更新することを意味する。記号の反転またはトグルを実行するための、複数の更新ルールおよびシステムアーキテクチャは、Varica他による、2014年2月4日に出願された、米国特許出願第14/172、420に記載されており、ここに参照により全体として組み込まれる。
処理後、デコードされたメッセージ128内の各記号は、一連の可能性のある状態における一状態として割り当てられるべきである。cとしてモデル
Figure 0006446730
に入力されると、デコードされたメッセージ128は、モデルを満たす。デコードを実行するために好適な複数のシステムおよび処理は、図3〜5に関連して記載される。
デコーダ124によって処理された後、デコードされたメッセージ128は、受信ユーザまたはアプリケーション130に配信される。受信ユーザまたはアプリケーション130は、送信ユーザまたはアプリケーション102と同一のデバイスまたはエンティティに対応してよく、あるいは受信ユーザまたはアプリケーション130は、異なるデバイスまたはエンティティに対応してよい。さらに、受信ユーザまたはアプリケーション130は、共に配置されるか、あるいは送信ユーザまたはアプリケーション102と物理的に分離されてよい。デコーダ124が、チャネル114および通信システム100における他の複数の通信の影響によって誘発されるすべてのエラーを訂正する場合、デコードされたメッセージ128は、メッセージ104の論理レプリカである。あるいは、デコードされたメッセージ128は、メッセージ104と異なってよく、デコーダ124は、それに応じてエラーを宣言してよい。
図2Aおよび2Bは、本開示の一実施形態による、例示的なコードワードを表わす可変ノード220〜234と、可変信頼性情報を使用してコードワードをデコードするための複数のチェックノード200〜210との間の通信に係る図である。
デコード処理の初期化の際、可変ノード220〜234は、図1に関連して記載される検出器120を使用して割り当てられる複数の入力状態であり、ここで、硬判定および信頼性情報の両方が考慮されてよい。本明細書に記載されている通り、「可変ノード値」は、可変ノードに関連付けられた硬判定に関する一方で、「可変信頼性データ」は、可変ノードまたは可変ノード値に関連付けられた信頼性データに関する。入力状態は、可変ノード値および可変信頼性データの1または両方を含んでよい。
一例示において、各可変ノードは、[b、b]によって示される、2ビット入力に関連付けられ、ビットbの値は、硬判定を示し、ビットbの値は、硬判定の信頼性を示す。バイナリコードにおいて、bはデコードされたビットの2つの可能性のある硬判定状態を表わす、値0または1を取ってよい。従って、bも値0または1を取ってよく、0は信頼できない硬判定を表わし、および1は信頼可能な硬判定を表わす。換言すれば、可変ノードに対する入力10は、信頼可能な判定0として解釈されてよく、可変ノードに対する入力00は、信頼不可能な判定0として解釈されてよく、可変ノードに対する入力01は、信頼不可能な判定1として解釈されてよく、可変ノードに対する入力11は、信頼可能な判定1として解釈されてよい。一般的に、任意の数(k)の信頼性のビットが使用されてよく、(k+1)‐ビット入力は、[bk−1...b]によって示されてよい。
複数の硬デコードシステムは、硬判定データに対し、デコードを実行する一方、複数の軟デコードシステムは、硬判定データ並びに信頼性データの両方に対し、デコードを実行する。本開示の多段階デコーダにおいて、デコーダは、硬判定データが利用可能な場合にのみ、硬デコードを実行してよく、信頼性データが利用可能になるとき、軟デコードを実行してよい。特に、複数の特定のフラッシュメモリユニットのような、いくつかのシステムにおいて、対応する信頼性データが利用可能になる前に、硬判定データがデコーダに対し利用可能にされる。チャネル114が一回読み取られた後、硬判定が利用可能になるので、これが発生してよく、複数の追加の読み取りの後、信頼性データが利用可能になるのみである。一例において、信頼性データの1ビットをレンダリングするには、2つの追加の読み取りで十分であってよく、さらなる追加の読み取りは、信頼性データの追加の複数のビットをレンダリングしてよい。
各読み取りを実行するための複数のシステム必要条件は、実際のデコードを実行するより、さらに高コストに関連付けられてよい。例えば、単一の読み取りを実行するのにかかる時間は、デコードを実行するのにかかる時間より、顕著に長くてよい。硬判定のみを受信後で、任意の信頼性データが受信される前、硬デコードは妥当なコードワードの回復に成功してよいので、信頼性データを回復すべく、複数の任意の追加の読み取りを実行する前に、硬デコードが成功したかどうかを判断することが望ましい可能性がある。同様に、特定数の読み取り後、軟デコードが成功する場合、複数の追加の不要な読み取りを実行することは望ましくない可能性がある。スループットおよび電力の制約を持つシステムにおいて、本開示の多段階デコーダは、硬判定データおよび受信時に信頼性データを活用することによって、効率的なデコードを提供する。
硬判定および信頼性データ入力は、複数の入力状態としてともに1つのメモリ場所に、あるいは硬判定メモリおよび信頼性データメモリに別々に格納されてよい。本明細書に記載の通り、硬判定を表わすべく、1ビットのみが使用され、硬判定の信頼性を表わすべく、1ビットのみが使用される。しかしながら、一般的に、硬判定、信頼性、またはそれら両方を表わすべく、任意の数のビットが使用されてよい。特に、硬判定は、複数の非バイナリコードのための2つより多い値を取ってよく、複数の信頼性メッセージは、1または複数のビットまたは記号を伝搬してよい。
図1に関連して記載された通り、検出器120を使用して、可変ノード220〜234に複数の入力状態が割り当てられた後、複数の可変ノードのチェックがデコーダ124によって、複数の可変ノードの複数のグループに対し、実行される。複数の可変ノードからなる1グループの条件を判断すべく、デコーダ124は、複数の処理ルールを使用する。判断された条件の指示は、チェックノード200〜210のような、チェックノードにおけるシンドロームメモリ内に格納される。パリティチェック行列H126(図1)は、どの複数のチェックノードが、どの複数の可変ノードに対する複数の判断された条件の複数の指示を格納するかを識別する。例えば、図2Aおよび2Bに示される複数のノードおよびバイナリコード例について、パリティチェック行列H126は次のようになり得る。
Figure 0006446730
各行は、複数のチェックノードの1つに対応し、各列は、複数の可変ノードの1つに対応する。複数のバイナリコードとともに、パリティチェック行列の複数の要素は、上記に示されるように、0または1である。本明細書で使用される通り、可変ノードの「隣接」チェックノードは、当該可変ノードへの接続を有するチェックノードである。同様に、チェックノードの「隣接」可変ノードは、当該チェックノードへの接続を有する可変ノードである。上記に示されるパリティチェック行列H126は、複数のチェックノードと、複数の可変ノードとの間の複数の接続に関する複数の指示を提供する。特に、図2Aに示される通り、可変ノード222、224、230および234は、チェックノード206の複数の隣接ノードであり、図2Bに示される通り、チェックノード200、206、および210は、可変ノード224の隣接ノードである。さらに、複数のバイナリコードにおいて、各チェックノードは、2つの状態のうちの1つを有する。チェックが満たされる場合、0で、チェックが満たされない場合、1である。非バイナリコードについて、パリティチェック行列の複数の要素は、非バイナリであり、各チェックノードは、2つより多い状態の1つである。パリティチェック行列の各行は、パリティチェックの式の複数の係数を形成し、パリティチェック式は、非バイナリ領域で計算される。
特定のチェックノードに関連付けられた複数の可変ノード、または当該特定のチェックノードによってチェックされるべき複数の可変ノードを識別すべく、デコーダ124はパリティチェック行列H126を参照する。例えば、チェックノード206については、デコーダ124は、そのチェックノード206が、可変ノード222、224、230、および234(すなわち、第2、第3、第6、および第8番目の可変ノード)のチェック結果を格納したことを判断すべく、パリティチェック行列H126の第4行を使用する。次に、デコーダ124は、これらの可変ノード内に格納された複数の値を取得する。上記パリティチェック行列Hの第4行目の複数の値は、パリティチェックの式の複数の係数であり、それらはそれぞれ、複数の可変ノードの対応する値によって乗算される。説明のため、図2A内の複数の複数の矢印は、取得された複数の値が、可変ノード222、224、230、および234からチェックノード206へと流れることを示し、チェックノード206は、可変ノード222、224、230、および234を「チェック」するとみなされてよい。複数の可変ノード値は、デコーダ124によって取得され、デコーダ124は、複数の処理ルールに従い、チェックノード206の代わりに、複数の値を処理する。
可変ノード222、224、230および234から受信される複数の値から、デコーダ124は、チェックノード206のための特定の条件が満たされるか、または満たされないかを判断する。チェックノード206が満たされるか、または満たされないか(すなわち、「シンドローム値」またはチェックノードの「チェックノード値」)の指示は、シンドロームメモリ内に格納され、シンドロームメモリは、複数のチェックノードの複数のシンドローム値または指示を格納する。さらに、複数のチェックノードの複数のシンドローム値の信頼性は、関連付けられた複数の可変ノードの複数の値および信頼性に基づいて、更新されてよい。
チェックノード200〜210のための複数の指示またはシンドローム値がシンドロームメモリ内に格納された後、可変ノード220〜234の複数の値が、複数のチェックノードの複数の値および複数の可変ノードの信頼性に基づいて、更新されてよい。特定の可変ノードのために、どの複数のチェックノードがアクセスされるべきかを判断すべく、パリティチェック行列H126がデコーダ124によって再度使用される。図2Bに示される通り、可変ノード224の更新について、上記のパリティチェック行列H126は、チェックノード200、206および210(すなわち、第1、第4、および第6番目の可変ノード)が参照されるべきであることを示す。参照される複数のチェックノードの複数の指示に基づいて、可変ノード224の状態は、更新されてよい。
本開示の複数の実施形態において、可変ノード224の値は、可変ノード224は、既に更新、トグル、または反転されていたかどうかに部分的に基づいて判断されてもよい。すべてのチェックノードが満たされる(すなわち、オールゼロシンドロームが達成される)まで、または、最大反復数に到達されるまで、複数のチェックノードおよび可変ノードが反復的に更新されてよい。デコーダ124の出力は、デコード処理の終了時の硬判定メモリの内容、すなわち、デコードされたメッセージ128である。
図3は、本開示の一実施形態による、最新の複数の信頼性入力を使用する、LDPCデコードのための、例示的な多段階デコーダシステム300に係るブロック図である。システム300は、図2Aおよび2Bによって示されるデコード処理を実装してよい。チャネル114の1または複数の読み取りが実行されるとき、受信機350は、硬判定データおよび信頼性データを受信する。硬判定データは、単一の読み取りから生じ、信頼性データは、複数の読み取りから生じるので、硬判定データ(bと示される)は、信頼性データ([bk−1...b]と示される)が受信される前に受信される。
多段階デコーダに係る第1の段階の硬デコーダ356は、受信機350から硬判定データ352を受信し、硬デコードを実行する。第1の段階の硬デコーダ356は、可変ノードに関連付けられた複数のチェックノードが満たされたか、満たされなかったかに基づいて、可変ノード値を更新するかどうかを判断することによって、硬デコードを実行してよい。一例において、1または複数の可変ノードの値は、更新された複数の可変ノード値のどの組み合わせが最も、満足されないチェックノード数を減少するかに基づいて、選択的に更新されてよい。第1の段階の硬デコーダ356は、複数の更新された硬判定358を出力し、それらは硬判定メモリ360に格納され、任意に第2の段階の軟デコーダ362に送信される。
第2の段階の軟デコーダ362は、受信機350から信頼性データ354を、第1の段階の硬デコーダ356から複数の更新された硬判定358を受信する。第2の段階の軟デコーダ362は、信頼性データ354および複数の硬判定358に基づいて、軟デコードを実行する。第2の段階の軟デコーダ362によって実行される軟デコードは、複数の硬判定358、信頼性データ354、またはそれら両方を、1または複数の更新ルールに基づいて、更新するかどうかどうかを判断することを含んでよい。一例において、更新ルールは、可変ノードに関連付けられた複数のチェックノードが満たされるか、または満たされないかということ、可変ノードが既に信頼性データに基づいて更新されているかどうか、あるいはそれらの組み合わせに基づいてよい。第2の段階の軟デコーダ362の出力は、更新された信頼性データ363を含んでよく、それは信頼性データメモリ364に格納される。さらに、第2の段階の軟デコーダ362が複数の硬判定358を更新した場合、第2の段階の軟デコーダ362は、複数の更新された硬判定を硬判定メモリ360に格納してよい。
図3に示される通り、単一の第2の段階の軟デコーダ362が使用される。しかしながら、一般的に、追加の信頼性データが受信されるとき、任意の数の追加の第2の段階の軟デコーダが使用されてよい。特に、信頼性データの複数のk受信ビットについて、複数の軟デコーダのk段階が使用されてよく、それぞれ対応する信頼性データビット数に関連付けられる。
いくつかの実施形態において、第2の段階の軟デコーダ362および任意の複数の追加の軟デコーダの使用は随意である。例えば、第1の段階の硬デコーダ356によって実行される硬デコードは、成功してよく、従って、追加の信頼性データは必要ではない。この場合、コントローラは、現在の可変ノードについて、チャネル114に係るいかなる複数の追加の読み取りも実行しないことを命令されてよく、第2の段階の軟デコーダ362が未使用でよい。硬デコードに加え、任意に軟デコードを実行するための複数のハイブリッドシステムアーキテクチャは、Chilappagari他による米国特許出願(出願日および出願番号不明)(代理人整理番号MP5098)に記載されており、当該出願は、参照により本明細書に全体として組み込まれる。別の例においては、第nの段階の軟デコーダによって実行される軟デコードは成功してよく、nは1からkの任意の整数であってよい。この場合、現在の可変ノードのためのチャネル114の任意の複数の追加の読み取りは、実行されなくてよく、複数の軟デコーダの残りの複数の段階(すなわち、n+1からk)は未使用であってよい。
いくつかの実施形態において、システム300に係る多段階デコーダは、NANDフラッシュメモリユニットからのデータの読み取りに関連して使用される。一例において、各読み取られた結果は、情報の1ビットをもたらす。特に、第1の読み取りは、硬判定、または可変ノード値、またはbを生じさせる。第2の読み取りは、信頼性データまたは、bの第1のビットをもたらす。メモリユニットに格納されたデータの複数のページを読み取るべく、コントローラはNANDフラッシュメモリと対話してよい。複数のビットを取得すべく、コントローラは、読み取りコマンドを複数回発行する。
一例において、コントローラは、複数の命令からなるキューを解析してよく、それは、「READ PAGE0」、「READ PAGE1」、「READ PAGE2」等のような、複数の読み取り命令を含んでよい。硬デコーダは、ページ0から読み取られたデータの硬デコードに失敗した場合、結果を格納する必要がないと判断してよく、かつ、コントローラは、ページ1から読み取られたデータのデコードを試みながら続行してよい。この場合、ページ0から読み取られたデータのデコードを後から実行することが好ましい場合、コントローラは、処理を再開し、第1の読み取り動作が再度実行されることを要求する必要があるだろう。
いくつかの実施形態において、本明細書に記載された複数のシステムは、複数の硬判定(メモリの単一の読み取りからの結果)および信頼性データ(メモリの複数の読み取りからの結果)を格納するバッファを含む。1または複数の読み取り動作から生じるデータを破棄するのではなく、データはバッファに格納される。特に、1または複数の読み取り動作が実行された後、硬判定データおよび/または信頼性データはバッファ内に格納され、それらの1または複数の読み取り動作が繰り返される必要がないように、後で取得されてよい。この場合、追加の信頼性データが所望されると判断された場合、複数の追加の読み取り動作が実行されてよく、最初の1または複数の読み取り動作をやり直す必要はない。いくつかの実施形態において、NANDフラッシュメモリデバイス自体が、1または複数の読み取られた結果を格納するバッファを含む。この場合、複数の読み取り動作から生じるデータは、既に、NANDデバイスに格納されており、コントローラは単に、必要な場合にデータをフェッチすればよいだけである。
図4は、本開示の一実施形態による、最新の信頼性情報に基づく、LDPCデコードのための例示的な処理400に係るフローチャートである。処理400は、図3に示されるシステム300を使用して実装されてよい。402において、カウンタjはゼロに初期化される。データが受信され、受信されたデータのデコードの試みが失敗すると、カウンタjをインクリメントするよう、システム300は構成される。カウンタjの値は、受信されたデータのデコードの試みが成功するまで、あるいは、カウンタjの値が、信頼性記号kの数に到達するまで、インクリメントされる。
404において、可変ノード値が受信される。可変ノード値は、可変ノードに関連付けられた硬判定を参照する。一例において、硬判定に対応するビットは本明細書においてbと言及され、それは特定の時間tにおいて利用可能になる。406において、第1の段階の硬デコーダ356は、デコードスキームを使用して、404において受信された可変ノード値を処理する。特に、システム300は、j番目のデコードスキームと言及され得る、複数の(k+1)デコードスキームを使用するよう構成されてよい。特に、jがゼロの場合、ゼロ番目のデコードスキームは、受信された硬判定にのみ動作する硬デコードスキームである。
408において、システム300は、1または複数の収束または終了条件が満たされたかどうかを判断する。一例において、オールゼロシンドロームが達成される場合、あるいは、最大反復数kに到達された場合、収束または終了に到達し得る。任意の複数の収束または終了条件が到達された場合、処理400は410に進み、デコードを終了する。
あるいは、収束または終了条件が満たされない場合、処理400は412に進み、jをインクリメントし、414に進み、j番目の信頼性の値を受信する。特に、システム300は、最大数kの信頼性の値を受信するよう構成されてよく、その場合、各後続の信頼性の値は、チャネル114に対し実行される追加の読み取りに関連付けられる。次のj番目の信頼性の値が414で受信され、処理400は、406に戻り、次のj番目のデコードスキームを使用する。一例において、j番目の信頼性の値は、ビットbと言及されてよく、それは時間t=tj−1+Tにおいてデコーダに対し利用可能にされ得る。ここで、Tは(j-1)番目の値が利用可能になる時間と、j番目の値が利用可能になる時間との間の差である。換言すると、j=1の場合、ビットbは時間t=t+Tにおいて利用可能になり、それは、硬判定ビットbが利用可能になる時間の後の時間Tにおいてである。同様に、ビットbは、時間t=t+Tにおいて利用可能になる。いくつかの実装において、TはT未満であり、TはT未満等である。他の複数の実装において、T、T、...Tは同様である。一般的に、T、T、...Tは同一であるか異なる。
jがゼロより大きい(すなわち、j=1、2、…k)の場合、j番目のデコードスキームは、第2の段階の軟デコーダ362のような軟デコーダによって実行され得る、軟デコードスキームである。特に、軟デコーダは、硬判定データおよび/または信頼性データを更新するかどうかの判断において、硬判定データ並びに信頼性データの両方を考慮する。
図4に示されるように、408において、収束または終了条件が到達されるまで、406、408、412および414が繰り返される。収束が到達され、デコードが成功すると、デコード処理は、410において終了される。jがk未満のときに、デコードが成功すると、その後のいくつかの信頼性情報を利用する、その後の複数の段階の軟デコードが回避される。すべての信頼性情報が受信される前に、開始するデコード処理を開始することによって、かつ、すべての信頼性情報が受信される前に、デコード処理の終了を可能にすることによって、本開示の多段階デコーダは、複数のシステムリソースを効率的に利用する。
図5は、本開示の一実施形態による、最新の信頼性情報に基づく、多段階LDPCデコードのための例示的な処理500のフローチャートである。処理500は、図3に示されるシステム300を使用して、実装されてよい。502において、可変ノードのための可変ノード値が、第1の時点において受信される。いくつかの実施形態において、可変ノードのための可変ノード値を受信することは、メモリに対し、読み取り動作を実行する命令を送信することを含む。特に、メモリはNANDフラッシュメモリデバイスであってよく、コントローラは、NANDフラッシュメモリデバイスに対し、読み取り動作を実行し、読み取り動作の結果(すなわち、硬判定)をコントローラに対し送信するよう命令してよい。
504において、可変ノードのための信頼性データが、第1の時点より後の第2の時点において受信される。いくつかの実施形態において、可変ノードのための信頼性データを受信することは、メモリに対し、複数の追加の読み取り動作を実行する命令を送信することを含む。メモリがNANDフラッシュメモリデバイスである場合、コントローラは、NANDフラッシュメモリデバイスに対し、1または複数の追加の読み取り動作を実行し、当該追加の読み取り動作の複数の結果をコントローラに対し、信頼性データの形態で送信するよう命令してよい。
506において、可変ノードは第1のデコードスキームを使用し、第1の時点の後および第2の時点の前にデコードされる。第1のデコードスキームは、硬デコードスキームであり、可変ノード値に基づき、任意の信頼性データには基づかない。いくつかの実施形態において、硬デコードスキームの結果は、更新された硬判定値である。元々受信された硬判定および/または更新された硬判定値は、図3に示される硬判定メモリ360のようなバッファに格納されてよい。いくつかの実施形態において、第1のデコードスキームは、例えば、オールゼロシンドロームが達成されたかどうかを判断するなどによって、硬デコードが成功したかどうかを評価することを含む。硬デコードが成功した場合、処理500は、第2の時点の前に終了されてよく、504および508は実行されなくてよい。あるいは、硬デコードが成功しない場合(例えば、オールゼロシンドロームが達成されないかどうかが判断されてよい)、504および508が実行され、処理500は、508に進み、可変ノードをさらにデコードする。
508において、可変ノードは、第2の時点の後、第1のデコードスキームとは異なる、第2のデコードスキームを使用して、デコードされる。第1のデコードスキームと対照的に、第2のデコードスキームは、軟デコードスキームであり、可変ノード値および信頼性データの両方に基づく。いくつかの実施形態において、502において受信された硬判定は、図3に示される硬判定メモリ360のような、硬判定メモリに格納される。この場合、第2のデコードスキームは、硬判定または更新された硬判定を硬判定メモリ360から取得することを含んでよい。
いくつかの実施形態において、可変ノードのための追加の信頼性データは、第2の時点より後の第3の時点に受信される。第2の段階(すなわち、第2のデコードスキームを使用するデコード)におけるデコードが成功しなかった場合、可変ノードは、第3の時点の後、第3のデコードスキームを使用してデコードされてよい。本明細書に記載の通り、追加の信頼性データ(例えば、メモリの追加の読み取りから生じる)を受信するための、およびさらなる可変ノードのデコードのための、任意の数の追加の段階が使用されてよい。デコードが成功した場合、あるいは最大段階数が使用された、若しくは追加の読み取り最大数が実行された場合、デコード処理が終了される。
本開示の複数の実施形態が、本明細書で提示および記載されたが、そのような実施形態は例示としてのみ提供されていることが当業者には明らかであろう。多数の変形、変更および置換が、本開示から逸脱することなく、当業者は想到するだろう。本明細書に記載された本開示に係る複数の実施形態に対する様々な代替が、本開示を実施する際に採用され得ることが理解されるべきである。以下の特許請求の範囲が、本開示の範囲を定め、これらの請求項の範囲に属する複数の方法および構造およびそれらの均等物が、特許請求の範囲によってカバーされることが意図されている。

Claims (18)

  1. データをデコードするための方法であって、
    第1の時点において、可変ノードのための可変ノード値を受信する段階と、
    第2の時点において、前記可変ノードのための信頼性データを受信する段階と、
    更新された可変ノード値を生成すべく、前記第1の時点の後および前記第2の時点の前に、第1のデコードスキームを使用して、前記可変ノードをデコードする段階と、
    前記第2の時点の後、前記第1のデコードスキームとは異なる第2のデコードスキームを使用して、前記更新された可変ノード値に基づいて前記可変ノードをデコードする段階と、を備え、
    前記第1のデコードスキームは、前記可変ノード値に基づく硬デコードスキームであり、前記第2のデコードスキームは、前記更新された可変ノード値および前記信頼性データに基づく軟デコードスキームである、方法。
  2. 前記第2の時点より後、第3の時点において、前記可変ノードのための追加の信頼性データを受信する段階と、
    前記第3の時点の後、第3のデコードスキームを使用して前記可変ノードをデコードする段階と、をさらに備える、請求項1に記載の方法。
  3. 前記可変ノードのための前記可変ノード値を受信する段階は、メモリに対し、読み取り動作を実行する命令を送信することを含む、請求項1または2に記載の方法。
  4. 前記可変ノードのための前記信頼性データを受信する段階は、前記メモリに対し、1または複数の追加の読み取り動作を実行する命令を送信することを含む、請求項3に記載の方法。
  5. 前記メモリは、NANDフラッシュメモリである請求項3に記載の方法。
  6. 前記第1のデコードスキームの結果をバッファに格納する段階をさらに備え、
    前記第2のデコードスキームを使用して、前記可変ノードをデコードする段階は、前記バッファからの前記第1のデコードスキームの前記結果を取得する段階を含み、前記結果は前記更新された可能ノード値を含む、請求項1から5のいずれか一項に記載の方法。
  7. 前記第1のデコードスキームが成功したことを判断する段階と、
    前記第2の時点の前に、前記デコードする段階を終了する段階と、をさらに備える、請求項1から6のいずれか一項に記載の方法。
  8. 前記第2の時点において、前記信頼性データを受信する段階および前記第2のデコードスキームを使用して、前記可変ノードをデコードする段階は、前記第1のデコードスキームが成功しないことの判断に応答して実行される、請求項1から7のいずれか一項に記載の方法。
  9. 1または複数の可変ノード値は、更新された複数の可変ノード値のどの組み合わせが最も満足されないチェックノード数を減少するかに基づいて選択的に更新される、請求項1から8のいずれか一項に記載の方法。
  10. 第1の時点において、可変ノードのための可変ノード値を受信し、
    第2の時点において、前記可変ノードのための信頼性データを受信し、
    更新された可変ノード値を生成すべく、前記第1の時点の後および前記第2の時点の前に、第1のデコードスキームを使用して、前記可変ノードをデコードし、
    前記第2の時点の後、前記第1のデコードスキームとは異なる第2のデコードスキームを使用して、前記更新された可変ノード値に基づいて前記可変ノードをデコードする、デコード回路を備え、
    前記第1のデコードスキームは、前記可変ノード値に基づく硬デコードスキームであり、前記第2のデコードスキームは、前記更新された可変ノード値および前記信頼性データに基づく軟デコードスキームである、デコーダ。
  11. 前記デコード回路はさらに、
    前記第2の時点より後、第3の時点において、前記可変ノードのための追加の信頼性データを受信し、
    前記第3の時点の後、第3のデコードスキームを使用して前記可変ノードをデコードする、請求項10に記載のデコーダ。
  12. 前記デコード回路は、メモリに対し、読み取り動作を実行する命令を送信することによって、前記可変ノードのための前記可変ノード値を受信する、請求項10または11に記載のデコーダ。
  13. 前記デコード回路は、前記メモリに対し、1または複数の追加の読み取り動作を実行する命令を送信することによって、前記可変ノードのための前記信頼性データを受信する、請求項12に記載のデコーダ。
  14. 前記メモリは、NANDフラッシュメモリである、請求項12に記載のデコーダ。
  15. 前記デコード回路はさらに、前記第1のデコードスキームの結果をバッファに格納し、
    前記デコード回路は、前記バッファからの前記第1のデコードスキームの前記結果を取得することによって、前記第2のデコードスキームを使用して、前記可変ノードをデコードし、前記結果は前記更新された可能ノード値を含む、請求項10から14のいずれか一項に記載のデコーダ。
  16. 前記デコード回路はさらに、
    前記第1のデコードスキームが成功したことを判断し、
    前記第2の時点の前に、前記デコードすることを終了する、請求項10から15のいずれか一項に記載のデコーダ。
  17. 前記デコード回路は、前記第1のデコードスキームが成功しないことの判断に応答して、前記第2の時点において、前記信頼性データを受信し、前記第2のデコードスキームを使用して、前記可変ノードをデコードする、請求項10から16のいずれか一項に記載のデコーダ。
  18. 1または複数の可変ノード値は、更新された複数の可変ノード値のどの組み合わせが最も満足されないチェックノード数を減少するかに基づいて選択的に更新される、請求項10から17のいずれか一項に記載のデコーダ。
JP2015561611A 2013-03-07 2014-03-05 データをデコードするための方法およびデコーダ Active JP6446730B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201361774167P 2013-03-07 2013-03-07
US61/774,167 2013-03-07
US14/197,408 2014-03-05
US14/197,408 US9369152B2 (en) 2013-03-07 2014-03-05 Systems and methods for decoding with late reliability information
PCT/US2014/020775 WO2014138246A1 (en) 2013-03-07 2014-03-05 Systems and methods for decoding with late reliability information

Publications (2)

Publication Number Publication Date
JP2016514428A JP2016514428A (ja) 2016-05-19
JP6446730B2 true JP6446730B2 (ja) 2019-01-09

Family

ID=51489442

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015561611A Active JP6446730B2 (ja) 2013-03-07 2014-03-05 データをデコードするための方法およびデコーダ

Country Status (5)

Country Link
US (1) US9369152B2 (ja)
JP (1) JP6446730B2 (ja)
KR (1) KR20150128750A (ja)
CN (1) CN105247808B (ja)
WO (1) WO2014138246A1 (ja)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9467170B2 (en) * 2013-05-17 2016-10-11 Marvell World Trade Ltd. NAND flash memory systems with efficient soft information interface
KR102110767B1 (ko) * 2013-12-24 2020-06-09 삼성전자 주식회사 메모리 컨트롤러 구동방법 및 메모리 컨트롤러
US10084481B2 (en) 2014-12-18 2018-09-25 Apple Inc. GLDPC soft decoding with hard decision inputs
US10484129B2 (en) 2016-01-21 2019-11-19 Qualcomm Incorporated Protocol layer packet coding for transmitter/receiver buffer optimization
CN105897277B (zh) * 2016-03-28 2019-06-14 北京交大思诺科技股份有限公司 解码器解码性能分析方法及装置
TWI594255B (zh) * 2016-07-01 2017-08-01 群聯電子股份有限公司 解碼方法、記憶體控制電路單元及記憶體儲存裝置
CN107590018B (zh) * 2016-07-07 2020-12-01 群联电子股份有限公司 译码方法、存储器控制电路单元及存储器存储装置
TWI670715B (zh) * 2017-04-06 2019-09-01 群聯電子股份有限公司 解碼方法、記憶體儲存裝置及記憶體控制電路單元
US10707899B2 (en) 2017-08-31 2020-07-07 SK Hynix Inc. Bit-flipping decoder for G-LDPC codes with syndrome-decoding for component codes
US10511326B2 (en) * 2017-11-14 2019-12-17 Nyquist Semiconductor Limited Systems and methods for decoding error correcting codes
US10491244B2 (en) * 2017-11-14 2019-11-26 Nyquist Semiconductor Limited Systems and methods for decoding error correcting codes
KR20200020535A (ko) * 2018-08-17 2020-02-26 에스케이하이닉스 주식회사 에러 정정 장치, 그것의 동작 방법 및 그것을 포함하는 전자 장치
KR20200022136A (ko) * 2018-08-22 2020-03-03 에스케이하이닉스 주식회사 에러 정정 장치 및 그것을 포함하는 전자 장치

Family Cites Families (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1605624B1 (en) 2003-03-20 2012-07-25 Fujitsu Limited Error controller
JP4050726B2 (ja) * 2004-06-23 2008-02-20 株式会社東芝 復号装置
US7441178B2 (en) * 2005-02-24 2008-10-21 Keyeye Communications Low complexity decoding of low density parity check codes
US7587657B2 (en) 2005-04-29 2009-09-08 Agere Systems Inc. Method and apparatus for iterative error-erasure decoding
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
US8312354B1 (en) * 2007-12-27 2012-11-13 Marvell International Ltd. Method and apparatus for improved performance of iterative decoders on channels with memory
KR101436505B1 (ko) * 2008-01-03 2014-09-02 삼성전자주식회사 메모리 장치
US8230312B1 (en) * 2008-01-09 2012-07-24 Marvell International Ltd. Iterative decoder memory arrangement
KR101425020B1 (ko) * 2008-03-17 2014-08-04 삼성전자주식회사 메모리 장치 및 데이터 판정 방법
US20100037121A1 (en) 2008-08-05 2010-02-11 The Hong Kong University Of Science And Technology Low power layered decoding for low density parity check decoders
US8291285B1 (en) * 2008-09-18 2012-10-16 Marvell International Ltd. Circulant processing scheduler for layered LDPC decoder
KR101466270B1 (ko) 2008-09-19 2014-11-28 삼성전자주식회사 비휘발성 메모리 시스템 및 그것의 데이터 처리 방법
KR101535225B1 (ko) * 2009-01-06 2015-07-09 삼성전자주식회사 디코딩 방법 및 그 방법을 이용하는 메모리 시스템 장치
US8560917B2 (en) 2009-01-27 2013-10-15 International Business Machines Corporation Systems and methods for efficient low density parity check (LDPC) decoding
US8443267B2 (en) 2009-04-28 2013-05-14 Lsi Corporation Systems and methods for hard decision assisted decoding
US8438461B2 (en) * 2009-10-12 2013-05-07 Marvell World Trade Ltd. Power consumption in LDPC decoder for low-power applications
US8504887B1 (en) * 2009-12-24 2013-08-06 Marvell International Ltd. Low power LDPC decoding under defects/erasures/puncturing
US8572463B2 (en) * 2010-02-01 2013-10-29 Sk Hynix Memory Solutions Inc. Quasi-cyclic LDPC encoding and decoding for non-integer multiples of circulant size
EP2545554A4 (en) 2010-03-12 2015-03-11 Lsi Corp LDPC CLEARANCE DECODING FOR FLASH MEMORY
US8341486B2 (en) 2010-03-31 2012-12-25 Silicon Laboratories Inc. Reducing power consumption in an iterative decoder
US8627175B2 (en) * 2010-09-27 2014-01-07 Seagate Technology Llc Opportunistic decoding in memory systems
US20120240007A1 (en) * 2010-10-20 2012-09-20 Stec, Inc. Ldpc decoding for solid state storage devices
US8694868B1 (en) * 2010-10-21 2014-04-08 Marvell International Ltd. Systems and methods for performing multi-state bit flipping in an LDPC decoder
KR101792868B1 (ko) * 2010-11-25 2017-11-02 삼성전자주식회사 플래시 메모리 장치 및 그것의 읽기 방법
JP2012181761A (ja) 2011-03-02 2012-09-20 Toshiba Corp 半導体メモリ装置および復号方法
US8806309B2 (en) 2011-06-13 2014-08-12 Silicon Motion Inc. Method for controlling message-passing algorithm based decoding operation by referring to statistics data of syndromes of executed iterations and related control apparatus thereof
US8938660B1 (en) * 2011-10-10 2015-01-20 Marvell International Ltd. Systems and methods for detection and correction of error floor events in iterative systems
US8910028B1 (en) * 2011-10-27 2014-12-09 Marvell International Ltd. Implementation of LLR biasing method in non-binary iterative decoding
US9009578B1 (en) * 2011-11-11 2015-04-14 Marvell International Ltd. Methodology for improved bit-flipping decoder in 1-read and 2-read scenarios
US8819515B2 (en) 2011-12-30 2014-08-26 Lsi Corporation Mixed domain FFT-based non-binary LDPC decoder
KR101968746B1 (ko) * 2011-12-30 2019-04-15 삼성전자주식회사 저장 장치로부터 데이터를 읽는 읽기 방법, 에러 정정 장치, 그리고 에러 정정 코드 디코더를 포함하는 저장 시스템
US8739004B2 (en) 2012-05-10 2014-05-27 Lsi Corporation Symbol flipping LDPC decoding system
US9612903B2 (en) 2012-10-11 2017-04-04 Micron Technology, Inc. Updating reliability data with a variable node and check nodes
US8996969B2 (en) * 2012-12-08 2015-03-31 Lsi Corporation Low density parity check decoder with miscorrection handling
US9083383B1 (en) 2013-01-29 2015-07-14 Xilinx, Inc. Parity check matrix
US9124300B2 (en) * 2013-02-28 2015-09-01 Sandisk Technologies Inc. Error correction coding in non-volatile memory
KR20150131370A (ko) * 2013-03-21 2015-11-24 마벨 월드 트레이드 리미티드 멀티-스테이지 소프트 입력 디코딩을 위한 방법 및 시스템
US20150169406A1 (en) * 2013-12-16 2015-06-18 Sandisk Technologies Inc. Decoding techniques for a data storage device
KR20150091693A (ko) * 2014-02-03 2015-08-12 삼성전자주식회사 플래쉬 메모리 읽기 방법

Also Published As

Publication number Publication date
US20140258809A1 (en) 2014-09-11
WO2014138246A1 (en) 2014-09-12
JP2016514428A (ja) 2016-05-19
CN105247808B (zh) 2019-03-22
US9369152B2 (en) 2016-06-14
CN105247808A (zh) 2016-01-13
KR20150128750A (ko) 2015-11-18

Similar Documents

Publication Publication Date Title
JP6446730B2 (ja) データをデコードするための方法およびデコーダ
JP6451955B2 (ja) 多段ソフト入力デコードのためのシステムおよび方法
US9385753B2 (en) Systems and methods for bit flipping decoding with reliability inputs
KR100958234B1 (ko) 패리티 검사 디코더들에서 사용하기 위한 노드 처리기들
JP5122551B2 (ja) 対数尤度マッパのスケールファクタを最適化するブロードキャストレシーバ及び方法
US8694868B1 (en) Systems and methods for performing multi-state bit flipping in an LDPC decoder
US9203432B2 (en) Symbol flipping decoders of non-binary low-density parity check (LDPC) codes
US8667361B1 (en) Systems and methods for performing bit flipping in an LDPC decoder
US9009578B1 (en) Methodology for improved bit-flipping decoder in 1-read and 2-read scenarios
US10797728B1 (en) Systems and methods for diversity bit-flipping decoding of low-density parity-check codes
US9614548B1 (en) Systems and methods for hybrid message passing and bit flipping decoding of LDPC codes
US8935601B1 (en) Post-processing methodologies in decoding LDPC codes
US10298262B2 (en) Decoding low-density parity-check maximum-likelihood single-bit messages
TW201729545A (zh) 用於對低密度奇偶校驗資料進行解碼以對碼字進行解碼的方法以及解碼器
US9379738B2 (en) Systems and methods for decoding using partial reliability information
Sinha et al. Performance analysis of CRC-aided Polar codes with SCL decoding algorithm for the binary deletion channel
JP2010535459A (ja) 線形計画法復号のための座標上昇法
CN112470405A (zh) 非二进制码的消息传递解码的可变节点处理方法和设备
KR20070084951A (ko) 통신 시스템에서 신호 수신 장치 및 방법
CN112994704B (zh) 译码提前终止方法、存储介质、电子设备
JP2009081600A (ja) Map復号器

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20161125

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170815

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20171115

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180320

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180620

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: 20181106

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20181113

R150 Certificate of patent or registration of utility model

Ref document number: 6446730

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R371 Transfer withdrawn

Free format text: JAPANESE INTERMEDIATE CODE: R371

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250