JP2013029882A - メモリコントローラ、半導体記憶装置および復号方法 - Google Patents

メモリコントローラ、半導体記憶装置および復号方法 Download PDF

Info

Publication number
JP2013029882A
JP2013029882A JP2011163475A JP2011163475A JP2013029882A JP 2013029882 A JP2013029882 A JP 2013029882A JP 2011163475 A JP2011163475 A JP 2011163475A JP 2011163475 A JP2011163475 A JP 2011163475A JP 2013029882 A JP2013029882 A JP 2013029882A
Authority
JP
Japan
Prior art keywords
error correction
error
data
code
error detection
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
Application number
JP2011163475A
Other languages
English (en)
Inventor
Koji Horisaki
耕司 堀崎
Toshikatsu Hida
敏克 檜田
Shinichi Sugano
伸一 菅野
Osamu Torii
修 鳥井
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 JP2011163475A priority Critical patent/JP2013029882A/ja
Priority to US14/234,856 priority patent/US9164831B2/en
Priority to PCT/JP2012/057246 priority patent/WO2013014974A1/en
Priority to TW101109218A priority patent/TWI486962B/zh
Publication of JP2013029882A publication Critical patent/JP2013029882A/ja
Pending legal-status Critical Current

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/1044Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
    • 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/1048Adding 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 arrangements adapted for a specific error detection or correction feature
    • 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/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/1575Direct decoding, e.g. by a direct determination of the error locator polynomial from syndromes and subsequent analysis or by matrix operations involving syndromes, e.g. for codes with a small minimum Hamming distance

Abstract

【課題】複雑な処理を行わずに回路規模を低減することができるメモリコントローラを得ること。
【解決手段】メモリコントローラであって、メモリ部へ書き込むデータとデータに対する誤り検出符号とデータおよび誤り検出符号に対するt(tは2以上の整数)シンボル訂正可能な誤り訂正符号とをn個のチャネルごとにメモリ部へ書き込み、データと誤り検出符号と誤り訂正符号とを読み出しデータとしてチャネルごとにメモリ部から読み出すメモリインタフェースと、チャネルごとの読み出しデータに対してs(s<t)シンボル訂正可能な第1の誤り訂正復号化処理を実施するn個の第1の誤り訂正復号化部と、第1の誤り訂正復号化処理の復号結果に基づいてチャネルごとに誤り検出処理を行うn個の誤り検出部と、誤りが検出されたチャネルの読み出しデータに対してtシンボル訂正可能な誤り訂正復号化処理を実施する第2の誤り訂正復号化部と、を備える。
【選択図】図1

Description

