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