(57)【要約】【課題】基準セルにおけるデータの劣化に起因する一般セルにおけるデータ劣化の有無についての誤判定を抑制する。【解決手段】判定部は、基準セルに記憶されたデータを読み出すときに流れる読み出し電流を基準として基準セル以外の複数の一般セルの各々に記憶されたデータの劣化の有無を判定する。カウント部は、複数の一般セルのうち、判定部によってデータの劣化有りと判定された一般セルの数をカウントする。修復部は、カウント部によるカウント値が第１の値よりも小さい場合には、データの劣化有りと判定された一般セルの各々に記憶されたデータの修復を行い、カウント値が第１の値よりも大きい場合には、基準セルに記憶されたデータの修復を行う。【選択図】図６
2017191623.tif 000002
【特許請求の範囲】
【請求項１】
基準セルに記憶されたデータを読み出すときに流れる読み出し電流を基準として前記基準セル以外の複数の一般セルの各々に記憶されたデータの劣化の有無を判定する判定部と、
前記複数の一般セルのうち、前記判定部によってデータの劣化有りと判定された一般セルの数をカウントするカウント部と、
前記カウント部によるカウント値が第１の値よりも小さい場合には、前記データの劣化有りと判定された一般セルの各々に記憶されたデータの修復を行い、前記カウント値が前記第１の値よりも大きい場合には、前記基準セルに記憶されたデータの修復を行う修復部と、
を含むデータ修復装置。
【請求項２】
前記判定部は、複数の前記基準セルに記憶されたデータに基づく互いに異なる複数の基準に基づいて前記複数の一般セルの各々に記憶されたデータの劣化の有無を判定する
請求項１に記載のデータ修復装置。
【請求項３】
前記判定部は、
第１の基準セルによって定められる第１の基準と、前記一般セルに記憶されたデータを読み出すときに流れる読み出し電流の大きさと、の大小関係を判定する第１の判定を行い、
第２の基準セルによって定められる、前記第１の基準とは異なる第２の基準と、前記一般セルに記憶されたデータを読み出すときに流れる読み出し電流の大きさと、の大小関係を判定する第２の判定を行い、
前記第１の判定における判定結果と前記第２の判定における判定結果とが不一致の場合に前記一般セルに記憶されたデータに劣化有りと判定する
請求項２に記載のデータ修復装置。
【請求項４】
前記基準セルおよび前記一般セルの各々は、記憶するデータの値に応じた量の電荷を蓄積する電荷蓄積部を有し、
前記修復部は、前記電荷蓄積部に蓄積される電荷の量を増減させることによって前記基準セルに記憶されたデータまたは前記一般セルに記憶されたデータの修復を行う
請求項１から請求項３のいずれか１つに記載のデータ修復装置。
【請求項５】
前記修復部は、前記カウント値がゼロとなるように前記基準セルに記憶されたデータまたは前記一般セルに記憶されたデータの修復を行う
請求項１から請求項４のいずれか１つに記載のデータ修復装置。
【請求項６】
基準セルに記憶されたデータを読み出すときに流れる読み出し電流を基準として前記基準セル以外の複数の一般セルの各々に記憶されたデータの劣化の有無を判定し、
前記複数の一般セルのうち、データの劣化有りと判定された一般セルの数をカウントしたカウント値を取得し、
前記カウント値が第１の値よりも小さい場合には、前記データの劣化有りと判定された一般セルの各々に記憶されたデータの修復を行い、前記カウント値が前記第１の値よりも大きい場合には、前記基準セルに記憶されたデータの修復を行う
データ修復方法。
【請求項７】
コンピュータに、
基準セルに記憶されたデータを読み出すときに流れる読み出し電流を基準として前記基準セル以外の複数の一般セルの各々に記憶されたデータの劣化の有無を判定し、
前記複数の一般セルのうち、データの劣化有りと判定された一般セルの数をカウントしたカウント値を取得し、
前記カウント値が第１の値よりも小さい場合には、前記データの劣化有りと判定された一般セルの各々に記憶されたデータの修復を行い、前記カウント値が前記第１の値よりも大きい場合には、前記基準セルに記憶されたデータの修復を行う
ことを含む処理を実行させるデータ修復プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
開示の技術は、メモリセルに記憶されたデータを修復するデータ修復装置、データ修復方法およびプログラムに関する。
【背景技術】
【０００２】
フラッシュメモリ等の不揮発性半導体メモリのメモリセルに記憶されたデータは時間とともに劣化する場合がある。メモリセルにおける劣化したデータを修復する手法として、以下の手法が提案されている。
【０００３】
１つの手法では、選択メモリセルに対して通常読出電圧による通常読出を行って通常読出データＤｕを取得し、その後、通常読出電圧よりも高い電圧によるマージンチェック読出を行ってマージンチェック読出データＤｍを取得する。通常読出データＤｕとマージンチェック読出データＤｍとが不一致の場合に、選択メモリセルに正しいデータを再書込する。
【０００４】
また、他の手法では、複数のメモリセルからなるブロックに含まれるメモリセルのデータ劣化状態を検出する。追加書込みによりデータ修復が不可能な劣化状態のメモリセルに対して、そのメモリセルを含む消去ブロックに通常の消去よりしきい値変化が小さい弱消去動作を施す。その後、再度セルデータの劣化状態を検査し、劣化が検出されたメモリセルのデータ修復を行う。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平９−３２０３００号公報
【特許文献２】特開平１１−１６３８０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
メモリセルに記憶されたデータの修復において、各メモリセルにおけるデータ劣化の有無を判定するために基準セルを用いる場合がある。すなわち、基準セルに記憶されたデータを読み出すときに流れる読み出し電流を基準として基準セル以外の複数の一般セルの各々に記憶されたデータの劣化の有無を判定し、データ劣化有りと判定された一般セルを対象としてデータ修復を行う。
【０００７】
基準セルは、一般セルと同じ構造のメモリセルであることから、基準セルに記憶されたデータも一般セルに記憶されたデータと同様に劣化するおそれがある。基準セルにデータ劣化が生じた場合には、不適切な基準によって一般セルについてデータ劣化の有無が判定されることになる。この場合、データ劣化が生じていない多数の健全な一般セルについてデータ劣化が生じていると誤判定がなされるおそれがある。そして、誤判定された多数の一般セルを対象としてデータ修復が行われることとなるので、データ修復に膨大な時間を要する。更に、基準セルにおいては、時間経過とともにデータ劣化が進行し、誤判定される一般セルの数は膨大となる。
【０００８】
開示の技術は、基準セルにおけるデータの劣化に起因する一般セルにおけるデータ劣化の有無についての誤判定を抑制することを目的とする。
【課題を解決するための手段】
【０００９】
開示の技術に係るデータ修復装置は、判定部、カウント部および修復部を含む。前記判定部は、基準セルに記憶されたデータを読み出すときに流れる読み出し電流を基準として前記基準セル以外の複数の一般セルの各々に記憶されたデータの劣化の有無を判定する。前記カウント部は、前記複数の一般セルのうち、前記判定部によってデータの劣化有りと判定された一般セルの数をカウントする。前記修復部は前記カウント部によるカウント値が第１の値よりも小さい場合には前記データの劣化有りと判定された一般セルの各々に記憶されたデータの修復を行い前記カウント値が前記第１の値よりも大きい場合には前記基準セルに記憶されたデータの修復を行う。
【発明の効果】
【００１０】
開示の技術は、一つの側面として、基準セルにおけるデータの劣化に起因する一般セルにおけるデータ劣化の有無についての誤判定を抑制するという効果を奏する。
【図面の簡単な説明】
【００１１】
【図１Ａ】チャージゲインによるデータ劣化を示す模式図である。
【図１Ｂ】チャージロスによるデータ劣化を示す模式図である。
【図２Ａ】消去状態にあるメモリセルの初期時点における電流分布の一例である。
【図２Ｂ】消去状態にあるメモリセルの初期時点からある時間が経過した後の電流分布の一例である。
【図２Ｃ】図２Ｂに示す時点から更に時間が経過した後の電流分布の一例である
【図３Ａ】プログラム状態にあるメモリセルの初期時点における電流分布の一例である。
【図３Ｂ】プログラム状態にあるメモリセルの初期時点からある時間が経過した後の電流分布の一例である。
【図３Ｃ】図３Ｂに示す時点から更に時間が経過した後の電流分布の一例である。
【図４】比較例に係るデータ修復方法を示すフローチャートである。
【図５Ａ】基準セルに記憶されたデータの劣化の進行を示す図である。
【図５Ｂ】基準セルに記憶されたデータの劣化の進行を示す図である。
【図５Ｃ】基準セルに記憶されたデータの劣化の進行を示す図である。
【図６】開示の技術の実施形態に係る電子機器の構成を示す機能ブロック図である。
【図７】開示の技術の実施形態に係るデータ修復装置を実現するコンピュータの構成を示すブロック図である。
【図８】開示の技術の実施形態に係るデータ修復装置において実施される処理の流れを示すフローチャートである。
【図９】開示の技術の実施形態に係るデータ修復装置において実施される処理の流れを示すフローチャートである。
【図１０】開示の技術の実施形態に係るデータ修復装置において実施される処理の流れを示すフローチャートである。
【図１１】開示の技術の実施形態に係るデータ修復装置において実施される処理の流れを示すフローチャートである。
【図１２】開示の技術の実施形態に係るデータ修復装置において実施される処理の流れを示すフローチャートである。
【図１３Ａ】データ修復前の読み出し電流の分布を示す図である。
【図１３Ｂ】修復プログラム処理後における読み出し電流の分布を示す図である。
【図１４】開示の技術の実施形態に係るデータ修復装置において実施される処理の流れを示すフローチャートである。
【図１５Ａ】データ修復前の読み出し電流の分布を示す図である。
【図１５Ｂ】修復消去処理後の読み出し電流の分布を示す図である。
【図１５Ｃ】ＡＰＤＥ処理後の読み出し電流の分布を示す図である。
【図１５Ｄ】一般セルのＣＬ劣化修復フロー実施後の読み出し電流の分布を示す図である。
【図１６】開示の技術の実施形態に係るデータ修復装置において実施される処理の流れを示すフローチャートである。
【図１７Ａ】データ修復前の読み出し電流の分布を示す図である。
【図１７Ｂ】基準セルに対する修復プログラム処理後の読み出し電流の分布を示す図である。
【図１８】開示の技術の実施形態に係るデータ修復装置において実施される処理の流れを示すフローチャートである。
【図１９Ａ】データ修復前の読み出し電流Ｉｄの分布を示す図である。
【図１９Ｂ】基準セルに対する修復消去処理後の読み出し電流の分布を示す図である。
【発明を実施するための形態】
【００１２】
はじめに、不揮発性半導体メモリの一種であるフラッシュメモリを構成する複数のメモリセルの各々に記憶されたデータの劣化について説明する。
【００１３】
図１Ａおよび図１Ｂは、フラッシュメモリを構成するメモリセル１０の構造を示す模式図であり、図１Ａは、チャージゲイン（ＣＧ）によるデータ劣化を示し、図１Ｂはチャージロス（ＣＬ）によるデータ劣化を示している。
【００１４】
メモリセル１０は、半導体基板１１の表層部に形成されたドレイン１２およびソース１３、半導体基板１１上に積層されたフローティングゲート１４およびコントロールゲート１５を含んで構成されている。図１Ａの左側は、電荷蓄積部として機能するフローティングゲート１４に電荷が殆ど蓄積されていない消去状態であり且つデータ劣化が生じていない初期状態を示している。この状態は、メモリセル１０に例えばデータ“０”が書き込まれた状態に対応している。この状態において、メモリセル１０から読み出される読み出し電流Ｉｄの大きさは比較的大きい。チャージゲイン（ＣＧ）によるデータ劣化は、図１Ａの右側に示すように、フローティングゲート１４に蓄積される電荷の量が時間経過とともに増加することにより生じる。チャージゲイン（ＣＧ）によるデータ劣化が生じると、メモリセル１０から読み出される読み出し電流Ｉｄの大きさは、初期状態と比較して小さくなる。
【００１５】
図１Ｂの左側は、フローティングゲート１４に多数の電荷が蓄積されているプログラム状態であり且つデータ劣化が生じていない初期状態を示している。この状態は、メモリセル１０に例えばデータ“１”が書き込まれた状態に対応している。この状態において、メモリセル１０から読み出される読み出し電流Ｉｄの大きさは比較的小さい。チャージロス（ＣＬ）によるデータ劣化は、図１Ｂの右側に示すように、フローティングゲート１４に蓄積された電荷の量が時間とともに減少することにより生じる。チャージロス（ＣＬ）によるデータ劣化が生じると、メモリセル１０から読み出される読み出し電流Ｉｄの大きさは、初期状態と比較して大きくなる。
【００１６】
図２Ａ、図２Ｂ、図２Ｃは、チャージゲイン（ＣＧ）によるデータ劣化の進行を示す図である。一方、図３Ａ、図３Ｂ、図３Ｃは、チャージロス（ＣＬ）によるデータ劣化の進行状態を示す図であり、それぞれ、横軸にセル数をとり、縦軸にメモリセルの読み出し電流Ｉｄの大きさをとった分布図である。
【００１７】
各図において、基準Ｒは、読み出し電流Ｉｄの大きさが、消去状態（データ“０”）に対応するものなのか、プログラム状態（データ“１”）に対応するものなのかを判定するための基準値である。すなわち、読み出し電流Ｉｄの大きさが、基準Ｒよりも大きい場合にメモリセルが消去状態（データ“０”）であると判定され、読み出し電流Ｉｄの大きさが、基準Ｒよりも小さい場合にメモリセルがプログラム状態（データ“１”）であると判定される。また、各図において、基準Ｅは、消去状態にあるメモリセルに記憶されたデータの劣化の有無を判定するための基準値である。また、各図において、基準Ｐは、プログラム状態にあるメモリセルに記憶されたデータの劣化の有無を判定するための基準値である。
【００１８】
基準Ａ、基準Ｅ、基準Ｒ、基準Ｐのレベルは、それぞれ、フラッシュメモリ内に設けられた基準セルにおける読み出し電流Ｉｄの大きさに相当する。基準セルの各々は、基準セル以外の一般セルと同じ構造を有するメモリセルである。基準セルの読み出し電流Ｉｄの大きさをフローティングゲート１４に蓄積される電荷の量によって調整することで、基準Ａ、基準Ｅ、基準Ｒ、基準Ｐのレベルが設定される。
【００１９】
図２Ａは、消去状態にあるメモリセルの初期時点における電流分布の一例である。図２Ａには、消去状態にあるメモリセルの読み出し電流Ｉｄの大きさが、基準Ａと基準Ｅの間の範囲に分布している理想的な状態が示されている。
【００２０】
図２Ｂは、消去状態にあるメモリセルの初期時点からある時間が経過した後の電流分布の一例である。図２Ｂには、消去状態にある一部のメモリセルにおいて、チャージゲイン（ＣＧ）によるデータ劣化が発生し、読み出し電流Ｉｄの大きさが初期時点から低下して基準Ｅと基準Ｒの間に分布している状態が示されている。
【００２１】
図２Ｃは、図２Ｂに示す時点から更に時間が経過した後の電流分布の一例である。図２Ｃには、消去状態にある一部のメモリセルにおいて、チャージゲイン（ＣＧ）によるデータ劣化が進行し、読み出し電流Ｉｄの大きさが更に低下して基準Ｒを下回っている状態が示されている。消去状態にあるメモリセルの読出し電流Ｉｄの大きさが基準Ｒを下回ることは、当該メモリセルに記憶されたデータが不良であることを意味する。このような不良データの発生を抑制するために、読み出し電流Ｉｄの大きさが基準Ｅと基準Ｒの間の範囲に分布している段階で、すなわち、データ劣化が認められた段階で、当該メモリセルに記憶されたデータを修復することが好ましい。
【００２２】
一方、図３Ａは、プログラム状態にあるメモリセルの初期時点における電流分布の一例である。図３Ａには、プログラム状態にあるメモリセルにおいて、読み出し電流Ｉｄの大きさが、基準Ｐよりも小さい範囲に分布している理想的な状態が示されている。
【００２３】
図３Ｂは、プログラム状態にあるメモリセルの初期時点からある時間が経過した後の電流分布の一例である。図３Ｂには、プログラム状態にある一部のメモリセルにおいて、チャージロス（ＣＬ）によるデータ劣化が発生し、読み出し電流Ｉｄの大きさが初期時点から増加して基準Ｐと基準Ｒの間の範囲に分布している状態が示されている。
【００２４】
図３Ｃは、図３Ｂに示す時点から更に時間が経過した後の電流分布の一例である。図３Ｃには、プログラム状態にある一部のメモリセルにおいて、チャージロス（ＣＬ）によるデータ劣化が進行し、読み出し電流Ｉｄの大きさが更に増加して基準Ｒを上回っている状態が示されている。プログラム状態にあるメモリセルの読出し電流Ｉｄの大きさが基準Ｒを上回ることは、当該メモリセルに記憶されたデータが不良であることを意味する。このような不良データの発生を抑制するために、読み出し電流Ｉｄの大きさが基準Ｐと基準Ｒの間の範囲に分布している段階で、すなわち、データ劣化が認められた段階で、当該メモリセルに記憶されたデータを修復することが好ましい。
【００２５】
図４は、開示の技術の比較対象とされる比較例に係るデータ修復方法を示すフローチャートである。
【００２６】
ステップＳ１において、本ルーチンにおける処理対象として最初のアドレス値０のメモリセルを選択する。
【００２７】
ステップＳ２において、選択したメモリセル（以下選択メモリセルという）についてデータの読み出しを行う。すなわち、選択メモリセルについて読み出し電流Ｉｄの大きさを特定する。
【００２８】
ステップＳ３において、選択メモリセルの読み出し電流Ｉｄの大きさに基づいて、選択メモリセルに記憶されたデータの劣化の有無を判定する。より具体的には、選択メモリセルが消去状態にある場合には、読み出し電流Ｉｄの大きさが基準Ｒよりも大であり且つ基準Ｅよりも小である場合に当該選択メモリセルについてデータ劣化有りと判定し、それ以外の場合にデータ劣化無しと判定する。一方、選択メモリセルがプログラム状態にある場合には、読み出し電流Ｉｄの大きさが基準Ｒよりも小であり且つ基準Ｐよりも大である場合に当該選択メモリセルについてデータ劣化有りと判定し、それ以外の場合にデータ劣化無しと判定する。
【００２９】
選択メモリセルについてデータ劣化有りと判定した場合には、ステップＳ４において、選択メモリセルに記憶されたデータの修復を行う。一方、選択メモリセルについてデータ劣化無しと判定した場合には、ステップＳ５において、選択メモリセルが最終アドレス値に対応するメモリセルであるか否かを判定する。選択メモリセルが最終アドレス値に対応するメモリセルではない場合には、ステップＳ６において、アドレス値を１つインクリメントすることにより選択メモリセルを変更して処理をステップＳ２に戻す。ステップＳ２からＳ６までの処理が繰り返し実行されることで、全てのメモリセルについてデータ劣化の有無が判定され、データ劣化有りと判定されたメモリセルの各々についてデータ修復が行われる。ステップＳ５において選択メモリセルが最終アドレス値に対応するメモリセルであると判定した場合には本ルーチンが終了する。
【００３０】
上記のように、比較例に係るデータ修復方法によれば、基準セルの読み出し電流Ｉｄの大きさに相当する基準Ｅ、Ｒ、Ｐに基づいて一般セルの各々についてデータ劣化の有無が判定され、データ劣化有りと判定された一般セルに対してのみデータ修復が行われる。しかしながら、基準セルは一般セルと同じ構造を有していることから、基準セルに記憶されたデータも一般セルに記憶されたデータと同様に劣化するおそれがあり、データ修復対象を一般セルのみとした場合には、以下のような問題が生じるおそれがある。
【００３１】
図５Ａ、図５Ｂおよび図５Ｃは、基準セルに記憶されたデータの劣化の進行を示す図であり、それぞれ、横軸にセル数をとり、縦軸にメモリセルの読み出し電流Ｉｄの大きさをとった分布図である。
【００３２】
図５Ａは、消去状態およびプログラム状態にあるメモリセルの初期時点における電流分布の一例である。図５Ａには、消去状態にある全てのメモリセルの読み出し電流Ｉｄの大きさが基準Ａと基準Ｅの間の範囲に分布し、プログラム状態にある全てのメモリセルの読み出し電流Ｉｄの大きさが基準Ｐよりも小さい範囲に分布している理想的な状態が示されている
【００３３】
図５Ｂは、初期時点からある時間が経過した後の電流分布の一例である。図５Ｂには、基準Ｅに対応する基準セルにおいてチャージロス（ＣＬ）によるデータ劣化が発生し、基準Ｅのレベルが初期時点から上昇した状態が示されている。基準Ｅのレベルが上昇した場合には、消去状態にある一般セルにおいて、電流分布に変動がない場合でも、図５Ｂにおいてハッチングで示されるように、基準Ｅを下回るものが多発するおそれがある。すなわち、この場合、消去状態にある一般セルにおいて、データ劣化有りと誤判定されるものが多発する。
【００３４】
また、図５Ｂには、基準Ｐに対応する基準セルにおいてチャージゲイン（ＣＧ）によるデータ劣化が発生し、基準Ｐのレベルが初期時点から低下した状態が示されている。基準Ｐのレベルが低下した場合には、プログラム状態にある一般セルにおいて、電流分布に変動がない場合でも、図５Ｂにおいてハッチングで示されるように、基準Ｐを上回るものが多発するおそれがある。すなわち、この場合、プログラム状態にある一般セルにおいて、データ劣化有りと誤判定されるものが多発する。
【００３５】
図５Ｃは、図５Ｂに示す時点から更に時間が経過した後の電流分布の一例である。図５Ｃには、基準Ｅに対応する基準セルにおいてデータ劣化が進行し、基準Ｅのレベルが更に上昇するとともに、基準Ｐに対応する基準セルにおいてデータ劣化が進行し、基準Ｐのレベルが更に低下した場合が示されている。基準セルにおいてデータ劣化が進行した場合には、図５Ｃにおいてハッチングで示されるように、一般セルにおいてデータ劣化有りと判定されるものの数が膨大となる。従って、データ修復対象となる一般セルの数が膨大となり、データ修復に要する時間も膨大となる。また、本来データ修復の必要のない健全な一般セルに対してデータ修復が行われることとなる。
【００３６】
以下に、開示の技術の実施形態の一例を図面を参照しつつ説明する。
【００３７】
図６は、開示の技術の実施形態に係る電子機器１００の構成を示す機能ブロック図である。電子機器１００は、データ修復装置３０と、データ修復装置３０によるデータ修復の対象とされるフラッシュメモリ２０と、フラッシュメモリ２０に対するデータの読み書き等を制御するメモリコントローラ２３と、を含んで構成されている。
【００３８】
フラッシュメモリ２０は、メモリセルとしての複数の基準セル２１および複数の一般セル２２を含んで構成されている。基準セル２１および一般セル２２の各々の構造は、図１に示すメモリセル１０と同じである。複数の基準セル２１は、それぞれ、図２等に示される基準Ａ、基準Ｅ、基準Ｒ、基準Ｐにそれぞれ対応している。すなわち、複数の基準セル２１のフローティングゲートには予め所定量の電荷が蓄積されており、それぞれの読み出し電流Ｉｄの大きさが、基準Ａ、基準Ｅ、基準Ｒ、基準Ｐのレベルに相当する。複数の一般セル２２の各々には、例えば、電子機器１００の機能を実現するために必要とされるデータが記憶される。一般セル２２の各々は、個々にアドレス値が割り当てられており、アドレス値を指定することによって指定したアドレス値に対応する一般セルにアクセスすることが可能である。
【００３９】
データ修復装置３０は、後述する手順に従って、基準セル２１または一般セル２２に記憶されたデータの修復を行う。データ修復装置３０は、判定部３１、カウント部３２および修復部３３を含んで構成されている。
【００４０】
判定部３１は、基準セル２１に記憶されたデータを読み出すときに流れる読み出し電流Ｉｄを基準として一般セル２２の各々に記憶されたデータの劣化の有無を判定する。すなわち、判定部３１は、基準Ｅ、基準Ｒ、基準Ｐと、一般セル２２に記憶されたデータを読み出すときに流れる読み出し電流Ｉｄの大きさとを比較した結果に基づいて、一般セル２２に記憶されたデータの劣化の有無を判定する。
【００４１】
カウント部３２は、判定部３１においてデータの劣化有りと判定された一般セル２２の数をカウントし、そのカウント値を出力する。
【００４２】
修復部３３は、カウント部３２から出力されたカウント値が所定値よりも小さい場合にはデータの劣化有りと判定された一般セル２２の各々に記憶されたデータの修復を行い、カウント値が所定値よりも大きい場合には基準セル２１に記憶されたデータの修復を行う。すなわち、データ修復装置３０は、データに劣化が生じていると判定された一般セル２２の数に応じて基準セル２１および一般セル２２のいずれか一方をデータ修復対象として選択する。
【００４３】
メモリコントローラ２３は、データ修復装置３０からの指令に基づいて、基準セル２１および一般セル２２に対するデータの読み書きおよびデータ修復等のメモリ動作を制御する。
【００４４】
データ修復装置３０は、例えば、図７に示すコンピュータ４０によって実現することができる。コンピュータ４０はＣＰＵ（Central Processing Unit）４１、一時記憶領域を提供する主記憶装置４２、及び不揮発性の記憶領域を提供する補助記憶装置４３を備える。また、コンピュータ４０は、メモリコントローラ２３に接続される入出力インターフェース（Ｉ／Ｆ）４４を備える。ＣＰＵ４１、主記憶装置４２、補助記憶装置４３、入出力Ｉ／Ｆ４４は、バス４５を介して互いに接続されている。
【００４５】
補助記憶装置４３は、Hard Disk Drive（ＨＤＤ）、solid state drive（ＳＳＤ）、フラッシュメモリ等によって実現できる。補助記憶装置４３には、コンピュータ４０をデータ修復装置３０として機能させるためのデータ修復プログラム５０が記憶されている。ＣＰＵ４１は、データ修復プログラム５０を補助記憶装置４３から読み出して主記憶装置４２に展開し、データ修復プログラム５０に記述されたプロセスを順次実行することで、判定部３１、カウント部３２および修復部３３として機能する。データ修復プログラム５０は、例えば、データ修復装置３０の外部から供給される指令に基づいて実行されてもよい。あるいは、データ修復装置３０に時計機能を付加し、データ修復プログラム５０を定期的（例えば６０日毎）に実行するように構成してもよい。
【００４６】
図８は、データ修復プログラム５０を実行するＣＰＵ４１において行われる処理の大まかな流れを示すフローチャートである。
【００４７】
ステップＳ１１においてＣＰＵ４１は、フラッシュメモリ２０を構成する複数の一般セル２２のうち、最初のアドレス値０に対応するものを、本ルーチンにおける処理対象として選択する（以下、選択された一般セルを選択セルという）。また、ＣＰＵ４１は、データに劣化を生じていると判定とされた一般セル２２の累積数を示すカウント値（以下、劣化セル数カウント値Ｃと称する）を０にリセットする。
【００４８】
ステップＳ１２においてＣＰＵ４１は、選択セルに記憶されたデータの読み出しを行うようにメモリコントローラ２３に指令を与え、選択セルの読み出し電流Ｉｄの大きさを特定する。
【００４９】
ステップＳ１３においてＣＰＵ４１は、基準セル２１の読み出し電流Ｉｄによって定められる基準Ｅ、基準Ｒ、基準Ｐと、選択セルの読み出し電流Ｉｄの大きさとを比較した結果に基づいて、選択セルに記憶されたデータが劣化しているか否かを判定する。ＣＰＵ４１は、選択セルに記憶されたデータが劣化していると判定した場合には処理をステップＳ１４に移行し、劣化していないと判定した場合には処理をステップＳ１５に移行する。
【００５０】
ステップＳ１４においてＣＰＵ４１は、劣化セル数カウント値Ｃを１つカウントアップして処理をステップＳ１５に移行する。
【００５１】
ステップＳ１５においてＣＰＵ４１は、選択セルが最終のアドレス値に対応するものであるか否かを判定する。ＣＰＵ４１は、選択セルが最終のアドレス値に対応するものではないと判定した場合には処理をステップＳ１６に移行し、選択セルが最終のアドレス値に対応するものであると判定した場合には処理をステップＳ１７に移行する。
【００５２】
ステップＳ１６においてＣＰＵ４１は、アドレス値を１つインクリメントして処理をステップＳ１２に戻す。これにより、新たな一般セル２２が選択セルとして指定され、新たな一般セル２２についてステップＳ１２からステップＳ１６までの処理が実施される。ステップＳ１２からステップＳ１６までの処理が繰り返されることで、全ての一般セル２２についてデータ劣化の有無が判定され、劣化有りと判定されるたびに劣化セル数カウント値が１つずつカウントアップされる。これにより、データ劣化を生じている一般セル２２の総数が特定される。
【００５３】
ステップＳ１７においてＣＰＵ４１は、劣化セル数カウント値Ｃがゼロであるか否かを判定する。ＣＰＵ４１は、劣化セル数カウント値Ｃがゼロではないと判定した場合には処理をステップＳ１８に移行し、劣化セル数カウント値Ｃがゼロであると判定した場合には本ルーチンは終了する。
【００５４】
ステップＳ１８においてＣＰＵ４１は、劣化セル数カウント値Ｃが所定値Ｘよりも大であるか否かを判定する。ＣＰＵ４１は、劣化セル数カウント値Ｃが所定値Ｘよりも大ではないと判定した場合には、一般セル２２にデータ劣化が生じているものとみなし、処理をステップＳ１９に移行する。一方、ＣＰＵ４１は、劣化セル数カウント値Ｃが所定値Ｘよりも大であると判定した場合には、基準セル２１にデータ劣化が生じているものとみなし、処理をステップＳ２０に移行する。なお、所定値Ｘは、基準セル２１に記憶されたデータに劣化が生じていることを検出することができる値に適宜設定される。すなわち、基準セル２１にデータ劣化が生じている場合には、この基準セル２１による基準によって一般セル２２のデータ劣化の有無を判定すると、データ劣化有りと判定される一般セル２２の数が異常に多くなることが想定される（図５Ｂ、図５Ｃ参照）。従って、劣化セル数カウント値Ｃがある値を超えた場合には、基準セル２１にデータ劣化が生じていると判定することができる。一例として、所定値Ｘを１０に設定してもよい。
【００５５】
ステップＳ１９においてＣＰＵ４１は、データ劣化有りと判定された一般セル２２の各々を対象としてデータ修復を行うようにメモリコントローラ２３に指令を与える。ＣＰＵ４１は、データ修復が完了すると処理をステップＳ１１に戻す。
【００５６】
ステップＳ２０においてＣＰＵ４１は、基準セル２１を対象としてデータ修復を行うようにメモリコントローラ２３に指令を与える。ＣＰＵ４１は、データ修復が完了すると処理をステップＳ１１に戻す。すなわち、ステップＳ１９およびＳ２０におけるデータ修復は、劣化セル数カウント値Ｃがゼロとなるまで繰り返される。
【００５７】
以上のように、開示の技術の実施形態に係るデータ修復装置３０によれば、基準セル２１の読み出し電流Ｉｄを基準として複数の一般セル２２の各々に記憶されたデータの劣化の有無が判定される。また、データの劣化有りと判定された一般セルの数をカウントした劣化セル数カウント値Ｃが取得される。ここで、劣化セル数カウント値Ｃが所定値Ｘよりも大きい場合には、基準セル２１にデータ劣化が生じていると推定される。従って、この場合、データ修復装置３０は基準セルに記憶されたデータの修復を行う。一方、劣化セル数カウント値Ｃが所定値Ｘよりも小さい場合には、一般セル２２にデータ劣化が生じていると推定される。従って、この場合、データ修復装置３０は一般セル２２に記憶されたデータの修復を行う。開示の技術の実施形態に係るデータ修復装置３０によれば、劣化セル数カウント値Ｃを用いることで、基準セル２１に生じたデータ劣化を適切に検出することができる。また、一般セル２２のみならず基準セル２１に対してもデータ修復を行うので、基準セル２１におけるデータの劣化に起因する一般セル２２におけるデータ劣化の有無についての誤判定を抑制することが可能となる。
【００５８】
ここで、メモリセルにおけるデータ劣化は、上記したように、チャージゲイン（ＣＧ）によるものとチャージロス（ＣＬ）によるものがある。上記の説明では、開示の技術についての理解を容易にするために、チャージゲイン（ＣＧ）によるデータ劣化とチャージロス（ＣＬ）によるデータ劣化との区別を省略した。以下に、図８に示すフローチャートにおける各処理についてより詳細に説明する。
【００５９】
図９は、フラッシュメモリ２０を構成する複数の一般セル２２のうちチャージゲイン（ＣＧ）によるデータ劣化を生じているものを検出し、その検出数をカウントする処理を含むフローチャートである。すなわち、図９に示されるフローチャートは、図８におけるステップＳ１１〜Ｓ１６の処理内容の詳細を示したものである。
【００６０】
ステップＳ２１においてＣＰＵ４１は、フラッシュメモリ２０を構成する複数の一般セル２２のうち、最初のアドレス値０に対応するものを、本ルーチンにおける処理対象として選択する。また、ＣＰＵ４１は、チャージゲイン（ＣＧ）によるデータ劣化が生じていると判定とされた一般セルの累積数を示すカウント値（以下、ＣＧ劣化セル数カウント値Ｃ（ＣＧ）と称する）を０にリセットする。ステップＳ２１は、図８におけるフローチャートのステップＳ１１に対応する。
【００６１】
ステップＳ２２においてＣＰＵ４１は、選択セルに記憶されたデータの読み出しを行うようにメモリコントローラ２３に指令を与え、選択セルの読み出し電流Ｉｄの大きさを特定する。なお、ステップＳ２２は、図８におけるフローチャートのステップＳ１２に対応する。
【００６２】
ステップＳ２３においてＣＰＵ４１は、選択セルの読み出し電流Ｉｄの大きさが基準Ｒよりも大であるか否かを判定する。ＣＰＵ４１は、基準Ｒに対応する基準セル２１の読み出し電流Ｉｄの大きさから基準Ｒのレベルを特定する。ＣＰＵ４１は、選択セルの読み出し電流Ｉｄの大きさが基準Ｒよりも大であると判定した場合には、処理をステップＳ２４に移行する。なお、選択セルの読み出し電流Ｉｄの大きさが基準Ｒよりも大である場合、選択セルは消去状態であることが想定され、チャージゲイン（ＣＧ）によるデータ劣化の検出対象とされる。一方、ＣＰＵ４１は、選択セルの読み出し電流Ｉｄの大きさが基準Ｒよりも大ではないと判定した場合には、処理をステップＳ２６に移行する。選択セルの読み出し電流Ｉｄの大きさが基準Ｒよりも大ではない場合、選択セルはプログラム状態であることが想定され、チャージゲイン（ＣＧ）によるデータ劣化の検出対象から除外される。
【００６３】
ステップＳ２４においてＣＰＵ４１は、選択セルの読み出し電流Ｉｄの大きさが基準Ｅよりも大であるか否かを判定する。ＣＰＵ４１は、基準Ｅに対応する基準セル２１の読み出し電流Ｉｄの大きさから基準Ｅのレベルを特定する。ＣＰＵ４１は、選択セルの読み出し電流Ｉｄの大きさが基準Ｅよりも大であると判定した場合には、選択セルに記憶されたデータは劣化していないとみなし、処理をステップＳ２６に移行する。一方、ＣＰＵ４１は、選択セルの読み出し電流Ｉｄの大きさが基準Ｅよりも大ではないと判定した場合には、選択セルに記憶されたデータは、チャージゲイン（ＣＧ）によるデータ劣化を生じているとみなし、処理をステップＳ２５に移行する。すなわち、選択セルの読み出し電流Ｉｄの大きさが基準Ｒよりも大であり且つ基準Ｅよりも小である場合には、選択セルは、チャージゲイン（ＣＧ）によるデータ劣化を生じているものとみなされる（図２Ｂ参照）。なお、ステップＳ２３およびＳ２４は、図８におけるフローチャートのステップＳ１３に対応する。
【００６４】
ステップＳ２５においてＣＰＵ４１は、ＣＧ劣化セル数カウント値Ｃ（ＣＧ）を１つカウントアップして処理をステップＳ２６に移行する。
【００６５】
ステップＳ２６においてＣＰＵ４１は、選択セルが最終のアドレス値に対応するものであるか否かを判定する。ＣＰＵ４１は、選択セルが最終のアドレス値に対応するものではないと判定した場合には、処理をステップＳ２７に移行する。一方、ＣＰＵ４１は、選択セルが最終のアドレス値に対応するものであると判定した場合には、処理を図１０に示すフローチャートのステップＳ３１に移行する。なお、ステップＳ２６は、図８におけるフローチャートのステップＳ１５に対応する。
【００６６】
ステップＳ２７においてＣＰＵ４１は、アドレス値を１つインクリメントして処理をステップＳ２２に戻す。これにより、新たな一般セル２２が選択セルとして指定され、新たに選択された一般セル２２についてステップＳ２２からステップＳ２７までの処理が実施される。ステップＳ２２からステップＳ２７までの処理が繰り返されることで、全ての一般セル２２についてチャージゲイン（ＣＧ）によるデータ劣化の有無が判定され、劣化有りと判定されるたびにＣＧ劣化セル数カウント値（ＣＧ）が１つずつカウントアップされる。これにより、チャージゲイン（ＣＧ）によるデータ劣化を生じている一般セル２２の総数が特定される。なお、ステップＳ２７は、図８におけるフローチャートのステップＳ１６に対応する。
【００６７】
図１０は、フラッシュメモリ２０を構成する複数の一般セル２２のうちチャージロス（ＣＬ）によるデータ劣化を生じているものを検出し、その検出数をカウントする処理を含むフローチャートである。すなわち、図１０に示されるフローチャートは、図８におけるステップＳ１１〜Ｓ１６の処理内容の詳細を示したものである。
【００６８】
ステップＳ３１においてＣＰＵ４１は、フラッシュメモリ２０を構成する複数の一般セル２２のうち、最初のアドレス値０に対応するものを、本ルーチンにおける処理対象として選択する。また、ＣＰＵ４１は、チャージロス（ＣＬ）によるデータ劣化を生じていると判定された一般セルの累積数を示すカウント値（以下、ＣＬ劣化セル数カウント値Ｃ（ＣＬ）と称する）を０にリセットする。ステップＳ３１は、図８におけるフローチャートのステップＳ１１に対応する。
【００６９】
ステップＳ３２においてＣＰＵ４１は、選択セルに記憶されたデータの読み出しを行うようにメモリコントローラ２３に指令を与え、選択セルの読み出し電流Ｉｄの大きさを特定する。なお、ステップＳ３２は、図８におけるフローチャートのステップＳ１２に対応する。
【００７０】
ステップＳ３３においてＣＰＵ４１は、選択セルの読み出し電流Ｉｄの大きさが基準Ｒよりも小であるか否かを判定する。ＣＰＵ４１は、基準Ｒに対応する基準セル２１の読み出し電流Ｉｄの大きさから基準Ｒのレベルを特定する。ＣＰＵ４１は、選択セルの読み出し電流Ｉｄの大きさが基準Ｒよりも小であると判定した場合には、処理をステップＳ３４に移行する。なお、選択セルの読み出し電流Ｉｄの大きさが基準Ｒよりも小である場合、選択セルはプログラム状態であることが想定され、チャージロス（ＣＬ）によるデータ劣化の検出対象とされる。一方、ＣＰＵ４１は、選択セルの読み出し電流Ｉｄの大きさが基準Ｒよりも小ではないと判定した場合には、処理をステップＳ３６に移行する。選択セルの読み出し電流Ｉｄの大きさが基準Ｒよりも小ではない場合、選択セルは消去状態であることが想定され、チャージロス（ＣＬ）によるデータ劣化の検出対象から除外される。
【００７１】
ステップＳ３４においてＣＰＵ４１は、選択セルの読み出し電流Ｉｄの大きさが基準Ｐよりも小であるか否かを判定する。ＣＰＵ４１は、基準Ｐに対応する基準セル２１の読み出し電流Ｉｄの大きさから基準Ｐのレベルを特定する。ＣＰＵ４１は、選択セルの読み出し電流Ｉｄの大きさが基準Ｐよりも小であると判定した場合には、選択セルに記憶されたデータは劣化していないとみなし、処理をステップＳ３６に移行する。一方、ＣＰＵ４１は、選択セルの読み出し電流Ｉｄの大きさが基準Ｐよりも小ではないと判定した場合には、選択セルはチャージロス（ＣＬ）によるデータ劣化を生じているものとみなし、処理をステップＳ３５に移行する。すなわち、選択セルの読み出し電流Ｉｄの大きさが、基準Ｒよりも小であり且つ基準Ｐよりも大である場合には、選択セルは、チャージロス（ＣＬ）によるデータ劣化を生じているものとみなされる（図３Ｂ参照）。なお、ステップＳ３３およびＳ３４は、図８におけるフローチャートのステップＳ１３に対応する。
【００７２】
ステップＳ３５においてＣＰＵ４１は、ＣＬ劣化セル数カウント値Ｃ（ＣＬ）を１つカウントアップして処理をステップＳ３６に移行する。
【００７３】
ステップＳ３６においてＣＰＵ４１は、選択セルが最終のアドレス値に対応するものであるか否かを判定する。ＣＰＵ４１は、選択セルが最終のアドレス値に対応するものではないと判定した場合には、処理をステップＳ３７に移行する。一方、ＣＰＵ４１は、選択セルが最終のアドレス値に対応するものであると判定した場合には、処理を図１１に示すフローチャートのステップＳ４１に移行する。なお、ステップＳ３６は、図８におけるフローチャートのステップＳ１５に対応する。
【００７４】
ステップＳ３７においてＣＰＵ４１は、アドレス値を１つインクリメントして処理をステップＳ３２に戻す。これにより、新たな一般セル２２が選択セルとして指定され、新たに選択された一般セル２２についてステップＳ３２からステップＳ３７までの処理が実施される。ステップＳ３２からステップＳ３７までの処理が繰り返されることで、全ての一般セル２２についてチャージロス（ＣＬ）によるデータ劣化の有無が判定され、劣化有りと判定されるたびにＣＬ劣化セル数カウント値Ｃ（ＣＬ）が１つずつカウントアップされる。これにより、チャージロス（ＣＬ）によるデータ劣化を生じている一般セル２２の総数が特定される。なお、ステップＳ３７は、図８におけるフローチャートのステップＳ１６に対応する。
【００７５】
以上のように、ＣＰＵ４１が図９および図１０に示されるフローチャートにおける各処理を実施することで、一般セル２２の各々について、チャージゲイン（ＣＧ）およびチャージロス（ＣＬ）によるデータ劣化が検出され、それぞれの検出数がカウントされる。
【００７６】
図１１は、図９、図１０のフローチャートに示される処理を実施することにより得られたＣＧ劣化セル数カウント値Ｃ（ＣＧ）およびＣＬ劣化セル数カウント値Ｃ（ＣＬ）に基づいてデータ修復対象を選択する処理を含むフローチャートである。すなわち、図１１に示されるフローチャートは、図８におけるステップＳ１７〜Ｓ２０の処理内容の詳細を示したものである。
【００７７】
ステップＳ４１においてＣＰＵ４１は、ＣＧ劣化セル数カウント値Ｃ（ＣＧ）がゼロであるか否かを判定する。ＣＰＵ４１は、ＣＧ劣化セル数カウント値Ｃ（ＣＧ）がゼロではないと判定した場合には処理をステップＳ４２に移行し、ＣＧ劣化セル数カウント値Ｃ（ＣＧ）がゼロであると判定した場合には処理をステップＳ４５に移行する。なお、ステップＳ４１は、図８におけるフローチャートのステップＳ１７に対応する。
【００７８】
ステップＳ４２においてＣＰＵ４１は、ＣＧ劣化セル数カウント値Ｃ（ＣＧ）が所定値Ｘよりも大であるか否かを判定する。ＣＰＵ４１は、ＣＧ劣化セル数カウント値Ｃ（ＣＧ）が所定値Ｘよりも大ではないと判定した場合には処理をステップＳ４３に移行し、ＣＧ劣化セル数カウント値Ｃ（ＣＧ）が所定値Ｘよりも大であると判定した場合には、処理をステップＳ４４に移行する。なお、所定値Ｘは、基準セル２１に記憶されたデータに劣化が生じてことを検出することができる値に適宜設定され、一例としてＸ＝１０としてもよい。なお、ステップＳ４２は、図８におけるフローチャートのステップＳ１８に対応する。
【００７９】
ステップＳ４３においてＣＰＵ４１は、チャージゲイン（ＣＧ）によるデータ劣化有りと判定された一般セル２２の各々を対象としてデータ修復を行うようにメモリコントローラ２３に指令を与える。ＣＰＵ４１は、データ修復が完了すると処理を図９に示すフローチャートのステップＳ２１に戻す。なお、ステップＳ４３は、図８におけるフローチャートのステップＳ１９に対応する。
【００８０】
ステップＳ４４においてＣＰＵ４１は、基準Ｅに対応する基準セル２１を対象としてデータ修復を行うようにメモリコントローラ２３に指令を与える。ＣＰＵ４１は、データ修復が完了すると処理を図９に示すフローチャートのステップＳ２１に戻す。なお、ステップＳ４４は、図８におけるフローチャートのステップＳ２０に対応する。
【００８１】
ステップＳ４５においてＣＰＵ４１は、ＣＬ劣化セル数カウント値がゼロであるか否かを判定する。ＣＰＵ４１は、ＣＬ劣化セル数カウント値がゼロではないと判定した場合には処理をステップＳ４６に移行し、ＣＬ劣化セル数カウント値がゼロであると判定した場合には本ルーチンを終了する。なお、ステップＳ４５は、図８におけるフローチャートのステップＳ１７に対応する。
【００８２】
ステップＳ４６においてＣＰＵ４１は、ＣＬ劣化セル数カウント値Ｃ（ＣＬ）が所定値Ｘよりも大であるか否かを判定する。ＣＰＵ４１は、ＣＬ劣化セル数カウント値Ｃ（ＣＬ）が所定値Ｘよりも大ではないと判定した場合には処理をステップＳ４７に移行し、ＣＬ劣化セル数カウント値Ｃ（ＣＬ）が所定値Ｘよりも大であると判定した場合には、処理をステップＳ４８に移行する。なお、ステップＳ４６は、図８におけるフローチャートのステップＳ１８に対応する。
【００８３】
ステップＳ４７においてＣＰＵ４１は、チャージロス（ＣＬ）によるデータ劣化有りと判定された一般セル２２の各々を対象としてデータ修復を行うようにメモリコントローラ２３に指令を与える。ＣＰＵ４１は、データ修復が完了すると処理を図９に示すフローチャートのステップＳ２１に戻す。なお、ステップＳ４７は、図８におけるフローチャートのステップＳ１９に対応する。
【００８４】
ステップＳ４８においてＣＰＵ４１は、基準Ｐに対応する基準セル２１を対象としてデータ修復を行うようにメモリコントローラ２３に指令を与える。ＣＰＵ４１は、データ修復が完了すると処理を図９に示すフローチャートのステップＳ２１に戻す。なお、ステップＳ４８は、図８におけるフローチャートのステップＳ２０に対応する。
【００８５】
以上のように、ＣＰＵ４１が図１１に示されるフローチャートにおける各処理を実施することで、ＣＧ劣化セル数カウント値Ｃ（ＣＧ）およびＣＬ劣化セル数カウント値Ｃ（ＣＬ）に応じてデータ修復対象が選択され、選択された対象にデータ修復が行われる。
【００８６】
図１２は、チャージロス（ＣＬ）によるデータ劣化有りと判定された一般セル２２の各々を対象として行われるデータ修復処理の内容を示すフローチャートである。すなわち、図１２に示されるフローチャートは、図１１に示されるフローチャートにおけるステップＳ４７の処理内容の詳細を示したものである。
【００８７】
ステップＳ５１においてＣＰＵ４１はフラッシュメモリ２０を構成する複数の一般セル２２のうち、最初のアドレス値０に対応するものを、本ルーチンにおける処理対象として選択する（以下、選択された一般セルを選択セルという）。
【００８８】
ステップＳ５２においてＣＰＵ４１は選択セルについてデータ修復の要否を判定する。すなわち、ＣＵＰ４１は、選択セルがチャージロス（ＣＬ）によるデータ劣化有りと判定されている場合には、当該選択セルについてデータ修復が必要であると判定する。ＣＰＵ４１は、選択セルについてデータ修復要と判定した場合には処理をステップＳ５３に移行し、データ修復不要と判定した場合には処理をステップＳ５４に移行する。
【００８９】
ステップＳ５３においてＣＰＵ４１は、選択セルのフローティングゲートに電荷を追加的に注入する修復プログラム処理を実施するようにメモリコントローラ２３に指令を与える。図１３Ａは、データ修復前の読み出し電流Ｉｄの分布を示し、図１３Ｂは、修復プログラム処理後における読み出し電流Ｉｄの分布を示している。修復プログラム処理により、チャージロス（ＣＬ）によるデータ劣化により読み出し電流Ｉｄの大きさが、基準Ｐと基準Ｒの間の範囲にあった選択セルの読み出し電流Ｉｄの大きさは、基準Ｐよりも小さい適正範囲内となるように修復される。
【００９０】
ステップＳ５４においてＣＰＵ４１は、選択セルが最終のアドレス値に対応するものであるか否かを判定する。ＣＰＵ４１は、選択セルが最終のアドレス値に対応するものではないと判定した場合には処理をステップＳ５５に移行し、選択セルが最終のアドレス値に対応するものであると判定した場合には本ルーチンは終了する。
【００９１】
ステップＳ５５においてＣＰＵ４１は、アドレス値を１つインクリメントして処理をステップＳ５２に戻す。これにより、新たな一般セル２２が選択セルとして指定され、新たな一般セル２２についてステップＳ５２からステップＳ５５までの処理が実施される。ステップＳ５２からステップＳ５５までの処理が繰り返されることで、全ての一般セル２２についてデータ修復の要否が判定され、修復が必要なものに対して修復プログラム処理によるデータ修復が行われる。
【００９２】
図１４は、チャージゲイン（ＣＧ）によるデータ劣化有りと判定された一般セル２２の各々を対象として行われるデータ修復処理の内容を示すフローチャートである。すなわち、図１４に示されるフローチャートは、図１１に示されるフローチャートにおけるステップＳ４３の処理内容の詳細を示したものである。
【００９３】
ステップＳ６１においてＣＰＵ４１は、全ての一般セル２２を対象としてフローティングゲートに蓄積された電荷の一部を抜き取る修復消去処理を実施するようにメモリコントローラ２３に指令を与える。修復消去処理は、通常の消去処理よりも弱い消去処理であり、一般セル２２の各々に記憶されたデータが破壊されることはない。また、フラッシュメモリ２０における消去動作は、メモリセル毎に行うことができないため、修復消去処理は全ての一般セル２２を対象とする一括消去処理となる。
【００９４】
図１５Ａは、データ修復前の読み出し電流Ｉｄの分布を示し、図１５Ｂは、修復消去処理後の読み出し電流Ｉｄの分布を示している。修復消去処理により、チャージゲイン（ＣＧ）によるデータ劣化により読み出し電流Ｉｄの大きさが、基準Ｅと基準Ｒの間の範囲にある一般セル２２の読み出し電流Ｉｄの大きさは、大きくなる方向にシフトする。また、修復消去処理は全ての一般セル２２を対象とする一括処理であるので、データ劣化を生じていない健全な一般セル２２の電流Ｉｄも全体的に大きくなる方向にシフトする。
【００９５】
ステップＳ６２においてＣＰＵ４１は、消去状態にある一般セル２２を対象としてフローティングゲートに少量の電荷を注入するＡＰＤＥ処理を実施するようにメモリコントローラ２３に指令を与える。図１５Ｃは、ＡＰＤＥ処理後の読み出し電流Ｉｄの分布を示している。ＡＰＤＥ処理により、消去状態にある一般セル２２の各々の読み出し電流Ｉｄは、全体的に小さくなる方向にシフトする。
【００９６】
ステップＳ６３においてＣＰＵ４１は、図９に示すフローチャートにおける各処理（ＣＧ劣化検出フロー）を実施することにより、ＣＧ劣化セル数カウント値Ｃ（ＣＧ）を取得する。
【００９７】
ステップＳ６４においてＣＰＵ４１は、ＣＧ劣化セル数カウント値Ｃ（ＣＧ）がゼロであるか否かを判定する。ＣＰＵ４１は、ＣＧ劣化セル数カウント値Ｃ（ＣＧ）がゼロであると判定した場合には、処理をステップＳ６５に移行し、ＣＧ劣化セル数カウント値Ｃ（ＣＧ）がゼロではないと判定した場合には、処理をステップＳ６１に戻す。すなわち、ＣＧ劣化セル数カウント値Ｃ（ＣＧ）がゼロとなるまでステップＳ６１からＳ６４までの処理が繰り返される。これにより、チャージゲイン（ＣＧ）によるデータ劣化有りと判定されたものを含む全ての一般セル２２の読み出し電流Ｉｄは、基準Ａと基準Ｅの間の適正範囲に分布するように修復される。
【００９８】
ステップＳ６５においてＣＰＵ４１は、図１０に示すフローチャートにおける各処理（ＣＬ劣化検出フロー）を実施することにより、チャージロス（ＣＬ）によるデータ劣化を生じている一般セルを特定する。
【００９９】
ステップＳ６６においてＣＰＵ４１は、図１２に示すフローチャートにおける各処理（一般セルのＣＬ劣化修復フロー）を実施する。図１５Ｄは、一般セルのＣＬ劣化修復フロー実施後の読み出し電流Ｉｄの分布を示している。すなわち、ステップＳ６６では、プログラム状態にある一般セル２２のうちステップＳ６１の修復消去処理により読み出し電流Ｉｄの大きさが適正範囲から外れ、チャージロス（ＣＬ）によるデータ劣化を生じているとみなされるものに対してデータ修復が行われる。
【０１００】
図１６は、基準Ｅに対応する基準セル２１を対象として行われるデータ修復処理の内容を示すフローチャートである。すなわち、図１６に示されるフローチャートは、図１１に示されるフローチャートにおけるステップＳ４４の処理内容の詳細を示したものである。
【０１０１】
ステップＳ７１においてＣＰＵ４１は、基準Ｅに対応する基準セル２１を対象としてフローティングゲートに電荷を追加的に注入する修復プログラム処理を実施するようにメモリコントローラ２３に指令を与える。図１７Ａはデータ修復前の読み出し電流Ｉｄの分布を示し、図１７Ｂは、基準Ｅに対応する基準セル２１に対する修復プログラム処理後の読み出し電流Ｉｄの分布を示している。基準Ｅに対応する基準セル２１に対して修復プログラム処理を実施することにより基準Ｅのレベルが低くなる方向にシフトする。
【０１０２】
ステップＳ７２においてＣＰＵ４１は、図９に示すフローチャートにおける各処理（ＣＧ劣化検出フロー）を実施することにより、ＣＧ劣化セル数カウント値Ｃ（ＣＧ）を取得する。
【０１０３】
ステップＳ７３においてＣＰＵ４１は、ＣＧ劣化セル数カウント値Ｃ（ＣＧ）がゼロであるか否かを判定する。ＣＰＵ４１は、ＣＧ劣化セル数カウント値Ｃ（ＣＧ）がゼロであると判定した場合には本ルーチンは終了し、ＣＧ劣化セル数カウント値Ｃ（ＣＧ）がゼロではないと判定した場合には処理をステップＳ７１に戻す。すなわち、ＣＧ劣化セル数カウント値Ｃ（ＣＧ）がゼロとなるまでステップＳ７１からＳ７３までの処理が繰り返される。これにより、基準Ｅが適切なレベルとなるように基準Ｅに対応する基準セル２１のデータが修復される。
【０１０４】
図１８は、基準Ｐに対応する基準セル２１を対象として行われるデータ修復処理の内容を示すフローチャートである。すなわち、図１８に示されるフローチャートは、図１１に示されるフローチャートにおけるステップＳ４８の処理内容の詳細を示したものである。
【０１０５】
ステップＳ８１においてＣＰＵ４１は、基準Ｐに対応する基準セル２１を対象としてフローティングゲートに蓄積された電荷の一部を抜き取る修復消去処理を実施するようにメモリコントローラ２３に指令を与える。図１９Ａは、データ修復前の読み出し電流Ｉｄの分布を示し、図１９Ｂは、基準Ｐに対応する基準セル２１に対する修復消去処理後の読み出し電流Ｉｄの分布を示している。基準Ｐに対応する基準セル２１に対して修復消去処理を実施することにより基準Ｐのレベルが高くなる方向にシフトする。
【０１０６】
ステップＳ８２においてＣＰＵ４１は、図１０に示すフローチャートにおける各処理（ＣＬ劣化検出フロー）を実施することにより、ＣＬ劣化セル数カウント値Ｃ（ＣＬ）を取得する。
【０１０７】
ステップＳ８３においてＣＰＵ４１は、ＣＬ劣化セル数カウント値Ｃ（ＣＬ）がゼロであるか否かを判定する。ＣＰＵ４１は、ＣＬ劣化セル数カウント値Ｃ（ＣＬ）がゼロであると判定した場合には、本ルーチンは終了し、ＣＬ劣化セル数カウント値Ｃ（ＣＬ）がゼロではないと判定した場合には、処理をステップＳ８１に戻す。すなわち、ＣＬ劣化セル数カウント値Ｃ（ＣＬ）がゼロとなるまでステップＳ８１からＳ８３までの処理が繰り返される。これにより、基準Ｐが適切なレベルとなるように基準Ｐに対応する基準セル２１のデータが修復される。
【符号の説明】
【０１０８】
２０  フラッシュメモリ
２１  基準セル
２２  一般セル
３０  データ修復装置
３１  判定部
３２  カウント部
３３  修復部
【図１Ａ】
2017191623.tif 000003
【図１Ｂ】
2017191623.tif 000004
【図２Ａ】
2017191623.tif 000005
【図２Ｂ】
2017191623.tif 000006
【図２Ｃ】
2017191623.tif 000007
【図３Ａ】
2017191623.tif 000008
【図３Ｂ】
2017191623.tif 000009
【図３Ｃ】
2017191623.tif 000010
【図４】
2017191623.tif 000011
【図５Ａ】
2017191623.tif 000012
【図５Ｂ】
2017191623.tif 000013
【図５Ｃ】
2017191623.tif 000014
【図６】
2017191623.tif 000015
【図７】
2017191623.tif 000016
【図８】
2017191623.tif 000017
【図９】
2017191623.tif 000018
【図１０】
2017191623.tif 000019
【図１１】
2017191623.tif 000020
【図１２】
2017191623.tif 000021
【図１３Ａ】
2017191623.tif 000022
【図１３Ｂ】
2017191623.tif 000023
【図１４】
2017191623.tif 000024
【図１５Ａ】
2017191623.tif 000025
【図１５Ｂ】
2017191623.tif 000026
【図１５Ｃ】
2017191623.tif 000027
【図１５Ｄ】
2017191623.tif 000028
【図１６】
2017191623.tif 000029
【図１７Ａ】
2017191623.tif 000030
【図１７Ｂ】
2017191623.tif 000031
【図１８】
2017191623.tif 000032
【図１９Ａ】
2017191623.tif 000033
【図１９Ｂ】
2017191623.tif 000034