IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ウェスタン デジタル テクノロジーズ インコーポレーテッドの特許一覧

<>
  • 特許-コンテンツに応じたビット反転デコーダ 図1
  • 特許-コンテンツに応じたビット反転デコーダ 図2
  • 特許-コンテンツに応じたビット反転デコーダ 図3
  • 特許-コンテンツに応じたビット反転デコーダ 図4A
  • 特許-コンテンツに応じたビット反転デコーダ 図4B
  • 特許-コンテンツに応じたビット反転デコーダ 図5
  • 特許-コンテンツに応じたビット反転デコーダ 図6
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-05-24
(45)【発行日】2023-06-01
(54)【発明の名称】コンテンツに応じたビット反転デコーダ
(51)【国際特許分類】
   H03M 13/19 20060101AFI20230525BHJP
   G06F 11/10 20060101ALI20230525BHJP
【FI】
H03M13/19
G06F11/10 604
【請求項の数】 8
(21)【出願番号】P 2022529852
(86)(22)【出願日】2020-05-27
(65)【公表番号】
(43)【公表日】2023-01-31
(86)【国際出願番号】 US2020034728
(87)【国際公開番号】W WO2021145914
(87)【国際公開日】2021-07-22
【審査請求日】2022-06-07
(31)【優先権主張番号】16/744,061
(32)【優先日】2020-01-15
(33)【優先権主張国・地域又は機関】US
【早期審査対象出願】
(73)【特許権者】
【識別番号】504056130
【氏名又は名称】ウェスタン デジタル テクノロジーズ インコーポレーテッド
(74)【代理人】
【識別番号】100207837
【弁理士】
【氏名又は名称】小松原 寿美
(72)【発明者】
【氏名】ファインツィルバー、オメル
(72)【発明者】
【氏名】アブラハム、ダディ デイヴィッド
(72)【発明者】
【氏名】ザミール、ラン
【審査官】玉田 恭子
(56)【参考文献】
【文献】米国特許出願公開第2019/0158115(US,A1)
【文献】米国特許出願公開第2018/0375530(US,A1)
【文献】米国特許出願公開第2018/0329778(US,A1)
【文献】米国特許出願公開第2016/0335160(US,A1)
【文献】米国特許出願公開第2015/0188570(US,A1)
【文献】米国特許出願公開第2018/0191377(US,A1)
【文献】米国特許出願公開第2017/0279468(US,A1)
【文献】中国特許出願公開第109818625(CN,A)
(58)【調査した分野】(Int.Cl.,DB名)
H03M 13/19
G06F 11/10
(57)【特許請求の範囲】
【請求項1】
デコーダを備えるデバイスであって、
前記デコーダが、
復号されるデータの統計に基づいて、1つ以上の反転閾値を処理することであって、前記1つ以上の反転閾値を処理することが、前記復号されるデータの統計に基づいて前記1つ以上の反転閾値を調整することを含み、前記調整することは、ビット位置におけるビット値が正しい可能性が高いことを前記統計が示すときに、前記1つ以上の反転閾値を増加させ、前記ビット値が間違っている可能性が高いことを前記統計が示すときに、前記1つ以上の反転閾値を減少させることを含む、ことと、
前記1つ以上の処理された反転閾値を使用して、前記データに対してビット反転アルゴリズムを実施することと、を行うように構成される、デバイス。
【請求項2】
前記デコーダが、前記データの前記統計を生成するように更に構成されている、請求項1に記載のデバイス。
【請求項3】
前記デコーダが、
前記データのビット値が関与している満たされていないパリティ検査方程式の数を決定することと、
前記ビット値が関与している前記満たされていないパリティ検査方程式の数が、前記ビット値のビット位置に対応するそれぞれの反転閾値を超えるときに、前記データの前記ビット値を反転させることと、を行うように構成されている、請求項1に記載のデバイス。
【請求項4】
前記ビット反転アルゴリズムが、低密度パリティ検査(LDPC)を含む、請求項1に記載のデバイス。
【請求項5】
デバイスであって、
データを取得するための手段と、
前記データの統計を生成するための手段と、
生成されたデータ統計に基づいて、1つ以上の反転閾値を処理するための手段であって、前記1つ以上の反転閾値を処理するための手段は、前記データ統計に基づいて前記1つ以上の反転閾値を調整することを含み、前記調整することは、ビット位置におけるビット値が正しい可能性が高いことを前記統計が示すときに、前記1つ以上の反転閾値を増加させ、前記ビット値が間違っている可能性が高いことを前記統計が示すときに、前記1つ以上の反転閾値を減少させることを含む、手段と、
前記処理された1つ以上の反転閾値に基づいて、前記データに対してビット反転アルゴリズムを実施するための手段と、を備える、デバイス。
【請求項6】
前記統計を生成するための前記手段が、前記データの確率差メトリックを生成するための手段を含み、前記確率差メトリックの各確率差メトリックが、前記データにおけるそれぞれの値を有するKビットタプルの確率間の差の表現に対応し、前記それぞれの値は、対応する(K-1)ビット位置において同じビット値を有し、1つのビット位置において異なるビット値を有するKビットタプルである、請求項に記載のデバイス。
【請求項7】
前記1つ以上の反転閾値を処理するための前記手段が、前記確率差メトリックのそれぞれの確率差メトリックと信頼閾値との比較に基づいて、前記1つ以上の反転閾値のそれぞれの反転閾値を増加又は減少させるための手段を含み、前記それぞれの反転閾値が、Kビットタプルのビット位置に対応し、前記それぞれの確率差メトリックは、前記ビット位置において異なるビット値を有する前記Kビットタプルのそれぞれの値に対応する、請求項に記載のデバイス。
【請求項8】
前記ビット反転アルゴリズムが、低密度パリティ検査(LDPC)を含む、請求項に記載のデバイス。
【発明の詳細な説明】
【背景技術】
【0001】
関連出願の相互参照
本出願は、2020年1月15日に出願された米国出願第16/744,061号に対する優先権を主張するものであり、その全体を参照により本明細書に組み込む。
【0002】
本開示の分野
本開示の実施形態は、概して、データ復号に関する。より詳細には、本開示の態様は、コンピュータアプリケーションのためなど、コンテンツに応じた復号方法及びシステムに関する。
【0003】
関連技術の説明
ソリッドステートドライブ(solid state drive、SSD)などのフラッシュメモリの信頼性は、これらのドライブを従来の他のメモリ配置から区別する重要な要因である。そのようなSSDは、特にドライブの耐用年数の終わりに、長期の耐久性及びメモリ機能を有する必要がある。
【0004】
高い信頼性を達成するために、フラッシュメモリに記憶されたデータは、故障の場合に回復され得るように保護されている。回復システムは変化し得るが、最も典型的なものの1つは、符号誤り訂正(Error Code Correction、ECC)符号を使用する保護である。ほとんどの場合、ECC符号は、低密度パリティ検査(low density parity check、LDPC)符号を含む。
【0005】
ECCデコーダは、デコーダがその性能を高めることを可能にするいくつかの特徴を有する。ECCデコーダは、データを読み取るようにプログラムされており、復号されるデータの基礎的な統計を知ることによって、回復のより正確な予測を行うことができる。基礎的な統計が知られていない場合、ECCは、データの均一分布の場合に対応し得るデフォルトパラメータを使用することができる。
【0006】
当然のことながら、そのような復号には時間がかかる可能性があり、これはメモリの性能に影響を与える可能性がある。誤りが少ない場合(例えば、より低いビット誤り率(Bit Error Rate、BER)、デコーダスループットが改善され得る。したがって、改善されたスループットを備えたメモリを有することが有利である。
【発明の概要】
【0007】
本明細書に記載の例は、概して、コンテンツに応じたビット反転デコーダに関する。一例は、デバイスである。デバイスは、復号されるデータの統計に基づいて、1つ以上の反転閾値を処理することと、1つ以上の処理された反転閾値を使用して、データに対してビット反転アルゴリズムを実施することと、を行うように構成されたデコーダを含む。
【0008】
別の例は、デバイスである。デバイスは、データを取得することと、データの統計を決定することと、データ統計に基づいて、1つ以上の反転閾値を調整することと、データに対して検査方程式を実施することと、1つ以上の反転閾値及び検査方程式の結果に基づいて、データの1つ以上のビット値を反転させることと、を行うように構成されたデコーダを含む。
【0009】
別の例は、デバイスである。デバイスは、データを取得するための手段と、データの統計を生成するための手段と、データ統計に基づいて、1つ以上の反転閾値を処理するための手段と、処理された1つ以上の反転閾値に基づいて、データに対してビット反転アルゴリズムを実施するための手段と、を含む。
【図面の簡単な説明】
【0010】
本開示の上記の特徴を詳細に理解することができるように、簡潔に上で要約した本開示のより具体的な説明は、実施形態を参照することによってなされ得、それらのいくつかが添付の図面に例示されている。しかしながら、添付の図面は、本開示の実施例のみを例示し、したがって、その範囲を限定するものと見なされるべきではなく、本開示が他の同等に有効な実施形態を認め得ることに留意すべきである。
【0011】
図1】付随するインターフェース及びデコーダを有するホストデバイス及び記憶デバイスの概略ブロック図である。
【0012】
図2】ASCIIフォーマットにおけるテキストファイルの一部である。
【0013】
図3】復号されるデータの確率差メトリックを生成するための方法のフローチャートである。
【0014】
図4A】いくつかの例による、データを復号するための方法のフローチャートである。
図4B】いくつかの例による、データを復号するための方法のフローチャートである。
【0015】
図5】レイテンシを示すシミュレーション結果のグラフである。
【0016】
図6】訂正能力を示すシミュレーション結果のグラフである。
【0017】
理解を容易にするために、図面に共通する同一の要素を示すために、可能な限り、同一の参照番号を使用している。一実施例で開示される要素は、特に断ることなく、他の実施例に有益に利用され得ることが企図される。
【発明を実施するための形態】
【0018】
以下では、本開示に記載される様々な実施例を参照する。しかしながら、本開示は、具体的に説明される実施例に限定されないことを理解されたい。その代わりに、以下の特徴及び要素の任意の組み合わせが、異なる実施例に関連するか否かに関わらず、本開示を実施及び実践すると企図される。更に、実施例は、他の可能な解決策に勝る、及び/又は先行技術に勝る利点を達成し得るが、特定の利点が所与の実施例によって達成されるか否かは、本開示を限定するものではない。したがって、以下の態様、特徴、実施形態、及び利点は、単なる例示に過ぎず、請求項に明示的に記載されている場合を除いて、添付の特許請求の範囲の要素又は限定と見なされない。同様に、「本開示」への言及は、本明細書に開示される任意の発明の主題の一般化として解釈されるものではなく、請求項に明示的に記載されている場合を除いて、添付の特許請求の範囲の要素又は限定であると見なされるべきではない。
【0019】
本明細書に記載の例は、概して、コンテンツに応じたビット反転デコーダに関する。一例は、デバイスである。デバイスは、復号されるデータの統計に基づいて、1つ以上の反転閾値を処理することと、1つ以上の処理された反転閾値を使用して、データに対してビット反転アルゴリズムを実施することと、を行うように構成されたデコーダを含む。他の例は、復号されるデータの統計に基づいて、1つ以上の反転閾値を処理し、1つ以上の処理された反転閾値を使用して、データに対してビット反転アルゴリズムを実施する方法に関する。
【0020】
図1は、ホストデバイス102及び記憶デバイス104の概略ブロック図100を示す。記憶デバイス104は、記憶コントローラ108、エンコーダ/デコーダ110、及び1つ以上のメモリデバイスa~nである112A~112N(個別に又は集合的に、メモリデバイス112)を含む。データは、ホストデバイス102と記憶デバイス104との間のインターフェース106を通して送信及び受信され得る。インターフェース106は、ホストデバイス102とインターフェースするように、すなわち、記憶デバイス104による処理のためにホストデバイス102によって提供されるようなデータ及び/又はコマンド要求を受け入れるように構成されている。
【0021】
記憶コントローラ108は、記憶デバイス104の様々な構成要素間のデータのフローを制御するように構成されている。記憶コントローラ108は、インターフェース106から受信されたデータをエンコーダ/デコーダ110に指示して、受信されたデータを符号化することができ、符号化されたデータをエンコーダ/デコーダ110から受信することができ、これを記憶コントローラ108がメモリデバイス112に書き込ませるようにすることができる。同様に、記憶コントローラ108は、メモリデバイス112から読み取られたデータをエンコーダ/デコーダ110に指示して、読み取られたデータを復号することができ、復号されたデータをエンコーダ/デコーダ110から受信することができ、これを記憶コントローラ108が、ホストデバイス102への通信のために、インターフェース106に伝送させるようにすることができる。記憶コントローラ108は、読み取りシーケンス及び書き込みシーケンスのためのコマンドシーケンスをメモリデバイス112に伝送するように更に構成されている。記憶コントローラ108は、メモリデバイス112をフォーマットすること、メモリデバイス112の不良メモリセルをマッピングすること、将来の失敗したメモリセルのために置換される予備セルを割り当てること、メモリデバイス112の論理アドレスと物理アドレスとの間を変換すること、ウェアレベリング、ガベージコレクションなど、他のタスクを実施するように構成することができる。図示の例では、記憶デバイス104は、情報を記憶するための単一のSSD又は複数のSSDであってもよい。
【0022】
記憶コントローラ108は、例えば、処理回路又はプロセッサ(プロセッサによって実行可能なコンピュータ可読プログラムコード(例えば、ファームウェア)を記憶するコンピュータ可読媒体を有する)、論理回路、特定用途向け集積回路(application specific integrated circuit、ASIC)、プログラマブル論理コントローラ、埋め込みマイクロコントローラ、それらの組み合わせなどとすることができるか、又はそれらを含むことができる。記憶コントローラ108は、様々な機能を実施するためにハードウェア及び/又はファームウェアを用いて構成することができる。
【0023】
エンコーダ/デコーダ110は、低ギア(low gear decoder、LG)デコーダ114及び高ギア(high gear、HG)デコーダ116を含む。LGデコーダ114は、低密度パリティ検査(LDPC)アルゴリズムなどの低出力ビット反転アルゴリズムを実装することができる。LGデコーダ114は、データを復号し、そのようなデータが低ビット誤り率(BER)を有する場合にビット反転を訂正するよう機能し得る。HGデコーダ116は、全出力復号及び誤り訂正アルゴリズムを実装することができ、これは、LGデコーダ114の故障時に開始されて、データを復号し、データにおけるビット反転を訂正することができる。HGデコーダ116は、そのようなデータが高BERを有する場合にビット反転を訂正するよう機能することができる。したがって、LGデコーダ114及びHGデコーダ116は、ギアシフトを実装することができる。
【0024】
エンコーダ/デコーダ110(LGデコーダ114及びHGデコーダ116を含む)は、例えば、処理回路又はプロセッサ(プロセッサによって実行可能なコンピュータ可読プログラムコード(例えば、ファームウェア)を記憶するコンピュータ可読媒体を有する)、論理回路、特定用途向け集積回路(ASIC)、プログラマブル論理コントローラ、埋め込みマイクロコントローラ、それらの組み合わせなどとすることができるか、又はそれらを含むことができる。エンコーダ/デコーダ110は、下記に記載され、フロー図に示される様々な機能を実施するためのハードウェア及び/又はファームウェアを用いて構成することができる。いくつかの例では、エンコーダ/デコーダ110は、記憶コントローラ108とは別個であり、他の例では、エンコーダ/デコーダ110は、記憶コントローラ108に埋め込まれているか、又はその一部である。いくつかの例では、LGデコーダ114は、論理回路、ASICなどの硬化回路である。いくつかの例では、HGデコーダ116は、ソフトデコーダ(例えば、プロセッサによって実装される)とすることができる。
【0025】
より多くの場合、エンコーダ/デコーダ110によって復号されるデータは、低BERを有する。したがって、LGデコーダ114は、低出力及び低レイテンシ復号を実装して、低BERを用いてデータを復号することができる。LGデコーダ114によるそのような復号を採用することによって、エンコーダ/デコーダ110のレイテンシ及び電力消費を減少させることができる。更に、いくつかの例によれば、LGデコーダ114の硬化回路は、ダイ上で著しく少ない面積を有し、16倍少ない面積及び12~16倍少ない電力など、ソフトデコーダよりもはるかに少ない電力を消費することができる。下記で更に詳細に説明するように、LGデコーダ114は、データの統計を認識しており、レイテンシを更に減少させ、LGデコーダ114の復号能力を向上させることができる。
【0026】
メモリデバイス112は、任意の好適な揮発性又は不揮発性記憶媒体を含み得る。例えば、メモリデバイス112は、NANDフラッシュメモリセル及び/又はNORフラッシュメモリセルなどの不揮発性記憶媒体とすることができるか、又はそれを含むことができる。いくつかの例では、メモリセルは、ソリッドステート(例えば、フラッシュ)メモリセルの形態をとることができ、ワンタイムプログラマブル、複数回プログラマブル、又は多数回プログラマブルであり得る。メモリセルはまた、単一レベルセル(single-level cells、SLC)、多重レベルセル(multiple-level cells、MLC)、三重レベルセル(triple-level cells、TLC)であり得るか、又は現在既知であるか若しくは今後開発される、他のメモリセルレベル技術を使用することもできる。
【0027】
記憶デバイス104の様々な構成要素は、パッケージ又はモジュールに含まれ得る1つ以上の異なるダイで具体化することができる。例えば、インターフェース106、記憶コントローラ108、及びエンコーダ/デコーダ110は、単一のダイ上で具体化され得、各メモリデバイス112は、それぞれの異なるダイ上で具体化され得る。任意の数の異なるダイを実装することができる。ダイ及びその上の構成要素は、ダイが取り付けられている基板を介して通信可能に結合され得る。基板は、インターポーザ、パッケージ基板、それらの組み合わせなどとすることができるか、又はそれらを含むことができる。
【0028】
本開示の態様は、図1に記載の構成要素を使用して、デコーダにおけるデータを利用するためのいくつかの方法の実行を可能にし、これは、訂正能力の増加及び復号レイテンシ並びに電力消費の低減につながり得る。本開示の態様は、データ自体に見られる構造を使用して、より効率的な復号を可能にすることができる。
【0029】
多くの場合、NANDベースのSSDのようなフラッシュメモリなどのメモリに書き込まれたデータは、それに構造を有する。構造は、ユーザソースの特性とすることができる(例えば、保存されたデータがテキストの起源である場合)。いくつかの例では、構造は、メモリが使用される方法の特性とすることができる(例えば、ファームウェアによって書き込まれた表、0で埋められたデータなど)。復号プロセスにおけるそのような構造の特徴を利用することは、そのような特徴を使用せずに誤り訂正を実施しようとする試みよりも、低減されたレイテンシ及び改善された訂正をもたらすことができる。
【0030】
データの基礎的な統計を知ることは、デコーダが、そのような方法を使用しない従来の方法と比較して、データを復号するときに正しい結果をより効率的に取得するのに役立ち得る。図2は、ASCIIフォーマットにおけるテキストファイル200の一部を示す。ASCIIの各文字はバイトであり、最も一般的な文字は、バイトの最下位7ビットのみを占める。これにより、これらの最も一般的な文字のバイトの最上位ビット202は「0」になる。したがって、データ内に記憶された任意のバイトの最上位ビットが「0」になる確率は高い。復号されるバイトが最も有意なビットに「1」を有する場合、そのビットの値が誤っている可能性が高いと仮定することができる。本明細書に記載の実施例は、ビット値が誤りである確率又は正しい確率が信頼閾値を超えたときに、反転アルゴリズムに使用されるビット位置の反転閾値を減少又は増加させるために、そのような確率を利用する。
【0031】
一般に、いくつかの例では、読み取られたデータは、記憶コントローラ108の制御下で、メモリデバイス112からエンコーダ/デコーダ110に転送される。エンコーダ/デコーダ110(例えば、LGデコーダ114)は、データに基づいて、例えば、データがエンコーダ/デコーダ110に転送されるときにオンザフライで、確率差メトリックなどの統計を生成する。LGデコーダ114は、統計(例えば、確率差メトリック)に基づいて、反転アルゴリズムに使用されるそれぞれのビット位置の1つ以上の反転閾値を処理する。反転閾値を処理することにより、反転閾値の値を増加又は減少させることができる。LGデコーダ114は、反転アルゴリズムを実施し、パリティ検査方程式満足度を計算し、データを復号することができる。反転アルゴリズムは、処理された1つ以上の反転閾値を使用する。
【0032】
図3は、いくつかの例による、復号されるデータの統計(例えば、この例では確率差メトリック)を生成するための方法のフローチャート300である。ブロック302において、エンコーダ/デコーダ110に転送されたデータを表すヒストグラムが生成される。転送されたデータは、復号されるデータであり、メモリデバイス112から読み取られ得る。いくつかの例では、ヒストグラムは、データにおけるそれぞれのKビットシーケンス(例えば、Kビットタプル)の発生数をカウントする。本明細書の実施例として、及び容易にするために、ヒストグラムは、10進値として表されるKビットタプルの数をカウントするが、値は、任意のベース形式(例えば、2進、16進など)で表すことができる。ヒストグラムは、Kビットによって表される各可能な値に対するビンを含むことができ、ある値に対応するビンは、その値を有するデータにおけるKビットタプルを各インスタンスに対して増分することができ、その結果、ヒストグラムは、対応する値を有するKビットタプルの数の回数を維持する。例えば、ヒストグラムは、値セットVを含むことができ、ビンv∈V及び値jは、10進値[0,...,2-1]である。任意のビンの値vは、値jを有する転送されたデータにおけるKビットタプルのインスタンスの数である。
【0033】
ブロック304において、転送されたデータにおける任意の所与のKビットタプルがそれぞれの値を有する確率は、ヒストグラムに基づいて生成される。前述の例を続けると、転送されたデータにおける任意の所与のKビットタプルが値jを有する確率pは、以下のように計算することができる。
【数1】
【0034】
ブロック306において、確率差メトリックの表が確率に基づいて生成される。表Tは、確率差メトリックtm,n∈Tを含み、式中、nは、Kビットタプルにおけるビット位置を示し、mは、ビット位置n(例えば、(K-1)ビットタプの値)におけるビット値b[n]のないKビットタプルの2進表現の値である。各確率差メトリックtm,nは、ビット値b[n]が「0」及び「1」のときに得られ、値mに対応する残りの(K-1)ビットタプルにおいて、ビット位置nに挿入される、任意の所与のKビットタプルが2つの値jを有するそれぞれの確率p間の差を表すメトリックである。一例として、4ビット(例えば、K=4)タプルの場合、エントリt5,2は、Kビットタプルにおける5の(K-1)ビットタプル及び2のビット位置の値を示す。(K-1)ビットタプルは、b(K-1)[0:3]=<101>=5=mである。得られた2つの値は、9及び13である。「0」がビット位置2に挿入されるとき、b[0:4]=<1001>=9であり、「1」がビット位置2に挿入されるとき、b[0:4]=<1011>=13である。したがって、確率差メトリックt5,2は、確率pと確率p13との間の差を表すメトリックである。いくつかの例では、エントリtm,nのメトリックは、2つの確率p(例えば、t5,2=p-p13)、2つの確率p
【数2】
の比の対数、又は別のメトリックとの間の差とすることができる。下記の表1は、4ビットタプルの例示的な表Tである。他の例は、他のメトリックを実装する、かつ/又は異なるビットサイズタプルに拡張することができる。
【表1】
表1から明らかなように、この例では、ビット値b[n]が所与の残りの(K-1)ビットタプルを有する任意のKビットタプルにおいて「1」である確率が高いとき、対応する確率差メトリックtm,nは、負であり、ビット値b[n]が所与の残りの(K-1)ビットタプルを有する任意のKビットタプルにおいて「0」である確率が高いとき、対応する確率差メトリックtm,nは、正である。確率が等しいとき、Kビットタプルの対応する確率差メトリックtm,nは、0である。
【0035】
復号データでは、Kビットタプルのビット位置kの反転閾値FTH,kは、表Tの確率差メトリックtm,nに基づいてなど、統計に基づいて処理される。処理されると、反転閾値FTH,kは、ビット反転アルゴリズムに使用されて、Kビットタプルのビット位置kにおいてビット値b[k]が関与している満たされていないパリティ検査方程式の数に基づいて、Kビットタプルのビット位置kにおける対応するビット値b[k]を反転させるかどうかを決定する。反転閾値FTH,kを処理すること、及び対応するビット値b[k]を反転させるかどうかを決定することは、すべてのパリティ検査方程式が満たされ、結果的に復号が成功するまで、又は復号失敗条件が満たされるまで、反復的に実施することができる。反転閾値FTH,kを処理することによって、パリティ検査方程式の収束は、より迅速かつレイテンシが低減された状態で達成され得る。加えて、反転閾値FTH,kを処理することによって、復号の訂正能力を向上させることができる。
【0036】
図4A及び図4Bは、いくつかの例による、データを復号するための方法のフローチャート400A、400Bである。データを復号するための方法内で、1つ以上の反転閾値が処理され、ビット反転アルゴリズムが実装される。
【0037】
本明細書に記載されるように、データを復号するための方法は、パリティ検査方程式を実装する。いくつかの例では、パリティ検査方程式は、Gallager A又はGallager Bアルゴリズムを使用することなどによって、低密度パリティ検査(LDPC)符号アルゴリズムを実装する。パリティ検査方程式は、長さNを有する誤り訂正符号語を使用する。誤り訂正符号語は、M数のパリティ検査方程式の対応するセットを有することができる。各パリティ検査方程式は、誤り訂正符号語のビットのサブセットに対する制約とすることができる。復号されるKビットタプルの数(例えば、図4A及び図4Bのデータを復号するための方法の単一の実装について)は、誤り訂正符号語長Nとの関係を有することができる。復号されるKビットタプルの数Sは、誤り訂正符号語長NとKビットタプル当たりのKビット数との比である(例えば、S=N/K)。各パリティ検査方程式は、KビットタプルのS数の1つ以上のビットをパリティ検査方程式の関与者として有することができる。S数のKビットタプルの1つ以上のビット及び誤り訂正符号語のビットの対応するサブセットを用いて分析されたとき、パリティ検査方程式に、例えば、「0」という結果がもたらされた場合、パリティ検査方程式は満たされていると言うことができる。すべてのパリティ検査方程式が満たされている場合、S数のKビットタプルは、法的な符号語を誘発し、そうでなければ、S数のKビットタプルは、法的な符号語を誘発しない。
【0038】
二部グラフを使用して、長さNの誤り訂正符号語及びM数のパリティ検査方程式を表すことができる。二部グラフには、変数ノード、検査ノード、及び変数ノード及び検査ノードを接続するエッジが含まれる。各変数ノードは、誤り訂正符号語のビット位置に対応し、したがって、N数の変数ノードは、二部グラフに存在している。各検査ノードは、パリティ検査方程式に対応し、したがって、M数の検査ノードは、二部グラフに存在している。各エッジは、検査ノードによって表されるパリティ検査方程式における変数ノード(及びKビットタプルの対応するビット位置)によって表される誤り訂正符号のビット位置による関与を表し、エッジは、可変ノードを検査ノードに接続する。各変数ノードは、エッジによって任意の数の検査ノードに接続することができ、各検査ノードは、エッジによって任意の数の変数ノードに接続することができる。
【0039】
図4Aを参照すると、ブロック402において、ループ回数変数iterが、1に等しく初期化される。ブロック404において、タプル数変数sは、0に等しく初期化される。一般に、タプル数変数sは、復号されるデータ内のKビットタプルが、長さNを有する誤り訂正符号語を使用して誤り訂正について分析されているインデックスである。以下で明らかになるように、タプル数変数sは、復号されるタプルの数Sよりも0~1未満の値を有することができる(例えば、0≦s≦S-1)。
【0040】
ブロック406において、例えば、エンコーダ/デコーダ110に転送されたデータから、ビット値b[0:(K-1)]を有するs数のKビットタプルが得られる。ブロック408において、ビット位置変数qは、0に等しく初期化される。ブロック410において、反転閾値FTH,qは、ある値に初期化される。反転閾値FTH,qが初期化される値は、任意とすることができるか、又は後続の実装されたパリティ検査方程式に基づくことができる。例えば、パリティ検査において、ビット位置qがいくつかのパリティ検査方程式に関与している場合、反転閾値FTH,qが初期化される値は、ビット位置qが最も近い整数まで端数を切り上げて関与しているパリティ検査方程式の数の半分とすることができる。例として、ビット位置qが2つのパリティ検査方程式に関与している場合、反転閾値FTH,qが初期化される値は、1とすることができ、又はビット位置qが3つのパリティ検査方程式に関与している場合、反転閾値FTH,qが初期化される値は、2とすることができる。s数のKビットタプルの同じビット位置qの後続の反復では、反転閾値FTH,qは、以前の反復で決定された反転閾値FTH,qの値に初期化され得る。
【0041】
ブロック412において、確率差メトリックtm,qは、Kビットタプル及びビット位置変数qに基づいて、表Tから取得される。確率差メトリックtm,qは、上述のように、Kビットタプル及びビット位置qに基づいて特定される。要約すると、ビット位置qにおけるビット値b[q]は、Kビットタプルから除去されて、残りの(K-1)ビットタプルを作成し(例えば、ビット値b[q]なしでKビットタプルのそれぞれのビット値を使用して)、値mは、残りの(K-1)ビットタプルから決定される。
【0042】
ブロック414~422において、調整係数dは、確率差メトリックtm,q及び信頼閾値CTH0、CTH1に基づいて設定される。信頼閾値CTH0、CTH1は、事前定義されている。信頼閾値CTH0は、Kビットタプルの任意のビット位置におけるビット値が「0」の値を有する可能性が高いという信頼レベルを制御する閾値であり、信頼閾値CTH1は、Kビットタプルの任意のビット位置におけるビット値が「1」の値を有する可能性が高いという信頼レベルを制御する閾値である。一般に、信頼閾値CTH1の値は、信頼閾値CTH0の値未満である(例えば、CTH1<CTH0)。信頼閾値CTH0は、1以下の正数とすることができる(例えば、0<CTH0≦1)。信頼閾値CTH1は、-1以上の負数とすることができる(例えば、-1≦CTH1<0)。上述のように、確率差メトリックtm,nは、対応するビット値b[n]が、値mを有する所与の残りの(K-1)ビットタプルを有する任意のKビットタプルにおいて「1」である確率が高いときに、負である。更に、確率差メトリックtm,nの負値の大きさが大きいほど、ビット値b[n]が「1」である可能性が高いという信頼性が高くなる。加えて、確率差メトリックtm,nは、対応するビット値b[n]が、値mを有する所与の残りの(K-1)ビットタプルを有する任意のKビットタプルにおいて「0」である確率が高いときに、正である。更に、確率差メトリックtm,nの正値の大きさが大きいほど、ビット値b[n]が「0」である可能性が高いという信頼性が高くなる。
【0043】
調整係数dを以下のように設定する。
【数3】
ブロック414~422では、このようにして調整係数dの設定を達成する。ブロック414において、確率差メトリックtm,qが信頼閾値CTH0よりも大きいかどうかの判定が行われる。そうである場合、ブロック416において、調整係数dを-1に設定する。これは、ビット値b[q]が「0」の値を有する確率が高いことを、ある程度の信頼性を持って示している。確率差メトリックtm,qの正値の大きさは、信頼閾値CTH0の正値の大きさよりも大きく、かつ、それを超える。ブロック414における判定が、確率差メトリックtm,qが信頼閾値CTH0以下である場合、ブロック418において、確率差メトリックtm,qが信頼閾値CTH1未満であるかどうかの判定が行われる。そうである場合、ブロック420において、調整係数dを1に設定する。これは、ビット値b[q]が「1」の値を有する確率が高いことを、ある程度の信頼性を持って示している。確率差メトリックtm,qの負値の大きさは、信頼閾値CTH1の負値の大きさよりも大きく、かつ、それを超える。ブロック418における判定が、確率差メトリックtm,qが信頼閾値CTH1以上である場合、ブロック422において、調整係数dを0に設定する。これは、ビット値b[q]が「0」又は「1」のうちのいずれか1つである可能性が高いという、信頼性が不十分であることを示している。
【0044】
調整係数dがブロック416、420、422のうちの1つで設定された後、ブロック424において、反転閾値FTH,qは、ビット値b[q]及び調整係数dに基づいて更新される。一般に、例示されるように、反転閾値FTH,qは、更新関数Update_Func(b[q],d)を使用して調整することができる。反転閾値FTH,qは、更新関数Update_Func(b[q],d)によって増加又は減少させることができる。例えば、反転閾値FTH,qは、以下のように調整することができる。
FTH,q=FTH,q+Update_Func(b[q],d)
下記の表2は、例示的な更新関数Update_Func(b[q],d)を示す。
【表2】
表2の更新関数Update_Func(b[q],d)は、以下のように再記述することができる。
Update_Func(b[q],d)=d(2b[q]-1)
【0045】
表2の行(1)に関して、調整係数dは、-1であり、これは、ビット値b[q]が「0」の値を有する確率が高いことを、ある程度の信頼性を持って示している。ただし、ビット値b[q]が「1」であるため、反転閾値FTH,qは、1だけ減少する(例えば、Update_Func(b[q],d)=-1)。反転閾値FTH,qを減少させることで、反転アルゴリズムの動作中にビット値b[q]をより容易に反転させることができる。
【0046】
表2の行(2)に関して、調整係数dは、-1であり、これは、ビット値b[q]が「0」の値を有する確率が高いことを、ある程度の信頼性を持って示している。ビット値b[q]が「0」であるため、反転閾値FTH,qは、1だけ増加する(例えば、Update_Func(b[q],d)=1)。反転閾値FTH,qを増加させることで、反転アルゴリズムの動作中にビット値b[q]が反転するのを防止することができる。
【0047】
表2の行(3)に関して、調整係数dは、1であり、これは、ビット値b[q]が「1」の値を有する確率が高いことを、ある程度の信頼性を持って示している。ビット値b[q]が「1」であるため、反転閾値FTH,qは、1だけ増加する(例えば、Update_Func(b[q],d)=1)。反転閾値FTH,qを増加させることで、反転アルゴリズムの動作中にビット値b[q]が反転するのを防止することができる。
【0048】
表2の行(4)に関して、調整係数dは、1であり、これは、ビット値b[q]が「1」の値を有する確率が高いことを、ある程度の信頼性を持って示している。ただし、ビット値b[q]が「0」であるため、反転閾値FTH,qは、1だけ減少する(例えば、Update_Func(b[q],d)=-1)。反転閾値FTH,qを減少させることで、反転アルゴリズムの動作中にビット値b[q]をより容易に反転させることができる。
【0049】
表2の行(5)及び(6)に関して、調整係数dは、0であり、これは、ビット値b[q]が「0」又は「1」のうちのいずれか1つである可能性が高いという信頼性が不十分であることを示している。したがって、反転閾値FTH,qは、変化しない(例えば、Update_Func(b[q],d)=0)。また、この例では、フローチャート400Aにおいて、ブロック418における判定が、確率差メトリックtm,qが信頼閾値CTH1以上である場合、反転閾値FTH,qは変化しないため、フローは、ブロック426に進むことができることに留意されたい。
【0050】
ブロック426において、Kビットタプルのビット値b[q]が関与している満たされていないパリティ検査方程式UNSATb[q]の数が計算される。Kビットタプルのビット値b[q]が関与しているパリティ検査方程式が計算される(例えば、誤り訂正符号語のビットの対応するサブセットを使用することを含む)。次いで、満たされていないパリティ検査方程式UNSATb[q](例えば、0に等しくないパリティ検査方程式)の数をカウントする。図4Bを参照すると、ブロック452において、満たされていないパリティ検査方程式UNSATb[q]の数が反転閾値FTH,qよりも大きいかどうかの判定が行われる。そうである場合、ブロック454において、Kビットタプルにおけるビット値b[q]を反転させる。例えば、最初にb[q]=0である場合、ビット値b[q]は、「1」に反転され、最初にb[q]=1である場合、ビット値b[q]は、「0」に反転される。ブロック452の判定が、満たされていないパリティ検査方程式UNSATb[q]の数が反転閾値FTH,q以下である場合、又はブロック454に続いて、ブロック456において長さNを有する誤り訂正符号語を使用して、S数のKビットタプルに対してパリティ検査方程式が実施される。
【0051】
ブロック458において、すべてのパリティ検査方程式が満たされているかどうかの判定が行われる。そうである場合、ブロック460において、S数のKビットタプルの復号結果が取得され、収束が達成される。パリティ検査方程式のうちの少なくとも1つが満たされていない場合、ブロック462において、ビット位置変数qが1だけ増分される。
【0052】
ブロック464において、ビット位置変数qがKビットタプルにおいてKビット数未満であるかどうかの判定が行われる。そうである場合、フローは、図4Aのブロック410にループバックして、Kビットタプルの別のビット位置を分析する。そうでない場合、ブロック466において、タプル数変数sが1だけ増分される。ブロック464からブロック410までフローをループさせることによって形成されたループは、収束により復号結果に達しようと試みるために、フローがs数のKビットタプルにおける各ビットを分析することを可能にすることができる。以下で明らかになるように、s数のKビットタプル内の各ビットが、復号結果に達することなく分析される場合、外部ループは、他のKビットタプルを走査することができ、Kビットタプルのビットを繰り返し走査することができる。
【0053】
ブロック468において、タプル数変数sが復号されるタプルの数Sよりも少ないかどうかの判定が行われる。そうである場合、フローは、図4Aのブロック406にループバックして、別のKビットタプルを分析する。そうでない場合、ブロック470において、ループ回数変数iterが1だけ増分される。ブロック468からブロック406までフローをループさせることによって形成されたループは、収束により復号結果に達しようと試みるために、フローが、復号される各Kビットタプルを分析することを可能にすることができる。
【0054】
ブロック472において、ループ回数変数iterが最大反復数未満であるかどうかの判定が行われる。最大反復数は、復号されるデータが復号されることができないと見なされる前に実施される任意の反復数とすることができる。ループ回数変数iterが最大反復数未満である場合、フローは、図4Aのブロック404にループバックする。ブロック472において、ループ回数変数iterが最大反復数未満でないと決定された場合、ブロック474において、復号失敗が決定される。ブロック474において、例外をスローすることができ、例えば、復号されるデータは、誤り訂正及び復号のためにHGデコーダ116に送られる。
【0055】
図4A及び図4Bのフローチャート400A、400Bによって実施される方法に対して、任意の数の変形が行われ得る。例えば、異なるビット位置を反復的に処理する代わりに、いくつかの例では、任意の数のビット位置を並行して処理することができる。更に、様々な決定によって実装されるビット位置変数、ループカウンタ、及び論理は、同等の機能性を達成するように修正することができる。
【0056】
図5及び図6は、本明細書に記載されるデコーダの例示的な実装を従来のデコーダと比較するシミュレーション結果のグラフ500、600である。図5のグラフ500は、ビット誤り率(BER)の関数としての平均レイテンシを示す。図6のグラフ600は、BERの関数として、ブロック誤り率(block error rate、BLER)(例えば、復号失敗の確率を示す)を示す。グラフ500、600の曲線502、602は、デコーダの例示的な実装の結果を表す。グラフ500、600の曲線504、604は、従来のデコーダの結果を表す。図5及び図6のシミュレーションは、通常の使用中に128回の連続フラッシュメモリユニット(flash memory unit、FMU)に記録されたデータセットを使用して得られた。8ビットタプル及び対応するヒストグラムは、デコーダの例示的な実装に使用された。
【0057】
図5によって示されるように、例示的な実装形態では、復号レイテンシが減少している。より低いBER値及び中間BER値のために、レイテンシを低減することができる。デコーダの例示的な実装形態では、デコーダの寿命のほとんどについて、より低いBER値を有するデータを用いて実施されている可能性が高いことが予想される。
【0058】
図6によって示されるように、例示的な実装形態は、訂正能力が増加している。より低いBER値の場合、BLERは、従来のデコーダと比較して、例示的な実装のために、およそ1桁低くすることができる。加えて、例示的な実装の復号閾値(例えば、所与のBLERに達する前に復号することができるBERを有するデータ)が増加した。
【0059】
一般に、統計を使用して、例えば、LGデコーダ114によってデータを復号及び誤り訂正することは、レイテンシを減少させ、訂正能力を向上させることができる。これは、例えば、より低いBER、低消費電力で、ビット反転デコーダの性能を改善することができる。反転閾値を処理することにより、復号及び誤り訂正をより少ない反復で可能にし、より高いBERにビット反転アルゴリズムを実装することができる。
【0060】
いくつかの例によれば、デバイスは、復号されるデータの統計に基づいて、1つ以上の反転閾値を処理することと、1つ以上の処理された反転閾値を使用して、データに対してビット反転アルゴリズムを実施することと、を行うように構成されたデコーダを含む。
【0061】
上記デバイスの更なる例では、デコーダは、データの統計を生成するように更に構成することができる。
【0062】
上記デバイスの更なる例では、統計には、確率差メトリックを含めることができ、確率差メトリックの各確率差メトリックは、それぞれのビット差分値に対応する2つの確率に基づいており、2つの確率の各々は、データにおける所与のKビットタプルがそれぞれの値を有する確率であり、2つの確率のそれぞれのビット差分値が、対応する(K-1)ビット位置のそれぞれ同じ値を有し、1つのビット位置の異なる値を有するKビットタプルによって表される。更に、いくつかの例では、デコーダは、ビット位置における異なるビット値を有するデータのKビットタプルによって表される値に対応する確率差メトリックが、「1」に対応する第1の信頼閾値を超え、ビット位置におけるビット値が「1」であるとき、又は確率差メトリックが、「0」に対応する第2の信頼閾値を超え、ビット値が「0」であるときに、データのKビットタプルのビット位置に対応するそれぞれの反転閾値を増加させることと、確率差メトリックが、第1の信頼閾値を超え、ビット値が「0」であるとき、又は確率差メトリックが、第2の信頼閾値を超え、ビット値が「1」であるときに、ビット位置に対応するそれぞれの反転閾値を減少させることと、を行うように構成することができる。
【0063】
上記デバイスの更なる例では、デコーダは、ビット位置におけるビット値がある程度の信頼性をもって正しい可能性が高いことを、統計が示すときに、Kビットタプルのビット位置に対応するそれぞれの反転閾値を増加させることと、ビット値がある程度の信頼性を持って間違っている可能性が高いことを、統計が示すときに、それぞれの反転閾値を減少させることと、を行うように構成することができる。
【0064】
上記デバイスの更なる例では、デコーダは、データのビット値が関与している満たされていないパリティ検査方程式の数を決定することと、ビット値が関与している満たされていないパリティ検査方程式の数が、ビット値のビット位置に対応するそれぞれの反転閾値を超えるときに、データのビット値を反転させることと、を行うように構成することができる。
【0065】
上記デバイスの更なる例では、ビット反転アルゴリズムは、低密度パリティ検査(LDPC)を含むことができる。
【0066】
いくつかの例によれば、デバイスは、データを取得することと、データの統計を決定することと、データ統計に基づいて、1つ以上の反転閾値を調整することと、データに対して検査方程式を実施することと、1つ以上の反転閾値及び検査方程式の結果に基づいて、データの1つ以上のビット値を反転させることと、を行うように構成されたデコーダを含む。
【0067】
上記デバイスの更なる例では、デコーダは、ビンを含むヒストグラムを生成することであって、ビンの各ビンが、Kビットによって表されるそれぞれのビン値に対応し、ビンの各ビンが、Kビットタプルがそれぞれのビン値を有するデータにおけるいくつかのインスタンスを有する、生成することと、各ビン値について、データにおける所与のKビットタプルが、ヒストグラムに基づいて、それぞれのビン値を有する確率を決定することと、確率差メトリックを生成することであって、確率差メトリックの各確率差メトリックが、それぞれのビット差分値に対応する確率のうちのそれぞれ2つに基づいており、それぞれのビット差分値は、対応する(K-1)ビット位置のそれぞれ同じ値を有し、1つのビット位置の異なる値を有するKビットタプルによって表され、1つ以上の反転閾値を調整することが、確率差メトリックに基づいている、生成することと、を行うように構成することができる。更に、いくつかの例では、確率差メトリックの各確率差メトリックは、確率のうちのそれぞれ2つの間の差とすることができる。更に、いくつかの例では、確率差メトリックの各確率差メトリックは、確率のうちのそれぞれ2つの比の対数とすることができる。更に、いくつかの例では、デコーダは、データのKビットタプルのビット位置について、確率差メトリックの確率差メトリックが、ビット値が「0」であるという、ある程度の信頼性に対応する第1の信頼閾値を超えるかどうかを判定することであって、確率差メトリックが、それぞれのビット位置のビット値が「0」であり、「1」であるデータのKビットタプルのビット値によって表されるビット差分値に対応する確率に基づいている、判定することと、確率差メトリックが、ビット値が「1」であるという、ある程度の信頼性に対応する第2の信頼閾値を超えるかどうかを判定することと、(i)確率差メトリックが、第1の信頼閾値を超え、それぞれのビット位置のビット値が「0」であるとき、又は(ii)確率差メトリックが、第2の信頼閾値を超え、それぞれのビット位置のビット値が「1」であるときに、それぞれのビット位置に対応するそれぞれの反転閾値を増加させることと、(i)確率差メトリックが、第1の信頼閾値を超え、それぞれのビット位置のビット値が「1」であるとき、又は(ii)確率差メトリックが、第2の信頼閾値を超え、それぞれのビット位置のビット値が「0」であるときに、それぞれの反転閾値を減少させることと、を行うように構成することができる。
【0068】
上記デバイスの更なる例では、デコーダは、データのKビットタプルのビット位置について、それぞれのビット位置のビット値が、ある程度の信頼性を持って正しいか又は誤りのある可能性が高いことを、統計が示すかどうかを判定することと、ビット値が、ある程度の信頼性を持って正しいか又は誤りのある可能性が高いことを、統計が示すときに、それぞれのビット位置に対応するそれぞれの反転閾値を調整することと、を行うように構成することができる。
【0069】
上記デバイスの更なる例では、デコーダは、データのKビットタプルのビット位置について、それぞれのビット位置のビット値が「1」である確率が、第1の信頼閾値を超えることを、統計が示すかどうかを判定することと、ビット値が「0」である確率が、第2の信頼閾値を超えることを、統計が示すかどうかを判定することと、(i)ビット値が「1」である確率が、第1の信頼閾値を超え、ビット値が「1」であることを、統計が示すとき、又は(ii)ビット値が「0」である確率が、第2の信頼閾値を超え、ビット値が「0」であることを、統計が示すときに、それぞれのビット位置に対応するそれぞれの反転閾値を増加させることと、(i)ビット値が「1」である確率が、第1の信頼閾値を超え、ビット値が「0」であることを、統計が示すとき、又は(ii)ビット値が「0」である確率が、第2の信頼閾値を超え、ビット値が「1」であることを、統計が示すときに、それぞれの反転閾値を減少させることと、を行うように構成することができる。
【0070】
上記デバイスの更なる例では、データの1つ以上のビット値の各々は、それぞれのビット値が関与している満たされていない検査方程式の数が、それぞれのビット値のビット位置に対応するそれぞれの反転閾値を超えるときに、反転せることができる。
【0071】
上記デバイスの更なる例では、検査方程式は、低密度パリティ検査(LDPC)の少なくとも一部とすることができる。
【0072】
いくつかの例によれば、デバイスは、データを取得するための手段と、データの統計を生成するための手段と、データ統計に基づいて、1つ以上の反転閾値を処理するための手段と、処理された1つ以上の反転閾値に基づいて、データに対してビット反転アルゴリズムを実施するための手段と、を含む。
【0073】
上記デバイスの更なる例では、統計を生成するための手段は、データの確率差メトリックを生成するための手段を含むことができ、確率差メトリックの各確率差メトリックは、データにおけるそれぞれの値を有するKビットタプルの確率間の差の表現に対応し、それぞれの値は、対応する(K-1)ビット位置において同じビット値を有し、1つのビット位置において異なるビット値を有するKビットタプルである。更に、1つ以上の反転閾値を処理するための手段は、確率差メトリックのそれぞれの確率差メトリックと信頼閾値との比較に基づいて、1つ以上の反転閾値のそれぞれの反転閾値を増加又は減少させるための手段を含むことができ、それぞれの反転閾値は、Kビットタプルのビットと位置に対応し、それぞれの確率差メトリックは、ビット位置において異なるビット値を有するKビットタプルのそれぞれの値に対応する。
【0074】
上記デバイスの更なる例では、ビット反転アルゴリズムは、低密度パリティ検査(LDPC)を含むことができる。
【0075】
いくつかの例によれば、方法は、復号されるデータの統計に基づいて、1つ以上の反転閾値を処理することと、1つ以上の処理された反転閾値を使用して、データに対してビット反転アルゴリズムを実施することと、を含む。
【0076】
更なる例では、上記の方法は、データの統計を生成することを含むことができる。
【0077】
上記方法の更なる例では、統計には、確率差メトリックを含めることができ、確率差メトリックの各確率差メトリックは、それぞれのビット差分値に対応する2つの確率に基づいており、2つの確率の各々は、データにおける所与のKビットタプルがそれぞれの値を有する確率であり、2つの確率のそれぞれのビット差分値が、対応する(K-1)ビット位置のそれぞれ同じ値を有し、1つのビット位置の異なる値を有するKビットタプルによって表される。更に、いくつかの例では、本方法は、ビット位置における異なるビット値を有するデータのKビットタプルによって表される値に対応する確率差メトリックが、「1」に対応する第1の信頼閾値を超え、ビット位置におけるビット値が「1」であるとき、又は確率差メトリックが、「0」に対応する第2の信頼閾値を超え、ビット値が「0」であるときに、データのKビットタプルのビット位置に対応するそれぞれの反転閾値を増加させることと、確率差メトリックが、第1の信頼閾値を超え、ビット値が「0」であるとき、又は確率差メトリックが、第2の信頼閾値を超え、ビット値が「1」であるときに、ビット位置に対応するそれぞれの反転閾値を減少させることと、を含むことができる。
【0078】
更なる例では、上記の方法は、ビット位置におけるビット値が、ある程度の信頼性を持って正しい可能性が高いことを、統計が示すときに、Kビットタプルのビット位置に対応するそれぞれの反転閾値を増加させることと、ビット値が、ある程度の信頼性を持って間違っている可能性が高いことを、統計が示すときに、それぞれの反転閾値を減少させることと、を含むことができる。
【0079】
更なる例では、上記の方法は、データのビット値が関与している満たされていないパリティ検査方程式の数を決定することと、ビット値が関与している満たされていないパリティ検査方程式の数が、ビット値のビット位置に対応するそれぞれの反転閾値を超えるときに、データのビット値を反転させることと、を含むことができる。
【0080】
上記の方法の更なる例では、ビット反転アルゴリズムは、低密度パリティ検査(LDPC)を含むことができる。
【0081】
いくつかの例によれば、方法は、データを取得することと、データの統計を決定することと、データ統計に基づいて、1つ以上の反転閾値を調整することと、データに対して検査方程式を実施することと、1つ以上の反転閾値及び検査方程式の結果に基づいて、データの1つ以上のビット値を反転させることと、を含む。
【0082】
更なる例では、上記の方法は、ビンを含むヒストグラムを生成することであって、ビンの各ビンが、Kビットによって表されるそれぞれのビン値に対応し、ビンの各ビンが、Kビットタプルがそれぞれのビン値を有するデータにおけるいくつかのインスタンスを有する、生成することと、各ビン値について、データにおける所与のKビットタプルが、ヒストグラムに基づいて、それぞれのビン値を有する確率を決定することと、確率差メトリックを生成することであって、確率差メトリックの各確率差メトリックが、それぞれのビット差分値に対応する確率のうちのそれぞれ2つに基づいており、それぞれのビット差分値は、対応する(K-1)ビット位置のそれぞれ同じ値を有し、1つのビット位置の異なる値を有するKビットタプルによって表され、1つ以上の反転閾値を調整することが、確率差メトリックに基づいている、生成することと、を含むことができる。更に、いくつかの例では、確率差メトリックの各確率差メトリックは、確率のうちのそれぞれ2つの間の差とすることができる。更に、いくつかの例では、確率差メトリックの各確率差メトリックは、確率のうちのそれぞれ2つの比の対数とすることができる。更に、いくつかの例では、本方法は、データのKビットタプルのビット位置について、確率差メトリックの確率差メトリックが、ビット値が「0」であるという、ある程度の信頼性に対応する第1の信頼閾値を超えるかどうかを判定することであって、確率差メトリックが、それぞれのビット位置のビット値が「0」であり、「1」であるデータのKビットタプルのビット値によって表されるビット差分値に対応する確率に基づいている、判定することと、確率差メトリックが、ビット値が「1」であるという、ある程度の信頼性に対応する第2の信頼閾値を超えるかどうかを判定することと、(i)確率差メトリックが、第1の信頼閾値を超え、それぞれのビット位置のビット値が「0」であるとき、又は(ii)確率差メトリックが、第2の信頼閾値を超え、それぞれのビット位置のビット値が「1」であるときに、それぞれのビット位置に対応するそれぞれの反転閾値を増加させることと、(i)確率差メトリックが、第1の信頼閾値を超え、それぞれのビット位置のビット値が「1」であるとき、又は(ii)確率差メトリックが、第2の信頼閾値を超え、それぞれのビット位置のビット値が「0」であるときに、それぞれの反転閾値を減少させることと、を含むことができる。
【0083】
更なる例では、上記の方法は、データのKビットタプルのビット位置について、それぞれのビット位置のビット値が、ある程度の信頼性を持って正しいか又は誤りのある可能性が高いことを、統計が示すかどうかを判定することと、ビット値が、ある程度の信頼性を持って正しいか又は誤りのある可能性が高いことを、統計が示すときに、それぞれのビット位置に対応するそれぞれの反転閾値を調整することと、を含むことができる。
【0084】
更なる例では、上記の方法は、データのKビットタプルのビット位置について、それぞれのビット位置のビット値が「1」である確率が、第1の信頼閾値を超えることを、統計が示すかどうかを判定することと、ビット値が「0」である確率が、第2の信頼閾値を超えることを、統計が示すかどうかを判定することと、(i)ビット値が「1」である確率が、第1の信頼閾値を超え、ビット値が「1」であることを、統計が示すとき、又は(ii)ビット値が「0」である確率が、第2の信頼閾値を超え、ビット値が「0」であることを、統計が示すときに、それぞれのビット位置に対応するそれぞれの反転閾値を増加させることと、(i)ビット値が「1」である確率が、第1の信頼閾値を超え、ビット値が「0」であることを、統計が示すとき、又は(ii)ビット値が「0」である確率が、第2の信頼閾値を超え、ビット値が「1」であることを、統計が示すときに、それぞれの反転閾値を減少させることと、を含むことができる。
【0085】
上記の方法の更なる例では、データの1つ以上のビット値の各々は、それぞれのビット値が関与している満たされていない検査方程式の数が、それぞれのビット値のビット位置に対応するそれぞれの反転閾値を超えるときに、反転せることができる。
【0086】
上記の方法の更なる例では、検査方程式は、低密度パリティ検査(LDPC)の少なくとも一部とすることができる。
【0087】
いくつかの例によれば、方法は、データを取得することと、データの統計を生成することと、データ統計に基づいて、1つ以上の反転閾値を処理することと、処理された1つ以上の反転閾値に基づいて、データに対してビット反転アルゴリズムを実施することと、を含む。
【0088】
上記の方法の更なる例では、統計を生成することは、データの確率差メトリックを生成するための手段を含むことができ、確率差メトリックの各確率差メトリックは、データにおけるそれぞれの値を有するKビットタプルの確率間の差の表現に対応し、それぞれの値は、対応する(K-1)ビット位置において同じビット値を有し、1つのビット位置において異なるビット値を有するKビットタプルである。更に、1つ以上の反転閾値を処理することは、確率差メトリックのそれぞれの確率差メトリックと信頼閾値との比較に基づいて、1つ以上の反転閾値のそれぞれの反転閾値を増加又は減少させることを含むことができ、それぞれの反転閾値は、Kビットタプルのビット位置に対応し、それぞれの確率差メトリックは、ビット位置における異なるビット値を有するKビットタプルのそれぞれの値に対応する。
【0089】
上記の方法の更なる例では、ビット反転アルゴリズムは、低密度パリティ検査(LDPC)を含むことができる。
【0090】
上記は本開示の実施形態を目的とするが、本開示の他の及び更なる実施形態が、その基本的範囲から逸脱することなく考案され得、その範囲は、以下の特許請求の範囲によって決定される。
[例1]デバイスであって、
デコーダであって、
復号されるデータの統計に基づいて、1つ以上の反転閾値を処理することと、
前記1つ以上の処理された反転閾値を使用して、前記データに対してビット反転アルゴリズムを実施することと、を行うように構成されたデコーダを備える、デバイス。
[例2]前記デコーダが、前記データの前記統計を生成するように更に構成されている、上記例1に記載のデバイス。
[例3]前記統計が、確率差メトリックを含み、前記確率差メトリックの各確率差メトリックが、それぞれのビット差分値に対応する2つの確率に基づいており、前記2つの確率の各々が、前記データにおける所与のKビットタプルがそれぞれの値を有する確率であり、前記2つの確率の前記それぞれのビット差分値が、対応する(K-1)ビット位置のそれぞれ同じ値を有し、1つのビット位置の異なる値を有するKビットタプルによって表される、上記例1に記載のデバイス。
[例4]前記デコーダが、
前記ビット位置における異なるビット値を有する前記データの前記Kビットタプルによって表される値に対応する確率差メトリックが、「1」に対応する第1の信頼閾値を超え、前記ビット位置におけるビット値が「1」であるとき、又は前記確率差メトリックが、「0」に対応する第2の信頼閾値を超え、前記ビット値が「0」であるときに、前記データのKビットタプルのビット位置に対応するそれぞれの反転閾値を増加させることと、
前記確率差メトリックが、前記第1の信頼閾値を超え、前記ビット値が「0」であるとき、又は前記確率差メトリックが、前記第2の信頼閾値を超え、前記ビット値が「1」であるときに、前記ビット位置に対応する前記それぞれの反転閾値を減少させることと、を行うように構成されている、上記例3に記載のデバイス。
[例5]前記デコーダが、
前記ビット位置におけるビット値が、ある程度の信頼性を持って正しい可能性が高いことを、前記統計が示すときに、Kビットタプルのビット位置に対応するそれぞれの反転閾値を増加させることと、
前記ビット値が、ある程度の信頼性を持って間違っている可能性が高いことを、前記統計が示すときに、前記それぞれの反転閾値を減少させることと、を行うように構成されている、上記例1に記載のデバイス。
[例6]前記デコーダが、
前記データのビット値が関与している満たされていないパリティ検査方程式の数を決定することと、
前記ビット値が関与している前記満たされていないパリティ検査方程式の数が、前記ビット値のビット位置に対応するそれぞれの反転閾値を超えるときに、前記データの前記ビット値を反転させることと、を行うように構成されている、上記例1に記載のデバイス。
[例7]前記ビット反転アルゴリズムが、低密度パリティ検査(LDPC)を含む、上記例1に記載のデバイス。
[例8]デバイスであって、
デコーダであって、
データを取得することと、
前記データの統計を決定することと、
前記データ統計に基づいて、1つ以上の反転閾値を調整することと、
前記データに対して検査方程式を実施することと、
前記1つ以上の反転閾値及び前記検査方程式の結果に基づいて、前記データの1つ以上のビット値を反転させることと、を行うように構成されたデコーダを備える、デバイス。
[例9]前記デコーダが、
ビンを含むヒストグラムを生成することであって、前記ビンの各ビンが、Kビットによって表されるそれぞれのビン値に対応し、前記ビンの各ビンが、Kビットタプルが前記それぞれのビン値を有する前記データにおけるいくつかのインスタンスを有する、生成することと、
各ビン値について、前記データにおける所与のKビットタプルが、前記ヒストグラムに基づいて、前記それぞれのビン値を有する確率を決定することと、
確率差メトリックを生成することであって、前記確率差メトリックの各確率差メトリックが、それぞれのビット差分値に対応する前記確率のうちのそれぞれ2つに基づいており、前記それぞれのビット差分値は、対応する(K-1)ビット位置のそれぞれ同じ値を有し、1つのビット位置の異なる値を有するKビットタプルによって表され、前記1つ以上の反転閾値を調整することが、前記確率差メトリックに基づいている、生成することと、を行うように構成されている、上記例8に記載のデバイス。
[例10]前記確率差メトリックの各確率差メトリックが、前記確率のうちの前記それぞれ2つの間の差である、上記例9に記載のデバイス。
[例11]前記確率差メトリックの各確率差メトリックが、前記確率のうちの前記それぞれ2つの比の対数である、上記例9に記載のデバイス。
[例12]前記デコーダが、前記データのKビットタプルのビット位置について、
確率差メトリックの前記確率差メトリックが、ビット値が「0」であるという、ある程度の信頼性に対応する第1の信頼閾値を超えるかどうかを判定することであって、前記確率差メトリックが、前記それぞれのビット位置のビット値が「0」であり、「1」である前記データの前記Kビットタプルのビット値によって表されるビット差分値に対応する前記確率に基づいている、判定することと、
前記確率差メトリックが、ビット値が「1」であるという、ある程度の信頼性に対応する第2の信頼閾値を超えるかどうかを判定することと、
(i)前記確率差メトリックが、前記第1の信頼閾値を超え、前記それぞれのビット位置の前記ビット値が「0」であるとき、又は(ii)前記確率差メトリックが、前記第2の信頼閾値を超え、前記それぞれのビット位置の前記ビット値が「1」であるときに、前記それぞれのビット位置に対応する前記それぞれの反転閾値を増加させることと、
(i)前記確率差メトリックが、前記第1の信頼閾値を超え、前記それぞれのビット位置の前記ビット値が「1」であるとき、又は(ii)前記確率差メトリックが、前記第2の信頼閾値を超え、前記それぞれのビット位置の前記ビット値が「0」であるときに、前記それぞれの反転閾値を減少させることと、を行うように構成されている、上記例9に記載のデバイス。
[例13]前記デコーダが、前記データのKビットタプルのビット位置について、
前記それぞれのビット位置のビット値が、ある程度の信頼性を持って正しいか又は誤りのある可能性が高いことを、前記統計が示すかどうかを判定することと、
前記ビット値が、前記ある程度の信頼性を持って正しいか又は誤りのある可能性が高いことを、前記統計が示すときに、前記それぞれのビット位置に対応する前記それぞれの反転閾値を調整することと、を行うように構成されている、上記例8に記載のデバイス。
[例14]前記デコーダが、前記データのKビットタプルのビット位置について、
前記それぞれのビット位置のビット値が「1」である確率が、第1の信頼閾値を超えることを、前記統計が示すかどうかを判定することと、
前記ビット値が「0」である前記確率が、第2の信頼閾値を超えることを、前記統計が示すかどうかを判定することと、
(i)前記ビット値が「1」である前記確率が、前記第1の信頼閾値を超え、前記ビット値が「1」であることを、前記統計が示すとき、又は(ii)前記ビット値が「0」である前記確率が、前記第2の信頼閾値を超え、前記ビット値が「0」であることを、前記統計が示すときに、前記それぞれのビット位置に対応する前記それぞれの反転閾値を増加させることと、
(i)前記ビット値が「1」である前記確率が、前記第1の信頼閾値を超え、前記ビット値が「0」であることを、前記統計が示すとき、又は(ii)前記ビット値が「0」である前記確率が、前記第2の信頼閾値を超え、前記ビット値が「1」であることを、前記統計が示すときに、前記それぞれの反転閾値を減少させることと、を行うように構成されている、上記例8に記載のデバイス。
[例15]前記データの前記1つ以上のビット値の各々が、前記それぞれのビット値が関与している満たされていない検査方程式の数が、前記それぞれのビット値のビット位置に対応するそれぞれの反転閾値を超えるときに、反転される、上記例8に記載のデバイス。
[例16]前記検査方程式が、低密度パリティ検査(LDPC)の少なくとも一部である、上記例8に記載のデバイス。
[例17]デバイスであって、
データを取得するための手段と、
前記データの統計を生成するための手段と、
前記データ統計に基づいて、1つ以上の反転閾値を処理するための手段と、
前記処理された1つ以上の反転閾値に基づいて、前記データに対してビット反転アルゴリズムを実施するための手段と、を備える、デバイス。
[例18]前記統計を生成するための前記手段が、前記データの確率差メトリックを生成するための手段を含み、前記確率差メトリックの各確率差メトリックが、前記データにおけるそれぞれの値を有するKビットタプルの確率間の差の表現に対応し、前記それぞれの値は、対応する(K-1)ビット位置において同じビット値を有し、1つのビット位置において異なるビット値を有するKビットタプルである、上記例17に記載のデバイス。
[例19]前記1つ以上の反転閾値を処理するための前記手段が、前記確率差メトリックのそれぞれの確率差メトリックと信頼閾値との比較に基づいて、前記1つ以上の反転閾値のそれぞれの反転閾値を増加又は減少させるための手段を含み、前記それぞれの反転閾値が、Kビットタプルのビット位置に対応し、前記それぞれの確率差メトリックは、前記ビット位置において異なるビット値を有する前記Kビットタプルのそれぞれの値に対応する、上記例18に記載のデバイス。
[例20]前記ビット反転アルゴリズムが、低密度パリティ検査(LDPC)を含む、上記例17に記載のデバイス。
図1
図2
図3
図4A
図4B
図5
図6