(57)【特許請求の範囲】
【請求項１】
データ記憶装置であって、
複数のブロックを有し、各ブロックが複数のページを有するフラッシュメモリと、
前記フラッシュメモリについてのメンテナンス工程を実行するコントローラー
と、
を備え、
前記メンテナンス工程は、前記コントローラーが、当該メンテナンス工程を終了してから次のメンテナンス工程を開始するまでの期間を決定し、複数のブロックについてブロックスキャンを実行して、それぞれの前記ブロックに対応する複数のエラービット数を獲得すると共に、前記ブロックに対応するエラービット数がエラービット数のスレショルドより大きい時、前記ブロックを更新する工程であり、
前記コントローラーは、
前記データ記憶装置がオンになった後所定時間の経過後、第一メンテナンス工程を実行し、前記第一メンテナンス工程において、現在の所定条件を獲得し、獲得した当該現在の所定条件にしたがって、前記第一メンテナンス工程を終了してから第二メンテナンス工程を開始するまでの期間を決定し、前記ブロックに第一ブロックスキャンを実行して、それぞれの前記ブロックに対応する複数の第一エラービット数を獲得すると共に、前記ブロックに対応する第一エラービット数が所定のエラービット数のスレショルドより大きい時、前記ブロックを更新し、
前記第一メンテナンス工程を終了して、前記第一メンテナンス工程で決定した前記期間の経過後、前記第二メンテナンス工程を実行し、前記第二メンテナンス工程において、前記現在の所定条件を獲得し、獲得した当該現在の所定条件、前記第一エラービット数、および前記第一メンテナンス工程で更新された前記ブロックの数にしたがって、前記第二メンテナンス工程を終了してから第三メンテナンス工程の開始するまでの期間を決定し、
前記第三メンテナンス工程以降の各メンテナンス工程において、前記現在の所定条件を獲得し、獲得した当該現在の所定条件、１つ前のメンテナンス工程で獲得されたエラービット数、および前記１つ前のメンテナンス工程で更新された前記ブロックの数にしたがって、当該メンテナンス工程を終了してから次のメンテナンス工程を開始するまでの期間を決定することを特徴とするデータ記憶装置。
【請求項２】
周辺の環境温度を検出して、環境温度変化に伴った温度パラメータを生成する温度センサーをさらに有し、
前記コントローラーは、各メンテナンス工程において、前記温度センサーを読み取り、現在の温度パラメータを獲得し、
前記現在の所定条件は、前記現在の温度パラメータを含む
ことを特徴とする請求項１に記載のデータ記憶装置。 
【請求項３】
前記データ記憶装置がオンになった後の所定時間において、前記コントローラーは、所定の時間間隔で前記温度センサーを読み取り現在の温度パラメータを獲得すると共に、前記現在の温度パラメータにしたがって、前記第一メンテナンス工程の開始の時間を調整することを特徴とする請求項２に記載のデータ記憶装置。
【請求項４】
前記コントローラーはさらに、前記第二メンテナンス工程において前記第一エラービット数および前記第一メンテナンス工程で更新された前記ブロックの数にしたがって第一エラービット数のスレショルドを決定し、前記ブロックに第二ブロックスキャンを実行し、前記ブロックに対応する複数の第二エラービット数を獲得すると共に、前記対応する第二エラービット数が前記第一エラービット数のスレショルドより大きい時、前記ブロックを更新することを特徴とする請求項１〜３のいずれかに記載のデータ記憶装置。
【請求項５】
前記現在の所定条件は、前記データ記憶装置がホストに最後にアクセスされる時間を含むことを特徴とする請求項１〜４のいずれかに記載のデータ記憶装置。
【請求項６】
前記現在の所定条件は、前記データ記憶装置がオンになった時間を含むことを特徴とする請求項１〜４のいずれかに記載のデータ記憶装置。
【請求項７】
前記現在の所定条件は、前記ブロックが消去される回数を含むことを特徴とする請求項１〜４のいずれかに記載のデータ記憶装置。
【請求項８】
フラッシュメモリを有するデータ記憶装置に適用されるデータメンテナンス方法であって、
前記フラッシュメモリは複数のブロックを有し、各ブロックは複数のページを有し、
前記データメンテナンス方法は、前記フラッシュメモリについてのメンテナンス工程を実行する方法であり、
前記メンテナンス工程は、当該メンテナンス工程を終了してから次のメンテナンス工程を開始するまでの期間を決定し、複数のブロックについてブロックスキャンを実行して、それぞれの前記ブロックに対応する複数のエラービット数を獲得すると共に、前記ブロックに対応するエラービット数がエラービット数のスレショルドより大きい時、前記ブロックを更新する工程であり、
前記データメンテナンス方法は、
前記データ記憶装置がオンになった後所定時間の経過後、第一メンテナンス工程を実行し、前記第一メンテナンス工程において、現在の所定条件を獲得し、獲得した当該現在の所定条件にしたがって、前記第一メンテナンス工程を終了してから第二メンテナンス工程を開始するまでの期間を決定し、前記ブロックに第一ブロックスキャンを実行して、それぞれの前記ブロックに対応する複数の第一エラービット数を獲得すると共に、前記ブロックに対応する第一エラービット数が所定のエラービット数のスレショルドより大きい時、前記ブロックを更新する段階と、
前記第一メンテナンス工程を終了して、前記第一メンテナンス工程で決定した前記期間の経過後、前記第二メンテナンス工程を実行し、前記第二メンテナンス工程において、前記現在の所定条件を獲得し、獲得した当該現在の所定条件、前記第一エラービット数、および前記第一メンテナンス工程で更新された前記ブロックの数にしたがって、前記第二メンテナンス工程を終了してから第三メンテナンス工程の開始するまでの期間を決定する段階と、
前記第三メンテナンス工程以降の各メンテナンス工程において、前記現在の所定条件を獲得し、獲得した当該現在の所定条件、１つ前のメンテナンス工程で獲得されたエラービット数、および前記１つ前のメンテナンス工程で更新された前記ブロックの数にしたがって、当該メンテナンス工程を終了してから次のメンテナンス工程を開始するまでの期間を決定する段階と
を含むことを特徴とするデータメンテナンス方法。
【請求項９】
各メンテナンス工程は、温度センサーを読み取り、現在の温度パラメータを獲得する段階を有し、
前記現在の所定条件は、前記現在の温度パラメータを含む
ことを特徴とする請求項８に記載のデータメンテナンス方法。
【請求項１０】
さらに、
前記データ記憶装置がオンになった後の所定時間中、所定の時間間隔で、前記温度センサーを読み取り、現在の温度パラメータを獲得し、前記現在の温度パラメータにしたがって、前記第一メンテナンス工程の開始の時間を調整する段階
を含むことを特徴とする請求項９に記載のデータメンテナンス方法。
【請求項１１】
前記第二メンテナンス工程は、
前記第一エラービット数および前記第一メンテナンス工程で更新された前記ブロックの数にしたがって第一エラービット数のスレショルドを決定する段階と、
前記ブロックに、第二ブロックスキャンを実行して、前記ブロックに対応する複数の第二エラービット数を獲得する段階と、
前記ブロックに対応する第二エラービット数が前記第一エラービット数のスレショルドより大きい時、前記ブロックを更新する段階と 
を含むことを特徴とする請求項８に記載のデータメンテナンス方法。
【請求項１２】
前記現在の所定条件は、前記データ記憶装置が最後にホストにアクセスされる時間を含むことを特徴とする請求項８に記載のデータメンテナンス方法。 
【請求項１３】
前記現在の所定条件は、前記データ記憶装置がオンになった時間を含むことを特徴とする請求項８に記載のデータメンテナンス方法。
【請求項１４】
前記現在の所定条件は、前記ブロックが消去される回数を含むことを特徴とする請求項８に記載のデータメンテナンス方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリデバイスのデータメンテナンス方法（維持、管理、保守方法）に関するものであって、特に、フラッシュメモリを自動的に監視することができるデータメンテナンス方法に関するものである。
【背景技術】
【０００２】
フラッシュメモリは不揮発性データ記憶装置であり、電気的手法により、消去、および、プログラム化をする。ＮＡＮＤフラッシュメモリを例とすると、メモリカード、ＵＳＢフラッシュメモリ装置、ソリッドステート装置、ｅＭＭＣ等に用いられている。
【０００３】
たとえば、ＮＡＮＤフラッシュメモリのようなフラッシュメモリは、複数のブロック構造を用いてデータを記憶し、また、浮遊ゲートトランジスタから構成される。浮遊ゲートトランジスタ中の浮遊ゲートは電子電荷を捕捉して、データを記憶する。しかし、フラッシュメモリの動作、および、フラッシュメモリの各種環境パラメータのために、浮遊ゲートは電子電荷を損失し、読み込み及び書き込みエラーを引き起こす可能性があり、データ保持(data  retention)の問題を生じる。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明は、フラッシュメモリの動作や各種環境パラメータのために浮遊ゲートの電子電荷が損失することに起因するデータ保持の問題を解決し、読み込み及び書き込みエラーを生じないデータ記憶装置およびデータメンテナンス方法を提供することを目的とする。
【課題を解決するための手段】
【０００５】
本発明に係るデータ記憶装置は、フラッシュメモリ、温度センサー、および、コントローラーを備える。フラッシュメモリは複数のブロックを有し、各ブロックは複数のページを有する。温度センサーは周辺の環境温度を検出し、環境温度変化に伴った温度パラメータを生成する。コントローラーは、データ記憶装置がオンになって所定時間（オン後所定時間）の後、第一メンテナンス工程を実行する。第一メンテナンス工程においてコントローラーは、温度センサーを読み取り第一温度パラメータを獲得し、その第一温度パラメータを含む第一所定条件にしたがって第一期間を決定して、第一メンテナンス工程が完了した後第一期間経過後に第二メンテナンス工程を実行する。
【０００６】
第一メンテナンス工程において、コントローラーはさらに、ブロックに対し第一ブロックスキャンを実行して、それぞれのブロックに対応する複数の第一エラービット数を獲得すると共に、所定のエラービットスレショルド値を超過する第一エラービット数のブロックに対し更新を実行する。
【０００７】
第二メンテナンス工程において、コントローラーは、温度センサーを読み取って第二温度パラメータを獲得し、その第二温度パラメータを有する第二所定条件、および、第一エラービット数および第一メンテナンス工程中で更新されたブロックの数量を含む第一履歴にしたがって第二期間を決定して、第ニメンテナンス工程が完了した後第二期間経過後に第三メンテナンス工程を実行する。
【０００８】
このほか、第二メンテナンス工程において、コントローラーはさらに、第一履歴にしたがって、第一エラービットスレショルドを決定し、ブロックに対し第二ブロックスキャンを実行して、それぞれのブロックに対応する複数の第二エラービット数を獲得すると共に、第一エラービットスレショルドを超過する第二エラービット数のブロックに更新を実行する。
【０００９】
第一所定条件、および、第二所定条件は、さらに、データストレージデバイスが最後にホストによりアクセスされた時間、データストレージデバイスがオンの時間、および／または、ブロック消去の回数を含んでよい。
【００１０】
別の実施形態において、データ記憶装置がオンになった後の前記所定時間中（オン後所定時間中）、コントローラーはさらに、所定周期毎に温度センサー装置を読み取って、その時の温度パラメータを獲得すると共に、読み取った温度パラメータに基づいて、第一メンテナンス工程を最初に実行する時間を調整する。
【００１１】
本発明は、また、フラッシュメモリを有するデータ記憶装置に適用するデータメンテナンス方法を提供する。フラッシュメモリは複数のブロックを有し、各ブロックは複数のページを有する。本発明のデータメンテナンス方法は、データ記憶装置がオンになって所定時間（オン後所定時間）の後、第一メンテナンス工程を実行する工程と、第一メンテナンス工程において温度センサーを読み取り周囲の環境温度に対応する第一温度パラメータを獲得する工程と、第一メンテナンス工程において、その第一温度パラメータを含む第一所定条件にしたがって第一期間を決定して、第一メンテナンス工程が完了した後第一期間経過後に第二メンテナンス工程を実行する工程と、を含む。
【００１２】
本発明のデータメンテナンス方法は、さらに、第一メンテナンス工程において、ブロックに対し第一ブロックスキャンを実行して、それぞれのブロックに対応する複数の第一エラービット数を獲得する工程と、所定のエラービットスレショルド値を超過する第一エラービット数のブロックに対し更新を実行する工程と、を含んでよい。
【００１３】
また、第二メンテナンス工程は、温度センサーを読み取って周囲の環境温度に対応する第二温度パラメータを獲得する工程と、第二温度パラメータを有する第二所定条件、および、第一エラービット数および第一メンテナンス工程中で更新されたブロックの数量を含む第一履歴にしたがって第二期間を決定して、第二メンテナンス工程が完了した後第二期間経過後に第三メンテナンス工程を実行する工程と、を含む。
【００１４】
さらに、本発明のデータメンテナンス方法は、第二メンテナンス工程において、第一履歴にしたがって、第一エラービットスレショルドを決定する工程と、ブロックに対し第二ブロックスキャンを実行して、それぞれのブロックに対応する複数の第二エラービット数を獲得する工程と、第一エラービットスレショルドを超過する第二エラービット数のブロックに更新を実行する工程と、を含む。
【００１５】
別の実施形態において、本発明のデータメンテナンス方法は、さらに、所定周期毎に温度センサー装置を読み取って、その時の温度パラメータを獲得する工程と、読み取った温度パラメータに基づいて、第一メンテナンス工程を最初に実行する時間を調整する工程、を含む。
【発明の効果】
【００１６】
本発明によれば、電子電荷の損失により生じるデータ保持(data  retention)の問題を解決し、読み込み及び書き込みエラーを生じないデータ記憶装置およびデータメンテナンス方法を提供することができる。
【図面の簡単な説明】
【００１７】
【図１】図１は、本発明の一実施形態による電子システムの構成を示す図である。
【図２】図２は、本発明の一実施形態によるデータメンテナンス方法のフローチャートである。
【図３】図３は、本発明の別の実施形態によるデータメンテナンス方法のフローチャートである。
【発明を実施するための形態】
【００１８】
本発明の一実施形態および利点を以下の詳細な説明に述べるが、この説明は本発明を限定するものではなく、本発明は請求項によって定められるものである。
【００１９】
図１は、本発明の一実施形態による電子システムを示す図である。電子システム１００は、ホスト（ホストコンピュータ）１２０とデータ記憶装置１４０を備える。データ記憶装置１４０は、コントローラー１６０、フラッシュメモリ１８０、および、温度センサー１９０を備える。データ記憶装置１４０は、ホスト１２０からの命令に対応して動作する。コントローラー１６０は、演算器１６２、不揮発性メモリ１６４(たとえば、ＲＯＭ)、ランダムアクセスメモリ（ＲＡＭ）１６５、および、計時装置１６６を備える。
【００２０】
なお、上記のホストコンピュータ（ホスト１２０）は、ネットワークや任意のインターフェイスを介して他の装置やユニット（データ記憶装置１４０を含む）に処理やサービス等を提供する演算処理装置を意味するものであって、パーソナルコンピュータ（ＰＣ）、メインフレーム、サーバー装置、ネットワーク制御装置等の種々の汎用コンピュータ、あるいは、それら汎用コンピュータや任意の特定用途の処理装置の中央処理装置（ＣＰＵ）、算術論理演算装置（ＡＬＵ）、制御装置等を含むものである。
【００２１】
不揮発性メモリ（ＲＯＭ）１６４中に記憶されたプログラムコードとデータはファームウェアを構成し、演算器１６２により実行され、コントローラー１６０はファームウェアにより、フラッシュメモリ１８０を制御する。たとえば、コントローラー１６０は、ホスト１２０から受信される命令にしたがって、フラッシュメモリ１８０にアクセスし、本発明のメンテナンス工程を自動的に実行する。注意すべきことは、本実施形態においては、メンテナンス工程は、バックグラウンドで繰り返し実行されることである。たとえば、コントローラー１６０は、アイドルの時だけ、メンテナンス工程を実行すると共に、ホスト１２０からの命令を受信時には、メンテナンス工程を中断する。
【００２２】
フラッシュメモリ１８０は複数のブロックを有し、各ブロックは複数のページを有する。
計時装置１６６は、データ記憶装置１８０がオンになる時間、および、工程間の時間等を計時する。
【００２３】
温度センサー１９０はデータ記憶装置１４０の周辺の環境温度を検出し、周辺の環境温度変化に伴う温度パラメータを生成する。本実施形態において、温度センサー１９０は、データ記憶装置１４０中のフラッシュメモリ１８０のすぐ近傍（例えば、横）に設置され、フラッシュメモリ１８０の周辺の環境温度を検出するが、温度センサー１９０の設置位置はこれに限定されない。たとえば、別の実施形態において、温度センサー１９０は、データ記憶装置１４０外部に設置され、データ記憶装置１４０の周辺の環境温度を検出する。
【００２４】
なお、温度センサー１９０が生成する温度パラメータは、検出した温度に対応する数値、換言すれば検出した温度に基づいた任意の数値ある。より具体的には、検出した温度そのものを表す数値（データ）でもよいし、検出した温度に何らかの変換を行った数値（データ）であってもよい。また、温度センサー１９０の構成として、検出素子単体でもよいし、上記した変換を行える構成を具備した構成でもよい。また、検出した温度に何らかの変換を行い温度パラメータを生成する場合、その変換処理は実質的にはコントローラ１６０側で行うような構成であってもよい。本実施形態において温度センサー１９０の機能として説明するものは、まさに温度センサー１９０で行ってもよいし、実際の回路構成等としては温度センサー１９０とコントローラ１６０とが協働して実現するものであってもよい。これらは、当業者の通常の技術常識の範囲で、適宜改変可能なものである。
【００２５】
このほか、フラッシュメモリ１８０は、さらに、少なくともひとつのパラメータ表（パラメータテーブル）、および、少なくともひとつのスキャン条件表を記憶（保存）する。たとえば一実施形態として、パラメータ表は、異なる周辺の環境温度に対応する、すなわち、異なる周辺の環境温度ごとの、現在のメンテナンス工程から次のメンテナンス工程までの時間（間隔、期間。たとえば、第一期間、第二期間等）を記憶するが、これに限定されない。別の実施形態として、パラメータ表は、異なる周辺の環境温度ごと、異なるエラービット数ごと、更新あるいは消去されるブロックの異なる数量ごと、データ記憶装置１４０が最後にホスト１２０によりアクセスされた異なる時間ごと、データ記憶装置１４０がオンにされてからの異なる時間ごと、および／または、ブロックが消去される異なる回数ごと、に各々対応する次のメンテナンス工程を実行する間隔時間を記憶する。
【００２６】
スキャン条件表は、異なるエラービット数、および／または、更新されたブロックの異なる数量に対応するスキャン条件を記憶する。たとえば、スキャン条件はエラービット数のスレショルド値であるが、これに限定されない。別の実施形態において、スキャン条件は異なるＥＣＣコードである。
【００２７】
別の実施形態において、フラッシュメモリ１８０は、パラメータ関数とスキャン条件関数を記憶する。この実施形態において、前のメンテナンス工程と次のメンテナンス工程との間の期間（第一期間、第二期間、第三期間・・・）はパラメータ関数により決定される。たとえば、異なる周辺の環境温度値にもとづく温度パラメータに対応して、パラメータ関数が計算され、現在のメンテナンス工程と次のメンテナンス工程間の期間が算出（獲得）されるが、これに限定されない。別の実施形態において、パラメータ関数は、異なる周辺の環境温度、異なるエラービット数、更新されるブロックの異なる数量、データ記憶装置１４０が最後にホスト１２０によりアクセスされた異なる時間、データ記憶装置１４０がオンにされてからの異なる時間、および／または、ブロックが消去される異なる回数に対応する、現在のメンテナンス工程と次のメンテナンス工程との間の期間を算出する。
【００２８】
このほか、スキャン条件関数は、さらに、異なるエラービット数、および／または、更新されたブロックの異なる数量にしたがって、異なるスキャン条件を決定する。
注意すべきことは、周辺の環境温度が高くなることは、エラービット数が高くなり、更新されたブロック数が多くなり、データ記憶装置１４０がオンになる時間が長くなることを意味し、ブロックが消去される回数が大きくなることは、現在のメンテナンス工程と次のメンテナンス工程間の期間が短くなることに対応する。エラービット数が高くなること、および、更新されたブロック数が多くなることは、エラービット数のスレショルドが低くなることに対応する。
【００２９】
一実施形態において、コントローラー１６０は、データ記憶装置１４０がオンになって所定時間（オン後所定時間）の後、第一メンテナンス工程を実行する。本実施形態において、この所定時間はあらかじめ定めた時間であるが、これに限定されない。たとえば、この所定時間は４分か５分であるが、これに限定されない。
【００３０】
第一メンテナンス工程において、コントローラー１６０は温度センサー１９０を読み取り、第一温度パラメータを獲得し、その第一温度パラメータを含む第一所定条件にしたがって第一期間を決定し、ブロックに第一ブロックスキャンを実行して、それぞれのブロックに対応する複数の第一エラービット数を獲得する。
本実施形態において、第一所定条件は第一温度パラメータを含むが、これに限定されない。別の実施形態において、第一所定条件は、さらに、データ記憶装置１４０が最後にホスト１２０によりアクセスされた時間、データ記憶装置１４０がオンにされた時間、および／または、ブロックが消去された回数を含む。
【００３１】
コントローラー１６０は、第一メンテナンス工程において、パラメータ表、または、パラメータ関数にしたがって、第一期間を決定し、第一メンテナンス工程が終了して第一期間経過の後、第二メンテナンス工程を実行することができる。注意すべきことは、第一所定条件中のパラメータは、現在の検出されたパラメータであることである。よって、第一メンテナンス工程中のパラメータは第二メンテナンス工程のパラメータと異なり、第二メンテナンス工程中のパラメータは第三メンテナンス工程のパラメータと異なる。
【００３２】
しかし、ある条件下では、異なるメンテナンス工程は同じパラメータを有する。たとえば、ホスト１２０が、第二メンテナンス工程と第三メンテナンス工程間のフラッシュメモリ１８０のブロックを消去しない時、第二メンテナンス工程と第三メンテナンス工程においてブロックが消去された回数は同じである。反対に、ホスト１２０が、第二メンテナンス工程と第三メンテナンス工程間のフラッシュメモリ１８０のブロックを消去するとき、ブロックが第二メンテナンス工程で消去される回数は、ブロックが第三メンテナンス工程で消去される回数と異なる。注意すべきことは、コントローラー１６０は、少なくともひとつのブロックに対応する第一エラービット数が所定のエラービット数のスレショルドより大きいとき、さらに、少なくともひとつのブロックを更新することである。本実施形態において、所定のエラービット数のスレショルドはあらかじめ定めたスレショルドであるが、これに限定されない。
【００３３】
別の実施形態において、所定時間（オン後所定時間）において、コントローラー１６０は、さらに、所定の時間間隔で、温度センサー１９０を読み取り、現在の温度パラメータを獲得すると共に、現在の温度パラメータにしたがって、第一メンテナンス工程の開始の時間を調整する。すなわち、データ記憶装置１４０がオンになってから、コントローラー１６０は、所定の時間間隔で、温度センサー１９０を読み取り、現在の温度パラメータを獲得すると共に、現在の温度パラメータにしたがって、パラメータ表、または、パラメータ関数を調べることにより、第一メンテナンス工程の開始の時間を決定する。
【００３４】
このときの所定の時間間隔のスパンは所定時間（オン後所定時間）より短い。たとえば、このときの所定の時間間隔のスパンは１秒か２秒であるが、これに限定されない。第一メンテナンス工程の開始の決定時間が所定時間（オン後所定時間）より短い時、コントローラー１６０は、さらに、第一メンテナンス工程を開始する決定時間にしたがって、所定時間（オン後所定時間）を調整する。たとえば、所定時間（オン後所定時間）は５分で、各所定の時間間隔のスパンは２秒である。データ記憶装置１４０がオンになった後５分の間、コントローラー１６０は、２秒毎に、温度センサー１９０を読み取り、現在の温度パラメータを得ると共に、現在の温度パラメータにしたがって、第一メンテナンス工程を実行する時間を決定する。
【００３５】
たとえば、コントローラー１６０が、第一メンテナンス工程が、データ記憶装置１４０の電源オンから６分 (所定時間（オン後所定時間）より長い)後に開始されるべきであると判断する時、コントローラー１６０は決定時間を無視して、所定時間（オン後所定時間）が終了するまで、２秒ごとに、温度センサー１９０の読み取りステップを繰り返す。コントローラー１６０が、第一メンテナンス工程が、データ記憶装置１４０がオンになり３分後(所定時間（オン後所定時間）より短い)に開始されるべきだと判断する時、コントローラー１６０は所定時間（オン後所定時間）を３分に調整し、その調整した所定時間（調整後オン後所定時間）が終了するまで、２秒ごとに、温度センサー１９０の読み取りステップを繰り返す。すなわち、コントローラー１６０は、第一メンテナンス工程を、データ記憶装置１４０上で３分後に実行されるように変更する。
【００３６】
コントローラー１６０は、さらに、第一メンテナンス工程が終了した後第一期間経過後に、第二メンテナンス工程を実行する。第二メンテナンス工程において、コントローラー１６０は温度センサー１９０を読み取り、第二温度パラメータを獲得し、第二温度パラメータを含む第二所定条件と、第一エラービット数およびブロックが第一メンテナンス工程において更新された数量を含む第一履歴記録（単に第一履歴と称する）にしたがって、第二期間を決定する。また、コントローラー１６０は、第一履歴にしたがって、第一エラービット数のスレショルドを決定し、ブロックに、第二ブロックスキャンを実行する。
【００３７】
本実施形態において、第二所定条件は第二温度パラメータを含み、第一履歴は、第一エラービット数、および、ブロックが、第一メンテナンス工程において更新された数量を含むが、これに限定されない。別の実施形態において、第二所定条件は、さらに、データ記憶装置１４０が最後にホスト１２０によりアクセスされた時間、データ記憶装置１４０がオンになった時間、および／または、ブロックが消去された回数を含む。
【００３８】
コントローラー１６０は、第二メンテナンス工程において、パラメータ表、または、パラメータ関数にしたがって、第二期間を決定し、第二メンテナンス工程が終了した後第二期間経過後、第三メンテナンス工程を実行する。
注意すべきことは、第二所定条件中のパラメータは現在の検出されたパラメータであると共に、第三メンテナンス工程と第二メンテナンス工程の処理は同じであることである。
【００３９】
同様に、第三メンテナンス工程は第三期間を決定し、第四メンテナンス工程を開始する時間を決定し、第二エラービット数のスレショルドを決定し、ブロックに第三ブロックスキャンを実行する。
さらに、第四メンテナンス工程と第二メンテナンス工程の処理は同じである。注意すべきことは、コントローラー１６０はさらに、ブロックの第二エラービット数が第一エラービット数のスレショルドより大きいとき、ブロックを更新することである。
【００４０】
本実施形態において、コントローラー１６０は、ブロックスキャンの結果 (たとえば、エラービット数、および／または、更新されたブロックの数量)、または、ブロックが消去された回数(erase counts)を、フラッシュメモリ１８０中の少なくともひとつの特定のブロック中に記憶して、メンテナンス工程を提供する。ただし、これに限定されるものではない。
ブロックスキャンにおいて、コントローラー１６０はフラッシュメモリ１８０の各ブロックをスキャンして、それぞれのブロックに対応するエラービット数を獲得する。さらに特に、コントローラー１６０は、フラッシュメモリ１８０の各ブロックを読み取り、各ブロックのエラー修正(ＥＣＣ)のエラービット数を獲得する。
【００４１】
次に、コントローラー１６０はさらに、対応するエラービット数が、スレショルド、たとえば、所定のエラービット数のスレショルド、第一エラービット数のスレショルド、および、第二エラービット数のスレショルド等より大きい時、ブロックを更新する。更新工程において、コントローラー１６０は、ブロックのデータを読み出し、読み出されたデータを修正し、フラッシュメモリ１８０のもうひとつのブロック（他のブロック）中に修正データを記憶する。
【００４２】
注意すべきことは、エラービット数のスレショルドは、エラー修正(ＥＣＣ)により修正できるエラービット数の最大値より小さいことである。たとえば、エラービットが４３ビットより小さい時、エラービット数のスレショルドは３５ビット、または、３８ビットであるが、これに限定されない。当業者は、エラー修正(ＥＣＣ)により修正されるエラービット数の最大値にしたがって、所定のエラービット数のスレショルドを決定することができる。たとえば、所定のエラービット数のスレショルドを、エラー修正(ＥＣＣ)により修正されるエラービット数の最大値に等しく、またはそれより小さく設計する。
【００４３】
図２は、本発明の新規実施形態によるデータメンテナンス方法のフローチャートである。データメンテナンス方法は、図１のデータ記憶装置１４０に適用される。プロセスはステップＳ２０２から開始される。
【００４４】
ステップＳ２０２において、コントローラー１６０は、データ記憶装置１４０がオンになって所定時間（オン後所定時間）後、第一メンテナンス工程を実行する。本実施形態において、所定時間（オン後所定時間）はあらかじめ定めた特定の時間であるが、これに限定されない。また、たとえば、所定時間（オン後所定時間）は４分か５分であるが、これに限定されない。
【００４５】
第一メンテナンス工程において、コントローラー１６０は温度センサー１９０を読み取り第一温度パラメータを獲得して、第一温度パラメータを含む第一所定条件にしたがって第一期間を決定し、ブロックに第一ブロックスキャンを実行し、それぞれのブロックに対応する複数の第一エラービット数を獲得する。本実施形態において、第一所定条件は第一温度パラメータを含むが、これに限定されない。別の実施形態において、第一所定条件は、さらに、データ記憶装置１４０が最後にホスト１２０によりアクセスされる時間、データ記憶装置１４０がオンになった時間、および／または、ブロックが消去される回数を含む。
【００４６】
コントローラー１６０は、第一メンテナンス工程において、パラメータ表、または、パラメータ関数にしたがって、第一期間を決定してもよい。この場合も、第一メンテナンス工程が終了して第一期間の経過後、第二メンテナンス工程を実行する。次のメンテナンス工程は、順次、第二メンテナンス工程、第三メンテナンス工程等となる。
【００４７】
注意すべきことは、第一所定条件中のパラメータは、現在の検出されたパラメータであることである。また、注意すべきことは、少なくともひとつのブロックに対応する対応する第一エラービット数が所定のエラービット数のスレショルドより大きいとき、コントローラー１６０はさらに、少なくともひとつのブロックを更新することである。本実施形態において、所定のエラービット数のスレショルドは所定のスレショルドであるが、これに限定されない。
【００４８】
次に、決定した期間の経過後、コントローラー１６０は、次のメンテナンス工程の実行を開始する。たとえば、第一メンテナンス工程が終了してステップＳ２０２により決定される期間（第一期間）の経過後、コントローラー１６０は、第二メンテナンス工程を実行する。
【００４９】
まず、ステップＳ２０４において、コントローラー１６０は温度センサー１９０を読み取って、現在の温度パラメータを獲得する。さらに、コントローラー１６０は、その現在の温度パラメータを含む現在の所定条件と前のブロックスキャンのエラービット数、および、前のメンテナンス工程中で更新されたブロック数量を含む履歴記録（単に履歴と称する）にしたがって、次の期間を決定する。また、履歴にしたがって、エラービット数のスレショルドを決定する。
【００５０】
本実施形態において、所定条件は現在の温度パラメータを含み、履歴は、前のブロックスキャンのエラービット数、および、前のメンテナンス工程中で更新されたブロック数量を含むが、これに限定されない。別の実施形態において、現在の所定条件は、さらに、データ記憶装置１４０が最後にホスト１２０によりアクセスされる時間、データ記憶装置１４０がオンになった時間、および／または、ブロックが消去される回数を含む。コントローラー１６０は、現在のメンテナンス工程において、パラメータ表、または、パラメータ関数にしたがって、期間を決定し、現在のメンテナンス工程が終了した所定期間後、コントローラー１６０は、次のメンテナンス工程を実行することができる。
【００５１】
次に、ステップＳ２０６において、コントローラー１６０は、エラービット数のスレショルドにしたがって、ブロックに、ブロックスキャンを実行し、それぞれのブロックに対応するエラービット数を獲得すると共に、エラービット数のスレショルドより大きいエラービットのブロックを更新する。
そして、プロセスはステップＳ２０４に戻る。
【００５２】
図３は、本発明の別の実施形態によるデータメンテナンス方法のフローチャートである。このデータメンテナンス方法も、図１のデータ記憶装置１４０に適用される。
プロセスはステップＳ３００から開始される。図３のデータメンテナンス方法は、ステップＳ３００を除いて、図２のデータメンテナンス方法と同じである。よって、ステップＳ３０２−Ｓ３０６の詳細は、ステップＳ２０２−Ｓ２０６の説明を参照するものとし、説明は省略する。
【００５３】
Ｓ３００において、コントローラー１６０は、データ記憶装置１４０がオンになってから所定時間（オン後所定時間）中、所定の時間間隔で、温度センサー１９０を読み取り、現在の温度パラメータを獲得すると共に、現在の温度パラメータにしたがって、第一メンテナンス工程を実行する所定時間（オン後所定時間）を調整する。すなわち、データ記憶装置１４０がオンになるので、コントローラー１６０は温度センサー１９０を読み取り、所定の時間間隔で、現在の温度パラメータを獲得し、パラメータ表、または、パラメータ関数を調べることにより、現在の温度パラメータにしたがって、第一メンテナンス工程の開始の時間を決定する。所定の時間間隔のスパンは所定時間（オン後所定時間）より短い。たとえば、所定の時間間隔のスパンは１秒か２秒であるが、これに限定されない。
【００５４】
第一メンテナンス工程を開始する決定時間が所定時間（オン後所定時間）より短いとき、コントローラー１６０は、第一メンテナンス工程を開始する決定時間にしたがって、所定時間（オン後所定時間）を調整する。たとえば、所定時間（オン後所定時間）は５分で、各所定の時間間隔のスパンは２秒である。データ記憶装置１４０がオンになってから５分の間、コントローラー１６０は、２秒毎に、温度センサー１９０を読み取り、現在の温度パラメータを獲得すると共に、現在の温度パラメータにしたがって、第一メンテナンス工程を実行する時間を決定する。
【００５５】
たとえば、コントローラー１６０が、第一メンテナンス工程が、データ記憶装置１４０がオンになってから６分 (所定時間（オン後所定時間）より長い)後に開始されるべきであると判断する時、コントローラー１６０は決定時間を無視すると共に、所定時間（オン後所定時間）が終了するまで、２秒ごとに、温度センサー１９０の読み取りステップを繰り返す。
【００５６】
コントローラー１６０が、第一メンテナンス工程が、データ記憶装置１４０がオンになり３分後(所定時間（オン後所定時間）より短い)に開始されるべきだと判断する時、コントローラー１６０は所定時間（オン後所定時間）を３分に調整し（調整後オン後所定時間）、所定時間（調整後オン後所定時間）が終了するまで、２秒ごとに、温度センサー１９０の読み取りステップを繰り返す。すなわち、コントローラー１６０は、第一メンテナンス工程を、データ記憶装置１４０上で３分後に実行されるように変更する。
【００５７】
上述からわかるように、本発明に係るデータ記憶装置１４０とデータメンテナンス方法は、現在の温度にしたがって、ブロックをスキャン、および、更新することができる。 
【００５８】
本発明の方法、または、特定の実施形態やその部分は、プログラムコードの形式で存在する。プログラムコードは、有形的表現媒体、たとえば、フレキシブルディスク、ＣＤ−ＲＯＭ、ハードドライブ、または、その他の機器読み取り可能(たとえば、コンピュータ読み取り可能)記憶媒体に記憶される。プログラムコードがロードされ、機械、たとえば、コンピュータにより実行される時、この機械は、本発明の装置を実施する装置となる。プログラムコードは、また、ある伝送媒体、たとえば、電気配線、または、ケーブル、または、光ファイバー、または、その他の伝送形式で伝送される。プログラムコードが受信され、機械、たとえば、コンピュータにロード、および、実行されるとき、その機械等は、本開示方法を実行する装置となる。汎用プロセッサで実施される時、プログラムコードはプロセッサと結合して、アプリケーション特有のロジック回路に類似して動作する特定用途、特定目的の装置を提供する。
【００５９】
本発明では好ましい実施例を前述の通り開示したが、これらは決して本発明に限定するものではなく、当該技術を熟知する者なら誰でも、本発明の精神と領域を脱しない範囲内で各種の変動や潤色を加えることができ、従って本発明の保護範囲は、特許請求の範囲で指定した内容を基準とする。
【符号の説明】
【００６０】
１００  電子システム
１２０  ホスト
１４０  データ記憶装置
１６０  コントローラー
１６２  演算器
１６４  不揮発性メモリ（ＲＯＭ）
１６５  ランダムアクセスメモリ
１６６  計時装置
１８０  フラッシュメモリ
１９０  温度センサー
【図１】
0005986607.tif 000002
【図２】
0005986607.tif 000003
【図３】
0005986607.tif 000004