(57)【特許請求の範囲】
【請求項１】
データ利用性を決定するための方法において、
電子装置のコントロール回路を使用して、システムブートアップ中に不揮発性メモリ（ＮＶＭ）をスキャンして、ＮＶＭドライバを列挙する段階と、
前記コントロール回路を使用して、前記列挙されたＮＶＭドライバに基づきＮＶＭドライバマッピングを得る段階と、
前記コントロール回路を使用して、ファイルシステムをマウントする段階と、
前記コントロール回路を使用して、少なくとも１つの論理的ブロックアドレス（ＬＢＡ）範囲のデータ利用に関する要求を前記ファイルシステムから受信する段階と、
前記コントロール回路を使用して、前記少なくとも１つのＬＢＡ範囲の少なくとも一部分が利用不能であるかどうか前記ＮＶＭドライバマッピングに基づいて決定する段階と、  前記少なくとも１つのＬＢＡ範囲の少なくとも一部分が利用不能であるとの決定に応答して、前記コントロール回路を使用して、前記少なくとも１つのＬＢＡ範囲の少なくとも一部分が利用不能であることを示す情報を前記ファイルシステムに送信する段階と、
前記コントロール回路を使用して、システムブートアップ中に、前記少なくとも１つのＬＢＡ範囲の少なくとも一部分に関連したデータを回復させるための回復プロセスを開始する段階と、
を備えた方法。
【請求項２】
前記ＮＶＭドライバマッピングは、ビットマップ、マッピングテーブル及び範囲リストの少なくとも１つである、請求項１に記載の方法。
【請求項３】
前記スキャンする段階は、更に、
ＮＶＭに記憶されたコンテクスト情報であって、論理的−物理的マッピングを含むコンテクスト情報を読み取る段階、及び
前記論理的−物理的マッピングを揮発性メモリにロードする段階、
を含む請求項１又は２に記載の方法。
【請求項４】
前記コントロール回路を使用して、前記コンテクスト情報で捕えられなかった論理的−物理的マッピングで少なくとも１つのブロックを識別する段階と、
前記コントロール回路を使用して、前記少なくとも１つのブロックのブロックテーブル・オブ・コンテント（ＴＯＣ）をスキャニングして、揮発性メモリにおける論理的−物理的マッピングを更新する段階と、
を更に備えた請求項３に記載の方法。
【請求項５】
前記コントロール回路を使用して、前記更新された論理的−物理的マッピングに基づき前記ＮＶＭドライバマッピングを得る段階を更に備えた、請求項４に記載の方法。
【請求項６】
前記ＮＶＭは、複数のブロックを含む、請求項１又は２に記載の方法。
【請求項７】
前記複数のブロックの各ブロックに対し、前記コントロール回路を使用して、前記ブロックのブロックＴＯＣをスキャニングして、フラグの状態を決定する段階であって、そのフラグの状態は、ブロックに記憶された対応するデータが修正可能であるかどうか示すものである段階と、
前記コントロール回路を使用して、前記フラグの状態に基づき前記ＮＶＭドライバマッピングを更新する段階と、
を更に備えた請求項６に記載の方法。
【請求項８】
前記コントロール回路を使用して、コールバックファンクションをコールすることにより前記ファイルシステムへ前記情報を送信する段階を更に備えた、請求項１又は２に記載の方法。
【請求項９】
前記コントロール回路を使用して、前記少なくとも１つのＬＢＡをリストに追加する段階と、
前記コントロール回路を使用して、前記リストを前記ファイルシステムへ送信する段階と、
を更に備えた請求項１又は２に記載の方法。
【請求項１０】
不揮発性メモリ（ＮＶＭ）と、
ＮＶＭドライバマッピングを維持するように働くメモリインターフェイスと、
ファイルシステムと、
を備え、前記ファイルシステムは、
システムブートアップ中にファイルシステム割り当て状態を決定し、
前記ファイルシステム割り当て状態における各利用可能な論理的ブロックアドレス（ＬＢＡ）範囲に対して、アプリケーションプログラミングインターフェイス（ＡＰＩ）コマンドをメモリインターフェイスへ送信して、ＮＶＭドライバマッピングが一致状態を有するかどうか決定し、
少なくとも１つのＬＢＡ範囲が不一致状態を有することを指示する情報を前記メモリインターフェイスから受信し、そして
システムブートアップ中に前記少なくとも１つのＬＢＡ範囲に関連したデータを回復するためのポリシーを呼び出す、
ように動作し、前記データを回復するためのポリシーは、前記少なくとも１つのＬＢＡ範囲に関連したファイル経路に基づくものである、システム。
【請求項１１】
前記ファイルシステムは、前記ファイルシステム割り当て状態を、ビットマップ、マッピングテーブル及び範囲リストの少なくとも１つとして記憶するように動作する、請求項１０に記載のシステム。
【請求項１２】
前記ファイルシステムは、
前記少なくとも１つのＬＢＡ範囲に関連したデータが一時的なデータであることを決定し、そして
前記データを回復することを停止する、
ように動作する請求項１０に記載のシステム。
【請求項１３】
前記ファイルシステムは、
前記少なくとも１つのＬＢＡ範囲に関連したデータが、前記ファイルシステムに関連した内部データであることを決定し、
前記内部データを使用して前記データを回復し、そして
前記回復されたデータを再マウントする、
ように動作する請求項１０に記載のシステム。
【請求項１４】
前記ファイルシステムは、前記少なくとも１つのＬＢＡ範囲に関連したデータがアプリケーション発生データであることを決定し、
そのデータを回復するために特定のアプリケーションに関連したポリシーを呼び出し、  前記回復されたデータを再マウントする、
ように動作する請求項１０に記載のシステム。
【請求項１５】
装置ブートアップ中にデータ利用の調停を遂行するように動作するメモリインターフェイスにおいて、
揮発性メモリに記憶されたデータ構造体から論理的ブロックアドレス（ＬＢＡ）の利用状態を得、
電子装置のブートアップ中にＬＢＡのデータ利用性についてのファイルシステムの見解を、前記データ構造体から得たＬＢＡの利用状態で調停し、そして
前記ファイルシステムの見解とＬＢＡの利用状態との間の不一致を前記ファイルシステムへ通信して、前記ファイルシステムが電子装置のブートアップ中に前記不一致を取り扱いできるようにする、
ように動作するコントロール回路を備えたメモリインターフェイス。
【請求項１６】
前記データ構造体は、前記揮発性メモリに記憶されるツリーである、請求項１５に記載のメモリインターフェイス。
【請求項１７】
前記コントロール回路は、前記ツリーがＮＶＭに対するアンマップポインタを含むかどうか検出するように働く、請求項１６に記載のメモリインターフェイス。
【請求項１８】
前記コントロール回路は、前記ツリーがＮＶＭに対する修正不能なポインタを含むかどうか検出するように働く、請求項１６に記載のメモリインターフェイス。
【請求項１９】
前記コントロール回路は、
論理的ブロックアドレス（ＬＢＡ）範囲のデータ利用に関する要求を前記ファイルシステムから受信し、そして
前記ＬＢＡ範囲の少なくとも一部分が利用不能であるかどうか前記ＬＢＡの利用状態に基づいて決定する、
ように動作する請求項１５又は１６に記載のメモリインターフェイス。
【請求項２０】
前記コントロール回路は、
前記ＬＢＡ範囲の少なくとも一部分が利用不能であると決定し、そして
前記ＬＢＡ範囲の少なくとも一部分が利用不能であることを示す情報を前記ファイルシステムへ送信する、
ように動作する請求項１９に記載のメモリインターフェイス。
【請求項２１】
前記コントロール回路は、前記ＬＢＡ範囲の少なくとも一部分がアンマップ及び修正不能の少なくとも一方であると決定するように動作する、請求項１９に記載のメモリインターフェイス。
【請求項２２】
データ利用性を決定するためのシステムにおいて、
システムブートアップ中に不揮発性メモリ（ＮＶＭ）をスキャンして、ＮＶＭドライバを列挙する手段と、
前記列挙されたＮＶＭドライバに基づきＮＶＭドライバマッピングを得る手段と、
ファイルシステムをマウントする手段と、
少なくとも１つの論理的ブロックアドレス（ＬＢＡ）範囲のデータ利用に関する要求を前記ファイルシステムから受信する手段と、
前記少なくとも１つのＬＢＡ範囲の少なくとも一部分が利用不能であるかどうか前記ＮＶＭドライバマッピングに基づいて決定する手段と、
前記少なくとも１つのＬＢＡ範囲の少なくとも一部分が利用不能であると決定する前記手段に応答して、前記少なくとも１つのＬＢＡ範囲の少なくとも一部分が利用不能であることを示す情報を前記ファイルシステムに送信する手段と、
システムブートアップ中に前記少なくとも１つのＬＢＡ範囲の少なくとも一部分に関連したデータを回復させるための回復プロセスを開始する手段と、
を備えたシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ利用についてのマウント時間の調停に関する。
【背景技術】
【０００２】
ＮＡＮＤフラッシュメモリ及び他の形式の不揮発性メモリ（ＮＶＭ）は、一般的に、大量記憶に使用される。例えば、ポータブルメディアプレーヤのような消費者向け電子装置は、しばしば、音楽、ビデオ及び他のメディアを記憶するためにフラッシュメモリを備えている。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
システムは、異なる形式のファイルをＮＶＭに記憶することができる。システムがエラーを経験するときには、ＮＶＭに記憶されたファイルのファイルシステム見解と、ＮＶＭに記憶された実際のファイルとの間に食い違いが生じる。最終的に、ファイルシステムが特定のファイルにアクセスする必要があるときには、システムは、ファイルが崩壊しているか、又はＮＶＭに存在しないか発見する。これは、次いで、外部ソースからのファイルの回復を試みるようにファイルシステムをトリガーする。システムオペレーション中の食い違いの発見及びその後の回復は、ユーザの経験に対して混乱を引き起こす。
【課題を解決するための手段】
【０００４】
データ利用についてマウント時間を調停するためのシステム及び方法が開示される。システムブートアップ中に、不揮発性メモリ（ＮＶＭ）ドライバが列挙され、ＮＶＭドライバマッピングが得られる。ＮＶＭドライバマッピングは、ＮＶＭにおけるＬＢＡの実際の利用性を含む。次いで、ファイルシステムがマウントされ、ファイルシステム割り当て状態が発生される。ファイルシステム割り当て状態は、ＬＢＡの利用についてのファイルシステムの見解を指示することができる。その後、データ利用の調停を行うことができる。即ち、ファイルシステム割り当て状態及びＮＶＭドライバマッピングをオーバーレイして互いに比較し、食い違いを露出させることができる。
【０００５】
本発明の前記及び他の態様及び効果は、全体にわたって同じ参照文字で同じ部分を示した添付図面を参照して以下の詳細な説明を考慮したときに明らかとなるであろう。
【図面の簡単な説明】
【０００６】
【図１】本発明の種々の実施形態により構成された電子装置のブロック図である。
【図２】本発明の種々の実施形態により構成された電子装置のブロック図である。
【図３】本発明の種々の実施形態によりシステムブートアップ中にデータ利用の調停のためのプロセスを例示するフローチャートである。
【図４】本発明の種々の実施形態によりファイルシステム及び不揮発性メモリドライバの観点から利用状態のマッピングを例示するグラフ的な図である。
【図５】本発明の種々の実施形態によりデータを回復するプロセスを例示するフローチャートである。
【図６】本発明の種々の実施形態によりデータ利用性を決定するプロセスを例示するフローチャートである。
【図７】本発明の種々の実施形態により論理的−物理的マッピングを与えるのに使用されるツリーを例示するブロック図である。
【図８】本発明の種々の実施形態により修正不能なデータを取り扱うプロセスを例示するフローチャートである。
【発明を実施するための形態】
【０００７】
データ利用についてマウント時間を調停するためのシステム及び方法が提供される。システムブートアップ中に、不揮発性メモリ（ＮＶＭ）ドライバを列挙し、ＮＶＭドライバマッピングを得ることができる。ＮＶＭドライバマッピングは、ＮＶＭにおけるＬＢＡの実際の利用性を含む。
【０００８】
次いで、ファイルシステムをマウントする。マウントプロセス中に、ファイルシステム割り当て状態を発生することができ、これは、ＬＢＡの利用のファイルシステムの見解を指示することができる。その後、データ利用の調停を行うことができる。即ち、ファイルシステム割り当て状態及びＮＶＭドライバマッピングをオーバーレイして互いに比較し、食い違いを露出させることができる。
【０００９】
特に、ファイルシステム割り当て状態における利用可能なＬＢＡ範囲ごとに、ファイルシステムは、システムのＮＶＭインターフェイスへコマンドを送信することができる。コマンドを受け取ると、ＮＶＭインターフェイスは、ＮＶＭドライバマッピングが一致状態を有するかどうか決定することができる。
【００１０】
ＮＶＭドライバマッピングが不一致であると（例えば、ＬＢＡ範囲の少なくとも一部分が利用不能であると）ＮＶＭインターフェイスが決定すると、ＮＶＭインターフェイスは、この不一致を示す情報をファイルシステムへ送信する。ここでは、ＬＢＡ範囲が修正不能であるか又はアンマップされたと分かった場合に、ＬＢＡ範囲が「利用不能」であるとする。この情報を受け取ると、ファイルシステムは、ＬＢＡ範囲の少なくとも一部分に関連したデータを回復するためのポリシーを呼び出す。
【００１１】
図１は、電子装置１００のブロック図である。ある実施形態において、電子装置１００は、ポータブルメディアプレーヤ、セルラー電話、ポケットサイズパーソナルコンピュータ、パーソナルデジタルアシスタント（ＰＤＡ）、デスクトップコンピュータ、ラップトップコンピュータ、及び他の適当な形式の電子装置であるか、又はそれらを含む。
【００１２】
電子装置１００は、システムオンチップ（ＳｏＣ）１１０及び不揮発性メモリ（ＮＶＭ）１２０を備えている。不揮発性メモリ１２０は、フローティングゲート又は電荷トラップ技術に基づくＮＡＮＤフラッシュメモリ、ＮＯＲフラッシュメモリ、消去可能なプログラマブルリードオンリメモリ（ＥＰＲＯＭ）、電気的に消去可能なプログラマブルリードオンリメモリ（ＥＥＰＲＯＭ）、強誘電体ＲＡＭ（ＦＲＡＭ）、磁気抵抗性ＲＡＭ（ＭＲＡＭ）、又はその組み合わせを含む。
【００１３】
ＮＶＭ１２０は、消去可能な最小単位である「ブロック」へと編成され、そして更に、プログラム又は読み取り可能な最小単位である「ページ」へと編成される。ある実施形態では、ＮＶＭ１２０は、複数の集積回路を含み、各集積回路は複数のブロックを有する。対応する集積回路からのメモリ位置（例えば、ブロック又はブロックのページ）で「スーパーブロック」が形成される。ＮＶＭ１２０の各メモリ位置（例えば、ページ又はブロック）は、物理的アドレス（例えば、物理的ページアドレス又は物理的ブロックアドレス）を使用して参照される。
【００１４】
ある実施形態では、ＮＶＭ１２０の１つ以上の指定ブロックは、コンテクスト情報を記憶することができる。ここで使用する「コンテクスト情報」とは、特定の時点における全ＮＶＭの状態に関連した情報を指す。例えば、コンテクスト情報は、特定の時点におけるＮＶＭ１２０のブロックに対する論理的−物理的マッピングを含む。ここで使用する「論理的−物理的マッピング」とは、１つ以上の論理的アドレス（例えば、論理的セクタ）とデータページの物理的ページアドレスとの間のマッピングである。
【００１５】
ある実施形態において、ＮＶＭ１２０の１つ以上のブロックは、ブロックのテーブル・オブ・コンテンツ（ＴＯＣ）を含む。各ブロックＴＯＣは、ブロックのページを、それに対応する論理的アドレスへマップする情報を含む。ある実施形態では、ブロックＴＯＣは、ブロックにプログラムされるページごとに論理的アドレス（例えば、論理的ブロックアドレス（ＬＢＡ）又は論理的ページ番号）のみを含む。他の実施形態では、ブロックＴＯＣは、ページに対してなされる更新の相対的年齢（例えば、あるページが他のページに対して更新されたとき）も含む。そのような実施形態では、ブロックＴＯＣは、プログラムされるページごとに論理的アドレス年齢対を含む。
【００１６】
システムオンチップ１１０は、ＳｏＣコントロール回路１１２、メモリ１１４、及びＮＶＭインターフェイス１１８を備えている。ＳｏＣコントロール回路１１２は、ＳｏＣ１１０の一般的なオペレーション及びファンクション、並びにＳｏＣ１１０又は装置１００の他のコンポーネントをコントロールすることができる。例えば、アプリケーション又はオペレーティングシステムのユーザ入力及び／又はインストラクションに応答して、ＳｏＣコントロール回路１１２は、ＮＶＭ１２０からデータを得るか又はそこにデータを記憶するためにＮＶＭインターフェイス１１８へ読み取り又は書き込み要求を発行することができる。明瞭化のために、ＳｏＣコントロール回路１１２が記憶又は検索のために要求するデータは、ユーザ又はユーザアプリケーションに直接的に関連していないが、「ユーザデータ」と称される。むしろ、ユーザデータは、（例えば、アプリケーション又はオペレーティングシステムを経て）ＳｏＣコントロール回路１１２により発生され又は得られたデジタル情報の適当なシーケンスである。
【００１７】
ＳｏＣコントロール回路１１２は、ハードウェア、ソフトウェア、及びファームウェアの組み合わせ、並びに電子装置１００のファンクションを駆動するように動作するコンポーネント、回路又はロジックを含む。例えば、ＳｏＣコントロール回路１１２は、ＮＶＭ１２０又はメモリ１１４に記憶されるソフトウェア／ファームウェアのコントロールの下で動作する１つ以上のプロセッサを含むことができる。
【００１８】
メモリ１１４は、適当な形式の揮発性メモリ、例えば、ランダムアクセスメモリ（ＲＡＭ）（例えば、スタティックＲＡＭ（ＳＲＡＭ）、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、同期ダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）、倍データレート（ＤＤＲ）ＲＡＭ）；キャッシュメモリ；リードオンリメモリ（ＲＯＭ）；又はその組み合わせを含む。メモリ１１４は、不揮発性メモリ１２０へプログラミングし又はそこから読み取りするためにユーザデータを一時的に記憶できるデータソースを含む。ある実施形態では、メモリ１１４は、ＳｏＣコントロール回路１１２の一部分として実施されるプロセッサのためのメインメモリとして働く。
【００１９】
メモリ１１４は、論理的−物理的マッピングを記憶するための１つ以上のデータ構造体を含む。例えば、メモリ１１４は、ＬＢＡ範囲と、ＮＶＭ１２０の対応する物理的アドレスとの間のマッピングを与えるツリーを含むことができる。ツリーは、図６及び７を参照して詳細に説明する。
【００２０】
ＮＶＭインターフェイス１１８は、ＳｏＣコントロール回路１１２とＮＶＭ１２０との間のインターフェイス又はドライバとして働くように構成されたハードウェア、ソフトウェア及び／又はファームウェアの適当な組み合わせを含む。ＮＶＭインターフェイス１１８に含まれたソフトウェアモジュールの場合に、対応するプログラムコードは、ＮＶＭ１２０又はメモリ１１４に記憶される。
【００２１】
ＮＶＭインターフェイス１１８は、ＳｏＣコントロール回路１１２がＮＶＭ１２０にアクセスしそしてＮＶＭ１２０のメモリ位置（例えば、ページ、ブロック、スーパーブロック、集積回路）及びそこに記憶されたデータ（例えば、ユーザデータ）を管理できるようにする種々のファンクションを遂行することができる。例えば、ＮＶＭインターフェイス１１８は、ＳｏＣコントロール回路１１２からの読み取り又は書き込み要求を解釈し、ウェアレベリングを遂行し、そしてＮＶＭ１２０のバスコントロールに適合する読み取り及びプログラムインストラクションを発生することができる。
【００２２】
ＮＶＭインターフェイス１１８及びＳｏＣコントロール回路１１２は、個別モジュールとして示されているが、これは、本発明の実施形態の説明を簡単にするために過ぎない。これらのモジュールは、ハードウェアコンポーネント、ソフトウェアコンポーネント又はその両方を共有できることを理解されたい。例えば、ＳｏＣコントロール回路１１２は、ＮＶＭインターフェイス１１８のためのソフトウェアベースのメモリドライバを実行することができる。
【００２３】
ある実施形態において、電子装置１００は、ＮＶＭ１２０、及びＮＶＭインターフェイス１１８の全部分又はある部分（例えば、以下に述べる変換層）を含むフラッシュメモリドライブ又はセキュアデジタル（ＳＤ）カードのようなターゲット装置を含む。これらの実施形態において、ＳｏＣ１１０又はＳｏＣコントロール回路１１２は、ターゲット装置のためのホストコントローラとして働く。例えば、ホストコントローラとして、ＳｏＣ１１０は、読み取り及び書き込み要求をターゲット装置へ発行する。
【００２４】
図２は、種々の実施形態による電子装置１００（図１）のファームウェア、ソフトウェア、及び／又はハードウェアコンポーネントの幾つかを詳細に示す、電子装置２００のブロック図である。電子装置２００は、図１を参照して上述した特徴及びファンクションのいずれを有してもよく、及びその逆のことも言える。図示されたように、破線は、層の境界を定めるものである。どのコンポーネントが境界線内に入るかの説明は、単なる例示に過ぎず、１つ以上のコンポーネントを異なる層に関連させてもよいことを理解されたい。
【００２５】
電子装置２００は、ファイルシステム２１０、ＮＶＭドライバ２１２、ＮＶＭバスコントローラ２１６、及びＮＶＭ２２０を備えている。ある実施形態では、ファイルシステム２１０及びＮＶＭドライバ２１２は、ソフトウェア又はファームウェアモジュールであり、そしてＮＶＭバスコントローラ２１６及びＮＶＭ２２０は、ハードウェアモジュールである。従って、これらの実施形態では、ＮＶＭドライバ２１２は、ＮＶＭインターフェイス２１８のソフトウェア又はファームウェア態様を表わし、そしてＮＶＭバスコントローラ２１６は、ＮＶＭインターフェイス２１８のハードウェア態様を表わす。
【００２６】
ファイルシステム２１０は、ファイルアロケーションテーブル（ＦＡＴ）ファイルシステム又はハイアラーキーファイルシステムプラス（ＨＦＳ＋）のような適当な形式のファイルシステムを含み、そして電子装置２００のオペレーティングシステムの一部分（例えば、図１のＳｏＣコントロール回路１１２の一部分）でよい。ある実施形態では、ファイルシステム２１０は、ページの論理的−物理的マッピングを与えるフラッシュファイルシステムを含む。これらの実施形態では、ファイルシステム２１０は、以下に述べるＮＶＭドライバ２１２のファンクションの幾つか又は全部を遂行し、それ故、ファイルシステム２１０及びＮＶＭドライバ２１２は、個別のモジュールであってもなくてもよい。
【００２７】
ファイルシステム２１０は、アプリケーション及びオペレーティングシステムのためのファイル及びフォルダ構造を管理する。ファイルシステム２１０は、電子装置２００で実行されるアプリケーション又はオペレーティングシステムのコントロールの下で動作し、そして情報をＮＶＭ２２０から読み取るか又はそこに記憶することをアプリケーション又はオペレーティングシステムが要求するときに書き込み及び読み取り要求をＮＶＭドライバ２１２に与える。各読み取り又は書き込み要求と共に、ファイルシステム２１０は、ユーザデータを読み取り又は書き込むべき場所を指示するための論理的アドレス、例えば、ページオフセットを伴う論理的ページアドレス又はＬＢＡを与える。
【００２８】
ファイルシステム２１０は、ＮＶＭ２２０に直接適合しない読み取り及び書き込み要求をＮＶＭドライバ２１２に与える。例えば、論理的アドレスは、ハードドライブベースシステムの典型である慣習又はプロトコルを使用する。ハードドライブベースシステムは、フラッシュメモリとは異なり、ブロック消去を最初に遂行せずにメモリ位置にオーバーライトすることができる。更に、ハードドライブは、装置の寿命を延ばすためにウェアレベリングを必要としない。それ故、ＮＶＭインターフェイス２１８は、ファイルシステム要求を取り扱うためにメモリ特有、ベンダー特有又はその両方であるファンクションを遂行すると共に、ＮＶＭ２２０に適した仕方で他の管理ファンクションを遂行することができる。
【００２９】
ＮＶＭドライバ２１２は、変換層２１４を含む。ある実施形態では、変換層２１４は、フラッシュ変換層（ＦＴＬ）であるか又はそれを含む。書き込みコマンドの際に、変換層２１４は、与えられた論理的アドレスを、ＮＶＭ２２０上の消去された空き物理的位置へマッピングする。読み取りコマンドの際に、変換層２１４は、与えられた論理的アドレスを使用して、要求されたデータが記憶される物理的アドレスを決定する。各ＮＶＭは、ＮＶＭのサイズ又はベンダーに基づいて異なるレイアウトを有するので、このマッピングオペレーションは、メモリ及び／又はベンダー特有のものである。変換層２１４は、論理的−物理的アドレスマッピングに加えて、他の適当なファンクションを遂行する。例えば、変換層２１４は、フラッシュ変換層について典型的である他のファンクションのいずれか、例えば、ガーベージコレクション（ＧＣ）及びウェアレベリングを遂行する。
【００３０】
例えば、変換層２１４は、ＮＶＭ２２０のプログラムされたブロックを解放して消去するためにガーベージコレクションを遂行する。解放して消去すると、そのメモリ位置を使用して、例えば、ファイルシステム２１０から受け取られた新たなユーザデータを記憶することができる。あるケースでは、ＧＣプロセスは、プログラムされたブロックから、消去されたメモリ位置をもつ別のブロックへ有効データをコピーして、プログラムされたブロックにおける有効データを無効化することを含む。プログラムされたブロックにおける全てのメモリ位置が無効化されると、変換層２１４は、バスコントローラ２１６に、プログラムされたブロックにおける消去オペレーションを遂行するよう指令する。ここで使用する「有効データ」とは、１つ以上の論理的アドレス（例えば、ＬＢＡ）に対応する最も最近の書き込み要求に応答してプログラムされたユーザデータを指し、それ故、１つ以上の論理的アドレスに対するユーザデータの有効バージョンである。
【００３１】
ＮＶＭドライバ２１２は、ＮＶＭアクセスコマンド（例えば、プログラム、読み取り、及び消去コマンド）を完了するためにＮＶＭバスコントローラ２１６とインターフェイスする。バスコントローラ２１６は、ＮＶＭ２２０へのハードウェアインターフェイスとして働き、そしてＮＶＭ２２０のバスプロトコル、データレート及び他の仕様を使用して、ＮＶＭ２２０と通信する。
【００３２】
ＮＶＭインターフェイス２１８は、ここで「メタデータ」とも称されるメモリ管理データに基づいてＮＶＭ２２０を管理する。メタデータは、ＮＶＭドライバ２１２により発生されるか、又はＮＶＭドライバ２１２のコントロールの下で動作するモジュールにより発生される。例えば、メタデータは、論理的アドレスと物理的アドレスとの間のマッピングを管理するのに使用される情報、不良ブロックの管理、ウェアレベリング、データエラーを検出又は修正するのに使用されるエラー修正コード（ＥＣＣ）データ、或いはその組み合わせを含む。メタデータは、ファイルシステム２１０により与えられるデータを、論理的アドレスのようなユーザデータと共に含む。従って、一般的に、「メタデータ」とは、ユーザデータに関する又は関連した情報を指すか、或いは不揮発性メモリのオペレーション及びメモリ位置を管理するために一般的に使用されるものである。
【００３３】
ＮＶＭインターフェイス２１８は、ＮＶＭ２２０にメタデータを記憶するように構成される。ある実施形態では、ＮＶＭインターフェイス２１８は、ユーザデータに関連したメタデータを、ユーザデータが記憶された同じメモリ位置（例えば、ページ）に記憶する。例えば、ＮＶＭインターフェイス２１８は、ユーザデータ、それに関連した論理的アドレス、及びユーザデータのためのＥＣＣデータを、ＮＶＭ２２０の１つ以上のメモリ位置に記憶する。又、ＮＶＭインターフェイス２１８は、ユーザデータに関する他の形式のメタデータも、同じメモリ位置に記憶する。
【００３４】
ＮＶＭインターフェイス２１８は、ＮＶＭ２２０のパワーアップ時又はＮＶＭ２２０のオペレーション中に、その位置にどんなデータがあるか電子装置２００が決定できるように論理的アドレスを記憶する。特に、ファイルシステム２１０は、ユーザデータを、その物理的アドレスではなく、その論理的アドレスに基づいて参照するので、ＮＶＭインターフェイス２１８は、ユーザデータ及び論理的アドレスを一緒に記憶してその関連性を維持することができる。このようにして、論理的−物理的マッピングを維持するＮＶＭ２２０のインデックステーブルが古くなっても、ＮＶＭインターフェイス２１８は、例えば、電子装置２００のパワーアップ時又は再ブート時に適切なマッピングを依然として決定することができる。
【００３５】
従来、システムがシステムオペレーション中にエラー（例えば、回復不能なＮＶＭエラー、ファイルシステムエラー、又は一般的システムエラー）を経験するとき、ＮＶＭに記憶されたファイルのファイルシステムの見解と、ＮＶＭに記憶された実際のファイルとの間に食い違いが生じる。例えば、汚れた再ブート中に、ファイルシステムは、ファイルに対してＬＢＡを既に割り当てている（例えば、ファイルがダウンロードされたことを反映するためにメタデータが更新されている）が、ファイルは、ＮＶＭへまだプログラムされていない。
【００３６】
そのような状況において、ファイルシステムは、１つ以上のＬＢＡが利用できる（例えば、１つ以上のＬＢＡが、ＮＶＭに記憶された修正可能なユーザデータに関連している）が、実際には１つ以上のＬＢＡが利用不能であると仮定する。ここで使用する「利用不能なＬＢＡ」とは、割り当てられない／アンマップのＬＢＡ（例えば、ＮＶＭに記憶されたユーザデータに関連していないＬＢＡ）、又は修正不能と分かっている（例えば、ＬＢＡに関連したユーザデータのエラー修正コードが機能しない）ＬＢＡを指す。その後、ファイルシステムが１つ以上のＬＢＡにアクセスする必要があるとき、システムは、関連ユーザデータが欠落又は崩壊したことを発見する。次いで、ファイルシステムは、１つ以上のＬＢＡに関連したユーザデータを回復するよう試みる。しかしながら、このプロセスは、ユーザの経験に否定的な影響を及ぼす。
【００３７】
ある実施形態では、ユーザが食い違いをインターセプトするのを待機するのではなく、システムは、システムオペレーション中に完全なＮＶＭスキャンを開始することができる。ＬＢＡの利用についてのファイルシステムの見解をＮＶＭスキャンの結果と比較することで、システムは、食い違いを検出することができる。これは、時間のかかるプロセスであり、システムが動作している間に問題を引き起こす。というのは、システムは、アプリケーション要求に完全に応答することが必要だからである。
【００３８】
従って、これらの性能問題を回避するため、システムは、早期に、特に、システムブートアップ中に、調停プロセスを開始することができる。これは、システム性能への影響を最小にして調停を実行できるようにする。特に、ファイルシステムは、ブートアップ中にはアプリケーションからの読み取り及び書き込み要求に応答する必要がまだないので、システムは、調停プロセスを実行するに充分な時間がある。それ故、システムが完全に動作する前に利用可能なＬＢＡのベースラインを確立することができ、そしてシステムが良好と分かった状態に到達するまでシステムアクセスをオフに保つことができる。更に、調停プロセスは、揮発性メモリに記憶された小さなデータ構造を取り扱うだけであるから、調停プロセスは、ＮＶＭの完全な読み取りパスを行うプロセスに比して著しく高速で行うことができる。
【００３９】
図３を参照すれば、システムブートアップ中にデータ利用の調停を行うプロセス３００が示されている。プロセス３００は、ステップ３０２で開始し、そしてステップ３０４において、ＮＶＭドライバ（例えば、図２のＮＶＭドライバ２１２）が列挙される。特に、列挙中に、揮発性メモリ（例えば、図１のメモリ１１４）に記憶されるＮＶＭドライバマッピングを得ることができる。ＮＶＭドライバマッピングは、ＮＶＭにおけるＬＢＡの実際の利用性を含む。
【００４０】
ＮＶＭドライバの列挙は、ＮＶＭ（例えば、図１のＮＶＭ１２０又は図２のＮＶＭ２２０）をスキャニングすることにより遂行される。例えば、ＮＶＭインターフェイス（例えば、図１のＮＭＶインターフェイス１１８又は図２のＮＶＭインターフェイス２１８）は、ＮＶＭに記憶されたコンテクスト情報を読み取ることができ、このコンテクスト情報は、論理的−物理的マッピングを含む。ＮＶＭインターフェイスは、次いで、論理的−物理的マッピングを揮発性メモリへロードする。あるケースでは、ＮＶＭインターフェイスは、コンテクスト情報により捕えられていない論理的−物理的マッピングで１つ以上のブロックを識別することができる（例えば、最近更新されていないブロック）。その結果、ＮＶＭインターフェイスは、１つ以上のブロックのブロックＴＯＣをスキャンして、揮発性メモリにおける論理的−物理的マッピングを更新することができる。
【００４１】
ある実施形態では、更新された論理的−物理的マッピングは、例えば、ツリー又はマッピングテーブルのような適当なデータ構造で記憶される。ＮＶＭドライバ列挙の結果（例えば、更新された論理的−物理的マッピング）に基づいて、ＮＶＭインターフェイスは、ＮＶＭにおけるＬＢＡの利用性を指示するＮＶＭドライバマッピングを得る。ツリー及びＮＶＭドライバマッピングは、図６及び７を参照して詳細に説明する。
【００４２】
他の実施形態では、ＮＶＭインターフェイスは、ＮＶＭを直接スキャニングすることにより（例えば、ＮＶＭに記憶された１つ以上のフラグの状態を検査することにより）ＮＶＭドライバマッピングを得る。このプロセスは、図８を参照してより詳細に説明する。
【００４３】
ＮＶＭドライバマッピングは、適当な形態をとることができる。例えば、図４を参照すれば、ファイルシステム及びＮＶＭドライバの観点から利用状態のマッピングが例示されている。特に、ＮＶＭドライバマッピング４０２は、ＮＶＭインターフェイス（例えば、図１のＮＶＭインターフェイス１１８又は図２のＮＶＭインターフェイス２１８）により決定されたＬＢＡ範囲１−５の利用性を示している。図示されたように、利用可能なＬＢＡ（例えば、ＮＶＭに記憶された修正可能なユーザデータに関連したＬＢＡ）は、水平線で指示され、一方、利用不能なＬＢＡ（例えば、アンマップされた又は修正不能なＬＢＡ）は、ブランクスペースで指示されている。当業者であれば、ＮＶＭドライバマッピング４０２は、適当な数のＬＢＡ（例えば、システムの全てのＬＢＡ）の利用性を与えることが明らかであろう。簡単化のために、ＮＶＭドライバマッピングのサブセットだけが図４に示されている。
【００４４】
ＮＶＭドライバマッピング４０２は、例えば、ビットマップ、マッピングテーブル、又は範囲リストのような適当なデータ構造として揮発性メモリ（例えば、図１のメモリ１１４）に記憶される。ある実施形態では、ＮＶＭドライバマッピング４０２の各エントリは、単一ビットに対応する。即ち、ビットマップの各エントリは、バイナリ値（例えば、０又は１）を記憶し、各バイナリ値は、関連ＬＢＡの利用状態（例えば、利用可能又は利用不能）に対応する。或いは又、ビットマップの各エントリは、複数のビットに対応し、従って、関連ＬＢＡの利用状態に関する付加的な情報（例えば、ＬＢＡが利用可能であるか、利用不能・アンマップであるか、又は利用不能・修正不能であるか）を記憶してもよい。ＮＶＭドライバマッピング４０２は、ＬＢＡの利用性を記憶するだけでよく、ＬＢＡの実際の物理的位置は記憶しないので、ＮＶＭドライバマッピング４０２は、揮発性メモリにおいて比較的僅かなスペースを占有するだけである。
【００４５】
図３に戻ると、ステップ３０６において、ファイルシステム（例えば、図２のファイルシステム２１０）をマウントする。マウントプロセス中に、ファイルシステムの割り当て状態をファイルシステムジャーナルから発生する。ファイルシステムの割り当て状態は、ＬＢＡの利用についてのファイルシステムの見解を指示する。例えば、図４を再び参照すれば、ファイルシステム割り当て状態４０４は、ＬＢＡ範囲１−５の利用についてのファイルシステムの見解を表わす。ＮＶＭドライバマッピング４０２と同様に、ファイルシステム割り当て状態４０４は、例えば、ビットマップ、マッピングテーブル、又は範囲リストのような適当なデータ構造として記憶される。更に、ファイルシステム割り当て状態４０４の各エントリは、１つ以上のビットに対応する。
【００４６】
図３のステップ３０８へ続いて、ブート時間アンマッピングを遂行する。特に、ファイルシステムは、現在アンマップされているＬＢＡのリストをＮＶＭドライバに与える。次いで、プロセス３００は、ステップ３１０へ進む。
【００４７】
ステップ３１０において、データ利用の調停が行われる。特に、ファイルシステムとＮＶＭインターフェイスとの間に新たな通信経路を確立することができ、ファイルシステム割り当て状態及びＮＶＭドライバマッピングをオーバーレイしそして互いに比較して食い違いを露出させることができる。ファイルシステム割り当て状態及びＮＶＭドライバマッピングは、揮発性メモリに記憶される比較的小さなデータ構造体であるから、比較プロセスは、比較的高速である。
【００４８】
理想的なシナリオでは、ファイルシステム割り当て状態及びＮＶＭドライバマッピングが同一でなければならない。しかしながら、ファイルシステム割り当て状態とＮＶＭドライバマッピングとの間の食い違いは、１つ以上のＬＢＡが利用可能であるが、実際にはＬＢＡがＮＶＭにおいて利用不能であるとファイルシステムが仮定する状況を指示する。これらの食い違いに基づき、ファイルシステムは、１つ以上の利用不能なＬＢＡに関連したデータを回復するための回復プロセスを開始することができる。
【００４９】
図５を参照すれば、データを回復するためのプロセス５００が例示されている。プロセス５００は、ステップ５０２で開始し、そしてステップ５０４において、ファイルシステム（例えば、図２のファイルシステム２１０）は、システムブートアップ中に、ファイルシステム割り当て状態（例えば、図４のファイルシステム割り当て状態４０４）を決定する。
【００５０】
次いで、ステップ５０６において、ファイルシステム割り当て状態における利用可能なＬＢＡ範囲ごとに、ファイルシステムは、ＮＶＭインターフェイス（例えば、図１のＮＶＭインターフェイス１１８又は図２のＮＶＭインターフェイス２１８）へコマンドを送信して、ＮＶＭドライバマッピング（例えば、図４のＮＶＭドライバマッピング４０２）が一致状態を有するかどうか決定する。あるケースでは、コマンドは、アプリケーションプログラミングインターフェイス（ＡＰＩ）コマンドの形態である。ＡＰＩは、ソフトウェアプログラム又はモジュールが他のソフトウェアと相互作用できるようにする適当なインターフェイスである。
【００５１】
従って、ファイルシステムがファイルシステム割り当て状態において割り当てられると仮定する各ＬＢＡ範囲（例えば、図４のＬＢＡ範囲１−５）に対して、ファイルシステムは、ＡＰＩコマンドを送信する。ある実施形態では、送信されるＡＰＩコマンドは、次のフォーマットを有する。
ＩｓＡｌｌＶａｌｉｄ（ＬＢＡ、ＬＢＡ＿ｅｎｄ、ｃａｌｌｂａｃｋ）      （１）
但し、ＬＢＡは、ＬＢＡ範囲の開始ＬＢＡに対応し、ＬＢＡ＿ｅｎｄは、ＬＢＡ範囲の終了ＬＢＡに対応し、そしてｃａｌｌｂａｃｋは、コールバックファンクションに対応する。コールバックファンクションは、ＮＶＭインターフェイスがファイルシステムと通信できるようにするファンクションである。
【００５２】
他の実施形態では、送信されるＡＰＩコマンドは、次のフォーマットを有する。
ＩｓＡｌｌＶａｌｉｄ（ＬＢＡ、ＬＢＡ＿ｅｎｄ、ｌｉｓｔ［］）          （２）
但し、ＬＢＡは、ＬＢＡ範囲の開始ＬＢＡに対応し、ＬＢＡ＿ｅｎｄは、ＬＢＡ範囲の終了ＬＢＡに対応し、そしてｌｉｓｔ［］は、アイテムが追加されるリストに対応する。当業者に明らかなように、ファイルシステムから送信されるコマンドは適当なフォーマットを有することができる。又、当業者に明らかなように、コマンドにおいて単一ＬＢＡ範囲を通過させるのではなく、ファイルシステムは、単一のコマンドにおいてＬＢＡ範囲のリストを通過させることができる。
【００５３】
ステップ５０８へと続いて、ファイルシステムは、１つ以上のＬＢＡ範囲が不一致状態を有することを指示する情報をＮＶＭインターフェイスから受け取る。即ち、ＮＶＭドライバマッピングとの比較に基づき、ＮＶＭインターフェイスは、１つ以上のＬＢＡ範囲の少なくとも一部分が利用不能である（例えば、アンマップされるか又は修正不能である）と決定する。
【００５４】
次いで、ステップ５１０において、ファイルシステムは、１つ以上のＬＢＡ範囲に関連したデータ（例えば、ユーザデータ）を回復するためのポリシーを呼び出す。特定のＬＢＡ範囲に対して呼び出されるポリシーは、ＬＢＡ範囲に関連したファイル経路に基づく。例えば、ＬＢＡ範囲に関連したデータが一時的なデータである（例えば、データが削除され、そして装置がブートアップされるたびに再生成される）場合には、ファイルシステムは、データの回復を停止することができる。他方、ＬＢＡ範囲に関連したデータが、ファイルシステムに関連した内部データである場合には、ファイルシステムは、その内部データを使用して、データを回復することができる。更に別の例として、ＬＢＡ範囲に関連したデータがアプリケーション発生データである場合には、ファイルシステムは、対応するアプリケーションに関連したポリシーを呼び出して、外部又はバックアップソースからデータを回復する（例えば、外部ソースへ回復コマンドを発行し、アプリケーションバックアップを要求し、又はユーザが装置をコンピュータへ差し込むのを要求する）ことができる。データを回復すると、ファイルシステムは、データを再マウントすることができる。次いで、プロセス５００は、ステップ５１２で終了となる。
【００５５】
図６を参照すれば、データ利用性を決定するためのプロセス６００が示されている。プロセス６００は、ステップ６０２で開始し、そしてステップ６０４において、ＮＶＭインターフェイス（例えば、図１のＮＶＭインターフェイス１１８又は図２のＮＶＭインターフェイス２１８）は、電子装置がブートアップすることを検出する。
【００５６】
ステップ６０６へと続いて、ＮＶＭインターフェイスは、揮発性メモリ（例えば、図１のメモリ１１４）に記憶されたデータ構造体（例えば、ツリー）からＬＢＡの利用状態を得る。
【００５７】
例えば、図７を参照すれば、ツリー７００は、ＬＢＡの利用状態を得るためにＮＶＭインターフェイスによって使用される。ツリー７００は、複数のノードを含み、各ノードは、メモリ割り当ての目的で一致したサイズにされる（例えば、各ノードは、６４バイトの固定サイズを有する）。簡単化のために、ツリー７００は、少数のノードを含むように示されている。従って、ツリー７００の破線ボックスは、詳細に示されないツリー７００の他のノードを示している。
【００５８】
更に、ツリー７００の各ノードは、１つ以上のエントリを含む。例えば、図７に示すように、ノード７０２は、２つのエントリ（例えば、エントリ７０４及び７０６）を含む。ノードの各エントリは、多数のフィールドに関連している。例えば、ツリー７００の各エントリは、ＬＢＡ範囲７１２（例えば、ラン長さエンコーディング圧縮（ｒｌｅ圧縮）範囲）及びページアドレス７１４に関連している。更に、ツリー７００の各エントリは、特定のトークン値を伴うポインタフィールド７１６を含む。当業者に明らかなように、ツリー７００のエントリ７０４−７１０の各々は、図７に示さない付加的なフィールドを含むことができる。しかしながら、簡単化のために、ツリー７００の各エントリに対して３つのフィールドしか示されていない。
【００５９】
ある実施形態では、エントリの各ポインタフィールドは、ノードポインタ、ＮＶＭポインタ、ＮＶＭアンマップポインタ、又はＮＶＭ修正不能ポインタに対応する値を有する。例えば、ツリー７００のエントリ７０８は、ノードポインタ７２０（例えば、別のノード７３０に対するポインタ）を含むように示されている。別の例として、エントリ７０６は、ＮＶＭの物理的アドレスに対応するＮＶＭポインタ７２２を含むように示されている。
【００６０】
更に別の例として、エントリ７０４は、ＮＶＭに対するポインタであるＮＶＭアンマップポインタ７２４を含む。しかしながら、ＮＶＭアンマップポインタ７２４は、関連エントリ７０４がアンマップスペースに対応することも指示する。更に別の例として、エントリ７１０は、これもＮＶＭに対するポインタであるＮＶＭ修正不能ポインタ７２６を含むように示されている。ＮＶＭ修正不能ポインタ７２６は、その関連エントリ７１０が修正不能スペースに対応することを指示する。
【００６１】
ある実施形態では、ポインタは、ガーベージコレクション（ＧＣ）プロセスの間にツリー７００において更新される。例えば、変換層（例えば、図２の変換層２１４）がＮＶＭのプログラムされたブロックにおいてＧＣを遂行する間に、変換層は、ブロックの有効データを読み取る際に、データが修正不能であることを発見する。変換層は、その後、データを破棄し、そしてツリー７００の関連ポインタをＮＶＭ修正不能ポインタへ更新する。
【００６２】
ツリー７００のポインタに対して異なるトークン値を維持することにより、ツリー７００は、ＬＢＡの割り当て状態（例えば、マップ／アンマップ）及び修正不能状態に関する情報を保持することができる。その結果、ツリー７００のポインタに対して異なるトークン値を検出することで、ＮＶＭインターフェイスは、ＮＶＭドライバマッピング（例えば、図４のＮＶＭドライバマッピング４０２）を得ることができる。特に、ＮＶＭポインタに関連したＬＢＡは、利用可能なＬＢＡと考えられ、一方、ＮＶＭアンマップポインタ及びＮＶＭ修正不能ポインタに関連したＬＢＡは、利用不能なＬＢＡと考えられる。
【００６３】
図６に戻ると、ステップ６０８において、ＮＶＭインターフェイスは、ＬＢＡ範囲のデータ利用性に関してファイルシステム（例えば、図２のファイルシステム２１０）から要求を受け取る。プロセス５００（図５）に関連して上述したように、この要求は、ＡＰＩコマンドの形態をとる。
【００６４】
次いで、ステップ６１０において、ＮＶＭインターフェイスは、ＬＢＡの利用状態に基づいて（例えば、図４のＮＶＭドライバマッピング４０２のようなＮＶＭドライバマッピングとの比較に基づいて）、ＬＢＡ範囲の少なくとも一部分が利用不能（例えば、アンマップ又は修正不能）であるかどうか決定する。ステップ６１０において、ＬＢＡ範囲の少なくとも一部分が利用可能であるとＮＶＭインターフェイスが決定すると、プロセス６００は、ステップ６１２において終了となる。
【００６５】
一方、ステップ６１０において、ＬＢＡ範囲の少なくとも一部分が利用不能であるとＮＶＭインターフェイスが決定すると、プロセス６００は、ステップ６１４へ進む。例えば、図４のＬＢＡ範囲４のデータ利用性に関するファイルシステムからの要求に応答して、ＮＶＭインターフェイスは、ＮＶＭドライバマッピング４０２におけるＬＢＡ範囲４の一部分が利用不能（例えば、ＬＢＡ範囲４ａとＬＢＡ範囲４ｂとの間の部分）であると決定する。
【００６６】
次いで、ステップ６１４において、ＮＶＭインターフェイスは、ＬＢＡ範囲の少なくとも一部分が利用不能であることを示す情報をファイルシステムに送信する。ＮＶＭインターフェイスは、この利用性について適当な形態でファイルシステムに通知する。ある実施形態において、ＮＶＭインターフェイスは、コールバックファンクションをコールする（例えば、コールバックファンクションは、ファイルシステムにより発行されるオリジナルＡＰＩコマンドにより与えられる）。あるケースでは、コールバックファンクションは、ＬＢＡ範囲の利用不能な部分が検出されるたびにコールされる。或いは又、コールバックファンクションは、ＬＢＡ範囲において検出される利用不能な部分の数に関わらず、一度だけコールされてもよい。
【００６７】
他の実施形態では、ＮＶＭインターフェイスは、少なくとも１つのＬＢＡ範囲を、ＡＰＩコマンドに関連したリストに追加する（例えば、リストは、ファイルシステムによって発行されるオリジナルＡＰＩコマンドに関連してもよい）。ＮＶＭインターフェイスは、その後、リストをファイルシステムに送信する。あるケースでは、ＮＶＭインターフェイスは、全ての利用不能なＬＢＡが発見されてリストに追加された後、リストを送信する。或いは又、ＮＶＭインターフェイスは、ＬＢＡ範囲がリストに追加されるや否や、リストを送信してもよい。
【００６８】
ＮＶＭインターフェイスは、ＬＢＡの利用不能性に関して一般的又は特定の情報をファイルシステムに送信する。例えば、ＮＶＭインターフェイスは、ＬＢＡ範囲の利用不能性に関する一般的な情報を与える。或いは又、ＮＶＭインターフェイスは、ＬＢＡ範囲のどの部分が利用不能であるかに関する特定の情報を与える。情報を送信した後に、プロセス６００は、ステップ６１２において、終了となる。
【００６９】
従って、ＬＢＡのデータ利用についてのファイルシステムの見解を、システムブートアップ中にデータ構造から得られるＬＢＡの利用状態と調停することにより、ＮＶＭインターフェイスは、不一致をファイルシステムに早期に通信することができる。これは、システムが完全に動作状態になるまで待機するのではなく、ファイルシステムがシステムブートアップ中に不一致を取り扱うことができるようにする。
【００７０】
ある実施形態では、ツリーを使用して、ＬＢＡの利用性（例えば、特定のＬＢＡが修正不能であるかどうか）に関する情報を得るのではなく、ＮＶＭインターフェイスは、ＮＶＭを直接スキャニングすることにより（例えば、ＮＶＭに記憶された１つ以上のフラグの状態を検査することにより）、ＮＶＭドライバマッピングを得る。例えば、ＬＢＡの修正不能な状態は、ＮＶＭに直接意思される。
【００７１】
図８を参照すれば、修正不能なデータを取り扱うためのプロセス８００が示されている。プロセス８００は、ステップ８０２で開始し、そしてステップ８０４において、ＮＶＭインターフェイス（例えば、図１のＮＶＭインターフェイス１１８又は図２のＮＶＭインターフェイス２１８）は、ＮＶＭ（例えば、図１のＮＶＭ１２０又は図２のＮＶＭ２２０）の第１ブロックのガーベージコレクションを必要とすると決定する。
【００７２】
次いで、ステップ８０６において、ＮＶＭインターフェイスは、第１ブロックに記憶された有効データの少なくとも一部分が修正不能であることを検出する。次いで、プロセス８００は、ステップ８０８へ進む。
【００７３】
ステップ８０８において、ＮＶＭインターフェイスは、有効データをトークン化し又はＮＶＭの第２ブロックへ移動させる。例えば、ある実施形態では、ＮＶＭインターフェイスは、有効データを第２ブロックへ移動させる。他の実施形態では、ＮＶＭインターフェイスは、修正不能なデータをトークン化する。即ち、ＮＶＭインターフェイスは、有効データの少なくとも一部分の修正不能な状態を、論理的−物理的マッピングシステムにおいてトークン値として指定する。
【００７４】
ステップ８１０へと続くと、ＮＶＭインターフェイスは、ＮＶＭにトークン値を記憶するか、或いは有効データの少なくとも一部分が修正不能であることを示すように１つ以上のページ及び／又は第２ブロックのブロックＴＯＣに１つ以上のフラグをセットする。次いで、プロセス８００は、ステップ８１２において終了となる。
【００７５】
従って、１つ以上のＬＢＡの修正不能な状態をＮＶＭに直接維持することにより、ＮＶＭインターフェイスは、揮発性メモリのデータ構造（例えば、ツリー）をこの情報で更新する必要がなくなる。ＮＶＭインターフェイスは、それがＮＶＭドライバマッピングを得る必要があるときに、ＮＶＭのブロックごとにブロックＴＯＣをスキャンする。ブロックＴＯＣをスキャニングすることにより、ＮＶＭインターフェイスは、ブロックに記憶された対応データ（例えば、ユーザデータ）が修正可能であるかどうか示す１つ以上のフラグの状態を決定する。この情報は、ＮＶＭドライバマッピングを更新するためにＮＶＭインターフェイスによって使用される。
【００７６】
他の実施形態では、システムブートアップ中に調停プロセスを遂行するのではなく、ランタイム中に調停プロセスを遂行することができ、そして調停プロセスをシステム入力／出力要求（例えば、読み取り及び書き込みコマンド）と散在させることができる。即ち、ファイルシステムがマウントされそしてブート時間アンマップが完了した後に、システムは、データ利用の調停を遂行せずにランタイムへ進むことができる。あるケースでは、ランタイム中に、システムは、まだ調停されていないあるＬＢＡ範囲に対して読み取りコマンドをホールドオフすることができる。次いで、特定事象の発生時に（例えば、ＮＶＭドライバが最初にアイドル状態になったとき、ＮＶＭドライバが修正不能なデータを発見したとき、及び／又はガーベージコレクション中に）、データ利用の調停を行うことができる。
【００７７】
図３、５、６及び８のプロセス３００、５００、６００及び８００は、システムの１つ以上のコンポーネント（例えば、図２の電子装置１００、又は図２の電子装置２００）により実行できることを理解されたい。例えば、プロセスにおける少なくとも幾つかのステップは、コントロール回路（例えば、図１のＳｏＣコントロール回路１１２）により遂行することができる。
【００７８】
又、図３、５、６及び８のプロセス３００、５００、６００及び８００は、単なる例示に過ぎないことも理解されたい。本発明の範囲から逸脱せずに、いずれかのステップを除去、変更又は組み合わせしてもよいし、付加的なステップを追加してもよい。
【００７９】
本発明の上述した実施形態は、例示に過ぎず、それに限定されるものではない。
【符号の説明】
【００８０】
１００：電子装置
１１０：システムオンチップ（ＳｏＣ）
１１２：ＳｏＣコントロール回路
１１４：メモリ
１１８：ＮＶＭインターフェイス
１２０：不揮発性メモリ（ＮＶＭ）
２００：電子回路
２１０：ファイルシステム
２１２：ＮＶＭドライバ
２１４：変換層
２１６：ＮＶＭバスコントローラ
２１８：ＮＶＭインターフェイス
２２０：ＮＶＭ
４０２：ファイルシステム割り当て状態
４０４：ＮＶＭドライバマッピング
【図１】
0005636034.tif 000002
【図２】
0005636034.tif 000003
【図３】
0005636034.tif 000004
【図４】
0005636034.tif 000005
【図５】
0005636034.tif 000006
【図６】
0005636034.tif 000007
【図７】
0005636034.tif 000008
【図８】
0005636034.tif 000009