JP2012050008A - 誤り検出訂正方法および半導体メモリ装置 - Google Patents
誤り検出訂正方法および半導体メモリ装置 Download PDFInfo
- Publication number
- JP2012050008A JP2012050008A JP2010192697A JP2010192697A JP2012050008A JP 2012050008 A JP2012050008 A JP 2012050008A JP 2010192697 A JP2010192697 A JP 2010192697A JP 2010192697 A JP2010192697 A JP 2010192697A JP 2012050008 A JP2012050008 A JP 2012050008A
- Authority
- JP
- Japan
- Prior art keywords
- parity
- bit
- check
- node
- auxiliary
- 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.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/65—Purpose and implementation aspects
- H03M13/6577—Representation or format of variables, register sizes or word-lengths and quantization
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/11—Error 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/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1105—Decoding
- H03M13/1111—Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms
- H03M13/1117—Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms using approximations for check node processing, e.g. an outgoing message is depending on the signs and the minimum over the magnitudes of all incoming messages according to the min-sum rule
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/11—Error 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/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1105—Decoding
- H03M13/1111—Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms
- H03M13/1117—Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms using approximations for check node processing, e.g. an outgoing message is depending on the signs and the minimum over the magnitudes of all incoming messages according to the min-sum rule
- H03M13/112—Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms using approximations for check node processing, e.g. an outgoing message is depending on the signs and the minimum over the magnitudes of all incoming messages according to the min-sum rule with correction functions for the min-sum rule, e.g. using an offset or a scaling factor
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/29—Coding, 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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
- H03M13/2906—Coding, 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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/09—Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
Landscapes
- Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Error Detection And Correction (AREA)
- Detection And Correction Of Errors (AREA)
Abstract
【課題】効率のよい誤り検出訂正方法を提供する。
【解決手段】実施形態の誤り検出訂正方法は、低密度パリティ検査符号の検査行列のタナーグラフに対応して設定されたチェックノード20からチェックノード20に接続されている複数のビットノードに向け信頼度αを伝搬する処理と、ビットノードからビットノードに接続されている複数のチェックノード20に向け信頼度βを伝搬する処理と、を繰り返す、サムプロダクトアルゴリズムを用いた復号処理において、チェックノード20が2ビット以上のパリティを備える。
【選択図】図5
【解決手段】実施形態の誤り検出訂正方法は、低密度パリティ検査符号の検査行列のタナーグラフに対応して設定されたチェックノード20からチェックノード20に接続されている複数のビットノードに向け信頼度αを伝搬する処理と、ビットノードからビットノードに接続されている複数のチェックノード20に向け信頼度βを伝搬する処理と、を繰り返す、サムプロダクトアルゴリズムを用いた復号処理において、チェックノード20が2ビット以上のパリティを備える。
【選択図】図5
Description
本発明の実施の形態は、LDPC符号による誤り検出訂正方法、および前記誤り検出訂正方法を行う半導体メモリ装置に関する。
半導体メモリ等のストレージ分野での高密度記録等のために、デジタルデータの誤り訂正符号に関する開発が行われている。誤り訂正符号は、代数系の誤り訂正方式と確率にもとづく反復計算による誤り訂正方式とに大別できる。そして、後者に属する低密度パリティ検査符号(Low Density Parity Check codes、以下、「LDPC符号」という)はシャノン限界に迫る、優れた性能が報告されている。そして、LDPC符号化データはサムプロダクトアルゴリズムを用いることにより、比較的少ない回路規模で並列処理を行うことができる。
LDPC符号は半導体メモリ装置等への応用が進んでいるが、更に効率の良い誤り検出訂正方法が求められていた。
本発明の実施形態は、効率のよい誤り検出訂正方法、および前記誤り検出訂正方法を用いた半導体メモリ装置を提供することを目的とする。
上記目的を達成すべく、本発明の実施形態の誤り検出訂正方法は、低密度パリティ検査符号の検査行列のタナーグラフに対応して設定されたチェックノードからチェックノードに接続されている複数のビットノードに向け信頼度αを伝搬する処理と、ビットノードからビットノードに接続されている複数のチェックノードに向け信頼度βを伝搬する処理と、を繰り返す、サムプロダクトアルゴリズムを用いた復号処理において、チェックノードが2ビット以上のパリティを備える。
また本発明の別の実施形態の半導体メモリ装置は、低密度パリティ検査符号の検査行列のタナーグラフに対応して設定されたチェックノードからチェックノードに接続されている複数のビットノードに向け信頼度αを伝搬する処理と、ビットノードからビットノードに接続されている複数のチェックノードに向け信頼度βを伝搬する処理と、を繰り返す、サムプロダクトアルゴリズムを用いた復号処理において、チェックノードが2ビット以上のパリティを備えた誤り検出訂正方法を行う。
<LDPC符号>
最初にLDPC符号について説明する。LDPC符号は、非常に疎な検査行列、すなわち、行列内の非零要素数が少ない検査行列により定義される線形符号であり、タナーグラフで示すことができる。そして、誤り訂正処理は、タナーグラフ上で接続された符号語の各ビットに対応したビットノード(ビットノード)と各パリティ検査式に対応したチェックノードとの間で局所的に推論した結果を、やりとりしながら更新していくことに相当する。
最初にLDPC符号について説明する。LDPC符号は、非常に疎な検査行列、すなわち、行列内の非零要素数が少ない検査行列により定義される線形符号であり、タナーグラフで示すことができる。そして、誤り訂正処理は、タナーグラフ上で接続された符号語の各ビットに対応したビットノード(ビットノード)と各パリティ検査式に対応したチェックノードとの間で局所的に推論した結果を、やりとりしながら更新していくことに相当する。
図1に、(6、2)LDPC符号における、行重みwr=3、列重みwc=2の検査行列H1を示す。なお、(6、2)LDPC符号とは、符号長が6ビット、情報長が2ビットのLDPC符号のことである。
そして、図2に示すように、検査行列H1をタナーグラフG1で示すと、ビットノードは検査行列Hの列に対応し、チェックノードは検査行列Hの行に対応している。そして検査行列H1の要素の中で、「1」であるノード間をエッジで結ぶことによりタナーグラフG1が構成されている。例えば、検査行列H1の第2行第5列の、丸で囲った「1」は、タナーグラフG1の太線で示すエッジに対応している。そして、検査行列H1の行重みwr=3は、ひとつのチェックノードと接続されているビットノードの数、すなわちエッジ数3に対応し、検査行列Hの列重みwc=2は、ひとつのビットノードと接続されているチェックノードの数、すなわちエッジ数2に対応している。
LDPC符号を用いた復号処理においては、(以下、単に「LDPCにおいては」ともいう)、はタナーグラフのエッジに割り当てられた信頼度(確率)情報をノードにおいて反復的に更新することで実行される。信頼度情報には、チェックノードからビットノードへの確率情報(以下、「外部値」または「外部情報」ともいい、記号「α」で表示する)と、ビットノードからチェックノードへの確率情報(以下、「事前確率」、「事後確率」、単に「確率」、または「対数尤度比(LLR)」ともいい、記号「β」または「λ」で表示する)の2種類がある。信頼度更新処理は、行処理と列処理とからなり、行処理と列処理とを1回ずつ実行した単位のことを1イタレーション(ラウンド)処理と呼び、復号処理はイタレーション処理を繰り返す反復処理により行われる。
以上の説明のように、外部値αとは、LDPC復号処理のときの、チェックノードからビットノードへの確率情報であり、確率βとはビットノードからチェックノードへの確率情報であり、当業者にとり周知の用語である。
以下、図3(A)〜図3(D)に示すタナーグラフG2の一部を用いて、行処理および列処理について説明する。最初に、図3(A)および図3(B)を用いて、ビットノード処理(列処理)について説明する。あるビットノード、例えばビットノード3、に対応する入力された符号語ビットの初期信頼度であるLLR、をλ(3)とし、このビットノード3へのチェックノードからの確率を、α(j、3)とする。ここで、jはビットノード3に接続しているチェックノード番号を示す。
そして、ビットノード3は、α(1、3)に対応するエッジのチェックノードすなわち、チェックノード1に対して、以下の(式1)で表される計算を行う。
β(3、1)= λ(3)+α(2、3) ・・・(式1)
同様に、ノード番号jのチェックノードに対して、以下の(式2)で表される計算を行う。
β(3、j)= λ(3)+Σα(k、3) ・・・(式2)
ここで、Σはビットノード3に接続しているチェックノードの中で、k=j以外の総和を意味する。
以上の計算を全てのビットノードに対して行い、以下の(式3)で表されるβ(i、j)を計算する。なお、ここで、符号長をN、ノード番号を、iとすると、i=1〜Nである。また、Σはビットノードiに接続しているチェックノードの中で、k=j以外の総和を意味する。
β(i、j)= λ(i)+Σα(k、i) ・・・(式3)
次に、図3(C)および図3(D)を用いて、チェックノード処理(行処理)について説明する。あるチェックノード、例えばチェックノード1、へのメッセージである外部情報を、β(k、1)としたとき、このチェックノードはβ(1、1)に対応するエッジのビットノードであるビットノード1に対して以下の(式4)で表されるα(1、1)を計算する。
α(1、1)=sign(Πβ(m、1))×min(|β(m、1)|) ・・・(式4)
ただし、kはこのチェックノード1に接続されているビットノード番号である。そして、mは「2」から「3」の中から選択される。ここで、sign(Πβ(m、1))は、β(m、1)を、m=2から3、まで乗算した結果の符合(「+1」あるいは「−1」)を意味する。また、|β(m、1)|は、β(m、1)の絶対値であり、minは複数の|β(m、1)|の中から最小値を選択する関数である。
同様にして、α(1、i)についても、以下の(式5)を使って算出する。
α(1、i)=sign(Πβ(m、1))×min{|β(m、1)|} ・・・(式5)
ただし、iはチェックノード1に接続しているビットノード番号であり、図1(B)のタナーグラフの例では、「1」、「2」、「3」である。また、mはチェックノード1に接続したビットノードの中で、m=i、以外とする。
以上の計算を全てのチェックノードに対して行い、α(j、i)を以下の(式6)を使って計算する。
α(j、i)=sign(Πβ(m、j))×min(|β(m、j)|) ・・・(式6)
ただし、mはチェックノードjに接続したビットノードの中で、m=i、以外とする。
そして、反復復号では、以上に示したビットノード処理とチェックノード処理とを1回ずつ実行した1イタレーション処理(1ラウンド)毎に、以下の(式7)によって、事後確率Pb(i)を求める。
Pb(i)=λ(i)+Σα(k、i) ・・・(式7)
ここで、i=1〜Nであり、Nは符号長である。そして、Σはビットノードiに接続された全ての和である。
この事後確率値(一時推定語)Pbを基にビット判定、すなわち、当該ビットが、「0」または「1」のいずれであるかが硬判定される。そして、この硬判定結果を使用して、LDPC符号の最終パリティチェックを行い、誤りないことが確認された時点で反復処理を終了する。以上が、LDPC符号の反復復号方法である。
そして既に説明したように、メッセージ伝達アルゴリズムとして、サムプロダクトアルゴリズムを用いた、ビットノードおよびチェックノードにおける信頼度更新アルゴリズムでは、並列処理による復号処理を行うことができる。
LDPCでは、チェックノードに接続するビットノードのパリティチェックがパスしたら、そのビットノードの信頼度αを上げ、パスしなければ信頼度αを下げる処理を行う。ここで、従来のLDPC符号による誤り検出訂正方法においては、チェックノードにおける誤り検出には、パリティビットが用いられていた。パリティビットは最も単純な誤り検出符号であり、巡回冗長検査(CRC)の特殊ケースである1ビットCRC(CRC1)であり、多項式(x+1)から生成される。
パリティビットは奇数個のビットが変化した場合には、誤りが発生したことを検出できる。しかし、パリティビットによる誤り検出検査は1以上の奇数誤り検出能力しか備えていない。よって、同一チェックノードに接続された複数ビットノードで2以上の偶数誤りが発生すると、パリティ検査が誤ってパスするため、ビットノードに対して正しい信頼度の更新ができないという構造的問題があった。以後、この現象を「誤行処理」と呼ぶ。
誤行処理のため、LDPCでは、複数ビット誤りの分布パターンによっては、復号処理時間が長くなったり、最悪の場合、復号処理が収束しなかったりする。検査行列の行数を増やしてチェックノードを増やすことにより、チェックノードにおける誤り検出精度を上げること、すなわち誤行処理の発生を抑制することは可能である。しかし検査行列の行数を増やすと、それに比例して復号時間が増大するとともに、チェックノード用の変数格納メモリ容量が増大してしまう。
<第1実施形態>
以下、本発明の第1実施形態の誤り検出訂正方法および半導体メモリ装置について説明する。最初に、図4を用いて本発明の第1実施形態の半導体メモリ装置であるメモリカード3の構成を説明する。
以下、本発明の第1実施形態の誤り検出訂正方法および半導体メモリ装置について説明する。最初に、図4を用いて本発明の第1実施形態の半導体メモリ装置であるメモリカード3の構成を説明する。
図4に示すように、メモリカード3はパソコンまたはデジタルカメラ等のホスト4から受信したデータを記憶し、記憶したデータをホスト4に送信する記憶媒体である。メモリカード3は、半導体メモリ部(以下、単に「メモリ部」ともいう。)13と、誤り検出訂正部15を具備したメモリコントローラ2とを有する。メモリ部13は、NAND型フラッシュメモリから構成されており、単位セルである多数のメモリセル13Dが、ビット線13E等で接続された構造を有する。なお、本実施の形態としての半導体記憶装置はホストの内部に収納されホストの起動データ等を記憶する、いわゆるエンベデッドタイプの記憶装置であってもよく、または半導体ディスク:SSD(Solid State Drive)等の形態であってもよい。あるいは半導体メモリ装置とホスト4とが、例えば携帯音楽プレーヤであるMP3プレーヤ等のメモリシステム1を構成していてもよい
そして、メモリコントローラ2は、バス17を介して接続された、ROM10と、CPUコア11と、RAM18と、ホスト I/F(インターフェイス)14と、誤り訂正(ECC:Error Correcting Code)部15と、NAND I/F(インターフェイス)16と、を有する。
メモリコントローラ2は、CPUコア11を用いて、ホスト I/F14を介してホスト4とのデータ送受信を、NAND I/F16を介してメモリ部13とのデータ送受信を行う。またメモリコントローラ2は、書き換え回数の制限を含めたメモリ部13のアドレス管理をCPUコア11で実行されるFW(Firm Ware)で実現している。また、ホスト4からのコマンド入力に応じたメモリカード3全体の制御もFWで実行される。ROM10には、メモリカード3の制御プログラム等が記憶されており、RAM18には、アドレス管理で必要となるアドレス変換デーブル等が記憶される。
ECC部15は、データ記憶時に誤り訂正符号を生成し付与する符号化器12と、データ読み出し時に、読み出された符号化データを復号する誤り検出訂正部18とを有する。本実施の形態のECC部15は、確率にもとづく反復計算により復号処理される誤り訂正符号である低密度パリティ検査符号を用いる。
すなわち、ECC部15は、LDPC符号の検査行列のタナーグラフに対応して設定されたチェックノードからチェックノードに接続されている複数のビットノードに向け信頼度αを伝搬する処理と、ビットノードからビットノードに接続されている複数のチェックノードに向け信頼度βを伝搬する処理と、を繰り返す、サムプロダクトアルゴリズムを用いた復号処理を行う。
そして、ECC部15は、チェックノードの誤り検出能力が、従来の誤り検出訂正方法におけるパリティビットによる誤り検出能力よりも高い。例えば、図5に示すように、ECC部15のチェックノード20は、パリティビットによるチェックを行う通常チェックノード21と、パリティビットとは異なる第2のパリティによるチェックを行う補助チェックノード22と、を有する。
すなわち、それぞれのチェックノード20が、本来のLDPCのパリティ(第1のパリティ/パリティビット/1ビットCRC/CRC1)による誤り検出機能を有する通常チェックノード21に加えて、通常チェックノード21とは独立した誤り検出機能を有する補助チェックノード22をECC部15は有する。以下、補助チェックノード22で用いるために、符号化し生成するパリティを補助パリティ(第2のパリティ)と呼ぶ。
なお、n個(nは2以上の整数)通常チェックノード21を1つの単位として第2のパリティを作成した補助チェックノード22を有することが好ましい。例えば図6に示す変形例のように、2個の通常チェックノード21を1つの単位として第2のパリティを作成した補助チェックノード22を有することが好ましい。
なお、補助パリティはLDPCの符号化範囲に含めても良いし、含めなくともよく、システムの構成要件に応じて柔軟に決定すればよい。以下の説明ではLDPCパリティには含めることとする。補助パリティをLDPCパリティに含めることで補助パリティ自身が誤った場合でも、LDPCの本来の復号機能で、補助パリティビットの誤りを訂正できる。
既に説明したように、従来のLDPCのチェックノード(通常チェックノード)におけるパリティチェックはパリティビットを用いているために、1ビット以上の奇数ビット誤りしか検出できない。これに対して本実施形態の誤り検出訂正方式では、通常のLDPCパリティ(パリティビット)を補完するための補助符号化(第2のパリティ)を有し、2ビット以上の偶数誤りが検出可能な場合がある。
更に第2のパリティとして、誤り検出だけでなく、誤り訂正可能な符号を用いてもよい。第2のパリティは、例えば、誤り検出ビット数t=2以上のCRC符号(CRC2、3、4、5、6、7、・・・32、・・・)、誤り訂正シンボル数t=2以上のハミング符号、BCH符号、またはRS符号等の通常符号化方式から選択することができる。
後述するように、第2のパリティが誤り訂正能力を有する場合には、補助チェックノード22のチェック結果に応じて、チェックノードにおいて誤り訂正処理を行うことができる。
次に、図7を用いて、本実施形態の誤り検出訂正方法を用いるECC部15の動作の流れについて説明する。
<ステップS10> データ受信
メモリ部13に記憶されていた符号化データが、NAND I/F16を介してECC部18の誤り検出訂正部15が受信される。
メモリ部13に記憶されていた符号化データが、NAND I/F16を介してECC部18の誤り検出訂正部15が受信される。
<ステップS11> 初期LLR値受信
誤り検出訂正部15の初期LLR算出部(不図示)が、ROM10等に記憶されていた尤度比テーブル等をもとに符号化データから初期LLR(事前確率β)を算出する。
誤り検出訂正部15の初期LLR算出部(不図示)が、ROM10等に記憶されていた尤度比テーブル等をもとに符号化データから初期LLR(事前確率β)を算出する。
<ステップS12> 硬判定
LLRをもとに、硬判定が行われ、一時推定語が生成される。
LLRをもとに、硬判定が行われ、一時推定語が生成される。
<ステップS13> 最終パリティチェック
誤り検出訂正部15は、一時推定語を用いて最終パリティチェックを行う。
誤り検出訂正部15は、一時推定語を用いて最終パリティチェックを行う。
<ステップS14> 最終パリティチェックOK?
誤り検出訂正部15は、最終パリティチェックの結果、誤りがないことが確認された場合(Yes)には、ステップS15において、復号データをホストI/F14を介してホスト4に出力し、処理は終了する。
誤り検出訂正部15は、最終パリティチェックの結果、誤りがないことが確認された場合(Yes)には、ステップS15において、復号データをホストI/F14を介してホスト4に出力し、処理は終了する。
<ステップS16> 初期化
誤り検出訂正部15は、最終パリティチェックの結果、誤りがあった場合(S14:No)には、初期LLRをもとに、イタレーション処理を開始する。
誤り検出訂正部15は、最終パリティチェックの結果、誤りがあった場合(S14:No)には、初期LLRをもとに、イタレーション処理を開始する。
<ステップS17>チェックノード処理(行処理)/ビットノード処理(列処理)
ビットノードから接続されているチェックノードに事前確率βが送信され、チェックノードは、受信した確率の積を算出し接続されているビットノードに外部情報(信頼度)αとして送信する。
ビットノードから接続されているチェックノードに事前確率βが送信され、チェックノードは、受信した確率の積を算出し接続されているビットノードに外部情報(信頼度)αとして送信する。
チェックノードでは、接続されているビットノードに外部情報αが送信され、ビットノードは受信した確率の積を算出し接続されているチェックノードに、事後確率βとして送信する。
1ラウンドの処理が完了すると、ステップS12において硬判定処理が行われ、更にステップS13において最終パリティチェックが行われ、OKの場合には処理は完了する。NGの場合には、ステップS18の処理が繰り返し行われる。
ここでは、補助チェックノードにおける補助符号化方式にCRCを採用した場合のチェックノード処理について説明する。なお、CRCtとは、tビットCRCを意味する。事前/事後確率をβ、外部情報をαとすると、LDPCパリティ(第1のパリティ)と補助パリティ(第2のパリティ)との両方の結果にもとづいて、αに加減算する値Mを変更する。
すなわち、通常チェックノードおよび補助チェックノードのチェック結果に応じて、接続されている複数のビットノードへ伝搬する信頼度αを増減する。
なお、すでに説明したように、従来のLDCPでは、αに加減算する値Mは、β最小値(βm)の絶対値|βm|に固定されていた。これに対して本実施形態(変形例)のLDPCでは、Mは下記のように決定される。
実施の形態の場合(n=1)では、補助パリティ判定結果をそのまま利用してαを更新する。
変形例の場合(n>1)では、n=1の場合に比べると、補助パリティ判定結果の信頼度が低下しているので、その信頼度に応じてαを更新する。
変形例の場合(n>1)では、n=1の場合に比べると、補助パリティ判定結果の信頼度が低下しているので、その信頼度に応じてαを更新する。
以下、行処理でLDPCパリティチェックと補助パリティチェック(CRCチェック)を同時実行した場合のM値の決定例を示す。
<CRC、n=1(実施形態)>
(ケース1)LDPCパリティ(第1のパリティ)OK、補助パリティ(第2のパリティ)OK
⇒|α|にM=H×|βm|を加える。Hは補正係数であり、補助パリティの精度に応じて値を変える。例えば、CRC3の場合H=2.0とし、CRC4の場合H=3.0とする。すなわち、信頼度αを増加する。
(ケース1)LDPCパリティ(第1のパリティ)OK、補助パリティ(第2のパリティ)OK
⇒|α|にM=H×|βm|を加える。Hは補正係数であり、補助パリティの精度に応じて値を変える。例えば、CRC3の場合H=2.0とし、CRC4の場合H=3.0とする。すなわち、信頼度αを増加する。
(ケース2)LDPCパリティOK、補助パリティNG
⇒|α|にM=|βm|を加える。補助パリティNGの原因が検査対象ビットでない可能性があるので、従来のLDPCと同じ処理を施す。
⇒|α|にM=|βm|を加える。補助パリティNGの原因が検査対象ビットでない可能性があるので、従来のLDPCと同じ処理を施す。
(ケース3)LDPCパリティNG
⇒|α|からM=|βm|を引く。すなわち、信頼度αを減少する。
⇒|α|からM=|βm|を引く。すなわち、信頼度αを減少する。
なお、オプション(変形例)として、補助パリティの検出精度を高くした場合、例えば補助パリティ4ビット以上の場合には、パスしたチェックノードに接続されたビットノードの信頼度|α|を一律に最大値に設定してもよい。
<CRC、n>1(変形例)>
(ケース1)LDPCパリティOK、補助パリティOK
⇒|α|にM=H×|βm|を加える。すなわち、信頼度αを増加する。Hは補正係数で、補助パリティの精度とnに応じて決定する。例えば、n=2、CRC3の場合H=1.6、n=2、CRC4の場合H=1.8、n=3、CRC3の場合H=1.2、n=3、CRC4の場合H=1.4とする。
(ケース1)LDPCパリティOK、補助パリティOK
⇒|α|にM=H×|βm|を加える。すなわち、信頼度αを増加する。Hは補正係数で、補助パリティの精度とnに応じて決定する。例えば、n=2、CRC3の場合H=1.6、n=2、CRC4の場合H=1.8、n=3、CRC3の場合H=1.2、n=3、CRC4の場合H=1.4とする。
(ケース2)LDPCパリティOK、補助パリティNG
⇒|α|にM=|βm|を加える。すなわち、補助パリティNGの原因が検査対象ビットでない可能性があるので、従来と同じ処理を施す。
⇒|α|にM=|βm|を加える。すなわち、補助パリティNGの原因が検査対象ビットでない可能性があるので、従来と同じ処理を施す。
(ケース3)LDPCパリティNG
⇒|α|からM=|βm|を引く。すなわち、信頼度αを減少する。
⇒|α|からM=|βm|を引く。すなわち、信頼度αを減少する。
CRCの誤り検出可能ビット数tを大きくし、かつn=1(行列毎に補助パリティを付加)とすると、誤行処理の発生確率が下がるので、従来のLDPCの欠点を大幅に改善できる。その代わり、補助パリティのビット数が増え実効的な符号化率が低下する。例えば、NANDフラッシュメモリのページにおけるデータに対するパリティの占める割合が増える。このため、nとtとは、訂正能力強化と実効的符号化率とのトレードオフの関係で決定される。
ここで誤り訂正機能を備える符号(ハミング符号、BCH符号、RS符号等)により、補助符号化した場合は、誤り検出機能だけでなく、誤り訂正機能を使ってもよい。誤り検出機能のみを使う場合は、CRCパリティと同様に処理すればよい。例えばBCH符号で補助符号化を実施した場合、LDPCの復号処理と連動させてBCHの誤り訂正処理を実行し、LDPCの誤り訂正処理を補助してもよい。例えば、BCHの誤り訂正処理とLDPCと誤り訂正とを並列処理させる実装状態では、BCHの誤り訂正が成功したら、LDPC処理に不整合の起きないタイミング(例えばLDPCの1回の行処理/列処理が終了する1ラウンド処理終了時)に、LDPC復号対象データをBCHで訂正したデータに更新すればよい。
以上の説明のように、チェックノードが、パリティビットより誤り検出能力が高い、2ビット以上のパリティを有する実施形態のLDPC誤り検出訂正方法は、誤行処理の発生が小さいため、効率がよい。すなわち、通常チェックノードに加えて補助チェックノードを有し、チェックノード処理が2ビット以上のパリティを有する本実施形態の誤り検出訂正方法は、誤行列処理発生確率を下げることができる。
また、補助チェックノードが2ビット以上のパリティ有する場合、例えば4ビット以上の強力な補助パリティを有する場合は、補助パリティ検査をパスした補助チェックノードに接続するビットノードの信頼度を一律に最大値にすることで、復号時間を更に短縮し効率を上げることもできる。なおチェックノードのビット数は、増加すると符号化率が低下するので、例えば1024ビット以下が好ましい。
以上の説明のように、本実施形態のLDPC符号によるECC部は、n個(nは1以上の整数で好ましくは2以上)のチェックノード毎に補助チェックノード22を設けるもので、補助チェックノード22において、n個のチェックノードに接続するビットノードのtシンボル(t=2以上の整数)誤り検出機能を備え、補助チェックノード22のパリティチェック結果に応じて、LDPCの演算処理内容を変更する。すなわち、チェックノード20に2ビット以上のパリティを持たせることで、チェックノード処理において2ビット以上の偶数誤り検出ができないために誤行列処理を行ってしまう確率を下げることができる。
本実施形態の誤り検出訂正方法を用いた半導体メモリ装置は、復号時間が短く回路規模がコンパクトである。そして、本実施形態の誤り検出訂正方法は、誤行処理発生確率の低い、優れた訂正能力を備える。
<第2実施形態>
次に本発明の第2実施形態の誤り検出訂正方法および半導体メモリ装置であるメモリカード3Aについて説明する。本実施の形態は第1実施形態と類似しているため同じ構成要素には同じ符号を付し説明は省略する。
次に本発明の第2実施形態の誤り検出訂正方法および半導体メモリ装置であるメモリカード3Aについて説明する。本実施の形態は第1実施形態と類似しているため同じ構成要素には同じ符号を付し説明は省略する。
第1実施形態の補助符号化方式では、補助パリティを付加する単位であるチェックノード数nを大きくすることで補助パリティサイズ増加を抑えられる。しかし補助パリティの誤り検出信頼度は、nに比例して下がる。本実施の形態の特殊補助符号化方式では第1実施形態の補助パリティを改善した。すなわち、改良補助符号を用いる本実施の形態の特殊補助符号化方式では、例えば、チェックノード1個当たり補助パリティとして特殊補助符号の1ビットパリティを付加するだけであるが、所定の確率で2ビット以上の偶数誤りが検出可能になり、符号化率を大きく低下させることなく、誤行処理の発生を抑制できる。
図8に示すように、本実施の形態の誤り検出訂正方式では、あるチェックノードに接続するkビットのデータセット(データ列)をmブロックに分割する。ブロックの分割方法は任意でよい。例えば、m=2、データセット32ビットの場合、上位16ビットと下位16ビットとに分割したり、偶数16ビットと奇数16ビットとのように分割したりする。
そして、m個のオペランド間で演算/データ処理(例えば、加算、減算、乗算、除算、べき乗算、スクランブル、圧縮/伸張、暗号化、ガロア体演算、あるいはこれらの組み合わせ等)を実行し、処理結果の例えば1ビットの奇数パリティを計算し、これを補助パリティ(特殊補助符号)とする。
そして、LDPC行処理時に、補助パリティを再計算し、受信した補助パリティと値が一致するか確認し、一致すれば補助パリティOKと判定する。以上の機構により、1ビットの補助パリティだけで2ビット以上の偶数誤りを後述するように、所定の確率で検出することができる。
例えば、加算処理ではキャリーが発生するため、あるビット誤りによる変化が、他の複数の上位ビットに影響を与える場合がある。すなわち、誤りのない状況での演算結果の「1」の個数と、2ビット以上の偶数誤りを伴う演算結果での「1」の個数が異なってくる現象が発生することがある。このため2ビット以上の誤りを1ビットのパリティにより検出可能となる。
ただし、必ずしも2ビット以上の偶数誤りで補助パリティ結果が変化するとは限らないので、この機構は、あくまでもチェックノードでの2ビット以上偶数誤りを誤判定する確率を下げる機能しか備えてはいない。
以下、具体的に説明を行う。ここでは、k=8ビットとし、あるチェックノードに接続するデータ列をDとする。データ列をm=2分割して2個の数値データとして扱い、2オペランドの加算処理を実行する。このとき、最上位ビットのキャリーアウトは奇数パリティ計算に含めてもよいが、以下の説明では含めないこととする。
D=“0000_0101”
D2=“0000”、D1=“0101”、
D1+D2=“0000”+“0101”=“0101”、
D2=“0000”、D1=“0101”、
D1+D2=“0000”+“0101”=“0101”、
ここで、補助パリティ=奇数パリティ=“0”(ビット「1」の個数が奇数個なら奇数パリティ=「1」)。Dの受信データRに2ビット誤りが発生し、R=“0100_0111”、r1=“0111“、r2=“0100”になったとする。すると、r1+r2=“0111”+“0100”=“1011”となる。「1」の個数が奇数なので補助パリティを再計算すると「1」になり、受信した補助パリティ=「0」と異なることから、2ビット誤りが検出できる。
すなわち、パリティビット(1ビットCRC)による従来のLDPCパリティチェック(通常チェックノード)は2ビット以上の偶数誤りが発生すると誤判定する。これに対して、本実施形態の補助パリティ(特殊補助符号)は2ビット以上の偶数誤りを100%は検出できないが、誤ったビット位置によっては検出できる。このため、特殊補助符号化を実施することで、LDPCパリティの誤判定確率、すなわち誤行処理の発生確率を下げることができる。
データセットの分割数mに応じて、ビット誤り現象に対する補助パリティビットへの影響度が変わる場合があるので、mは影響度の大きくなる適切な値に設定する。例えば上記のように加算処理により補助パリティを生成する場合、mを大きくすると「1」どうしの加算発生確率が増え、キャリー伝播が起きやすくなるので、mを大きくするのが望ましい。
ここで、例えば、1個のチェックノードに接続するビットノード数が40ビット程度の場合には、m=4にして4個の10ビットデータを生成し、4個のオペランドによる加算結果をもとに補助パリティを計算する。更に、補助パリティ計算にキャリーアウトを含めた方が偶数ビットエラーを検出しやすい場合には、含めてもよい。
演算内容も、データの性質に応じて選択される。また、複数種類の演算、またはデータ加工を組み合わせてもよい。例えば、データに「0」または「1」の連続パターンが多い場合は、通信技術でよく使われるスクランブルをかけてトグルパターン“1010・・・”を多く含むデータパターンに変換してから加算あるいは減算を実行し、キャリー/ボローが発生しやすい状況を意図的に作り出すことが好ましい。
既に説明した第1実施形態においては、通常補助符号化でn=1で補助パリティサイズが最小になるCRC2を採用した場合でも2ビットの補助パリティ(第2のパリティ)が必要になる。しかし、本実施形態の誤り検出訂正方式では、特殊符号化方式により補助パリティ(第2のパリティ)は1ビットなので、通常補助符号化に比べて実質的符号化率低下を最小限に抑えることができる。
なお、チェックノードにおけるパリティ判定結果に応じたαの更新は例えば、以下のように行う。
<n=1の場合>
(ケース1)LDPCパリティ(第1のパリティ)OK、補助パリティ(第2のパリティ)OK
⇒|α|にM=H×|βm|を加える。Hは補正係数で、例えば、H=1.5である。すなわち、信頼度αを増加する。
(ケース1)LDPCパリティ(第1のパリティ)OK、補助パリティ(第2のパリティ)OK
⇒|α|にM=H×|βm|を加える。Hは補正係数で、例えば、H=1.5である。すなわち、信頼度αを増加する。
(ケース2)LDPCパリティOK、補助パリティNG
⇒|α|にM=|βm|を加える。補助パリティNGの原因が検査対象ビットでない可能性があるので、従来と同じ処理を施す。
⇒|α|にM=|βm|を加える。補助パリティNGの原因が検査対象ビットでない可能性があるので、従来と同じ処理を施す。
(ケース3)LDPCパリティNG
⇒|α|からM=|βm|を引く。すなわち、信頼度αを減少する。
⇒|α|からM=|βm|を引く。すなわち、信頼度αを減少する。
ここで、本実施形態の誤り検出訂正方法の特殊補助符号化においても、n=2以上にして、実効的符号化率低下を更に低減することもできる。すなわち、チェックノード1のデータをD1、チェックノード2のデータをD2とした場合、「D1+D2」を演算し、演算結果の奇数パリティを計算し、これを補助パリティビットとする。
なお、n=2にして2チェックノードに従属するデータセットで補助パリティを演算する場合には、(全チェックノード数×1/2)個の補助パリティの追加となる。nは2以上の任意整数値を選択すればよい。nは訂正能力と実効的符号化率とのトレードオフで決定する。
<n>2の場合>
(ケース1)LDPCパリティOK、補助パリティOK
⇒|α|にM=H×|βm|を加える。すなわち、信頼度αを増加する。
Hは補正係数で、nに応じて決定する。例えば、n=2の場合H=1.4、n=3の場合H=1.2である。
(ケース1)LDPCパリティOK、補助パリティOK
⇒|α|にM=H×|βm|を加える。すなわち、信頼度αを増加する。
Hは補正係数で、nに応じて決定する。例えば、n=2の場合H=1.4、n=3の場合H=1.2である。
(ケース2)LDPCパリティOK、補助パリティNG
⇒|α|にM=|βm|を加える。補助パリティNGの原因が検査対象ビットでない可能性があるので、従来と同じ処理を施す。
⇒|α|にM=|βm|を加える。補助パリティNGの原因が検査対象ビットでない可能性があるので、従来と同じ処理を施す。
(ケース3)LDPCパリティNG
⇒|α|からM=|βm|を引く。すなわち、信頼度αを減少する。
⇒|α|からM=|βm|を引く。すなわち、信頼度αを減少する。
以上の説明のように、本実施の形態の誤り検出訂正方法では、第2のパリティが、データ列を複数の分割データ列に分割し、分割データ列を構成する1ビットデータの間で演算処理を行うことにより作成された特殊補助符号の1ビットパリティである。そして、特に、前記演算処理が、加算処理、減算処理、乗算処理、除算処理、べき乗処理、スクランブル処理、圧縮処理、伸張処理、暗号化処理、またはガロア体演算処理の少なくともいずれかである。
<第3実施形態>
次に本発明の第3実施形態の誤り検出訂正方法および半導体メモリ装置であるメモリカード3Bについて説明する。本実施の形態は第2実施形態等と類似しているため同じ構成要素には同じ符号を付し説明は省略する。
次に本発明の第3実施形態の誤り検出訂正方法および半導体メモリ装置であるメモリカード3Bについて説明する。本実施の形態は第2実施形態等と類似しているため同じ構成要素には同じ符号を付し説明は省略する。
通常チェックノードが用いる通常のパリティビット、すなわち1ビットCRCは、nビットのデータ列Dを構成する、1ビットデータDnを順に排他的論理和(EOR)演算することにより作成される。排他的論理和:EOR(Exclusivee OR、エクスクルーシブ・オア)は、データが異なる場合に「1」を出力する。
図9に、k=8ビットとし、あるチェックノードに接続するデータ列をD、すなわち1ビットデータ8個からなるデータ列、D=0000_0101(d1=1、d2=0、d3=1、d4=0、d5=0、d6=0、d7=0、d8=0)を例に通常のパリティビット作成方法を示す。
これに対して、本実施形態の誤り検出訂正方法では、補助ビット(第2のパリティ)は、データ列を構成する1ビットデータに対して順に排他的論理和(XORまたはEOR)演算とEOR演算以外の論理演算(ブール演算)とを交互に行うことにより作成された1ビットパリティである。
ここで、EOR演算以外の論理演算とは、論理積(AND)演算、否論理積(NAND)演算、論理和(OR)演算、否論理和(NOR)演算である。
例えば、本実施形態の第2のパリティである改良パリティビットは、nビットのデータ列Dを構成する、1ビットデータdnを交互に排他的論理和(EOR)演算と論理積(AND)演算とを、することにより作成される。なお、論理積(AND)演算では、データが共に1の場合には「1」を出力する。なお、論理和(OR)演算では、データの一方でも1なら「1」を出力する。
例えば、図10に示すように、k=8ビットとし、あるチェックノードに接続するデータ列をDとする。これをm=k=8分割して8個の1ビットの数値データとして扱い、隣接する1ビットどうしのEOR演算とAND演算とを順次実行する。すなわち、演算は計7回実行される。この結果の奇数パリティを計算し、これを補助パリティとする。
D=“0000_0101”
d1=“1”、d2=“0”、d3=“1”、d4=“0”、d5=“0”、d6=“0”、d7=“0”、d8=“0”、(「^」はEOR演算、「*」はAND演算を意味する)
d1=“1”、d2=“0”、d3=“1”、d4=“0”、d5=“0”、d6=“0”、d7=“0”、d8=“0”、(「^」はEOR演算、「*」はAND演算を意味する)
(d1^d2)^
(d2*d3)^
(d3^d4)^
(d4*d5)^
(d5^d6)^
(d6*d7)^
(d2*d3)^
(d3^d4)^
(d4*d5)^
(d5^d6)^
(d6*d7)^
そして、(d7^d8)^=「0」、すなわち、以上の例では、補助パリティ=奇数パリティ=「0」となる。
これに対して、Dの受信データRに2ビット誤りが発生し、R=“1000_0111”になったとする。加算結果の「1」の個数が3個の奇数なので補助パリティ(奇数パリティ)を再計算すると「1」になり、受信した補助パリティ=「0」と異なることから、2ビット誤りを検出することができる。
ここで、表1を用いて更に説明する、表1(A)は送信データの補助パリティを、表1(B)は誤りが発生した受信データの補助パリティを、表1(C)は1ビット誤り検出確率を、表1(D)は2ビット誤り検出確率を示している。表1においては、d2のデータが送受信時で異なる場合を例に示している。
表1(C)に示すように1ビット誤りは50%の確率で、表1(D)に示すように2ビット誤りも2ビット誤りが互いに離れたビット位置で発生するという前提下で50%の確率で、検出可能である。
すなわち、本実施形態の第2のパリティでは、通常のEOR演算によるパリティビット計算に冗長にAND演算を加えることで、ある確率で2ビット誤りの発生を検出できる。すなわち、離れたビット位置で1ビット誤りが2つ発生、すなわち2ビット誤りが発生した場合に、一方のパリティビットでは1ビット誤りが検出できるが、もう一方のパリティビットでは検出できない状況となる。これにより2ビット誤りをある確率で検出可能になる。
なお、EOR演算に替えて、排他的否論理和(ENOR)演算を用いることも可能である。すなわち、排他的否論理和(ENOR)とEOR演算以外の論理演算(ブール演算)とを交互に行うことにより1ビットパリティを作成しても同様の効果を得ることができる。
すなわち、以下の組み合わせである。(1)EORとAND、(2)EORとNAND、(3)EORとOR、(4)EORとNOR、(5)ENORとAND、(6)ENORとNAND、(7)ENORとOR、(8)ENORとNOR。
すでに説明したように、公知の1ビットCRC(CRC1)であるパリティビットはデータ列を構成する1ビットデータに対して順にEOR演算する。これに対して、データ列を構成する1ビットデータに対してEOR演算またはENOR)演算と、これ以外の論理演算、とを交互に行うことにより作成された改良1ビットパリティは、1ビット長でありながら、誤り検出能力が高い。
すなわち、上記説明ではLCPCの補助パリティの一例として、改良1ビットパリティを示しているが、改良1ビットパリティは公知の1ビットCRC(CRC1)であるパリティビットが用いられる誤り検出方式に広く適用可能である。
なお、本実施の形態ではビットデータの演算多重度を2にしているが(1ビットデータをEORとANDとに入力)、多重度は2以上の整数値であればよく、また、演算を行うビットデータは隣接していなくともよい。
さらに、図11を用いて補助パリティを2ビットにした本実施形態の変形例について説明する。ここでは、m=8であり、8個のビットデータ間でEOR演算およびAND演算を実行し、その結果の奇数パリティを補助パリティ1とし、8個のビットデータ間でEOR演算およびOR演算を実行し、その結果の奇数パリティを補助パリティ2とする。補助パリティ2は補助パリティ1を補完するように設置するもので、補助パリティ1で検出できない2ビット以上の偶数エラーを検出することができる。
表2は、本実施形態の変形例の補助パリティ1、2による誤り検出確率を説明するためであり、表2(A)−1は送信データの補助パリティ1を、表2(A)−2は送信データの補助パリティ2を、表2(B)−1は受信データの補助パリティ1を、表2(B)−2は受信データの補助パリティ2を、示している。そして、受信データに誤りが発生、すなわち送受信時でデータが異なる場合を示している。
表2に示すように、本変形例の誤り検出訂正方法では、補助パリティ1および補助パリティ2でチェックノード検査をすることで、2ビット以上の偶数誤りを約100%の確率で検出できる。すなわち、補助パリティ1および補助パリティ2が、それぞれ検出確率50%であり、それぞれの検出結果が補完関係となるように設計することにより、検出確率が100%となる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1…メモリシステム
2…メモリコントローラ
3、3A〜3B…メモリカード
4…ホスト
11…コア
12…符号化器
13…メモリ部
13D…メモリセル
13E…ビット線
15…誤り検出訂正部
17…バス
18…ECC部
2…メモリコントローラ
3、3A〜3B…メモリカード
4…ホスト
11…コア
12…符号化器
13…メモリ部
13D…メモリセル
13E…ビット線
15…誤り検出訂正部
17…バス
18…ECC部
Claims (5)
- 低密度パリティ検査符号の検査行列のタナーグラフに対応して設定されたチェックノードから前記チェックノードに接続されている複数のビットノードに向け信頼度αを伝搬する処理と、ビットノードから前記ビットノードに接続されている複数のチェックノードに向け信頼度βを伝搬する処理と、を繰り返す、サムプロダクトアルゴリズムを用いた復号処理において、
前記チェックノードが2ビット以上のパリティを備えることを特徴とする誤り検出訂正方法。 - 前記チェックノードとして、前記パリティビットによるチェックを行う通常チェックノードと、前記パリティビットとは異なる第2のパリティによるチェックを行う補助チェックノードと、を有することを特徴とする請求項1に記載の誤り検出訂正方法。
- 2以上の通常チェックノードを1つの単位として前記第2のパリティを作成した前記補助チェックノードを有することを特徴とする請求項2に記載の誤り検出訂正方法。
- 前記第2のパリティが、データ列を構成する1ビットデータに対して、排他的論理演算または排他的否論理和演算と、前記排他的論理演算または前記排他的否論理和演算以外の論理演算と、を交互に行うことにより作成された1ビットパリティであることを特徴とする請求項2または請求項3に記載の誤り検出訂正方法。
- 請求項1から請求項4のいずれか1項に記載の誤り検出訂正方法を行うことを特徴とする半導体メモリ装置。
Priority Applications (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2010192697A JP2012050008A (ja) | 2010-08-30 | 2010-08-30 | 誤り検出訂正方法および半導体メモリ装置 |
| US13/040,763 US9015548B2 (en) | 2010-08-30 | 2011-03-04 | Error detection correction method and semiconductor memory apparatus |
| CN2011100667882A CN102386931A (zh) | 2010-08-30 | 2011-03-18 | 差错检测纠正方法和半导体存储装置 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2010192697A JP2012050008A (ja) | 2010-08-30 | 2010-08-30 | 誤り検出訂正方法および半導体メモリ装置 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JP2012050008A true JP2012050008A (ja) | 2012-03-08 |
Family
ID=45698772
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2010192697A Pending JP2012050008A (ja) | 2010-08-30 | 2010-08-30 | 誤り検出訂正方法および半導体メモリ装置 |
Country Status (3)
| Country | Link |
|---|---|
| US (1) | US9015548B2 (ja) |
| JP (1) | JP2012050008A (ja) |
| CN (1) | CN102386931A (ja) |
Families Citing this family (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR101968746B1 (ko) * | 2011-12-30 | 2019-04-15 | 삼성전자주식회사 | 저장 장치로부터 데이터를 읽는 읽기 방법, 에러 정정 장치, 그리고 에러 정정 코드 디코더를 포함하는 저장 시스템 |
| US8966355B2 (en) * | 2012-02-15 | 2015-02-24 | Infineon Technologies Ag | Apparatus and method for comparing pairs of binary words |
| US9740558B2 (en) | 2015-05-31 | 2017-08-22 | Intel Corporation | On-die ECC with error counter and internal address generation |
| US9817714B2 (en) | 2015-08-28 | 2017-11-14 | Intel Corporation | Memory device on-die error checking and correcting code |
| KR20180009558A (ko) | 2016-07-19 | 2018-01-29 | 삼성전자주식회사 | 저밀도-패리티 체크 코드를 이용하는 디코더 및 이를 포함하는 메모리 컨트롤러 |
| CN111078461B (zh) * | 2019-11-30 | 2023-09-15 | 国网辽宁省电力有限公司锦州供电公司 | 数据信息三维crc校验方法 |
| US12411728B2 (en) | 2022-09-13 | 2025-09-09 | SanDisk Technologies, Inc. | NAND fast cyclic redundancy check |
Family Cites Families (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7702986B2 (en) * | 2002-11-18 | 2010-04-20 | Qualcomm Incorporated | Rate-compatible LDPC codes |
| US7783961B2 (en) * | 2005-07-01 | 2010-08-24 | Nec Laboratories America, Inc. | Rate-compatible low density parity check coding for hybrid ARQ |
| KR100856235B1 (ko) | 2005-09-26 | 2008-09-03 | 삼성전자주식회사 | 가변 부호화율을 가지는 블록 저밀도 패리티 검사 부호부호화/복호 장치 및 방법 |
| KR101119302B1 (ko) * | 2007-04-20 | 2012-03-19 | 재단법인서울대학교산학협력재단 | 통신 시스템에서 저밀도 패리티 검사 부호 부호화 장치 및방법 |
| KR100949519B1 (ko) * | 2007-12-18 | 2010-03-24 | 한국전자통신연구원 | 낮은 복잡도 및 고속 복호를 위한 패리티 검사행렬 생성방법과, 그를 이용한 저밀도 패리티 검사 부호의 부호화장치 및 그 방법 |
| JP5007676B2 (ja) * | 2008-01-31 | 2012-08-22 | 富士通株式会社 | 符号化装置、復号化装置、符号化・復号化装置及び記録再生装置 |
-
2010
- 2010-08-30 JP JP2010192697A patent/JP2012050008A/ja active Pending
-
2011
- 2011-03-04 US US13/040,763 patent/US9015548B2/en active Active
- 2011-03-18 CN CN2011100667882A patent/CN102386931A/zh active Pending
Also Published As
| Publication number | Publication date |
|---|---|
| US20120054580A1 (en) | 2012-03-01 |
| CN102386931A (zh) | 2012-03-21 |
| US9015548B2 (en) | 2015-04-21 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US11740960B2 (en) | Detection and correction of data bit errors using error correction codes | |
| US8448050B2 (en) | Memory system and control method for the same | |
| US10027480B2 (en) | Physically unclonable function circuits and methods of performing key enrollment in physically unclonable function circuits | |
| JP5768022B2 (ja) | メモリコントローラ、記憶装置、誤り訂正装置および誤り訂正方法 | |
| JP5509165B2 (ja) | 誤り訂正符号化装置、誤り訂正復号装置、不揮発性半導体記憶システム及びパリティ検査行列生成方法 | |
| CN101946230B (zh) | 用于检测和校正所接收的符号串中的定相突发差错、删除、符号差错和位差错的方法和系统 | |
| CN103886915B (zh) | 用于校正包括邻近2比特错误的3比特错误的电路和方法 | |
| US9015548B2 (en) | Error detection correction method and semiconductor memory apparatus | |
| US10389383B2 (en) | Low-complexity LDPC encoder | |
| US10090860B2 (en) | Memory system using integrated parallel interleaved concatenation | |
| KR102607761B1 (ko) | 극 부호를 이용하는 복호화를 위한 복호 위치 제어 정보 생성 방법 및 장치 | |
| US10567007B2 (en) | Device and method of processing a data word using checkbits | |
| Xie et al. | Miscorrection mitigation for generalized integrated interleaved BCH codes | |
| US9960788B2 (en) | Memory controller, semiconductor memory device, and control method for semiconductor memory device | |
| US20170264320A1 (en) | Code reconstruction scheme for multiple code rate tpc decoder | |
| CN102298973B (zh) | 抗辐射故障保护型存储装置及其抗辐射故障保护方法 | |
| CN108628698B (zh) | 计算crc编码的方法和装置 | |
| KR101154923B1 (ko) | 비씨에이치 디코더, 이를 포함하는 메모리 시스템 및 비씨에이치 디코딩 방법 | |
| CN103151078B (zh) | 一种存储器检错纠错码生成方法 | |
| JP2023045450A (ja) | シンドローム計算回路、誤り訂正回路およびメモリシステム | |
| KR101226439B1 (ko) | 리드-솔로몬 디코더, 이를 포함하는 메모리 시스템 및 디코딩 방법 | |
| JP3743915B2 (ja) | スポッティバイト誤り訂正・検出方法及び装置 | |
| Qamar et al. | An efficient encoding algorithm for (n, k) binary cyclic codes | |
| US12021545B2 (en) | Data interleaver for burst error correction | |
| JP5999634B2 (ja) | 演算回路設定方法 |