JP5017407B2 - 半導体記憶装置 - Google Patents

半導体記憶装置 Download PDF

Info

Publication number
JP5017407B2
JP5017407B2 JP2010069012A JP2010069012A JP5017407B2 JP 5017407 B2 JP5017407 B2 JP 5017407B2 JP 2010069012 A JP2010069012 A JP 2010069012A JP 2010069012 A JP2010069012 A JP 2010069012A JP 5017407 B2 JP5017407 B2 JP 5017407B2
Authority
JP
Japan
Prior art keywords
data
error
error correction
code
errors
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
JP2010069012A
Other languages
English (en)
Other versions
JP2011203878A (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 JP2010069012A priority Critical patent/JP5017407B2/ja
Priority to US12/889,018 priority patent/US8418042B2/en
Priority to TW100105491A priority patent/TWI437421B/zh
Priority to EP11155975.3A priority patent/EP2372550B1/en
Priority to KR1020110018239A priority patent/KR101267183B1/ko
Priority to CN201110049300.5A priority patent/CN102201266B/zh
Publication of JP2011203878A publication Critical patent/JP2011203878A/ja
Application granted granted Critical
Publication of JP5017407B2 publication Critical patent/JP5017407B2/ja
Priority to US13/858,370 priority patent/US8751911B2/en
Priority to US14/269,995 priority patent/US9048878B2/en
Priority to US14/703,463 priority patent/US9298546B2/en
Priority to US15/263,336 priority patent/USRE49253E1/en
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/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/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • 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
    • 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/1072Adding 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 multilevel memories
    • 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/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/16Protection against loss of memory contents
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • 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/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/1515Reed-Solomon codes
    • 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/29Coding, 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
    • 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/29Coding, 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/2906Coding, 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0411Online error correction

Description

本発明は、半導体記憶装置に関する。
NANDフラッシュメモリチップは、チップ内に多数のメモリセルを備え、情報を電荷量に置き換えて、これらのメモリセルに対して情報の記録を行っている。また、チップ内は複数のメモリブロックに分割されて構成されている。そのうち消去の単位であるブロックと呼ばれる単位と、ブロックをさらに分割した、読み書きの単位であるページと呼ばれる単位が存在する。
NANDフラッシュメモリは、電荷量の大小に対応させて情報を記録する。そのため、時間経過に伴い電荷が放電され、記録された情報に誤りが発生する。この、時間経過に伴う電荷の放電に起因する情報の誤りに対応するためには、記録するデータに対して誤り訂正符号化を行い、データと、誤り訂正符号化により生成した冗長符号とをページ内に記録するのが一般的である。特許文献1には、リード・ソロモン符号を用いた誤り訂正符号化について記載されている。
米国特許第5996105号明細書
ところで、近年では、製造プロセスの微細化に伴い、NANDフラッシュメモリチップにおいて、情報の記録のために蓄積した電荷が放電し易くなってきており、放電が進行した場合にはランダム誤りが増加することになる。したがって、長期間のデータ保存を行うためには、強力な誤り訂正能力が必要となる。しかしながら、強力な誤り訂正を行うには、冗長符号量の増大を伴うという問題がある。
一方で、製造プロセスの微細化の影響は、メモリセルだけではなく周辺回路にも及んでおり、ブロック単位の消去制御部分の故障によるブロック全体の故障など、大きなデータブロックのデータ破損(バースト破損と呼ぶ)が無視できなくなってきている。
さらに、半導体記憶装置そのものの大容量化により、記憶装置内に多数のチップを搭載した記憶装置が登場している。そのため、上述したような故障が記憶装置内に存在する確率が飛躍的に増大している。
本発明は、上記に鑑みてなされたものであって、多数のメモリチップを搭載した半導体記憶装置において、バースト状のデータ破損を復元する能力を得ると共に、ランダムに発生するエラーの訂正能力を向上させることを目的とする。
上述した課題を解決し、目的を達成するために、本発明は、複数のメモリチップを有する半導体記憶装置であって、メモリチップは、複数の第1記憶領域を有し、第1記憶領域は、複数の第2記憶領域を有し、第2記憶領域は、データの記憶および読み出しの単位であり、第1のデータは、記憶対象のデータである第2のデータを複数有し、第3のデータは、複数の第1のデータのそれぞれから1つずつ選択される第2のデータを複数有し、第3のデータに含まれる第2のデータは、他の第3のデータに含まれる第2のデータとは重複せず、第1のデータに基づいて第1の誤り検査符号を生成する第1の誤り検査符号生成手段と、第1のデータと第1の誤り検査符号とに基づいて、組織符号である第1の誤り訂正符号を生成する第1の誤り訂正符号生成手段と、第2記憶領域に対して、第1のデータと第1の誤り検査符号と第1の誤り訂正符号との記録を行う記録手段と、第3のデータの複数のそれぞれについてリード・ソロモン符号の冗長符号を複数生成する第2の誤り訂正符号生成手段とを備え、第4のデータは、第1のデータと同じ大きさであり、全ての第3のデータから生成される冗長符号を含み、第4のデータに含まれる冗長符号は、他の第4のデータに含まれる冗長符号とは重複せず、複数の第4のデータのそれぞれから第2の誤り検査符号を生成する第2の誤り検査符号生成手段と、第4のデータのそれぞれと第2の誤り検査符号とに基づいて、組織符号である第2の誤り訂正符号を生成する第3の誤り訂正符号生成手段とをさらに備え、記録手段は、第4のデータと第2の誤り検査符号と第2の誤り訂正符号との記録を行い、第1の誤り訂正符号を用いて第1のデータおよび第1の誤り検査符号に対して誤り訂正を行う第1の誤り訂正手段と、第1の誤り訂正手段による第1のデータに対する誤り訂正結果に対して第1の誤り検査符号を用いて誤り検査を行い誤りを検出する第1の誤り検査手段と、第2の誤り訂正符号を用いて第4のデータおよび第2の誤り検査符号に対して誤り訂正を行う第2の誤り訂正手段と、第2の誤り訂正手段による第4のデータに対する誤り訂正結果に対して第2の誤り検査符号を用いて誤り検査を行い誤りを検出する第2の誤り検査手段と、第1のデータおよび第4のデータからリード・ソロモン符号のシンドロームを計算し、第1の誤り検査手段および第2の誤り検査手段で検出された誤りの位置を誤り位置として与えて、誤り位置とシンドロームとから誤りベクトルを計算して第1のデータおよび第4のデータの誤り訂正を行う第3の誤り訂正手段と、第1のデータおよび第4のデータからリード・ソロモン符号のシンドロームを計算し、シンドロームから誤り位置および誤りベクトルを計算して第1のデータおよび第4のデータの誤り訂正を行う第4の誤り訂正手段と、第1の誤り検査手段で検出された誤りの数と、第2の誤り検査手段で検出された誤りの数との和である誤り数の判定を行い、誤り数が0の場合に、第1の誤り訂正手段で第1のデータに対して誤り訂正処理が施されたデータを、誤り訂正が成功したデータとして出力し、誤り数が1以上、且つ、第3の誤り訂正手段の誤り訂正能力で訂正可能な誤り数以下の場合に、第1の誤り訂正手段で誤り訂正処理が施された第1のデータに対して第3の誤り訂正手段で誤り訂正を施して、誤り訂正が成功したデータとして出力し、誤り数が第3の誤り訂正手段の誤り訂正能力で訂正可能な誤り数を超える場合に、第1の誤り訂正手段により誤り訂正された第1のデータおよび第4のデータに対して第4の誤り訂正手段で誤り訂正処理を施し、誤り訂正処理が施された第1のデータに対して再び第1の誤り訂正手段で誤り訂正処理を施すと共に第4のデータに対して再び第2の誤り訂正手段で誤り訂正処理を施し、誤り訂正処理が施された第1のデータおよび第4のデータに対して第1の誤り検査手段および第2の誤り検査手段でそれぞれ誤り検査を行って誤り数を求め、求められた誤り数を用いて判定を再び行うように制御する制御手段とをさらに備えることを特徴とする。
本発明によれば、多数のメモリチップを搭載した半導体記憶装置において、バースト状のデータ破損を復元する能力を得ると共に、ランダムに発生するエラーの訂正能力を向上させることができるという効果を奏する。
実施形態に適用可能な半導体記憶装置の構成を示すブロック図。 エンコーダ/デコーダ部の構成を示すブロック図。 メモリブロックBLKの構成の例を示す等価回路図。 NANDフラッシュメモリチップの多値記憶を説明するための図。 実施形態による記録フォーマットを示す図。 実施形態の誤り訂正符号化処理を示すフローチャート。 電荷の蓄積状態に伴うエラーの発生を説明するための図。 電荷の蓄積状態に伴うエラーの発生を説明するための図。 RS符号によるエンコードを行うページを示す図。 実施形態によるエラー訂正符号のデコード処理を概略的に示す図。 RSデコーダの一例の構成を示すブロック図。 RSデコーダの別の例の構成を示すブロック図。 実施形態による誤り訂正処理を示す一例のフローチャート。 RSデコーダによる通常の誤り訂正処理を示す一例のフローチャート。 実施形態による誤り訂正方法を検証するための図。 実施形態による誤り訂正方法を検証するための図。 実施形態による誤り訂正方法を検証するための図。 実施形態による誤り訂正方法を検証するための図。 実施形態による誤り訂正方法を検証するための図。
以下に添付図面を参照して、本発明に係る半導体記憶装置の一実施形態を詳細に説明する。本実施形態では、複数のメモリチップを搭載した半導体記憶装置内に、大きなデータブロックの破損を復元するための誤り訂正符号を格納するメモリチップをさらに設ける。大きなデータブロックにおけるデータの破損時には、当該誤り訂正符号を用いてデータの復元を行う。また、大きなデータブロックの破損対策のための当該誤り訂正符号を、小さなデータブロック内の誤り訂正符号としても利用し、メモリチップ間の誤り訂正とページ内の誤り訂正とを交錯反復することにより、誤り訂正能力の増大を図る。
図1は、本発明の一実施形態に適用可能な半導体記憶装置1の一例の構成を示す。図1の例では、半導体記憶装置1は、インターフェイス(I/F)10、バッファメモリ11、コントローラ12およびフラッシュメモリ部13を有する。
インターフェイス10は、例えばパーソナルコンピュータ(PC)といった、この半導体記憶装置1のホストとなる情報処理装置と、この半導体記憶装置1とのインターフェイスである。インターフェイス10としては、例えばSATA(Serial Advanced Technology Attachment)規格を適用することができる。バッファメモリ11は、フラッシュメモリ部13に記録するための記録データ用のバッファ領域であるライトバッファ11Aと、フラッシュメモリ部13から読み出された読み出しデータ用のバッファ領域であるリードバッファ11Bとを有する。コントローラ12は、例えばCPU(Central Processing Unit)を含み、インターフェイス10およびバッファメモリ11を制御して、フラッシュメモリ部13に対するデータの記録や、フラッシュメモリ部13からのデータの読み出しの速度を調整する。
フラッシュメモリ部13は、NANDフラッシュコントローラ20と複数のNANDフラッシュメモリチップ23を有すると共に、各NANDフラッシュメモリチップ23にそれぞれ対応する複数のエンコーダ/デコーダ(E/D)部22を有する。フラッシュメモリ部13は、さらに、1のリード・ソロモン符号エンコーダ/デコーダ(RS E/D)部21と、このRS E/D部21に対応するE/D部24およびNANDフラッシュメモリチップ25を有する。NANDフラッシュメモリチップ23および25は、チップ内に備えた多数のメモリセルに対して情報を電荷に置き換えて記憶する。
NANDフラッシュコントローラ20は、各NANDフラッシュメモリチップ23およびNANDフラッシュメモリチップ25に対するデータの記録および読み出しを制御する。それと共に、NANDフラッシュコントローラ20は、各E/D部22、E/D部24、ならびに、RS E/D部21の動作を制御する。
例えば、NANDフラッシュコントローラ20は、メモリを有し、データの記録時には、ライトバッファ11Aに所定量のデータが溜め込まれると、ライトバッファ11Aから、NANDフラッシュメモリチップ23の記録単位分のデータを読み出してメモリに記憶する。このメモリから読み出されたデータがE/D部22に供給されてエラー訂正符号化され、NANDフラッシュコントローラ20の制御によりNANDフラッシュメモリチップ23に記録される。
RS E/D部21は、記録処理時には、入力されたデータに対してリード・ソロモン符号(以下、RS符号と略称する)を用いた誤り訂正符号化を行う。また、読み出し処理時には、入力されたデータのRS符号をデコードし、当該データに対して誤り訂正処理を行う。例えば、RS E/D部21は、エンコードおよびデコード対象となるデータを格納するためのメモリを有し、このメモリに格納されたデータを用いて誤り訂正符号化処理および誤り訂正処理などを行う。
E/D部22およびE/D部24は、記録処理時には、入力されたデータに対してCRC(Cyclic Redundancy Check)符号を生成すると共に、当該データおよび生成されたCRC符号に対してBCH(Bose-Chaudhuri-Hocquenghem)符号など組織符号を用いた誤り訂正符号化を行う。また、読み出し処理時には、入力されたデータのBCH符号をデコードして誤り訂正を行うと共に、CRC符号をデコードして誤り位置を求める。例えば、E/D部22およびE/D部24は、それぞれエンコードおよびデコード対象となるデータを格納するためのメモリを有し、このメモリに格納されたデータを用いて誤り訂正符号化処理および誤り訂正処理などを行う。
なお、E/D部22で行う誤り訂正符号化に用いる符号は、組織符号であれば、BCH符号に限らず他の符号を用いてもよい。例えば、RS符号やLDPC(Low-Density Parity-Check)符号などを、E/D部22による誤り訂正符号化に用いることができる。また、CRC符号も、これに限らず、チェックサムなど十分な誤り検出能力があれば、他の符号を用いてもよい。
図2は、E/D部22の一例の構成を示す。E/D部22は、CRCエンコーダ26およびBCHエンコーダ27と、BCHデコーダ28およびCRCデコーダ29とを有する。エンコードのためにE/D部22に入力された原データは、CRCエンコーダ26およびBCHエンコーダ27にそれぞれ供給される。
CRCエンコーダ26(第1の誤り検査符号生成部)は、供給された原データのCRCを計算し、計算結果から誤り検査符号であるCRC符号を生成する。CRC符号は、BCHエンコーダ27に供給される。BCHエンコーダ27(第1の誤り訂正符号生成部)は、原データと、CRCエンコーダ26から供給されたCRC符号とに対して誤り訂正符号であるBCH符号を生成して、原データおよびCRC符号に対する誤り訂正符号化を行う。BCH符号、原データおよびCRC符号がE/D部22から出力される。
一方、上述のようにしてBCH符号により誤り訂正符号化されたデータは、E/D部22に入力されると、BCHデコーダ28に供給される。BCHデコーダ28(第1の誤り訂正部)は、入力されたデータのBCH符号をデコードし、BCH符号の符号訂正能力で訂正可能な誤りを訂正する。CRCデコーダ29(第1の誤り検査部)は、BCHデコーダ28の出力に含まれるCRC符号をデコードしてエラー検査を行う。BCHデコーダ28の出力と、エラー検査結果とがE/D部22からそれぞれ出力される。
なお、E/D部24も、この図2に示すE/D部22と同一の構成で実現可能であるので、詳細な説明を省略する。ここで、後述する図5の右側(冗長部側)に例示されるように、E/D部22におけるCRCエンコーダ26およびBCHエンコーダ27を、E/D部24ではそれぞれCRCエンコーダ26’(第2の誤り検査符号生成部)およびBCHエンコーダ27’(第3の誤り訂正符号生成部)とする。また、後述する図9の冗長部側に例示されるように、E/D部22におけるBCHデコーダ28およびCRCデコーダ29を、E/D部24ではそれぞれBCHデコーダ28’(第3の誤り訂正部)およびCRCデコーダ29’(第2の誤り検査部)とする。
上述したような構成において、ライトバッファ11Aから読み出された原データがNANDフラッシュコントローラ20に供給され、NANDフラッシュコントローラ20の制御により、各E/D部22にそれぞれ供給される。
各E/D部22では、供給された原データに対してCRCエンコーダ26がCRC符号を生成すると共に、BCHエンコーダ27が原データおよびCRC符号に対してBCH符号を生成し、誤り訂正符号化する。各E/D部22、22、…から出力されたBCH符号、CRC符号および原データからなるデータ群は、それぞれ各NANDフラッシュメモリチップ23に記録される。
原データは、RS E/D部21にも供給される。RS E/D部21は、供給された原データに対してRS符号の冗長符号(以下、単にRS符号と呼ぶ)を生成して誤り訂正符号化する。RS E/D部21で生成されたRS符号は、E/D部24に供給される。E/D部24は、供給されたRS符号に対してCRCエンコーダ26’がCRC符号を生成すると共に、BCHエンコーダ27’がRS符号およびCRC符号に対してBCH符号を生成し、誤り訂正符号化する。E/D部24から出力されたBCH符号、CRC符号およびRS符号からなるデータ群は、NANDフラッシュメモリチップ25に記録される。
NANDフラッシュメモリチップ23からのデータの読み出し時の動作は、概略的には、次のようになる。各NANDフラッシュメモリチップ23から読み出されたデータが各E/D部22に供給される。E/D部22では、供給されたデータに対してBCHデコーダ28がBCH符号のデコードを行い、原データおよびCRC符号に対する誤り訂正を行うと共に、CRCデコーダ29がBCHデコーダ28の出力に含まれるCRC符号をデコードして誤り検査を行う。誤り訂正処理を施された原データと、誤り検査結果とがNANDフラッシュコントローラ20およびRS E/D部21にそれぞれ供給される。
それと共に、NANDフラッシュメモリチップ25から読み出されたデータがE/D部24に供給される。E/D部24では、供給されたデータに対してBCHデコーダ28’がBCH符号のデコードを行い、RS符号およびCRC符号に対する誤り訂正を行うと共に、CRCデコーダ29’がBCHデコーダ28の出力に含まれるCRC符号をデコードして誤り検査を行う。誤り訂正処理を施されたRS符号と、誤り検査結果とがRS E/D部21に供給される。
ここで、E/D部22による誤り検査の結果で求められた誤りの数と、E/D部24による誤り検査の結果で求められた誤りの数との和である誤り数が0でなければ、RS E/D部21によりRS符号がデコードされ、E/D部22から出力されたBCH符号による誤り訂正処理を施された原データと、RS符号自身とに対して、RS符号による誤り訂正処理が施される。このとき、詳細を後述する誤り数に関する条件に応じて、通常の誤り訂正を行うか、消失訂正を行うかが選択される。消失訂正を行うように選択された場合は、誤り訂正された原データが出力データとしてNANDフラッシュコントローラ20に供給される。
一方、通常の誤り訂正を行うように選択された場合は、RS E/D部21によりRS符号による誤り訂正処理が施された原データに対して、さらに、各E/D部22でBCH符号による誤り訂正処理が施される。この誤り訂正処理で誤りが全て訂正されたら、誤り訂正された原データが出力データとしてNANDフラッシュコントローラ20に供給される。誤りが全て訂正されていなければ、再びRS E/D部21および各E/D部22での誤り訂正処理が行われる。
NANDフラッシュコントローラ20は、詳細を後述する一連の誤り訂正処理を終了し、最終的に各E/D部22およびRS E/D部21から供給されたデータを、リードバッファ11Bに書き込む。
次に、NANDフラッシュメモリチップの構成について、概略的に説明する。NANDフラッシュメモリチップは、データ消去の単位である複数のメモリブロックBLKから構成されている。メモリブロックBLKの構成について、図3を用いて説明する。図3は、何れかのメモリブロックBLKの構成の例を示す等価回路図である。
メモリブロックBLKは、X方向に沿って配置されたm(mは、1以上の整数)個のNANDストリングを備えている。各NANDストリングは、選択トランジスタST1、ST2、及び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から順に、制御ゲート電極がワードラインWL1〜WLnにそれぞれ接続されている。したがって、ワードラインWL1に接続されたメモリセルトランジスタMTのドレインは選択トランジスタST1のソースに接続され、ワードラインWLnに接続されたメモリセルトランジスタMTのソースは選択トランジスタST2のドレインに接続されている。
ワードラインWL1〜WLnは、メモリブロックBLK内のNANDストリング間で、メモリセルトランジスタMTの制御ゲート電極を共通に接続している。つまり、メモリブロックBLK内において同一行にあるメモリセルトランジスタMTの制御ゲート電極は、同一のワードラインWLに接続される。この同一のワードラインWLに接続される複数のメモリセルは1ページとして取り扱われ、このページ毎にデータの記録およびデータの読み出しが行われる。すなわち、ページは、NANDフラッシュメモリチップにおける記録および読み出しの単位となる単位ブロック(第1記憶領域)である。ページは、複数を纏めて管理することができる(第2記憶領域)。
また、ビット線BL1〜BLnは、メモリブロックBLK間で、選択トランジスタST1のドレインを共通に接続している。つまり、複数のメモリブロックBLK内において同一列にあるNANDストリングは、同一のビット線BLに接続される。
メモリセルトランジスタMTは、浮遊ゲート電極に蓄えられる電荷の量に応じて電圧が変化し、この電圧の違いに応じた情報を記憶する。メモリセルトランジスタMTは、1ビットの情報を記憶するように構成されていてもよいし、複数ビットの情報を記憶するように構成されていてもよい。本実施形態のNANDフラッシュメモリチップ23および25は、2ビットの情報を記憶可能に構成されている。
そして、NANDフラッシュメモリチップ内の、それぞれ図示されないセンスアンプおよび電位発生回路などを含む制御回路は、NANDフラッシュメモリチップに供給されたデータをメモリセルトランジスタMTに書き込み、メモリセルトランジスタMTに記憶されているデータをNANDフラッシュメモリチップの外部に出力することが可能な構成を有している。
上述したように、NANDフラッシュメモリチップは、1のメモリブロックBLKには複数のページが含まれる。また、複数のメモリブロックBLKでプレーンが構成される。1のNANDフラッシュメモリチップ内の異なるプレーンは、並列的にアクセス可能とされている。一方、1のプレーン内の異なるブロックは、並列アクセス不可とされている。
NANDフラッシュメモリチップに対する多値記憶について、図4を用いて概略的に説明する。上述したように、NANDフラッシュメモリチップにおいては、浮遊ゲート電極に蓄えられる電荷量に応じた電圧の変化を利用して情報を記憶する。したがって、電圧の変化または電荷量に対して複数の信号点を設定することで、多値の情報を記憶させることができる。
本実施形態では、図4の左側に例示されるように、浮遊ゲート電極に蓄積される電荷量に対して3の信号点を設けることで、メモリセルトランジスタMTの状態を電荷の蓄積量に応じた4の状態に分類し、2ビットの情報を記憶させることができる。図4の例では、各信号点を閾値#1、閾値#2および閾値#3としている。
このとき、状態が隣接する符号のハミング距離を1にするように、各状態に符号を割り当てる。図4の例では、2ビットのうち上位ビットを「U:Upper」、下位ビットを「L:Lower」とし、閾値#1<閾値#2<閾値#3としたとき、電荷量が閾値#3よりも多い状態に対して上位ビットに「0」を、下位ビットに「1」をそれぞれ割り当てる。電荷量が閾値#3よりも少なく閾値#2よりも多い状態に対して上位ビットに「1」を、下位ビットに「1」をそれぞれ割り当てる。電荷量が閾値#2よりも少なく閾値#1よりも多い状態に対して上位ビットに「1」を、下位ビットに「0」をそれぞれ割り当てる。電荷量が閾値#1よりも少ない状態に対して上位ビットに「0」を、下位ビットに「0」をそれぞれ割り当てる。
ワードラインWLからは、上位ビットおよび下位ビットをそれぞれ読み出すことができる。本実施形態に適用可能なNANDフラッシュメモリチップの実際の使用形態においては、ワードラインWLを、上位ビットのみを読み出すワードラインWLと、下位ビットのみを読み出すワードラインWLとに分けて用いている。換言すれば、各ページは、上位ビットのみからなるページ(Upperビットページと呼ぶ)と、下位ビットのみからなるページ(Lowerビットページと呼ぶ)に分別される。
<エンコード処理>
次に、図5および図6を用いて、本実施形態による誤り訂正符号のエンコード処理について、より詳細に説明する。図5は、本実施形態による記録フォーマットの一例を示す。図5において、上述した図1および図2と挙通する部分には同一の符号を付し、詳細な説明を省略する。なお、RSエンコーダ21A(第2の誤り訂正符号生成部)は、図1におけるRS E/D部21のエンコード機能を実現する部位を示す。
図5において、それぞれ1のデータブロックData(またはデータブロックRS)、データブロックCRCおよびデータブロックBCHの組からなるデータブロック群が記録されるNANDフラッシュメモリチップおよびプレーンが、それぞれチップCh#nおよびプレーンPl#n(それぞれnは16進表記の数)として示されている。
この例では、フラッシュメモリ部13は、NANDフラッシュメモリチップ23および25を合計して16個のNANDフラッシュメモリチップ(チップCh#0〜Ch#F)を有する。これらのうち、データ部として示されるチップCh#0〜Ch#Eは、図1における各NANDフラッシュメモリチップ23に対応する。冗長部として示されるチップCh#Fは、図1におけるNANDフラッシュメモリチップ25に対応する。また、各チップCh#0〜Ch#Fは、それぞれ、プレーンPl#0〜Pl#3の4プレーン構成とされている。上述したデータブロック群は、1ページに記録される。
図6は、本実施形態による誤り訂正符号化処理を示す一例のフローチャートである。この図6のフローチャートと上述した図5とを用いて、本実施形態による誤り訂正符号化処理について説明する。ステップS10で、各E/D部22は、NANDフラッシュコントローラ20内のメモリから、所定量(この例では512バイト)の原データを取得する。このとき、当該原データは、RS E/D部21にも取得され、図示されないメモリに格納される。
次のステップS11で、E/D部22において、CRCエンコーダ26が原データの8ビット(第2のデータ)毎にCRCを計算し、CRC符号(第1の誤り検査符号)を生成する。この例では、512バイトの原データから、4バイトのCRC符号が生成されている。CRC符号は、BCHエンコーダ27に供給される。次のステップS12で、BCHエンコーダ27は、原データの8ビット毎にBCH符号を生成すると共に、ステップS11で生成されたCRC符号の8ビット毎にBCH符号を生成する。この例では、512バイトの原データと、4バイトのCRC符号とから、26バイトのBCH符号(第1の誤り訂正符号)が生成されている。
そして、次のステップS13で、原データと、原データから生成したCRC符号と、原データおよびCRC符号から生成したBCH符号とが、NANDフラッシュメモリチップ23のプレーンの1ページに記録される。例えば、最初の記録では、NANDフラッシュメモリチップCh#0のプレーンPl#0内の1のページに、これら原データ、CRC符号およびBCH符号が、それぞれデータブロックData(第1のデータ)、データブロックCRCおよびデータブロックBCHとして記録される。
次のステップS14で、規定数のデータ処理を行ったか否かが判別される。例えば、データ部に対応する全てのNANDフラッシュメモリチップCh#0〜Ch#Eの、全てのプレーンPl#0〜Pl#3それぞれに対し、1ページずつ、データブロックData、データブロックCRCおよびデータブロックBCHが記録されたか否かが判定される。若し、未だ規定数のデータ処理が行われていないと判定されたら、処理がステップS10に戻され、次の所定量の原データが取得される。
処理がステップS10に戻された際に、次の所定量の原データに基づき生成されたデータブロックData、データブロックCRCおよびデータブロックBCHは、直前の処理までにデータブロックData、データブロックCRCおよびデータブロックBCHが記録された各プレーンとは異なるプレーンのページに記録される。これは、例えば、各NANDフラッシュメモリチップCh#0〜Ch#Eを通して、各プレーンPl#0〜Pl#3それぞれの1ページに対して順次、データブロックData、データブロックCRCおよびデータブロックBCHからなるデータブロック群を記録していくことで実現できる。
一方、ステップS14で、規定数のデータ処理が行われたと判定されたら、処理はステップS15に移行される。ステップS15では、RSエンコーダ21Aで、原データに対するRS符号を生成する。上述のステップS10〜ステップS13の処理において、RSエンコーダ21Aは、NANDフラッシュメモリチップCh#0〜Ch#Eの全てのプレーンPl#0〜Pl#3に対して1ページずつ記録されたデータブロックDataと同じデータを取得している。RSエンコーダ21Aは、この取得したデータから、データブロックDataを横断して、データブロックData内の位置が対応する8ビット(1シンボル)ずつデータを取り出して(第3のデータ)、RS符号(第2の誤り訂正符号)を生成する。
次のステップS16で、E/D部24において、CRCエンコーダ26’が上述のステップS15で生成されたRS符号の8ビット毎にCRCを計算し、CRC符号を生成する。CRC符号は、E/D部24内のBCHエンコーダ27’に供給される。次のステップS17で、BCHエンコーダ27’がRS符号の8ビット毎にBCH符号を生成すると共に、ステップS16で生成されたCRC符号の1バイト毎にBCH符号を生成する。
そして、次のステップS18で、RS符号と、RS符号から生成したCRC符号と、RS符号およびCRC符号から生成したBCH符号とが、NANDフラッシュメモリチップ25(NANDフラッシュメモリチップCh#F)のプレーンの1ページに記録される。このとき、NANDフラッシュメモリチップCh#Fの各プレーンPl#0〜Pl#3の1ページに、これらRS符号と、RS符号から生成したCRC符号と、RS符号およびCRC符号から生成したBCH符号とが、それぞれデータブロックRS(第4のデータ)、データブロックCRCおよびデータブロックBCHとして記録される。
ここで、上述したように、RS符号は、データブロックDataを横断する方向に生成されるため、ページ方向ではデータブロックDataと同サイズで、データブロックDataを横断する方向では複数のページを跨ぐサイズのブロックのデータとして形成される。そこで、このブロックからページ方向のデータ順が変わらないようにデータを選択して、データブロックDataと同じサイズのブロックをデータブロックRSとして作成し、NANDフラッシュメモリチップ25に対して記録する。
なお、NANDフラッシュメモリチップにおいて、記録したデータが読み出し時に誤りとなる確率がページ毎に異なる場合がある。この場合、例えばデータブロックRSを、誤りの期待値が小さいページに記録するようにすると、好ましい。例えばNANDフラッシュメモリチップ25における各ページの誤りの期待値の平均値を求めた際に、当該誤りの期待値が平均値よりも小さい、すなわち、誤りとなる確率が低いページに、データブロックRSを記録する。
ここで、メモリセルトランジスタMTにおける電荷の蓄積状態に伴うエラーの発生について説明する。図4を用いて説明したように、メモリセルトランジスタMTでは、浮遊ゲート電極に蓄積された電荷量に対して閾値判断を行って、上位ビットおよび下位ビットを決定している。より具体的には、上位ビットについては、電荷量が閾値#1と閾値#3との間であれば値「1」、それ以外では値「0」となる。また、下位ビットについては、電荷量が閾値#2より多ければ値「1」、閾値#2未満であれば値「0」となる。そのため、読み出し時の電荷量が記録時の電荷量と異なっていると、ビットエラーが発生することになる。
図7−1および図7−2を用いて、より具体的に説明する。図7−1は、記録時の電荷量に対し、読み出し時の電荷量が減少してしまった場合の例を示す。記録時には、符号語「10」を記録するために、閾値#3より多い電荷量をメモリセルに蓄積させている。これが、読み出し時までに一部のメモリセルの電荷量が閾値#3より下がってしまうと、上位ビットにおいて誤りが発生することになる。なお、符号語は、前側の値が下位ビット、後側の値が上位ビットを表すものとする。
図7−2は、記録時の電荷量に対し、読み出し時の電荷量が増加してしまった場合の例を示す。記録時には、符号語「11」を記録するために、閾値#2より多く、閾値#3より少ない電荷量をメモリセルに蓄積させている。これが、読み出し時までに一部のメモリセルの電荷量が閾値#3を超えてしまうと、上位ビットにおいて誤りが発生することになる。
このような、記録時と読み出し時とで電荷量が異なるために誤りが発生するケースは、各閾値毎に2種類あるので、下記の6通りとなる。
(1)符号語「10」を記録した場合で、読み出し時までに電荷量が減少して閾値#3未満となり、上位ビットが誤る。
(2)符号語「11」を記録した場合で、読み出し時までに電荷量が増加して閾値#3を超え、上位ビットが誤る。
(3)符号語「11」を記録した場合で、読み出し時までに電荷量が減少して閾値#2未満となり、下位ビットが誤る。
(4)符号語「01」を記録した場合で、読み出し時までに電荷量が増加して閾値#2を超え、下位ビットが誤る。
(5)符号語「01」を記録した場合で、読み出し時までに電荷量が減少して閾値#1未満となり、上位ビットが誤る。
(6)符号語「00」を記録した場合で、読み出し時までに電荷量が増加して閾値#1を超え、上位ビットが誤る。
このように、上位ビットが誤るケースが4通りであるのに対し、下位ビットが誤るケースは2通りである。上位これは、ビットについては閾値判断の機会が2度あるのに対し、下位ビットは、閾値判断の機会が1度のみであるためである。そのため、上述の6通りの例における誤りの発生確率が等しければ、上位ビットの誤りは、下位ビットの誤りの2倍の確率で発生することになる。
これに対応して、本実施形態では、RSエンコーダ21Aでエンコードを行うページについて、Upperビットページの数とLowerビットページの数とを略同数とする。この場合、例えば、図8(a)に例示されるように、データ部および冗長部のそれぞれにおいて、UpperビットページとLowerビットページとを交互に配置することが考えられる。また、図8(b)に例示されるように、データ部および冗長部のそれぞれにおいて、UpperビットページとLowerビットページとをそれぞれ纏めて配置してもよい。
すなわち、フラッシュメモリ部13の全体として、UpperビットページとLowerビットページとは同数存在するため、各プレーンのある1ページについて、誤り確率の小さいLowerビットページを集めてしまうと、各プレーンの他のページにおいて、誤り確率の大きいUpperビットページが集中してしまうことになる。この場合、Lowerビットページが集中した側ではエラーの発生確率が低くなりエラー訂正も容易となる。一方、Upperビットページが集中した側ではエラーの発生確率が非常に高くなり、RSエンコーダ21Aのエラー訂正能力を超えた数のエラーが発生した場合に、エラー訂正不能となってしまうことになる。したがって、RSエンコーダ21AでエンコードするページをUpperビットページとLowerビットページとで略同数とし、全体の性質を平均化することで、より効率的なエラー訂正が可能となる。
<デコード処理>
次に、本実施形態によるエラー訂正符号のデコード処理について説明する。図9は、本実施形態によるエラー訂正符号のデコード処理を概略的に示す。図9において、RSデコーダ21B(第2の誤り訂正部)は、図1におけるRS E/D部21のデコード機能を実現する部位を示す。また、BCHデコーダ28’およびCRCデコーダ29’は、それぞれE/D部24に含まれる構成要素であって、E/D部22におけるBCHデコーダ28およびCRCデコーダ29にそれぞれ対応する。
本実施形態では、先ず、各ページから読み出したデータについて、矢印Aに例示されるように、BCHデコーダ28および28’によりページ方向にBCH符号のデコードを行い、デコード結果に対して、CRCデコーダ29および29’(図9ではそれぞれCRC DECと表記)によりCRC符号によるエラー検査を行う。エラー検査の結果、データ部および冗長部におけるエラー数の和が0と判定された場合、エラー訂正処理が完了する。
ここで、CRC符号によるエラー検査の結果、誤りが検出されたデータについては、以後のデコード処理においてはBCH符号によるデコード処理前のデータを用いる。これに限らず、誤りが検出されたデータについて、以後のデコード処理でBCH符号によるデコード処理を行ったデータを用いてもよい。
CRC符号によるエラー検査の結果、データ部および冗長部におけるエラー数の和が0ではないと判定された場合、矢印Bに例示されるように、RSデコーダ21Bにより各ページを横断してRS符号のデコードが行われる。ここで、RSデコーダ21Bは、CRC符号によるエラー検査結果に応じて、エラー数の和が、0より大きく、且つ、RS符号の構成により規定される所定数以下の場合には、消失訂正を用いてRS符号のデコードを行い、エラー訂正処理が完了する。
一方、CRC符号によるエラー検査結果により、エラー数の和が所定数を超えている場合には、RSデコーダ21Bは、通常の訂正処理によりRS符号のデコードを行う。このRS符号のデコードにより、矢印Aすなわちページ方向のエラー数が減って再びBCH符号のデコードが有効になる可能性がある。そこで、BCHデコーダ28および28’、ならびに、CRCデコーダ29および29’は、RS符号のデコード結果に対して、矢印Aに従い、さらにBCH符号のデコードおよびCRC符号によるエラー検査を行う。ここで、データ部および冗長部によるエラー数の和が0になれば、エラー訂正処理が完了する。
また、この反復して行われたBCH符号のデコードにより、ページを横断する方向でのエラー数が減って再びRS符号のデコードが有効になる可能性がある。CRC符号によるエラー検査結果に応じて、エラー数の和が0より大きく、且つ、所定数以下であれば、RSデコーダ21Bにより再び消失訂正を用いてRS符号のデコードが行われ、エラー訂正処理が完了する。さらに、エラー数の和が所定数以上であるが、前回のCRC符号によるエラー検査時に対して減少していれば、再びRS符号のデコード、BCH符号のデコードおよびCRC符号によるエラー検査が反復して行われる。
ここで、各ページから読み出された、データ部および冗長部それぞれにおけるデータがRSデコーダ21Bに対して供給される。すなわち、複数のE/D部22によるBCH符号およびCRC符号のデコード出力と、E/D部24によるBCH符号およびCRC符号のデコード出力とが、RSデコーダ21Bに対して供給される。
より詳細には、例えば、各NANDフラッシュメモリチップ23における各プレーンの互いに対応するページから読み出された、データブロックBCH、データブロックCRCおよびデータブロックDataからなるデータブロック群が、それぞれ対応するE/D部22に供給される。各E/D部22において、BCHデコーダ28は、供給されたデータブロック群に含まれるBCH符号を、例えば8ビット毎にデコードする。
BCHデコーダ28の出力は、CRCデコーダ29に供給されると共に、RSデコーダ21Bに供給される。CRCデコーダ29は、供給されたBCHデコーダ28の出力におけるCRC符号をデコードしてエラー検査を行い、エラーの有無を出力する。
E/D部24においても同様に、NANDフラッシュメモリチップ25において各プレーンの互いに対応するページからそれぞれ読み出された、データブロックBCH、データブロックCRCおよびデータブロックRSとからなるデータブロック群が供給される。各E/D部24は、供給されたデータブロック群に対し、内部のBCHデコーダ28’でBCH符号をデコードすると共に、CRCデコーダ29’でCRC符号をデコードする。
RSデコーダ21Bは、これら各E/D部22でデコードされたデータブロックDataのデータと、E/D部24でデコードされたデータブロックRSのデータとを、上述した図9に矢印Bで例示されるように、全プレーンを横断してプレーン毎に例えば8ビット(1シンボル)ずつ読み込む。そして、RSデコーダ21Bは、読み込んだデータブロックRSからRS符号をデコードし、データブロックDataおよびデータブロックRSにおける、RS符号のエラー訂正能力で訂正可能なエラーを訂正する。
RSデコーダ21Bについて、より詳細に説明する。図10−1は、RSデコーダ21Bの一例の構成を示す。RSデコーダ21Bは、シンドローム計算部30、ならびに、誤り訂正部31および34を有すると共に、誤り訂正部31に接続される誤り位置計算部32および誤りベクトル計算部33と、誤り訂正部34に接続される誤り位置取得部35および誤りベクトル計算部36とを有する。すなわち、誤り訂正部31、誤り位置計算部32および誤りベクトル計算部33が第4の誤り訂正部を構成する。また、誤り訂正部34、誤り位置取得部35および誤りベクトル計算部36が第3の誤り訂正部を構成する。
さらに、RSデコーダ21Bは、コントローラ40およびスイッチ41を有する。コントローラ40は、例えばプロセッサを有し、所定のプログラムに従いRSデコーダ21Bの各部を制御する。スイッチ41は、コントローラ40の制御により一方および他方の選択入力端のうち何れかが選択されるようになっており、RSデコーダ21Bから出力するデータを選択する。コントローラ40は、NANDフラッシュコントローラ20の機能の一部としてもよい。
誤り訂正部31は、RS符号の通常の誤り訂正により最大t個のシンボルの誤り訂正を行う。一方、誤り訂正部34は、RS符号の消失訂正により最大2t個のシンボルの誤り訂正を行う。
シンドローム計算部30は、RS符号によるシンドロームを計算する。シンドローム計算部30に対して、BCHデコーダ28から出力された、それぞれBCH符号およびCRC符号がデコードされた各データブロックDataからの1シンボル毎のデータが供給される。それと共に、BCHデコーダ28’から出力された、それぞれBCH符号およびCRC符号がデコードされた各データブロックRSからの1シンボル毎のデータがシンドローム計算部30に供給される。
RS符号においては、t個のシンボルを訂正するためには、2t個のシンドロームを計算する必要がある。t=2とした場合、シンドローム計算部30は、データブロックDataのデータとデータブロックRSのデータとから、公知の方法により2t個(=4個)のシンドロームS0、S1、S2およびS3を計算する。シンドロームの計算方法は、例えば「今井秀樹著、符号理論、社団法人電子情報通信学会刊、平成13年6月1日初版第9刷発行」などに記載がある。シンドロームの計算結果は、誤り位置計算部32および誤りベクトル計算部33に供給されると共に、誤りベクトル計算部36に供給される。
通常の誤り訂正の場合には、計算されたシンドロームS0、S1、S2およびS3を用いて、誤り位置計算部32および誤りベクトル計算部33にて下記の式(1)に従い誤り位置と誤りベクトルとを計算する。このとき、誤りベクトル計算部33は、後述する誤り位置取得部35で取得された誤り位置を示す情報をさらに用いて、誤りベクトルを計算する。なお、式(1)における4×2行列の各要素、ならびに、後述する式(2)における4×4行列の各要素は、ガロア体の原始元である。
Figure 0005017407
RS符号による通常の誤り訂正においては、上述の式(1)により、未知数がt個の誤り位置およびt個の誤りベクトルの2t個である方程式の解を求めて誤りを訂正する。この場合、求めるべき変数は、誤り位置を示す変数iおよび変数j、ならびに、誤りベクトルを示す変数e0および変数e1の4個である。シンドロームS0、S1、S2およびS3の値は、シンドローム計算部30により求められているので、誤り位置計算部32および誤りベクトル計算部33において4元の連立方程式の解を求めることで、これらの変数を算出することができる。
誤り位置計算部32および誤りベクトル計算部33で計算された、誤り位置を示す変数iおよび変数j、ならびに、誤りベクトルを示す変数e0および変数e1は、誤り訂正部31に供給される。誤り訂正部31は、これら変数iおよび変数j、ならびに、変数e0および変数e1を用いて、BCHデコーダ28から供給されたデータブロックDataのデータと、BCHデコーダ28’から供給されたデータブロックRSのデータとに対する誤り訂正を行う。誤り訂正処理が施されたデータブロックDataのデータは、BCHデコーダ28に再び入力される。また、誤り訂正処理が施されたデータブロックRSのデータは、BCHデコーダ28’に再び入力される。
一方、CRCデコーダ29によるCRC計算結果と、CRCデコーダ29’によるCRC計算結果とが誤り位置取得部35に供給される。誤り位置取得部35は、供給された計算結果から、誤り位置を示す情報を取得する。RS符号による消失訂正においては、2t個の誤り位置が分かれば、2t個の誤りを訂正することができる。この場合、誤りベクトル計算部36は、シンドローム計算部30により計算されたシンドロームS0、S1、S2およびS3と、CRCデコーダ29から供給された誤り位置を示す情報とから、下記の式(2)に従い誤りベクトルを計算する。
Figure 0005017407
RS符号による消失訂正においては、上述の式(2)により、未知数が誤りベクトルの2t個である方程式の解を求めて誤りを訂正する。この場合、誤り位置を示す変数i、変数j、変数kおよび変数lは、CRCデコーダ29により既に求められているので、求めるべき変数は、誤りベクトルを示す変数e0、変数e1、変数e2および変数e3である。したがって、誤りベクトル計算部36において4元の連立方程式の解を求めることで、これらの変数を算出することができる。
誤り位置取得部35で取得された誤り位置を示す情報と、誤りベクトル計算部36で算出された誤りベクトルを示す変数e0、変数e1、変数e2および変数e3は、誤り訂正部34に供給される。誤り訂正部34は、これら誤り位置を示す情報と、変数e0、変数e1、変数e2および変数e3とを用いて、BCHデコーダ28から供給されたデータブロックDataのデータに対する誤り訂正を行う。誤り訂正処理が施されたデータブロックDataのデータは、スイッチ41の他方の選択入力端に入力される。
スイッチ41は、コントローラ40の制御により一方および他方の選択入力端が選択されるもので、RSデコーダ21Bの出力として、BCHデコーダ28の出力と、誤り訂正部34の出力とのうち何れを用いるかを選択する。
図11は、本実施形態による誤り訂正処理を示す一例のフローチャートである。図11に例示される処理は、上述した訂正するシンボル数t=2の場合の例である。なお、図11のフローチャートにおける各処理は、コントローラ40の制御に従い各部が制御されて行われるものとする。
この図11のフローチャートの実行に先立って、コントローラ40は、各NANDフラッシュメモリチップ23において、各プレーンの互いに対応する1ページから、データブロックBCH、データブロックCRCおよびデータブロックData(纏めて第2のデータブロック群と呼ぶ)を読み出し、各NANDフラッシュメモリチップ23に対応する各E/D部22に供給する。各E/D部22は、供給された第2のデータブロック群のデータを、図示されないメモリに格納する。同様に、コントローラ40は、NANDフラッシュメモリチップ25から、データブロックBCH、データブロックCRCおよびデータブロックRS(纏めて第1のデータブロック群と呼ぶ)を読み出し、E/D部24に供給する。E/D部24は、供給された第1のデータブロック群のデータを、図示されないメモリに格納する。
ステップS20で、各BCHデコーダ28は、第2のデータブロック群におけるデータブロックBCHに含まれるBCH符号をデコードする。これにより、BCHデコーダ28は、第2のデータブロック群に含まれるデータブロックCRCおよびデータブロックDataに対して、BCH符号の誤り訂正能力で訂正可能な誤りを訂正する誤り訂正処理を行う。同様に、BCHデコーダ28’は、第1のデータブロックにおけるデータブロックBCHに含まれるBCH符号をデコードする。これにより、BCHデコーダ28’は、第1のデータブロック群に含まれるデータブロックCRCおよびデータブロックRSに対して、BCH符号の誤り訂正能力で訂正可能な誤りを訂正する誤り訂正処理を行う。
次のステップS21で、各CRCデコーダ29は、BCH符号による誤り訂正処理がなされたデータブロックCRCに含まれるCRC符号をデコードして誤り検査を行う。同様に、CRCデコーダ29’は、BCH符号による誤り訂正処理がなされたデータブロックCRCに含まれるCRC符号をデコードして誤り検査を行う。この誤り検査により、ステップS20におけるBCH符号による誤り訂正でエラーを訂正しきれなかった、第1のデーブロック群におけるエラーセクタの数および位置(ページ)と、第1のデータブロック群におけるエラーセクタ数および位置とが取得される。なお、セクタは、例えばNANDフラッシュメモリチップ23の最小の記録単位であって、1のデータブロックDataに対応する。
シンドローム計算部30は、ステップS20で各BCHデコーダ28で誤り訂正された各データブロックDataのデータと、BCHデコーダ28’で誤り訂正処理されたデータブロックRSのデータとを、プレーンを横断して1シンボルずつ用いて2t個のシンドロームを計算する。
処理は図11のフローチャートに戻り、ステップS22で、コントローラ40は、ステップS21の誤り検査結果から、第2のデータブロック群によるエラーセクタ数と、第1のデータブロック群によるエラーセクタ数の和である合計エラーセクタ数が0であるか否かを判定する。若し、合計エラーセクタ数が0であると判定されたら、図11のフローチャートにおける一連の処理が終了される。この場合には、コントローラ40によりスイッチ41の一方の選択入力端が選択され、BCHデコーダ28から出力された、誤り訂正処理されたデータを含むデータブロックDataのデータが、RSデコーダ部21Bの出力とされる。
一方、ステップS22で、コントローラ40は、合計エラーセクタ数が0ではないと判定したら、処理をステップS23に移行させ、合計エラーセクタ数が4(=2t)以下であるか否かを判定する。若し、合計エラーセクタ数が4を超えていると判定したら、処理はステップS25に移行される。
一方、ステップS23で、合計エラーセクタ数が4以下であると判定したら、処理をステップS24に移行させる。ステップS24では、RSデコーダ21Bにより消失訂正が行われる。
すなわち、RSデコーダ部21Bにおいて、誤り位置取得部35は、ステップS21によるCRCデコーダ29およびCRCデコーダ29’のエラー検査結果から、ページ単位での誤り位置を示す情報を取得する。誤りベクトル計算部36は、誤り位置取得部35で取得された誤り位置を示す情報と、シンドローム計算部30で、データブロックDataとデータブロックRSとからそれぞれ1だけ選択されたデータに基づき計算された2t個のシンドロームから、上述した式(2)の計算を行い、それぞれの選択されたデータに対応する誤りベクトルを算出する。この場合、ステップS23の判定により合計エラーセクタ数すなわち誤りが存在するページが2t個以下となっているので、式(2)で解を求めることが可能である。
誤り訂正部34は、誤り位置取得部35で取得された誤り位置を示す情報と、誤りベクトル計算部33で算出された誤りベクトルとを用いて、BCHデコーダ28から供給されたデータブロックDataのデータと、BCHデコーダ28’から供給されたデータブロックRSのデータに対して誤り訂正を行う。また、ステップS24で誤り訂正されたデータに基づきCRC符号を再計算することで、CRC符号を復元する。
さらに、コントローラ40の制御によりスイッチ41の他方の選択入力端が選択され、誤り訂正部34から出力された、誤り訂正されたデータを含むデータブロックDataのデータが、RSデコーダ21Bの出力とされる。
上述したステップS23において、合計エラーセクタ数が4を超えると判定されたら、処理はステップS25に移行され、合計エラーセクタ数が例えばコントローラ40が有するレジスタなどに記憶される。
次のステップS26では、RSデコーダ21Bにより通常の誤り訂正処理が行われる。すなわち、RSデコーダ部21Bにおいて、誤り位置計算部32および誤りベクトル計算部33は、シンドローム計算部30で、データブロックDataとデータブロックRSとからそれぞれ1だけ選択されたデータに基づき計算された4個のシンドロームを用いて上述した式(1)の計算を行い、選択されたデータに対応するそれぞれの誤り位置および誤りベクトルを計算する。
誤り位置および誤りベクトルを示す情報は、それぞれ誤り訂正部31に供給される。誤り訂正部31は、これら誤り位置および誤りベクトルとを用いて、BCHデコーダ28から供給されたデータブロックDataのデータと、BCHデコーダ28’から供給されたデータブロックRSのデータとに対して誤り訂正を行う。
図12は、ステップS26におけるRS符号による通常のデコード処理の一例をより詳細に示すフローチャートである。ステップS261で、誤り位置計算部32は、シンドローム計算部30で計算された4個のシンドロームを用いて誤り位置を計算する。次のステップS262で、誤りベクトル計算部33は、上述のステップS21で求められたCRC符号による誤り検査結果を参照し、ステップS261で計算された誤り位置の全てで誤りすなわちCRCエラーがあるか否かを判定する。
若し、ステップS262で、誤り位置の全てでCRCエラーがあると判定したら、処理はステップS263に移行され、誤りベクトル計算部33は、シンドローム計算部30で計算された4個のシンドロームを用いて誤りベクトルを計算する。
一方、誤り位置のうち少なくとも1つでCRCエラーが無いと判定したら、処理はステップS264に移行され、誤りベクトルが0とされる。すなわち、それぞれの選択されたデータに対応する誤り位置がステップS21で計算されたエラーセクタの位置の何れでもなければ、選択されたデータに対応する全ての誤りベクトルを0とし、実質的に誤り訂正処理を行わないようにする。これに限らず、誤り訂正部31において、選択されたデータに対する誤り訂正を行わないようにしてもよい。これにより、本来誤りが発生していないデータ位置に対して誤って誤り訂正処理を実行してさらに誤りを増加させてしまう、所謂誤訂正を防止することができる。
ここで、この誤訂正の防止を行わないように構成することも可能である。この場合、ステップS264の処理を省略することができる。例えば、ステップS261の処理から直接的に処理をステップS263に移行させる。またこの場合、図10−2に例示されるように、図10−1における誤り位置取得部35から誤りベクトル計算部33に誤り位置情報を供給する経路を省略することができる。誤り訂正取得部35は、誤りベクトル計算部33に誤り位置情報を供給せず、誤りベクトル計算部33は、誤り位置取得部35から誤り位置情報の供給を受けない。
誤りベクトル計算部33は、ステップS263またはステップS264で誤りベクトルを求めたら、処理をステップS265に移行させ、誤り位置を示す情報(誤り位置のデータ)と誤りベクトルとのXORを計算し、計算結果を誤り位置のデータと置換する。そして、処理が図11のステップS27に移行される。
ステップS26でRSデコーダ21Bの通常の誤り訂正が行われると、処理はステップS27に移行される。ステップS27では、ステップS26での誤り訂正結果に対して、BCHデコーダ28およびBCHデコーダ28’で再びBCH符号のデコードが行われる。
すなわち、ステップS27では、ステップS26で誤り訂正処理が施されたデータを含むデータブロックDataのデータがBCHデコーダ28に入力される。BCHデコーダ28は、例えばE/D部22の図示されないメモリに格納されている第2のデータブロック群に含まれるデータブロックBCHのデータを用いて、誤り訂正部31から供給されたデータに対してBCH符号のデコードを行い、BCH符号の誤り訂正能力で訂正可能な誤りを訂正する。
同様に、ステップS26で誤り訂正処理が施されたデータを含むデータブロックRSのデータがBCHデコーダ28’に供給される。BCHデコーダ28’は、例えばE/D部24の図示されないメモリに格納されている第1のデータブロック群に含まれるデータブロックBCHのデータを用いて、誤り訂正部31から供給されたデータに対してBCH符号のデコードを行い、BCH符号の誤り訂正能力で訂正可能な誤りを訂正する。
ここで、ステップS26において、上述したステップS20におけるBCH符号による誤り訂正とは異なる方式で誤り訂正が行われている。本実施形態の例では、上述したように、ステップS26で、RSデコーダ21BによりRS符号を用いてページを横断して誤り訂正が行われている。したがって、データブロックDataにおいてエラー数が減少し、ステップS20でのBCH符号による誤り訂正後であっても、さらに同じBCH符号による誤り訂正が有効となる可能性がある。
ステップS27でBCH符号のデコードが行われると、処理はステップS28に移行される。ステップS28では、上述のステップS22と同様にして、CRCデコーダ29およびCRCデコーダ29’が、ステップS20で誤り訂正処理がなされた、第2のデータブロック群および第1のデータブロック群それぞれのデータブロックCRCに含まれるCRC符号をデコードする。これにより、ステップS27で誤り訂正処理が施されたデータブロックDataおよびデータブロックRSに対して、それぞれ誤り検査を行う。そして、データブロックDataに対する誤り検査の結果得られたエラーセクタ数と、データブロックRSに対する誤り検査の結果得られたエラーセクタ数との和を取って、合計エラーセクタ数とする。
次のステップS29で、コントローラ40は、ステップS28での誤り検査結果から、合計エラーセクタ数が0であるか否かを判定する。若し、エラーセクタ数が0であると判定されたら、図11における一連の処理が終了される。そして、コントローラ40によりスイッチ41の一方の選択入力端が選択され、BCHデコーダ28から出力された、誤り訂正処理されたデータを含むデータブロックDataのデータが誤り訂正に成功したデータとされ、RSデコーダ部21Bの出力とされる。
一方、ステップS29で、合計エラーセクタ数が0ではないと判定されたら、処理をステップS30に移行させ、合計エラーセクタ数が4(=2t)以下であるか否かを判定する。若し、合計エラーセクタ数が4以下であると判定された場合には、処理はステップS24に移行され、BCHデコーダ28から出力された、誤り訂正処理されたデータを含むデータブロックDataのデータに対して、RSデコーダ21Bにより消失訂正が行われる。そして、コントローラ40の制御によりスイッチ41の他方の選択入力端が選択され、誤り訂正部34から出力された、誤り訂正されたデータを含むデータブロックDataのデータが誤り訂正に成功したデータとされ、RSデコーダ21Bの出力とされる。
一方、ステップS30で、合計エラーセクタ数が4を超えていると判定されたら、処理はステップS31に移行される。ステップS31では、コントローラ40は、現在の合計エラーセクタ数がステップS25で記憶されたエラーセクタ数に対して減少しているか否かを判定する。若し、減少していると判定されたら、処理はステップS25に戻され、エラーセクタ数がコントローラ40のレジスタなどに記憶され、ステップS26以降の処理を反復して実行する。
一方、ステップS31で、合計エラーセクタ数が減少してないと判定したら、図11のフローチャートにおける一連の処理が終了される。この場合には、訂正されていない誤りが存在することになり、例えばエラーを示す出力がなされる。
図13〜図17と、上述の図11のフローチャートとを用いて、本実施形態による誤り訂正方法を検証する。以下では、BCH符号は、2シンボルの訂正が可能であり、RS符号は、t=1、すなわち、通常の誤り訂正では1シンボルの訂正が可能で、消失訂正では2シンボルの訂正が可能であるものとする。これに伴い、図11のフローチャートのステップS23およびステップS30における「合計エラーセクタ数が4以下?」の部分を、「合計エラーセクタ数が2以下?」に読み替えるものとする。
図13〜図17において、各升は、それぞれ1シンボルのデータを示す。横方向がページ方向であって、左端の第0列および第1列の2列がBCH符号を示す。また、縦方向がページを横断する方向であって、第0列および第1列を除いた下端の第6行および第7行の2行がRS符号を示す。これらBCH符号およびRS符号に囲まれた部分が原データを示す。すなわち、各行(各ページ)において、左端の2シンボルのBCH符号は、その行の原データまたはRS符号に対して生成されたものである。同様に、各列において、下端の2シンボルのRS符号は、その列の原データに対してページを横断して生成されたものである。また、各行において、BCH符号以外の部分がセクタに対応するものとする。
さらに、「CRC OK」は、CRC符号のデコードの結果、誤りが検出されなかった行(セクタ)を示す。誤りが存在しているシンボルは、升に片方向の斜線を付して示す。図13は、誤り訂正処理を行う前のデータを示し、第0行に1個、第1行に6個、第3行に5個、第5行に3個、第6行および第7行にそれぞれ1個のシンボルに誤りが存在している。
「Upper」および「Lower」は、それぞれ図8(a)および図8(b)を用いて説明したUpperビットページおよびLowerビットページを示す。このように、Upperビットページは、Lowerビットページに比べて誤りが発生する確率が高いと考えられる。
図11のフローチャートにおいて、ステップS20のBCH符号のデコードによる誤り訂正では2シンボルの誤り訂正が可能であるので、図14に例示されるように、誤りが存在するシンボルが2個以下の第0行、第6行および第7行において誤りが訂正される。誤り訂正を行うシンボルを示す升を、クロスされた斜線を付して示す。誤り訂正の結果がステップS21のCRC符号によるエラー検査に反映され、原データに誤りの存在する行が第1行、第3行および第5行の3行であり、合計エラーセクタ数が3であることが示される。
合計エラーセクタ数が3であるので、ステップS22の判定で処理がステップS23に移行される。そして、合計エラーセクタ数が2以下ではないので、ステップS23の判定で処理がステップS25に移行され、合計エラーセクタ数=3が記憶される。次のステップS26でRSデコーダ21Bによる通常の誤り訂正では、1シンボルの誤り訂正が可能であるので、図15に例示されるように、第3列、第4列、第11(B)列、第13(D)列および第15(F)列において誤りが訂正される。これらのうち、第4列および第13列は、誤り訂正処理前には2シンボル以上の誤りが存在していたが、ステップS20のBCH符号による誤り訂正により、それぞれ誤りが1シンボルのみとされ、RS符号による通常の誤り訂正が可能となっている。なお、誤り訂正済みのシンボルを示す升は、幅の狭い斜線を付して示す。
次に、ステップS27で、再びBCH符号による誤り訂正が行われる。図16に例示されるように、誤りが存在するシンボルが2個以下の第5行において誤りが訂正される。この第5行は、誤り訂正処理前には2シンボルを超える誤りが存在していたため、ステップS20におけるBCH符号による誤り訂正では誤りが訂正できなかった。ステップS26でRS符号による誤り訂正で誤りが存在するシンボルが1個減り、2個となったので、BCH符号による誤り訂正が可能となった。
なお、第3行は、原データ部分の誤りが2シンボルであるが、BCH符号自体に誤りが存在するため、BCH符号による誤り訂正を行わない。
ステップS27による誤り訂正の結果がステップS28のCRC符号によるエラー検査に反映され、原データに誤りの存在する行が第1行および第3行の2行であり、合計エラーセクタ数が2であることが示される。そのため、ステップS29で合計エラーセクタ数が0ではないと判定されて処理がステップS30に移行され、ステップS30で合計エラーセクタ数が2以下であると判定される。RSデコーダ21Bは、消失訂正により、列毎に2シンボルまでの誤りを訂正可能なので、ステップS24に処理が移行され、図17に例示されるように、残った誤りの存在するシンボルを消失訂正により誤り訂正し、原データを復元する。
上述の図14の状態において、第1行、第3行および第5行の3行は、それぞれ行方向に3シンボル以上の誤りが存在すると共に、第1行および第3行ではBCH符号そのものに誤りが存在し、このままではBCH符号による誤り訂正ができない。また、第8列は、列方向に3シンボルの誤りが存在し、RS符号による誤り訂正ができない。このように、これら第1行、第3行および第5行の3行は、上述したBCH符号およびRS符号の誤り訂正能力では、従来の方法での誤り訂正ができなかった。
これに対して、本実施形態では、最初のBCH符号によるページ内の誤り訂正処理の後に、合計エラーセクタ数に基づき、プレーンすなわちNANDフラッシュメモリチップを横断して誤り訂正を行うRS符号による誤り訂正の方式を選択する。そして、RS符号による通常の誤り訂正を選択した場合には、さらにBCH符号による誤り訂正を行い、その後さらに、合計エラーセクタ数に応じてRS符号による誤り訂正や、BCH符号による誤り訂正を反復することで、上述の第1行、第3行および第5行のような場合であっても、誤り訂正可能としている。
また、原データに対して生成されたRS符号は、原データとは異なるNANDフラッシュメモリチップに記録される。これにより、バースト破損に対する耐性と、長期間のデータ保存に必要なランダム誤り訂正能力との向上を両立させることが可能である。
さらに、誤りが存在するセクタ数に応じて処理を切り替えるため、通常時の誤り訂正速度を向上させることができると共に、消費電力を削減することが可能である。
本実施形態によれば、NANDフラッシュメモリにて発生するバースト誤りの訂正能力を得るための誤り訂正符号で使用する冗長符号を、ランダム誤りを訂正するための誤り訂正符号で使用する冗長符号としても利用している。そのため、バースト誤り訂正能力を得るために必要な誤り訂正符号を記録する領域に対し、さらに、ランダム誤り訂正能力を向上させるための誤り訂正符号を記録する領域を追加することなく、ランダム誤り訂正能力を向上させることができる。
本実施形態によれば、記録した情報を再生する際に、先ず、第1のデータに対して第1の誤り訂正手段により誤り訂正を行い、第2の誤り訂正符号に対しては第3の誤り訂正手段による誤り訂正を適用する。次に、第1のデータに対して第1の誤り検査符号を適用すると共に、第4のデータに対して第2の誤り検査符号を適用してそれぞれ誤り検査を行い、第1のデータと第1の誤り検査符号との合計の誤り数が第2の誤り訂正符号による誤り消失訂正能力以内であるときは、第1のデータと第2の誤り訂正符号に対して誤り消失訂正を行ってバースト誤りを訂正するようにしている。一方、第1のデータと第1の誤り検査符号との合計の誤り数が第2の誤り訂正符号による誤り消失訂正能力を超えているときは、第2のデータと第2の誤り訂正符号の対応する位置からなる部分に対し、リード・ソロモン符号による誤り位置と誤りベクトルを求める誤り訂正方法を使用してランダム誤りの訂正を行うようにしている。
また、本実施形態によれば、上述の一連の誤り訂正の処理を、誤り検査手段により誤りが全て訂正されるか、または、一連の誤り訂正処理で訂正される誤り数が増加しなくなるまで反復して繰り返すようにしている。
さらに、本実施形態によれば、上述の一連の誤り訂正処理において、リード・ソロモン符号を用いてランダム誤りの訂正を行う処理において、第1の検査符号または第2の検査符号によって検出されていない部分に対して誤り訂正を行わないことにより、誤訂正を防止するようにしている。
1 半導体記憶装置
11A ライトバッファ
11B リードバッファ
13 フラッシュメモリ部
20 NANDフラッシュコントローラ
21 リード・ソロモン符号エンコーダ/デコーダ部
22,24 エンコーダ/デコーダ部
23,25 NANDフラッシュメモリチップ
26,26’ CRCエンコーダ
27,27’ BCHエンコーダ
28,28’ BCHデコーダ
29,29’ CRCデコーダ
30 シンドローム計算部
31,34 誤り訂正部
32 誤り位置計算部
33,36 誤りベクトル計算部
35 誤り位置取得部

Claims (6)

  1. 複数のメモリチップを有する半導体記憶装置であって、
    前記メモリチップは、複数の第1記憶領域を有し、
    前記第1記憶領域は、複数の第2記憶領域を有し、
    前記第2記憶領域は、データの記憶および読み出しの単位であり、
    第1のデータは、記憶対象のデータである第2のデータを複数有し、
    第3のデータは、複数の前記第1のデータのそれぞれから1つずつ選択される該第2のデータを複数有し、
    前記第3のデータに含まれる前記第2のデータは、他の前記第3のデータに含まれる前記第2のデータとは重複せず、
    前記第1のデータに基づいて第1の誤り検査符号を生成する第1の誤り検査符号生成手段と、
    前記第1のデータと前記第1の誤り検査符号とに基づいて、組織符号である第1の誤り訂正符号を生成する第1の誤り訂正符号生成手段と、
    前記第2記憶領域に対して、前記第1のデータと前記第1の誤り検査符号と前記第1の誤り訂正符号との記録を行う記録手段と、
    前記第3のデータの複数のそれぞれについてリード・ソロモン符号の冗長符号を複数生成する第2の誤り訂正符号生成手段と
    を備え、
    第4のデータは、前記第1のデータと同じ大きさであり、全ての前記第3のデータから生成される前記冗長符号を含み、
    前記第4のデータに含まれる前記冗長符号は、他の前記第4のデータに含まれる前記冗長符号とは重複せず、
    複数の前記第4のデータのそれぞれから第2の誤り検査符号を生成する第2の誤り検査符号生成手段と、
    前記第4のデータのそれぞれと前記第2の誤り検査符号とに基づいて、組織符号である第2の誤り訂正符号を生成する第3の誤り訂正符号生成手段と
    をさらに備え、
    前記記録手段は、
    前記第4のデータと前記第2の誤り検査符号と前記第2の誤り訂正符号との記録を行い、
    前記第1の誤り訂正符号を用いて前記第1のデータおよび前記第1の誤り検査符号に対して誤り訂正を行う第1の誤り訂正手段と、
    前記第1の誤り訂正手段による前記第1のデータに対する誤り訂正結果に対して前記第1の誤り検査符号を用いて誤り検査を行い誤りを検出する第1の誤り検査手段と、
    前記第2の誤り訂正符号を用いて前記第4のデータおよび前記第2の誤り検査符号に対して誤り訂正を行う第2の誤り訂正手段と、
    前記第2の誤り訂正手段による前記第4のデータに対する誤り訂正結果に対して前記第2の誤り検査符号を用いて誤り検査を行い誤りを検出する第2の誤り検査手段と、
    前記第1のデータおよび前記第4のデータからリード・ソロモン符号のシンドロームを計算し、前記第1の誤り検査手段および前記第2の誤り検査手段で検出された誤りの位置を誤り位置として与えて、該誤り位置と該シンドロームとから誤りベクトルを計算して該第1のデータおよび該第4のデータの誤り訂正を行う第3の誤り訂正手段と、
    前記第1のデータおよび前記第4のデータからリード・ソロモン符号のシンドロームを計算し、該シンドロームから誤り位置および誤りベクトルを計算して該第1のデータおよび第4のデータの誤り訂正を行う第4の誤り訂正手段と、
    前記第1の誤り検査手段で検出された誤りの数と、前記第2の誤り検査手段で検出された誤りの数との和である誤り数の判定を行い、
    該誤り数が0の場合に、前記第1の誤り訂正手段で前記第1のデータに対して誤り訂正処理が施されたデータを、誤り訂正が成功したデータとして出力し、
    該誤り数が1以上、且つ、前記第3の誤り訂正手段の誤り訂正能力で訂正可能な誤り数以下の場合に、前記第1の誤り訂正手段で誤り訂正処理が施された前記第1のデータに対して前記第3の誤り訂正手段で誤り訂正を施して、誤り訂正が成功したデータとして出力し、
    該誤り数が前記第3の誤り訂正手段の誤り訂正能力で訂正可能な誤り数を超える場合に、前記第1の誤り訂正手段により誤り訂正された該第1のデータおよび前記第4のデータに対して前記第4の誤り訂正手段で誤り訂正処理を施し、該誤り訂正処理が施された該第1のデータに対して再び前記第1の誤り訂正手段で誤り訂正処理を施すと共に該第4のデータに対して再び前記第2の誤り訂正手段で誤り訂正処理を施し、該誤り訂正処理が施された該第1のデータおよび該第4のデータに対して前記第1の誤り検査手段および前記第2の誤り検査手段でそれぞれ誤り検査を行って前記誤り数を求め、求められた該誤り数を用いて前記判定を再び行う
    ように制御する制御手段と
    をさらに備える
    ことを特徴とする半導体記憶装置。
  2. 前記制御手段は、
    前記誤り数が第3の誤り訂正手段の誤り訂正能力で訂正可能な誤り数を超える場合に、前記誤り数が第3の誤り訂正手段の誤り訂正能力で訂正可能な誤り数を超える場合の処理の直前の前記誤り数に対して、該処理の直後の前記誤り数が減少した場合に、該処理を再び行うように制御する
    ことを特徴とする請求項に記載の半導体記憶装置。
  3. 前記メモリチップは、複数の前記単位ブロックを含み、互いに独立して記録および読み出しが可能なプレーンを複数有し、
    前記記録手段は、
    複数の第1の前記第1記憶領域から選択された1つの第1の前記第2記憶領域に対して、前記第1のデータと前記第1の誤り検査符号と前記第1の誤り訂正符号とを記録すると共に、複数の第2の第1記憶領域から選択された1つの第2の前記第2記憶領域に対して、前記第4のデータと前記第2の誤り検査符号と前記第2の誤り訂正符号とを記録し、
    前記第1の第1記憶領域および前記第2の第1記憶領域は、互いに重複しない前記プレーンからそれぞれ選択される
    ことを特徴とする請求項1に記載の半導体記憶装置。
  4. 前記第1記憶領域は、複数の信号点を持ち多値の記録を行うメモリセルを複数備えると共に該多値の各ビット位置に対して異なる該単位ブロックが割り当てられ、
    前記記録手段は、
    複数の第1の前記第1記憶領域から選択された1つの第1の前記第2記憶領域に対して、前記第1のデータと前記第1の誤り検査符号と前記第1の誤り訂正符号とを記録すると共に、複数の第2の他の第1記憶領域から選択された1つの第2の前記第2記憶領域に対して、前記第4のデータと前記第2の誤り検査符号と前記第2の誤り訂正符号とを記録し、
    前記第1の第2記憶領域および前記第2の他の第2記憶領域は、異なる前記ビット位置にそれぞれ対応する前記第2記憶領域を略同数に使用する
    ことを特徴とする請求項1に記載の半導体記憶装置。
  5. 前記誤り数が第3の誤り訂正手段の誤り訂正能力で訂正可能な誤り数を超える場合に、前記誤り数が第3の誤り訂正手段の誤り訂正能力で訂正可能な誤り数を超える場合の処理の直前の前記誤り数に対して、該処理の直後の前記誤り数が減少しない場合に、前記第1のデータに対する誤り訂正処理が失敗したことを示すエラー出力を行う
    ことを特徴とする請求項1に記載の半導体記憶装置。
  6. 前記第2記憶領域毎に誤り数の期待値が異なる場合に、
    前記冗長符号を、誤り数の期待値が期待値の平均よりも小さい第2記憶領域に記録する
    ことを特徴とする請求項1に記載の半導体記憶装置。
JP2010069012A 2010-03-24 2010-03-24 半導体記憶装置 Active JP5017407B2 (ja)

Priority Applications (10)

Application Number Priority Date Filing Date Title
JP2010069012A JP5017407B2 (ja) 2010-03-24 2010-03-24 半導体記憶装置
US12/889,018 US8418042B2 (en) 2010-03-24 2010-09-23 Semiconductor memory device
TW100105491A TWI437421B (zh) 2010-03-24 2011-02-18 半導體記憶裝置
EP11155975.3A EP2372550B1 (en) 2010-03-24 2011-02-25 Semiconductor memory device
KR1020110018239A KR101267183B1 (ko) 2010-03-24 2011-02-28 반도체 기억 장치
CN201110049300.5A CN102201266B (zh) 2010-03-24 2011-03-01 半导体存储器装置
US13/858,370 US8751911B2 (en) 2010-03-24 2013-04-08 Semiconductor memory device
US14/269,995 US9048878B2 (en) 2010-03-24 2014-05-05 Semiconductor memory device
US14/703,463 US9298546B2 (en) 2010-03-24 2015-05-04 Semiconductor memory device
US15/263,336 USRE49253E1 (en) 2010-03-24 2016-09-12 Semiconductor memory device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010069012A JP5017407B2 (ja) 2010-03-24 2010-03-24 半導体記憶装置

Publications (2)

Publication Number Publication Date
JP2011203878A JP2011203878A (ja) 2011-10-13
JP5017407B2 true JP5017407B2 (ja) 2012-09-05

Family

ID=43901558

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010069012A Active JP5017407B2 (ja) 2010-03-24 2010-03-24 半導体記憶装置

Country Status (6)

Country Link
US (5) US8418042B2 (ja)
EP (1) EP2372550B1 (ja)
JP (1) JP5017407B2 (ja)
KR (1) KR101267183B1 (ja)
CN (1) CN102201266B (ja)
TW (1) TWI437421B (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101680670B (zh) * 2007-04-16 2012-10-03 东洋克斯株式会社 制冷制暖面板
US10756764B2 (en) 2018-03-23 2020-08-25 Toshiba Memory Corporation Memory system and control method
US11231994B2 (en) 2018-09-10 2022-01-25 Toshiba Memory Corporation Memory system and method of controlling nonvolatile memory

Families Citing this family (74)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5017407B2 (ja) * 2010-03-24 2012-09-05 株式会社東芝 半導体記憶装置
JP2013029882A (ja) 2011-07-26 2013-02-07 Toshiba Corp メモリコントローラ、半導体記憶装置および復号方法
US8640013B2 (en) 2011-09-22 2014-01-28 Kabushiki Kaisha Toshiba Storage device
JP5740296B2 (ja) 2011-12-16 2015-06-24 株式会社東芝 半導体記憶装置、半導体記憶装置の制御方法、制御プログラム
JP5674700B2 (ja) 2012-03-22 2015-02-25 株式会社東芝 符号化装置および符号化装置の制御方法、ならびに、記憶装置
JP5597224B2 (ja) * 2012-05-11 2014-10-01 株式会社東芝 情報記憶装置およびメモリ異常処理方法
TW201346922A (zh) * 2012-05-14 2013-11-16 Toshiba Kk 記憶體控制器、記憶裝置及錯誤修正方法
KR102083271B1 (ko) * 2012-07-31 2020-03-02 삼성전자주식회사 플래시 메모리의 물리적 특성을 이용하여 난수를 생성하는 플래시 메모리 시스템 및 그것의 난수 생성 방법
US8935592B2 (en) * 2012-11-20 2015-01-13 Arm Limited Apparatus and method for correcting errors in data accessed from a memory device
US9230684B2 (en) 2012-12-19 2016-01-05 Kabushiki Kaisha Toshiba Memory controller, storage device, and memory control method
US8656255B1 (en) * 2013-03-15 2014-02-18 Avalanche Technology, Inc. Method for reducing effective raw bit error rate in multi-level cell NAND flash memory
JP6005566B2 (ja) 2013-03-18 2016-10-12 株式会社東芝 情報処理システム、制御プログラムおよび情報処理装置
US9032264B2 (en) 2013-03-21 2015-05-12 Kabushiki Kaisha Toshiba Test method for nonvolatile memory
US9459956B2 (en) 2013-07-19 2016-10-04 Seagate Technology Llc Data decoder with trapping set flip bit mapper
US9160371B2 (en) 2013-09-05 2015-10-13 Kabushiki Kaisha Toshiba Memory controller, storage device and memory control method
US20150074451A1 (en) * 2013-09-11 2015-03-12 Kabushiki Kaisha Toshiba Memory system
US9317361B2 (en) 2013-11-27 2016-04-19 Seagate Technology Llc Bit-line defect detection using unsatisfied parity code checks
CN103916139B (zh) * 2014-04-22 2016-12-21 淮安固泰存储科技有限公司 一种基于里德所罗门码的加强型编码方法、解码方法及解码器
US20160041762A1 (en) 2014-08-08 2016-02-11 Kabushiki Kaisha Toshiba Memory system, host device and information processing system
US20160062829A1 (en) * 2014-08-29 2016-03-03 Kabushiki Kaisha Toshiba Semiconductor memory device
TWI556254B (zh) * 2014-10-14 2016-11-01 慧榮科技股份有限公司 資料儲存裝置及其資料存取方法
US9711240B2 (en) 2015-01-08 2017-07-18 Kabushiki Kaisha Toshiba Memory system
US9792053B2 (en) 2015-04-30 2017-10-17 Toshiba Memory Corporation Controller for nonvolatile semiconductor memory
KR20170009554A (ko) * 2015-07-17 2017-01-25 에스케이하이닉스 주식회사 테스트 시스템 및 테스트 방법
US10198061B2 (en) 2015-09-01 2019-02-05 Toshiba Memory Corporation Storage and storage system
TWI566091B (zh) 2015-09-10 2017-01-11 慧榮科技股份有限公司 用來對一錯誤更正碼進行解碼之方法與解碼電路
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
CN106897023B (zh) * 2015-12-18 2020-06-09 群联电子股份有限公司 数据读取方法、存储器控制电路单元及存储器储存装置
US9946596B2 (en) 2016-01-29 2018-04-17 Toshiba Memory Corporation Global error recovery system
US10108512B2 (en) * 2016-04-01 2018-10-23 Intel Corporation Validation of memory on-die error correction code
KR20180089053A (ko) * 2017-01-31 2018-08-08 에스케이하이닉스 주식회사 페일 영역을 판단할 수 있는 메모리 장치 및 이의 테스트 방법, 이를 이용하는 메모리 모듈 및 시스템
CN108572887A (zh) * 2017-03-14 2018-09-25 上海骐宏电驱动科技有限公司 数据检验校正方法
US10496548B2 (en) 2018-02-07 2019-12-03 Alibaba Group Holding Limited Method and system for user-space storage I/O stack with user-space flash translation layer
WO2019222958A1 (en) 2018-05-24 2019-11-28 Alibaba Group Holding Limited System and method for flash storage management using multiple open page stripes
WO2020000136A1 (en) 2018-06-25 2020-01-02 Alibaba Group Holding Limited System and method for managing resources of a storage device and quantifying the cost of i/o requests
US10921992B2 (en) 2018-06-25 2021-02-16 Alibaba Group Holding Limited Method and system for data placement in a hard disk drive based on access frequency for improved IOPS and utilization efficiency
US10996886B2 (en) 2018-08-02 2021-05-04 Alibaba Group Holding Limited Method and system for facilitating atomicity and latency assurance on variable sized I/O
US11327929B2 (en) 2018-09-17 2022-05-10 Alibaba Group Holding Limited Method and system for reduced data movement compression using in-storage computing and a customized file system
US10715178B2 (en) * 2018-09-25 2020-07-14 Western Digital Technologies, Inc. Generalized low-density parity-check codes
US10977122B2 (en) 2018-12-31 2021-04-13 Alibaba Group Holding Limited System and method for facilitating differentiated error correction in high-density flash devices
US11061735B2 (en) 2019-01-02 2021-07-13 Alibaba Group Holding Limited System and method for offloading computation to storage nodes in distributed system
US11132291B2 (en) 2019-01-04 2021-09-28 Alibaba Group Holding Limited System and method of FPGA-executed flash translation layer in multiple solid state drives
US11200337B2 (en) 2019-02-11 2021-12-14 Alibaba Group Holding Limited System and method for user data isolation
US11169873B2 (en) * 2019-05-21 2021-11-09 Alibaba Group Holding Limited Method and system for extending lifespan and enhancing throughput in a high-density solid state drive
US10860223B1 (en) 2019-07-18 2020-12-08 Alibaba Group Holding Limited Method and system for enhancing a distributed storage system by decoupling computation and network tasks
TWI688965B (zh) * 2019-08-14 2020-03-21 群聯電子股份有限公司 資料寫入方法、記憶體控制電路單元及記憶體儲存裝置
US11126561B2 (en) 2019-10-01 2021-09-21 Alibaba Group Holding Limited Method and system for organizing NAND blocks and placing data to facilitate high-throughput for random writes in a solid state drive
US11617282B2 (en) 2019-10-01 2023-03-28 Alibaba Group Holding Limited System and method for reshaping power budget of cabinet to facilitate improved deployment density of servers
JP2021086406A (ja) 2019-11-28 2021-06-03 ソニーセミコンダクタソリューションズ株式会社 コントローラおよび記憶装置
CN113132054B (zh) * 2019-12-31 2022-04-26 杭州萤石软件有限公司 数据传输方法、装置及系统
US11449455B2 (en) 2020-01-15 2022-09-20 Alibaba Group Holding Limited Method and system for facilitating a high-capacity object storage system with configuration agility and mixed deployment flexibility
US11379447B2 (en) 2020-02-06 2022-07-05 Alibaba Group Holding Limited Method and system for enhancing IOPS of a hard disk drive system based on storing metadata in host volatile memory and data in non-volatile memory using a shared controller
US11200114B2 (en) 2020-03-17 2021-12-14 Alibaba Group Holding Limited System and method for facilitating elastic error correction code in memory
US11449386B2 (en) 2020-03-20 2022-09-20 Alibaba Group Holding Limited Method and system for optimizing persistent memory on data retention, endurance, and performance for host memory
US11301173B2 (en) 2020-04-20 2022-04-12 Alibaba Group Holding Limited Method and system for facilitating evaluation of data access frequency and allocation of storage device resources
US11385833B2 (en) 2020-04-20 2022-07-12 Alibaba Group Holding Limited Method and system for facilitating a light-weight garbage collection with a reduced utilization of resources
US11281575B2 (en) 2020-05-11 2022-03-22 Alibaba Group Holding Limited Method and system for facilitating data placement and control of physical addresses with multi-queue I/O blocks
US11494115B2 (en) 2020-05-13 2022-11-08 Alibaba Group Holding Limited System method for facilitating memory media as file storage device based on real-time hashing by performing integrity check with a cyclical redundancy check (CRC)
US11461262B2 (en) 2020-05-13 2022-10-04 Alibaba Group Holding Limited Method and system for facilitating a converged computation and storage node in a distributed storage system
US11218165B2 (en) 2020-05-15 2022-01-04 Alibaba Group Holding Limited Memory-mapped two-dimensional error correction code for multi-bit error tolerance in DRAM
US11507499B2 (en) 2020-05-19 2022-11-22 Alibaba Group Holding Limited System and method for facilitating mitigation of read/write amplification in data compression
US11556277B2 (en) 2020-05-19 2023-01-17 Alibaba Group Holding Limited System and method for facilitating improved performance in ordering key-value storage with input/output stack simplification
US11263132B2 (en) 2020-06-11 2022-03-01 Alibaba Group Holding Limited Method and system for facilitating log-structure data organization
US11354200B2 (en) 2020-06-17 2022-06-07 Alibaba Group Holding Limited Method and system for facilitating data recovery and version rollback in a storage device
US11422931B2 (en) 2020-06-17 2022-08-23 Alibaba Group Holding Limited Method and system for facilitating a physically isolated storage unit for multi-tenancy virtualization
US11354233B2 (en) 2020-07-27 2022-06-07 Alibaba Group Holding Limited Method and system for facilitating fast crash recovery in a storage device
US11372774B2 (en) 2020-08-24 2022-06-28 Alibaba Group Holding Limited Method and system for a solid state drive with on-chip memory integration
US11487465B2 (en) 2020-12-11 2022-11-01 Alibaba Group Holding Limited Method and system for a local storage engine collaborating with a solid state drive controller
US11734115B2 (en) 2020-12-28 2023-08-22 Alibaba Group Holding Limited Method and system for facilitating write latency reduction in a queue depth of one scenario
US11416365B2 (en) 2020-12-30 2022-08-16 Alibaba Group Holding Limited Method and system for open NAND block detection and correction in an open-channel SSD
US11726699B2 (en) 2021-03-30 2023-08-15 Alibaba Singapore Holding Private Limited Method and system for facilitating multi-stream sequential read performance improvement with reduced read amplification
US11461173B1 (en) 2021-04-21 2022-10-04 Alibaba Singapore Holding Private Limited Method and system for facilitating efficient data compression based on error correction code and reorganization of data placement
US11476874B1 (en) 2021-05-14 2022-10-18 Alibaba Singapore Holding Private Limited Method and system for facilitating a storage server with hybrid memory for journaling and data storage
KR20230132150A (ko) * 2022-03-08 2023-09-15 에스케이하이닉스 주식회사 메모리 및 메모리의 동작 방법

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6029264A (en) * 1997-04-28 2000-02-22 The Trustees Of Princeton University System and method for error correcting a received data stream in a concatenated system
US5996105A (en) * 1997-11-14 1999-11-30 Cirrus Logic, Inc. ECC system employing a data buffer for storing codeword data and a syndrome buffer for storing error syndromes
US6836869B1 (en) * 2001-02-02 2004-12-28 Cradle Technologies, Inc. Combined cyclic redundancy check (CRC) and Reed-Solomon (RS) error checking unit
US7562283B2 (en) 2005-12-27 2009-07-14 D.S.P. Group Ltd. Systems and methods for error correction using binary coded hexidecimal or hamming decoding
JP4897524B2 (ja) * 2007-03-15 2012-03-14 株式会社日立製作所 ストレージシステム及びストレージシステムのライト性能低下防止方法
US8006166B2 (en) * 2007-06-12 2011-08-23 Micron Technology, Inc. Programming error correction code into a solid state memory device with varying bits per cell
US7747903B2 (en) * 2007-07-09 2010-06-29 Micron Technology, Inc. Error correction for memory
JP4564520B2 (ja) * 2007-08-31 2010-10-20 株式会社東芝 半導体記憶装置およびその制御方法
US7873803B2 (en) * 2007-09-25 2011-01-18 Sandisk Corporation Nonvolatile memory with self recovery
JP4538034B2 (ja) * 2007-09-26 2010-09-08 株式会社東芝 半導体記憶装置、及びその制御方法
US20090172335A1 (en) * 2007-12-31 2009-07-02 Anand Krishnamurthi Kulkarni Flash devices with raid
JP5166074B2 (ja) * 2008-02-29 2013-03-21 株式会社東芝 半導体記憶装置、その制御方法、および誤り訂正システム
JP4672743B2 (ja) * 2008-03-01 2011-04-20 株式会社東芝 誤り訂正装置および誤り訂正方法
JP2009301194A (ja) * 2008-06-11 2009-12-24 Toshiba Corp 半導体記憶装置の制御システム
US8468417B2 (en) 2009-02-18 2013-06-18 Micron Technology, Inc. Data integrity in memory controllers and methods
JP5066199B2 (ja) * 2010-02-12 2012-11-07 株式会社東芝 半導体記憶装置
JP5017407B2 (ja) * 2010-03-24 2012-09-05 株式会社東芝 半導体記憶装置
JP5279785B2 (ja) 2010-09-17 2013-09-04 株式会社東芝 コントローラ、記憶装置、およびプログラム
JP5039193B2 (ja) 2010-09-22 2012-10-03 株式会社東芝 半導体記憶装置および制御方法
JP5269932B2 (ja) 2011-03-01 2013-08-21 株式会社東芝 コントローラ、データ記憶装置およびプログラム
JP5221699B2 (ja) 2011-03-23 2013-06-26 株式会社東芝 半導体記憶装置
US8640013B2 (en) 2011-09-22 2014-01-28 Kabushiki Kaisha Toshiba Storage device

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101680670B (zh) * 2007-04-16 2012-10-03 东洋克斯株式会社 制冷制暖面板
US10756764B2 (en) 2018-03-23 2020-08-25 Toshiba Memory Corporation Memory system and control method
US11231994B2 (en) 2018-09-10 2022-01-25 Toshiba Memory Corporation Memory system and method of controlling nonvolatile memory

Also Published As

Publication number Publication date
JP2011203878A (ja) 2011-10-13
EP2372550B1 (en) 2018-01-17
US20110239083A1 (en) 2011-09-29
KR101267183B1 (ko) 2013-05-24
CN102201266A (zh) 2011-09-28
CN102201266B (zh) 2014-04-23
EP2372550A1 (en) 2011-10-05
US20130254622A1 (en) 2013-09-26
US9298546B2 (en) 2016-03-29
US20140245100A1 (en) 2014-08-28
US20150234705A1 (en) 2015-08-20
TW201145011A (en) 2011-12-16
KR20110107273A (ko) 2011-09-30
US8751911B2 (en) 2014-06-10
USRE49253E1 (en) 2022-10-18
US9048878B2 (en) 2015-06-02
US8418042B2 (en) 2013-04-09
TWI437421B (zh) 2014-05-11

Similar Documents

Publication Publication Date Title
JP5017407B2 (ja) 半導体記憶装置
US9673840B2 (en) Turbo product codes for NAND flash
KR101645906B1 (ko) 계층적 반복 에러 교정을 위한 종료 기준
US9577673B2 (en) Error correction methods and apparatuses using first and second decoders
KR101398212B1 (ko) 메모리 장치 및 인코딩/디코딩 방법
JP4856110B2 (ja) チェンサーチ装置およびチェンサーチ方法
JP5467270B2 (ja) データ入出力制御装置および半導体記憶装置システム
US9189322B2 (en) Memory system
US9471421B2 (en) Data accessing method, memory storage device and memory controlling circuit unit
CN102024501A (zh) 存储器系统以及对存储器系统的控制方法
JP2009211742A (ja) 誤り訂正装置および誤り訂正方法
US10243588B2 (en) Error correction code (ECC) decoders sharing logic operations, memory controllers including the error correction code decoders, and methods of decoding error correction codes
US10514980B2 (en) Encoding method and memory storage apparatus using the same
JP2019057752A (ja) メモリシステム
CN110716824B (zh) 编码方法及使用所述编码方法的存储器存储装置
US11231994B2 (en) Memory system and method of controlling nonvolatile memory
JP5121947B2 (ja) 誤り訂正装置および誤り訂正方法
JP5733766B2 (ja) データ入出力制御装置および半導体記憶装置システム
KR20170067656A (ko) Nand 플래시용 터보 프로덕트 코드

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110916

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111108

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111228

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20120127

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20120203

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120214

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120413

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

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

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

Free format text: PAYMENT UNTIL: 20150615

Year of fee payment: 3

R151 Written notification of patent or utility model registration

Ref document number: 5017407

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

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

Free format text: PAYMENT UNTIL: 20150615

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350