(57)【要約】  データブロックをディスクから複数ブロックのフェッチ部でロードする。フェッチしなければならないフェッチ部の数を低減するように、キャッシュメモリ中の保持しないデータブロックをキャッシュマネージメントポリシーが選択する。ブロックを取得するためにフェッチ部をフェッチしなければならない時、基本的に追加のパワー消費なしに追加ブロックをロードする可能性を利用するため、大きな複数ブロックのフェッチ部を使用する。保持しないデータブロックの選択は、１つのフェッチ部中の次に使用するために一緒にフェッチすることができるデータブロックの組み合わせにバイアスされる。フェッチ部のフェッチの間に、ディスクドライブを読み出しモードからパワー節約モードに切り換える。そのディスクドライブの少なくとも一部は停止され、エネルギー消費を低減する。保持はデータブロックの精度、すなわち、フェッチ単位のレベルより下で管理する。同じフェッチ単位のブロックの組み合わせを次に使用する前に一度にフェッチすることができる場合、結果としてブロックのその組み合わせの替わりに複数の他のフェッチ単位から他のブロックを保持できるなら、これらのブロックは保持しない。
2007535058.tif 000002
【特許請求の範囲】
【請求項１】
情報処理装置であって、  
ディスクからデータを読み出すように構成されたディスクドライブであって、１度に１フェッチ単位を読み出し、各フェッチ単位は前記ディスク上に実質的に連続して格納された複数のデータブロックを含むディスクドライブと、
前記データブロックを用いてプログラムを実行する処理回路と、  
前記プログラムの実行中に前記処理回路により使用される前記ディスクから読み出したデータブロックをキャッシングする、前記ディスクドライブに結合したキャッシュメモリであって、個別のデータブロックの置き換え精度を有するキャッシュメモリと、  
前記プログラムの実行中にどのデータブロックが必要な時の予測に応じて、前記フェッチ単位内のどのデータブロックを前記キャッシュメモリに保持しないかを選択するように構成されたキャッシュマネージメント部であって、  
キャッシュ状態に関する情報と、前記第１のデータブロックと同じフェッチ単位の第２のデータブロックが次に必要となる予測時間とに応じて少なくとも第１のデータブロックを保持しないことを選択し、  
前記第１のデータブロックの前記次の使用の前に前記第２のデータブロックをフェッチすべきと予測した時、前記第１のデータブロックをフェッチする場合、前記キャッシュメモリ中のスペースが前記第１のデータブロックを保持しないことにより空けるところのキャッシュマネージメント部と、を有することを特徴とする情報処理装置。
【請求項２】
請求項１に記載の情報処理装置であって、  
前記キャッシュマネージメント部は、前記第２のデータブロックが前記キャッシュメモリ中になく、前記第２のデータブロックが次に必要になると予測される後に前記第１のデータブロックが次に必要になると予測されるかどうか検知して、前記検知に応じて前記キャッシュメモリ中前記第１のデータブロックを上書きさせることを特徴とする情報処理装置。
【請求項３】
請求項１に記載の情報処理装置であって、  
前記キャッシュマネージメント部は、前記第２のデータブロックが前記キャッシュメモリ中にあり、前記第１のデータブロックの次に予測される使用の前の将来の期間中であって前記同じフェッチ単位外のさらに別のデータブロックの使用が予測され、前記さらに別のデータブロックが前記キャッシュメモリにあるか、及び／または前記将来の期間前に必要になると予測される期間中に前記第２のデータブロックの使用が予測されないかどうかを検知し、前記検知に応じて前記第１のデータブロックを上書きさせるように構成されていることを特徴とする情報処理装置。
【請求項４】
請求項１に記載の情報処理装置であって、  
キャッシュ時間インターバルはそれぞれのデータブロックに対して画成され、前記キャッシュ時間インターバルは、前記それぞれのデータブロックの予測される連続した使用の間、及び／またはフェッチ単位の一部である前記それぞれのデータブロックの使用とフェッチとの間であり、前記キャッシュマネージメント部は前記キャッシュ時間インターバルと関連する前記それぞれのデータブロックを保持する計画である１組のキャッシュ時間インターバルを探索するように構成され、前記選択された組のオーバーラップする時間インターバルの数が前記キャッシュメモリが同時に格納できるデータブロックの数を超えないとの制約条件の下でディスクからのフェッチ動作の予測されるカウントを最小化し、最小化された予測されたカウントは１つのフェッチ動作として同じフェッチ単位から複数のデータブロックをフェッチするための各フェッチ動作をカウントすることを特徴とする情報処理装置。
【請求項５】
請求項１に記載の情報処理装置であって、  
前記キャッシュマネージメント部は、前記同じフェッチ単位が前記第２のデータブロックを取得するためにフェッチすべきと予測される、予測された第１の次の時間を示す情報を維持し、前記第１のデータブロックの次の予測される使用がその予測される第１の次の時間より後であるかどうかに応じて、前記第１のデータブロックの上書きを許容するように構成された情報処理装置。
【請求項６】
請求項１に記載の情報処理装置であって、  
前記キャッシュマネージメント部は、キャッシュメモリにフェッチされたフェッチ単位から選択されたデータブロックの選択的コピーを制御し、前記選択されたデータブロックが実行中に後で必要であると予測されるかどうかに応じて、前記フェッチされたフェッチ単位の前記データブロックが前記キャッシュメモリにコピーされ、必ずしも連続である必要はないデータブロックのみをコピーするように構成されていることを特徴とする情報処理装置。
【請求項７】
請求項１に記載の情報処理装置であって、  
前記ディスクドライブは、所定サイズのフェッチ単位に構成され、前記フェッチ単位は前記ディスク上に互いにオーバーラップせずに格納されていることを特徴とする情報処理装置。
【請求項８】
請求項１に記載の情報処理装置であって、  
前記ディスクドライブは、プログラマブルな開始点から所定サイズのフェッチ単位にフェッチし、異なるフェッチ単位を前記ディスク上のオーバーラップする領域からフェッチできるようにし、前記キャッシュマネージメント部は特定のデータブロックの近傍の別のデータブロックが前記特定データブロックの後に必要であるかどうかの予測に応じて、特定データブロックをロードするために前記フェッチ単位の開始点を選択し、前記開始点は前記別のデータブロックが前記フェッチ単位に含まれるように適応されるように構成されていることを特徴とする情報処理装置。
【請求項９】
請求項１に記載の情報処理装置であって、  
前記キャッシュマネージメント部は、前記プログラムの実行繰り返し中のデータブロックがあるシーケンスに関するプロファイル情報を記録するように構成され、前記予測は前記プロファイル情報から計算されるところのプロファイリングコンポーネントを有することを特徴とする情報処理装置。
【請求項１０】
請求項１に記載の情報処理装置であって、  
ブロックリロケーション部を有し、前記ブロックリロケーション部は前記ディスク上の前記ブロックの少なくとも１つを再配置するよう構成され、第２のデータブロックを取得するため、前記フェッチ単位の第２のフェッチ単位が続く第１のデータブロックを取得するため、前記フェッチ単位の第１のフェッチ単位がいつフェッチされたかを検知し、前記第１と第２のデータブロックが前記ディスク上の共通のフェッチ単位中に格納されるように、前記ディスク上の前記ブロックを再配置するように構成されていることを特徴とする情報処理装置。
【請求項１１】
ディスクのデータを処理する方法であって、  
ディスク上に格納されたデータブロックのデータを使用するプログラムを実行する段階と、  
各々が前記ディスク上に実質的に連続して格納された複数のデータブロックを含むフェッチ単位中のデータブロックにフェッチする段階と、  
異なるフェッチ単位のフェッチの間に前記ディスクドライブの少なくとも一部を停止することにより、前記ディスクからのデータの読み出しのエネルギー消費を低減する段階と、  
前記データブロックがキャッシュメモリに格納された時、そのフェッチ単位からデータブロックを取得するためにフェッチ単位にフェッチを防止するために、キャッシュメモリ中の複数のデータブロックをキャッシュする段階と、
前記データブロックが前記プログラムにより必要とされるシーケンスを予測する段階と、  
フェッチ単位がディスクからフェッチされなければならない回数を最小化する段階であって、前記最小化は、キャッシュ状態と、前記第１のデータブロックと同じフェッチ単位中の第２のデータブロックが次に必要になる予測時間とに応じて保持しない少なくとも第１のデータブロックを選択し、前記第１のデータブロックの次の使用の前に、前記第２のデータブロックがフェッチされるべきと予測されるときに、前記第１のデータブロックがフェッチされると予測される場合、前記第１のデータブロックを保持しないことにより前記キャッシュメモリ中にスペースを開けるところの段階と、を有することを特徴とする方法。  
【発明の詳細な説明】
【発明の詳細な説明】
【０００１】
本発明はディスクドライブを有する情報処理装置に関し、特に、かかる装置によるパワー消費の低減に関する。
【０００２】
現在の電子機器では、特にバッテリー駆動機器では、エネルギー消費が低いことが設計面において重要である。ディスクドライブを有する機器では、エネルギー消費の低減はディスクドライブの一部を停止（deactivate）することにより行う。光ディスクドライブの場合、例えばモータやレーザを停止する。停止には、例えば、これらの部分に対するパワー供給をすべて、またはほとんどすべてを停止（cut）することにより行う。例えばコンピュータプログラムの実行のためにディスクドライブが読み出し要求を処理しなければならない時、データをメモリに読み出すまで、ディスクドライブの関連部分を一時的に動作（activate）させる。情報をメモリに記憶したら、ディスクドライブのその関連部分を停止し、プログラムはメモリの情報を用いて実行する。多くのアプリケーションプログラムは多量のデータを要するので、すべての情報を事前に現実的な容量のメモリにロードすることはできない。この場合、コンピュータコードの実行に必要になるつど、追加データをロードするために、ディスクドライブの読み出し要素の動作を実行中に繰り返し行う。
【０００３】
特定のデータをディスクから読み出さねばならない回数を最小化するため、キャッシングを使用する。全処理データ量がキャッシュメモリの容量より大きいとき、キャッシュマネージメントが必要である。キャッシュマネージメントはキャッシュから（他のデータで上書きして）消去するデータブロックの選択を含む。かかる破棄可能なデータブロックを選択するいろいろなキャッシュマネージメントポリシーが知られている。最もよく知られているものはＬＲＵ（Least  Recently  Used）ポリシーである。このポリシーは、他のデータブロックのためにメモリスペースが必要な時、最も長い間使われていないメモリブロックを破棄することを伴う。
【０００４】
より高度なキャッシュマネージメントポリシーは、プログラム実行中に使用されるであろうデータブロックを予測するプロファイルを使用する。プロファイリング、すなわちプロファイルの確定（establishment）は、プログラム実行中にどのデータブロックが使用され、そのデータブロックがどんな順序で使用されたかを記録し、プログラムの反復実行から統計的データを計算することを含む。かかるプロファイルベースのキャッシュマネージメントポリシーでは、キャッシュミスの確率を最小化するように破棄可能データブロックを選択する。キャッシュミスとは、すなわちプログラムの実行中にプログラムが必要なときにデータブロックがキャッシュにないことである。一般的に、データブロックは、それが再使用されないとプロファイルから予測された場合、メモリから破棄される。または、メモリ中のすべてのデータブロックが再使用されると予測された場合、最後に使用されると予測されたデータブロックが破棄される。時間的に最も余裕ができるからである。このように、データブロックをディスクからフェッチすなければならない回数を最小化する。
【０００５】
一部のディスクドライブ、特に一部の光ディスクドライブは、一度に多量のデータを読み出すように構成されている。一般的には、データはいわゆるフラグメントで読み出される。フラグメントは、ディスク上に連続的に配置された所定多数のデータブロックを含む。例えば、１フラグメントあたり２メガバイトである。１バイト当たりのシークオーバーヘッドは、ヘッドをうまく位置決めしたら、大きなフラグメントを読み出すことにより低減することができる。例えば光ディスクドライブのアーキテクチャにより、ヘッドシーク動作はそれにかかる時間の点で非常に不経済である。大きなフラグメントを使用することにより、プログラム実行の開始時点でパワー消費を低減することができる。ディスクドライブがピークパワーで動作する必要がある時間が低減されるからである。しかし、所定サイズのフラグメントへのプログラム実行中のフェッチは、フラグメントが実際に必要である以上のデータを含む場合、非効率であると見なされる。
【０００６】
なかんずく、本発明の目的は、ディスクドライブを有する装置におけるプログラム実行中のエネルギー消費を低減することである。
【０００７】
本発明による装置を請求項１に記載した。本発明によると、キャッシュマネージメントポリシーを使用する。そのポリシーは、フェッチしなければならないフェッチ単位数を低減するように、キャッシュメモリ中に保持されないデータブロックを選択するものである。ブロックを取得するためにフェッチ部をフェッチしなければならない時、基本的に追加のパワー消費なしに追加ブロックをロードする可能性を利用するため、大きな複数ブロックのフェッチ単位サイズ（ディスクから一度にフェッチされるデータブロックの最小数）を使用する。保持しないデータブロックの選択は、１つのフェッチ部中の次に使用するために一緒にフェッチすることができるデータブロックの組み合わせにバイアスされる。フェッチ部のフェッチの間に、ディスクドライブを読み出しモードからパワー節約モードに切り換える。そのディスクドライブの少なくとも一部は停止され、エネルギー消費を低減する。データブロックを保持しないということは、ここでは、キャッシュメモリ中のそのデータブロックを上書きすることと、最初からキャッシュメモリにそのデータブロックを書き込まないことの両方をカバーするものである。選択されたデータブロックは、他のデータブロックのためにスペースを作るため、キャッシュメモリ中に保持されない。
【０００８】
保持はデータブロックの精度、すなわち、フェッチ単位のレベルより下で管理する。このように、フェッチ単位の一部のデータブロックは、そのブロックの予測された必要性に応じて、同じフェッチ単位の他のデータブロックが保持されなくても、保持されてもよい。本発明によると、保持されないデータブロックは、フェッチしなければならないフェッチ単位数を低減するように、選択される。同じフェッチ単位のブロックの組み合わせを次に使用する前に一度にフェッチすることができる場合、結果としてブロックのその組み合わせの替わりに複数の他のフェッチ単位から他のブロックを保持できるなら、これらのブロックは保持しない。これを実現するために、キャッシュマネージメント部は、データブロックがいつ使用されるかの予測をしようする。保持されない特定のデータブロックを選択するとき、キャッシュマネージメント部は、その特定データブロックと同じフェッチ単位の他のデータブロックがキャッシュメモリにあるかどうか、及びこれらの他のデータブロックの使用が予測されるかを考慮する。
【０００９】
一実施形態において、同じフェッチ単位の第２のデータブロックがキャッシュメモリになく、その第２のデータブロックが第１のデータブロックが次に必要になる前に必要であると予測される場合、第１のデータブロックは保持されない。この場合、予測できることは、第１のデータブロックを保持しなくてもフェッチ単位に追加的にフェッチしないので、他のデータブロックが保持されていなければフェッチしなければならないであろう他のフェッチ単位の他のデータブロックよりも第１のデータブロックを破棄することによりパワーを節約することができる。
【００１０】
他の実施形態では、グループのデータブロックが他のフェッチ単位の他のデータブロックが必要である将来の時間インターバル中に必要でないことを予測した場合、同じフェッチ単位のデータブロックのグループを保持しないと選択する。グループが大きければ大きいほど、データブロックのグループを読み出すために１つのフェッチ単位のみをフェッチすることを代償として、他のデータブロックをキャッシュするためにより多くのスペースがキャッシュメモリに生成される。そのグループが選択されてから、そのグループの全てのデータ単位をすぐに破棄する必要はない。将来の時間インターバルの前に一部が必要であるが、その時間インターバル前に最後に使用することが予測されれば、破棄される。しかし、グループの第１のデータブロックが一旦破棄されたら、回路はそのフェッチ単位に再度フェッチし、その将来の時間インターバルの後にのみ必要であると予測される場合、パワー消費のペナルティなしに、そのグループの他のデータブロックを破棄できる。
【００１１】
一実施形態では、キャッシュマネージメント部は、キャッシュメモリ中のデータブロックのフェッチ単位が再度フェッチされると予測される時間に関する情報を維持する。この情報は、破棄されるデータブロックが再度使用される予測時間が、そのフェッチ単位のフェッチの前の予測時間より前であれば、例えば、フェッチ単位のデータブロックが破棄されるつど更新することができる。このタイプのタイミング情報は、全てのキャッシュされたデータブロックについて、またはデータブロックがキャッシュされた全てのフェッチ単位について、格納される。破棄するデータブロックの選択の時に、この情報を、データブロックの再使用の次の予測時間と比較し、次の予測時間がデータブロックを含むフェッチ単位のフェッチの予測時間より遅ければ、そのデータブロックをパワー消費のペナルティなしで破棄することができる。
【００１２】
一実施形態では、キャッシュマネージメント部は、別のデータブロックが後で必要であると予測した場合、プログラムの実行中に後で必要なデータブロックの予測をし、フェッチ単位の別の選択されたデータブロックをキャッシュメモリにコピーして、保持する。この場合、保持すると選択されなかったデータブロックは、キャッシュにはまったく格納されない。使用されると予測されない中間データブロックはコピーされない。コピーされる選択は連続するデータブロックに限定される必要はないからである。このように、ディスクドライブをパワー節約モードから切り換える必要がある回数が最小化され、それによりパワー消費が最小化される。
【００１３】
一実施形態では、キャッシュマネージメント部は、後で必要であると予測されたキャッシュされたデータブロックの破棄可能データブロックを選択する時、キャッシュされたデータブロックの少なくとも１つが、そのデータブロックの少なくとも１つの前にディスクから必要であるとよそくされた別のデータブロックとして、同じフェッチ単位中に格納されているかどうかを検知し、もしそうであれば、そのデータブロックのその少なくとも１つの破棄を優先する。よって、パワー消費を増やすことなしに、キャッシュ中にデータブロックを保存するスペースを得ることができる。
【００１４】
好ましくは、予測は、装置における読み出し動作を生じるコンピュータプログラムの実際の実行から取得されるプロファイル情報に基づく。よって、より信頼できる予測を得ることができ、パワー消費を最小化することができる。
【００１５】
さらに別の実施形態では、第１のデータブロックを取得するためにフェッチ単位の第１のフェッチ単位がフェッチされ、第２のブロックを取得するためにそのフラグメントの第２のものにフェッチしたことを検出した時、ディスク上の少なくとも１つのブロックを再配置する。この場合、第１と第２のデータブロックが共通のディスク上のフラグメントに格納されるように、ブロックがディスク上で自動的に再配置される。このように、ディスクドライブをパワー節約モードから切り換える必要がある回数が最小化される。
【００１６】
本発明の上記その他の目的と有利性を、図面を参照して、本発明の実施形態の説明において説明する。
【００１７】
図１は、データ処理装置を示す。該装置は、ディスクドライブ１０、キャッシュメモリ１２、プロセッサ１４、キャッシュマネージメント部１６、及びパワーサプライ回路１８を含む。ディスクドライブ１０は、ディスク１００（例えば、交換可能な光ディスク）、モータ１０２、読み取りヘッド１０４、制御エレクトロニクス１０６を含む。また、ディスクバッファメモリ１０８を備える。キャッシュマネージメント部１６は、制御エレクトロニクス１０６の制御入力に結合されている。ディスクドライブ１０のデータ出力は、ディスクバッファメモリ１０８の入力に結合されている。ディスクバッファメモリ１０８は、キャッシュメモリ１２に結合されている。キャッシュメモリ１２は、アドレス／データバスを介してプロセッサ１４に結合されている。キャッシュマネージメント部１６は、ディスクバッファメモリ１０８、キャッシュメモリ１２、及びパワーサプライ回路１８に結合された制御出力を有する。
【００１８】
パワーサプライ回路１８は、ディスクバッファメモリ１０８、キャッシュマネージメント部１６、キャッシュメモリ１２、及びプロセッサ１４に結合された第１の出力を有し、ディスクドライブ１０のモータ１０２、読み出しヘッド１０４、及び制御エレクトロニクス１０６に結合された第２の出力を有する。
【００１９】
動作中に、プロセッサ１４はディスク１００からのデータを必要とするアプリケーションプログラムを実行する。ディスクドライブ１０は、ディスク１００からディスクバッファメモリに、１度に１フラグメントずつデータをロードする。フラグメントは、例えば、ディスク上のらせんデータトラックに沿って、ディスクに実質的に連続的に格納されたデータを含む。（「実質的に」とは、同期データやヘッダデータ等の管理情報も格納されていることを意味する。）フラグメントのサイズは、プロセッサ１４が必要とするデータブロックの長さよりも非常に長く、例えば、２メガバイトである。
【００２０】
図１の実施形態では、キャッシュマネージメント部１６がデータへのフェッチを制御する。キャッシュマネージメント部１６は、アプリケーションプログラムの実行中に一定のデータブロックが必要となること、及びこのデータブロックがキャッシュメモリ１２にないことを検知または予測すると、パワーサプライ回路１８に信号を送ってディスクドライブ１０、特にモータ１０２、読み出しヘッド１０４、及びエレクトロニクス１０６へのパワー供給を動作させる。キャッシュマネージメント部１６は、次に、そのデータブロックを含むフラグメントにフェッチするようにディスクドライブ１０に命令する。これを受けてディスクドライブ１０は、そのフラグメントをロードし、ディスクバッファメモリ１０８に格納する。フラグメントを読み出した後、キャッシュマネージメント部１６は、ディスクドライブ１０へのパワー供給を停止するようにパワーサプライ回路１８に信号を送る。
【００２１】
図１の実施形態では、キャッシュマネージメント部１６は、ディスクバッファメモリ１０８中のフラグメントの必要データをキャッシュメモリ１２にコピーさせる。そのデータのすべてが必要というわけではない時、キャッシュマネージメント部１６は、フラグメントの全てのデータをコピーはしない。キャッシュマネージメントの単位はデータブロックと呼ばれ、これはフラグメントより非常に小さく、例えば３２キロバイトである。キャッシュマネージメント部１６は、キャッシュブロックごとに、そのキャッシュ内のデータを識別するように構成され、データブロックは全体としてキャッシュにロードされ、キャッシュから破棄される。キャッシュマネージメント部１６は、プロセッサ１４による実行に必要であると予測されるデータを含むデータブロックのみをコピーする。
【００２２】
他の実施形態では、プロセッサ１４は、ディスクバッファメモリ１０８から直接データブロックの一部にアクセスすることができる。この実施形態では、ディスクバッファメモリ１０８中のフラグメントが後からロードされたフラグメントにより上書きされた時に、アプリケーションプログラムの実行中にデータブロックが後で必要となると予測される場合にのみ、キャッシュマネージメント部１６がディスクバッファメモリ１０８からそのデータブロックをコピーする。同様の実施形態にはフラグメント用のさらに別のバッファメモリが含まれ、そのバッファメモリからキャッシュメモリ１２にデータがコピーされ上書きされることを防止する。
【００２３】
キャッシュメモリ１２を用いて、同一フラグメントを再度ロードするためにディスクドライブ１０を動作させなければならない回数を低減する。一般的に、キャッシュメモリ１２のサイズは、いかなる時点にも、アプリケーションプログラムの実行中にプロセッサ１４により使用されるディスク１００の全てのデータを格納するには不十分である（または、プロセッサ１４がフラグメントバッファメモリにアクセスする実施形態では、バッファメモリ中で上書きされた後に使用されるデータの全ボリュームには不十分である）。すなわち、余裕をつくるために、キャッシュメモリ１２中のデータを後で必要なデータで上書きしなければならず、上書きされたデータを再度ロードするためにディスクドライブ１０を動作させなければならないという効果を伴う。
【００２４】
ディスクドライブ１０を動作させなければならない回数を最小化するために、キャッシュマネージメント部１６は、まず、キャッシュメモリ１２にコピーされるデータブロックを、そのフラグメントの使用されると予測される特定の（selected）データブロックに限定する。次に、キャッシュマネージメント部１６は、追加フラグメントのロードを犠牲にして、後で必要なデータブロックの上書きを最小化するように、データブロックが上書きされる場所を選択する。
【００２５】
プロセッサ１４がキャッシュメモリ１２に格納されていないデータブロックを必要とする時、キャッシュマネージメント部１６はデータブロックをディスク１００からロードさせる。そのデータブロックと伴にフラグメント全体がロードされる。キャッシュマネージメント部１６は、このフラグメント内に、アプリケーションプログラムの実行中に後で必要となると予測される別のデータブロックがあるか判断する。あれば、キャッシュマネージメント部１６は、この別のデータブロックをキャッシュメモリ１２にコピーさせる。このように、ディスクドライブ１０によるフラグメントサイズが大きいために、他のデータブロックをロードする副作用としてデータブロックをロードすることを利用する。
【００２６】
副作用によりデータブロックがキャッシュメモリにロードされることを用いて、上書き可能なデータブロックの選択を管理（guide）する。キャッシュマネージメント部１６は、後で使用する前にデータブロックが副作用としてロードされると予測をした時、後続の（later）データブロックのために空間を作る必要があれば、このデータブロックをキャッシュメモリ１２から破棄する。
【００２７】
図２は、アプリケーションプログラムと、このプログラムが使用するデータブロックとを概略的に示す。該プログラムは、ディスク１００のデータを必要とするファイルモジュール２０ａ−ｅを有する。モジュール２０ａ−ｅが必要とするデータは、モジュール２０ａ−ｅ内のブロックとして示した。この図には、ディスク１００の幾つかのフラグメント２１ａ−ｄも示されている。この中にモジュールが使用するデータが格納されている。フラグメント２１ａ−ｄ内には、モジュール２０ａ−ｅが使用するデータクラスタ２２、２４ａ−ｃ、２６ａ、ｂ、２８が示されている。
【００２８】
動作中、モジュール２０ａ−ｅがアクティブになる順序は、ユーザ入力等の外部要因に依存する。次の表を用いて動作を説明する。これは、キャッシュメモリ１２が３つのデータブロックのための容量を有する簡単な例である。  
【００２９】
【表１】
2007535058.tif 000003
第１列は、プログラムの実行に必要なデータブロックを示す。連続する行は連続して必要なデータブロックを示す。第２列は、第１列のデータブロックを取得するために、もしあれば、キャッシュマネージメント部１６がディスクドライブ１０にロードさせるフラグメントを示す。次の列は、フラグメントをロードした後に、もしあれば、キャッシュメモリ１２にあるデータブロックを示す。
【００３０】
表から分かるように、一部の行では、必要なデータブロックがキャッシュメモリ１２にすでにあれば、フラグメントをロードする必要はない。ディスクアクセスパワー消費は、フラグメントをロードする必要がない時は、避けることができる。ブロック２２がロードされる行に注意する必要がある。ここで、キャッシュマネージメント部１６は、ブロック２４ａがキャッシュメモリ１２にあるブロック２６ｂの前に必要であっても、キャッシュメモリ１２からこのブロック２４ａを破棄する決定をする。ブロック２４ａが再び必要となる前に、ブロック２４ｂをロードする副作用としてブロック２４ａがロードされるからである。  
どのデータブロックをコピーするか、またはキャッシュメモリ１２に保持するか判断するために、キャッシュマネージメント部１６は、アプリケーションプログラムの実行中にプロセッサ１４により必要であるデータブロックの予測を使用する。アプリケーションプログラムがデータブロックをいつも同じ順序で必要とする時は、キャッシュマネージメント部１６は、プログラムの実行中にデータブロックにアクセスする順番を表すプロファイルにより予測を実現する（表の左端の列を有効に記録する）。このプロファイルは、プログラムと伴に提供されるか、またはそのプログラムの最初の実行の時に記録される。その後の実行の間には、記録された順序を用いてデータブロックがいつ必要であるかを予測する。
【００３１】
キャッシュマネージメント部１６は、破棄されるブロックの選択をするアルゴリズムのどれでも良い。データブロックは、後で使用される前に副作用としてロードされるからである。一実施形態では、キャッシュマネージメント部１６は、プロファイルに従ってフラグメント・フェッチのためのエネルギー消費を最小化するキャッシングプランを探索する。探索の実行は、ランタイム、プログラムの実行中、またはプログラムの実行前に行われてもよい。他の実施形態では、キャッシュマネージメント部１６は、破棄されるデータブロックを選択する選択ルールを適用するだけである。ここで、選択ルールは、データブロックをフラグメントの一部としてほとんどオーバーヘッドなしにフェッチできることを考慮したものである。
【００３２】
図３ａと３ｂを用いて、選択アルゴリズムの動作を例示する。水平線３３ａ，ｂ、３４ａ，ｂ、３５ａ，ｂ、３６ａ，ｂは、それぞれデータブロックを表す。フラグメントはライン３３ａ，ｂ、３４ａ，ｂ、３５ａ，ｂ、３６ａ，ｂの連続するペアに対応する。プログラム実行中の時間「ｔ」は左から右に表した。ライン上のクロス３０（参照番号でラベルされたクロス例のみ）は、データブロックのデータを使用する時点を表す（他のデータブロックの使用により中断されない連続した使用は、単一のクロスで示した）。１回より多くは使用されないデータブロックは、図には示さず省略した。それらはキャッシュメモリには影響しないからである。
【００３３】
一部のデータブロックは、異なる時点で１回より多く使用されるように示した。そのため、その間はこれらのデータブロックをキャッシュメモリ１２に保持することが望ましい。これは、同じデータブロックのデータを使用する異なる時点の間の時間を、実線セグメント３２ａ−ｆとして図示することにより、図３ａに示した。
【００３４】
キャッシュメモリ１２の記憶容量より以上のデータブロックを保持しなければならない場合、潜在的なキャッシュのコンフリクトが存在する。オーバーラップしている実線セグメント３２ａ−ｆの数がキャッシュ容量を超えるこれらの時点には、潜在的なキャッシュのコンフリクトがある。キャッシュプラニングは、後で必要ではあるが、キャッシュメモリ１２からデータを破棄する決定、すなわち、それぞれのデータブロックがキャッシュ中に保持されない線分３２ａ−ｆの選択を伴う。
【００３５】
例えば、キャッシュが４ブロック分の容量を有していると仮定すると、期間３２ｅの開示からコンフリクトが起こっていることが分かる。従来の「最も長い間使われていない」キャッシュマネージメントアルゴリズムによると、ライン３３ａに対応するブロックはここで破棄され、次に期間３２ｆの初めにライン３４ａに対応するブロックが続く。結果として、破棄した代償として、（それぞれライン３３ａ，ｂと３４ａ，ｂのペアに対応する）２つのフラグメントを再フェッチしなければならない。最後に使用されるデータブロックを破棄するアルゴリズムを用いると、同様の結果が得られる。この場合、ライン３３ａ，３４ａに対応するブロックも破棄される。
【００３６】
図３ｂは、複数のデータブロックを余分なコストをかけずにフェッチできるということをキャッシュメモリ部１６が考慮すると、何が起こるかを示している。ライン３５ａ，ｂに対応するデータブロックを破棄する、他の破棄選択をする。結果として、ライン３５ａに対応するデータブロックは、丸印３８で示したように、ライン３５ｂに対応するデータブロックがフェッチされた時、キャッシュメモリ１２に戻る。期間３２ｃ、ｄの間、この期間を表すラインを点線にして示したように、これらのデータブロックをキャッシュメモリ１２に保持しておく必要はない。結果として、キャッシュメモリ１２にはライン３６ａ，ｂに対応するデータブロックのために、十分な空間がある。ライン３３ａ，３４ａに対応するデータブロックは破棄する必要がない。ライン３５ａ，ｂに対応するデータブロックのために、一回だけ再度フェッチする必要があるだけである。これらは同一のフラグメントにあるからである。別の丸印は、データブロックが同一のフラグメントから他のデータブロックと伴にキャッシュメモリ１２に最初にロードされた時を示す。
【００３７】
キャッシュマネージメント部１６は、探索アルゴリズムを用いて破棄すべきデータブロックを選択する。このアルゴリズムは、コストファンクションの最小化を含む。キャッシュ容量を越えないという制約下で、このコスト関数はフェッチされるべき全ブロック数と等しい。アルゴリズムは、一定の時間中にキャッシュメモリの場所を際しようするブロックを探す。探索アルゴリズムが選択する期間は、ブロックが使用される時点からそのブロックが再度使用される時点までである。すなわち、その期間は期間３２ａ−ｆである。探索アルゴリズムは、期間３２ａ−ｆ中にキャッシュメモリにブロックを保持しないように選択された時、その期間は「インアクティブ（inactive）」であると言う。その他の期間はアクティブであると言う。より形式的には、探索アルゴリズムはインアクティブな期間を探索し、どの時点でもアクティブな期間の数がキャッシュ容量を超えないようにし、インアクティブな期間の数が最小になるようにする。
【００３８】
制約条件下である基準を最適化する解を探索する探索アルゴリズムは、それ自体知られており、最適解を発見することを保証する探索の形と、単によい解を発見する近似的探索の形の両方がある。かかる方法のどれを用いてもよい。本発明によると、かかる探索アルゴリズムを使用して、コストファンクションを最小化するように破棄するブロックを探索する。このコストファンクションは、キャッシュ容量を超えないという制約条件下において、フェッチすべきブロックの全数と等しい。
【００３９】
かかるサーチアルゴリズムの一実施形態によると、期間がバンドルとして選択される。ある時点で終わるデータブロックの期間がインアクティブとなるよう選択された時、その時点をカバーする同じフラグメント中の他のブロックの期間をその時点で分割する。また、その時点までの期間の部分を選択してインアクティブとする。ある時点でその特定ブロックがロードされた時、その他のブロックもロードされので、それらのブロックはその時点とそれらが最後に使用された時点（または最初にロードした時）間の期間中はキャッシュメモリに保存される必要はないということを考慮する。
【００４０】
図３ｃは、期間のバンドルの選択を示す。期間３２ａ−ｆは、同じフラグメントからの他のデータブロックのデータが使用される時点で分割されている（すなわち、期間３２ｄの初めと終わりで期間３２ｃは分割されている）。各所定データブロックについて、その所定データブロックが最初に使用される前に、同一フラグメントの他のデータブロックのデータが使用される時点から、追加の期間が付加される。
【００４１】
バンドルは、所定ブロックとそのブロックのデータが使用される時点と１対１の関係を有する。このバンドルは、その所定ブロックと同じフラグメントからのブロックの他の期間すべてを含み、その別の期間に対応するブロックが最後に使用された最後の時点から延在する。バンドルの例として、(39c,  39d,  39g)はライン３５ａのブロックが使用された期間３９ｇの終わりの時点に対応している。またｈ、(39c,  39f)はライン３５ｂのブロックが使用された期間３９ｆの終わりの時点に対応している。
【００４２】
アルゴリズムは、バンドルがなくなった時の残っている期間数がキャッシュ容量を超えないという制約条件下で、最小数のバンドルを含む（最小数のブロックフェッチを伴う）バンドルの組を探索する。
【００４３】
簡単なアルゴリズムによりバンドルの組Ｓｉのリストが作られる。各組は探索の不完全解、すなわちキャッシュメモリから破棄されるバンドルの選択に対応する。アルゴリズムは、（バンドルが含まれていない）空集合Ｓ０で始まり、リスト中の既存の集合にバンドルを追加することによりそのリストの新しい集合Ｓｉ′を作る（例えば、空集合｛｝は、バンドル（３９ａ）を用いて集合｛（３９ａ）｝に拡張され、さらに２つのバンドルを用いて集合｛（３９ａ）、（３９ｂ）｝に拡張される。バンドルが削除された時に残った期間の数がキャッシュ容量を超えない制約条件を満たす集合を完全集合と呼び、その他の集合は不完全集合と呼ぶ。
【００４４】
容量を超えた時点を特定し、集合にその時点をカバーするバンドルを追加することにより、最初の集合が毎回拡張される。結局、結果として完全集合Ｓｆになる（例えば、Sf  =  {(39a),  (39b)}）。この集合Ｓｆ中のバンドル数Ｎ（Ｓｆ）（例えば、２）を計算する（これはフェッチすべきフラグメント数である）。
【００４５】
次に、他のバンドルの集合Ｓｉは、リスト中の集合を拡張することにより、そのリストに追加される（例えば、集合{(39c,  39f)},  {(39d,  39g)}等）。かかる集合Ｓｉも完全である（例えば、Si  =  {(39c,  39d,  39g)}である場合、この集合Ｓｉ中のバンドル数Ｎ（Ｓｉ）をＮ（Ｓｆ）と比較して、N(Si)<N(Sf)であれば、集合ＳｉがＳｆに置き換わり、N(S')≧N(Si)であるリスト中のすべての集合Ｓ′をリストから削除する。集合Ｓｉが不完全であるとき、Ｎ（Ｓｉ）が計算され、N(Si)>N(Sf)であれば、集合Ｓｉはこれ以上拡張されない。でなければ、集合ＳｉはＮ（Ｓｉ）≧Ｎ（Ｓｆ）、またはＳｉが完全になるまで、さらに拡張される。
【００４６】
このタイプのアルゴリズムは確実に最適なキャッシュマネージメントポリシーを発見する。原理的には、このアルゴリズムは、プログラムが実行される前、または実行中にキャッシュスペースが必要である時点で毎回、アプリオリに適用することができる。後者の場合、好ましくは、各々が所定時点にアクティブであるバンドルを含む集合を最初に追加することにより、リストを作ることができる。
【００４７】
例えば、図３ｃの例では、キャッシュメモリ１２が４つのデータブロック用の容量を有する時、期間３９ｈの初めにコンフリクトが起こる。この時点で、次のバンドルがアクティブである：(39a),  (39b),  (39c,  39d,  39e),  (39c,  39d,  39g)。これらは、期間39a,  39b,  39e，39gの終わりにそれぞれフラグメントを再度ロードする決定に対応する。これらのバンドルの各々を含む集合を最初にリストに追加する。次に、その集合を拡張する。分かるように、Sf  =  {(39c,  39d,  39e)}はすでに完全であり（期間３９ｅの終わりにおける再ロードに対応する）Ｎ（Ｓｆ）＝１であり、これは最適解であり、他の集合を考慮する必要はない。
【００４８】
集合を拡張するバンドルの選択は探索の効率を高めるように制御することができる。たとえば、キャッシュの容量を依然として上回っている時点をカバーするバンドルだけで集合を拡張することにより行う。図３の場合、例えば、第１の集合がバンドル（３９ａ）のみを含み、キャッシュは４つのデータブロックのための容量のみを有する場合、期間３９ｊ−１中でのみキャッシュ容量を上回っている。この場合、バンドル(39b),  (39c,  39d,  39g),  (39h,  39j),  (39i,  39k)及び(391)のみを集合{(39a)}に追加する必要がある。さらに、アルゴリズムが最初に追加するのは、最も多くの期間を含むバンドル（すなわち、バンドル(39d,  39g),  (29h,  39j),  (39i,  39k)）であり、その中でキャッシュ容量を上回る最も多くの時点をカバーするもの（例えば、(39d,  39g)）である。これらはキャッシュメモリ中に最も大きなスペースを作るからである。
【００４９】
これは発見的な探索アルゴリズムで実施できる。このアルゴリズムでは、バンドルの集合に対して定義されたシーリングファンクションｈ（Ｓ）であって、いかなる時点でもキャッシュ容量を上回らないことを保証する、集合Ｓに追加されるべきバンドル数の上限を与える。シーリング関数ｈ（Ｓ）の例は、バンドルからその期間中に破棄されたＳのバンドルを、容量を超えた時点にわたって合計したものにデータが対応するとき、キャッシュ容量を上回るデータブロック数の合計である。
【００５０】
帰納的アルゴリズムは、シーリング関数ｈ（Ｓ）と集合中のバンドル数Ｎ（Ｓ）の合計が最も低い集合Ｓを毎回拡張する。すなわち、異なるバンドルで集合Ｓを拡張できるとき、その追加バンドルがｈ（Ｓ）を最も低減する拡張集合をさらに拡張する。例えば、空集合から始めて、バンドル(39c,  39d,  39g)を加えるとｈ（Ｓ）を最も低減することができる。
【００５１】
リスト中のいかなる集合Ｓについても最も低いｈ（Ｓ）＋Ｎ（Ｓ）−１より大きいか等しい幾つかのバンドルＮ（Ｓ′）を含むリスト中の集合Ｓ′は、さらに拡張して最適集合を見つける必要はない。このように、最適な結果を確保できる。また、フロア関数ｇ（Ｓ′）を使ってもよい。このフロア関数ｇ（Ｓ′）は、キャッシュ容量を越えないことを保証する集合を構成するために、集合Ｓ′に追加しなければならない最低数のバンドルを与える。（フロア関数の例としては、集合Ｓ′に対応するデータブロックがＳ′に対応する期間中に破棄された場合、いずれかの時点においてキャッシュ容量を越える、異なるフラグメントのデータブロックの最大数である。すなわち、Ｓ′が削除された時の余分なバンドルの最大数である。）h(S)+N(S)≦N(S')+g(S')となる集合Ｓがあれば、集合Ｓ′はさらに拡張する必要はない。
【００５２】
このタイプの探索も、実行前、または実行中に適用することができる。実行中に適用された場合、このアルゴリズムは好ましくは、キャッシュ過剰が生じる時点をカバーするバンドルを選択し、実行中の現時点で始まり、キャッシュ過剰が生じる次の時点まで毎回バンドルを追加する。全ての集合が時点「ｔ」まではキャッシュ容量問題を解消しリスト中にある場合、シーリング関数ｈ（Ｓ）は、そのリスト上の集合中のバンドルのいずれかによりカバーされる最後の時点ｔ′までキャッシュ過剰を解消するために必要なバンドルの最大数のシーリングを与えるように構成されている。結果として、探索が始まり、キャッシュ中に多数のデータブロックがあるフラグメントのキャッシュメモリロケーションを再使用する。しかし、より長い間必要とされない他のフラグメントのデータブロックがよりよい解を与えないかどうか、チェックする。
【００５３】
ここまで説明してきたように、フロア関数及び／またはシーリング関数を用いる探索は、他の集合を再度フェッチするフラグメントをこれ以上含まないバンドルの集合を見つけるという意味で、完全である。これは、パワー効率の高い解が不可能であるという意味で最適な解である。しかし、本発明から外れることなく、不完全だが、より高速な探索を使用してもよい。これにより、良いバンドルを選択することができるが、必ずしも最適なバンドルではない。
【００５４】
例えば、不完全な探索アルゴリズムは、ｈ（Ｓ）を最も低減するバンドルを毎回追加・集積することにより、１つだけの最終集合Ｓを構成する。図３の例では、バンドル(39c,  39d,  39g)はこのように選択される。シーリング関数ｈ（Ｓ）の例は、バンドルからその期間中に破棄されたＳのバンドルを、容量を超えた時点にわたって合計したものにデータが対応するとき、キャッシュ容量を上回るデータブロック数の合計である。この場合、各バンドルに対して、過剰がある全ての時点にわたって合計して、そのバンドルがいくつの余分なデータブロックを削除するか計算して、最も高い結果を生むバンドルを選択することにより、次のバンドルを毎回選択する。しかし、不完全な探索において他の基準を用いてもよい。例えば、キャッシュ容量に残っている最も大きい過剰がある時点において最も多くのデータブロックを削除するバンドルで集合を拡張する等である。
【００５５】
このタイプのアルゴリズムを用いて、キャッシュマネージメント部１６はキャッシュコンフリクトを解消する一組のバンドルを効果的に選択する。この集合はキャッシングプランと呼ばれる。キャッシュマネージメント部１６は、バンドルに対応する期間中に選択されたバンドルの組のデータブロックのためにいずれのキャッシュロケーションを再使用することによって、キャッシュコンフリクトに従って動作する。すなわち、キャッシュマネージメント部１６がバンドルを選択した時、これは、キャッシュマネージメント部１６がバンドル中の期間の終わりの時点でフラグメントの再フェッチを受け入れたことを意味する。後で、計画された時点の前は使用されないフラグメントのいかなるデータブロックのキャッシュロケーションを再使用してもよい。統計的プロファイルの場合、プロファイルから求めた確率を用いて計算した平均期待エネルギー消費（フラグメントフェッチの平均数）を最小化してもよい。  
キャッシュマネージメント部１６は、プログラムの実行前、または実行中に、そのプランの一部を実行する十分前に、最小消費キャッシングプランを選択する。これにより、徹底した探索をすることが可能になる。あるいは、プランは実行中に、データブロックを破棄する前に作っても良い。これにより、プランを実際のプログラムフローに適応させることができる。この場合、キャッシングプランはプログラム実行の一部としてもよい。例えば、次のブロックを破棄からの時間ウィンドウに実行してもよい。
【００５６】
ランタイムプランニング中には、現時点で破棄されるべきバンドルの選択のみが必要である。例えば、準最良アルゴリズムのランタイムの等価物として、キャッシュマネージメント部１６は一時点でアクティブであるバンドルを考慮する。例えば、キャッシュマネージメント部１６は、キャッシュにあるそれぞれのデータブロックを考慮して、後のそれぞれの時点で再度使用する。そして、かかる各データブロックについて、キャッシュマネージメント部１６は、キャッシュメモリ１２にありその後の時点の前に使用される同じフラグメントの他のデータブロックを特定する。次に、キャッシュマネージメント部１６は、それぞれの後の時点までの時点にわたって合計されたキャッシュ過剰がどのくらい低減されるかを各データブロックについてカウントする。カウントが最も高いデータブロックを選択する。キャッシュマネージメント部１６は、次に、それぞれのデータブロック、及びそれぞれのデータブロックの前に必要ではない同一フラグメントの別データブロックに使用するキャッシュメモリロケーションを再使用する。これらのロケーションｉはいかなる順序で再使用してもよいが、好ましくは、最後に必要なデータブロックのロケーションを最初に再利用する。
【００５７】
しかし、他の基準を準最適探索で使用することもできる。例えば、キャッシュ容量を上回る最大過剰がある、フラグメントのデータが再度必要となる前の将来の時点において最もたくさんのデータブロックを削除するように、フラグメントのデータブロックを破棄する。より複雑な選択アルゴリズムを用いても良い。そのアルゴリズムは、現時点から開始する、破棄すべき適当なデータブロックを大がかりに探索するものである。
【００５８】
好ましくは、キャッシュマネージメント部１６は、データブロックが実際に必要になる前にそのデータブロックに事前フェッチして、データブロックをディスクからフェッチする必要がある時の遅れを避ける。これは、例えば、適当な時にプログラムにプリフェッチコマンドを含めることにより、実現される。事前フェッチのタイミングは、ブロックが必要とされるプログラムの実行の進行段階の表示（例えば、プログラムの初めからのサイクルカウント、またはプログラムカウンター値等）に関連してプロファイルを格納することにより与えられる。
【００５９】
プログラムが常にはデータブロックを同一順序で必要としていない場合、プロファイルを実行に関する統計データからコンパイルする。この種のプロファイリングはそれ自体知られている。基本的に、プログラム実行中の幾つかの点の各々について、将来データブロックのどのシーケンスが最も必要となりやすいかを記録する。好ましくは、１つ以上の最も最近使用されたブロックのいくつかの組み合わせの各々について記録する。このように、キャッシュマネージメント部１６は、ブロックが処理段階と実際に発生した組み合わせに応じて必要となる予測シーケンスを読み出すことができる。
【００６０】
ディスク１００が再書き込み可能ディスクである場合、ブロックをディスク１００上で再配置して、所定のキャッシュポリシーを使用するときにフラグメントをロードする必要性を最小化するようにしてもよい。適当な再配置をプロファイルに基づき選択することができる。例えば、第１のフラグメントを最初にフェッチし、その後所定ブロックをロードするために第２のフラグメントをフェッチすることをプロファイルが示している場合、その所定ブロックを第１のフラグメントに移動して、第２のフラグメントの第２のブロックにフェッチすることを防止してもよい。あるいは、第１のフラグメントのその所定ブロックのみを使用することをプロファイルが示している場合、この所定ブロックを第２のフラグメントに移動してもよいし、所定ブロックと特定ブロックを第３のフラグメントに移動してもよい。
【００６１】
再配置は、プログラムの実行中、または実行の間に、例えばキャッシュマネージメント部１６の制御下で、所定ディスク１００を使用中に自動的に実行されることが好ましい。キャッシュマネージメント部１６はプロファイルの情報とキャッシュアーキテクチャとに応じて再配置を実行する。例えば、キャッシュマネージメント部１６は、所定ブロックのロードと特定ブロックのロードの間の期間が短いので、その期間ではキャッシュメモリ１２の特定ブロックの再配置を強制するために不十分なブロックが必要であることをプロファイルが示す場合、特定ブロック及び所定ブロックの同じフラグメントへの再配置を選択する。同様に、キャッシュマネージメント部１６は、ブロックの使用の間が長いので、副採用としてロードされたブロックを使用する前にそれをキャッシュメモリ１２中で置き換えなければならない場合、異なるフラグメント上の１つのフラグメントからブロックを送ることを選択することもできる。
【００６２】
言うまでもなく、本発明は特定のキャッシュマネージメントポリシーに限定されるものではない。一般的に、キャッシュマネージメントポリシーは、ディスクドライブのフェッチ特性に応じて選択されることが好ましい。
【００６３】
例えば、ディスク上に一定長のフラグメントが予め配置してある場合、ディスクドライブ１０は所定開始点から所定長さまでのフラグメントのみをフェッチすることができる。キャッシュメモリ１２中の所定フラグメントの特定ブロックを保持する決定は、その所定フラグメントのその他のブロックがその特定ブロックの前にロードされなければならないかどうかに依存する。  
他の例では、ディスクドライブ１０は、所定サイズのフラグメントにフェッチすることができる（例えば、バッファメモリ１０８により決まる）。そのフラグメントは各々がディスク上の特定位置にデータブロックを含むが、異なる開始点から始まる。よって、１つのフラグメント中で、連続したブロックの異なる組み合わせが、開始点に応じて発生する。（例えば、ディスク上にブロックＡ，Ｂ，Ｃ，Ｄ，Ｅ，Ｆが格納され、フラグメントは４つのブロックからできている場合、その時、ディスクドライブ１０がフラグメントをブロックＡから読み始めるか、ブロックＣから読み始めることができる場合、フラグメントとして（Ａ，Ｂ，Ｃ，Ｄ）と（Ｃ，Ｄ，Ｅ，Ｆ）を読み出すことができ、一方には含まれていないブロックの組み合わせ（例えば、ＤとＥ）が他方には含まれる）。
【００６４】
この例では、キャッシュマネージメント部１６は、特定データブロックにフェッチする時、追加的自由を有し、この特定データブロックにフェッチするためのフラグメントの開始点を選択することができる。好ましくは、この自由を有利に使用するため、キャッシュマネージメント部１６は、プロファイルから次のデータブロックがあるか判断する：（ａ）キャッシュメモリ１２中にはなく、（ｂ）特定データブロックの後にすぐに必要となるので、使用するまでキャッシュメモリ１２に保存することができ、（ｃ）特定データブロックに近いところにディスク１００上に格納されており、追加データブロックを同じフラグメントでその特定データブロックと伴に読み出すことができる。かかるデータブロックがある場合、キャッシュマネージメント部１６は、特定データブロックにフェッチするためにフラグメントの開始点を選択し、そのフラグメントがその追加データブロックも含むようにすることができる。一旦フェッチされると、その追加データブロックは後で使用するため、キャッシュメモリ１２に保存される。このように、追加的にフラグメントにフェッチすることが防止される。
【００６５】
他の例では、フラグメントの長さを変えることもできる。この場合、キャッシュマネージメント部１６は、好ましくは、パワー消費を低減するためフラグメントの長さを適応させる。特定のデータブロックにフェッチしなければならない時、フラグメント長を適応させて、プロファイルによって、後で使用するためにキャッシュできる追加的データブロックだけを含むようにすることが好ましい。
【００６６】
説明した実施形態では、モータやアクチュエータ等のディスクドライブの部分をそれへのパワー供給を止める（cut）ことにより停止させたが、言うまでもなく、これらの部分のパワー消費は他の方法でこれらの部分を停止（deactivate）することで低減することができる。例えば、その部分を低パワー消費モード（例えば、低速状態）にする切り換える制御信号を使っても良い。
【００６７】
さらに、１度に１つのフラグメントを読み出す装置について本発明を説明したが、言うまでもなく、複数のデータブロックの他のフェッチ部であって、エネルギー消費オーバーヘッドがまったく、またはほとんどなしに一緒にフェッチすることができるフェッチ部を使用することもできる。例えば、固定サイズではなく、固定位置フェッチ部、ディスク状のいろいろな位置で始まる固定サイズフェッチ部を使用して、特定データブロックを他のデータブロックの選択可能なコンテクストでロードしてもよい（例えば、先行するＮ−１個のデータブロック（Ｎはフェッチ部のサイズ）または後続のＮ−１個のデータブロック、または先行するＮ−１−ｍ個と後続のｍこのデータブロック）。言うまでもなく、これは本発明には影響しない。最もパワーを節約できる（選択可能な別の可能なバンドルを画成する）開始点の探索を必要とするだけだからである。同様に、フェッチ部のサイズＮはパワー消費に影響し、サイズは探索中に適応することができる。  
【図面の簡単な説明】
【００６８】
【図１】データ処理装置を示す。
【図２】アプリケーションプログラムとディスクレイアウトを示す。
【図３】図３ａ−ｃは、キャッシュプランニングアルゴリズムの動作を示す。
【図１】
2007535058.tif 000004
【図２】
2007535058.tif 000005
【図３ａ】
2007535058.tif 000006
【図３ｂ】
2007535058.tif 000007
【図３ｃ】
2007535058.tif 000008
【国際調査報告】
2007535058.tif 000009
2007535058.tif 000010