(57)【特許請求の範囲】
【請求項１】
複数の変数ノードのそれぞれにて、第１のハードデータ値を有する第１の信頼性データまたは第２のハードデータ値を有する第２の信頼性データのいずれかを受け取ること、
前記複数の変数ノードのそれぞれから、パリティ検査符号に応じて前記複数の変数ノードのそれぞれに接続された複数のチェックノードのそれぞれに前記第１のハードデータ値または前記第２のハードデータ値を送ること、
前記複数のチェックノードのそれぞれにて、前記複数の変数ノードから送られた複数の前記第１のハードデータ値または複数の前記第２のハードデータ値に対する第１のパリティデータを算出すると共に、前記第１のパリティデータと前記複数の変数ノードの中の対応する変数ノードからの前記第１のハードデータ値または前記第２のハードデータ値とに対する第２のパリティデータを算出して複数の第２のパリティデータを発生すること、
前記複数のチェックノードのそれぞれから、前記複数の第２のパリティデータを前記複数の変数ノードにそれぞれ送ること、及び
前記複数の変数ノードのそれぞれにおける前記第１の信頼性データまたは前記第２の信頼性データを前記複数の第２のパリティデータに基づき更新すること、を含む方法。
【請求項２】
前記第１の信頼性データまたは前記第２の信頼性データを更新することは、前記複数の変数ノードのそれぞれにて前記第１の信頼性データまたは前記第２の信頼性データを更新することを含む、請求項１に記載の方法。
【請求項３】
前記第１の信頼性データまたは前記第２の信頼性データを更新することは、前記複数のチェックノードのそれぞれにて前記第１の信頼性データまたは前記第２の信頼性データを更新し、その更新した第１の信頼性データまたは第２の信頼性データを前記複数の変数ノードの対応する変数ノードに送ることを含む、請求項１に記載の方法。
【請求項４】
前記第１の信頼性データまたは前記第２の信頼性データを更新することは、前記複数の変数ノードのそれぞれによる前記第１の信頼性データまたは前記第２の信頼性データの階層的更新を含み、各層は、
前記複数のチェックノードの一つから前記第２のパリティデータを受け取ること、
前記複数のチェックノードの一つからの前記第２のパリティデータの入力に基づいて前記第１の信頼性データまたは前記第２の信頼性データを更新することを含み、
前記複数の変数ノードのそれぞれが前記複数のチェックノードのそれぞれから前記第２のパリティデータを受け取るまで階層的更新が進む、請求項１に記載の方法。
【請求項５】
前記方法は、前記階層的更新の後、前記複数のチェックノードのそれぞれに前記更新済みの第１の信頼性データまたは第２の信頼性データに対応する更新済みの第１のハードデータ値または第２のハードデータ値を送ることを含む、請求項４に記載の方法。
【請求項６】
前記方法は、特定数の反復が行われるまで、前記階層的更新を繰り返して更新済みの第１のハードデータ値または第２のハードデータ値を送ることを含む、請求項５に記載の方法。
【請求項７】
前記方法は、前記複数のチェックノードによって行われるシンドローム検査が正しくなるまで、前記階層的更新を繰り返して更新済みの第１のハードデータ値または第２のハードデータ値を送ることを含む、請求項５に記載の方法。
【請求項８】
前記第１のパリティデータおよび前記第２のパリティデータのそれぞれの算出に、ＸＯＲ演算を含む、請求項１乃至請求項７のいずれか一項に記載の方法。
【請求項９】
複数の変数ノードと、
複数のチェックノードであって、前記複数の変数ノードにパリティ検査符号に応じて接続された複数のチェックノードと、を備える装置であって、
前記複数の変数ノードのそれぞれは、第１のハードデータ値を有する第１の信頼性データまたは第２のハードデータ値を有する第２の信頼性データのいずれかを受け取り、
前記複数の変数ノードのそれぞれから、前記複数のチェックノードのそれぞれに前記第１のハードデータ値または前記第２のハードデータ値を送り、
前記複数のチェックノードのそれぞれは、前記複数の変数ノードから送られた複数の前記第１のハードデータ値または複数の前記第２のハードデータ値に対する第１のパリティデータを算出すると共に、前記第１のパリティデータと前記複数の変数ノードの中の対応する変数ノードからの前記第１のハードデータ値または前記第２のハードデータ値とに対する第２のパリティデータを算出して複数の第２のパリティデータを発生し、
前記複数のチェックノードのそれぞれから、前記複数の第２のパリティデータを前記複数の変数ノードにそれぞれ送り、
前記複数の変数ノードのそれぞれにおける前記第１の信頼性データまたは前記第２の信頼性データを前記複数の第２のパリティデータに基づき更新するように、
構成されている装置。
【請求項１０】
前記第１の信頼性データまたは前記第２の信頼性データを更新するように構成された前記装置は、前記複数の変数ノードのそれぞれにて、または前記複数のチェックノードのそれぞれにて、前記第１の信頼性データまたは前記第２の信頼性データを更新するように構成された、請求項９に記載の装置。
【請求項１１】
前記装置は、前記複数の変数ノードのそれぞれにて前記第１の信頼性データまたは前記第２の信頼性データの階層的更新を行うように構成され、各層は、
前記複数のチェックノードの一つから前記第２のパリティデータを受け取ること、
前記複数のチェックノードの一つからの前記第２のパリティデータの入力に基づいて前記第１の信頼性データまたは前記第２の信頼性データを更新することを含み、
前記複数の変数ノードのそれぞれが前記複数のチェックノードのそれぞれから前記第２のパリティデータを受け取るまで階層的更新が進む、請求項９に記載の装置。
【請求項１２】
前記変数ノードは、前記階層的更新の後、前記複数のチェックノードのそれぞれに前記更新済みの第１の信頼性データまたは第２の信頼性データに対応する更新済みの第１のハードデータ値または第２のハードデータ値を送るように構成されている、請求項１１に記載の装置。
【請求項１３】
前記装置は、特定数の反復が行われるまで、前記階層的更新を繰り返して更新済みの第１のハードデータ値または第２のハードデータ値を送るように構成されている、請求項１２に記載の装置。
【請求項１４】
前記装置は、前記複数のチェックノードによって行われるシンドローム検査が正しくなるまで、前記階層的更新を繰り返して更新済みの第１のハードデータ値または第２のハードデータ値を送るように構成されている、請求項１２に記載の装置。
【請求項１５】
前記第１のパリティデータおよび前記第２のパリティデータのそれぞれの算出に、ＸＯＲ演算を含むように構成されている、請求項９乃至請求項１４のいずれか一項に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、全体として、半導体メモリ及び方法に関し、より具体的には、信頼性データの更新に関連した装置及び方法に関する。
【背景技術】
【０００２】
通常、メモリデバイスは、コンピュータまたはその他の電子機器において内部半導体集積回路として設けられる。メモリには、揮発性メモリや不揮発性メモリなど、多くの異なる種類がある。揮発性メモリは、そのデータ（例えば、ホストデータやエラー情報など）を維持するのに電力を要し得る。揮発性メモリは、ランダム・アクセス・メモリ（ｒａｎｄｏｍ−ａｃｃｅｓｓ  ｍｅｍｏｒｙ：ＲＡＭ）、ダイナミック・ランダム・アクセス・メモリ（ｄｙｎａｍｉｃ  ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ：ＤＲＡＭ）、シンクロナス・ダイナミック・ランダム・アクセス・メモリ（ｓｙｎｃｈｒｏｎｏｕｓ  ｄｙｎａｍｉｃ  ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ：ＳＤＲＡＭ）などを含む。不揮発性メモリは、電力が供給されていないときでも記憶データを保持することによってデータを永続化することが可能である。不揮発性メモリは、ＮＡＮＤフラッシュメモリ、ＮＯＲフラッシュメモリ、リードオンリーメモリ（ｒｅａｄ  ｏｎｌｙ  ｍｅｍｏｒｙ：ＲＯＭ）、エレクトリカリー・イレーザブル・プログラマブルＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ：ＥＥＰＲＯＭ）、イレーザブル・プログラマブルＲＯＭ（Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ：ＥＥＰＲＯＭ）、及び相変化ランダム・アクセス・メモリ（ｐｈａｓｅ  ｃｈａｎｇｅ  ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ：ＰＣＲＡＭ）、抵抗性ランダム・アクセス・メモリ（ｒｅｓｉｓｔｉｖｅ  ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ：ＲＲＡＭ）、磁気抵抗性ランダム・アクセス・メモリ（ｍａｇｎｅｔｏｒｅｓｉｓｔｉｖｅ  ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ：ＭＲＡＭ）などの可変抵抗メモリなどを含み得る。
【０００３】
メモリデバイスは、共に組み合わせることにより、ソリッドステートドライブ（ｓｏｌｉｄ  ｓｔａｔｅ  ｄｒｉｖｅ：ＳＳＤ）などのメモリシステムにおける記憶ボリュームを構成することができる。ソリッドステートドライブは、様々な種類の不揮発性メモリ及び揮発性メモリの中でも、不揮発性メモリ（例えば、ＮＡＮＤフラッシュメモリやＮＯＲフラッシュメモリ）、及び／または揮発性メモリ（例えば、ＤＲＡＭやＳＲＡＭ）を含み得る。
【０００４】
ソリッドステートドライブは、コンピュータの主記憶ボリュームとしてハードディスクドライブからの置き換えに用いることができる。なぜなら、ソリッドステートドライブを用いることにより、ハードドライブに対して性能、大きさ、重量、耐久性、動作温度範囲及び消費電力の点で有利になるためである。例えば、ＳＳＤには可動部品が存在せず、これによりシーク時間、レイテンシ及び磁気ディスクドライブに関するその他の電気機械的遅延を回避し得るため、ＳＳＤは、磁気ディスクドライブと比較して優れた性能を有し得る。
【０００５】
メモリは、揮発性及び不揮発性のデータ記憶装置として、広範囲な電子用途に利用されている。不揮発性メモリを、ラップトップコンピュータ、ポータブルメモリースティック、デジタルカメラ、携帯電話、ＭＰ３プレーヤーなどの携帯型音楽プレーヤー、動画プレーヤー、その他の電子機器などの携帯型電子機器に用いてもよい。メモリデバイスにはアレイが用いられており、これらのアレイにメモリセルを配置することができる。
【０００６】
ところで、データをある場所から別の場所に送ると（例えば、通信したり、受け渡したり、転送したり、伝送したりなどして）、誤りが発生する可能性がある。また、誤りは、データをメモリに記憶している間に経時的に発生する可能性もある。誤りを検出及び／または訂正できるように、データの符号化に利用可能な技術がいくつか存在する。データは常時メモリとやりとりされ、その内部に記憶されるため、メモリに誤り訂正技術を採用することにより、メモリに関連したデータの訂正を試みることが可能である。
【０００７】
１つの種類のエラー訂正は、低密度パリティ検査（ｌｏｗ−ｄｅｎｓｉｔｙ  ｐａｒｉｔｙ−ｃｈｅｃｋ：ＬＤＰＣ）符号に依拠する。符号化されていない（例えば、「ロー」）データは、伝送及び／または記憶するための符号語に符号化することが可能であり、その後、符号語を復号してデータに戻すことができる。強力な誤り訂正が望まれ得るものの、レイテンシ、スループット、及び／または電力制約（携帯型電子機器によって課されたものなど）とのバランスがとられることになる。
【図面の簡単な説明】
【０００８】
【図１】本開示のいくつかの実施形態に係る、少なくとも１つのメモリシステムを含む計算機システムの形態をとる装置のブロック図である。
【図２Ａ】本開示のいくつかの実施形態に係る信頼性データの更新のフロー図である。
【図２Ｂ】本開示のいくつかの実施形態に係る信頼性データの更新のフロー図である。
【図２Ｃ】本開示のいくつかの実施形態に係る信頼性データの更新のフロー図である。
【図２Ｄ】本開示のいくつかの実施形態に係る信頼性データの更新のフロー図である。
【図２Ｅ】本開示のいくつかの実施形態に係る信頼性データの更新のフロー図である。
【図２Ｆ】本開示のいくつかの実施形態に係る信頼性データの更新のフロー図である。
【図２Ｇ】本開示のいくつかの実施形態に係る信頼性データの更新のフロー図である。
【図２Ｈ】本開示のいくつかの実施形態に係る信頼性データの更新のフロー図である。
【図２Ｉ】本開示のいくつかの実施形態に係る信頼性データの更新のフロー図である。
【図３】本開示のいくつかの実施形態に係る、誤り訂正回路を含む装置のブロック図である。
【図４】本開示のいくつかの実施形態に係る少なくとも１つのアプローチを含む種々のアプローチによる、ブロック誤り率対ロービット誤り率（ｒａｗ  ｂｉｔ  ｅｒｒｏｒ  ｒａｔｅ：ＲＢＥＲ）を示すプロット図である。
【発明を実施するための形態】
【０００９】
本開示は、信頼性データの更新に関連した装置及び方法を含む。いくつかの方法は、変数ノードにて、第１のハードデータ値を有する第１の信頼性データ値（例えば、最大信頼性データ値）、または第２のハードデータ値を有する第２の信頼性データ値（例えば、最小信頼性データ値）を受け取ること、パリティ検査符号に応じて変数ノードに接続された各チェックノードに、第１のハードデータ値または第２のハードデータ値を送ること、及び全てに満たないチェックノードからの入力に基づいて信頼性データを更新すること、を含み得る。例えば、信頼性回路は、第１のハードデータ値に応じた最大信頼性データ値、または第２のハードデータ値に応じた最小信頼性データ値など、特定のハードデータ値に対して特定の信頼性データ値を与えるように構成することができる（例えば、ハードデータモードにおいて）。しかしながら、ソフトモードまたは半ソフトモードでは、信頼性回路は、その他の初期信頼性データ値（例えば、最大値と最小値の間）を与えるように構成することもできる。
【００１０】
本開示における以下の詳細な説明では、本明細書の一部をなす添付図面を参照する。また、これらの図面では、一例として、どのように本開示の１つまたは複数の実施形態を実施し得るかを示している。これらの実施形態は、当業者が本開示の実施形態を実施することができる程度に十分詳細に記載されている。また、その他の実施形態も利用することが可能であって、本開示の範囲から逸脱することなく、工程変更、電気的変更、及び／または構造的変更をなし得ることを理解すべきである。本明細書中において、特に図面中の参照符号について用いられる「Ｃ」、「Ｎ」、「Ｍ」、「Ｐ」及び「Ｖ」という指示語は、そのように指定された複数の特定の特徴が含まれ得ることを示す。本明細書中用いられる「複数の」特定のものは、そのようなものの１つまたは複数を指し得る（例えば、複数のメモリデバイスは、１つまたは複数のメモリデバイスを指し得る）。
【００１１】
本明細書中の図における番号付与方法においては、最初の桁（単数または複数）が図面番号に対応し、残りの桁が、図面中の要素または構成部分を示す。異なる図間の同様の要素または構成部分は、同様の桁の利用によって指示され得る。例えば、「１１４」は、図１中の要素「１４」を指し得、同様の要素は、図３中の「３１４」として指示され得る。理解されるように、本明細書中の多様な実施形態に示される要素は、本開示の複数のさらなる実施形態が可能なように、追加、交換及び／または除去することが可能である。加えて、理解されるように、図中に記載される要素の比率及び相対的大きさは、本発明のある実施形態を例示することを意図するものであって、限定的なものとしてとられるべきではない。
【００１２】
図１は、本開示のいくつかの実施形態に係る、少なくとも１つのメモリシステム１０４を含む計算機システム１００の形態をとる装置のブロック図である。本明細書中に用いられるメモリシステム１０４、制御部１０８、またはメモリデバイス１１０は、個別に「装置」としてみなすこともできる。メモリシステム１０４は、例えば、ソリッドステートドライブ（ＳＳＤ）とすることができる。このメモリシステム１０４は、ホストインターフェース１０６、制御部１０８（例えば、プロセッサ及び／またはその他の制御回路）、及び複数のメモリデバイス１１０−１，…，１１０−Ｍ（例えば、ＮＡＮＤフラッシュデバイスなどのソリッドステートメモリデバイス）を含むことができ、これらのメモリデバイスによってメモリシステム１０４の記憶ボリュームが提供される。別の実施形態では、メモリシステム１０４を単一のメモリデバイスとしてもよい。
【００１３】
図１に示すように、制御部１０８は、ホストインターフェース１０６に接続することができ、さらに、複数のチャネルを介してメモリデバイス１１０−１，…，１１０−Ｍにも接続することができる。また、制御部１０８は、メモリシステム１０４とホスト１０２の間でデータを送るのに用いることができる。インターフェース１０６は、規格化されたインターフェースの形態をとることができる。例えば、メモリシステム１０４を計算機システム１００内のデータ記憶装置として用いる際、インターフェース１０６は、多数のコネクタ及びインターフェースの中でも、シリアルＡＴＡ（ｓｅｒｉａｌ  ａｄｖａｎｃｅｄ  ｔｅｃｈｎｏｌｏｇｙ  ａｔｔａｃｈｍｅｎｔ：ＳＡＴＡ）、ＰＣＩエクスプレス（ｐｅｒｉｐｈｅｒａｌ  ｃｏｍｐｏｎｅｎｔ  ｉｎｔｅｒｃｏｎｎｅｃｔ  ｅｘｐｒｅｓｓ：ＰＣＩｅ）、またはユニバーサルシリアルバス（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ：ＵＳＢ）とすることができる。ただし、一般に、インターフェース１０６は、メモリシステム１０４とインターフェース１０６に準拠した受信部を備えるホスト１０２との間で、制御信号、アドレス信号、データ信号及びその他の信号を受け渡すためのインターフェースを提供することができる。
【００１４】
ホスト１０２は、様々な種類のホストの中でも、パーソナルラップトップコンピュータ、デスクトップコンピュータ、デジタルカメラ、携帯電話、メモリーカードリーダーなどのホストシステムとすることができる。ホスト１０２は、システム用マザーボード及び／またはバックプレーンを含み得る。さらに、ホスト１０２は、複数のメモリアクセスデバイス（例えば、複数のプロセッサ）も含み得る。メモリシステム１０４がメモリデバイスである場合などには、ホスト１０２をメモリコントローラとすることもできる（例えば、ホスト１０２がオンダイ（ｏｎ−ｄｉｅ）コントローラを備えている）。
【００１５】
制御部１０８は、複数のメモリデバイス１１０−１，…，１１０−Ｍ（これらは、いくつかの実施形態では、単一ダイに搭載された複数のメモリアレイである）と通信することが可能であり、多数の動作の中でも、データリード、データライト及び消去動作を制御する。いくつかの実施形態では、制御部１０８を同じダイに搭載し、あるいは複数のメモリデバイス１１０のいずれかまたは全てと異なるダイに搭載することが可能である。
【００１６】
特に図示していないが、いくつかの実施形態では、制御部１０８は、これをメモリデバイス１１０−１，…，１１０−Ｍに接続するチャネルごとに個別のメモリチャネル制御部を含み得る。制御部１０８は、例えば、ハードウェア及び／またはファームウェア（例えば、１つまたは複数の集積回路）及び／またはソフトウェア形態の複数の構成部品を含むことが可能であり、これにより、いくつかのメモリデバイス１１０−１，…，１１０−Ｍへのアクセスを制御し、かつ／またはホスト１０２とメモリデバイス１１０−１，…，１１０−Ｍの間のデータ転送を容易にすることができるようになる。
【００１７】
図１に示すように、制御部１０８は、信頼性回路１１２及び誤り訂正回路１１４を含み得る。例えば、信頼性回路１１２は対数尤度比（ｌｏｇ  ｌｉｋｅｌｉｈｏｏｄ  ｒａｔｉｏ：ＬＬＲ）回路とすることができ、かつ／または誤り訂正回路１１４は、低密度パリティ検査（ＬＤＰＣ）回路とすることができる。信頼性回路１１２及び誤り訂正回路１１４はそれぞれ、特定用途向け集積回路（ａｐｐｌｉｃａｔｉｏｎ  ｓｐｅｃｉｆｉｃ  ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ：ＡＳＩＣ）などの個別の構成部品とすることもできる。あるいは、これらの構成要素は、制御部１０８内の回路で提供することによって機能的に反映させてもよい。このとき、その回路は必ずしも、制御部１０８のこの回路以外の部分から分かれた個別の物理的形態とは限らない。図１の制御部１０８内の構成要素として示しているが、信頼性回路１１２及び誤り訂正回路１１４は、それぞれ制御部１０８の外部にあってもよく、あるいは、制御部１０８の内部に配置された複数の構成要素、及び制御部１０８の外部に配置された複数の構成要素を有することもできる。
【００１８】
誤り訂正回路１１４は、２種類の処理ノード、すなわち変数ノード及びチェックノードを含み得る。処理ノードは、符号のパリティ検査符号に応じて接続することができる。本開示のいくつかの実施形態では、変数ノードは、巡回メモリとして実装することができ、チェックノードは、多数の機能の中でも、パリティデータを算出（例えば、計算する）（例えば、シンドローム検査を行う）し、かつ／または信頼性データをインクリメントし、かつ／または信頼性データをデクリメントする回路として実装することができる。このように、チェックノードは、多数の回路の中でも、ＸＯＲ回路及び／またはアップ／ダウンカウンタを含み得る。いくつかの実施形態では、変数ノードは、アップ／ダウンカウンタ（例えば、飽和アップ／ダウンカウンタ）として実装することができ、チェックノードは、組み合わせ論理回路（例えば、排他的ＯＲ（ＸＯＲ）回路）として実装することができる。誤り訂正回路１１４への入力は、メモリ１１０からのハードデータとすることができるが、これは、信頼性回路１１２から受け取ったハードデータ（例えば、信頼性回路１１２からの信頼性データに含まれる）である。各変数ノードに対してＬＬＲ値を格納することができ、本明細書に記載される復号の各層（または、これらの層のうちのいくつかの複数の層、あるいは、例えば、１反復につき１回）において、このＬＬＲ値を更新することができる。
【００１９】
いくつかの実施形態では、誤り訂正回路１１４への入力に半ソフトデータまたは全ソフトデータを含めることができる（例えば、ハードデータ及び／または半ソフトデータに対するシンドローム検査の不合格に応じて）。ハードデータとは、メモリセルのデータ状態にのみ対応するデータである。例えば、２ビットメモリセルは、４つのデータ状態のうちの１つにプログラムすることができるが、このメモリセルにおいて各データ状態は、データ００、０１、１０、１１のうちの１つに対応する。例えば、データ状態００及びデータ状態０１のハードデータは０（最上位ビット（ｍｏｓｔ  ｓｉｇｎｉｆｉｃａｎｔ  ｂｉｔ：ＭＳＢ）に相当）であり、一方、データ状態１０及びデータ状態１１のハードデータは１（ＭＳＢに相当）である。それに対し、メモリセルに関連付けられたソフトデータは、状態分布（例えば、Ｖｔ分布）内におけるメモリセルの記憶状態（例えば、閾電圧（Ｖｔ））の位置を示すことができ、メモリセルがプログラムされた標的状態を表す。さらに、メモリセルに関連付けられたソフトデータは、メモリセルの状態が、メモリセルがプログラムされた標的状態に対応するかどうかの確率を示すこともできる。メモリデバイスは、当該デバイスから読み出されるハードデータに対する特定数のソフトデータビットを決定するように構成することができる。上述した２ビットメモリセルの場合、ソフトデータの一例として、４ビットを用いて分解能を向上させたものが挙げられるが、これは、１６個までの異なる状態を表し得る。半ソフトデータは、全てに満たないソフトデータがハードデータと共に送られることを示す。全ソフトデータは、全てのソフトデータがハードデータと共に送られることを示す。制御部１０８に関するさらなる機能を、本明細書でより詳しく説明する。
【００２０】
複数のメモリデバイス１１０−１，…，１１０−Ｍは、メモリセル（例えば、不揮発性メモリセル）の複数アレイを含み得る。これらのアレイは、例えば、ＮＡＮＤ構造をとったフラッシュアレイとすることができる。しかしながら、実施形態は、特定の種類のメモリアレイまたはアレイ構造に限定されることはない。メモリセルは、例えば、複数の物理ページを含む複数のブロックにグループ分けすることができる。さらに、複数のブロックをメモリセルのプレーンに含めることができ、アレイは、複数のプレーンを含み得る。一例として、メモリデバイスを、１ページ当たり８ＫＢ（キロバイト）のユーザーデータ、１ブロック当たり１２８ページのユーザーデータ、１プレーン当たり２０４８ブロック、及び１個のデバイスにつき１６プレーンを格納するように構成してもよい。
【００２１】
動作時には、例えば１ページデータとして、データをメモリ（例えば、システム１０４のメモリデバイス１１０−１，…，１１０−Ｍ）に書き込み、またはメモリから読み出し、あるいはその両方を行うことができる。このように、１ページデータを、メモリシステムのデータ転送サイズと呼ぶことができる。データは、セクタ（例えば、ホストセクタ）と呼ばれるデータセグメントの形で、ホスト（例えば、ホスト１０２）とやりとりすることができる。このように、１セクタデータを、ホストのデータ転送サイズと呼ぶことができる。
【００２２】
図２Ａ〜図２Ｉは、本開示のいくつかの実施形態に係る信頼性データの更新のフロー図である。図２Ａ〜図２Ｉには特に示していないが、ＬＤＰＣ方式を実装した誤り訂正回路は、パリティ検査符号に応じて接続された多数の変数ノード及びチェックノードを含み得る。ＬＤＰＣ符号は、一連の符号語が疎なパリティ検査行列Ｈの零空間にわたっている２進線形ブロック符号の１種である。ＬＤＰＣ符号は、因子グラフと呼ばれる２部グラフで表すことができるが、これは、変数ノード、チェックノード及びこれらの間の接続を図示したものである。ＬＤＰＣ復号処理は、この因子グラフの各エッジ（ノード間の接続）にわたる反復メッセージパッシング処理と呼ぶこともできる。
【００２３】
図２Ａは、初期化ステップを示す図であり、このステップでは、複数の変数ノード２１６−１，２１６−２，…，２１６−Ｖにて、信頼性回路２１２（例えば、ＬＬＲ回路）からハードデータを含む信頼性データを受け取る。各変数ノード２１６−１，２１６−２，…，２１６−Ｖで受け取ったハードデータを含む信頼性データは、メモリデバイスから読み出された符号語から得られるハードデータ値と必ずしも同一ではない（例えば、変数ノード２１６−１はハードデータ「ＨＤ１」を、変数ノード２１６−２はハードデータ「ＨＤ２」を、変数ノード２１６−Ｖはハードデータ「ＨＤ３」を、それぞれ受け取ることができる）。ハードデータ（例えば、符号語）は、メモリデバイス（例えば、図１に示したメモリデバイス１１０）から読み出し、信頼性データ（これは、ハードデータを含むものとする）を決定（例えば、割り当てや生成）するための信頼性回路２１２で受け取ることができる。特に図示していないが、信頼性回路２１２は、変数ノード２１６−１，２１６−２，…，２１６−Ｖに半ソフトデータ及び／または全ソフトデータを与えることができる（例えば、ハードデータ及び／または半ソフトデータに対するシンドローム検査の不合格に応じて）。
【００２４】
信頼性データは、信頼性回路２１２で生成することもできる。変数ノード２１６−１，２１６−２，…，２１６−Ｖは、第１のハードデータ値を有する第１の信頼性データ値（例えば、最大信頼性データ値）または第２のハードデータ値を有する第２の信頼性データ値（例えば、最小信頼性データ値）のいずれかを受け取ることができる（例えば、ハードデータモードにおいて）。信頼性回路２１２は、第１のハードデータ値に応じた最大信頼性データ値、または第２のハードデータ値に応じた最小信頼性データ値など、特定のハードデータ値に対して特定の信頼性データ値を与えるように構成することができる（例えば、ハードデータモードにおいて）。しかしながら、ソフトモードまたは半ソフトモードにおいて、信頼性回路２１２は、その他の初期信頼性データ値（例えば、最大値と最小値の間）を与えるように構成することもできる。
【００２５】
変数ノード２１６−１，２１６−２，…，２１６−Ｖは、受け取った信頼性データを格納することができる。この信頼性データとしては、例えば、第１のハードデータ値（例えば、第１の２進値）を有するハードデータ入力に応じた第１の信頼性データ値、または第２のハードデータ値（例えば、第２の２進値）を有するハードデータ入力に応じた第２の信頼性データ値がある。いくつかの実施形態では、信頼性データは、ＬＬＲ値の２の補数表現とすることができる。例えば、２の補数値は、ハードデータ値「０」に対しては０以上（例えば、最大ＬＬＲ値）とすることができ、メモリから受け取ったハードデータ値「１」に対しては０未満（例えば、最小ＬＬＲ値）とすることができる。
【００２６】
信頼性回路２１２は、誤り訂正回路（例えば、図１に示した誤り訂正回路１１４）への初期入力として、各ハードデータ値に対して最大ＬＬＲ値または最小ＬＬＲ値を与えるように構成することができる。３ビット実装（例えば、１ビットのハードデータ、及び全体として信頼性データを表す２ビットカウントからなる）では、ハードデータ値「０」を２の補数のＬＬＲ値「＋３」に、ハードデータ値「１」を２の補数のＬＬＲ値「−４」に、それぞれ対応させることができる。以下の表は、１ビットのハードデータ及び２ビットの信頼性データからなる３ビット値と、信頼性データを表す２の補数値との対応を示す。
【表１】
0005992628.tif 000002
表１に示すように、３ビット値の最上位ビット（ＭＳＢ）は、ハードデータ値を構成することができる。表１には示していないが、２の補数のＬＬＲは、ハードデータに基づいて特定の値（例えば、最大値または最小値）に自動的に設定することができる。従って、２の補数のＬＬＲ値「０」、「１」及び「２」は、「３」に初期設定することができ、２の補数のＬＬＲ値「−３」、「−２」及び「−１」は、「−４」に初期設定することができる。なお、各実施形態は、最大ＬＬＲ値及び最小ＬＬＲ値、または２の補数表現（例えば、符号絶対値を用いることができるようなその他の表現として）を用いた３ビット実装、すなわちハードデータ値とＬＬＲ値の各対応に限定されることはない。これらの実施形態は、本開示の理解を容易にするための実装例の例示に用いられる。
【００２７】
図２Ｂは、特定の変数ノード２１６−１、及びパリティ検査符号に応じて特定の変数ノード２１６−１に接続された複数のチェックノード２１８−１，２１８−２，２１８−３，…，２１８−Ｃを示す図である。第１の反復中、各変数ノード（例えば、図２Ａに示した変数ノード２１６−１，２１６−２，…，２１６−Ｖ）は、これらに接続された複数のチェックノードのそれぞれにハードデータを送ることができる（例えば、変数ノード２１６−１は、チェックノード２１８−１，２１８−２，２１８−３，…，２１８−Ｃにハードデータ「ＨＤ１」を送ることができる）。変数ノード２１６−１は、各チェックノード２１８−１，２１８−２，２１８−３，…，２１８−Ｃに同一のハードデータを送ることができる。
【００２８】
図２Ｂには特に示していないが、特定の変数ノード２１６−１は、これに接続されたチェックノード２１８−１，２１８−２，２１８−３，…，２１８−Ｃに、ハードデータを含む格納済みの信頼性データを送ることができる。いくつかの実施形態では、特定の変数ノード２１６−１は、アップ／ダウンカウンタを含み得る。その場合、特定の変数ノード２１６−１は、信頼性データを伴わずにハードデータを送ることができる。なぜなら、特定の変数ノード２１６−１が信頼性データを更新することができるためである。いくつかの実施形態では、特定の変数ノード２１６−１は、カウンタではなくメモリとすることができる。その場合、特定の変数ノードは、チェックノード２１８−１，２１８−２，２１８−３，…，２１８−Ｃが信頼性データを更新できるように、ハードデータを含む信頼性データを送ることができる。
【００２９】
図２Ｃは、第１の反復中、特定のチェックノード２１８−１に接続された複数の変数ノード２１６−１，２１６−２，…，２１６−Ｖのそれぞれから各ハードデータ値を受け取る特定のチェックノード２１８−１を示す図である。本明細書に記載されているように、各変数ノード２１６−１，２１６−２，…，２１６−Ｖから受け取る各ハードデータ値は、他のハードデータ値とは別個にすることができる。そのため、図２Ｃでは、変数ノード２１６−１からのハードデータを「ＨＤ１」として、変数ノード２１６−２からのハードデータを「ＨＤ２」として、変数ノード２１６−Ｖからのハードデータを「ＨＤ３」として、それぞれ示している。なお、ハードデータに対して異なる指示語を用いることは、各ハードデータ値が異なることを意味するものではない（例えば、これらが全て「１」などの同一値であることが可能である）。いくつかの実施形態では、特定のチェックノード２１８−１は、これに接続された複数の変数ノード２１６−１，２１６−２，…，２１６−Ｖのそれぞれから、ハードデータ値を有する各信頼性データ値を受け取ることができる。
【００３０】
チェックノード２１８−１は、少なくとも部分的には受け取った各ハードデータ値に基づき（例えば、いくつかの実施形態では、これのみに基づき）、パリティデータを算出することができる（例えば、シンドローム検査を行う）。例えば、チェックノード２１８−１は、各変数ノード２１６−１，２１６−２，…，２１６−Ｖからのハードデータ値に対してＸＯＲ演算を行うことにより、第１のパリティデータを算出することかできる。さらに、チェックノード２１８−１は、第１のパリティと各変数ノード（例えば、変数ノード２１６−１）から受け取った各ハードデータとのＸＯＲ演算を行うことにより、第２のパリティデータを算出することもできる。第２のパリティデータは、以下でより詳しく説明するように、各変数ノードに送ることができる。いくつかの実施形態では、各チェックノード（例えば、チェックノード２１８−１，２１８−２，２１８−３，…，２１８−Ｃ）は、１クロックサイクルにつき１回、パリティデータを算出することができる。
【００３１】
図２Ｄは、各変数ノード２１６−１，２１６−２，…，２１６−Ｖに各パリティデータを送る特定のチェックノード２１８−１を示す図である。パリティデータは、上述した第２のパリティデータ（例えば、少なくとも部分的には、チェックノード２１８−１で受け取った全てのハードデータに対するＸＯＲの結果と各変数ノードからのハードデータとのＸＯＲに基づいて（例えば、いくつかの実施形態では、これのみに基づいて）算出する）とすることができる。従って、図２Ｄは、パリティデータ「ＸＯＲ１」を変数ノード２１６−１に、パリティデータ「ＸＯＲ２」を変数ノード２１６−２に、パリティデータ「ＸＯＲ３」を変数ノード２１６−Ｖに、それぞれ送るチェックノード２１８−１を示す。チェックノード２１８−１から送られるパリティデータは、図２Ｄに示すように、第１反復における第１層の一部とすることができる。メッセージパッシングへの階層的アプローチについては、以下でより詳しく説明する。このパリティデータは、更新済みハードデータとして、変数ノード２１６−１，２１６−２，…，２１６−Ｖから送られたハードデータを効率的に置き換えることができる。いくつかの実施形態では、特定の変数ノード２１８−１は、各変数ノード２１６−１，２１６−２，…，２１６−Ｖに、各パリティデータと共に各信頼性データを送ることができる。各信頼性データは、各変数ノード２１６−１，２１６−２，…，２１６−Ｖから送られた信頼性データと同一とすることができ、あるいは、信頼性データは、送信前にチェックノード２１８−１で更新することができる。
【００３２】
各変数ノード２１６−１，２１６−２，…，２１６−Ｖは、少なくとも部分的には、それぞれチェックノード２１８−１から受け取ったパリティデータ及び／またはチェックノード２１８−１から受け取った更新済みの信頼性データに基づき（例えば、いくつかの実施形態では、これのみに基づき）、各変数ノードにそれぞれ格納された信頼性データを更新することができる。いくつかの実施形態では、変数ノード２１６−１，２１６−２，…，２１６−Ｖは、少なくとも部分的には、特定のチェックノード２１８−１から受け取ったパリティデータに基づいて（あるいは、いくつかの実施形態では、これのみに基づいて）信頼性データ値をインクリメントまたはデクリメントすることにより、それぞれの各信頼性データを更新することができる（例えば、当該反復における過去、現在または将来の層において、あるいはメッセージパッシングアルゴリズムにおける異なる反復において、他のいずれかのチェックノードから受け取ったパリティデータに関係なく）。変数ノード２１６−１，２１６−２，…，２１６−Ｖは、１クロックサイクルにつき１回、格納済みの信頼性データをインクリメントまたはデクリメントすることができる。変数ノード２１６−１，２１６−２，…，２１６−Ｖに格納された最大信頼性データ値及び／または最小信頼性データ値を含むこれらの実施形態に関しては、信頼性データ値は、最大値及び最小値によって規定される範囲内で、インクリメント及び／またはデクリメントすることができる。これにより、例えば、信頼性データ値が既に最大である場合には、受け取ったパリティデータ値によって信頼性データ値をインクリメントする必要があっても、その信頼性データ値はインクリメントされないことになる。いくつかの実施形態では、変数ノード２１６−１，２１６−２，…，２１６−Ｖは、特定のチェックノード２１８−１から受け取った更新済みの信頼性データを格納することにより、それぞれの各信頼性データを更新することができる。
【００３３】
図２Ｅ〜図２Ｈは、特定の変数ノード２１６−１に接続されたこれらのチェックノード２１８−１，２１８−２，２１８−３，…，２１８−Ｃからのメッセージパッシングのある反復における４つの層を示す図である。いくつかの実施形態では、１つの層は、少なくとも部分的には、特定の変数ノード２１６−１に接続されたチェックノード２１８−１，２１８−２，２１８−３，…，２１８−Ｃの１つからのパリティデータに基づき（または、いくつかの実施形態では、これのみに基づき）、変数ノード２１６−１に格納済みの信頼性データ値をインクリメントまたはデクリメントすることを含み得る。いくつかの実施形態では、１つの層は、少なくとも部分的には、特定の変数ノード２１６−１に接続されたチェックノード２１８−１，２１８−２，２１８−３，…，２１８−Ｃの１つからの更新済みの信頼性データに基づき（または、いくつかの実施形態では、これのみに基づき）、変数ノード２１６−１に格納済みの信頼性データ値を更新することを含み得る。
【００３４】
図２Ｅは、第１反復の第１層でパリティデータ（例えば、「ＸＯＲ−Ａ」）を変数ノード２１６−１に送る、変数ノード２１６−１に接続されたチェックノード２１８−１，２１８−２，２１８−３，…，２１８−Ｃのうちの第１チェックノード２１８−１を示す図である。第１チェックノード２１８−１から送られるパリティデータは、少なくとも部分的には、変数ノード２１６−１及びその他の変数ノード（図示せず）から送られたハードデータに基づく（例えば、いくつかの実施形態では、これのみに基づく）ことができる。第１層では、変数ノード２１６−１は、少なくとも部分的には、第１チェックノード２１８−１から受け取ったパリティデータに基づき（例えば、いくつかの実施形態では、これのみに基づき）、この変数ノードに格納された信頼性データを更新することができる。パリティデータを受け取るため、パリティデータに応じて信頼性データを更新することは、パリティデータの更新を含み得る（例えば、パリティデータを受け取ることにより、信頼性データが更新されることになる）。少なくとも部分的にはパリティデータに基づいて（例えば、いくつかの実施形態では、これのみに基づいて）信頼性データを更新することは、受け取ったパリティデータの値に応じて信頼性データ値をインクリメントまたはデクリメントすることを含み得る。例えば、パリティデータ「ＸＯＲ−Ａ」が第１の値（例えば、２進の「１」）であった場合、変数ノード２１６−１は、信頼性データをインクリメントすることができ、パリティデータ「ＸＯＲ−Ａ」が第２の値（例えば、２進の「０」）であった場合、変数ノード２１６−１は、信頼性データをデクリメントすることができる。信頼性データのインクリメント及び／またはデクリメントは、格納済みの信頼性データ値のインクリメントまたはデクリメントがその所定範囲を超えない限り、信頼性データを所定量だけインクリメント及び／またはデクリメントすることを含み得る。図２Ｅには特に示していないが、チェックノード２１８−１は、特定の変数ノード２１６−１に、パリティデータと共に更新済みの信頼性データを送ることができる。第１層では、変数ノード２１６−１は、少なくとも部分的には、第１チェックノード２１８−１から受け取った更新済みの信頼性データに基づき（例えば、いくつかの実施形態では、これのみに基づき）、この変数ノードに格納された信頼性データを更新することができる。
【００３５】
図２Ｆは、第１反復の第２層でパリティデータ（例えば、「ＸＯＲ−Ｂ」）を変数ノード２１６−１に送る、変数ノード２１６−１に接続されたチェックノード２１８−１，２１８−２，２１８−３，…，２１８−Ｃのうちの第２チェックノード２１８−２を示す図である。第２層では、変数ノード２１６−１は、少なくとも部分的には、第２チェックノード２１８−２から受け取ったパリティデータに基づき（例えば、いくつかの実施形態では、これのみに基づき）、この変数ノードに格納された信頼性データを更新することができる。図２Ｆには特に示していないが、チェックノード２１８−２は、特定の変数ノード２１６−１に、パリティデータと共に更新済みの信頼性データを送ることができる。第２層では、変数ノード２１６−１は、少なくとも部分的には、第１チェックノード２１８−２から受け取った更新済みの信頼性データに基づき（例えば、いくつかの実施形態では、これのみに基づき）、この変数ノードに格納された信頼性データを更新することができる。
【００３６】
図２Ｇは、第１反復の第３層でパリティデータ（例えば、「ＸＯＲ−Ｃ」）を変数ノード２１６−１に送る、変数ノード２１６−１に接続されたチェックノード２１８−１，２１８−２，２１８−３，…，２１８−Ｃのうちの第３チェックノード２１８−３を示す図である。第３層では、変数ノード２１６−１は、少なくとも部分的には、第３チェックノード２１８−３から受け取ったパリティデータに基づき（例えば、いくつかの実施形態では、これのみに基づき）、この変数ノードに格納された信頼性データを更新することができる。図２Ｇには特に示していないが、チェックノード２１８−３は、特定の変数ノード２１６−１に、パリティデータと共に更新済みの信頼性データを送ることができる。第３層では、変数ノード２１６−１は、少なくとも部分的には、第１チェックノード２１８−３から受け取った更新済みの信頼性データに基づき（例えば、いくつかの実施形態では、これのみに基づき）、この変数ノードに格納された信頼性データを更新することができる。
【００３７】
図２Ｈは、第１反復の第４層でパリティデータ（例えば、「ＸＯＲ−Ｄ」）を変数ノード２１６−１に送る、変数ノード２１６−１に接続されたチェックノード２１８−１，２１８−２，２１８−３，…，２１８−Ｃのうちの第４チェックノード２１８−Ｃを示す図である。第４層では、変数ノード２１６−１は、少なくとも部分的には、第４チェックノード２１８−Ｃから受け取ったパリティデータに基づき（例えば、いくつかの実施形態では、これのみに基づき）、この変数ノードに格納された信頼性データを更新することができる。図２Ｈには特に示していないが、チェックノード２１８−Ｃは、特定の変数ノード２１６−１に、パリティデータと共に更新済みの信頼性データを送ることができる。第４層では、変数ノード２１６−１は、少なくとも部分的には、第１チェックノード２１８−Ｃから受け取った更新済みの信頼性データに基づき（例えば、いくつかの実施形態では、これのみに基づき）、この変数ノードに格納された信頼性データを更新することができる。
【００３８】
各層は、全てに満たないチェックノード２１８−１，２１８−２，２１８−３，…，２１８−Ｃ（例えば、チェックノード２１８−Ｃのそれぞれ１つ）からの入力を受け取ること、及び少なくとも部分的にはチェックノード２１８−１，２１８−２，２１８−３，…，２１８−Ｃのそれぞれ１つからの入力（例えば、パリティデータ及び／または更新済みの信頼性データ）に基づき（例えば、いくつかの実施形態では、これのみに基づき）、信頼性データを更新することを含み得る。特に図示していないが、いくつかの実施形態は、層数のうちのＬ数ごとに信頼性データを更新すること（例えば、ここで、Ｌは１層から全層までの値をとり、このとき信頼性データは、各層ごとに、１層おきに、２層おきなどに、１反復につき１回まで更新することができる）、及び複数のチェックノードのそれぞれ１つからの入力に基づいて信頼性データを更新することを含み得る。いくつかの実施形態では、変数ノード２１６−１が複数のチェックノード２１８−１，２１８−２，２１８−３，…，２１８−Ｃのそれぞれから入力を受け取るまで、階層的に更新を進めることができる。接続された複数のチェックノード２１８−１，２１８−２，２１８−３，…，２１８−Ｃの全てについて、変数ノード２１６−１に格納された信頼性データ値を階層的にインクリメントまたはデクリメントすることを１反復において完了し、その後、変数ノード２１６−１から各チェックノード２１８−１，２１８−２，２１８−３，…，２１８−Ｃのそれぞれに、次の（更新済みの）ハードデータ値を送ることができる。
【００３９】
図２Ｉは、チェックノード２１８−１，２１８−２，２１８−３，…，２１８−Ｃのそれぞれに、更新済みの信頼性データに対応する更新済みのハードデータを送る変数ノード２１６−１を示す図である。例えば、変数ノード２１６−１は、更新済みのハードデータ「ＨＤ４」をチェックノード２１８−１，２１８−２，２１８−３，…，２１８−Ｃに送ることができる。更新済みのハードデータ「ＨＤ４」は、変数ノード２１６−１に関連付けられて格納された更新済みの信頼性データに対応するハードデータを表しているため、階層的更新の後、変数ノード２１６−１に接続された各チェックノード２１８−１，２１８−２，２１８−３，…，２１８−Ｃに、同一のハードデータ値「ＨＤ４」を送ることができる。例えば、更新済みのハードデータは、更新済みの信頼性データ（例えば、ここで更新済みの信頼性データとは、ＬＬＲである）のＭＳＢとすることができる。いくつかの実施形態では、変数ノード２１６−１は、更新済みのハードデータを含む更新済みの信頼性データを送ることができる。更新済みのハードデータを変数ノード２１６−１からチェックノード２１８−１，２１８−２，２１８−３，…，２１８−Ｃに送ることにより、第２反復の開始を表すことができる。特定数の反復が行われるまで、かつ／またはチェックノード２１８−１，２１８−２，２１８−３，…，２１８−Ｃによって行われるシンドローム検査が正しくなるまで、更新済みのハードデータを階層的に更新して送ることを繰り返し反復することができる。
【００４０】
図３は、本開示のいくつかの実施形態に係る、誤り訂正回路３１４を含む装置のブロック図である。メモリデバイス（例えば、図１に示したメモリデバイス１１０−１）から信頼性回路（例えば、図１に示した信頼性回路１１２）を経て、データ入力３２０を与えることができる。このデータは、入力制御／バッファ／整列器３２２に入力することができる。特に図示していないが、入力制御／バッファ／整列器３２２は、制御回路から制御情報及びステータス情報を受け取って、入力３２０と誤り訂正回路３１４の間のタイミング及び信号伝達を整えることができる。入力制御／バッファ／整列器３２２は、ハードデータ（例えば、複数の符号語）を含む信頼性データを受け取ることができ、同じもの（例えば、１つのＬＬＲにつき１ビットのハードデータと２ビットの信頼性データの３ビットに拡張され、巡回整列されたハードデータ入力）を複数の巡回メモリ３２８−１，…，３２８−Ｎに与えることができる。いくつかの実施形態では、入力制御／バッファ／整列器３２２は、半ソフトデータまたは全ソフトデータ（例えば、シンドローム検査の不合格に応じて）を受け取ることができる。
【００４１】
巡回メモリ３２８−１，…，３２８−Ｎの数（Ｎ）は、Ｈ行列（パリティ検査符号を表す）の行における巡回の総数に等しくすることができる。巡回メモリ３２８−１は、１つのベクトルによって特定される巡回行列を格納することができる。巡回行列は、その列のうちの１つで表すことが可能であり、この行列における残りの列は、列番号と等しいオフセットを用いて上記ベクトルを周期的に並べ換えたものである。例えば、Ｈ行列は、パリティ検査符号を表す２０，４８０列と２，０４８行を含み得る。各変数ノードは、Ｈ行列においてそれ自体の列を有することができる。各行は、パリティ検査制約を表すことができ、各列は、受け取った符号語の１ビットを表すことができる。Ｈ行列は、巡回行列（例えば、５１２×５１２行列）と呼ばれる、より小さな行列に分解することができる。復号の各層は、巡回行列の単一行で構成することができ、巡回行列への各入力をパリティ検査とすることができる。この構成において、各層は、全てに満たないチェックノード（例えば、１つのみ）からの入力を処理する。巡回メモリ３２８−１，…，３２８−Ｎは、制御情報及び／またはステータス情報を、それらの間でやりとりし、または制御回路とやりとりし、あるいはその両方を行うことができる。
【００４２】
巡回メモリ３２８−１，…，３２８−Ｎは、パリティ検査符号に応じて、複数のチェックノード処理装置３３０−０，…，３３０−１に接続することができる。巡回メモリ３２８−１，…，３２８−Ｎは、チェックノード処理装置３３０−０，…，３３０−１に、ハードデータ及び信頼性データを送ることができる。チェックノード処理装置は、ハードデータを含む信頼性データを受け取り、パリティデータを算出し（ハードデータを更新）、少なくとも部分的にはそのパリティデータに基づいて（例えば、いくつかの実施形態では、これのみに基づいて）信頼性データを更新し、更新済みのハードデータを含む更新済みの信頼性データを巡回メモリ３２８−１，…，３２８−Ｎに出力する。なお、図３には２つのチェックノード処理装置３３０−０，…，３３０−１のみを示しているが、実施形態は、このように限定されるものではなく、より多くのまたは少ないチェックノード処理装置を誤り訂正回路３１４に含めることもできる。チェックノード処理装置３３０−０，…，３３０−１は、制御情報及び／またはステータス情報を、それらの間でやりとりし、または制御回路とやりとりし、あるいはその両方を行うことができる。
【００４３】
巡回メモリ３２８−１，…，３２８−Ｎは、更新済みのハードデータを出力制御／バッファ／整列器３２４に出力することができる。いくつかの実施形態では、巡回メモリ３２８−１，…，３２８−Ｎは、信頼性データを出力制御／バッファ／整列器３２４に出力しない。特に図示していないが、出力制御／バッファ／整列器３２４は、制御情報及び／またはステータス情報を、制御回路及び／または巡回メモリ３２８−１，…，３２８−Ｎとやりとりすることができる。出力制御／バッファ／整列器３２４は、ハードデータを出力３２６（例えば、ホストへの出力）に出力することができる。
【００４４】
図４は、本開示のいくつかの実施形態に係る少なくとも１つのアプローチを含む種々のアプローチによる、ブロック誤り率対ロービット誤り率（ＲＢＥＲ）を示すプロット図である。このプロットは、いくつかの従来のアプローチによる４ビットＭｉｎ−Ｓｕｍアルゴリズムを誤り訂正に用いたブロック誤り率（例えば、第１曲線４３２）と、ハードデータ入力と共に本開示のいくつかの実施形態による３ビットアルゴリズムを用いたブロック誤り率（例えば、第２曲線４３４）とを比較したものである。第１曲線４３２は、４ビットの信頼性データに対するブロック誤り率であり、この信頼性データは、Ｍｉｎ−Ｓｕｍ誤り訂正アルゴリズムへの入力となる１ビットのハードデータを含む。第２曲線４３４は、３ビットの信頼性データに対するブロック誤り率であり、この信頼性データは、本開示のいくつかの実施形態に係る誤り訂正アルゴリズムへの入力となる１ビットのハードデータを含む。Ｍｉｎ−Ｓｕｍアプローチは、９．０ｘ１０−６のブロック誤り率を有し得るが、本開示のいくつかの実施形態に係る誤り訂正アルゴリズムは、同じＲＢＥＲに対して２．０ｘ１０−７のブロック誤り率を有することができる。図４には特に示していないが、半ソフトデータまたは全ソフトデータを用いることにより、誤り訂正の性能をさらに向上させることもできる。
【００４５】
本開示のいくつかの実施形態において、４ビットＭｉｎ−Ｓｕｍアプローチに対するいくつかの利点には、誤り訂正回路の複雑度を低下させることが含まれる。例えば、変数ノードは、関連付けられたメモリを伴うアップ／ダウンカウンタとして（または、チェックノードがアップ／ダウンカウント機能を提供するときには単にメモリとして）実装することができ、チェックノードは、組み合わせ論理回路（例えば、ＸＯＲゲート及び／またはアップ／ダウンカウンタ）として実装することができる。さらに、誤り訂正はビットシリアル型の復号アプローチとして実装することもできる。３ビットデータ（ハードデータ及び信頼性データ）を用いることにより、４ビットデータを用いたときよりメモリ使用率を２５％も少なくすることができる。本開示に係る誤り訂正回路は、変数ノードとチェックノードの間でメモリ資源（例えば、変数ノード及び／またはチェックノードの出力ビットを格納するための）を用いずに実装することができる。
【００４６】
結論
本開示は、信頼性データの更新に関連した装置及び方法を含む。いくつかの方法は、変数ノードにて、第１のハードデータ値を有する第１の信頼性データ値または第２のハードデータ値を有する第２の信頼性データ値のいずれかを受け取ること、パリティ検査符号に応じて変数ノードに接続された各チェックノードに、第１のハードデータ値または第２のハードデータ値を送ること、及び全てに満たないチェックノードからの入力に基づいて信頼性データを更新することを含み得る。
【００４７】
本明細書中、特定の実施形態を例示及び記載してきたが、当業者であれば、同じ結果を達成するように計算された配置構成を図示の特定の実施形態において代替することが可能であることを理解するであろう。本開示は、本開示の１つまたは複数の実施形態の適合例または変更例を取り上げることを意図する。上記の記載は例示目的のためのものであり、限定的なものではないことを理解すべきである。当業者であれば、上記の記載を鑑みれば、上記実施形態と、本明細書中に具体的に記載されていない他の実施形態との組み合わせを想起するであろう。本開示の１つまたは複数の実施形態の範囲は、上記の構造及び方法を用いる他の用途を含む。従って、本開示の１つまたは複数の実施形態の範囲は、添付の特許請求の範囲と共に、かかる特許請求の範囲が権利を与えられる均等物の全体的範囲に基づいて決定されるべきである。
【００４８】
上記の詳細な説明において、本開示を簡潔に示すために、いくつかの特徴を単一の実施形態においてグループ分けしている。本開示のこの方法は、本開示の開示された実施形態が、各請求項中に明記されている特徴よりも多くの特徴を用いる必要があるという意図を反映したものとして解釈されるべきではない。むしろ、以下の特許請求の範囲に反映されるように、本発明主題は、単一の開示実施形態の全特徴に満たない特徴内に存在する。従って、以下の特許請求の範囲は、この詳細な説明に組み込まれ、各請求項は、別個の実施形態としてそれ自体独立している。
【図１】
0005992628.tif 000003
【図２Ａ】
0005992628.tif 000004
【図２Ｂ】
0005992628.tif 000005
【図２Ｃ】
0005992628.tif 000006
【図２Ｄ】
0005992628.tif 000007
【図２Ｅ】
0005992628.tif 000008
【図２Ｆ】
0005992628.tif 000009
【図２Ｇ】
0005992628.tif 000010
【図２Ｈ】
0005992628.tif 000011
【図２Ｉ】
0005992628.tif 000012
【図３】
0005992628.tif 000013
【図４】
0005992628.tif 000014