JP6451955B2 - 多段ソフト入力デコードのためのシステムおよび方法 - Google Patents

多段ソフト入力デコードのためのシステムおよび方法 Download PDF

Info

Publication number
JP6451955B2
JP6451955B2 JP2016504300A JP2016504300A JP6451955B2 JP 6451955 B2 JP6451955 B2 JP 6451955B2 JP 2016504300 A JP2016504300 A JP 2016504300A JP 2016504300 A JP2016504300 A JP 2016504300A JP 6451955 B2 JP6451955 B2 JP 6451955B2
Authority
JP
Japan
Prior art keywords
input
decoder
data
decoding
decode
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
JP2016504300A
Other languages
English (en)
Other versions
JP2016519481A (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 JP2016519481A publication Critical patent/JP2016519481A/ja
Application granted granted Critical
Publication of JP6451955B2 publication Critical patent/JP6451955B2/ja
Active 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/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
    • 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/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/1128Judging correct decoding and iterative stopping criteria other than syndrome check and upper limit for decoding iterations
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Quality & Reliability (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Error Detection And Correction (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)

Description

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

Claims (16)

  1. データをデコードするための方法であって、
    第1の入力のタグ付けされた情報に基づいて、前記第1の入力が複数ビット入力コードワードの一部であることを決定する段階と、
    前記複数ビット入力コードワードが完全に受信されるのを待つことなく、第1のデコーダを用いて、前記第1の入力に基づいて前記データをデコードすることを試みる段階と、
    前記第1の入力に基づいて前記データをデコードすることを前記試みることが失敗したとき、
    前記複数ビット入力コードワードの信頼性情報の要求を送信する段階、及び
    前記複数ビット入力コードワードの前記一部、及び前記複数ビット入力コードワードの追加的な一部を受信する段階と、
    記信頼性情報を、受信回路で、受信する段階と、
    前記信頼性情報、前記複数ビット入力コードワードの前記一部、及び前記複数ビット入力コードワードの前記追加的な一部に基づいて、前記データを、第2のデコーダを用いて、デコードする段階と
    を含む、方法。
  2. 前記第1の入力に基づいて前記データをデコードすることを前記試みることが失敗したとき、前記方法は、前記第1の入力を破棄する段階をさらに含む、請求項1に記載の方法。
  3. 前記第1の入力に基づいて前記データをデコードすることを前記試みることが失敗したとき、前記方法は、バッファに前記第1の入力を格納する段階をさらに含む、請求項1に記載の方法。
  4. メモリ上で読み込み動作を実行する命令が送信された後に、前記第1の入力を、前記受信回路で、受信する段階をさらに含む、請求項1から3のいずれか一項に記載の方法。
  5. 前記信頼性情報は、メモリ上で1または複数の追加的な読み込み動作を実行することにより取得される、請求項1から4のいずれか一項に記載の方法。
  6. 前記第1のデコーダが、前記第1の入力に基づいて前記データを成功裏にデコードするとの判断に応じて、前記方法は、前記信頼性情報の前記要求を送信する段階の前に、前記デコードすることを終了する段階をさらに含む、請求項1から5のいずれか一項に記載の方法。
  7. 前記信頼性情報は、少なくとも2ビットを含む、請求項1から6のいずれか一項に記載の方法。
  8. データをデコードするためのシステムであって、
    第1の入力が複数ビット入力コードワードの一部であることを示す情報で前記第1の入力がタグ付けされている場合、前記複数ビット入力コードワードが完全に受信されるのを待つことなく、前記第1の入力に基づいて前記データをデコードすることを試みるように構成された第1のデコーダと、
    前記第1の入力に基づいて前記データをデコードすることを前記試みることが失敗したとき、前記複数ビット入力コードワードの信頼性情報の要求を送信するように構成された送信機と、
    前記第1の入力に基づいて前記データをデコードすることを前記試みることが失敗したとき、前記複数ビット入力コードワードの前記一部、及び前記複数ビット入力コードワードの追加的な一部を受信するように構成された受信機であって、前記信頼性情報を受信する、受信機と、
    前記信頼性情報、前記複数ビット入力コードワードの前記一部、及び前記複数ビット入力コードワードの前記追加的な一部に基づいて、前記データをデコードするように構成された第2のデコーダと
    を備える、システム。
  9. 前記第1のデコーダが、前記第1の入力に基づいて前記データをデコードすることを失敗したとき、前記第1のデコーダは、前記第1の入力を破棄するようにさらに構成される、請求項8に記載のシステム。
  10. 前記第1のデコーダが前記第1の入力に基づいて前記データをデコードすることを失敗したとき、前記システムは、前記第1の入力を格納するように構成されるバッファをさらに備える、請求項8に記載のシステム。
  11. 前記第1の入力は、メモリ上で読み込み動作を実行する命令を送信した後に受信される、請求項8から10のいずれか一項に記載のシステム。
  12. 前記メモリは、NANDフラッシュメモリである、請求項11に記載のシステム。
  13. 前記信頼性情報は、メモリ上で1または複数の追加的な読み込み動作を実行することにより取得される、請求項8から12のいずれか一項に記載のシステム。
  14. 前記第1のデコーダおよび前記第2のデコーダは、同様のスループットを有する、請求項8から13のいずれか一項に記載のシステム。
  15. 前記第1のデコーダが前記第1の入力に基づいて前記データを成功裏にデコードするとの判断に応じて、前記システムは、前記送信機が前記信頼性情報の前記要求を送信する前に、前記デコードすることを終了する、請求項8から14のいずれか一項に記載のシステム。
  16. 前記信頼性情報は、少なくとも2ビットを含む、請求項8から15のいずれか一項に記載のシステム。
JP2016504300A 2013-03-21 2014-03-05 多段ソフト入力デコードのためのシステムおよび方法 Active JP6451955B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201361803894P 2013-03-21 2013-03-21
US61/803,894 2013-03-21
US14/197,426 US9323611B2 (en) 2013-03-21 2014-03-05 Systems and methods for multi-stage soft input decoding
US14/197,426 2014-03-05
PCT/US2014/020644 WO2014149738A1 (en) 2013-03-21 2014-03-05 Systems and methods for multi-stage soft input decoding

Publications (2)

Publication Number Publication Date
JP2016519481A JP2016519481A (ja) 2016-06-30
JP6451955B2 true JP6451955B2 (ja) 2019-01-16

Family

ID=51570064

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016504300A Active JP6451955B2 (ja) 2013-03-21 2014-03-05 多段ソフト入力デコードのためのシステムおよび方法

Country Status (5)

Country Link
US (1) US9323611B2 (ja)
JP (1) JP6451955B2 (ja)
KR (2) KR102349209B1 (ja)
CN (1) CN105052066B (ja)
WO (1) WO2014149738A1 (ja)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014126750A1 (en) 2013-02-14 2014-08-21 Marvell World Trade Ltd. Bit flipping decoding with reliability inputs for ldpc codes
US9369152B2 (en) * 2013-03-07 2016-06-14 Marvell World Trade Ltd. Systems and methods for decoding with late reliability information
KR102349209B1 (ko) 2013-03-21 2022-01-10 마벨 월드 트레이드 리미티드 멀티-스테이지 소프트 입력 디코딩을 위한 방법 및 시스템
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 삼성전자 주식회사 메모리 컨트롤러 구동방법 및 메모리 컨트롤러
US9424134B2 (en) * 2014-03-28 2016-08-23 Intel Corporation Boot management in a non-volatile memory system
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
WO2016078731A1 (en) * 2014-11-21 2016-05-26 Telefonaktiebolaget L M Ericsson (Publ) Signal processing apparatus and method
CN105162492B (zh) * 2015-05-26 2018-05-18 中国科学院微电子研究所 一种无线体域网重复码解扩频***和方法
US20180032396A1 (en) * 2016-07-29 2018-02-01 Sandisk Technologies Llc Generalized syndrome weights
CN107249144B (zh) * 2017-05-12 2020-05-15 北京小鸟看看科技有限公司 多媒体文件解码的方法、多媒体播放器和播放设备
JP6847796B2 (ja) * 2017-09-20 2021-03-24 キオクシア株式会社 メモリシステム
US10574274B2 (en) * 2017-09-29 2020-02-25 Nyquist Semiconductor Limited Systems and methods for decoding error correcting codes
US10511326B2 (en) * 2017-11-14 2019-12-17 Nyquist Semiconductor Limited Systems and methods for decoding error correcting codes
US10637511B2 (en) * 2017-12-18 2020-04-28 Western Digital Technologies, Inc Dynamic multi-stage decoding
KR20200020535A (ko) * 2018-08-17 2020-02-26 에스케이하이닉스 주식회사 에러 정정 장치, 그것의 동작 방법 및 그것을 포함하는 전자 장치
US11184024B2 (en) * 2019-12-02 2021-11-23 SK Hynix Inc. Error mitigation scheme for bit-flipping decoders for irregular low-density parity-check codes
CN113364471B (zh) 2020-03-05 2024-04-12 华为技术有限公司 一种译码***、译码控制器及译码控制的方法
US11811424B2 (en) * 2021-04-05 2023-11-07 Micron Technology, Inc. Fixed weight codewords for ternary memory cells
CN113872611B (zh) * 2021-12-02 2022-04-15 阿里云计算有限公司 一种ldpc解码方法、设备、***及存储介质
US20230298674A1 (en) * 2022-03-17 2023-09-21 Samsung Electronics Co., Ltd Programming by self adjusting program voltage targets compensating for cell-to-cell interference and pe cycles

Family Cites Families (40)

* 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
EP2323277A1 (en) 2005-03-03 2011-05-18 Panasonic Corporation Wireless communication apparatus relaying either soft information or hard decoded bits
US7587657B2 (en) * 2005-04-29 2009-09-08 Agere Systems Inc. Method and apparatus for iterative error-erasure decoding
EP2709270B1 (en) * 2005-05-10 2018-11-14 Qualcomm Incorporated Using soft bit decisions to improve DPSK demodulation of SPS data
WO2009072103A2 (en) 2007-12-05 2009-06-11 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 삼성전자주식회사 비휘발성 메모리 시스템 및 그것의 데이터 처리 방법
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
KR101968746B1 (ko) * 2011-12-30 2019-04-15 삼성전자주식회사 저장 장치로부터 데이터를 읽는 읽기 방법, 에러 정정 장치, 그리고 에러 정정 코드 디코더를 포함하는 저장 시스템
US8819515B2 (en) 2011-12-30 2014-08-26 Lsi Corporation Mixed domain FFT-based non-binary LDPC decoder
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
US10902179B2 (en) 2012-12-10 2021-01-26 Microsoft Technology Licensing, Llc Modification of file graphic appearance within a collection canvas
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
KR102349209B1 (ko) 2013-03-21 2022-01-10 마벨 월드 트레이드 리미티드 멀티-스테이지 소프트 입력 디코딩을 위한 방법 및 시스템
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
KR20200093688A (ko) 2020-08-05
JP2016519481A (ja) 2016-06-30
WO2014149738A1 (en) 2014-09-25
US9323611B2 (en) 2016-04-26
CN105052066B (zh) 2018-12-25
KR102349209B1 (ko) 2022-01-10
KR20150131370A (ko) 2015-11-24
US20140289584A1 (en) 2014-09-25
CN105052066A (zh) 2015-11-11

Similar Documents

Publication Publication Date Title
JP6451955B2 (ja) 多段ソフト入力デコードのためのシステムおよび方法
JP6446730B2 (ja) データをデコードするための方法およびデコーダ
US11784666B2 (en) Decoding signals by guessing noise
US9385753B2 (en) Systems and methods for bit flipping decoding with reliability inputs
US9026886B1 (en) Methods and systems for reconfigurable LDPC decoders
JP5432367B2 (ja) 書込み検証を使用した符号のエラーフロア軽減
US8984378B1 (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
US8943381B1 (en) Systems and methods for performing bit flipping in an LDPC decoder
US9300328B1 (en) Methodology for improved bit-flipping decoder in 1-read and 2-read scenarios
WO2014139123A1 (en) Method and apparatus of ldpc decoder with lower error floor
US8935601B1 (en) Post-processing methodologies in decoding LDPC codes
US20200403644A1 (en) Information Decoder for Polar Codes
US9379738B2 (en) Systems and methods for decoding using partial reliability information
JP2009081600A (ja) Map復号器

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20161128

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170829

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20171129

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180117

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180313

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180611

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20181127

R150 Certificate of patent or registration of utility model

Ref document number: 6451955

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