本発明の実施形態は、メモリコントローラ、半導体記憶装置および復号方法に関する。
一般に、誤り訂正能力が高い(かつ符号化率の高い)符号は、その復号化処理が複雑になる。また、発生する誤りの数にはばらつきがあり、誤りの数が多い場合には高い誤り訂正能力を発揮することと、誤りが少ない場合には簡易な復号化処理で済ませることと、を両立したいという要求がある。この要求に対して、多重に誤り訂正符号化を実施する技術や、適応的に復号方法を切り替える技術が知られている。
特開2009−59422号公報 特開平10−207726号公報 特開2007−13260号公報 特開2008−16092号公報
多重に誤り訂正符号化を実施する技術や、適応的に復号方法を切り替える技術では、一般に、処理が複雑になる、または回路規模が大きくなる等の問題がある。
本願発明の一態様によれば、メモリ部を制御するメモリコントローラであって、メモリ部へ書き込むデータと、データに基づいて誤り検出符号を生成し、データおよび誤り検出符号とにt(tは2以上の整数)シンボル訂正可能な誤り訂正符号を生成する符号化部、を備える。また、このメモリコントローラは、データと誤り検出符号と誤り訂正符号と、をn個(nは2以上の整数)のチャネルごとにメモリ部へ書き込み、データと誤り検出符号と誤り訂正符号とを読み出しデータとしてチャネルごとにメモリ部から読み出すメモリインタフェースを備える。さらに、このメモリコントローラは、チャネルごとの読み出しデータに対してs(sは、1以上でtより小さい整数)シンボル訂正可能な第1の誤り訂正復号化処理をそれぞれ実施するn個の第1の誤り訂正復号化部と、チャネルごとに、前記第1の誤り訂正復号化処理により復号されたデータおよび誤り検出符号に基づいて誤り検出処理を行うn個の誤り検出部と、誤り検出部により誤りが検出されたチャネルの読み出しデータに対してtシンボル訂正可能な第2の誤り訂正復号化処理を実施するnより小さい個数の第2の誤り訂正復号化部と、を備える。
図1は、半導体記憶装置の構成例を示すブロック図である。 図2は、符号化部の構成例を示す図である。 図3は、半導体メモリ部へ書き込まれるデータと符号の概念を示す図である。 図4は、復号化部の構成例を示す図である。 図5は、符号化/復号化処理の概要を示す図である。 図6は、復号化処理手順の一例を示すフローチャートである。
以下に添付図面を参照して、実施形態にかかるメモリコントローラ、半導体記憶装置および復号方法を詳細に説明する。なお、この実施形態により本発明が限定されるものではない。
図1は、実施の形態にかかる半導体記憶装置1の構成例を示すブロック図である。本実施の形態の半導体記憶装置1は、メモリコントローラ(メモリ制御装置)2と、NAND型記憶セルを備える半導体メモリ部(メモリ部)3と、で構成される。半導体記憶装置1は、通信媒体を介してホスト4に接続され、ホスト4に対する外部記憶媒体として機能する。ホスト4の例としては、パーソナルコンピュータやCPU(Central Processing Unit)コア等があげられる。
メモリコントローラ2は、内部バス20と、HostI/F(Interface)21と、NANDI/F(メモリインタフェース)22と、制御部23と、符号化/復号化処理部24と、で構成される。符号化/復号化処理部24は、符号化部25と、復号化部26と、で構成される。
HostI/F21は、ホスト4から受信した命令、データなどを内部バス20に出力する。また、HostI/F21は、内部バス20経由で入力されたデータ、制御部23からの応答通知(命令の実行完了を示す通知など)などをホスト4へ送信する。
半導体メモリ部3は、メモリ31−0〜31−3で構成される。メモリ31−0〜31−3はそれぞれ1つ以上のメモリチップによって構成されているとする。
NANDI/F22は、メモリ31−0〜31−3に対してそれぞれ読み書きを並行して実施できるよう4つのチャネル(チャネルch0〜ch3)を有している。チャネルch0〜ch3は、それぞれ対応するメモリ31−0〜31−3を制御する。なお、ここでは、チャネルの数を4とし、半導体メモリ部3を構成するメモリの数を4としているが、チャネルの数はこれに限定されず、半導体メモリ部3はチャネルの数に応じたメモリを備えていればよい。
制御部23は、半導体記憶装置1の各構成要素を統括的に制御する制御部であり、CPUコア、RAM(Random Access Memory)、ROM(Read Only Memory)、DMA(Direct Memory Access)コントローラなどで構成される。制御部23は、ホスト4からHostI/F21および内部バス20経由で命令を受けた場合に、その命令に従った制御を行う。例えば、制御部23は、ホスト4からの命令に従って、半導体メモリ部3へのデータの書き込み、半導体メモリ部3からのデータの読み出しなどをNANDI/F22へ指示する。また、制御部23は、符号化/復号化処理部24へ誤り訂正符号化処理または復号化処理の実施を指示する。
符号化/復号化処理部24は、制御部23の指示に基づいて、ホスト4から受信したデータに対して誤り訂正符号化処理を行い、NANDI/F22へ出力し、またNANDI/F22から入力されるデータに対して復号化処理を行う。この際、制御部23は、データをチャネルごとに分割して符号化/復号化処理部24へ入力するよう制御し、符号化/復号化処理部24はチャネルごとに並行して誤り訂正符号化処理を行い、処理結果をNANDI/F22の対応するチャネルへ出力する。また、半導体メモリ部3から読み出されたデータがNANDI/F22から入力される際には、符号化/復号化処理部24は、NANDI/F22の各チャネルから入力されるデータをチャネルごとに並行して復号化処理を行う。
なお、図1に示した半導体記憶装置1の構成は一例であり、半導体メモリとその半導体メモリの読み書きを制御するコントローラを備え、ホスト4と通信が可能な構成であり、チャネルごとに符号化/復号化処理を行う構成であれば、図1に示した構成に限らずどのような構成でもよい。また、半導体メモリ部3の代わりに半導体メモリ以外の記憶手段を用いてもよい。
次に、本実施の形態の半導体メモリ部3への書き込み動作について説明する。まず、制御部23は、ホスト4からデータの書き込みを指示されると、データをチャネルごとに振り分け、符号化/復号化処理部24に符号化の実施を指示するとともに、NANDI/F22へ半導体メモリ部3への書き込みを指示する。ホスト4から送信される書き込み対象のデータは、半導体記憶装置1内の図示しないバッファメモリにチャネルごとに書き込まれる。
本実施の形態では、符号化部25は、符号化処理として、誤り検出符号および誤り訂正符号を生成する。図2は、本実施の形態の符号化部25の構成例を示す図である。図2に示すように、符号化部25は、所定のサイズの書き込みデータに基づいてCRC(Cyclic Redundancy Check)符号を生成する誤り検出符号エンコーダ251−1〜251−4と、所定のサイズの書き込みデータと当該データに対応するCRC符号とに基づいて誤り訂正符号を生成する誤り訂正符号エンコーダ252−1〜252−4と、を備える。
ここでは、符号化部25が、誤り検出符号としてCRC符号を生成する例を説明するが、誤り検出符号はCRC符号に限定されない。また、誤り訂正符号としてはどのような符号を用いてもよいが、ここでは、BCH符号を用いるとする。誤り訂正符号は、BCH符号に限らずRS(Reed−Solomon)符号等どのような符号を用いてもよい。なお、ここでは、チャネルの数を4としているため、誤り検出符号エンコーダおよび誤り訂正符号エンコーダの数をそれぞれ4としているが、チャネルの数に応じて誤り検出符号エンコーダおよび誤り訂正符号エンコーダを備えればよい。
誤り検出符号エンコーダ251−1〜251−4は、バッファメモリから入力されるそれぞれのチャネルに対応する書き込み対象のデータに対して誤り検出符号を生成する。誤り訂正符号エンコーダ252−1〜252−4は、書き込み対象のデータと対応する誤り検出符号とに対してt(tは1以上の整数)シンボル訂正可能な誤り訂正符号を生成し、書き込み対象のデータと誤り検出符号と生成した誤り訂正符号とをNANDI/F22の対応するチャネルへ入力する。なお、ここでは、誤り訂正符号としてビット単位で訂正を行うBCH符号を用いるため、tシンボル訂正可能な誤り訂正符号(以下、t重誤り訂正符号という)は、tビット訂正可能なBCH符号のことを示す。一方、RS符号等ではシンボル単位で訂正を行っており、訂正単位は採用する誤り訂正符号の種類に依存する。ここでは、1シンボルが1ビットである場合も含むとし、tシンボル訂正可能と記載した場合には、ビット単位で訂正する場合のtビット訂正可能という意味を含むこととする。
NANDI/F22は、チャネルごとに、誤り訂正符号エンコーダ252−1〜252−4から入力される書き込み対象のデータ、誤り検出符号および誤り訂正符号を、メモリ31−0〜31−3へそれぞれ書き込む。なお、書き込み対象のデータは、符号化部25からではなく、バッファメモリからNANDI/F22へ入力されてもよい。
図3は、半導体メモリ部3へ書き込まれるデータと符号の概念を示す図である。図3に示すように、所定のサイズの書き込みデータ(図3ではデータと記載)に基づいて誤り検出符号(CRC符号)が生成され、所定のサイズの書き込みデータと対応する誤り検出符号とを誤り訂正符号化対象として誤り訂正符号が生成される。ここで、所定のサイズとは、例えば、セクターサイズである。セクターサイズは、例えば、512バイトである。なお、図3では、1組のデータと誤り検出符号に対して1つの誤り訂正符号が生成される例を示しているが、データと誤り検出符号の複数組に対して1つの誤り訂正符号を生成するようにしてもよい。
次に、本実施の形態の半導体メモリ部3からの読出し動作について説明する。制御部23は、ホスト4からデータの読み出しを指示されると、符号化/復号化処理部24に復号化の実施を指示するとともに、NANDI/F22へ半導体メモリ部3からの読み出しを指示する。NANDI/F22の各チャネルは、制御部23からの指示に基づいて半導体メモリ部3からデータと対応する誤り検出符号および誤り訂正符号とを読み出し、読み出したデータ、対応する誤り検出符号および誤り訂正符号を符号化/復号化処理部24へ出力する。
符号化/復号化処理部24の復号化部26は、チャネルごとに、読み出したデータと誤り検出符号および誤り訂正符号とに基づいて復号化処理を行い、復号化処理により誤りが有ると判断された場合には、読み出したデータに対して誤り訂正を実施する。Host I/F21は、誤り訂正後のデータ(誤りの無い場合には、半導体メモリ部3から読み出したデータ)をホスト4に送信する。
次に、本実施の形態の復号化処理について詳細に説明する。図4は、本実施の形態の復号化部26の構成例を示す図である。図4に示すように、本実施の形態の復号化部26は、s(sは、1以上でtより小さい整数)個の誤り訂正処理を実施することが可能なs重誤り訂正デコーダ(第1の誤り訂正復号化部)261−1〜261−4と、誤り検出符号を用いて誤り検出を行う誤り検出部262−1〜262−4と、バッファ263−1〜263−4と、をチャネル毎に備える。復号化部26は、さらにt個の誤り訂正処理を実施することが可能なt重誤り訂正デコーダ(第2の誤り訂正復号化部)264と、誤り検出部265と、選択部266と、を備える。なお、ここでは、チャネルの数を4としているため、s重誤り訂正デコーダ、誤り検出部およびバッファの数をそれぞれ4としているが、チャネルの数に応じてこれらを備えればよい。また、バッファ263−1〜263−4はチャネルごとに備えず、1つのバッファで共用してもよいし、s重誤り訂正デコーダ261−1〜263−4と一体化してもよいし、復号化部26の外にバッファを備えてもよい。
図5は、本実施の形態の符号化/復号化処理の概要を示す図である。図5に示すように、本実施の形態では、NANDI/F22のチャネル(ch0〜ch3)ごとに、符号化復号化の処理を実施する。図5は、誤り検出符号としてCRC符号、誤り訂正符号としてBCH符号を用いる例を示している。まず、書き込み時には、上述のように、チャネルごとに、符号化部25において、CRC付加処理(誤り検出符号の生成)が行われる(ステップS1)。なお、図5では、図の簡略化のため、ch0内の処理にのみステップ番号を付しているが、他のチャネル(ch1〜ch3)でも同様の処理が行われる。
そして、チャネルごとに、符号化部25により、t重訂正BCH符号化処理(t重の誤り訂正符号化処理)が実施され(ステップS2)、半導体メモリ部3へデータおよび各符号の書き込みが行われ、読み出し要求があると半導体メモリ部3からの読み出しが行われる(ステップS3)。半導体メモリ部3からの読み出されたデータおよび各符号は、チャネルごとに、復号化部26により、まず、s重訂正BCH復号(s重誤り訂正復号化処理)が行われ(ステップS4)、CRC検査(誤り検出処理)が行われる(ステップS5)。
CRC検査により誤り無し(CRC=OK)となった場合、s重訂正BCH復号されたデータが復号化部26から出力されホスト4へ送信される。CRC検査により誤り有り(CRC=NG)となったチャネルのデータに対してはt重訂正BCH復号(t重誤り訂正復号化処理)が実施され(ステップS6)、t重誤り訂正復号化処理に基づいてCRC検査を行う(ステップS7)。なお、ステップS5のCRC検査(誤り検出処理)と、ステップS7のCRC検査(誤り検出処理)は、独立の回路で実行してもよいし、共用の回路で実行してもよい。このCRC検査により誤り無しとなった場合t重訂正BCH復号されたデータが復号化部26から出力されホスト4へ送信される。
ここで、誤り訂正処理の具体例を用いて、s重誤り訂正処理とt重誤り訂正処理の差を説明する。例として、符号長=15、s=1、t=2の場合について説明する。符号化処理において、t(=2)個の誤りが訂正可能な(t重訂正可能な)BCH符号が生成されたとする。
この場合に、t重誤り訂正処理により、復号を行う場合、まず、半導体メモリ部3から読み出されたデータに基づいて2つのシンドローム(a0,a1)を計算する。次に、シンドローム(a0,a1)を用いて2つの誤り位置多項式の係数(b0,b1)を、例えば以下の式(1)に基づいて求める。なお、以下の計算方法は一例であり、誤り位置多項式の計算方法は、復号アルゴリズムに依存するため、以下の方法に限定されない。
b0=a0
b1=(a03+a1)/a0 …(1)
その後、1+b0×X+b1×X2=0が成立するX(x0,x1)を求める。ここで求められたX(x0,x1)は誤り位置を表しており、当該ビットを反転することで誤り訂正を行うことができる。
一方、s(=1)重訂正する場合は、まず、半導体メモリ部3から読み出されたデータに基づいて1つのシンドロームa0を計算する。次に、上記と同様に誤り位置多項式の1つの係数b0を求める。その後、1+b0×X=0が成立するX(x0)を求める。ここで求められたX(x0)は誤り位置を表しており、当該ビットを反転することで誤り訂正を行うことができる。
以上のように、s重訂正の復号化処理は、t重訂正の復号化処理より演算が少なく、一般に係数の計算等を並列して行うため、s重訂正の復号化処理はt重訂正の復号化処理より回路面積の小さい復号回路で実装することが可能である。
上述のとおり、本実施の形態では、符号化処理において、t重誤り訂正符号を生成している。t重誤り訂正符号を用いて復号する際には、通常、t個の誤り訂正処理を実施することが可能なデコーダを用いて復号化処理を実施する。しかし、この場合tが大きくなるとデコーダのハードウェア規模が大きくなる。誤り訂正符号の選択の際には、一般に、誤り訂正不可となる可能性を低くするため、想定される平均誤り数より多い数の誤りに対応可能な誤り訂正符号が選択される。したがって、実際に生じる誤りは、tに比べ少ない場合が多い。
本実施の形態では、tより小さい数であるs個の誤り訂正に対応するs重誤り訂正デコーダ261−1〜261−4をチャネルごとに備え、通常は、s重誤り訂正デコーダ261−1〜261−4により誤り訂正処理を実施する。そして、チャネルごとに、誤り検出部262−1〜262−4が、誤り訂正処理後のデータおよび誤り検出符号に基づいて、誤り検出を行い、これにより誤りが検出された場合に、t重誤り訂正デコーダ264による誤り訂正処理を実施する。t重誤り訂正デコーダ264の数は、チャネル数分備える必要はなく、1つ以上であればよい。
また、復号化処理では、通常はs重誤り訂正処理を行うだけでよく、誤り訂正検出処理の処理負荷は大きくないため、処理を複雑にすることなくハードウェア規模を低減できる。また、誤り訂正符号化の際は、1種類のt重誤り訂正符号を生成すればよいだけであり、同一のデータに対して2重に誤り訂正符号化する必要もなく、冗長な符号を増加させることもない。さらに、t重誤り訂正デコーダ264に入力されるデータ(半導体メモリ部3から読み出されたデータ)は、s重誤り訂正デコーダ261−1〜261−4のいずれかに入力されたデータと同一であり、半導体メモリ部3からの再読み出し等を行う必要もない。
図6は、本実施の形態の復号化処理手順の一例を示すフローチャートである。図5および図6を用いて、本実施の復号化部26の動作を説明する。まず、復号化処理が開始されると、NANDI/F22により、チャネルごとにデータ(半導体メモリ部3から読み出されたデータであり、誤り訂正符号および誤り検出符号を含む)が読み出され、s重誤り訂正デコーダ261−1〜261−4に、それぞれ入力される(ステップS11)。また、NANDI/F22の各チャネルから入力されるデータは、それぞれバッファ263−1〜263−4にも入力される。
s重誤り訂正デコーダ261−1〜261−4は、NANDI/F22の各チャネルから入力されるデータに対してそれぞれs重誤り訂正復号化処理(s個の誤り訂正が可能な誤り訂正復号化処理)を実施する(ステップS12)。
誤り検出部262−1〜262−4は、s重誤り訂正デコーダ261−1〜261−4によりs重誤り訂正処理がされたデータおよび誤り検出符号に基づいて、それぞれ誤り検出処理を実施し、誤り検出結果を制御部23へ通知するとともにs重誤り訂正処理がされたデータを選択部266へ出力する(ステップS13)。
制御部23は、誤り検出部262−1〜262−4から通知される誤り検出結果に基づいて、誤りが検出されたチャネル数NCHを求め、NCHが0であるか、1であるか、または2以上であるかを判断する(ステップS14)。NCHが0である場合(ステップS14 NCH=0)、制御部23は、選択部266に対して、誤り検出部262−1〜262−4から出力されるデータを全て選択し、誤り訂正復号成功という付帯情報を付けて出力するよう指示し、選択部266は指示に従って誤り検出部262−1〜262−4から出力されるデータを出力する(ステップS15)。そして、制御部23は、読み出し対象のデータの読み出しが終了したか否かを判断し(ステップS25)、読み出しが終了した場合(ステップS25 Yes)、処理を終了し、読み出しが終了していない場合(ステップS25 No)、ステップS11へ戻る。
CHが1である場合(ステップS14 NCH=1)、制御部23は、選択部266に対して、誤りが検出されなかったチャネルに対応する誤り検出部262−1〜262−4から出力されるデータ(s重誤り訂正復号化データ)を選択し、誤り訂正復号成功という付帯情報を付けて出力するよう指示し、選択部266は指示に従ってデータを出力する(ステップS16)。ステップS16では、さらに制御部23は、t重誤り訂正デコーダ264に対して、誤りが検出されたチャネルに対応するバッファ263−1〜263−4からデータを読み出して処理を実施するよう指示し、t重誤り訂正デコーダ264は、制御部23からの指示に基づいてt重誤り訂正処理を実施する(ステップS16)。具体的には、t重誤り訂正デコーダ264は、読み出しを指示されたバッファ263−1〜263−4(s重誤り訂正処理後に誤りが検出されたデータを格納しているバッファ)からデータを読み出して、当該データに対してt重誤り訂正処理を実施し、処理後のデータを誤り検出部265へ出力する。
誤り検出部265は、t重誤り訂正処理後のデータに基づいて誤り検出を行い、誤り検出結果を制御部23へ通知するとともにt重誤り訂正処理がされたデータを選択部266へ出力する。制御部23は、誤り検出部265から通知された誤り検出結果に基づいて誤りが無いか否かを判断し(ステップS17)、誤りが無い場合は(ステップS17 Yes)、選択部266に対して、誤り検出部265から出力されるデータを選択し、誤り訂正復号成功という付帯情報を付けて出力するよう指示し、選択部266は指示に基づいてデータを出力し(ステップS18)、ステップS25へ進む。一方、ステップS17で誤りが有ると判断した場合は(ステップS17 No)、制御部23は、選択部266に治して誤りが検出されたチャネルに対応するバッファ263−1〜263−4のデータを選択し、誤り訂正復号失敗という付帯情報を付けて出力するよう指示し、選択部266は指示に基づいてデータを出力し(ステップS19)、ステップS25へ進む。
また、ステップS14で、NCHが2以上である場合(ステップS14 NCH≧2)、制御部23は、選択部266へ誤りが検出されなかったチャネルに対応する誤り検出部262−1〜262−4から出力されるデータを選択し、誤り訂正復号成功という付帯情報を付けて出力するよう指示し、選択部266は指示に従ってデータ出力する(ステップS20)。ステップS20では、さらに制御部23は、NCH個のチャネルのうちt重誤り訂正処理対象とするチャネルを決定する(ステップS20)。そして、制御部23は、決定したチャネルに対応するバッファ263−1〜263−4からデータを読み出して処理を実施するよう指示し、t重誤り訂正デコーダ264は、制御部23からの指示に基づいてt重誤り訂正処理を実施する(ステップS21)。誤り検出部265は、t重誤り訂正処理後のデータに基づいて誤り検出を行い、誤りを検出結果を制御部23へ通知するとともにt重誤り訂正処理がされたデータを選択部266へ出力する。制御部23は、誤り検出部265から通知された誤り検出結果に基づいて誤りが無いか否かを判断し(ステップS22)、誤りが無い場合は(ステップS22 Yes)、選択部266に対して、誤り検出部265から出力されるデータを選択し、誤り訂正復号成功という付帯情報を付けて出力するよう指示し、選択部266は指示に基づいてデータを出力する(ステップS23)。
制御部23は、NCH個のチャネルのうち全てについてt重誤り訂正処理が終了したか否かを判断し(ステップS24)、NCH個のチャネルのうち全てについてt重誤り訂正処理が終了した場合(ステップS24 Yes)、ステップS25へ進む。NCH個のチャネルのうちt重誤り訂正処理が終了していないチャネルがある場合(ステップS24 No)、ステップS20へ戻る。なお、2回目以降のステップS20では、t重誤り訂正処理が終了していないチャネルのうちからt重誤り訂正処理対象とするチャネルを決定する。
ステップS22で、誤りが有る場合は(ステップS22 No)、制御部23は、選択部266へ誤りが検出されたチャネルに対応するバッファ263−1〜263−4のデータを選択し、誤り訂正復号失敗という付帯情報を付けて出力するよう指示し、選択部266は指示に基づいてデータを出力し(ステップS26)、ステップS24へ進む。
なお、s重誤り訂正デコーダ261−1〜261−4、t重誤り訂正デコーダ264との復号方法に制約はないが、BCH符号やRS符号等を用いる場合には、s重誤り訂正デコーダ261−1〜261−4とt重誤り訂正デコーダ264とは、同一GF(ガロア体)上の復号演算(すなわち、符号長を同一とした復号演算)を行うことになる。
また、ここでは、誤り訂正エンコーダ252、および、t重誤り訂正デコーダ264の訂正能力(tの値)は固定値であるとして説明したが、ホストからの制御信号に基づいて設定することが可能であるとしてもよい。
例えば、BCH符号を用いる場合に、符号化に用いる原始多項式を予め定めておき、符号化ではこの原始多項式を用いて生成した生成多項式を用いて符号化処理を実施する。t重訂正BCH符号の生成多項式G(x)は、以下の式(2)で表すことができる。
G(x)=M1(x)・M3(x)・M5(x)…M(2t-1)(x) …(2)
1(x)は、原始元αを根とする多項式であり、原始多項式と呼ばれる。M3(x)はα3を根とする多項式、M5(x)はα5を根とする多項式、…、M(2t-1)(x)はα(2t-1)を根とする多項式、である。M1(x)を決定すると、演算によりM3(x),M5(x),…,M(2t-1)(x)を順次求めていくことができる。従って、原始多項式と訂正能力(tの値)がわかっていれば生成多項式を求めることができる。
復号化処理においても同様に、原始多項式と訂正能力(tの値)に基づいて生成多項式を特定することで、符号化に対応した復号化処理が可能となる。
訂正能力が可変である誤り訂正エンコーダや誤り訂正デコーダは、訂正能力が固定値である場合に比べて回路規模が大きくなる恐れがあるが、誤り訂正エンコーダの回路規模は誤り訂正デコーダの回路規模に比べて小さいため、誤り訂正エンコーダの回路規模が大きくなっても、メモリコントローラ全体としての回路規模増加は比較的小さい。また、本発明に係るメモリコントローラでは、t重誤り訂正デコーダ264をチャネル数より小さい個数しか備えない特徴があるため、全ての誤り訂正デコーダの訂正能力を可変とする場合と比べて、メモリコントローラ全体としての回路規模増加は小さい。
なお、以上の説明では、t重誤り訂正デコーダ264を1つ備える例を説明したが、2つ以上備えていてもよい。同時に2つ以上のチャネルでs重誤り訂正処理後に誤りが検出された場合、t重誤り訂正デコーダ264を1つ備える場合には、いずれか一方のチャネルのt重誤り訂正復号化処理は他方のt重誤り訂正復号化処理が終了するまで開始できないが、2つ備えていれば、同時に2つのチャネルのt重誤り訂正復号化処理まで対応できる。だたし、t重誤り訂正デコーダ264の個数が増えるとハードウェア規模も増えるので、ハードウェア規模の増大量、想定される誤り数や読み出しに対する要求速度等を考慮してt重誤り訂正デコーダ264を適切に選択すればよい。
以上のように、本実施の形態では、誤り検出符号が付加されてt重誤り訂正符号化処理が施されたデータに対して、チャネルごとにs重誤り訂正デコーダ261−1〜261−4によるs重誤り訂正復号化処理を実施する。そして、誤り検出符号に基づいて誤り検出を行い、誤りが検出されたチャネルのデータにはt重誤り訂正デコーダ264によるt重誤り訂正復号化処理を実施し、誤りが検出されないチャネルのデータはそのままs重誤り訂正復号化処理を復号結果として出力するようにした。このため、符号化および復号化処理を複雑化せずに、回路規模を削減することができる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1 半導体記憶装置、2 メモリコントローラ、3 半導体メモリ部、22 NANDI/F、23 制御部、24 符号化/復号化処理部、25 符号化部、26 復号化部、251−1〜251−4 誤り検出符号エンコーダ、252−1〜252−4 誤り訂正符号エンコーダ、261−1〜261−4 s重誤り訂正デコーダ、262−1〜262−4,265 誤り検出部、263−1〜263−4 バッファ、264 t重誤り訂正デコーダ、266 選択部。

