(58)【調査した分野】(Int.Cl.,DB名)
前記移送ポリシーは、さらに、移行されるべき前記データのサイズがサイズ閾値を超えるときに起動する移送サイズトリガーに基づくことを特徴とする請求項1に記載の方法。
前記移送ポリシーは、さらに、移行されるべき前記データのサイズがサイズ閾値を超えるときに起動する移送サイズトリガーに基づくことを特徴とする請求項9に記載のデバイス。
【発明を実施するための形態】
【0011】
図1は、ハイブリッドストレージデバイス110およびファイルシステム180を備える例示的なハイブリッドストレージ環境100を示す。ハイブリッドストレージデバイス110は、たとえば、MLC(マルチレベルセル)ベースのSSDなどのソリッドステートドライブ(SSD)150に書込み動作のデータをキャッシュするために、ハードディスクドライブ(HDD)などの書込みキャッシュ140を使用する。本明細書でさらに説明するように、書込み動作のデータは、連続して書込みキャッシュ140にログを取られ、その後、SSD150に移送される。読出し動作は、通常はSSD150から、時にはより遅い書込みキャッシュ140から供される。ハイブリッドストレージデバイス110、またはその態様は、
図6に示すコンピュータデバイス600などの1つまたは複数のコンピュータデバイスを使用し、実装され得る。
【0012】
ハイブリッドストレージデバイス110は、書込みキャッシュ140およびSSD150を備える。SSD150は、永久にデータを記憶する1次のストレージである。SSDは
図1に示されているが、任意のタイプのフラッシュチップまたは当技術分野で知られている他の不揮発性メモリデバイスが、SSD150の代わりにストレージとして使用され得る。書込みキャッシュ140は、ログ構造化された形で一時的にディスク書込み動作のデータを記憶することができる永続的な耐久性のあるキャッシュである(たとえば、書込みキャッシュ140は、ログ構造化された書込みキャッシュである)。ある実装においては、書込みキャッシュ140は、ハードディスク(HDDとも呼ばれる)または他の形態のソリッドステートメモリ(SLC(シングルレベルセル)チップなど)などの耐久性のあるストレージを備えることができ、ディスク書込み動作のデータのみを記憶することができる。書込みキャッシュ140は、SSD150よりも遅くてもよく、SSD150よりも大きくてもよい(より大きな記憶空間をもつなど)。SSD150は書込みキャッシュ140よりも速いので、ある実装においては、読出し動作の多くは、SSD150に送信される。
【0013】
データは、フルキャッシングまたは選択的キャッシングなどのキャッシングポリシーにしたがって、書込みキャッシュ140に保存され得る。フルキャッシングでは、すべてのデータがキャッシュされるのに対し、選択的キャッシングでは、最も多く書き込まれたデータなどのある種のデータのみが書込みキャッシュ140にキャッシュされる。ある時点で、キャッシュされたデータは、移送ポリシーにしたがって、書込みキャッシュ140からSSD150に移され得る。いくつかの実装において、データは、書込みキャッシュ140内のデータの量が所定の量を超えると必ず、および/または、ある種のデータが書込みキャッシュ140で記憶されるときに、定期的に(たとえば、15秒、30秒、1分ごと等に、書込みキャッシュ140からSSD150に)移動(すなわち、移送)され得る。書込みキャッシュ140によってサポートされ得るSSDの数に制限はない。したがって、たとえば、単一のHDDが、複数のSSDの書込みキャッシュの役割を果たすことができる。1つのみのSSD150が
図1には示されているが、複数のSSDがハイブリッドストレージデバイス110内に備わることができ、書込みキャッシュ140は、複数のSSDの各SSDのためにデータをキャッシュすることができる。さらに、書込みキャッシュ140内のデバイスの数に制限はない。たとえば、いくつかのHDDが書込みキャッシュ140内に備えられ得る。
【0014】
SSD専門用語では、ブロックはページのコレクションである(たとえば、1セットの64個の4KBページが256KBブロックを形成することになる)。しかし、本明細書では、ブロックは、読出しまたは書込みのユニットであり、フラッシュ特有のブロックではない。したがって、本明細書において、ブロックが読取られるまたは書き込まれる場合、読出しまたは書込みは、たとえば、SSDブロックではなくSSD150内で、セクタまたはページに実行される。一時的に書込みキャッシュ140内にある、特定のメモリブロックのデータなどのキャッシングデータは、SSDの読出し性能に大きく影響を及ぼすことなく、1次のストレージSSD150へのデータの書込みの総数を減らす。たとえば、より長い時間書込み動作のデータをキャッシュすることによって、移送中のSSD150の同メモリブロックへの複数の上書きが回避可能であり、消去サイクルは保護され得る。上書きは、メモリの同じ論理セクタに繰り返される書込みである。SSD150へのデータの書込みの数を減らすことは、場合によっては100パーセントより多く、SSD150の寿命を延ばすことができる。
【0015】
ハイブリッドストレージデバイス110はさらに、バス125を介して書込みキャッシュ140およびSSD150に通信で結合されたハイブリッドディスクコントローラー120を備え得る。ハイブリッドディスクコントローラー120の一実装のブロック図が、
図2に示される。ハイブリッドディスクコントローラー120は、バス125を介して、ブロック特有の動作(ページ読出し、ページ書込み、ブロック消去など)またはオブジェクト特有の動作(オブジェクト作成、オブジェクト削除、オブジェクト読出し、オブジェクト書込みなど)を実行するように動作することができる。ブロック特有のまたはオブジェクト特有の動作は、ハイブリッドディスクコントローラー120によってサポートされ得る。ハイブリッドディスクコントローラー120はさらに、本明細書に記載するようにデータ読出し(たとえば、データ読出しモジュール240を介する)、データ書込み(たとえば、データ書込みモジュール250を介する)、およびデータ移送(たとえば、移送・トリガーモジュール220を介する)を実行するように動作することができる。
【0016】
書込みキャッシュ140およびSSD150は、ハイブリッドディスクコントローラー120のインターフェース115などのインターフェースを介してファイルシステム180に公開され得る。ファイルシステム180は次いで、ハイブリッドストレージデバイス110にデータ読出しおよび書込み要求を送信することができ、その要求は、書込みキャッシュ140またはSSD150からハイブリッドディスクコントローラー120によって応じられ得る。1つのみの書込みキャッシュ140および1つのSSD150が示されているが、これは単に説明を目的とするものである。キャッシュ、バッファ、メモリ、ストレージデバイス、およびサポートされ得る同類のものの数に制限はない。
【0017】
書込み動作の多数は、小さな1セットのメモリブロックの上書きである。書込みキャッシュ140は、上書きを融合することができ、それによってSSD150への書込みトラフィックを減らす。ある実装においては、ファイルシステム180は、ハイブリッドストレージデバイス110にアクセスすることなく任意の即時の読出し動作を供することができるキャッシュを備える。それにより、ハイブリッドストレージデバイス110は、わずかな読出しが生じる間に、書込みキャッシュ140での上書きを融合させる期間をもつ。
【0018】
ある実装において、書込み動作のデータは、書込みキャッシュ140で記憶されたログに付加され、好ましくは次の読出しの前に、SSD150に最終的に移送される。ログとして書込みキャッシュ140を構造化することは、書込みキャッシュ140がその高速順次書込みモードで動作することを可能にする。上書きの融合に加えて、書込みキャッシュ140はまた、SSD150によって観測される作業負荷の連続性を増やす。これは、その寿命にわたってハイブリッドストレージデバイス110に発行され得る書込み動作の総数である、書込み寿命の増大をもたらす。書込み寿命は、SSD150の信頼性特性を大幅に変えることなしに、増大される。書込みキャッシュ140は、障害の追加のポイントを表すが、いずれのそのような事象もファイルシステムをSSD150上にそのままに残し、最近のデータの損失のみをもたらす。
【0019】
ある実装においては、書込みキャッシュ140が論理アドレス空間に発行されるあらゆる書込みのデータをキャッシュする、フルキャッシングが使用される。
図3は、フルキャッシングを使用するハイブリッドストレージの方法300の一実装の動作フローである。本方法300は、たとえば、ハイブリッドストレージデバイス110によって実装され得る。
【0020】
310で、書込み動作が、ファイルシステム180からハイブリッドストレージデバイス110に発行される。書込み動作は、320で、インターフェース115を介してハイブリッドディスクコントローラー120で受信される。330で、ハイブリッドディスクコントローラー120が、書込みキャッシュ140(たとえば、キャッシュモジュール210を介して)にその書込みに関連するデータを記憶するように命令し、そのデータが書込みキャッシュ140に記憶される。ある時点で、340で、本明細書でさらに説明される、移送ポリシーと移送・トリガーモジュール220とにしたがって、データは、書込みキャッシュ140からSSD150に移動される。
【0021】
論理アドレス空間に発行されるあらゆる書込みに関連するデータのフルキャッシングの代わりに、選択的キャッシングが、キャッシュモジュール210によって使用および実装され得る。選択的キャッシングでは、SSD150の最も多く上書きされたメモリブロックに関連するデータのみが書込みキャッシュ140内にキャッシュされる。
図4は、選択的キャッシングを使用するハイブリッドストレージの方法400の一実装の動作フローである。本方法400は、たとえば、ハイブリッドストレージデバイス110によって実装され得る。
【0022】
410で、書込み動作が、ファイルシステム180からハイブリッドストレージデバイス110に発行される。その書込み動作は、420で、インターフェース115を介してハイブリッドディスクコントローラー120で受信される。430で、ハイブリッドディスクコントローラー120の上書き率モジュール230が、その書込みに関連するメモリブロックの上書き率を判定する。上書き率は、そのブロックが受信する書込みの数に対する上書きの数の比率である。上書き率は、ストレージ260などのハイブリッドディスクコントローラー120のストレージ内に記憶され得る。
【0023】
440で、メモリブロックの上書き率が、上書き閾値(ストレージ260などのストレージから検索され得る)と呼ばれる所定の値に比較される。そのブロックの上書き率が440で判定されるように上書き閾値を超える場合、次いで、その書込み動作(そのメモリブロックに関連する)のデータが、450で書込みキャッシュ140に書き込まれる(たとえば、実装によっては、ハイブリッドディスクコントローラー120のデータ書込みモジュール250および/またはキャッシュモジュール210が、書込みキャッシュ140にその書込みに関連するデータを記憶するように命令し、そのデータが書込みキャッシュ140内に記憶される)。ある時点で、460で、本明細書でさらに説明される、移送ポリシーにしたがって、そのデータは、移送・トリガーモジュール220を使用し、書込みキャッシュ140からSSD150に移動され得る。
【0024】
しかし、ブロックの上書き率が440で判定されるように上書き閾値を超えない場合、次いで、そのデータは、470でSDD150に書き込まれる(たとえば、ハイブリッドディスクコントローラー120が、SDD150にその書込みに関連するデータを記憶するように命令し、そのデータがSDD150内に記憶される)。
【0025】
上書き閾値は、たとえば、ユーザまたは管理者によって設定され、ストレージ260に記憶され得る。上書き閾値は、たとえば、そのユーザまたは管理者によってその後に変更可能である。上書き閾値が増やされるとき、頻繁に上書きされた結果として、より高い上書き率をもつそれらのメモリブロックのデータのみが、書込みキャッシュ140内にキャッシュされる。ある実装においては、フルキャッシングは、上書き閾値をゼロに設定することによって、可能にすることができる。上書き率は、頻繁に書き込まれたブロックの判定で使用することができるが、任意の技法が頻繁に書き込まれたブロックの判定に使用され得る。
【0026】
読出しペナルティが、書込みキャッシュ140によって供される全読出しのパーセンテージとして定義され得る。たとえば、ハイブリッドストレージデバイス110が50Mの読出しを受信し、書込みキャッシュ140がこれらの読出しのうちの1Mを受信する場合、読出しペナルティは2パーセントである。理想的には、読出しペナルティは、できる限り低く保たれる。選択的キャッシングは、読出しペナルティを下げ、移送されるデータの量を減らすことができる。しかし、ハイブリッドストレージデバイス110はストレージ260内でブロック毎の上書き率を計算および記憶することができるため、選択的キャッシングは、オーバヘッドをもつ。加えて、選択的キャッシングは、障害からの回復が困難であることがある。
【0027】
前述のように、データは、SSD150に移送される前に書込みキャッシュ140内にキャッシュされる。移送ポリシーは、データをSDD150に移送する前に、書込みキャッシュ140内にデータをどの位長くキャッシュするかを判断するために、使用され得る。ある実装においては、その時間は、相当な数の上書きをキャプチャするのに十分な長さであるが、書込みキャッシュ140への相当な数の読出しを受信するほど長くはない。WAW(write-after-write:書込み後の書込み)は、同じブロックへの介入する読出しの前のメモリブロックへの2つの連続する書込みの間の時間間隔として定義することができ、そして、RAW(read-after-write:書込み後の読出し)は、同じメモリブロックへの書込みとその後の読出しの間の時間間隔として定義され得る。ある実装においては、移送に先立つメモリブロックのデータのキャッシングの時間は、RAW間隔の所定の数または小数よりも低い書込みキャッシュ140へのいくつかの読出しを受信する間に、WAW間隔の所定の数または小数よりも高いいくつかの上書きをキャプチャするのに十分な長さである。
【0028】
どの位長くデータをキャッシュするかのポリシーは、ブロック毎の時間値によって判断され得るが、これは維持および実施する費用が高くなり得る。代わりに、移送ポリシーは、書込みキャッシュ140の内容をSSD150にフラッシュさせる1つまたは複数の移送トリガーを使用し、実装され得る。移送トリガーは、たとえば、時間切れトリガー、読出し閾値トリガー、および移送サイズトリガーを含み得る。トリガーおよび移送ポリシーは、たとえば、ハイブリッドディスクコントローラー120の移送・トリガーモジュール220によって維持および監視され得る。ある実装においては、そのトリガーおよび移送ポリシーは、ユーザまたは管理者によって設定または更新され得る。
【0029】
時間切れトリガーは、所定の量の時間が移送なしに経過した場合に起動するトリガーである。そのようなトリガーは、予測可能であり、書込みキャッシュ140の障害により損失され得るデータの新しさを抑制する。たとえば、5分間の時間切れ値は、5分間よりも古い書込み動作のデータが失われないことを確実にすることになる。しかし、時間切れトリガーは作業負荷に反応しないので、ある一定の作業負荷が高い読出しペナルティを受け得る。
【0030】
読出し閾値トリガーは、最後の移送以後の測定された読出しペナルティが閾値を超えたときに起動する。そのような手法は、読出しペナルティが有限になることを可能にする。しかし、孤立して使用される場合、読出しペナルティトリガーは、たとえば、データがそのハイブリッドストレージデバイス110から読み出されない場合に、測定された読出しペナルティはゼロに留まることになり、そのデータは書込みキャッシュ140からSDD150に移動されないことになるなどのシナリオに依存し得る。これは、書込みキャッシュ140が空間を使い果たす結果をもたらし、そしてまた、書込みキャッシュ140の障害でのデータ損失に対してシステムをより脆弱なままにする可能性がある。
【0031】
移送サイズトリガーは、移行可能なデータ全体のサイズがサイズ閾値を超えるときに起動する。これは、書込みキャッシュ140の障害で失われ得るデータの量を抑制することができる。単独でまたは組合せで使用されて、これらのトリガーは、複雑な移送ポリシーを可能にすることができる。たとえば、あるポリシーが、読出しペナルティは5パーセントを上回るべきではないこと、および、書込みキャッシュ140が機能しなくなる場合、たかだか100MBまたは5分間に値するデータが失われるべきであることを提示することができる。
【0032】
図5は、移送ポリシーを使用するハイブリッドストレージの方法500の一実装の動作フローである。本方法500は、たとえば、ハイブリッドストレージデバイス110によって実装され得る。510で、1つまたは複数の移送トリガーが、ハイブリッドストレージデバイス110内で設定可能であり、たとえば、時間切れトリガー、読出し閾値トリガー、および/または移送サイズトリガーなどが、ハイブリッドディスクコントローラー120の移送・トリガーモジュール220によって設定され得る。520で、データが、たとえば、ファイルシステム180からハイブリッドストレージデバイス110に発行されている書込みに準じて、書込みキャッシュ140内に記憶され得る。データは、その実装に応じて、フルキャッシングポリシーまたは選択的キャッシングポリシーにしたがって書込みキャッシュ140に書き込み可能である。ある実装においては、追加データが、時間とともに、書込みキャッシュ140に書き込み可能である。
【0033】
ある時点で、530で、トリガーに関する条件が満たされることがあり、そのトリガーがそれに応じて540で起動し得る。550で、トリガーの起動に準じて、そのデータが、書込みキャッシュ140からSDD150に移送され得る。ハイブリッドディスクコントローラー120は、書込みキャッシュ140からSSD150にそのトリガーに関連する適切なデータを移動させることによって、そのトリガーの起動に反応することができる。520で、プロセスを続けることができる。
【0034】
本データ移送は、速く、直接的である。ある実装においては、データは、書込みキャッシュログから連続して読み出され、SSD150に書き込まれる。書込みキャッシュ140のログおよびファイルシステム180は異なるデバイス上にあるので、このプロセスは、同一デバイス上のログおよびファイルシステム間の往復がランダムなシークを引き起こし得る従来のログ構造化されたファイルシステム内の従来のクリーニング機構の性能の欠点に悩まされない。
【0035】
ある実装においては、ハイブリッドストレージは、ブロックデバイスレベルの代わりにファイルシステムレベルで実装され得る。ファイルシステムは、ブロックの空間局所参照性を利用するために、メモリブロック間の意味関係の知識を活用することができる。加えて、ハイブリッドストレージは、書込みキャッシュ140上の更新ジャーナル(update journal)およびSSD150上の実際のデータを記憶するために、既存のジャーナリング(journaling)ファイルシステムを修正することによって、実装され得る。
【0036】
ファイルシステムデザインはまた、理想的な書込みキャッシュの性能にそれが近づくことを可能にすることができる情報へのアクセスを提供する。理想的なキャッシュは、汚れたデータが時間内に移送されて書込みキャッシュからの読出しを回避することができるように、読出しが生じる直前にブロックに差し迫った読出しをそれに通知するオラクル(oracle)を使用する。ブロックレベルでは、そのようなオラクルは存在せず、移送ポリシーが使用される。しかし、ファイルシステムレベルでは、ファイルシステムのバッファキャッシュからのブロックの削除が使用されて、差し迫った読出しを信号で伝えることができる。ファイルシステムがそのバッファキャッシュ内のブロックを記憶する限り、それは、ハイブリッドストレージデバイスにそのブロックについての読出しを発行しないことになる。それがそのブロックを削除した後は、任意のその後の読出しがハイブリッドストレージデバイスから供される。したがって、バッファキャッシュからの削除に応じて書込みキャッシュからSSDにブロックを移送するポリシーは、読出しペナルティなしに最大の書込みの節減をもたらすことになる。
【0037】
図6は、例示的実装および態様が実装され得る例示的なコンピュータ環境の図である。本コンピュータシステム環境は、適切なコンピュータ環境の一例に過ぎず、使用または機能の範囲に関する何らかの限定を示唆するものではない。
【0038】
多数の他の汎用または専用コンピュータシステム環境または構成が使用可能である。使用に適し得るよく知られているコンピュータシステム、環境、および/または構成の例は、パーソナルコンピュータ(PC),サーバコンピュータ、ハンドヘルドまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、組込み型システム、前述のシステムまたはデバイスを含む分散コンピュータ環境などを含むがこれらに限定されない。
【0039】
コンピュータによって実行されている、プログラムモジュールなどのコンピュータ実行可能命令が使用され得る。概して、プログラムモジュールは、特定のタスクを実行するまたは特定の抽象的データタイプを実装する、ルーチン、プログラム、オブジェクト、構成要素、データ構造などを含む。分散コンピュータ環境は、タスクが通信ネットワークまたは他のデータ伝送媒体を介してリンクされた遠隔プロセシングデバイスによって実行される場合に、使用され得る。ある分散コンピュータ環境では、プログラムモジュールおよび他のデータは、メモリストレージデバイスを含むローカルおよび遠隔の両方のコンピュータストレージ媒体内に置かれ得る。
【0040】
図6を参照すると、本明細書に記載の態様を実装する例示的なシステムは、コンピュータデバイス600などのコンピュータデバイスを含む。その最も基本的構成では、コンピュータデバイス600は通常は、少なくとも1つのプロセシングユニット602およびメモリ604を含む。コンピュータデバイスの正確な構成およびタイプに応じて、メモリ604は、揮発性(ランダムアクセスメモリ(RAM)など)、不揮発性(読出し専用メモリ(ROM)、フラッシュメモリなど)またはそれら2つの何らかの組合せでもよい。この最も基本的構成は、破線606によって
図6に示される。
【0041】
コンピュータデバイス600は、追加の特徴/機能性をもち得る。たとえば、コンピュータデバイス600は、磁気または光ディスクまたはテープを含むがこれらに限定されない追加のストレージ(リムーバブルおよび/または非リムーバブル)を含み得る。そのような追加のストレージは、リムーバブルストレージ608および非リムーバブルストレージ610によって、
図6に示される。
【0042】
コンピュータデバイス600は通常は、様々なコンピュータ読取り可能媒体を含む。コンピュータ読取り可能媒体は、デバイス600によってアクセス可能な任意の利用可能な媒体でもよく、揮発性および不揮発性の両方の媒体と、リムーバブルおよび非リムーバブルな媒体とを含み得る。
【0043】
コンピュータストレージ媒体は、コンピュータ読取り可能命令、データ構造、プログラムモジュールまたは他のデータなどの情報の記憶のための任意の方法または技術で実装される、揮発性および不揮発性、ならびにリムーバブルおよび非リムーバブルな媒体を含む。メモリ604、リムーバブルストレージ608、および非リムーバブルストレージ610はすべて、コンピュータストレージ媒体の例である。コンピュータストレージ媒体は、RAM、ROM、電気的消去可能プログラム読出し専用メモリ(EEPROM)、フラッシュメモリまたは他の揮発性もしくは不揮発性メモリ技術、CD−ROM、デジタル多用途ディスク(DVD)または他の光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージまたは他の磁気ストレージデバイス、あるいは、所望の情報を記憶するために使用され得る、およびコンピュータデバイス600によってアクセス可能な任意の他の媒体を含む。任意のそのようなコンピュータストレージ媒体は、コンピュータデバイス600の一部でもよい。
【0044】
コンピュータデバイス600は、そのデバイスが他のデバイスと通信できるようにする1つまたは複数の通信接続612を含み得る。コンピュータデバイス600はまた、キーボード、マウス、ペン、音声入力デバイス、タッチ入力デバイスなどの1つまたは複数の入力デバイス614も含み得る。ディスプレイ、スピーカ、プリンタなどの1つまたは複数の出力デバイス616もまた、含まれ得る。すべてのこれらのデバイスは、当技術分野でよく知られており、本文で詳細に論じられる必要はない。
【0045】
コンピュータデバイス600は、ネットワークによって相互接続された複数のコンピュータデバイス600のうちの1つでもよい。理解され得るように、本ネットワークは、任意の適当なネットワークでもよく、各コンピュータデバイス600は、1つまたは複数の通信接続612を用いて任意の適当な形でそこに接続可能であり、そして、各コンピュータデバイス600は、任意の適当な形でそのネットワーク内の他方のコンピュータデバイス600のうちの1つまたは複数と通信することができる。たとえば、本ネットワークは、組織または住宅などの中のワイヤードまたはワイヤレスネットワークでもよく、インターネットまたは同類のものなどの外部ネットワークへの直接または間接的結合を含み得る。
【0046】
本明細書に記載された様々な技法は、ハードウェアまたはソフトウェアに、あるいは、適切な場合には、その両方の組合せに関して実装され得ることを理解されたい。したがって、現在開示される主題のプロセスおよび装置、またはそれらのある種の態様または部分は、フロッピディスケット、CD−ROM、ハードドライブ、または任意の他の機械読取り可能なストレージ媒体などの有形的表現媒体で実施されたプログラムコード(即ち、命令)の形をとることができ、そのプログラムコードがコンピュータなどの機械によってロードおよび実行されるとき、その機械は現在開示される主題を実行するための装置になる。
【0047】
プログラマブルコンピュータでのプログラムコード実行の場合、コンピュータデバイスは概して、プロセッサと、プロセッサによって読出し可能なストレージ媒体(揮発性および不揮発性メモリおよび/またはストレージ要素を含む)と、少なくとも1つの入力デバイスと、少なくとも1つの出力デバイスとを含む。1つまたは複数のプログラムが、たとえば、API、再使用可能制御、または同類のものの使用を介して、現在開示される主題に関して記載されるプロセスを実装または使用することができる。そのようなプログラムは、コンピュータシステムと通信するために、高レベルの手続き型またはオブジェクト指向のプログラミング言語で実装され得る。しかし、1つまたは複数の本プログラムは、必要に応じて、アセンブリまたは機械言語で実装可され得る。いずれの場合にも、その言語はコンパイルされたまたは翻訳された言語でもよく、それは、ハードウェア実装と組み合わせ可能である。
【0048】
例示的な実装は、1つまたは複数の独立型コンピュータシステムとの関連での現在開示される主題の態様の使用を参照し得るが、本主題はそのように限定されず、そうではなくて、ネットワークまたは分散コンピュータ環境などの任意のコンピュータ環境に関して実装され得る。さらに、現在開示される主題の態様は、複数のプロセシングチップまたはデバイス内でまたはそれらを横切って実装可能であり、ストレージは複数のデバイスにわたって同様に影響を受け得る。そのようなデバイスは、たとえば、PC、ネットワークサーバ、およびハンドヘルドデバイスを含み得る。
【0049】
本主題は、構造的特徴および/または方法論的行動に特有の言語で説明されてあるが、添付の特許請求の範囲で定義される本主題は、前述の特有の特徴または行動に必ずしも限定されないことを理解されたい。そうではなくて、前述の特有の特徴および行動は、本特許請求の範囲を実装する例示的な形として開示される。