(57)【要約】データ構造の更新がスケジュールされることを可能にするための方法および装置が、開示される。本発明の一態様によれば、複数の物理ブロックと、消去カウントブロックを含む複数のデータ構造とを含む不揮発性メモリを有するメモリシステムを動作させるための方法に、少なくとも１つのデータ構造の内容が、いつ更新されるべきであるかを判定することが関わる。内容が更新されるべきであると判定されると、データ構造の内容を更新する要求が、キューに入れられ、つまり、スケジュールされ、要求は、キューの先頭に事実上、達すると、実行される。
2007519083.tif 000002
【特許請求の範囲】
【請求項１】
複数の物理ブロックと、前記複数の物理ブロックの各物理ブロックのステータスを含む消去カウントブロックを含む複数のデータ構造とを有する不揮発性メモリを含むメモリシステムを動作させるための方法であって、
前記複数のデータ構造の少なくとも１つのデータ構造の内容が、いつ更新されるべきかを判定するステップと、
前記少なくとも１つのデータ構造の前記内容が、更新されるべきであると判定されると、前記少なくとも１つのデータ構造の前記内容を更新する要求をキューに入れるステップと、
前記要求を実行して、前記少なくとも１つのデータ構造の前記内容を更新するステップとを含む方法。
【請求項２】
前記少なくとも１つのデータ構造の前記内容を更新するステップは、前記消去カウントブロックの前記内容を更新して、前記複数の物理ブロックの各物理ブロックの実質的に最新のステータスを示すステップを含む請求項１に記載の方法。
【請求項３】
前記複数のデータ構造は、利用可能な物理ブロックに関連する前記ステータスによって示されるところにより、比較的低い回数の書き込みサイクルおよび消去サイクルを経ている前記複数の物理ブロックの前記利用可能な物理ブロックを明らかにする情報を含むように構成された第１のデータ構造を含み、前記要求を実行して、前記少なくとも１つのデータ構造の前記内容を更新するステップは、前記第１のデータ構造の内容を更新するステップを含む請求項１に記載の方法。
【請求項４】
前記複数のデータ構造は、利用可能な物理ブロックに関連する前記ステータスによって示されるところにより、比較的高い回数の書き込みサイクルおよび消去サイクルを経ている前記複数の物理ブロックの前記利用可能な物理ブロックを明らかにする情報を含むように構成された第１のデータ構造を含み、前記要求を実行して、前記少なくとも１つのデータ構造の前記内容を更新するステップは、前記第１のデータ構造の内容を更新するステップを含む請求項１に記載の方法。
【請求項５】
前記複数のデータ構造は、前記メモリシステムに電源が投入された際に、前記メモリシステムによって使用される情報を含むように構成された第１のデータ構造を含み、前記要求を実行して、前記少なくとも１つのデータ構造の前記内容を更新するステップは、前記第１のデータ構造の内容を更新するステップを含む請求項１に記載の方法。
【請求項６】
前記第１のデータ構造は、電源管理ブロックである請求項５に記載の方法。
【請求項７】
前記少なくとも１つのデータ構造の前記内容を更新する前記要求をキューに入れるステップは、実行されるべき手続きおよびアプリケーションのキューに前記要求を追加し、前記要求には、前記キューの中で比較的低い優先順位が割り当てられるステップを含む請求項１に記載の方法。
【請求項８】
前記要求を実行して、前記少なくとも１つのデータ構造の前記内容を更新するステップは、前記キューが、前記少なくとも１つのデータ構造の前記内容を更新する前記要求を除いて実質的に空である場合、前記要求を実行して、前記少なくとも１つのデータ構造の前記内容を更新するステップを含む請求項７に記載の方法。
【請求項９】
前記複数のデータ構造の前記少なくとも１つのデータ構造の前記内容が、いつ更新されるべきかを判定するステップは、第１の値を閾値と比較するステップを含み、前記第１の値が、前記閾値と実質的に等しい場合、前記少なくとも１つのデータ構造の前記内容は、更新されるべきであると判定される請求項１に記載の方法。
【請求項１０】
前記複数のデータ構造の前記少なくとも１つのデータ構造の前記内容が、いつ更新されるべきかを判定するステップは、前記メモリシステムに関連する時刻を獲得し、前記時刻が、前記少なくとも１つのデータ構造の前記内容が更新されるべきであると示した場合を判定するステップを含む請求項１に記載の方法。
【請求項１１】
前記不揮発性メモリは、ＮＡＮＤフラッシュメモリである請求項１に記載の方法。
【請求項１２】
複数の物理ブロックと、前記複数の物理ブロックの少なくとも１つの物理ブロックが消去された回数を示すように構成された、前記複数の物理ブロックの前記少なくとも１つの物理ブロックの消去カウントを含む、消去カウントブロックを含む複数のデータ構造とを有する不揮発性メモリを含むメモリシステムを動作させるための方法であって、
内部メンテナンスプロセスが、前記メモリシステム内でいつ実行されるべきかを判定するステップであって、
前記内部メンテナンスプロセスは、前記消去カウントブロックの中の、前記複数の物理ブロックの前記少なくとも１つの物理ブロックの前記消去カウントを更新するように構成されたステップと、
前記内部メンテナンスプロセスを求める要求を、前記内部メンテナンス要求が実行されるべきであると判定されると、キューに入れるステップと、
前記内部メンテナンスプロセスを実行するステップとを含む方法。
【請求項１３】
前記内部メンテナンスプロセスを実行するステップは、
前記消去カウントブロックの中の、前記複数の物理ブロックにおける前記少なくとも１つの物理ブロックの前記消去カウントを更新するステップと、
前記メモリシステムに電源が投入された際に使用される情報を含むように構成された、前記複数のデータ構造の第１のデータ構造を更新するステップであって、
前記情報は、前記複数の物理ブロックにおける前記少なくとも１つの物理ブロックの前記消去カウントを含むステップとを含む請求項１２に記載の方法。
【請求項１４】
前記内部メンテナンスプロセスを実行するステップは、
比較的低い消去カウントを有する、前記複数の物理ブロックにおける物理ブロックセットを実質的に明らかにするように構成された、前記複数のデータ構造の第２のデータ構造の内容を更新するステップと、
比較的高い消去カウントを有する、前記複数の物理ブロックにおける物理ブロックセットを実質的に明らかにするように構成された、前記複数のデータ構造の第３のデータ構造の内容を更新するステップとをさらに含む請求項１３に記載の方法。
【請求項１５】
前記内部メンテナンスプロセスが、いつ実行されるべきかを判定するステップは、第１の値を閾値と比較するステップを含み、前記第１の値が、前記閾値と実質的に等しい場合、前記内部メンテナンスプロセスが、実行されるべきであると判定される請求項１２に記載の方法。
【請求項１６】
前記内部メンテナンスプロセスが、いつ実行されるべきかを判定するステップは、前記メモリシステムに関連する時刻を獲得し、前記時刻が、前記内部メンテナンスプロセスが実行されるべきであると示した場合を判定するステップを含む請求項１２に記載の方法。
【請求項１７】
複数の物理ブロックと、前記複数の物理ブロックの少なくとも１つの物理ブロックに関連する消去カウントを格納するように構成された消去カウントブロックとを含む不揮発性メモリと、
前記消去カウントブロックの中の、前記複数の物理ブロックの前記少なくとも１つの物理ブロックの前記消去カウントを更新するように構成された内部メンテナンスプロセスが、メモリシステム内でいつ実行されるべきかを判定するように構成されたコードデバイス群と、
前記内部メンテナンス要求が実行されるべきであると判定されると、前記内部メンテナンスプロセスを求める要求をキューに入れるように構成されたコードデバイス群と、
前記内部メンテナンスプロセスを実行するように構成されたコードデバイス群と、
前記コードデバイス群を格納する媒体とを含むメモリデバイス。
【請求項１８】
前記内部メンテナンスプロセスを実行するように構成された前記コードデバイス群は、
前記消去カウントブロックの中の、前記複数の物理ブロックにおける前記少なくとも１つの物理ブロックの前記消去カウントを更新するように構成されたコードデバイス群と、
前記メモリシステムに電源が投入された際に使用される情報を含むように構成された、前記複数のデータ構造の第１のデータ構造を更新するように構成されたコードデバイス群であって、
前記情報は、前記複数の物理ブロックにおける前記少なくとも１つの物理ブロックの前記消去カウントを含むデバイス群とを含む請求項１７に記載のメモリデバイス。
【請求項１９】
前記内部メンテナンスプロセスを実行するように構成された前記コードデバイス群は、
比較的低い消去カウントを有する、前記複数の物理ブロックにおける物理ブロックセットを実質的に明らかにするように構成された、前記複数のデータ構造の第２のデータ構造の内容を更新するように構成されたコードデバイス群と、
比較的高い消去カウントを有する、前記複数の物理ブロックにおける物理ブロックセットを実質的に明らかにするように構成された、前記複数のデータ構造の第３のデータ構造の内容を更新するように構成されたコードデバイス群とをさらに含む請求項１８に記載のメモリデバイス。
【請求項２０】
前記内部メンテナンスプロセスが、いつ実行されるべきかを判定するように構成された前記コードデバイス群は、第１の値を閾値と比較するように構成されたコードデバイス群を含み、前記第１の値が、前記閾値と実質的に等しい場合、前記内部メンテナンスプロセスが実行されるべきであると判定される請求項１７に記載のメモリデバイス。
【請求項２１】
前記内部メンテナンスプロセスが、いつ実行されるべきかを判定するように構成された前記コードデバイス群は、
前記メモリシステムに関連する時刻を獲得するように構成されたコードデバイス群と、
前記時刻が、前記内部メンテナンスプロセスが実行されるべきであると示した場合を判定するように構成されたコードデバイス群とを含む請求項１７に記載のメモリデバイス。
【請求項２２】
複数の物理ブロックと、前記複数の物理ブロックの少なくとも１つの物理ブロックに関連する消去カウントを格納するように構成された消去カウントブロックとを含む不揮発性メモリと、
前記メモリシステム内で内部メンテナンスプロセスが、いつ実行されるべきであるかを判定するための手段であって、
前記内部メンテナンスプロセスは、前記消去カウントブロックの中の、前記複数の物理ブロックの前記少なくとも１つの物理ブロックの前記消去カウントを更新するように構成された手段と、
前記内部メンテナンス要求が実行されるべきであると判定されると、前記内部メンテナンスプロセスを求める要求をキューに入れるための手段と、
前記内部メンテナンスプロセスを実行するための手段とを含むメモリデバイス。
【請求項２３】
前記内部メンテナンスプロセスを実行するための前記手段は、
前記消去カウントブロックの中の、前記複数の物理ブロックにおける前記少なくとも１つの物理ブロックの前記消去カウントを更新するための手段と、
前記メモリシステムに電源が投入された際に使用される情報を含むように構成された、前記複数のデータ構造の第１のデータ構造を更新するための手段であって、
前記情報は、前記複数の物理ブロックにおける少なくとも１つの物理ブロックの前記消去カウントを含む手段とを含む請求項２２に記載のメモリデバイス。
【請求項２４】
前記内部メンテナンスプロセスを実行するための前記手段は、
比較的低い消去カウントを有する、前記複数の物理ブロックにおける物理ブロックセットを実質的に明らかにするように構成された、前記複数のデータ構造の第２のデータ構造の内容を更新するための手段と、
比較的高い消去カウントを有する、前記複数の物理ブロックにおける物理ブロックセットを実質的に明らかにするように構成された、前記複数のデータ構造の第３のデータ構造の内容を更新するための手段とをさらに含む請求項２３に記載のメモリデバイス。
【請求項２５】
前記内部メンテナンスプロセスが、いつ実行されるべきであるかを判定するための前記手段は、第１の値を閾値と比較するための手段を含み、前記第１の値が、前記閾値と実質的に等しい場合、前記内部メンテナンスプロセスが実行されるべきであると判定される請求項２２に記載のメモリデバイス。
【請求項２６】
前記内部メンテナンスプロセスが、いつ実行されるべきであるかを判定するための前記手段は、
前記メモリシステムに関連する時刻を獲得するための手段と、
前記時刻が、前記内部メンテナンスプロセスが実行されるべきであると示した場合を判定するための手段とを含む請求項２２に記載のメモリデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、大容量デジタルデータ記憶システムに関する。より詳細には、本発明は、物理ブロック使用率情報が、不揮発性メモリシステム内部で更新されることを効率的に可能にするためのシステムおよび方法に関する。
【背景技術】
【０００２】
フラッシュメモリ記憶システムなどの不揮発性メモリシステムの使用は、そのようなメモリシステムのコンパクトな物理的サイズ、ならびに不揮発性メモリが、繰り返し再プログラミングされることが可能であることから、増加している。フラッシュメモリ記憶システムのコンパクトな物理的サイズは、ますます普及しているデバイス内部におけるそのような記憶システムの使用を容易にする。フラッシュメモリ記憶システムを使用するデバイスには、デジタルカメラ、デジタルカムコーダ、デジタル音楽プレーヤ、ハンドヘルド・パーソナル・コンピュータ、およびグローバル・ポジショニング・デバイスが含まれるが、以上には限定されない。フラッシュメモリ記憶システムに含まれる不揮発性メモリを繰り返し再プログラミングすることができることにより、フラッシュメモリ記憶システムが、使用され、再使用されることが可能になる。
【０００３】
一般に、フラッシュメモリ記憶システムは、フラッシュメモリカードおよびフラッシュメモリチップセットを含むことが可能である。フラッシュメモリチップセットは、一般に、フラッシュメモリコンポーネントと、コントローラコンポーネントとを含む。通常、フラッシュメモリチップセットは、組み込みシステムに組み入れられるように構成されることが可能である。そのようなアセンブリ、つまり、ホストシステムの製造業者は、通常、コンポーネント形態のフラッシュメモリ、ならびにその他のコンポーネントを取得し、次いで、フラッシュメモリ、およびその他のコンポーネントを組み立てて、ホストシステムにする。
【０００４】
メモリシステムの電源が切れる場合、電源が切れることは、ユーザが、メモリシステムをシャットダウンしたためか、またはメモリシステムへの電源の停電があったために生じる可能性がある。ユーザが、メモリシステムの電源を切ることを選択した場合、メモリシステムは、一般に、すべての現在のプロセスを完了する、例えば、メモリシステムは、ホストシステムから、メモリシステムに関連するディレクトリにファイルを書き込むプロセスを完了する。加えて、メモリシステム内の情報またはデータが、現在の最新状態で格納されることが可能である。電源が切れることが、例えば、停電に起因する、予期しない、または突然の電源損失のために生じた場合、現在のプロセスは、完了されず、代わりに、通常、中止される。さらに、一部の情報またはデータが、失われる可能性がある。
【０００５】
例えば、メモリシステムへの電源を切るユーザ要求に応答してなど、「正常な」状況下で電源が切られたメモリシステムは、一般に、電源を切る要求が受け取られた時点で行われていたすべてのプロセスが、完了されているので、ディスクスキャンまたはデータ回復が実行されることを要さない。これは、通常、「正常なシャットダウン」または「正常なパワーダウン」と呼ばれる。しかし、「異常な」状況下で、例えば、停電、バッテリ障害、または不慮の電源離脱に起因して電源が切られたメモリシステムは、当業者には理解されるとおり、ディスクスキャンおよびデータ回復が実行されることを要する。異常な状況下で電源が切れることは、通常、「異常なシャットダウン」または「異常なパワーダウン」と呼ばれる。
【０００６】
異常なシャットダウンが生じると、メモリシステムの中に格納されている情報が、失われる可能性がある。一部の場合では、特定の物理ブロックに関する消去カウントブロックの中に格納された消去カウントが、物理ブロックの実際の消去カウントよりも相当に低い値を有する可能性がある。異常なシャットダウン、およびその後の電源投入の後、消去カウントブロックの中に格納された消去カウントが、物理ブロックの対応する実際の消去カウントよりも相当に低い場合、その物理ブロックの消去カウントは、格納された消去カウントに事実上、リセットされる可能性がある。その結果、物理ブロックは、物理ブロック内に格納された消去カウントによって示されるよりも、相当に多くの消耗を有する可能性がある。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
したがって、所望されるのは、メモリシステムの中に格納された情報が、定期的に更新されることを可能にするプロセスおよびシステムである。つまり、必要とされているのは、メモリシステムが異常な形でシャットダウンされ、その後電源が投入された場合、電源投入時にデータ回復プロセスを使用して復元されたデータがかなり新しくなるように、メモリシステムに関連するデータが比較的定期的に更新されることを可能にするための効率的な方法である。
【課題を解決するための手段】
【０００８】
本発明は、データ構造の更新がスケジュールされることを可能にするためのシステムおよび方法に関する。本発明の一態様によれば、複数の物理ブロックと、消去カウントブロックを含む複数のデータ構造とを含む不揮発性メモリを有するメモリシステムを動作させるための方法に、少なくとも１つのデータ構造の内容が、いつ更新されるべきであるかを判定することが関わる。内容が更新されるべきであると判定されると、データ構造の内容を更新する要求が、キューに入れられ、つまり、スケジュールされ、要求は、キューの先頭に事実上、達すると、実行される。一実施形態では、データ構造の内容を更新することは、消去カウントブロックの内容を更新して、各物理ブロックの実質的に最新のステータスを示すことを含む。
【０００９】
物理ブロック上の消耗に関連するステータス情報などの動的情報が、比較的長い期間にわたって更新されず、異常なパワーダウンがあった場合、実質的に古い情報だけが復元可能である一方で、最新の正確な情報は、復元可能でない可能性があるため、後のデータ回復プロセスにより、古い情報の復元がもたらされる可能性がある。復元される情報が最新である可能性を高めるため、データ構造の中に格納された情報が、実質的に定期的に更新されることを可能にする内部メンテナンス手続きが、スケジュールされることが可能である。このため、メンテナンスが、例えば、１日に１回、スケジュールされる場合、データ構造の中に格納された情報は、１日未満しか経っていないと実質的に考えることができる。
【００１０】
本発明の別の態様によれば、メモリシステムは、複数の物理ブロックと、物理ブロックが消去された回数を示す、物理ブロックに関連する消去カウントを含む消去カウントブロックを含む、複数のデータ構造とを含む不揮発性メモリを含む。メモリシステムを動作させるための方法は、内部メンテナンスプロセスが、いつ実行されるべきかを判定することを含む。内部メンテナンスプロセスは、消去カウントブロックの中の、物理ブロックの消去カウントを更新するように構成される。また、方法は、内部メンテナンス要求が実行されるべきであると判定されると、内部メンテナンスプロセスを求める要求をキューに入れること、ならびに内部メンテナンスプロセスを実行することも含む。
【００１１】
一実施形態では、内部メンテナンスプロセスを実行することは、消去カウントブロックの中の、物理ブロックの消去カウントを更新すること、および複数のデータ構造の第１のデータ構造を更新することを含む。電源管理ブロックであることが可能な第１のデータ構造は、物理ブロックの消去カウントを含む、メモリシステムに電源が投入された際に使用される情報を含むように構成される。
【００１２】
別の実施形態では、内部メンテナンスプロセスが、いつ実行されるべきかを判定することは、第１の値を閾値と比較することを含む。そのような実施形態では、第１の値は、閾値と実質的に等しい場合、内部メンテナンスプロセスが実行されるべきであると判定される。代替として、別の実施形態では、内部メンテナンスプロセスが、いつ実行されるべきかを判定することは、メモリシステムに関連する時刻を獲得し、その時刻が、内部メンテナンスプロセスが実行されるべきであると示した場合を判定することを含むことが可能である。
【００１３】
本発明の以上の利点、およびその他の利点は、以下の詳細な説明を読み、図面の様々な図を検討することで明白となろう。
【００１４】
本発明は、添付の図面に関連して解釈される以下の説明を参照することによって、最もよく理解することができる。
【発明を実施するための最良の形態】
【００１５】
メモリシステムへの電源が失われることは、一般に、メモリシステム内で多数の問題を生じさせる可能性がある。問題には、フラッシュメモリにファイルを書き込むプロセス中に電源が失われた場合、データが失われることを含むが、これには限定されない。電源が失われることに起因して生じる諸問題を修正するため、メモリシステムの後の電源投入時に、データ整合性を維持するように回復動作が実行されることが可能である。回復可能である情報、例えば、物理ブロックがどれだけ頻繁に消去されたかの目安を提供する消去カウント情報が、最新ではない場合、回復された情報は、不正確である可能性があり、場合により、メモリシステム内部で問題を生じさせる可能性がある。例えば、あるブロックが、回復された消去カウントによって示されるよりも、実際には多くの消耗を有する可能性があり、これは、あるブロックが使用可能期間の終りに近いが、そのブロックが使用可能期間の終りに近いことが知られていない場合、問題となる可能性がある。
【００１６】
一部の動的な情報、例えば、消去カウントなどの変化する情報は、通常、正常なパワーダウンプロセス中、通常、更新されるが、メモリシステムの電源が、比較的長い期間にわたって切られない場合、そのような動的情報は、更新されない可能性がある。動的情報が、比較的長い期間にわたって更新されず、異常なパワーダウンがあった場合、その後のデータ回復プロセスにより、古い情報が復元されることがもたらされる可能性がある。復元される情報が最新である可能性を高めるため、情報が、実質的に定期的に更新されることが可能である。一実施形態では、一部の情報が更新されることを可能にする内部メンテナンスが、定期的にスケジュールされることが可能である。また、スケジュールされた内部メンテナンスにより、メモリシステム内の一部のテーブルまたはブロックが、例えば、システムメモリの中に、または不揮発性メモリの確保されたセクションの中に、事実上、バックアップされることが可能になることも可能である。
【００１７】
スケジュールされた内部メンテナンスを使用することが有益である可能性があるフラッシュメモリシステム、または、より一般的に、不揮発性メモリデバイスには、一般に、フラッシュメモリカードおよびチップセットが含まれる。通常、フラッシュメモリシステムは、ホストシステムと併せて使用されて、ホストシステムが、フラッシュメモリシステムにデータを書き込む、またはフラッシュメモリシステムからデータを読み取ることができるようになる。しかし、一部のフラッシュメモリシステムは、図１ｃに関連して以下に説明するとおり、組み込まれたフラッシュメモリと、ホスト上で実行されて、組み込まれたフラッシュメモリのためのコントローラとして実質的に作用するソフトウェアとを含む。図１ａを参照して、不揮発性メモリデバイス、例えば、ＣｏｍｐａｃｔＦｌａｓｈメモリを含む一般的なホストシステムを説明する。ホストシステム、つまり、コンピュータシステム１００は、一般に、マイクロプロセッサ１０８、ランダム・アクセス・メモリ（ＲＡＭ）１１２、および／または入力／出力回路１１６が通信することを可能にするシステムバス１０４を含む。ホストシステム１００は、一般に、例示のためには示されていない、その他のコンポーネント、例えば、ディスプレイデバイスおよびネットワーキングデバイスも含むことが可能であることを理解されたい。
【００１８】
一般に、ホストシステム１００は、静止イメージ情報、オーディオ情報、およびビデオイメージ情報を含むが、以上には限定されない情報をキャプチャすることができることが可能である。そのような情報は、リアルタイムでキャプチャされることが可能であり、無線でホストシステム１００に伝送されることが可能である。ホストシステム１００は、実質的に任意のシステムであることが可能であるが、ホストシステム１００は、通常、デジタルカメラ、ビデオカメラ、セルラー通信デバイス、およびオーディオプレーヤ、またはビデオプレーヤなどのシステムである。しかし、ホストシステム１００は、一般に、データまたは情報を格納し、データまたは情報を取り出す、実質的に任意のシステムであることが可能であることを理解されたい。
【００１９】
また、ホストシステム１００は、データをキャプチャするだけ、またはデータを取り出すだけのシステムであることも可能である。つまり、ホストシステム１００は、一実施形態では、データを格納する専用システムであることが可能であり、あるいはホストシステム１００は、データを読み取る専用システムであることが可能である。例として、ホストシステム１００は、データを書き込むようにだけ、または格納するようにだけ構成されたメモリライタであることが可能である。代替として、ホストシステム１００は、データを読み取る、または取り出すように通常、構成され、データをキャプチャするようには構成されない、ＭＰ３プレーヤなどのデバイスであることが可能である。
【００２０】
一実施形態では、取り外し可能なメモリデバイスである不揮発性メモリデバイス１２０は、バス１０４とインタフェースをとって、情報を格納するように構成される。光インタフェースブロック１３０により、不揮発性メモリデバイス１２０が、バス１０４と間接的にインタフェースをとることが可能になることが可能である。存在する場合、入出力回路ブロック１１６が、当業者には理解されるとおり、バス１０４にかかる負荷を減らす役割をする。不揮発性メモリデバイス１２０は、不揮発性メモリ１２４と、光メモリ制御システム１２８とを含む。一実施形態では、不揮発性メモリデバイス１２０は、単一のチップの上に、またはダイの上に実装されることが可能である。代替として、不揮発性メモリデバイス１２０は、マルチチップモジュール上に、あるいはチップセットを形成することが可能であり、一緒に不揮発性メモリデバイス１２０として使用されることが可能な複数の別々のコンポーネント上に実装されることが可能である。不揮発性メモリ１２０の一実施形態は、図１ｂに関連して、以下により詳細に説明する。
【００２１】
不揮発性メモリ１２４、例えば、ＮＡＮＤフラッシュメモリなどのフラッシュメモリが、データが、必要に応じてアクセスされ、読み取られることが可能であるように、データを格納するように構成される。また、不揮発性メモリ１２４の中に格納されたデータは、適宜、消去されることも可能である。ただし、不揮発性メモリ１２４の中の一部のデータは、消去可能でない可能性があることを理解されたい。データを格納するプロセス、データを読み取るプロセス、およびデータを消去するプロセスは、一般に、メモリ制御システム１２８によって制御されるか、またはメモリ制御システム１２８が存在しない場合、マイクロプロセッサ１０８によって実行されるソフトウェアによって制御される。不揮発性メモリ１２４の動作は、不揮発性メモリ１２４のセクションが、実質的に均等に消耗されることを基本的に生じさせることにより、不揮発性メモリ１２４の寿命が、実質的に最大化されるように管理されることが可能である。
【００２２】
不揮発性メモリデバイス１２０は、一般に、オプションのメモリ制御システム１２８、すなわち、コントローラを含むものとして説明してきた。しばしば、不揮発性メモリデバイス１２０は、不揮発性メモリ１２４機能と、メモリ制御システム１２８機能、すなわち、コントローラ機能のために、別々のチップを含むことが可能である。例えば、ＰＣカード、ＣｏｍｐａｃｔＦｌａｓｈカード、ＭｕｌｔｉＭｅｄｉａカード、およびセキュリティで保護されたデジタルカードを含むが、以上には限定されない不揮発性メモリデバイスは、別個のチップ上に実装されることが可能なコントローラ群を含むのに対して、他の不揮発性メモリデバイスは、別個のチップ上に実装されたコントローラ群を含まない可能性がある。不揮発性メモリデバイス１２０が、別々のメモリチップとコントローラチップを含まない実施形態では、メモリ機能とコントローラ機能は、当業者には理解されるとおり、単一のチップに組み込まれることが可能である。代替として、メモリ制御システム１２８の機能は、前述したとおり、例えば、不揮発性メモリデバイス１２０が、メモリコントローラ１２８を含まない実施形態において、マイクロプロセッサ１０８によって提供されてもよい。
【００２３】
図１ｂに関連して、本発明の実施形態による不揮発性メモリデバイス１２０を、より詳細に説明する。前述したとおり、不揮発性メモリデバイス１２０は、不揮発性メモリ１２４を含み、メモリ制御システム１２８を含むことが可能である。メモリ１２４、および制御システム１２８、つまり、コントローラは、不揮発性メモリデバイス１２０の１次コンポーネントであることが可能であり、ただし、メモリ１２４が、例えば、組み込まれたＮＡＮＤデバイスである場合、不揮発性メモリ１２０は、制御システム１２８を含まない可能性がある。メモリ１２４は、半導体基板上に形成されたメモリセルのアレイであることが可能であり、１つまたは複数のデータビットが、メモリセルの個々の記憶要素上に２つ以上の電荷レベルの１つを格納することによって、個々のメモリセルの中に格納される。不揮発性フラッシュ型の電気的に消去可能なプログラマブル読み取り専用メモリ（ＥＥＰＲＯＭ）が、そのようなシステムのための一般的なタイプのメモリの実施例である。
【００２４】
存在する場合、制御システム１２８は、ホストコンピュータ、またはメモリシステムを使用してデータを格納している他のシステムに対して、バス１５を介して通信する。バス１５は、一般に、図１ａのバス１０４の一部分である。また、制御システム１２８は、メモリセルアレイ１１を含むことが可能なメモリ１２４の動作も制御して、ホストによって提供されたデータを書き込み、ホストによって要求されたデータを書き込み、動作中のメモリ１２４内で、様々なハウスキーピング機能を実行する。制御システム１２８は、一般に、関連する不揮発性ソフトウェアメモリ、様々な論理回路などを有する、汎用マイクロプロセッサを含む。また、特定のルーチンのパフォーマンスを制御するための、１つまたは複数の状態マシンも、しばしば、含まれる。
【００２５】
メモリセルアレイ１１は、通常、アドレス復号器１７を介して、制御システム１２８またはマイクロプロセッサ１０８によってアドレス指定される。復号器１７は、制御システム１２８によってアドレス指定されているメモリセルグループにデータをプログラミングするため、そのようなメモリセルグループからデータを読み取るため、またはそのようなメモリセルグループを消去するために、アレイ１１のゲートおよびビットラインに正しい電圧を印加する。さらなる回路群１９には、アドレス指定されたセルグループにプログラミングされるデータに依存する、アレイの要素に印加される電圧を制御する、プログラミングドライバ群が含まれる。また、回路群１９には、アドレス指定されたメモリセルグループからデータを読み取るのに必要な、センス増幅器、およびその他の回路群も含まれる。アレイ１１にプログラミングされるデータ、またはアレイ１１から最近、読み取られたデータは、通常、制御システム１２８内部のバッファメモリ２１の中に格納される。また、制御システム１２８は、普通、コマンドおよびステータスデータなどを一時的に格納するための様々なレジスタも含む。
【００２６】
アレイ１１は、多数のＢＬＯＣＫ０〜Ｎのメモリセルに分割される。フラッシュ型ＥＥＰＲＯＭシステムに関して一般的であるように、ブロックは、通常、消去の最小単位である。つまり、各ブロックは、一緒に消去される最小限の数のメモリセルを含む。各ブロックは、通常、いくつかのページに分割される。当業者には理解されるとおり、ページは、プログラミングの最小単位であることが可能である。つまり、基本的なプログラミング動作により、最低限、１ページのメモリセルにデータの書き込まれるか、１ページのメモリセルからデータが読み取られる。１つまたは複数のデータセクタが、通常、各ページ内に格納される。図１ｂに示されるとおり、１つのセクタは、ユーザデータとオーバーヘッドデータとを含む。オーバーヘッドデータは、通常、そのセクタのユーザデータから計算された誤り訂正符号（ＥＣＣ）を含む。制御システム１２８の一部分２３が、データが、アレイ１１にプログラミングされる際に、ＥＣＣを計算し、データがアレイ１１から読み取られる際に、ＥＣＣを検査することも行う。代替として、ＥＣＣは、ＥＣＣが関係するユーザデータとは異なるページ、または異なるブロックの中に格納される。
【００２７】
ユーザデータのセクタは、通常、磁気ディスクドライブにおけるセクタのサイズに対応する５１２バイトである。オーバーヘッドデータ、つまり、冗長なデータは、通常、追加の１６バイトである。データの１つのセクタは、最も一般的には、各ページの中に含まれるが、代わりに２つ以上のセクタが、ページを形成してもよい。任意の数のページが、一般に、ブロックを形成することができる。例として、ブロックは、８つのページから、５１２ページ、１０２４ページ、またはそれより多くのページから形成されることが可能である。ブロックの数は、メモリシステムに所望されるデータ記憶容量を与えるように選択される。アレイ１１は、通常、ある割合のブロックをそれぞれが含む、いくつかのサブアレイ（図示せず）に分割され、サブアレイは、様々なメモリ動作の実行において並列性の度合いを高めるため、多少、互いに独立に機能する。複数のサブアレイの使用の実施例が、参照により全体が本明細書に組み込まれている、米国特許第５８９０１９２号に記載されている。
【００２８】
一実施形態では、不揮発性メモリは、システムに、例えば、ホストシステムに組み込まれる。図１ｃは、組み込まれた不揮発性メモリを含むホストシステムを示す図である。一般に、ホストシステムまたはコンピュータシステム１５０は、ホストシステム１５０の他のコンポーネント（図示せず）も存在するものの、とりわけ、マイクロプロセッサ１５８、ＲＡＭ１６２、および入出力回路群１６６が通信することを可能にするシステムバス１５４を含む。不揮発性メモリ１７４、例えば、フラッシュメモリは、情報が、ホストシステム１５０内部で格納されることを可能にする。インタフェース１８０が、不揮発性メモリ１７４とバス１５４の間で提供されて、情報が、不揮発性メモリ１７４から読み取られること、およびメモリ１７４に書き込まれることを可能にすることが可能である。
【００２９】
不揮発性メモリ１７４は、不揮発性メモリ１７４を制御するように構成されたソフトウェアとファームウェアのいずれか、または両方を事実上、実行するマイクロプロセッサ１５８によって管理されることが可能である。つまり、マイクロプロセッサ１５８は、不揮発性メモリ１７４が制御されることを可能にするコードデバイス群（図示せず）、すなわち、ソフトウェア・コード・デバイス群、またはファームウェア・コード・デバイス群を実行することができる。以下に説明する、マイクロプロセッサ１５８内部のＣＰＵとパッケージにされたフラッシュメモリであること、別個のフラッシュ型ＲＯＭであること、または不揮発性メモリ１７４内部にあることが可能な、そのようなコードデバイス群は、不揮発性メモリ１７４内の物理ブロックがアドレス指定されることを可能にすることができ、情報が、物理ブロックの中に格納されること、物理ブロックから読み取られること、および物理ブロックから消去されることを可能にすることができる。
【００３０】
ホストシステム１５０が、不揮発性メモリ１７４と協働する場合、または図１ａのホストシステム１００が、メモリデバイス１２０と協働する場合、不揮発性メモリ内に格納された一部の情報を実質的に更新し、事実上、バックアップするように、内部メンテナンス要求がスケジュールされることが可能である。図２は、本発明の実施形態による、内部メンテナンス要求が内部でスケジュールされることが可能なシステムの概略ブロック図である。システム２００は、論理ブロック２１２と、対応する物理ブロック２１４の間のマッピングを提供するように構成されたブロック・マッピング・テーブル２１０を含む。参照により本明細書に組み込まれている、同時係属の米国特許出願第１０／２８１６９６号および米国特許出願第１０／２８１６２６号に記載される、消去カウントブロック２２０が、消去カウント、つまり、各物理ブロック２１４が何回の書き込みサイクルおよび消去サイクルを経たかの指示を格納するように構成される。最少消去頻度ブロックテーブル２３０が、最も少ない回数の書き込みサイクルおよび消去サイクルを経ている、利用可能な物理ブロック２１４に関係する情報を格納するように構成される。逆に、最多消去頻度ブロックテーブル２４０が、最高回数の書き込みサイクルおよび消去サイクルを経ている、利用可能な物理ブロック２１４に関係する情報を格納するように構成される。
【００３１】
通常、システム２００の正常なシャットダウンが行われた場合、システム２００の確保されたメモリ領域である電源管理ブロック２６０に書き込みが行われる。消去カウントブロック２２０の中に格納されているような消去カウントが、正常なシャットダウン中、電源管理ブロック２６０に書き込まれることが可能である。システム２００の後の電源投入後、電源管理ブロック２６０の中に格納された消去カウントを使用して、消去カウントブロック２２０、最少消去頻度ブロックテーブル２３０、および最多消去頻度ブロックテーブル２４０が実質的に再現されることが可能である。
【００３２】
消去カウントブロック２２０、最少消去頻度ブロックテーブル２３０、および最多消去頻度ブロックテーブル２４０の中の、現在の情報を保持することにより、パワーダウンの後に電源投入が行われた場合、システム２００が、比較的新しく、正確な状態にされることが可能になる。消去カウントブロック２２０、最少消去頻度ブロックテーブル２３０、および最多消去頻度ブロックテーブル２４０の中に格納されている情報が、比較的新しいことを確実にするため、消去カウントブロック２２０、最少消去頻度ブロックテーブル２３０、および最多消去頻度ブロックテーブル２４０の比較的定期的にスケジュールされたメンテナンスが、実行されることが可能である。つまり、消去カウントブロック２２０、最少消去頻度ブロックテーブル２３０、および最多消去頻度ブロックテーブル２４０は、スケジュールされたメンテナンス中に、定期的に更新されることが可能である。一実施形態では、スケジュールされたメンテナンス中に消去カウントブロック２２０を更新することは、適切な場合、消去カウントブロック２２０および物理ブロック２１４の中に格納された消去カウントを、実際の消去カウントから差分消去カウントに、つまり、システム２００に関連する最低の実際の消去カウントであることが可能なベース値に基づく消去カウントに切り替えることを含むことが可能である。スケジュールされたメンテナンスが行われた際、差分消去カウントが、消去カウントブロック２２０の中に既に格納されている場合、消去カウントブロック２２０を更新することは、例えば、差分消去カウントが基づくベイズ（ｖａｓｅ）値を適宜、リセットすることにより、差分消去カウントを実質的に再びゼロにすることを含むことが可能である。
【００３３】
消去カウントブロック２２０、最少消去頻度ブロックテーブル２３０、および最多消去頻度ブロックテーブル２４０を更新することは、比較的時間がかかる可能性があるので、消去カウントブロック２２０、最少消去頻度ブロックテーブル２３０、および最多消去頻度ブロックテーブルは、一般に、システム２００の電源が切られた際、または電源が投入された際、および定期的なスケジュールされたメンテナンス中に。消去カウントブロック２２０は、一般に、より頻繁に更新される、すなわち、消去カウントブロック２２０は、適応テーブル・バックアップ・プロセス中、より頻繁に再構築されることが可能である。実質的にすべてのブロック２１４を読み取り、消去カウントを明らかにすることによって更新されることが可能な、更新された消去カウントブロック２２０を所与として、必要な場合、最少消去頻度ブロックテーブル２３０および最多消去頻度ブロックテーブル２４０を再構築することが可能である可能性があることを理解されたい。
【００３４】
一実施形態では、スケジュールされたメンテナンスは、消去カウントブロック２２０、最少消去頻度ブロックテーブル２３０、および最多消去頻度ブロックテーブル２４０が更新されて以来、最少消去頻度ブロックテーブル２３０が、およそ１０００００回、変更されるといつでも、行われることが可能であり、他方、適応テーブル・バックアップ・プロセスは、最少消去頻度ブロックテーブル２３０が、およそ１００００回、変更されるたびに１回、行われることが可能である。代替として、スケジュールされたメンテナンスは、特定の時点で、または特定の時間が経過した後に行われてもよく、他方、適応テーブル・バックアップ・プロセスも、使用の時点で、または所与の時間が経過した後に行われてもよく、適応テーブル・バックアップ・プロセスは、スケジュールされたメンテナンスよりも頻繁に行われる。
【００３５】
図３に関連して、本発明の実施形態による、内部のスケジュールされたメンテナンス要求を可能にする、不揮発性メモリコンポーネントを使用する一方法を説明する。スケジュールされたメンテナンス要求を可能にする不揮発性メモリコンポーネントを使用するプロセス３００は、ステップ３０４で始まり、例えば、データの読み取りおよび書き込みを行うように、メモリコンポーネントが利用される。ステップ３０８で、メモリコンポーネントの電源が切られるべきかどうかの判定が行われる。メモリコンポーネントを使用している間に、ユーザが、メモリコンポーネントの電源を切ることを所望する可能性があることを理解されたい。
【００３６】
ステップ３０８で、メモリコンポーネントの電源が切られるべきであると判定された場合、プロセスフローは、ステップ３１２に進み、パワーダウンプロセスが実行され、メモリコンポーネントの電源が切られる。パワーダウンプロセスには、電源管理ブロックに署名を書き込むことが関わることが可能である。また、パワーダウンプロセスには、テーブル群に関係する情報を電源管理ブロック内に書き込み、後の電源投入プロセス後にテーブル群を比較的容易に再現する、または再構築することができるようにすることにより、テーブル群、例えば、ブロック・マッピング・テーブルまたは最少消去頻度ブロックテーブルを実質的にバックアップすることも関わることが可能である。メモリコンポーネントの電源が切られると、不揮発性メモリコンポーネントを使用するプロセスは、完了する。
【００３７】
代替として、ステップ３０８で、不揮発性メモリコンポーネントの電源が切られるべきでないと判定された場合、ステップ３１６で、定期的なスケジュールされたメンテナンスが実行されるべきかどうか、すなわち、内部メンテナンスがスケジュールされるべきかどうかが判定される。前述したとおり、内部メンテナンスは、消去カウントブロックを実質的に最新の状態にすること、ならびに最多消去頻度ブロックおよび最少消去頻度ブロックが、メモリコンポーネントに関連する最多消去頻度未使用ブロックおよび最少消去頻度未使用ブロックをそれぞれ含むことを実質的に確実にすることを含むことが可能である。
【００３８】
メンテナンスをいつスケジュールするかの判定は、特定の時刻に基づくことが可能である。例として、不揮発性メモリコンポーネントに関連する全体的システムに関連する時刻が、午前０時などの特定の時刻である場合、メンテナンスがスケジュールされることが可能である。メンテナンスは、スケジュールされるべき手続き、すなわち、消去カウントブロックの更新、または最少消去頻度ブロックテーブルの更新が、呼び出され、実行されることを可能にする遅延手続き呼び出しなどのコマンドを使用して、スケジュールされることが可能である。遅延手続き呼び出しの使用により、遅延手続きに、比較的低い優先順位が割り当てられることが可能になり、より高い優先順位を有する手続きが完了して初めて、遅延手続きが、実質的に実行されるようになることが可能である。
【００３９】
ステップ３１６で、スケジュールされたメンテナンスを実行すべき時刻ではないと判定された場合、プロセスフローは、ステップ３０４に戻り、不揮発性メモリコンポーネントが引き続き利用される。代替として、ステップ３１６で、スケジュールされたメンテナンスを実行すべき時刻であると判定された場合、メンテナンスが、ステップ３１８でスケジュールされる。つまり、メンテナンス手続きが、キューに入れられる。メンテナンス手続きがキューに入れられると、メンテナンスが、ステップ３２０で最終的に実行される。メンテナンスを実行する一方法に関連するステップを、図４に関連して以下に説明する。メンテナンス手続きが実行された後、プロセスフローは、ステップ３０４に戻り、不揮発性メモリコンポーネントが、引き続き利用される。
【００４０】
内部メンテナンスがスケジュールされる際、実質的に任意のメンテナンス手続きが、一般に、スケジュールされることが可能である。このため、スケジュールメンテナンス中に実行される手続きは、多種多様であることが可能である。通常、手続きは、消去カウントブロック、最少消去頻度ブロックテーブル、および最多消去頻度ブロックテーブルが、必要な場合、実質的に再構築されることを可能にするのに十分な情報を更新し、実質的にバックアップするように構成される。また、メンテナンス手続きは、ベース値、例えば、新たなベース値に対する差分消去カウントを実質的にゼロに設定することにより、差分消去カウントが、消去カウントブロックの中に格納されているか、あるいは、消去カウントブロックの中に格納されるべき場合、差分消去カウントを更新することも含むことが可能である。図４に関連して、本発明の実施形態による、スケジュールされた内部メンテナンスを実行する１つのプロセスに関連するステップ、例えば、図３のステップ３２０を説明する。スケジュールされたメンテナンスを実行することは、ステップ４０２で始まり、消去カウントブロックの内容が更新される。消去カウントブロックの内容を更新することは、一般に、不揮発性メモリコンポーネントの中に含まれる各使用可能なブロックから現在の消去カウントを獲得すること、現在の消去カウントを使用して、平均消去カウントを算出すること、および現在の消去カウント、および平均消去カウントを消去カウントブロックの中に格納することを含むことが可能である。
【００４１】
消去カウントブロックの内容が更新された後、最少消去頻度ブロックテーブルの内容が、ステップ４０６で更新される。最少消去頻度ブロックテーブルの内容を更新することは、更新された消去カウントブロックを使用して、不揮発性メモリコンポーネントに関連する最新の最少消去頻度ブロックを明らかにし、次に、それらの最少消去頻度ブロックを明らかにする情報を最少消去頻度ブロックテーブルの中に格納することを含むことが可能である。このため、不揮発性メモリコンポーネントの中の最少消去頻度ブロックを含む予備のブロックプールが、事実上、更新される。
【００４２】
ステップ４１０で、最多消去頻度ブロックテーブルが、不揮発性メモリコンポーネントの中の最新の最多消去頻度ブロックを含むように更新される。最多消去頻度ブロックを明らかにすることは、消去カウントブロックの中に格納された最高消去カウントに対応するブロックを明らかにすることによって行われることが可能である。最多消去頻度ブロックテーブルが更新されると、電源管理ブロックの内容が、ステップ４１４で更新される。電源管理ブロックの内容を更新することは、平均消去カウント、ならびに、不揮発性メモリコンポーネント内の使用可能なブロックに関連する消去カウントを、電源管理ブロックのページの中に書き込むことを含むことが可能である。一実施形態では、電源管理ブロックの内容を更新することは、シャットダウン署名に類似することが可能な署名を書き込むことも含む。署名は、消去カウントブロック、最少消去頻度ブロックテーブル、および最多消去頻度ブロックテーブルが前回、いつ更新されたかを示すように書き込まれることが可能である。電源管理ブロックに書き込まれることが可能な他の情報には、消去カウントブロック、最少消去頻度ブロックテーブルの中で明らかにされたブロック、および最多消去頻度ブロックテーブルの中で明らかにされたブロックに関係する情報が含まれる。このため、消去カウントブロック、最少消去頻度ブロックテーブル、および最多消去頻度ブロックテーブルは、電源管理ブロックが、そのようなブロックまたはテーブルを再現するのに、またはブロックまたはテーブルが位置するメモリ内の場所を少なくともポイントするのに十分な情報を保持する場合、電源管理ブロックの中に事実上、バックアップされることが可能である。電源管理ブロックが更新されると、内部メンテナンスを実行するプロセスは、完了する。
【００４３】
内部メンテナンス要求をスケジュールすることは、全体的システムによって、例えば、ホスト・オペレーティング・システム上で実行されているアプリケーションによって、またはホスト・オペレーティング・システム自体によって実行されることが可能であるが、内部メンテナンス要求をスケジュールすることは、全体的システムに関連するドライバによって実行されることも可能である。例として、不揮発性メモリが、ホストとインタフェースをとるメモリコンポーネントの一部である場合、ホスト・オペレーティング・システム、またはホスト・インタフェース・システム上で実行されるアプリケーションが、内部メンテナンス要求をスケジュールすることができるか、またはメモリコンポーネントに関連するドライバが、内部メンテナンス要求をスケジュールすることができる。次に、図５を参照して、本発明の実施形態による、メモリコンポーネントに関連するドライバが、内部メンテナンス要求を内部でスケジュールすることができる全体的システムを動作させる一方法を説明する。全体的システムを動作させるプロセス５００が、ステップ５０４で始まり、スケジュールメンテナンスを実行するための１つまたは複数の閾値が設定される。１つまたは複数の閾値は、最少消去頻度ブロックテーブルが変更される、または更新される、いくつかの時刻に基づくことが可能である。例として、閾値は、最少消去頻度ブロックテーブルなどのテーブルが、およそ１０００００回、変更されるたびに閾値が実質的に満たされるように、設定されることが可能である。
【００４４】
１つまたは複数の閾値が設定されると、ステップ５０８で、不揮発性メモリコンポーネントが動作させられ、カウンタが、適宜、増分される。閾値が、最少消去頻度ブロックテーブルが変更される回数に基づく場合、カウンタは、実質的に、最少消去頻度ブロックテーブルの内容が変更されるたびに、増分されることが可能であり、すなわち、カウンタは、最少消去頻度ブロックテーブルの中で明らかにされたブロックが変更された回数であることが可能である。最少消去頻度ブロックテーブルは、最少消去頻度ブロックテーブルの中で明らかにされたブロックが、使用のために獲得されるたびに、事実上、変更される。不揮発性メモリコンポーネントを動作させている間、ステップ５１２で、不揮発性メモリコンポーネントの電源が切られるべきかどうかが判定されることが可能である。不揮発性メモリコンポーネントの電源が切られるべきであると判定された場合、ステップ５１６で、パワーダウンプロセスが実行されて、不揮発性メモリコンポーネントの電源が切られる。パワーダウンプロセスには、消去カウントブロック、最少消去頻度ブロックテーブル、および最多消去頻度ブロックテーブルを更新すること、ならびにパワーダウン署名を書き込むことが関わることが可能である。不揮発性メモリコンポーネントの電源が切られた後、全体的システムを動作させるプロセスは、完了する。
【００４５】
代替として、ステップ５１２で、不揮発性メモリコンポーネントの電源が切られるべきでないと判定された場合、プロセスフローは、ステップ５２０に進み、カウンタが閾値と等しいかどうかが判定される。つまり、ステップ５２０で、メンテナンス要求がスケジュールされるべきかどうかが判定される。カウンタが、閾値と等しくないと判定された場合、プロセスフローは、ステップ５０８に進み、不揮発性メモリコンポーネントが、引き続き使用され、カウンタが、適宜、増分される。
【００４６】
他方、ステップ５２０で、カウンタが閾値と実質的に等しいと判定された場合、一実施形態では、カウンタは、ステップ５２４でリセットされる。１つの閾値が存在する場合、カウンタは、再初期化されたカウンタが、カウンタが閾値と実質的に等しくなる程度まで最終的に増分されるたびに、メンテナンスがスケジュールされることが可能であるようにリセットされることが可能である。しかし、複数の閾値が存在する場合、カウンタが到達して、メンテナンスがいつスケジュールされるべきかを示すことが可能な複数の閾値が存在するため、カウンタは、必ずしもリセットされないことを理解されたい。
【００４７】
ステップ５２８で、メンテナンスがスケジュールされる、すなわち、様々なブロックおよびテーブルの内容を更新することに関連する手続きが、スケジュールされることが可能である。通常、メンテナンス手続きは、より高い優先順位の手続きが、メンテナンス手続きが実行される前に実行され、完了することを可能にする遅延手続き呼び出しを使用して、キューに入れられる。メンテナンスがスケジュールされた後、定期的メンテナンスが、ステップ５３２で実行される。つまり、手続きのキューの中の、実質的にすべてのより高い優先順位の手続きの後の、スケジュールされたメンテナンスが完了し、全体的システムが、事実上、アイドルである。定期的なスケジュールされたメンテナンスを実行する一方法に関連するステップを、図４に関連して説明する。スケジュールされたメンテナンスが実行されると、プロセスフローは、ステップ５０８に戻り、不揮発性メモリコンポーネントが、引き続き利用される。
【００４８】
前述したとおり、内部メンテナンスをスケジュールすることにより、実質的に最新の状態にされるべき消去カウントブロックが、メモリコンポーネントのブロックに関連する最新の消去カウントを含むことを可能にするプロセスが、システムリソースが比較的利用できる時点に、メンテナンスが行われることが可能であるようにスケジュールされることが可能になる。また、内部メンテナンスをスケジュールすることにより、最少消去頻度ブロックテーブル、最多消去頻度ブロックテーブル、および電源管理ブロックなどの、他のブロックおよびテーブルを更新するプロセスも可能になる。
【００４９】
図６ａは、更新されるのに先立つ物理ブロックおよび消去カウントブロックを示す図である。システム６００内で、データを格納するように構成された予備の物理ブロック６０２、６０４が、ブロック６０２、６０４の中に、関連する消去カウント６０６、６０８をそれぞれ格納していることが可能である。ブロック６０２は、ブロック６０２が、２００回、消去されていることを示す消去カウント６０６を有し、他方、ブロック６０４は、ブロック６０４が、５００回、消去されていることを示す消去カウント６０８を有する。
【００５０】
消去カウントブロック６１０は、一般に、ブロック６０２、６０４の消去カウントを含む情報を含むように構成される。しかし、消去カウントブロック６１０が、比較的長い時間にわたって更新されていない場合、ブロック６０２、６０４と合致する、消去カウントブロック６１０の中に格納された消去カウントは、図示するとおり、古くなっている可能性がある。同様に、システム６００内の最新の最少消去頻度ブロックが、比較的最近に、例えば、過去２４時間以内に明らかにされていない場合、最少消去頻度ブロックテーブル（図示せず）の中に格納された最少消去頻度ブロックは、システム６００内の最新の最少消去頻度ブロックではない可能性がある。例として、ブロック６０４に関する消去カウント６０８は、ブロック６０４が、ブロック６０２より多くの消耗を有することを示すものの、ブロック６０４が、最少消去頻度ブロックテーブル６１２の中で最少消去頻度ブロックとして事実上、識別されることが可能であるのに対して、ブロック６０２は、そのように識別されない。このため、ブロック６０２が、ブロック６０４より少ない消耗を有するものの、すなわち、ブロック６０２が、ブロック６０４より消去頻度が少ないものの、最少消去頻度ブロックテーブル（図示せず）は、最少消去頻度ブロックの実質的に不正確なリストを提供する可能性がある。
【００５１】
消去カウントブロック６１０の中に格納された消去カウントが、適度に新しい可能性を高めるため、内部メンテナンス要求は、更新が、比較的定期的に行われることを確実にするようにスケジュールされることが可能である。図６ｂは、本発明の実施形態による、スケジュールされた更新が行われた後の、消去カウントブロック、例えば、図６ａの消去カウントブロック６１０を示す図である。スケジュールされた更新プロセスが完了すると、消去カウントブロック６１０’は、ブロック６０２、６０４に関連する消去カウントの比較的新しいバージョンを含む。
【００５２】
消去カウントブロック６１０’が、事実上、バックアップされることが所望される場合、スケジュールされたメンテナンスが実行されると、または、図８に関連して以下に説明する、適応テーブル・バックアップ・プロセスが実行されると、消去カウントブロック６１０’に関係する情報が、電源管理ブロック６５０の中に格納されることが可能である。一実施形態では、格納される情報は、消去カウントブロック６１０’が、必要な場合、再構築されることを可能にするのに必要とされる可能性が高い、実質的に任意の情報であることが可能である。例えば、消去カウントブロック６１０’が再現されることを可能にするのに必要とされる情報６６０が、パワーダウン署名などの署名６６２とともに格納されることが可能である。そのような情報６６０には、消去カウントが含まれることが可能である。というのは、消去カウントを使用して、消去カウントブロック６１０’、最少消去頻度ブロックテーブル（図示せず）、ならびに最多消去頻度ブロックテーブル（図示せず）を含むが、これには限定されない他のテーブル群が、実質的に再現されることが可能だからである。
【００５３】
一般に、内部メンテナンススケジュール要求を可能にすることに関連する機能は、ソフトウェアで、例えば、プログラムコードデバイスとして、またはファームウェアとして、不揮発性メモリまたは不揮発性メモリコンポーネントを含むホストシステムに提供される。電源管理ブロックが実施され、保持され、使用されることを可能にするように、ホストシステムに提供されるソフトウェアまたはファームウェアに関連する適切なシステムアーキテクチャの一実施形態が、図７に示されている。システムアーキテクチャ７００は、一般に、アプリケーション・インタフェース・モジュール７０４、システム・マネージャ・モジュール７０９、データ・マネージャ・モジュール７１２、データ整合性マネージャ７１６、およびデバイス・マネージャ−インタフェース・モジュール７２０を含むことが可能であるが、以上には限定されない、様々なモジュールを含む。一般に、システムアーキテクチャ７００は、プロセッサによって、例えば、図１ａのプロセッサ１０８によってアクセスされることが可能なソフトウェア・コード・デバイス群またはファームウェアを使用して実施されることが可能である。
【００５４】
一般に、アプリケーション・インタフェース・モジュール７０４は、ホスト、オペレーティング・システム、またはユーザと直接に通信するように構成されることが可能である。また、アプリケーション・インタフェース・モジュール７０４は、システム・マネージャ・モジュール７０８およびデータ・マネージャ・モジュール７１２とも通信している。ユーザが、フラッシュメモリに対して読み取り、書き込み、またはフォーマットを行うことを所望する場合、モジュール７０４は、オペレーティング・システムに要求を送り、要求は、アプリケーションインタフェースに転送される。アプリケーションインタフェースは、要求に依存して、要求をシステム・マネージャ・モジュール７０８またはデータ・マネージャ・モジュール７１２に向かわせる。
【００５５】
システム・マネージャ・モジュール７０８は、システム初期化サブモジュール７２４と、消去カウントブロック管理サブモジュール７２６と、電源管理ブロックサブモジュール７３０とを含む。システム初期化サブモジュール７２４は、一般に、初期化要求が処理されることを可能にするように構成され、通常、消去カウントブロック管理サブモジュール７２６と通信する。消去カウントブロック管理サブモジュール７２６は、ブロックの消去カウントが格納されるようにする機能と、個々の消去カウントを使用して、平均消去カウントが計算されるとともに、更新されるようにもする機能とを含む。また、システム初期化モジュール７２４も、１対多の論理ブロック対物理ブロックの割り当てを解決するように構成され、このため、更新インデックスを利用することが可能である。電源管理ブロックサブモジュール７３０は、電源管理が、実施され、保持され、使用されることを可能にするように構成されることが可能である。例として、電源管理ブロックサブモジュール７３０は、電源管理ブロックを割り当て、電源管理ブロックの中に格納されることが可能な署名、およびその他の情報の書き込みを監督するように構成されることが可能である。
【００５６】
アプリケーション・インタフェース・モジュール７０４と通信していることに加え、システム・マネージャ・モジュール７０８は、データ・マネージャ・モジュール７１２、ならびにデバイス・マネージャ−インタフェース・モジュール７２０とも通信している。システム・マネージャ・モジュール７０８とアプリケーション・インタフェース・モジュール７０４の両方と通信するデータ・マネージャ・モジュール７１２は、論理セクタを物理セクタに事実上、変換するセクタマッピングを提供する機能を含むことが可能である。つまり、データ・マネージャ・モジュール７１２は、論理ブロックを物理ブロックにマップするように構成される。また、データ・マネージャ・モジュール７１２は、オペレーティング・システム・レイヤおよびファイル・システム・インタフェース・レイヤに関連する機能も含むことが可能であり、ブロック内のグループが管理されることを可能にする。
【００５７】
システム・マネージャ・モジュール７０８、データ・マネージャ７１２、およびデータ整合性マネージャ７１６と通信しているデバイス・マネージャ−インタフェース・モジュール７２０は、通常、フラッシュメモリ・インタフェースを提供し、ハードウェア抽象化、例えば、Ｉ／Ｏインタフェースに関連する機能を含む。データ整合化マネージャモジュール７１６は、他にも機能があるなかで、とりわけ、ＥＣＣ処理を提供する。
【００５８】
前述したとおり、適応テーブル・バックアップ・プロセスを使用して、消去カウントブロックがバックアップされることを可能にすることができ、このため、スケジュールされたメンテナンスプロセスの結果として、消去カウントブロックがバックアップされるよりも頻繁に、更新されることを可能にすることができる。一実施形態では、適応テーブル・バックアップ・プロセスは、消去カウントブロックが、一度に完全には更新されないように構成されることが可能である。そのような実施形態では、適応テーブル・バックアップ・プロセスが行われるべきであると判定されると、消去カウントブロックの一部分が、更新されることが可能であり、例えば、消去カウントブロックの１／４が、更新されることが可能である。その後、次回に、適応テーブル・バックアップ・プロセスが行われるべきであると判定されると、消去カウントブロックの異なる部分、例えば、消去カウントブロックの次の１／４が、更新されることが可能である。各適応テーブル・バックアップ・プロセス中に、消去カウントブロックを部分的に更新することにより、各適応テーブル・バックアップ・プロセスに関連する時間が、短縮されることが可能である。
【００５９】
図８に関連して、本発明の実施形態による、適応テーブルバックアップを可能にする不揮発性メモリコンポーネントを使用する一方法を説明する。適応テーブルバックアップを可能にする不揮発性メモリコンポーネントを使用するプロセス９００は、ステップ９０４で始まり、メモリコンポーネントが利用される。次に、ステップ９０８で、メモリコンポーネントの電源が切られるべきかどうかの判定が行われる。
【００６０】
ステップ９０８で、メモリコンポーネントの電源が切られるべきであると判定された場合、プロセスフローは、ステップ９１２に進み、パワーダウンプロセスが実行され、メモリコンポーネントの電源が切られる。前述したとおり、パワーダウンプロセスには、電源管理ブロックに署名を書き込むことが関わることが可能である。通常、パワーダウンプロセスは、適応テーブルバックアップにおいて実行されるのと実質的に同一のステップを実行することを含む。メモリコンポーネントの電源が切られると、不揮発性メモリコンポーネントを使用するプロセスは、完了する。
【００６１】
代替として、ステップ９０８における判定が、不揮発性メモリコンポーネントの電源が切られるべきでないということであった場合、ステップ９１６で、適応テーブルバックアップが実行されるべきかどうかの判定が行われる。前述したとおり、適応テーブルバックアップは、不揮発性メモリコンポーネント内の物理ブロックから獲得された最新の消去カウントの少なくともいくつかを使用して、消去カウントブロックを再構築することにより、消去カウントブロックを実質的に最新の状態にすることを含むことが可能である。また、適応テーブルバックアップは、最少消去頻度ブロックテーブルおよび最多消去頻度ブロックテーブルが、再構築されることを可能にするのに十分な情報も格納することが可能である。ただし、適応テーブルバックアップには、一般に、最少消去頻度ブロックテーブルおよび最多消去頻度ブロックテーブルを実際に再構築することは関わらない。
【００６２】
適応テーブルバックアップが実行されるべきであるかどうかの判定は、一般に、閾値に基づくことが可能である。例として、最少消去頻度ブロックテーブルの中で明らかにされた、システム内の最少消去頻度ブロックが、消去カウントブロックが前回に更新されて以来、特定の回数、変更された場合、適応テーブルバックアップが行われるべきであると判定されることが可能である。
【００６３】
ステップ９１６で、適応テーブルバックアップを実行すべき時期ではないと判定された場合、プロセスフローは、ステップ９０４に戻り、不揮発性メモリコンポーネントが、引き続き利用される。代替として、ステップ９１６で、適応テーブルバックアップを実行すべき時期であると判定された場合、ステップ９１８で、適応テーブルバックアップが実行されて、消去カウントブロックが実質的にバックアップされる。消去カウントブロックをバックアップすることは、一般に、現在の消去カウントを獲得すること、消去カウントブロックの中の現在の消去カウントを更新すること、したがって、消去カウントブロックを再構築することを含む。消去カウントブロックをバックアップすることにより、最少消去頻度ブロックテーブルおよび最多消去頻度ブロックテーブルを後に再構築するのに使用されることが可能な情報が、事実上、バックアップされることを理解されたい。説明する実施形態では、消去カウントブロックの中に格納された消去カウントの実質的にすべてが、更新される。ただし、他の諸実施形態には、代わりに、消去カウントブロックを部分的に更新することが関わることが可能である。消去カウントブロックがバックアップされた後、プロセスフローは、ステップ９０４に戻り、不揮発性メモリコンポーネントが、引き続き利用される。
【００６４】
本発明のいくつかの実施形態だけを説明したが、本発明は、本発明の趣旨または範囲を逸脱することなく、他の多くの特定の形態において実施されることが可能であることを理解されたい。例として、ブロックおよびテーブルを更新するとともに、ブロックおよびテーブルを実質的にバックアップする内部メンテナンス要求をスケジュールする能力を、概ね、ＮＡＮＤメモリに、例えば、ＭＬＣ  ＮＡＮＤメモリに関連するものとして説明してきたが。しかし、一般に、電源管理ブロックは、実質的にあらゆる適切なメモリまたはメモリシステムに関連して実施されることが可能である。
【００６５】
不揮発性メモリシステムは、スケジュールされた内部メンテナンス要求と、適応テーブル・バックアップ・プロセスとをともに利用することができる。例えば、最少消去頻度ブロックテーブルなどのテーブルに関連するブロックの、およそ１００００回の変更のたびに、適応テーブル・バックアップ・プロセスが行われることが可能である一方で、スケジュールされたメンテナンスは、最少消去頻度ブロックテーブルに関連するブロックの、およそ１０００００回の変更のたびに行われることが可能である。しかし、一部の不揮発性メモリシステムは、代わりに、適応テーブル・バックアップ・プロセスだけか、またはスケジュールされたメンテナンス要求だけを使用することが可能である。さらに、スケジュールされたメンテナンスの適応テーブル・バックアップ・プロセスを事実上、「トリガする」、最少消去頻度ブロックテーブルなどのテーブルの中のブロックに対する変更の回数は、大きく異なることが可能であることを理解されたい。
【００６６】
最少消去頻度ブロックテーブルまたは最多消去頻度ブロックテーブルなどのテーブルが、電源管理ブロックに事実上、書き込まれて、そのテーブルが、実質的にバックアップされることが可能であるが、電源管理ブロックにテーブルを書き込むことは、オプションであることを理解されたい。例えば、テーブルがバックアップされることをユーザまたはシステムが要求しない実施形態の場合、テーブルは、電源管理ブロックに書き込まれなくてもよい。
【００６７】
内部メンテナンス要求がスケジュールされる頻度は、大きく異なることが可能である。一般に、内部メンテナンス要求が、ホスト・オペレーティング・システムまたはアプリケーションによってスケジュールされる場合、内部メンテナンス要求は、毎日、ある時刻に行われるように、あるいは、スケジュールされた要求のために、または正常なパワーダウンのために、内部メンテナンスが実行されて以来、ある時間が経過すると、いつでも行われるようにスケジュールされることが可能である。内部メンテナンス要求が、メモリコンポーネント自体によってスケジュールされる場合、内部メンテナンス要求は、やはり、毎日、ある時刻に行われるように、あるいは、前回の内部メンテナンスが実行されて以来、ある時間が経過すると、いつでも行われるようにスケジュールされることが可能である。カウンタが特定の値に達すると、前述したとおり、内部メンテナンス要求がスケジュールされるべき時期であるかどうかの確認が、行われることが可能である。
【００６８】
消去カウントブロック、最少消去頻度ブロックテーブル、および最多消去頻度ブロックテーブルなどのテーブルを更新することに加え、他の様々な手続きが、スケジュールされた内部メンテナンス中に実行されることが可能である。前述したとおり、スケジュールされた内部メンテナンス中に適宜、実際の消去カウントから異なる消去カウントに切り替えること、または差分消去カウントを更新することが、スケジュールされたメンテナンス中に実行されることが可能な、さらなる手続きの実施例である。スケジュールされたメンテナンス中に実行されることが可能な他の手続きには、静的ブロックスワップなどの手続きが含まれることが可能であるが、これには限定されない。静的ブロックスワップには、静的ブロックが、比較的低い消去カウントを有する物理ブロックである場合を判定すること、ならびに、静的ブロックの内容を、比較的高い消去カウントを有する物理ブロックの中に実質的にコピーして、比較的低い消去カウントを有する物理ブロックが、事実上、予備のブロックになるようにすることが関わることが可能である。効率的な消耗均一化を促進する静的ブロックスワップの使用は、参照により組み込まれている、同時係属の米国特許出願第１０／２８１７３９号、米国特許出願第１０／２８１６７０号、および米国特許出願第１０／２８１８２４号に記載されている。
【００６９】
本発明の様々な方法に関連するステップは、多種多様であることが可能である。一般に、ステップは、本発明の趣旨または範囲を逸脱することなく、追加、削除、並べ替え、および変更が行われることが可能である。一実施形態では、最少消去頻度ブロックテーブルが更新された回数を追跡するカウンタが、閾値と実質的に等しい場合、メモリコンポーネントまたは全体的システムに関連するタイマが確認されて、メンテナンス要求をスケジュールすべき時期であるかどうかが判定されることが可能である。したがって、本発明は、例示的であり、制限的ではないものと見なされるべきであり、本発明は、本明細書で与えられる詳細に限定されず、添付の特許請求の範囲の範囲内で変更されることが可能である。
【図面の簡単な説明】
【００７０】
【図１ａ】不揮発性メモリを含む一般的なホストシステムを示す図である。
【図１ｂ】メモリデバイス、例えば、図１ａのメモリデバイス１２０を示す図である。
【図１ｃ】組み込まれた不揮発性メモリを含むホストシステムを示す図である。
【図２】本発明の実施形態による、内部メンテナンス要求が内部でスケジュールされることが可能なシステムを示すブロック図である。
【図３】本発明の実施形態による、スケジュールされたメンテナンス要求を可能にする不揮発性メモリコンポーネントを使用する一方法を示すプロセス流れ図である。
【図４】本発明の実施形態による、スケジュールされた内部メンテナンスを実行する１つのプロセス、例えば、図３のステップ３２０を示すプロセス流れ図である。
【図５】本発明の実施形態による、メモリコンポーネントに関連するドライバが、内部メンテナンス要求を内部でスケジュールすることができる全体的なシステムを動作させる１つの方法を示すプロセス流れ図である。
【図６ａ】本発明の実施形態による、更新されるのに先立つ物理ブロックおよび消去カウントブロックを示す図である。
【図６ｂ】本発明の実施形態による、スケジュールされた更新が行われた後に、消去カウントブロック、例えば、図６ａの消去カウントブロック６１０を示す図である。
【図７】本発明の実施形態によるシステムアーキテクチャを示す概略ブロック図である。
【図８】本発明の実施形態による、適応テーブルバックアップを可能にする不揮発性メモリコンポーネントを使用する一方法を示すプロセス流れ図である。
【図１ａ】
2007519083.tif 000003
【図１ｂ】
2007519083.tif 000004
【図１ｃ】
2007519083.tif 000005
【図２】
2007519083.tif 000006
【図３】
2007519083.tif 000007
【図４】
2007519083.tif 000008
【図５】
2007519083.tif 000009
【図６ａ】
2007519083.tif 000010
【図６ｂ】
2007519083.tif 000011
【図７】
2007519083.tif 000012
【図８】
2007519083.tif 000013
【国際調査報告】
2007519083.tif 000014