(57)【特許請求の範囲】
【請求項１】
不揮発性メモリ（ＮＶＭ）のページのプログラミングをウィービングするための方法において、
電子装置のコントロール回路を使用してウィーブシーケンスカウンタ（ＷＳＣ）の現在値を識別する段階であって、ＷＳＣは、ＮＶＭの各ページがプログラムされるシーケンスを識別するものである段階と、
前記コントロール回路を使用して、ＮＶＭの第１ブロックの第１ページをユーザデータの第１セットでプログラミングする段階と、
前記コントロール回路を使用して、前記第１ページをＷＳＣの現在値に関連付ける段階と、
前記第１のページのプログラミングに応答して、前記コントロール回路を使用して、ＷＳＣを、インクリメントされたＷＳＣ値へ逐次にインクリメントする段階と、
前記コントロール回路を使用して、前記データの第１セットが、ＮＶＭに最初に記憶される新たなデータであることを決定する段階と、
前記決定に応答して、前記コントロール回路を使用して、前記第１ページをホストウィーブシーケンスカウンタ（ＨＷＳＣ）値に関連付ける段階であって、ＨＷＳＣ値は、前記ＷＳＣの現在値に等しいものである段階と、
を備えた方法。
【請求項２】
前記コントロール回路を使用して、ＮＶＭの第２ブロックの第２ページをユーザデータの第２セットでプログラミングする段階と、
前記コントロール回路を使用して、前記第２ページを前記インクリメントされたＷＳＣ値に関連付ける段階と、
を更に備えた請求項１に記載の方法。
【請求項３】
前記関連付ける段階は、ＷＳＣの現在値を前記第１ページのメタデータへプログラミングすることを含む、請求項１又は２に記載の方法。
【請求項４】
前記第１ページをＨＷＳＣ値に関連付ける段階は、ＨＷＳＣ値を前記第１ページのメタデータへプログラミングすることを含む、請求項１に記載の方法。
【請求項５】
前記コントロール回路を使用して、前記データの第１セットが前記ＮＶＭの異なるページから前記第１ページへ移動される古いデータであることを決定する段階と、
前記決定に応答して、前記コントロール回路を使用して、前記第１ページをホストウィーブシーケンスカウンタ（ＨＷＳＣ）値に関連付ける段階であって、ＨＷＳＣ値は、前記異なるページのＨＷＳＣ値に等しいものである段階と、
を更に備えた請求項１又は２に記載の方法。
【請求項６】
前記ＷＳＣを逐次にインクリメントする段階は、前記ＷＳＣがＮＶＭの寿命全体にわたってより高い値へとインクリメントし続けるように、ロールオーバーなしに前記ＷＳＣの現在値をインクリメントすることを含む、請求項１又は２に記載の方法。
【請求項７】
前記ＷＳＣを逐次にインクリメントする段階は、前記ＷＳＣの値が所定数の書き込みサイクルの後にゼロへロールオーバーするように、ロールオーバーを伴って前記ＷＳＣの現在値をインクリメントすることを含む、請求項１又は２に記載の方法。
【請求項８】
不揮発性メモリ（ＮＶＭ）システムのウェアレベリングを行う装置において、
現在ウィーブシーケンスカウンタ（ＷＳＣ）値を識別する手段であって、ＷＳＣ値は、ＮＶＭのページがプログラムされる順序を指示するものである手段と、
前記ＮＶＭの特定のページに対してホストウィーブシーケンスカウンタ（ＨＷＳＣ）値を識別する手段であって、ＨＷＳＣ値は、前記特定ページのデータが最初にＮＶＭ内にセーブされたときを指示するものである手段と、
前記現在ＷＳＣ値と前記ＨＷＳＣ値との間の差の値を計算する手段と、
前記計算された差に少なくとも一部分基づいて、前記特定のページが高サイクルブロックへ移動するのに適したスタティックページであることを決定する手段と、
を備えた装置。
【請求項９】
前記決定手段は、
前記計算された差を所定のスレッシュホールド値と比較する手段と、
前記差が前記スレッシュホールド値より大きいことを決定する手段と、
前記差が前記スレッシュホールド値より大きいことを決定する前記手段に応答して、前記特定のページをスタティックページとして識別する手段と、
を含む請求項８に記載の装置。
【請求項１０】
前記ＮＶＭの次のページへ進む手段と、
現在ＷＳＣ値を識別する前記手段、ＨＷＳＣを識別する前記手段、前記計算手段、及び前記決定手段を、次のページに対して繰り返すための手段と、
を更に備えた請求項８又は９に記載の装置。
【請求項１１】
前記特定ページのデータを前記高サイクルブロックの新たなページへ移動する手段と、  前記特定ページのＨＷＳＣ値を前記新たなページに関連付ける手段と、
を更に備えた請求項８又は９に記載の装置。
【請求項１２】
前記特定ページのデータを前記高サイクルブロックの新たなページへ移動する手段と、  前記現在ＷＳＣ値を前記新たなページのＷＳＣ値に関連付ける手段と、
を更に備えた請求項８又は９に記載の装置。
【請求項１３】
特定ページがスタティックページであるかどうか決定するための前記手段は、前記特定ページに関連したファイルのサイズ、前記特定ページに関連したファイルを書き込むのに要する時間量、及び前記特定ページに関連したファイルに関するシステム発見的情報、のうちの少なくとも１つに更に基づく、請求項８又は９に記載の装置。
【請求項１４】
前記スタティックページは、比較的長い期間中不変のままであるデータを含むページである、請求項８又は９に記載の装置。
【請求項１５】
不揮発性メモリ（ＮＶＭ）にアクセスするメモリインターフェイスにおいて、
ＮＶＭへプログラムされるべき特定のデータセットを識別し、
ウィーブシーケンスカウンタ（ＷＳＣ）の現在値を決定し、ＷＳＣは、ページがＮＶＭ内でプログラムされる順序を指示するものであり、
前記特定のデータセットをＮＶＭの特定のページへプログラムするように指令し、
前記ＷＳＣの現在値を前記特定のページのメタデータに記憶するように指令し、
前記ＮＶＭのページへデータをプログラムした後、前記ＷＳＣの現在値を次の値へ逐次インクリメントし、
ホストウィーブシーケンスカウンタ（ＨＷＳＣ）を前記特定のページのメタデータに記憶するように指令し、
前記特定のデータセットがＮＶＭ内に最初にプログラムされた新たなデータであるのに応答して前記ＨＷＳＣの値を前記ＷＳＣの現在値に等しくセットし、
前記特定のデータセットが異なるページから移動された古いデータであるのに応答して前記ＨＷＳＣの値を異なるページに関連した以前のＨＷＳＣ値に等しくセットする、
ように動作するコントロール回路を備えたメモリインターフェイス。
【請求項１６】
前記コントロール回路は、更に、
前記ＮＶＭの各ページのＷＳＣ値に続いて時間シーケンス順に前記ＮＶＭの各ページを検査することにより前記ＮＶＭの論理的−物理的マッピングテーブルを再構築するように動作する、請求項１５に記載のメモリインターフェイス。
【請求項１７】
前記コントロール回路は、更に、
インコヒレントなデータを含むＮＶＭの破損ページを識別し、
前記破損ページに関連したＷＳＣ値を決定し、
前記破損ページに関連したＷＳＣ値より大きなＷＳＣ値に関連したページを無視する、ことにより、前記ＮＶＭにおいてロールバック動作を遂行するように働く、請求項１５又は１６に記載のメモリインターフェイス。
【請求項１８】
前記ページを無視することは、前記ＮＶＭの論理的−物理的マッピングテーブルの再構築中にページを無視することを含む、請求項１７に記載のメモリインターフェイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性メモリシステムのためのウィーブシーケンスカウンタに関する。
【背景技術】
【０００２】
ＮＡＮＤフラッシュメモリ、及び他の形式の不揮発性メモリ（ＮＶＭ）は、大量記憶のために一般的に使用されている。例えば、ポータブルメディアプレーヤのような消費者向け電子装置は、多くの場合、音楽、ビデオ及び他のメディアを記憶するためにフラッシュメモリを備えている。
【０００３】
ＮＶＭは、複数のスーパーブロックを含み、各スーパーブロックは、複数のブロックへと編成される。同様に、ＮＶＭの各ブロックは、複数のページへと編成される。ＮＶＭのコンテンツに関するある情報又は統計値は、ブロックレベル「粒度」で与えられる。換言すれば、そのような情報は、ブロック全体に関して得られるだけであり、そのブロック内の個々のページに関する特定の情報を与えることはできない。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
このブロックレベル粒度は、データコヒレンス性を維持するようにブロック内でデータを織るＮＶＭシステムの能力を制限する。データコヒレンス性がないと、ロールバック、ウェアレベリング、ガーベージコレクションのような幾つかのＮＶＭ動作を実行できないことがある。従って、コヒレントな仕方でブロック内のデータを織る能力が要望される。
【課題を解決するための手段】
【０００５】
不揮発性メモリ（ＮＶＭ）システムのためのウィーブシーケンスカウンタ（ＷＳＣ）を形成するシステム及び方法が開示される。このＷＳＣは、ＮＶＭの各ページをプログラムするシーケンスを識別することができる。「ウィーブ(weave)」とは、２つ以上のブロックを、同時にプログラムするためにオープンにし、従って、これらのブロックのページを「織る」ようにプログラムするのを許すことを指す。ＷＳＣは、例えば、ロールバック動作を遂行する上で、及び論理的−物理的テーブルマッピングを再構築する上で、ＮＶＭシステムの助けとなる。
【０００６】
ホストウィーブシーケンスカウンタ（ＨＷＳＣ）を形成するシステム及び方法も開示される。ＮＶＭのページに対してデータが最初にプログラムされるたびに（例えば、ウェアレベリングの目的、等のために移動又は再書き込みされるのではなく）、そのページにＨＷＳＣを指定することができる。データが新たなページへ移動されるたびに更新されるＷＳＣとは異なり、データの特定セットに指定されるＨＷＳＣは、変化することがない。従って、データがウェアレベリング、ガーベージコレクション、等のために新たなページへ移動されても、そのデータに関連したＨＷＳＣは、同じままである。ＨＷＳＣは、例えば、ページのスタティック対ダイナミック状態を決定する上で、及びウェアレベリングやガーベージコレクション動作を遂行する上で、ＮＶＭシステムの助けとなる。
【０００７】
本発明の前記及び他の態様及び効果は、全体にわたって同じ部分が同じ参照文字で示された添付図面を参照してなされた以下の詳細な説明を考慮したときに明らかとなろう。
【図面の簡単な説明】
【０００８】
【図１】本発明の種々の実施形態により構成された電子装置のブロック図である。
【図２】本発明の種々の実施形態により構成された電子装置のブロック図である。
【図３】本発明の種々の実施形態により織られるＮＶＭのブロックの機能図である。
【図４】本発明の種々の実施形態によるロールバック動作中のＮＶＭのブロックの機能図である。
【図５】本発明の種々の実施形態によるウィーブシーケンスカウンタを使用するロールバック動作のフローチャートである。
【図６】本発明の種々の実施形態によるＮＶＭのページのスタティック対ダイナミック決定のフローチャートである。
【図７】本発明の種々の実施形態によるウェアレベリングの機能図である。
【図８】本発明の種々の実施形態によるウェアレベリング手順を示すフローチャートである。
【発明を実施するための形態】
【０００９】
不揮発性メモリ（ＮＶＭ）システムのためのウィーブシーケンスカウンタ（ＷＳＣ）を提供するシステム及び方法が開示される。このＷＳＣは、ＮＶＭの各ページをプログラムするシーケンスを識別することができる。「ウィーブ(weave)」とは、２つ以上のブロックを、同時にプログラムするためにオープンにし、従って、これらのブロックのページを「織る」ようにプログラムするのを許すことを指す。
【００１０】
非正常シャットダウン又は他のシステム再ブート事象の場合には、ＮＶＭシステムは、ＮＶＭの１つ以上の論理的−物理的マッピングテーブルを再構築する必要がある。更に、このマッピングテーブルは、有効な（例えば、非破損）データのみを含む。再構築プロセス中に、無効データを伴う破損ページを見つけると、ＮＶＭシステムは、ＮＶＭのブロックのページにおいてＷＳＣ値を検査して、その破損ページの特定のＷＳＣ値を決定する。次いで、ＮＶＭシステムは、ＷＳＣ値が破損ページのＷＳＣ値より大きいページは採用できないことを決定する。というのは、予想を記すファイルシステム及びデータベースに対してインコヒレントとなるからである。次いで、ＮＶＭシステムは、そのような無効ページを無視し、そしてＷＳＣ値が破損ページのＷＳＣ値より小さいページのみを使用して論理的−物理的マッピングテーブルを構築することにより、システムを安全状態へ「ロールバック」する。
【００１１】
論理的−物理的マッピングテーブルが再構築されると、時間順のコヒレンス性が維持される。あるケースでは、マッピングテーブルは、ＷＳＣ値の上昇順にページを順次に検査することにより再構築することができる。２つのページが、各々、同じ論理的アドレスへマップすることを指示する場合には、より高いＷＳＣ値を含むページにプライオリティが与えられ、そして他方のページを無効化する。換言すれば、より高いＷＳＣ値を伴うページは、その後の時点にその論理的アドレスへプログラムされるので、このページは、正しい論理的−物理的マッピングを含み、従って、マッピングテーブルに使用されるべきであると決定される。同様に、より小さなＷＳＣ値を含むページは、誤った、古い論理的−物理的マッピングを含むことがあり、従って、マッピングテーブルの構築に使用されてはならないと決定される。
【００１２】
ホストウィーブシーケンスカウンタ（ＨＷＳＣ）を提供するシステム及び方法も開示される。ＮＶＭのページに対してデータが最初に書き込まれるたびに（例えば、ウェアレベリングの目的、等のために移動又は再書き込みされるのではなく）、そのページにＨＷＳＣを指定することができる。ＨＷＳＣは、現在ＷＳＣと同じ値としてセットすることができる。古いデータが新たなページへ移動されるたびに更新されるＷＳＣとは異なり、特定のデータセットに指定されるＨＷＳＣは、変化しない。例示的シナリオとして、論理的ブロックアドレス（ＬＢＡ）Ｘに関連した新たなデータは、ページＡに記憶されると仮定する。現在ＷＳＣは、２３であり、従って、ページＡには、ＷＳＣ＝２３及びＨＷＳＣ＝２３が指定される。現在ＷＳＣ値が今や８２であるときのその後の時点で、ＬＢＡ  Ｘに関連したデータがページＢへ移動される（例えば、ウェアレベリング、ガーベージコレクション、等のためにデータが移動される）。ページＢは、新たにＷＳＣ＝８２が指定され、そして古いＨＷＳＣ＝２３を維持する。
【００１３】
ある実施形態では、ＨＷＳＣは、ページのスタティック対ダイナミック状態を決定する上でＮＶＭシステムの助けとなる。特に、ＨＷＳＣは、ページ内に記憶されたデータがどれほど年をとったかの一般的な考え方を与える。データが古くなると、そのようなデータは、最初にプログラムされて以来移動していないので、スタティックと考えられる見込みが高くなる。従って、データの一般的な年齢は、現在のＷＳＣ値と、そのデータを記憶するページに関連したＨＷＳＣ値との間の差を計算することにより、決定される。この差がスレッシュホールド値より大きい場合には、そのページに記憶されたデータは、プログラムされるべきデータに対してどのブロック又はスーパーブロックを選択するかに関してスタティックと考えられる。その差がスレッシュホールド値より小さい場合には、ページ内に記憶されるデータは、例えば、プログラムされるべきデータに対してどのブロック又はスーパーブロックを選択するかに関してダイナミックと考えられる。
【００１４】
ある実施形態において、ＨＷＳＣにより与えられるスタティック対ダイナミックの決定は、ウェアレベリングやガーベージコレクションのような保守動作を遂行する上でＮＶＭシステムの助けとなる。ＮＶＭの寿命を延長するには、ＮＶＭの全てのブロックが同様に消耗するようにさせることが好ましい。スタティックなページは、一般的に、頻繁に書き込み及び再書き込みされないので、スタティックと決定されたページは、高サイクルブロック（例えば、既に比較的多数回消去及びプログラムされたブロック）に一緒に記憶することができる。これは、ブロックが将来消去及び再プログラムされる確率を減少することにより高サイクルブロックにおける更なる消耗を減少する上で助けとなる。同様に、ダイナミックと決定されたページは、低サイクルブロック（例えば、比較的少数回しか消去及びプログラムされないブロック）に一緒に記憶することができる。
【００１５】
図１は、電子装置１００のブロック図である。ある実施形態において、電子装置１００は、ポータブルメディアプレーヤ、セルラー電話、ポケットサイズのパーソナルコンピュータ、パーソナルデジタルアシスタント（ＰＤＡ）、デスクトップコンピュータ、ラップトップコンピュータ、及び他の適当な形式の電子装置であり、又はそれを含むことができる。
【００１６】
電子装置１００は、システムオンチップ（ＳｏＣ）１１０及び不揮発性メモリ（ＮＶＭ）１２０を備えている。不揮発性メモリ１２０は、フローティングゲート又はチャージトラップ技術に基づくＮＡＮＤフラッシュメモリ、ＮＯＲフラッシュメモリ、消去可能なプログラマブルリードオンリメモリ（ＥＰＲＯＭ）、電気的に消去可能なプログラマブルリードオンリメモリ（ＥＥＰＲＯＭ）、強誘電性ＲＡＭ（ＦＲＡＭ（登録商標））、磁気抵抗性ＲＡＭ（ＭＲＡＭ）、又はその組み合わせを含む。
【００１７】
ＮＶＭ１２０は、消去可能な最小単位である「ブロック」へと編成され、更に、プログラム又は読み取りできる最小単位である「ページ」へと編成される。ある実施形態では、ＮＶＭ１２０は、複数のブロックを各々有する複数の集積回路を含むことができる。対応する集積回路からのメモリ位置（例えば、ブロック、又はブロックのページ）は、「スーパーブロック」を形成する。ＮＶＭ１２０の各メモリ位置（例えば、ページ又はブロック）は、物理的アドレス（例えば、物理的ページアドレス又は物理的ブロックアドレス）を使用して参照することができる。ＮＶＭ１２０の各ページには、ＥＣＣデータのようなメタデータ（例えば、ＮＶＭ１２０に記憶される情報のエラー検出及び／又は修正を行うための）、ウィーブシーケンスカウンタ、及びホストウィーブシーケンスカウンタを含ませることができる。
【００１８】
システムオンチップ１１０は、ＳｏＣコントロール回路１１２、メモリ１１４、及びＮＶＭインターフェイス１１８を含む。ＳｏＣコントロール回路１１２は、ＳｏＣ１１０の一般的動作及び機能、並びにＳｏＣ１１０の他のコンポーネント又は電子装置１００をコントロールすることができる。例えば、ユーザ入力、及び／又はアプリケーション又はオペレーティングシステムのインストラクションに応答して、ＳｏＣコントロール回路１１２は、読み取り又は書き込み要求をＮＶＭインターフェイス１１８へ発行して、ＮＶＭ１２０からデータを得又はそこにデータを記憶することができる。明瞭化のために、ＳｏＣコントロール回路１１２が記憶又は検索のために要求するデータは、たとえそれがユーザ又はユーザアプリケーションに直接関連していなくても、「ユーザデータ」と称される。むしろ、ユーザデータは、（例えば、アプリケーション又はオペレーティングシステムを経て）ＳｏＣコントロール回路１１２によって発生され又は得られる適当なシーケンスのデジタル情報である。
【００１９】
ＳｏＣコントロール回路１１２は、電子装置１００の機能を駆動するように働くハードウェア、ソフトウェア及びファームウェア、並びにコンポーネント、回路又はロジックの任意の組み合わせを含む。例えば、ＳｏＣコントロール回路１１２は、ＮＶＭ１２０又はメモリ１１４に記憶されたソフトウェア／ファームウェアのコントロールものとで動作する１つ以上のプロセッサを含む。
【００２０】
メモリ１１４は、適当な形式の揮発性メモリ、例えば、ランダムアクセスメモリ（ＲＡＭ）（例えば、スタティックＲＡＭ（ＳＲＡＭ）、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、同期ダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）、倍データレート（ＤＤＲ）ＲＡＭ）、キャッシュメモリ、リードオンリメモリ（ＲＯＭ）、又はその組み合わせを含む。メモリ１１４は、不揮発性メモリ１２０へプログラムされるか又はそこから読み取られるユーザデータを一時的に記憶することのできるデータソースを含む。ある実施形態では、メモリ１１４は、ＳｏＣコントロール回路１１２の一部分として実施されるプロセッサのためのメインメモリとして働く。
【００２１】
ＮＶＭインターフェイス１１８は、ＳｏＣコントロール回路１１２とＮＶＭ１２０との間のインターフェイス又はドライバとして働くように構成されたハードウェア、ソフトウェア及び／又はファームウェアの適当な組み合わせを含む。ＮＶＭインターフェイス１１８に含まれるソフトウェアモジュールとしては、それに対応するプログラムコードがＮＶＭ１２０又はメモリ１１４に記憶される。
【００２２】
ＮＶＭインターフェイス１１８は、ＳｏＣコントロール回路１１２がＮＶＭ１２０にアクセスしそしてＮＶＭ１２０のメモリ位置（例えば、ページ、ブロック、スーパーブロック、集積回路）及びそこに記憶されたデータ（例えば、ユーザデータ）を管理できるようにする種々の機能を遂行する。例えば、ＮＶＭインターフェイス１１８は、ＳｏＣコントロール回路１１２からの読み取り又は書き込み要求を解釈し、ウェアレベリングを遂行し、そしてＮＶＭ１２０のバスプロトコルに適合する読み取り及びプログラムインストラクションを発生し、ウィーブシーケンスカウンタ値をページに指定し、そしてホストウィーブシーケンスカウンタ値をページに指定する。
【００２３】
ＮＶＭインターフェイス１１８及びＳｏＣコントロール回路１１２は、個別のモジュールとして示されているが、これは、本発明の実施形態の説明を簡単にするものに過ぎない。これらのモジュールは、ハードウェアコンポーネント、ソフトウェアコンポーネント、又はその両方を共有してもよいことを理解されたい。例えば、ＳｏＣコントロール回路１１２は、ＮＶＭインターフェイス１１８のためのソフトウエアベースのメモリドライバを実行してもよい。
【００２４】
ある実施形態では、電子装置１００は、フラッシュメモリドライブ又はＳＤカードのようなターゲット装置を備え、これは、ＮＶＭ１２０、及びＮＶＭインターフェイス１１８のある部分又は全部を含む。これらの実施形態では、ＳｏＣ１１０又はＳｏＣコントロール回路１１２は、ターゲット装置のためのホストコントローラとして働く。例えば、ホストコントローラとして、ＳｏＣ１１０は、読み取り及び書き込み要求をターゲット装置へ発行することができる。
【００２５】
図２は、種々の実施形態による電子装置１００（図１）のファームウェア、ソフトウェア、及び／又はハードウェアコンポーネントの幾つかを詳細に示す電子装置２００のブロック図である。電子装置２００は、図１を参照して上述した特徴及び機能のいずれかを有し、そしてその逆のことも言える。図示されたように、破線は、層の境界を示す。境界線内にどのコンポーネントが入るかは、単なる例示に過ぎず、１つ以上のコンポーネントを異なる層と合併できることを理解されたい。
【００２６】
電子装置２００は、ファイルシステム２１０、ＮＶＭドライバ２１２、ＮＶＭバスコントローラ２１６、及びＮＶＭ２２０を備えている。ある実施形態では、ファイルシステム２１０及びＮＶＭドライバ２１２は、ソフトウェア又はファームウェアモジュールであり、そしてＮＶＭバスコントローラ２１６及びＮＶＭ２２０は、ハードウェアモジュールである。従って、これらの実施形態では、ＮＶＭドライバ２１２は、ＮＶＭインターフェイス２１８のソフトウェア又はファームウェア態様を表わし、そしてＮＶＭバスコントローラ２１６は、ＮＶＭインターフェイス２１８のハードウェア態様を表わす。
【００２７】
ファイルシステム２１０は、適当な形式のファイルシステム、例えば、ファイルアロケーションテーブル（ＦＡＴ）ファイルシステム又はハイアラーキーファイルシステムプラス（ＨＦＳ＋）を備え、そして電子装置２００のオペレーティングシステムの一部分（例えば、図１のＳｏＣコントロール回路１１２の一部分）である。ある実施形態では、ファイルシステム２１０は、ページの論理的−物理的マッピングを与えるフラッシュファイルシステムを備えている。これらの実施形態において、ファイルシステム２１０は、以下に述べるＮＶＭドライバ２１２の機能の幾つか又は全部を遂行し、それ故、ファイルシステム２１０及びＮＶＭドライバ２１２は、個別のモジュールであってもなくてもよい。
【００２８】
ファイルシステム２１０は、アプリケーション及びオペレーティングシステムのためのファイル及びフォルダ構造を管理する。ファイルシステム２１０は、電子装置２００上で実行されるアプリケーション又はオペレーティングシステムのコントロールのもとで動作し、そして情報がＮＶＭ２２０から読み取られるか又はそこに記憶されることをアプリケーション又はオペレーティングシステムが要求するときに書き込み及び読み取り要求をＮＶＭドライバ２１２に与える。各読み取り又は書き込みコマンドと共に、ファイルシステム２１０は、ユーザデータをどこから読み取るべきか又はどこに書き込むべきか指示するための論理的アドレス、例えば、論理的ページアドレス又は論理的ブロックアドレスを、ページオフセットと共に与えることができる。
【００２９】
ファイルシステム２１０は、ＮＶＭ２２０に直接適合しない読み取り及び書き込み要求をＮＶＭドライバ２１２に与えることがある。例えば、論理的アドレスは、ハードドライブベースのシステムの典型である慣習又はプロトコルを使用してもよい。ハードドライブベースのシステムは、フラッシュメモリとは異なり、最初にブロック消去を遂行せずに、メモリ位置をオーバーライトすることができる。更に、ハードドライブは、装置の寿命を延長するためにウェアレベリングを必要としない。それ故、ＮＶＭインターフェイス２１８は、ファイルシステム要求を取り扱うためにメモリ特有、売主特有、又はその両方である機能を遂行し、そしてＮＶＭ２００に適した仕方で他の管理機能を遂行することができる。
【００３０】
ＮＶＭドライバ２１２は、変換層２１４を備えている。ある実施形態では、変換層２１４は、フラッシュ変換層（ＦＴＬ）であってもよいし又はそれを含んでもよい。書き込み要求の際に、変換層２１４は、与えられた論理的アドレスを、ＮＶＭ２２０上の消去された空き物理的位置へマップすることができる。読み取り要求の際に、変換層２１４は、与えられた論理的アドレスを使用して、要求されたデータが記憶されている物理的アドレスを決定することができる。各ＮＶＭは、ＮＶＭのサイズ又は売主に基づいて異なるレイアウトを有することがあるので、このマッピング動作は、メモリ及び／又は売主特有のものでよい。
【００３１】
論理的−物理的アドレスマッピングに加えて、変換層２１４は、フラッシュ変換層の典型である他の適当な機能、例えば、ガーベージコレクション（ＧＣ）及びウェアレベリングを遂行することができる。
【００３２】
ある実施形態では、ＮＶＭドライバ２１２は、ＮＶＭバスコントローラ２１６とインターフェイスし、ＮＶＭアクセス要求（例えば、プログラム、読み取り、及び消去要求）を完了する。バスコントローラ２１６は、ＮＶＭ２２０へのハードウェアインターフェイスとして働き、そしてＮＶＭ２２０のバスプロトコル、データレート及び他の仕様を使用してＮＶＭ２２０と通信することができる。
【００３３】
ＮＶＭインターフェイス２１８は、ここで、時々「メタデータ」と称されるメモリ管理データに基づいてＮＶＭ２２０を管理する。メタデータは、ＮＶＭドライバ２１２により発生されてもよいし、又はＮＶＭドライバ２１２のコントロールのもとで動作するモジュールにより発生されてもよい。例えば、メタデータは、論理的アドレスと物理的アドレスとの間のマッピングの管理、不良ブロックの管理、ウェアレベリングに使用される情報、データエラーを検出又は修正するのに使用されるＥＣＣデータ、ページに指定されたウィーブシーケンスカウンタ値、ページに指定されたホストウィーブシーケンスカウンタ値、又はその組み合わせを含む。メタデータは、ファイルシステム２１０により与えられるデータを、論理的アドレスのようなユーザデータと共に含む。従って、一般的に、「メタデータ」とは、ユーザデータについての又はそれに関連した情報、又は不揮発性メモリの動作及びメモリ位置を管理するのに一般的に使用される情報を指す。
【００３４】
ＮＶＭインターフェイス２１８は、ＮＶＭ２２０にメタデータを記憶するように構成される。ある実施形態では、ＮＶＭインターフェイス２１８は、ユーザデータに関連したメタデータを、ユーザデータが記憶される同じメモリ位置（例えば、ページ）に記憶する。例えば、ＮＶＭインターフェイス２１８は、ユーザデータ、関連論理的アドレス、ＥＣＣデータ、ウィーブシーケンスカウンタ値、及びユーザデータのためのホストウィーブシーケンスカウンタ値を、ＮＶＭ２２０の１つ以上のメモリ位置に記憶する。又、ＮＶＭインターフェイス２１８は、ユーザデータについての他の形式のメタデータも同じメモリ位置に記憶する。
【００３５】
ＮＶＭインターフェイス２１８は、ＮＶＭ２２０のパワーアップ時又はＮＶＭ２２０の動作中に、どんなデータがその位置にあるか電子装置２００が決定できるように、論理的アドレスを記憶する。特に、ファイルシステム２１０は、ユーザデータをその物理的アドレスではなく、その論理的アドレスに基づいて参照するので、ＮＶＭインターフェイス２１８は、ユーザデータ及び論理的アドレスを一緒に記憶して、それらの関連性を維持する。このように、論理的−物理的マッピングをＮＶＭ２２０に維持している個別のテーブルが古くなった場合でも、ＮＶＭインターフェイス２１８は、例えば、電子装置２００のパワーアップ時又は再ブート時に適切なマッピングを依然決定することができる。
【００３６】
論理的−物理的アドレスマッピングに加えて、変換層は、フラッシュ変換層の典型である他の機能、例えば、ガーベージコレクション及びウェアレベリングを遂行することができる。例えば、変換層２１４は、ウェアレベリングを遂行して、ＮＶＭ２２０の全てのブロックに同様の消耗を生じさせるようにする。
【００３７】
上述したように、ＮＶＭ２２０のブロックは、一般的に、一度にブロック全体を消去できるが、各ブロックの個々のページは、一度に１ページをプログラムすることができる。ＮＶＭ２２０のページは、例えば、新たなデータがＮＶＭ２２０に最初にセーブされるとき（例えば、新たな曲ファイルがポータブルメディアプレーヤ装置に最初にセーブされるとき）、或いは古いデータが異なるページへ移動されるとき（例えば、以前にセーブされたデータがウェアレベリング、ガーベージコレクション又は他の保守操作のために移動されるとき）データでプログラムされる。従って、ここで使用する「新たなデータ」という語は、最初にＮＶＭに初めてプログラムされるデータを指すが、「古いデータ」という語は、ＮＶＭに以前にプログラムされそしてＮＶＭの１つのエリアから別のエリアへ移動（例えば、再プログラム）されるデータを指す。データがＮＶＭ２２０のページにセーブされるたびに（例えば、このデータが古いか新しいかに関わらず）、そのページを、順次にインクリメントされるウィーブシーケンスカウンタ（ＷＳＣ）値に関連付けることができる。
【００３８】
各ページは、その関連ＷＳＣ値を記憶するメタデータフィールドを含む。別のページがデータでプログラムされるたびに、ＷＳＣをインクリメントし、そして新たにインクリメントされたＷＳＣ値をそのページのメタデータに記憶することができる。このように、ＷＳＣは、ＮＶＭ２２０の各ページがプログラムされた相対的な順序を識別するカウンタ数を表わす。例示として、現在ＷＳＣ値が２に等しいときにページＡがデータでプログラムされると仮定する。従って、ＷＳＣ＝２がページＡのメタデータに記憶され、そして現在ＷＳＣ値が３にインクリメントされる。次に、ページＢがデータでプログラムされ、従って、ＷＤＣ＝３がページＢのメタデータに記憶される。ＷＳＣの記憶及び／又はコントロールは、ＮＶＭシステムの適当なコンポーネント、例えば、ＮＶＭインターフェイス（例えば、図１のＮＶＭインターフェイス１１８）又は適当なコントロール回路（例えば、図１のＳｏＣコントロール回路１１２）により遂行される。
【００３９】
ウィーブシーケンスカウンタの「ウィーブ(weave)」とは、ＮＶＭ２２０の２つ以上のブロックを、同時にプログラムするためにオープンにし、従って、これらのブロックのページを「織る」ようにプログラムするのを許すことを指す。例えば、図３は、２つのブロックが、同時にプログラミングするためにオープンであるＮＶＭシステム３００の機能図である。図３に示すように、ブロック０のページ０及び１が最初にプログラムされ、従って、ＷＳＣ＝０及びＷＳＣ＝１が各々指定される。ブロック１のページ０が次にプログラムされ、従って、ＷＳＣ＝２が指定される。次いで、ブロック０のページ２がプログラムされ、従って、ＷＳＣ＝３が指定され、等々となる。従って、図３に示すように、ブロック０及び１のページは、織られるようにプログラムされ、ＷＳＣ値は、これらのページがプログラムされるところの順序を指示する。図３は、２つのブロックが、同時にプログラミングするためにオープンであるケースを示しているが、当業者であれば、２つ以上の任意の数のブロックを、同時プログラミングのためにオープンとし且つこのように織ることができることが明らかであろう。
【００４０】
ある実施形態では、ＷＳＣは、ある数の書き込みサイクルの後にロールオーバーする。例えば、ＷＳＣは、１００，０００，０００の書き込みサイクルの後にＷＳＣ＝０にリセットされる。ロールオーバーが生じると、種々のアルゴリズムは、大きなギャップを検出し、そして小さな値のカウンタが、ＮＶＭに存在する大きなカウンタ値より実際に大きくなることを推定する。ある実施形態では、ＷＳＣカウンタは、ＮＶＭの定格寿命中にロールオーバーしないように充分に大きなサイズにセットされる。更に、ＷＳＣは、書き込まれているデータに関して公平である。例えば、ＷＳＣは、そのページが新たなデータと共に書き込まれるか又は古いデータと共に書き込まれるかに関わらず、その現在値をインクリメントして、現在プログラムされているページのメタデータに指定し続ける。
【００４１】
ある実施形態において、ＷＳＣは、種々のＮＶＭ動作を遂行する上で助けとなる。例えば、ＷＳＣは、ＮＶＭシステムのロールバック中に使用することができる。ＮＶＭの非正常シャットダウンの後に、ＮＶＭシステム（例えば、図１のＮＶＭインターフェイス１１８又は図２のＮＶＭインターフェイス２１８のようなＮＶＭシステムの１つ以上のコンポーネント）は、ファイルシステム（例えば、図２のファイルシステム２１０）により使用される論理的アドレスとＮＶＭ（例えば、図２のＮＶＭ２２０）の物理的アドレスとの間の論理的−物理的マッピングテーブルを再構築するように試みる。しかしながら、非正常シャットダウンは、データの種々のページが無効となるようにする。一般的に、１つのページが無効となると、その後にプログラムされるページも無効になると仮定する。というのは、予想を記すファイルシステム及びデータベースに対してインコヒレントとなるからである。ＮＶＭシステムは、好ましくは、そのような破損が生じる前に存在する有効データのみを使用して論理的−物理的マッピングテーブルを再構築する。換言すれば、ＮＶＭシステムは、まだデータにエラーがなかった適当な時点へシステムを「ロールバック」しなければならない。
【００４２】
ＷＳＣは、ＮＶＭシステムをどのように適当にロールバックするか決定する上で助けとなる。特に、プログラムされるページのウィーブ特性のために、単一のブロックを破損ページへ単にシリアルにロールバックするだけでは不充分である。むしろ、システムをエラーなし状態へ適切に戻すために、幾つかのブロックを同時にロールバックする必要がある。ＷＳＣは、これらの織られたブロックの各々をどのようにロールバックするか決定する上で助けとなる。例えば、図４は、ページが非正常シャットダウンから破損状態となるＮＶＭシステム４００の機能図である。図４は、ＮＶＭシステム４００の２つのブロックしか示していないが、当業者であれば、２つ以上の適当な数のブロックを含むようにこれを外挿できることが明らかであろう。
【００４３】
図４のＷＳＣ値により指示されたように、ブロック０及び１のページは、織られるようにプログラムされている。しかしながら、ＮＶＭシステム４００の非正常シャットダウンのために、ブロック０のページ３が破損し、今や、無効又は修正不能となる（例えば、記号“Ｘ”で示されたように）。ＮＶＭシステム４００（例えば、図１のＮＶＭインターフェイス１１８又は図２のＮＶＭインターフェイス２１８のようなＮＶＭシステム４００の１つ以上のコンポーネント）は、例えば、ＮＶＭシステム４００の論理的−物理的マッピングテーブルの再構築中にブロック０を検査するときにそのような破損ページを発見する。ブロック０内で、ページ０−２は、ページ３の前に配置され、従って、ＮＶＭシステム４００は、ページ０−２におそらくエラーがないと決定する（例えば、破損が生じる前にそれらが配置されているので）。同様に、ＮＶＭシステム４００は、ブロック０のページ４がおそらく破損したと決定する。というのは、それが破損ページ３の後に配置されているからである（例えば、破損ページの後にプログラムされたページも一般的に破損されるからである）。しかしながら、他のブロック（例えば、ブロック１）のどのページがエラーなしであり、そしてどのページが破損したか決定するため、ＮＶＭシステム４００は、ＮＶＭページのＷＳＣ値を検査することに依存する。
【００４４】
例えば、ＮＶＭシステム４００は、ブロック０内のページ（例えば、破損ページ３の前に配置されているためにおそらくコヒレントであるページ０−２）のメタデータを検査して、それらがＷＳＣ＝１、２及び５に関連していることを決定する。ＮＶＭシステム４００は、次いで、ブロック１内のページのメタデータを検査して、ページ０−２がＷＳＣ=３、４及び６に関連していることを決定する。これらのページは、全て、ＷＳＣ値にギャップを伴わずに生じる（例えば、ＷＳＣ値は、シーケンスにギャップを伴わずに０から６まで進む）ので、ＮＶＭシステム４００は、これら全てのページがおそらくコヒレントであることを決定する。しかしながら、ウィーブシーケンスカウンタにおいて検出できる次の値は、ブロック０のページ８に関連したＷＳＣ＝８である。ＷＳＣ＝７は、検出されず、従って、ウィーブシーケンスカウンタにギャップを生じるので、ＮＶＭシステム４００は、ＷＳＣ＝７が、ブロック０の破損ページ３に関連したＷＳＣ値であることを決定する。次いで、ＮＶＭシステム４００は、７より大きなＷＳＣ値に関連したＮＶＭのページがおそらく破損されたことを決定する。換言すれば、（ＷＳＣ＝８に関連した）ブロック０のページ４及び（ＷＳＣ＝９及び１０に関連した）ブロック１のページ３−４は、おそらく破損されている。
【００４５】
このように、ウィーブシーケンスカウンタにおいてギャップを見つけることにより、ＮＶＭシステムは、非正常シャットダウンからの破損がおそらく開始されている破損ページを識別することができる。次いで、ＮＶＭシステムは、破損ページのＷＳＣ値より大きなＷＳＣ値に関連したページを無視することによりシステムをロールバックする。例えば、これらのページは、ＮＶＭシステムの論理的−物理的マッピングテーブルの再構築中に無視される。図５は、このようにＮＶＭシステムをロールバックするプロセス５００を示す。このプロセス５００は、ＮＶＭシステムの適当なコンポーネント、例えば、ＮＶＭインターフェイス（例えば、図１のＮＶＭインターフェイス１１８）又は適当なコントロール回路（例えば、図１のＳｏＣコントロール回路１１２）によって遂行される。
【００４６】
プロセス５００は、ステップ５０２でスタートする。ステップ５０４において、ＮＶＭシステムは、ＮＶＭのページを検査することができる。ステップ５０６において、ＮＶＭシステムは、次いで、ステップ５０４で検査されたページが有効であるか否か決定する。ページが有効である（例えば、ページがエラーなしである）のに応答して、プロセス５００は、ステップ５０８においてＮＶＭの次のページへ進む。ＮＶＭの特定のレイアウトに基づき、前記次のページは、例えば、同じブロック内のページ又は異なるブロック内のページである。次いで、プロセス５００は、ステップ５０４、５０６、及び５０８を通してループし、破損ページが識別されるまでＮＶＭシステムのページをチェックする。
【００４７】
ステップ５０６において無効ページが発見されると、プロセス５００は、ステップ５１０へ進む。次いで、ＮＶＭシステムは、ＮＶＭ内のページのメタデータを読み取り、ＷＳＣシーケンス内のギャップを決定する。従って、このＷＳＣギャップ値は、ステップ５０６で識別された無効ページのＷＳＣ値に対応する。次いで、ステップ５０８において、プロセス５００は、このＷＳＣギャップ値より大きなＷＳＣ値に関連したページを無視することによりＮＶＭシステムをロールバックする。例えば、このようなページは、ＮＶＭシステムの論理的−物理的マッピングテーブルの再構築中にインコヒレントとみなされ無視される。次いで、プロセス５００は、ステップ５１４で終了となる。
【００４８】
再ブート動作中に論理的−物理的マッピングテーブルが再構築されるときに、時間順のコヒレンス性が維持される。あるケースでは、マッピングテーブルは、ＷＳＣ値の増加順にページを順次検査することにより再構築される。一般的に、ページは、メタデータ内に記憶されたその関連論理的アドレスを含む。従って、論理的−物理的マッピングテーブルは、そのようなメタデータを検査することにより再構築される。しかしながら、時々、ページは、そのページを誤った論理的アドレスに関連付ける誤った又は古びたメタデータを含むことがある。例示として、ＬＢＡ  Ｘに関連したデータは、ページＡへプログラムされる。その後の時点で、ＬＢＡ  Ｘに関連した新たなデータは、異なるブロック又はスーパーブロックに配置されたページＢへプログラムされる。しかしながら、ページＡのメタデータは、この変化した論理的アドレスを反映するように決して更新されず、従って、ページＡのメタデータは、古くなり、それが依然としてＬＢＡ  Ｘに関連していると誤って指示する。
【００４９】
その結果、２つのページが同じ論理的アドレスに関連する場合には、ＷＳＣ値が高い方のページが、最も新しいユーザデータ及び正しい論理的アドレスマッピングを伴うページであると仮定される。従って、ページのＷＳＣ値を検査することにより、特定のＬＢＡの最も新しいバージョンを回復することができる。
【００５０】
論理的−物理的マッピングテーブルは、ＮＶＭの１つ以上のページの応答においてＷＳＣシーケンスをたどることにより時間シーケンス順に再構築される。例示的シナリオとして、ＷＳＣ＝１に関連したページは、それがＬＢＡ  Ｘに関連することを指示する。論理的−物理的マッピングテーブルは、この情報を含むように更新される。しかしながら、ＷＳＣ＝１２に関連したページに到達すると、ＮＶＭシステムが示すように、このページのメタデータは、それがＬＢＡ  Ｘに関連することも指示する。ＮＶＭシステムは、このページがその後の時点で書き込まれ、従って、より最新の論理的アドレスマッピングを有すると仮定する。従って、ＷＳＣ＝１２のページは、以前のページを無効化し、そして論理的−物理的マッピングテーブルは、ＷＳＣ＝１２のページがＬＢＡ  Ｘに関連していることを指示するように更新される。これは、複数の書き込みストリーム（例えば、ダイナミック及びスタティック書き込みストリーム）を有するシステムに対してコヒレントな時間線を維持する上で特に重要である。
【００５１】
ＷＳＣ値をメタデータに記憶するのに加えて、ホストウィーブシーケンスカウンタ（ＨＷＳＣ）値もＮＶＭの各ページのメタデータに記憶される。ＷＳＣ値と同様に、ＨＷＳＣ値も逐次のものである。しかしながら、以下に詳細に説明するように、ＨＷＳＣは、必ずしもインクリメント的ではない。新たなデータが（ウェアレベリングの目的等で移動又は再プログラミングされるのではなく）最初にＮＶＭのページへプログラムされるたびに、そのページにＨＷＳＣ値が指定される。古いデータを新たなページへ移動するたびに変化するＷＳＣ値とは異なり、特定のデータセットに指定されるＨＷＳＣ値は、決して変化しない。むしろ、特定のデータセットは、ＮＶＭ内でのその寿命全体にわたって同じＨＷＳＣ値を維持することができる。換言すれば、ＨＷＳＣ値は、逐次のものであるから、ファイルが最初にＮＶＭにセーブされたときに関してファイルの一般的な「年齢」を指示することができる。例えば、ＨＷＳＣは、曲ファイルが最初にポータブルメディアプレーヤへダウンロードされたときを指示することができる。
【００５２】
ページに指定すべき特定のＨＷＳＣ値は、現在ＷＳＣ値をページのＨＷＳＣ値に等しくすることにより決定される。規範的なシナリオとして、新たな曲ファイルＡがページＸに記憶されると仮定する。現在ＷＳＣ、従って、ページＸには、ＷＳＣ＝２３及びＨＷＳＣ＝２３が指定される。ウェアレベリングプロセスの後に、ＷＳＣは、今度は、５０に等しくなる。このとき、別の新たな曲ファイルＢがページＹに記憶され、従って、ページＹにはＷＳＣ＝５０及びＨＷＳＣ＝５０が指定される（従って、新たなデータに指定されるＨＷＳＣ値は、逐次であるが、必ずしもインクリメント的ではない）。その後、現在ＷＳＣ値が８２になった時点で、曲ファイルＡに関連したデータがページＺへ移動される（例えば、データは、ウェアレベリング、ガーベージコレクション、等のために移動される）。ページＺは、新たなＷＳＣ＝８２が指定され、そして古いＨＷＳＣ＝２３を維持する。従って、曲ファイルＡに関連したデータがＮＶＭ内で再プログラミングされても、システムは、依然として、曲ファイルＡが曲ファイルＢより「古い」と決定する。というのは、ＨＷＳＣ値が低いからである。換言すれば、ＨＷＳＣは、例えば、ファイル又は他のデータが最初にＮＶＭにプログラムされるときの相対的な「タイムスタンプ」を意味する。
【００５３】
ある実施形態では、ＨＷＳＣは、ページのスタティック対ダイナミック状態を決定する上でＮＶＭシステムの助けとなる。ここに述べるように、「ダイナミックデータ」という語は、比較的頻繁に更新され、消去され及び再プログラミングされるデータを指す。例示として、ダイナミックデータは、天気予報プログラムに関連したデータを含み、そのようなデータは、現在の天気状態を反映するように頻繁に更新される。他方、ここに使用するように、「スタティックデータ」という語は、比較的長期間、一定のままで、変化しないデータを指す。例示として、スタティックデータは、ポータブルメディアプレーヤ装置に記憶された曲ファイル（例えば、．ｍｐ３ファイル）を含む。このようなデータは、一般的に、ＮＶＭ内でのその寿命全体にわたって不変のままである。同様に、「ダイナミックページ」及び「スタティックページ」という語は、各々、ダイナミックデータ及びスタティックデータを記憶するＮＶＭのページを指す。
【００５４】
特に、上述したように、ＨＷＳＣは、ページ内に記憶されたデータがどれほど古いかの一般的な考え方を与える。データが古いものであるとき、そのようなデータは、スタティックである見込みが高い（例えば、ダイナミックデータは、一般的に、それが消去されるまでに比較的短い期間しか存在せず、従って、「古い」年齢には到達しないからである）。以下に詳細に述べるように、そのようなスタティック対ダイナミックの決定は、ウェアレベリングやガーベージコレクションのような種々のＮＶＭシステム動作を遂行するのに有用である。
【００５５】
ページに記憶されたデータの一般的な年齢を決定するために、そのページの現在ＷＳＣ値とＨＷＳＣ値との間の差を計算することができる。この差が所定のスレッシュホールド値より大きい場合には、そのページに記憶されたデータは、スタティックとみなすことができる。その差がスレッシュホールド値未満である場合には、そのデータの状態は、例えば、ダイナミックデータ、最近記憶された新たなデータ、又は未知（例えば、それがダイナミックデータであるか又は単に最近記憶された新たなスタティックデータであるか分からないので）と考えられる。
【００５６】
ＨＷＳＣ値を使用するのに加えて又はそれに代わって、種々の他の技術を使用して、データのスタティック対ダイナミック状態を決定することができる。例えば、特定のデータセットの「ファイルサイズ」を検査することができる。あるケースでは、これは、特定のファイルを記憶するのに、どれほど多くのページが使用されるか決定することを含む。ファイルサイズが大きいほど、ファイルがスタティックである見込みが高い。例えば、ＮＶＭシステムは、１０ページより大きな（例えば、他の所定のファイルサイズより大きな）サイズを有するファイルは、スタティックであると決定する。別の例として、ＮＶＭシステムは、ファイルをＮＶＭへプログラムするのに、どれほど多くの時間が使用されたか決定する。ファイルをプログラムするのに使用された時間の量が大きいほど、そのようなファイルがスタティックである見込みが高い（例えば、大きなファイルは、プログラムするのに多くの時間量を要するからである）。更に別の例として、種々のシステム発見的情報を監視して、ファイルのプログラミング中のＮＶＭシステムの振舞いを決定することができる。このケースでは、ＮＶＭシステムが比較的多量の時間及び労力を費やしてファイルをプログラミングするときに、そのようなファイルがスタティックである見込みが高くなる（例えば、大きなファイルは、プログラミングするのに多量の時間及び労力を要するからである）。
【００５７】
図６は、ＮＶＭシステムのページのスタティック対ダイナミック状態を決定するためのプロセス６００を示す。このプロセスは、ステップ６０２でスタートする。ステップ６０４において、スレッシュホールド値を決定する。例えば、スレッシュホールド値は、ＮＶＭシステム内に以前に記憶された所定値である。ステップ６０６において、当該ページに関連したＨＷＳＣ値を決定する。例えば、ＨＷＳＣ値は、当該ページのメタデータから読み取ることができる。ステップ６０８において、ＷＳＣの現在値を決定する。次いで、ステップ６１０において、ＨＷＳＣ値と現在ＷＳＣ値との間の差を計算する。
【００５８】
ステップ６１２において、その差を、ステップ６０４で決定されたスレッシュホールド値と比較する。差がスレッシュホールド値より大きいのに応答して、プロセス６００は、ステップ６１４へ進み、当該ページをスタティックページとして識別する。換言すれば、当該ページの「年齢」が充分古いので、おそらく、このページは、スタティックページであると考えられる。
【００５９】
しかしながら、ステップ６１２において、差がスレッシュホールド以下であるのに応答して、プロセス６００は、ステップ６１６へ進む。ステップ６１６では、幾つかの結論の１つが得られる。例えば、当該ページが比較的若年であることから、プロセス６００は、このページがダイナミックページであると決定する。別の例として、プロセス６００は、当該ページが、最近記憶された新たなデータ（例えば、ダイナミックデータであってもなくてもよい）を単に含むかどうか決定する。更に別の例として、プロセス６００は、このページの状態が「未知」であると考える。換言すれば、当該ページがダイナミックページであるか、単に最近記憶されたスタティックページであるか分からない。
【００６０】
ある実施形態では、ステップ６１４又はステップ６１６へ進むのではなく、プロセス６００は、ステップ６１２において差をスレッシュホールドと比較した後、任意のステップ６１８、６２０、６２２及び６２４へ進む。このケースでは、ＨＷＳＣの検査のみに基づいてスタティック対ダイナミックの決定を行うのではなく、プロセス６００は、ステップ６１８、６２０、６２２及び／又は６２４における計算の１つ以上を一緒に使用して、スタティック対ダイナミックの決定を行う。
【００６１】
例えば、ステップ６１８において、当該ページに関連した全ファイルのサイズを決定する。あるケースでは、このステップは、全ファイルを記憶するのに使用されるページの数を識別することを含む。上述したように、大きなファイルサイズは、ファイルがスタティックであることを指示する。別の例として、ステップ６２０において、当該ページに関連した全ファイルを書き込むのに要求される時間を決定する。ステップ６１８と同様に、長い書き込み時間は、ファイルがスタティックであることを指示する。更に別の例として、ステップ６２２において、全ファイルに関連した種々のシステム発見的情報（例えば、全ファイルを書き込むのに使用される時間及び労力）を識別する。ステップ６２４において、スタティック対ダイナミックの決定を、ステップ６１２、６１８、６２０、及び６２２の１つ以上で決定された情報に基づいて行う。
【００６２】
ある実施形態において、図６のプロセス６００で示すようなスタティック対ダイナミックの決定は、ウェアレベリングやガーベージコレクションのような保守動作を遂行する上でＮＶＭシステムの助けとなる。ウェアレベリング中に、ユーザデータは、ＮＶＭの全てのブロックの均一な消耗を試み維持するためにＮＶＭにおいて移動される。例えば、スタティックデータは、高サイクルブロック（例えば、既に比較的多数回消去及びプログラムされたブロック）へ移動され、そしてダイナミックデータは、低サイクルブロック（例えば、比較的少数回しか消去及びプログラムされないブロック）へ移動される。典型的に、ウェアレベリングは、ある間隔で遂行され、例えば、ＮＶＭシステムがビジーでなく、従って、ウェアレベリング動作の付加的な処理要求により否定的に影響されないときに遂行される。システムは、ガーベージコレクションプロセスを使用して、プログラムされたブロックからの有効データを１つ以上の消去されたブロックへ移動することによりメモリを解放する。典型的に、ガーベージコレクションプロセスは、使用可能なメモリが少ないとき、又はメモリスペースを解放する必要が他にあるとき、トリガーされる。
【００６３】
ＨＷＳＣ値を使用して、ページごとのベースでスタティック対ダイナミック状態を決定できるので、ＨＷＳＣは、保守動作（ウェアレベリングやガーベージコレクションのような）によりページごとのベースでデータを検査及び分離できるようにもする。これは、ブロックごと又はスーパーブロックごとのベースでしかデータを分離又は検査しない他のシステムに勝る利益をもたらす。例示として、図７は、データが、ウェアレベリング動作（又は、例えば、ガーベージコレクション又は他の適当な動作）に対してページごとのベースで分離される規範的なＮＶＭシステム７００を示す。
【００６４】
図７に示すように、ＮＶＭシステム７００は、ページ０−５を有するブロック７１０を備えている。又、ＮＶＭシステム７００は、少なくとも１つの高サイクルブロック７２０及び少なくとも１つの低サイクルブロック７３０も備えている。例えば、高サイクルブロック７２０は、比較的多数の書き込み／消去サイクルを以前に受けたブロックであり、一方、低サイクルブロック７３０は、比較的少数の書き込み／消去サイクルしか受けていないブロックである。
【００６５】
適当なスタティック対ダイナミック決定プロセス（例えば、図６のプロセス６００）に基づいて、ブロック７１０の各ページは、個別に検査される。スタティックページとして識別されたページは、高サイクルブロック７２０へ再プログラミングされ、そしてダイナミックページとして識別されたページは、低サイクルブロック７３０へ再プログラミングされる。例えば、図７は、ページ０、１及び３がスタティックページとして識別され、従って、高サイクルブロック７２０へ再書き込みされることを示す。同様に、図７は、ページ２、４及び５がダイナミックページとして識別され、従って、低サイクルブロック７３０へ再書き込みされることを示す。ページごとのベースでデータを分離するこのようなシステムは、単にブロックごとのベースでデータを分離するシステムに勝る精度及び利益の向上を果たすことができる。
【００６６】
図８は、ページごとのベースでデータを分離するためのプロセス８００を示す。例えば、プロセス８００は、ウェアレベリング動作中、ガーベージコレクション動作中又はＮＶＭシステムの他の適当な動作中にデータを分離するのに使用される。
【００６７】
プロセス８００は、ステップ８０２において開始する。ステップ８０４において、ＮＶＭシステムのページを検査して、そのスタティック対ダイナミック状態を決定する。例えば、ページのＨＷＳＣ値を検査し、ページに関連したファイルのサイズを検査し、ページに関連したファイルを書き込むのに要する時間量を検査し、ページに関連した適当なシステム発見的情報を検査し、又はそれらを組み合わせることができる。ステップ８０６において、プロセス８００は、ページがスタティックであるかどうかを、ステップ８０４で得られた情報に基づいて決定する。例えば、ＨＷＳＣ値と現在ＷＳＣ値との間の差をスレッシュホールド値と比較する。この差がスレッシュホールド値より大きい場合には、ページをスタティックページとして識別する。
【００６８】
ステップ８０６においてページがスタティックとして識別されるのに応答して、プロセス８００は、ステップ８０８へ進む。ステップ８０８において、ページを高サイクルブロックへ移動する（例えば、プログラムする）。次いで、プロセス８００は、８１０において、ＮＶＭシステムの次のページへ進む。次いで、ステップ８０４、８０６、８０８及び８１０を連続的にループにして、スタティックページを探索し、それを適当な高サイクルブロックへ移動させる。
【００６９】
ある実施形態では、プロセス８００は、ステップ８０６でページがスタティックとして識別されないのに応答して任意のステップ８１２へ進む。このケースでは、ページを低サイクルブロックへ移動させる。例えば、任意のステップ８１２は、ページがダイナミックページとして識別される（又は、例えば、ページがダイナミックページの有望な候補である）シナリオで行われる。任意のステップ８１２は、例えば、データのスタティック対ダイナミック状態が未知であるケースでは除外される。例示として、これは、ＨＷＳＣとＷＳＣとの間の差がスレッシュホールドより小さく、且つデータがダイナミックであることを示すか、単に最近記憶された新たなスタティックデータであることを示すか分からないときに、生じる。
【００７０】
図５、６及び８のプロセス５００、６００及び８００は、システムの１つ以上のコンポーネント（例えば、図１の電子装置１００又は図２の電子装置２００）によって実行されることを理解されたい。例えば、プロセスの少なくとも幾つかのステップは、ＮＶＭインターフェイス（例えば、図１のＮＶＭインターフェイス１１８又はＮＶＭインターフェイス２１８）によって遂行される。当業者であれば、１つ以上のステップをコントロール回路（例えば、図１のＳｏＣコントロール回路１１２）によって遂行できることが明らかであろう。
【００７１】
更に、図５、６及び８のプロセス５００、６００及び８００は、単なる例示に過ぎないことを理解されたい。本発明の範囲から逸脱せずに、いずれのステップを除去、変更又は結合することもできるし、又、いずれの付加的なステップを追加することもできる。
【００７２】
本発明の以上に述べた実施形態は、例示のためのものであり、これに限定されるものではない。
【符号の説明】
【００７３】
１００：電子装置
１１０：システムオンチップ（ＳｏＣ）
１１２：ＳｏＣコントロール回路
１１４：メモリ
１１８：ＮＶＭインターフェイス
１２０：不揮発性メモリ（ＮＶＭ）
２００：電子装置
２１０：ファイルシステム
２１２：ＮＶＭドライバ
２１６：ＮＶＭバスコントローラ
２１８：ＮＶＭインターフェイス
２２０：ＮＶＭ
３００：ＮＶＭシステム
４００：ＮＶＭシステム
７００：ＮＶＭシステム
【図１】
0005696118.tif 000002
【図２】
0005696118.tif 000003
【図３】
0005696118.tif 000004
【図４】
0005696118.tif 000005
【図５】
0005696118.tif 000006
【図６】
0005696118.tif 000007
【図７】
0005696118.tif 000008
【図８】
0005696118.tif 000009