JP2011198272A - 半導体記憶装置および半導体記憶装置の制御方法 - Google Patents
半導体記憶装置および半導体記憶装置の制御方法 Download PDFInfo
- Publication number
- JP2011198272A JP2011198272A JP2010066682A JP2010066682A JP2011198272A JP 2011198272 A JP2011198272 A JP 2011198272A JP 2010066682 A JP2010066682 A JP 2010066682A JP 2010066682 A JP2010066682 A JP 2010066682A JP 2011198272 A JP2011198272 A JP 2011198272A
- Authority
- JP
- Japan
- Prior art keywords
- read
- error correction
- data
- code
- error
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/29—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
- H03M13/2906—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding 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/1012—Adding 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
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/35—Unequal or adaptive error protection, e.g. by providing a different level of protection according to significance of source information or by adapting the coding according to the change of transmission channel characteristics
- H03M13/356—Unequal error protection [UEP]
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/3707—Adaptive decoding and hybrid decoding, e.g. decoding methods or techniques providing more than one decoding algorithm for one code
- H03M13/3715—Adaptation to the number of estimated errors or to the channel state
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/09—Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/11—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
- H03M13/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic 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/1515—Reed-Solomon codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic 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/152—Bose-Chaudhuri-Hocquenghem [BCH] codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- H03M13/19—Single error correction without using particular properties of the cyclic codes, e.g. Hamming codes, extended or generalised Hamming codes
Abstract
【課題】読み出し速度を向上させることができる半導体記憶装置を得ること。
【解決手段】書き込みデータとセクタ単位で生成されたCRC符号およびL1ECC符号とクラスタ単位で生成されたL2ECC符号とを格納するためのNANDメモリ20と、NANDメモリ20から読みだされた、書き込みデータとCRC符号とL1ECC符号とを用いてL1ECC処理を実施し、残留する誤りがあるか否かを判定するCRC/L1デコーダ18と、残留する誤りがあると判定されたセクタを含むクラスタに対して、書き込みデータとCRC符号とL2ECC符号とを用いてL2ECC処理を実施するL2デコーダ50と、残留する誤りの有無に基づいてクラスタ内のL2ECC符号を読み出すか否かを判定する読み出し判定部17と、を備える。
【選択図】図1
【解決手段】書き込みデータとセクタ単位で生成されたCRC符号およびL1ECC符号とクラスタ単位で生成されたL2ECC符号とを格納するためのNANDメモリ20と、NANDメモリ20から読みだされた、書き込みデータとCRC符号とL1ECC符号とを用いてL1ECC処理を実施し、残留する誤りがあるか否かを判定するCRC/L1デコーダ18と、残留する誤りがあると判定されたセクタを含むクラスタに対して、書き込みデータとCRC符号とL2ECC符号とを用いてL2ECC処理を実施するL2デコーダ50と、残留する誤りの有無に基づいてクラスタ内のL2ECC符号を読み出すか否かを判定する読み出し判定部17と、を備える。
【選択図】図1
Description
本発明は、半導体記憶装置および半導体記憶装置の制御方法に関する。
不揮発性の半導体メモリを用いて情報を記憶する半導体記憶装置では、経年劣化によりデータに誤りが生じる可能性がある。消費電力を抑えて、このような誤りに対して訂正速度の平均値を向上させつつ訂正能力を確保するために、2段階のECC(Error Check and Correct)を用いる半導体記憶装置がある(たとえば、下記特許文献1および特許文献2参照)。
2段階のECCを用いる半導体記憶装置では、所定のデータ単位ごとに、L1(レベル1)のECC符号化処理により生成されるL1ECC符号と、L2(レベル2)のECC符号化処理により生成されるL2ECC符号と、をデータとともに半導体メモリへ記憶する。そして、読み出しの際に、L1ECC符号を参照して、読み出したデータの誤りの検出および誤り訂正処理(L1誤り訂正処理)を行い、L1誤り訂正処理により誤りが訂正できなかった場合に、L2ECC符号を用いた誤り訂正処理(L2ECC処理)を行う。
2段階のECCを用いる半導体記憶装置では、データの読み出しの際、所定のデータ単位ごとに読み出すデータに対応するL1ECC符号およびL2ECC符号を同時に読み出す。一方、このような半導体記憶装置では、一般に読み出しデータの誤り検出のための誤り検出符号も同時に半導体メモリへ記憶する。そして、誤り検出符号に基づいて読み出したデータに誤りが無いと判定した場合(読み出しデータに誤りが無い場合)、および読み出しデータ内の誤り数がL1誤り訂正処理の訂正能力以内であった場合には、L2ECC処理を実施しない。このような場合、L2ECC符号は、使用されることなく破棄されることになる。したがって、従来の2段階のECCを用いる半導体記憶装置では、使用されない不要な情報を読み出すことにより、読み出し速度が低下する、という問題がある。
本発明は、読み出し速度を向上させることができる半導体記憶装置および半導体記憶装置の制御方法を提供することを目的とする。
本願発明の一態様によれば、不揮発性半導体メモリと、所定のサイズの書き込みデータと、前記書き込みデータ内の誤りを検出するために生成された誤り検出符号と、前記書き込みデータと該書き込みデータに対応する前記誤り検出符号とで構成される第1の符号化対象データ内の誤りを訂正するために生成された第1の誤り訂正符号と、1つ以上の前記第1の符号化対象データで構成される第2の符号化対象データ内の誤りを訂正するために生成された第2の誤り訂正符号と、を、前記不揮発性半導体メモリに書き込む書き込み処理部と、前記不揮発性半導体メモリから読みだされた、前記書き込みデータと、前記誤り検出符号と、前記第1の誤り訂正符号と、を用いて前記書き込みデータに対する第1の誤り訂正処理を実施し、第1の誤り訂正処理後に前記書き込みデータに残留する誤りがあるか否かを判定する第1の誤り訂正処理部と、前記第1の誤り訂正処理部により残留する誤りがあると判定された前記書き込みデータを含む前記第2の符号化対象データと、前記不揮発性半導体メモリから読みだされた前記第2の誤り訂正符号と、を用いて前記書き込みデータに対する第2の誤り訂正処理を実施する第2の誤り訂正処理部と、前記第2の符号化対象データ内の前記書き込みデータについての前記第1の誤り訂正処理部による判定結果に基づいて、前記第2の符号化対象データに対応する第2の誤り訂正符号を前記不揮発性半導体メモリから読み出すか否かを判定する読み出し判定部と、前記読み出し判定部の判定結果に基づいて、前記不揮発性半導体メモリからの読み出しを制御する読み出し制御部と、を備えることを特徴とする半導体記憶装置が提供される。
また、本願発明の一態様によれば、不揮発性半導体メモリと、所定のサイズの書き込みデータと、前記書き込みデータ内の誤りを検出するために生成された誤り検出符号と、前記書き込みデータと該書き込みデータに対応する前記誤り検出符号とで構成される符号化対象データ内の誤りを訂正するために生成された誤り訂正符号と、を、前記不揮発性半導体メモリに書き込む書き込み処理部と、前記不揮発性半導体メモリから読みだされた、前記書き込みデータと、前記誤り検出符号と、に基づいて前記書き込みデータに誤りがあるか否かを判定する誤り検出処理部と、誤り検出処理部により誤りがあると判定された前記書き込みデータを含む前記符号化対象データと、前記不揮発性半導体メモリから読みだされた前記誤り訂正符号と、を用いて前記書き込みデータに対する誤り訂正処理を実施する誤り訂正処理部と、前記符号化対象データ内の前記書き込みデータについての前記誤り検出処理部による判定結果に基づいて、前記符号化対象データに対応する誤り訂正符号を前記不揮発性半導体メモリから読み出すか否かを判定する読み出し判定部と、前記読み出し判定部の判定結果に基づいて、前記不揮発性半導体メモリからの読み出しを制御する読み出し制御部と、を備えることを特徴とする半導体記憶装置が提供される。
また、本願発明の一態様によれば、所定のサイズの書き込みデータと、前記書き込みデータ内の誤りを検出するために生成された誤り検出符号と、前記書き込みデータと該書き込みデータに対応する前記誤り検出符号とで構成される第1の符号化対象データ内の誤りを訂正するために生成された第1の誤り訂正符号と、1つ以上の前記第1の符号化対象データで構成される第2の符号化対象データ内の誤りを訂正するために生成された第2の誤り訂正符号と、を、不揮発性半導体メモリに書き込むデータ書き込みステップと、前記不揮発性半導体メモリから読みだされた、前記書き込みデータと、前記誤り検出符号と、前記第1の誤り訂正符号と、を用いて前記書き込みデータに対する第1の誤り訂正処理を実施し、第1の誤り訂正処理後に前記書き込みデータに残留する誤りがあるか否かを判定する第1の誤り訂正処理ステップと、前記第1の誤り訂正処理ステップで残留する誤りがあると判定された前記書き込みデータを含む前記第2の符号化対象データと、前記不揮発性半導体メモリから読みだされた前記第2の誤り訂正符号と、を用いて前記書き込みデータに対する第2の誤り訂正処理を実施する第2の誤り訂正処理ステップと、前記第2の符号化対象データ内の前記書き込みデータについての前記第1の誤り訂正処理ステップでの判定結果に基づいて、前記第2の符号化対象データに対応する第2の誤り訂正符号を前記不揮発性半導体メモリから読み出すか否かを判定する読み出し判定ステップと、前記読み出し判定ステップの判定結果に基づいて、前記不揮発性半導体メモリからの読み出しを制御する読み出し制御ステップと、を含むことを特徴とする半導体記憶装置の制御方法が提供される。
本発明によれば、読み出し速度を向上させることができる、という効果を奏する。
以下に添付図面を参照して、本発明の実施の形態にかかる半導体記憶装置を詳細に説明する。なお、これらの実施の形態により本発明が限定されるものではない。
(第1の実施の形態)
図1は、本発明の第1の実施の形態にかかる半導体記憶装置の構成例を示す図である。本実施の形態の半導体記憶装置1は、たとえばSSD(Solid State Drive)の、半導体メモリを用いて情報を不揮発に記憶するための装置である。半導体記憶装置1は、通信媒体を介してホスト装置2の外部に接続され、ホスト装置2に対する外部記憶媒体として機能する。ホスト装置2の例としては、パーソナルコンピュータやCPU(Central Processing Unit)コア等があげられる。
図1は、本発明の第1の実施の形態にかかる半導体記憶装置の構成例を示す図である。本実施の形態の半導体記憶装置1は、たとえばSSD(Solid State Drive)の、半導体メモリを用いて情報を不揮発に記憶するための装置である。半導体記憶装置1は、通信媒体を介してホスト装置2の外部に接続され、ホスト装置2に対する外部記憶媒体として機能する。ホスト装置2の例としては、パーソナルコンピュータやCPU(Central Processing Unit)コア等があげられる。
半導体記憶装置1は、NANDコントローラ10と、不揮発性の半導体メモリであるNAND型フラッシュメモリ(以下、NANDメモリと略す)20と、MPU(Micro Processing Unit)30と、NANDメモリ20よりも高速動作が可能なメモリ40と、L2デコーダ50と、通信I/F(Interface)60と、内部バス70と、を備える。
NANDコントローラ20、MPU30、メモリ40、L2デコーダ50および通信I/F60は、内部バス70を介して互いに接続されている。なお、ここでは、半導体記憶装置1の半導体メモリとしてNAND型フラッシュメモリを用いる例を説明するが、これに限らず、NAND型フラッシュメモリ以外の不揮発の半導体メモリを用いてもよい。
通信I/F60は、ATA(Advanced Technology Attachment)インタフェースなどのメモリ接続インタフェースであり、ホスト装置2から受信した命令、データなどを内部バス70に出力する、また、通信I/F60は、内部バス70経由で入力されたデータ、MPU30からの応答通知(命令の実行完了を示す通知など)などをホスト装置2へ送信する。
MPU30は、半導体記憶装置1の各構成要素を統括的に制御し、ホスト装置2から通信I/F60および内部バス70経由で命令を受けた場合に、その命令に従った制御を行う。例えば、MPU30は、ホスト装置2からの命令に従って、NANDメモリ20へのデータの書き込み、NANDメモリ20からのデータの読み出しなどをNANDコントローラ10へ指示する。
なお、図1に示した半導体記憶装置1の構成は一例であり、半導体メモリとその半導体メモリの読み書きを制御するコントローラを備え、ホスト装置2と通信が可能な構成であれば、図1に示した構成に限らずどのような構成でもよい。
NANDコントローラ10は、NANDメモリ20の読み書き等を制御するコントローラであり、DMAコントローラ11、バッファメモリ12、L1/L2エンコーダ13、書き込み制御部14、メモリI/F15、読み出し制御部16、読み出し判定部17、CRC/L1デコーダ18および誤り記録部19を備える。
DMAコントローラ11は、バッファメモリ12、L2デコーダ50およびメモリ40の間のデータ転送制御をDMA(Direct Memory Access)方式に従って行う。バッファメモリ12は、DMAコントローラ11からL1/L2エンコーダ13へのデータ転送時の一時記憶領域として機能し、また、NANDメモリ20から読み出したデータをDMAコントローラ11へデータ転送する際の一時記憶領域として機能する。
つぎに、本実施の形態のNANDメモリ20への書き込み動作について説明する。NANDメモリ20への書き込みおよび読み出しは、ページ単位で行なわれる。1ページのデータ量については、特に制約は無いが、以下の説明では、一例として1ページを8640Byteとして説明する。
図2は、本実施の形態のL1/L2エンコーダ13の構成例を示す図である。図2に示すように、L1/L2エンコーダ13は、CRC(Cyclic Redundancy Check)生成部(誤り検出符号生成部)131、CRC符号格納部132、L1エンコーダ133、L1ECC符号格納部134、L2エンコーダ135、L2ECC符号格納部136および選択部137で構成される。
本実施の形態では、レベル1(L1)とレベル2(L2)の2段階のECC処理を行う。L1ECC処理では、所定のサイズの書き込みデータごとに、書き込みデータに対する誤り検出符号を生成する処理と、書き込みデータと誤り検出符号とに対して誤り訂正を行なうためのECC符号を生成する処理と、の処理を行う。
具体的には、まず、L1/L2エンコーダ13のCRC生成部131が、バッファメモリ12から入力される所定のサイズの書き込みデータに基づいて誤り検出符号を生成し、生成した誤り検出符号をCRC符号格納部132へ格納する。なお、L1ECC処理で用いる誤り検出符号としては、たとえば、CRC32符号、CRC16符号等を用いることができる。なお、本実施の形態では、L1ECC処理で用いる誤り検出符号としてCRC32符号を用いる例について説明する。以降、L1ECC処理で生成する誤り検出符号をCRC符号と記載する。
つぎに、L1エンコーダ133が、CRC符号格納部132から読み出したCRC符号と、バッファメモリ12から入力される書き込みデータと、に基づいてECC符号を生成し、生成したECC符号をL1ECC符号格納部134へ格納する。L1ECC処理により生成された各符号は、書き込みデータとともに、NANDメモリ20へ格納される。本実施の形態では、L1ECC処理により生成される符号(誤り検出符号およびECC符号)と、その符号に対応するデータ(第1の符号化対象データ)と、で構成されるデータ単位を1セクタ(第1単位データ)とする。
また、L2ECC処理では、書き込みデータと、その書き込むデータに対応するCRC符号と、に基づいて、L1ECC処理で生成するECC符号とは別のECC符号を生成する。具体的には、L2エンコーダ135が、バッファメモリ12から入力される所定のサイズの書き込みデータと、CRC符号格納部132から読み出したCRC符号と、に基づいてECC符号を生成する。本実施の形態では、L2ECC処理の符号化の対象とするデータ(第2の符号化対象データ:書き込みデータとCRC符号)と、そのデータに対応するL1ECC処理で生成されたECC符号と、そのデータに対応してL2ECC処理で生成したECC符号と、で構成されるデータ単位を1クラスタ(第2単位データ)とする。
なお、後述のように、NANDメモリ20からのデータ読み出しの際、セクタ単位で誤り検出符号に基づいて誤りの有無を判定し、誤りが無いと判定されたセクタのデータに対してはL1のECC符号を用いた誤り訂正処理は実施しない。一方、誤り検出符号に基づいて誤りが有ると判定されたセクタのデータに、L1のECC符号を用いた誤り訂正処理を実施する。また、クラスタ内の全セクタについて、誤りが無いまたはL1のECC符号による誤り訂正が可能である場合には、そのクラスタについてはL2の誤り訂正処理は実施しない。一方、L1のECC符号を用いた誤り訂正処理による訂正が不可であったセクタが含まれるクラスタに対しては、L2のECC符号を用いた誤り訂正処理を実施する。
したがって、L1ECC処理は全ての書き込みデータに対して実施することになり、L1ECC処理で生成する誤り訂正符号(L1ECC符号)は、計算量の少ない符号であることが望ましい。たとえば、L1ECC符号としてハミング符号等を用いることができる。また、L2ECC処理はL1ECC処理で誤り訂正ができなかった場合に実施するため、L2ECC処理で生成する誤り訂正符号(L2ECC符号)は、計算量が多いが多ビットの誤りを訂正できる符号であり、L1ECC符号よりも高い誤り訂正能力を有する符号であることが望ましい。たとえば、L2ECC符号として、BCH(Bose Chaudhuri Hocquenghem)符号、リード・ソロモン(RS)符号またはLDPC符号(Low Density Parity Check Code)等を用いることができる。
図3は、2段階のECC処理の概念を示す図である。図3では、CRCによる誤り検出範囲Aと、L1ECC符号による誤り訂正範囲Bと、L2ECC符号による誤り訂正範囲Cと、を示している。図3の例では、512Byteの書き込み対象データごとにCRC符号およびL1ECC符号を生成している。また、複数の、512ByteとCRC符号とに対してL2ECC符号を生成している。
以上のL1ECC処理およびL2ECC処理により生成されたCRC符号、L1ECC符号およびL2ECC符号は、ページ単位でNANDメモリ20へ書き込まれる。図4は、本実施の形態のページフォーマットの一例を示す図である。図4に示したフォーマットは、従来の半導体装置(2段階でECC処理を行う従来の半導体装置)が用いるページフォーマットと同様である。ページフォーマットは、書き込みおよび読み出しの際の、ページ単位での各データ(各符号も含む)の書き込みおよび読み出しの順序を示している。図4のページフォーマットは、ページフォーマット内の左側から順に書き込みおよび読み出しが行なわれることを示している。図4の例では、1ページは、2クラスタ(クラスタ#0、クラスタ#1)で構成される。1クラスタは、8セクタ(クラスタ#0はセクタ#0〜#7、クラスタ#1はセクタ#8〜#15)と、L2ECC符号と、で構成される。1セクタは、書き込みデータとそのデータに対応するCRC符号と、で構成される。
選択部137は、書き込み制御部14からの指示に基づいて、上述のページフォーマットとなるよう、CRC符号格納部132から読み出したCRC符号と、L1ECC符号格納部134から読み出したL1ECC符号と、L2ECC符号格納部136から読み出したL2ECC符号と、バッファメモリ12から入力される書き込みデータと、のいずれかをメモリI/F15へ出力する。このようにして、選択部137から出力された書き込みデータおよび各符号は、メモリI/F15経由でNANDメモリ20へ書き込まれる。
なお、以上述べたNANDメモリ20への書き込み動作、および書き込み動作に関連する構成(L1/L2エンコーダ等の構成)は、従来の2段階でECC処理を行う半導体記憶装置と同様であり、上述した動作および構成に限定されない。誤り検出符号、L1ECC符号およびL2ECC符号を生成し、ページ単位で書き込みを行なうことができる動作および構成であれば、どのような動作および構成を用いてもよい。
つぎに、本実施の形態のNANDメモリ20からのデータ読み出し動作について説明する。MPU30から読み出しの指示があった場合に、読み出し制御部16は、ページ単位で、メモリI/F15にNANDメモリ20から読み出しデータと書き込み処理で生成された各符号とを読み出すよう指示する。なお、読み出し制御部16は、通常は、ページごとに、ページの先頭からページの最後までを一括して読み出すようメモリI/F15へ指示するが、ページの途中から読み出すよう指示すること(読み出し開始位置の指示)や、ページ途中までを読み出すよう指示すること(読み出し終了位置の指示)も可能である。
メモリI/F15は、NANDメモリ20からの読み出し処理部としての機能を有し、NANDメモリ20から読み出した読み出しデータ、をバッファメモリ12へ格納するとともに、セクタごとにNANDメモリ20から読み出した読み出しデータとその読み出しデータに対応するCRC符号とL1ECC符号と、をCRC/L1デコーダ18へ入力する。メモリI/F15は、NANDメモリ20への書き込み処理部としての機能を有し、書き込み制御部14からの指示に基づいてL1/L2エンコーダ13から出力されるデータをNANDメモリ20へ書き込む。およびまた、読み出し制御部16は、読み出したL2ECC符号を保持する。
CRC/L1デコーダ18は、入力されたL1ECC符号と読み出しデータとに基づいてL1デコード処理を行うことにより、誤り訂正後の読み出しデータおよびCRC符号を生成する。CRC/L1デコーダ18は、誤り訂正後の読み出しデータおよびCRC符号に基づいて読み出しデータに誤りがあると判定した場合には、当該クラスタで誤りが発生したことを示す情報を誤り情報として誤り記録部19へ記録するとともに、バッファメモリ12に格納されている読み出しデータおよびCRC符号(L1ECC符号による誤り訂正前)をDMAコントローラ11経由でMDAメモリ40へ格納する。
CRC/L1デコーダ18は、誤り訂正後の読み出しデータおよびCRC符号に基づいて読み出しデータに誤りが無いと判定した場合には、バッファメモリ12に格納されている当該読み出しデータを誤り訂正後のデータに書き換えて、DMAコントローラ11経由でMDAメモリ40へ格納する。
なお、CRC/L1デコーダ18は、誤り訂正後の読み出しデータおよびCRC符号に基づいて読み出しデータに誤りが無いか否か(L1誤り訂正符号で訂正が可能か否か)の判断を、たとえば以下の手順で行う。まず、CRC/L1デコーダ18は、シンドローム計算を行う。つぎに、シンドローム計算の結果、誤りがあれば、誤り位置を計算し、チェン検索を行う。この誤り位置の計算によって誤りの個数がわかる。そして、チェン検索を実施しながら、誤りの位置と、誤りの個数を調べる。L1ECC符号による訂正が不可能な場合には、チェン検索で調べた誤りの個数と、誤り位置の計算で求めた誤りの個数が異なる値となる。したがって、チェン検索で調べた誤りの個数と、誤り位置の計算で求めた誤りの個数が異なる場合に、L1ECC符号による誤り訂正が不可能であったと判定できる。
L1ECC符号による誤り訂正が可能な場合は、チェン検索で調べた誤りの個数と、誤り位置の計算で求めた誤りの個数が一致する。しかし、個数が一致しても、誤って訂正している可能性があるため、最終的には、読み出しデータとCRC符号に基づいて誤り検出を行い、誤りがなかった場合に、L1ECC符号による誤り訂正が可能であると判断し、誤りがなかった場合に、L1ECC符号による誤り訂正が不可であったと判断する。
読み出し判定部17は、誤り記録部19に格納されている誤り情報に基づいて、通常読み出しを継続するか、読み出し中のページの読み出し終了位置を変更するか等を決定する。また、読み出し判定部17は、誤り記録部19に格納されている誤り情報に基づいて、L1ECC符号による誤り訂正が不可であったか否か(L1誤り訂正後に誤りが残っているか否か)をMPU30に通知し、MPU30は、その通知に基づいて、L1訂正不可であったと判断したクラスタについて、読み出し制御部16からL2ECC符号を取得し、取得したL2ECC符号をL2デコーダ50へ渡すとともに、当該クラスタのL2ECC符号による誤り訂正処理の開始を指示する。
L2デコーダ50は、MPU30からの指示に基づいて、L2ECC符号と、メモリ40に格納されている読み出しデータおよびCRC符号と、に基づいて、読み出しデータおよびCRC符号の誤り訂正処理を行い、読み出しデータを誤り訂正後のデータに書き換える。
つぎに、読み出し判定部17の処理について詳細に説明する。従来の2段階のECC処理を行う半導体記憶装置では、L2ECC符号を用いた誤り訂正処理(L2誤り訂正処理)を実施しないクラスタについても、NANDメモリ20からL2ECC符号を読み出していた。したがって、不要な情報をNANDメモリ20から読み出すことによる読み出し速度が生じていた。本実施の形態では、このような問題への対策として、L2ECC符号を読み出すか否かを判定する読み出し判定部17を備え、読み出し判定部17が、L2ECC符号を読み出さないと判定した場合には、L2ECC符号をNANDメモリ20から読み出さない。
ここでは、図4に例示したページフォーマットを用いるとして以下の説明を行なう。図4に示すように、L2ECC符号は、各クラスタの最後部に格納されている。たとえば、クラスタ#1のセクタ#8〜セクタ#15の全てのセクタについて、L1ECC符号を用いた誤り訂正処理の後に残留する誤りが無い場合、クラスタ#1のL2ECC符号は読み出す必要はない。この場合、当該ページの読み出し中に、NANDメモリ20からの読み出し終了位置をセクタ#15の終了位置に変更すれば、L2ECC符号を読み出されない。
また、クラスタ#0についても同様に、セクタ#0〜セクタ#7の全てのセクタについて、誤りが検出されなかった場合またはL1ECC符号を用いて訂正が可能であった場合、クラスタ#0のL2ECC符号は読み出す必要はない。この場合に、クラスタ#0のL2ECC符号は読み出さないようにするには、当該ページの読み出し中に、一旦、NANDメモリ20からの読み出し終了位置をセクタ#7の終了位置に変更し、その後に、クラスタ#1のセクタ#8の開始位置から読み出しを開始する必要がある。このような読み出しの制御処理が、L2ECC符号を読み出す時間に比べ、高速で実施できる場合には、クラスタ#0とクラスタ#1についてL2ECC符号の読み飛ばしを行なってもよい。一方、このような読み出しの制御処理が、L2ECC符号を読み出す時間に比べ、同程度以上である場合には、クラスタ#0についてはL2ECC符号の読み飛ばしを実施せず、L2ECC符号を読み出すようにする。
たとえば、1セクタを520Byteとし、1クラスタを4320Byteとし、L2ECC符号を160Byteとし、L2ECC符号をNANDメモリ20から読み出すための所要時間を320クロック(2クロックで1Byteを読み出し)とする。また、読み出し終了位置をセクタ#7の終了位置に変更し、その後に、クラスタ#1のセクタ#8の開始位置から読み出しを開始する読み出し制御処理の所要時間(待機時間も含む)を30サイクル程度とする。この場合は、読み出しの所要時間に比べ、読み出し制御処理の所要時間の方が短いため、クラスタ#0のL2ECC符号についても読み飛ばしを行なってもよい。また、読み出しの所要時間に比べ、読み出し制御処理の所要時間の方が短い場合でも、クラスタ#0の読み出し制御処理が複雑になること等を考慮してクラスタ#1のL2ECC符号のみを読み飛ばしてもよい。
図5は、本実施の形態のL2ECC符号読み出し判定処理手順の一例を示すフローチャートである。図5では、クラスタ#1のL2ECC符号について読み出し処理を行う場合のフローチャートを示している。クラスタ#0についてもL2ECC符号の読み出し判定処理を行う場合は、図5のクラスタ#1をクラスタ#0に読み替えて(後述のステップS7では、クラスタ#0のL2ECC符号を読み出さない場合は読み出し終了位置をセクタ#7の終了位置する)、同様の動作を行なえばよい。
まず、CRC/L1デコーダ18は、読み出しデータと、CRC符号と、L1ECC符号と、に基づいて、L1デコード処理を行い、読み出しデータおよびCRC符号の誤り訂正を実施する(ステップS1)。その後、CRC/L1デコーダ18は、誤り訂正後の、読み出しデータとCRC符号とに基づいて、読み出しデータの誤り検出処理(CRCの判定処理)を実施する(ステップS2)。CRCの判定結果、読み出しデータに誤りが無いか否かを判定し(ステップS3)、誤りがあると判定した場合(ステップS3 No)、CRC/L1デコーダ18は、誤り記録部19へ誤りを検出したセクタが属するクラスタを識別するための情報と誤りがあったか否かを示す誤り情報と対応付けて記録する(ステップS4)。
ステップS3で誤りが無いと判定した場合(ステップS3 Yes)は、CRC/L1デコーダ18は、ステップS2で判定処理を行ったセクタがクラスタ#1の最後のセクタであるか否かを判断する(ステップS5)。クラスタ#1の最後のセクタでないと判断した場合(ステップS5 No)、ステップS1に戻り、つぎのセクタについての処理を実施する。ステップS5でクラスタ#1の最後のセクタであると判断した場合(ステップS5 Yes)、CRC/L1デコーダ18は、読み出し判定部17へ判定処理の実施を指示し、読み出し判定部17は、誤り記録部19に記憶されている誤り情報を参照して、クラスタ#1内の全セクタについて誤りが無かったか否かを判断する(ステップS6)。
クラスタ#1内の全セクタで誤りがなかったと判断した場合(ステップS6 Yes)は、読み出し判定部17は、読み出し制御部16に対して、クラスタ#1のL2ECC符号を読み出さないよう(セクタ#15の終了位置を読み出し終了位置とするよう)指示する(ステップS7)。読み出し制御部16は、読み出し判定部17からの指示に基づいてクラスタ#1のセクタ#15の終了位置を読み出し終了位置とするようNANDメモリ20からの読み出しを制御する。
また、ステップS6で、クラスタ#1内のセクタで1つでも誤りがあったと判断した場合(ステップS6 No)は、読み出し判定部17は、読み出しに関する追加指示はせず、通常読み出しを継続する。すなわち、クラスタ#1のL2ECC符号をNANDメモリ20から読み出す。以上の処理により、クラスタ#1内の全てのセクタで、L1ECC符号による訂正後に誤りが無かった場合に、L2ECC符号をNANDメモリ20から読み出さないようにすることができる。
たとえば、1セクタを520Byteとし、1クラスタを4320Byteとし、L2ECC符号を160Byteとする。この場合、1ページは、8640Byteであり、1ページ分全てを読み出す場合には、8640Byteを読み出すことになる。これに対し、クラスタ#1のL2ECC符号を読み出さない場合には、8640Byte−160Byte=8480Byteとなり、全て読み出す場合に比べ、約1.8%読み出し速度を向上させることができる。
また、クラスタ#0についても読み出さない場合、さらに160Byteの読み出し時間から上述のような読み出し制御処理(一旦読み出しを終了してから読み出しを再開する処理)の時間を除いた分だけ読み出し速度を向上させることができる。すなわち、1Byteを読み出す時間を1サイクルとし、上述の読み出し時間をTサイクルとすると、通常読み出しを行なう場合に比べ、(160+160−T)/8640×100%向上させることができる。たとえば、Tを30サイクルとすると、約3.4%読み出し速度を向上させることができる。また、たとえばTが160サイクルを超える場合には、クラスタ#0のL2ECC符号を読み出さないことによる速度向上が見込めないため、クラスタ#1のL2ECC符号についてのみ読み出し判定処理を実施すればよい。
なお、読み出し判定部17以外の本実施の形態の読み出し動作および読み出し動作に関連する構成は、従来の2段階でECC処理を行う半導体記憶装置と同様であり、上述した動作および構成に限定されない。誤り検出符号に基づく誤り検出と、L1ECC符号およびL2ECC符号に基づく誤り訂正を実施し、ページ単位で読み出しを行なうことができる動作および構成であれば、どのような動作および構成を用いてもよい。
なお、本実施の形態では、ページ単位で読み出しを行なう場合を例に説明したが、これに限らず、たとえば、1回の読み出し単位が不定の場合にも、同様にL2ECC読み出し判定処理を行うことができる。たとえば、1回の読み出し単位が不定の場合には、クラスタごとに上記の読み出し判定処理を行い、L2ECC符号を読み出すか否かを判定すればよい。
なお、本実施の形態では、L1ECC処理後に、誤りが無いと判定した場合、すなわちL2ECC処理を行う必要がない場合にL2ECC符号を読み出さないようにしたが、さらに、CRC/L1デコーダ18がL1ECC符号を用いた誤り訂正処理の前に、CRC符号により誤りがないと判定した場合には、当該セクタのL1ECC符号を読み出さないようにしてもよい。その場合は、1つのセクタについてCRC符号をL1ECC符号より先に読み出すようなページフォーマットとする。
また、本実施の形態では、2段階のECC処理を行う場合を例に説明したが、CRC符号により誤り検出処理と、1段階のECC処理(1段階のECC符号を用いた誤り訂正処理)とを行う場合に本実施の形態と同様の動作を適用してもよい。この場合、CRC符号により誤り検出を行なう誤り検出部が、誤りが無いと判定したデータについて1段階のECC符号を読み出さないようにする。
このように、本実施の形態では、読み出し判定部17が、クラスタを構成する全てのセクタについて誤りが無いまたはL1ECC符号による訂正が可能であった場合に、そのクラスタのL2ECC符号を読み出さないようにした。そのため、従来の2段階でECC処理を行う半導体記憶装置に比べ読み出し速度を向上させることができる。
(第2の実施の形態)
図6は、本発明の第2の実施の形態にかかる半導体記憶装置が用いるページフォーマットの一例を示す図である。図7は、本実施の形態のL1/L2エンコーダ13aの構成例を示す図である。本実施の形態の半導体記憶装置の構成は、第1の実施の形態で示した半導体記憶装置1のL1/L2エンコーダ13を本実施の形態のL1/L2エンコーダ13aに代える以外は、第1の実施の形態の半導体記憶装置1と同様である。第1の実施の形態と同様の機能を有する構成要素は、第1の実施の形態と同一の符号を付し、説明を省略する。以下、第1の実施の形態と異なる点を説明する。
図6は、本発明の第2の実施の形態にかかる半導体記憶装置が用いるページフォーマットの一例を示す図である。図7は、本実施の形態のL1/L2エンコーダ13aの構成例を示す図である。本実施の形態の半導体記憶装置の構成は、第1の実施の形態で示した半導体記憶装置1のL1/L2エンコーダ13を本実施の形態のL1/L2エンコーダ13aに代える以外は、第1の実施の形態の半導体記憶装置1と同様である。第1の実施の形態と同様の機能を有する構成要素は、第1の実施の形態と同一の符号を付し、説明を省略する。以下、第1の実施の形態と異なる点を説明する。
図6に示すように、本実施の形態では、クラスタ#0のL2ECC符号をクラスタ#1のL2ECC符号の直前に配置し、各ページの最後にL2ECC符号が連続して配置されるようにしている。このようなページフォーマットに対応するため、本実施の形態のL1/L2エンコーダ13aは、第1の実施の形態のL1/L2エンコーダ13にL2ECC符号格納部138を追加している。
本実施の形態では、L2エンコーダ135は、生成したクラスタ#0のL2ECC符号をL2ECC符号格納部136へ格納し、生成したクラスタ#1のL2ECC符号をL2ECC符号格納部138へ格納する。そして、選択部137は、書き込み制御部14の指示に基づいて、図6のページフォーマットとなるよう、CRC符号格納部132から読み出したCRC符号と、L1ECC符号格納部134から読み出したL1ECC符号と、L2ECC符号格納部136から読み出したL2ECC符号と、L2ECC符号格納部138から読み出したL2ECC符号と、バッファメモリから入力される書き込みデータと、のいずれかをメモリI/F15へ出力する。
図6に示したように、各ページの最後にL2ECC符号を連続して配置することにより、クラスタ#0およびクラスタ#1の両方でL2ECC符号を読み出さない場合に効率よく読み飛ばしを行うことができる。すなわち、クラスタ#0およびクラスタ#1の両方で、全てのセクタについて、誤りが無かった場合またはL1ECC符号により訂正が可能であった場合に、読み出し終了位置をクラスタ#15の終了位置とすることにより、一度の終了位置の変更だけで両方のL2ECC符号を読み出さないようにすることができる。
第1の実施の形態のページフォーマットの場合、クラスタ#0およびクラスタ#1の両方でL2ECC符号を読み出さない場合には、クラスタ#0については、一旦、読み出し終了位置を変更してから、途中からの読み出しを開始する必要があり、これらの読み出し制御の処理にある程度の時間を必要とした。これに対し、本実施の形態では、クラスタ#0およびクラスタ#1の両方で、L2ECC符号を読み出さない場合には、読み出し終了位置をクラスタ#15の終了位置とするだけでよい。
なお、クラスタ#0のL2ECC符号を読み出さず、クラスタ#1のL2ECC符号を読み出す場合は、読み出し終了位置をクラスタ#15の終了位置に変更した後に、クラスタ#1のL2ECC符号の開始位置から読み出しを行なう。また、クラスタ#0のL2ECC符号を読み出し、クラスタ#1のL2ECC符号を読み出さない場合は、読み出し終了位置をクラスタ#0のL2ECC符号の終了位置に変更する。
図8は、クラスタごとに実施する本実施の形態のL2ECC符号の使用/不使用判定処理手順の一例を示すフローチャートである。本実施の形態では、まず、CRC/L1デコーダ18および読み出し判定部17は、クラスタごとに図8に示したような手順でL2ECC符号の使用/不使用の判定を行う。図8に示したフローチャートのステップS1、S2、S3およびS4は図5で説明したフローチャートと同様である。以下、第1の実施の形態の読み出し判定処理手順と異なる部分を説明する。
本実施の形態では、ステップS3でCRCの判定結果が誤り無しであった場合(ステップS3 Yes)に、読み出し中のクラスタの最後のセクタの判定結果であるか否かを判定する(ステップS5a)。読み出し中のクラスタの最後のセクタの判定結果であった場合(ステップS5a Yes)、CRC/L1デコーダ18は読み出し判定部17へ読み出し判定処理を実施するよう指示し、ステップS6aに進む。また、読み出し中のクラスタの最後のセクタの判定結果でない場合(ステップS5a No)、ステップS1に戻る。
ステップS6aでは、読み出し判定部17は、読み出し中のクラスタに誤りが無いか否かを判定し(ステップS6a)、誤りが無いと判定した場合(ステップS6a Yes)、そのクラスタのL2ECC符号を使用しないと判定し、判定した結果を当該クラスタの識別番号とともに符号使用判定結果として保持する(ステップS7a)。また、ステップS6aで読み出し中のクラスタに誤りがあると判定した場合(ステップS6a No)は、そのクラスタのL2ECC符号を使用すると判定し、判定した結果を当該クラスタの識別番号とともに符号使用判定結果として保持する(ステップS8a)。
そして、読み出し判定部17は、クラスタ#0、クラスタ#1について、それぞれ上記の符号使用判定結果を行った後、クラスタごとの符号使用判定結果に基づいて、読み出し制御部16に指示を行なう。具体的には、符号使用判定結果が、クラスタ#0とクラスタ#1の両方のL2ECC符号を使用するという結果であった場合は、通常読み出しを継続する。また、クラスタ#0のL2ECC符号を使用し、クラスタ#1のL2ECC符号を使用しない場合には、読み出し終了位置をクラスタ#0のL2ECC符号の終了位置とするよう指示する。また、クラスタ#0のL2ECC符号を使用せず、クラスタ#1のL2ECC符号を使用する場合には、読み出し終了位置をクラスタ#0のセクタ#15の終了位置とした後に、クラスタ#1のL2ECC符号の先頭から読み出しを開始する。また、クラスタ#0とクラスタ#1の両方のL2ECC符号を使用しない場合には、読み出し終了位置をクラスタ#15の終了位置とするよう指示する。
たとえば、1セクタを520Byteとし、1クラスタを4320Byteとし、L2ECC符号を160Byteとする。この場合、本実施の形態では、クラスタ#0およびクラスタ#1の両方のL2ECC符号を読み出さない場合には、8640Byte−160Byte−160Byte=8320Byteとなり、全て読み出す場合に比べ、約3.8%読み出し速度を向上させることができる。
なお、符号使用判定結果が、クラスタ#0のL2ECC符号を使用せず、クラスタ#1のL2ECC符号を使用するという判定結果であった場合には、通常読み出しを継続してもよい。これは、一旦読み出し位置を変更し、再び、読み出しを開始する処理を行う必要があるため、それらの処理にある程度の所要時間を必要とするためである。たとえば、これらの処理の所要時間が、クラスタ#0の読み出し時間に比べ同程度以上の場合には、通常読み出しを継続するようにしてもよい。以上述べた以外の本実施の形態の動作は、第1の実施の形態の動作と同様である。
このように、本実施の形態では、クラスタ#0、クラスタ#1のL2ECC符号を1ページの最後部に連続して配置し、クラスタ#0およびクラスタ#2の両方について、クラスタを構成する全てのセクタについて誤りが無いまたはL1ECC符号による訂正が可能であった場合に、連続してL2ECC符号を読み飛ばせるようにした。そのため、第1の実施の形態に比べ、さらに読み出し速度を向上させることができる。
(第3の実施の形態)
図9は、本発明の第3の実施の形態にかかる半導体記憶装置が用いるページフォーマットの一例を示す図である。本実施の形態の半導体記憶装置の構成は、第1の実施の形態で示した半導体記憶装置1のL1/L2エンコーダ13を(N(Nは1以上の整数)+1)クラスタ分のL2ECC符号を保持できるようにするような構成に変更する以外は、第1の実施の形態と同様である。第1の実施の形態と同様の機能を有する構成要素は、第1の実施の形態と同一の符号を付し、説明を省略する。以下、第1の実施の形態または第2の実施の形態と異なる点を説明する。
図9は、本発明の第3の実施の形態にかかる半導体記憶装置が用いるページフォーマットの一例を示す図である。本実施の形態の半導体記憶装置の構成は、第1の実施の形態で示した半導体記憶装置1のL1/L2エンコーダ13を(N(Nは1以上の整数)+1)クラスタ分のL2ECC符号を保持できるようにするような構成に変更する以外は、第1の実施の形態と同様である。第1の実施の形態と同様の機能を有する構成要素は、第1の実施の形態と同一の符号を付し、説明を省略する。以下、第1の実施の形態または第2の実施の形態と異なる点を説明する。
本実施の形態では、1ページは(N+1)個のクラスタを含むとし、ページ内の各クラスタのL2ECC符号を第2の実施の形態と同様に、ページの最後部に連続して配置する。また、図9では、1ページ内にはセクタ#0〜セクタ#M(Mは1以上の整数)までの(M+1)個のセクタが含まれるとしている。また、本実施の形態では、1クラスタは(L(Lは1以上の整数)+1)個のセクタで構成されるとする。第1の実施の形態および第2の実施の形態では、1ページを8640Byteとし、1ページが2クラスタで構成され、また1クラスタは8セクタで構成される例を説明した。一方、将来的には、ページ長は増加すると考えられ、また、より多くの誤り訂正能力が必要となると考えられ、L2ECC符号のビット数も増える可能性がある。そこで、本実施の形態では、ページ長、1ページ内のクラスタ数、1クラスタ内のセクタ数を一般化した例について説明する。
本実施の形態では、読み出し判定部17は、読み出し判定処理としてクラスタごとに第2の実施の形態で説明したL2ECC符号の使用/不使用の判定処理(図8で示した処理手順)を実施する。そして、読み出し判定部17は、1ページを構成する各クラスタについての符号使用結果に基づいて、読み出し制御部16への指示を決定する。たとえば、読み出し中のページの全クラスタについて、L2ECC符号を使用しないという符号使用判定結果であった場合には、読み出し終了位置を、連続するL2ECC符号の格納位置の直前(セクタ#Mの終了位置)とするよう読み出し制御部16へ指示する。また、読み出し中のページの全クラスタについて、L2ECC符号を使用するという符号使用判定結果であった場合は、通常読み出しを継続する。
なお、読み出し中のページ内のクラスタについて、K個(Kは、1≦K≦Nを満たす整数)のクラスタについてL2ECC符号を使用せず、残りの((N+1)−K)個のクラスタについてはL2ECC符号を使用するという符号使用判定結果であった場合には、使用しないと判定されたL2ECC符号を全て読み出さないようにしてもよいし、さらに、使用しないL2ECC符号の配置等に基づいて、読み出すか否かを決定してもよい。たとえば、K=1のときには、ページフォーマット上で最後のL2ECC符号である場合に読み出さず、ページフォーマット上で最後以外のときには通常読み出しを継続してもよい。また、K=2のときに、ページフォーマット上で読み出さないL2ECC符号が連続する場合に読み出さないようにし、読み出さないL2ECC符号が連続しない(離散的な配置となる)場合は、通常読み出しを継続してもよい。以上述べた以外の本実施の形態の動作は、第2の実施の形態の動作と同様である。
たとえば、ページ長を10000Byteとし、1ページ内の全クラスタ分のL2ECC符号の合計を100Byteとすると、L2ECC符号を全て読み出さない場合は、全て読み出す場合に比べて約10%の読み出し速度を向上させることができる。
なお、本実施の形態では、第2の実施の形態と同様に、ページ内の最後部にL2ECC符号を連続して配置するようにしたが、第1の実施の形態と同様に、クラスタごとにL2ECC符号を配置するようにしてもよい。その場合は、第1の実施の形態と同様に、各ページの最後のクラスタについてL2ECC符号の読み出しを行うか否かを判定して他のクラスタのL2ECC符号は読み出すようにしてもよいし、また、クラスタごとにL2ECC符号の読み出しを行うか否かを判定してもよい。
また、たとえば、Nが3以上の場合には、クラスタ#0とクラスタ#1の読出しデータ、CRC符号、L2ECC符号の後に、クラスタ#0とクラスタ#1のL2ECC符号を連続して配置し、クラスタ#2とクラスタ#3の読出しデータ、CRC符号、L2ECC符号の後に、クラスタ#2とクラスタ#3のL2ECC符号を連続して配置し、等のように、2つのクラスタごとにL2ECC符号を連続するように配置してもよい。また、ページ内のクラスタを前半と後半の2つにわけ、前半と後半の最後部にそれぞれL2ECC符号を連続して配置するようにしてもよい。これらの例のように、2つ以上のL2ECC符号が連続するように、2箇所以上にL2ECC符号を配置するようなページフォーマットとしてもよい。
このように、本実施の形態では、ページを構成するクラスタの数を任意とし、クラスタを構成するセクタの数を任意とする場合に、ページ内の最後部にL2ECC符号を連続して配置し、ページを構成する全てのクラスタについて、全てのセクタについて誤りが無いまたはL1ECC符号による訂正が可能であった場合に、連続してL2ECC符号を読み飛ばせるようにした。そのため、ページを構成するクラスタの数によらず、従来に比べ読み出し速度を向上させることができる。また、L2ECC符号のビット数が大きく、かつページを構成するクラスタの数が大きいほど、読み出し速度向上の効果が高くなる。
(第4の実施の形態)
図10は、本発明の第4の実施の形態にかかる半導体記憶装置の構成例を示す図である。本実施の形態の半導体記憶装置1aは、第1の実施の形態の半導体記憶装置1のNANDコントローラ10をNANDコントローラ10aに代え、スキップ指示部80を追加し、読み出し判定部17をNANコントローラ10aの外に備える以外は、第1の実施の形態の半導体記憶装置1と同様である。第1の実施の形態と同様の機能を有する構成要素は、第1の実施の形態と同一の符号を付して説明を省略する。
図10は、本発明の第4の実施の形態にかかる半導体記憶装置の構成例を示す図である。本実施の形態の半導体記憶装置1aは、第1の実施の形態の半導体記憶装置1のNANDコントローラ10をNANDコントローラ10aに代え、スキップ指示部80を追加し、読み出し判定部17をNANコントローラ10aの外に備える以外は、第1の実施の形態の半導体記憶装置1と同様である。第1の実施の形態と同様の機能を有する構成要素は、第1の実施の形態と同一の符号を付して説明を省略する。
本実施の形態では、第1の実施の形態では、NANDコントローラ10の内部に備えていた読み出し判定部17をNANDコントローラ10aの外に備える。NANDコントローラ10aは、読み出し判定部17を削除する以外は第1の実施の形態のNANDコントローラ10と同様である。
本実施の形態では、L1ECC符号による誤り訂正後の誤りがほとんど発生しないような状況を想定した構成であり、初期状態では、常に全てのクラスタについてL2ECC符号を読み出さないように設定しておく。スキップ指示部80は、読み出し判定部17の判定結果に基づいて、L2ECC符号の読み飛ばし(スキップ)を行うか否か(OnかOffか)を読み出し制御部16へ指示する。スキップ指示部80は、上述のように、初期状態では、スキップ処理をOnとしておく(L2ECC符号を読み出さない)。
なお、ここでは、本実施の形態では、第2の実施の形態で説明したページフォーマットを前提とし、初期状態では、クラスタ#0、クラスタ#1ともにL2ECC符号を読み出さない設定とする。
図11は、本実施の形態の読み出し判定処理の処理手順の一例を示す図である。まず、スキップ指示部80は、初期状態で読み飛ばし(スキップ)をONとし、読み出し制御部16へ、L2ECC符号を読み出さないよう指示する(ステップS9)。つぎに、第1の実施の形態の図5で示した処理と同様にステップS1〜ステップS4を実施する。ステップS3でCRCの判定結果に誤りが無かった場合(ステップS3 Yes)、CRC/L1デコーダ18は1ページ分の読み出し(この場合は2クラスタ分の読み出し)を終了したか否かを判断し(ステップS10)、1ページ分の読み出しが終了していない場合(ステップS10 No)はステップS1に戻る。
1ページ分の読み出しが終了した場合(ステップS10 Yes)は、読み出し判定部17に読み出しが終了したページの識別情報を通知し、読み出し判定部17は、通知されたページに対応する誤り記録部19の誤り情報を参照して、当該ページ内のクラスタに誤りが無かったか否かを判断する(ステップS6b)。
当該ページ内のクラスタに誤りが無かった場合(ステップS6b Yes)、そのページに対する読み出し判定処理を終了する。当該ページ内のクラスタに誤りがあった場合(ステップS6b No)、読み出し判定部17は、L2ECC符号の読み飛ばし(スキップ)をOFFとするようスキップ指示部80へ指示する(ステップS11)。スキップ指示部80は、L2ECC符号の読み飛ばし(スキップ)をOFFとし、読み出し制御部16に、L2ECC符号を含めた当該ページを読み出す(再読み出しを行う)よう指示する。その後、メモリI/F15は読み出し制御部16の指示に基づいて、L2ECC符号を含めた当該ページの読み出しを開始し、読みだしたデータについてステップS1〜ステップS4およびステップS10を実施する。ただし、このときのステップS10(再読み出し後のステップS10)では、1ページ分読み出しが完了したと判断した場合(ステップS10 Yes)は、読み出し処理を終了する。以上述べた以外の本実施の形態の動作は、実施の形態2と同様である。
再読み出しが行われた場合、CRC/L1デコーダ18での処理後のデータは、第1の実施の形態と同様に、バッファメモリ12からメモリ40へ転送される。そして、L2デコーダ50が、L2ECC符号を用いた誤り訂正処理を実施する。
なお、スキップ指示部80は、ページの読み出しごとに、初期状態に戻り、スキップをONとする。そして、上述の処理により、読み出し判定部17からスキップをOFFとするよう指示を受けた場合に、スキップをOFFとする。このような動作を繰り返すことにより、L1ECC符号を用いた誤り訂正処理結果に誤りが無いページについては、L2ECC符号を読み出さず、L1ECC符号を用いた誤り訂正処理結果に誤りがあるページについては再読み出しによりL2ECC符号を読み出すことができる。
なお、ここでは、初期状態での読み出し(L2ECC符号の読み飛ばしをONとする読み出し)と、スキップをOFFとした後の再読み出しと、で、NANDメモリ20から読み出した後の処理を共通化するため、再読み出しの場合もステップS1〜ステップS4およびステップS10を実施している。これに限らず、再読み出しの際には、CRC/L1デコーダ18による処理を省略して、メモリI/F15経由でバッファメモリ12に書き込まれた再読み出しデータをメモリ40へ転送し、L2デコーダ50がL2ECC処理を行うようにしてもよい。
なお、第1の実施の形態で説明したページフォーマットの場合にも、本実施の形態の動作は適用可能である。第1の実施の形態で説明したページフォーマットを用いる場合には、初期設定ではクラスタ#1についてはL2ECC符号を読み出さないが、クラスタ#0のL2ECC符号については、上述のように読み出し制御処理の所要時間とL2ECC符号の読み出し時間との関係により、読みだすか読みださないかを設定しておく。さらに、第3の実施の形態で述べた、ページ内のクラスタ数を一般化した場合にも適用可能である。この場合、上述のステップS10では1ページ分((N+1)個)のクラスタを読み出したか否かを判断する。
このように、本実施の形態では、初期状態では、L2ECC符号を読み出さないようにし、L1ECC符号による誤り訂正後に誤りが検出されたページを、L2ECC符号を含めて再度読み出すようにした。そのため、読み出し判定部17の判定処理(ステップS6b)を、1ページを読み出している最中に実施する必要がなくなり、処理を簡素化することができる。
1 半導体記憶装置、10 NANDコントローラ、20 NANDメモリ、11 DMAコントローラ、12 バッファメモリ、13 L1/L2エンコーダ、14 書き込み制御部、15 メモリI/F、16 読み出し制御部、17 読み出し判定部、18 CRC/L1デコーダ、19 誤り記録部、80 スキップ指示部、131 CRC生成部、132 CRC符号格納部、133 L1エンコーダ、134 L1ECC符号格納部、135 L2エンコーダ、136,138 L2ECC符号格納部。
Claims (12)
- 不揮発性半導体メモリと、
所定のサイズの書き込みデータと、前記書き込みデータ内の誤りを検出するために生成された誤り検出符号と、前記書き込みデータと該書き込みデータに対応する前記誤り検出符号とで構成される第1の符号化対象データ内の誤りを訂正するために生成された第1の誤り訂正符号と、1つ以上の前記第1の符号化対象データで構成される第2の符号化対象データ内の誤りを訂正するために生成された第2の誤り訂正符号と、を、前記不揮発性半導体メモリに書き込む書き込み処理部と、
前記不揮発性半導体メモリから読みだされた、前記書き込みデータと、前記誤り検出符号と、前記第1の誤り訂正符号と、を用いて前記書き込みデータに対する第1の誤り訂正処理を実施し、第1の誤り訂正処理後に前記書き込みデータに残留する誤りがあるか否かを判定する第1の誤り訂正処理部と、
前記第1の誤り訂正処理部により残留する誤りがあると判定された前記書き込みデータを含む前記第2の符号化対象データと、前記不揮発性半導体メモリから読みだされた前記第2の誤り訂正符号と、を用いて前記書き込みデータに対する第2の誤り訂正処理を実施する第2の誤り訂正処理部と、
前記第2の符号化対象データ内の前記書き込みデータについての前記第1の誤り訂正処理部による判定結果に基づいて、前記第2の符号化対象データに対応する第2の誤り訂正符号を前記不揮発性半導体メモリから読み出すか否かを判定する読み出し判定部と、
前記読み出し判定部の判定結果に基づいて、前記不揮発性半導体メモリからの読み出しを制御する読み出し制御部と、
を備えることを特徴とする半導体記憶装置。 - 前記第1の符号化対象データと該第1の符号化対象データに対応する前記第1の誤り訂正符号とで第1単位データを構成することとし、また、前記第2の符号化対象データと、該第2の符号化対象データを構成する前記第1の符号化対象データに対応する前記第1の誤り訂正符号と、該第2の符号化対象データに対応する前記第2の誤り訂正符号と、で第2単位データを構成することとし、また、1以上の前記2単位データで読み出し単位データを構成することとし、
前記読み出し単位データごとに、所定の順序に基づいて、前記第2の符号化対象データと、該第2の符号化対象データを構成する前記第1の符号化対象データに対応する前記第1の誤り訂正符号と、該第2の符号化対象データに対応する前記第2の誤り訂正符号と、が前記不揮発性半導体メモリへの書き込まれるよう制御する書き込み制御部、
をさらに備え、
前記読み出し制御部は、前記読み出し単位データごとに、前記所定の順序に基づいて前記不揮発性半導体メモリからの読み出しを制御し、
前記第1の誤り訂正処理部は、前記第1単位データごとに、前記第1の誤り訂正処理と前記書き込みデータに残留する誤りがあるか否かの判定と、を行う、
ことを特徴とする請求項1に記載の半導体記憶装置。 - 前記所定の順序を、前記第2単位データごとに、前記第2単位データ内の第1単位データと該第1単位データに対応する前記第1の誤り訂正符号とが連続して読み出され、かつ前記第2の誤り訂正符号の読出しが該第2の誤り訂正符号に対応する前記第2の符号化対象データの読み出しの直後となるような順序とする、
ことを特徴とする請求項2に記載の半導体記憶装置。 - 前記所定の順序を、前記読み出しデータごとに、該読み出しデータ内の前記第1の符号化対象データと、該第1の符号化対象データに対応する前記第1の誤り訂正符号と、が全て読み出された後に、読み出しデータ内の前記第2の誤り訂正符号が読み出されるような順序とする、
ことを特徴とする請求項2に記載の半導体記憶装置。 - 前記読み出し判定部は、前記不揮発性半導体メモリから読み出すか否かの判定対象の前記第2の誤り訂正符号を、前記読み出し単位データ内で最後に読み出される前記第2の誤り訂正符号とする、
ことを特徴とする請求項3に記載の半導体記憶装置。 - 前記読み出し判定部は、前記不揮発性半導体メモリから読み出すか否かの判定対象の前記第2の誤り訂正符号を、前記読み出し単位データ内の全ての前記第2の誤り訂正符号とする、
ことを特徴とする請求項3または4に記載の半導体記憶装置。 - 前記読み出し判定部は、前記読み出し単位データ内の最後以外の位置で読み出される前記第2の誤り訂正符号については、該第2の誤り訂正符号を読み出すための所要時間が、該第2の誤り訂正符号の読み出しの手前で読み出しを停止した後に該第2の誤り訂正符号の直後から読み出しを再開するための処理の所要時間以下となる場合に、該第2の誤り訂正符号を読み出すと判定する、
ことを特徴とする請求項6に記載の半導体記憶装置。 - 前記読み出し単位データごとに、前記読み出し判定部からの指示がない場合に、前記不揮発性半導体メモリに格納されている前記読み出し単位データを前記第2の誤り訂正符号を除いて読み出すよう前記読み出し制御部に指示するスキップ指示部、
をさらに備え、
前記読み出し判定部は、前記第2の誤り訂正符号を除いて読み出された前記読み出し単位データ内の前記書き込みデータに、残留する誤りがあると前記第1の誤り訂正処理部により判定された場合に、該読み出し単位データの前記第2の誤り訂正符号を読み出すと判定して前記スキップ指示部へ前記第2の誤り訂正符号の読み出しを指示し、
前記スキップ部は、前記読み出し判定部からの指示に基づいて、前記第2の誤り訂正符号を読み出すよう指示された読み出し単位データを前記第2の誤り訂正符号を含めて再読出しデータとして前記不揮発性半導体メモリから読み出すよう読み出し制御部に指示し、
前記読み出し制御部は、前記スキップ指示部からの指示に基づいて、前記第2の誤り訂正符号を除いた前記読み出しデータまたは前記再読み出しデータを前記不揮発性半導体メモリから読み出すよう制御し、
前記前記第2の誤り訂正処理部は、前記再読み出しデータを用いて前記書き込みデータに対する前記第2の誤り訂正処理を実施する、
ことを特徴とする請求項1に記載の半導体記憶装置。 - 前記不揮発性半導体メモリを、NAND型フラッシュメモリとすることを特徴とする請求項1〜8のいずれか1つに記載の半導体記憶装置。
- 前記不揮発性半導体メモリから読みだされた、前記書き込みデータと、前記誤り検出符号と、に基づいて前記書き込みデータに誤りがあるか否かを判定する誤り検出処理部、
をさらに備え、
前記読み出し判定部は、さらに前記第1の符号化対象データ内の前記書き込みデータについての前記誤り検出処理部による判定結果に基づいて、前記第1の符号化対象データに対応する第1の誤り訂正符号を前記不揮発性半導体メモリから読み出すか否かを判定する、
ことを特徴とする請求項1〜9のいずれか1つに記載の半導体記憶装置。 - 不揮発性半導体メモリと、
所定のサイズの書き込みデータと、前記書き込みデータ内の誤りを検出するために生成された誤り検出符号と、前記書き込みデータと該書き込みデータに対応する前記誤り検出符号とで構成される符号化対象データ内の誤りを訂正するために生成された誤り訂正符号と、を、前記不揮発性半導体メモリに書き込む書き込み処理部と、
前記不揮発性半導体メモリから読みだされた、前記書き込みデータと、前記誤り検出符号と、に基づいて前記書き込みデータに誤りがあるか否かを判定する誤り検出処理部と、
誤り検出処理部により誤りがあると判定された前記書き込みデータを含む前記符号化対象データと、前記不揮発性半導体メモリから読みだされた前記誤り訂正符号と、を用いて前記書き込みデータに対する誤り訂正処理を実施する誤り訂正処理部と、
前記符号化対象データ内の前記書き込みデータについての前記誤り検出処理部による判定結果に基づいて、前記符号化対象データに対応する誤り訂正符号を前記不揮発性半導体メモリから読み出すか否かを判定する読み出し判定部と、
前記読み出し判定部の判定結果に基づいて、前記不揮発性半導体メモリからの読み出しを制御する読み出し制御部と、
を備えることを特徴とする半導体記憶装置。 - 所定のサイズの書き込みデータと、前記書き込みデータ内の誤りを検出するために生成された誤り検出符号と、前記書き込みデータと該書き込みデータに対応する前記誤り検出符号とで構成される第1の符号化対象データ内の誤りを訂正するために生成された第1の誤り訂正符号と、1つ以上の前記第1の符号化対象データで構成される第2の符号化対象データ内の誤りを訂正するために生成された第2の誤り訂正符号と、を、不揮発性半導体メモリに書き込むデータ書き込みステップと、
前記不揮発性半導体メモリから読みだされた、前記書き込みデータと、前記誤り検出符号と、前記第1の誤り訂正符号と、を用いて前記書き込みデータに対する第1の誤り訂正処理を実施し、第1の誤り訂正処理後に前記書き込みデータに残留する誤りがあるか否かを判定する第1の誤り訂正処理ステップと、
前記第1の誤り訂正処理ステップで残留する誤りがあると判定された前記書き込みデータを含む前記第2の符号化対象データと、前記不揮発性半導体メモリから読みだされた前記第2の誤り訂正符号と、を用いて前記書き込みデータに対する第2の誤り訂正処理を実施する第2の誤り訂正処理ステップと、
前記第2の符号化対象データ内の前記書き込みデータについての前記第1の誤り訂正処理ステップでの判定結果に基づいて、前記第2の符号化対象データに対応する第2の誤り訂正符号を前記不揮発性半導体メモリから読み出すか否かを判定する読み出し判定ステップと、
前記読み出し判定ステップの判定結果に基づいて、前記不揮発性半導体メモリからの読み出しを制御する読み出し制御ステップと、
を含むことを特徴とする半導体記憶装置の制御方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010066682A JP2011198272A (ja) | 2010-03-23 | 2010-03-23 | 半導体記憶装置および半導体記憶装置の制御方法 |
US12/887,875 US20110239081A1 (en) | 2010-03-23 | 2010-09-22 | Semiconductor storage device and method for controlling a semiconductor storage device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010066682A JP2011198272A (ja) | 2010-03-23 | 2010-03-23 | 半導体記憶装置および半導体記憶装置の制御方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2011198272A true JP2011198272A (ja) | 2011-10-06 |
Family
ID=44657754
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010066682A Pending JP2011198272A (ja) | 2010-03-23 | 2010-03-23 | 半導体記憶装置および半導体記憶装置の制御方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20110239081A1 (ja) |
JP (1) | JP2011198272A (ja) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013161447A (ja) * | 2012-02-08 | 2013-08-19 | Toshiba Corp | コントローラ、データ記憶装置及びプログラム |
KR20140062770A (ko) * | 2012-11-15 | 2014-05-26 | 삼성전자주식회사 | 새 패러티를 생성하기 위한 에러 정정 코드 인코더를 포함하는 메모리 컨트롤러와 메모리 시스템 |
KR20140062771A (ko) * | 2012-11-15 | 2014-05-26 | 삼성전자주식회사 | 메모리 장치에 저장된 부분 데이터를 변경하는 메모리 컨트롤러 및 그것의 부분 데이터 변경 방법 |
JP2014099174A (ja) * | 2012-11-15 | 2014-05-29 | Samsung Electronics Co Ltd | メモリ装置に保存された部分データを変更するメモリコントローラ及びその部分データを変更する方法 |
US20160253237A1 (en) * | 2012-03-06 | 2016-09-01 | Micron Technology, Inc. | Apparatuses and methods including error correction code organization |
JPWO2015029230A1 (ja) * | 2013-08-30 | 2017-03-02 | 株式会社日立製作所 | 記憶装置及びデータ制御方法 |
JP2017055153A (ja) * | 2015-09-07 | 2017-03-16 | 富士通株式会社 | 受信装置、受信制御方法および受信制御プログラム |
US10360100B2 (en) | 2015-09-16 | 2019-07-23 | Kabushiki Kaisha Toshiba | Cache memory system and processor system |
JP2020042512A (ja) * | 2018-09-10 | 2020-03-19 | キオクシア株式会社 | メモリシステム |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5651457B2 (ja) | 2010-12-15 | 2015-01-14 | 株式会社東芝 | 半導体記憶装置 |
JP2013029882A (ja) | 2011-07-26 | 2013-02-07 | Toshiba Corp | メモリコントローラ、半導体記憶装置および復号方法 |
US8640013B2 (en) | 2011-09-22 | 2014-01-28 | Kabushiki Kaisha Toshiba | Storage device |
US20130318418A1 (en) * | 2012-05-22 | 2013-11-28 | Politecncio di Milano | Adaptive error correction for phase change memory |
KR101979734B1 (ko) | 2012-08-07 | 2019-05-17 | 삼성전자 주식회사 | 메모리 장치의 독출 전압 제어 방법 및 이를 이용한 데이터 독출 방법 |
US9577673B2 (en) | 2012-11-08 | 2017-02-21 | Micron Technology, Inc. | Error correction methods and apparatuses using first and second decoders |
US10007573B2 (en) * | 2015-04-27 | 2018-06-26 | Invensas Corporation | Preferred state encoding in non-volatile memories |
US9946596B2 (en) | 2016-01-29 | 2018-04-17 | Toshiba Memory Corporation | Global error recovery system |
KR20180127707A (ko) * | 2017-05-22 | 2018-11-30 | 에스케이하이닉스 주식회사 | 메모리 모듈 및 이의 동작 방법 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008152728A1 (ja) * | 2007-06-15 | 2008-12-18 | Fujitsu Limited | エラー訂正方法および演算器 |
JP2009059422A (ja) * | 2007-08-31 | 2009-03-19 | Toshiba Corp | 半導体記憶装置およびその制御方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4538034B2 (ja) * | 2007-09-26 | 2010-09-08 | 株式会社東芝 | 半導体記憶装置、及びその制御方法 |
-
2010
- 2010-03-23 JP JP2010066682A patent/JP2011198272A/ja active Pending
- 2010-09-22 US US12/887,875 patent/US20110239081A1/en not_active Abandoned
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008152728A1 (ja) * | 2007-06-15 | 2008-12-18 | Fujitsu Limited | エラー訂正方法および演算器 |
JP2009059422A (ja) * | 2007-08-31 | 2009-03-19 | Toshiba Corp | 半導体記憶装置およびその制御方法 |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013161447A (ja) * | 2012-02-08 | 2013-08-19 | Toshiba Corp | コントローラ、データ記憶装置及びプログラム |
US10572187B2 (en) | 2012-02-08 | 2020-02-25 | Toshiba Memory Corporation | Controller, data storage device, and computer program product |
US20160253237A1 (en) * | 2012-03-06 | 2016-09-01 | Micron Technology, Inc. | Apparatuses and methods including error correction code organization |
JP2016219092A (ja) * | 2012-03-06 | 2016-12-22 | マイクロン テクノロジー, インク. | 誤り訂正符号の編成を含む装置および方法 |
US9983928B2 (en) | 2012-03-06 | 2018-05-29 | Micron Technology, Inc. | Apparatuses and methods including error correction code organization |
KR102002044B1 (ko) * | 2012-11-15 | 2019-10-01 | 삼성전자주식회사 | 새 패러티를 생성하기 위한 에러 정정 코드 인코더를 포함하는 메모리 컨트롤러와 메모리 시스템 |
KR20140062770A (ko) * | 2012-11-15 | 2014-05-26 | 삼성전자주식회사 | 새 패러티를 생성하기 위한 에러 정정 코드 인코더를 포함하는 메모리 컨트롤러와 메모리 시스템 |
KR20140062771A (ko) * | 2012-11-15 | 2014-05-26 | 삼성전자주식회사 | 메모리 장치에 저장된 부분 데이터를 변경하는 메모리 컨트롤러 및 그것의 부분 데이터 변경 방법 |
JP2014099174A (ja) * | 2012-11-15 | 2014-05-29 | Samsung Electronics Co Ltd | メモリ装置に保存された部分データを変更するメモリコントローラ及びその部分データを変更する方法 |
KR102041874B1 (ko) * | 2012-11-15 | 2019-11-07 | 삼성전자주식회사 | 메모리 장치에 저장된 부분 데이터를 변경하는 메모리 컨트롤러 및 그것의 부분 데이터 변경 방법 |
JPWO2015029230A1 (ja) * | 2013-08-30 | 2017-03-02 | 株式会社日立製作所 | 記憶装置及びデータ制御方法 |
JP2017055153A (ja) * | 2015-09-07 | 2017-03-16 | 富士通株式会社 | 受信装置、受信制御方法および受信制御プログラム |
US10360100B2 (en) | 2015-09-16 | 2019-07-23 | Kabushiki Kaisha Toshiba | Cache memory system and processor system |
JP2020042512A (ja) * | 2018-09-10 | 2020-03-19 | キオクシア株式会社 | メモリシステム |
JP7066581B2 (ja) | 2018-09-10 | 2022-05-13 | キオクシア株式会社 | メモリシステム |
Also Published As
Publication number | Publication date |
---|---|
US20110239081A1 (en) | 2011-09-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2011198272A (ja) | 半導体記憶装置および半導体記憶装置の制御方法 | |
JP5540969B2 (ja) | 不揮発性メモリ装置、メモリコントローラ、およびメモリシステム | |
KR101861247B1 (ko) | 메모리 컨트롤러, 이의 데이터 처리 방법, 및 이를 포함하는 메모리 시스템 | |
JP3975245B2 (ja) | 記録再生装置および半導体メモリ | |
US8650458B2 (en) | Methods of encoding/decoding for error correction code utilizing interdependent portions of codewords and related circuits | |
US9189323B2 (en) | Semiconductor storage device and method of controlling the same | |
JP2015507409A (ja) | 代数符号を用いるマルチフェーズecc符号化 | |
US20100241932A1 (en) | Error detector/corrector, memory controller, and semiconductor memory device | |
WO2011127866A2 (zh) | 数据处理方法、装置及系统 | |
US20150067439A1 (en) | Memory controller | |
JP2015018451A (ja) | メモリコントローラ、記憶装置およびメモリ制御方法 | |
KR20120137354A (ko) | 슬라이딩-윈도우 에러 정정 | |
JP2012137994A (ja) | メモリシステムおよびその制御方法 | |
US10848184B2 (en) | Method for controlling storage device with aid of error correction and associated apparatus | |
TWI640865B (zh) | 解碼方法、記憶體儲存裝置及記憶體控制電路單元 | |
US9389957B2 (en) | Memory controller, memory system, and memory control method | |
JP2009301194A (ja) | 半導体記憶装置の制御システム | |
JP2011060217A (ja) | データ蓄積装置及びデータ書込み/読出し方法 | |
US10514980B2 (en) | Encoding method and memory storage apparatus using the same | |
US9164831B2 (en) | Memory controller, semiconductor storage device, and decoding method | |
TW202338851A (zh) | 異常斷電恢復方法、記憶體控制電路單元以及記憶體儲存裝置 | |
US9015560B1 (en) | Method and apparatus for ceasing access to a portion of a flash memory when less than a number of errors correctable by an error correction code exists | |
CN111580741B (zh) | 数据写入方法、存储器控制电路单元与存储器存储装置 | |
JP5330428B2 (ja) | データ記憶装置及び誤り検出訂正方法 | |
TW202006735A (zh) | 編碼方法及使用所述編碼方法的記憶體儲存裝置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20120905 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20130906 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20130917 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20140204 |