Claims (11)

  1. メモリ部を制御するメモリコントローラであって、
    前記メモリ部へ書き込むデータに対する誤り検出符号を生成し、前記データおよび前記誤り検出符号に対するt(tは2以上の整数)シンボル訂正可能な誤り訂正符号を生成する符号化部と、
    n個(nは2以上の整数)のチャネルを有し、前記データと前記誤り検出符号と前記誤り訂正符号と、を前記チャネルごとに前記メモリ部へ書き込み、前記データと前記誤り検出符号と前記誤り訂正符号とを読み出しデータとして前記チャネルごとに前記メモリ部から読み出すメモリインタフェースと、
    前記チャネルごとの前記読み出しデータに対してs(sは、1以上でtより小さい整数)シンボル訂正可能な第1の誤り訂正復号化処理をそれぞれ実施するn個の第1の誤り訂正復号化部と、
    前記第1の誤り訂正復号化処理により復号されたデータおよび誤り検出符号に基づいて前記チャネルごとに誤り検出処理を行うn個の誤り検出部と、
    前記誤り検出部により誤りが検出された前記チャネルの前記読み出しデータに対してtシンボル訂正可能な第2の誤り訂正復号化処理を実施するnより小さい個数の第2の誤り訂正復号化部と、
    を備えることを特徴とするメモリコントローラ。
  2. 前記符号化部は、前記誤り検出符号を前記チャネルごとに生成し、前記誤り訂正符号を前記チャネルごとに生成する、ことを特徴とする請求項1に記載のメモリコントローラ。
  3. 前記第1の誤り訂正復号化処理における符号長と前記第2の誤り訂正復号化処理における符号長とが同一である、ことを特徴とする請求項1または2に記載のメモリコントローラ。
  4. 1シンボルを1ビットとし、前記誤り訂正符号をBCH符号とする、ことを特徴とする請求項1、2または3に記載のメモリコントローラ。
  5. 前記誤り訂正符号をリードソロモン符号とする、ことを特徴とする請求項1、2または3に記載のメモリコントローラ。
  6. 前記符号化部は、外部から与えられる訂正能力であるtの値と予め定められた原始多項式とから生成多項式を算出し、前記生成多項式を用いて前記誤り訂正符号を生成する、ことを特徴とする請求項1〜5のいずれか1つに記載のメモリコントローラ。
  7. 前記第2の誤り訂正復号化部は、訂正能力であるtの値を変更可能とすることを特徴とする、請求項1〜6のいずれか1つに記載のメモリコントローラ。
  8. 前記第2の誤り訂正復号化部の個数を1とする、ことを特徴とする請求項1〜7のいずれか1つに記載のメモリコントローラ。
  9. 前記第2の誤り訂正復号化部の個数を2以上とする、ことを特徴とする請求項1〜7のいずれか1つに記載のメモリコントローラ。
  10. メモリ部と、
    前記メモリ部への書き込みおよび前記メモリ部からの読み出しを制御するメモリコントローラと、
    を備え、
    前記メモリコントローラは、
    前記メモリ部へ書き込むデータに対する誤り検出符号を生成し、前記データおよび前記誤り検出符号に対するt(tは2以上の整数)シンボル訂正可能な誤り訂正符号を生成する符号化部と、
    n個(nは2以上の整数)のチャネルを有し、前記データと前記誤り検出符号と前記誤り訂正符号と、を前記チャネルごとに前記メモリ部へ書き込み、前記データと前記誤り検出符号と前記誤り訂正符号とを読み出しデータとして前記チャネルごとに前記メモリ部から読み出すメモリインタフェースと、
    前記チャネルごとの前記読み出しデータに対してs(sは、1以上でtより小さい整数)シンボル訂正可能な第1の誤り訂正復号化処理をそれぞれ実施するn個の第1の誤り訂正復号化部と、
    前記第1の誤り訂正復号化処理により復号されたデータおよび誤り検出符号に基づいて前記チャネルごとに誤り検出処理を行うn個の誤り検出部と、
    前記誤り検出部により誤りが検出された前記チャネルの前記読み出しデータに対してtシンボル訂正可能な第2の誤り訂正復号化処理を実施するnより小さい個数の第2の誤り訂正復号化部と、
    を備えることを特徴とする半導体記憶装置。
  11. n個(nは2以上の整数)のチャネルを有する半導体記憶装置において、メモリ部へ格納された、データと、前記データに対して生成された誤り検出符号と、前記データおよび前記誤り検出符号に対して生成されたt(tは2以上の整数)シンボル訂正可能な誤り訂正符号と、を復号する復号方法であって、
    前記チャネルごとに、前記データと前記誤り検出符号と前記誤り訂正符号とを読み出しデータとして前記メモリ部から読み出す読み出しステップと、
    前記チャネルごとの前記読み出しデータに対してs(sは、1以上でtより小さい整数)シンボル訂正可能な第1の誤り訂正復号化処理を、n個の第1の誤り訂正復号化部によりそれぞれ実施する第1の復号ステップと、
    前記第1の誤り訂正復号化処理により復号されたデータおよび誤り検出符号に基づいて、n個の誤り検出部により前記チャネルごとに誤り検出処理を行うそれぞれ実施する誤り検出ステップと、
    前記誤り検出ステップにおいて誤りが検出されたチャネルの前記読み出しデータに対してtシンボル訂正可能な第2の誤り訂正復号化処理を、nより小さい個数の第2の誤り訂正復号化部により実施する第2の復号ステップと、
    を備えることを特徴とする復号方法。
