JP2012137994A - メモリシステムおよびその制御方法 - Google Patents

メモリシステムおよびその制御方法 Download PDF

Info

Publication number
JP2012137994A
JP2012137994A JP2010290778A JP2010290778A JP2012137994A JP 2012137994 A JP2012137994 A JP 2012137994A JP 2010290778 A JP2010290778 A JP 2010290778A JP 2010290778 A JP2010290778 A JP 2010290778A JP 2012137994 A JP2012137994 A JP 2012137994A
Authority
JP
Japan
Prior art keywords
error correction
data
unit
stage
memory system
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2010290778A
Other languages
English (en)
Inventor
Yasushi Nagatomi
靖 長冨
Daizaburo Takashima
大三郎 高島
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 JP2010290778A priority Critical patent/JP2012137994A/ja
Priority to US13/238,685 priority patent/US8732553B2/en
Publication of JP2012137994A publication Critical patent/JP2012137994A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/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
    • 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
    • H03M13/2927Decoding strategies
    • 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/2945Coding, 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 at least three error correction 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/65Purpose and implementation aspects
    • H03M13/6561Parallelized implementations
    • 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/09Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
    • 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/11Error 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/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] 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/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/152Bose-Chaudhuri-Hocquenghem [BCH] 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/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/19Single error correction without using particular properties of the cyclic codes, e.g. Hamming codes, extended or generalised Hamming codes

Abstract

【課題】読み出しの処理時間を短縮することができるメモリシステムを得ること。
【解決手段】データと、2段階以上の誤り訂正処理により段階毎に定義された所定のサイズの前記データである単位データ毎に生成された各段階の誤り訂正符号と、を記憶する半導体記憶部、を備える。そして、半導体記憶部から読み出されたデータと当該データに対応する前記各段階の誤り訂正符号とに基づいて誤り訂正処理を行う誤り訂正処理部と、誤り訂正処理部による誤り訂正処理により誤り訂正が不可であったか否かを示す段階毎の誤り訂正履歴情報を前記単位データ毎に記憶する誤り訂正履歴情報記憶部と、を備える。さらに、読み出し対象の単位データに対応する前記誤り訂正履歴情報が訂正不可である段階の誤り訂正処理を実施せずに次段階の誤り訂正処理を実施するよう誤り訂正処理部を制御する。
【選択図】図1

Description

