JP5992628B2 - 信頼性データの更新 - Google Patents

信頼性データの更新 Download PDF

Info

Publication number
JP5992628B2
JP5992628B2 JP2015536834A JP2015536834A JP5992628B2 JP 5992628 B2 JP5992628 B2 JP 5992628B2 JP 2015536834 A JP2015536834 A JP 2015536834A JP 2015536834 A JP2015536834 A JP 2015536834A JP 5992628 B2 JP5992628 B2 JP 5992628B2
Authority
JP
Japan
Prior art keywords
data
reliability
hard
nodes
parity
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2015536834A
Other languages
English (en)
Other versions
JP2015536595A (ja
Inventor
テヘラニ,サイード シャリーフィー
テヘラニ,サイード シャリーフィー
ジェイ. リチャードソン,ニコラス
ジェイ. リチャードソン,ニコラス
Original Assignee
マイクロン テクノロジー, インク.
マイクロン テクノロジー, インク.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by マイクロン テクノロジー, インク., マイクロン テクノロジー, インク. filed Critical マイクロン テクノロジー, インク.
Publication of JP2015536595A publication Critical patent/JP2015536595A/ja
Application granted granted Critical
Publication of JP5992628B2 publication Critical patent/JP5992628B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1108Hard decision decoding, e.g. bit flipping, modified or weighted bit flipping
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1131Scheduling of bit node or check node processing
    • H03M13/1137Partly parallel processing, i.e. sub-blocks or sub-groups of nodes being processed in parallel
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1131Scheduling of bit node or check node processing
    • H03M13/114Shuffled, staggered, layered or turbo decoding schedules
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1148Structural properties of the code parity-check or generator matrix
    • H03M13/116Quasi-cyclic LDPC [QC-LDPC] codes, i.e. the parity-check matrix being composed of permutation or circulant sub-matrices
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/65Purpose and implementation aspects
    • H03M13/6577Representation or format of variables, register sizes or word-lengths and quantization

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Probability & Statistics with Applications (AREA)
  • Mathematical Physics (AREA)
  • Quality & Reliability (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Error Detection And Correction (AREA)
  • Detection And Correction Of Errors (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Description

本開示は、全体として、半導体メモリ及び方法に関し、より具体的には、信頼性データの更新に関連した装置及び方法に関する。
通常、メモリデバイスは、コンピュータまたはその他の電子機器において内部半導体集積回路として設けられる。メモリには、揮発性メモリや不揮発性メモリなど、多くの異なる種類がある。揮発性メモリは、そのデータ(例えば、ホストデータやエラー情報など)を維持するのに電力を要し得る。揮発性メモリは、ランダム・アクセス・メモリ(random−access memory:RAM)、ダイナミック・ランダム・アクセス・メモリ(dynamic random access memory:DRAM)、シンクロナス・ダイナミック・ランダム・アクセス・メモリ(synchronous dynamic random access memory:SDRAM)などを含む。不揮発性メモリは、電力が供給されていないときでも記憶データを保持することによってデータを永続化することが可能である。不揮発性メモリは、NANDフラッシュメモリ、NORフラッシュメモリ、リードオンリーメモリ(read only memory:ROM)、エレクトリカリー・イレーザブル・プログラマブルROM(Electrically Erasable Programmable ROM:EEPROM)、イレーザブル・プログラマブルROM(Erasable Programmable ROM:EEPROM)、及び相変化ランダム・アクセス・メモリ(phase change random access memory:PCRAM)、抵抗性ランダム・アクセス・メモリ(resistive random access memory:RRAM)、磁気抵抗性ランダム・アクセス・メモリ(magnetoresistive random access memory:MRAM)などの可変抵抗メモリなどを含み得る。
メモリデバイスは、共に組み合わせることにより、ソリッドステートドライブ(solid state drive:SSD)などのメモリシステムにおける記憶ボリュームを構成することができる。ソリッドステートドライブは、様々な種類の不揮発性メモリ及び揮発性メモリの中でも、不揮発性メモリ(例えば、NANDフラッシュメモリやNORフラッシュメモリ)、及び/または揮発性メモリ(例えば、DRAMやSRAM)を含み得る。
ソリッドステートドライブは、コンピュータの主記憶ボリュームとしてハードディスクドライブからの置き換えに用いることができる。なぜなら、ソリッドステートドライブを用いることにより、ハードドライブに対して性能、大きさ、重量、耐久性、動作温度範囲及び消費電力の点で有利になるためである。例えば、SSDには可動部品が存在せず、これによりシーク時間、レイテンシ及び磁気ディスクドライブに関するその他の電気機械的遅延を回避し得るため、SSDは、磁気ディスクドライブと比較して優れた性能を有し得る。
メモリは、揮発性及び不揮発性のデータ記憶装置として、広範囲な電子用途に利用されている。不揮発性メモリを、ラップトップコンピュータ、ポータブルメモリースティック、デジタルカメラ、携帯電話、MP3プレーヤーなどの携帯型音楽プレーヤー、動画プレーヤー、その他の電子機器などの携帯型電子機器に用いてもよい。メモリデバイスにはアレイが用いられており、これらのアレイにメモリセルを配置することができる。
ところで、データをある場所から別の場所に送ると(例えば、通信したり、受け渡したり、転送したり、伝送したりなどして)、誤りが発生する可能性がある。また、誤りは、データをメモリに記憶している間に経時的に発生する可能性もある。誤りを検出及び/または訂正できるように、データの符号化に利用可能な技術がいくつか存在する。データは常時メモリとやりとりされ、その内部に記憶されるため、メモリに誤り訂正技術を採用することにより、メモリに関連したデータの訂正を試みることが可能である。
1つの種類のエラー訂正は、低密度パリティ検査(low−density parity−check:LDPC)符号に依拠する。符号化されていない(例えば、「ロー」)データは、伝送及び/または記憶するための符号語に符号化することが可能であり、その後、符号語を復号してデータに戻すことができる。強力な誤り訂正が望まれ得るものの、レイテンシ、スループット、及び/または電力制約(携帯型電子機器によって課されたものなど)とのバランスがとられることになる。
本開示のいくつかの実施形態に係る、少なくとも1つのメモリシステムを含む計算機システムの形態をとる装置のブロック図である。 本開示のいくつかの実施形態に係る信頼性データの更新のフロー図である。 本開示のいくつかの実施形態に係る信頼性データの更新のフロー図である。 本開示のいくつかの実施形態に係る信頼性データの更新のフロー図である。 本開示のいくつかの実施形態に係る信頼性データの更新のフロー図である。 本開示のいくつかの実施形態に係る信頼性データの更新のフロー図である。 本開示のいくつかの実施形態に係る信頼性データの更新のフロー図である。 本開示のいくつかの実施形態に係る信頼性データの更新のフロー図である。 本開示のいくつかの実施形態に係る信頼性データの更新のフロー図である。 本開示のいくつかの実施形態に係る信頼性データの更新のフロー図である。 本開示のいくつかの実施形態に係る、誤り訂正回路を含む装置のブロック図である。 本開示のいくつかの実施形態に係る少なくとも1つのアプローチを含む種々のアプローチによる、ブロック誤り率対ロービット誤り率(raw bit error rate:RBER)を示すプロット図である。
本開示は、信頼性データの更新に関連した装置及び方法を含む。いくつかの方法は、変数ノードにて、第1のハードデータ値を有する第1の信頼性データ値(例えば、最大信頼性データ値)、または第2のハードデータ値を有する第2の信頼性データ値(例えば、最小信頼性データ値)を受け取ること、パリティ検査符号に応じて変数ノードに接続された各チェックノードに、第1のハードデータ値または第2のハードデータ値を送ること、及び全てに満たないチェックノードからの入力に基づいて信頼性データを更新すること、を含み得る。例えば、信頼性回路は、第1のハードデータ値に応じた最大信頼性データ値、または第2のハードデータ値に応じた最小信頼性データ値など、特定のハードデータ値に対して特定の信頼性データ値を与えるように構成することができる(例えば、ハードデータモードにおいて)。しかしながら、ソフトモードまたは半ソフトモードでは、信頼性回路は、その他の初期信頼性データ値(例えば、最大値と最小値の間)を与えるように構成することもできる。
本開示における以下の詳細な説明では、本明細書の一部をなす添付図面を参照する。また、これらの図面では、一例として、どのように本開示の1つまたは複数の実施形態を実施し得るかを示している。これらの実施形態は、当業者が本開示の実施形態を実施することができる程度に十分詳細に記載されている。また、その他の実施形態も利用することが可能であって、本開示の範囲から逸脱することなく、工程変更、電気的変更、及び/または構造的変更をなし得ることを理解すべきである。本明細書中において、特に図面中の参照符号について用いられる「C」、「N」、「M」、「P」及び「V」という指示語は、そのように指定された複数の特定の特徴が含まれ得ることを示す。本明細書中用いられる「複数の」特定のものは、そのようなものの1つまたは複数を指し得る(例えば、複数のメモリデバイスは、1つまたは複数のメモリデバイスを指し得る)。
本明細書中の図における番号付与方法においては、最初の桁(単数または複数)が図面番号に対応し、残りの桁が、図面中の要素または構成部分を示す。異なる図間の同様の要素または構成部分は、同様の桁の利用によって指示され得る。例えば、「114」は、図1中の要素「14」を指し得、同様の要素は、図3中の「314」として指示され得る。理解されるように、本明細書中の多様な実施形態に示される要素は、本開示の複数のさらなる実施形態が可能なように、追加、交換及び/または除去することが可能である。加えて、理解されるように、図中に記載される要素の比率及び相対的大きさは、本発明のある実施形態を例示することを意図するものであって、限定的なものとしてとられるべきではない。
図1は、本開示のいくつかの実施形態に係る、少なくとも1つのメモリシステム104を含む計算機システム100の形態をとる装置のブロック図である。本明細書中に用いられるメモリシステム104、制御部108、またはメモリデバイス110は、個別に「装置」としてみなすこともできる。メモリシステム104は、例えば、ソリッドステートドライブ(SSD)とすることができる。このメモリシステム104は、ホストインターフェース106、制御部108(例えば、プロセッサ及び/またはその他の制御回路)、及び複数のメモリデバイス110−1,…,110−M(例えば、NANDフラッシュデバイスなどのソリッドステートメモリデバイス)を含むことができ、これらのメモリデバイスによってメモリシステム104の記憶ボリュームが提供される。別の実施形態では、メモリシステム104を単一のメモリデバイスとしてもよい。
図1に示すように、制御部108は、ホストインターフェース106に接続することができ、さらに、複数のチャネルを介してメモリデバイス110−1,…,110−Mにも接続することができる。また、制御部108は、メモリシステム104とホスト102の間でデータを送るのに用いることができる。インターフェース106は、規格化されたインターフェースの形態をとることができる。例えば、メモリシステム104を計算機システム100内のデータ記憶装置として用いる際、インターフェース106は、多数のコネクタ及びインターフェースの中でも、シリアルATA(serial advanced technology attachment:SATA)、PCIエクスプレス(peripheral component interconnect express:PCIe)、またはユニバーサルシリアルバス(Universal Serial Bus:USB)とすることができる。ただし、一般に、インターフェース106は、メモリシステム104とインターフェース106に準拠した受信部を備えるホスト102との間で、制御信号、アドレス信号、データ信号及びその他の信号を受け渡すためのインターフェースを提供することができる。
ホスト102は、様々な種類のホストの中でも、パーソナルラップトップコンピュータ、デスクトップコンピュータ、デジタルカメラ、携帯電話、メモリーカードリーダーなどのホストシステムとすることができる。ホスト102は、システム用マザーボード及び/またはバックプレーンを含み得る。さらに、ホスト102は、複数のメモリアクセスデバイス(例えば、複数のプロセッサ)も含み得る。メモリシステム104がメモリデバイスである場合などには、ホスト102をメモリコントローラとすることもできる(例えば、ホスト102がオンダイ(on−die)コントローラを備えている)。
制御部108は、複数のメモリデバイス110−1,…,110−M(これらは、いくつかの実施形態では、単一ダイに搭載された複数のメモリアレイである)と通信することが可能であり、多数の動作の中でも、データリード、データライト及び消去動作を制御する。いくつかの実施形態では、制御部108を同じダイに搭載し、あるいは複数のメモリデバイス110のいずれかまたは全てと異なるダイに搭載することが可能である。
特に図示していないが、いくつかの実施形態では、制御部108は、これをメモリデバイス110−1,…,110−Mに接続するチャネルごとに個別のメモリチャネル制御部を含み得る。制御部108は、例えば、ハードウェア及び/またはファームウェア(例えば、1つまたは複数の集積回路)及び/またはソフトウェア形態の複数の構成部品を含むことが可能であり、これにより、いくつかのメモリデバイス110−1,…,110−Mへのアクセスを制御し、かつ/またはホスト102とメモリデバイス110−1,…,110−Mの間のデータ転送を容易にすることができるようになる。
図1に示すように、制御部108は、信頼性回路112及び誤り訂正回路114を含み得る。例えば、信頼性回路112は対数尤度比(log likelihood ratio:LLR)回路とすることができ、かつ/または誤り訂正回路114は、低密度パリティ検査(LDPC)回路とすることができる。信頼性回路112及び誤り訂正回路114はそれぞれ、特定用途向け集積回路(application specific integrated circuit:ASIC)などの個別の構成部品とすることもできる。あるいは、これらの構成要素は、制御部108内の回路で提供することによって機能的に反映させてもよい。このとき、その回路は必ずしも、制御部108のこの回路以外の部分から分かれた個別の物理的形態とは限らない。図1の制御部108内の構成要素として示しているが、信頼性回路112及び誤り訂正回路114は、それぞれ制御部108の外部にあってもよく、あるいは、制御部108の内部に配置された複数の構成要素、及び制御部108の外部に配置された複数の構成要素を有することもできる。
誤り訂正回路114は、2種類の処理ノード、すなわち変数ノード及びチェックノードを含み得る。処理ノードは、符号のパリティ検査符号に応じて接続することができる。本開示のいくつかの実施形態では、変数ノードは、巡回メモリとして実装することができ、チェックノードは、多数の機能の中でも、パリティデータを算出(例えば、計算する)(例えば、シンドローム検査を行う)し、かつ/または信頼性データをインクリメントし、かつ/または信頼性データをデクリメントする回路として実装することができる。このように、チェックノードは、多数の回路の中でも、XOR回路及び/またはアップ/ダウンカウンタを含み得る。いくつかの実施形態では、変数ノードは、アップ/ダウンカウンタ(例えば、飽和アップ/ダウンカウンタ)として実装することができ、チェックノードは、組み合わせ論理回路(例えば、排他的OR(XOR)回路)として実装することができる。誤り訂正回路114への入力は、メモリ110からのハードデータとすることができるが、これは、信頼性回路112から受け取ったハードデータ(例えば、信頼性回路112からの信頼性データに含まれる)である。各変数ノードに対してLLR値を格納することができ、本明細書に記載される復号の各層(または、これらの層のうちのいくつかの複数の層、あるいは、例えば、1反復につき1回)において、このLLR値を更新することができる。
いくつかの実施形態では、誤り訂正回路114への入力に半ソフトデータまたは全ソフトデータを含めることができる(例えば、ハードデータ及び/または半ソフトデータに対するシンドローム検査の不合格に応じて)。ハードデータとは、メモリセルのデータ状態にのみ対応するデータである。例えば、2ビットメモリセルは、4つのデータ状態のうちの1つにプログラムすることができるが、このメモリセルにおいて各データ状態は、データ00、01、10、11のうちの1つに対応する。例えば、データ状態00及びデータ状態01のハードデータは0(最上位ビット(most significant bit:MSB)に相当)であり、一方、データ状態10及びデータ状態11のハードデータは1(MSBに相当)である。それに対し、メモリセルに関連付けられたソフトデータは、状態分布(例えば、Vt分布)内におけるメモリセルの記憶状態(例えば、閾電圧(Vt))の位置を示すことができ、メモリセルがプログラムされた標的状態を表す。さらに、メモリセルに関連付けられたソフトデータは、メモリセルの状態が、メモリセルがプログラムされた標的状態に対応するかどうかの確率を示すこともできる。メモリデバイスは、当該デバイスから読み出されるハードデータに対する特定数のソフトデータビットを決定するように構成することができる。上述した2ビットメモリセルの場合、ソフトデータの一例として、4ビットを用いて分解能を向上させたものが挙げられるが、これは、16個までの異なる状態を表し得る。半ソフトデータは、全てに満たないソフトデータがハードデータと共に送られることを示す。全ソフトデータは、全てのソフトデータがハードデータと共に送られることを示す。制御部108に関するさらなる機能を、本明細書でより詳しく説明する。
複数のメモリデバイス110−1,…,110−Mは、メモリセル(例えば、不揮発性メモリセル)の複数アレイを含み得る。これらのアレイは、例えば、NAND構造をとったフラッシュアレイとすることができる。しかしながら、実施形態は、特定の種類のメモリアレイまたはアレイ構造に限定されることはない。メモリセルは、例えば、複数の物理ページを含む複数のブロックにグループ分けすることができる。さらに、複数のブロックをメモリセルのプレーンに含めることができ、アレイは、複数のプレーンを含み得る。一例として、メモリデバイスを、1ページ当たり8KB(キロバイト)のユーザーデータ、1ブロック当たり128ページのユーザーデータ、1プレーン当たり2048ブロック、及び1個のデバイスにつき16プレーンを格納するように構成してもよい。
動作時には、例えば1ページデータとして、データをメモリ(例えば、システム104のメモリデバイス110−1,…,110−M)に書き込み、またはメモリから読み出し、あるいはその両方を行うことができる。このように、1ページデータを、メモリシステムのデータ転送サイズと呼ぶことができる。データは、セクタ(例えば、ホストセクタ)と呼ばれるデータセグメントの形で、ホスト(例えば、ホスト102)とやりとりすることができる。このように、1セクタデータを、ホストのデータ転送サイズと呼ぶことができる。
図2A〜図2Iは、本開示のいくつかの実施形態に係る信頼性データの更新のフロー図である。図2A〜図2Iには特に示していないが、LDPC方式を実装した誤り訂正回路は、パリティ検査符号に応じて接続された多数の変数ノード及びチェックノードを含み得る。LDPC符号は、一連の符号語が疎なパリティ検査行列Hの零空間にわたっている2進線形ブロック符号の1種である。LDPC符号は、因子グラフと呼ばれる2部グラフで表すことができるが、これは、変数ノード、チェックノード及びこれらの間の接続を図示したものである。LDPC復号処理は、この因子グラフの各エッジ(ノード間の接続)にわたる反復メッセージパッシング処理と呼ぶこともできる。
図2Aは、初期化ステップを示す図であり、このステップでは、複数の変数ノード216−1,216−2,…,216−Vにて、信頼性回路212(例えば、LLR回路)からハードデータを含む信頼性データを受け取る。各変数ノード216−1,216−2,…,216−Vで受け取ったハードデータを含む信頼性データは、メモリデバイスから読み出された符号語から得られるハードデータ値と必ずしも同一ではない(例えば、変数ノード216−1はハードデータ「HD1」を、変数ノード216−2はハードデータ「HD2」を、変数ノード216−Vはハードデータ「HD3」を、それぞれ受け取ることができる)。ハードデータ(例えば、符号語)は、メモリデバイス(例えば、図1に示したメモリデバイス110)から読み出し、信頼性データ(これは、ハードデータを含むものとする)を決定(例えば、割り当てや生成)するための信頼性回路212で受け取ることができる。特に図示していないが、信頼性回路212は、変数ノード216−1,216−2,…,216−Vに半ソフトデータ及び/または全ソフトデータを与えることができる(例えば、ハードデータ及び/または半ソフトデータに対するシンドローム検査の不合格に応じて)。
信頼性データは、信頼性回路212で生成することもできる。変数ノード216−1,216−2,…,216−Vは、第1のハードデータ値を有する第1の信頼性データ値(例えば、最大信頼性データ値)または第2のハードデータ値を有する第2の信頼性データ値(例えば、最小信頼性データ値)のいずれかを受け取ることができる(例えば、ハードデータモードにおいて)。信頼性回路212は、第1のハードデータ値に応じた最大信頼性データ値、または第2のハードデータ値に応じた最小信頼性データ値など、特定のハードデータ値に対して特定の信頼性データ値を与えるように構成することができる(例えば、ハードデータモードにおいて)。しかしながら、ソフトモードまたは半ソフトモードにおいて、信頼性回路212は、その他の初期信頼性データ値(例えば、最大値と最小値の間)を与えるように構成することもできる。
変数ノード216−1,216−2,…,216−Vは、受け取った信頼性データを格納することができる。この信頼性データとしては、例えば、第1のハードデータ値(例えば、第1の2進値)を有するハードデータ入力に応じた第1の信頼性データ値、または第2のハードデータ値(例えば、第2の2進値)を有するハードデータ入力に応じた第2の信頼性データ値がある。いくつかの実施形態では、信頼性データは、LLR値の2の補数表現とすることができる。例えば、2の補数値は、ハードデータ値「0」に対しては0以上(例えば、最大LLR値)とすることができ、メモリから受け取ったハードデータ値「1」に対しては0未満(例えば、最小LLR値)とすることができる。
信頼性回路212は、誤り訂正回路(例えば、図1に示した誤り訂正回路114)への初期入力として、各ハードデータ値に対して最大LLR値または最小LLR値を与えるように構成することができる。3ビット実装(例えば、1ビットのハードデータ、及び全体として信頼性データを表す2ビットカウントからなる)では、ハードデータ値「0」を2の補数のLLR値「+3」に、ハードデータ値「1」を2の補数のLLR値「−4」に、それぞれ対応させることができる。以下の表は、1ビットのハードデータ及び2ビットの信頼性データからなる3ビット値と、信頼性データを表す2の補数値との対応を示す。
Figure 0005992628
表1に示すように、3ビット値の最上位ビット(MSB)は、ハードデータ値を構成することができる。表1には示していないが、2の補数のLLRは、ハードデータに基づいて特定の値(例えば、最大値または最小値)に自動的に設定することができる。従って、2の補数のLLR値「0」、「1」及び「2」は、「3」に初期設定することができ、2の補数のLLR値「−3」、「−2」及び「−1」は、「−4」に初期設定することができる。なお、各実施形態は、最大LLR値及び最小LLR値、または2の補数表現(例えば、符号絶対値を用いることができるようなその他の表現として)を用いた3ビット実装、すなわちハードデータ値とLLR値の各対応に限定されることはない。これらの実施形態は、本開示の理解を容易にするための実装例の例示に用いられる。
図2Bは、特定の変数ノード216−1、及びパリティ検査符号に応じて特定の変数ノード216−1に接続された複数のチェックノード218−1,218−2,218−3,…,218−Cを示す図である。第1の反復中、各変数ノード(例えば、図2Aに示した変数ノード216−1,216−2,…,216−V)は、これらに接続された複数のチェックノードのそれぞれにハードデータを送ることができる(例えば、変数ノード216−1は、チェックノード218−1,218−2,218−3,…,218−Cにハードデータ「HD1」を送ることができる)。変数ノード216−1は、各チェックノード218−1,218−2,218−3,…,218−Cに同一のハードデータを送ることができる。
図2Bには特に示していないが、特定の変数ノード216−1は、これに接続されたチェックノード218−1,218−2,218−3,…,218−Cに、ハードデータを含む格納済みの信頼性データを送ることができる。いくつかの実施形態では、特定の変数ノード216−1は、アップ/ダウンカウンタを含み得る。その場合、特定の変数ノード216−1は、信頼性データを伴わずにハードデータを送ることができる。なぜなら、特定の変数ノード216−1が信頼性データを更新することができるためである。いくつかの実施形態では、特定の変数ノード216−1は、カウンタではなくメモリとすることができる。その場合、特定の変数ノードは、チェックノード218−1,218−2,218−3,…,218−Cが信頼性データを更新できるように、ハードデータを含む信頼性データを送ることができる。
図2Cは、第1の反復中、特定のチェックノード218−1に接続された複数の変数ノード216−1,216−2,…,216−Vのそれぞれから各ハードデータ値を受け取る特定のチェックノード218−1を示す図である。本明細書に記載されているように、各変数ノード216−1,216−2,…,216−Vから受け取る各ハードデータ値は、他のハードデータ値とは別個にすることができる。そのため、図2Cでは、変数ノード216−1からのハードデータを「HD1」として、変数ノード216−2からのハードデータを「HD2」として、変数ノード216−Vからのハードデータを「HD3」として、それぞれ示している。なお、ハードデータに対して異なる指示語を用いることは、各ハードデータ値が異なることを意味するものではない(例えば、これらが全て「1」などの同一値であることが可能である)。いくつかの実施形態では、特定のチェックノード218−1は、これに接続された複数の変数ノード216−1,216−2,…,216−Vのそれぞれから、ハードデータ値を有する各信頼性データ値を受け取ることができる。
チェックノード218−1は、少なくとも部分的には受け取った各ハードデータ値に基づき(例えば、いくつかの実施形態では、これのみに基づき)、パリティデータを算出することができる(例えば、シンドローム検査を行う)。例えば、チェックノード218−1は、各変数ノード216−1,216−2,…,216−Vからのハードデータ値に対してXOR演算を行うことにより、第1のパリティデータを算出することかできる。さらに、チェックノード218−1は、第1のパリティと各変数ノード(例えば、変数ノード216−1)から受け取った各ハードデータとのXOR演算を行うことにより、第2のパリティデータを算出することもできる。第2のパリティデータは、以下でより詳しく説明するように、各変数ノードに送ることができる。いくつかの実施形態では、各チェックノード(例えば、チェックノード218−1,218−2,218−3,…,218−C)は、1クロックサイクルにつき1回、パリティデータを算出することができる。
図2Dは、各変数ノード216−1,216−2,…,216−Vに各パリティデータを送る特定のチェックノード218−1を示す図である。パリティデータは、上述した第2のパリティデータ(例えば、少なくとも部分的には、チェックノード218−1で受け取った全てのハードデータに対するXORの結果と各変数ノードからのハードデータとのXORに基づいて(例えば、いくつかの実施形態では、これのみに基づいて)算出する)とすることができる。従って、図2Dは、パリティデータ「XOR1」を変数ノード216−1に、パリティデータ「XOR2」を変数ノード216−2に、パリティデータ「XOR3」を変数ノード216−Vに、それぞれ送るチェックノード218−1を示す。チェックノード218−1から送られるパリティデータは、図2Dに示すように、第1反復における第1層の一部とすることができる。メッセージパッシングへの階層的アプローチについては、以下でより詳しく説明する。このパリティデータは、更新済みハードデータとして、変数ノード216−1,216−2,…,216−Vから送られたハードデータを効率的に置き換えることができる。いくつかの実施形態では、特定の変数ノード218−1は、各変数ノード216−1,216−2,…,216−Vに、各パリティデータと共に各信頼性データを送ることができる。各信頼性データは、各変数ノード216−1,216−2,…,216−Vから送られた信頼性データと同一とすることができ、あるいは、信頼性データは、送信前にチェックノード218−1で更新することができる。
各変数ノード216−1,216−2,…,216−Vは、少なくとも部分的には、それぞれチェックノード218−1から受け取ったパリティデータ及び/またはチェックノード218−1から受け取った更新済みの信頼性データに基づき(例えば、いくつかの実施形態では、これのみに基づき)、各変数ノードにそれぞれ格納された信頼性データを更新することができる。いくつかの実施形態では、変数ノード216−1,216−2,…,216−Vは、少なくとも部分的には、特定のチェックノード218−1から受け取ったパリティデータに基づいて(あるいは、いくつかの実施形態では、これのみに基づいて)信頼性データ値をインクリメントまたはデクリメントすることにより、それぞれの各信頼性データを更新することができる(例えば、当該反復における過去、現在または将来の層において、あるいはメッセージパッシングアルゴリズムにおける異なる反復において、他のいずれかのチェックノードから受け取ったパリティデータに関係なく)。変数ノード216−1,216−2,…,216−Vは、1クロックサイクルにつき1回、格納済みの信頼性データをインクリメントまたはデクリメントすることができる。変数ノード216−1,216−2,…,216−Vに格納された最大信頼性データ値及び/または最小信頼性データ値を含むこれらの実施形態に関しては、信頼性データ値は、最大値及び最小値によって規定される範囲内で、インクリメント及び/またはデクリメントすることができる。これにより、例えば、信頼性データ値が既に最大である場合には、受け取ったパリティデータ値によって信頼性データ値をインクリメントする必要があっても、その信頼性データ値はインクリメントされないことになる。いくつかの実施形態では、変数ノード216−1,216−2,…,216−Vは、特定のチェックノード218−1から受け取った更新済みの信頼性データを格納することにより、それぞれの各信頼性データを更新することができる。
図2E〜図2Hは、特定の変数ノード216−1に接続されたこれらのチェックノード218−1,218−2,218−3,…,218−Cからのメッセージパッシングのある反復における4つの層を示す図である。いくつかの実施形態では、1つの層は、少なくとも部分的には、特定の変数ノード216−1に接続されたチェックノード218−1,218−2,218−3,…,218−Cの1つからのパリティデータに基づき(または、いくつかの実施形態では、これのみに基づき)、変数ノード216−1に格納済みの信頼性データ値をインクリメントまたはデクリメントすることを含み得る。いくつかの実施形態では、1つの層は、少なくとも部分的には、特定の変数ノード216−1に接続されたチェックノード218−1,218−2,218−3,…,218−Cの1つからの更新済みの信頼性データに基づき(または、いくつかの実施形態では、これのみに基づき)、変数ノード216−1に格納済みの信頼性データ値を更新することを含み得る。
図2Eは、第1反復の第1層でパリティデータ(例えば、「XOR−A」)を変数ノード216−1に送る、変数ノード216−1に接続されたチェックノード218−1,218−2,218−3,…,218−Cのうちの第1チェックノード218−1を示す図である。第1チェックノード218−1から送られるパリティデータは、少なくとも部分的には、変数ノード216−1及びその他の変数ノード(図示せず)から送られたハードデータに基づく(例えば、いくつかの実施形態では、これのみに基づく)ことができる。第1層では、変数ノード216−1は、少なくとも部分的には、第1チェックノード218−1から受け取ったパリティデータに基づき(例えば、いくつかの実施形態では、これのみに基づき)、この変数ノードに格納された信頼性データを更新することができる。パリティデータを受け取るため、パリティデータに応じて信頼性データを更新することは、パリティデータの更新を含み得る(例えば、パリティデータを受け取ることにより、信頼性データが更新されることになる)。少なくとも部分的にはパリティデータに基づいて(例えば、いくつかの実施形態では、これのみに基づいて)信頼性データを更新することは、受け取ったパリティデータの値に応じて信頼性データ値をインクリメントまたはデクリメントすることを含み得る。例えば、パリティデータ「XOR−A」が第1の値(例えば、2進の「1」)であった場合、変数ノード216−1は、信頼性データをインクリメントすることができ、パリティデータ「XOR−A」が第2の値(例えば、2進の「0」)であった場合、変数ノード216−1は、信頼性データをデクリメントすることができる。信頼性データのインクリメント及び/またはデクリメントは、格納済みの信頼性データ値のインクリメントまたはデクリメントがその所定範囲を超えない限り、信頼性データを所定量だけインクリメント及び/またはデクリメントすることを含み得る。図2Eには特に示していないが、チェックノード218−1は、特定の変数ノード216−1に、パリティデータと共に更新済みの信頼性データを送ることができる。第1層では、変数ノード216−1は、少なくとも部分的には、第1チェックノード218−1から受け取った更新済みの信頼性データに基づき(例えば、いくつかの実施形態では、これのみに基づき)、この変数ノードに格納された信頼性データを更新することができる。
図2Fは、第1反復の第2層でパリティデータ(例えば、「XOR−B」)を変数ノード216−1に送る、変数ノード216−1に接続されたチェックノード218−1,218−2,218−3,…,218−Cのうちの第2チェックノード218−2を示す図である。第2層では、変数ノード216−1は、少なくとも部分的には、第2チェックノード218−2から受け取ったパリティデータに基づき(例えば、いくつかの実施形態では、これのみに基づき)、この変数ノードに格納された信頼性データを更新することができる。図2Fには特に示していないが、チェックノード218−2は、特定の変数ノード216−1に、パリティデータと共に更新済みの信頼性データを送ることができる。第2層では、変数ノード216−1は、少なくとも部分的には、第1チェックノード218−2から受け取った更新済みの信頼性データに基づき(例えば、いくつかの実施形態では、これのみに基づき)、この変数ノードに格納された信頼性データを更新することができる。
図2Gは、第1反復の第3層でパリティデータ(例えば、「XOR−C」)を変数ノード216−1に送る、変数ノード216−1に接続されたチェックノード218−1,218−2,218−3,…,218−Cのうちの第3チェックノード218−3を示す図である。第3層では、変数ノード216−1は、少なくとも部分的には、第3チェックノード218−3から受け取ったパリティデータに基づき(例えば、いくつかの実施形態では、これのみに基づき)、この変数ノードに格納された信頼性データを更新することができる。図2Gには特に示していないが、チェックノード218−3は、特定の変数ノード216−1に、パリティデータと共に更新済みの信頼性データを送ることができる。第3層では、変数ノード216−1は、少なくとも部分的には、第1チェックノード218−3から受け取った更新済みの信頼性データに基づき(例えば、いくつかの実施形態では、これのみに基づき)、この変数ノードに格納された信頼性データを更新することができる。
図2Hは、第1反復の第4層でパリティデータ(例えば、「XOR−D」)を変数ノード216−1に送る、変数ノード216−1に接続されたチェックノード218−1,218−2,218−3,…,218−Cのうちの第4チェックノード218−Cを示す図である。第4層では、変数ノード216−1は、少なくとも部分的には、第4チェックノード218−Cから受け取ったパリティデータに基づき(例えば、いくつかの実施形態では、これのみに基づき)、この変数ノードに格納された信頼性データを更新することができる。図2Hには特に示していないが、チェックノード218−Cは、特定の変数ノード216−1に、パリティデータと共に更新済みの信頼性データを送ることができる。第4層では、変数ノード216−1は、少なくとも部分的には、第1チェックノード218−Cから受け取った更新済みの信頼性データに基づき(例えば、いくつかの実施形態では、これのみに基づき)、この変数ノードに格納された信頼性データを更新することができる。
各層は、全てに満たないチェックノード218−1,218−2,218−3,…,218−C(例えば、チェックノード218−Cのそれぞれ1つ)からの入力を受け取ること、及び少なくとも部分的にはチェックノード218−1,218−2,218−3,…,218−Cのそれぞれ1つからの入力(例えば、パリティデータ及び/または更新済みの信頼性データ)に基づき(例えば、いくつかの実施形態では、これのみに基づき)、信頼性データを更新することを含み得る。特に図示していないが、いくつかの実施形態は、層数のうちのL数ごとに信頼性データを更新すること(例えば、ここで、Lは1層から全層までの値をとり、このとき信頼性データは、各層ごとに、1層おきに、2層おきなどに、1反復につき1回まで更新することができる)、及び複数のチェックノードのそれぞれ1つからの入力に基づいて信頼性データを更新することを含み得る。いくつかの実施形態では、変数ノード216−1が複数のチェックノード218−1,218−2,218−3,…,218−Cのそれぞれから入力を受け取るまで、階層的に更新を進めることができる。接続された複数のチェックノード218−1,218−2,218−3,…,218−Cの全てについて、変数ノード216−1に格納された信頼性データ値を階層的にインクリメントまたはデクリメントすることを1反復において完了し、その後、変数ノード216−1から各チェックノード218−1,218−2,218−3,…,218−Cのそれぞれに、次の(更新済みの)ハードデータ値を送ることができる。
図2Iは、チェックノード218−1,218−2,218−3,…,218−Cのそれぞれに、更新済みの信頼性データに対応する更新済みのハードデータを送る変数ノード216−1を示す図である。例えば、変数ノード216−1は、更新済みのハードデータ「HD4」をチェックノード218−1,218−2,218−3,…,218−Cに送ることができる。更新済みのハードデータ「HD4」は、変数ノード216−1に関連付けられて格納された更新済みの信頼性データに対応するハードデータを表しているため、階層的更新の後、変数ノード216−1に接続された各チェックノード218−1,218−2,218−3,…,218−Cに、同一のハードデータ値「HD4」を送ることができる。例えば、更新済みのハードデータは、更新済みの信頼性データ(例えば、ここで更新済みの信頼性データとは、LLRである)のMSBとすることができる。いくつかの実施形態では、変数ノード216−1は、更新済みのハードデータを含む更新済みの信頼性データを送ることができる。更新済みのハードデータを変数ノード216−1からチェックノード218−1,218−2,218−3,…,218−Cに送ることにより、第2反復の開始を表すことができる。特定数の反復が行われるまで、かつ/またはチェックノード218−1,218−2,218−3,…,218−Cによって行われるシンドローム検査が正しくなるまで、更新済みのハードデータを階層的に更新して送ることを繰り返し反復することができる。
図3は、本開示のいくつかの実施形態に係る、誤り訂正回路314を含む装置のブロック図である。メモリデバイス(例えば、図1に示したメモリデバイス110−1)から信頼性回路(例えば、図1に示した信頼性回路112)を経て、データ入力320を与えることができる。このデータは、入力制御/バッファ/整列器322に入力することができる。特に図示していないが、入力制御/バッファ/整列器322は、制御回路から制御情報及びステータス情報を受け取って、入力320と誤り訂正回路314の間のタイミング及び信号伝達を整えることができる。入力制御/バッファ/整列器322は、ハードデータ(例えば、複数の符号語)を含む信頼性データを受け取ることができ、同じもの(例えば、1つのLLRにつき1ビットのハードデータと2ビットの信頼性データの3ビットに拡張され、巡回整列されたハードデータ入力)を複数の巡回メモリ328−1,…,328−Nに与えることができる。いくつかの実施形態では、入力制御/バッファ/整列器322は、半ソフトデータまたは全ソフトデータ(例えば、シンドローム検査の不合格に応じて)を受け取ることができる。
巡回メモリ328−1,…,328−Nの数(N)は、H行列(パリティ検査符号を表す)の行における巡回の総数に等しくすることができる。巡回メモリ328−1は、1つのベクトルによって特定される巡回行列を格納することができる。巡回行列は、その列のうちの1つで表すことが可能であり、この行列における残りの列は、列番号と等しいオフセットを用いて上記ベクトルを周期的に並べ換えたものである。例えば、H行列は、パリティ検査符号を表す20,480列と2,048行を含み得る。各変数ノードは、H行列においてそれ自体の列を有することができる。各行は、パリティ検査制約を表すことができ、各列は、受け取った符号語の1ビットを表すことができる。H行列は、巡回行列(例えば、512×512行列)と呼ばれる、より小さな行列に分解することができる。復号の各層は、巡回行列の単一行で構成することができ、巡回行列への各入力をパリティ検査とすることができる。この構成において、各層は、全てに満たないチェックノード(例えば、1つのみ)からの入力を処理する。巡回メモリ328−1,…,328−Nは、制御情報及び/またはステータス情報を、それらの間でやりとりし、または制御回路とやりとりし、あるいはその両方を行うことができる。
巡回メモリ328−1,…,328−Nは、パリティ検査符号に応じて、複数のチェックノード処理装置330−0,…,330−1に接続することができる。巡回メモリ328−1,…,328−Nは、チェックノード処理装置330−0,…,330−1に、ハードデータ及び信頼性データを送ることができる。チェックノード処理装置は、ハードデータを含む信頼性データを受け取り、パリティデータを算出し(ハードデータを更新)、少なくとも部分的にはそのパリティデータに基づいて(例えば、いくつかの実施形態では、これのみに基づいて)信頼性データを更新し、更新済みのハードデータを含む更新済みの信頼性データを巡回メモリ328−1,…,328−Nに出力する。なお、図3には2つのチェックノード処理装置330−0,…,330−1のみを示しているが、実施形態は、このように限定されるものではなく、より多くのまたは少ないチェックノード処理装置を誤り訂正回路314に含めることもできる。チェックノード処理装置330−0,…,330−1は、制御情報及び/またはステータス情報を、それらの間でやりとりし、または制御回路とやりとりし、あるいはその両方を行うことができる。
巡回メモリ328−1,…,328−Nは、更新済みのハードデータを出力制御/バッファ/整列器324に出力することができる。いくつかの実施形態では、巡回メモリ328−1,…,328−Nは、信頼性データを出力制御/バッファ/整列器324に出力しない。特に図示していないが、出力制御/バッファ/整列器324は、制御情報及び/またはステータス情報を、制御回路及び/または巡回メモリ328−1,…,328−Nとやりとりすることができる。出力制御/バッファ/整列器324は、ハードデータを出力326(例えば、ホストへの出力)に出力することができる。
図4は、本開示のいくつかの実施形態に係る少なくとも1つのアプローチを含む種々のアプローチによる、ブロック誤り率対ロービット誤り率(RBER)を示すプロット図である。このプロットは、いくつかの従来のアプローチによる4ビットMin−Sumアルゴリズムを誤り訂正に用いたブロック誤り率(例えば、第1曲線432)と、ハードデータ入力と共に本開示のいくつかの実施形態による3ビットアルゴリズムを用いたブロック誤り率(例えば、第2曲線434)とを比較したものである。第1曲線432は、4ビットの信頼性データに対するブロック誤り率であり、この信頼性データは、Min−Sum誤り訂正アルゴリズムへの入力となる1ビットのハードデータを含む。第2曲線434は、3ビットの信頼性データに対するブロック誤り率であり、この信頼性データは、本開示のいくつかの実施形態に係る誤り訂正アルゴリズムへの入力となる1ビットのハードデータを含む。Min−Sumアプローチは、9.0x10−6のブロック誤り率を有し得るが、本開示のいくつかの実施形態に係る誤り訂正アルゴリズムは、同じRBERに対して2.0x10−7のブロック誤り率を有することができる。図4には特に示していないが、半ソフトデータまたは全ソフトデータを用いることにより、誤り訂正の性能をさらに向上させることもできる。
本開示のいくつかの実施形態において、4ビットMin−Sumアプローチに対するいくつかの利点には、誤り訂正回路の複雑度を低下させることが含まれる。例えば、変数ノードは、関連付けられたメモリを伴うアップ/ダウンカウンタとして(または、チェックノードがアップ/ダウンカウント機能を提供するときには単にメモリとして)実装することができ、チェックノードは、組み合わせ論理回路(例えば、XORゲート及び/またはアップ/ダウンカウンタ)として実装することができる。さらに、誤り訂正はビットシリアル型の復号アプローチとして実装することもできる。3ビットデータ(ハードデータ及び信頼性データ)を用いることにより、4ビットデータを用いたときよりメモリ使用率を25%も少なくすることができる。本開示に係る誤り訂正回路は、変数ノードとチェックノードの間でメモリ資源(例えば、変数ノード及び/またはチェックノードの出力ビットを格納するための)を用いずに実装することができる。
結論
本開示は、信頼性データの更新に関連した装置及び方法を含む。いくつかの方法は、変数ノードにて、第1のハードデータ値を有する第1の信頼性データ値または第2のハードデータ値を有する第2の信頼性データ値のいずれかを受け取ること、パリティ検査符号に応じて変数ノードに接続された各チェックノードに、第1のハードデータ値または第2のハードデータ値を送ること、及び全てに満たないチェックノードからの入力に基づいて信頼性データを更新することを含み得る。
本明細書中、特定の実施形態を例示及び記載してきたが、当業者であれば、同じ結果を達成するように計算された配置構成を図示の特定の実施形態において代替することが可能であることを理解するであろう。本開示は、本開示の1つまたは複数の実施形態の適合例または変更例を取り上げることを意図する。上記の記載は例示目的のためのものであり、限定的なものではないことを理解すべきである。当業者であれば、上記の記載を鑑みれば、上記実施形態と、本明細書中に具体的に記載されていない他の実施形態との組み合わせを想起するであろう。本開示の1つまたは複数の実施形態の範囲は、上記の構造及び方法を用いる他の用途を含む。従って、本開示の1つまたは複数の実施形態の範囲は、添付の特許請求の範囲と共に、かかる特許請求の範囲が権利を与えられる均等物の全体的範囲に基づいて決定されるべきである。
上記の詳細な説明において、本開示を簡潔に示すために、いくつかの特徴を単一の実施形態においてグループ分けしている。本開示のこの方法は、本開示の開示された実施形態が、各請求項中に明記されている特徴よりも多くの特徴を用いる必要があるという意図を反映したものとして解釈されるべきではない。むしろ、以下の特許請求の範囲に反映されるように、本発明主題は、単一の開示実施形態の全特徴に満たない特徴内に存在する。従って、以下の特許請求の範囲は、この詳細な説明に組み込まれ、各請求項は、別個の実施形態としてそれ自体独立している。

Claims (15)

  1. 複数の変数ノードのそれぞれにて、第1のハードデータ値を有する第1の信頼性データまたは第2のハードデータ値を有する第2の信頼性データのいずれかを受け取ること、
    前記複数の変数ノードのそれぞれから、パリティ検査符号に応じて前記複数の変数ノードのそれぞれに接続された複数のチェックノードのそれぞれに前記第1のハードデータ値または前記第2のハードデータ値を送ること、
    前記複数のチェックノードのそれぞれにて、前記複数の変数ノードから送られた複数の前記第1のハードデータ値または複数の前記第2のハードデータ値に対する第1のパリティデータを算出すると共に、前記第1のパリティデータと前記複数の変数ノードの中の対応する変数ノードからの前記第1のハードデータ値または前記第2のハードデータ値とに対する第2のパリティデータを算出して複数の第2のパリティデータを発生すること、
    前記複数のチェックノードのそれぞれから、前記複数の第2のパリティデータを前記複数の変数ノードにそれぞれ送ること、及び
    前記複数の変数ノードのそれぞれにおける前記第1の信頼性データまたは前記第2の信頼性データ前記複数の第2のパリティデータに基づき更新すること、を含む方法。
  2. 前記第1の信頼性データまたは前記第2の信頼性データを更新することは、前記複数の変数ノードのそれぞれにて前記第1の信頼性データまたは前記第2の信頼性データを更新することを含む、請求項1に記載の方法。
  3. 前記第1の信頼性データまたは前記第2の信頼性データを更新することは、前記複数のチェックノードのそれぞれにて前記第1の信頼性データまたは前記第2の信頼性データを更新し、その更新した第1の信頼性データまたは第2の信頼性データを前記複数の変数ノードの対応する変数ノードに送ることを含む、請求項1に記載の方法。
  4. 前記第1の信頼性データまたは前記第2の信頼性データを更新することは、前記複数の変数ノードのそれぞれによる前記第1の信頼性データまたは前記第2の信頼性データの階層的更新を含み、各層は、
    前記複数のチェックノードのつから前記第2のパリティデータを受け取ること、
    前記複数のチェックノードのつからの前記第2のパリティデータの入力に基づいて前記第1の信頼性データまたは前記第2の信頼性データを更新することを含み、
    前記複数の変数ノードのそれぞれが前記複数のチェックノードのそれぞれから前記第2のパリティデータを受け取るまで階層的更新が進む、請求項1に記載の方法。
  5. 前記方法は、前記階層的更新の後、前記複数のチェックノードのそれぞれに前記更新済みの第1の信頼性データまたは第2の信頼性データに対応する更新済みの第1のハードデータ値または第2のハードデータ値を送ることを含む、請求項4に記載の方法。
  6. 前記方法は、特定数の反復が行われるまで、前記階層的更新を繰り返して更新済みの第1のハードデータ値または第2のハードデータ値を送ることを含む、請求項5に記載の方法。
  7. 前記方法は、前記複数のチェックノードによって行われるシンドローム検査が正しくなるまで、前記階層的更新を繰り返して更新済みの第1のハードデータ値または第2のハードデータ値を送ることを含む、請求項5に記載の方法。
  8. 前記第1のパリティデータおよび前記第2のパリティデータのそれぞれの算出に、XOR演算を含む、請求項1乃至請求項7のいずれか一項に記載の方法。
  9. 複数の変数ノードと、
    複数のチェックノードであって前記複数の変数ノードにパリティ検査符号に応じて接続された複数のチェックノードと、を備える装置であって、
    前記複数の変数ノードのそれぞれは、第1のハードデータ値を有する第1の信頼性データまたは第2のハードデータ値を有する第2の信頼性データのいずれかを受け取り、
    前記複数の変数ノードのそれぞれから、前記複数のチェックノードのそれぞれに前記第1のハードデータ値または前記第2のハードデータ値を送
    前記複数のチェックノードのそれぞれは、前記複数の変数ノードから送られた複数の前記第1のハードデータ値または複数の前記第2のハードデータ値に対する第1のパリティデータを算出すると共に、前記第1のパリティデータと前記複数の変数ノードの中の対応する変数ノードからの前記第1のハードデータ値または前記第2のハードデータ値とに対する第2のパリティデータを算出して複数の第2のパリティデータを発生し、
    前記複数のチェックノードのそれぞれから、前記複数の第2のパリティデータを前記複数の変数ノードにそれぞれ送り、
    前記複数の変数ノードのそれぞれにおける前記第1の信頼性データまたは前記第2の信頼性データ前記複数の第2のパリティデータに基づき更新するように
    構成されている装置。
  10. 前記第1の信頼性データまたは前記第2の信頼性データを更新するように構成された前記装置は、前記複数の変数ノードのそれぞれにて、または前記複数のチェックノードのそれぞれにて、前記第1の信頼性データまたは前記第2の信頼性データを更新するように構成された、請求項9に記載の装置。
  11. 前記装置は、前記複数の変数ノードのそれぞれ前記第1の信頼性データまたは前記第2の信頼性データの階層的更新を行うように構成され、各層は、
    前記複数のチェックノードのつから前記第2のパリティデータを受け取ること、
    前記複数のチェックノードのつからの前記第2のパリティデータの入力に基づいて前記第1の信頼性データまたは前記第2の信頼性データを更新することを含み、
    前記複数の変数ノードのそれぞれが前記複数のチェックノードのそれぞれから前記第2のパリティデータを受け取るまで階層的更新が進む、請求項9に記載の装置。
  12. 前記変数ノードは、前記階層的更新の後、前記複数のチェックノードのそれぞれに前記更新済みの第1の信頼性データまたは第2の信頼性データに対応する更新済みの第1のハードデータ値または第2のハードデータ値を送るように構成されている、請求項11に記載の装置。
  13. 前記装置は、特定数の反復が行われるまで、前記階層的更新を繰り返して更新済みの第1のハードデータ値または第2のハードデータ値を送るように構成されている、請求項12に記載の装置。
  14. 前記装置は、前記複数のチェックノードによって行われるシンドローム検査が正しくなるまで、前記階層的更新を繰り返して更新済みの第1のハードデータ値または第2のハードデータ値を送るように構成されている、請求項12に記載の装置。
  15. 前記第1のパリティデータおよび前記第2のパリティデータのそれぞれの算出に、XOR演算を含むように構成されている、請求項9乃至請求項14のいずれか一項に記載の装置。
JP2015536834A 2012-10-11 2013-10-08 信頼性データの更新 Active JP5992628B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/649,822 2012-10-11
US13/649,822 US9612903B2 (en) 2012-10-11 2012-10-11 Updating reliability data with a variable node and check nodes
PCT/US2013/063843 WO2014058855A1 (en) 2012-10-11 2013-10-08 Updating reliability data

Publications (2)

Publication Number Publication Date
JP2015536595A JP2015536595A (ja) 2015-12-21
JP5992628B2 true JP5992628B2 (ja) 2016-09-14

Family

ID=50476582

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015536834A Active JP5992628B2 (ja) 2012-10-11 2013-10-08 信頼性データの更新

Country Status (7)

Country Link
US (3) US9612903B2 (ja)
EP (1) EP2907033B1 (ja)
JP (1) JP5992628B2 (ja)
KR (1) KR101753498B1 (ja)
CN (1) CN104769556B (ja)
TW (1) TWI517173B (ja)
WO (1) WO2014058855A1 (ja)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9385753B2 (en) * 2013-02-14 2016-07-05 Marvell World Trade Ltd. Systems and methods for bit flipping decoding with reliability inputs
US9369152B2 (en) 2013-03-07 2016-06-14 Marvell World Trade Ltd. Systems and methods for decoding with late reliability information
US9379738B2 (en) * 2013-03-13 2016-06-28 Marvell World Trade Ltd. Systems and methods for decoding using partial reliability information
US9407290B2 (en) * 2013-03-15 2016-08-02 Sandisk Technologies Llc Error-correction decoding with conditional limiting of check-node messages
JP6451955B2 (ja) 2013-03-21 2019-01-16 マーベル ワールド トレード リミテッド 多段ソフト入力デコードのためのシステムおよび方法
US9329935B2 (en) 2014-05-19 2016-05-03 Seagate Technology Llc Method to dynamically update LLRs in an SSD drive and/or controller
CN104504496A (zh) * 2014-12-02 2015-04-08 成都万象天龙科技有限公司 一种基于进销存系统的控制系统与控制方法
CN104537455A (zh) * 2014-12-02 2015-04-22 成都万象天龙科技有限公司 一种基于进销存系统的带加密功能的控制系统与控制方法
CN104537456A (zh) * 2014-12-02 2015-04-22 成都万象天龙科技有限公司 一种基于进销存系统的带加密管控功能的控制系统与控制方法
US10164656B2 (en) * 2016-03-30 2018-12-25 Silicon Motion Inc. Bit flipping algorithm for providing soft information during hard decision hard decoding
US9904594B2 (en) * 2016-04-15 2018-02-27 Micron Technology, Inc. Monitoring error correction operations performed in memory
EP3293885B1 (en) * 2016-09-09 2024-01-03 Université de Bretagne Sud Check node processing for syndrome computation in the decoding of non-binary codes, in particular non-binary ldpc codes
US10879928B2 (en) 2016-10-24 2020-12-29 Marvell Asia Pte, Ltd. Scaling of log-likelihood ratios (LLR) based on long training field (LTF)
EP3316486B1 (en) * 2016-10-25 2023-06-14 Université de Bretagne Sud Elementary check node-based syndrome decoding with input pre-sorting
US10289348B2 (en) * 2016-12-30 2019-05-14 Western Digital Technologies, Inc. Tapered variable node memory
US11206042B2 (en) 2017-03-09 2021-12-21 Lg Electronics Inc. Layered decoding method for LDPC code and device therefor
KR102289883B1 (ko) * 2017-05-10 2021-08-17 에스케이하이닉스 주식회사 컨트롤러 및 컨트롤러의 동작방법
CN109428752B (zh) * 2017-08-29 2021-11-02 中兴通讯股份有限公司 校验方法及装置
US10269422B2 (en) * 2017-09-08 2019-04-23 Cnex Labs, Inc. Storage system with data reliability mechanism and method of operation thereof
US11750223B2 (en) * 2018-03-28 2023-09-05 Maxlinear, Inc. Low-power block code forward error correction decoder
TWI682636B (zh) * 2018-06-13 2020-01-11 財團法人資訊工業策進會 通訊系統之低密度奇偶檢查碼的解碼方法及應用其之通訊裝置
US11309915B1 (en) * 2019-07-11 2022-04-19 Arrowhead Center, Inc. Efficient implementation of a threshold modified min-sum algorithm for low-density parity-check decoders
US10778248B1 (en) 2020-01-30 2020-09-15 TenaFe, Inc. Low-density parity-check decoding with de-saturation
US11567828B2 (en) 2020-07-09 2023-01-31 SK Hynix Inc. Asymmetric LLR generation using assist-read

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6938196B2 (en) 2001-06-15 2005-08-30 Flarion Technologies, Inc. Node processors for use in parity check decoders
US7178080B2 (en) * 2002-08-15 2007-02-13 Texas Instruments Incorporated Hardware-efficient low density parity check code for digital communications
US7120856B2 (en) 2002-09-25 2006-10-10 Leanics Corporation LDPC code and encoder/decoder regarding same
JP4296949B2 (ja) * 2004-02-03 2009-07-15 ソニー株式会社 復号装置及び方法、並びに情報処理装置及び方法
US7730377B2 (en) 2004-07-22 2010-06-01 Texas Instruments Incorporated Layered decoding of low density parity check (LDPC) codes
KR20060032464A (ko) * 2004-10-12 2006-04-17 삼성전자주식회사 효율적인 저밀도 패리티 검사 코드 복호 방법 및 장치
KR100703271B1 (ko) 2004-11-23 2007-04-03 삼성전자주식회사 통합노드 프로세싱을 이용한 저밀도 패리티 검사 코드복호 방법 및 장치
CN100583651C (zh) 2004-12-22 2010-01-20 Lg电子株式会社 用于使用信道代码解码的装置和方法
US7441178B2 (en) 2005-02-24 2008-10-21 Keyeye Communications Low complexity decoding of low density parity check codes
US20070089016A1 (en) 2005-10-18 2007-04-19 Nokia Corporation Block serial pipelined layered decoding architecture for structured low-density parity-check (LDPC) codes
US20110036759A1 (en) 2005-12-06 2011-02-17 Rotex, Inc. Screening machine and associated screen panel
JP4807063B2 (ja) 2005-12-20 2011-11-02 ソニー株式会社 復号装置、制御方法、およびプログラム
KR100899738B1 (ko) 2006-02-02 2009-05-27 삼성전자주식회사 노드 메모리 기반의 ldpc 복호기 및 복호방법
WO2008141453A1 (en) * 2007-05-23 2008-11-27 The Royal Institution For The Advancement Of Learning/Mcgill University Method for implementing stochastic equality nodes
US8261170B2 (en) 2007-06-19 2012-09-04 Mitsubishi Electric Research Laboratories, Inc. Multi-stage decoder for error-correcting codes
CN101350625B (zh) * 2007-07-18 2011-08-31 北京泰美世纪科技有限公司 一种高效通用的qc-ldpc码译码器及其译码方法
KR100939334B1 (ko) 2007-12-12 2010-01-29 한국전자통신연구원 기본 행렬을 이용한 저밀도 패리티 검사 부호의 복호화장치 및 그 방법
KR101065480B1 (ko) * 2007-12-19 2011-09-19 한국전자통신연구원 저밀도 패리티 검사 부호의 고속 검사노드 갱신 장치 및 그방법
KR101405962B1 (ko) 2008-02-28 2014-06-12 엘지전자 주식회사 Ldpc 코드를 이용한 복호화 방법
US20100037121A1 (en) 2008-08-05 2010-02-11 The Hong Kong University Of Science And Technology Low power layered decoding for low density parity check decoders
US20100074381A1 (en) 2008-09-25 2010-03-25 The Royal Institution For The Advancement Of Learning/ Mcgill University Methods and systems for improving iterative signal processing
US8219873B1 (en) 2008-10-20 2012-07-10 Link—A—Media Devices Corporation LDPC selective decoding scheduling using a cost function
US9356623B2 (en) * 2008-11-26 2016-05-31 Avago Technologies General Ip (Singapore) Pte. Ltd. LDPC decoder variable node units having fewer adder stages
US8560917B2 (en) 2009-01-27 2013-10-15 International Business Machines Corporation Systems and methods for efficient low density parity check (LDPC) decoding
US8458556B2 (en) * 2009-10-09 2013-06-04 Stmicroelectronics, Sa Low complexity finite precision decoders and apparatus for LDPC codes
KR101286858B1 (ko) 2009-12-21 2013-07-17 한국전자통신연구원 저밀도 패리티 검사 부호를 위한 고속 복호 방법
US8589755B2 (en) 2010-06-16 2013-11-19 Nec Laboratories America, Inc. Reduced-complexity LDPC decoding
JP5790029B2 (ja) 2011-03-01 2015-10-07 ソニー株式会社 復号装置、復号方法、およびプログラム
EP2738943B1 (en) * 2011-07-27 2017-10-18 Sun Patent Trust Encoding and decoding of tail-biting rate (n-1)/n low-density parity check convolutional codes (ldpc-cc)

Also Published As

Publication number Publication date
EP2907033B1 (en) 2019-09-11
US9612903B2 (en) 2017-04-04
CN104769556B (zh) 2018-02-02
EP2907033A1 (en) 2015-08-19
US10628256B2 (en) 2020-04-21
US20190146866A1 (en) 2019-05-16
KR101753498B1 (ko) 2017-07-03
TW201428756A (zh) 2014-07-16
EP2907033A4 (en) 2016-07-06
TWI517173B (zh) 2016-01-11
US20160259686A1 (en) 2016-09-08
KR20150067338A (ko) 2015-06-17
US10191804B2 (en) 2019-01-29
US20140108883A1 (en) 2014-04-17
CN104769556A (zh) 2015-07-08
WO2014058855A1 (en) 2014-04-17
JP2015536595A (ja) 2015-12-21

Similar Documents

Publication Publication Date Title
JP5992628B2 (ja) 信頼性データの更新
US10998923B2 (en) Stopping criteria for layered iterative error correction
TWI543178B (zh) 解碼方法、記憶體儲存裝置及記憶體控制電路單元
US9170877B2 (en) Resolving trapping sets
US10707902B2 (en) Permutation network designing method, and permutation circuit of QC-LDPC decoder
US11243838B2 (en) Methods and apparatuses for error correction
US10289348B2 (en) Tapered variable node memory
US9236886B1 (en) Universal and reconfigurable QC-LDPC encoder
TWI707231B (zh) 解碼器設計方法與儲存控制器
TWI804359B (zh) 低密度奇偶校檢碼的解碼方法及裝置

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160301

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160329

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20160816

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160817

R150 Certificate of patent or registration of utility model

Ref document number: 5992628

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250