(57)【特許請求の範囲】
【請求項１】
コンピューターによって実現される方法であって、第１のソリッドステート・ストレージ・ロケーションと第２のソリッドステート・ストレージ・ロケーションとを選択的に用いる方法において、
受け取られたデータと関連する入力／出力動作に基づいて、前記受け取られたデータに対して生じうる入力／出力動作である発生予測を示す前記受け取られたデータの特性を決定するステップと、
前記受け取られたデータに関して決定された前記特性に基づいて、前記第１のソリッドステート・ストレージ・ロケーションと前記第２のソリッドステート・ストレージ・ロケーションとの間での前記受け取られたデータの配分を決定するステップと、
前記決定された配分に基づいて、前記第１のソリッドステート・ストレージ・ロケーションと前記第２のソリッドステート・ストレージ・ロケーションとの間で前記受け取られたデータを配分するステップであって、前記第１のソリッドステート・ストレージ・ロケーションに配分されるデータは入力／出力動作の第１の発生予測を有し、前記第２のソリッドステート・ストレージ・ロケーションに配分されるデータは入力／出力動作の第２の発生予測を有し、前記第１の発生予測と前記第２の発生予測とは異なる、ステップと、
を含むことを特徴とする方法。
【請求項２】
請求項１記載の方法において、入力／出力動作の前記発生予測は頻度特性を含むことを特徴とする方法。
【請求項３】
請求項１記載の方法において、前記受け取られたデータは、（ａ）１回書き込まれ、書き込まれた後では読み出されるだけ、（ｂ）稀に書き込まれ、稀に読み出される、（ｃ）頻繁に書き込まれ、稀に読み出される、（ｄ）稀に書き込まれ、頻繁に読み出される、（ｅ）頻繁に書き込まれ、頻繁に読み出される、の中のいずれかひとつに分類されることを特徴とする方法。
【請求項４】
請求項３記載の方法において、前記受け取られたデータは、前記第１のソリッドステート・ストレージ・ロケーションと前記第２のソリッドステート・ストレージ・ロケーションとの間で、前記分類の中の少なくとも１つに基づいて配分されることを特徴とする方法。
【請求項５】
請求項１記載の方法において、前記配分されたデータの１又は複数のモニタされた属性に基づいて、前記第１のソリッドステート・ストレージ・ロケーションと前記第２のソリッドステート・ストレージ・ロケーションとの間で前記配分されたデータを再配分するステップを更に含むことを特徴とする方法。
【請求項６】
請求項５記載の方法において、前記１又は複数のモニタされた属性は、（ａ）コンピューターの使用との関係で、前記配分されたデータがどのくらい頻繁にアクセスされたか、（ｂ）前記配分されたデータは現在の動作に対してどのくらい重要であるか、（ｃ）前記配分されたデータのファイル・サイズ、（ｄ）前記配分されたデータの実際の入力／出力アクセス頻度特性、の中の少なくとも１つを含むことを特徴とする方法。
【請求項７】
請求項１記載の方法において、前記受け取られたデータはファイルを含み、入力／出力動作の前記発生予測は前記ファイルへのアクセスの頻度を含むことを特徴とする方法。
【請求項８】
請求項１記載の方法において、前記第１のソリッドステート・ストレージ・ロケーションは入力／出力動作の前記第１の発生予測に対応する第１のクラスタイプを有し、前記第２のソリッドステート・ストレージ・ロケーションは入力／出力動作の前記第２の発生予測に対応する第２のクラスタイプを有することを特徴とする方法。
【請求項９】
請求項１記載の方法において、オペレーティングシステムを用いて前記第１のソリッドステート・ストレージ・ロケーションと前記第２のソリッドステート・ストレージ・ロケーションとに対するそれぞれのクラスタイプを決定するステップを更に含むことを特徴とする方法。
【請求項１０】
オペレーティングシステムと関連してメモリーを配分するソリッドステート配分モジュールであって、
第１のソリッドステート・ストレージ・ロケーションの第１のクラスタイプと第２のソリッドステート・ストレージ・ロケーションの第２のクラスタイプとを受け取るクラスタイプ受取手段と、
受け取られたデータと関連する入力／出力動作に基づいて、前記受け取られたデータに対して生じうる入力／出力動作である発生予測を示す１又は複数の特性を決定する受取データ特性決定手段と、
前記受け取られたデータに関して決定された特性と前記第１及び第２のクラスタイプとに基づいて、前記受け取られたデータを、前記第１のソリッドステート・ストレージ・ロケーションと前記第２のソリッドステート・ストレージ・ロケーションとの間で配分するソリッドステート・ストレージ・ロケーション配分手段と、
を備えていることを特徴とするソリッドステート配分モジュール。
【請求項１１】
請求項１０記載のソリッドステート配分モジュールにおいて、前記クラスタイプ受取手段は、
前記第１のソリッドステート・ストレージ・ロケーションの第１の入力／出力アクセス頻度特性を前記第１のクラスタイプとして受け取り、
前記第２のソリッドステート・ストレージ・ロケーションの第２の入力／出力アクセス頻度特性を前記第２のクラスタイプとして受け取ることを特徴とするソリッドステート配分モジュール。
【請求項１２】
請求項１０記載のソリッドステート配分モジュールにおいて、前記ソリッドステート・ストレージ・ロケーション配分手段は、
前記配分されたデータに対する入力／出力動作の実際の発生に基づいて、前記配分されたデータを、前記第１のソリッドステート・ストレージ・ロケーションと前記第２のソリッドステート・ストレージ・ロケーションとの間で再配分することを特徴とするソリッドステート配分モジュール。
【請求項１３】
請求項１０記載のソリッドステート配分モジュールにおいて、ハードディスク・ドライブ・エミュレータとして構成されたフラッシュ・メモリー・ストレージ・モジュールを含むことを特徴とするソリッドステート配分モジュール。
【請求項１４】
請求項１０記載のソリッドステート配分モジュールにおいて、前記入力／出力動作は、（ａ）１回書き込まれ書き込まれた後では読み出されるだけの動作の集合と、（ｂ）稀に書き込まれ頻繁に読み出される動作の集合と、（ｃ）稀に書き込まれ稀に読み出される動作の集合と、（ｄ）頻繁に書き込まれ頻繁に読み出される動作の集合と、（ｅ）頻繁に書き込まれ稀に読み出される動作の集合と、の中のいずれかひとつを含むことを特徴とするソリッドステート配分モジュール。
【請求項１５】
請求項１０記載のソリッドステート配分モジュールにおいて、前記クラスタイプ受取手段は、前記第１のクラスタイプと前記第２のクラスタイプとをオペレーティングシステムから受け取ることを特徴とするソリッドステート配分モジュール。
【請求項１６】
コンピューター実行可能命令が記憶されているコンピューター可読記憶媒体であって、前記コンピューター実行可能命令は、
第１のソリッドステート・ストレージ・ロケーションと第２のソリッドステート・ストレージ・ロケーションとの間での受け取られたデータの配分を、前記受け取られたデータと関連する入力／出力動作に基づいて前記受け取られたデータに対して生じうる入力／出力動作である発生予測を示す１又は複数の特性に基づいて決定するステップであって、前記第１のソリッドステート・ストレージ・ロケーションは第１の入力／出力アクセス頻度特性を有すると予測される受け取られたデータを記憶するように構成され、前記第２のソリッドステート・ストレージ・ロケーションは第２の入力／出力アクセス頻度特性を有すると予測される受け取られたデータを記憶するように構成されている、ステップと、
前記決定された配分に基づいて、前記受け取られたデータを、前記第１のソリッドステート・ストレージ・ロケーションと前記第２のソリッドステート・ストレージ・ロケーションとの間で配分するステップと、
を含む方法をコンピューターに実行させることを特徴とするコンピューター可読記憶媒体。
【請求項１７】
請求項１６記載のコンピューター可読記憶媒体において、前記方法は、
前記第１及び第２のソリッドステート・ストレージ・ロケーションを用いてハードディスクドライブをエミュレートするステップを更に含むことを特徴とするコンピューター可読記憶媒体。
【請求項１８】
請求項１６記載のコンピューター可読記憶媒体において、前記方法は、
前記配分されたデータの１又は複数のモニタされた属性に基づいて、前記配分されたデータを、前記第１のソリッドステート・ストレージ・ロケーションと前記第２のソリッドステート・ストレージ・ロケーションとの間で再配分するステップを更に含み、前記１又は複数のモニタされた属性は、前記配分されたデータの現在の動作に対する重要性と前記配分されたデータのデータサイズとの少なくとも一方を含むことを特徴とするコンピューター可読記憶媒体。
【請求項１９】
請求項１６記載のコンピューター可読記憶媒体において、前記方法は、
受け取られたデータを、当該受け取られたデータと関連する前記１又は複数の特性に基づいて、（ａ）１回書き込まれ書き込まれた後では読み出されるだけの動作の集合と、（ｂ）稀に書き込まれ頻繁に読み出される動作の集合と、（ｃ）稀に書き込まれ稀に読み出される動作の集合と、（ｄ）頻繁に書き込まれ頻繁に読み出される動作の集合と、（ｅ）頻繁に書き込まれ稀に読み出される動作の集合と、の中の少なくともひとつに分類するステップを更に含むことを特徴とするコンピューター可読記憶媒体。
【請求項２０】
請求項１６記載のコンピューター可読記憶媒体において、前記受け取られたデータと関連する前記１又は複数の特性は、前記受け取られたデータのファイルタイプから導かれた、前記受け取られたデータに対する入力／出力動作の発生予測を含むことを特徴とするコンピューター可読記憶媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
ＳＳＤ（ソリッドステートドライブ）は、不揮発性メモリーを使用してデータを格納し、従来のハードディスクドライブに見られる回転する円盤を含まないデータ・ストレージ・デバイスである。ＳＳＤは、動く部品を全く有さず、極度の衝撃、振動、および温度変化に耐えることができるので、ＳＳＤは、従来のハードディスクドライブに関連するシークタイム、待ち時間、ならびにその他の電気機械的な遅延および障害を解消する。これらの属性の結果、ＳＳＤは、企業向けのノートブックＰＣおよびサブノートブック、ウルトラモバイルＰＣ、ならびに医療セクタ向け、および家庭用電子機器セクタ向けのタブレットＰＣなどの市場においてますます普及している。
【０００２】
しかし、ＳＳＤを利用することに関する技術の現状には多くの限界が存在する。例えば、ＳＳＤのストレージ当たりの費用比率は、円盤ベースのハードドライブのストレージ当たりの費用比率と比べて、相当に高止まりしている。
【０００３】
さらに、従来のハードドライブに取って代わるのに十分な書き込み速度を有する、６４ギガバイトを超える大容量ＳＳＤを提供する企業は、ほんの一握りしか存在しない。しかし、これらのドライブでさえ、数量が限られ、非常に高価であり、さらに特別な要求によってしか入手可能でない。その結果、ＳＳＤは、主流の消費者市場の外で価格設定されており、さらに数量が非常に限られている。
【発明の概要】
【０００４】
この発明の概要は、詳細な説明において後段でさらに説明される選定された概念を、簡略化された形態で紹介するように与えられる。この発明の概要は、特許請求される主題の重要な特徴、または不可欠な特徴を特定することを意図しておらず、特許請求される主題の範囲を確定する助けとして使用されることも意図していない。
【０００５】
複数の異種のソリッドステート・ストレージ・ロケーションを選択的に利用するための方法が、開示される。この技術は、最初に、複数の異種のソリッドステート・ストレージ・ロケーションに関するクラスタイプを受け取る。この受け取られたデータの特性が、決定される。この受け取られたデータは、次に、この決定された特性に基づいて、その複数の異種のソリッドステート・ストレージ・ロケーションの１つに割り当てられる。
【０００６】
本技術は、異種のタイプのソリッドステート・ロケーションの集合が、そのソリッドステート・ロケーション・メモリー・タイプに対応するデータを受け取ることを可能にして、メモリーのストレージ当たりの費用比率を最終的に低くする。さらに、これらの異種のタイプのソリッドステート・ロケーションを組み込むことは、ＳＤＤが、オペレーティングシステムをサポートすることを可能にする。また、本技術は、コンピューター上の既存のファイルが、使用されるメモリー空間の、より低いストレージ当たりの費用比率をもたらすように再配置されることも可能にする。このため、本技術は、メモリーのストレージ当たりの費用比率を低減すること、ならびにハードディスクドライブをＳＳＤで置き換えることを可能にする。
【０００７】
本明細書に組み込まれ、本明細書の一部を成す添付の図面は、複数の異種のソリッドステート・ストレージ・ロケーションを選択的に利用するための技術の実施形態を示し、さらに、説明とともに、後述の原理を説明する役割をする。
【図面の簡単な説明】
【０００８】
【図１】複数の異種のソリッドステート・ストレージ・ロケーションを選択的に利用するための本技術の実施形態に従って使用される例示的なコンピューターシステムを示す図である。
【図２Ａ】本技術の一実施形態によるオペレーティングシステムに関連するメモリーを割り当てるための例示的なソリッドステート割り当てモジュールを示すブロック図である。
【図２Ｂ】本技術の一実施形態によるオペレーティングシステムに関連するメモリーを割り当てるための例示的なソリッドステート割り当てモジュールを示すブロック図である。
【図３】本技術の一実施形態による複数の異種のソリッドステート・ストレージ・ロケーションを選択的に利用するための例示的な方法を示す流れ図である。
【図４】本技術の一実施形態による複数の異種のソリッドステート・ストレージ・ロケーションを選択的に利用するための実施例を示す流れ図である。
【発明を実施するための形態】
【０００９】
この説明において参照される図面は、特に明記される場合を除き、一律の縮尺に従わずに描かれているものと理解されたい。
次に、添付の図面に実施例が示される、複数の異種のソリッドステート・ストレージ・ロケーションを選択的に利用するための本技術の実施形態を詳細に参照する。複数の異種のソリッドステート・ストレージ・ロケーションを選択的に利用するための技術は、様々な実施形態に関連して説明されるが、これらの実施形態は、複数の異種のソリッドステート・ストレージ・ロケーションを選択的に利用するための本技術を、これらの実施形態に限定することは意図していないことが理解されよう。それどころか、複数の異種のソリッドステート・ストレージ・ロケーションを選択的に利用するための本技術は、添付の特許請求の範囲によって規定される様々な実施形態の趣旨と範囲に含まれることが可能な代替形態、変形形態、および均等形態を範囲に含むものとされる。
【００１０】
さらに、以下の詳細な説明において、複数の異種のソリッドステート・ストレージ・ロケーションを選択的に利用するための本技術の徹底的な理解をもたらすために、多数の特定の詳細が示される。しかし、複数の異種のソリッドステート・ストレージ・ロケーションを選択的に利用するための本技術は、これらの特定の詳細なしに実施されることも可能である。その他、よく知られた方法、手続き、構成要素、および回路は、本実施形態の態様を不必要に不明瞭にしないよう、詳細に説明されてはいない。
【００１１】
特に明記しない限り、以下の説明から明白なとおり、この詳細な説明の全体にわたって、「受け取ること」、「決定すること」、「割り当てること」、「エミュレートすること」、「サポートすること」、「分類すること」、「アクセスすること」、「動かすこと」、「利用すること」、「ルーティングすること」、「再配置すること」などの用語を利用する説明は、コンピューターシステム、または類似した電子コンピューティングデバイスのアクションおよびプロセスを指すものと理解される。このコンピューターシステム、または類似した電子コンピューティングデバイスは、コンピューターシステムのレジスタ内およびメモリー内の物理的（電子的）量として表されたデータを操作して、コンピューターシステムメモリ内もしくはコンピューターシステムレジスタ内、あるいは他のそのような情報記憶デバイス、情報伝送デバイス、または情報表示デバイスの内部の物理的量として同様に表された他のデータに変換する。複数の異種のソリッドステート・ストレージ・ロケーションを選択的に利用するための本技術は、例えば、光コンピューターおよび機械コンピューターなどの他のコンピューターシステムの使用にもよく適している。
（例示的なコンピューターシステム環境）
次に図１を参照すると、複数の異種のソリッドステート・ストレージ・ロケーションを選択的に利用するための技術のいくつかの部分は、例えば、コンピューターシステムのコンピューターが使用できる媒体の中に存在するコンピューター可読命令およびコンピューター実行可能命令から成る。つまり、図１は、複数の異種のソリッドステート・ストレージ・ロケーションを選択的に利用するための本技術の、後段で説明される、実施形態を実施するのに使用されることが可能なタイプのコンピューターの一例を示す。
【００１２】
図１は、複数の異種のソリッドステート・ストレージ・ロケーションを選択的に利用するための本技術の実施形態に従って使用される例示的なコンピューターシステム１００を示す。図１のシステム１００は、一例に過ぎず、複数の異種のソリッドステート・ストレージ・ロケーションを選択的に利用するための本技術は、汎用のネットワーク化されたコンピューターシステム、組み込み型コンピューターシステム、ルーター、スイッチ、サーバーデバイス、家庭用デバイス、様々な中間デバイス／人工物、スタンドアロンのコンピューターシステムなどを含む、いくつかの異なるコンピューターシステム上、またはそのようなシステム内で動作することが可能であるものと理解される。図１に示されるとおり、図１のコンピューターシステム１００は、例えば、システム１００に結合されたフロッピー（登録商標）ディスク、コンパクトディスクなどの周辺コンピューター可読媒体１０２を有することによく適している。
【００１３】
図１のシステム１００は、情報を通信するためのアドレス／データバス１０４、および情報および命令を処理するためにバス１０４に結合されたプロセッサー１０６Ａを含む。図１に示されるとおり、システム１００は、複数のプロセッサー１０６Ａ、１０６Ｂ、および１０６Ｃが存在するマルチプロセッサー環境にもよく適している。逆に、システム１００は、例えば、プロセッサー１０６Ａなどの単一のプロセッサーを有することにもよく適している。プロセッサー１０６Ａ、１０６Ｂ、および１０６Ｃは、様々なタイプのマイクロプロセッサーのいずれであってもよい。また、システム１００は、プロセッサー１０６Ａ、１０６Ｂ、および１０６Ｃのための情報および命令を格納するためにバス１０４に結合された、コンピューターが使用できる揮発性メモリー１０８、例えば、ＲＡＭ（ランダムアクセスメモリー）などのデータストレージフィーチャーも含む。
【００１４】
また、システム１００は、プロセッサー１０６Ａ、１０６Ｂ、および１０６Ｃのための静的な情報および命令を格納するためにバス１０４に結合された、コンピューターが使用できる不揮発性メモリー１１０、例えば、ＲＯＭ（読み取り専用メモリー）も含む。やはりシステム１００内に存在するのが、情報および命令を格納するためにバス１０４に結合されたデータストレージユニット１１２（例えば、磁気ディスクおよび磁気ディスクドライブ、または光ディスクおよび光ディスクドライブ）である。また、システム１００は、情報およびコマンド選択をプロセッサー１０６Ａに、またはプロセッサー１０６Ａ、１０６Ｂ、および１０６Ｃに通信するためにバス１０４に結合された、英数字キーおよびファンクションキーを含むオプションの英数字入力デバイス１１４も含む。また、システム１００は、ユーザーによって入力された情報およびコマンド選択をプロセッサー１０６Ａに、またはプロセッサー１０６Ａ、１０６Ｂ、および１０６Ｃに通信するためにバス１０４に結合されたオプションのカーソル制御デバイス１１６も含む。また、本実施形態のシステム１００は、情報を表示するためにバス１０４に結合されたオプションのディスプレイデバイス１１８も含む。
【００１５】
やはり図１を参照すると、図１のオプションのディスプレイデバイス１１８は、液晶ディスプレイ、陰極線管、プラズマディスプレイデバイス、またはユーザーに認識可能なグラフィックイメージおよび英数字を作成するのに適した他のディスプレイデバイスであることが可能である。オプションのカーソル制御デバイス１１６は、コンピューターユーザーが、ディスプレイデバイス１１８の表示スクリーン上で目に見えるシンボル（カーソル）の動きを動的に伝達することを可能にする。トラックボール、マウス、タッチパッド、ジョイスティック、あるいは所与の方向、または所与の変位の仕方の動きを伝達することができる英数字入力デバイス１１４上の特殊キーを含め、カーソル制御デバイス１１６の多くの実施形態が、当技術分野において知られている。代替として、カーソルは、特殊キーおよびキー・シーケンス・コマンドを使用する英数字入力デバイス１１４からの入力を介して導かれ、さらに／または活性化され得ることが理解されよう。
【００１６】
また、システム１００は、例えば、音声コマンドなどの他の手段によって導かれるカーソルを有することにもよく適している。また、システム１００は、システム１００を外部エンティティーに結合するための入出力デバイス１２０も含む。例えば、一実施形態では、入出力デバイス１２０は、システム１００と、インターネットなどの、ただし、インターネットには限定されない外部ネットワークとの間で有線通信または無線通信を可能にするためのモデムである。複数の異種のソリッドステート・ストレージ・ロケーションを選択的に利用するための本技術のより詳細な説明が、後段で見られる。
【００１７】
やはり図１を参照すると、システム１００に関する他の様々な構成要素が示されている。具体的には、存在する場合、オペレーティングシステム１２２、アプリケーション１２４、モジュール１２６、およびデータ１２８が、通常、コンピューターが使用できる揮発性メモリー１０８、例えば、ＲＡＭ（ランダムアクセスメモリー）とデータストレージユニット１２２のいずれか、または何らかの組み合わせの中に存在するものとして示される。しかし、一部の実施形態では、オペレーティングシステム１２２は、ネットワーク上、またはフラッシュドライブ上などの他のロケーションに格納されることが可能であること、さらにオペレーティングシステム１２２は、例えば、インターネットへの結合を介して遠隔ロケーションからアクセスされることが可能であることが理解される。一実施形態では、複数の異種のソリッドステート・ストレージ・ロケーションを選択的に利用するための本技術は、例えば、ＲＡＭ１０８内部のメモリーロケーション、およびデータストレージユニット１１２内部のメモリー領域にアプリケーション１２４またはモジュール１２６として格納される。
【００１８】
また、システム１００は、オペレーティングシステム１２２に結合されたソリッドステート割り当てモジュール１３０も含む。一実施形態では、ソリッドステート割り当てモジュール１３０は、オペレーティングシステム１２２内に組み込まれることが可能であるが、別の実施形態では、ソリッドステート割り当てモジュール１３０は、オペレーティングシステムと通信するように結合されて、オペレーティングシステムの外部にあることが可能である。さらに別の実施形態では、ソリッドステート割り当てモジュール１３０は、フラッシュメモリーデバイスである。
【００１９】
コンピューティングシステム１００は、適切なコンピューティング環境の一例に過ぎず、本技術の用法または機能の範囲について何ら限界を示唆することは意図していない。また、コンピューティング環境１００が、例示的なコンピューティングシステム１００に示される構成要素のいずれか１つの構成要素または構成要素の組み合わせと関係する依存関係または要件を有すると解釈されるべきでもない。
【００２０】
本技術は、コンピューターによって実行される、プログラムモジュールなどのコンピューター実行可能命令の一般的な文脈で説明されることが可能である。一般に、プログラムモジュールには、特定のタスクを実行する、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、構成要素、データ構造などが含まれる。また、本技術は、通信ネットワークを介してリンクされた遠隔処理デバイスによってタスクが実行される分散コンピューティング環境において実施されることも可能である。分散コンピューティング環境では、プログラムモジュールは、メモリー・ストレージ・デバイスを含むローカルのコンピューター記憶媒体と遠隔のコンピューター記憶媒体の両方の中に配置されることが可能である。
（概要）
概要として、一実施形態では、本技術は、複数の異種のソリッドステート・ストレージ・ロケーションを選択的に利用するための方法を提供し、したがって、ソリッドステート割り当てモジュールは、低いストレージ当たりの費用比率を可能にする。例えば、オペレーティングシステムが、ソリッドステート割り当てモジュールのクラスタイプ・レシーバーに、それぞれの異種のソリッドステート・ストレージ・ロケーションが、どのような種類のデータを保持することを選好するかを記述するクラスタイプを送る。また、オペレーティングシステムは、ソリッドステート割り当てモジュールの受け取りデータ特性ディターミナーに、入力／出力操作に関連するデータを送信する。
【００２１】
次に、受け取りデータ特性ディターミナーが、受け取られたデータがいずれのソリッドステート・ストレージ・ロケーションに属するかを決定する。次に、受け取りデータ特性ディターミナーは、この決定を、ソリッドステート割り当てモジュールの異種ソリッドステート・ストレージ・ロケーション・アロケーターに伝える。次に、異種ソリッドステート・ストレージ・ロケーション・アロケーターが、受け取りデータ特性ディターミナーの命令に従って、受け取られたデータを異種のソリッドステート・ストレージ・ロケーションに割り当てる。
【００２２】
一実施形態では、オペレーティングシステムは、ソリッドステート割り当てモジュールと通信するように結合されるが、別の実施形態は、ソリッドステート割り当てモジュールが、オペレーティングシステム内に完全に組み込まれることを可能にする。さらに、別の実施形態では、ソリッドステート割り当てモジュールは、異種のソリッドステート・ストレージ・ロケーションと通信するように結合される一方で、リムーバブルなスマートカードなどの単一のユニット内に組み込まれてもいる。別の実施形態では、ソリッドステート割り当てモジュールは、異種のソリッドステート・ストレージ・ロケーションの外部にあり、異種のソリッドステート・ストレージ・ロケーションと通信するように結合される。さらに、組み込まれた異種ソリッドステート・ストレージ・ロケーション・アロケーターを有するソリッドステート割り当てモジュールが無い状態で、一実施形態では、オペレーティングシステムが、類似した機能を実行することができる。
【００２３】
一実施形態では、ソリッドステート・ストレージ・ロケーションは、ハードディスクドライブをエミュレートする。別の実施形態では、ソリッドステート・ストレージ・ロケーションは、少なくとも１つのフラッシュメモリー・ストレージ・ロケーションを含む。
【００２４】
要するに、本技術の実施形態は、複数の異種のソリッドステート・ストレージ・ロケーションの各ロケーションに関するクラスタイプを受け取るクラスタイプ・レシーバーと、この受け取られたデータの特性を決定する受け取りデータ特性ディターミナーと、この受け取られたデータの特性に基づいて、その複数の異種のソリッドステート・ストレージ・ロケーションの１つに、この受け取られたデータを割り当てる異種ソリッドステート・ストレージ・ロケーション・アロケーターとを含む、複数の異種のソリッドステート・ストレージ・ロケーションを選択的に利用するためのコンピューターによって実施される方法を提供する。ソリッドステート割り当てモジュールに結合された複数の異種のソリッドステート・ストレージ・ロケーションを使用することにより、本技術は、データの低いストレージ当たりの費用比率を可能にする。
（アーキテクチャ）
次に図２Ａを参照すると、本技術の一実施形態による、オペレーティングシステムに関連するメモリーを割り当てるための例示的なソリッドステート割り当てモジュールのブロック図が、示されている。一般に、オペレーティングシステム２００に関連するメモリーを割り当てるためのソリッドステート割り当てモジュールは、クラスタイプ・レシーバー２１０と、受け取りデータ特性ディターミナー２２０と、異種ソリッドステート・ストレージ・ロケーション・アロケーター２３０とを含み、以上すべては、ソリッドステート・ストレージ・ロケーションＡ２４０、ソリッドステート・ストレージ・ロケーションＢ２４５、ソリッドステート・ストレージ・ロケーションＣ２５０、およびソリッドステート・ストレージ・ロケーションｎ．．．２５５と通信するように結合される。
【００２５】
さらに、線２０５は、オペレーティングシステム２００からクラスタイプ・レシーバー２１０に送られるデータの経路を表す。線２２５は、オペレーティングシステム２００から受け取りデータ特性ディターミナー２２０に送られるデータの特性を記述する情報の経路を表す。線２３５は、ソリッドステート・ストレージ・ロケーション・アロケーター２３０から異種のソリッドステート・ストレージ・ロケーションＡ２４０、Ｂ２４５、Ｃ２５０、およびｎ．．．２５５に送られるデータの経路を表す。さらに、経路２０５、２２５、および２３５は、有線または無線を含むいくつかの仕方で、様々な構成要素を接続することが可能である。
【００２６】
一実施形態では、経路２０５上でクラスタイプ・レシーバー２１０は、複数の異種のソリッドステート・ストレージ・ロケーションＡ２４０、Ｂ２４５、Ｃ２５０、およびｎ．．．２５５のクラスタイプを受け取るように構成される。クラスタイプ・レシーバー２１０は、各ソリッドステート・ストレージ・ロケーションＡ２４０、Ｂ２４５、Ｃ２５０、およびｎ．．．２５５がどのような種類のデータを保持するかを記述するクラスタイプ・データを受け取る。ソリッドステート・ストレージ・ロケーションｎ．．．２５５は、ソリッドステート・ストレージ・ロケーションＡ２４０、Ｂ２４５、およびＣ２５０のロケーションの他の、所定の数の異種のソリッドステート・ストレージ・ロケーションを表す。
【００２７】
例えば、ソリッドステート・ストレージ・ロケーションＡ２４０は、１回、書き込まれ、稀にしか読み取られないデータを保持し、ソリッドステート・ストレージ・ロケーションＢ２４５は、稀にしか書き込まれず、頻繁に読み取られるデータを保持し、さらにソリッドステート・ストレージ・ロケーションＣ２５０は、頻繁に書き込まれ、頻繁に読み取られるデータを保持する。さらに、ソリッドステート・ストレージ・ロケーションｎ．．．２５５は、さらに２つのソリッドステート・ストレージ・デバイス、ＤおよびＥというデバイスを表す。ソリッドステート・ストレージ・デバイスＤは、稀にしか書き込まれず、稀にしか読み取られないデータを保持し、さらにソリッドステート・ストレージ・デバイスＥは、かなり頻繁に書き込まれ、かなり頻繁に読み取られるデータを保持する。ソリッドステート・ストレージ・ロケーションＡ２４０、Ｂ２４５、Ｃ２５０、およびｎ．．．２５５が保持するデータのタイプは、クラスタイプとして表現される。
【００２８】
別の実施形態では、クラスタイプ・レシーバー２１０が、２つだけの異種のソリッドステート・ストレージ・ロケーションＡ２４０およびＢ２４５に関するクラスタイプを受け取るように構成される。ソリッドステート・ストレージ・ロケーションＡ２４０は、１回、書き込まれ、稀にしか読み取られないデータを保持し、ソリッドステート・ストレージ・ロケーションＢ２４５は、稀にしか書き込まれず、稀にしか読み取られないデータを保持する。ソリッドステート・ストレージ・ロケーションＡ２４０およびＢ２４５が保持するデータのタイプは、クラスタイプとして表現される。
【００２９】
さらなる一例では、クラスタイプ・レシーバー２１０が、３つだけの異種のソリッドステート・ストレージ・ロケーションＡ２４０、Ｂ２４５、およびＣ２５０に関するクラスタイプを受け取るように構成される。ソリッドステート・ストレージ・ロケーションＡ２４０は、１回、書き込まれ、稀にしか読み取られないデータを保持し、ソリッドステート・ストレージ・ロケーションＢ２４５は、稀にしか書き込まれず、頻繁に読み取られるデータを保持し、さらにソリッドステート・ストレージ・ロケーションＣ２５０は、頻繁に書き込まれ、頻繁に読み取られるデータを保持する。ソリッドステート・ストレージ・ロケーションＡ２４０、Ｂ２４５、およびＣ２５０が保持するデータのタイプは、クラスタイプとして表現される。
【００３０】
一実施形態では、受け取りデータ特性ディターミナー２２０は、オペレーティングシステム２００から受け取られたデータの特性を決定するように構成される。受け取りデータ特性ディターミナー２２０によってオペレーティングシステム２００から受け取られるデータは、入力／出力操作のタイプに関連する。例えば、データは、入力／出力操作のタイプに基づいて、以下のクラスに分類されることが可能である。すなわち、（１）１回、書き込まれ、書き込みの後、読み取り専用、（２）稀にしか書き込まれず、頻繁に読み取られる、および（３）頻繁に書き込まれ、頻繁に読み取られる、である。
【００３１】
１回、書き込まれ、書き込みの後、読み取り専用であるデータの例には、オペレーティングシステム・ファイルおよびアプリケーション・バイナリ・ファイルが含まれる。稀にしか書き込まれず、頻繁に読み取られるデータの例には、ユーザーデータ、設定、ワードファイル、データスプレッドシート、およびアドレス帳が含まれる。頻繁に書き込まれ、頻繁に読み取られるデータの例には、オペレーティングシステム・ページ・ファイル、オペレーティングシステム・ファイル、レジストリ、ログ、およびキャッシュが含まれる。
【００３２】
受け取りデータ特性ディターミナー２２０は、経路２２５上から入力／出力操作に関連するデータの様々なタイプの組み合わせを受け取ることが可能である。例えば、一実施形態では、受け取りデータ特性ディターミナー２２０は次いで、１回、書き込み、書き込みの後、読み取り専用であることを要求する入力／出力操作に関連するデータ、および頻繁に書き込み、頻繁に読み取ることを要求する入力／出力操作に関連するデータを受け取る。別の実施形態では、受け取りデータ特性ディターミナー２２０は、稀にしか書き込まず、頻繁に読み取ることを要求する入力／出力操作に関連するデータ、および頻繁に書き込み、頻繁に読み取ることを要求する入力／出力操作に関連するデータを受け取る。
【００３３】
例えば、以下のソリッドステート・ストレージ・ロケーションＡ２４０、Ｂ２４５、Ｃ２５０、およびｎ．．．２５５の少なくとも２つに関するクラスタイプ、ならびにオペレーティングシステム２００からの入力／出力操作に関連するデータを受け取った後、受け取りデータ特性ディターミナー２２０は次いで、入力／出力操作に関連する受け取られたデータを、いずれのソリッドステート・ストレージ・ロケーションＡ２４０、Ｂ２４５、Ｃ２５０、およびｎ．．．２５５に入れるかを決定する。この決定は、各ソリッドステート・ストレージ・ロケーションのクラスタイプと互いに関係する、オペレーティングシステム２００からの受け取られたデータに基づく。次に、受け取りデータ特性ディターミナー２２０は、この決定を異種ソリッドステート・ストレージ・ロケーション・アロケーター２３０に伝える。
【００３４】
一実施形態では、異種ソリッドステート・ストレージ・ロケーション・アロケーター２３０が、受け取られたデータの特性に基づいて、複数の異種のソリッドステート・ストレージ・ロケーションの１つに、オペレーティングシステム２００から受け取られたデータを割り当てるように構成される。異種ソリッドステート・ストレージ・ロケーション・アロケーター２３０は、この受け取られたデータを、経路２２５に沿って、以下のソリッドステート・ストレージ・ロケーションＡ２４０、Ｂ２４５、Ｃ２５０、およびｎ．．．２５５の少なくとも２つに送る。
【００３５】
本技術において、クラスタイプ・レシーバー２１０、受け取りデータ特性ディターミナー２２０、および異種ソリッドステート・ストレージ・ロケーション・アロケーター２３０が、或るモジュール内部で組み合わされて、ただし、ソリッドステート・ストレージ・ロケーションＡ２４０、Ｂ２４５、Ｃ２５０、およびｎ．．．２５５を含む別個のモジュールと通信するように結合されて現れるようにすることが可能である。さらに、本技術の別の例は、クラスタイプ・レシーバー２１０、受け取りデータ特性ディターミナー２２０、および異種ソリッドステート・ストレージ・ロケーション・アロケーター２３０が、互いに通信するように結合されているが、別々のモジュールの中に存在している一方で、それでも、ソリッドステート・ストレージ・ロケーションＡ２４０、Ｂ２４５、Ｃ２５０、およびｎ．．．２５５と通信するように結合されているようにすることが可能である。
【００３６】
一実施形態では、異種ソリッドステート・ストレージ・ロケーション・アロケーター２３０が、他のソリッドステート・ストレージ・ロケーションＡ２４０、Ｂ２４５、Ｃ２５０、およびｎ．．．２５５に加え、フラッシュメモリー・ストレージ・モジュールに、受け取られたデータを割り当てる。さらに別の実施形態では、異種ソリッドステート・ストレージ・ロケーション・アロケーター２３０が、ハードディスクドライブ・エミュレーターであるフラッシュメモリー・ストレージ・モジュールに、受け取られたデータを割り当てる。
【００３７】
本技術の実施例において、ソリッドステート割り当てモジュール２１５が、単一のストレージ・ロケーション２６０上で組み合わされるように、ソリッドステート・ストレージ・ロケーションＡ２４０、Ｂ２４５、Ｃ２５０、およびｎ．．．２５５と通信するように結合される。この単一のストレージ・ロケーションは、リムーバブルなカードであることが可能である。コンピューターチップが、このリムーバブルなカード内に組み込まれる。このコンピューターチップは、ソリッドステート割り当てモジュール２１５と異種ソリッドステート・ストレージ・ロケーション・アロケーター２３０の組み合わせを含む。このリムーバブルなカードの挿入は、ユーザーが、コンピューターデバイスの中に、ソリッドステート・ストレージ・ロケーションＡ２４０、Ｂ２４５、Ｃ２５０、およびｎ．．．２５５と通信するように結合されたソリッドステート割り当てモジュール２１５を挿入することを可能にする。リムーバブルなカードが挿入されると、ソリッドステート割り当てモジュール２１５は、コンピューターデバイスのオペレーティングシステム２００と通信するように結合されているようになる。
【００３８】
次に図２Ｂを参照すると、本技術の一実施形態による、オペレーティングシステム２００に関連するメモリーを割り当てるための例示的なソリッドステート割り当てモジュールのブロック図が、示されている。一般に、オペレーティングシステム２００に関連するメモリーを割り当てるためのソリッドステート割り当てモジュールは、クラスタイプ・レシーバー２１０、受け取りデータ特性ディターミナー２２０、異種ソリッドステート・ストレージ・ロケーション・アロケーター２３０、ソリッドステート・ストレージ・ロケーションＡ２４０、ソリッドステート・ストレージ・ロケーションＢ２４５、ソリッド・ストレージ・ロケーションＣ２５０、およびソリッドステート・ストレージ・ロケーションｎ．．．２５５を含む。
【００３９】
さらに、線２３５は、ソリッドステート・ストレージ・ロケーション・アロケーター２３０から異種のソリッドステート・ストレージ・ロケーションＡ２４０、Ｂ２４５、Ｃ２５０、およびｎ．．．２５５に送られるデータの経路を表す。さらに、経路２３５は、有線または無線を含むいくつかの仕方で、異種ソリッドステート・ストレージ・ロケーション・アロケーター２３０をソリッドステート・ストレージ・ロケーションＡ２４０、Ｂ２４５、Ｃ２５０、およびｎ．．．２５５に接続することが可能である。
【００４０】
一実施形態では、ソリッドステート割り当てモジュール２１５は、オペレーティングシステム２００内に組み込まれるが、ソリッドステート・ストレージ・ロケーションＡ２４０、Ｂ２４５、Ｃ２５０、およびｎ．．．２５５と通信するように外部から結合される。さらに、異種ソリッドステート・ストレージ・ロケーション・アロケーター２３０が、ソリッドステート割り当てモジュール２２０内で実施され、組み込まれること、またはオペレーティングシステム２００の一部としてソフトウェアで実施されることが可能である。さらに、ソリッドステート・ストレージ・ロケーションＡ２４０、Ｂ２４５、Ｃ２５０、およびｎ．．．２５５は、オペレーティングシステム２００に外部から結合される。
（動作）
次に図３を参照すると、本技術の一実施形態による、複数の異種のソリッドステート・ストレージ・ロケーションを選択的に利用するためのコンピューターによって実施される例示的な方法の流れ図３００が、示されている。
【００４１】
次に図３の３０５、および図２Ａを参照すると、一実施形態が、複数の異種のソリッドステート・ストレージ・ロケーションのそれぞれに関するクラスタイプを受け取る。本明細書で説明されるとおり、本技術の別の実施形態では、経路２０５に沿って送られるクラスタイプが、クラスタイプ・レシーバー２１０によって受け取られる。一般に、クラスタイプは、各ソリッドステート・ストレージ・ロケーションＡ２４０、Ｂ２４５、Ｃ２５０、およびｎ．．．２５５が、どのような種類のデータを保持するかを記述する。ソリッドステート・ストレージ・ロケーションｎ．．．２５５は、ソリッドステート・ストレージ・ロケーションＡ２４０、Ｂ２４５、およびＣ２５０のロケーションの他の、所定の数の異種のソリッドステート・ストレージ・ロケーションを表す。
【００４２】
本技術の一実施形態は、オペレーティングシステム２００を利用してクラスタイプを決定することによって、複数の異種のソリッドステート・ストレージ・ロケーションに関するクラスタイプを受け取る（３０５）。オペレーティングシステム２００が、ソリッドステート割り当てモジュール２１５と通信するように結合され、モジュール２１５の外部にあることが可能であり、あるいはソリッドステート割り当てモジュール２１５が、オペレーティングシステム２００内に組み込まれることが可能である。次に、クラスタイプ・レシーバー２１０が、複数の異種のソリッドステート・ストレージ・ロケーションＡ２４０、Ｂ２４５、Ｃ２５０、およびｎ．．．２５５の各ロケーションのクラスタイプを受け取りデータ特性ディターミナー２２０に伝える。
【００４３】
次に図３の３１０、および図２Ａを参照すると、一実施形態が、受け取られたデータの特性を決定する（３１０）。本明細書で説明されるとおり、本技術の別の実施形態では、受け取られたデータの特性を決定すること（３１０）は、入力／出力操作に関連する受け取られたデータを、複数の異種のソリッドステート・ストレージ・ロケーションＡ２４０、Ｂ２４５、Ｃ２５０、およびｎ．．．２５５のそれぞれに関するクラスタイプに対応する少なくとも１つのクラスに分類することを含む。入力／出力操作に関連する、この受け取られたデータは、オペレーティングシステム２００から経路２２５に沿って受け取りデータ特性ディターミナー２２０に送られた。さらに、受け取りデータ特性ディターミナー２２０が、ソリッドステート・ストレージ・ロケーションＡ２４０、Ｂ２４５、Ｃ２５０、およびｎ．．．２５５への、この受け取られたデータの割り当てを決定した後、受け取りデータ特性ディターミナー２２０は、この決定を異種のソリッドステート・ストレージ・ロケーション・アロケーター２３０に通信する。
【００４４】
本技術の別の実施形態では、受け取られたデータの特性を決定すること（３１０）は、データ重要度特性を利用することを含む。データ重要度特性は、このデータを保持するのにどのようなタイプのメモリーが要求されるかを記述する役割をする、入力／出力操作に関連するデータの態様を含む。例えば、オペレーティングシステム２００は、入力／出力操作に関連するデータを、経路２２５に沿って受け取り特性ディターミナー２２０に送る。受け取り特性ディターミナー２２０は、このデータを、以下の特性に従ってグループに分割する。すなわち、（１）１回、書き込まれ、書き込まれた後、読み取り専用であるデータ、（２）稀にしか書き込まれず、頻繁に読み取られるデータ、および（３）頻繁に書き込まれ、頻繁に読み取られるデータである。次に、受け取りデータ特性ディターミナー２２０は、クラスタイプ・レシーバー２１０から受け取られたソリッドステート・ストレージ・ロケーションのクラスタイプに基づいて、これらのグループ化された、受け取られたデータのそれぞれが、いずれのソリッドステート・ストレージ・ロケーションＡ２４０、Ｂ２４５、Ｃ２５０、およびｎ．．．２５５に送られるかを決定する。
【００４５】
例えば、オペレーティングシステム２００が、ソリッドステート・ストレージ・ロケーションＡ２４０は、稀にしか書き込まれず、頻繁に読み取られるデータのためのストレージ・ロケーションであるという情報をクラスタイプ・レシーバー２１０に送る。オペレーティングシステム２００は、ソリッドステート・ストレージ・ロケーションＡ２４０、Ｂ２４５、Ｃ２５０、およびｎ．．．２５５のいずれか１つに格納されることが意図される、入力／出力操作に関連するデータを、経路２２５を介して受け取りデータ特性ディターミナー２２０に送る。受け取りデータ特性ディターミナー２２０は、これらの入力／出力操作に関連するデータのタイプを決定する。次に、受け取りデータ特性ディターミナー２２０は、受け取られたデータの或るパーセンテージが、稀にしか書き込まれず、頻繁に読み取られるデータであることを決定する。次に、データ特性ディターミナー２２０は、この稀にしか書き込まれず、頻繁に読み取られる受け取られたデータが、ソリッドステート・ストレージ・ロケーションＡ２４０に割り当てられるべきことを、このストレージ・ロケーションが、稀にしか書き込まれず、頻繁に読み取られるデータを保持するように構成されているので、決定する。
【００４６】
次に図３の３１５、および図２Ａを参照すると、一実施形態が、受け取りデータ特性ディターミナー２２０によって決定された特性に基づいて、複数の異種のソリッドステート・ストレージ・ロケーションＡ２４０、Ｂ２４５、Ｃ２５０、およびｎ．．．２５５の１つに、受け取られたデータを割り当てる。受け取られたデータは、異種のソリッドステート・ストレージ・ロケーションＡ２４０、Ｂ２４５、Ｃ２５０、およびｎ．．．２５５の少なくとも２つに送られる。
【００４７】
受け取られたデータの特性に基づいて、複数の異種のソリッドステート・ストレージ・ロケーションの１つに、受け取られたデータを割り当てること（３１５）は、受け取りデータ特性ディターミナー２２０が、ファイルの属性にアクセスした後、複数の異種のソリッドステート・ストレージ・ロケーションＡ２４０、Ｂ２４５、Ｃ２５０、およびｎ．．．２５５の１つから、複数の異種のソリッドステート・ストレージ・ロケーションＡ２４０、Ｂ２４５、Ｃ２５０、およびｎ．．．２５５の別の１つにファイルを移すことを含み、このファイルは、このファイルの前記属性に基づいて、複数の異種のソリッドステート・ストレージ・ロケーションの１つに格納される。ファイルの属性には、コンピューターの使用中にファイルにどれだけ頻繁にアクセスが行われたか、本日の操作に、このファイルがどれだけ重要であるか、このファイルのサイズなどのデータ、ならびに入力／出力操作に関連するデータが含まれる。
【００４８】
一般に、受け取りデータ特性ディターミナー２２０は、複数の異種のソリッドステート・ストレージ・ロケーションＡ２４０、Ｂ２４５、Ｃ２５０、およびｎ．．．２５５内に格納されたデータの属性を監視する能力を有する。受け取りデータ特性ディターミナー２２０が、ソリッドステート・ストレージ・ロケーションＡ２４０、Ｂ２４５、Ｃ２５０、およびｎ．．．２５５の１つに格納されたファイルにアクセスし、そのファイルの属性が、ソリッドステート・ストレージ・ロケーションＡ２４０、Ｂ２４５、Ｃ２５０、およびｎ．．．２５５の異なるロケーションに、そのファイルが移されるようにすることを決定した場合、その際、受け取りデータ特性ディターミナー２２０は、この決定を異種ソリッドステート・ストレージ・ロケーション・アロケーター２３０に伝える。
【００４９】
さらに、異種ソリッドステート・ストレージ・ロケーション・アロケーター２３０が、或るファイルが、ソリッドステート・ストレージ・ロケーションＡ２４０、Ｂ２４５、Ｃ２５０、およびｎ．．．２５５の異なるロケーションに移される必要が或るという通信を、受け取りデータ特性ディターミナー２２０から受け取った後、異種ソリッドステート・ストレージ・ロケーション・アロケーター２３０は、これらの命令に従う。異種ソリッドステート・ストレージ・ロケーション・アロケーター２３０は、ソリッドステート・ストレージ・ロケーションＡ２４０、Ｂ２４５、Ｃ２５０、およびｎ．．．２５５の中に入り込み、受け取りデータ特性ディターミナー２２０の命令に従って、それらのファイルを再配置する。
【００５０】
例えば、データファイルが、６ヶ月の期間にわたって読み取られていないものとする。また、受け取りデータ特性ディターミナー２２０も、このデータファイルが、６ヶ月の期間にわたって読み取られていないことを認識する。また、このファイルは、偶々、稀にしか書き込まれず、頻繁に読み取られるデータを収容するソリッドステート・ストレージ・ロケーションに現在、存在している。このデータファイルは、或る期間にわたって、もはや頻繁に読み取られていないので、受け取りデータ特性ディターミナー２２０は、稀にしか書き込まれず、稀にしか読み取られないデータを収容するソリッドステート・ストレージ・ロケーションｎ．．．２５５にこのデータファイルを入れることによって、このデータファイルを再配置するよう異種ソリッドステート・ストレージ・ロケーション・アロケーター２３０に命令する。
【００５１】
さらに、組み込まれたディターミナーを有するソリッドステート割り当てモジュール２１５が存在しない状態で、一実施形態では、オペレーティングシステム２００が、ソリッドステート割り当てモジュール２１５と同様の機能を実行することが可能である。例えば、オペレーティングシステム２００に、２つより多くの不揮発性ソリッドステート・ストレージ・ロケーションｎ．．．２５５が接続されているものとする。その場合、オペレーティングシステム２００は、ハードウェアベースの異種ソリッドステート・ストレージ・ロケーション・アロケーター２３０が決定を行うのと同一の仕方で、いずれのソリッドステート・ストレージ・ロケーションｎ．．．２５５にデータブロックを格納するかの決定を行うことができる。
【００５２】
図３および図２Ａを再び参照すると、複数の異種のソリッドステート・ストレージ・ロケーション３００を選択的に利用するためのコンピューターによって実施される方法の別の実施形態、複数の異種のソリッドステート・ストレージ・ロケーションＡ２４０、Ｂ２４５、Ｃ２５０、およびｎ．．．２５５が、ハードディスクドライブをエミュレートする。一実施形態では、複数の異種のソリッドステート・ストレージ・ロケーションＡ２４０、Ｂ２４５、Ｃ２５０、およびｎ．．．２５５は、ハードディスクドライブをエミュレートして、ハードディスクドライブに実質的に取って代わる。別の実施形態では、複数の異種のソリッドステート・ストレージ・ロケーションＡ２４０、Ｂ２４５、Ｃ２５０、およびｎ．．．２５５は、ハードディスクドライブの一部分をエミュレートする。
【００５３】
本技術の別の実施例において、複数の異種のソリッドステート・ストレージ・ロケーションＡ２４０、Ｂ２４５、Ｃ２５０、およびｎ．．．２５５は、オペレーティングシステム２００をサポートする。ソリッドステート割り当てモジュール２１５が、オペレーティングシステム２００と通信するように結合される。別の実施形態では、ソリッドステート割り当てモジュール２１５が、オペレーティングシステム２００内に組み込まれる。また、ソリッドステート割り当てモジュール２１５は、ソリッドステート・ストレージ・ロケーションＡ２４０、Ｂ２４５、Ｃ２５０、およびｎ．．．２５５と通信するように結合される。ソリッドステート・ストレージ・ロケーションＡ２４０、Ｂ２４５、Ｃ２５０、およびｎ．．．２５５は、オペレーティングシステム２００のためのメモリー記憶空間の役割をする。
【００５４】
別の実施例において、オペレーティングシステム２００をサポートする複数の異種のソリッドステート・ストレージ・ロケーションＡ２４０、Ｂ２４５、Ｃ２５０、およびｎ．．．２５５が、少なくとも１つのフラッシュメモリー・ストレージ・ロケーションを含む。例えば、複数の異種のソリッドステート・ストレージ・ロケーションＡ２４０、Ｂ２４５、Ｃ２５０、およびｎ．．．２５５のうち、ソリッドステート・ストレージ・ロケーションＡ２４０が、フラッシュメモリー・ストレージ・ロケーションであるのに対して、ソリッドステート・ストレージ・ロケーションＢ２４５、Ｃ２５０、およびｎ．．．２５５は、他の何らかのタイプのソリッドステート・ストレージ・ロケーションである。
【００５５】
別の例示的な方法において、複数の異種のソリッドステート・ストレージ・ロケーションＡ２４０、Ｂ２４５、Ｃ２５０、およびｎ．．．２５５のすべてが、フラッシュメモリー・ストレージ・ロケーションである。さらに、別の実施例では、複数の異種のソリッドステート・ストレージ・ロケーションＡ２４０、Ｂ２４５、Ｃ２５０、およびｎ．．．２５５のうち、ソリッドステート・ストレージ・ロケーションＡ２４０およびＢ２４５が、フラッシュメモリー・ストレージ・ロケーションであるのに対して、ストレージ・ロケーションＣ２５０およびｎ．．．２５５は、他の何らかのタイプのソリッドステート・ストレージ・ロケーションである。
【００５６】
次に図４を参照すると、本技術の一実施形態による、実行された際、複数の異種のソリッドステート・ストレージ・ロケーションを選択的に利用する方法をコンピューターシステムに実行させる、コンピューターが使用できる媒体上の命令の流れ図４００が、示されている。
【００５７】
図４の４０５、および図２Ａを参照すると、一実施形態が、複数の異種のソリッドステート・ストレージ・ロケーションに関するクラスタイプを受け取る（４０５）。複数の異種のソリッドステート・ストレージ・ロケーションに関するクラスタイプを受け取ること（４０５）は、複数の異種のソリッドステート・ストレージ・ロケーションに関するクラスタイプを受け取ること（３０５）と同様である。複数の異種のソリッドステート・ストレージ・ロケーションに関するクラスタイプを受け取ること（３０５）に関するここでの説明は、複数の異種のソリッドステート・ストレージ・ロケーションに関するクラスタイプを受け取ること（４０５）に当てはまるので、簡明のため、これらの説明は、繰り返されない。
【００５８】
図４の４１０、および図２Ａを参照すると、一実施形態が、複数の異種のソリッドステート・ストレージ・ロケーションのクラスタイプ、および入力／出力操作の受け取られた特性を利用して、ストレージ・ロケーションを選択する（４１０）。複数の異種のソリッドステート・ストレージ・ロケーションのクラスタイプ、および入力／出力操作の受け取られた特性を利用して、ストレージ・ロケーションを選択すること（４１０）は、受け取られたデータの特性を決定すること（３１０）と同様である。受け取られたデータの特性を決定すること（３１０）に関するここでの説明は、複数の異種のソリッドステート・ストレージ・ロケーションのクラスタイプ、および入力／出力操作の受け取られた特性を利用して、ストレージ・ロケーションを選択すること（４１０）に当てはまるので、簡明のため、これらの説明は、繰り返されない。
【００５９】
さらに、図４の４１０、および図２Ａを参照すると、一実施形態では、複数の異種のソリッドステート・ストレージ・ロケーションのクラスタイプ、および入力／出力操作の受け取られた特性を利用して、ストレージ・ロケーションを選択すること（４１０）は、アクセス頻度特性を利用することをさらに含む。このアクセス頻度特性は、複数の異種のソリッドステート・ストレージ・ロケーションＡ２４０、Ｂ２４５、Ｃ２５０、およびｎ．．．２５５の１つが、どれだけ頻繁に書き込まれ、さらに／または読み取られるかを記述するデータを指す。
【００６０】
例として、異種のソリッドステート・ストレージ・ロケーションＡ２４０が、稀にしか書き込まれず、頻繁に読み取られるべきファイル用のメモリー空間を含むものとする。また、異種のソリッドステート・ストレージ・ロケーションＡ２４０に格納されたファイルが、前年に１回だけしか読み取られていないものとする。受け取りデータ特性ディターミナー２２０は、所定の命令に応じて、このファイルを異種のソリッドステート・ストレージ・ロケーションＢ２４５に移すことを、異種のソリッドステート・ストレージ・ロケーションＢ２４５が、稀にしか書き込まれず、稀にしか読み取られないファイル用のメモリー空間を含むので、決定することができる。
【００６１】
次に図４の４１５、および図２Ａを参照すると、一実施形態が、入力／出力動作に関連するデータを選択されたストレージ・ロケーションにルーティングする（４１５）。別の実施形態では、入力／出力操作に関連するデータを選択されたストレージ・ロケーションにルーティングすること（４１５）は、複数の異種のソリッドステート・ストレージ・ロケーションｎ．．．２５５の集合を表す単一のアドレス指定可能なストレージ名前空間を利用することをさらに含む。例えば、異種ソリッドステート・ストレージ・ロケーション・アロケーター２３０が、複数のソリッドステート・ストレージ・ロケーションｎ．．．２５５に関する単一のストレージ名前空間だけを公開する。その結果、バックアップシステムまたはオペレーティングシステム２００のようなアプリケーションには、個別の各ソリッドステート・ストレージ・ロケーションＡ２４０、Ｂ２４５、Ｃ２５０、および／またはｎ．．．２５５ではなく、すべてのソリッドステート・ストレージ・ロケーションｎ．．．２５５を表す単一のアドレス指定可能なストレージ名前空間だけが見える。
【００６２】
入力／出力操作に関連するデータを選択されたストレージ・ロケーションにルーティングすること（４１５）は、受け取られたデータの特性に基づいて、複数の異種のソリッドステート・ストレージ・ロケーションの１つに、受け取られたデータを割り当てること（３１５）と同様である。受け取られたデータの特性に基づいて、複数の異種のソリッドステート・ストレージ・ロケーションの１つに、受け取られたデータを割り当てること（３１５）に関するここでの説明は、入力／出力操作に関連するデータを選択されたストレージ・ロケーションにルーティングすること（４１５）に当てはまるので、簡明のため、これらの説明は、繰り返されない。
【００６３】
このように、本技術は、複数の異種のソリッドステート・ストレージ・ロケーションＡ２４０、Ｂ２４５、Ｃ２５０、およびｎ．．．２５５を選択的に利用するためのコンピューターによって実施される方法を提供する。さらに、入力／出力操作に関連する様々なデータに適した複数の異種のソリッドステート・ストレージ・ロケーションを本技術が可能にすることは、メモリー空間における格納されたデータのストレージ当たりの費用比率の低減を可能にする。さらに、本技術は、複数の異種のソリッドステート・ストレージ・ロケーションＡ２４０、Ｂ２４５、Ｃ２５０、およびｎ．．．２５５、または以上の何らかの組み合わせが、ハードディスクドライブをエミュレートすることを可能にする。さらに、本技術は、フラッシュメモリー記憶空間の使用が、任意の数の複数の異種のソリッドステート・ストレージ・ロケーションＡ２４０、Ｂ２４５、Ｃ２５０、およびｎ．．．２５５として使用されることを可能にする。
【００６４】
主題は、構造上の特徴、および／または方法論上の動作に特有の言葉で説明されてきたが、添付の特許請求の範囲において規定される主題は、前述した特定の特徴または動作に必ずしも限定されないことを理解されたい。むしろ、前述した特定の特徴および動作は、特許請求の範囲を実施する例示的な形態として開示されている。
【図１】
0005384576.tif 000002
【図２Ａ】
0005384576.tif 000003
【図２Ｂ】
0005384576.tif 000004
【図３】
0005384576.tif 000005
【図４】
0005384576.tif 000006