【実施例1】
【0014】
図1は、本発明に係るNANDフラッシュ制御システム100の概略構成を示すブロック図である。NANDフラッシュ制御システム100は、ホストコンピュータ10及び半導体記憶装置11から構成されている。
【0015】
ホストコンピュータ10及び半導体記憶装置11は互いに通信接続されている。ホストコンピュータ10は、データの読み出しや書き込みを指示するコマンドを半導体記憶装置11に送信する。半導体記憶装置11は、ホストコンピュータ10からのコマンドを受信し、これに応じてデータの書き込み動作や読み出し動作を実行する。
【0016】
半導体記憶装置11は、コントローラ12、NANDフラッシュメモリ13、RAM(Random Access Memory)14及び冗長メモリ15を有する。
【0017】
コントローラ12は、半導体記憶装置11の動作を制御する制御部であり、例えばCPU(Central Processing Unit)から構成されている。コントローラ12は、NANDフラッシュメモリ13、RAM14及び冗長メモリ15にアクセスし、データの書き込み、読み出し及び消去等の各種のデータ処理を実行する。
【0018】
また、コントローラ12は、ECC(Error Check and Correct)回路を含み、NANDフラッシュメモリ13から読み出したデータに対する誤り検出訂正処理を実行する。本実施例では、例えばNANDフラッシュメモリ13に設けられたゲート絶縁膜(図示せず)の物理的な劣化によるデータ保持の不良やリードディスターブによる電荷の移動等に起因する所謂データの劣化がエラーとして検出される。
【0019】
また、コントローラ12は、誤り検出訂正処理におけるエラー検出の結果に基づいて、冗長メモリ15へのデータの書き込み及びNANDフラッシュメモリ13のリフレッシュ処理を実行する。
【0020】
NANDフラッシュメモリ13は、例えばEEPROM(Electrically Erasable Programmable Read-Only Memory)等からなる不揮発性の半導体メモリである。NANDフラッシュメモリ13は、記憶領域としてn個のブロック(nは2以上の整数)を有する。n個のブロックの各々は、m個のページ(mは2以上の整数)から構成されている。m個のページの各々は、複数のセルから構成されている。本実施例では、各々のページへのデータの書き込みは、セル毎に2ビットのデータを記録するMLC(Multiple Level Cell)方式で行われる。
【0021】
NANDフラッシュメモリ13へのデータの書き込み及びNANDフラッシュメモリ13からのデータの読み出しは、ページ毎に行われる。一方、NANDフラッシュメモリ13に記憶されているデータの消去は、ブロック単位で行われる。なお、NANDフラッシュメモリ13には、誤り訂正符号ECC(Error Correction Code)が付加されたデータが書き込まれる。
【0022】
RAM14は、NANDフラッシュメモリ13のリフレッシュ処理におけるキャッシュメモリとして機能する揮発性メモリである。例えば、リフレッシュ処理では、NANDフラッシュメモリ13及び冗長メモリ15から読み出されたデータがRAM14にいったん格納される。そして、RAM14から当該データが読み出され、NANDフラッシュメモリ13に書き込まれる。
【0023】
冗長メモリ15は、半導体記憶装置11にNANDフラッシュメモリ13とは別に設けられた不揮発性の半導体メモリである。冗長メモリ15は、各々が複数のセルからなる複数のページを有する。冗長メモリ15へのデータの書き込みは、セル毎に1ビットのデータを記録するSLC(Single Level Cell)方式によって行われる。
【0024】
本実施例では、誤り検出によりデータの劣化が進んだページが検出された場合に、当該ページのデータが誤り訂正を経て冗長メモリ15に記録される。以後、ブロックのリフレッシュ処理が行われるまでの間、当該ページのデータを読み出す際には、冗長メモリ15からデータの読み出しが行われる。なお、ブロックのリフレッシュ処理が行われると、当該ブロックに対応するデータは冗長メモリ15から消去される。
【0025】
次に、本実施例に係る半導体記憶装置11のエラー検出処理及びリフレッシュ処理の処理動作について、
図2及び
図4のフローチャートを参照して説明する。
【0026】
コントローラ12は、例えば半導体記憶装置11の電源が投入された直後のタイミングで、NANDフラッシュメモリ13のエラー検出処理を実行する。本実施例のエラー検出処理は、誤り訂正符号ECCを用いた誤り検出訂正処理であり、n個のブロックの各々についてページ毎に行われる。以下の説明では、NANDフラッシュメモリ13のn個のブロックを第1ブロック〜第nブロック、m個のページを第1ページ〜第mページとする。
【0027】
コントローラ12は、NANDフラッシュメモリ13のn個のブロックのうち、エラー検出の対象となるブロックを示す“k”の値をk=1にセットする(STEP101)。
【0028】
コントローラ12は、NANDフラッシュメモリ13の第kブロックを対象としてデータ検査を実行する(STEP102)。具体的には、第1〜第mページの各々から順次データを読み出し、読み出したデータに対して誤り検出訂正を行うことにより、各ページのデータの劣化の有無を検出する。
【0029】
コントローラ12は、データ検査(誤り検出訂正処理)の結果、データの劣化したページが発見されたか否かを判定する(STEP103)。
【0030】
データの劣化したページが発見されたと判定すると(STEP103:Yes)、コントローラ12は、誤り訂正を経たNANDフラッシュメモリ13の当該ページのデータを、冗長メモリ15に書き込む(STEP104)。一方、データの劣化したページが発見されたと判定されなかった場合(STEP103:No)、STEP107に進む。
【0031】
図3は、STEP104で行われる冗長メモリへのデータの書き込みを模式的に示す図である。例えば、NANDフラッシュメモリ13の「ブロック2」の「ページ1」でデータの劣化が検出された場合、ブロック2のページ1(
図4に斜線で示す)に記録されていたデータである「データ2,1」が誤り訂正を経て冗長メモリ15に書き込まれる。
【0032】
再び
図2を参照すると、コントローラ12は、第kブロックの閾値以上のページ数のデータが冗長メモリ15に格納されたか否か(すなわち、第kブロックの所定以上のデータ量のデータが冗長メモリ15に書き込まれたか否か)を判定する(STEP105)。
【0033】
第kブロックの閾値以上のページ数のデータが冗長メモリ15に格納されたと判定すると(STEP105:Yes)、コントローラ12は、NANDフラッシュメモリ13のリフレッシュ処理を実行する(STEP106)。
【0034】
図4は、リフレッシュ処理の処理ルーチンを示すフローチャートである。まず、コントローラ12は、リフレッシュ処理におけるデータの書き込み先として用いるブロック(以下、リフレッシュ先ブロックと称する)を空きブロックとするため、当該ブロックに書き込まれているデータを消去する(STEP201)。
【0035】
コントローラ12は、NANDフラッシュメモリ13の第kブロックのm個のページのうち、リフレッシュ処理におけるデータ移動の対象となるページを示す“j”の値をj=1にセットする(STEP202)。
【0036】
コントローラ12は、jページ目のデータが冗長メモリ15に格納されているか否か、すなわち
図2のフローチャートのSTEP104で冗長メモリ15に書き込まれたデータであるか否かを判定する(STEP203)。
【0037】
jページ目のデータが冗長メモリ15に格納されていると判定すると(STEP203:Yes)、コントローラ12は、jページ目のデータを冗長メモリ15から読み出す(STEP204)。
【0038】
一方、jページ目のデータが冗長メモリ15に格納されていないと判定すると(STEP203:No)、コントローラ12は、jページ目のデータをNANDフラッシュメモリ13の第kブロックの第jページから読み出す(STEP205)。
【0039】
コントローラ12は、STEP204又はSTEP205で読み出されたjページ目のデータを、NANDフラッシュメモリ13のリフレッシュ先ブロックのメモリ領域に書き込む(STEP206)。
【0040】
図5は、STEP204〜206で行われるデータの読み出し及び書き込みを模式的に示す図である。ここでは、NANDフラッシュメモリ13の「ブロック2」を対象とするエラー検出処理(
図2のSTEP102〜104を参照)において、「ページ1、3、4、5及びm」でデータのエラーが検出された場合を例として示している。
【0041】
ページ1、3、4、5及びmでデータのエラーが検出された場合、当該ページに記憶されていたデータが誤り訂正を経て冗長メモリ15にコピーされる。このため、
図5に示すように、冗長メモリ15には、NANDフラッシュメモリ13のブロック2のページ1、3、4、5及びmの各々に対応するデータである「データ2,1」、「データ2,3」、「データ2,4」、「データ2,5」及び「データ2,m」が格納されている。従って、コントローラ12は、これらのデータを読み出し、リフレッシュ先のブロックである「ブロックX」に書き込む。
【0042】
一方、ブロック2のページ1、3、4、5及びm以外のページに書き込まれているデータについては、データエラーが検出されていないため、対応するデータが冗長メモリ15に格納されていない。このため、コントローラ12は、これらのデータをNANDフラッシュメモリ13のブロック2から読み出し、リフレッシュ先のブロックであるブロックXに書き込む。
【0043】
これにより、ブロックXには、ページ1〜mに対応するデータ2,1、データ2,2データ2,3、・・・データ2,mが書き込まれ、ブロック2についてのリフレッシュ処理が完了する。
【0044】
再び
図4を参照すると、コントローラ12は、STEP203〜206の一連の処理が第kブロックのmページ目まで行われたか否かを判定する(STEP207)。
【0045】
一連の処理がmページ目まで行われていないと判定すると(STEP207:No)、jの値を“+1”だけインクリメントし(STEP208)、STEP203に戻る。
【0046】
一方、一連の処理がmページ目まで行われたと判定すると(STEP207:Yes)、冗長メモリ15に記録されている第kブロックのデータを消去し(STEP209)、リフレッシュ処理を終了する。
【0047】
再び
図2を参照すると、STEP103においてデータの劣化したページが発見されたと判定されなかった場合(STEP103:No)、STEP105において第kブロックの閾値以上のページ数のデータが冗長メモリ15に格納されていないと判定された場合(STEP105:No)、及びSTEP106の第kブロックのリフレッシュ処理が終了した場合、コントローラ12は、STEP102〜106の一連の処理が第nブロックまで行われたか否かを判定する(STEP107)。
【0048】
一連の処理が第nブロックまで行われていないと判定すると(STEP107:No)、kの値を“+1”だけインクリメントし(STEP108)、STEP102に戻る。
【0049】
一方、一連の処理が第nブロックまで行われたと判定すると(STEP107:Yes)、NANDフラッシュメモリ13についてのエラー検出処理を終了する。
【0050】
以上のように、本実施例の半導体記憶装置11では、NANDフラッシュメモリ13からデータを読み出して誤り検出訂正を行い、エラーが検出されたページのデータを冗長メモリ15に書き込む。そして、特定のブロック内の一定以上のページ数のデータが冗長メモリ15に記録された場合に、当該ブロックのリフレッシュ処理を実行する。
【0051】
本実施例の半導体記憶装置11によれば、データの劣化が発見されたページの数が1つのブロックにつき所定数以上に達した場合に当該ブロックのリフレッシュ処理を行うため、データが劣化したページが発見される度にリフレッシュ処理を行う場合と比べて、データの消去回数を抑えることができる。従って、NANDフラッシュメモリ13を長寿命化することが可能となる。
【実施例2】
【0052】
次に、本発明の実施例2について説明する。
図6は、本実施例のNANDフラッシュ制御システム200の概略構成を示すブロック図である。NANDフラッシュ制御システム200は、ホストコンピュータ20及び半導体記憶装置21から構成されている。
【0053】
半導体記憶装置21は、コントローラ12、RAM14及びNANDフラッシュメモリ23を有する。
【0054】
本実施例のNANDフラッシュメモリ23は、複数のブロックからなる第1の領域と、これとは異なるブロックからなる第2の領域と、から構成されている。
【0055】
第1の領域は、NANDフラッシュメモリ23に対する通常のデータの書き込みに用いられるメモリ領域である。第1の領域は、各々がm個のページからなるp個のブロック(pはp<nを満たす自然数)から構成されている。本実施例では、第1の領域へのデータの書き込みはMLC方式によって行われる。
【0056】
第2の領域は、第1の領域においてデータが劣化したページが検出された場合に、当該ページのデータを書き込むためのメモリ領域である。すなわち、本実施例では、実施例1の冗長メモリ15(
図1を参照)の代わりに、通常のメモリ領域として用いる第1の領域と同一のチップ内に、冗長領域として用いる第2の領域が設けられている。第2の領域は、各々がr個のページ(rはr<mを満たす自然数)からなるq個のブロック(qはq=n−pを満たす自然数)から構成されている。本実施例では、第2の領域へのデータの書き込みはSLC方式によって行われる。
【0057】
コントローラ12は、NANDフラッシュメモリ13の第1の領域のp個のブロックに対してページ毎に誤り検出訂正処理を行い、各ページにおけるデータの劣化の有無を検出する。データの劣化したページを発見すると、コントローラ12は、誤り訂正を経た当該ページのデータをNANDフラッシュメモリ13の第2の領域に書き込む。
【0058】
図7は、第2の領域へのデータの書き込みを模式的に示す図である。例えば、NANDフラッシュメモリ13の第1の領域のブロック2において、ページ1、3及び4でデータの劣化が検出された場合、これらのページに記録されていたデータである「データ2,1」、「データ2,3」及び「データ2,4」が誤り訂正を経てNANDフラッシュメモリ13の第2の領域に書き込まれる。以後、ブロックのリフレッシュ処理が行われるまでの間、当該ページのデータを読み出す際には、第2の領域からデータの読み出しが行われる。そして、第1の領域のブロックのリフレッシュ処理が行われると、当該ブロックに対応するデータは第2の領域から消去される。
【0059】
なお、第2の領域の1つのブロックには第1の領域の1つのブロックのページのデータが書き込まれるように、管理及び制御がなされる。すなわち、第1の領域の同一のブロックに記録されていたデータは、第2の領域の同一のブロックに書き込まれる。そして、第1の領域の互いに異なるブロックに記録されていたデータは、第2の領域の互いに異なるブロックにそれぞれ書き込まれる。
【0060】
コントローラ12は、第2の領域の1つのブロックの全ページ(すなわち、r個のページ)にデータが書き込まれた場合に、そのデータの元の記録場所であるページを含む第1の領域のブロックについて、リフレッシュ処理を実行する。
【0061】
リフレッシュ処理では、コントローラ12は、第2の領域に記録されているデータ(すなわち、データの劣化が発見されたページのデータ)については、第2の領域から読み出したデータをリフレッシュ先のブロックに書き込む。一方、第2の領域に記録されていないデータ(すなわち、データの劣化が発見されなかったページのデータ)については、コントローラ12は、第1の領域から読み出したデータをリフレッシュ先のブロックに書き込む。
【0062】
このように、本実施例の半導体記憶装置21では、NANDフラッシュメモリ13にSLC方式でデータを書き込む第2の領域を設け、データエラーが検出されたページのデータの移動先となる退避用のメモリとして使用する。SLC方式は、MLC方式やTLC方式と比べてデータの消去可能回数が多いため、データが繰り返し消去されることを前提とする退避用のメモリとして使用しても、NANDフラッシュメモリ13の寿命の低下を抑えることができる。従って、本実施例の半導体記憶装置21によれば、実施例1のような冗長メモリを別途設けることなく、NANDフラッシュメモリ13を長寿命化することが可能となる。
【0063】
なお、本発明は上記実施例で示したものに限られない。例えば、上記実施例では、半導体記憶装置11の電源投入の直後にNANDフラッシュメモリ13の第1〜第nのブロックの各々のページについて順次エラー検出処理を行う例について説明した。しかし、エラー検出処理を行うタイミングはこれに限られない。例えば、あるブロックに対してアクセスがあった場合に、そのブロックについてのみエラー検出処理を行ってもよい。この場合、当該ブロックのみを対象として、
図2のフローチャートのSTEP103〜106の処理(すなわち、冗長メモリ15へのデータの書き込み及びリフレッシュ処理)が実行される。
【0064】
また、電源投入直後にエラー検出処理を行う場合であっても、必ずしも1回のエラー検出処理で全てのブロックに対して処理を行わなくてもよい。例えば、1回の電源投入につきk個(kはn未満の自然数)のブロックを対象としてエラー検出処理を行い、対象となるブロックを電源投入毎に順次遷移させるようにしてもよい。
【0065】
また、上記実施例2では、NANDフラッシュメモリ23が、通常のデータの書き込みを行う第1の領域と、エラーを含むページが検出された際に当該ページのデータの書き込みを行う第2の領域と、から構成されている場合について説明した。しかし、第1の領域及び第2の領域の区分は、予めなされていなくてもよい。すなわち、通常の状態ではNANDフラッシュメモリ23の全てのメモリ領域を第1の領域として使用し、データの劣化が検出された場合に、その時点で空いているブロックを第2の領域として使用するように構成されていてもよい。
【0066】
また、上記実施例2では、MLC方式で第1の領域へのデータの書き込みを行い、SLC方式で第2の領域へのデータの書き込みを行う場合を例として説明した。しかし、データ記録方式はこれに限られない。例えば、第1の領域にはTLC(Triple Level Cell)方式でデータを記録し、第2の領域にはMLC方式でデータを記録するようにしてもよい。ただし、第2の領域は、データエラーが検出された第1の領域のページのデータを一時的に移す退避用のメモリとして用いる領域であり、繰り返し消去が行われることを前提とする記憶領域であるため、第1の領域よりも消去可能回数の多いデータ記録方式を採用することが望ましい。
【0067】
また、上記実施例では、リフレッシュ処理の最初の段階(
図4のSTEP201)でリフレッシュ先ブロックに書き込まれているデータを消去する場合を例として説明した。しかし、リフレッシュ先ブロックのデータの消去のタイミングはこれに限られず、リフレッシュ処理を行う段階でリフレッシュ先ブロックにデータが記録されていない状態が実現されていればよい。例えば、予め空きブロックとなっているブロックをリフレッシュ先ブロックとして用いてもよい。また、リフレッシュ処理を行った後に元のデータが記録されていたブロックの消去を行うことにより、一定の空きブロックが常に確保されるようにしてもよい。
【0068】
また、上記実施例2では、第2の領域の1つのブロックの全ページにデータが格納された場合にリフレッシュ処理を行う場合を例として説明した。しかし、リフレッシュ処理を行わず、エラー検出時のデータの移動先(退避先)である第2領域のブロックを、そのままデータのコピー先のブロックとして用いてもよい。例えば、
図8に示すように、劣化したデータを含むページを発見した際に当該ページのデータを第2の領域のブロックに順次書き込み、第2の領域の1のブロックの全てのページにデータが格納された場合には、当該1のブロックに隣接するブロックにデータを順次書き込む。第2の領域の複数のブロックに亘ってデータを記録することにより、最終的には第1の領域の1のブロックの全てのページのデータを第2領域に移すことができる。そして、第1の領域の1のブロックに対応するデータを第2の領域の複数のブロックで管理することにより、リフレッシュ処理を行うことなくデータの書き直しを完了することができる。従って、リフレッシュ処理に付随するデータの消去を行う必要がないため、NANDフラッシュメモリを長寿命化することが可能となる。
【0069】
また、本発明の半導体記憶装置は、NANDフラッシュメモリ以外の他の種類の不揮発性メモリにも適用することが可能である。例えば、NANDフラッシュメモリはページ毎にデータの書き込み及び読み出しを行い、ブロック毎にデータの消去を行うことを前提としているが、これとは異なり、ページ毎にデータの消去を行うことが可能な不揮発性メモリに本発明を適用することも可能である。このような不揮発性メモリにおいても、誤りを含むページの数が一定以上に達した場合にリフレッシュ処理を実行することにより、その都度リフレッシュ処理を実行する場合と比べて、少ない機会に集中してリフレッシュ処理を行うことが可能となる。