JP2011163475A 2011-07-26 2011-07-26 メモリコントローラ、半導体記憶装置および復号方法 Pending JP2013029882A (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2011163475A JP2013029882A (ja) 2011-07-26 2011-07-26 メモリコントローラ、半導体記憶装置および復号方法
US14/234,856 US9164831B2 (en) 2011-07-26 2012-03-14 Memory controller, semiconductor storage device, and decoding method
PCT/JP2012/057246 WO2013014974A1 (en) 2011-07-26 2012-03-14 Memory controller, semiconductor storage device, and decoding method
TW101109218A TWI486962B (zh) 2011-07-26 2012-03-16 記憶體控制器、半導體儲存裝置、及解碼方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011163475A JP2013029882A (ja) 2011-07-26 2011-07-26 メモリコントローラ、半導体記憶装置および復号方法

Publications (1)

Publication Number Publication Date
JP2013029882A true JP2013029882A (ja) 2013-02-07

Family

ID=47600834

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011163475A Pending JP2013029882A (ja) 2011-07-26 2011-07-26 メモリコントローラ、半導体記憶装置および復号方法

Country Status (4)

Country Link
US (1) US9164831B2 (ja)
JP (1) JP2013029882A (ja)
TW (1) TWI486962B (ja)
WO (1) WO2013014974A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10763897B2 (en) 2017-09-20 2020-09-01 Toshiba Memory Corporation Memory system
JP7428689B2 (ja) 2021-12-17 2024-02-06 華邦電子股▲ふん▼有限公司 メモリシステム

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5674700B2 (ja) 2012-03-22 2015-02-25 株式会社東芝 符号化装置および符号化装置の制御方法、ならびに、記憶装置
RU2682843C1 (ru) * 2015-03-10 2019-03-21 Тосиба Мемори Корпорейшн Устройство памяти и система памяти
US20170161141A1 (en) * 2015-12-02 2017-06-08 Samsung Electronics Co., Ltd. Method and apparatus for correcting data in multiple ecc blocks of raid memory
CN116028260B (zh) * 2023-01-09 2024-02-27 海光信息技术股份有限公司 数据的处理方法、处理装置以及存储系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63275225A (ja) * 1987-05-06 1988-11-11 Seiko Epson Corp 誤り訂正装置
JPH10207726A (ja) * 1997-01-23 1998-08-07 Oki Electric Ind Co Ltd 半導体ディスク装置
JP2001345712A (ja) * 2000-05-31 2001-12-14 Hitachi Ltd 符号化回路
JP2004280556A (ja) * 2003-03-17 2004-10-07 Renesas Technology Corp 情報記憶装置および情報処理システム

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5428630A (en) * 1993-07-01 1995-06-27 Quantum Corp. System and method for verifying the integrity of data written to a memory
US6084734A (en) * 1997-12-08 2000-07-04 Maxtor Corporation Data recovery using targeted ECC correction
US8037309B2 (en) * 2004-04-26 2011-10-11 Trek 2000 International Ltd. Portable data storage device with encryption system
US7430701B2 (en) * 2005-06-16 2008-09-30 Mediatek Incorporation Methods and systems for generating error correction codes
JP2007013260A (ja) 2005-06-28 2007-01-18 Seiko Epson Corp 誤り訂正回路
JP4703310B2 (ja) 2005-08-04 2011-06-15 株式会社東芝 通信方法および通信システム
JP4598711B2 (ja) * 2006-03-30 2010-12-15 富士通株式会社 誤り訂正装置
US7836364B1 (en) * 2006-05-30 2010-11-16 Marvell International Ltd. Circuits, architectures, apparatuses, systems, methods, algorithms, software and firmware for using reserved cells to indicate defect positions
JP4896605B2 (ja) 2006-07-04 2012-03-14 株式会社東芝 不揮発性半導体記憶システム
US7739576B2 (en) * 2006-08-31 2010-06-15 Micron Technology, Inc. Variable strength ECC
US8032812B1 (en) 2006-10-04 2011-10-04 Marvell World Trade Ltd. Error correction decoding methods and apparatus
KR100847560B1 (ko) * 2006-12-11 2008-07-21 삼성전자주식회사 다운로드되는 펌웨어의 오류 정정을 위한 회로 및 방법
US8108759B2 (en) * 2006-12-14 2012-01-31 Regents Of The University Of Minnesota Error detection and correction using error pattern correcting codes
KR100856129B1 (ko) * 2006-12-29 2008-09-03 삼성전자주식회사 오정정 확률을 줄이는 에러 정정 회로, 그 방법 및 상기회로를 구비하는 반도체 메모리 장치
KR100845529B1 (ko) * 2007-01-03 2008-07-10 삼성전자주식회사 플래시 메모리 장치의 이씨씨 제어기 및 그것을 포함한메모리 시스템
KR100842680B1 (ko) * 2007-01-08 2008-07-01 삼성전자주식회사 플래시 메모리 장치의 오류 정정 컨트롤러 및 그것을포함하는 메모리 시스템
KR101433620B1 (ko) * 2007-08-17 2014-08-25 삼성전자주식회사 처리량을 높이기 위하여 더블 버퍼링 구조와 파이프라이닝기법을 이용하는 디코더 및 그 디코딩 방법
JP4564520B2 (ja) 2007-08-31 2010-10-20 株式会社東芝 半導体記憶装置およびその制御方法
JP4538034B2 (ja) 2007-09-26 2010-09-08 株式会社東芝 半導体記憶装置、及びその制御方法
WO2010019169A1 (en) * 2008-08-15 2010-02-18 Lsi Corporation Rom list-decoding of near codewords
US8468417B2 (en) * 2009-02-18 2013-06-18 Micron Technology, Inc. Data integrity in memory controllers and methods
US8301987B2 (en) 2009-10-29 2012-10-30 Sandisk Il Ltd. System and method of decoding data with reduced power consumption
JP2011197957A (ja) 2010-03-18 2011-10-06 Toshiba Corp 誤り訂正符号復号装置及び誤り訂正符号復号方法
JP2011198272A (ja) 2010-03-23 2011-10-06 Toshiba Corp 半導体記憶装置および半導体記憶装置の制御方法
JP5017407B2 (ja) 2010-03-24 2012-09-05 株式会社東芝 半導体記憶装置
JP2012128660A (ja) 2010-12-15 2012-07-05 Toshiba Corp 半導体記憶装置
JP5651457B2 (ja) 2010-12-15 2015-01-14 株式会社東芝 半導体記憶装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63275225A (ja) * 1987-05-06 1988-11-11 Seiko Epson Corp 誤り訂正装置
JPH10207726A (ja) * 1997-01-23 1998-08-07 Oki Electric Ind Co Ltd 半導体ディスク装置
JP2001345712A (ja) * 2000-05-31 2001-12-14 Hitachi Ltd 符号化回路
JP2004280556A (ja) * 2003-03-17 2004-10-07 Renesas Technology Corp 情報記憶装置および情報処理システム

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10763897B2 (en) 2017-09-20 2020-09-01 Toshiba Memory Corporation Memory system
US11336305B2 (en) 2017-09-20 2022-05-17 Kioxia Corporation Memory system
JP7428689B2 (ja) 2021-12-17 2024-02-06 華邦電子股▲ふん▼有限公司 メモリシステム

Also Published As

Publication number Publication date
TW201306041A (zh) 2013-02-01
TWI486962B (zh) 2015-06-01
US9164831B2 (en) 2015-10-20
WO2013014974A1 (en) 2013-01-31
US20140173377A1 (en) 2014-06-19

Similar Documents

Publication Publication Date Title
JP5768022B2 (ja) メモリコントローラ、記憶装置、誤り訂正装置および誤り訂正方法
US8448050B2 (en) Memory system and control method for the same
US9037941B2 (en) Systems and methods for error checking and correcting for memory module
US8468432B2 (en) Coder-decoder and method for encoding and decoding an error correction code
JP5043562B2 (ja) エラー訂正回路、その方法及び前記回路を備える半導体メモリ装置
US9141467B2 (en) Semiconductor memory system including Reed-Solomon low density parity check decoder and read method thereof
US20130305120A1 (en) Memory controller, storage device and error correction method
US10635528B2 (en) Memory controller and method of controlling memory controller
JP2008165808A (ja) 誤り訂正確率を減らすエラー訂正回路、その方法及び前記回路を備える半導体メモリ装置
KR20090018252A (ko) 처리량을 높이기 위하여 더블 버퍼링 구조와 파이프라이닝기법을 이용하는 디코더 및 그 디코딩 방법
JP2013029882A (ja) メモリコントローラ、半導体記憶装置および復号方法
CN111628780B (zh) 数据编码、解码方法及数据处理系统
US10404283B2 (en) Method and associated decoding circuit for decoding an error correction code
US9960788B2 (en) Memory controller, semiconductor memory device, and control method for semiconductor memory device
US10291258B2 (en) Error correcting code for correcting single symbol errors and detecting double bit errors
KR101314232B1 (ko) 에러 정정 코드의 부호화 및 복호화 방법 그리고 코덱
JP2013214212A (ja) メモリコントローラ、半導体記憶装置および復号方法
US10970166B2 (en) Memory system and method of controlling non-volatile memory
US20150256204A1 (en) Memory controller, storage device and memory control method
US20150339183A1 (en) Controller, storage device, and control method
US9160371B2 (en) Memory controller, storage device and memory control method
US9077381B2 (en) Memory controller, storage device and memory control method
US9331713B2 (en) Encoding apparatus, control method of encoding apparatus, and memory device
KR20230132697A (ko) 일반 연결 코드 코드워드를 디코딩하는 장치, 저장 시스템 및 그 제어 방법
JP2023032889A (ja) 半導体装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130829

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131203

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20140430