(57)【特許請求の範囲】
【請求項１】
データをデコードするための方法であって、
第１の時点において、可変ノードのための可変ノード値を受信する段階と、
第２の時点において、前記可変ノードのための信頼性データを受信する段階と、
更新された可変ノード値を生成すべく、前記第１の時点の後および前記第２の時点の前に、第１のデコードスキームを使用して、前記可変ノードをデコードする段階と、
前記第２の時点の後、前記第１のデコードスキームとは異なる第２のデコードスキームを使用して、前記更新された可変ノード値に基づいて前記可変ノードをデコードする段階と、を備え、
前記第１のデコードスキームは、前記可変ノード値に基づく硬デコードスキームであり、前記第２のデコードスキームは、前記更新された可変ノード値および前記信頼性データに基づく軟デコードスキームである、方法。
【請求項２】
前記第２の時点より後、第３の時点において、前記可変ノードのための追加の信頼性データを受信する段階と、
前記第３の時点の後、第３のデコードスキームを使用して前記可変ノードをデコードする段階と、をさらに備える、請求項１に記載の方法。
【請求項３】
前記可変ノードのための前記可変ノード値を受信する段階は、メモリに対し、読み取り動作を実行する命令を送信することを含む、請求項１または２に記載の方法。
【請求項４】
前記可変ノードのための前記信頼性データを受信する段階は、前記メモリに対し、１または複数の追加の読み取り動作を実行する命令を送信することを含む、請求項３に記載の方法。
【請求項５】
前記メモリは、ＮＡＮＤフラッシュメモリである請求項３に記載の方法。
【請求項６】
前記第１のデコードスキームの結果をバッファに格納する段階をさらに備え、
前記第２のデコードスキームを使用して、前記可変ノードをデコードする段階は、前記バッファからの前記第１のデコードスキームの前記結果を取得する段階を含み、前記結果は前記更新された可能ノード値を含む、請求項１から５のいずれか一項に記載の方法。
【請求項７】
前記第１のデコードスキームが成功したことを判断する段階と、
前記第２の時点の前に、前記デコードする段階を終了する段階と、をさらに備える、請求項１から６のいずれか一項に記載の方法。
【請求項８】
前記第２の時点において、前記信頼性データを受信する段階および前記第２のデコードスキームを使用して、前記可変ノードをデコードする段階は、前記第１のデコードスキームが成功しないことの判断に応答して実行される、請求項１から７のいずれか一項に記載の方法。
【請求項９】
１または複数の可変ノード値は、更新された複数の可変ノード値のどの組み合わせが最も満足されないチェックノード数を減少するかに基づいて選択的に更新される、請求項１から８のいずれか一項に記載の方法。
【請求項１０】
第１の時点において、可変ノードのための可変ノード値を受信し、
第２の時点において、前記可変ノードのための信頼性データを受信し、
更新された可変ノード値を生成すべく、前記第１の時点の後および前記第２の時点の前に、第１のデコードスキームを使用して、前記可変ノードをデコードし、
前記第２の時点の後、前記第１のデコードスキームとは異なる第２のデコードスキームを使用して、前記更新された可変ノード値に基づいて前記可変ノードをデコードする、デコード回路を備え、
前記第１のデコードスキームは、前記可変ノード値に基づく硬デコードスキームであり、前記第２のデコードスキームは、前記更新された可変ノード値および前記信頼性データに基づく軟デコードスキームである、デコーダ。
【請求項１１】
前記デコード回路はさらに、
前記第２の時点より後、第３の時点において、前記可変ノードのための追加の信頼性データを受信し、
前記第３の時点の後、第３のデコードスキームを使用して前記可変ノードをデコードする、請求項１０に記載のデコーダ。
【請求項１２】
前記デコード回路は、メモリに対し、読み取り動作を実行する命令を送信することによって、前記可変ノードのための前記可変ノード値を受信する、請求項１０または１１に記載のデコーダ。
【請求項１３】
前記デコード回路は、前記メモリに対し、１または複数の追加の読み取り動作を実行する命令を送信することによって、前記可変ノードのための前記信頼性データを受信する、請求項１２に記載のデコーダ。
【請求項１４】
前記メモリは、ＮＡＮＤフラッシュメモリである、請求項１２に記載のデコーダ。
【請求項１５】
前記デコード回路はさらに、前記第１のデコードスキームの結果をバッファに格納し、
前記デコード回路は、前記バッファからの前記第１のデコードスキームの前記結果を取得することによって、前記第２のデコードスキームを使用して、前記可変ノードをデコードし、前記結果は前記更新された可能ノード値を含む、請求項１０から１４のいずれか一項に記載のデコーダ。
【請求項１６】
前記デコード回路はさらに、
前記第１のデコードスキームが成功したことを判断し、
前記第２の時点の前に、前記デコードすることを終了する、請求項１０から１５のいずれか一項に記載のデコーダ。
【請求項１７】
前記デコード回路は、前記第１のデコードスキームが成功しないことの判断に応答して、前記第２の時点において、前記信頼性データを受信し、前記第２のデコードスキームを使用して、前記可変ノードをデコードする、請求項１０から１６のいずれか一項に記載のデコーダ。
【請求項１８】
１または複数の可変ノード値は、更新された複数の可変ノード値のどの組み合わせが最も満足されないチェックノード数を減少するかに基づいて選択的に更新される、請求項１０から１７のいずれか一項に記載のデコーダ。
【発明の詳細な説明】
【技術分野】
【０００１】
［関連出願］
本開示は、米国特許法第１１９条（ｅ）による、２０１３年３月７日に出願された、米国仮出願第６１／７７４、１６７による利益を主張し、参照により本明細書にその全体が組み込まれる。
【０００２】
本開示は概して、データデコードに関し、より具体的には、低密度パリティチェック（ＬＤＰＣ）エンコーダでエンコードされたデータのための複数の信頼性入力を持つ複数のデコーダに関する。
【背景技術】
【０００３】
複数のＬＤＰＣコードおよび複数のＬＤＰＣコードをデコードするために使用される複数のデコーダが、多数のアプリケーションおよびデバイスにおいて使用される可能性がある。例えば、データストレージ、複数の衛星通信、複数の無線通信、複数の有線通信、および複数の電力線通信はそれぞれ、複数のＬＤＰＣコードおよびＬＤＰＣデコーダを使用し得る複数の用途である。デジタルカメラフラッシュメモリストレージのような複数のデバイス、複数の衛星、複数の携帯電話、および他の複数のモバイルデバイスもそれぞれ、複数のＬＤＰＣコードおよび複数のＬＤＰＣデコーダを使用し得る。
【０００４】
複数のＬＤＰＣコードは、ノイズの多いデータストレージまたは通信チャネル内の送信された情報における複数のエラーを訂正するために使用されてよい。当該情報は、送信前にエンコードされてよく（ＬＤＰＣエンコーダによって）、その後、受信時にデコードされてよい（ＬＤＰＣデコーダによって）。複数のＬＤＰＣコードは、通信およびデータストレージチャネル内の送信された情報における複数のエラーを訂正する用途のための、Ｔｕｒｂｏコードと並ぶ、最も高性能なエラー訂正コードのうちの１つである。
【０００５】
従来の複数の硬デコードＬＤＰＣ技術は通常、ビット反転するかどうか、あるいは記号の値を更新するかどうかを、特定数のチェックが満たされないことにのみ基づいて、判断する。例えば、更新された複数の記号のどの組み合わせが、満たされないチェックノード数を最も減少させる可能性が高いかということに基づいて、更新される１または複数の記号の値が選択されてよい。
【発明の概要】
【０００６】
本開示の一実装例によると、データをデコードするための複数のシステムおよび方法が提供される。第１の時点において、可変ノードのための可変ノード値が受信され、第２の時点において、可変ノードのための信頼性データが受信される。第１の時点の後および第２の時点の前に、第１のデコードスキームを使用して、可変ノードはデコードされ、第２の時点の後、可変ノードは、第１のデコードスキームとは異なる第２のデコードスキームを使用してデコードされる。
【０００７】
いくつかの実装において、第１のデコードスキームは、可変ノード値に基づく、硬デコードスキームである。第２のデコードスキームは、可変ノード値および信頼性データに基づく、軟デコードスキームである。
【０００８】
いくつかの実装において、第２の時点より後の、第３の時点において、可変ノードのための追加の信頼性データは受信され、第３の時点の後、第３のデコードスキームを使用して可変ノードがデコードされる。
【０００９】
いくつかの実装において、可変ノードのための可変ノード値を受信することは、メモリに対し、読み取り動作を実行する命令を送信することを含む。可変ノードのための信頼性データを受信することは、メモリに対し、１または複数の追加の読み取り動作を実行する命令を送信することを含む。メモリは、ＮＡＮＤフラッシュメモリであってよい。
【００１０】
第１のデコードスキームの結果は、バッファ内に格納されてよく、そこでは、第２のデコードスキームを使用して、可変ノードをデコードすることは、バッファから第１のデコードスキームの結果を取得することを含む。
【００１１】
いくつかの実装において、第１のデコードスキームが成功した場合、デコードは、第２の時点の前に終了される。第２の時点において、信頼性データを受信すること、および第２のデコードスキームを使用して、可変ノードをデコードすることは、第第１のデコードスキームが成功しないと判断することに応答して実行されてよい。
【００１２】
本開示の一実装例によると、デコーダは、デコード回路を含む。デコード回路は、第１の時点において、可変ノードのための可変ノード値を受信し、第２の時点において、可変ノードのための信頼性データを受信するよう構成される。第１の時点の後および第２の時点の前に、第１のデコードスキームを使用して、可変ノードがデコードされ、第２の時点後、第１のデコードスキームとは異なる第２のデコードスキームを使用して、可変ノードがデコードされる。
【００１３】
本開示の上記および他の複数の特徴は、その本質およびその様々な利点を含め、以下の詳細な説明を、複数の添付図面と合わせて考慮すると、より明らかになる。
【図面の簡単な説明】
【００１４】
【図１】本開示の一実施形態による、ＬＤＰＣデコードを採用する、例示的な通信システムのブロック図である。
【図２Ａ】本開示の一実施形態による、受信されたコードワードの複数の記号を表わす複数の可変ノードと、受信されたコードワードをデコードするための複数のチェックノードとの間の、複数の通信の図である。
【図２Ｂ】本開示の一実施形態による、受信されたコードワードの複数の記号を表わす複数の可変ノードと、受信されたコードワードをデコードするための複数のチェックノードとの間の、複数の通信の図である。
【図３】本開示の一実施形態による、最新の信頼性情報に基づいてデコードするための例示的システムのブロック図である。
【図４】本開示の一実施形態による、最新の信頼性情報に基づいてデコードするための例示的な処理のフローチャートである。
【図５】本開示の一実施形態による、最新の信頼性情報に基づいて、多段階デコードのための例示的な処理のフローチャートである。
【発明を実施するための形態】
【００１５】
本開示は概して、デコーダにおけるデコードの実行に関する。本開示の全体的な理解を提供すべく、最新の信頼性情報に基づいてデコードを実行する、多段階デコーダを含む、複数の特定の例示的実施形態がここに記載される。しかしながら、本明細書に記載される複数のシステムおよび方法は、対処されるアプリケーションにとって適切なように、適合および修正され得、および、本明細書に記載される複数のシステムおよび方法は、他の複数の好適なアプリケーションにおいて採用され得、および、そのような他の複数の追加および変形は、それらの範囲から逸脱しないことが当業者によって理解されるだろう。
【００１６】
複数の特定のフラッシュメモリユニットのような、いくつかの通信システムにおいて、複数のデータ推定（または硬判定データ）は、複数の硬判定に関する信頼性データが利用可能になる前に、デコーダに対し利用可能になる。デコードが開始する前に、複数の硬判定および信頼性データの両方が利用可能になるまで、軟デコーダに待機を強制させるよりむしろ、本明細書に記載された複数のシステムおよび方法は、複数の段階におけるデコードを可能にする。本開示に係る複数のデコードシステムおよび方法は、複数の硬判定が利用可能な場合、第１の段階で硬デコードを実行する。後で、特定量の信頼性データが利用可能である場合、複数の硬判定および信頼性データの両方を利用する、軟デコードが第２の段階で実行される。任意に、追加の信頼性データが受信されると、複数の追加の軟デコードの段階が使用される。そのような多段階デコーダは、本明細書において、複数の最新の信頼性デコーダと言及される。
【００１７】
図１は、本開示の複数の実施形態による、複数の信頼性入力に部分的に基づく、ＬＤＰＣデコードのための例示的な通信システム１００を示す。送信ユーザまたはアプリケーション１０２から、受信ユーザまたはアプリケーション１３０へ、情報を送信すべく、通信システム１００が使用される。送信ユーザまたはアプリケーション１０２は、情報を生成するオブジェクトまたはエンティティを表わす。例えば、送信ユーザまたはアプリケーション１０２は、コンピュータシステムのソフトウェアプログラム、または無線システムの無線通信送信機の構成要素に対応してよい。送信ユーザまたはアプリケーション１０２は、データストリームの形態で情報を生成し、データストリームは、例えば、ソースエンコーダ（図１に不図示）によって前処理されている、一連の記号値によって表わされてよい。送信ユーザまたはアプリケーション１０２によって生成される情報は、音声情報、ビデオ情報、金融情報、またはデジタルまたはアナログの形態で表わされ得る、任意の他のタイプの情報に対応してよく、送信ユーザまたはアプリケーション１０２によって生成されるデータストリームは、デジタルデータストリームであってよい。
【００１８】
送信ユーザまたはアプリケーション１０２は、データストリームを、ｋ個の記号の固定長のブロックに、セグメント化あるいは分割されてよい。特に、ｍとも言及されるメッセージ１０４は、これらのブロックのうちの１つを表わす。特に、メッセージ１０４は、長さにおいて複数のｋ記号であり、各記号は、バイナリデータまたは３値データ、４値データのような非バイナリデータ、任意の他の好適なタイプのデータ、あるいはこれら任意の好適な組み合わせであってよい。コードワード１１０を生成すべく、メッセージ１０４をエンコードするためのエンコーダ１０６が使用される。本開示の一実施形態において、エンコーダ１０６は、ＬＤＰＣエンコーダである。しかしながら、本明細書に提供される開示および複数の教示に基づき、エンコーダ１０６は、任意の他の好適なエンコーダであってよいことが明らかであろう。ｃとも言及されるコードワード１１０は、ｎ個の記号の長さを有し、ｎ＞ｋである。エンコーダ１０６は、標記の便宜上、Ｇとも言及される、コードワード１１０を生成する、ジェネレータ行列Ｇ１０８を使用する。例えば、エンコーダ１０６は、メッセージ１０４をコードワード１１０に変換すべく、１または複数の行列演算を実行してよい。一実施形態において、エンコーダ１０６は、以下の行列乗算ｃ＝Ｇｍによる、ジェネレータ行列Ｇ１０８を使用して、メッセージ１０４からのコードワード１１０を生成する。
【００１９】
コードワード１１０は、変調器１１２によって、チャネル１１４上での送信および／または格納のために好適な波形に、変調または変換されてよい。例えば、波形は、アナログ二位相偏移変調（ＢＰＳＫ）信号、アナログ位相偏移変調（ＰＳＫ）信号、アナログ周波数偏移変調（ＦＳＫ）信号、アナログ直角位相振幅変調（ＱＡＭ）信号、または任意の他の好適なアナログまたはデジタル信号に対応してよい。
【００２０】
チャネル１１４は、物理媒体を表わし、復調器１１６において受信される前に、送信される波形はそこを介して通過し、またはそこに格納される。例えば、チャネル１１４は、コンピュータシステム環境における格納媒体を表わす格納チャネル、または無線通信環境における無線伝搬環境を表わす通信チャネルであってよい。チャネル１１４の様々な特徴は、そこで通信される、またはそこに格納されるデータを破損する場合がある。例えば、チャネル１１４は、非理想的無記憶チャネルまたはメモリを備えるチャネルであってよい。チャネル１１４は、消去チャネルであってよく、対称的または非対称的であってよい。受信されたコードワード１１８を生成すべく、チャネル１１４の出力は、復調器１１６によって復調および処理される。復調器１１６は、複数の周波数フィルタ、複数の周期関数による乗算および積分、および／またはチャネル１１４の出力を復調および／または処理するための任意の他の好適な復調技術を使用してよい。
【００２１】
受信されたコードワード１１８は、コードワード１１０に関連付けられた情報を含み、エンコーダ１０６によって元々出力されたコードワード１１０の、破損された、あるいは変更されたバージョンであってよい。例えば、受信されたコードワード１１８は、コードワード１１０の予備的推定またはノイズのあるバージョン、エンコーダ１０６によって生成されたコードワードの複数の可能値の確率分布ベクトル、またはこれらの複数の組み合わせ並びに他の複数の値を含んでよい。
【００２２】
検出器サンプル１２２を生成すべく、受信されたコードワード１１８を処理するのに、検出器１２０が使用され、検出器サンプル１２２は、元のデータメッセージ１０４の推定であってよく、また本明細書において１または複数の硬判定として言及され得る。検出器１２０は、受信されたコードワード１１８内の各記号をサンプリングし、各記号を記号の値に基づくビンに割り当てる。いくつかの実施形態において、ビンは、確率分布に基づいて割り当てられる。検出器１２０によってサンプリングされた各記号は、２または２より多い可能性のあるビンまたは状態に割り当てられてよい。検出器サンプル１２２に対し判断される複数の状態は、サンプルコードワードとして、メモリ内に格納される。このメモリは、「硬判定メモリ」と呼ばれ、受信されたコードワード１１８とは異なるメモリ場所に存在してよい。
【００２３】
いくつかの実施形態において、チャネル１１４は、複数回読み取られ、当該複数の読み取りは、復調器１１６、検出器１２０、またはそれら両方によって、連携的または別々に処理され、硬判定サンプルコードワードに加え、信頼性データを生成してよい。例えば、フラッシュメモリストレージデバイスに格納された特定の記号の入力状態を判断すべく、記号の受信された値が格納されたメモリセルが１回より多く読み取られてよい。信頼性データおよび硬判定データの形態で検出器サンプル１２２を生成すべく、同一記号に対応するチャネル１１４の複数の読み取りは、検出器１２０によって処理されてよい。例えば、サンプルコードワード内の各ビットのための硬判定データの１ビットおよび信頼性データの１ビットを生成すべく、バイナリコードで、チャネル１１４の複数の読み取りは、復調器１１６、検出器１２０、またはそれら両方によって処理されてよい。別の例において、信頼性データの２ビットが、サンプルコードワード内の各ビットに対し生成されてよい。一般的に、信頼性データの任意の数のビットが、サンプルコードワード内の各ビットに対し生成されてよい。そのような信頼性データは、硬判定メモリとは別個の「信頼性データメモリ」場所に格納されてよく、あるいは、同一メモリ場所の複数の硬判定とともに格納されてよい。検出器サンプル１２２内の形態での硬判定および信頼性データの両方が、複数の後のデコード動作のための入力として、デコーダ１２４に送信される。
【００２４】
デコーダ１２４は、複数の段階において、検出器サンプル１２２を受信および反復的に処理する。検出器１２０およびデコーダ１２４は、２つの別個のプロセッサであってよく、あるいは、単一のプロセッサが、検出器１２０およびデコーダ１２４の両方として使用されてよい。一般的に、デコーダ１２４は、例えば、チャネル１１４を介した送信による、検出器サンプル１２２内に存在する複数のエラーを反復的に訂正および／または検出すべく使用される、制御回路および／またはデコード回路を含む。いくつかの実施形態において、デコードされたメッセージ１２８を生成すべく、デコーダ１２４は、パリティチェック行列Ｈ１２６およびデコード技術を使用する。一般的に、ＬＤＰＣデコードは、数学的ベクトルモデル
【数１】
0006446730.tif 000002
を使用して記述可能である。式中ｃは、バイナリストリング長ｎ、およびＨはパリティチェック行列Ｈ１２６であり、これは低密度で疎のｍ×ｎ行列である。式中、上記の通り、ｎはコードワード内の記号数、ｍはｍ≧ｎ−ｋを満たすチェックノード数、およびｋはメッセージ内の記号数である。モデルは、バイナリストリングｃがコードワードｃ１１０である場合にのみ満たされる。パリティチェック行列Ｈ１２６は必ずしも一意でなくてよく、コンピュータ的に便利なように、デコーダ１２４のデコード技術によって生成されるエラー数を低減するように、あるいはそれら両方のために、選択されてよい。
【００２５】
本開示によると、デコーダ１２４によって使用される多段階デコード技術は、１または複数の「更新ルール」に基づいて、複数の記号、信頼性データ、またはそれら両方を更新することによって、複数の検出器サンプル１２２を処理することを伴う。一例において、更新ルールは、記号の複数のチェックが満たされるか満たされないか、信頼性データの値に基づいて、記号が既に更新、反転、またはトグルされたかどうか、またはこれら好適な組み合わせに基づいてよい。概して、本明細書において使用されるように記号を「反転」または「トグル」することは、記号の値を、現在の値とは異なる値に更新することを意味する。記号の反転またはトグルを実行するための、複数の更新ルールおよびシステムアーキテクチャは、Ｖａｒｉｃａ他による、２０１４年２月４日に出願された、米国特許出願第１４／１７２、４２０に記載されており、ここに参照により全体として組み込まれる。
【００２６】
処理後、デコードされたメッセージ１２８内の各記号は、一連の可能性のある状態における一状態として割り当てられるべきである。ｃとしてモデル
【数２】
0006446730.tif 000003
に入力されると、デコードされたメッセージ１２８は、モデルを満たす。デコードを実行するために好適な複数のシステムおよび処理は、図３〜５に関連して記載される。
【００２７】
デコーダ１２４によって処理された後、デコードされたメッセージ１２８は、受信ユーザまたはアプリケーション１３０に配信される。受信ユーザまたはアプリケーション１３０は、送信ユーザまたはアプリケーション１０２と同一のデバイスまたはエンティティに対応してよく、あるいは受信ユーザまたはアプリケーション１３０は、異なるデバイスまたはエンティティに対応してよい。さらに、受信ユーザまたはアプリケーション１３０は、共に配置されるか、あるいは送信ユーザまたはアプリケーション１０２と物理的に分離されてよい。デコーダ１２４が、チャネル１１４および通信システム１００における他の複数の通信の影響によって誘発されるすべてのエラーを訂正する場合、デコードされたメッセージ１２８は、メッセージ１０４の論理レプリカである。あるいは、デコードされたメッセージ１２８は、メッセージ１０４と異なってよく、デコーダ１２４は、それに応じてエラーを宣言してよい。
【００２８】
図２Ａおよび２Ｂは、本開示の一実施形態による、例示的なコードワードを表わす可変ノード２２０〜２３４と、可変信頼性情報を使用してコードワードをデコードするための複数のチェックノード２００〜２１０との間の通信に係る図である。
【００２９】
デコード処理の初期化の際、可変ノード２２０〜２３４は、図１に関連して記載される検出器１２０を使用して割り当てられる複数の入力状態であり、ここで、硬判定および信頼性情報の両方が考慮されてよい。本明細書に記載されている通り、「可変ノード値」は、可変ノードに関連付けられた硬判定に関する一方で、「可変信頼性データ」は、可変ノードまたは可変ノード値に関連付けられた信頼性データに関する。入力状態は、可変ノード値および可変信頼性データの１または両方を含んでよい。
【００３０】
一例示において、各可変ノードは、［ｂ１、ｂ０］によって示される、２ビット入力に関連付けられ、ビットｂ０の値は、硬判定を示し、ビットｂ１の値は、硬判定の信頼性を示す。バイナリコードにおいて、ｂ０はデコードされたビットの２つの可能性のある硬判定状態を表わす、値０または１を取ってよい。従って、ｂ１も値０または１を取ってよく、０は信頼できない硬判定を表わし、および１は信頼可能な硬判定を表わす。換言すれば、可変ノードに対する入力１０は、信頼可能な判定０として解釈されてよく、可変ノードに対する入力００は、信頼不可能な判定０として解釈されてよく、可変ノードに対する入力０１は、信頼不可能な判定１として解釈されてよく、可変ノードに対する入力１１は、信頼可能な判定１として解釈されてよい。一般的に、任意の数（ｋ）の信頼性のビットが使用されてよく、（ｋ＋１）‐ビット入力は、［ｂｋ  ｂｋ−１...ｂ１  ｂ０］によって示されてよい。
【００３１】
複数の硬デコードシステムは、硬判定データに対し、デコードを実行する一方、複数の軟デコードシステムは、硬判定データ並びに信頼性データの両方に対し、デコードを実行する。本開示の多段階デコーダにおいて、デコーダは、硬判定データが利用可能な場合にのみ、硬デコードを実行してよく、信頼性データが利用可能になるとき、軟デコードを実行してよい。特に、複数の特定のフラッシュメモリユニットのような、いくつかのシステムにおいて、対応する信頼性データが利用可能になる前に、硬判定データがデコーダに対し利用可能にされる。チャネル１１４が一回読み取られた後、硬判定が利用可能になるので、これが発生してよく、複数の追加の読み取りの後、信頼性データが利用可能になるのみである。一例において、信頼性データの１ビットをレンダリングするには、２つの追加の読み取りで十分であってよく、さらなる追加の読み取りは、信頼性データの追加の複数のビットをレンダリングしてよい。
【００３２】
各読み取りを実行するための複数のシステム必要条件は、実際のデコードを実行するより、さらに高コストに関連付けられてよい。例えば、単一の読み取りを実行するのにかかる時間は、デコードを実行するのにかかる時間より、顕著に長くてよい。硬判定のみを受信後で、任意の信頼性データが受信される前、硬デコードは妥当なコードワードの回復に成功してよいので、信頼性データを回復すべく、複数の任意の追加の読み取りを実行する前に、硬デコードが成功したかどうかを判断することが望ましい可能性がある。同様に、特定数の読み取り後、軟デコードが成功する場合、複数の追加の不要な読み取りを実行することは望ましくない可能性がある。スループットおよび電力の制約を持つシステムにおいて、本開示の多段階デコーダは、硬判定データおよび受信時に信頼性データを活用することによって、効率的なデコードを提供する。
【００３３】
硬判定および信頼性データ入力は、複数の入力状態としてともに１つのメモリ場所に、あるいは硬判定メモリおよび信頼性データメモリに別々に格納されてよい。本明細書に記載の通り、硬判定を表わすべく、１ビットのみが使用され、硬判定の信頼性を表わすべく、１ビットのみが使用される。しかしながら、一般的に、硬判定、信頼性、またはそれら両方を表わすべく、任意の数のビットが使用されてよい。特に、硬判定は、複数の非バイナリコードのための２つより多い値を取ってよく、複数の信頼性メッセージは、１または複数のビットまたは記号を伝搬してよい。
【００３４】
図１に関連して記載された通り、検出器１２０を使用して、可変ノード２２０〜２３４に複数の入力状態が割り当てられた後、複数の可変ノードのチェックがデコーダ１２４によって、複数の可変ノードの複数のグループに対し、実行される。複数の可変ノードからなる１グループの条件を判断すべく、デコーダ１２４は、複数の処理ルールを使用する。判断された条件の指示は、チェックノード２００〜２１０のような、チェックノードにおけるシンドロームメモリ内に格納される。パリティチェック行列Ｈ１２６（図１）は、どの複数のチェックノードが、どの複数の可変ノードに対する複数の判断された条件の複数の指示を格納するかを識別する。例えば、図２Ａおよび２Ｂに示される複数のノードおよびバイナリコード例について、パリティチェック行列Ｈ１２６は次のようになり得る。
【数３】
0006446730.tif 000004
【００３５】
各行は、複数のチェックノードの１つに対応し、各列は、複数の可変ノードの１つに対応する。複数のバイナリコードとともに、パリティチェック行列の複数の要素は、上記に示されるように、０または１である。本明細書で使用される通り、可変ノードの「隣接」チェックノードは、当該可変ノードへの接続を有するチェックノードである。同様に、チェックノードの「隣接」可変ノードは、当該チェックノードへの接続を有する可変ノードである。上記に示されるパリティチェック行列Ｈ１２６は、複数のチェックノードと、複数の可変ノードとの間の複数の接続に関する複数の指示を提供する。特に、図２Ａに示される通り、可変ノード２２２、２２４、２３０および２３４は、チェックノード２０６の複数の隣接ノードであり、図２Ｂに示される通り、チェックノード２００、２０６、および２１０は、可変ノード２２４の隣接ノードである。さらに、複数のバイナリコードにおいて、各チェックノードは、２つの状態のうちの１つを有する。チェックが満たされる場合、０で、チェックが満たされない場合、１である。非バイナリコードについて、パリティチェック行列の複数の要素は、非バイナリであり、各チェックノードは、２つより多い状態の１つである。パリティチェック行列の各行は、パリティチェックの式の複数の係数を形成し、パリティチェック式は、非バイナリ領域で計算される。
【００３６】
特定のチェックノードに関連付けられた複数の可変ノード、または当該特定のチェックノードによってチェックされるべき複数の可変ノードを識別すべく、デコーダ１２４はパリティチェック行列Ｈ１２６を参照する。例えば、チェックノード２０６については、デコーダ１２４は、そのチェックノード２０６が、可変ノード２２２、２２４、２３０、および２３４（すなわち、第２、第３、第６、および第８番目の可変ノード）のチェック結果を格納したことを判断すべく、パリティチェック行列Ｈ１２６の第４行を使用する。次に、デコーダ１２４は、これらの可変ノード内に格納された複数の値を取得する。上記パリティチェック行列Ｈの第４行目の複数の値は、パリティチェックの式の複数の係数であり、それらはそれぞれ、複数の可変ノードの対応する値によって乗算される。説明のため、図２Ａ内の複数の複数の矢印は、取得された複数の値が、可変ノード２２２、２２４、２３０、および２３４からチェックノード２０６へと流れることを示し、チェックノード２０６は、可変ノード２２２、２２４、２３０、および２３４を「チェック」するとみなされてよい。複数の可変ノード値は、デコーダ１２４によって取得され、デコーダ１２４は、複数の処理ルールに従い、チェックノード２０６の代わりに、複数の値を処理する。
【００３７】
可変ノード２２２、２２４、２３０および２３４から受信される複数の値から、デコーダ１２４は、チェックノード２０６のための特定の条件が満たされるか、または満たされないかを判断する。チェックノード２０６が満たされるか、または満たされないか（すなわち、「シンドローム値」またはチェックノードの「チェックノード値」）の指示は、シンドロームメモリ内に格納され、シンドロームメモリは、複数のチェックノードの複数のシンドローム値または指示を格納する。さらに、複数のチェックノードの複数のシンドローム値の信頼性は、関連付けられた複数の可変ノードの複数の値および信頼性に基づいて、更新されてよい。
【００３８】
チェックノード２００〜２１０のための複数の指示またはシンドローム値がシンドロームメモリ内に格納された後、可変ノード２２０〜２３４の複数の値が、複数のチェックノードの複数の値および複数の可変ノードの信頼性に基づいて、更新されてよい。特定の可変ノードのために、どの複数のチェックノードがアクセスされるべきかを判断すべく、パリティチェック行列Ｈ１２６がデコーダ１２４によって再度使用される。図２Ｂに示される通り、可変ノード２２４の更新について、上記のパリティチェック行列Ｈ１２６は、チェックノード２００、２０６および２１０（すなわち、第１、第４、および第６番目の可変ノード）が参照されるべきであることを示す。参照される複数のチェックノードの複数の指示に基づいて、可変ノード２２４の状態は、更新されてよい。
【００３９】
本開示の複数の実施形態において、可変ノード２２４の値は、可変ノード２２４は、既に更新、トグル、または反転されていたかどうかに部分的に基づいて判断されてもよい。すべてのチェックノードが満たされる（すなわち、オールゼロシンドロームが達成される）まで、または、最大反復数に到達されるまで、複数のチェックノードおよび可変ノードが反復的に更新されてよい。デコーダ１２４の出力は、デコード処理の終了時の硬判定メモリの内容、すなわち、デコードされたメッセージ１２８である。
【００４０】
図３は、本開示の一実施形態による、最新の複数の信頼性入力を使用する、ＬＤＰＣデコードのための、例示的な多段階デコーダシステム３００に係るブロック図である。システム３００は、図２Ａおよび２Ｂによって示されるデコード処理を実装してよい。チャネル１１４の１または複数の読み取りが実行されるとき、受信機３５０は、硬判定データおよび信頼性データを受信する。硬判定データは、単一の読み取りから生じ、信頼性データは、複数の読み取りから生じるので、硬判定データ（ｂ０と示される）は、信頼性データ（［ｂｋ  ｂｋ−１...ｂ１］と示される）が受信される前に受信される。
【００４１】
多段階デコーダに係る第１の段階の硬デコーダ３５６は、受信機３５０から硬判定データ３５２を受信し、硬デコードを実行する。第１の段階の硬デコーダ３５６は、可変ノードに関連付けられた複数のチェックノードが満たされたか、満たされなかったかに基づいて、可変ノード値を更新するかどうかを判断することによって、硬デコードを実行してよい。一例において、１または複数の可変ノードの値は、更新された複数の可変ノード値のどの組み合わせが最も、満足されないチェックノード数を減少するかに基づいて、選択的に更新されてよい。第１の段階の硬デコーダ３５６は、複数の更新された硬判定３５８を出力し、それらは硬判定メモリ３６０に格納され、任意に第２の段階の軟デコーダ３６２に送信される。
【００４２】
第２の段階の軟デコーダ３６２は、受信機３５０から信頼性データ３５４を、第１の段階の硬デコーダ３５６から複数の更新された硬判定３５８を受信する。第２の段階の軟デコーダ３６２は、信頼性データ３５４および複数の硬判定３５８に基づいて、軟デコードを実行する。第２の段階の軟デコーダ３６２によって実行される軟デコードは、複数の硬判定３５８、信頼性データ３５４、またはそれら両方を、１または複数の更新ルールに基づいて、更新するかどうかどうかを判断することを含んでよい。一例において、更新ルールは、可変ノードに関連付けられた複数のチェックノードが満たされるか、または満たされないかということ、可変ノードが既に信頼性データに基づいて更新されているかどうか、あるいはそれらの組み合わせに基づいてよい。第２の段階の軟デコーダ３６２の出力は、更新された信頼性データ３６３を含んでよく、それは信頼性データメモリ３６４に格納される。さらに、第２の段階の軟デコーダ３６２が複数の硬判定３５８を更新した場合、第２の段階の軟デコーダ３６２は、複数の更新された硬判定を硬判定メモリ３６０に格納してよい。
【００４３】
図３に示される通り、単一の第２の段階の軟デコーダ３６２が使用される。しかしながら、一般的に、追加の信頼性データが受信されるとき、任意の数の追加の第２の段階の軟デコーダが使用されてよい。特に、信頼性データの複数のｋ受信ビットについて、複数の軟デコーダのｋ段階が使用されてよく、それぞれ対応する信頼性データビット数に関連付けられる。
【００４４】
いくつかの実施形態において、第２の段階の軟デコーダ３６２および任意の複数の追加の軟デコーダの使用は随意である。例えば、第１の段階の硬デコーダ３５６によって実行される硬デコードは、成功してよく、従って、追加の信頼性データは必要ではない。この場合、コントローラは、現在の可変ノードについて、チャネル１１４に係るいかなる複数の追加の読み取りも実行しないことを命令されてよく、第２の段階の軟デコーダ３６２が未使用でよい。硬デコードに加え、任意に軟デコードを実行するための複数のハイブリッドシステムアーキテクチャは、Ｃｈｉｌａｐｐａｇａｒｉ他による米国特許出願（出願日および出願番号不明）（代理人整理番号ＭＰ５０９８）に記載されており、当該出願は、参照により本明細書に全体として組み込まれる。別の例においては、第ｎの段階の軟デコーダによって実行される軟デコードは成功してよく、ｎは１からｋの任意の整数であってよい。この場合、現在の可変ノードのためのチャネル１１４の任意の複数の追加の読み取りは、実行されなくてよく、複数の軟デコーダの残りの複数の段階（すなわち、ｎ＋１からｋ）は未使用であってよい。
【００４５】
いくつかの実施形態において、システム３００に係る多段階デコーダは、ＮＡＮＤフラッシュメモリユニットからのデータの読み取りに関連して使用される。一例において、各読み取られた結果は、情報の１ビットをもたらす。特に、第１の読み取りは、硬判定、または可変ノード値、またはｂ０を生じさせる。第２の読み取りは、信頼性データまたは、ｂ１の第１のビットをもたらす。メモリユニットに格納されたデータの複数のページを読み取るべく、コントローラはＮＡＮＤフラッシュメモリと対話してよい。複数のビットを取得すべく、コントローラは、読み取りコマンドを複数回発行する。
【００４６】
一例において、コントローラは、複数の命令からなるキューを解析してよく、それは、「ＲＥＡＤ  ＰＡＧＥ０」、「ＲＥＡＤ  ＰＡＧＥ１」、「ＲＥＡＤ  ＰＡＧＥ２」等のような、複数の読み取り命令を含んでよい。硬デコーダは、ページ０から読み取られたデータの硬デコードに失敗した場合、結果を格納する必要がないと判断してよく、かつ、コントローラは、ページ１から読み取られたデータのデコードを試みながら続行してよい。この場合、ページ０から読み取られたデータのデコードを後から実行することが好ましい場合、コントローラは、処理を再開し、第１の読み取り動作が再度実行されることを要求する必要があるだろう。
【００４７】
いくつかの実施形態において、本明細書に記載された複数のシステムは、複数の硬判定（メモリの単一の読み取りからの結果）および信頼性データ（メモリの複数の読み取りからの結果）を格納するバッファを含む。１または複数の読み取り動作から生じるデータを破棄するのではなく、データはバッファに格納される。特に、１または複数の読み取り動作が実行された後、硬判定データおよび／または信頼性データはバッファ内に格納され、それらの１または複数の読み取り動作が繰り返される必要がないように、後で取得されてよい。この場合、追加の信頼性データが所望されると判断された場合、複数の追加の読み取り動作が実行されてよく、最初の１または複数の読み取り動作をやり直す必要はない。いくつかの実施形態において、ＮＡＮＤフラッシュメモリデバイス自体が、１または複数の読み取られた結果を格納するバッファを含む。この場合、複数の読み取り動作から生じるデータは、既に、ＮＡＮＤデバイスに格納されており、コントローラは単に、必要な場合にデータをフェッチすればよいだけである。
【００４８】
図４は、本開示の一実施形態による、最新の信頼性情報に基づく、ＬＤＰＣデコードのための例示的な処理４００に係るフローチャートである。処理４００は、図３に示されるシステム３００を使用して実装されてよい。４０２において、カウンタｊはゼロに初期化される。データが受信され、受信されたデータのデコードの試みが失敗すると、カウンタｊをインクリメントするよう、システム３００は構成される。カウンタｊの値は、受信されたデータのデコードの試みが成功するまで、あるいは、カウンタｊの値が、信頼性記号ｋの数に到達するまで、インクリメントされる。
【００４９】
４０４において、可変ノード値が受信される。可変ノード値は、可変ノードに関連付けられた硬判定を参照する。一例において、硬判定に対応するビットは本明細書においてｂ０と言及され、それは特定の時間ｔ０において利用可能になる。４０６において、第１の段階の硬デコーダ３５６は、デコードスキームを使用して、４０４において受信された可変ノード値を処理する。特に、システム３００は、ｊ番目のデコードスキームと言及され得る、複数の（ｋ＋１）デコードスキームを使用するよう構成されてよい。特に、ｊがゼロの場合、ゼロ番目のデコードスキームは、受信された硬判定にのみ動作する硬デコードスキームである。
【００５０】
４０８において、システム３００は、１または複数の収束または終了条件が満たされたかどうかを判断する。一例において、オールゼロシンドロームが達成される場合、あるいは、最大反復数ｋに到達された場合、収束または終了に到達し得る。任意の複数の収束または終了条件が到達された場合、処理４００は４１０に進み、デコードを終了する。
【００５１】
あるいは、収束または終了条件が満たされない場合、処理４００は４１２に進み、ｊをインクリメントし、４１４に進み、ｊ番目の信頼性の値を受信する。特に、システム３００は、最大数ｋの信頼性の値を受信するよう構成されてよく、その場合、各後続の信頼性の値は、チャネル１１４に対し実行される追加の読み取りに関連付けられる。次のｊ番目の信頼性の値が４１４で受信され、処理４００は、４０６に戻り、次のｊ番目のデコードスキームを使用する。一例において、ｊ番目の信頼性の値は、ビットｂｊと言及されてよく、それは時間ｔｊ＝ｔｊ−１＋Ｔｊにおいてデコーダに対し利用可能にされ得る。ここで、Ｔｊは(j-1)番目の値が利用可能になる時間と、ｊ番目の値が利用可能になる時間との間の差である。換言すると、ｊ＝１の場合、ビットｂ１は時間ｔ１＝ｔ０＋Ｔ１において利用可能になり、それは、硬判定ビットｂ０が利用可能になる時間の後の時間Ｔ１においてである。同様に、ビットｂ２は、時間ｔ２＝ｔ１＋Ｔ２において利用可能になる。いくつかの実装において、Ｔ１はＴ２未満であり、Ｔ２はＴ３未満等である。他の複数の実装において、Ｔ１、Ｔ２、...Ｔｋは同様である。一般的に、Ｔ１、Ｔ２、...Ｔｋは同一であるか異なる。
【００５２】
ｊがゼロより大きい（すなわち、ｊ＝１、２、…ｋ）の場合、ｊ番目のデコードスキームは、第２の段階の軟デコーダ３６２のような軟デコーダによって実行され得る、軟デコードスキームである。特に、軟デコーダは、硬判定データおよび／または信頼性データを更新するかどうかの判断において、硬判定データ並びに信頼性データの両方を考慮する。
【００５３】
図４に示されるように、４０８において、収束または終了条件が到達されるまで、４０６、４０８、４１２および４１４が繰り返される。収束が到達され、デコードが成功すると、デコード処理は、４１０において終了される。ｊがｋ未満のときに、デコードが成功すると、その後のいくつかの信頼性情報を利用する、その後の複数の段階の軟デコードが回避される。すべての信頼性情報が受信される前に、開始するデコード処理を開始することによって、かつ、すべての信頼性情報が受信される前に、デコード処理の終了を可能にすることによって、本開示の多段階デコーダは、複数のシステムリソースを効率的に利用する。
【００５４】
図５は、本開示の一実施形態による、最新の信頼性情報に基づく、多段階ＬＤＰＣデコードのための例示的な処理５００のフローチャートである。処理５００は、図３に示されるシステム３００を使用して、実装されてよい。５０２において、可変ノードのための可変ノード値が、第１の時点において受信される。いくつかの実施形態において、可変ノードのための可変ノード値を受信することは、メモリに対し、読み取り動作を実行する命令を送信することを含む。特に、メモリはＮＡＮＤフラッシュメモリデバイスであってよく、コントローラは、ＮＡＮＤフラッシュメモリデバイスに対し、読み取り動作を実行し、読み取り動作の結果（すなわち、硬判定）をコントローラに対し送信するよう命令してよい。
【００５５】
５０４において、可変ノードのための信頼性データが、第１の時点より後の第２の時点において受信される。いくつかの実施形態において、可変ノードのための信頼性データを受信することは、メモリに対し、複数の追加の読み取り動作を実行する命令を送信することを含む。メモリがＮＡＮＤフラッシュメモリデバイスである場合、コントローラは、ＮＡＮＤフラッシュメモリデバイスに対し、１または複数の追加の読み取り動作を実行し、当該追加の読み取り動作の複数の結果をコントローラに対し、信頼性データの形態で送信するよう命令してよい。
【００５６】
５０６において、可変ノードは第１のデコードスキームを使用し、第１の時点の後および第２の時点の前にデコードされる。第１のデコードスキームは、硬デコードスキームであり、可変ノード値に基づき、任意の信頼性データには基づかない。いくつかの実施形態において、硬デコードスキームの結果は、更新された硬判定値である。元々受信された硬判定および／または更新された硬判定値は、図３に示される硬判定メモリ３６０のようなバッファに格納されてよい。いくつかの実施形態において、第１のデコードスキームは、例えば、オールゼロシンドロームが達成されたかどうかを判断するなどによって、硬デコードが成功したかどうかを評価することを含む。硬デコードが成功した場合、処理５００は、第２の時点の前に終了されてよく、５０４および５０８は実行されなくてよい。あるいは、硬デコードが成功しない場合（例えば、オールゼロシンドロームが達成されないかどうかが判断されてよい）、５０４および５０８が実行され、処理５００は、５０８に進み、可変ノードをさらにデコードする。
【００５７】
５０８において、可変ノードは、第２の時点の後、第１のデコードスキームとは異なる、第２のデコードスキームを使用して、デコードされる。第１のデコードスキームと対照的に、第２のデコードスキームは、軟デコードスキームであり、可変ノード値および信頼性データの両方に基づく。いくつかの実施形態において、５０２において受信された硬判定は、図３に示される硬判定メモリ３６０のような、硬判定メモリに格納される。この場合、第２のデコードスキームは、硬判定または更新された硬判定を硬判定メモリ３６０から取得することを含んでよい。
【００５８】
いくつかの実施形態において、可変ノードのための追加の信頼性データは、第２の時点より後の第３の時点に受信される。第２の段階（すなわち、第２のデコードスキームを使用するデコード）におけるデコードが成功しなかった場合、可変ノードは、第３の時点の後、第３のデコードスキームを使用してデコードされてよい。本明細書に記載の通り、追加の信頼性データ（例えば、メモリの追加の読み取りから生じる）を受信するための、およびさらなる可変ノードのデコードのための、任意の数の追加の段階が使用されてよい。デコードが成功した場合、あるいは最大段階数が使用された、若しくは追加の読み取り最大数が実行された場合、デコード処理が終了される。
【００５９】
本開示の複数の実施形態が、本明細書で提示および記載されたが、そのような実施形態は例示としてのみ提供されていることが当業者には明らかであろう。多数の変形、変更および置換が、本開示から逸脱することなく、当業者は想到するだろう。本明細書に記載された本開示に係る複数の実施形態に対する様々な代替が、本開示を実施する際に採用され得ることが理解されるべきである。以下の特許請求の範囲が、本開示の範囲を定め、これらの請求項の範囲に属する複数の方法および構造およびそれらの均等物が、特許請求の範囲によってカバーされることが意図されている。
【図１】
0006446730.tif 000005
【図２Ａ】
0006446730.tif 000006
【図２Ｂ】
0006446730.tif 000007
【図３】
0006446730.tif 000008
【図４】
0006446730.tif 000009
【図５】
0006446730.tif 000010