(57)【特許請求の範囲】
【請求項１】
制御装置に結合された半導体不揮発性メモリ装置のリフレッシュ操作を開始するためのリフレッシュ操作開始方法において、
前記半導体不揮発性メモリ装置のブロックに関するエラー数であって、前記ブロックにおいて最大のエラービットの数を有するページにおけるエラービットの数に対応するエラー数を決定する工程と、
前記エラー数とエラー閾値とを比較する工程と、
前記半導体不揮発性メモリ装置の前記ブロックに対して先のリフレッシュ操作が実行されてから前記制御装置がリセットされた回数を示すリセット回数を決定する工程と、
前記エラー数に基づいて前記エラー数が増加するにつれて減少するように設定される可変値であるリセット閾値を用い、前記リセット回数と前記リセット閾値とを比較する工程と、
前記エラー数が前記エラー閾値を上回り、かつ、前記リセット回数が前記リセット閾値を上回る場合に、前記半導体不揮発性メモリ装置の前記ブロックをリフレッシュする工程とを備えることを特徴とするリフレッシュ操作開始方法。
【請求項２】
さらに、前記リセット回数が所定の値で割り切れないときに、前記エラー数に関する比較工程と前記リセット回数に関する比較工程とを実行しないようにするために、前記リセット回数が前記所定の値で割り切れるか否かを判定する工程を備えることを特徴とする請求項１に記載のリフレッシュ操作開始方法。
【請求項３】
さらに、永久エラー数が所定の永久エラー閾値を上回るときに、前記エラー数に関する比較工程と前記リセット回数に関する比較工程とを実行しないようにするために、前記永久エラー数を決定する工程を備えることを特徴とする請求項１または請求項２に記載のリフレッシュ操作開始方法。
【請求項４】
前記永久エラー数が、リフレッシュ操作が実行された直後に前記ブロックにおいて最大のエラービットの数を有するページにおけるエラービットの数に対応するように、前記永久エラー数は、最も直近のリフレッシュ操作の後に決定されることを特徴とする請求項３に記載のリフレッシュ操作開始方法。
【請求項５】
前記半導体不揮発性メモリ装置は、フラッシュメモリ装置であることを特徴とする請求項１から請求項４のいずれかに記載のリフレッシュ操作開始方法。
【請求項６】
前記フラッシュメモリ装置は、ＮＡＮＤ型のフラッシュメモリ装置であることを特徴とする請求項５に記載のリフレッシュ操作開始方法。
【請求項７】
前記エラー数は、前記半導体不揮発性メモリ装置のひとつのブロックのそれぞれのページのエラー修正コードから決定されていることを特徴とする請求項１から請求項６のいずれかに記載のリフレッシュ操作開始方法。
【請求項８】
リフレッシュ操作を開始するためのシステムにおいて、
制御装置と、
前記制御装置に結合された半導体不揮発性メモリ装置であって、分割可能な複数のブロックを有するとともに、ひとつの前記ブロックに複数のページを有する半導体不揮発性メモリ装置とを備え、
前記制御装置は、
（ａ）前記半導体不揮発性メモリ装置の複数のブロックにおけるひとつの前記ブロックに関するエラー数であって、前記ブロックの複数の前記ページにおいて最大のエラービットの数を有する前記ページにおけるエラービットの数に対応するエラー数を決定する手段と、
（ｂ）前記エラー数とエラー閾値とを比較する手段と、
（ｃ）前記半導体不揮発性メモリ装置の複数の前記ブロックにおけるひとつの前記ブロックに対して先のリフレッシュ操作が実行されてから前記制御装置がリセットされた回数を示すリセット回数を決定する手段と、
（ｄ）前記エラー数に基づいて前記エラー数が増加するにつれて減少するように設定される可変値であるリセット閾値を用い、前記リセット回数とリセット閾値とを比較する手段と、
（ｅ）前記エラー数が前記エラー閾値を上回り、かつ、前記リセット回数が前記リセット閾値を上回る場合に、前記半導体不揮発性メモリ装置の前記ブロックをリフレッシュする手段とを備えることを特徴とするシステム。
【請求項９】
前記制御装置は、さらに、前記リセット回数が所定の値で割り切れるときにだけ、前記制御装置が前記エラー数と前記エラー閾値とを比較し、かつ前記リセット回数と前記リセット閾値とを比較するようにするために、前記リセット回数が前記所定の値で割り切れるか否かを判定する手段を備えることを特徴とする請求項８に記載のシステム。
【請求項１０】
前記制御装置は、さらに、永久エラー数が所定の永久エラー閾値を上回るときにだけ、前記制御装置が前記エラー数と前記エラー閾値とを比較し、かつ前記リセット回数と前記リセット閾値とを比較するようにするために、前記永久エラー数を決定する工程を備えることを特徴とする請求項８または請求項９に記載のシステム。
【請求項１１】
前記永久エラー数が、リフレッシュ操作が実行された直後に前記ブロックにおいて最大のエラービットの数を有するページにおけるエラービットの数に対応するように、前記永久エラー数は、最も直近のリフレッシュ操作の後に決定されることを特徴とする請求項１０に記載のシステム。
【請求項１２】
前記半導体不揮発性メモリ装置は、フラッシュメモリ装置であることを特徴とする請求項８から請求項１１のいずれかに記載のシステム。
【請求項１３】
前記フラッシュメモリ装置は、ＮＡＮＤ型のフラッシュメモリ装置であることを特徴とする請求項１２に記載のシステム。
【請求項１４】
それぞれのページは、主領域と予備領域とに分割されており、前記予備領域は、前記ページにおけるエラー数を示すエラー修正コードのフィールドを含む前記主領域に格納されたデータに関連する付加的データを格納していることを特徴とする請求項８から請求項１３のいずれかに記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体不揮発性メモリ装置のリフレッシュ操作を開始するための方法およびシステムに関する。
【背景技術】
【０００２】
ほとんどの電子機器は、装置の操作を制御するために、少なくともひとつのマイクロコントローラあるいはマイクロプロセッサと呼ばれる制御装置を含んでいる。求められる機能を実現するために、制御装置は、所定の操作を実行するためのコードあるいは実行可能な命令を実行する。また、制御装置は、操作を実行するために、データを取得する。コードおよびデータは、コンピュータによって読み取り可能なメモリ装置に格納される。メモリ装置として、ＮＡＮＤ型のフラッシュメモリ装置のような半導体不揮発性メモリ装置を使用する装置の製造者が増加している。例えば、特許文献１に開示される装置が知られている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００９−２０５５７８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、ＮＡＮＤ型のフラッシュメモリ装置における問題は、それらの装置では、読出不能エラーがより頻繁に発生することである。読出不能エラーは、永久的、または一時的である。永久エラーは、例えば、ブロックが物理的に損傷した場合の不良ブロックエラー（bad block error）の場合がある。一時的エラーは、例えば、データ保持エラー（data retention error）や、読出不良エラー（read disturb error）の場合がある。データ保持エラーあるいは読出不良エラーを修復するために、そのようなエラーの検出に応答して、制御装置は、エラーを含むブロックをリフレッシュするためのリフレッシュ操作を開始する。リフレッシュ操作は、そのブロックからデータを消去し、バックアップ領域からバックアップデータをそのブロックにコピー、すなわち書込むことにより、そのブロックの格納内容を再構成する。しかしながら、不良ブロックエラーは、リフレッシュ操作では修復することができず、そのエラーの解決はより困難となる。さらに、リフレッシュ操作の実行の回数が増えるにつれて、特定のブロックにおける不良ブロックエラーの発生可能性が高くなる。
【０００５】
不良ブロックエラーの発生可能性を減らすために、いくつかの制御装置は、リフレッシュ操作を実行する前に、所定の時間を待つ。例えば、その待ち時間は、数週間、数か月、または数年とされる。しかしながら、この手法は、経過時間と読出不能エラーとの間に直接的な因果関係があることを想定している。さらに、所定の待ち時間が短すぎることがあり、その結果、多すぎるリフレッシュ操作を招き、不良ブロックエラーの発生可能性を高めることがある。反対に、所定の待ち時間は長すぎることがあり、その結果、長期間にわたる読出不良エラーを生じることがある。
【０００６】
したがって、いつリフレッシュ操作を始めるかを決めるためのよりよい方法が求められている。
【０００７】
ここに提示された背景技術の記述は、本発明の位置づけを一般的に説明するためのものである。この背景技術の欄に述べられた範囲で、発明者らの開発活動は、出願の時点における先行技術として妥当することのないここの記述の側面と同様に、明示的にも、また、暗示的にも、本発明に対する先行技術として自認されたものではない。
【課題を解決するための手段】
【０００８】
本発明によると、半導体不揮発性メモリ装置のリフレッシュ操作の開始を管理する方法およびシステムが提供される。方法は、半導体不揮発性メモリ装置のブロックにおけるエラー数を決定する。エラー数は、そのブロックにおける最大のエラービットを持っているページのエラービットの数に相当する。さらに、そのブロックに対して先のリフレッシュ操作が実行されてからの制御装置のリセット回数が決定される。エラー数がエラー閾値を上回り、かつ、リセット回数がリセット閾値を上回ると、半導体不揮発性メモリ装置の該当ブロックに対してリフレッシュ操作が実行される。リセット閾値は、エラー数に基づいてエラー数が増加するにつれて減少するように設定される可変値である。
【０００９】
システムは、制御装置と、この制御装置と結合した半導体不揮発性メモリ装置を含む。半導体不揮発性メモリ装置は、分割可能な複数のブロックを有するとともに、ひとつのブロックに複数のページを有する。制御装置は、半導体不揮発性メモリ装置に含まれる複数のブロックのうちのひとつのブロックに関するエラー数を決定するように構成されている。エラー数は、そのブロックにおける複数のページのうちの最大のエラービットを持っているひとつのページのエラービットの数に相当する。制御装置はエラー数をエラー閾値と比較するように構成されている。制御装置は、半導体不揮発性メモリ装置の複数のブロックにおけるひとつのブロックに対して先のリフレッシュ操作が実行されてから制御装置がリセットされた回数を示すリセット回数を決定するように構成されている。制御装置は、リセット回数をリセット閾値と比較するように構成されている。リセット閾値は、エラー数に基づいてエラー数が増加するにつれて減少するように設定される可変値である。制御装置は、エラー数がエラー閾値を上回り、かつ、リセット回数がリセット閾値を上回る場合に、半導体不揮発性メモリ装置のブロックをリフレッシュするように構成されている。
【００１０】
この発明を適用可能な他の分野は、以下の説明によって明らかにされる。この発明の概要における説明と具体的な例示とは、具体的な説明を与える用途だけを意図したものであって、本発明の技術的範囲を限定することを意図したものではない。
【図面の簡単な説明】
【００１１】
【図１】図１は、本発明を適用した第１実施形態に係る装置の構成をブロック図である。
【図２】図２は、フラッシュメモリ装置の構造を説明するためのブロック図である。
【図３】図３は、リフレッシュ操作を実行する時期を決定するための方法の一例を説明するためのフローチャートである。
【図４】図４は、リフレッシュ操作を実行する時期を決定するための方法の一例を説明するためのフローチャートである。
【図５】図５は、リフレッシュ操作を実行する時期を決定するための方法の一例を説明するためのフローチャートである。
【図６】図６は、リフレッシュ操作を実行する時期を決定するための方法の一例を説明するためのフローチャートである。
【図７】図７は、フラッシュメモリ装置のブロックにおける永久エラーの量を決定するための方法の一例を説明するためのフローチャートである。
【発明を実施するための形態】
【００１２】
以下に、図面を参照しながら本発明を実施するための複数の形態を説明する。各形態において先行する形態で説明した事項に対応する部分には同一の参照符号を付して重複する説明を省略する場合がある。各形態において構成の一部のみを説明している場合は、構成の他の部分については先行して説明した他の形態を適用することができる。各実施形態で具体的に組合せが可能であることを明示している部分同士の組合せばかりではなく、特に組合せに支障が生じなければ、明示してなくとも実施形態同士を部分的に組み合せることも可能である。
【００１３】
図１は、第１実施形態に係る装置１００の構成部品、または装置のサブシステムの構成部品を示す。装置は、主制御装置１１０と、半導体不揮発性メモリ装置１２０とを備える。主制御装置１１０は、装置１００を操作する。半導体不揮発性メモリ装置１２０は、装置１００を操作するための実行可能な命令群を格納する。命令群は、装置１００のための起動時読込用のデバイスブートローダ（device boot loader）を含む。以下の説明において、半導体不揮発性メモリ装置１２０は、フラッシュメモリ装置１２０と呼ばれることがある。主制御装置１１０は、要求されたデータのアドレスを含む読出要求をフラッシュメモリ装置１２０に送出する。フラッシュメモリ装置１２０は、与えられたアドレスから始まるブロック、すなわち読出要求に対応するデータブロックを返す。
【００１４】
主制御装置１１０は、ひとつまたは複数の機能を実現するチップセットである。例えば、主制御装置１１０は、移動体用情報サービス装置であるテレマティックス装置、テレビ受像機、または携帯電話を制御するためのマイクロプロセッサとすることができる。意図された機能を実行するために、主制御装置１１０は、意図された機能をサポートするＯＳ（operating system）を実行する。そのＯＳは、主制御装置１１０にアクセス可能である必要がある一群の命令で構成される。これらの命令は半導体不揮発性メモリ装置１２０上に格納される。さらに、ＯＳは、半導体不揮発性メモリ装置１２０に格納することができる特定のアプリケーションを実行することができる。一旦、ＯＳが主制御装置１１０にロードされれば、ＯＳがメモリ装置へのアクセスを取り扱う。さらに、ＯＳは、読出不能エラーのようなメモリ装置へのアクセスに関するエラーを取り扱う。
【００１５】
電源の投入に際して、主制御装置１１０は、半導体不揮発性メモリ装置１２０からのＯＳをロードしなければならない。最初に、一次ブートローダ（ＰＢＬ：primary boot loader）と呼ばれる起動時のＯＳ読込のためのプログラムは、デバイスブートローダ、または二次ブートローダと呼ばれるプログラムを半導体不揮発性メモリ装置１２０から取得する。明確化のために、二次ブートローダとデバイスブートローダは、以後、デバイスブートローダ（ＤＢＬ：device boot loader）とも呼ばれる。ＰＢＬは主制御装置１１０上に予めプログラムされており、主制御装置１１０への電源供給の開始に際して実行される。ＰＢＬは、例えば、０Ｘ００００のようなＤＢＬが格納される半導体不揮発性メモリ装置１２０上のブロックを示す予め定められたアドレスを伴うハード的なコードである。フラッシュメモリ装置１２０からＤＢＬをロードするために、ＰＢＬは、フラッシュメモリ装置１２０に予め定められたアドレスで始まるブロックを要求する。半導体不揮発性メモリ装置１２０は、予め定められたアドレスに格納されたブロックを返す。また、ＰＢＬは、返されたブロックに格納されたＤＢＬにコントロールを譲る。一旦ＤＢＬがロードされれば、ＤＢＬは半導体不揮発性メモリ装置１２０からＯＳを取得するように主制御装置１１０に命じる。
【００１６】
読出不能エラーがＤＢＬまたはＯＳを含んでいるブロックで見つかる場合、問題が発生する。説明のために、実行可能なコードを格納している複数のブロックは、プログラム領域とも呼ばれる。読出不能エラーまたはデータ保持エラーがプログラム領域に観測されている場合、主制御装置１１０はリフレッシュ操作を開始することができる。リフレッシュ操作では、ブロックは削除される。また、ブロックのバックアップコピーがブロック上に書込まれる。主制御装置１１０はソフトウェアの解決手段を使用して、予め定められた量の一時的なエラーを解決することができる。以下に説明されるように、データブロック、すなわちページ、のユニットのそれぞれは、ひとつまたは複数のエラー訂正コード（error correction code）を含む。エラー訂正コードはＥＣＣとも呼ばれる。主制御装置１１０は、ブロックにおけるエラーを修正するためにＥＣＣを使用することができる。しかしながら、ＥＣＣを使用して修正することができるエラーの量は、例えば、ひとつのページに４つのＥＣＣまでといった、ＥＣＣのフィールド、すなわち領域に記述することができるエラーの量によって制限されている。
【００１７】
いくつかの具体化例では、半導体不揮発性メモリ装置がフラッシュメモリ装置１２０である。いくつかの具体化例では、フラッシュメモリ装置１２０はＮＡＮＤ型のフラッシュメモリ装置である。いくつかの具体化例では、半導体不揮発性メモリ装置は、ＮＯＲ型のフラッシュメモリ装置、または他の適切な半導体不揮発性メモリ装置によって提供されうるものと解されるべきである。
【００１８】
図２は、フラッシュメモリ装置２００の構造を図示している。フラッシュメモリ装置２００は、分割された複数のブロック２１０を備える。例えば、典型的なフラッシュメモリ装置２００は１０２８個のブロックに分割することができる。さらに、ひとつのブロック２１０は複数のページ２２０に分割されている。例えば、典型的なブロック２１０は、６４個のページに分割することができる。ひとつのページ２３０は、複数のバイトで構成される。例えば、典型的なページ２３０は２１１２バイトで構成することができる。さらに、ページ２３０のそれぞれは、図示されない５２８バイトの４つの読込ユニットに別々に分割することができる。上記の具体的な数値は例示的なものであり、フラッシュメモリ装置２００の他の構成が想定可能であることが認識されるべきである。例えば、ひとつのブロックは３２個のページで構成することができる。また、ひとつのページは４０４８バイトで構成することができる。
【００１９】
ひとつのページ２３０は、主データ領域２４０と予備領域２５０とに分割されている。主データ領域２４０は保存されたデータあるいは本質的なデータを含んでいる。例えば、ブロックがプログラム領域にある場合、特定のページ２３０の主データ領域２４０は特定の命令に対応することがある。アドレスとパラメータ値も、ひとつのページの主データ領域に格納することができる。予備領域２５０はページ２３０に関係する情報を記録している。予備領域２５０は、ＥＣＣ２６０のための複数バイトを含んでいる。典型的には、装置１００、フラッシュメモリ装置１２０あるいは主制御装置１１０は、ページのビットのうちのどれかがエラーを含むか否かを決定するために誤り検出アルゴリズム（error checking algorithm）を実行する図示されないメモリコントローラを含むことができる。そのような場合、予備領域のＥＣＣ２６０の部分は、どの単一ビットまたは複数ビットがエラーを含むのかを示す。さらに、劣化均等化のための情報、および他のソフトウェアオーバーヘッド機能などの追加的なデータを予備領域２５０に格納することができる。
【００２０】
主制御装置１１０は、ブロックがリフレッシュを要求するかどうかを決定するためにブロックの各ページのＥＣＣを計数することができる。ブロックをリフレッシュする決定は、ブロックのひとつのページにおけるエラーの最大エラー数、および主制御装置１１０がリセットされた回数に基づいて与えられる。図３は、特定のブロック上でいつリフレッシュ操作を行なうか決めるリフレッシュ時期の決定方法を例示している。決定方法は主制御装置１１０の新たな電源投入期間のそれぞれに際して実行することができる。主制御装置１１０がリセットされるごとに、新しい電源投入期間が始まる。電源投入期間の計数値、またはブロックがリフレッシュされてからのリセットの計数値は、保持される。例えば、リセット計数値が保持される。主制御装置１１０のリセットに際して、ステップ３１２で示されるように、リセット計数値は１だけ増加される。
【００２１】
ステップ３１４で示されるように、主制御装置１１０は検査対象となっているブロックの中の各ページのＥＣＣデータを検査し、そのブロックの最大エラー数を決定する。最大エラー数は、そのブロックの中の最も多くのエラーを有するページで見つかったエラーの数である。エラー数、すなわち誤り数は、エラービットの数、すなわち誤りビットの数に相当する。主制御装置１１０が起動されるたびに、主制御装置１１０はブログラム領域を確保する。プログラム領域のそれぞれのページについて、主制御装置１１０は、ページの予備領域のＥＣＣの部分を確認する。主制御装置１１０は最大エラー数を記憶し、保持する。それによって、そこの中により多くのエラーをもつ新しい他のページが検出されるたびに、主制御装置１１０は、より多くのエラーをもつ新しい他のページにおけるエラー数に対応させるために最大エラー数を更新する。
【００２２】
一旦最大エラー数が決定されれば、ステップ３１６で示されるように、最大エラー数はエラー閾値と比較される。エラー閾値は、そのブロックに対するリフレッシュ操作を引き起こさずに、ひとつのページの中に見つけることができるエラーの最大数、言い換えると許容エラー数を示す所定の値である。エラー閾値は、固定値とすることができる。例えば、４つ以上のエラーがそのブロックの中の任意のページで見つかる場合に、この実施形態の方法がさらに先に進行するように、エラー閾値は３とすることができる。最大エラー数がエラー閾値を上回らない場合、リフレッシュ操作は行なわれない。また、ステップ３２４で示されるように、この実施形態のリフレシュ操作開始方法は実行を終了する。
【００２３】
最大エラー数がエラー閾値を上回る場合、ステップ３１８で示されるように、リセット計数値はリセット閾値と比較される。上述のように、計数値は、前のリフレッシュ操作の後に実行されたリセットの回数を示す値である。リセット閾値はリフレッシュ操作を必要とするために発生しなければならない電源投入期間の最小の回数である。いくつかの具体化例では、リセット閾値は予め定められた固定値である。リセット閾値は、例えば２０００回のリセットに相当する。いくつかの具体化例では、リセット閾値は動的に設定される可変値である。リセット閾値は、例えば、最大エラー数に基づいて可変的に設定することができる。リセット計数値がリセット閾値を上回らない場合、リフレッシュ操作は行なわれない。また、決定方法は終了される。リセット計数数がリセット閾値を上回る場合、ステップ３２０で示されるように、リセット計数値は０にクリアされる。また、ステップ３２２で示されるように、そのブロックに対してリフレッシュ操作が実行される。
【００２４】
上述の方法の変形例は、この明細書の開示の範囲内であるものと解されるべきである。さらに、複数のステップの実行順序は変更不能なものではなく、いくつかのステップは、他のステップの前に実行可能である。更に、いくつかのステップはひとつのステップに組み合わせることが可能であり、いくつかのステップは複数のステップに分割することが可能である。さらに、追加的な、または代替的な工程を採用することができることも理解されるべきである。
【００２５】
いくつかの具体化例では、主制御装置１１０は、特定の電源投入期間、例えば、第２０回目の電源投入期間、においてのみリフレッシュ操作が必要かどうか判断するように構成される。図４は、特定の電源投入期間においてのみリフレッシュ操作を行なうべきか否かを判断する実施形態を示す。図３の実施形態に関して述べたように、ブロックをリフレッシュ操作するべきか否かに関する決定は、電源投入期間の始期に開始される。したがって、電源投入期間の始期に、ステップ４１２で示されるように、リセット計数値は１だけ増加される。主制御装置１１０は、ステップ４１４で示されるように、リセット計数値が予め定めた所定数によって割り切れるか否かを判断する。例えば、主制御装置１１０は、リセット計数値の剰余が０であることを示す数式「リセット計数値ｍｏｄ２０＝０」が真か否かを判定することにより、上記判断を実行することができる。リセット計数値が所定数で割り切れる場合、例えば、リセット計数値の剰余が０である場合、処理は、実行を継続する。電源投入回数が所定数で割り切れない場合、ステップ４２６に示されるように、処理は実行を終了する。
【００２６】
電源投入回数が所定数で割り切れる場合を想定すると、主制御装置１１０は、ステップ４１６に示されるように、データブロック内のそれぞれのページのＥＣＣエラービットの数を検査し、そして、そのブロックに関する最大エラー数を決定する。上述のように、最大エラー数は、最も多くのエラーを有するページにおいて観察されるエラーの数に相当する。上述のように、主制御装置１１０は、対象のページにおけるエラーの数を決定するために、それぞれのページの予備領域のＥＥＣの部分を検査する。主制御装置１１０は最大エラー数を記憶し、維持する。より多くのエラーをもつ新しい他のページが検出されるたびに、主制御装置１１０は、より多くのエラーをもつ新しい他のページにおけるエラー数に対応させるために最大エラー数を更新する。
【００２７】
一旦、ひとつのブロックに関する最大エラー数が決定されれば、ステップ４１８で示されるように、主制御装置１１０は、最大エラー数とエラー閾値とを比較する。上述のように、エラー閾値は、そのブロックに対するリフレッシュ操作を引き起こさずに、ひとつのページの中に見つけることができるエラーの最大数、言い換えると許容エラー数を示す所定の値である。エラー閾値は、固定値とすることができる。例えば、４つ以上のエラーがそのブロックの中の任意のページで見つかる場合に、この実施形態の方法がさらに先に進行するように、エラー閾値は３とすることができる。しかしながら、最大エラー数がエラー閾値を上回らない場合、リフレッシュ操作は行なわれない。また、ステップ４２６で示されるように、この実施形態のリフレシュ操作開始方法は実行を終了する。
【００２８】
最大エラー数がエラー閾値を上回る場合、ステップ４２０で示されるように、リセット計数値はリセット閾値と比較される。リセット計数値は、そのブロックに対して最後のリフレッシュ操作が実行されてから実行されたリセットの回数を示す。リセット閾値はリフレッシュ操作を必要とするために発生しなければならない電源投入期間の最小の回数である。いくつかの具体化例では、それらのリセット閾値は予め定められた固定値、例えば２０００回、である。また、他の具体化例では、リセット閾値は最大エラー数に基づいて動的に選択される可変値である。リセット計数数がリセット閾値を上回る場合、ステップ４２２で示されるように、リセット計数値は０にクリアされる。また、ステップ４２４で示されるように、そのブロックに対してリフレッシュ操作が実行される。最大エラー数がエラー閾値を上回らない場合、リフレッシュ操作は行なわれない。また、ステップ４２６で示されるように、この実施形態のリフレシュ操作開始方法は実行を終了する。
【００２９】
上述の方法の変形例は、この明細書の開示の範囲内であるものと解されるべきである。さらに、複数のステップの実行順序は変更不能なものではなく、いくつかのステップは、他のステップの前に実行可能である。更に、いくつかのステップはひとつのステップに組み合わせることが可能であり、いくつかのステップは複数のステップに分割することが可能である。さらに、追加的な、または代替的な工程を採用することができることも理解されるべきである。
【００３０】
上述のように、いくつかの実施形態では、リセット閾値は動的に設定される可変値である。リセット閾値は、例えば、最大エラー数に基づいて可変的に設定することができる。図５は、動的に設定される可変のリセット閾値を用いてリフレッシュ操作を行なうべきか否かを判断する実施形態を示す。このリフレッシュ操作開始方法の実行は、電源投入期間の初めに開始される。電源投入期間の始期に、ステップ５１２で示されるように、リセット計数値は１だけ増加される。いくつかの具体化例では、下記の方法は予め定められた電源投入期間においてのみ実行される。上述のように、主制御装置１１０は、ステップ５１４で示されるように、リセット計数値が予め定めた所定数、例えば２０、によって割り切れるか否かを判断する。リセット計数値が所定数で割り切れない場合、処理は実行を終了する。しかしながら、リセット計数値が所定数で割り切れる場合、処理は実行を継続する。
【００３１】
一旦、リセット計数値が所定数で割り切れることが判定されると、主制御装置１１０は分析対象となっているブロックの中のそれぞれのページのＥＣＣエラービット数を検査する。上述のように、そしてステップ５１６に図示されるように、主制御装置１１０は、最大エラー数を決定するために、それぞれのページの予備領域におけるＥＣＣフィールドを確認する。その後、ステップ５１８で示されるように、最大エラー数はエラー閾値と比較される。最大エラー数がエラー閾値以下である場合、ステップ５２６で示されるように、処理は実行を終了する。しかしながら、最大エラー数がエラー閾値を上回る場合、ステップ５２０で示されるように、リセット計数値はリセット閾値と比較される。
【００３２】
いくつかの具体化例では、リセット閾値は最大エラー数の関数で表され、与えられる。最大エラー数が増加するにつれて、リセット閾値は減少する。例えば、エラー閾値が１であって、最大エラー数が２である場合、リセット閾値は２０００に設定することができる。最大エラー数が３である場合、リセット閾値は２００に設定することができる。最大エラー数が４である場合、リセット閾値は２０に設定することができる。さらに、最大エラー数が４を超えるものである場合、リセット閾値は０に設定することができる。先に示した例において、最大エラー数が４を上回る場合、リフレッシュ操作は毎回実行される。上記の説明において、リセット閾値に異なる他の値が同様に使用されてもよい。また、上記の説明における数値は、あくまで例示に過ぎない。リセット計数数がリセット閾値を上回る場合、ステップ５２２で示されるように、リセット計数値は０にクリアされる。また、ステップ５２４で示されるように、そのブロックに対してリフレッシュ操作が実行される。リセット計数値がリセット閾値を上回らない場合、リフレッシュ操作は行なわれない。また、ステップ５２６で示されるように、処理は実行を終了する。
【００３３】
上述の方法の変形例は、この明細書の開示の範囲内であるものと解されるべきである。さらに、複数のステップの実行順序は変更不能なものではなく、いくつかのステップは、他のステップの前に実行可能である。更に、いくつかのステップはひとつのステップに組み合わせることが可能であり、いくつかのステップは複数のステップに分割することが可能である。さらに、追加的な、または代替的な工程を採用することができることも理解されるべきである。
【００３４】
上述のように、リフレッシュ操作はフラッシュメモリ装置１２０のブロックにおける永久的なエラーを修復することはできない。例えば、リフレッシュ操作は不良ブロックエラーを解決することができない。しかしながら、ＥＣＣを記憶する領域でもある領域２５０は、エラーが永久的なものであるにもかかわらず、ひとつのビットにおいてエラーが発生していることを示すこととなる。したがって、主制御装置１１０は、永久的な読出不能エラーと一時的な読出不能エラーとを区別するように、さらには、一時的エラーの数がエラー閾値を上回るときに、リフレッシュ操作を開始するように構成することができる。リフレッシュ操作の実行を決定する場合に永久的なエラーを考慮に入れることによって、主制御装置１１０は、リフレッシュ操作が行なわれた後、ブロックがまだかなりの数のエラーをもつ場合に、リフレッシュ操作を回避することができる。
【００３５】
図６は、ブロックのひとつのページにおける一時的なビットエラーの数に基づいて、ブロックに対するリフレッシュ操作をいつ開始するかを決定する方法とシステムとを示す。処理の実行に際して、ステップ６１２で示されるように、主制御装置１１０はリセット計数値を１だけ増加する。処理は、すべての電源投入期間において、または特定の予め定められた電源投入期間において実行することができる。後の流れにおいて、主制御装置１１０は、ステップ６１４で示されるように、実行を継続する前に、リセット計数値が予め定めた所定数によって割り切れるか否かを判断する。
【００３６】
主制御装置１１０は最大永久エラー数を記憶し、保持する。最大永久エラー数は、ブロックの任意のページにおける永久的なビットエラーの最大数である。例えば、特定のページが３つの永久的なエラーをもっており、他のすべてのページが最大でも２つの永久的なエラーをもつだけである場合、最大永久エラー数は３である。図７は、最大永久エラー数を決定する方法を示す。この方法について、詳細に説明する。ステップ６１６で示されるように、主制御装置１１０は最大永久エラー数を永久エラー閾値と比較する。最大永久エラー数が永久エラー閾値以上である場合、ステップ６２８で示されるように、主制御装置１１０は、処理の実行を終了する。そうでなければ、主制御装置１１０は処理を実行し続ける。
【００３７】
その後、上述され、ステップ６１８で示されたように、主制御装置１１０はブロックのための最大エラー数を決定する。その後、ステップ６２０で示されるように、最大エラー数はエラー閾値と比較される。最大のエラー番号が閾値を越えない場合、主制御装置１１０は、処理を実行を終了する。そうでなければ、ステップ６２２で示されるように、主制御装置１１０はリセット計数値をリセット閾値と比較する。上述のように、リセット閾値は予め定められた、例えば２０００の固定値とすることができる。また、リセット閾値が最大エラー数に依存して変化するように、リセット閾値は可変値とすることができる。リセット計数数がリセット閾値を上回る場合、ステップ６２４で示されるように、リセット計数値は０にクリアされる。また、そのブロックに対してリフレッシュ操作が実行される。そうでなければ、リセット計数値は維持される。この場合、リフレッシュ操作は行なわれない。また、主制御装置１１０は処理の実行を終了する。
【００３８】
上述の方法の変形例は、この明細書の開示の範囲内であるものと解されるべきである。さらに、複数のステップの実行順序は変更不能なものではなく、いくつかのステップは、他のステップの前に実行可能である。更に、いくつかのステップはひとつのステップに組み合わせることが可能であり、いくつかのステップは複数のステップに分割することが可能である。さらに、追加的な、または代替的な工程を採用することができることも理解されるべきである。
【００３９】
図７は、ひとつのブロックに関する最大永久エラーの量を決定するための方法の一例を示している。リフレッシュ操作が行なわれた後においては、そのブロックにおける一時的なビットエラーは解決されている。したがって、エラーがリフレッシュ操作の後にページに存在することをＥＣＣのフィールドが依然として示す場合、そこから推論される結論は、リフレッシュ操作はビットエラーを修復できなかったから、ビットエラーは永久的なエラーであるということである。したがって、ステップ７１２で示されるように、主制御装置１１０はリフレッシュ操作を行ない、次に、ステップ７１４で示されるように、そのリフレッシュ操作の直後に、そのブロックのための最大エラー数を決定する。ステップ７１６で示されるように、最大永久エラー数は新しく決定された最大エラー数と等しく設定される。図６に関して記述されるように、いくつかの具体化例では、最大永久エラー数が永久エラー閾値を上回った場合、そのブロックに対してリフレッシュ操作は実行されない。
【００４０】
上述の方法の変形例は、この明細書の開示の範囲内であるものと解されるべきである。さらに、複数のステップの実行順序は変更不能なものではなく、いくつかのステップは、他のステップの前に実行可能である。更に、いくつかのステップはひとつのステップに組み合わせることが可能であり、いくつかのステップは複数のステップに分割することが可能である。さらに、追加的な、または代替的な工程を採用することができることも理解されるべきである。
【００４１】
ここでの説明は、あくまで一例を示すためのものであって、この開示、その適用範囲、またはその使用形態の限定を意図したものではない。明瞭さのために、同じ参照番号は同様の要素を識別するために図面の中で使用される。ここに使用されたように、「Ａ、ＢおよびＣの少なくとも１つ」との表現は、非排他的論理であるＯＲを用いる論理（ＡまたはＢまたはＣ）を意味するものとして解されるべきである。方法内のステップは、この開示の原理を変更することなく、異なる順序によって実行可能であるものとして理解されるべきである。
【００４２】
ここに使用されるように、制御装置の語は、以下に列挙する（１）から（７）の一部であるか、または（１）から（７）を含むものである。（１）特定用途向けＩＣ（ＡＳＩＣ）；（２）電気回路；（３）論理回路の組み合わせ；（４）ＦＰＧＡ（Field Programmable Gate Array）と呼ばれる、製造後に構成、機能を設定可能な集積回路；（５）プログラムコードを実行する、共有の、専用の、または一群の、プロセッサー；（６）上述の機能を提供する適切な部品；および（７）チップ上に配置されたシステムのような、上記構成要素の一部またはすべての組み合わせ物。制御装置の語は、プロセッサーによって実行されるプログラムコードを格納するメモリを含むことがある。メモリは、共有、専用、またはグループとして提供されうる。
【００４３】
コード、またはプログラムコードは、上述のように、ソフトウェア、ファームウェアおよび／またはマイクロコードを含みうるものであって、プログラム、ルーチン、機能、クラスおよび／またはオブジェクトを指すことがある。共有は、上述のように、多数の制御装置からの一部またはすべてのコードが単一または共有のプロセッサーを使用して実行される場合があることを意味する。さらに、多数の制御装置からの一部またはすべてのコードは、単一または共有のメモリに格納される場合がある。グループは、上述のように、単一の制御装置からの一部またはすべてのコードが一群のプロセッサーを使用して実行される場合があることを意味する。さらに、単一の制御装置からの一部またはすべてのコードは一群のメモリを使用して格納される場合がある。
【００４４】
ここに記述された装置と方法は、１台以上のプロセッサーによって実行された１つ以上のコンピュータプログラムによって具体化することができる。コンピュータプログラムは、コンピュータ読取り可能な非一時的記録を提供し、かつ実体的な記録媒体の上に格納される、プロセッサーによって実行可能な命令群を含んでいる。コンピュータプログラムは、保存されたデータを含むことがある。コンピュータ読取り可能な非一時的記録を提供し、かつ実体的な記録媒体の非制限的な例として、不揮発性メモリ、磁気記憶装置、および光記憶装置を挙げることができる。
【００４５】
この明細書における開示の広い教唆は、様々な形式で具体化することができる。したがって、この明細書における開示は、特定の例示を含んでいるが、図面、明細書および特許請求の範囲の参照および学習に基づいて当業者には他の変形例が明らかになるから、ここに開示された発明の真の技術的範囲はそのように制限されるべきではない。
【符号の説明】
【００４６】
１００  装置、
１１０  制御装置（主制御装置）、
１２０  半導体不揮発性メモリ装置（フラッシュメモリ装置）。
【図１】
0005831271.tif 000002
【図２】
0005831271.tif 000003
【図３】
0005831271.tif 000004
【図４】
0005831271.tif 000005
【図５】
0005831271.tif 000006
【図６】
0005831271.tif 000007
【図７】
0005831271.tif 000008