JP5121947B2 - 誤り訂正装置および誤り訂正方法 - Google Patents

誤り訂正装置および誤り訂正方法 Download PDF

Info

Publication number
JP5121947B2
JP5121947B2 JP2011005935A JP2011005935A JP5121947B2 JP 5121947 B2 JP5121947 B2 JP 5121947B2 JP 2011005935 A JP2011005935 A JP 2011005935A JP 2011005935 A JP2011005935 A JP 2011005935A JP 5121947 B2 JP5121947 B2 JP 5121947B2
Authority
JP
Japan
Prior art keywords
error
error correction
circuit
unit
block
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.)
Expired - Fee Related
Application number
JP2011005935A
Other languages
English (en)
Other versions
JP2011119019A (ja
Inventor
陽 山家
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2011005935A priority Critical patent/JP5121947B2/ja
Publication of JP2011119019A publication Critical patent/JP2011119019A/ja
Application granted granted Critical
Publication of JP5121947B2 publication Critical patent/JP5121947B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Read Only Memory (AREA)
  • Error Detection And Correction (AREA)
  • For Increasing The Reliability Of Semiconductor Memories (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Description

本発明の実施形態は、誤り訂正装置および誤り訂正方法に関する。
近年、保持された電荷量に応じて情報を記憶するフラッシュメモリなどの半導体素子が広く知られている。また、電荷量の閾値を複数設定することにより2ビット以上の情報を記憶する多値メモリ技術も開発されている。
このような半導体メモリ素子では、時間経過の増大とともに電荷が放電されていくため、閾値を超えて電荷が放電されると情報の読み出し時に誤りが発生する。特に、多値型のメモリ素子では一般に閾値の間隔が狭いため、誤りが発生する可能性が高くなる。
上記のような半導体メモリ素子を用いた記憶装置では、誤った情報を正しく復元するための誤り訂正機構が設けられていることがある(例えば、特許文献1参照)。
しかしながら、かかる誤り訂正機構において、誤り訂正能力を超える誤りが発生した場合には、正しく誤り訂正を行なうことができない。このため、誤り訂正能力を超えた誤りがあると認識せずに訂正処理を行なうと更なる誤りを付加することになるという問題がある。
特開2007−87464号公報
本発明は、上記課題に鑑みてなされたものであり、データに誤り訂正能力を超える誤りがある場合に、さらなる誤りを付加することを防止することが可能な誤り訂正装置および誤り訂正方法を提供することを目的とする。
実施の形態によれば、不揮発性メモリから読み出されたデータに含まれる誤りデータを訂正する誤り訂正機能を備えた誤り訂正装置において、前記不揮発性メモリから読み出されたデータに、誤り訂正能力を超える誤りがあるか否かを判定する判定手段を備え、前記判定手段は、誤り位置多項式を算出して誤り個数を計算する第1の誤り個数計算手段と、誤り無し領域と訂正対象領域とで構成されるデータのうち、前記訂正対象領域をチェン探索して誤り個数を計算する第2の誤り個数計算手段と、前記第1の誤り個数計算手段で計算された誤り個数と前記第2の誤り個数計算手段で計算された誤り個数とが一致しない場合に前記誤り訂正能力を超えていると判定する比較手段と、を含み、前記比較手段で誤り訂正能力を超える誤りがあると判定された場合に、誤り訂正を行わない誤り訂正装置を提供する。
SSD(Solid State Drive)の構成例を示すブロック図である。 NANDメモリチップに含まれる1個のブロックの構成例を示す回路図である。 NANDメモリに書き込まれるデータ構成例を示す図である。 図3の第1の誤り訂正結果の一例を示す図である。 第1の誤り訂正処理結果の一例を示す図である。 第2の誤り訂正復号部の構成例を示す図である。 シンドローム計算器の回路構成例を示す図である。 第2の誤り訂正処理のデータの構成図である。 図7−1の具体例を示す図である。 誤りロケータ計算&誤り訂正器のチェンサーチ回路と誤り訂正部の構成例を示す図である。 ×α回路(α倍する回路)の構成図である。 ×α^32回路(α^32倍する回路)の構成図である。 ×α^111回路(α^111倍する回路)の構成図である。 ×α^2回路(α^2倍する回路)の構成図である。 ×α^64回路(α^64倍する回路)の構成図である。 ×α^222回路(α^222倍する回路)の構成図である。 回路選択部の構成例を示す図である。 回路選択部の動作を説明するための図である。 実施の形態2に係る第2の誤り訂正復号部の構成例を示す図である。 誤りロケータ計算&誤り訂正器のチェンサーチ回路と誤り訂正部の構成例を示す図である。 訂正不可能判定器の構成例を示す図である。 訂正不可能判定器の動作を説明するためのフローチャートである。
以下に、この発明の実施の形態につき図面を参照しつつ詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。また、下記実施の形態における構成要素には、当業者が容易に想定できるものまたは実質的に同一のものが含まれる。
(実施の形態1)
[SSDの構成]
図1は、本実施の形態にかかるSSD1を概略的に示すブロック図である。図1は、SSD(Solid State Drive)1の構成例を示すブロック図である。SSD1は、I/Fを介してホスト装置(ホスト)4と接続され、ホスト装置4の外部メモリとして機能する。
SSD1は、不揮発性メモリとしてのNANDフラッシュメモリ(以下、NANDメモリと略す)2と、ホスト装置4の指示に応じて、NANDメモリ2に対してデータのリード/ライトを行うNANDコントローラ3とを備えている。本実施の形態では、不揮発性メモリとしてNANDメモリを使用しているが、不揮発性メモリは、情報を不揮発に記憶し、時間の経過に伴って記憶されているデータに変化が生じ得る特徴を有すれば、どのような記憶装置であっても構わない。
NANDメモリ2は、データ消去の単位である複数のメモリブロックBLKから構成されている。メモリブロックBLKの構成について、図2を用いて説明する。図2は、いずれかのメモリブロックBLKの構成を示す等価回路図である。
メモリブロックBLKは、X方向に沿って配置されたm(mは、1以上の整数)個のN
ANDストリングを備えている。各NANDストリングは、選択トランジスタST1、S
T2、およびn(nは、1以上の整数)個のメモリセルトランジスタMTを備えている。m個のNANDストリングにそれぞれ含まれる選択トランジスタST1は、ドレインがビット線BL1〜BLmに接続され、ゲートが選択ゲート線SGDに共通接続されている。また、選択トランジスタST2は、ソースがソース線SLに共通接続され、ゲートが選択ゲート線SGSに共通接続されている。
各メモリセルトランジスタMTは、半導体基板上にゲート絶縁膜を介在して形成された
積層ゲート構造を備えたMOSFET(Metal oxide semiconductor field effect transistor)である。積層ゲート構造は、ゲート絶縁膜上に形成された電荷蓄積層(浮遊ゲート電極)と、電荷蓄積層上にゲート間絶縁膜を介在して形成された制御ゲート電極とを含んでいる。各NANDストリングにおいて、n個のメモリセルトランジスタMTは、選択トランジスタST1のソースと選択トランジスタST2のドレインとの間に、それぞれの電流経路が直列接続されるように配置されている。すなわち、n個のメモリセルトランジスタMTを、隣接するもの同士でソース領域若しくはドレイン領域を共有するような形でY方向に直列接続させる。
そして、最もドレイン側に位置するメモリセルトランジスタMTから順に、制御ゲート
電極がワード線WL0〜WLnにそれぞれ接続されている。従って、ワード線WL1に接
続されたメモリセルトランジスタMTのドレインは選択トランジスタST1のソースに接
続され、ワード線WLnに接続されたメモリセルトランジスタMTのソースは選択トラン
ジスタST2のドレインに接続されている。
ワード線WL0〜WLnは、メモリブロックBLK内のNANDストリング間で、メモ
リセルトランジスタMTの制御ゲート電極を共通に接続している。つまり、メモリブロッ
クBLK内において同一行にあるメモリセルトランジスタMTの制御ゲート電極は、同一
のワード線WLに接続される。この同一のワード線WLに接続される複数のメモリセルは
1ページとして取り扱われ、このページごとにデータの書き込みおよびデータの読み出しが行われる。
また、ビット線BL1〜BLnは、メモリブロックBLK間で、選択トランジスタST
1のドレインを共通に接続している。つまり、複数のメモリブロックBLK内において同
一列にあるNANDストリングは、同一のビット線BLに接続される。
メモリセルトランジスタMTは、浮遊ゲート電極に蓄えられる電子の数に応じて閾値電
圧が変化し、この閾値電圧の違いに応じた情報を記憶する。メモリセルトランジスタMT
は、1ビットの情報を記憶するように構成されていてもよいし、複数ビット(多値)の情報を記憶するように構成されていてもよい。本発明による実施例では、特に閾値の間隔が狭い多値のメモリセルトランジスタMTに対して有効である。そして、NANDメモリ2内のセンスアンプ、および電位発生回路等を含む制御回路(図示せず)は、NANDメモリ2に供給されたデータをメモリセルトランジスタMTに書き込み、メモリセルトランジスタMTに記憶されているデータをNANDメモリ2の外部に出力することが可能な構成を有している。
図1において、NANDコントローラ3は、ホスト装置4とのインタフェース処理を行うホストI/F10、NANDメモリ2とのインタフェース処理を行い、データのリード/ライトを制御するNAND I/F20と、NANDメモリ2に書き込むデータに対して、誤り訂正符号を生成する誤り訂正符号部30と、NANDメモリ2から読み出されたデータに対して、誤り検出および誤り訂正を行う誤り訂正復号部40とを備えている。
誤り訂正符号部30は、第1の誤り訂正符号生成部31と、第2の誤り訂正符号生成部32とを備えている。第1の誤り訂正符号生成部31は、書き込みデータに対して、所定のブロックBK単位で、その誤り訂正を行うための第1の誤り訂正符号を生成する。ここで、第1の誤り訂正符号としては、1ビットあるいは複数ビットの誤りを訂正できる誤り訂正符号を用いることができ、本実施の形態では、32ビットのデータ構成されるブロックBK単位で1ビットの訂正能力がある6ビットのハミング符号(第1の誤り訂正符号)を生成する。
第2の誤り訂正符号生成部32は、NANDメモリ2の書き込みデータに対して、複数個のブロック単位で、その誤り訂正を行うための第2の誤り訂正符号を生成する。第2の誤り訂正符号としては、複数ビットの誤りを訂正できる誤り訂正符号を用いることができ、例えば、BCH符号(Bosechaudhurihocquenghem code)やRS符号を使用することができ、本実施の形態では、4個のブロック(128ビット)単位で、2ビットの訂正能力がある16ビットのBCH符号を生成する。
図3は、NANDメモリ2に書き込まれるデータ構成例を示す図である。同図に示すように、32ビットのデータ構成されるブロックBK単位で1ビットの訂正能力がある6ビットのハミング符号(第1の誤り訂正符号)が付加され、さらに、4個のブロックBK(128ビット)単位で2ビットの訂正能力がある16ビットのBCH符号(第2の誤り訂正符号)が付加されている。
誤り訂正復号部40は、第1の誤り訂正復号部42と、第2の誤り訂正復号部41とを備えている。第1の誤り訂正復号部42は、NANDメモリ2からの読み出しデータに対して、ブロックBK単位で、そのハミング符号を用いて第1の誤り訂正を行う。また、第1の誤り訂正後のデータに対して、誤り検出を行い、誤り訂正結果を第2の誤り訂正復号部41に出力する。第2の誤り訂正復号部41は、第1の誤り訂正後のデータに対して、誤り訂正結果を参照し、4つのブロックBK単位でBCH符号を使用して第2の誤り訂正を行う。
上記構成のSSD1の動作の概略を説明する。ホスト装置4からSSD1に書き込みを要求するデータ(書き込みデータ)が供給されると、ホストI/F10は、受信した書き込みデータを誤り訂正符号部30に供給する。誤り訂正符号部30では、書き込みデータに対して、第1および第2の誤り訂正符号を生成する。NAND I/F20は、第1および第2の誤り訂正符号を付加した書き込みデータをNANDメモリ2に書き込む。
また、SSD1は、ホスト装置4からデータの読み出し要求が入力されると、NAND I/F20は、読み出しを要求されているデータ(読み出しデータ)とこれに付加された第1および第2の誤り訂正符号を読み出して、誤り訂正復号部40に供給する。誤り訂正復号部40は、読み出しデータに対して第1および第2の誤り訂正を行う。誤り訂正後のデータは、ホストI/F10によりホスト装置4に転送される。
[第2の誤り訂正復号部]
図4〜図11を参照して、第2の誤り訂正復号部41の構成および動作を詳細に説明する。図4−1は、第1の誤り訂正後のデータ構成例、図4−2は、第1の誤り訂正処理結果の一例を示す図である。図5は、第2の誤り訂正復号部の構成例を示す図である。図6はシンドローム計算器の回路構成例を示す図である。
第2の誤り訂正復号部41は、図5に示すように、第1の誤り訂正済みの読み出しデータのシンドローム値を計算するシンドローム計算器51と、データを一時記憶するためのメモリ52と、シンドローム値に基づいて誤り位置多項式を生成する誤り位置多項式計算器53と、誤り位置多項式の根を算出して誤り位置を特定して誤り位置のデータを訂正するとともに、データの訂正対象領域の誤り個数を計算する誤りロケータ計算&誤り訂正器54と、誤り位置多項式計算器53で計算された誤り個数と、誤りロケータ計算&誤り訂正器54で計算された誤り個数とを比較する比較器55と、および誤りロケータ計算&誤り訂正器54による誤り訂正後のデータと、メモリ52に蓄えられている誤り訂正前のデータを選択する選択器56で構成される。
本実施の形態では、誤り訂正能力の範囲内のデータの誤りがある場合には、誤りロケータ計算&誤り訂正器54の誤り位置は正しい誤り位置を示し、誤り訂正能力を超えた誤りがある場合には、誤った誤り位置を示す確率が高いという点に着目して、訂正対象領域の誤りの個数と誤り位置多項式の計算で求まった誤り個数と比較し、一致しなければ誤り訂正能力を超えている判断して、誤り訂正不可と判定し、誤り訂正を行わないことにしている。
誤り位置多項式計算器53は、シンドローム多項式を用いて、誤り位置多項式を計算し、誤り位置多項式の係数を誤りロケータ計算&誤り訂正器54に出力する。また、誤り位置多項式計算器53は、誤り位置多項式から誤り個数を算出して、比較器55に出力する。
ここで、データに含まれる誤り個数が誤り訂正能力(nビット)を超えていた場合は、実際の誤り個数とは異なる個数が計算される。例えば、10ビットの誤り訂正能力を持つBCH符号が用いられている場合に30ビットの誤りがある時に、10ビットの誤りと計算される場合がある。
誤りロケータ計算&誤り訂正器54は、誤り位置多項式計算部53から受け取った誤り位置多項式の係数を用いて、チェンサーチを行って訂正対象領域の誤り位置を計算すると共にその誤り個数をカウントし、メモリ52に格納した訂正前のデータを読み出して誤り訂正を行う。誤りロケータ計算&誤り訂正器54は、誤り訂正後のデータを選択器56に出力するとともに、カウントした訂正対象領域の誤り個数を比較器55に出力する。
比較器55は、誤り位置多項式計算器53から受け取った誤り個数と、誤りロケータ計算&誤り訂正器54から受け取った対象領域の誤り個数とを比較し、一致している場合は、誤り訂正の結果が正しい旨を示す正常情報(例えば、「1」)を選択器56に出力する一方、一致していない場合は、誤り訂正能力を超えた誤りがあると判断して、誤り訂正の結果が異常である旨を示す異常情報(例えば、「0」)を選択器56に出力する。
選択器56は、比較器55から正常信号が入力された場合には、誤りロケータ計算&誤り訂正器54から入力される誤り訂正後のデータをホスト装置4に転送する一方、比較器55から異常信号が入力された場合には、メモリ52に格納した訂正前のデータをホストと装置4に転送する。
以下、第1および第2誤り訂正復号部42,41での誤り訂正復号動作を詳細に説明する。ホスト装置4よりNANDメモリ2への読み出し要求が発生すると、NAND IF20はNANDメモリ2から要求されたデータを読み出し、第1の誤り訂正復号部42に出力する。
第1の誤り訂正復号部42は、NANDメモリ2から読み出したデータ(データブロック、ハミング符号、BCH符号)が入力され、各ブロックBK毎に、ハミング符号を使用して第1の誤り訂正を行う。本実施の形態では、ハミング符号は1ビットの誤り訂正能力を持つため、2ビット以上の誤りは訂正できない。第1の誤り訂正復号部42では、第1の誤り訂正処理により、ブロックBKの誤り訂正ができたか否か検出する。具体的には、例えば、第1の誤り訂正後のブロックBKについてシンドローム計算を行って、その計算結果(「0」=誤り無し)から誤り訂正ができたか否かを判断することができる。また、ブロックBK毎に誤り検出符号を付加して、誤り検出符号を使用して第1の誤り訂正後のデータにエラーが無いかを検出することにしてもよい。
第1の誤り訂正復号部42は、ハミング符号を廃棄して、第1の誤り訂正処理後のデータブロックBK、BCH符号、および各データブロックBKの第1の誤り訂正処理結果(第1の誤り訂正復号結果)を第2の誤り訂正復号部41に出力する。以下の説明では、図4−1に示すように、第1の誤り訂正後の読み出しデータのうち、BK0,BK2に誤りがあるものとして説明する。図4−2は、図4−1の第1の誤り処理の結果(1ビット)を示す図である。同図において、「0」=誤り無し、「1」=誤りありを示している。
第2の誤り訂正復号部41では、第1の誤り訂正処理後のブロックBK、BCH符号、および各ブロックBKの第1の誤り訂正結果(1ビット)がメモリ52に格納されると共に、第1の誤り訂正処理後のブロックBK、BCH符号がシンドローム計算器51に入力される。なお、以下の説明では、第2の誤り訂正符号生成部32でBCH符号化を行う場合に、下記式(1)に示す原始多項式G(X)を用いたものとして説明する。原始多項式G(X)=x^8+x^4+x^3+x^2+1・・・(1)
シンドローム計算器51では、図6に示すように、BK0,1,2,3およびBCH符号のdata[0]〜data[143]の順に1ビットづつ入力されて、シンドローム計算を行い、シンドローム計算結果S0[7:0]〜S3[7:0]を誤り位置多項式計算器53に出力する。
図5において、誤り位置多項式計算器53は、シンドローム計算結果S0[7:0]〜S3[7:0]を使用して、誤り位置多項式σ(Z)=1+σ0Z+σ1Z^2の係数σ1およびσ2を算出する。ここでは、ピーターソン法を用いて説明する。他にバーレーカンプ・マッシイ法(BM法)、ユークリッド互除法等を使用することができる。ピータソン法では、シンドローム計算値S0〜S3を用いて、下記式(2)の行列式を演算して、誤り位置多項式の係数σ0およびσ1を算出する。誤り位置多項式計算器53で算出された誤り位置多項式の係数σ0[7:0]およびσ1[7:0]は、誤りロケータ計算&誤り訂正器54に出力される。
Figure 0005121947
誤りロケータ計算&誤り訂正器54は、誤り位置多項式計算器53から受け取った誤り位置多項式の係数σ0[7:0]およびσ1[7:0]に基づいて、チェンサーチを行って誤り位置を特定し、メモリ52に格納されている第1の誤り訂正済みのデータに対して、第2の誤り訂正を行う。
誤りロケータ計算&誤り訂正器54は、図7−1に示すように、符号長を2^N−1(ここではN=8)=255ビット(固定長)とするために、処理対象のデータに対して、先頭の111ビットを0パディングして処理を行なう。この場合、上記図4−1の場合は、誤り無し領域は、図7−2に示すように、パディング領域と誤り無しと検出されたブロックBK1,3となる。本実施の形態では、誤りロケータ計算&誤り訂正器54は、先頭から誤り無し領域(パディング領域、第1の誤り訂正後に誤り無しと判断された領域)の処理は飛ばしてそれ以外の領域に対してのみ、誤りの個数をカウントすることで、高速に誤り個数をカウントしている。
図8は、誤りロケータ計算&誤り訂正器54のチェンサーチ回路61と誤り訂正部62の構成例を示す図である。図9−1は、チェンサーチ回路61の×α回路(α倍する回路(乗算回路))の構成図である。図9−2は、チェンサーチ回路61の×α^32回路(α^32倍する回路)の構成図である。図9−3は、チェンサーチ回路61の×α^111回路(α^111倍する回路)の構成図である。図9−4は、チェンサーチ回路61の×α^2回路(α^2倍する回路)の構成図である。図9−5は、チェンサーチ回路61の×α^64回路(α^64倍する回路)の構成図である。図9−6は、チェンサーチ回路61の×α^222回路(α^222倍する回路)の構成図である。図10は、チェンサーチ回路の回路選択部の構成を示す図である。
チェンサーチアルゴリズムとは、σ(z)にアルゴリズムαのべきαi(i=0,1,…,n−1)を逐次代入し、σ(αi)が0かどうかを調べる方法で、この方法による根の検索がチェンサーチ(Chien Search)と呼ばれる。
チェンサーチ回路61は、図8に示すように、セレクタSEL0,1に切替信号を出力する回路選択部71と、×α回路76、×α^32回路75、および×α^111回路74の出力を択一的に選択して出力するセレクタSEL0と、×α^2回路79、×α^64回路78、および×α^222回路77の出力を択一的に選択して出力するセレクタSEL1と、レジスタ0,1と、EXOR演算回路80と、EXOR演算回路80の出力が「1」となる回数をカウントして、そのカウント値を誤り個数として、比較器55(図5参照)に出力する誤り数カウント部81とを備えている。
また、チェンサーチ回路61は、レジスタ出力をレジスタ入力に帰還する乗算器として、1ビット処理部(×α回路76、×α^2回路79)と、32ビット処理部(×α^32回路75および×α^64回路78)と、111ビット処理部(×α^111回路74,×α^222回路77)とを備えている。
本実施の形態のチェンサーチ回路61は、1ビット処理部(×α回路76および×α^2回路79)に加えて、32ビット処理部(×α^32回路75,×α^64回路78)、111ビット処理部(×α^111回路74、×α^222回路77)を備えることでチェンサーチを高速化している。
1ビット処理部(×α回路76およびα^2回路79)は、誤り訂正対象領域のブロックを1ビット単位で処理するときに使用する。32ビット処理部(×α^32回路75および×α^64回路78)は、誤り訂正対象外領域のうち誤り検出で誤り無しと判定されたブロック(32ビット)を処理するときに使用し、32ビットデータを1サイクル(1度)で処理することができる。111ビット処理部(×α^111回路74および×α^222回路77)は、誤り訂正対象外領域のうち0でパディングされたパディング領域(111ビット)を処理するときに使用し、111ビットデータを1サイクル(1度)で処理することができる。
誤り訂正部62は、データを反転出力する反転器82と、EXOR演算結果が「1」の場合は、入力データの反転値を出力し、EXOR演算結果が1以外の値の場合は入力データをそのまま出力するセレクタ83とを備えている。
チェンサーチ回路61の処理フローについて説明する。まず、誤り位置多項式計算で計算された係数σ0[7:0]およびσ1[7:0]をレジスタ0およびレジスタ1に取り込む。
(1)先頭の0パディング領域の処理に移る。この部分は誤りがないことが判明しているので、回路選択部71は、×α^111回路、×α^222回路を選択させる選択信号をSEL0,1に出力する。セレクタSEL0,1は、×α^111回路74の出力(d0[7:0])および×α^222回路77の出力(d1[7:0])をそれぞれ選択し、レジスタ0およびレジスタ1に各々取り込む。これにより、0パディング領域(111ビット)の処理を1サイクルで(一度に)行うことができ、0パディング領域(111ビット)の処理を高速化することが可能となる。
(2)ブロックBK0の処理を行なう。ブロックBK0は誤り対象ブロックBKである。まず、誤り訂正部62は、メモリ53からブロックBK0の先頭データBK0[0]を取り出す。次に、×α回路76の出力(b0[7:0])およびα^2回路79の出力(b1[7:0])を選択し、レジスタ0およびレジスタ1に取り込む。誤り訂正部62のセレクタ83は、レジスタ0とレジスタ1のEXOR演算部80のEXOR演算結果が「1」ならば、BK0[0]の値の反転値を出力する。EXOR演算結果が1以外の値であればBK0[0]の値をそのまま出力する。次に、誤り訂正部62はメモリ53からブロックBK0の2番目のデータBK0[1]を取り出す。×α回路76の出力(b0[7:0])および×α^2回路79の出力(b1[7:0])を選択し、レジスタ0およびレジスタ1に取り込む。レジスタ0とレジスタ1のEXOR演算結果が1ならば、BK0[1]の値の反転値を出力する。EXOR演算結果が1以外の値であればBK0[1]の値をそのまま出力する。以下、同様にブロックBK0の最後のデータBK0[31]まで繰り返す。このようにして、BK0については1ビット単位の処理が行われる。
(3)ブロックBK1の処理を行なう。ブロックBK1は誤り訂正対象外ブロックなので、×α^32回路75の出力(c0[7:0])および×α^64回路78の出力(c1[7:0])をレジスタ0およびレジスタ1に取り込む。これにより、誤り訂正対象外ブロック(32ビット)の処理を一度に行うことができ、誤り訂正対象外ブロック(32ビット)の処理を高速化することができる。
(4)ブロックBK2の処理を行なう。ブロックBK2は誤り訂正対象ブロックである。3)と同様に、メモリ53からブロックBK2の先頭データBK2[0]から最後のデータBK2[31]までを取り出して処理を行なう。
(5)ブロックBK3の処理を行なう。ブロックBK3は誤り訂正対象外ブロックである。×α^32回路75の出力(c0[7:0])および×α^64回路78の出力(c1[7:0])をレジスタ0およびレジスタ1に取り込む。
図10は、回路選択部71の構成例を示す図である。回路選択部71は、第1の誤り訂正復号結果記憶部91と、セレクタ92と、ブロックカウント部93と、ビットカウント部95と、ビット比較部97と、判定部98とを備えている。
第1の誤り訂正復号結果記憶部91は、各ブロックBK0〜3毎の第1の誤り訂正復号結果を保存する。「0」は誤り訂正できたBK(第2誤り訂正復号の対象外ブロック)を示す。「1」は誤り訂正できなかったBK(第2誤り訂正復号の対象ブロック)を示す。
ビットカウント部95は、1ブロックBK中の現在の処理位置であるビットカウンタ値をカウントしてビット比較部97に出力する(ビットカウンタ値=0〜31)。ブロックカウント部93は、4ブロックBK中の現在の処理ブロックであるブロックカウンタ値をカウントして、セレクタ92に出力する(ブロックカウンタ値=0〜3)。ビット比較部97は、ビットカウンタ値がブロックサイズに等しいか否かを判断して、ビットカウンタ値がブロックサイズに等しい場合には、ブロックカウント部93に、ブロックカウンタ値をインクリメントさせる。
セレクタ92は、ブロックカウンタ値が示すブロックの第1の誤り訂正復号結果記憶部111に格納されている第1の誤り訂正復号結果を判定部98に出力する。判定部98は、セレクタ92から出力される現在の処理ブロックの第1の誤り訂正復号結果に基づいて、1ビット処理回路(×α回路76および×α^2回路79)、32ビット処理回路(×α^32回路75,×α^64回路78)、111ビット処理回路(×α^111回路74、×α^222回路77)のいずれかを選択して、選択信号をセレクタSEL0、1に出力する。判定部98は、処理開始直後は、パディング領域を処理するために111ビット処理部(×α^111回路74、×α^222回路77)を選択する。また、判定部98は、現在の処理ブロックが誤り訂正対象外ブロックの場合は、32ビット処理部(×α^32回路75,×α^64回路78)を選択する。また、判定部98は、現在の処理ブロックが誤り訂正対象ブロックの場合は、1ビット処理部(×α回路76および×α^2回路79)を選択する。
図11は、回路選択部71の動作を説明するためのフローチャートである。図11において、まず、判定部98は、111ビット処理部(×α^111回路74、×α^222回路77)を選択する(ステップS11)。つぎに、判定部98は、ブロックカウンタ値が示す第1の誤り訂正復号結果記憶部91の値が「1」であるか否かを判定し(ステップS12)、「1」である場合には(ステップS12の「Yes」)、1ビット処理部(×α回路76、×α^2回路79)を選択する(ステップS16)。そして、ビットカウント部95はビットカウンタ値をインクリメントし(ステップS17)、ビット比較部97は、ビットカウント値がブロックサイズ「32」に等しいか否かを判断する(ステップS18)。ビットカウンタ値がブロックサイズに等しい場合には(ステップS18の「Yes」)、ステップS14に移行する一方、ビットカウンタ値がブロックサイズに等しくない場合には(ステップS18の「No」)、ステップS17に戻る。
上記ステップS12で、判定部98は、ブロックカウンタ値が示す第1の誤り訂正復号結果記憶部91の値が「1」でない場合には(ステップS12の「No」)、32ビット処理部(×α^32回路75,×α^64回路78)を選択する(ステップS13)。そして、ブロックカウント部95はブロックカウンタをインクリメントする(ステップS14)。そして、ブロックカウンタ値が「4」である場合には(ステップS15の「Yes」)、当該フローを終了する一方、ブロックカウンタ値が「4」でない場合には(ステップS15の「No」)、ステップS12に戻る。
以上説明したように、本実施の形態によれば、第2の誤り訂正の訂正能力を超えた誤りがあるか否かを判断し、第2の誤り訂正能力を超えた誤りがあると判断した場合には、第2の誤り訂正を行わないこととしたので、誤り訂正能力を超えた誤りがある場合に、さらなる誤りを付加することを避けることが可能となる。
また、本実施の形態によれば、比較器55は、誤り位置多項式計算器53から受け取った誤り個数と、誤りロケータ計算&誤り訂正器54から受け取った対象領域の誤り個数とを比較し、一致していない場合は、誤り訂正能力を超えた誤りがあると判断することとしたので、簡単かつ低コストな方法で誤り訂正能力を超えた誤りがあるかを判断することが可能となる。
また、誤りロケータ計算&誤り訂正器54は、誤り無し領域については、誤り個数をカウントしないで、それ以外の領域に対してのみ、誤りの個数(誤り訂正した個数)をカウントすることとしたので、高速に誤り個数をカウントすることが可能となる。
(実施の形態2)
図12〜図15を参照して、実施の形態2にかかる第2の誤り訂正復号部41について説明する。実施の形態2では、誤り訂正能力の範囲内のデータの誤りがある場合には、誤りロケータ計算&誤り訂正器101の誤り位置は正しい誤り位置を示し、誤り訂正能力を超えた誤りがある場合には、誤った誤り位置を示す確率が高いという点に着目して、上記図7−2において、誤りロケータ計算&誤り訂正器101では、先頭から誤り位置を検出し、誤り位置が誤り無しの領域(訂正対象外の領域)で発見された時点で、誤り訂正能力を超えていると判断して、誤り訂正不可を判定し、以降の誤り位置の検出を行わない構成である。
図12は、実施の形態2にかかる第2の誤り訂正復号部41の構成を示す図である。実施の形態2にかかる第2の誤り訂正復号部41は、シンドローム計算を行うシンドローム計算器51と、データを一時記憶するためのメモリ52と、誤り位置多項式計算器53と、誤りロケータ計算&誤り訂正器101と、訂正不可能判定器102と、第2の誤り訂正後のデータと、メモリ52に蓄えられている第2の誤り訂正前のデータを選択する選択器56で構成される。
シンドローム計算器51は、シンドローム多項式の計算を行い、計算したシンドローム多項式を誤り位置多項式計算器53に出力する。誤り位置多項式計算器53は、シンドローム多項式を用いて、誤り位置多項式を計算して、誤り位置多項式の係数を誤りロケータ計算&誤り訂正器101に出力する。
誤りロケータ計算&誤り訂正器101は、誤り位置多項式計算器53から入力される誤り位置多項式の係数を用いて、チェンサーチを行って誤り位置を計算し、メモリ52に格納した訂正前のデータを読み出して誤り訂正を行い、誤り訂正後のデータを選択器56に出力する。また、誤りロケータ計算&誤り訂正器101は、誤りを検出した場合に、誤り検出信号を訂正不可能判定器102に出力する。
訂正不可能判定器102は、第1の誤り訂正復号部42から入力される第1の誤り訂正結果と、誤りロケータ&誤り訂正器101から入力される誤り検出信号とに基づいて、誤りが検出された領域が、誤り無し領域(パディング領域および誤り検出で誤り無しと判定された領域)である場合には、誤り訂正不能(誤り訂正能力を超えている)と判断して処理を終了すると共に、選択器56に、誤り訂正不能である旨を示す異常信号を出力する。
選択器56は、誤りロケータ計算&誤り訂正器101から入力される誤り訂正後のデータをホスト装置4に転送する一方、訂正不可能判定器102から異常信号が入力された場合には、メモリ52に格納している誤り訂正前のデータをホスト装置4に転送する。
誤りロケータ計算&誤り訂正器101は、図7−1に示すように、符号長を2^N−1(ここではN=8)=255ビット(固定長)とするために、処理対象のデータに対して、先頭の111ビットを0パディングして処理を行なう。この場合、上記図4−1の場合は、誤り無しの領域は、図7−2に示すように、パディング領域と誤り無しと検出されたブロックBK1,3となる。
図13は、誤りロケータ計算&誤り訂正器101のチェンサーチ回路61と誤り訂正部62の構成例を示す図である。図13において、図8と同等機能を有する部位には、同一符号を付し、共通する部分の説明は省略する。図13に示すチェンサーチ回路61は、標準的な回路構成となっており、図8の32ビット処理部および111ビット処理部は設けられておらず、上記図7−2に示す誤り無し領域(パディング領域、第1の誤り訂正後に誤り無しと判断された領域)も他の領域と同様に処理される。EXOR演算部80の出力は誤り検出信号(「1」=誤りあり、「0」=誤り無し)として、訂正不可能判定器102に出力される。
図14は、訂正不可能判定器102の構成例を示す図である。訂正不可能判定器102は、図14に示すように、第1の誤り訂正復号結果記憶部111と、選択部112と、パティングカウント部115と、ビットカウント部119と、ブロックカウント部113と、制御部116とを備えている。
第1の誤り訂正復号結果記憶部111は、第1の誤り訂正復号部42から入力される第1の誤り訂正復号結果を記憶する。パティングカウント部115は、パディング領域の現在の処理位置を示すパディングカウンタ値をカウントして制御部116に出力する。ビットカウント部119は、ブロックBK中の現在の処理位置を示すビットカウンタ値をカウントして制御部116および選択部112に出力する。ブロックカウント部113は、4ブロックのうちの現在の処理ブロック位置を示すブロックカウンタ値をカウントして制御部116に出力する。選択部112は、ブロックカウンタ値が示すブロックの第1の誤り訂正復号結果記憶部111に格納されている第1の誤り訂正復号結果を制御部116に出力する。制御部116は、パティングカウント部115、ブロックカウント部113、およびビットカウント部119の出力から現在の処理位置を判定し、第1誤り訂正復号結果記憶部111に格納される第1の誤り訂正復号結果に基づいて、現在の処理位置が誤り無し領域か否かを判定する。さらに、制御部116は、誤りロケータ&誤り訂正器101からの誤り検出信号(「1」)が入力された場合に、現在処理している領域が誤り無し領域である場合には、誤り訂正不能と判断して、処理を終了し、選択部56に、誤り訂正不能である旨を示す異常信号を出力する。
図15は、訂正不可能判定器102の動作を説明するためのフローチャートである。図15において、まず、制御部116は、誤り検出信号が「1」であるか否かを判定する(ステップS20)。誤り検出信号が「1」である場合には(ステップS20の「Yes」)、メモリ52からの訂正前データを選択して、ホスト装置4に出力する(ステップS23)。他方、誤り検出信号が「1」でない場合には(ステップS20の「No」)、パティングカウント部115はパディングカウンタ値を「1」インクリメントし(ステップS24)、パディングカウンタ値がパディング長と等しいか否かを判定する(ステップS25)。パディングカウンタ値がパディング長と等しくない場合には(ステップS25の「No」)、ステップS20に戻る一方、パディングカウンタ値がパディング長と等しい場合には(ステップS25の「Yes」)、次の誤り検出信号は「1」であるか否かを判定する(ステップS21)。
次の誤り検出信号が「1」でない場合には(ステップS21の「No」)、ステップS26に移行する一方、次の誤り検出信号が「1」である場合には(ステップS21の「Yes」)、ブロックカウンタ値が示すブロックは、訂正対象外か否かを判定する(ステップS22)。
ブロックカウンタ値が示すブロックが訂正対象外である場合には(ステップS22の「No」)、メモリ52から訂正前データを選択して、ホスト装置4に出力する(ステップS23)。他方、ブロックカウンタ値が示すブロックが訂正対象外でない場合には(ステップS22の「Yes」)、ステップS26に移行する。
ステップS26では、ビットカウント部119はビットカウンタ値を「1」インクリメントし、ビットカウンタ値がブロックサイズと一致するか否かを判定する(ステップS27)。ビットカウンタ値がブロックサイズと一致しない場合には(ステップS27の「No」)、ステップS21に戻る一方、ビットカウンタ値がブロックサイズと一致する場合には(ステップS27の「Yes」)、ブロックカウント部113は、ブロックカウンタ値をインクリメントし(ステップS28)、ブロックカウンタ値が「4」であるか否かを判定する(ステップS29)。ブロックカウンタ値が「4」でない場合には(ステップS29の「No」)、ステップS21に戻る一方、ブロックカウンタ値が「4」である場合には(ステップS29の「Yes」)、誤りロケータ計算&誤り訂正器101で誤り訂正されたデータをホスト装置4に転送する(ステップS20)。
以上説明したように、実施の形態2によれば、訂正不可能判定器102は、第1の誤り訂正復号部42から入力される第1の誤り訂正結果と、誤りロケータ&誤り訂正器101から入力される誤り検出信号とに基づいて、誤りが検出された領域が、誤り無し領域(パディング領域および誤り検出で誤り無しと判定された領域)である場合には、誤り訂正能力を超えていると判断することとしたので、簡単な構成で誤り訂正能力を超えているか否かを判断することが可能となる。
なお、上記した実施の形態では、ブロックのサイズを32ビット、BCH符号を2ビットの訂正能力がある16ビットサイズ、パディング領域を111ビットとしたが、本発明はこれに限られるものではなく、ブロックのサイズ、BCH符号の訂正能力およびサイズ、パディング領域のサイズは如何なる値としてもよい。
また、上記実施の形態では、本発明をNANDメモリを有するSSDに適用するようにしたが、NOR型などの他のフラッシュEEPROMを有するSSDに本発明を適用するようにしてもよい。
また、本発明の各実施形態における各機能ブロックは、ハードウェア、コンピュータソ
フトウェア、のいずれか、または両者の組み合わせとして実現することができる。このため、各ブロックは、これらのいずれでもあることが明確となるように、概してそれらの機能の観点から以下に説明される。このような機能が、ハードウェアとして実行されるか、またはソフトウェアとして実行されるかは、具体的な実施態様またはシステム全体に課される設計制約に依存する。当業者は、具体的な実施態様ごとに、様々な方法でこれらの機能を実現し得るが、そのような実現を決定することは本発明の範疇に含まれるものである。
1 SSD(Solid State Drive)
2 NANDメモリ
3 NANDコントローラ
4 ホスト装置
10 ホストI/F
20 NAND I/F
30 誤り訂正符号部
31 第1の誤り訂正符号生成部
32 第2の誤り訂正符号生成部
40 誤り訂正復号部
41 第2の誤り訂正復号部
42 第1の誤り訂正復号部
50 シンドローム計算器
51 誤り位置多項式計算器
52 誤りロケータ計算&誤り訂正器
53 メモリ
62 誤り訂正部
71 回路選択部
72,73 セレクタ
74 ×α^111回路
75 ×α^32回路
76 ×α回路
77 ×α^222回路
78 ×α^64回路
79 ×α^2回路
80 EXOR演算回路
81 反転器
82 セレクタ
91 第1の誤り訂正復号結果記憶部
92 セレクタ
93 ブロックカウント部
94 ビットカウント部
97 ビット比較部
98 判定部
102 訂正不可能判定器

Claims (4)

  1. 不揮発性メモリから読み出されたデータに含まれる誤りデータを訂正する誤り訂正機能を備えた誤り訂正装置において、
    前記不揮発性メモリから読み出されたデータに、誤り訂正能力を超える誤りがあるか否かを判定する判定手段を備え、
    前記判定手段は、
    誤り位置多項式を算出して誤り個数を計算する第1の誤り個数計算手段と、
    誤り無し領域と訂正対象領域とで構成されるデータのうち、前記訂正対象領域をチェン探索して誤り個数を計算する第2の誤り個数計算手段と、
    前記第1の誤り個数計算手段で計算された誤り個数と前記第2の誤り個数計算手段で計算された誤り個数とが一致しない場合に前記誤り訂正能力を超えていると判定する比較手段と、を含み、
    前記比較手段で誤り訂正能力を超える誤りがあると判定された場合に、誤り訂正を行わないことを特徴とする誤り訂正装置。
  2. 前記誤り無し領域は、パディング領域および/または誤り検出手段で誤り無しと判定された領域であることを特徴とする請求項1に記載の誤り訂正装置。
  3. 前記不揮発性メモリは、NAND型フラッシュメモリであることを特徴とする請求項1または請求項2に記載の誤り訂正装置。
  4. 不揮発性メモリから読み出されたデータに含まれる誤りデータを誤り訂正する誤り訂正方法において、
    前記不揮発性メモリから読み出されたデータに、誤り訂正能力を超える誤りがあるか否かを判定する判定工程を備え、
    前記判定工程は、
    誤り位置多項式を算出して誤り個数を計算する第1の誤り個数計算工程と、
    誤り無し領域と訂正対象領域とで構成されるデータのうち、前記訂正対象領域をチェン探索して誤り個数を計算する第2の誤り個数計算工程と、
    前記第1の誤り個数計算工程で計算された誤り個数と前記第2の誤り個数計算工程で計算された誤り個数とが一致しない場合に前記誤り訂正能力を超えていると判定する比較工程と、を含み、
    前記比較工程で誤り訂正能力を超える誤りがあると判定された場合に、誤り訂正を行わないことを特徴とする誤り訂正方法。
JP2011005935A 2011-01-14 2011-01-14 誤り訂正装置および誤り訂正方法 Expired - Fee Related JP5121947B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2011005935A JP5121947B2 (ja) 2011-01-14 2011-01-14 誤り訂正装置および誤り訂正方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011005935A JP5121947B2 (ja) 2011-01-14 2011-01-14 誤り訂正装置および誤り訂正方法

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2008051461A Division JP4672743B2 (ja) 2008-03-01 2008-03-01 誤り訂正装置および誤り訂正方法

Publications (2)

Publication Number Publication Date
JP2011119019A JP2011119019A (ja) 2011-06-16
JP5121947B2 true JP5121947B2 (ja) 2013-01-16

Family

ID=44284151

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011005935A Expired - Fee Related JP5121947B2 (ja) 2011-01-14 2011-01-14 誤り訂正装置および誤り訂正方法

Country Status (1)

Country Link
JP (1) JP5121947B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7475913B2 (ja) 2020-03-19 2024-04-30 キオクシア株式会社 不揮発性メモリ及びメモリシステム

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2999881B2 (ja) * 1992-05-12 2000-01-17 シャープ株式会社 リードソロモン符号の復号装置
JP3843549B2 (ja) * 1997-08-27 2006-11-08 ソニー株式会社 記憶装置および記憶装置の検査方法
JP4672743B2 (ja) * 2008-03-01 2011-04-20 株式会社東芝 誤り訂正装置および誤り訂正方法
JP4856110B2 (ja) * 2008-03-01 2012-01-18 株式会社東芝 チェンサーチ装置およびチェンサーチ方法

Also Published As

Publication number Publication date
JP2011119019A (ja) 2011-06-16

Similar Documents

Publication Publication Date Title
JP4672743B2 (ja) 誤り訂正装置および誤り訂正方法
JP4856110B2 (ja) チェンサーチ装置およびチェンサーチ方法
USRE49253E1 (en) Semiconductor memory device
US8392807B2 (en) System and method of distributive ECC processing
JP5241860B2 (ja) メモリ装置およびメモリデータ読み出し方法
JP5043562B2 (ja) エラー訂正回路、その方法及び前記回路を備える半導体メモリ装置
US10877840B2 (en) Dynamic neighbor and bitline assisted correction for NAND flash storage
US8386868B2 (en) Using programming-time information to support error correction
JP2012118979A (ja) Nandフラッシュ・メモリにおける確率論的多層エラー訂正のためのシステム、方法、およびコンピュータ・プログラム
US9312885B2 (en) Nonvolatile semiconductor memory system error correction capability of which is improved
US8589756B2 (en) Semiconductor memory device, semiconductor memory system, and erasure correction method
JP5121947B2 (ja) 誤り訂正装置および誤り訂正方法
CN115482866A (zh) 基于存储器装置中先前读取尝试的参数估计
KR101367351B1 (ko) 분산형 ecc 프로세싱 시스템 및 방법
TWI844591B (zh) 減少基於校驗子的準循環解碼器的延遲
US11050442B2 (en) Reducing the latency of a syndrome-based quasi-cyclic decoder
US20210109808A1 (en) Using Original Data as Soft Bit Information in a Decoder
TW201312578A (zh) 分配的錯誤修正編碼處理之系統及方法

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120703

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: 20120925

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20121023

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20151102

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20151102

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees