(57)【特許請求の範囲】
【請求項１】
装置欠陥から回復する方法において、
非正常シャットダウン事象が生じたことを検出する段階と、
不揮発性メモリ（ＮＶＭ）の複数のインデックスページを、その複数のインデックスページの年齢についてスキャニングする段階であって、前記複数のインデックスページは前記ＮＶＭに記憶されたものであり、前記複数のインデックスページをスキャニングすることは、前記ＮＶＭのすべてのデータブロックをスキャニングすることを回避しうる、段階と、
前記複数のインデックスページの年齢を、前記複数のインデックスページに対応するＮＶＭのデータページの年齢と比較する段階と、
前記複数のインデックスページのうちの各インデックスページの信頼性を前記比較に少なくとも一部分基づいて決定する段階と、
そのインデックスページの決定された信頼性に基づいて論理的−物理的マッピングを再構成するためにインデックスページを選択的に使用する段階と、
を備えた方法。
【請求項２】
前記複数のインデックスページのうちの各インデックスページは、少なくとも１つの論理的アドレスを前記データページの少なくとも１つの物理的アドレスへとマップする、請求項１に記載の方法。
【請求項３】
前記比較段階は、
前記複数のインデックスページのうちの各インデックスページに対し、前記インデックスページの年齢がそれに対応するデータページの複数の年齢より老いているかどうか決定し、
前記インデックスページの年齢がそれに対応するデータページの複数の年齢より老いていないとの決定に応答して、前記インデックスページが信頼できるものであると決定する、
ことを含む請求項１に記載の方法。
【請求項４】
前記インデックスページの年齢がそれに対応するデータページの複数の年齢より老いているとの決定に応答して、前記インデックスページが信頼できるものでないと決定する、請求項３に記載の方法。
【請求項５】
データページの年齢がインデックスページの年齢より若いＮＶＭの少なくとも１つのデータブロックをスキャニングする段階を更に備えた、請求項４に記載の方法。
【請求項６】
少なくとも１つのデータブロックが、前記インデックスページに関連した少なくとも１つのデータページを含むことを決定する段階と、
前記少なくとも１つのデータページの年齢が前記インデックスページの年齢より若いかどうか決定する段階と、
前記少なくとも１つのデータページの年齢が前記インデックスページの年齢より若いという決定に応答して、前記インデックスページを揮発性メモリのキャッシュへコピーする段階と、
を更に備えた請求項５に記載の方法。
【請求項７】
前記少なくとも１つのデータブロックを使用して前記キャッシュの少なくとも１つのエントリを更新する段階を更に備えた、請求項６に記載の方法。
【請求項８】
前記更新段階は、前記少なくとも１つのデータブロックを使用して前記インデックスページの論理的アドレスに対応する論理的−物理的マッピングを再構成することを含む、請求項７に記載の方法。
【請求項９】
前記再構成は、更に、前記ＮＶＭの少なくとも１つのデータブロックに記憶されたメタデータをスキャニングすることを含む、請求項８に記載の方法。
【請求項１０】
前記ＮＶＭをスキャニングすることは、更に、前記少なくとも１つのデータブロックのコンテンツのブロックテーブルを読み取ることを含む、請求項８に記載の方法。
【請求項１１】
不揮発性メモリ（ＮＶＭ）にアクセスするためのメモリインターフェイスにおいて、
非正常シャットダウン事象が生じたことを検出し、
非正常シャットダウン事象の前にＮＶＭに記憶されたコンテクスト情報をサーチし、このコンテクスト情報は、ＮＶＭのブロックに記憶され、前記コンテクスト情報は、特定の時間におけるＮＶＭの複数のデータブロックの各々に対する論理的−物理的マッピングを含み、
前記コンテクスト情報における論理的−物理的マッピングを揮発性メモリに記憶されたルックアップテーブルへロードし、
前記ロードされたコンテクスト情報の前記特定の時間より若い年齢でＮＶＭの少なくとも１つのデータブロックを識別し、
前記少なくとも１つの識別されたデータブロックの完全回復を、前記少なくとも一つの識別されたデータブロックの論理的−物理的マッピングを取得することで、遂行する、
ように働くコントロール回路を備えたメモリインターフェイス。
【請求項１２】
前記コントロール回路は、前記揮発性メモリに記憶されたキャッシュへ前記コンテクスト情報をロードするように動作する、請求項１１に記載のメモリインターフェイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性メモリを有するシステムのための非正常シャットダウンの取り扱いに関する。
【背景技術】
【０００２】
ＮＡＮＤフラッシュメモリ、及び他の形式の不揮発性メモリ（ＮＶＭ）は、大量記憶のために一般的に使用されている。例えば、ポータブルメディアプレーヤのような消費者向け電子装置は、多くの場合、音楽、ビデオ及び他のメディアを記憶するためにフラッシュメモリを備えている。
【０００３】
ＮＶＭは、論理的アドレスと物理的アドレスとの間のマッピングを与えるために複数のインデックスページを含むことができる。あるケースでは、より迅速な読み出しを行うために、最も新しく書かれたユーザデータに対応するマッピング情報が装置の揮発性メモリに記憶される。情報の長期記憶をなすため、周期的に、このマッピング情報を揮発性メモリからＮＶＭのインデックスページへどっと流出することができる。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ＮＶＭを有する電子装置が正常にシャットダウンするときには、インデックスページに記憶された情報を直接使用して、揮発性メモリにおける論理的−物理的マッピングを再構成することができる。しかしながら、電子装置が非正常にシャットダウンするときには、インデックスページの少なくとも若干が古いものとなることがある。というのは、装置が最も新しいマッピング情報をインデックスページへ完全に流出しないことがあるためである。その結果、装置は、揮発性メモリにおける論理的−物理的マッピングを再構成するために全ＮＶＭをスキャンすることが必要になる。このプロセスは、時間的観点からコストがかかる。
【課題を解決するための手段】
【０００５】
不揮発性メモリを有するシステムのための非正常シャットダウンを取り扱うためのシステム及び方法が開示される。ある実施形態では、このシステムは、非正常シャットダウンの後に論理的−物理的マッピングをより効率的に再構成するためにインデックスページから得た情報をレバレッジすることができる。ここで使用する「インデックスページ」とは、ファイルシステムにより使用される論理的アドレスとデータページの物理的アドレスとの間のマッピングを記憶するＮＶＭのページ（例えば、ユーザデータを記憶するＮＶＭのページ）である。
【０００６】
他の実施形態では、このシステムは、これもＮＶＭに記憶されたコンテクスト情報からレバレッジすることにより論理的−物理的マッピングを再構成することができる。ここで使用する「コンテスト情報」とは、特定の時点で全ＮＶＭの状態に関連した情報を指す。更に別の実施形態では、コンテクスト情報は、非正常シャットダウンの後に論理的−物理的マッピングを再構成するためにインデックスページに関連して使用することができる。
【０００７】
本発明の前記及び他の態様及び効果は、全体にわたって同じ部分が同じ参照文字で示された添付図面を参照してなされた以下の詳細な説明を考慮したときに明らかとなろう。
【図面の簡単な説明】
【０００８】
【図１】本発明の種々の実施形態により構成された電子装置のブロック図である。
【図２】本発明の種々の実施形態により構成された電子装置のブロック図である。
【図３】本発明の種々の実施形態によるメモリマッピングアーキテクチャーを例示するブロック図である。
【図４】本発明の種々の実施形態により非正常シャットダウン事象を取り扱うためのプロセスを例示するフローチャートである。
【図５】本発明の種々の実施形態によりインデックスページの年齢をデータページの年齢と比較するためのプロセスを例示するフローチャートである。
【図６】本発明の種々の実施形態により非正常シャットダウン事象を取り扱うための別のプロセスを例示するフローチャートである。
【図７】本発明の種々の実施形態により非正常シャットダウン事象を取り扱うための更に別のプロセスを例示するフローチャートである。
【発明を実施するための形態】
【０００９】
不揮発性メモリを有するシステムの非正常シャットダウンを取り扱うシステム及び方法が提供される。より詳細には、システムのＮＶＭインターフェイスは、非正常シャットダウンの後に論理的−物理的マッピングをより効率的に再構成するためにインデックスページから得た情報をレバレッジすることができる。ここで使用する「インデックスページ」とは、ファイルシステムにより使用される論理的アドレスとデータページの物理的アドレスとの間のマッピングを記憶するＮＶＭのページ（例えば、ユーザデータを記憶するＮＶＭのページ）である。
【００１０】
例えば、ＮＶＭインターフェイスは、インデックスページをスキャンすることにより再構成を行ってインデックスページの年齢を得ることができる。次いで、ＮＶＭインターフェイスは、インデックスページの年齢を、それに対応するデータページの年齢と比較し、そして特定のインデックスページがそれに対応するデータページより若年（例えば、よりフレッシュ）であるか老年であるか決定する。ＮＶＭインターフェイスは、インデックスページの年齢がそれに対応するデータページの年齢より老年であると決定した場合には、インデックスページに信頼性がない（例えば、データページが更新されて以来、インデックスページが更新されていない）と決定する。その結果、ＮＶＭインターフェイスは、より若年のデータブロックをスキャンして、論理的−物理的マッピングを再構成することができる。
【００１１】
対照的に、そうではなくて、インデックスページの年齢がそれに対応するデータページの年齢より老年でないと決定すると、ＮＶＭインターフェイスは、インデックスページに信頼性がある（例えば、データページと同時に又はその後にインデックスページが更新されている）と決定することができる。その結果、ＮＶＭインターフェイスは、インデックスページに記憶されたマッピングを使用して、揮発性メモリにおけるマッピングを再構成することができる。
【００１２】
ある実施形態では、システムは、ＮＶＭに記憶されたコンテクスト情報からレバレッジすることによって論理的−物理的マッピングを再構成することができる。ここで使用する「コンテクスト情報」とは、特定の時点で全ＮＶＭの状態に関連した情報を指す。更に別の実施形態では、コンテクスト情報は、非正常シャットダウン後に論理的−物理的マッピングを再構成するためにインデックスページに関連して使用することができる。
【００１３】
図１は、電子装置１００のブロック図である。ある実施形態において、電子装置１００は、ポータブルメディアプレーヤ、セルラー電話、ポケットサイズのパーソナルコンピュータ、パーソナルデジタルアシスタント（ＰＤＡ）、デスクトップコンピュータ、ラップトップコンピュータ、及び他の適当な形式の電子装置であり、又はそれを含むことができる。
【００１４】
電子装置１００は、システムオンチップ（ＳｏＣ）１１０及び不揮発性メモリ（ＮＶＭ）１２０を備えている。不揮発性メモリ１２０は、フローティングゲート又はチャージトラップ技術に基づくＮＡＮＤフラッシュメモリ、ＮＯＲフラッシュメモリ、消去可能なプログラマブルリードオンリメモリ（ＥＰＲＯＭ）、電気的に消去可能なプログラマブルリードオンリメモリ（ＥＥＰＲＯＭ）、強誘電性ＲＡＭ（ＦＲＡＭ（登録商標））、磁気抵抗性ＲＡＭ（ＭＲＡＭ）、又はその組み合わせを含む。
【００１５】
ＮＶＭ１２０は、消去可能な最小単位である「ブロック」へと編成され、更に、プログラム又は読み取りできる最小単位である「ページ」へと編成される。ある実施形態では、ＮＶＭ１２０は、複数のブロックを各々有する複数の集積回路を含むことができる。対応する集積回路からのメモリ位置（例えば、ブロック、又はブロックのページ）は、「スーパーブロック」を形成する。ＮＶＭ１２０の各メモリ位置（例えば、ページ又はブロック）は、物理的アドレス（例えば、物理的ページアドレス又は物理的ブロックアドレス）を使用して参照することができる。
【００１６】
ＮＶＭ１２０の１つ以上のページは、ＳｏＣ１１０又は装置１００のコンポーネントの一般的動作に関連したデータを記憶するのに使用できるデータページである。更に、ＮＶＭ１２０の１つ以上のページは、インデックステーブルを記憶するのに使用できる。論理的セクターが物理的ページに直接マップされる実施形態では、論理的−物理的マッピングをインデックステーブルに記憶することができる。ここに使用する「論理的−物理的マッピング」とは、１つ以上の論理的アドレス（例えば、論理的セクター）とデータページの物理的ページアドレスとの間のマッピングである。例えば、インデックステーブルは、ＮＶＭ１２０のデータページの物理的アドレスを保持することができる。
【００１７】
あるケースでは、インデックステーブルが複数のインデックスページを含み、各インデックスページは、論理的アドレスをデータページの１つ以上の物理的アドレスへとマップすることができる。インデックステーブル及びインデックスページは、図３を参照して詳細に説明する。
【００１８】
システムオンチップ１１０は、ＳｏＣコントロール回路１１２、メモリ１１４、及びＮＶＭインターフェイス１１８を含む。ＳｏＣコントロール回路１１２は、ＳｏＣ１１０の一般的動作及び機能、並びにＳｏＣ１１０の他のコンポーネント又は装置１００をコントロールすることができる。例えば、ユーザ入力、及び／又はアプリケーション又はオペレーティングシステムのインストラクションに応答して、ＳｏＣコントロール回路１１２は、読み取り又は書き込みコマンドをＮＶＭインターフェイス１１８へ発行して、ＮＶＭ１２０からデータを得又はそこにデータを記憶することができる。明瞭化のために、ＳｏＣコントロール回路１１２が記憶又は検索のために要求するデータは、たとえそれがユーザ又はユーザアプリケーションに直接関連していなくても、「ユーザデータ」と称される。むしろ、ユーザデータは、（例えば、アプリケーション又はオペレーティングシステムを経て）ＳｏＣコントロール回路１１２によって発生され又は得られる適当なシーケンスのデジタル情報である。
【００１９】
ＳｏＣコントロール回路１１２は、電子装置１００の機能を駆動するように働くハードウェア、ソフトウェア及びファームウェア、並びにコンポーネント、回路又はロジックの任意の組み合わせを含む。例えば、ＳｏＣコントロール回路１１２は、ＮＶＭ１２０又はメモリ１１４に記憶されたソフトウェア／ファームウェアのコントロールものとで動作する１つ以上のプロセッサを含む。
【００２０】
メモリ１１４は、適当な形式の揮発性メモリ、例えば、ランダムアクセスメモリ（ＲＡＭ）（例えば、スタティックＲＡＭ（ＳＲＡＭ）、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、同期ダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）、倍データレート（ＤＤＲ）ＲＡＭ）、キャッシュメモリ、リードオンリメモリ（ＲＯＭ）、又はその組み合わせを含む。メモリ１１４は、不揮発性メモリ１２０へプログラムされるか又はそこから読み取られるユーザデータを一時的に記憶することのできるデータソースを含む。ある実施形態では、メモリ１１４は、ＳｏＣコントロール回路１１２の一部分として実施されるプロセッサのためのメインメモリとして働く。
【００２１】
メモリ１１４は、ルックアップテーブル及び／又はインデックステーブルキャッシュを含む。ルックアップテーブルは、ＮＶＭ１２０に記憶されたインデックステーブルの位置（例えば、物理的アドレス）を保持する。インデックステーブルは、より迅速な読み出しを行うために最近書き込まれた論理的アドレス（例えば、論理的セクター）の物理的アドレスを保持する。周期的なベースで、インデックステーブルキャッシュに記憶された情報は、インデックステーブルキャッシュからＮＶＭ１２０のインデックスページへどっと流出される。
【００２２】
ある実施形態において、インデックステーブルキャッシュのサイズは、インデックスページのサイズの小さな部分である。インデックステーブルキャッシュではなくインデックスページにマッピング情報の大半を記憶することにより、メモリ１１４においてより多くのスペースを他の目的のために解放することができる。ルックアップテーブル及びインデックステーブルキャッシュは、図３を参照して詳細に述べる。
【００２３】
ＮＶＭインターフェイス１１８は、ＳｏＣコントロール回路１１２とＮＶＭ１２０との間のインターフェイス又はドライバとして働くように構成されたハードウェア、ソフトウェア及び／又はファームウェアの適当な組み合わせを含む。ＮＶＭインターフェイス１１８に含まれるソフトウェアモジュールとしては、それに対応するプログラムコードがＮＶＭ１２０又はメモリ１１４に記憶される。
【００２４】
ＮＶＭインターフェイス１１８は、ＳｏＣコントロール回路１１２がＮＶＭ１２０にアクセスしそしてＮＶＭ１２０のメモリ位置（例えば、ページ、ブロック、スーパーブロック、集積回路）及びそこに記憶されたデータ（例えば、ユーザデータ）を管理できるようにする種々の機能を遂行する。例えば、ＮＶＭインターフェイス１１８は、ＳｏＣコントロール回路１１２からの読み取り又は書き込み要求を解釈し、ウェアレベリングを遂行し、そしてＮＶＭ１２０のバスプロトコルに適合する読み取り及びプログラムインストラクションを発生する。
【００２５】
ＮＶＭインターフェイス１１８及びＳｏＣコントロール回路１１２は、個別のモジュールとして示されているが、これは、本発明の実施形態の説明を簡単にするものに過ぎない。これらのモジュールは、ハードウェアコンポーネント、ソフトウェアコンポーネント、又はその両方を共有してもよいことを理解されたい。例えば、ＳｏＣコントロール回路１１２は、ＮＶＭインターフェイス１１８のためのソフトウエアベースのメモリドライバを実行してもよい。
【００２６】
ある実施形態では、電子装置１００は、フラッシュメモリドライブ又はセキュアなデジタル（ＳＤ）カードのようなターゲット装置を備え、これは、ＮＶＭ１２０、及びＮＶＭインターフェイス１１８のある部分又は全部（例えば、以下に述べる変換層）を含む。これらの実施形態では、ＳｏＣ１１０又はＳｏＣコントロール回路１１２は、ターゲット装置のためのホストコントローラとして働く。例えば、ホストコントローラとして、ＳｏＣ１１０は、読み取り及び書き込み要求をターゲット装置へ発行することができる。
【００２７】
図２は、種々の実施形態による電子装置１００（図１）のファームウェア、ソフトウェア、及び／又はハードウェアコンポーネントの幾つかを詳細に示す電子装置２００のブロック図である。電子装置２００は、図１を参照して上述した特徴及び機能のいずれかを有し、そしてその逆のことも言える。図示されたように、破線は、層の境界を示す。境界線内にどのコンポーネントが入るかは、単なる例示に過ぎず、１つ以上のコンポーネントを異なる層と合併できることを理解されたい。
【００２８】
電子装置２００は、ファイルシステム２１０、ＮＶＭドライバ２１２、ＮＶＭバスコントローラ２１６、及びＮＶＭ２２０を備えている。ある実施形態では、ファイルシステム２１０及びＮＶＭドライバ２１２は、ソフトウェア又はファームウェアモジュールであり、そしてＮＶＭバスコントローラ２１６及びＮＶＭ２２０は、ハードウェアモジュールである。従って、これらの実施形態では、ＮＶＭドライバ２１２は、ＮＶＭインターフェイス２１８のソフトウェア又はファームウェア態様を表わし、そしてＮＶＭバスコントローラ２１６は、ＮＶＭインターフェイス２１８のハードウェア態様を表わす。
【００２９】
ファイルシステム２１０は、適当な形式のファイルシステム、例えば、ファイルアロケーションテーブル（ＦＡＴ）ファイルシステム又はハイアラーキーファイルシステムプラス（ＨＦＳ＋）を備え、そして電子装置２００のオペレーティングシステムの一部分（例えば、図１のＳｏＣコントロール回路１１２の一部分）である。ある実施形態では、ファイルシステム２１０は、ページの論理的−物理的マッピングを与えるフラッシュファイルシステムを備えている。これらの実施形態において、ファイルシステム２１０は、以下に述べるＮＶＭドライバ２１２の機能の幾つか又は全部を遂行し、それ故、ファイルシステム２１０及びＮＶＭドライバ２１２は、個別のモジュールであってもなくてもよい。
【００３０】
ファイルシステム２１０は、アプリケーション及びオペレーティングシステムに対してファイル及びフォルダ構造を管理する。ファイルシステム２１０は、電子装置２００上で実行されるアプリケーション又はオペレーティングシステムのコントロールのもとで動作し、そして情報がＮＶＭ２２０から読み取られるか又はそこに記憶されることをアプリケーション又はオペレーティングシステムが要求するときに書き込み及び読み取りコマンドをＮＶＭドライバ２１２に与える。各読み取り又は書き込みコマンドと共に、ファイルシステム２１０は、ユーザデータをどこから読み取るべきか又はどこに書き込むべきか指示するための論理的アドレス、例えば、論理的ページアドレス又は論理的ブロックアドレス（ＬＢＡ）を、ページオフセットと共に与えることができる。
【００３１】
ファイルシステム２１０は、ＮＶＭ２２０に直接適合しない読み取り及び書き込み要求をＮＶＭドライバ２１２に与えることがある。例えば、論理的アドレスは、ハードドライブベースのシステムの典型である慣習又はプロトコルを使用してもよい。ハードドライブベースのシステムは、フラッシュメモリとは異なり、最初にブロック消去を遂行せずに、メモリ位置をオーバーライトすることができる。更に、ハードドライブは、装置の寿命を延長するためにウェアレベリングを必要としない。それ故、ＮＶＭインターフェイス２１８は、ファイルシステム要求を取り扱うためにメモリ特有、売主特有、又はその両方である機能を遂行し、そしてＮＶＭ２００に適した仕方で他の管理機能を遂行することができる。
【００３２】
ＮＶＭドライバ２１２は、変換層２１４を備えている。ある実施形態では、変換層２１４は、フラッシュ変換層（ＦＴＬ）であってもよいし又はそれを含んでもよい。書き込みコマンドの際に、変換層２１４は、与えられた論理的アドレスを、ＮＶＭ２２０上の消去された空き物理的位置へマップすることができる。読み取りコマンドの際に、変換層２１４は、与えられた論理的アドレスを使用して、要求されたデータが記憶されている物理的アドレスを決定することができる。各ＮＶＭは、ＮＶＭのサイズ又は売主に基づいて異なるレイアウトを有することがあるので、このマッピング動作は、メモリ及び／又は売主特有でよい。変換層２１４は、論理的−物理的アドレスマッピングに加えて他の適当な機能を遂行することができる。例えば、変換層２１４は、ガーベージコレクション及びウェアレベリングのようなフラッシュ変換層の典型である他のいずれの機能を遂行することもできる。
【００３３】
ＮＶＭドライバ２１２は、ＮＶＭバスコントローラ２１６とインターフェイスして、ＮＶＭアクセスコマンド（例えば、プログラム、読み取り及び消去コマンド）を完了することができる。バスコントローラ２１６は、ＮＶＭ２００へのハードウェアインターフェイスとして働き、そしてＮＶＭ２２０のバスプロトコル、データレート及び他の仕様を使用してＮＶＭ２２０と通信することができる。
【００３４】
ＮＶＭインターフェイス２１８は、ここで、時々「メタデータ」と称されるメモリ管理データに基づいてＮＶＭ２２０を管理する。メタデータは、ＮＶＭドライバ２１２により発生されてもよいし、又はＮＶＭドライバ２１２のコントロールのもとで動作するモジュールにより発生されてもよい。例えば、メタデータは、論理的アドレスと物理的アドレスとの間のマッピングの管理、不良ブロックの管理、ウェアレベリングに使用される情報、データエラーを検出又は修正するのに使用されるエラー修正コード（ＥＣＣ）データ、又はその組み合わせを含む。メタデータは、ファイルシステム２１０により与えられるデータを、論理的アドレスのようなユーザデータと共に含む。従って、一般的に、「メタデータ」とは、ユーザデータについての又はそれに関連した情報を指し、又は不揮発性メモリの動作及びメモリ位置を管理するのに一般的に使用される。
【００３５】
ＮＶＭインターフェイス２１８は、ＮＶＭ２２０にメタデータを記憶するように構成される。ある実施形態では、ＮＶＭインターフェイス２１８は、ユーザデータに関連したメタデータを、ユーザデータが記憶される同じメモリ位置（例えば、ページ）に記憶する。例えば、ＮＶＭインターフェイス２１８は、ユーザデータ、関連論理的アドレス、及びユーザデータのためのＥＣＣデータを、ＮＶＭ２２０の１つ以上のメモリ位置に記憶する。又、ＮＶＭインターフェイス２１８は、ユーザデータについての他の形式のメタデータも同じメモリ位置に記憶する。
【００３６】
ＮＶＭインターフェイス２１８は、ＮＶＭ２２０のパワーアップ時又はＮＶＭ２２０の動作中に、どんなデータがその位置にあるか電子装置２００が決定できるように、論理的アドレスを記憶する。特に、ファイルシステム２１０は、ユーザデータをその物理的アドレスではなく、その論理的アドレスに基づいて参照するので、ＮＶＭインターフェイス２１８は、ユーザデータ及び論理的アドレスを一緒に記憶して、それらの関連性を維持する。このように、論理的−物理的マッピングを維持しているＮＶＭ２２０のインデックステーブルが古くなった場合でも、ＮＶＭインターフェイス２１８は、例えば、電子装置２００のパワーアップ時又は再ブート時に適切なマッピングを依然決定することができる。
【００３７】
図３は、論理的アドレスを物理的ページへマッピングするための規範的なメモリマッピングアーキテクチャー３００を示すブロック図である。このアーキテクチャー３００は、揮発性メモリ（破線の左側に示す）及び不揮発性メモリ（破線の右側に示す）に分割される。ルックアップテーブル３０２及びインデックステーブルキャッシュ３０４は、揮発性メモリ（例えば、図１のメモリ１１４）に記憶され、一方、インデックステーブル３０６及びデータページ３０８は、不揮発性メモリ（例えば、図１のＮＶＭ１２０又は図２のＮＶＭ２２０）に記憶される。図３に示すように、データページ３０８は、データブロック１−Ｎに含まれる。
【００３８】
インデックステーブル３０６は、インデックスページ１−Ｎを含む。インデックステーブル３０６のインデックスページ１−Ｎの各々は、１つ以上の論理的−物理的マッピングを記憶する。例えば、図３に示すように、インデックステーブル３０６のインデックスページ１は、論理的アドレスを、データブロック１及びデータブロックＮの１つ以上のデータページへマップする。
【００３９】
ルックアップテーブル３０２は、インデックステーブル３０６の位置（例えば、物理的アドレス）を保持する。例えば、ルックアップテーブル３０２は、インデックステーブル３０６の一部分を形成するインデックスページ１−Ｎの論理的−物理的マッピングを保持する。更に、ルックアップテーブル３０２は、インデックステーブルキャッシュ３０４のメモリ位置も記憶する。
【００４０】
インデックステーブルキャッシュ３０４は、最近書き込まれた又はアクセスされた論理的アドレスの物理的アドレスを保持する。即ち、キャッシュ３０４は、現在プログラムされているか又は最近プログラムされたデータページ３０８に対する論理的−物理的マッピングを保持する。周期的なベースで、キャッシュ３０４に記憶された情報は、インデックステーブル３０６のインデックスページ１−Ｎへどっと流出される。その結果、キャッシュ３０４は、時々、インデックステーブル３０６にも記憶され得るマッピングの重畳コピーを与えることができる。
【００４１】
電子装置が正常にシャットダウンすると（例えば、キャッシュ３０４に記憶された全ての情報がインデックステーブル３０６へどっと流出されると）、装置は、インデックスページ１−Ｎに記憶された論理的−物理的マッピングが有効であると仮定することができる。その結果、装置がパワーオン又は再ブートされた後に、装置は、インデックスページ１−Ｎに記憶されたマッピングを直接使用して、揮発性メモリにおけるマッピングを再構成することができる。例えば、ＮＶＭインターフェイス（例えば、図１のＮＶＭインターフェイス１１８又は図２のＮＶＭインターフェイス２１８）は、インデックスページ１−Ｎの論理的−物理的マッピングをキャッシュ３０４へコピーすることができる。インデックスページ１−Ｎは、データページ３０８のサイズの一部分しか占有しないので、このプロセスは、全ＮＶＭをスキャニングすることにより論理的−物理的マッピングを得ることに比して、より効率的となる。
【００４２】
対照的に、電子装置が非正常シャットダウンすると（例えば、キャッシュ３０４に記憶された情報の少なくとも若干がインデックステーブル３０６へどっと流出されないと）、装置は、インデックステーブル３０６に記憶された情報に依存し得ない。特に、インデックステーブル３０６は、最も新しく書き込まれた又は消去されたユーザデータを捕獲し得ない。
【００４３】
従来、装置が再ブートするときは、インデックステーブル３０６に記憶された論理的−物理的マッピングが無効であると仮定される。従って、装置は、ＮＶＭのデータブロックをスキャンして、キャッシュ３０４における論理的−物理的マッピングを再構成するように進む。例えば、装置は、データブロックに関連したブロックテーブルオブコンテンツ（ＴＯＣ）を読み取ることによりデータブロックをスキャンする。例えば、図３に示す例では、ブロックＴＯＣ  １は、データブロック１に関連付けられ、ブロックＴＯＣ  Ｎは、データブロックＮに関連付けられ、等々である。各ブロックＴＯＣは、それに対応するデータブロックに記憶され、そしてデータブロックのデータページをそれに対応する論理的アドレスへマップする情報を含む。従来のシステムでは、ブロックＴＯＣは、プログラムされるページごとに論理的アドレス（例えば、ＬＢＡ又は論理的ページ番号）を含むだけである。他の実施形態では、ブロックＴＯＣは、ページに対してなされた更新の相対的年齢も含む（例えば、ページが他のデータ及び／又はインデックスページに対して更新されたとき）。このような構成では、ブロックＴＯＣは、各データ及び／又はプログラムされたインデックスページに対して論理的アドレス−年齢対を含むことができる。
【００４４】
上述したように、ＮＶＭの各データブロックをスキャンするプロセスは、時間がかかり且つ効率が悪い。従って、ＮＶＭの全てのデータブロックを自動的にスキャンするのではなく、装置は、他のソースから得た情報（例えば、インデックスページ及び／又はコンテクスト情報）をレバレッジして、非正常シャットダウンの後の論理的−物理的マッピングをより効率的に再構成することができる。図４ないし７は、本発明の種々の実施形態によるプロセスを例示するフローチャートである。これらのプロセスは、システムの１つ以上のコンポーネント（例えば、図１の電子装置１００又は図２の電子装置２００）によって実行される。例えば、図４ないし７のプロセスにおけるステップの少なくとも幾つかは、ＮＶＭインターフェイス（例えば、図１のＮＶＭインターフェイス１１８又は図２のＮＶＭインターフェイス２１８）によって遂行される。更に、当業者であれば、少なくとも幾つかのステップは、コントロール回路（例えば、図１のＳｏＣコントロール回路１１２）によって遂行されることが明らかであろう。
【００４５】
先ず、図４を参照すれば、非正常シャットダウン事象を取り扱うためのプロセス４００が示されている。プロセス４００は、ステップ４０２において開始され、そしてステップ４０４において、ＮＶＭインターフェイスは、非正常シャットダウン事象が生じたことを決定する。
【００４６】
ステップ４０６において、ＮＶＭインターフェイスは、ＮＶＭ（例えば、図１のＮＶＭ１２０又は図２のＮＶＭ２２０）の複数のインデックスページ（例えば、図３のインデックスページ１−Ｎ）をインデックスページの年齢についてスキャンすることができる。インデックスページの年齢は、そのインデックスページの信頼性の指示である。
【００４７】
ステップ４０８へ続くと、ＮＶＭインターフェイスは、インデックスページの年齢を、そのインデックスページに対応するＮＶＭのデータページの年齢と比較する。この比較に基づいて、ＮＶＭインターフェイスは、特定のインデックスページがそれに対応するデータページより若年であるか（例えば、よりフレッシュであるか）又は老年であるか決定することができる。
【００４８】
当業者であれば、インデックスページの相対的な年齢とそれに対応するデータページとを比較するために適当なパラメータ（例えば、メタデータとして記憶される１つ以上のパラメータ）を使用できることが明らかであろう。例えば、ページの年齢に逆に関連付けられるカウンタを使用することができる（例えば、老年のページは、小さなカウンタに関連付けられ、そして若年のページは、大きなカウンタに関連付けられる）。
【００４９】
インデックスページの年齢をそれに対応するデータページの年齢と比較した後に、プロセス４００は、ステップ４１０へ進む。ステップ４１０において、ＮＶＭインターフェイスは、その比較に少なくとも一部分基づいて各インデックスページの信頼性を決定する。
【００５０】
特に、ＮＶＭインターフェイスは、インデックスページの年齢がそれに対応するデータページの年齢より老年であると決定した場合には、インデックスページが信頼できず、それ故、無効であると決定する（例えば、インデックスページは、それに対応するデータページが更新されて以来、更新されていない）。その結果、ＮＶＭインターフェイスは、より若年のデータブロックをスキャンして、インデックスページの論理的アドレスに対応する論理的−物理的マッピングを再構成することができる。
【００５１】
対照的に、そうではなくて、ＮＶＭインターフェイスは、インデックスページの年齢がそれに対応するデータページの年齢より老年ではない（例えば、インデックスページの年齢がそれに対応するデータページの年齢より若年又は同年である）と決定した場合には、インデックスページが信頼でき、それ故、有効であると決定する（例えば、インデックスページは、それに対応するデータページと同時に又はその後に更新されている）。その結果、インデックスページに記憶された論理的−物理的マッピングは、有効であると考えられ、ＮＶＭインターフェイスは、インデックスページのマッピングを使用して、揮発性メモリにおけるマッピングを再構成することができる。次いで、プロセス４００は、ステップ４１２で終了となる。
【００５２】
このような解決策を使用することにより、ＮＶＭインターフェイスは、ＮＶＭのデータブロックごとのスキャンを回避し、むしろ、インデックスページ（例えば、有効なインデックスページ）のサブセットを直接使用して、揮発性メモリにおける論理的−物理的マッピングを再構成することができる。更に、無効のインデックスページは、全インデックスページ数の僅かな部分しか構成しないので、ＮＶＭインターフェイスは、無効のインデックスページの論理的アドレスに対応するデータブロックの小さなサブセットをスキャンするだけでよい。従って、この解決策は、非正常シャットダウン事象の後に論理的−物理的マッピングを再構成するのに必要な時間量を著しく減少することができる。
【００５３】
図５を参照すれば、ＮＶＭ（例えば、図１のＮＶＭ１２０又は図２のＮＶＭ２２０）のインデックスページの年齢をデータページの年齢と比較するためのプロセス５００が示されている。ある実施形態では、プロセス５００は、プロセス４００（図４）の比較ステップ４０８及び決定ステップ４１０をより詳細に表現するものである。
【００５４】
プロセス５００は、ステップ５０２で始まり、そしてステップ５０４において、ＮＶＭインターフェイスは、ＮＶＭに記憶されたインデックスページを選択する。例えば、ＮＶＭインターフェイスは、インデックステーブル３０６（図３）からインデックスページを選択する。
【００５５】
次いで、ステップ５０６において、ＮＶＭインターフェイスは、インデックスページの年齢がそれに対応するデータページの年齢より老年であるかどうか決定する。例えば、ＮＶＭインターフェイスは、インデックスページのカウンタがそれに対応するデータページのカウンタより大きいかどうか決定し、ひいては、インデックスページが有効であるかどうか決定する。インデックスページの年齢がそれに対応するデータページの年齢より老年ではない（例えば、インデックスページのカウンタがそれに対応するデータページのカウンタと同じ又はそれより大きい）とＮＶＭインターフェイスが決定する場合には、プロセス５００がステップ５０８へ進む。即ち、ＮＶＭインターフェイスは、インデックスページが有効なインデックスページであると決定する。
【００５６】
ステップ５０８において、ＮＶＭインターフェイスは、まだ選択されていない付加的なインデックスページがあるかどうか決定する。ステップ５０８において、付加的なインデックスページがないことをＮＶＭインターフェイスが決定すると、プロセス５００は、ステップ５１０において終了となる。ステップ５０８において、付加的なインデックスページがあるとＮＶＭインターフェイスが決定すると、プロセス５００は、ステップ５０４へ戻り、ＮＶＭインターフェイスは、別のインデックスページを選択する。
【００５７】
ステップ５０６へ戻ると、インデックスページの年齢がそれに対応するデータページの年齢より老年である（例えば、インデックスページのカウンタがそれに対応するデータページのカウンタより小さい）とＮＶＭインターフェイスが決定する場合には、プロセス５００がステップ５２１へ進む。即ち、ＮＶＭインターフェイスは、インデックスページが無効のインデックスページであると決定する。
【００５８】
ステップ５１２において、ＮＶＭインターフェイスは、データページの年齢がインデックスページの年齢より若年であるＮＶＭの１つ以上のデータブロックをスキャンする。次いで、プロセス５００は、ステップ５１４へ進む。
【００５９】
ステップ５１４において、ＮＶＭインターフェイスは、１つ以上のデータブロックのうちの１つを選択し、その選択されたデータブロックは、インデックスページに関連付けられた１つ以上のデータページを含むものである（例えば、インデックスページは、その選択されたデータブロックの１つ以上のデータページに対応する論理的−物理的マッピングを記憶する）。
【００６０】
次いで、ステップ５１６において、ＮＶＭインターフェイスは、１つ以上のデータページの年齢がインデックスページの年齢より若年であるかどうか決定する。ステップ５１６において、１つ以上のデータページの年齢がインデックスページの年齢より若年でないとＮＶＭインターフェイスが決定すると、プロセス５００は、ステップ５１８へ進む。
【００６１】
ステップ５１８において、ＮＶＭインターフェイスは、１つ以上のデータブロックに付加的なデータブロックがあるかどうか決定する。ステップ５１８において、付加的なデータブロックがあるとＮＶＭインターフェイスが決定すると、プロセス５００は、ステップ５１４へ進む。ステップ５１４において、ＮＶＭインターフェイスは、インデックスページに関連付けられた１つ以上のデータページを有する別のデータブロックを選択する。ステップ５１８において、付加的なデータブロックがないとＮＶＭインターフェイスが決定すると、プロセス５００は、ステップ５０８へ進み、ＮＶＭインターフェイスは、付加的なインデックスページがあるかどうか決定する。
【００６２】
ステップ５１６へ戻ると、１つ以上のデータページの年齢がインデックスページの年齢より若年であるとＮＶＭインターフェイスが決定すると、プロセス５００は、ステップ５２０へ進む。ステップ５２０において、ＮＶＭインターフェイスは、インデックスページを、揮発性メモリ（例えば、図１のメモリ１１４）におけるインデックステーブルキャッシュ（例えば、図３のインデックステーブルキャッシュ３０４）へコピーする。
【００６３】
ステップ５２２において、ＮＶＭインターフェイスは、選択されたデータブロックを使用してキャッシュの１つ以上のエントリを更新する。例えば、選択されたデータブロックを使用して、ＮＶＭインターフェイスは、インデックスページの１つ以上の論理的アドレスに対応する論理的−物理的マッピングを再構成する。
【００６４】
ある実施形態では、ＮＶＭインターフェイスは、選択されたデータブロック（例えば、図３のデータブロック１のブロックＴＯＣ  １又はデータブロックＮのブロックＴＯＣ  Ｎ）を読み取ることにより論理的−物理的マッピングを再構成する。例えば、ブロックＴＯＣが、論理的−物理的マッピングに加えてページ更新の相対的な年齢を含む場合には、ＮＶＭインターフェイスは、ブロックＴＯＣを参照するだけで、更新された論理的−物理的マッピングを得ることができる。
【００６５】
他の実施形態では、ＮＶＭインターフェイスは、選択されたデータブロックに記憶されたメタデータをスキャンすることにより論理的−物理的マッピングを再構成することができる。例えば、ブロックＴＯＣが、プログラムされたページの論理的アドレスしか含まない場合には、ＮＶＭインターフェイスは、メタデータをスキャニングすることによりページの年齢を決定し、そして更新された論理的−物理的マッピングを得ることができる。インデックスページの１つ以上のエントリを更新した後に、プロセスは、ステップ５２２へ進む。ある実施形態では、ＮＶＭインターフェイスは、再構成された論理的−物理的マッピングでインデックステーブル（例えば、図３のインデックステーブル３０６）を更新する。
【００６６】
プロセス５００は、次いで、ステップ５１８へ進み、ＮＶＭインターフェイスは、付加的なデータブロックがあるかどうか決定する。
【００６７】
図６は、コンテクスト情報を使用して非正常シャットダウン事象を取り扱うプロセスを例示するフローチャートである。特に、ＮＶＭインターフェイスは、ＮＶＭ（図１のＮＶＭ１２０又は図２のＮＶＭ２２０）に記憶されたコンテクスト情報からレバレッジすることにより論理的−物理的マッピングを再構成する。ここで使用する「コンテクスト情報」とは、特定の時点における全ＮＶＭの状態に関連した情報を指す。例えば、コンテクスト情報は、特定の時点におけるＮＶＭの全てのデータブロックに対する論理的−物理的マッピングを含む。
【００６８】
ある実施形態では、コンテクスト情報は、ＮＶＭの１つ以上の指定のブロックに記憶される。例えば、図３に戻ると、コンテクストブロック３１０は、コンテクスト情報を記憶するのに使用されるＮＶＭのブロックである。
【００６９】
図６に戻ると、プロセス６００は、ステップ６０２で始まり、そしてステップ６０４において、ＮＶＭインターフェイスは、非正常シャットダウン事象が生じたことを検出する。次いで、ステップ６０６において、ＮＶＭインターフェイスは、非正常シャットダウン事象の前にＮＶＭ（例えば、図３のコンテクストブロック３１０）に記憶されたコンテクスト情報をサーチする。即ち、ＮＶＭインターフェイスは、非正常シャットダウン事象が生じる前にＮＶＭにセーブされたコンテクスト情報の最新のコピーを得ることができる。コンテクスト情報をサーチした後に、プロセス６００は、ステップ６０８へ進む。
【００７０】
ステップ６０８において、ＮＶＭインターフェイスは、コンテクスト情報（例えば、コンテクスト情報の最新のコピー）を揮発性メモリ（例えば、図１のメモリ１１４）へロードする。例えば、ＮＶＭインターフェイスは、コンテクスト情報を揮発性メモリのキャッシュ（例えば、図３のインデックステーブルキャッシュ３０４）及び／又はルックアップテーブル（例えば、図３のルックアップテーブル３０２）へロードする。
【００７１】
次いで、ステップ６１０において、ＮＶＭインターフェイスは、ロードされたコンテクスト情報の年齢より若年の年齢（例えば、コンテクスト情報が記憶されたコンテクストブロックのカウンタより大きな１つ以上のデータブロックのカウンタ）でＮＶＭの１つ以上のデータブロックを識別する。特に、これらのデータブロックは、コンテクスト情報により捕獲されなかった更新された論理的−物理的マッピングを含む。次いで、プロセス６００は、ステップ６１２へ進む。
【００７２】
ステップ６１２において、ＮＶＭインターフェイスは、１つ以上のデータブロックの完全な回復を果たす。例えば、ＮＶＭインターフェイスは、１つ以上のデータブロックをスキャンして（例えば、１つ以上のブロックＴＯＣ及び／又はデータブロックのメタデータを読み取って）、論理的−物理的マッピングを得ることができる。コンテクスト情報が最近セーブされた場合には、論理的−物理的マッピングを再構成するための時間が短縮される。というのは、データブロックの小さなサブセットに対して完全な回復を行えばよいからである。
【００７３】
プロセス６００は、次いで、ステップ６１４で終了となる。完全回復プロセスの詳細な説明は、参考としてここにそのまま援用する２００９年７月２４日に出願された“Restore Index Page”と題するワクラ氏等の米国特許出願第１２／５０９，０７１号に見ることができる。
【００７４】
図７は、混成型解決策を使用して非正常シャットダウン事象を取り扱うためのプロセス７００を例示するフローチャートである。特に、ＮＶＭインターフェイスは、コンテクスト情報及びインデックスページの両方からレバレッジすることにより論理的−物理的マッピングを再構成することができる。
【００７５】
プロセス７００は、ステップ７０２で始まり、そしてステップ７０４において、ＮＶＭインターフェイスは、非正常シャットダウン事象が生じたことを検出する。次いで、ステップ７０６において、ＮＶＭインターフェイスは、コンテクスト情報を使用してＮＶＭのデータブロックのセットに対する論理的−物理的マッピングを得る。例えば、データブロックのセットは、コンテクスト情報が最後にセーブされて以来更新されていないデータブロックである。
【００７６】
ステップ７０８へと続き、ＮＶＭインターフェイスは、ＮＶＭの残りのデータブロックに対する論理的−物理的マッピングを再構成する。例えば、ＮＶＭインターフェイスは、１つ以上のインデックスページを使用して論理的−物理的マッピングを再構成する。残りのデータブロックは、コンテクスト情報により捕獲されていないデータブロックを含む（例えば、コンテクスト情報が最後にセーブされて以来更新されたデータブロック）。
【００７７】
残りのデータブロックに対する論理的−物理的マッピングを再構成するために、ＮＶＭインターフェイスは、プロセス４００（図４）及び５００（図５）と同様のプロセスを使用する。例えば、１つ以上のインデックスページは、残りのデータブロックの物理的アドレスと、それに対応する論理的アドレスとの間のマッピングを記憶する。特に、ＮＶＭインターフェイスは、１つ以上のインデックスページの年齢がそれに対応するデータページの年齢より老年であるかどうか決定する。
【００７８】
１つ以上のインデックスページの年齢がそれに対応するデータページの年齢より老年であるとＮＶＭインターフェイスが決定すると、ＮＶＭインターフェイスは、少なくとも残りのデータブロックのサブセットをスキャニングすることにより完全な回復を遂行する。少なくとも残りのデータブロックのサブセットをスキャニングすることにより、ＮＶＭインターフェイスは、１つ以上のインデックスページの論理的アドレスに対応する論理的−物理的マッピングを得る。次いで、ＮＶＭインターフェイスは、揮発性メモリのキャッシュ（例えば、図３のインデックステーブルキャッシュ３０４）へインデックスページをコピーし、そして論理的−物理的マッピングに基づいてキャッシュのエントリを更新する。プロセス７００は、ステップ７１０において終了する。
【００７９】
従って、論理的−物理的マッピングを再構成するためにコンテクスト情報がインデックスページに関連して使用されるので、システム再ブート後に処理される必要のある情報の量を更に減少することができる。特に、全データブロック数のうちの小さなサブセットに対して完全回復を遂行するだけでよい。これは、システムの効率を改善し、そして非正常シャットダウンからの回復に必要な時間量を短縮することができる。
【００８０】
図４ないし７のプロセス４００、５００、６００及び７００は、単なる例示に過ぎないことを理解されたい。本発明の範囲から逸脱せずに、いずれのステップを除去、変更又は結合することもできるし、又、いずれの付加的なステップを追加することもできる。
【００８１】
本発明の以上に述べた実施形態は、例示のためのものであり、これに限定されるものではない。
【符号の説明】
【００８２】
１００：電子装置
１１０：システムオンチップ（ＳｏＣ）
１１２：ＳｏＣコントロール回路
１１４：メモリ
１１８：ＮＶＭインターフェイス
１２０：不揮発性メモリ（ＮＶＭ）
２００：電子装置
２１０：ファイルシステム
２１２：ＮＶＭドライバ
２１６：ＮＶＭバスコントローラ
２１８：ＮＶＭインターフェイス
２２０：ＮＶＭ
３０２：ルックアップテーブル
３０４：インデックステーブルキャッシュ
３０６：インデックステーブル
３０８：データページ
３１０：コンテクストブロック
【図１】
0005702348.tif 000002
【図２】
0005702348.tif 000003
【図３】
0005702348.tif 000004
【図４】
0005702348.tif 000005
【図５】
0005702348.tif 000006
【図６】
0005702348.tif 000007
【図７】
0005702348.tif 000008