(57)【要約】  フラッシュドライバは、ファイルシステムや他のアプリケーションを使用して、内在するフラッシュコンポーネントを記述する領域形状のような更に詳細な属性や性質を決定することができる。これによってファイルシステムは例えば、各々のフラッシュ領域とそのプロパティを知ることができる。そこでファイルシステムは、フラッシュコンポーネントをより効率的に利用するように最適化される。この最適化によりフラッシュコンポーネントの長寿命化と、リード／ライト性能の向上につながる。
2009532761.tif 000002
【特許請求の範囲】
【請求項１】
フラッシュコンポーネント（１０）に関するデータを保持するフラッシュドライバ（１５）と、
前記フラッシュドライバ（１５）から前記データを受取るファイルシステム又はアプリケーション（４０）とを備えることを特徴とするフラッシュコンポーネントクエリーシステム。
【請求項２】
前記データが、前記フラッシュコンポーネント（１０）に関するプロパティ情報を含むことを特徴とする請求項１に記載のシステム。
【請求項３】
前記フラッシュドライバ（１５）は、前記フラッシュコンポーネント（１０）から前記フラッシュコンポーネント（１０）に関する前記データを受取るように構成されていることを特徴とする請求項１に記載のシステム。
【請求項４】
前記フラッシュドライバ（１５）は、フラッシュメディアドライバ（２０）と、
前記フラッシュメディアドライバ（２０）と通信しているフラッシュ抽象化層（３０）とを備えることを特徴とする請求項１に記載のシステム。
【請求項５】
低レベルのプロパティを前記フラッシュメディアドライバ（２０）に与え、高レベルのプロパティを前記フラッシュ抽象化層（３０）に与えるシステムレジストリ（５０）を備えることを特徴とする請求項４に記載のシステム。
【請求項６】
前記フラッシュメディアドライバ（２０）は、前記低レベルのプロパティを前記フラッシュ抽象化層（３０）に与えるように構成されていることを特徴とする請求項５に記載のシステム。
【請求項７】
前記フラッシュメディアドライバ（２０）は、前記フラッシュコンポーネント（１０）から前記フラッシュコンポーネント（１０）に関する前記データを受取るように構成されていることを特徴とする請求項４に記載のシステム。
【請求項８】
前記データは、前記フラッシュコンポーネント（１０）の複数の離散領域の特性を
含むことを特徴とする請求項１に記載のシステム。
【請求項９】
フラッシュドライバ（２００）において、フラッシュコンポーネントのプロパティに関するデータを受取ることと、
前記データをシステムファイル又はアプリケーション（２４０）に与えることとを含むことを特徴とする、フラッシュコンポーネントに問合せをする方法。
【請求項１０】
前記フラッシュコンポーネントに関するデータを受取ることは、前記フラッシュコンポーネント（２００）からデータを受取ることを含むことを特徴とする請求項９に記載の方法。
【請求項１１】
前記フラッシュコンポーネントに関するデータを受取ることは、システムレジストリ（２１０）からデータを受取ることを含むことを特徴とする請求項９に記載の方法。
【請求項１２】
前記フラッシュドライバ（１５）はフラッシュメディアドライバ（２０）を備える、前記フラッシュコンポーネントに関するデータを受取ることは前記フラッシュメディアドライバ（２００，２１０）を使用してデータを抽出することを含むことを特徴とする請求項９に記載の方法。
【請求項１３】
前記フラッシュドライバ（１５）は、前記フラッシュメディアドライバ（２０）と通信中のフラッシュ抽象化層（３０）を含み、さらに前記抽出したデータを前記フラッシュ抽象化層（２２０）に与えることをさらに含むことを特徴とする請求項１２に記載の方法。
【請求項１４】
追加データを前記フラッシュ抽象化層に前記システムレジストリ（２３０）を介して前記ドライバコンフィグレーションから与えることをさらに含むことを特徴とする請求項１３に記載の方法。
【請求項１５】
前記データは、前記フラッシュコンポーネント（１０）の複数の離散領域の特性を含むことを特徴とする請求項９に記載の方法。
【請求項１６】
フラッシュコンポーネント（１０）に関するデータを保持するフラッシュメディアドライバ２０と、
前記データを受取り、前記データをファイルシステム又はアプリケーション（４０）に与えるフラッシュ抽象化層（３０）とを備えることを特徴とするフラッシュドライバ。
【請求項１７】
前記データは、前記フラッシュコンポーネント（１０）の複数の離散領域の特性を含むことを特徴とする請求項１６に記載のフラッシュドライバ。
【請求項１８】
前記フラッシュメディアドライバ（２０）は、前記フラッシュコンポーネント（１０）から前記データを受取るように構成されていることを特徴とする請求項１６に記載のフラッシュドライバ。
【請求項１９】
前記フラッシュメディアドライバ（２０）は、システムレジストリ（５０）から、前記フラッシュメディアドライバ（２０）において低レベルのプロパティを受け取り、前記フラッシュ抽象化層（３０）において高レベルプロパティを受取るように構成されることを特徴とする請求項１６に記載のフラッシュドライバ。
【請求項２０】
前記フラッシュメディアドライバ（２０）は、前記低レベルプロパティを前記フラッシュ抽象化層（３０）に与えるように構成されることを特徴とする請求項１９に記載のフラッシュドライバ。
【発明の詳細な説明】
【背景技術】
【０００１】
ＮＡＮＤやＮＯＲフラッシュストレージコンポーネントのような、フラッシュストレージコンポーネントは、各々が異なった特性を持つ離散的な物理領域で構成される場合が多いが、選択的に構成されることもある。この特性は例えば、異なるブロック、ページ、セクターサイズや、固有のリード／ライト／イレース（erase）性能属性、および、リードオンリー、リード／ライト、又はライトワンス能力を含んでいる。
【発明の開示】
【発明が解決しようとする課題】
【０００２】
従来のソフトウェアファイルシステムは、フラッシュコンポーネントを、異なった領域の特性を考慮せずに、セクタ又はクラスタの異成分から成る単一のセットと見做している。各領域とそのプロパティに関するフラッシュ領域情報を、ファイルシステムに公開するための標準的なメカニズムは存在しない。このため、フラッシュコンポーネントの利用および性能を効率の悪いものにする。
【課題を解決するための手段】
【０００３】
フラッシュドライバは、基礎となるフラッシュコンポーネントを記述する領域形状（region geometry）のような、更に詳細な属性やプロパティを決定するために、ファイルシステムや他のアプリケーションにより使用可能である。これによってファイルシステムは例えば、各々のフラッシュ領域とそのプロパティを知ることができる。そこでファイルシステムは、フラッシュコンポーネントをより効率的に利用するように最適化される。この最適化により、フラッシュコンポーネントの寿命が長くなり、リード／ライト性能が向上する。
【０００４】
フラッシュメディアドライバ中の内部ＡＰＩ（アプリケーション・プログラム・インタフェース）は、低レベルのフラッシュプロパティをフラッシュ抽象化層に与える。Ｉ／Ｏ（入力／出力）制御コードのようなフラッシュドライバインタフェースは、フラッシュドライバにより公開され、フラッシュ及びドライバプロパティを提供する。このＩ／Ｏ制御コードは、ファイルシステムや他のアプリケーションにより使用可能である。
【０００５】
この課題を解決すための手段は、以下の発明を実施するための最良の形態で更に説明する概念を選択して、簡潔に紹介するために提供するものである。この課題を解決すための手段は、特許請求する発明の主題の主要な特徴、又は本質的な特徴を特定するためのものではなく、特許請求する発明の主題の範囲を制限するのに使用するためのものでもない。
【発明を実施するための最良の形態】
【０００６】
フラッシュ抽象化層マルチオブジェクトアーキテクチャのようなフラッシュストレージアーキテクチャにより、単一のフラッシュコンポーネントを各々が独立して扱える領域に物理的にパーティショニングすることが可能になる。各々のフラッシュ領域は、お互いに分離されていているのが望ましく、フラッシュ抽象化層オブジェクトにより管理される。フラッシュ抽象化層オブジェクトは、フラッシュコンポーネントへのインタフェースを抽象化して、パーティションドライバやファイルシステムドライバのようなスタック内の、上位層に使用されるドライバインタフェースを提供する。更に、フラッシュ抽象化層マルチオブジェクトアーキテクチャは、可変ブロックサイズフラッシュコンポーネントをサポートする。可変ブロックサイズコンポーネントは、他の領域とは異なるブロックサイズを持つフラッシュの領域を含んでいる。
【０００７】
フラッシュストレージコンポーネントは、各々が異なった特性を持つ離散した物理領域で構成される。この特性には例えば、異なるブロック、ページ、セクタのサイズや、固有のリード／ライト／イレース性能属性、リードオンリー、リード／ライト、ライトワンス能力が含まれる。領域は様々なブロックサイズと同様に、固有の性能プロパティを備えることができる。ファイルシステムが将来のプロパティと同様にフラッシュストレージコンポーネントのプロパティを使用することができるように、インタフェースが提供されている。
【０００８】
図１は、フラッシュクエリシステムの例のブロック図である。ファイルシステムや他のアプリケーションは、フラッシュドライバ１５を使用して、基礎となるフラッシュコンポーネント１０を記述する領域配置のような、さらに詳細な属性とプロパティを決定できる。これによってファイルシステム４０は例えば、各々のフラッシュ領域とそのプロパティを知ることができる。そこでファイルシステムは最適化され、フラッシュコンポーネント１０をより効率的に利用することができるようになる。この最適化は、コンポーネントの長寿命化と、リード／ライト性能の向上につながる。本明細書で使用する際、フラッシュドライバとは、フラッシュを管理して上位層（例えば、パーティションドライバ、ファイルシステム等）にフラッシュを公開するソフトウェアコンポーネントのようなコンポーネントのことを言う。フラッシュドライバインタフェースは、フラッシュドライバにより上位層に公開されるＡＰＩであってもよい。
【０００９】
図１に関して、フラッシュメディアドライバ２０とフラッシュ抽象化層３０からなるフラッシュドライバ１５は、他の情報と同様にプロパティ情報を、フラッシュメディア又はストレージコンポーネント１０、および／又はシステムレジストリ５０のようなハードウェアから受け取ることができる。システムレジストリ５０は、ドライバ構築中に抽出された低レベルプロパティをフラッシュメディアドライバ２０に与え、ドライバコンフィグレーションから抽出された高レベルプロパティをフラッシュ抽象化層３０に与える。フラッシュドライバ１５は、例えばプロパティ情報をファイルシステム４０に与えることができる。低レベルプロパティは、例えば読み出し速度、書込み速度、ブロックサイズ等のようなフラッシュの物理的な特性を含む。高レベルプロパティは、例えばリードオンリー、リード／ライト、リザーブ領域、アトミックライト等ソフトウェアに課せられた、又は強化されたものである。
【００１０】
フラッシュコンポーネント１０は、例えばＮＡＮＤ又はＮＯＲコンポーネントからなり、フラッシュメディアドライバ２０に低レベルのプロパティを提供することが望ましい。フラッシュメディアドライバ２０は、デバイス固有のものであり、フラッシュコンポーネント１０に直接物理的にアクセスすることに関わることが望ましい。
【００１１】
フラッシュドライバ１５内で、フラッシュコンポーネント１０のための低レベルプロパティが、フラッシュ抽象化層３０に与えられる。フラッシュ抽象化層３０は、ウエアレベリング（wear-leveling）、書込みセクタトランザクション、論理セクタから物理セクタへのマッピングと翻訳を扱うフラッシュメディアドライバ２０の上の層であり、メディアのタイプに依存しない。
【００１２】
フラッシュ抽象化層の例は、セクタマネジャー、論理セクタから物理セクタへのマッパー、コンパクタで構成される。セクタマネジャーは、メディア上の自由なセクタのリストを管理する責任がある。要求された場合、セクタマネジャーはメディア上の（もし利用可能であれば）次の空きセクタを返すのが望ましい。論理セクタから物理セクタへのマッパーは、論理セクタから物理セクタへのマッピングを返す責任がある。ファイルシステムは、メディア上で任意の物理セクタにマップされた論理セクタを使用する。その結果、フラッシュ抽象化層はファイルシステムからの論理セクタアドレスを、メディア上の対応する物理セクタアドレスに翻訳することが望ましい。コンパクタは、ＤＩＲＴＹセクタをＦＲＥＥセクタにリサイクルさせる責任がある。コンパクタは、ＦＬＡＳＨブロック全体を解析して、どのセクタがＤＩＲＴＹでリサイクルできるかを決定するのが望ましい。ＤＩＲＴＹではないブロック内のセクタはどれでもメディアの別の部分に再マップされる。
【００１３】
フラッシュメディアドライバの例は、フラッシュデバイスに実際に入出力を行う責任があるプラグ着脱可能なコンポーネントである。フラッシュメディアドライバは、フラッシュメモリデバイスのリード／ライト／イレースに使用されるデバイス固有のコードを含むことが望ましい。
【００１４】
さらに、例えばフラッシュコンポーネント１０、および／又はシステムレジストリ５０からのプロパティや他の情報は、フラッシュ抽象化層３０に与えられる。フラッシュ抽象化層３０は、ファイルシステム４０に情報（ハードウェアのプロパティと範囲）を提供する。このようにして、フラッシュコンポーネント１０とフラッシュドライバ１５のプロパティは、フラッシュドライバ１５からファイルシステム４０に与えられる。
【００１５】
フラッシュ抽象化層３０がフラッシュメディアドライバ２０に問合せを行うためのインタフェースと、フラッシュ抽象化層３０からファイルシステム４０に情報を提供するためのインタフェース、という２つのインタフェースが提供される。このインタフェースは、例えばＩ／Ｏ制御コードを使用して問合せられた構造（structures）を使用して実装される。フラッシュメディアドライバ２０は、フラッシュコンポーネント１０の物理的特性に関する情報をフラッシュ抽象化層３０に与えるが、フラッシュ抽象化層３０ではその情報を、その情報が使用可能なファイルシステム４０に与える。
【００１６】
一例として、フラッシュドライバ１５は、低レベルのフラッシュプロパティをフラッシュ抽象化層３０に与えるフラッシュメディアドライバ２０内の内部ＡＰＩ（アプリケーション・プログラムインタフェース）からなる。フラッシュドライバインタフェースは開示されており、フラッシュとドライバプロパティを提供するＩ／Ｏ（入力／出力）制御コードからなる。このＩ／Ｏ制御コードは、例えばファイルシステム４０と他のアプリケーションにより使用可能である。
【００１７】
フラッシュメディアドライバ２０は、ハードウェア固有のものであり、フラッシュコンポーネント１０の既存のプロパティを生かすことができることが望ましい。例えばユーザドライバにフラッシュメディアドライバ機能のサポートを追加することにより、ユーザはフラッシュメディアドライバ２０を生成することができる。フラッシュ抽象化層３０は、フラッシュメディアドライバ２０の機能とプロパティを使用する。
【００１８】
図２は、フラッシュに問合せを行う方法の例を示すフロー図である。ステップ２００で、フラッシュメディアドライバはフラッシュコンポーネントから低レベルプロパティを抽出する。ステップ２１０で、フラッシュメディアドライバはシステムレジストリを介してドライバコンフィグレーションから低レベルプロパティを抽出することができる。フラッシュメディアドライバは、抽出した低レベルのプロパティをステップ２２０でフラッシュ抽象化層に与える。フラッシュ抽象化層は、ステップ２３０でシステムレジストリを介してドライバコンフィグレーションから高レベルプロパティを抽出する。ステップ２４０にて低レベルと高レベル両方のプロパティがファイルシステムに与えられる。
【００１９】
フラッシュメディアドライバＡＰＩは、フラッシュコンポーネントについての一般的な低レベルの詳細を提供する。このＡＰＩは、コンポーネントの任意の保存された部分と同様に、フラッシュコンポーネントの形状（geometry）を記述することができる。例えば、フラッシュメディアドライバにより提供可能なＡＰＩのための情報レベルは４つある。即ち、基本的なフラッシュ情報、フラッシュ領域標準情報、フラッシュ領域性能情報、フラッシュリザーブ標準情報である。この情報は、フラッシュのハードウェア自身から入手したものである。要求や優先度の変化に応じてＡＰＩは追加情報レベルをサポートするように拡張することができると考えられている。
【００２０】
基本的なフラッシュ情報は、例えばフラッシュタイプＮＡＮＤ又はＮＯＲ，製造ＩＤ，シリアル番号、領域番号、リザーブ領域番号を含むことが望ましい。
【００２１】
フラッシュ領域標準情報は、例えば領域プロパティ（リードオンリー、ライトワンス、シーケンスプロラミング要求（ＭＬＣフラッシュ））、ページプログラム制限、物理的及び論理的形状、セクタ当たりのデータバイト、セクタ当たりのスペアバイト、のような領域の基本的なプロパティをそれぞれが記述している、構造の配列と、フラッシュ領域毎の配列を含むことが望ましい。
【００２２】
フラッシュ領域性能情報は、例えばリードスループット、ライトスループット、イレース時間、リードセットアップ時間、ライトセットアップ時間のような領域の性能プロパティを各々が記述している構造の列とフラッシュ領域当たりの列を含むことが望ましい。
【００２３】
フラッシュリザーブ標準情報は、その各々が例えばリザーブ領域の名前、リザーブ領域の場所と大きさ、リザーブ領域のプロパティ（リードオンリー、ライトワンス）のようなリザーブ領域を記述する構造の配列と保存されたフラッシュ領域毎の配列を含むことが望ましい。リザーブ領域はファイルシステムから隠蔽されていることが望ましい。この情報はフラッシュハードウェアに由来しても、又は由来しなくてもよい。
【００２４】
フラッシュメディアドライバにより提供される情報は、多数の場所から集められる。例えば、フラッシュメディアドライバコードでハードコードされた情報もあれば、システムレジストリから読み出されたものもあるし、共通フラッシュインタフェース（ＣＦＩ）又は他の方法を介してフラッシュコンポーネントから直接抽出されたものもある。離散領域を持たないフラッシュコンポーネントは、フラッシュコンポーネント全体を走査する一つの領域を報告する。
【００２５】
フラッシュ抽象化層は、それ自身の情報をフラッシュメディアドライバより提供された情報と組合せて、このＩ／Ｏ制御コードのようなインタフェースを介して開示された豊富なフラッシュプロパティ集合を形成することが望ましい。このＡＰＩのためにフラッシュメディアドライバより提供される４つの情報レベルがある。即ち、標準情報、領域標準情報、領域性能情報、リザーブ標準情報である。要求や優先度の変化に応じて、ＡＰＩは追加情報レベルをサポートするように拡張することができる。この情報は、フラッシュメディアドライバの情報と似ている。これはサードパーティフラッシュソフトウェアプロバイダが開示する情報である。
【００２６】
標準情報は、例えば製造ＩＤ，シリアル番号、領域番号、リザーブ領域番号のようなストレージ装置全体に関する一般情報を含んでいることが望ましい。
【００２７】
領域標準情報は、ストレージ装置内の別個の領域のプロパティや特長を含むことが望ましい。多数の別個の領域がないストレージ装置では、装置全体を記述するのに単一構造が使用される。ここでの情報には、例えばこの領域のプロパティ（リードオンリー、リード／ライト、ライトワンス、ＸＩＰ、アトミックライト）、この領域でサポートされているプロパティ（セクタ削除、安全な拭き取り、キャッシュフラッシュ）、セクタ及びブロックのサイズ、トータルセクタ数、スペアブロック数が含まれる。
【００２８】
領域性能情報は、ストレージ装置内の別個の領域の性能能力を含むことが望ましい。多数の別個の領域がないストレージ装置では、装置全体を記述するのに単一構造を使用する。情報には、例えば好ましいリード転送サイズ（セクタ数）、好ましいライト転送サイズ（セクタ数）、リード転送速度、ライト転送速度、リードセットアップ時間、ライトセットアップ時間が含まれる。
【００２９】
リザーブ標準情報は、例えばリザーブ領域の名前、リザーブ領域の場所と大きさ、リザーブ領域のプロパティ（リードオンリー、ライトワンス）のような、標準的なリードおよびライト操作を介してはアクセスすることができないストレージ装置のリザーブ領域についての情報を含むことが望ましい。
【００３０】
フラッシュドライバのサポートはフラッシュ装置に限定されず、装置プロパティを記述するリッチな情報のセットを提供する必要がある他のメディア（ハードディスク、着脱可能なフラッシュカード等）がサポートすることもできる。
【００３１】
フラッシュドライバによりリッチな情報が提供されている状態で、ファイルシステムの活用に関しては、性能向上とコンポーネントの長寿命化のために、ファイルシステムがフラッシュコンポーネントをより良く活用することができる。例えば、フラッシュコンポーネントは２つのブロックサイズで構成することができる。即ち、コンポーネントの第一の部分は、ＳＬＣフラッシュ（セクタ０からＮまで）としてあまり稠密でなく構成され、フラッシュの残りの部分はより稠密なＭＬＣフラッシュ（セクタＮ＋１からＭまで）として構成される。ＭＬＣとＳＬＣは、現在フラッシュとして利用可能な２つのカテゴリーである。
【００３２】
図３はファイルシステムレイアウト例を示す。ファイルシステムレイアウト３００は２つの領域からなる。ファイルアロケーションテーブル３２５を含む領域３２０と、ファイルとディレクトリデータ３４５を含む領域３４０である。領域３２０は、例えばブロック辺り３２セクタの密度であり、高速リード／ライト性能を持つ。領域３４０は、例えばブロック当たり６４セクタの密度であり、中位のリード／ライト性能となる。
【００３３】
ファイルアロケーションテーブル３２５のブロック０からＮは、ファイルとディレクトリデータ３４５のブロックＮ＋１からＭまでよりも小さい。従って０からＮはＮ＋１からＭよりもデータは少ない。小さなブロックは大きなブロックよりも早く（例えば）イレースすることができるので、ファイルシステムが頻繁にリード・ライトするデータを小さいブロックに入れておくほうが望ましい。こうすることにより、システムが早く動く。
【００３４】
そのようなフラッシュ構成の例では、フラッシュのＳＬＣ部分に対してはブロックサイズが小さくなり高性能が得られるので、この領域はメタデータのように頻繁にアクセスされるデータに望ましいものになる。ファイルシステムは、頻繁にアクセスされるファイルアロケーションテーブル３２５を選択してフラッシュのＳＬＣ部に記憶して、ファイルとディレクトリデータ３４５をフラッシュの残りのＭＬＣ部に格納することができる。このレイアウト例では、ＳＬＣの高性能を最も頻繁にアクセスされるセクタのために利用して、さらにＭＬＣフラッシュの密度を利用してより多くのデータを記憶する。ルートディレクトリの内容をＳＬＣ部に記憶させるといった他の最適化によっても、性能は向上する。
【００３５】
コンピューティング配置の例
図４は、例示的な実施形態と態様が実装されたコンピューティング環境の一例を示す。コンピューティングシステム環境１００は、適切なコンピューティング環境の一例でしかなく、使用範囲や機能に対するいかなる制限を示唆するものではない。コンピューティング環境１００は、動作環境例１００内で説明したコンポーネントのどれか、又は組合せに関するいかなる依存性又は要求も持たないと解釈すべきである。
【００３６】
他の汎用又は特殊用途のコンピューティングシステム環境、又は構成が数多く使用されている。使用に適した周知のコンピューティングシステム、環境、および／又は構成には、限定するものではないが、パーソナルコンピュータ、サーバーコンピュータ、ハンドヘルド又はラップトップ装置、マルチプロセッサシステム、マイクロプロセッサベースシステム、セットトップボックス、プログラマブルコンシューマエレクトロニクス、ネットワークＰＣ，ミニコンピュータ、メインフレームコンピュータ、埋め込み型システム、上記システム又は装置のいずれかを含む分散コンピューティング環境等を含む。
【００３７】
コンピュータで実行されるプログラム・モジュールのような、コンピュータ実行可能命令が使用できる。一般的にプログラム・モジュールは、特定のタスクを実行するか、特定の抽象的なデータタイプを実装しているルーチン、プログラム、オブジェクト、コンポーネント、データ構造等を含む。通信ネットワーク又は他のデータ転送メディアを介して、遠隔処理装置によりタスクが行なわれている分散コンピューティング環境を利用することができる。分散コンピューティング環境では、プログラム・モジュールと他のデータはメモリーストレージ装置を含むローカルとリモート双方のコンピュータストレージメディアに配置される。
【００３８】
図４を参照すると、コンピュータ１１０の形態で汎用コンピューティング装置がシステムの例に含まれている。コンピュータ１１０のコンポーネントは、限定するものではないが、プロセッシング・ユニット１２０、システムメモリ１３０、システムメモリを含む様々なシステムコンポーネントをプロセッシング・ユニット１２０と結合するシステムバス１２１を含む。プロセッシング・ユニット１２０は、マルチスレッドプロセッサ上でサポートされているもののような多数の論理プロセッシング・ユニットを表す。システムバス１２１は、メモリバス、又はメモリコントローラ、周辺バス、様々なバスアーキテクチャのどれかを使用したローカルバスを含むバス構造の幾つかのタイプのどれでもよい。例を挙げれば、限定するものではないが、そのようなアーキテクチャには、業界標準アーキテクチャ（ＩＳＡ）バス、マイクロ・チャネル・アーキテクチャ（ＭＣＡ）バス、拡張業界標準アーキテクチャ（ＥＩＳＡ）バス、ベサ（ＶＥＳＡ）ローカルバス、ＰＣＩバス（メザニンバスとしても知られる）が含まれる。システムバス１２１は、通信を行う装置の中で、ポイント・ツー・ポイント接続、スイッチング・ファブリック等としても実装することができる。
【００３９】
コンピュータ１１０は、普通様々なコンピュータ読取可能媒体を備える。コンピュータ読取可能媒体は、コンピュータ１１０によりアクセスが可能で、揮発性と不揮発性媒体、リムーバブルと非リムーバブルメディアの両方を備える入手可能なメディアのどれでもよい。例を挙げれば、限定するものではないが、コンピュータ読取可能媒体はコンピュータ記憶媒体と通信媒体からなる。コンピュータ記憶媒体は、コンピュータ読取可能命令、データ構造、プログラム・モジュール、又は他のデータのような情報を記憶するための方法又は技術のいずれかに実装された揮発性と不揮発性、リムーバブルと非リムーバブルメディアの両方を含む。コンピュータ記憶媒体は、限定するものではないが、ＲＡＭ，ＲＯＭ，ＥＥＰＲＯＭ，フラッシュメモリ、又は他のメモリ技術、ＣＤＲＯＭ，ＤＶＤ又は他の光学ディスクストレージ、磁気カセット、磁気テープ、磁気ディスク記憶又は他の磁気記憶装置、又は必要な情報を記憶するのに使用可能であり、コンピュータ１１０でアクセスできる他のメディアを含む。通信媒体は普通、コンピュータ読取可能命令、データ構造、プログラム・モジュール、又は搬送波又は他の輸送機構のような変調データ信号内の他のデータを具体化するものであり、任意の情報配信媒体を備える。「被変調データ信号」という言葉は、特性セットの内の一つ以上の特性を持つ信号か、信号中の情報を符号化するように変更された信号を意味する。例をあげれば、限定するものではないが、通信媒体は有線ネットワーク又は直結有線接続のような有線媒体、音響、高周波、赤外線のような無線媒体、及び他の無線媒体を含む。上記何れかの組合せも、コンピュータ読取可能媒体の範囲に含まれる。
【００４０】
システムメモリ１３０は、リード・オンリー・メモリ（ＲＯＭ）１３１とランダム・アクセス・メモリ（ＲＡＭ）１３２のような揮発性、および／又は不揮発性メモリの形態の、コンピュータ記憶媒体を含む。起動中等にコンピュータ１１０内の要素間で情報を転送するのを助ける基本的なルーチンを含むバイオス（ＢＩＯＳ）１３３は普通ＲＯＭ１３１に格納される。ＲＡＭ１３２は普通、直ぐにアクセスできる、および／又は現在プロセッシング・ユニット１２０により操作中であるデータ、および／又はプログラム・モジュールを含む。例を挙げれば、限定するものではないが、図４はオペレーティング・システム１３４、アプリケーション・プログラム１３５、他のプログラム・モジュール１３６、プログラムデータ１３７を含む。
【００４１】
コンピュータ１１０は、他のリムーバブル／非リムーバブル、揮発性／不揮発性コンピュータ記憶媒体も持つことができる。例を挙げれば、図４は非リムーバブル、不揮発性磁気メディアから読込む、又は書込むハード・ディスク・ドライブ１４０と、リムーバブル、不揮発性磁気ディスク１５２から読込む、又は書込む磁気ディスクドライブ１５１と、ＣＤ  ＲＯＭ，又は他の光メディアのようなリムーバブル、不揮発性光ディスク１５６から読込む、又は書込む光ディスクドライブ１５５を示す。典型的な動作環境で使用可能な他のリムーバブル／非リムーバブル、揮発性／不揮発性コンピュータ記憶媒体は、限定はしないが、磁気テープカセット、フラッシュメモリカード、ＤＶＤ，ディジタルビデオテープ、半導体ＲＡＭ，半導体ＲＯＭ等を含む。ハード・ディスク・ドライブ１４１は、普通インタフェース１４０のような非リムーバブル・メモリ・インタフェースを介してシステムバス１２１に接続され、磁気ディスクドライブ１５１と光ディスクドライブ１５５は、普通インタフェース５０のようなリムーバブル・メモリ・インタフェースによりシステムバス１２１に接続される。
【００４２】
上記で議論して図４で説明したドライブと関連するコンピュータ記憶媒体は、コンピュータ読取可能命令、データ構造、プログラム・モジュール、コンピュータ１１０用の他のデータのストレージを提供する。図４では、例えばハード・ディスク・ドライブ１４１は、オペレーティング・システム１４４、アプリケーション・プログラム１４５、他のプログラム・モジュール１４６、プログラムデータ１４７を記憶するとして説明されている。これらのコンポーネントは、オペレーティング・システム１３４、アプリケーション・プログラム１３５、他のプログラム・モジュール１３６、プログラムデータ１３７と同じか、異なるかどちらかであるということには注意が必要である。オペレーティング・システム１４４、アプリケーション・プログラム１４５、他のプログラム・モジュール１４６、プログラムデータ１４７は、少なくともコピーとは異なるということを説明するために、ここでは別の数字にしてある。キーボード１６２、普通はマウス、トラックボール、又はタッチパッドと呼ばれているポインティングデバイス１６１のような入力装置を介して、ユーザはコマンドと情報をコンピュータ２０に入力することができる。他の入力装置（図示せず）には、マイクロフォン、ジョイスティック、ゲームパッド、サテライトディッシュ、スキャナ等が含まれる。こうした入力装置は、システムバスに結合されたユーザ入力インタフェース１６０を介してプロセッシング・ユニット１２０に接続されることがよくあるが、他のインタフェースやパラレルポート、ゲームポート、又はＵＳＢのようなバス構造により接続されることもできる。モニタ１９１又は他のタイプの表示装置も、ビデオインタフェース１９０のようなインタフェースを介してシステムバス１２１に接続される。モニタの他にもコンピュータは、出力周辺装置インタフェース１９５を介して接続可能なスピーカ１９７やプリンタ１９６のような他の周辺出力装置も含んでいる。
【００４３】
コンピュータ１１０は、リモートコンピュータ１８０のような一つまたは複数のリモートコンピュータへの論理接続を使用するネットワーク環境で動作可能である。リモートコンピュータ１８０は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ，ピア装置、又は他の共通ネットワークノードでよく、コンピュータ１１０と関連して上述した多くの、又は全ての要素を含むが、メモリ記憶装置１８１だけを図４で説明している。図４に示した論理接続はローカルエリアネットワーク（ＬＡＮ）１７１とワイドエリアネットワーク（ＷＡＮ）１７３を含むが、他のネットワークも含んでいる。そのようなネットワーク環境は、オフィス、企業内コンピュータネットワーク、イントラネット、インターネットではありふれている。
【００４４】
ＬＡＮネットワーク環境で使用される場合、コンピュータ１１０はネットワークインタフェース即ちアダプタ１７０を介してＬＡＮ１７１に接続される。ＷＡＮネットワーク環境で使用される場合、コンピュータ１１０は普通モデム１７２、又はインターネットのようなＷＡＮ１７３上で通信を確立するための他の手段を備える。モデム１７２は、内蔵又は外付けであるが、ユーザ入力インタフェース１６０、又は他の適当な仕組みを介してシステムバス１２１に接続できる。ネットワーク環境では、コンピュータ１１０、又はその一部に関連して表わされたプログラム・モジュールはリモートメモリストレージ装置に記憶することができる。例を挙げれば、制限するものではないが、図４はメモリ装置１８１にあるリモートアプリケーションプログラム１８５を示す。当然のことながら、図示したネットワーク接続は例であり、コンピュータ間の通信リンクを確立する他の方法を使用してもよい。
【００４５】
発明の内容は構造特徴、および／又は方法論的行為に特化した言語で記述されているが、付属の特許請求範囲で定義された発明の内容は、上記の固有のプロパティや行為には必ずしも限定されないと理解できる。むしろ、上記の固有のプロパティや行為は特許請求範囲を実装する形式の例として公開される。
【図面の簡単な説明】
【００４６】
【図１】フラッシュクエリシステムの一例のブロック図である。
【図２】クエリフラッシュ方法の一例を示すフロー図である。
【図３】ファイルシステムレイアウトの一例を示す図である。
【図４】実施形態と態様の例が実装されているコンピューティング環境の一例のブロック図である。
【図１】
2009532761.tif 000003
【図２】
2009532761.tif 000004
【図３】
2009532761.tif 000005
【図４】
2009532761.tif 000006
【国際調査報告】
2009532761.tif 000007
2009532761.tif 000008