(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0012】
以下、本発明の実施例を図面を参照しつつ詳細に説明する。
【0013】
図1は、本発明に係るメモリ制御装置としてのメモリコントローラ20を含むメモリ100の構成を示すブロック図である。
図1において、メモリセルアレイ10は、例えばNAND型のフラッシュメモリ等のような不揮発性の半導体メモリである。メモリセルアレイ10では、複数のメモリセルによって読出の最小単位となるページが形成され、複数のページでブロックが形成されている。各ブロックは、アドレス順に隣接して配置された複数のページで構成される。
【0014】
尚、メモリセルアレイ10の特定のブロック内には、優先監視リスト領域SAが設けられている。優先監視リスト領域SAには、電源投入時に優先監視処理(後述する)が施されるブロック(以下、優先監視ブロックと称する)を示す情報として、例えばブロックアドレス又はブロック番号等が記憶されている。よって、電源オフ後も、優先監視ブロックを示す情報は、メモリセルアレイ10の優先監視リスト領域SAに保持される。
【0015】
メモリコントローラ20は、外部供給された各種のコマンド信号CMD(読出指令、書込指令等)、アドレスAD及びデータDATに基づき、メモリセルアレイ10に対してデータの読出、書込、消去等のアクセスを行う。
【0016】
メモリコントローラ20は、RAM(Random Access Memory)21、誤り検出部22、読出回数カウンタ23、読出回数補正部24、リフレッシュ処理部25、集中監視対象登録部26、優先監視対象登録部27、全体監視部28、集中監視部29及び優先監視部30を含む。
【0017】
誤り検出部22は、外部供給された読出指令(以下、読出アクセスと称する)に応じてメモリセルアレイ10から読み出されたデータに対して誤り検出を行い、ブロック毎に、そのブロックに属するページを読み出した際に検出された誤りビットの数を計数する。誤り検出部22は、各ブロックに対応付けして、誤り情報として、例えば誤りビット数を示す情報をRAM21に書き込む。
【0018】
読出回数カウンタ23は、読出アクセスによって読出対象となったページを読み出した回数を、ブロック毎に計数する。読出回数カウンタ23は、各ブロックに対応付けして、その読出回数を示す情報をRAM21に書き込む。更に、読出回数カウンタ23は、各ブロックの読出回数の総数を示す情報をRAM21に書き込む。尚、以降、読出アクセスによって読出対象となったページが属するブロックを、”読出対象となったブロック”と称する。
【0019】
読出回数補正部24は、読出アクセスが為される度に、読出対象となったブロックに対応付けしてRAM21に格納されている読出回数を補正し、その補正が施された読出回数をRAM21に上書きする。尚、読出回数補正部24による読出回数の補正方法については後述する。
【0020】
リフレッシュ処理部25は、読出対象となったブロックに対応付けしてRAM21に格納されている誤りビット数が所定の第1のエラー閾値TE1よりも大なる場合に、その読出対象となったブロックに対して、誤り訂正後のデータを再度書き込むという、いわゆるリフレッシュ処理を施す。更に、リフレッシュ処理部25は、各ブロックに対応付けして、そのブロックで実施されたリフレッシュ処理の回数を示す情報をRAM21に書き込む。尚、エラー閾値TE1とは、誤り訂正可能な誤りビット数の上限を表す値である。
【0021】
集中監視対象登録部26は、読出対象となったブロックに対応付けしてRAM21に格納されている読出回数が所定の第1の監視対象閾値TM1よりも大なる場合に、その読出対象となったブロックを、集中的に誤り検査の監視対象とする為の集中監視対象ブロックとして登録する。また、集中監視対象登録部26は、当該読出アクセス時に、誤り検出部22において所定の第2のエラー閾値TE2(TE1>TE2)よりも多い誤りが検出されたブロックも、集中監視対象ブロックとして登録する。すなわち、集中監視対象登録部26は、上記した集中監視対象ブロックを表す情報として、例えばブロックアドレス、ブロック番号等をRAM21に書き込む。
【0022】
優先監視対象登録部27は、RAM21に格納されているブロック毎の誤り情報、読出回数情報、及びリフレッシュ回数情報に基づき、データ破壊直前の状態にあるブロックを、優先的に誤り検査の監視対象とする為の優先監視対象ブロックとして選定する。優先監視対象登録部27は、当該優先監視対象ブロックを表す情報を、メモリセルアレイ10の優先監視リスト領域SAに書き込む。尚、優先監視対象登録部27による優先監視対象ブロックの選定方法については後述する。
【0023】
全体監視部28は、メモリセルアレイ10内の全てのブロックに対して以下のような全体監視処理を行う。すなわち、全体監視部28は、メモリセルアレイ10の全ブロックの全ページに対してデータの読出しを行う。ここでの全体監視処理は全ブロックの全ページを万遍なく読む必要があるため、例えば、全体監視部28は、第1ブロックの第4r(rは正の整数)ページのデータを順に読出し、次に第2ブロックの第4r+1ページのデータを順に読出し、第3ブロックの第4r+2ページのデータを順に読出す。最終ブロックまで4ページおきにデータの読出しが終わったら、第1ブロックに戻り、第4r+1ページのデータを順に読出し、次に第2ブロックの第4r+2ページのデータを順に読出し、第3ブロックの第4r+3ページのデータを順に読み出す。これを繰り返すことで、4ページおきに全ブロックの全ページに対して万遍なくデータの読出しを行うことができる。ここでは、4ページおきで全体監視処理を行う例を示したが、全体監視処理の精度によってデータの読出しを何ページおきに設定してもよい。この際、誤り検出部22にてブロック毎に検出された誤り情報を、各ブロックに対応づけしてRAM21に書き込む。
【0024】
集中監視部29は、RAM21に格納されている集中監視対象ブロックを表す情報に基づき、以下のような集中監視処理を実行する。すなわち、集中監視部29は、先ず、メモリセルアレイ10内の集中監視対象ブロックに対応したブロック内の全ページからデータを読み出す。そして、集中監視部29は、誤り検出部22において検出された誤り情報を、集中監視対象ブロックに対応したブロックに対応づけしてRAM21に書き込む。
【0025】
また、集中監視部29は、読出アクセスの対象となったブロックに対応づけしてRAM21に格納されている読出回数が第1の監視対象閾値TM1に到達した場合に、当該ブロックに対して上記した集中監視処理を行う。すなわち、集中監視部29は、補正読出回数が第1の監視対象閾値TM1に到達したブロックからデータを読み出し、この際、誤り検出部22において検出された誤りビットの数を示す誤り情報を、このブロックに対応付けしてRAM21に書き込む。尚、集中監視部29は、一旦、その読出回数が第1の監視対象閾値TM1に到達したブロックに対しては、それ以降、所定回数分の読出アクセスが為される度に、上記した集中監視処理を行う。
【0026】
優先監視部30は、電源が投入されると、メモリセルアレイ10の優先監視リスト領域SAから優先監視対象ブロックを表す情報を読み出し、メモリセルアレイ10に対して以下のような優先監視処理を実行する。すなわち、優先監視部30は、先ず、メモリセルアレイ10内の優先監視対象ブロックに対応したブロックからデータを読み出す。そして、優先監視部19は、誤り検出部22において検出された誤りビットの数を示す誤り情報を、優先監視対象ブロックに対応したブロックに対応づけしてRAM21に書き込む。
【0027】
尚、電源投入時には、RAM21に格納されている誤りビット数、読出回数、リフレッシュ回数、ブロックアドレス(ブロック番号)の値は全て、例えばゼロに初期化される。
次に、メモリ100に対して読出アクセスが為された場合に、メモリコントローラ20が実行する動作について説明する。
【0028】
読出アクセスに応じて、メモリコントローラ20は、その読出アクセスによって読出対象となったページからデータを読み出し、データDATとして出力する。更に、メモリコントローラ20は、その読出対象となった各ページのアドレスを示す読出アドレス情報をRAM21に書き込む。
【0029】
その後、メモリコントローラ20は、
図2に示す読出後処理に従った制御を実行する。
【0030】
図2において、先ず、メモリコントローラ20の読出回数カウンタ23は、上記した読出動作によって、読出対象となったブロック内で実施された読出の回数を、当該ブロックに対応付けしてRAM21に格納されている読出回数に加算することにより、読出回数を更新する(ステップS1)。
【0031】
次に、当該読出回数を、更新された読出回数としての読出回数RNが、第1の監視対象閾値TM1よりも大であるか否かを判定する(ステップS2)。
【0032】
ステップS2において、読出回数RNが第1の監視対象閾値TM1よりも大であると判定された場合、メモリコントローラ20の集中監視部29が、当該読出アクセスの対象となったブロックに対して、上記した集中監視処理を実行する(ステップS3)。
【0033】
一方、ステップS2において、読出回数RNが第1の監視対象閾値TM1以下であると判定された場合、メモリコントローラ20の誤り検出部22は、読出アクセスの対象となったブロックから読み出されたデータに誤り検出処理を施し、この際得られた誤りビットの数を、誤りビット数ENとして取得する(ステップS4)。
【0034】
次に、メモリコントローラ20は、誤りビット数ENが第1のエラー閾値TE1よりも大であるか否かを判定する(ステップS5)。
【0035】
ステップS5において、誤りビット数ENが第1のエラー閾値TE1よりも大であると判定された場合、メモリコントローラ20のリフレッシュ処理部25は、読出アクセスの対象となったブロックに対して、上記したリフレッシュ処理を施す(ステップS6)。つまり、リフレッシュ処理部25は、ブロック内で検出された誤りビットの数が誤り訂正可能な上限数(TE1)を超えた場合に、このブロックにリフレッシュ処理を施すのである。尚、当該リフレッシュ処理により、読出アクセスの対象となったブロックに対応付けしてRAM21に格納されている読出回数はゼロに初期化される。更に、このリフレッシュ処理により、読出アクセスの対象となったブロックに対応付けしてRAM21に格納されているリフレッシュ回数はインクリメントされる。
【0036】
一方、ステップS5において、誤りビット数ENが第1のエラー閾値TE1以下であると判定された場合、メモリコントローラ20は、当該誤りビット数ENが第2のエラー閾値TE2よりも大であるか否かを判定する(ステップS7)。
【0037】
ステップS7において、誤りビット数ENが第2のエラー閾値TE2よりも大であると判定された場合、メモリコントローラ20の読出回数補正部24は、読出アクセスの対象となったブロックに対応付けしてRAM21に格納されている読出回数を、監視対象閾値TM2と同一値に置換する(ステップS8)。すなわち、誤り訂正可能な数、つまりTE1より小であり且つTE2より大となる数のビット誤りが検出された場合には、このブロックでの読出回数を、強制的に監視対象閾値TM2と同一値に置換するのである。
【0038】
一方、ステップS7において、誤りビット数ENが第2のエラー閾値TE2以下であると判定された場合、読出回数補正部24は、
図3に示す読出回数増加補正処理を実行する(ステップS9)。
【0039】
図3において、先ず、読出回数補正部24は、読出アクセスによってRAM21に格納された、各ページの読出アドレスを示す情報に基づき、この読出アクセスが、互いに隣接して配置されているページ同士からその配置順にデータの読み出しを行う、シーケンシャルな読出アクセスであるか否かを判定する(ステップS31)。ステップS31において、シーケンシャルな読出アクセスであると判定された場合、読出回数補正部24は、読出対象となったページの数に対応した値を有する加算値ADを設定する(ステップS32)。つまり、シーケンシャルな読出アクセスによって読出対象となったページの数が多いほど、加算値ADも大となる。尚、読出対象となったページの数に対応した値を有する加算値ADを設定するにあたり、
図4に示すように、読出対象となったページ数がN(Nは2以上の整数)に到るまではそのページ数に対応した大きさの加算値ADを設定し、ページ数がN以上となった場合には、限度値ULで固定される加算値ADを設定するようにしても良い。
【0040】
一方、ステップS31において、シーケンシャルな読出アクセスではないと判定された場合、読出回数補正部24は、読出対象となったページ同士の間隔が、n(nは2以上の整数)ページ分以上離間しているか否かを判定する(ステップS33)。
【0041】
ステップS33において、読出対象となったページ同士の間隔がnページ分未満であると判定された場合、読出回数補正部24は、所定の固定値K(Kは正の整数)を加算値ADとして設定する(ステップS34)。
【0042】
一方、ステップS33において読出対象となったページ同士の間隔がnページ分以上離間していると判定された場合、読出回数補正部24は、ゼロを加算値ADとして設定する(ステップS35)。尚、ステップS33において読出対象となったページ同士の間隔がnページ分以上離間していると判定された場合には、読出回数補正部24は、読出回数への加算を実施しないようにしても良い。
【0043】
上記したステップS32、S34又はS35の実行後、読出回数補正部24は、加算値ADを、読出アクセスの対象となったブロックに対応付けしてRAM21に格納されている読出回数に加算し、その加算結果を新たな読出回数としてRAM21に上書きする(ステップS36)。かかるステップS36の実行後、読出回数補正部24は、読出回数増加補正ルーチンを抜けて、
図2に示すステップS9を終了する。
【0044】
図2においてステップS8又はS9の終了後、メモリコントローラ20の優先監視対象登録部27は、優先監視対象登録処理を実行する(ステップS10)。
【0045】
すなわち、優先監視対象登録部27は、先ず、RAM21に格納されているブロック毎の誤り情報、読出回数情報、リフレッシュ回数情報に基づき、データ破壊となる可能性が高い状態にあるブロックを選定する。すなわち、優先監視対象登録部27は、各ブロックのうちで、誤りビット数が所定の第3のエラー閾値TE3より大であり、リフレッシュ回数が所定の実行回数閾値TXより大であり、読出回数が第3の監視対象閾値TM3(TM1>TM3)より大となるブロックを、破壊の危険度が高い優先監視対象ブロックとして選定する。そして、優先監視対象登録部27は、当該優先監視対象ブロックを表す情報、例えばブロックアドレス又はブロック番号を、メモリセルアレイ10の優先監視リスト領域SAに書き込む。尚、複数の優先監視対象ブロックが検出された場合には、優先監視対象登録部27は、各優先監視対象ブロックを示す情報を優先監視リスト領域SAに追記して行く。この際、優先監視対象登録部27は、これら優先監視対象ブロックのうちで、リフレッシュ回数が多い順に上記した優先監視処理を実行させるように、優先監視対象ブロックを示す情報を優先監視リスト領域SAに追記して行く。尚、リフレッシュ回数が同一である場合には、優先監視対象登録部27は、誤りビットの数が多い順に優先監視処理を実行させるように、優先監視対象ブロックを示す情報を優先監視リスト領域SAに追記して行く。よって、優先監視部30は、リフレッシュ回数が多いブロック、誤りビット数が多いブロック、読出回数が多いブロックの順に優先順位を設定し、その優先順位に従った順に優先監視処理を実行する。
【0046】
かかるステップS10による優先監視対象登録処理の実行後、メモリコントローラ20は、
図2に示す読出後処理の実行を終了し、外部からのアクセス待ち状態に移行する。
【0047】
このアクセス待ち状態の間に、上記した全体監視部28による全体監視処理、及び集中監視部29による集中監視処理を実行するようにしても良い。更に、電源投入に応じて優先監視部30が実行する優先監視処理の直後に、読出アクセスが為されるか否かに拘わらず、全体監視部28による全体監視処理を実行するようにしても良い。尚、全体監視処理の実行中に読出アクセスが為された場合には、この全体監視処理を一旦中断し、
図2に示す読出後処理の終了後、その中断した箇所から全体監視処理を行う。また、優先監視部30による優先監視処理に関しては、電源投入時点のみならず、電源投入後、所定周期毎に実行するようにしても良い。
【0048】
以上のように、
図1に示すメモリコントローラ20は、ブロック毎に、そのブロック内で読出対象となったページの数を読出回数として計数する。メモリコントローラ20は、読出回数が所定の閾値(TM1)よりも多くなったブロックについては、読出動作に伴う劣化が進行していると判定し、当該ブロックを集中監視対象ブロックとして登録し、全ブロックのうちで集中監視対象ブロックに対して集中的に監視処理を施す。つまり、集中監視対象ブロックの各々からデータを読み出して誤り検出を行い、ブロック毎に誤りビットの数を集計する。この際、誤りビットの数が所定の閾値(TE1)を超えたブロックに対しては、メモリコントローラ20は、リフレッシュ処理(
図2のステップS6)を施すことにより、メモリセルの劣化に伴うデータ破壊を回避する。
【0049】
この際、全ブロックのうちで、比較的劣化が進行していると推定される集中監視対象ブロックを集中的に監視するようにしたので、早い段階でリフレッシュ処理を必要とするブロックを選定することができる。
【0050】
しかしながら、全ブロックのうちから集中監視対象ブロックを選定する為に用いる読出回数情報は、電源が遮断されるとゼロに初期化されてしまう。よって、破壊寸前まで劣化が進んでいるブロックが存在しているにも拘わらず、電源投入時点では、このブロックに対応した読出回数はゼロである。従って、このブロックが集中監視対象ブロックに登録される前に、当該ブロックに対する読出アクセスによってデータ破壊が生じてしまう虞がある。
【0051】
そこで、メモリコントローラ20では、読出アクセス対象となったブロック内で誤り訂正可能な程度の数(TE1より小でありTE2より大となる数)のビット誤りが検出された場合には、このブロックでの読出回数を、強制的に監視対象閾値TM2と同一値置換する(
図2のS8)ようにしている。尚、監視対象閾値TM2としては、上記した
監視対象閾値TM1と同一値を用いるようにしても良い。これにより、当該ブロックは、集中監視対象ブロックとして登録されることになり、直ちに集中監視処理が施されるようになる。
【0052】
これにより、劣化が進んでいるブロックが存在しているにも拘わらず、電源オフによって当該ブロックに対応付けされてRAM21に格納されている読出回数がゼロに初期化されてしまっても、このブロックに対して、早い段階で集中監視処理を施す、或いは優先監視対象ブロックとして選定することが可能となる。よって、データ破壊を未然に防ぐことが可能となる。
【0053】
更に、メモリコントローラ20では、全ブロックのうちで、劣化が進行しており且つ破壊の危険度が高いブロックを優先監視対象ブロックとして登録するようにしている。すなわち、メモリコントローラ20は、読出回数が所定の閾値(TM1)より大である(第1の条件)、誤りビット数が所定の閾値(TE3)より大である(第2の条件)、リフレッシュ回数が所定回数(TX)より大である(第3の条件)のうちのいずれか1つの条件を満たすブロックを、優先監視対象ブロックとして選定する。つまり、ブロックの劣化度合いは、読出回数のみならず、実施されたリフレッシュ処理の回数、誤りビットの数にも反映されるので、これらを考慮して破壊の危険度が高いブロックを精度良く検知するようにしたのである。そして、メモリコントローラ20は、当該優先監視対象ブロックを示す情報(ブロックアドレス又はブロック番号)を、不揮発性半導体メモリとしてのメモリセルアレイ20に書き込む。よって、優先監視対象ブロックを示す情報は、電源オフ後も、メモリセルアレイ20に保持される。そこで、メモリコントローラ20は、電源投入に応じて、先ず、メモリセルアレイ20に格納されている優先監視対象ブロックを示す情報を読み出し、当該優先監視対象ブロックに対して監視処理を施すのである。例えば、電源オフの前に、監視対象閾値TM1に到達しなかった為、集中監視処理対象とならなかったブロックに対しても、監視対象閾値TM3に達していれば優先監視対象となるため、電源投入時に優先監視処理が施される。つまり、電源オフ時に読出回数はゼロに初期化されるので、再び1から読出回数の計数が為されることになるが、読出回数が多いブロックの履歴を残すことで、このブロックを優先的に監視することが可能となる。
【0054】
従って、上記した優先監視対象ブロックの登録及び優先監視処理によれば、破壊寸前まで劣化が進んでいるブロックに対して、早い段階でリフレッシュ処理を施すことが可能となる。これにより、破壊寸前まで劣化が進んでいるブロックが存在していても、データ破壊を未然に防ぐことが可能となる。
【0055】
ところで、前述したようにブロックの劣化は読出回数の増加につれて進行するが、例えばNAND型のフラッシュメモリ等では、読出対象となったページのみならず、そのページに隣接する、少なくとも1つのページにもストレスが掛かって劣化するという、いわゆるリードディスターブが生じる。
【0056】
以下に、リードディスターブの影響により、読出対象となったページに隣接する1ページ分の範囲にストレスが掛かる場合を例にとって、各ページに掛かる読出動作に伴うストレス(以下、読出ストレスと称する)について、
図5(a)〜
図5(c)を参照しつつ説明する。尚、
図5(a)〜
図5(c)は、1つのブロック内に形成されている8ページ分の領域を模式的に表す図である。
【0057】
例えば、
図5(a)に示すように互いに2ページ以上離間した位置に配置されているページP3及びP7が読出対象(斜線にて示す)となる場合、ページP3と共に当該P3に隣接するP2及びP4にもストレスが掛かる。更に、ページP7と共に当該P7に隣接するP6及びP8にもストレスが掛かる。よって、この際、ページP2〜P4、及びP6〜P8に夫々1回分の読出ストレスが掛かる。
【0058】
また、
図5(b)に示すように互いに1ページ離間した位置に配置されているページP3及びP5が読出対象となると、ページP3と共に当該P3に隣接するP2及びP4にもストレスが掛かる。更に、ページP5と共に当該P5に隣接するP4及びP6にもストレスが掛かる。よって、この際、ページP2、P3、P5及びP6には夫々1回分の読出ストレスが掛かるが、ページP4には2回分の読出ストレスが掛かる。
【0059】
また、
図5(c)に示すように互いに隣接して配置されているページP3及びP4を連続して読出対象とする、いわゆるシーケンシャルな読出が為されると、ページP3と共に当該P3に隣接するP2及びP4にもストレスが掛かる。更に、ページP4と共に当該P4に隣接するP3及びP5にもストレスが掛かる。よって、この際、ページP2及び5に対しては1回分の読出ストレスが掛かるが、ページP3及びP4には夫々2回分の読出ストレスが掛かることになる。
【0060】
このように、
図5(a)〜
図5(c)に示される読出アクセスでは、読出回数は全て2回である。ところが、読出アクセスの対象となるページ同士の間隔が、
図5(b)に示すようにリードディスターブの影響を受ける範囲(P2、P4、P4、P6)が重なる程度に短い場合には、
図5(a)に示すように、その範囲(P2、P4、P6、P8)が互いに重ならない程度に離間している場合に比べて、1ページに集中する読出ストレスは大となる。また、この
図5(b)に示す状態よりも、
図5(c)に示すように、互いに隣接するページ同士を順次読出対象とする、いわゆるシーケンシャルアクセスを行う場合の方が1ページに集中する読出ストレスは大となる。
【0061】
よって、
図5(a)〜
図5(c)に示される例では読出回数が全て2回となるものの、ブロック劣化の進行度は、
図5(c)の形態で読出アクセスを行った場合が最も早く、
図5(a)の形態で読出アクセスを行った場合が最も遅くなる。
【0062】
そこで、メモリコントローラ20では、リードディスターブに伴ってメモリセルに掛かるストレスを考慮した読出回数となるように、実際に実行された読出の回数に対して
図3に示すような補正を施すようにしている。
【0063】
すなわち、
図5(a)に示すように、読出対象となったページ同士の間隔が、nページ分以上よりも大となる場合、つまりリードディスターブの影響を受ける範囲が重ならない場合には、ゼロを有する加算値ADを実際の読出回数に加算する(
図3のS35、S36)。つまり、この際、読出回数への加算を行わない。また、
図5(b)に示すように、読出対象となったページ同士の間隔がn(nは2以上の整数)ページ分未満となる場合、つまりリードディスターブの影響を受ける範囲が重なる場合には、所定の固定値Kを有する加算値ADを、実際の読出回数に加算する(
図3のS34、S36)。また、
図5(c)に示すように、隣接ページ同士が読出対象となるシーケンシャルアクセスが為された場合、つまり読出対象となったページの読み出しに伴うリードディスターブの影響が、読出対象となった隣接ページにも及ぶ場合には、そのページ数に対応した値を有する加算値ADを、実際の読出回数に加算(
図3のS32、S36)する。例えば、シーケンシャルアクセスされるページ数がw(wは2以上の整数)ページとなる場合には、加算値ADを”w”又は”w”に所定の係数を乗算した値に設定し、この加算値ADを、実際の読出回数に加算する。
尚、
図5(a)〜
図5(c)では、リードディスターブの影響を受ける範囲が隣接する1ページ分だけとなっているが、隣接する2ページ分、或いは隣接する3ページ分以上を、リードディスターブの影響を受ける範囲と捉えて加算値ADを設定するようにしても良い。この際、読出対象となったページから遠いページほど、掛かるストレスが弱いので、読出対象となったページからの距離に応じて、隣接する複数のページに対応させて加算する加算値ADの値を設定するようにしても良い。つまり、読出対象となったページから遠いページほど加算値ADの値を小さくするのである。
【0064】
したがって、かかる読出回数補正によれば、リードディスターブの影響を反映させた読出回数に基づき、監視対象とするブロックが選定されるようになるので、リードディスターブに伴うデータ破壊を未然に且つ確実に防ぐことが可能となる。
【0065】
要するに、メモリ制御装置としてのメモリコントローラ20は、以下の読出回数カウンタ、監視対象登録部、監視部、及び読出回数補正部を有することにより、リードディスターブに伴うデータの破壊を未然に且つ確実に防ぐのである。つまり、読出回数カウンタ(23)は、データの読出によって読出対象となるブロックから読み出されたページの数を読出回数としてブロック毎に計数する。監視対象登録部(26、27)は、この読出回数に基づき、複数のブロックのうちから誤り検査の監視対象となるブロックを監視対象ブロックとして選定する。監視部(29、30)は、読出対象となったブロック又は監視対象ブロックからデータを読み出し、読み出されたデータに対して誤り検出処理を施して得られた誤りビットの数をブロック毎に計数する監視処理を実行する。リフレッシュ部(25)は、監視対象ブロックに対応した誤りビットの数が所定の第1のエラー閾値(TE1)より大きい場合に監視対象ブロックに対してリフレッシュ処理を施す。そして、読出回数補正部(24)は、読出対象となるブロック内において互いに隣接するページから順に読み出しが為される場合には読出対象となるページの数に対応した値を読出回数に加算する(
図3のS31、S32、S36)。また、読出回数補正部は、読出対象となるブロック内において読出対象となるページ同士の間隔がnページ(nは2以上の整数)分未満となる場合には所定の固定値(K)を読出回数に加算する(
図3のS33、S34、S36)。また、読出回数補正部は、読出対象となるブロック内において読出対象となるページ同士の間隔がnページ分以上となる場合には読出回数への加算を行わない(
図3のS33、S35、S36)。