(57)【特許請求の範囲】
【請求項１】
所定の記憶装置に入出力されるデータのキャッシュ処理を制御するためのキャッシュ制御プログラムにおいて、
コンピュータに、
前記記憶装置からのデータ読み込み要求に応答し、当該データ読み込み要求で指定された転送データと当該転送データの後続データとが、複数のブロックで構成されるキャッシュ領域内に格納されているか否かを判断し、
前記転送データが前記キャッシュ領域に格納されていた場合、前記キャッシュ領域から前記転送データを所定の記憶領域に読み込み、
前記転送データと当該転送データの後続データとのうち前記キャッシュ領域に格納されていない未格納データを格納する格納ブロックを、再利用順に応じてランク分けされた前記複数ブロックのうち再利用順が高いランクのブロックから優先的に決定し、
前記記憶装置内の前記未格納データを前記決定された格納ブロックに順次転送すると共に、前記未格納データに含まれる前記転送データを前記所定の記憶領域に読み込み、
前記転送データとその前に転送されたデータとの連続性を判断し、前記転送データとその前に転送されたデータとが連続した一連のデータの場合、当該一連のデータの先頭から所定量のデータを格納したブロックの再利用順のランクを下げる、
処理を実行させることを特徴とするキャッシュ制御プログラム。
【請求項２】
前記データ読み込み要求が、前記転送データを含むファイルを実行可能なプロセスからの実行要求に基づいている場合、データの連続性に拘わらず、データを格納したブロックの再利用順のランクを所定値未満に設定するようコンピュータを動作させることを特徴とする請求項１記載のキャッシュ制御プログラム。
【請求項３】
前記キャッシュ領域内のブロック毎にアクセス回数をカウントし、
前記転送データの前記格納ブロックの決定において、再利用順のランクが同じ場合、アクセス回数の少ないブロックを優先的に前記格納ブロックとして決定するようコンピュータを動作させることを特徴とする請求項１記載のキャッシュ制御プログラム。
【請求項４】
１つのファイルにおいて使用可能な前記キャッシュ領域内の上限ブロック数が予め設定されており、前記転送データの前記格納ブロックの決定において、前記転送データを含むファイルが利用しているブロック数を算出し、当該ブロック数が前記上限ブロック数に達している場合には、前記転送データを含むファイルが利用しているブロックの中から、前記格納ブロックを決定するようコンピュータを動作させることを特徴とする請求項１記載のキャッシュ制御プログラム。
【請求項５】
データのキャッシュ処理を行うコンピュータにおいて、
第１の記憶装置と、
複数のブロックで構成されるキャッシュ領域が設けられた第２の記憶装置と、
前記第１の記憶装置からのデータ読み込み要求に応答し、当該データ読み込み要求で指定された転送データと当該転送データの後続データとが、複数のブロックで構成されるキャッシュ領域内に格納されているか否かを判断する判断手段と、
前記転送データと当該転送データの後続データとのうち前記キャッシュ領域に格納されていない未格納データを格納する格納ブロックを、再利用順に応じてランク分けされた前記複数のブロックのうち再利用順が高いランクのブロックから優先的に決定する決定手段と、
前記第１の記憶装置内の前記未格納データを、前記決定された格納ブロックに順次転送する転送手段と、
前記キャッシュ領域に格納されていた前記転送データ、または前記転送手段で転送された前記転送データを、所定の記憶領域に読み込む読み込み手段と、
前記転送データとその前に転送されたデータとの連続性を判断し、前記転送データとその前に転送されたデータとが連続した一連のデータの場合、当該一連のデータの先頭から所定量のデータを格納したブロックの再利用順のランクを下げるランク変更手段と、
を有することを特徴とするコンピュータ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はデータのキャッシュ処理を行うキャッシュ制御プログラムおよびキャッシュ処理を行うコンピュータに関し、特に大容量のファイルのシーケンシャルなデータの読み込みを伴うキャッシュ処理のキャッシュ制御プログラムおよびコンピュータに関する。
【０００２】
【従来の技術】
計算機システムにおいて、磁気ディスク装置等の二次記憶装置へのアクセスの高速化を図るための仕組みとして、ディスクキャッシュがある。ディスクキャッシュを行うコンピュータは、データを読み出すとき、いったんデータをメモリ（主記憶装置）内に設けられたキャッシュ領域へ読み出して、キャッシュ領域から要求先へデータを転送する。そして、コンピュータは、同じデータを繰り返し読み出す際には、そのデータをメモリのキャッシュ領域から読み出す。これにより、２回目以降のデータアクセスでは、キャッシュ領域からデータを読み出すだけでよく、二次記憶装置へのアクセス回数を減らすことができる。メモリは、二次記憶装置よりも高速にアクセスできるため、データのアクセス速度が高速化される。
【０００３】
なお、メモリのキャッシュ領域は有限である。そのため、キャッシュ領域の全てにデータが格納された後に、新たなデータを読み出すときは、コンピュータは、再利用するキャッシュ領域を特定し、その領域に格納されているデータを消去する。そして、コンピュータは、再利用するキャッシュ領域に、読み出すデータを転送する。
【０００４】
ここで、キャッシュヒット率（読み込み対象のデータが既にキャッシュ領域上に存在する確率）の向上を望む場合、再利用するキャッシュ領域として、以後のアクセス可能性（アクセス頻度）が低いデータを保持している領域を選択する必要がある。ところが、キャッシュ領域に格納された各データに関して、今後すぐに使用される可能性が有るかどうかは、一概には判断できない。そこで、一般的には、キャッシュ領域のうち、最後にアクセスしてからの経過時間が長いデータが格納された領域から順に使用する方式が採られている。
【０００５】
【発明が解決しようとする課題】
しかし、必ずしも、最後にアクセスしてから長時間経過したデータ程アクセス頻度が低いとは限らない。そのため、上記方式だけでは、場合によっては、キャッシュヒット率があまり向上しないことがあった。
【０００６】
たとえば、画像データや音声データを有する大容量のファイルに対してｒｅａｄ（読み込み）／ｗｒｉｔｅ（書き出し）要求が発行された場合、その大容量ファイルのために、大量のキャッシュ領域が消費されてしまう。この場合、以前に存在していたキャッシュ領域上の数多くのデータは無効となってしまい、その後の一定期間のキャッシュヒット率が低下してしまう。また、大容量のファイルが先頭から読み込まれれば、先頭のデータから先にキャッシュ領域から消去されてしまう。すると、次回そのファイルを読み込む際に、ファイル読み込み開始時点でキャッシュがヒットせず、ファイルオープンに時間がかかってしまう。
【０００７】
しかも、最近は、コンピュータで動画データや音声データを再生することが一般化しており、大容量のファイルの読み出し処理が頻繁に発生する。動画データや音声データは、実行可能なプログラムとは異なり、短時間に何度も繰り返して読み出されることは少ない。すなわち、アクセス頻度は少ないにも拘わらず、大容量のデータがキャッシュ領域に読み込まれ、キャッシュ領域を無駄に消費してしまう。
【０００８】
本発明はこのような点に鑑みてなされたものであり、大容量のファイルアクセスがあっても、高いキャッシュヒット率を保つことができるデータキャッシュ制御プログラム及びキャッシュ処理を行うコンピュータを提供することを目的とする。
【０００９】
【課題を解決するための手段】
本発明では上記課題を解決するために、図１に示すような、所定の記憶装置に入出力されるデータのキャッシュ処理を制御するためのキャッシュ制御プログラムが提供される。本発明に係るキャッシュ制御プログラムは、コンピュータに、以下の処理を実行させる。
【００１０】
コンピュータは、記憶装置１からのデータ読み込み要求に応答し、データ読み込み要求で指定された転送データと当該転送データの後続データとが、複数のブロックで構成されるキャッシュ領域２内に格納されているか否かを判断する（ステップＳ１）。転送データがキャッシュ領域２に格納されていた場合、コンピュータは、キャッシュ領域２から転送データを所定の記憶領域に読み込む（ステップＳ４）。また、複数のブロックが再利用順に応じてランク分けされており、コンピュータは、転送データと転送データの後続データとのうちキャッシュ領域２に格納されていない未格納データの格納ブロックを、再利用順が高いランクのブロックから優先的に決定する（ステップＳ２）。次に、コンピュータは、記憶装置１内の未格納データを格納ブロックに順次転送する（ステップＳ３）と共に、未格納データに含まれる転送データを所定の記憶領域に読み込む（ステップＳ４）。そして、コンピュータは、転送データとその前に転送されたデータとの連続性を判断し、連続した一連のデータの場合、当該一連のデータの先頭から所定量のデータを格納したブロックの再利用順のランクを下げる（ステップＳ５）。
【００１１】
このような処理をコンピュータに実行させることにより、連続した一連のデータの読み込み要求が行われた際には、先頭からの所定量のデータを格納したブロックの再利用順のランクが低くなる。そのため、他のデータの読み込みの際には、一連のデータの先頭から所定量以降データを格納したブロックが優先的に格納ブロックとして選択される。すなわち、一連のデータの先頭から所定量のデータに関しては、次回の同じデータ転送の際にもキャッシュ領域２内に格納されている可能性が高くなる。また、記憶装置１からキャッシュ領域２へのデータ転送においては、データ読み込み要求で指定された転送データと、その転送データの後続のデータがキャッシュ領域２に転送される。すなわち、シーケンシャルなデータ読み込みの際には、次に後続のデータに対するデータの読み込み要求が出されるが、そのデータが前もってキャッシュ領域２に転送されている。
【００１２】
また、本発明は上記課題を解決するために、データのキャッシュ処理を行うコンピュータにおいて、第１の記憶装置と、複数のブロックで構成されるキャッシュ領域が設けられた第２の記憶装置と、前記第１の記憶装置からのデータ読み込み要求に応答し、当該データ読み込み要求で指定された転送データと当該転送データの後続データとが、複数のブロックで構成されるキャッシュ領域内に格納されているか否かを判断する判断手段と、前記複数のブロックが再利用順に応じてランク分けされており、前記転送データと当該転送データの後続データとのうち前記キャッシュ領域に格納されていない未格納データの格納ブロックを、再利用順が高いランクのブロックから優先的に決定する決定手段と、前記第１の記憶装置内の前記未格納データを前記格納ブロックに順次転送する転送手段と、前記転送データが前記キャッシュ領域に格納されていた前記転送データ、または前記転送手段で転送された前記転送データを、所定の記憶領域に読み込む読み込み手段と、前記転送データとその前に転送されたデータとの連続性を判断し、連続した一連のデータの場合、当該一連のデータの先頭から所定量のデータを格納したブロックの再利用順のランクを下げるランク変更手段と、を有することを特徴とするコンピュータが提供される。
【００１３】
このコンピュータによれば、連続した一連のデータの読み込み要求が行われた際には、先頭からの所定量のデータを格納したブロックの再利用順のランクが低く設定される。すなわち、一連のデータの先頭から所定量のデータに関しては、次回の同じデータ転送の際にもキャッシュ領域２内に格納されている可能性が高くなる。また、記憶装置１からキャッシュ領域２へのデータ転送においては、データ読み込み要求で指定された転送データと、その転送データの後続のデータがキャッシュ領域２に転送される。すなわち、シーケンシャルなデータ読み込みの際には、次に後続のデータに対するデータの読み込み要求が出されるが、そのデータが前もってキャッシュ領域２に転送されている。
【００１４】
【発明の実施の形態】
以下、本発明の実施の形態を図面を参照して説明する。
まず、本発明の実施の形態に適用される発明の概要について説明し、その後、本発明の実施の形態の具体的な内容を説明する。
【００１５】
図１は、本発明の実施の形態に適用される発明の概念図である。本発明に係るキャッシュ制御プログラムを実行するコンピュータは、記憶装置１とキャッシュ領域２とを有している。記憶装置１は、例えば、ハードディスク装置などの二次記憶装置である。記憶装置１には、ファイル１ａが格納されている。キャッシュ領域２は、例えば、半導体メモリなど主記憶装置内のデータ記憶領域である。コンピュータは、アプリケーション３を有している。アプリケーション３は、アプリケーションプログラムを実行することで実現される処理機能である。アプリケーション３は、処理内容に応じて、記憶装置１内のファイル１ａを構成するデータのデータ読み込み要求を出力する。
【００１６】
アプリケーション３からデータ読み込み要求が出されると、コンピュータは、本発明に係るキャッシュ制御プログラムに従ってデータ転送等を伴うキャッシュ制御処理を行う。すなわち、コンピュータは、記憶装置１からのデータ読み込み要求に応答し、データ読み込み要求で指定された転送データと転送データの後続データ（次回読み込みを想定して先読みすべきデータ）とが、複数のブロックで構成されるキャッシュ領域２内に格納されているか否か（キャッシュがヒットしたか否か）を判断する（ステップＳ１）。転送データがキャッシュ領域２に格納されていた場合（キャッシュがヒットした場合）、コンピュータは、キャッシュ領域２から転送データを所定の記憶領域に読み込む（ステップＳ４）。所定の記憶領域とは、例えば、アプリケーション３が占有する主記憶装置内の記憶領域である。
【００１７】
また、複数のブロックが再利用順に応じてランク分けされており、コンピュータは、転送データと転送データの後続データとのうちキャッシュ領域２に格納されていない未格納データの格納ブロックを、再利用順が高いランクのブロックから優先的に決定する（ステップＳ２）。次に、コンピュータは、記憶装置１内の未格納データを格納ブロックに順次転送する（ステップＳ３）と共に、未格納データに含まれる転送データを所定の記憶領域に読み込む（ステップＳ４）。そして、コンピュータは、転送データとその前に転送されたデータとの連続性を判断し、連続した一連のデータの場合、当該一連のデータの先頭から所定量のデータを格納したブロックの再利用順のランクを下げる（ステップＳ５）。
【００１８】
このような処理により、大容量のデータを読み出す際にもキャッシュ領域を無駄に消費せずに、効率的なキャッシュ管理を行うことができる。
すなわち、ファイル１ａが動画データのような大容量のデータであった場合、アプリケーション３がファイル１ａを読み込むには、まず、ファイル１ａの先頭のデータ（ＤＡＴＡ＃１）を転送データとするデータの読み込み要求が出される。なお、以下の説明では、連続した３つ以上のデータに対して続けて読み込み要求が出されたときに、データの連続性ありと判断するものとする。また、後続のデータの先読みとして、続く２つのデータをキャッシュ領域２に読み込むものとする。
【００１９】
１回目のファイル１ａの読み込みにおいては、ファイル１ａの先頭のデータ（ＤＡＴＡ＃１）に対するデータ読み込み要求に応じたキャッシュヒット判断（ステップＳ１）では、キャッシュはヒットしない。そこで、先頭のデータ（ＤＡＴＡ＃１）と後続のデータ（ＤＡＴＡ＃２，＃３）とを格納するためのキャッシュ領域２内の格納ブロック（ブロック＃１，＃２，＃３）が、再利用順のランクが高い順に判断される。そして、データ（ＤＡＴＡ＃１）と後続のデータ（ＤＡＴＡ＃２，＃３）とが、キャッシュ領域２に転送される（ステップＳ３）。先頭のデータ（ＤＡＴＡ＃１）は、アプリケーション３の管理する記憶領域に転送される（ステップＳ４）。このとき、データの連続性は認められず、再利用順のランクの変更は行われない。
【００２０】
続けて、次のデータ（ＤＡＴＡ＃２）に対するデータ読み込み要求がアプリケーション３から出される。このとき、データ（ＤＡＴＡ＃２）のキャッシュ領域２への転送が完了していれば、キャッシュがヒットする。キャッシュがヒットすれば、キャッシュ領域２内のデータ（ＤＡＴＡ＃２）が、アプリケーション３の管理する記憶領域に転送される（ステップＳ４）。この際、先読みの処理により、キャッシュ領域２に未格納の後続データが、キャッシュ領域２内のブロックに転送される。このときにも、データの連続性は認められず、再利用順のランクの変更は行われない。
【００２１】
さらに、次のデータ（ＤＡＴＡ＃３）に対するデータ読み込み要求がアプリケーション３から出される。このとき、データ（ＤＡＴＡ＃３）のキャッシュ領域２への転送が完了していれば、キャッシュがヒットする。キャッシュがヒットすれば、キャッシュ領域２内のデータ（ＤＡＴＡ＃３）が、アプリケーション３の管理する記憶領域に転送される（ステップＳ４）。この際、先読みの処理により、キャッシュ領域２に未格納の後続データが、キャッシュ領域２内のブロックに転送される。この場合、データの連続性が認められる。その結果、一連のデータの先頭から所定量のデータ（例えば、ブロック２つ分のデータ）の再利用順のランクが低く変更される。他のデータの再利用順のランクは高いままである。
【００２２】
以後、順次ファイル１ａのデータがキャッシュ領域２に転送され（ステップＳ３）、アプリケーション３の管理する記憶領域に転送される（ステップＳ４）。これにより、１回目のファイル１ａの読み込みが完了する。
【００２３】
２回目のファイル１ａの読み込みが行われるまでには、アプリケーション３は様々なデータのデータ読み込み要求を出す。その際、使用されるキャッシュ領域２内のブロックは、基本的に再利用順が高いランクのブロックである。そのため、再利用順が低く変更されたブロック（ブロック＃１，＃２）に格納されたデータ（ＤＡＴＡ＃１，＃２）は、継続してキャッシュ領域２内に保持される。
【００２４】
アプリケーション３により、２回目のファイル１ａの読み込みが行われると、先頭のデータ（ＤＡＴＡ＃１）に対するデータ読み取り要求が出される。すると、キャッシュがヒットし（ステップＳ１）、キャッシュ領域２内のブロック（ブロック＃１）のデータ（ＤＡＴＡ＃１）が、アプリケーション３の記憶領域に転送される（ステップＳ４）。同様に、次のデータ（ＤＡＴＡ＃２）に対するデータ読み取り要求においてもキャッシュがヒットし（ステップＳ１）、キャッシュ領域２内のブロック（ブロック＃２）のデータ（ＤＡＴＡ＃２）が、アプリケーション３の記憶領域に転送される（ステップＳ４）。これらのデータ（ＤＡＴＡ＃１、＃２）の転送が行われている間に、後続のデータ（ＤＡＴＡ＃３）の先読みが行われ、キャッシュ領域２に転送される（ステップＳ３）。そのため、次のデータ（ＤＡＴＡ＃３）に対するデータ読み取り要求においてもキャッシュがヒットし（ステップＳ１）、キャッシュ領域２内のブロック（ブロック＃３）のデータ（ＤＡＴＡ＃３）が、アプリケーション３の記憶領域に転送される（ステップＳ４）。以降、ファイル１ａを構成する後続のデータが順次先読みされ、短時間でファイル１ａの読み込みが行われる。
【００２５】
このように、後続のデータの先読みを行うキャッシュ制御において、大容量のデータの連続した読み込みが行われた際には、先頭の数ブロック分のデータのみをキャッシュ領域２に継続して保持しておくだけで、２回目以降の読込の際のキャッシュヒット率を向上させることができる。すなわち、ファイル１ａを構成する全てのデータをキャッシュ領域２に保持していなくても、十分に高いキャッシュヒット率が得られる。その結果、キャッシュ領域２を有効に利用することができ、コンピュータの全体的な処理効率を向上させることができる。
【００２６】
ところで、図１の説明では、一連のデータの先頭のデータ以外は、再利用順が高いままであるが、実行権のあるアクセスに基づいて読み込まれたデータは、その後も、頻繁にアクセスされる可能性が高い。そこで、例えば、実行権のあるアクセスで指定されたデータを格納するブロックの再利用順のランクを、低くすることができる。これにより、実行権のあるアクセスによるプログラムファイルなどの起動を高速にすることを可能とする。
【００２７】
さらに、各ブロック内のデータに対するアクセス数をカウントし、再利用順のランクが同じ場合には、アクセスカウント数の少ないブロックを優先的に選択してもよい。
【００２８】
また、図１の説明では、巨大なファイルの読み込みが行われると、キャッシュ領域２内がそのファイルのデータで占有されてしまう。そこで、１ファイルが使用できるブロック数の上限数を設定できるようにしてもよい。このとき、１つのファイルのために使用しているブロック数が上限数を超える場合、次に転送するデータを格納するためのブロックは、そのファイルのために使用しているブロックの中から選択する。これにより、巨大ファイルによるキャッシュ領域の独占使用を防ぐことができ、どのファイルに対しても一定の転送性能が得られる。
【００２９】
なお、図１で説明した機能は、その手順を定義したキャッシュ制御プログラムをコンピュータに実行させることで、コンピュータによって実現することができる。以下、本発明を適用したコンピュータに関する本発明の実施の形態を具体的に説明する。
【００３０】
図２は、本発明の実施の形態に用いるコンピュータのハードウェア構成例を示す図である。コンピュータ１００は、ＣＰＵ(Central Processing Unit)１０１によって装置全体が制御されている。ＣＰＵ１０１には、バス１０７を介してＲＡＭ(Random Access Memory)１０２、ハードディスクドライブ（ＨＤＤ:Hard Disk Drive）１０３、グラフィック処理装置１０４、入力インタフェース１０５、および通信インタフェース１０６が接続されている。
【００３１】
ＲＡＭ１０２には、ＣＰＵ１０１に実行させるＯＳ(Operating System)のプログラムやキャッシュ制御を行うためのプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ１０２には、ユーザバッファやキャッシュ領域が設けられる。ユーザバッファには、ユーザが起動したアプリケーションプログラムの少なくとも一部や、そのアプリケーションプログラムの処理に必要なデータが格納される。ＨＤＤ１０３は、２次記憶装置であり、ＯＳやアプリケーションプログラムが格納される。
【００３２】
グラフィック処理装置１０４には、モニタ１１が接続されている。グラフィック処理装置１０４は、ＣＰＵ１０１からの命令に従って、画像をモニタ１１の画面に表示させる。入力インタフェース１０５には、キーボード１２とマウス１３とが接続されている。入力インタフェース１０５は、キーボード１２やマウス１３から送られてくる信号を、バス１０７を介してＣＰＵ１０１に送信する。
【００３３】
通信インタフェース１０６は、ネットワーク１０に接続されている。通信インタフェース１０６は、ネットワーク１０を介して、他のコンピュータとの間でデータの送受信を行う。
【００３４】
以上のようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。すなわち、コンピュータ１００は、キャッシュ転送機能をサポートしている。キャッシュ転送機能では、コンピュータ１００は、ユーザがデータ転送のために用意したＲＡＭ１０２内のユーザバッファと２次記憶装置であるＨＤＤとでデータ転送を行う場合、直接データ転送を行うのではなく、システムメモリ内に用意されたキャッシュ領域に一度データを転送する。そして、コンピュータ１００は、キャッシュ領域からそれぞれの要求先のアプリケーションプログラム用のユーザバッファへデータ転送を行う。なお、以下の説明では、アプリケーションプログラムをコンピュータが実行することで実現される処理機能を、単にアプリケーションと呼ぶこととする。
【００３５】
以下、コンピュータ１００で実現される本発明の実施の形態の処理機能について説明する。
図３は、本発明の実施の形態の機能ブロック図である。図３に示すように、コンピュータ１００のデータ記憶機能は、二次記憶装置１１０と主記憶装置１２０とに分かれている。
【００３６】
二次記憶装置１１０は、図２のＨＤＤ１０３に相当する。二次記憶装置１１０には、多数のファイル１１１，１１２，１１３，・・・が格納されている。
主記憶装置１２０は、図２のＲＡＭ１０２に相当する。主記憶装置１２０には、ユーザバッファ１２１、キャッシュ領域１２２、読み込み用ファイル転送情報１２３、書き出し用ファイル転送情報１２４、キャッシュ情報１２５、及びキャッシュ再利用順リスト１２６を有している。
【００３７】
ユーザバッファ１２１は、アプリケーション１３０に対応づけて設けられている。ユーザバッファ１２１には、アプリケーション１３０の機能を実行するためのプログラムの一部やデータが格納される。
【００３８】
キャッシュ領域１２２は、ページサイズという一定のサイズ単位のデータ格納領域（ブロック）で構成されている。個々のブロックには、その情報を管理するキャッシュ情報１２５が存在する。
【００３９】
読み込み用ファイル転送情報１２３は、ファイルの読み込みが行われる毎に、そのファイルに対応づけて生成される。読み込み用ファイル転送情報１２３には、直近に読み込まれた複数のデータの転送履歴や、それらのデータがシーケンシャル（連続的）なデータかどうかに関する情報が格納されている。
【００４０】
書き出し用ファイル転送情報１２４は、ファイルの書き出しが行われる毎に、そのファイルに対応づけて生成される。書き出し用ファイル転送情報１２４には、直近に書き出された複数のデータの転送履歴や、それらのデータがシーケンシャルなデータかどうかに関する情報が格納されている。
【００４１】
キャッシュ情報１２５には、キャッシュ領域１２２内のブロックに格納されている各データの管理情報が格納されている。管理情報としては、ブロックに格納されているデータ（以下、キャッシュデータという）の識別情報や、そのブロックの先頭アドレスを示すポインタなどの情報である。
【００４２】
キャッシュ再利用順リスト１２６には、キャッシュ領域１２２内の各ブロックを、再利用順のレベルが高いブロックとレベルが低いブロックとに区別して、それぞれの再利用順を定義している。
【００４３】
また、コンピュータ１００には処理機能として、アプリケーション１３０、キャッシュヒット判断部１４０、格納ブロック判断部１５０、ファイルデータ転送部１６０、キャッシュデータ転送部１７０、及び再利用順設定部１８０を有している。なお、アプリケーション１３０以外は、ＯＳの機能の一部である。
【００４４】
アプリケーション１３０は、ユーザの操作入力や、コンピュータ１００内で発生する実行命令に応答して所定の処理を実行する。アプリケーション１３０は、処理の実行に伴い、ファイル１１１，１１２，１１３，・・・（プログラムの少なくとも一部も含む）のデータ転送要求を、ＯＳに対して出力する。データ転送要求には、データの読み取り要求とデータの書き出し要求とがある。
【００４５】
キャッシュヒット判断部１４０は、アプリケーション１３０からデータ転送要求を受け取ると、キャッシュ情報１２５を参照し、データ転送要求で指定されたデータ及びその後続のデータがキャッシュ領域１２２に格納されているかどうかを判断する。キャッシュヒット判断部１４０は、要求されたデータがキャッシュ領域１２２に格納されていれば、そのデータの転送要求をキャッシュデータ転送部１７０に通知する。一方、キャッシュヒット判断部１４０は、要求されたデータがキャッシュ領域１２２に格納されていなければ、データを格納するブロックの判断要求を格納ブロック判断部１５０に渡す。
【００４６】
格納ブロック判断部１５０は、キャッシュヒット判断部１４０からブロック判断要求を受け取ると、キャッシュ再利用順リスト１２６を参照し、データを格納するブロックを判断する。格納ブロック判断部１５０は、キャッシュ領域１２２に空きブロックがあれば、空きブロックをデータの格納ブロックとして判断する。また、格納ブロック判断部１５０は、キャッシュ領域１２２に空きブロックがなければ、再利用順の最も高いデータが格納されたブロックを、データの格納ブロックとして判断する。
【００４７】
格納ブロック判断部１５０は、データ転送要求が書き込み要求であれば、データの格納ブロックを、キャッシュデータ転送部１７０に通知する。また、格納ブロック判断部１５０は、データ転送要求が読み取り要求であれば、データの格納ブロックを、ファイルデータ転送部１６０に通知する。
【００４８】
ファイルデータ転送部１６０は、キャッシュ領域１２２と二次記憶装置１１０との間のデータ転送を行う。具体的には、ファイルデータ転送部１６０は、格納ブロック判断部１５０からデータの格納ブロックの通知を受け取ると、データ転送要求で指定されているデータやその後続のデータを、二次記憶装置１１０から読み出し、そのデータを通知された格納ブロックに格納する。また、ファイルデータ転送部１６０は、データ書き出し要求に従って、キャッシュデータ転送部１７０によってデータがキャッシュ領域１２２に格納されると、そのデータを取得し、二次記憶装置１１０に書き込む。
【００４９】
キャッシュデータ転送部１７０は、ユーザバッファ１２１とキャッシュ領域１２２との間のデータ転送を行う。具体的には、キャッシュデータ転送部１７０は、キャッシュヒット判断部１４０から書き出し時のデータ転送要求を受け取ると、ユーザバッファ１２１内の該当するデータを、キャッシュ領域１２２に転送する。転送するデータは、キャッシュヒット判断部１４０によって検出されたデータの格納ブロックに上書きで格納される。
【００５０】
また、キャッシュデータ転送部１７０は、格納ブロック判断部１５０から書き出し時のデータ転送要求を受け取ると、格納ブロック判断部１５０から通知されたブロックへ、ユーザバッファ１２１内の該当するデータを転送する。データ読み取り要求の際には、キャッシュデータ転送部１７０は、ファイルデータ転送部１６０によってキャッシュ領域１２２に転送されたデータを、ユーザバッファ１２１に転送する。
【００５１】
再利用順設定部１８０は、データ転送要求に応じてデータ転送が行われる毎に、キャッシュ情報１２５とキャッシュ再利用順リスト１２６とに設定されている再利用順に関する情報を更新する。また、再利用順設定部１８０は、読み込みのデータ転送要求に基づくファイル転送が行われる毎に、読み込み用ファイル転送情報１２３の内容を更新する。さらに、再利用順設定部１８０は、書き出しのデータ転送要求に基づくファイル転送が行われる毎に、書き出し用ファイル転送情報１２４の内容を更新する。
【００５２】
次に、主記憶装置１２０に格納される各データの詳細について説明する。
図４は、ファイル転送情報のデータ構造例を示す図である。図４（Ａ）は読み込み用ファイル転送情報であり、図４（Ｂ）は書き出し用ファイル転送情報である。
【００５３】
図４（Ａ）、図４（Ｂ）に示すように、読み込み用ファイル転送情報１２３と書き出し用ファイル転送情報１２４とには、それぞれ直前の２つの転送データ（ファイル中のページ単位のデータ）に関する情報（転送履歴）が登録されている。読み込み用ファイル転送情報１２３と書き出し用ファイル転送情報１２４は、共にシーケンシャルフラグ、転送履歴テーブルインデックス、及び転送履歴テーブルの欄が設けられている。
【００５４】
シーケンシャルフラグは、転送されたデータがシーケンシャル転送（ファイルの先頭から連続的なアクセス）中か否かを示すフラグである。シーケンシャル転送中のデータであれば、シーケンシャルフラグに「ＯＮ」が設定される。シーケンシャル転送中のデータでなければ、シーケンシャルフラグに「ＯＦＦ」が設定される。
【００５５】
転送履歴テーブルインデックスは、ファイル転送情報の登録順を示している。先に登録されたファイル転送情報の転送履歴テーブルインデックスには「０」が設定される。後に登録されたファイル転送情報の転送履歴テーブルインデックスには「１」が設定される。
【００５６】
転送履歴テーブルの欄は、開始位置と転送サイズとの欄が設けられている。開始位置は、転送されたデータのファイル内での開始位置である。開始位置は、例えば、転送対象のファイルにおける先頭からのオフセットで示すことができる。転送サイズは、転送されたデータのサイズである。
【００５７】
二次記憶装置１１０内のファイルに対して読み込みの転送要求があった場合、再利用順設定部１８０によって、その転送要求の開始位置、転送サイズが、転送履歴として読み込み用ファイル転送情報１２３に蓄積される。同様に、二次記憶装置１１０内のファイルに対して書き出しの転送要求があった場合、再利用順設定部１８０によって、その転送要求の開始位置、転送サイズが、転送履歴として書き出し用ファイル転送情報１２４に蓄積される。
【００５８】
なお、３回目以降の転送については、蓄積された転送履歴の古い方を転送履歴テーブルインデックス（転送履歴テーブルインデックスが「０」）から判断し、上書きしていく。この際、新しく登録した転送履歴の転送履歴テーブルインデックスを「１」に変更し、別の転送履歴の転送履歴テーブルインデックスを「０」に変更する。このようにして、転送履歴テーブルインデックスによって、転送履歴の登録順が管理される。
【００５９】
また、過去２回の転送履歴と今回の転送要求の開始位置と転送サイズが連続している場合、シーケンシャルな転送処理を要求していると判断され、シーケンシャルフラグに「ＯＮ」が設定される。このフラグは転送履歴と今回の転送要求の関係が連続していない（シーケンシャル転送でない）状態になるまで維持される。
【００６０】
図５は、キャッシュ情報のデータ構造例を示す図である。キャッシュ情報１２５は、キャッシュデータ情報１２５ａ、ｎｅｘｔポインタ１２５ｂ、ｂａｃｋポインタ１２５ｃ、ファイル用ｎｅｘｔポインタ１２５ｄ、ファイル用ｂａｃｋポインタ１２５ｅ、キープフラグ１２５ｆ、アクセスカウント１２５ｇ、及びｖノードポインタ１２５ｈで構成されている。
【００６１】
キャッシュデータ情報１２５ａは、キャッシュデータを格納しているブロックの状態や、保持しているキャッシュデータの二次記憶装置１１０上でのアドレスなどの管理情報である。キャッシュデータ情報１２５ａを参照することで、キャッシュ情報１２５に対応するキャッシュデータが格納されたキャッシュ領域１２２内の位置を判断することができる。
【００６２】
ｎｅｘｔポインタ１２５ｂは、再利用順が、キャッシュデータ情報１２５ａで特定されるキャッシュデータの次に当たるキャッシュデータ（そのデータのキャッシュデータ情報の位置）を示すポインタである。
【００６３】
ｂａｃｋポインタ１２５ｃは、再利用順が、キャッシュデータ情報１２５ａで特定されるキャッシュデータの前に当たるキャッシュデータ（そのデータのキャッシュデータ情報の位置）を示すポインタである。
【００６４】
ファイル用ｎｅｘｔポインタ１２５ｄは、同一ファイルを構成する複数のキャッシュデータの中で、再利用順が、キャッシュデータ情報１２５ａで特定されるキャッシュデータの次に当たるキャッシュデータ（そのデータのキャッシュデータ情報の位置）を示すポインタである。
【００６５】
ファイル用ｂａｃｋポインタ１２５ｅは、同一ファイルを構成する複数のキャッシュデータの中で、再利用順が、キャッシュデータ情報１２５ａで特定されるキャッシュデータの前に当たるキャッシュデータ（そのデータのキャッシュデータ情報の位置）を示すポインタである。
【００６６】
キープフラグ１２５ｆは、再利用順のランクを示すフラグである。キープフラグ１２５ｆが「ＯＮ」であれば、再利用順が低い（データ保持の優先順が高い）ランクであることを示す。キープフラグ１２５ｆが「ＯＦＦ」であれば、再利用順が高い（データ保持の優先順が低い）ランクであることを示す。
【００６７】
キープフラグ１２５ｆは、データ転送がシーケンシャルか否か、あるいは実行権のあるデータ転送か否かによって設定が変更される。実行権のあるデータ転送とは、実行可能なファイルに関して、そのファイルを実行可能なプロセスからの実行要求に基づいたデータ転送である。
【００６８】
たとえば、読み込み用ファイル転送情報１２３や書き出し用ファイル転送情報１２４のシーケンシャルフラグに「ＯＮ」が設定された場合、データ転送がシーケンシャルと判断される。すると、転送履歴テーブルに保持されている過去２回の転送要求で使用したブロックが検索される。そして、検索したブロックのキャッシュ情報のキープフラグに「ＯＮ」が設定される。
【００６９】
また、実行権があるファイルのデータ転送のために選択したブロックも同様に、キープフラグに「ＯＮ」が設定される。「ＯＮ」の状態のキープフラグは、次回そのブロックへのアクセス時に一度「ＯＦＦ」に戻され、フラグを「ＯＮ」にするのか「ＯＦＦ」にするのかの再評価が行われる。
【００７０】
アクセスカウント１２５ｇは、対応するブロックに格納されたキャッシュデータに対してアクセスが行われた回数である。アクセスカウント１２５ｇの値が大きいほど、使用頻度が高いことを意味している。
【００７１】
ｖノードポインタ１２５ｈは、ファイルシステムにおける各ファイルの管理情報（ｖノード）の格納場所を示すポインタである。
図６は、キャッシュ再利用順リストのデータ構造例を示す図である。キャッシュ再利用順リスト１２６には、高再利用順リスト１２６ａと低再利用順リスト１２６ｂとが含まれている。高再利用順リスト１２６ａは、再利用順のランクが高いキャッシュデータ（キープフラグが「ＯＦＦ」）の中で、最も再利用順が高いキャッシュデータのキャッシュ情報（アクセスカウントの数が最も少ないキャッシュ情報）を示すポインタである。低再利用順リスト１２６ｂは、再利用順のランクが低いキャッシュデータ（キープフラグが「ＯＮ」）の中で、最も再利用順の高いキャッシュデータのキャッシュ情報（アクセスカウントの数が最も少ないキャッシュ情報）を示すポインタである。
【００７２】
キャッシュ再利用順リスト１２６によって、再利用順のランク毎に、最も再利用順の高いキャッシュ情報１２５が指定されていることで、再利用順の高いキャッシュ情報１２５から順番に、キャッシュ情報１２５を辿ることができる。
【００７３】
図７は、再利用順によるキャッシュ情報の配列を示す概念図である。図７に示すように、キャッシュ再利用順リスト１２６では、高再利用順リスト１２６ａによって、再利用順のランクが高いキャッシュデータの中で、最も再利用順が上位のキャッシュデータのキャッシュ情報２１１が指し示されている。また、低再利用順リスト１２６ｂによって、再利用順のランクが低いキャッシュデータの中で、最も再利用順の高いキャッシュデータのキャッシュ情報２２１が指し示されている。図７では、各キャッシュ情報２１１〜２１５，２２１〜２２５の内容のうち、キープフラグ１２５ｆ（図５参照）の内容を上段に示し、アクセスカウント１２５ｇ（図５参照）の内容を下段に示している。
【００７４】
再利用順のランクが高いキャッシュデータの各キャッシュ情報２１１〜２１５では、ｎｅｘｔポインタ１２５ｂ（図５参照）によって、再利用順において次の順番のキャッシュデータに関するキャッシュ情報が指し示されている。従って、キャッシュ情報２１１〜２１５を、再利用順の上位から順番に辿ることができる。同様に、再利用順のランクが低いキャッシュデータの各キャッシュ情報２２１〜２２５では、ｎｅｘｔポインタ１２５ｂ（図５参照）によって、再利用順において次の順番のキャッシュデータに関するキャッシュ情報が指し示されている。従って、キャッシュ情報２２１〜２２５を、再利用順の上位から順番に辿ることができる。
【００７５】
本実施の形態では、再利用順のランクが同じ場合には、アクセスカウント数の少ない程、再利用順が上位となる。また、アクセスカウント数が同じ場合には、最後のアクセスからの経過時間が長いほど、再利用順が上位となる。すなわち、最新にアクセスされたキャッシュデータを格納するブロックの再利用順は、再利用順のランクが同じブロックの中のアクセスカウント数が同じブロックの最後尾となる。
【００７６】
このように、キャッシュ情報１２５が、再利用順に応じて並べられているため、格納ブロックを選択する場合、キャッシュ再利用順リスト１２６の高再利用順リスト１２６ａで指し示されているキャッシュ情報２１１に対応するブロックから順に選択すればよい。
【００７７】
図８は、ｖノード情報の一例を示す図である。ｖノード情報１２７は、ファイルをオープンする際にシステム（ＯＳ）上に設けられるファイルの状態等の管理情報である。ｖノード情報１２７は、ファイル管理情報１２７ａ、キャッシュカウント１２７ｂおよびキャッシュリスト１２７ｃを含んでいる。
【００７８】
ファイル管理情報１２７ａは、対応するファイルを管理するための情報である。ファイル管理情報１２７ａには、ファイル名や二次記憶装置１１０内におけるファイルを構成するデータの格納場所などが含まれる。キャッシュカウント１２７ｂは、このｖノード情報１２７で管理しているファイルで使用しているブロックの数を示している。キャッシュリスト１２７ｃは、このｖノード情報１２７で管理しているファイルのデータが格納されているブロックに対応するキャッシュ情報１２５のリストである。キャッシュリスト１２７ｃには、例えば、このｖノード情報１２７で管理しているファイルの先頭のデータが格納されたブロックのキャッシュ情報１２５を指し示すポインタを登録する。そのポインタで示されたキャッシュ情報１２５のファイル用ｎｅｘｔポインタ１２５ｄを参照することで、そのファイルで使用しているブロックのキャッシュ情報１２５を辿ることができる。
【００７９】
ｖノード情報１２７に、キャッシュカウント１２７ｂを設けたことにより、１ファイルが使用できるブロック数を制限することができる。この場合、コンピュータ１００において、１ファイルで利用可能な最大使用ブロック数を設定できるようにしておく。設定された最大使用ブロック数と、実際にファイルが使用しているブロック数を管理しているキャッシュカウント１２７ｂを比較することで、１ファイルが使用できるブロック数を制限できる。キャッシュ領域１２２にデータを転送するときに、１ファイルの最大使用ブロック数を超えてしまう場合、そのファイルが既に使用しているブロックから格納ブロックが選択される。ファイルが既に使用しているブロックは、ｖノード情報１２７に設けられたキャッシュリスト１２７ｃに基づいて判断することができる。
【００８０】
次に、本実施の形態の処理手順をフローチャートを用いて説明する。
図９は、データ転送の全体の処理手順を示すフローチャートである。この処理は、データ転送要求を受け、転送先へデータを転送するまでの全体の流れを表している。なお、データ転送処理は、アプリケーション１３０からデータ転送要求が出されたときに実行される。以下、図９に示す処理をステップ番号に沿って説明する。
【００８１】
［ステップＳ１１］キャッシュヒット判断部１４０が、データ転送要求を受け取る。
［ステップＳ１２］キャッシュヒット判断部１４０は、受け取ったデータ転送要求で指定されたデータと同じ内容のキャッシュデータを、キャッシュ領域１２２から検索する。具体的には、キャッシュヒット判断部１４０は、キャッシュ領域１２２に格納された各キャッシュデータのキャッシュ情報１２５を参照し、キャッシュ情報１２５のキャッシュデータ情報１２５ａで示されたデータの情報が、データ転送要求で指定されたデータと一致するか否かを、各キャッシュ情報１２５に関して判断する。そして、キャッシュヒット判断部１４０は、データ転送要求で指定されたデータと一致するキャッシュデータ情報１２５ａを有するキャッシュ情報１２５を検出する。
【００８２】
［ステップＳ１３］キャッシュヒット判断部１４０は、ステップＳ１２における検索結果により、データ転送要求で指定されたデータと同じデータがキャッシュ領域１２２内に存在（キャッシュヒット）したか否かを判断する。キャッシュヒットした場合には、キャッシュヒットしたキャッシュ情報１２５が再利用順設定部１８０に通知され、処理がステップＳ１４に進められる。キャッシュヒットしなかった場合には、その判断結果が格納ブロック判断部１５０に通知され、処理がステップＳ１６に進められる。
【００８３】
［ステップＳ１４］再利用順設定部１８０は、キャッシュ領域１２２内の各ブロックの再利用順に関する情報を設定する。この処理の詳細は後述する。
［ステップＳ１５］キャッシュヒット判断部１４０は、転送要求の属性（読み込み要求か、書き出し要求か）を判断する。転送要求の属性が読み込み要求であれば、キャッシュヒットしたキャッシュ情報１２５の内容がファイルデータ転送部１６０に通知され、処理がステップＳ１９に進められる。転送要求の属性が書き出し要求であれば、キャッシュヒットしたキャッシュ情報１２５の内容がキャッシュデータ転送部１７０に通知され、処理がステップＳ１８に進められる。
【００８４】
［ステップＳ１６］格納ブロック判断部１５０は、キャッシュ再利用順リスト１２６を参照し、データを格納するブロックを判断する。具体的には、格納ブロック判断部１５０は、まず、キャッシュ領域１２２内の未使用ブロックの有無を判断する。未使用ブロックがあれば、そのブロックをデータの格納ブロックとする。未使用ブロックがなければ、キャッシュ再利用順リスト１２６の高再利用順リスト１２６ａで指し示されているキャッシュ情報２１１を取得する。そして、格納ブロック判断部１５０は、そのキャッシュ情報２１１に対応するキャッシュデータが格納されているブロックを、転送データの格納ブロックとする。なお、格納ブロック判断部１５０は、高再利用順リスト１２６ａにおいてキャッシュ情報へのポインタが無かった場合（再利用順のランクが高いキャッシュデータが無い場合）には、低再利用順リスト１２６ｂで指し示されているキャッシュ情報２２１を取得し、そのキャッシュ情報２２１に対応するキャッシュデータが格納されているブロックを、転送データの格納先とする。
【００８５】
格納ブロック判断部１５０は、転送データの格納先と判断したキャッシュ領域１２２内のブロックを、ファイルデータ転送部１６０に通知する。なお、ステップＳ１６の処理の詳細は後述する。
【００８６】
［ステップＳ１７］再利用順設定部１８０は、キャッシュ領域１２２内の各ブロックの再利用順に関する情報を設定する。この処理の詳細は後述する。
［ステップＳ１８］ファイルデータ転送部１６０またはキャッシュデータ転送部１７０により、キャッシュ領域１２２へのデータの転送が行われる。すなわち、ステップＳ１３でキャッシュヒットし、データの書き出し要求であった場合には、キャッシュデータ転送部１７０は、ステップＳ１２で検出された領域へユーザバッファ１２１内の転送対象のデータを転送する。また、キャッシュヒットせず、データの書き出し要求であった場合には、キャッシュデータ転送部１７０は、ステップＳ１６で選択された領域へユーザバッファ１２１内の転送対象のデータを転送する。また、キャッシュヒットせず、データの読み込み要求であった場合には、ファイルデータ転送部１６０は、ステップＳ１６で選択された領域へユーザバッファ１２１内の転送対象のデータを転送する。
【００８７】
［ステップＳ１９］ファイルデータ転送部１６０またはキャッシュデータ転送部１７０により、キャッシュ領域１２２から要求先へデータ転送が行われる。すなわち、データ転送要求がデータの書き出し要求であれば、ステップＳ１８においてキャッシュデータ転送部１７０がキャッシュ領域１２２に転送したデータを、ファイルデータ転送部１６０が二次記憶装置１１０に転送する。また、データ転送要求がデータの読み込み要求であれば、ステップＳ１８においてファイルデータ転送部１６０がキャッシュ領域１２２に転送したデータを、キャッシュデータ転送部１７０がユーザバッファ１２１に転送する。
【００８８】
このようにして、データ転送が行われる。以下、本実施の形態における主要な処理の詳細について説明する。
まず、図９のステップＳ１４，Ｓ１７に示すキャッシュ領域の再利用順設定処理の詳細について、図１０〜図１２を参照して説明する。
【００８９】
図１０は、再利用順設定処理を示す第１のフローチャートである。以下、図１０に示す処理をステップ番号に沿って説明する。
［ステップＳ２１］再利用順設定部１８０は、転送すべきデータを含むファイルの属性を参照する。ファイルの属性は、対象のファイルのｖノード情報１２７におけるファイル管理情報１２７ａに設定されている。
【００９０】
［ステップＳ２２］再利用順設定部１８０は、転送要求を出したアプリケーション１３０に対して、ファイルにおいて実行権が設定されているか否かを判断する。実行権が設定されている場合には、処理がステップＳ２３に進められる。実行権が設定されていない場合には、処理がステップＳ２４に進められる。
【００９１】
［ステップＳ２３］再利用順設定部１８０は、転送に使用するブロックの再利用順を下げるため、そのブロックに対応するキャッシュ情報１２５のキープフラグ１２５ｆに「ＯＮ」を設定する。その後、処理が図１２のステップＳ５１に進められる。
【００９２】
一方、ファイルの属性に実行権がない場合（ステップＳ２２でＮＯと判断）、再利用順設定部１８０は、転送パターン（シーケンシャルか否か）によりブロックの再利用順の設定を行うため、以下の処理を行う。
【００９３】
［ステップＳ２４］再利用順設定部１８０は、データ転送で使用するブロックに対応するキャッシュ情報１２５のキープフラグ１２５ｆに「ＯＦＦ」を設定する。すなわち、ステップＳ２３や後述するステップＳ４３（図１１に示す）で「ＯＮ」に設定されたキープフラグ１２５ｆは、そのブロックに対応するキャッシュデータへの次回アクセス時に無効にされる。
【００９４】
［ステップＳ２５］再利用順設定部１８０は、ファイルをオープン時に作成した読み込み用ファイル転送情報１２３または書き出し用ファイル転送情報１２４を参照し、転送履歴テーブルで保持している過去２回分の転送開始位置及び転送サイズと、今回の転送要求の開始位置及び転送サイズとを比較する。
【００９５】
例えば、再利用順設定部１８０は、データ転送要求が読み込み要求であれば、読み込み用ファイル転送情報１２３を参照する。そして、再利用順設定部１８０は、転送履歴テーブルインデックスに「０」が設定されている転送履歴テーブルの開始位置（メモリアドレス）に転送サイズを加算した値が、転送履歴テーブルインデックスに「１」が設定されている転送履歴テーブルの開始位置となる（データが連続である）ことを確認する。さらに、再利用順設定部１８０は、転送履歴テーブルインデックスに「１」が設定されている転送履歴テーブルの開始位置（メモリアドレス）に転送サイズを加算した値が、今回の転送要求の開始位置となる（データが連続である）ことを確認する。これらが正しく確認されれば、それらのデータが一連のデータであること、すなわちシーケンシャルなデータ転送であることが分かる。
【００９６】
データ転送要求が書き出し要求であれば、再利用順設定部１８０は、書き出し用ファイル転送情報１２４を参照し、読み込み要求のときと同様に、データの連続性を確認する。
【００９７】
［ステップＳ２６］再利用順設定部１８０は、ステップＳ２５の比較結果により、各データが連続のデータ（シーケンシャル）か否かを判断する。シーケンシャルであれば処理がステップＳ２７に進められる。シーケンシャルでなければ（ランダム転送）、処理がステップＳ２９に進められる。
【００９８】
［ステップＳ２７］再利用順設定部１８０は、読み込み要求のときは読み込み用ファイル転送情報１２３を参照し、書き出し要求のときは書き出し用ファイル転送情報１２４を参照し、シーケンシャルフラグの状態を判断する。シーケンシャルフラグに「ＯＮ」が設定されていれば、処理が図１２に示すステップＳ５１に進められる。シーケンシャルフラグに「ＯＦＦ」が設定されていれば、処理がステップＳ２８に進められる。
【００９９】
［ステップＳ２８］再利用順設定部１８０は、シーケンシャルな転送であり、ファイル転送情報のシーケンシャルフラグに「ＯＦＦ」が設定されている場合、つまり、今回の転送要求によって初めてシーケンシャルな転送要求であると判断された場合、シーケンシャルフラグに「ＯＮ」を設定する。その後、処理が図１１のステップＳ４１に進められる。
【０１００】
［ステップＳ２９］再利用順設定部１８０は、読み込み要求のときは読み込み用ファイル転送情報１２３を参照し、書き出し要求のときは書き出し用ファイル転送情報１２４を参照し、シーケンシャルフラグの状態を判断する。シーケンシャルフラグに「ＯＮ」が設定されていれば、ステップＳ３０に進められる。シーケンシャルフラグに「ＯＦＦ」が設定されていれば、処理が図１２に示すステップＳ５１に進められる。
【０１０１】
［ステップＳ３０］再利用順設定部１８０は、前回までの転送がシーケンシャルな転送であり、ファイル転送情報のシーケンシャルフラグに「ＯＮ」が設定されている転送履歴については、シーケンシャルフラグに「ＯＦＦ」を設定し、シーケンシャル転送が終了したことを保持する。その後、処理が図１２のステップＳ５１に進められる。
【０１０２】
図１１は、再利用順設定処理を示す第２のフローチャートである。以下、図１１に示す処理をステップ番号に沿って説明する。
［ステップＳ４１］再利用順設定部１８０は、ファイル転送情報の転送履歴テーブルで保持されている過去２回の転送要求で使用したブロックを検索する。具体的には、再利用順設定部１８０は、データ転送要求が読み込み要求であれば、読み込み用ファイル転送情報１２３に基づくブロックを検索し、データ転送要求が書き出し要求であれば、書き出し用ファイル転送情報１２４に基づくブロックを検索する。
【０１０３】
［ステップＳ４２］再利用順設定部１８０は、ステップＳ４１による検索の結果、該当するブロックが検出されたか否かを判断する。該当するブロックが検出された場合には、処理がステップＳ４３に進められる。ブロックが検出されなかった場合には、処理が図１２のステップＳ５１に進められる。
【０１０４】
［ステップＳ４３］再利用順設定部１８０は、過去２回の転送で使用したブロックが存在すれば、ステップＳ４１で検索したブロックのキャッシュ情報１２５にあるキープフラグ１２５ｆに「ＯＮ」を設定する。
【０１０５】
［ステップＳ４４］再利用順設定部１８０は、ステップＳ４１で検索したブロックのキャッシュ再利用順リスト１２６での再利用順を更新する。この処理の詳細は後述する。
【０１０６】
［ステップＳ４５］再利用順設定部１８０は、ファイル内での再利用順位を設定するため、ステップＳ４１で検索したブロックのｖノード情報１２７のキャッシュリスト１２７ｃに対して、ステップＳ４４と同様に再利用順の更新処理を行う。その後、処理が図１２のステップＳ５１に進められる。
【０１０７】
図１２は、再利用順設定処理を示す第３のフローチャートである。以下、図１２に示す処理をステップ番号に沿って説明する。
［ステップＳ５１］再利用順設定部１８０は、キャッシュ情報１２５のアクセスカウント１２５ｇの値を更新（１だけカウントアップ）する。
【０１０８】
［ステップＳ５２］再利用順設定部１８０は、選択したブロックのキャッシュ再利用順リスト１２６での再利用順を変更する。すなわち、再利用順設定部１８０は、ステップＳ２３，Ｓ２４，Ｓ４３，Ｓ５１でキャッシュ情報１２５を変更したブロックのキャッシュ再利用順リスト１２６上でのリンク先を、アクセス頻度の低い順に並びかえる。
【０１０９】
具体的には、再利用順設定部１８０は、キープフラグが「ＯＮ」であれば、そのキャッシュ情報１２５を高再利用順リスト１２６ａに繋がる配列の中に挿入し、キープフラグが「ＯＦＦ」であれば、そのキャッシュ情報１２５を低再利用順リスト１２６ｂの配列の中に挿入する。並び替えでは、各キャッシュ情報１２５がアクセスカウント１２５ｇの少ない順に並べられる。アクセスカウント１２５ｇが同じであれば、最後にアクセスしてからの経過時間の長い順である。配列が決定したら、再利用順設定部１８０は、その配列に従って、各キャッシュ情報１２５のｎｅｘｔポインタ１２５ｂとｂａｃｋポインタ１２５ｃとを更新する。
【０１１０】
［ステップＳ５３］再利用順設定部１８０は、選択したブロックのｖノード情報１２７のキャッシュリスト１２７ｃでの再利用順を変更する。すなわち、再利用順設定部１８０は、ファイル内での再利用順を設定するため、ｖノード情報１２７のキャッシュリスト１２７ｃに対して、ステップＳ５２と同様の再利用順設定処理を行う。
【０１１１】
［ステップＳ５４］再利用順設定部１８０は、最後に今回の転送要求に応じた転送履歴を、読み込み用ファイル転送情報１２３または、書き出し用ファイル転送情報１２４に登録する。すなわち、再利用順設定部１８０は、データ転送要求が読み込み要求であれば読み込み用ファイル転送情報１２３に転送履歴を登録し、データ転送要求が書き出し要求であれば書き出し用ファイル転送情報１２４に転送履歴を登録する。
【０１１２】
転送履歴の登録の際には、転送履歴テーブルインデックスが０である転送情報の場所に今回の転送要求に基づいて転送されたデータの情報（開始位置や転送サイズ）を登録する。そして、新たに登録した転送情報の転送履歴テーブルインデックスを１とし、既に登録されていた転送情報の転送履歴テーブルインデックスを１から０に変更する。
【０１１３】
以上の処理が終了後、処理が図９のステップＳ１５（ステップＳ１４における処理が行われた場合）またはステップＳ１８（ステップＳ１７における処理が行われた場合）に進められる。
【０１１４】
次に図１１のステップＳ４４または図１２のステップＳ５２で行われるキャッシュ再利用順リスト１２６を用いたブロックの再利用順の並び替えについて、詳しく説明する。
【０１１５】
図１３は、再利用順の並び替え処理の手順を示すフローチャートである。以下、図１３に示す処理をステップ番号に沿って説明する。
［ステップＳ６１］再利用順設定部１８０は、キープフラグ１２５ｆ、アクセスカウント１２５ｇを変更したキャッシュ優先度変更対象のブロックのキャッシュ情報１２５を処理対象とし、そのキャッシュ情報１２５がキャッシュ再利用順リスト１２６の高再利用順リスト１２６ａと低再利用順リスト１２６ｂとのどちらに繋がれているかチェックする。高再利用順リスト１２６ａに繋がれている場合には、処理がステップＳ６２に進められる。低再利用順リスト１２６ｂに繋がれている場合には、処理がステップＳ６４に進められる。
【０１１６】
［ステップＳ６２］再利用順設定部１８０は、更新対象のキャッシュ情報１２５のキープフラグ１２５ｆに、「ＯＮ」が設定されているか否かを判断する。キープフラグ１２５ｆが「ＯＮ」の場合には、処理がステップＳ６３に進められる。キープフラグ１２５ｆが「ＯＦＦ」の場合には、処理がステップＳ６６に進められる。
【０１１７】
［ステップＳ６３］再利用順設定部１８０は、更新対象のキャッシュ情報１２５の接続先を、高再利用順リスト１２６ａから低再利用順リスト１２６ｂの先頭に変更する。その後、処理がステップＳ６６に進められる。
【０１１８】
［ステップＳ６４］再利用順設定部１８０は、更新対象のキャッシュ情報１２５のキープフラグ１２５ｆに「ＯＦＦ」が設定されているか否かを判断する。キープフラグが「ＯＦＦ」の場合には、処理がステップＳ６５に進められる。キープフラグが「ＯＮ」の場合に、処理がステップＳ６６に進められる。
【０１１９】
［ステップＳ６５］再利用順設定部１８０は、更新対象のキャッシュ情報１２５の接続先を、低再利用順リスト１２６ｂから高再利用順リスト１２６ａの先頭に変更する。その後、処理がステップＳ６６に進められる。
【０１２０】
［ステップＳ６６］再利用順設定部１８０は、更新対象のキャッシュ情報１２５のｎｅｘｔポインタ１２５ｂにリンクされているキャッシュ情報を参照する。
［ステップＳ６７］再利用順設定部１８０は、更新対象のキャッシュ情報１２５と、そのキャッシュ情報１２５のｎｅｘｔポインタ１２５ｂにリンクされているキャッシュ情報のアクセスカウントを比較する。
【０１２１】
［ステップＳ６８］再利用順設定部１８０は、ステップＳ６７におけるアクセスカウントの比較による、アクセスカウントの大小を判断する。リンク先のキャッシュ情報のアクセスカウントが、更新対象のキャッシュ情報１２５のアクセスカウント１２５ｇ以上の場合、再利用順並び替え処理が終了し、図１１のステップＳ４５又は図１２のステップＳ５３に処理が進められる。そうでない場合、処理がステップＳ６９に進められる。
【０１２２】
［ステップＳ６９］再利用順設定部１８０は、更新対象のキャッシュ情報１２５とリンク先のキャッシュ情報との、それぞれの接続先を変更する。その後、処理がステップＳ６６に進められる。
【０１２３】
これより、更新対象のキャッシュ情報のアクセスカウントが、ｎｅｘｔポインタによるリンク先のキャッシュ情報のアクセスカウントより小さくなるまで、ステップＳ６６〜Ｓ６９の処理が繰り返される。
【０１２４】
なお、Ｓ４５、Ｓ５３のファイル単位のキャッシュ領域の優先度設定は、図１３の説明において、キャッシュ再利用順リスト１２６、キャッシュ情報１２５のｎｅｘｔポインタ１２５ｂをそれぞれｖノード情報１２７のキャッシュリスト１２７ｃ、キャッシュ情報１２５のファイル用ｎｅｘｔポインタ１２５ｄに置き換えて処理される。
【０１２５】
次に図９のＳ１６のキャッシュ領域の選択処理を図１４、図１５を参照しながら説明する。
図１４は、使用するキャッシュ領域の選択処理を示すフローチャートである。このフローチャートは、使用するキャッシュ領域の選択をキャッシュ領域全体から選択するか、ファイルが現在使用している中から選択するかを判断する処理のフローチャートである。以下、図１４に示す処理をステップ番号に沿って説明する。
【０１２６】
［ステップＳ７１］格納ブロック判断部１５０は、先ずシステムが保持している最大使用ブロック数とｖノード情報１２７のキャッシュカウント１２７ｂ（使用キャッシュ領域数）を比較する。比較の結果、ファイルが現在使用しているブロック数が最大使用ブロック数以上であれば、処理がステップＳ７３に進められる。そうでなければ、処理がステップＳ７２に進められる。
【０１２７】
［ステップＳ７２］格納ブロック判断部１５０は、システム全体で管理しているキャッシュ再利用順リスト１２６に基づいて、キャッシュデータ格納用のブロックを選択する。その後、処理がステップＳ７４に進められる。なお、この処理の詳細は後述する。
【０１２８】
［ステップＳ７３］格納ブロック判断部１５０は、システム全体からではなく、データ転送対象のファイルが使用しているブロックの中から、再利用するブロックを選択する。これにより、１ファイル当りの使用ブロック数が制限される。
【０１２９】
［ステップＳ７４］格納ブロック判断部１５０は、選択したブロックとファイルの関連付けを行う。すなわち、格納ブロック判断部１５０は、ステップＳ７２，Ｓ７３により選択したブロックのキャッシュ情報１２５のｖノードポインタ１２５ｈから以前そのブロックを使用していたファイルと今回の転送で使用するファイルが同じであるか否かを判断する。同一ファイルであれば、キャッシュ領域の選択処理が終了し、処理が図９のステップＳ１７に進められる。同一ファイルでなければ、処理がステップＳ７５に進められる。
【０１３０】
［ステップＳ７５］格納ブロック判断部１５０は、結果同一ファイルでない場合、選択したブロックと、そのファイルのｖノード情報１２７との関連付けを外す。
【０１３１】
［ステップＳ７６］格納ブロック判断部１５０は、更新対象のキャッシュ情報１２５のｖノードポインタ１２５ｈに、今回転送されるデータのｖノード情報１２７のポインタをセットすることでキャッシュ情報１２５とｖノード情報１２７とを関連付ける。
【０１３２】
［ステップＳ７７］格納ブロック判断部１５０は、ｖノード情報１２７のキャッシュカウント１２７ｂを更新（使用ブロック数を更新）する。その後、処理が図９のステップＳ１７に進められる。
【０１３３】
次に、図１４のステップＳ７２におけるブロックの選択処理の詳細について説明する。
図１５は、キャッシュ用のブロック選択処理を示すフローチャートである。キャッシュ用のブロック選択では、キャッシュ再利用順リスト１２６から再利用順の最も高いブロックを選択する。以下、図１５に示す処理をステップ番号に沿って説明する。
【０１３４】
［ステップＳ８１］最も再利用順の高いブロックは、キャッシュ再利用順リスト１２６の高再利用順リスト１２６ａに直接続されたブロックである。そのため、格納ブロック判断部１５０は、高再利用順リスト１２６ａにキャッシュ領域１２２内のブロックがリンクされているか否かを判断する。リンクされているブロックがあれば、処理がステップＳ８２に進められる。リンクされているブロックがなければ、処理がステップＳ８３に進められる。
【０１３５】
［ステップＳ８２］格納ブロック判断部１５０は、高再利用順リスト１２６ａで指し示されているブロックを、転送データ格納用のブロックとして選択する。その後、処理がステップＳ８４に進められる。
【０１３６】
［ステップＳ８３］格納ブロック判断部１５０は、低再利用順リスト１２６ｂで指し示されているブロックを、転送データ格納用のブロックとして選択する。その後、処理がステップＳ８４に進められる。
【０１３７】
［ステップＳ８４］格納ブロック判断部１５０は、選択したブロックのキャッシュ情報１２５のキープフラグ１２５ｆ、アクセスカウント１２５ｇを初期化する。その後、処理がステップＳ７４に進められる。
【０１３８】
なお、図１４のステップＳ７３の処理の詳細も、図１５に示した処理と同様である。ただし、キャッシュ再利用順リスト１２６はｖノード情報１２７のキャッシュリスト１２７ｃに置き換えて処理される。
【０１３９】
以上のように、キャッシュ領域１２２内の各ブロックを、再利用順によってランク分けし、シーケンシャルに転送される一連のデータの先頭のデータの再利用順を下げることで、そのデータをキャッシュ領域１２２内に継続して保持させることができる。その結果、次に同じファイルの読み込みが行われるときに、先頭のデータをキャッシュ領域１２２から迅速に取得することができる。また、後続のデータの先読みを行っていることで、先頭のデータを転送している間に後続のデータがキャッシュ領域１２２に格納され、後続のデータも含めて、高速にファイルの読み込みが可能となる。
【０１４０】
しかも、実行権のあるアクセスでは、転送されたデータの再利用順を低くしたため、実行権のあるアクセスにおけるキャッシュヒット率が向上する。
さらに、１ファイル当りのキャッシュ領域の使用量を制限したため、巨大ファイルに対する転送要求に他のファイルの転送要求が影響を受けることが少なくなる。これにより、キャッシュヒット率が以前よりも期待できるようになり、転送要求の性能が向上する。
【０１４１】
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、コンピュータが有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記録装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＤＶＤ(Digital Versatile Disc)、ＤＶＤ−ＲＡＭ(Random Access Memory)、ＣＤ−ＲＯＭ(Compact Disc Read Only Memory)、ＣＤ−Ｒ(Recordable)／ＲＷ(ReWritable)などがある。光磁気記録媒体には、ＭＯ(Magneto-Optical disc)などがある。
【０１４２】
プログラムを流通させる場合には、たとえば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０１４３】
プログラムを実行するコンピュータは、たとえば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送される毎に、逐次、受け取ったプログラムに従った処理を実行することもできる。
【０１４４】
（付記１）  所定の記憶装置に入出力されるデータのキャッシュ処理を制御するためのキャッシュ制御プログラムにおいて、
コンピュータに、
前記記憶装置からのデータ読み込み要求に応答し、当該データ読み込み要求で指定された転送データと当該転送データの後続データとが、複数のブロックで構成されるキャッシュ領域内に格納されているか否かを判断し、
前記転送データが前記キャッシュ領域に格納されていた場合、前記キャッシュ領域から前記転送データを所定の記憶領域に読み込み、
前記複数のブロックが再利用順に応じてランク分けされており、前記転送データと当該転送データの後続データとのうち前記キャッシュ領域に格納されていない未格納データの格納ブロックを、再利用順が高いランクのブロックから優先的に決定し、
前記記憶装置内の前記未格納データを前記格納ブロックに順次転送すると共に、前記未格納データに含まれる前記転送データを前記所定の記憶領域に読み込み、
前記転送データとその前に転送されたデータとの連続性を判断し、連続した一連のデータの場合、当該一連のデータの先頭から所定量のデータを格納したブロックの再利用順のランクを下げる、
処理を実行させることを特徴とするキャッシュ制御プログラム。
【０１４５】
（付記２）  実行権のあるファイルアクセスに基づいたデータ転送の場合、データの連続性に拘わらず、データを格納したブロックの再利用順のランクを所定値未満に設定することを特徴とする付記１記載のキャッシュ制御プログラム。
【０１４６】
（付記３）  前記キャッシュ領域内のブロック毎にアクセス回数をカウントし、
前記転送データの前記格納ブロックの決定において、再利用順のランクが同じ場合、アクセス回数の多いブロックを優先的に前記格納ブロックとして決定することを特徴とする付記１記載のキャッシュ制御プログラム。
【０１４７】
（付記４）  １つのファイルにおいて使用可能な前記キャッシュ領域内の上限ブロック数が予め設定されており、前記転送データの前記格納ブロックの決定において、前記転送データを含むファイルが利用しているブロック数を算出し、当該ブロック数が前記上限ブロック数に達している場合には、前記転送データを含むファイルが利用しているブロックの中から、前記格納ブロックを決定することを特徴とする付記１記載のキャッシュ制御プログラム。
【０１４８】
（付記５）  前記記憶装置へのデータ書き込み要求に応答し、当該データ書き込み要求で指定された書き込み対象データを、一端前記キャッシュ領域に格納した後、前記記憶装置に書き込みを行い、
前記記憶装置に書き込まれた前記書き込みデータと、その前に書き込まれたデータとの連続性を判断し、連続した一連のデータの場合、当該一連のデータの先頭から前記所定量のデータを格納したブロックに関する再利用順のランクを下げる、
ことを特徴とする付記１記載のキャッシュ制御プログラム。
【０１４９】
（付記６）  前記キャッシュ領域を構成する各ブロックのランク分けは、高再利用順と低再利用順との２段階を表すフラグによって行われており、
再利用順のランクの設定の際には、連続するデータの先頭から所定量のデータを格納したブロックに対して、前記低再利用順を表すフラグを設定し、連続するデータの先頭から所定量以降のデータを格納したブロックに対して、前記高再利用順を表すフラグを設定することを特徴とする付記１記載のキャッシュ制御プログラム。
【０１５０】
（付記７）  前記データ読み込み要求に応じて転送される過去所定回数分のデータ転送に関する転送元のデータの開始位置およびデータサイズを、履歴情報として格納し、
前記転送データとその前に転送されたデータとの連続性を判断する際には、前記履歴情報に基づいて判断することを特徴とする付記１記載のキャッシュ制御プログラム。
【０１５１】
（付記８）  前記記憶装置は、二次記憶装置であり、前記キャッシュ領域は主記憶装置内に設けられていることを特徴とする付記１記載のキャッシュ制御プログラム。
【０１５２】
（付記９）  データのキャッシュ処理を行うコンピュータにおいて、
第１の記憶装置と、
複数のブロックで構成されるキャッシュ領域が設けられた第２の記憶装置と、
前記第１の記憶装置からのデータ読み込み要求に応答し、当該データ読み込み要求で指定された転送データと当該転送データの後続データとが、複数のブロックで構成されるキャッシュ領域内に格納されているか否かを判断する判断手段と、
前記複数のブロックが再利用順に応じてランク分けされており、前記転送データと当該転送データの後続データとのうち前記キャッシュ領域に格納されていない未格納データの格納ブロックを、再利用順が高いランクのブロックから優先的に決定する決定手段と、
前記第１の記憶装置内の前記未格納データを前記格納ブロックに順次転送する転送手段と、
前記キャッシュ領域に格納されていた前記転送データ、または前記転送手段で転送された前記転送データを、所定の記憶領域に読み込む読み込み手段と、
前記転送データとその前に転送されたデータとの連続性を判断し、連続した一連のデータの場合、当該一連のデータの先頭から所定量のデータを格納したブロックの再利用順のランクを下げるランク変更手段と、
を有することを特徴とするコンピュータ。
【０１５３】
（付記１０）  所定の記憶装置に入出力されるデータのキャッシュ処理を制御するためのキャッシュ制御方法において、
前記記憶装置からのデータ読み込み要求に応答し、当該データ読み込み要求で指定された転送データと当該転送データの後続データとが、複数のブロックで構成されるキャッシュ領域内に格納されているか否かを判断し、
前記転送データが前記キャッシュ領域に格納されていた場合、前記キャッシュ領域から前記転送データを所定の記憶領域に読み込み、
前記複数のブロックが再利用順に応じてランク分けされており、前記転送データと当該転送データの後続データとのうち前記キャッシュ領域に格納されていない未格納データの格納ブロックを、再利用順が高いランクのブロックから優先的に決定し、
前記記憶装置内の前記未格納データを前記格納ブロックに順次転送すると共に、前記未格納データに含まれる前記転送データを前記所定の記憶領域に読み込み、
前記転送データとその前に転送されたデータとの連続性を判断し、連続した一連のデータの場合、当該一連のデータの先頭から所定量のデータを格納したブロックの再利用順のランクを下げる、
処理を含むことを特徴とするキャッシュ制御方法。
【０１５４】
（付記１１）  所定の記憶装置に入出力されるデータのキャッシュ処理を制御するためのキャッシュ制御プログラムを記録したコンピュータ読み取り可能な記録媒体において、
前記コンピュータに、
前記記憶装置からのデータ読み込み要求に応答し、当該データ読み込み要求で指定された転送データと当該転送データの後続データとが、複数のブロックで構成されるキャッシュ領域内に格納されているか否かを判断し、
前記転送データが前記キャッシュ領域に格納されていた場合、前記キャッシュ領域から前記転送データを所定の記憶領域に読み込み、
前記複数のブロックが再利用順に応じてランク分けされており、前記転送データと当該転送データの後続データとのうち前記キャッシュ領域に格納されていない未格納データの格納ブロックを、再利用順が高いランクのブロックから優先的に決定し、
前記記憶装置内の前記未格納データを前記格納ブロックに順次転送すると共に、前記未格納データに含まれる前記転送データを前記所定の記憶領域に読み込み、
前記転送データとその前に転送されたデータとの連続性を判断し、連続した一連のデータの場合、当該一連のデータの先頭から所定量のデータを格納したブロックの再利用順のランクを下げる、
処理を実行させることを特徴とする記録媒体。
【０１５５】
【発明の効果】
以上説明したように本発明では、連続した一連のデータの先頭からの所定量のデータを格納したブロックの再利用順のランクを低くし、また、転送データの後続のデータのキャッシュ領域への先読みを行うようにした。そのため、連続した一連のデータの先頭のデータが長くキャッシュ領域に保持されキャッシュヒット率が向上するとともに、一連のデータの先頭のデータの後続のデータは、先読みによってキャッシュ領域に記憶されることでキャッシュヒット率が向上する。その結果、処理全体でのキャッシュヒット率が上がり、処理効率が向上する。
【図面の簡単な説明】
【図１】本発明の実施の形態に適用される発明の概念図である。
【図２】本発明の実施の形態に用いるコンピュータのハードウェア構成例を示す図である。
【図３】本発明の実施の形態の機能ブロック図である。
【図４】ファイル転送情報のデータ構造例を示す図である。図４（Ａ）は読み込み用ファイル転送情報であり、図４（Ｂ）は書き出し用ファイル転送情報である。
【図５】キャッシュ情報のデータ構造例を示す図である。
【図６】キャッシュ再利用順リストのデータ構造例を示す図である。
【図７】再利用順によるキャッシュ情報の配列を示す概念図である。
【図８】ｖノード情報の一例を示す図である。
【図９】データ転送の全体の処理手順を示すフローチャートである。
【図１０】再利用順設定処理を示す第１のフローチャートである。
【図１１】再利用順設定処理を示す第２のフローチャートである。
【図１２】再利用順設定処理を示す第３のフローチャートである。
【図１３】再利用順の並び替え処理の手順を示すフローチャートである。
【図１４】使用するキャッシュ領域の選択処理を示すフローチャートである。
【図１５】キャッシュ用のブロック選択処理を示すフローチャートである。
【符号の説明】
１  記憶装置
１ａ  ファイル
２  キャッシュ領域
３  アプリケーション
１００  コンピュータ
１０１  ＣＰＵ
１０２  ＲＡＭ
１０３  ハードディスク装置
１１０  二次記憶装置
１２０  主記憶装置
１３０  アプリケーション
１４０  キャッシュヒット判断部
１５０  格納ブロック判断部
１６０  ファイルデータ転送部
１７０  キャッシュデータ転送部
１８０  再利用順設定部
【図１】
0004067293.tif 000002
【図２】
0004067293.tif 000003
【図３】
0004067293.tif 000004
【図４】
0004067293.tif 000005
【図５】
0004067293.tif 000006
【図６】
0004067293.tif 000007
【図７】
0004067293.tif 000008
【図８】
0004067293.tif 000009
【図９】
0004067293.tif 000010
【図１０】
0004067293.tif 000011
【図１１】
0004067293.tif 000012
【図１２】
0004067293.tif 000013
【図１３】
0004067293.tif 000014
【図１４】
0004067293.tif 000015
【図１５】
0004067293.tif 000016