本発明の実施形態は、メモリシステムおよびその制御方法に関する。
現在、半導体メモリは大型コンピュータの主記憶から、パーソナルコンピュータ、家電製品、携帯電話等、至る所で利用されている。特に注目を浴びているのはフラッシュメモリである。フラッシュメモリ(フラッシュEEPROM(Electrically Erasable and Programmable Read Only Memory)型の不揮発性メモリ)は電源を切ってもデータが消えないこと、高集積化に適した構造になっていること、などの特徴により、携帯電話やデジタルカメラ等、多くの情報機器に利用されている。
フラッシュメモリは主にNOR型とNAND型が有る。NOR型フラッシュメモリは、高速Readが可能であり、Read可能回数が1013回程度有り携帯機器の命令コード記憶として使われているが、Writeの実効バンド幅が小さく、File記録には適していない。
一方、NAND型フラッシュメモリは、NOR型フラッシュメモリに比べて高集積化が可能で、Readについてはアクセス時間が25μs程度と遅いがBurst Readが可能で実効バンド幅が高い。WriteについてはProgram(書き込み)時間が200μs程度、Erase(消去)時間が1ms程度と遅いが一度にProgram,Eraseできるビット数が多いため、一度に多数のビットをPage単位でProgramすることができる。このように、NAND型フラッシュメモリは、高集積化が可能で実効バンド幅が高いメモリであり、メモリカード、USB(Universal Serial Bus)メモリ、携帯電話、携帯音楽プレーヤーのメモリ等で用いられており、最近ではハードディスクの置き換えとしてSSD(Solid State Drive)も販売されている。
特開2009−211209号公報 特開2008−300020号公報
読み出しの処理時間を短縮することが可能なメモリシステムおよびその制御方法を提供する。
本願発明の一態様によれば、データと、2段階以上の誤り訂正処理により段階毎に定義された所定のサイズの前記データである単位データ毎に生成された各段階の誤り訂正符号と、を記憶する半導体記憶部、を備える。そして、半導体記憶部から読み出されたデータと当該データに対応する前記各段階の誤り訂正符号とに基づいて誤り訂正処理を行う誤り訂正処理部と、誤り訂正処理部による誤り訂正処理により誤り訂正が不可であったか否かを示す段階毎の誤り訂正履歴情報を前記単位データ毎に記憶する誤り訂正履歴情報記憶部と、を備える。さらに、読み出し対象の単位データに対応する前記誤り訂正履歴情報が訂正不可である段階の誤り訂正処理を実施せずに次段階の誤り訂正処理を実施するよう誤り訂正処理部を制御する。
図1は、第1の実施の形態にかかるメモリシステムの機能構成例を示す図である。 図2は、2段階のECC処理を行う場合のデータ構成例を示す図である。 図3は、第1の実施の形態の誤り訂正履歴管理テーブルの構成例を示す図である。 図4は、第1の実施の形態の読み出し処理手順の一例を示すフローチャートである。 図5は、Nが2以上の場合の読み出し処理手順の一例を示すフローチャートである。 図6は、5段階ECC処理を実施する場合の誤り訂正履歴管理テーブルの構成例を示す図である。 図7は、第2の実施の形態の誤り訂正履歴管理テーブルの構成例を示す図である。 図8は、第2の実施の形態の読み出し処理手順の一例を示すフローチャートである。 図9は、第2の実施の形態の誤り訂正履歴管理テーブルの構成例を示す図である。
NAND型フラッシュメモリでハードディスクの置き換えを考える際の問題の1つとして信頼性(Program/Erase,Read回数制限)の問題がある。
まず、Program/Erase回数について説明する。フラッシュメモリのWrite(Program/Erase)は基板−ゲート間に高電圧をかけることにより、フローティングゲートに電子を注入/放出させる。なお、2値NANDの場合は、Programではデータ“1”→“0”とし、Eraseではデータを“0”→“1”とすることになる。これを何回も行うとフローティングゲート周りの酸化膜が劣化し、劣化したまま長時間放置しているとフローティングゲートに注入した電子が抜けていき、書き込まれたデータが破壊されてしまう。2値NANDの場合には、データが“0”→“1”と変化する。すなわち、Write回数が増えると、リテンション特性が劣化する。
現在のNAND型フラッシュメモリの書き込み回数は105回程度と他の不揮発メモリと比べて非常に少なく、ハードディスクとして用いた場合、Program/Erase回数の制限を越えることによりデータが破壊されシステムに支障をきたす可能性がある。Program/Erase回数制限への対策としては、Block毎にErase回数をカウントし、あるしきい値を超えたErase回数の多いBlockと少ないBlockとの物理アドレス変換を行うことで、Program/Erase回数の平均化をはかるウェアレベリングが実施されている。
次に、NAND型フラッシュメモリのReadについて説明する。NAND型フラッシュメモリでは、各々のビット線に対して、選択セルのゲートには0V、非選択セルのゲートと選択ゲートには高電圧(Vread)をかけ、選択セルが導通しているかどうかで、“1”/“0”を判断する。この読み出し操作が繰り返されると、非選択セル(Block単位で見ると、Read対象以外の全Page)に高電圧が繰り返しかかることとなり、電子が酸化膜を通過してフローティングゲートに入り込み、セルのしきい値を変化させ、データを破壊してしまう。2値NANDの場合、データが“1”→“0”に変化する。これをリードディスターブという。
さらに、使用していくにつれてProgram/Eraseによる酸化膜の劣化も加わり、リードディスターブが起こる頻度は高くなってくる。現在、NAND型フラッシュメモリのRead回数は104回程度であるが、NAND型フラッシュメモリは1セルで2ビット以上の情報を記憶する多値化が進んでおり、しきい値の制御が厳しくなっていく方向にあるため、今後リードディスターブの影響がさらに深刻な問題になってくると考えられる。このリードディスターブを防ぐためには、Read回数の多いBlockを適宜再書き込みし、しきい値を元の状態に戻す(リフレッシュする)必要がある。
以上で述べたWrite/Readが繰り返されることに伴う影響からデータを守るためにNAND型フラッシュメモリを用いたメモリシステムでは誤り訂正(ECC:Error Check and Correct)技術を用いている。データの誤り数はメモリセルの疲労度に応じて多くなる。そのため最近では、書き込み/読み出しの初期には訂正能力の低いECCを実行し、次第に訂正能力の高いECCを実行していく段階的ECCを実装したシステムが提案されている。
一例として、2段階ECC処理を実施する例を説明する。1段階目のECC処理(L1ECC処理)では、NAND型フラッシュメモリへのデータの書き込み時に、書き込む最小データ単位ごとに誤り検知符号であるCRC(Cyclic Redundancy Check)符号と1段目(L1)のECC符号とを付加する。L1ECC符号としては、高速に訂正処理が実施できる符号を用い、例えばハミング符号や少数ビット訂正可能なBCH符号等を用いる。そして、2段階目のECC処理(L2ECC処理)では、1組以上の最小データ単位とCRC符号とに対して、L1ECC符号より訂正能力が高いL2ECC符号を付加する。L2ECC符号としては、例えば、多ビット訂正可能なBCH符号やLDPC(Low Density Parity Check)符号等を用いる。
そして、読み出し時に、誤りの少ない場合(L1ECC符号の訂正能力範囲内の場合)には高速に訂正処理が可能なL1ECC符号を用いて訂正を行ない、L2ECC符号を用いた訂正処理は実施しない。そして、L1ECC符号により訂正が不可であった場合にL2ECC符号を用いた訂正処理を行う。このような段階的ECCを実施することにより、誤りの少ない場合には高速な処理を実施し、誤りが多い場合には訂正能力の高い処理を行うことができる。
段階的ECC処理では、読み出し時に、まずデータバッファにデータを読み出すと同時にL1ECCシンドロームを生成する。その後L1ECC符号を用いた訂正処理を行い、L1訂正処理により正しく訂正されている(L1訂正が可であった)か否かを、CRC符号を用いてチェックする。訂正可であった場合には、訂正後のデータを転送し、訂正不可の場合には、訂正処理前のデータを、L2ECC処理を行う処理部へ転送し、L2ECC処理へ移る。過去にL1訂正不可であったデータを再度読み出す場合にも、毎回上述のようなL1訂正処理を実施するため、処理時間が長いという問題があった。
以下に添付図面を参照して、実施形態にかかるメモリシステムおよびその制御方法を詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
(第1の実施の形態)
図1は、第1の実施の形態にかかるメモリシステムの機能構成例を示す図である。図1に示すように、本実施の形態のメモリシステム1は、メモリコントローラ2と、NANDフラッシュメモリ(半導体記憶部)3と、RAM(Random Access Memory:一時記憶部)4と、で構成される。また、RAM4には、誤り訂正履歴管理テーブル41が格納されている。
メモリコントローラ2は、外部インターフェイス(I/F)21と、RAMコントローラ(RAMC)22と、CPU(Central Processing Unit)23と、L2ECCデコーダ24と、NANDコントローラ(NANDC)25と、で構成される。
NANDコントローラ25は、DMAC(Direct Memory Access Controller)51と、制御レジスタ部52と、NANDフラッシュメモリインターフェイス(NAND I/F)53と、L1ECCシンドローム生成器54と、データバッファ55と、L1ECCデコーダ56と、CRCチェッカー57と、データバッファ58と、セレクタ59と、L1/L2ECCエンコーダ60と、で構成される。
本実施の形態のメモリシステム1は、PC(Personal Computer)等のホスト(図示せず)からの書き込み要求に基づいてホストから転送されるデータをNANDフラッシュメモリ3へ書き込み、ホストから読出し要求のあった場合に、NANDフラッシュメモリ3に書き込まれたデータを読み出して、ホストへ転送する。
また、本実施の形態のメモリシステム1は、2段階のECC処理を実施する。図2は、2段階のECC処理を行う場合のデータ構成例を示す図である。図2の例では、書き込み最小単位データ(ここでは512バイトとする)に対し、L1ECC処理でCRC符号およびL1ECC符号を生成して付加する。512バイトの書き込みデータと対応するCRC符号およびL1ECC符号でL1ECC単位データを構成する。そして、L2ECC処理では、L1ECC単位データのうちL1ECC符号を除いたデータ(書き込み最小単位データと対応するCRC符号をL1CRCデータとするとき、N(Nは1以上の整数)個のL1CRCデータに対してL2ECC処理を行いL2ECC符号を生成する。そして、N個のL1ECC単位データと対応するL2ECC符号とがNANDフラッシュメモリ3へ格納される。
なお、図2は一例であり、書き込み最小単位データは、512バイトに限らず何バイトとしてもよい。また、図2では一例としてN=8としているがNは1以上であればいくつとしてもよい。
まず、本実施の形態の書き込み動作について説明する。CPU23は、I/F21経由でホストから書き込み要求を受け取ると、RAMC22に対してI/F21経由でホストから転送される書き込み対象のデータをRAM4へ一時的に格納するよう指示する。これにより、書き込み対象のデータはRAM4へ一時的に格納される。
CPU23は、DMAC51に対して書き込み用にRAM4からデータを読み出すよう指示し、DMAC51は、RAM4から読み出したデータをL1/L2ECCエンコーダ60へ出力する。本実施の形態では、上述のとおり2段階のECC処理を実施する。L1/L2ECCエンコーダ60は、L1ECC処理として、まず、書き込み最小単位データごとにCRC符号を生成し、N個のL1CRCデータに対してL2ECC処理を実施し、L2ECC符号を生成する。そして、N個のL1ECC単位データと対応するL2ECC符号とがNAND I/F53を経由してNANDフラッシュメモリ3へ書き込まれる。
L1ECC符号としては、例えばハミング符号や少数ビット訂正可能なBCH符号等の高速に訂正処理が可能な符号を用いることが望ましい。また、L2ECC符号としては、例えば、多ヒット訂正可能なBCH符号やLDPC符号等のようにL1ECC符号より訂正能力が高い符号を用いることが望ましい。
次に、本実施の形態の読み出し動作について説明する。CPU23は、I/F21経由でホストから読み出し要求を受け取ると、読み出し対象のデータに対応するデータのNANDフラッシュメモリ3上のアドレスを制御レジスタ部52へ設定する。この際、CPU23は、RAM4内の誤り訂正履歴管理テーブル41を参照し、読み出し対象のデータに対応する誤り訂正履歴情報についても同時に設定する。これにより、NANDC25では、NANDフラッシュメモリ3からのデータの読み出し処理が開始される。
なお、本実施の形態では、L1ECC処理を実施するためのL1ECCシンドローム生成器54、データバッファ55、L1ECCデコーダ56、CRCチェッカー57、データバッファ58およびセレクタ59が全体としてL1ECC処理を実施するL1ECC処理部として機能する。このL1ECC処理部と、L2ECC処理を実施するL2ECCデコーダ24と、は2段階のECC処理を行う誤り訂正処理部を構成する。2段階のECC処理を行う誤り訂正処理部の構成は図1の例に限らず、同等の機能を有する構成であればどのような構成としてもよい。
図3は、本実施の形態の誤り訂正履歴管理テーブル41の構成例を示す図である。図3の例では、誤り訂正履歴管理テーブル41は、L1ECC単位データを1単位とするアドレスと、当該L1ECC単位データに対して過去にL1ECC処理でL1ECC訂正不可であったか否かを示すフラグであるL1ECC結果(誤り訂正履歴情報)と、で構成される。ここでは、誤り訂正履歴情報として、L1ECC結果を示すフラグを用いる例を示している。L1ECC結果のフラグは1ビットの値とし、過去にL1ECC処理でL1ECC訂正不可であった場合に“1”が設定され、それ以外の場合(過去にL1ECC処理でL1ECC訂正可またはエラー無しでであった場合、または過去に読み出し処理がされていない場合)は“0”が設定される。なお、L1ECC結果のフラグの初期値は“0”とし、書き戻しが行なわれた場合にはフラグを初期値の“0”に戻す。但し、後天性のカラム不良などデータリフレッシュによらず誤りが生じる場合もあるので、そのような場合は“0”にリセットしなくてもよい。
図4は、本実施の形態の読み出し処理手順の一例を示すフローチャートである。図4は、L2単位データが1つのL1単位データで構成される場合(N=1の場合)の、L1単位データごとの読み出し処理手順を示している。
制御レジスタ部52は、読み出し対象として設定されたアドレスに対応するL1単位データについての誤り訂正履歴情報を参照し、過去にL1ECC訂正不可であった(すなわちL1ECC結果のフラグが“1”)か否かを判断する(ステップS1)。過去にL1ECC訂正不可でなかった場合は、制御レジスタ部52は、NAND I/F53に対して、NANDフラッシュメモリ3から当該L1単位データをデータバッファ55へ読み出すよう指示し、同時に読み出したデータをL1ECCシンドローム生成器54へ入力するよう指示する(ステップS2)。L1ECCシンドローム生成器54は、読み出されたL1単位データが入力されるとシンドローム計算を実施する。
次に、L1ECCシンドローム生成器54は、シンドローム計算により入力されたL1単位データに誤りがない(シンドローム=0)か否かを判断する(ステップS3)。誤りがある場合(ステップS3 No)、L1ECCシンドローム生成部54は、L1ECCデコーダ56へデータを渡し、L1ECCデコーダ56はデータに対して誤り訂正処理を実施せずにCRCチェッカー57へ出力し、CRCチェッカー57が、入力されたデータに対してCRC符号を用いてCRC検知を実施するとともに入力されたデータ(誤り訂正処理がされていないL1単位データ)をデータバッファ58へ転送する(ステップS4)。
そして、CRCチェッカー57はCRC検知結果がエラー無しであったか否かを判断する(ステップS5)。エラー無し(ステップS5 Yes)の場合、SRCチェッカー57は、データバッファ58のデータを読み出すようセレクタ59へ指示し、セレクタ59は指示に基づいてデータバッファ58から誤り訂正後のデータを読み出してDAMC51へ渡し、DMAC51がセレクタ59から出力されたデータをRAMC22経由でRAM4へ転送する(ステップS6)。RAMに転送されたデータは、CPU23の指示により、外部のホスト等でI/F21経由で転送される(ステップS7)。
また、ステップS3でシンドローム計算によりL1単位データに誤りがないと判断した(ステップS3 Yes)場合、L1ECCデコーダ56へ当該L1単位データを入力し、L1ECCデコーダ56は入力されたL1単位データに対してL1ECC符号を用いた誤り訂正処理を行い、CRCチェッカー57が、誤り訂正処理後のデータに対してCRC符号を用いてCRC検知を実施するとともに誤り訂正処理後のデータをデータバッファ58へ格納し(ステップS8)、ステップS5へ進む。
また、ステップS5でCRC検知結果がエラー有りであった(ステップS5 No)場合、CRCチェッカー57は、データバッファ55のデータを読み出すようセレクタ59へ指示し、セレクタ59は指示に基づいてデータバッファ55から誤り訂正前のデータを読み出してDAMC51へ渡し、DMAC51がセレクタ59から出力されたデータをRAMC22経由でRAM4へ転送する(ステップS9)。そして、CRCチェッカー57のL1ECC処理による誤り訂正が不可であった結果を受けて、NANDC25がCPU23へその旨を通知し、CPU23は、誤り訂正履歴管理テーブル41の当該L2単位データに対応するL1ECC結果のフラグを“1”に設定する(ステップS10)。そして、CPU23は、L2ECCデコーダ24へ当該L1単位データを含むL2単位データに対するL2ECC処理の開始を指示する(ステップS11)。
L2ECCデコーダ24は、当該L1単位データを含むL2単位データをRAM4から読み出してL2ECC処理を実施し、実施後にL1CRC符号を用いてCRC検知を行い、CRC検知結果がエラー無しであったか否かを判断する(ステップS12)。CRC検知結果がエラー無しであった(ステップS12 Yes)場合は、L2ECC処理後のデータをRAM4へ一旦格納した後に、外部へ転送し(ステップS13)、処理を終了する。CRC検知結果がエラー有りであった(ステップS12 No)場合は、読み出しエラーとする(ステップS14)。
一方、ステップS1で読み出し対象として設定されたアドレスに対応するL1単位データについての誤り訂正履歴情報を参照し、過去にL1ECC訂正不可であった(すなわちL1ECC結果のフラグが“1”)と判断した(ステップS1 Yes)場合、制御レジスタ部52は、NAND I/F53に対して、NANDフラッシュメモリ3から当該L1単位データを読み出しDMAC51へ入力するよう指示するとともにL2ECCデコーダ24へ当該L1単位データを含むL2単位データのL2ECC処理の開始を指示し、DMAC51はNAND I/F53から入力されたデータをRAM4へ転送し(ステップS15)、ステップS11へ進む。
以上のように、本実施の形態では、過去にL1ECC訂正不可であったL1単位データに対しては、L1ECCデコード(L1ECC処理)を実施せずに、直ちにL2ECC処理へ移行する。これにより、読み出し処理の高速化を実現することができる。なお、上記の例では、誤りの無いデータおよびL1ECCにより誤りを訂正したデータを外部へ転送する際に、一旦RAM4へ格納しているが、RAM4へ格納せず、直接外部へ転送してもよい。また、ステップS9、ステップS15で、DMAC51は直接L2ECCデコーダ24へデータを出力してもよい。
次に、L2単位データが2つ以上のL1単位データで構成される場合(Nが2以上の場合)の処理を説明する。CPU23は、N=1と同様に、I/F21経由でホストから読み出し要求を受け取ると、読み出し対象のデータに対応するデータのNANDフラッシュメモリ3上のアドレスを制御レジスタ部52へ設定し、誤り訂正履歴管理テーブル41を参照して読み出し対象のデータに対応する誤り訂正履歴情報についても制御レジスタ部52へ設定する。この際、CPU23は、読み出し対象のL1単位データを含むL2単位データを構成する他のL1単位データについてもそのNANDフラッシュメモリ3上のアドレスと誤り訂正履歴情報を制御レジスタ部52へ設定しておく。
例えば、N=2とし、アドレス“0000”と“0001”のL1単位データでL2単位データ#1が構成され、アドレス“0002”と“0003”のL1単位データでL2単位データ#2が構成されているとする。この場合に、アドレス“0000”〜“0002”の3つのL1単位データを読み出すとすると、CPU23は、アドレス“0000”〜“0002”のL1単位データだけでなく、読み出し対象でないアドレス“0003”のL1単位データについても制御レジスタ部52へアドレスと誤り訂正履歴情報を設定しておく。ただし、アドレス“0003”のL1単位データについてはL2処理を行う場合に読み出すデータであるため、読み出し対象のアドレス“0000”〜“0002”の3つのL1単位データとは区別して設定しておく。例えば、読み出し対象のL1単位データとL2処理用のL1単位データとは、別のテーブルとして制御レジスタ部52へ設定しておき、また、読み出し対象のL1単位データとL2処理用のL1単位データとを対応づけて設定しておく。
図5は、Nが2以上の場合の読み出し処理手順の一例を示すフローチャートである。図5に例示した処理を読み出し対象のL1単位データごとに実施する。制御レジスタ部52は、まず、読み出し対象として設定されたアドレスに対応するL1単位データ(または後述のL2用読み出し対象のL1単位データ)についての誤り訂正履歴情報を参照し、過去にL1ECC訂正不可であった(すなわちL1ECC結果のフラグが“1”)か否かを判断する(ステップS21)。
過去にL1ECC訂正不可でなかった(ステップS21 No)場合は、図4と同様のステップS2〜ステップS10を実施する。ただし、図5の場合は、ステップS6の後、CPU23(または制御レジスタ部52)が、L2ECC処理が開始済みであるか(処理対象のL1単位データを含むL2単位データ内にL2処理対象となったL1単位データが無い)否かを判断する(ステップS22)。そして、L2ECC処理が開始済みで無い(ステップS22 Yes)場合は、ステップS7へ進む。
一方、過去にL1ECC訂正不可であった(ステップS21 Yes)場合は、制御レジスタ部52は、NANDフラッシュメモリ3から当該L1単位データを読み出しDMAC51へ入力するよう指示するとともにL2ECCデコーダ24へ当該L1単位データを含むL2単位データのL2ECC処理の開始を指示し、DMAC51はNAND I/F53から入力されたデータをRAM4へ転送する(ステップS23)。または、制御レジスタ部52がCPU23経由でL2ECCデコーダ24へ当該L1単位データ(読み出し対象のL1単位データ)を含むL2単位データのL2ECC処理の開始を指示するようにしてもよい。
次に、L2ECCデコーダ24は、L2ECC処理対象のL2単位データがそろっているか(RAM4上に存在するか)否かを判断する(ステップS24)。L2ECC処理対象のL2単位データがそろっている(ステップS24 Yes)場合は、図4と同様にステップS11〜ステップS14を実施する。
L2ECC処理対象のL2単位データがそろっていない(ステップS24 No)場合は、当該L1単位データ(読み出し処理中のL1単位データ)を含むL2単位データは全て読み出し対象であるか否かを判断する(ステップS25)。読み出し処理中のL1単位データを含むL2単位データは全て読み出し対象である(ステップS25 Yes)場合、他のL1単位データが読み出し処理を実施され、L2ECC処理へ送られるまで待機する(ステップS26)。
ステップS25で読み出し処理中のL1単位データを含むL2単位データの一部が読み出し対象でない(ステップS25 No)場合、処理対象のL2単位データ内の読み出し対象のL1単位データ以外の読み出し済みでないL1単位データをL2用読み出しデータとしてステップS21へ戻る。
また、ステップS22で、L2ECC処理が開始済みで有ると判断した場合(ステップS22 No)は、ステップS24へ進む。
その後、ステップS26で待機している場合には、次のL1単位データについて同様に図5に示した処理が実施され、ステップS22を経由してステップS24が実施され、L2単位データがそろった時点でL2ECC処理が実施される。
なお、図5の例でも図4の例で説明したように、誤りの無いデータおよびL1ECCにより誤りを訂正したデータを外部へ転送する際に、一旦RAM4へ格納しているが、RAM4へ格納せず、直接外部へ転送してもよい。また、L2ECCデコーダ24がバッファを保持し、ステップS9,ステップS23で、DMAC51は直接L2ECCデコーダ24へデータを出力してもよい。
以上2段階のECC処理を実施する場合について説明したが、3段階以上のECC処理を実施する場合にも同様に、誤り訂正履歴情報を用いて処理の高速化を実現することができる。図6は、5段階ECC処理を実施する場合の誤り訂正履歴管理テーブルの構成例を示す図である。図6の例では、誤り訂正履歴情報としてL1単位データごとの4ビットのフラグを用いている。
例えば、この4ビットのフラグの下位ビットから順にL1ECC処理、L2ECC処理、L3ECC処理、L4ECC処理で、それぞれ訂正不可であったか否かを示すとする。そして、例えば、初期値としては全ビットを“0”に設定しておき、各段階の処理において訂正不可であった場合には対応するビットを“1”に設定する。なお、図6では、L1単位データごとに4ビットのフラグを用いる例を説明したが、L1単位データとL2以上の単位データのサイズが異なる場合には、各段階のデータ単位ごとにフラグを保持するようにしてもよい。例えば、L2単位データが8つのL1単位データで構成される場合、L2単位データごとにフラグを保持する場合には、L2ECC処理のフフラグは8つのL1単位データに対して1ビットの情報を保持すればよく、保持する情報量を減らすことができる。
3段階以上のECC処理を行う場合もL1ECC,L2ECC、…と段階順に処理を行っていく。従って、各段階のECC処理で、図6に例示した誤り訂正履歴管理テーブルを用いて当該段階のECC処理で過去に訂正不可であったデータについては、当該段階のECC処理を実施せずに次の段階のECC処理を実施するようにすればよい。
なお、本実施の形態では、誤り訂正履歴管理テーブル41をRAM4内に保持するようにしたが、これに限らず、NANDフラッシュメモリ3内やNANDC52内等の他の場所に保持するようにしてもよい。例えば、RAM4が不揮発性RAMの場合には電源OFFしても管理情報は残るが、揮発性RAMの場合には電源OFFすると誤り訂正履歴管理テーブル41が消えてしまうことになる。したがって、電源ONの間に誤り訂正履歴管理テーブル41をRAM4に格納しておき、電源OFF時に誤り訂正履歴管理テーブル41をNANDフラッシュメモリ3の空き領域に保存するようにしてもよい。この場合、電源ONとなった場合には、毎回誤り訂正履歴管理テーブル41をRAM4上に読み出しておく。ただし、この誤り訂正履歴管理テーブル41は消えてしまっても動作保証に影響ないので、RAM4が揮発性RAMの場合でも、NANDフラッシュメモリ3への書き込み負担を減らすためにNANDフラッシュメモリ3への保存を行わなくてもよい。
また、本実施の形態では、L2用読み出しL1単位データ(自身は読み出し対象ではなく、読み出し対象のL1単位データのL2ECC処理を行うために読み出されるデータ)についても、読み出し対象の(外部へ転送する)L1単位データと同様に過去のL1ECC処理で訂正不可でなかった場合には、L1ECCデコードを行うようにしているが、L2用読み出しL1単位データについてはL1ECCデコードを行わず、NANDフラッシュメモリ3から読み出したデータをそのままL2ECC処理へ渡すようにしてもよい。この場合、L2用読み出しL1単位データについてはL1ECC処理で訂正できる誤りを訂正しないままL2ECC処理へ入力されることになるが、読み出し処理時間をさらに短縮をすることができる。また、L1ECC処理において誤り訂正が行われたか否か(L1ECC処理の前に誤りがあったか否か)を示す情報を、L1単位データごとに誤り訂正履歴管理テーブル41に保持しておき、過去のL1ECC処理において誤り訂正が行われなかったL2用読み出しデータをそのままL2ECC処理へ渡し、過去にL1ECC処理において誤り訂正が行われたL2用読み出しデータはL1ECC処理を実施するようにしてもよい。
なお、本実施の形態では、制御レジスタ部52が誤り訂正履歴情報に基づいて、L1ECC処理を実施するか否かの判断することにより誤り訂正処理を制御する誤り訂正処理制御部としての機能を有することとしたが、制御レジスタ部52とは別に誤り訂正処理制御部を備えるようにしてもよい。
以上のように、本実施の形態では、過去に訂正不可であったか否かの情報を誤り訂正履歴情報として保持し、各段階のECC処理では、当該段階のECC処理で過去に訂正不可であったデータについては、当該段階のECC処理を実施せずに次の段階のECC処理を実施するようにした。そのため、全てのデータについて、毎回L1ECC処理を実施する場合に比べ、読み出しの処理時間を短縮することができる。
(第2の実施の形態)
図7は、第2の実施の形態にかかるメモリシステム1が保持する誤り訂正履歴管理テーブル41の構成例を示す図である。本実施の形態のメモリシステム1の構成は第1の実施の形態のメモリシステム1の構成と同様である。第1の実施の形態と同様の機能を有する構成要素は、第1の実施の形態と同一の符号を付して説明を省略する。
図7に示すように、本実施の形態の誤り訂正履歴管理テーブル41は、L1単位データ毎の、第1の実施の形態と同様のL1ECC結果のフラグと、L1ECC訂正ビットと、で構成される。本実施の形態では、誤り訂正履歴情報として、過去のL1ECC結果で誤り訂正不可であったか否かの情報に加えて、過去のL1ECC処理において訂正されたビット数をL1ECC訂正ビットとして保持する。
図8は、本実施の形態の読み出し処理手順の一例を示すフローチャートである。図8は、L2単位データが1つのL1単位データで構成される場合(N=1の場合)の、L1単位データごとの読み出し処理手順を示している。本実施の形態のデータの書き込み動作は、第1の実施の形態と同様である。また、本実施の形態のデータの読み出し時には、CPU23は、誤り訂正履歴管理テーブル41を参照して、読み出し対象のデータのアドレスとこれらのデータに対応する誤り訂正履歴情報とを制御レジスタ部52へ設定する。また、読み出し対象のデータを含むL2単位データ内のデータに対応する誤り訂正履歴情報についても制御レジスタ部52へ設定する。
本実施の形態では、第1の実施の形態と同様にステップS1を実施し、過去にL1ECC訂正不可でなかった場合(ステップS1 No)、制御レジスタ部52は、誤り訂正情報のL1ECC訂正ビットを参照し、読み出し処理中のL1単位データについて過去のL1ECC処理で訂正されたビット数(L1ECC訂正ビット)が、L1ECC処理で訂正可能な最大のビット数(Maxビット)であるか否かを判断する(ステップS31)。例えば、誤り訂正情報のL1ECC訂正ビットが3ビットである場合には、誤り訂正情報のL1ECC訂正ビットが3の場合に最大のビット数訂正済みであると判断し、誤り訂正情報のL1ECC訂正ビットが2ビット以下の場合には、最大のビット数訂正済みでないと判断する。
L1ECC処理で訂正可能な最大のビット数訂正済みであると判断した(ステップS31 Yes)場合は、ステップS2へ進むと同時に、ステップS11も実施する。すなわち、L1ECC処理を実施しつつ、L2ECC処理も開始する。L1ECC処理で訂正可能な最大のビット数訂正済みでないと判断した(ステップS31 No)場合は、ステップS2に進む。以上述べた以外の本実施の形態の読み出し処理手順は、図4で示した第1の実施の形態と同様である。ただし、ステップS10aでは、L2ECC処理が既に開始済みでない場合にステップS11へ進み、開始済みの場合には、そのまま処理を終了する。また、ステップS6aでは、データバッファ58のデータをRAM4へ転送するとともに、CRCチェッカー57は、L1ECC処理により訂正されたビット数をCPU23へ通知し、CPU23が通知されたビット数に基づいて誤り訂正履歴管理テーブル41を更新する。なお、CRCチェッカー57は、L1ECCデコーダ56からL1ECC処理により訂正されたビット数を通知されているとする。
過去にL1ECC処理で、訂正可能な最大のビット数が訂正された場合、その次のL1ECC処理では、そのL1単位データは誤り箇所が増え訂正不可となる可能性が高い。本実施の形態では、過去にL1ECC処理で訂正可能な最大のビット数が訂正された場合には、L1ECC処理と並行してL2ECC処理を実施することにより、L1ECC処理で訂正不可となった場合の読み出し処理の時間を短縮することができる。
図8では、L2単位データが1つのL1単位データを含む場合(N=1の場合)を示したが、図5で説明したステップS21の次に、同様に、過去にL1ECC処理で訂正可能な最大のビット数訂正済みであったか否かの判断を行い、最大のビット数訂正済みの場合にはステップS23へ進むL2ECC処理を開始することにより、Nが2以上の場合にも図8の例と同様に読み出し時間を短縮することができる。3段階以上のECC処理を実施する場合にも、同様の処理を実施することにより読み出し時間を短縮することができる。以上述べた以外の本実施の形態の動作は、第1の実施の形態と同様である。
なお、本実施の形態では、過去にL1ECC処理において訂正可能な最大なビット数が訂正されている場合にL2ECC処理を並行して実施するようにしたが、L2ECC処理を並行して実施するか否かの判断基準に用いるしきい値は、訂正可能な最大なビット数に限らず、訂正可能な最大なビット数より1ビット少ないビット数とする等、他のしきい値を設定してもよい。
以上のように、本実施の形態では、過去にL1ECC処理で訂正不可であったか否かの情報に加えて、過去にL1ECC処理で訂正されたビット数を保持するようにした。そして、過去にL1ECC処理において訂正可能な最大なビット数が訂正されているデータについては、次の段階のECC処理を同時に開始するようにした。そのため、第1の実施の形態に比べさらに読み出し処理時間を短縮することができる。
(第3の実施の形態)
図9は、第3の実施の形態にかかるメモリシステム1が保持する誤り訂正履歴管理テーブル41の構成例を示す図である。本実施の形態のメモリシステム1の構成は第1の実施の形態のメモリシステム1の構成と同様である。第1の実施の形態と同様の機能を有する構成要素は、第1の実施の形態と同一の符号を付して説明を省略する。
図7に示すように、本実施の形態の誤り訂正履歴管理テーブル41は、L1単位データ毎の、第1の実施の形態と同様のL1ECC結果のフラグと、L1ECC訂正ビットと、Read回数/Block(1Blockあたりの読み出しが行われた回数)と、で構成される。L1ECC訂正ビットについては、第2の実施の形態と同様である。
第2の実施の形態では、過去にL1ECC処理において訂正可能な最大なビット数に加え、さらに、Read回数/Blockを考慮して、L1訂正不可となる可能性が高いL1単位データであるか否かを判断する。リードディスターブは、非選択セル(Block単位では、読み出し対象以外の全ページのセル)に高電圧が繰り返しかかることにより生じる。従って、リードディスターブが生じる可能性は、非選択セルとなった回数が多いほど高くなるが、ここでは非選択セルとなった回数の代わりに1Blockあたりの読み出し回数を近似的に用いる。これにより、複雑な処理を必要とせずにリードディスターブの生じる可能性の高さを予想することができる。なお、Read回数/Blockは、Block単位で管理しており、図9に示したアドレス0000〜0003は、同一Block内のアドレスである。また、Read回数/Blockの代わりに、L1単位データごとの非選択セルとなった回数を用いてもよい。
本実施の形態では、第2の実施の形態のステップS31の判断において、過去にL1ECC処理で、訂正可能な最大のビット数が訂正されたか否かだけでなく、Read回数/Blockが所定のしきい値を超えたか否かについても判断する。そして、過去に訂正可能な最大のビット数が訂正され、かつRead回数/Blockが所定のしきい値を超えた場合にL2ECC処理を並行して実施するようにする。これにより、第2の実施の形態に比べ、L1ECC処理で訂正不可となるか否かの予測精度が向上し、L2ECC処理を並行して実施する回数を第2の実施の形態に比べ低減することができる。
また、Read回数/Blockの代わりに、Write回数/Blockを用いてもよいし、Read回数/BlockとWrite回数/Blockの両方を用いてもよい。Read回数/BlockとWrite回数/Blockの両方を用いる場合には、過去に訂正可能な最大のビット数が訂正されたか否かの判断に加え、Read回数/BlockとWrite回数/Blockの合計が所定のしきい値を超えるか否かを判断基準としてもよいし、どちらか一方が所定のしきい値を超えたか否かを判断基準としてもよい。
以上のように、本実施の形態では、第2の実施の形態のステップS31の判断において、過去にL1ECC処理で、訂正可能な最大のビット数が訂正されたか否かだけでなく、Read回数/Blockが所定のしきい値を超えたか否かについても判断するようにした。そのため、L1ECC処理で訂正不可となるか否かの予測精度が向上し、L2ECC処理を並行して実施する回数を第2の実施の形態に比べ低減することができる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1 メモリシステム、2 メモリコントローラ、3 NANDフラッシュメモリ、4 RAM、24 L2ECCデコーダ、52 制御レジスタ部52、56 L1ECCデコーダ、57 CRCチェッカー、41 誤り訂正履歴管理テーブル。

Claims (11)

  1. データと、2段階以上の誤り訂正処理により段階毎に定義された所定のサイズの前記データである単位データ毎に生成された各段階の誤り訂正符号と、を記憶する半導体記憶部と、
    前記半導体記憶部から読み出されたデータと当該データに対応する前記各段階の誤り訂正符号とに基づいて誤り訂正処理を行う誤り訂正処理部と、
    前記誤り訂正処理部による誤り訂正処理により誤り訂正が不可であったか否かを示す段階毎の誤り訂正履歴情報を前記単位データ毎に記憶する誤り訂正履歴情報記憶部と、
    読み出し対象の前記単位データに対応する前記誤り訂正履歴情報が訂正不可である段階の誤り訂正処理を実施せずに次段階の誤り訂正処理を実施するよう前記誤り訂正処理部を制御する誤り訂正処理制御部と、
    を備えることを特徴とするメモリシステム。
  2. 前記誤り訂正履歴情報を前記半導体記憶部に保持する、
    ことを特徴とする請求項1に記載のメモリシステム。
  3. 前記誤り訂正履歴情報に、さらに各段階の誤り訂正処理における訂正ビット数を含める、
    ことを特徴とする請求項1または2に記載のメモリシステム。
  4. 前記誤り訂正処理制御部は、読み出し対象の前記単位データに対応する前記訂正ビット数が対応する所定のしきい値以上である場合に前記訂正ビット数に対応する段階の誤り訂正処理を実施するとともに次段階の誤り訂正処理を並行して開始するよう制御する、
    ことを特徴とする請求項3に記載のメモリシステム。
  5. 前記誤り訂正処理制御部は、読み出し対象の前記単位データに対応する前記訂正ビット数が対応する所定のしきい値以上であり、かつ当該単位データが属するブロックにおける読み出し回数が所定の上限回数を超える場合に前記訂正ビット数に対応する段階の誤り訂正処理を実施するとともに次段階の誤り訂正処理を並行して開始するよう制御する、
    ことを特徴とする請求項4に記載のメモリシステム。
  6. 前記データを一時的に格納するための一時記憶部、
    をさらに備え、
    前記誤り訂正履歴情報を前記一時記憶部に保持する、
    ことを特徴とする請求項1乃至請求項5のいずれか1つに記載のメモリシステム。
  7. 前記一時記憶部を不揮発性メモリで構成する、
    ことを特徴とする請求項6に記載のメモリシステム。
  8. 前記一時記憶部を揮発性メモリで構成し、
    電源遮断時に前記一時記憶部に記憶されている前記誤り訂正履歴情報を前記半導体記憶部へ書き込み、電源投入時に前記半導体記憶部に記憶されている前記誤り訂正履歴情報を前記一時記憶部へ書き込む、
    ことを特徴とする請求項6に記載のメモリシステム。
  9. 前記半導体記憶部に記憶されるデータが更新された場合には、当該データに対応する前記誤り訂正履歴情報を初期化する、
    ことを特徴とする請求項1乃至請求項8のいずれか1つに記載のメモリシステム。
  10. 2段階の誤り訂正処理を行うこととし、1段階目の誤り訂正符号をハミング符号または少数ビット訂正可能なBCH符号とし、2段階目の誤り訂正符号を多数ビット訂正可能なBCH符号またはLDPC符号とする、
    ことを特徴とする請求項1乃至請求項9のいずれか1つに記載のメモリシステム。
  11. データと、2段階以上の誤り訂正処理により段階毎に定義された所定のサイズの前記データである単位データ毎に生成された各段階の誤り訂正符号と、を半導体記憶部へ記憶する第1のステップと、
    前記半導体記憶部から読み出されたデータと当該データに対応する前記各段階の誤り訂正符号とに基づいて誤り訂正処理を行う第2のステップと、
    前記誤り訂正処理部による誤り訂正処理により誤り訂正が不可であったか否かを示す段階毎の誤り訂正履歴情報を前記単位データ毎に記憶する第3のステップと、
    読み出し対象の前記単位データに対応する前記誤り訂正履歴情報が訂正不可である段階の誤り訂正処理を実施せずに次段階の誤り訂正処理を実施するよう制御する第4のステップと、
    を含むことを特徴とするメモリシステムの制御方法。
JP2010290778A 2010-12-27 2010-12-27 メモリシステムおよびその制御方法 Pending JP2012137994A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2010290778A JP2012137994A (ja) 2010-12-27 2010-12-27 メモリシステムおよびその制御方法
US13/238,685 US8732553B2 (en) 2010-12-27 2011-09-21 Memory system and control method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010290778A JP2012137994A (ja) 2010-12-27 2010-12-27 メモリシステムおよびその制御方法

Publications (1)

Publication Number Publication Date
JP2012137994A true JP2012137994A (ja) 2012-07-19

Family

ID=46318538

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010290778A Pending JP2012137994A (ja) 2010-12-27 2010-12-27 メモリシステムおよびその制御方法

Country Status (2)

Country Link
US (1) US8732553B2 (ja)
JP (1) JP2012137994A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014086062A (ja) * 2012-10-29 2014-05-12 Sony Corp 記憶制御装置、記憶装置、情報処理システム、および、記憶制御方法
US9520901B2 (en) 2014-03-06 2016-12-13 Kabushiki Kaisha Toshiba Memory controller, memory system, and memory control method
WO2020049500A1 (en) * 2018-09-07 2020-03-12 Toshiba Memory Corporation Pooled frontline ecc decoders in memory systems
US10783034B2 (en) 2017-12-22 2020-09-22 Toshiba Memory Corporation Memory system and control method

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4564520B2 (ja) 2007-08-31 2010-10-20 株式会社東芝 半導体記憶装置およびその制御方法
US8495465B1 (en) 2009-10-15 2013-07-23 Apple Inc. Error correction coding over multiple memory pages
JP5544878B2 (ja) * 2009-12-25 2014-07-09 富士通株式会社 故障制御装置、プロセッサコア、演算処理装置、情報処理装置および擬似故障制御方法
US8443263B2 (en) * 2009-12-30 2013-05-14 Sandisk Technologies Inc. Method and controller for performing a copy-back operation
KR102143517B1 (ko) 2013-02-26 2020-08-12 삼성전자 주식회사 에러 정정회로를 포함하는 반도체 메모리 장치 및 반도체 메모리 장치의 동작방법
US9448880B2 (en) * 2015-01-29 2016-09-20 Winbond Electronics Corporation Storage device with robust error correction scheme
US10439644B2 (en) 2015-07-14 2019-10-08 Western Digital Technologies, Inc. Error locator polynomial decoder and method
US10572189B2 (en) 2016-11-04 2020-02-25 Sandisk Technologies Llc Method and decoder to adjust an error locator polynomial based on an error parity
US10461777B2 (en) 2015-07-14 2019-10-29 Western Digital Technologies, Inc. Error locator polynomial decoder and method
US9692455B2 (en) * 2015-09-11 2017-06-27 Micron Technology, Inc. Multi channel memory with flexible code-length ECC
US10198315B2 (en) * 2016-02-29 2019-02-05 Sandisk Technologies Llc Non-volatile memory with corruption recovery
CN105868038B (zh) * 2016-03-28 2020-03-24 联想(北京)有限公司 内存错误处理方法及电子设备
TWI625620B (zh) * 2017-05-12 2018-06-01 威盛電子股份有限公司 非揮發性記憶體裝置及其讀取方法
JP7114948B2 (ja) * 2018-03-09 2022-08-09 富士フイルムビジネスイノベーション株式会社 情報処理装置及び情報処理プログラム

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6182264B1 (en) * 1998-05-22 2001-01-30 Vlsi Technology, Inc. Smart dynamic selection of error correction methods for DECT based data services
US7516391B2 (en) * 2004-08-16 2009-04-07 Samsung Electronics Co., Ltd Apparatus and method for coding/decoding block low density parity check code with variable block length
JP4413840B2 (ja) 2005-09-20 2010-02-10 株式会社東芝 記憶媒体再生装置、記憶媒体再生方法および記憶媒体再生プログラム
JP2008300020A (ja) 2007-06-04 2008-12-11 Toshiba Corp 再生装置
JP4564520B2 (ja) 2007-08-31 2010-10-20 株式会社東芝 半導体記憶装置およびその制御方法
JP4538034B2 (ja) 2007-09-26 2010-09-08 株式会社東芝 半導体記憶装置、及びその制御方法
US8429492B2 (en) * 2007-11-30 2013-04-23 Marvell World Trade Ltd. Error correcting code predication system and method
JP5166074B2 (ja) 2008-02-29 2013-03-21 株式会社東芝 半導体記憶装置、その制御方法、および誤り訂正システム
JP4856110B2 (ja) 2008-03-01 2012-01-18 株式会社東芝 チェンサーチ装置およびチェンサーチ方法

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014086062A (ja) * 2012-10-29 2014-05-12 Sony Corp 記憶制御装置、記憶装置、情報処理システム、および、記憶制御方法
US9520901B2 (en) 2014-03-06 2016-12-13 Kabushiki Kaisha Toshiba Memory controller, memory system, and memory control method
US10965324B2 (en) 2014-03-06 2021-03-30 Toshiba Memory Corporation Memory controller, memory system, and memory control method
US11683053B2 (en) 2014-03-06 2023-06-20 Kioxia Corporation Memory controller, memory system, and memory control method
US10783034B2 (en) 2017-12-22 2020-09-22 Toshiba Memory Corporation Memory system and control method
WO2020049500A1 (en) * 2018-09-07 2020-03-12 Toshiba Memory Corporation Pooled frontline ecc decoders in memory systems
US10747613B2 (en) 2018-09-07 2020-08-18 Toshiba Memory Corporation Pooled frontline ECC decoders in memory systems
CN112840324A (zh) * 2018-09-07 2021-05-25 铠侠股份有限公司 存储器系统中的汇集式前线ecc解码器
CN112840324B (zh) * 2018-09-07 2024-03-15 铠侠股份有限公司 存储器系统中的汇集式前线ecc解码器

Also Published As

Publication number Publication date
US8732553B2 (en) 2014-05-20
US20120166906A1 (en) 2012-06-28

Similar Documents

Publication Publication Date Title
JP2012137994A (ja) メモリシステムおよびその制御方法
US20190252035A1 (en) Decoding method, memory storage device and memory control circuit unit
US9543983B2 (en) Decoding method, memory storage device and memory control circuit unit
US9639419B2 (en) Read voltage level estimating method, memory storage device and memory control circuit unit
US9471421B2 (en) Data accessing method, memory storage device and memory controlling circuit unit
US10067824B2 (en) Error processing method, memory storage device and memory controlling circuit unit
US9583217B2 (en) Decoding method, memory storage device and memory control circuit unit
US9507658B2 (en) Data reading method, memory storage device and memory controlling circuit unit
US10977116B2 (en) Data access method, memory control circuit unit and memory storage device
JP2015018451A (ja) メモリコントローラ、記憶装置およびメモリ制御方法
US10679707B2 (en) Voltage adjusting method, memory controlling circuit unit and memory storage device
US10318379B2 (en) Decoding method, memory storage device and memory control circuit unit
CN106297883B (zh) 解码方法、存储器存储装置及存储器控制电路单元
US10782920B2 (en) Data access method, memory storage apparatus and memory control circuit unit
US11467758B2 (en) Data writing method using different programming modes based on the number of available physical erasing units, memory control circuit unit and memory storage device
US10447314B2 (en) Decoding method, memory storage device and memory control circuit unit
US10459630B2 (en) Memory management method, memory storage device and memory controlling circuit unit
US10872667B2 (en) Decoding method, memory controlling circuit unit and memory storage device
US11190217B2 (en) Data writing method, memory controlling circuit unit and memory storage device
JP2006221334A (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
US9996415B2 (en) Data correcting method, memory control circuit unit, and memory storage device
CN112799874B (zh) 存储器控制方法、存储器存储装置及存储器控制电路单元
US11146295B1 (en) Decoding method, memory storage device, and memory controlling circuit unit
JP2008102693A (ja) メモリコントローラ及びフラッシュメモリシステム、並びにフラッシュメモリの制御方法
US10978163B2 (en) Voltage identifying method, memory controlling circuit unit and memory storage device