(57)【特許請求の範囲】
【請求項１】
フラッシュドライブのＩ／Ｏ操作をフィルタリングするコンピュータ実行方法であって、前記方法は、
前記フラッシュドライブに向けて送られるＩ／Ｏ要求を受け取るステップと、
前記Ｉ／Ｏ要求が大量書き込み操作に関連付けられているかどうかを判定するステップであって、前記判定は、前記Ｉ／Ｏ要求が、ページングファイル、プリフェッチ操作、または検索インデックス作成操作の少なくとも一つに関連付けられているかどうかに基づく、ステップと、
前記Ｉ／Ｏ要求が、大量書き込み操作に関連付けられているとの判定に応答して、Ｉ／Ｏ要求の結果として書き込まれるデータの圧縮を管理すること、Ｉ／Ｏ要求の結果として読み出される圧縮データの解凍を管理すること、Ｉ／Ｏ要求のバッファリングを管理すること、および周辺ソリッドステートストレージドライブへのＩ／Ｏ要求のリダイレクトを管理することから成る一群のフラッシュドライブＩ／Ｏ管理アクションから、実行すべきフラッシュドライブＩ／Ｏ管理アクションの少なくとも一つを選択するステップ、または、
前記Ｉ／Ｏ要求が低重要度書き込み操作に関連付けられているかどうかを判定するステップと、
前記Ｉ／Ｏ要求が低重要度書き込み操作に関連付けられていないとの判定に応答して、前記Ｉ／Ｏ要求を前記フラッシュドライブに転送するステップと、
前記Ｉ／Ｏ要求が、大量書き込み操作に関連付けられており、かつ前記Ｉ／Ｏ要求が低重要度書き込み操作に関連付けられていないとの判定に応答して、実行すべきフラッシュドライブＩ／Ｏ管理アクションの前記少なくとも一つを選択しないステップと
の少なくとも一つを実行するステップと
を含むことを特徴とする方法。
【請求項２】
前記データの圧縮を管理することは、オペレーティングシステムに関連付けられているページングファイルのデータを圧縮することを含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記データの圧縮を管理することは、プリフェッチ操作に関連付けられているファイルのデータを圧縮することを含むことを特徴とする請求項１に記載の方法。
【請求項４】
前記データの圧縮を管理することは、検索インデックス作成操作に関連付けられているファイルのデータを圧縮することを含むことを特徴とする請求項１に記載の方法。
【請求項５】
前記データの圧縮を管理することは、前記Ｉ／Ｏ要求の圧縮データをバッファに書き込むことを含むことを特徴とする請求項１に記載の方法。
【請求項６】
前記データの圧縮を管理することは、前記バッファから前記圧縮データを前記フラッシュドライブに書き込むことをさらに含むことを特徴とする請求項５に記載の方法。
【請求項７】
前記大量書き込み操作に関連付けられているデータを、前記フラッシュドライブの代わりにバッファに書き込むステップを含むことを特徴とする請求項１に記載の方法。
【請求項８】
コンピュータ実行可能命令を有するコンピュータ可読記憶媒体であって、前記コンピュータ実行可能命令は、コンピュータによって実行されると、コンピュータに、
フラッシュドライブに向けて送られるＩ／Ｏ要求を受け取るステップと、
前記Ｉ／Ｏ要求が大量書き込み操作に関連付けられているかどうかを判定するステップであって、前記判定は、前記Ｉ／Ｏ要求が、ページングファイル、プリフェッチ操作、または検索インデックス作成操作の少なくとも一つに関連付けられているかどうかに基づく、ステップと、
大量書き込み操作に関連付けられているとの前記判定に基づいて、
前記大量書き込み操作に関連付けられているデータを前記フラッシュドライブの代わりに第１のバッファに書き込むことと、前記第１のバッファに関連付けられているタイマーのタイムアウトに応答して前記第１のバッファから前記フラッシュドライブに前記データを書き込むこと、とを備える第１のフラッシュドライブＩ／Ｏ管理アクションを実行するステップと、
前記大量書き込み操作に関連付けられているデータを圧縮することと、前記圧縮されたデータを前記フラッシュドライブの代わりに第２のバッファに書き込むことと、更新された圧縮データへの反復または重複書き込みの少なくとも一つである前記圧縮データのバージョンを解決することと、前記第２のバッファに関連付けられるバッファ閾値を超えることに応答して前記更新された圧縮データを前記第２のバッファから前記フラッシュドライブに書き込むこと、とを備える第２のフラッシュドライブＩ／Ｏ管理アクションを実行するステップと
の少なくとも一つを実行するステップと
を含む方法を実行させることを特徴とするコンピュータ可読記憶媒体。
【請求項９】
前記第１のバッファまたは前記第２のバッファの少なくとも一つは、一つまたは複数のバケットを備えることを特徴とする請求項８に記載のコンピュータ可読記憶媒体。
【請求項１０】
前記一つまたは複数のバケットのそれぞれのバケットは、一つまたは複数のオフセットに対応することを特徴とする請求項９に記載のコンピュータ可読記憶媒体。
【請求項１１】
前記圧縮データを、前記フラッシュドライブの代わりに、周辺ソリッドステートストレージに書き込むステップをさらに含むことを特徴とする請求項８に記載のコンピュータ可読記憶媒体。
【請求項１２】
前記Ｉ／Ｏ要求は、オペレーティングシステムからの要求であることを特徴とする請求項８に記載のコンピュータ可読記憶媒体。
【請求項１３】
前記オペレーティングシステムによって前記フラッシュドライブに対し実行される書き込み操作の回数は、前記大量書き込み操作に関連付けられているデータの整合性を維持しながら、減らされることを特徴とする請求項１２に記載のコンピュータ可読記憶媒体。
【請求項１４】
フラッシュドライブへの書き込み操作を減らすためのモジュールであって、前記モジュールは、
前記フラッシュドライブと結合するように構成され、前記フラッシュドライブに向けて送られるＩ／Ｏ要求をインターセプトするように構成されたフラッシュドライブフィルタを備え、
前記フラッシュドライブフィルタは、
前記Ｉ／Ｏ要求が大量書き込み操作に関連付けられているかどうかを判定するＩ／Ｏ特性判定器であって、前記判定は、前記Ｉ／Ｏ要求が、ページングファイル、プリフェッチ操作、または検索インデックス作成操作の少なくとも一つに関連付けられているかどうかに基づく、Ｉ／Ｏ特性判定器と、
大量書き込み操作に関連付けられているという前記判定に少なくとも部分的に基づきフラッシュドライブＩ／Ｏ管理アクションを選択するフラッシュドライブＩ／Ｏ管理選択器と、
前記フラッシュドライブへの書き込み操作を減らすことに向けて寄与するフラッシュドライブＩ／Ｏ管理アクションの実行を管理するように構成されたフラッシュドライブＩ／Ｏマネージャと、
バッファに結合されるバッファマネージャであって、前記バッファマネージャは、前記フラッシュドライブフィルタが前記Ｉ／Ｏ要求を前記バッファにバッファリングし、前記バッファ内の反復データ、冗長データ、または重複データの少なくとも一つを解決するように構成されている、バッファマネージャと
を備えることを特徴とするモジュール。
【請求項１５】
前記フラッシュドライブフィルタは、
前記フラッシュドライブに向けて送られる選択された書き込み操作を圧縮し、前記フラッシュドライブから読み出された圧縮データを解凍する圧縮／解凍モジュールへの結合をさらに備えることを特徴とする請求項１４に記載のモジュール。
【請求項１６】
前記フラッシュドライブＩ／Ｏ管理選択器は、前記Ｉ／Ｏ要求が低重要度書き込み操作に関連付けられているかどうかに少なくとも部分的に基づいて前記フラッシュドライブＩ／Ｏ管理アクションを選択するように構成されることを特徴とする請求項１４に記載のモジュール。
【請求項１７】
前記バッファマネージャは、前記バッファに関連付けられるタイマーのタイムアウトに応答して前記バッファから前記フラッシュドライブに第１のバージョンのデータを書き込むように構成されることを特徴とする請求項１４に記載のモジュール。
【請求項１８】
前記バッファマネージャは、第２のバージョンのデータが前記バッファに書き込まれると前記バッファ内の第１のバージョンのデータを更新するように構成されることを特徴とする請求項１４に記載のモジュール。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フラッシュドライブの寿命の延長に関する。
【背景技術】
【０００２】
機械式ハードディスクドライブ上の様々な位置に対し読み出しおよび書き込みを行うときに、ハードディスクドライブヘッドがディスク上のいろいろな位置に移動するのに必要なシーク時間のため、待ち時間を伴うことが多い。一方、フラッシュメモリは、可動部分を持たないソリッドステート記録機構であり、そのため、機械式ハードドライブに比べてより高速な読み出しアクセス時間を有する。これは、フラッシュドライブからの読み出しには、一般的に機械式ハードドライブによくある、ヘッドシーク時間による待ち時間が発生しないからである。このため、フラッシュドライブからの読み出しは、機械式ドライブからの読み出しに比べて１０倍以上高速になる場合がある。この読み出し速度の向上が、コンピュータが利用される多くの状況においてフラッシュドライブが機械式ハードディスクドライブに取って代わりつつある理由の１つである。
【０００３】
一般的なフラッシュドライブ内のメモリ空間は、セルと呼ばれる複数の領域または配列で構成される。フラッシュメモリの制限は、ランダムに読み出しおよび書き込みを行うことができるが、消去またはクリアはブロック単位でしかできない点である。フラッシュドライブ内のセルは、書き込み／書き換えプロセスの一部としてセルに対しある有限回数のクリア操作が実行されると時間の経過とともに物理的に消耗してゆく。一般的には、１つのセルを消耗するのに要するクリア操作サイクル数は、約１００，０００回から１，０００，０００回の範囲内である。
【０００４】
一般的には、セル内のデータを書き換える必要が生じた場合、古いデータは無効とマークされ、置換データがセル内の利用可能領域に書き込まれる。セル内に利用可能な空き領域がなくなった場合、そのセルはブロック単位でクリアされ、次いで新規データが、クリアされる前にセルから退避された有効なデータとともに、そのクリアされたセルに書き込まれる。このクリア操作により、セルのすでに無効になっている部分を再び書き込めるように解放する。フラッシュドライブにデータを書き込むこのプロセスは、１つのセルに対し実行されるクリア操作の回数を制限することを目指すフラッシュドライブで採用されている「ウェアレベリング」という一技術にすぎない。
【０００５】
フラッシュドライブの容量がより増え、より一般的なものになるにつれ、補助ストレージとして、さらには機械式ディスクドライブの代わりに一次記憶媒体としても使用されることがますます多くなってきている。フラッシュドライブへのこのような増大する依存により、利用するプログラムおよび／またはアプリケーションによっては、フラッシュドライブ内のセルが過剰なストレスに曝されることになる。これにより、現行のウェアレベリング技術を採用していても、フラッシュドライブの寿命が短くなる。寿命が短くなることは、望ましいことではなく、特にフラッシュメモリが一次記憶媒体として使用される場合には、望ましくない。
【０００６】
そこで、フラッシュドライブの上記の欠点および短所のうちのいくつかに対処する技術があれば有益であろう。
【発明の概要】
【０００７】
本概要は、以下の発明の詳細な説明でさらに説明されている選択した概念を簡略化した形式で紹介するために提供するものである。本概要は、特許請求の範囲に記載されている主題事項の重要な特徴または本質的な特徴を特定することを目的とするものでも、特許請求の範囲に記載されている主題事項の範囲の決定に際して、補助として使用することを目的とするものでもない。
【０００８】
フラッシュドライブの入力／出力操作をフィルタリングするコンピュータ実装方法では、フラッシュドライブに向けて送られる入力／出力要求を受け取る。入力／出力要求が、大量書き込み操作に関連付けられているかどうかが判定される。入力／出力要求が、大量書き込み操作に関連付けられている場合、実行すべきフラッシュドライブ入力／出力管理アクションが選択される。選択されたフラッシュドライブ入力／出力管理アクションは、入力／出力要求の結果として書き込まれるデータの圧縮を管理すること、入力／出力要求の結果として読み出される圧縮データの解凍を管理すること、入力／出力要求のバッファリングを管理すること、または周辺ソリッドステートストレージドライブへの入力／出力要求のリダイレクトを管理することなどの管理アクションを含むことができるが、これらに限定されない。入力／出力要求が、大量書き込み操作に関連付けられていない場合、入力／出力要求は、フラッシュドライブに転送される。
【０００９】
フラッシュドライブ入力／出力操作のフィルタリングおよびフラッシュドライブに向けて送られる大量書き込み操作の管理は、共に動作して、他の方法では通常操作の過程でフラッシュドライブに対し書き込みが行われることになるであろう書き込み操作を減らす。フラッシュドライブへの書き込み操作をこのように減らすことで、フラッシュドライブ内のセルに対し実行されるクリア操作が減って、これにより、フラッシュドライブの寿命を延長する。
【図面の簡単な説明】
【００１０】
本明細書に組み込まれ、本明細書の一部をなす、添付の図面は、フラッシュドライブの寿命を延長する技術の実施形態を例示しており、また詳細な説明と併せて、後述の原理を説明するのに役立つ。
【図１】フラッシュドライブの寿命を延長する本技術の実施形態とともに使用可能な例示的なコンピュータシステムの図である。
【図２】本技術の一実施形態による例示的なフラッシュドライブフィルタを示す図である。
【図３】本技術のフラッシュドライブフィルタの一実施形態によって実行される操作の流れ図である。
【図４】本技術の一実施形態によって実行される管理アクションのバッファリングの一例を示す図である。
【図５】本技術の一実施形態によって実行される管理アクションのバッファリングの別の例を示す図である。
【図６】本技術の一実施形態によって実行される操作の流れ図である。
【図７】本技術の一実施形態によって実行される操作の流れ図である。
【００１１】
本説明において参照される図面は、特に断りのない限り、縮尺通りでないことを了承されたい。
【発明を実施するための形態】
【００１２】
次に、フラッシュドライブの寿命を延長する本技術の実施形態を詳細にみてゆくが、この例は、添付の図面に例示されている。フラッシュドライブの寿命を延長する技術は、様々な実施形態に関して説明されるが、これにより、フラッシュドライブの寿命を延長する本技術をこれらの実施形態に限定することを意図しないことを理解されたい。むしろ、フラッシュドライブの寿命を延長する本技術の実施形態は、代替形態、修正形態、および等価形態を対象とすることを目的としており、添付の特許請求の範囲によって定められている様々な実施形態の精神および範囲内に含まれるものとしてよい。さらに、以下の詳細な説明では、フラッシュドライブの寿命を延長する本技術の実施形態を完全に理解できるように、多数の具体的詳細が述べられている。しかし、フラッシュドライブの寿命を延長する本技術に対する様々な実施形態を、これらの具体的詳細なしでも実施することができる。他の場合には、周知の方法、手順、コンポーネント、および回路については、本発明の実施形態の態様を不必要に曖昧にしないため、詳細に説明していない。
【００１３】
以下の議論から明らかなように特に断りのない限り、本発明の詳細な説明全体を通して、「受け取る（こと）」、「判定（する）」、「選択（する）」、「転送（する）」、「管理（する）」、「圧縮（する）」、「解凍（する）」、「書き込む」、「読み出す」、「解決（する）」、「実行（する）」、「インターセプト（する）」、または同様の用語などの用語を使用している場合は、コンピュータシステム（図１のコンピュータシステム１００など）、または類似の電子コンピューティングデバイスのアクションおよびプロセスを指すことを理解されたい。コンピュータシステムまたは類似の電子コンピューティングデバイスは、コンピュータシステムのレジスタおよびメモリ内の物理（電子）量として表されているデータを操作し、コンピュータシステムのメモリもしくはレジスタまたは他のそのような情報ストレージ、伝送、または表示装置内の物理量として同様に表されている他のデータに変換する。フラッシュドライブの寿命を延長する本技術の実施形態は、例えば、光学式コンピュータおよび仮想コンピュータなどの他のコンピュータシステムの使用にも十分に適している。さらに、フラッシュドライブの寿命を延長する技術の実施形態は、これらフラッシュドライブの特性と似たハードウェア特性を有する他のソリッドステート記憶装置の寿命を延長する際にも使用されうることは理解されよう。それに加えて、フラッシュドライブの寿命を延長する本技術のいくつかの実施形態において、ステップのうちの１つまたは複数を手動で実行できることを理解されたい。
【００１４】
（議論の概説）
議論は、本技術の実施形態を動作させるために使用できる、または本技術の実施形態が動作可能な、例示的なコンピュータシステム環境の説明から始まる。議論は、フラッシュドライブの寿命を延長するために動作する、フラッシュドライブフィルタの形態の、例示的なモジュールの説明に進む。フラッシュドライブフィルタのコンポーネントについて、簡単に説明する。次いで、フラッシュドライブフィルタおよびそのコンポーネントの動作について、フラッシュドライブの入力／出力操作をフィルタリングする例示的な方法の説明と併せて、またオペレーティングシステム用の一次ストレージとして使用されるフラッシュドライブの寿命を延長する例示的な方法と併せて、詳細に説明する。
【００１５】
（例示的なコンピュータシステム環境）
ここで図１を参照すると、フラッシュドライブの寿命を延長する技術の様々な実施形態の全部または一部が、例えばコンピュータシステムのコンピュータ使用可能媒体内に常駐する、コンピュータ可読命令およびコンピュータ実行可能命令から構成される。つまり、図１は、フラッシュドライブの寿命を延長する本技術の、以下で議論される実施形態を実装するために使用されうるコンピュータの種類の一例を示している。図１は、フラッシュドライブの寿命を延長する本技術の実施形態により使用される例示的なコンピュータシステム１００を示している。図１のシステム１００は一例にすぎず、またフラッシュドライブの寿命を延長する本技術の実施形態が、汎用ネットワークコンピュータシステム、組み込み型コンピュータシステム、ルーター、スイッチ、サーバー装置、クライアント装置、様々な媒介装置／ノード、スタンドアロンコンピュータシステム、メディアセンター、ポータブルコンピュータシステム、ハンドヘルド装置などを含む、いくつかの異なるコンピュータシステム上で、または多数の異なるコンピュータシステム内で動作しうることを理解されたい。図１に示されているように、図１のコンピュータシステム１００は、例えば、フロッピー（登録商標）ディスク、コンパクトディスク、およびそれに結合された同様のメディアなどの周辺コンピュータ可読媒体１０２を有するように十分に適合される。
【００１６】
図１のシステム１００は、情報を伝達するアドレス／データバス１０４と、情報および命令を処理するバス１０４に結合されているプロセッサ１０６Ａとを備える。図１に示されているように、システム１００は、複数のプロセッサ１０６Ａ、１０６Ｂ、および１０６Ｃが存在するマルチプロセッサ環境にも十分に適している。それと反対に、システム１００は、例えば、プロセッサ１０６Ａなどの単一のプロセッサを有することにも十分に適している。プロセッサ１０６Ａ、１０６Ｂ、および１０６Ｃは、様々な種類のマイクロプロセッサのいずれでもよい。システム１００は、さらに、プロセッサ１０６Ａ、１０６Ｂ、および１０６Ｃに関する情報および命令を格納するためバス１０４に結合されている、コンピュータ使用可能揮発性メモリ１０８、例えば、ランダムアクセスメモリ（ＲＡＭ）などのデータストレージ機能を備える。システム１００は、さらに、プロセッサ１０６Ａ、１０６Ｂ、および１０６Ｃに関する静的情報および命令を格納するためバス１０４に結合されている、コンピュータ使用可能不揮発性メモリ１１０、例えば、読み取り専用メモリ（ＲＯＭ）を備える。また、システム１００内には、一次ストレージとして使用されるソリッドステートフラッシュメモリデバイスであるフラッシュドライブ１１２が存在する。図１に示されているように、フラッシュドライブ１１２は、フラッシュドライブフィルタ２１０を介して、バス１０４に結合されている。フラッシュドライブ１１２は、コンピュータシステム１００用の情報および命令を格納するために使用される。いくつかの実施形態では、システム１００は、それに加えて、またはあるいは、一次ストレージとしてのフラッシュドライブ１１２と併用できる追加の記憶装置（磁気または光ディスクおよびディスクドライブなど）とともに使用するように構成されうる。
【００１７】
システム１００は、さらに、プロセッサ１０６Ａまたはプロセッサ１０６Ａ、１０６Ｂ、および１０６Ｃに情報およびコマンド選択を伝送するためバス１０４に結合された、英数字キーおよびファンクションキーを備えるオプションの英数字入力装置１１４も備える。システム１００は、さらに、プロセッサ１０６Ａまたはプロセッサ１０６Ａ、１０６Ｂ、および１０６Ｃに、ユーザー入力情報およびコマンド選択を伝送するためバス１０４に結合されたオプションのカーソル制御装置１１６も備える。本発明の実施形態のシステム１００は、さらに、情報を表示するためバス１０４に結合されたオプションの表示装置１１８も備える。
【００１８】
さらに図１を参照すると、図１のオプションの表示装置１１８は、液晶デバイス、陰極線管、プラズマディスプレイデバイス、またはユーザーが認識できるグラフィック画像および英数字表示を生成するのに適した他の表示装置とすることができる。オプションのカーソル制御装置１１６により、コンピュータユーザーは、表示装置１１８の表示画面上の可視シンボル（カーソル）の移動を動的に信号で知らせることができ、また表示装置１１８上に表示されている選択可能アイテムのユーザー選択を示すことができる。トラックボール、マウス、タッチパッド、ジョイスティック、あるいは所定の方向の移動または変位方法を信号で知らせることができる英数字入力装置１１４上の特殊キーを含む、カーソル制御装置１１６の多くの実装が、当技術分野で周知である。あるいは、特殊キーおよびキーシーケンスコマンドを使用して英数字入力装置１１４からの入力を介して、カーソルを方向づけ、および／またはアクティブにすることができることを理解されたい。また、システム１００は、例えば、音声コマンドなどの他の手段により方向づけられるカーソルを有することにも十分に適している。システム１００は、さらに、システム１００を外部実体と結合するＩ／Ｏ装置１２０も備える。例えば、一実施形態では、Ｉ／Ｏ装置１２０は、システム１００と、限定はしないが、インターネットなどの外部ネットワークとの間の有線または無線通信を利用できるようにするモデムである。別の実施形態では、例えば、Ｉ／Ｏ装置１２０は、ユニバーサルシリアルバス（ＵＳＢ）ポートである。Ｉ／Ｏ装置１２０がＵＳＢポートである一実施形態では、周辺ストレージ（例えば、ソリッドステートストレージまたは機械式ディスクドライブ）をそれに結合し、本技術の実施形態とともに使用することができる。ソリッドステートストレージのいくつかの例には、メモリカードまたはポータブルフラッシュドライブが含まれる。
【００１９】
さらに図１を参照すると、システム１００について様々な他のコンポーネントが示されている。具体的には、オペレーティングシステム１２２、アプリケーション１２４、モジュール１２６、およびデータ１２８が存在するとき、それらは、コンピュータ使用可能揮発性メモリ１０８、例えば、ランダムアクセスメモリ（ＲＡＭ）およびデータストレージユニット１１２の１つまたはいくつかの組み合わせ中に通常は常駐するものとして示されている。
【００２０】
いくつかの実施形態では、フラッシュドライブの寿命を延長する本技術は、ＲＡＭ  １０８内のメモリロケーションに配置されるか、周辺コンピュータ可読媒体１０２上に格納されるか、またはフラッシュドライブ１１２のメディア上に格納されうる、デバイスドライバなどのアプリケーション１２４またはモジュール１２６として実装される。様々な実施形態において、本明細書で説明されるように、フラッシュドライブの寿命を延長する本技術は、フラッシュドライブ１１２に向けて送られる入力／出力要求を受け取ってフィルタリングするモジュールの全部または一部を含む、フラッシュドライブフィルタ２１０として動作する。このような一実施形態では、図１に示されているように、コンピュータシステム１００（および／またはフラッシュドライブ１１２）は、フラッシュドライブフィルタ２１０を有するか、またはフラッシュドライブフィルタ２１０に結合されるのに十分に適している。
【００２１】
（フラッシュドライブフィルタ）
次に、図２を参照すると、図２は、本技術の一実施形態による例示的なフラッシュドライブフィルタ２１０を示している。フラッシュドライブフィルタ２１０は、フラッシュドライブ１１２などのフラッシュドライブに対する書き込み操作を減らすモジュールである。例えば、一実施形態では、フラッシュドライブフィルタ２１０は、オペレーティングシステムの一部などのソフトウェア層またはモジュールとして実装される。さらに別の実施形態では、フラッシュドライブフィルタ２１０は、ファームウェアモジュールの全部または一部として実装される。さらに別の実施形態では、フラッシュドライブフィルタ２１０は、ハードウェアモジュールで実装される。図２の例示的な実施形態に示されているように、フラッシュドライブフィルタ２１０は、入力／出力（Ｉ／Ｏ）特性判定器（nature determiner）２２０、フラッシュドライブＩ／Ｏ管理選択器２３０、圧縮マネージャ２４１、解凍マネージャ２４２、バッファマネージャ２４３、およびリダイレクトマネージャ２４４から成る。フラッシュドライブフィルタ２１０は、フラッシュドライブと結合されるか、または結合するように構成され、フラッシュドライブへの書き込みおよびクリア操作を減らす。フラッシュドライブのメディアの寿命は、クリア操作の有限の回数によってのみ決まるため、フラッシュドライブフィルタ２１０で実行されるフィルタリングの結果として延長される。
【００２２】
例として、限定はしないが、フラッシュドライブフィルタ２１０は、データ圧縮／解凍モジュール２５０、バッファ２６０、および周辺ストレージ２７０と結合されるように示されている。しかし、様々な実施形態において、これらの結合のうちの１つまたは複数は、データ圧縮／解凍モジュール２５０、バッファ２６０、または周辺ストレージ２７０によって提供されるような機能が特定の実施形態では必要ない場合に、オプションとすることも可能であることは理解されよう。同様に、様々な実施形態において、データ圧縮／解凍モジュール２５０、バッファ２６０、および周辺ストレージ２７０のうちの１つまたは複数の機能は、図に示されているように外部実体との結合を介してアクセスされるのではなく、フラッシュドライブフィルタ２１０に組み込まれるようにすることができることは理解されよう。
【００２３】
データ圧縮／解凍モジュール２５０は、フラッシュドライブフィルタ２１０の管理の下で動作して、選択されたインターセプトされたＩ／Ｏ要求とともにデータ圧縮または解凍を実行する。例えば、一実施形態では、データ圧縮／解凍モジュール２５０は、最初にフラッシュドライブに向けて送られたが、フラッシュドライブフィルタ２１０によってデータ圧縮／解凍モジュール２５０にリダイレクトされた、選択された書き込み操作を圧縮する。同様に、フラッシュドライブフィルタ２１０からの管理の下で、データ圧縮／解凍モジュール２５０は、フラッシュドライブから読み出された圧縮データを解凍する。いくつかの実施形態では、データ圧縮／解凍モジュール２５０は、さらに、データ圧縮時にデータ暗号化を、データ解凍時にデータ復号化を実行する。
【００２４】
バッファ２６０は、フラッシュドライブ２１０の管理の下で使用され、Ｉ／Ｏ要求がフラッシュドライブフィルタ２１０によってバッファリングされるときに、選択されたインターセプトされたＩ／Ｏ要求を受け取る。一実施形態では、ＲＡＭ  １０８（図１）の一部などのランダムアクセスメモリが、バッファ２６０として使用される。
【００２５】
周辺ストレージ２７０は、フラッシュドライブ２１０の管理の下で使用され、Ｉ／Ｏ要求がフラッシュドライブフィルタ２１０によってフラッシュドライブからリダイレクトされるときに、選択されたＩ／Ｏ要求を受け取る。周辺ストレージ２７０は、機械式ハードディスクドライブまたはソリッドステートストレージであってよい。ソリッドステートストレージのいくつかの例には、メモリカード、およびポータブルフラッシュドライブなどの外付けＵＳＢフラッシュドライブがある。
【００２６】
（フラッシュドライブフィルタの操作）
図２に示されているように、フラッシュドライブフィルタ２１０は、フィルタリングされるフラッシュドライブに向けて送られるＩ／Ｏ要求をインターセプトする動作をする。Ｉ／Ｏ要求は、例えば、コンピュータシステム１００上で稼動しているオペレーティングシステムまたはアプリケーションから受け取る。図１および図２に示されているように、フラッシュドライブ１１２は、フラッシュドライブフィルタ２１０が結合することができるフラッシュドライブの一例である。例として、限定はしないが、本明細書の様々な例により、フラッシュドライブフィルタ２１０を使用して、コンピュータシステム１００用の一次ストレージとして動作する、フラッシュドライブ１１２に向けて送られるＩ／Ｏ要求をフィルタリングする方法を示す。同様に、本明細書で説明されている技術の実施形態を用いて、例えばコンピュータシステム１００のＩ／Ｏ装置１２０と取り外し可能なように結合されるポータブルフラッシュドライブなどの他のフラッシュドライブの寿命を延長することができると理解されよう。
【００２７】
Ｉ／Ｏ特性判定器２２０は、Ｉ／Ｏ要求の特性を判定する。フラッシュドライブ１１２へのＩ／Ｏ要求がインターセプトされた後、フラッシュドライブフィルタ２１０のＩ／Ｏ特性判定器２２０は、Ｉ／Ｏ要求を分析して、その特性を判定する。例えば、一実施形態では、Ｉ／Ｏ特性判定器２２０は、Ｉ／Ｏ要求が大量書き込み要求であるかどうかを判定する動作をする。同様に、一実施形態では、Ｉ／Ｏ特性判定器２２０は、さらに、インターセプトされたＩ／Ｏ要求が属する大量書き込み要求の特定のカテゴリを判定する動作をする。一実施形態では、Ｉ／Ｏ特性判定器２２０によって、インターセプトされたＩ／Ｏ要求が大量書き込み要求に関連付けられていないと判定された場合、そのＩ／Ｏ要求は、フラッシュドライブ１１２に転送される。
【００２８】
フラッシュドライブＩ／Ｏ管理選択器２３０は、Ｉ／Ｏ要求の特性に基づいてフラッシュドライブＩ／Ｏ管理アクションを選択する。前の例に続いて、フラッシュドライブＩ／Ｏ管理選択器２３０は、Ｉ／Ｏ特性判定器２２０からインターセプトされたＩ／Ｏ要求の特性を受け取る。インターセプトされたＩ／Ｏ要求の特性に基づき、フラッシュドライブＩ／Ｏ管理選択器２３０は、Ｉ／Ｏ要求が管理される方法を選択する。フラッシュドライブＩ／Ｏ管理選択器２３０は、フラッシュドライブフィルタ２１を構成する利用可能なＩ／Ｏマネージャ（２４１、２４２、２４３、および２４４）からＩ／Ｏマネージャ、したがってＩ／Ｏ要求に対して実行される管理アクションを選択することによって、Ｉ／Ｏ要求が管理される方法の選択を行う。フラッシュドライブフィルタ２１０がただ１つのＩ／Ｏマネージャで構成される場合など、いくつかの実施形態では、フラッシュドライブＩ／Ｏ管理選択器２３０は、必要でない場合がある。
【００２９】
フラッシュドライブＩ／Ｏマネージャ（２４１、２４２、２４３、２４４）は、フラッシュドライブへの書き込み操作を減らすことに寄与するフラッシュドライブＩ／Ｏ管理アクションの実行を管理するように構成される。前の例に続いて、選択されると、フラッシュドライブＩ／Ｏマネージャ（２４１、２４２、２４３、２４４）は、フラッシュドライブ１１２に実行される書き込み操作の総数が必ず減らされるような方法でインターセプトされたＩ／Ｏ要求を管理する。書き込み操作の減少により、フラッシュドライブ１１２のセルに対しクリア操作を実行する必要性が減じ、これにより、フラッシュドライブ１１２の寿命が延長する。フラッシュドライブフィルタ２１０は、４つのフラッシュドライブＩ／Ｏマネージャ（２４１、２４２、２４３、２４４）で構成されていることが示されている。様々な実施形態において、図２に示されているよりも多い、または少ない数のフラッシュドライブＩ／Ｏマネージャを、フラッシュドライブフィルタ２１０に含むことができることは理解されよう。同様に、いくつかの実施形態では、１つまたは複数のフラッシュドライブＩ／Ｏマネージャの機能が、他のフラッシュドライブＩ／Ｏマネージャからアクセスできるか、または他のフラッシュドライブＩ／Ｏマネージャ内に備えることができることは理解されよう。
【００３０】
圧縮マネージャ２４１は、フラッシュドライブ１１２に向けて送られる、選択されたインターセプトされたＩ／Ｏ要求の圧縮を管理する。一実施形態では、圧縮マネージャ２４１を使用して、関連付けられた大量書き込み操作であると判定されるＩ／Ｏ要求の全部または何らかのサブセットを選択的に圧縮する。例えば、選択された書き込み操作に対するデータは、データ圧縮／解凍モジュール２５０へ送られ、データは圧縮されて圧縮データにされる。いくつかの実施形態では、圧縮後、圧縮マネージャ２４１は、圧縮データをフラッシュドライブ１１２に書き込むよう指令する。あるいは、いくつかの実施形態では、圧縮後、圧縮マネージャ２４１は、圧縮データをバッファ２６０または周辺ストレージ２７０に書き込むよう指令する。次いでバッファリングされた圧縮データを、いくつかの実施形態において、バッファ閾値に達した後、フラッシュドライブ１１２に書き込むことができる。データを圧縮することにより、フラッシュドライブ１１２への書き込み操作の回数が減り、その結果、フラッシュドライブ１１２のセルに対し実行されるクリア操作の回数も減る。
【００３１】
解凍マネージャ２４２は、インターセプトされたＩ／Ｏ要求に従って、フラッシュドライブ１１２、バッファ２６０、または周辺ストレージ２７０から読み出すように要求されている圧縮データの解凍を管理する。一実施形態では、読み出される圧縮データは、大量書き込み操作に関連付けられているＩ／Ｏ要求のインターセプトを受けて、前に圧縮されている。解凍マネージャ２４２は、圧縮データが格納されている場所から圧縮データを読み出す操作を管理し、データ圧縮／解凍モジュール２５０に向けて圧縮データを送り、圧縮データが解凍される。次いで、解凍マネージャ２４２は、インターセプトされたＩ／Ｏ要求で指定されるように、解凍済みデータをデータの最後の受け手に送る。
【００３２】
バッファマネージャ２４３は、バッファ２６０に少なくとも一時的に格納されている受け取ったＩ／Ｏ要求のバッファリングを管理する。バッファマネージャ２４３の別の機能は、連続するＩ／Ｏ要求の結果としてバッファ２６０に書き込まれるデータの反復書き込み、冗長書き込み、または重複書き込みを解決することである。一実施形態では、あるユニットのデータの第１のバージョンをバッファ２６０に書き込み、次いで、そのデータの第１のバージョンがそのまま存在しているまま、同じユニットのデータの後続の変更された、または同一のバージョンをバッファ２６０に書き込むという状況で、解決は実行される。一実施形態では、バッファマネージャ２４３は、この状況において同じユニットのデータの２つのバージョンを、第１のバージョンを変更された情報で更新するか、または第１のバージョンを破棄し、第２のバージョンのみを保持することにより解決する。
【００３３】
そのデータユニットの解決されたバージョンは、更新されたデータとみなされる。解決されたそのユニットのデータが圧縮データである場合、そのデータユニットの解決されたバージョンは、更新された圧縮データとみなされる。バッファマネージャ２４３は、バッファ２６０に書き込まれるあるユニットのデータの複数のバージョンを解決することにより、フラッシュディスク１１２への、または周辺ストレージ２７０へのバッファリングされたデータの後続の書き込みの回数を減らす。この解決により、解決を行わなかった場合は必要になるであろう、あるデータユニットの冗長書き込みおよび／またはあるデータユニットの書き換えがなくなる。レジストリファイルへのオペレーティングシステムによる書き込みは、フラッシュドライブ１１２への書き込みを減らすためにバッファ２６０に一時的に格納され、また解決することができる大量書き込み操作の一例である。
【００３４】
リダイレクトマネージャ２４４は、受け取ったＩ／Ｏ要求をリダイレクトして、フラッシュドライブ１１２ではなく、別の場所に書き込む。例えば、一実施形態では、リダイレクトマネージャ２４４は、選択されたＩ／Ｏ要求をリダイレクトして、フラッシュドライブ１１２ではなく、周辺ストレージ２７０に書き込む。このような一実施形態では、これは、Ｉ／Ｏ要求の書き込みをバッファ２６０にリダイレクトし、続いて、バッファ閾値を超えた後、周辺ストレージ２７０にリダイレクトする中間ステップを含むことができる。このようなリダイレクトにより、リダイレクトを行わない場合にフラッシュドライブ１１２へ書き込まれるであろう、書き込み操作の回数が減る。例えば、一実施形態では、周辺ストレージ２７０は、大量書き込み操作を犠牲的に受け取るために使用される安価なポータブルフラッシュドライブであり、フラッシュドライブ１１２の寿命を延長することができる。このような一実施形態では、Ｉ／Ｏ要求のリダイレクトを実行する決定は、Ｉ／Ｏ要求のリダイレクト先となりうる周辺ストレージ２７０またはバッファ２６０の存在に基づくことができる。
【００３５】
リダイレクトを実行する決定は、さらに、Ｉ／Ｏ要求の特性にも基づく。多くの場合において、周辺ストレージ２７０は、容易に（またおそらくはいきなり）取り外し可能なものとすることができ、このため、一実施形態では、低重要度であるが大量である書き込みの操作のデータのみがリダイレクトされる。これにより、例えば、周辺ストレージ２７０が取り外された場合にオペレーティングシステムまたはアプリケーションが使用不可能となる可能性のある重要なデータの喪失を防ぐ。
【００３６】
大量書き込み操作の一例は、オペレーティングシステムのページファイルへの書き込みである。大量書き込み操作の他の例は、コンピュータシステム上で使用中のプリフェッチを行うアプリケーションまたは検索インデックスを作成するアプリケーションによって実行される書き込み操作である。
【００３７】
ページファイルに関して、一般に、これらを使用して、オペレーティングシステムが、コンピュータシステム内に存在するランダムアクセスメモリの制限された量を超えて、追加使用可能メモリを生成するのを補助する。追加メモリを、仮想メモリの技術を通じて生成、および使用することができる。このような技術を利用するために、いくつかのオペレーティングシステムでは、メモリをページと呼ばれるチャンクに分割する。ページのサイズは、オペレーティングシステム毎に異なる可能性があるが、ページという概念は、同じままである。仮想メモリの「ページ」は、メモリ（例えば、ＲＡＭ）内で利用可能とすることができるが、例えば、フラッシュドライブ１１２などの一次ストレージに格納されるページファイル内にもバックアップされるだろう。
【００３８】
オペレーティングシステムの通常動作では、異なる種類のページがある。メモリのいくつかのページは、読み出し専用となっている。実行ファイルは、読み出し専用ページの一例である。メモリのいくつかのページは、読み出しと書き込みの両方である。読み出しおよび書き込みページの一例は、例えば、ワードプロセッサに割り当てられたユーザーデータメモリのページなどのユーザーデータである。ユーザーデータメモリのこのページは、ワードプロセッサによって文書の作成または編集の際に変更が加えられるときに読み書きが行われうる。他のプログラムを使用できるように、このワードプロセッサの文書が最小化された場合、すでにメモリ中にあるページは、すべて一次ストレージに書き込まれ、利用可能なＲＡＭ中でアクティブに使用されているときにそのページを他のページで置き換えることができる。
【００３９】
以上のように、コンピュータシステム１００などのコンピュータの通常動作時に、一般的には、仮想メモリのページファイル内で、相当量の読み書きが実行される。このメモリは、仮想と呼ばれているが、かなりの数の読み書きは実際のものであり、フラッシュドライブ１１２内のメモリセルなどの実記憶場所に対し実行される。
【００４０】
図３は、本技術のフラッシュドライブフィルタ２１０の一実施形態によって実行される操作の流れ図３００である。流れ図３００は、フラッシュドライブ１１２などの、フラッシュドライブに向けて送られるサブジェクトＩ／Ｏ要求に対し実行される操作を示している。サブジェクトＩ／Ｏ要求は、データの圧縮および解凍を用いて、オペレーティングシステムのページング要求に関連付けられている書き込みを減らすように構成されているフラッシュドライブフィルタ２１０の一実施形態によってインターセプトされた要求である。
【００４１】
ステップ３１０において、一実施形態では、Ｉ／Ｏ特性判定器２２０は、フラッシュドライブ１１２に向けて送られるＩ／Ｏ要求を受け取る。Ｉ／Ｏ特性判定器２２０は、Ｉ／Ｏ要求が、大量書き込み操作に関連付けられているかどうかを判定する。フラッシュドライブフィルタ２１０の本発明の態様では、これは、Ｉ／Ｏ要求がページングＩ／Ｏ要求であるかどうかを判定することを含む。そうでない場合、Ｉ／Ｏ要求は、ステップ３２０で、例えば、フラッシュドライブ１１２に転送される。Ｉ／Ｏ要求が転送された後、流れ図３００のこの分岐は、ステップ３９０で終了する。
【００４２】
ステップ３３０に示されているように、一実施形態では、Ｉ／Ｏ要求が、ページング要求に関連付けられている場合、フラッシュドライブＩ／Ｏ管理選択器２３０を用いて、Ｉ／Ｏ要求が読み出し操作であるのか、または書き込み操作であるのかを判定する。Ｉ／Ｏ要求が読み出し操作である場合、この流れ図はステップ３４０に進み、そうでなければ、流れ図はステップ３７０に進む。
【００４３】
一実施形態において、ステップ３４０で、解凍マネージャ２４２を用いて、Ｉ／Ｏ要求毎に読み出されるデータに対し実行される解凍アクションを管理する。例えば、解凍マネージャ２４２は、圧縮データを格納されているロケーションから読み出されるように指令する。圧縮データを、例えば、フラッシュドライブ１１２上に、バッファ２６０内に、または周辺ストレージ２７０内に格納することができる。次いで、ステップ３５０で、解凍マネージャ２４２は、圧縮データをデータ圧縮／解凍モジュール２５０に送り、圧縮データを解凍して、解凍済みデータにする。次いで、ステップ３６０で、解凍マネージャ２４２は、インターセプトされたＩ／Ｏ要求毎に必要に応じて、解凍済みデータが転送されるように指令する。次いで、流れ図３００のこの分岐は、ステップ３９０で終了する。
【００４４】
一実施形態において、ステップ３７０で、圧縮マネージャ２４１を用いて、Ｉ／Ｏ要求毎に書き込まれるデータに対し実行される圧縮アクションを管理する。Ｉ／Ｏ要求毎に書き込まれるデータは、圧縮マネージャ２４１によってデータ圧縮／解凍モジュール２５０に送られ、データは圧縮され、圧縮データになる。
【００４５】
ステップ３８０で、圧縮マネージャ２４１は、圧縮データを書き込むよう指令する。これは、圧縮データを直接、フラッシュドライブ１１２に書き込むことを含むことができる。これは、さらに、Ｉ／Ｏ要求に関連付けられている圧縮データをバッファ２６０または周辺ストレージ２７０のいずれかに書き込むことを含むこともできる。これは、さらに、Ｉ／Ｏ要求に関連付けられている圧縮データをバッファ２６０に書き込み、次いで、バッファ閾値を超えた後、圧縮データをフラッシュドライブ１１２または周辺ストレージ２７０のいずれかに書き込むことを含むこともできる。本明細書ですでに説明されているように、これは、さらに、バッファ２６０に書き込まれる圧縮データの冗長、反復、または重複バージョンを解決することも含むことができる。次いで、流れ図３００のこの分岐は、ステップ３９０で終了する。
【００４６】
プリフェッチおよび検索インデックス作成などのアプリケーション（本明細書ですでに説明されている）は、一般的には、ユーザー向けにコンピュータの実行速度を上げるために使用される。これらのアプリケーションは、一般的には、フラッシュドライブ１１２からの読み出しの回数を増やすが、関連付けられているインデックスまたはデータベースファイルに更新が書き込まれるため、フラッシュドライブ１１２への書き込みの回数も増える可能性がある。これは、これらの技術を使用しない場合にフラッシュドライブ１１２に生じるだろう一般的なレベルを超える書き込み回数の増大である。一実施形態では、プリフェッチおよび／または検索インデックス作成アプリケーションのファイルに関連付けられている大量書き込み操作のデータは、図３の流れ図３００に示されているページングＩ／Ｏ要求の圧縮および解凍と同様の方法で管理される。
【００４７】
図４に、本技術の一実施形態によって実行される管理アクションのバッファリングの一例を示す。図４は、バッファ２６０をＦＩＦＯ（先入れ先出し）型のバッファとして管理するバッファマネージャ２４３を示している。図４によって示されているように、バッファ２６０への連続する書き込みは、左から右への順にキューに入れられる。バッファ２６０は、満杯になるか、または設計されたバッファ閾値を超えたときに、フラッシュドライブ１１２に書き出されて空にされる。バッファ閾値の一例は、バッファ２６０に関連付けられているタイマーのタイムアウトである。バッファ閾値の別の例は、バッファ２６０の事前指定充満度レベルを超える場合である。次いで、キューに入れられている書き込み４１０は、先着順にフラッシュドライブ１１２のセル（４２１、４２２、４２３、４２４、４２５、４２６、４２７）に書き込まれる。以上のように、この結果、セル４２１に２回書き込みが行われ、セル４２２に１回書き込みが行われ、セル４２４に３回書き込みが行われ、セル４２６に１回書き込みが行われる。一実施形態では、データの冗長、反復、または重複バージョンを解決することにより（すでに説明されているように）、フラッシュドライブ１１２への書き込みの総数は、複数回の書き込み操作ではなく、１回の書き込み操作で、あるデータユニットをフラッシュドライブ１１２にコミットできるようにすることにより減らされる。このような一実施形態では、ＦＩＦＯ操作を少し修正して、バッファ２６０内のデータを解決できる。
【００４８】
図５に、本技術の一実施形態によって実行される管理アクションのバッファリングの別の例を示す。図５は、バッファ２６０をバケット型のバッファとして管理するバッファマネージャ２４３を示している。図５によって示されているように、バッファ２６０は、フラッシュドライブ１１２内のいくつかのオフセットの間で書き込みを格納するバケット（５２１、５２２、５２３、５２４、５２５、５２６、５２７）に分割される（例えば、特定のセルに、あるいは、フラッシュドライブ１１２の１つのセル内に置かれる、または複数のセルにわたって分散していてもよい特定の範囲のアドレスに）。
【００４９】
フラッシュドライブ１１２について書き込みを受け取ると、バッファマネージャ２４３は、その書き込みを、割り当てられているメモリオフセット範囲に対する適切なバケットに入れる。その書き込みに対するバケットが存在しない場合、バッファマネージャ２４３は、類似のオフセットで書き込みに対する新規バケットを開始し、次いでその書き込み操作が、この新規バケット内にバッファリングされる。１つのバケットの範囲内で他の書き込み操作を指定するインターセプトされたＩ／Ｏ要求は、同じバケット内でグループにまとめられる。バッファリングが実行されている間、バッファマネージャ２４３は、さらに、すでに説明されている方法で、それぞれのバケット内で反復および冗長データも解決する。
【００５０】
バケットが満杯になるか、またはバッファ閾値容量を超えると、バケット内に蓄積された書き込みが、特定のバケットに割り当てられたオフセットを含む適切な１つまたは複数のセル（４２１〜４２７）に一括して書き込まれる。バッファ閾値を超える場合の一例は、特定のバケットまたはバッファ２６０全体が事前指定充満度レベルに達する場合である。バッファ閾値を超える場合の別の例は、バッファ２６０、またはバッファ２６０内の特定のバケットもしくはバケットの集合に関連付けられているタイマーがタイムアウトする場合である。図５では、バッファ２６０を空にすることにより、バケット５２１からセル４２１への書き込みが３回発生し、バケット５２２からセル４２２への書き込みが２回発生し、バケット５２３からセル４２３への書き込みが１回発生し、バケット５２４からセル４２４への書き込みが１回発生し、バケット５２６からセル４２６への書き込みが１回発生する。図４と図５を比較するとわかるように、バケットバッファリング法は、ＦＩＦＯバッファリング法に比べて粒度が細かく、特定のセルまたはセルの一部に対するより多くの書き込みを格納し、またＦＩＦＯバッファリング法に比べて、コミットする前により広範な書き込みの解決を可能にすることができる。
【００５１】
（操作方法の例）
以下の議論では、フラッシュドライブの寿命を延長する本技術の実施形態のいくつかの操作方法例を詳しく述べる。図６および図７を参照すると、流れ図６００および７００は、それぞれ、フラッシュドライブの寿命を延長する本技術の様々な実施形態により使用される例示的なステップを示している。流れ図６００および７００には、様々な実施形態において、コンピュータ可読命令およびコンピュータ実行可能命令の制御の下でプロセッサにより実行されるプロセスが含まれる。コンピュータ可読命令およびコンピュータ実行可能命令は、例えば、図１のコンピュータ使用可能揮発性メモリ１０８、コンピュータ使用可能不揮発性メモリ１１０、周辺コンピュータ可読媒体１０２、および／またはフラッシュドライブ１１２などのデータストレージ機能内に格納される。コンピュータ可読命令およびコンピュータ実行可能命令は、例えば、図１のプロセッサ１０６Ａおよび／またはプロセッサ１０６Ａ、１０６Ｂ、および１０６Ｃを制御、またはそれらとともに動作するために使用される。流れ図６００および７００では特定のステップが開示されているが、このようなステップは例である。つまり、実施形態は、様々な他のステップまたは流れ図６００および７００で示されているステップの変更形態を実行するのに十分に適している。流れ図６００および７００のステップは、提示されているのと異なる順序で実行することもでき、また流れ図６００および７００のステップのすべてが実行されるわけではないことは理解されよう。
【００５２】
（フラッシュドライブのＩ／Ｏ操作のフィルタリング）
図６は、フラッシュドライブの寿命を延長する本技術の一実施形態により実行される操作の流れ図６００である。より具体的には、図６は、例えばフラッシュドライブ１１２などのフラッシュドライブのＩ／Ｏ操作をフィルタリングするためのコンピュータ実装方法の例示的な一実施形態の流れ図６００を示している。流れ図６００の要素は以下で、図１、図２、および図３の要素を参照しつつ説明される。
【００５３】
一実施形態では、流れ図６００のステップ６１０は、フラッシュドライブに向けて送られるＩ／Ｏ要求を受け取ることを含む。本明細書で様々な例により説明されているように、一実施形態では、これは、フラッシュドライブフィルタ２１０が、例えばフラッシュドライブ１１２などのフラッシュドライブに向けて送られるＩ／Ｏ要求を受け取ることを含む。
【００５４】
一実施形態では、流れ図６００のステップ６２０は、ステップ６１０で受け取ったＩ／Ｏ要求が大量書き込み操作に関連付けられているかどうかを判定することを含む。Ｉ／Ｏ特性判定器２２０が、この判定を行う。大量書き込み操作のいくつかの特定の例は、本明細書ですでに説明されている。これらの例には、ページングファイル、プリフェッチ、インデックス作成、およびレジストリ書き込みに関係するＩ／Ｏ要求が含まれる。これらは大量書き込み操作に関連付けられている、また本明細書で説明されている方法でＩ／Ｏ特性判定器２２０により識別されうる多数のＩ／Ｏ要求のうちのごくわずかにすぎないことは理解されよう。ページングＩ／Ｏ要求に関連付けられているＩ／Ｏ要求の判定に関係するようなＩ／Ｏ特性判定器２２０の操作の例は、流れ図３００のステップ３１０の例により示されている。Ｉ／Ｏ特性判定器２２０は、複数の大量書き込み操作の候補うちのどれか１つについて受け取ったＩ／Ｏ要求を評価するときに同様に動作することは理解されよう。
【００５５】
一実施形態では、Ｉ／Ｏ要求が、大量書き込み操作に関連付けられていると判定したことに対する応答として、流れ図６００のステップ６３０は、実行すべきフラッシュドライブＩ／Ｏ管理アクションを選択することを含む。一実施形態では、この選択は、本明細書ですでに説明されている方法により、フラッシュドライブＩ／Ｏ管理選択器２３０によって実行される。例えば、フラッシュドライブＩ／Ｏ管理選択器２３０は、一部はＩ／Ｏ要求の特性に基づき、また一部はフラッシュドライブフィルタ２１０を構成する利用可能なＩ／Ｏマネージャ（２４１、２４２、２４３、および２４４）に基づき、実行する管理アクションを選択する。
【００５６】
したがって、流れ図３００に表されているフラッシュドライブフィルタ２１０の実施形態によって説明されているように、フラッシュドライブＩ／Ｏ管理選択器２３０は、Ｉ／Ｏ要求の結果として書き込まれるデータの圧縮を管理することと、Ｉ／Ｏ要求の結果として読み出される圧縮データの解凍を管理することとから成る管理アクションの群から１つのフラッシュドライブ管理アクションを選択する。
【００５７】
同様に、図２に例示されているようなフラッシュドライブフィルタ２１０の一実施形態において、フラッシュドライブＩ／Ｏ管理選択器２３０は、Ｉ／Ｏ要求の結果として書き込まれるデータの圧縮を管理することと、Ｉ／Ｏ要求の結果として読み出される圧縮データの解凍を管理することと、Ｉ／Ｏ要求のバッファリングを管理することと、周辺ソリッドステートストレージドライブへのＩ／Ｏ要求のリダイレクトを管理することとから成る管理アクションの群から１つのフラッシュドライブ管理アクションを選択する。
【００５８】
いくつかの実施形態では、本明細書で説明されているように、Ｉ／Ｏ要求の結果として書き込まれるデータの圧縮を管理する選択されたＩ／Ｏ管理アクションは、Ｉ／Ｏ要求の圧縮データをバッファに書き込むことを含むことは理解されよう。これは、圧縮マネージャ２４１が圧縮データをバッファ２６０に書き込むことにより、または圧縮マネージャ２４１がバッファマネージャ２４３にアクセスしそれを利用して圧縮データをバッファ２６０に書き込むことにより達成されうる。さらに、圧縮データがバッファ２６０に書き込まれた後、圧縮マネージャ２４１は、さらに、バッファ２６０から圧縮データをフラッシュドライブ１１２に書き込むことを管理することができる。
【００５９】
いくつかの実施形態では、本明細書で説明されているように、Ｉ／Ｏ要求のバッファリングを管理する選択されたＩ／Ｏ管理アクションは、Ｉ／Ｏ要求に関連付けられているデータをバッファから周辺ストレージに書き込むことを含むことも理解されよう。これは、バッファマネージャ２４３がバッファ２６０からデータを周辺ストレージ２７０に書き込むことを管理することにより達成されうる。さらに、このような一実施形態では、周辺ストレージ２７０は、メモリカードまたはＵＳＢフラッシュドライブなどのソリッドステートストレージドライブとしてよいことは理解されよう。
【００６０】
複数の、また潜在的に重複する管理アクションが、選択に利用できる場合、フラッシュドライブＩ／Ｏ管理選択器２３０は、Ｉ／Ｏ要求の特性およびその特性と所定のルール集合との比較に基づき選択を行う。例えば、そのような一実施形態では、すべてのページングＩ／Ｏ書き込み要求は圧縮マネージャ２４１に送られ、オペレーティングシステムに関連付けられているページングファイルのデータを圧縮することができるが、すべてのページングＩ／Ｏ読み出し要求は解凍マネージャ２４２に送られ、ページングファイルのデータを読み出し、および解凍することができる。同様に、そのようなルールベースの実施形態では、インデックス作成操作に関連付けられているＩ／Ｏ書き込み要求は圧縮マネージャ２４１に送られ、インデックス作成操作のファイルに関連付けられているデータを、書き込まれる前に圧縮することができる。同様に、そのようなルールベースの実施形態では、プリフェッチ操作に関連付けられているＩ／Ｏ書き込み要求は圧縮マネージャ２４１に送られ、インデックス作成操作に関連付けられているファイルのデータを、書き込まれる前に圧縮することができる。さらに、そのようなルールベースの一実施形態では、すべてのレジストリファイルＩ／Ｏ要求は、バッファマネージャ２４３に送られるが、他のすべての大量書き込み操作はリダイレクトマネージャ２４４に送られ、周辺ストレージ２７０が利用可能な場合にリダイレクトされる。
【００６１】
一実施形態では、Ｉ／Ｏ要求が、大量書き込み操作に関連付けられていると判定したことに対する応答として、流れ図６００のステップ６４０は、フラッシュドライブにＩ／Ｏ要求を転送することを含む。前の例に従って、フラッシュドライブフィルタ２１０のＩ／Ｏ特性判定器２２０は、Ｉ／Ｏ要求が大量書き込み操作に関連付けられていないと判定された場合にＩ／Ｏ要求をフラッシュドライブ１１２に転送する。
【００６２】
（オペレーティングシステム用の一次ストレージとして使用されるフラッシュドライブの寿命の延長）
図７は、フラッシュドライブの寿命を延長する本技術の一実施形態により実行される操作の流れ図７００である。より具体的には、図７は、オペレーティングシステム用の一次ストレージとして使用されるフラッシュドライブの寿命を延長する例示的な方法の流れ図７００を示している。流れ図７００の要素を、図１、図２、および図３の要素を参照しつつ、以下で説明する。
【００６３】
一実施形態では、流れ図７００のステップ７１０は、オペレーティングシステムからフラッシュドライブに向けて送られるＩ／Ｏ要求を受け取ることを含む。本明細書で様々な例により説明されているように、一実施形態では、これは、フラッシュドライブフィルタ２１０が、例えばフラッシュドライブ１１２などのフラッシュドライブに向けて送られるＩ／Ｏ要求を受け取ることを含む。一実施形態では、オペレーティングシステムは、フラッシュドライブ１１２を、オペレーティングシステムを稼動させることに関連して実行される活動の一次ストレージ手段として使用する。
【００６４】
一実施形態では、流れ図７００のステップ７２０は、受け取ったＩ／Ｏ要求の特性を判定することを含む。例えば、一実施形態では、これは、オペレーティングシステムのページファイルに関係するデータ、オペレーティングシステムによって実行されるプリフェッチ操作に関係するデータ、オペレーティングシステムのレジストリファイルに関係するデータ、および／またはオペレーティングシステムによって実行されるインデックス作成操作に関係するデータなどの、大量書き込み操作に関連付けられているデータを含むが、これらに限定されない。一実施形態では、本明細書で説明されているように、Ｉ／Ｏ特性判定器２２０は、Ｉ／Ｏ要求が、そのような大量書き込み操作に関連付けられているデータを含むかどうかを判定する。
【００６５】
一実施形態では、流れ図７００のステップ７３０は、Ｉ／Ｏ要求の特性に基づきフラッシュドライブＩ／Ｏ管理アクションを実行し、それによりオペレーティングシステムによってフラッシュドライブに対し実行される書き込み操作の回数を減らし、それと同時に、オペレーティングシステムの整合性を保持することを含む。本明細書で説明されているように、一実施形態では、これは、大量書き込み操作に関連付けられているデータを圧縮することを含む。オペレーティングシステムの整合性は、データが失われないようにデータの圧縮を正確に管理することにより維持される。一実施形態では、オペレーティングシステムの整合性は、さらに、オペレーティングシステムを機能させるために不可欠であるデータをフラッシュドライブ１１２にのみ格納し、コンピュータシステムから（ポータブルフラッシュドライブを取り外すことなどにより）周辺ストレージ２７０を取り外すことにより容易にデータが失われる可能性のある周辺ストレージ２７０にはリダイレクトしないようにすることにより保護される。それに加えて、一実施形態では、オペレーティングシステムの整合性は、特にコンピュータシステムから容易に取り外される周辺ストレージ２７０に格納するためリダイレクトされる場合に、圧縮データを暗号化することにより保護される。
【００６６】
一実施形態では、フラッシュドライブＩ／Ｏ管理選択器２３０は、圧縮マネージャ２４１を選択する。圧縮マネージャ２４１は、大量書き込み操作に関連付けられているデータを、データが圧縮されて圧縮データにされるデータ圧縮／解凍モジュール２５０に送ることにより、大量書き込み操作に関連付けられているデータのこのような圧縮を実行する。一実施形態では、これは、圧縮データを暗号化することを含むこともできる。流れ図３００はそのような一実施形態の一例を説明したものである。
【００６７】
一実施形態では、ステップ７３０の圧縮データは、フラッシュドライブの代わりに、周辺ストレージに書き込まれる。例えば、一実施形態では、データが圧縮された後、圧縮マネージャ２４１は、圧縮データのリダイレクトを管理して、圧縮データをフラッシュドライブ１１２ではなく周辺ストレージ２７０に書き込む。圧縮マネージャ２４１は、リダイレクトマネージャ２４４にアクセスして使用することによりこのリダイレクトを達成することができる。本明細書で説明されているように、一実施形態では、周辺ストレージ２７０は、メモリカードまたはポータブルフラッシュドライブなどのソリッドステートストレージドライブとしてよい。
【００６８】
一実施形態では、ステップ７３０の圧縮データは、フラッシュドライブの代わりに、バッファに書き込まれる。例えば、一実施形態では、Ｉ／Ｏ要求に関連付けられているデータが圧縮された後、圧縮マネージャ２４１は、圧縮データのリダイレクトおよび／またはバッファリングを管理して、圧縮データをフラッシュドライブ１１２ではなくバッファ２６０に書き込む。圧縮マネージャ２４１は、バッファマネージャ２４３および／またはリダイレクトマネージャ２４４にアクセスして使用するか、あるいは同様の機能を組み込むことによりこのリダイレクトおよび／またはバッファリングを達成することができる。
【００６９】
一実施形態では、圧縮データをバッファに書き込むことは、データの反復、冗長、または重複バージョンを更新された圧縮データに解決すること、次いで、バッファ閾値を超えたことに応答して、更新された圧縮データをバッファからフラッシュドライブに書き込むことも含む。一実施形態では、本明細書で説明されているように、圧縮マネージャ２４１によってバッファマネージャ２４３の機能にアクセスするか、または圧縮マネージャ２４１にバッファマネージャ２４３の機能を組み込んで、バッファ２６０に格納されている圧縮データを解決し、バッファ２６０から解決されたデータをフラッシュドライブ１１２に書き込む。一実施形態では、解決されたデータをフラッシュドライブ１１２に書き込む代わりに、周辺ストレージ２７０が利用可能である場合に、また解決されたデータがオペレーティングシステムの機能に不可欠ではない場合に、解決されたデータを周辺ストレージ２７０にリダイレクトすることができる。
【００７０】
フラッシュドライブの寿命を延長する本技術の例示的な実施形態が説明された。本発明の主題事項を、構造的特徴および／または方法論的活動に固有の言語で説明してきたが、添付の特許請求の範囲で定められている主題事項は、記載された特定の特徴または動作に必ずしも限定されないことを理解されたい。むしろ、記載された特定の特徴および動作は、本発明を実装する例示的な形態の例として開示されている。
【図１】
0005452233.tif 000002
【図２】
0005452233.tif 000003
【図３】
0005452233.tif 000004
【図４】
0005452233.tif 000005
【図５】
0005452233.tif 000006
【図６】
0005452233.tif 000007
【図７】
0005452233.tif 000008