(57)【特許請求の範囲】
【請求項１】
キャッシュ記憶部にデータをキャッシュする際、予め定められているグループ分け規則に基づいて、予め定められている複数のグループの内の１つのグループに前記データをグループ分けするデータグループ決定ステップと、
前記キャッシュ記憶部からデータをパージすることが必要になった場合、各グループに割り当てられている前記キャッシュ記憶部上の記憶領域のサイズと、各グループのキャッシュヒット率とに基づいて、最低優先度を持つグループを動的に決定する最低優先度決定ステップと、
該最低優先度決定ステップで決定された最低優先度を持つグループ中のデータの内の、そのグループのキャッシュアルゴリズムによって最低優先度が割り当てられているデータをパージする部分キャッシュ管理ステップとを含むことを特徴とするキャッシュ制御方法。
【請求項２】
データを分割することにより得られる分割データをキャッシュ記憶部にキャッシュする際、先頭の分割データを第１のグループに、それ以外の分割データを第２のグループにグループ分けするデータグループ決定ステップと、
前記キャッシュ記憶部からデータをパージすることが必要になった場合、前記第１のグループに属する各分割データの予想アクセス時刻と、前記第２のグループに属する各分割データの予想アクセス時刻とに基づいて、最低優先度を持つグループを動的に決定する最低優先度決定ステップと、
該最低優先度決定ステップで決定された最低優先度を持つグループ中のデータの内の、そのグループのキャッシュアルゴリズムによって最低優先度が割り当てられている分割データをパージする部分キャッシュ管理ステップとを含む特徴とするキャッシュ制御方法。
【請求項３】
キャッシュ記憶部にデータをキャッシュする際、予め定められているグループ分け規則に基づいて、予め定められている複数のグループの内の１つのグループに前記データをグループ分けするデータグループ決定ステップと、
前記キャッシュ記憶部からデータをパージすることが必要になった場合、各グループ内で参照回数が最も少ないデータの最終アクセス時刻に基づいて、最低優先度を持つグループを動的に決定する最低優先度決定ステップと、
該最低優先度決定ステップで決定された最低優先度を持つグループ中のデータの内の、参照回数が最も少ないデータをパージする部分キャッシュ管理ステップとを含むことを特徴とするキャッシュ制御方法。
【請求項４】
キャッシュ記憶部と、
該キャッシュ記憶部にデータをキャッシュする際、予め定められているグループ分け規則に基づいて、予め定められている複数のグループの内の１つのグループに前記データをグループ分けするデータグループ決定手段と、
前記キャッシュ記憶部からデータをパージすることが必要になった場合、各グループに割り当てられている前記キャッシュ記憶部上の記憶領域のサイズと、各グループのキャッシュヒット率とに基づいて、最低優先度を持つグループを動的に決定する最低優先度決定手段と、
該最低優先度決定手段で決定された最低優先度を持つグループ中のデータの内の、そのグループのキャッシュアルゴリズムによって最低優先度が割り当てられているデータをパージする部分キャッシュ管理部とを備えたことを特徴とするキャッシュ制御装置。
【請求項５】
キャッシュ記憶部と、
データを分割することにより得られる分割データを前記キャッシュ記憶部にキャッシュする際、先頭の分割データを第１のグループに、それ以外の分割データを第２のグループにグループ分けするデータグループ決定手段と、
前記キャッシュ記憶部からデータをパージすることが必要になった場合、前記第１のグループに属する各分割データの予想アクセス時刻と、前記第２のグループに属する各分割データの予想アクセス時刻とに基づいて、最低優先度を持つグループを動的に決定する最低優先度決定手段と、
該最低優先度決定手段で決定された最低優先度を持つグループ中のデータの内の、そのグループのキャッシュアルゴリズムによって最低優先度が割り当てられている分割データをパージする部分キャッシュ管理部とを備えたことを特徴とするキャッシュ制御装置。
【請求項６】
キャッシュ記憶部と、
該キャッシュ記憶部にデータをキャッシュする際、予め定められているグループ分け規則に基づいて、予め定められている複数のグループの内の１つのグループに前記データをグループ分けするデータグループ決定手段と、
前記キャッシュ記憶部からデータをパージすることが必要になった場合、各グループ内で参照回数が最も少ないデータの最終アクセス時刻に基づいて、最低優先度を持つグループを動的に決定する最低優先度決定手段と、
該最低優先度決定手段で決定された最低優先度を持つグループ中のデータの内の、参照回数が最も少ないデータをパージする部分キャッシュ管理部とを備えたことを特徴とするキャッシュ制御装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、キャッシュ制御技術に関し、特に、キャッシュヒット率が向上するようにパージするデータを選択する技術に関する。
【０００２】
【従来の技術】
記憶装置の階層化が進むにつれて、キャッシュ技術は、ますます多くの場所で使われるようになっている。また、近年の情報通信機器の高速化によって、全処理時間に対する、ミスヒット時の処理時間が占める割合が大きくなってきており、キャッシュ技術は、性能に大きな影響を及ぼすようになってきている。
【０００３】
その顕著な例は、インターネット等のネットワークを介して転送されるコンテンツをキャッシュするプロキシキャッシュ装置である。プロキシキャッシュ装置等のネットワーク中に設置されたキャッシュ装置におけるキャッシュヒットは、データ転送経路を短縮することでデータ転送速度を向上させるので、データ転送のレスポンスタイムを短縮する。
【０００４】
図１は、プロキシキャッシュ装置４が、インターネット等のネットワーク３を介して、一台以上のサーバ１−１〜１−ｍ及び一台以上のクライアント２−１〜２−ｎの通信を仲介するネットワークシステムの一例を示すブロック図である。プロキシキャッシュ装置４は、サーバ１−ｉ（１≦ｉ≦ｍ）に代わってクライアント２−ｊ（１≦ｊ≦ｎ）のリクエストを受け付け、クライアント２−ｊに代わってサーバ１−ｉにリクエストを発行する。そして、サーバ１−ｉからデータを受けとると、これをクライアント２−ｊに転送する。プロキシキャッシュ装置４は、サーバ１−ｉからデータを受けとった際、このデータをキャッシュする。そして、次に同じデータへのリクエストがクライアント２−ｋ（１≦ｋ≦ｎ）によってなされた時には、プロキシキャッシュ装置４に記憶されたデータが、プロキシキャッシュ装置４からクライアント２−ｋに転送される。
【０００５】
プロキシキャッシュ装置４等のキャッシュ装置で適用されるキャッシュ方式として、ＬＲＵ等を初めとする多くのキャッシュ方式が従来から提案されている。詳しくは、Ｈｅｗｌｅｔｔ−ｐａｃｋａｒｄ社のテクニカルレポート、Ｌｕｄｍｉｌａ  Ｃｈｅｒｋａｓｏｖａ：「Ｉｍｐｒｏｖｉｎｇ  ＷＷＷ  Ｐｒｏｘｉｅｓ  Ｐｅｒｆｏｒｍａｎｃｅ  ｗｉｔｈ  Ｇｒｅｅｄｙ−Ｄｕａｌ−Ｓｉｚｅ−Ｆｒｅｑｕｅｎｃｙ  Ｃａｃｈｉｎｇ  Ｐｏｌｉｃｙ」，ＨＰＬ−９８−６９Ｒ１，９８１１２０．（ｈｔｔｐ：／／ｗｗｗ．ｈｐｌ．ｈｐ．ｃｏｍ／ｔｅｃｈｒｅｐｏｒｔｓ／９８／ＨＰＬ−９８−６９Ｒ１．ｈｔｍｌから入手可能である）（以下、文献１と称する）で述べられている。
【０００６】
理論的に最適なキャッシュ方法は、最も遠い将来にアクセスされるデータに最低の優先度を割り当てる方法であるが、これは将来のデータアクセスが全て分かっていないと実現不可能である。ＬＲＵ等のキャッシングアルゴリズムは最適キャッシュ方法の近似にすぎない。
【０００７】
ＬＲＵ以外にも、様々なキャッシュ方法が提案されている。例えば、Ｅ．Ｏ‘Ｎｅｉｌ，Ｐ．Ｏ’Ｎｅｉｌ，Ｇ．Ｗｅｉｋｕｍ：「Ｔｈｅ ＬＲＵ−Ｋ ｐａｇｅ ｒｅｐｌａｃｅｍｅｎｔ ａｌｇｏｒｉｔｈｍ ｆｏｒ ｄａｔａｂａｓｅ ｄｉｓｋ ｂｕｆｆｅｒｉｎｇ」，Ｐｒｏｃ．ＡＣＭ ＳＩＧＭＯＤ Ｉｎｔｅｒｎａｔｉｏｎａｌ Ｃｏｎｆｅｒｅｎｃｅ ｏｎ Ｍａｎａｇｅｍｅｎｔ ｏｆ Ｄａｔａ，ｐｐ．２９７−３０６，１９９３．（以下、文献２と称する）がある。
【０００８】
文献２に記載されているＬＲＵ−Ｋというキャッシュ方式は、データ毎に、Ｋ個前までのアクセスが行なわれた時刻を記録する。ただし、Ｋは自然数であり、ＬＲＵ−Ｋでは、Ｋ個前のアクセス時刻が最も早いデータからパージする。例えば、Ｋ＝２としたＬＲＵ−２では、データは二回以上アクセスされたか否かで異なる優先度が割り当てられ、二回以上アクセスされたデータの中で最低の優先度を持つデータは、二回目にアクセスされた時刻が最も早いものである。過去一回しかアクセスされたことのないデータは、二回以上アクセスされたデータよりも低い優先度が割り当てられる。ＬＲＵが用いる情報は前回のアクセス時刻のみであるが、ＬＲＵ−Ｋは過去Ｋ回のアクセス時刻を情報として持ち、より多くの情報に基づいてキャッシュ方法を決定している。
【０００９】
Ｄ．Ｌｅｅ，Ｊ．Ｃｈｏｉ，Ｊ．Ｈ． Ｋｉｍ，Ｓ．Ｈ．Ｎｏｈ，Ｓ．Ｌ．Ｍｉｎ， Ｙ．Ｃｈｏ，ａｎｄ Ｃ．Ｓ．Ｋｉｍ：「Ｏｎ ｔｈｅ Ｅｘｉｓｔｅｎｃｅ ｏｆ ａ Ｓｐｅｃｔｒｕｍ ｏｆ Ｐｏｌｉｃｉｅｓ ｔｈａｔ Ｓｕｂｓｕｍｅｓ ｔｈｅ Ｌｅａｓｔ Ｒｅｃｅｎｔｌｙ Ｕｓｅｄ（ＬＲＵ） ａｎｄ Ｌｅａｓｔ Ｆｒｅｑｕｅｎｔｌｙ Ｕｓｅｄ（ＬＦＵ） Ｐｏｌｉｃｉｅｓ」，Ｉｎ Ｐｒｏｃｅｅｄｉｎｇｓ ｏｆ ｔｈｅ １９９９ ＡＣＭ ＳＩＧＭＥＴＲＩＣＳ Ｃｏｎｆｅｒｅｎｃｅ ｏｎ Ｍｅａｓｕｒｅｍｅｎｔ ａｎｄ Ｍｏｄｅｌｉｎｇ ｏｆ Ｃｏｍｐｕｔｅｒ Ｓｙｓｔｅｍｓ，ｐｐ．１３４−１４３，１９９９．（以下、文献３と称する）に示されているキャッシュ方式ＬＲＦＵでは、データの優先度を、ＣＲＦ（Ｃｏｍｂｉｎｅｄ Ｒｅｃｅｎｃｙ ａｎｄ Ｆｒｅｑｕｅｎｃｙ）値で与える。時刻ｔにおけるＣＲＦ値Ｃ（ｔ）は、重みづけ関数Ｆ（ｘ）によって計算される。例えば、現在時刻が８で、時刻１、２、５、８にアクセスがあったとする。この時、Ｃ（ｔ）＝Ｆ（８−１）＋Ｆ（８−２）＋Ｆ（８−５）＋Ｆ（８−８）＝Ｆ（７）＋Ｆ（６）＋Ｆ（３）＋Ｆ（０）となる。データに対するアクセス回数が多い場合、この優先度の計算は重い処理になってしまい、保持すべき情報も多くなるが、Ｆ（ｘ＋ｙ）＝Ｆ（ｘ）Ｆ（ｙ）となるようなＦであれば、Ｃ（ｔ）＝Ｆ（８−１）＋Ｆ（８−２）＋Ｆ（８−５）＋Ｆ（８−８）＝Ｆ（３＋５−１）＋Ｆ（３＋５−２）＋Ｆ（３＋５−５）＋Ｆ（３＋５−８）＝Ｆ（０）＋Ｆ（３）Ｃ（５）となるので、前回のアクセス時刻のＣＲＦ値を元に、容易に計算できる。文献３では、ＬＲＦＵがＬＲＵ−２よりも高いヒット率を達成できることが示されている。
【００１０】
Ｙ．Ｓｍａｒａｇｄａｋｉｓ，Ｓ．Ｋａｐｌａｎ，ａｎｄ Ｐ．Ｗｉｌｓｏｎ： 「ＥＥＬＲＵ：Ｓｉｍｐｌｅ ａｎｄ Ｅｆｆｅｃｔｉｖｅ ＡｄａｐｔｉｖｅＰａｇｅ  Ｒｅｐｌａｃｅｍｅｎｔ」，Ｉｎ  Ｐｒｏｃｅｅｄｉｎｇｓｏｆ  ｔｈｅ  １９９９  ＡＣＭ  ＳＩＧＭＥＴＲＩＣＳ  Ｃｏｎｆｅｒｅｎｃｅ  ｏｎ  Ｍｅａｓｕｒｅｍｅｎｔ  ａｎｄ  Ｍｏｄｅｌｉｎｇ  ｏｆ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍｓ，ｐｐ．１２２−１３３，１９９９．（以下、文献４と記載）では、Ｅａｒｌｙ  Ｅｖｉｃｔｉｏｎ  ＬＲＵ（ＥＥＬＲＵ）というキャッシュ方式が提案されている。このキャッシングアルゴリズムが使用する情報は、前回のアクセス時刻である。ＥＥＬＲＵは、多くの最近アクセスされたデータがキャッシュから削除されるまでは、ＬＲＵと同様に、キャッシュ中のデータで最も遠い過去にアクセスされたデータからパージする。逆に、多くの最近アクセスされたデータがキャッシュから削除された場合、キャッシュ中のデータの中でｅ番目に近い過去にアクセスされたデータからパージする。ただし、ｅはヒット率を上げるように動的に調整される。
【００１１】
ＬＲＵ−Ｋ、ＬＲＦＵ、ＥＥＬＲＵは、いずれもＬＲＵ等の一般的なキャッシュ方式に比べて、高いヒット率を達成できるが、プロキシ装置でのキャッシングには不向きである。なぜなら、プロキシキャッシュ装置で用いられるキャッシュ方式では、多くの場合、データのキャッシュ、パージは、クライアントからのリクエストによって要求されたデータを単位として行なう。そのため、クライアントが大きなデータをリクエストし、このデータがキャッシュされる場合、他の多くのデータがこの大きなデータを記憶するための空き領域を作るために消去されてしまう。つまり、データの有用性はデータのアクセスパターン以外に、データサイズにも依存する。データサイズを考慮したキャッシュ方式の一つは、文献１に示されるＧＤＳＦ（Ｇｒｅｅｄｙ−Ｄｕａｌ−Ｓｉｚｅ−ＦｒｅｑｕｅｎｃｙＣａｃｈｉｎｇ  Ｐｏｌｉｃｙ）である。ＧＤＳＦは、大きなデータに低い優先度を割り当てることでオブジェクトのヒット率を向上させる。このため、連続メディアデータのように大きなデータを扱う場合、連続メディアデータには低い優先度が割り当てられてしまうので、ＧＤＳＦは連続メディアデータを扱うには不向きである。
【００１２】
キャッシュ記憶部は、速度、容量の異なる複数の記憶媒体から構成されることが多い。一般的なキャッシュ記憶部は、高速小容量の主記憶装置と低速大容量の二次記憶装置からなる。このようなキャッシュ記憶部を有するプロキシキャッシュ装置で、連続メディアデータ等の巨大なデータを扱う場合、データサイズが主記憶装置の記憶容量に対して大きいため、ほとんどの場合、二次記憶装置に格納されてしまう。これは、連続メディアデータにアクセスが集中した場合、低速な二次記憶装置からのデータ読みだし速度がボトルネックになってしまうことを意味する。さらに、巨大な連続メディアデータが低速記憶部からのデータ転送を独占してしまうため、多くのデータが記憶されている低速記憶部からの他のデータの転送ができないという問題がある。これは、二次記憶装置中のデータの主記憶装置へのキャッシングだけでなく、遠隔地のホストのデータがローカルな二次記憶装置へキャッシングされるケースでも、同様の問題が生じる。
【００１３】
連続メディアデータのキャッシュ方法の一つは、Ａｓｉｔ  Ｄａｎ，Ｄｉｎｋａｒ  Ｓｉｔａｒａｍ：「Ａ  Ｇｅｎｅｒａｌｉｚｅｄ  Ｉｎｔｅｒｖａｌ  Ｃａｃｈｉｎｇ  Ｐｏｌｉｃｙ  ｆｏｒ  Ｍｉｘｅｄ  Ｉｎｔｅｒａｃｔｉｖｅａｎｄ  Ｌｏｎｇ  Ｖｉｄｅｏ  Ｗｏｒｋｌｏａｄｓ」，ＭｕｌｔｉｍｅｄｉａＣｏｍｐｕｔｉｎｇ  ａｎｄ  Ｎｅｔｗｏｒｋｉｎｇ，ｐｐ．３４４−３５１，１９９６．（以下、文献５と称する）に記載されている。
【００１４】
文献５の方法は、連続メディアデータへのアクセスはシーケンシャルであることを利用している。つまり、連続メディアデータは巨大であるが、一度に全てのデータが要求されるのではなく、ある速度でデータの先頭から順次要求される。そこで、ある連続メディアデータを分割して考えると、分割された先頭のデータが要求されれば、時間が経つにつれ後続の分割データも要求される。従って、先頭のデータが到着した時点で、後続のデータのアクセス時刻を予想することができる。予想アクセス時刻が近いものに高い優先度を与えるのが、文献５に記載されたキャッシュ方式である。
【００１５】
連続メディアデータと非連続メディアデータのように、全く異なるアクセスパターンを持つデータを効率よくキャッシュするのは、一般に困難である。例えば、連続メディアデータと非連続メディアにそれぞれ別々のプロキシキャッシュ装置を用意して、レイヤ７スイッチ等でデータが連続メディアかどうか判定するとしても、連続、非連続メディアデータ用のそれぞれのプロキシキャッシュ装置の間で相互に計算資源を融通することができないからである。例えば、連続メディアデータにアクセスが集中した場合、非連続メディアデータ用のプロキシキャッシュ装置の計算資源には余裕があるのに、連続メディアデータ用のプロキシキャッシュ装置は過負荷になってしまう。また、複数のプロキシキャッシュ装置とレイヤ７スイッチを用いるのは、コスト的に高価である。従って、一台のプロキシキャッシュ装置で、連続、非連続メディアデータをともにキャッシュできるのが望ましい。
【００１６】
プロキシキャッシュ装置で用いられるキャッシュ方式は、装置に一つである必要はない。複数のキャッシュ方式を使用する方法は特開平１１−６５９２７号公報に示されており、文献５に示されるキャッシュ方式と、従来のＬＲＵ、ＬＦＵ等のキャッシュ方式を同時に使う方法が考えられる。特開平１１−６５９２７公報では、複数のキャッシュ方式を用いてデータに優先度を割り当てることができるが、各キャッシュ方式が使用できる記憶領域は固定されている。従って、全体として、あるデータを記憶するのに十分な空き記憶領域があっても、データに適用されるキャッシュ方式が使用できる記憶領域に十分な空き領域がない場合、データをキャッシュすることはできない。従って、特開平１１−６５９２７号公報に示される方法を適用した場合、計算資源の分割の自由度、コストにおいて、レイヤ７スイッチと複数のプロキシキャッシュ装置を使った場合よりも優れているが、依然として計算資源は共有されておらず、動的に変化するリクエストに対応するのは困難である。
【００１７】
【発明が解決しようとする課題】
上述した文献１〜文献５に記載されている従来の技術では、単一の優先度を用いてデータを管理しているため、アクセスパターンが異なる複数のデータ系列、例えば、連続メディアデータと非連続メディアデータ、を効率良くキャッシュすることが困難であるという問題点がある。この問題点は、特開平１１−６５９２７号公報に記載されている技術を利用することによりある程度は解決することができる。つまり、連続メディアデータには予想アクセス時刻に基づく優先度を割り当て、非連続メディアデータにはアクセス頻度（ＬＦＵ）に基づく優先度を割り当てることにより、各データ系列のデータをそれぞれ効率的にキャッシュすることが可能になる。
【００１８】
しかしながら、特開平１１−６５９２７号公報に記載されている技術は、各データ系列に、それぞれ固定的な別々の記憶領域を割り当てるようにしているため、あるデータ系列に対してアクセスが集中すると、他のデータ系列に割り当てられている記憶領域に空きがある場合であっても、上記或るデータ系列に割り当てられている記憶領域の空き不足によりミスヒットが頻繁に発生し、データのパージが頻繁に行われてしまうという問題がある。
【００１９】
そこで、本発明の目的は、特定のデータ系列にアクセスが集中した場合にも、記憶領域を有効利用することにより、高いキャッシュヒット率を得られるようにすることにある。
【００２０】
【課題を解決するための手段】
本発明は上記目的を達成するため、次のようにしている。キャッシュ記憶部にキャッシュするデータを、アクセスパターンが異なるデータ系列毎のグループにグループ分けし、各グループ毎に、独自のキャッシングアルゴリズムで自グループに属するデータに優先度を割り当てる。そして、データをキャッシュ記憶部からパージすることが必要になった場合は、予め定められている評価規則によって決まる最低優先度のグループ中の、そのグループのキャッシングアルゴリズムによって最低優先度が割り当てられているデータをパージする。この構成によれば、各グループ毎に独自のキャッシングアルゴリズムでデータを管理しているにも関わらず、キャッシュされている全グループの全データの内の、最も優先度の低いデータをパージすることができるので、各グループ毎に固定的に記憶領域を割り当てる必要がなくなる。この結果、或るグループにアクセスが集中し、他のグループにアクセスが余りなかった場合、上記或るグループのデータをキャッシュするために多くの記憶領域を使用することが可能になるので、キャッシュヒット率を高いものにすることが可能になる。
【００２１】
【発明の実施の形態】
次に本発明の実施の形態について図面を参照して詳細に説明する。
【００２２】
【構成の説明】
図２は本発明の第一の実施の形態に係るキャッシュ装置１０の構成例を示すブロック図である。本実施の形態のキャッシュ装置１０は、外部からのリクエストを受け付けるリクエスト処理部１１と、キャッシュされたデータを記憶するキャッシュ記憶部１４と、リクエストされたデータがキャッシュされているかどうかを判定し、キャッシュされていれば、そのデータをキャッシュ記憶部１４から読み出すキャッシュ検索部１２と、データをキャッシュするかどうかを判定し、キャッシュする場合はそのデータをキャッシュ記憶部１４に書き込み、キャッシュ記憶部１４の空き記憶領域が足りなくなった時には、いずれかのデータを選択してパージするキャッシュ判定部１３とを備えている。
【００２３】
図３は、図２に示したキャッシュ判定部１３及びキャッシュ記憶部１４の構成例を示すブロック図である。キャッシュ判定部１３は、複数の部分キャッシュ管理部２１−１〜２１−ｎと、データグループ決定手段２２と、最低優先度決定手段２３とを含む。
【００２４】
データグループ決定手段２２は、予め定められているグループ分け規則に従って、キャッシュ記憶部１４にキャッシュされる各データ２５−１〜２５−ｍを、複数の部分キャッシュ管理部２１−１〜２１−ｎの内の、どの部分キャッシュ管理部に管理させるかを決定する。以降、一つの部分キャッシュ管理部で管理されるデータの集合をデータグループと呼ぶ。キャッシュされるデータ２５−１〜２５−ｍは、いずれか一つのデータグループに属し、各データ２５−１〜２５−ｍは、同一のサイズを有する。
【００２５】
各部分キャッシュ管理部２１−１〜２１−ｎは、それぞれ独自のキャッシングアルゴリズムで自管理部に割り当てられているデータを管理するものであり、優先度割り当て手段３１と、部分最低優先度決定手段３２と、データ操作手段３３とを備えている。優先度割り当て手段３１は、それを含んでいる部分キャッシュ管理部２１−ｉ（１≦ｉ≦ｎ）が管理するデータグループ中の各データに、部分キャッシュ管理部２１−ｉ独自のキャッシングアルゴリズムに従った優先度を割り当てる。部分最低優先度決定手段３２は、それを含んでいる部分キャッシュ管理部２１−ｉで管理されているデータグループ中の最も低い優先度を持つ部分最低優先度データを特定する。データ操作手段３３は、データのキャッシュ、パージを行う。
【００２６】
最低優先度決定手段２３は、各部分キャッシュ管理部２１−１〜２１−ｎが管理しているデータグループの中から最低優先度のデータグループを特定する。キャッシュ記憶部１４中の空き記憶領域２４が不足した場合には、最低優先度のデータグループを管理している部分キャッシュ管理部内のデータ操作手段３３が、上記データグループ中の最低優先度を持つデータをパージする。
【００２７】
【動作の説明】
図２、図３、図４を参照しつつ、本実施の形態の動作を説明する。
【００２８】
リクエスト処理部１１が外部からのリクエストを受け取った場合の処理例を図４の流れ図に示す。
【００２９】
まず、リクエスト処理部１１がリクエストを受けとり（図４、ステップＡ１）、キャッシュ検索部１２で、リクエストされたデータがキャッシュ記憶部１４にキャッシュされているかどうかを調べる（ステップＡ２）。
【００３０】
データがキャッシュされていれば、キャッシュ検索部１２は、リクエストされたデータをキャッシュ記憶部１４から読み出す（ステップＡ３）。また、上記データを管理している部分キャッシュ管理部２１−ｉ内の優先度割り当て手段３１は、上記部分キャッシュ管理部２１−ｉが管理しているデータグループ中のデータの優先度を更新する（ステップＡ４）。この優先度の更新は、上記部分キャッシュ管理部２１−ｉのキャッシングアルゴリズムに従って行うものであり、例えば、部分キャッシュ管理部２１−ｉのキャッシングアルゴリズムがＬＦＵであれば、上記データの参照回数を＋１する。これに対して、リクエストされたデータがキャッシュされていなければ、キャッシュ検索部１２は、キャッシュ元からオリジナルなデータＤを取得する（ステップＡ５）。
【００３１】
次に、キャッシュ判定部１３内のデータグループ決定手段２２によって、データＤが属するデータグループが決定され（ステップＢ１）、そのデータグループを管理する部分キャッシュ管理部２１−ｊの優先度割り当て手段３１によって、データＤに優先度が割り当てられる（ステップＢ２）。そして、空き記憶領域２４がデータＤを記憶するのに十分な大きさを持つかどうかの判定を行ない（ステップＢ３）、十分な大きさを持てばステップＢ６へ、十分な大きさを持たなければ、最低優先度決定手段２３が予め定められている評価規則に従って、全データグループの中からデータをパージするデータグループ（最低優先度のデータグループ）を決定する（ステップＢ４）。ステップＢ４で最低優先度のデータグループが決定されると、そのデータグループを管理する部分キャッシュ管理部２１−ｋ（１≦ｋ≦ｎ）内のデータ操作手段３３が、部分最低優先度決定手段３２によって特定されている最低優先度を持つデータが使用していた記憶領域を空き記憶領域２４に含め、データＤをキャッシュするのに十分な空き記憶領域を確保し（ステップＢ５）、確保した空き領域にデータをキャッシュする（ステップＢ６）。尚、本実施の形態では、各データ２５−１〜２５−ｎのサイズを同一としたが、各データのサイズが異なっていても良いことは勿論である。但し、各データのサイズが一定でない場合は、データＤを格納するのに十分な空き記憶領域２４が確保されるまで、ステップＢ４，Ｂ５の処理を繰り返し行うことが必要になる。
【００３２】
【発明の他の実施の形態】
次に、本発明の第二の実施の形態について図面を参照して詳細に説明する。本実施の形態に係るキャッシュ装置は、図３に示したキャッシュ判定部１３の代わりに、図５に示したキャッシュ判定部１３ａを使用することにより実現される。キャッシュ判定部１３ａは、部分キャッシュ管理部２１−１〜２１−ｎの代わりに部分キャッシュ管理部２６−１〜２６−ｎを備えている点が、第一の実施の形態と異なっている。部分キャッシュ管理部２６−１〜２６−ｎは、図３に示された第一の実施の形態における部分キャッシュ管理部２１−１〜２１−ｎの構成に加え、サイズ測定手段３４と、ヒット率測定手段３５とを有する点で異なる。サイズ測定手段３４は、それが含まれている部分キャッシュ管理部２６−ｉ（１≦ｉ≦ｎ）が管理しているデータグループに割り当てられている記憶領域のサイズを測定し、ヒット率測定手段３５は、それが含まれている部分キャッシュ管理部２６−ｉが管理しているデータグループのキャッシュヒット率を測定する。
【００３３】
次に、本実施の形態の動作を、図６の流れ図を参照して詳細に説明する。尚、図６のステップＡ１〜Ａ５、Ｂ１〜Ｂ６の処理は、第一の実施の形態と同様であるため、説明は省略する。
【００３４】
第一の実施の形態では、ステップＢ４でどのようなパラメータを用いて、パージするデータグループを決定するのか、具体的に指定していなかった。本実施の形態では、各部分キャッシュ管理部２６−１〜２６−ｎ内のサイズ測定手段３４及びヒット率測定手段３５で、各データグループに割り当てられている記憶領域のサイズ及びキャッシュヒット率を測定し（ステップＣ１）、それらを用いてパージするデータグループを決定する（ステップＢ４）。より具体的には、各データグループに於ける、キャッシュヒット率と割り当てられている記憶領域のサイズとの比（キャッシュヒット率／サイズ）を求め、その値が最も小さいデータグループをパージするデータグループとする。
【００３５】
次に、本実施の形態の効果について説明する。本実施の形態では、データグループの有用性を判断する際（パージするデータグループを決定する際）、データグループの使用記憶領域の大きさとキャッシュヒット率を考慮する事で、データグループ全体の特徴を考慮しない場合よりも、パージすべきデータをより的確に判断できる。従って、キャッシュヒット率を向上させることが可能である。
【００３６】
【実施例】
次に、第一の実施の形態に対する第一の実施例について説明する。本実施例は、図２に示すキャッシュ装置１０をＷＷＷデータのキャッシングに用いられるプロキシキャッシュ装置として使用した場合についてのものである。
【００３７】
本実施例では、クライアントからキャッシュ装置１０へ送られてくるリクエストは、データを先頭からシーケンシャルに転送することを要求するものとなる。そこで、データを先頭から所定サイズ（例えば４０９６バイト）ずつに分割し、この分割データをキャッシュ／パージの単位とする。この時、データの先頭を含む分割データ（第１番目の分割データ）がまた要求されるかどうかは不確定であるが、第１番目の分割データへのリクエストが到着すれば、後続の分割データ（第２番目以降の分割データ）へのリクエストがなされることは確定する。データの先頭からＡ１バイト目まで、データのＡ１バイト目からＡ２バイト目まで、……、のようにデータを不定長に分割した場合にも本実施例を利用できることは明らかである。
【００３８】
本実施例の動作を説明する。リクエスト処理部１１がクライアントからのリクエスト（或るデータαを先頭からシーケンシャルに転送することを要求するリクエスト）を受け取ると（図４のステップＡ１）、キャッシュ検索部１２が、上記データαの先頭を含む第１番目の分割データがキャッシュ記憶部１４にキャッシュされているかどうかを調べる（ステップＡ２）。
【００３９】
今、第１番目の分割データがキャッシュされていないとすると、キャッシュ検索部１２は、サーバからオリジナルな第１番目の分割データを取得する（ステップＡ５）。その後、キャッシュ判定部１３内のデータグループ決定手段２２によって、上記第１番目の分割データが属するデータグループが決定される（ステップＢ１）。
【００４０】
尚、本実施例では、データグループ決定手段２２は、アクセス時刻を予想できないデータを、データグループＸに分類し、アクセス時刻を予想できるデータをデータグループＹに分類するものとする。より具体的には、データグループ決定手段２２は、第１番目の分割データは、データグループＸに分類する。第２番目以降の分割データは、リクエスト処理部１１が受け付けている後続のリクエストの中に、現在グループ分けの対象にしている分割データを含むデータと同じデータに対するリクエストがある場合には、データグループＹに分類し、そうでない場合には、データグループＸに分類する。また、本実施例では、部分キャッシュ管理部２１−１がデータグループＸに属する分割データを管理し、部分キャッシュ管理部２１−２がデータグループＹに属する分割データを管理するものとする。
【００４１】
ステップＢ１に於いて、第１番目の分割データがデータグループＸに分類されると、部分キャッシュ管理部２１−１内の優先度割り当て手段３１が第１番目の分割データに優先度を割り当てる（ステップＢ２）。ここで、データグループＸを管理する部分キャッシュ管理部２１−１内の優先度割り当て手段３１は、ＬＦＵに従って優先度を割り当てる（参照回数を優先度として割り当てる）。この例では、第１番目の分割データがデータグループＸに属するので、部分キャッシュ管理部２１−１内の優先度割り当て手段３１によって優先度の割り当てがおこなわれるが、ステップＢ１に於いて、分割データがデータグループＹに分類された場合には、データグループＹに属するデータを管理する部分キャッシュ管理部２１−２によって優先度が割り当てられる。データグループＹを管理する部分キャッシュ管理部２１−２内の優先度割り当て手段３１は、予想アクセス時刻を優先度として割り当てる。予想アクセス時刻は、クライアントからプロキシキャッシュ装置への予想転送速度と、分割されたデータの大きさとから予想される。アクセスされた分割データと到着時刻を予想している分割データとの間にいくつの分割データがあるかも考慮する。例えば、予想転送速度が一定で、一秒間当たり１メガビットで、分割データの大きさが全て２５６キロバイトであるとすると、１つの分割データの転送に２秒かかる。予想アクセス時刻は、「予想アクセス時刻＝現在時刻＋分割データサイズ×Ｒ／データの転送速度」で予想する。ただしＲは、アクセスされた分割データと到着時刻を予想している分割データとの間にいくつの分割データがあるかを表す。
【００４２】
その後、ステップＢ３に於いて、空き記憶領域２４が第１番目の分割データを記憶するのに十分な大きさを持つか否かが調べられる。そして、十分な大きさを持てば、第１番目の分割データは、部分キャッシュ管理部２１−１内のデータ操作手段３３によってキャッシュ記憶部１４にキャッシュされる（ステップＢ６）。これに対して、空き記憶領域２４の大きさが十分でない場合には、最低優先度決定手段２３によってデータグループＸとデータグループＹとの優先度が比較され、パージの対象にするデータグループが決定される（ステップＢ４）。
【００４３】
このステップＢ４の処理を詳しく説明すると、次のようになる。データグループＸ，Ｙの優先度の比較は、部分キャッシュ管理部２１−１内の最低優先度決定手段２３によってデータグループＸの部分最低優先度データに対する予想アクセス時刻を推定し、この値とデータグループＹの部分最低優先度データに割り当てられている優先度（予測アクセス時刻）と比較することで行なう。データグループＸの部分最低優先度データに対する予想アクセス時刻は、現在時刻とデータの通算参照回数を元に推定する。データグループＸのキャッシングアルゴリズムとしてＬＦＵ以外を用いた場合は、そのキャッシュ方式が利用する情報をパラメータとする関数によって、優先度変換を行なう。参照回数で与えられる優先度を予想アクセス時刻に変換する関数は、予想アクセス時刻＝Ｃ＋ｋ／（ｆ＋１）とする。ただし、Ｃは現在時刻、ｆはパージ候補の単位データの参照回数、ｋは定数である。また、部分最低優先度決定手段３２には、ヒープを用いる。
【００４４】
ステップＢ４に於いて、パージ対象にするデータグループが決定されると、そのデータグループを管理している部分キャッシュ管理部内のデータ操作手段３３が、部分最低優先度決定手段３２によって特定される最低優先度データが使用していた領域を空き記憶領域に含め、そこに第１番目の分割データをキャッシュする（ステップＢ５，Ｂ６）。
【００４５】
以上は、データαの第１番目の分割データがキャッシュされていない場合の動作であるが、キャッシュされている場合は、次のような動作が行われる。
【００４６】
ステップＡ２に於いて、第１番目の分割データがキャッシュされていると判断した場合、キャッシュ検索部１２は、第１番目の分割データをキャッシュ記憶部１４から読み出す（ステップＡ３）。その後、データαの第２番目以降のデータの優先度を更新する（ステップＡ４）。
【００４７】
このステップＡ４の処理を詳細に説明すると、次のようになる。データグループ決定手段２２が、データグループＸの分割データを管理している部分キャッシュ管理部２１−１に対して、データαの第２番目以降の分割データを管理対象から除外し、データグループＹの分割データを管理している部分キャッシュ管理部２１−２に対して、データαの第２番目以降の分割データを管理対象にすることを指示する。これにより、部分キャッシュ管理部２１−１は、データαの第２番目以降の分割データを管理対象にしていれば、それを管理対象から除外する。また、部分キャッシュ管理部２１−２は、データαの第２番目以降の分割データを管理対象にしていなければ、それを管理対象にする。その後、部分キャッシュ管理部２１−２内の優先度割り当て手段３１が、データαの第２番目以降の分割データの優先度（予想アクセス時刻）を更新する。この優先度の更新は、前述した式「予想アクセス時刻＝現在時刻＋分割データサイズ×Ｒ／データの転送速度」に基づいて、データαの第２番目以降の各分割データの予想アクセス時刻を求め、求めた予想アクセス時刻を対応する分割データに割り当てることにより行う。また、データグループＸを管理している部分キャッシュ管理部２１−１内の優先度割り当て手段３１は、データαの第１番目の分割データの優先度（参照回数）を更新する。
【００４８】
データαの第１番目の分割データに対する処理が終了すると、第２番目以降の分割データに対して前述した動作と同様の動作が行われる。そして、データαの最後の分割データに対する処理が終了すると、データグループ決定手段２２は、リクエスト処理部１１が受け付けている後続のリクエストの中に、データαに対するリクエストが存在するか否かを調べる。そして、存在しない場合には、データグループＸの分割データを管理している部分キャッシュ管理部２１−１に対して、データαの第２番目以降のデータを管理対象にすることを指示し、データグループＹのデータを管理している部分キャッシュ管理部２１−２に対して、データαの第２番目以降のデータを管理対象から除外することを指示する。これにより、部分キャッシュ管理部２１−１は、データαの第２番目以降の分割データを管理対象にし、部分キャッシュ管理部２１−２は、データαの第２番目以降の分割データを管理対象から除外する。更に、部分キャッシュ管理部２１−１内の優先度割り当て手段３１は、データαの第２番目以降の分割データに、データαの第１番目の分割データと同じ優先度（参照回数）を割り当てる。
【００４９】
本実施例の変形として、主記憶装置に二次記憶装置中のデータをキャッシュするディスクキャッシュ装置に第一の実施の形態を適用した場合を示す。
【００５０】
本発明を、図７に示す、演算装置１０１と、キャッシュ記憶部１０４を有する主記憶装置１０２と、二次記憶装置１０３とから構成されるシステムに適用した場合について考える。尚、主記憶装置１０２上には、図２に示したキャッシュ装置１０の構成要素である、リクエスト処理部１１，キャッシュ検索部１２，キャッシュ判定部１３を実現するためのキャッシュ装置用プログラム１０Ｐが登録されている。このキャッシュ装置用プログラム１０Ｐは、演算装置１０１によって読み取られ、その動作を制御することで、演算装置１０１上にリクエスト処理部１１，キャッシュ検索部１２，キャッシュ判定部１３を実現する。また、主記憶装置１０２上のキャッシュ記憶部１０４は、図２のキャッシュ記憶部１４に相当するものである。
【００５１】
二次記憶装置１０３に連続メディアデータ等の巨大なサイズを持つデータが記憶されているとする。これらのデータへのアクセスは、二次記憶装置１０３からの読み出しに用いられる帯域を長時間にわたって占有する。従って、多くの連続メディアデータ等の巨大なデータがリクエストされた場合、低速な二次記憶装置からの読み出し速度がボトルネックになり、転送速度が大幅に低下してしまう。そこで、連続メディアデータ等の巨大なデータの性質を利用して、なるべく高速な一次記憶からデータが読み出されるように、パージする分割データを選択する。
【００５２】
データは、二次記憶装置１０３の入出力の単位に分割され、この分割データがキャッシュ／パージの単位とされる。例えば、二次記憶装置１０３が４０９６バイトずつ読み出し、書き込みを行なうとすると、データは先頭から４０９６バイトずつに分割され、この分割データがキャッシュ／パージの単位とされる。
【００５３】
本実施例の動作を説明する。キャッシュ装置用プログラム１０Ｐによって実現されるリクエスト処理部１１が、演算装置１０１からリクエスト（或るデータαを先頭からシーケンシャルに転送することを要求するリクエスト）を受け取ると（図４のステップＡ１）、データαの第１番目の分割データから順番に、第一の実施例で説明した処理と同様の処理が行われる。今、例えば、データαの第ｎ番目の分割データが処理対象になったとすると、キャッシュ装置用プログラム１０Ｐによって実現されるキャッシュ検索部１２が、上記データαの第ｎ番目の分割データがキャッシュ記憶部１０４にキャッシュされているかどうかを調べる（ステップＡ２）。
【００５４】
今、第ｎ番目の分割データがキャッシュされていないとすると、キャッシュ検索部１２は、二次記憶装置１０３からオリジナルの第ｎ番目の分割データを取得する（ステップＡ５）。その後、キャッシュ装置用プログラム１０Ｐによって実現されるキャッシュ判定部１３内のデータグループ決定手段２２によって、上記第ｎ番目の分割データが属するデータグループが決定される（ステップＢ１）。このステップＢ１の具体的な処理は、第一の実施例のステップＢ１の処理と全く同じであり、第ｎ番目の分類データは、アクセス時刻を予想不可能なデータグループＸ或いはアクセス時刻を予測可能なデータグループＹに分類される。
【００５５】
その後、ステップＢ２に於いて、第ｎ番目の分割データに優先度が割り当てられる。ここで、第ｎ番目の分割データが、データグループＸに属するものであるときは、参照回数が優先度として割り当てられ、データグループＹに属するものであるときは、予測アクセス時刻が優先度として割り当てられる。予想アクセス時刻は、式「予想アクセス時刻＝現在時刻＋分割データサイズ×Ｒ／演算装置１０１と主記憶装置１０２との間のデータ転送速度」を使用して予想する。但しＲは、アクセスされた分割データと到着時刻を予想している分割データとの間にいくつの分割データがあるかを表す。
【００５６】
その後、ステップＢ３に於いて、キャッシュ記憶部１０４の空き記憶領域が第ｎ番目の分割データを記憶するのに十分な大きさを持つか否かが調べられる。そして、十分な大きさを持てば、第ｎ番目の分割データは、部分キャッシュ管理部２１−１或いは部分キャッシュ管理部２１−２内のデータ操作手段３３によってキャッシュ記憶部１０４にキャッシュされる（ステップＢ６）。これに対して、空き記憶領域の大きさが十分でない場合には、最低優先度決定手段２３によってデータグループＸとデータグループＹとの優先度が比較され、パージの対象にするデータグループが決定される（ステップＢ４）。このステップＢ４の具体的な動作は、第一の実施例と全く同じである。
【００５７】
ステップＢ４に於いて、パージ対象にするデータグループが決定されると、そのデータグループを管理している部分キャッシュ管理部内のデータ操作手段３３が、部分最低優先度決定手段３２によって特定される最低優先度データが使用していた領域をパージし、そこに第ｎ番目の分割データをキャッシュする（ステップＢ５，Ｂ６）。
【００５８】
以上は、データαの第ｎ番目の分割データがキャッシュされていない場合の動作であるが、キャッシュされている場合は、次のような動作が行われる。
【００５９】
ステップＡ２に於いて、第ｎ番目の分割データがキャッシュされていると判断した場合、キャッシュ検索部１２は、第ｎ番目の分割データをキャッシュ記憶部１０４から読み出す（ステップＡ３）。その後、データαの第（ｎ＋１）番目以降のデータの優先度を更新する（ステップＡ４）。このステップＡ４の具体的な動作は、第１の実施例と全く同様である。
【００６０】
以上の動作をデータαの最後の分割データまで行うと、データグループ決定手段２２は、リクエスト処理部１１が受け付けている後続のリクエストの中に、データαに対するリクエストが存在するか否かを調べる。そして、存在しない場合には、データグループＸの分割データを管理している部分キャッシュ管理部２１−１に対して、データαの第２番目以降のデータを管理対象にすることを指示し、データグループＹのデータを管理している部分キャッシュ管理部２１−２に対して、データαの第２番目以降のデータを管理対象から除外することを指示する。これにより、部分キャッシュ管理部２１−１は、データαの第２番目以降の分割データを管理対象にし、部分キャッシュ管理部２１−２は、データαの第２番目以降の分割データを管理対象から除外する。更に、部分キャッシュ管理部２１−１内の優先度割り当て手段３１は、データαの第２番目以降の分割データに、データαの第１番目の分割データと同じ優先度（参照回数）を割り当てる。尚、上述した第一の実施例及びその変形は、第二の実施の形態にも適用できる。
【００６１】
次に、第一の実施の形態に対する第二の実施例を示す。本実施例は、第一の実施の形態に係るキャッシュ装置を、二次記憶装置中にディレクトリデータとファイルデータの二種類の情報が格納されているシステムにおけるディスクキャッシュ装置とした場合についてのものである。
【００６２】
本実施例では、ディレクトリデータと、ファイルデータのそれぞれをＬＦＵでキャッシュし、各データには優先度として参照回数を割り当てる。更に、本実施例では、最低優先度のデータグループを決定するために、各データに最終アクセス時刻も割り当てる。そして、二つのデータグループの部分最低優先度データ（参照回数が最も少ないデータ）のうち、最終アクセス時刻が早い方が最低優先度データとする。
【００６３】
図８は本実施例のブロック図であり、キャッシュ装置２００と、主記憶装置２１０と、二次記憶装置２２０とから構成されている。
【００６４】
主記憶装置２１０には、キャッシュ記憶部２１１が設けられている。二次記憶装置２２０には、複数のディレクトリデータＡ〜Ｆと、複数のファイルデータ１〜６が格納されている。
【００６５】
キャッシュ装置２００は、リクエスト処理部２０１と、キャッシュ検索部２０２と、キャッシュ判定部２０３とを備えている。リクエスト処理部２０１，キャッシュ検索部２０２は、図２に示したリクエスト処理部１１，キャッシュ検索部１２と同様の機能を有する。キャッシュ判定部２０３は、ディレクトリデータを管理する部分キャッシュ管理部２０４−１と、ファイルデータを管理する部分キャッシュ管理部２０４−２と、最低優先度決定手段２０８と、データグループ決定手段２０９とを備えている。
【００６６】
外部からのリクエストをリクエスト処理部２０１が受け付けると（図４，ステップＡ１）、キャッシュ検索部２０２は、リクエストされたデータがキャッシュ記憶部２１１にキャッシュされているか否かを調べる（ステップＡ２）。
【００６７】
そして、キャッシュされている場合には、キャッシュ検索部２０２は、リクエストされたデータをキャッシュ記憶部２１１から読み出す（ステップＡ３）。その後、上記リクエストされているデータを管理している部分キャッシュ管理部２０４−ｉ（ｉ＝１または２）内の優先度割り当て手段２０５−ｉが、上記リクエストされたデータの参照回数（優先度）および最終アクセス時刻を更新する（ステップＡ４）。これに対して、リクエストされたデータがキャッシュされていない場合は、キャッシュ検索手段２０２は、二次記憶装置２２０からリクエストされたデータを取り出す（ステップＡ５）。
【００６８】
その後、キャッシュ判定部２０３内のデータグループ決定手段２０９が、上記データを所属させるデータグループを決定する（ステップＢ１）。本実施例では、上記データがディレクトリデータである場合には、所属先を部分キャッシュ管理部２０４−１で管理されるデータグループＧ１にし、ファイルデータである場合には、所属先を部分キャッシュ管理部２０４−２で管理されるデータグループＧ２とする。
【００６９】
その後、所属先とされた部分キャッシュ管理部２０４−ｉ内の優先度割り当て手段２０５−ｉが、上記データに参照回数（優先度）および最終アクセス時刻を割り当てる（ステップＢ２）。そして、キャッシュ記憶部２１１の空き領域が、データを記憶するのに十分な大きさを持つかどうかの判定を行ない（ステップＢ３）、十分な大きさを持てば、キャッシュ記憶部２１１にデータを格納する（ステップＢ６）。これに対して、空き領域が十分な大きさを持たない場合は、最低優先度決定手段２０８が、部分最低優先度決定手段２０６−１，２０６−２によって求められた、データグループＧ１，Ｇ２中の部分最低優先度データ（参照回数が最も少ないデータ）の最終アクセス時刻を比較し、最終アクセス時刻が新しい方のデータグループをパージ対象のデータグループとする（ステップＢ４）。
【００７０】
その後、パージ対象にされたデータグループを管理している部分キャッシュ管理部２０４−ｉ内のデータ操作手段２０７−ｉが、部分最低優先度決定手段２０６−ｉによって特定されている最低優先度を持つデータが使用していた記憶領域を空き記憶領域に含め、データをキャッシュするのに十分な空き記憶領域を確保し（ステップＢ５）、確保した領域にデータをキャッシュする（ステップＢ６）。
【００７１】
次に、図９に示す関係を持つディレクトリデータＡ〜Ｆ、ファイル１〜６が二次記憶装置２２０に格納されている場合を例にとって、本実施例の効果について説明する。ファイルデータ、ディレクトリデータともに、複数のユーザによって共有されている等の理由で頻繁に参照されるものと、ほとんど参照されないものがあるため、頻繁にアクセスされるファイルを主記憶装置２１０中のキャッシュ記憶部２１１にキャッシュすると、アクセスコストが軽減される。ディレクトリデータＢが４人のユーザに共有されていて、ディレクトリＢに各ユーザがファイルを持っていたとすると、ディレクトリＢは多数のアクセスを受けることになる。
【００７２】
最初に、ディレクトリデータとファイルデータの二つのデータを既存のキャッシングアルゴリズムにより統一的に管理する場合の問題点について説明する。二次記憶装置２２０上にあるディレクトリデータを主記憶装置２１０上のキャッシュ記憶部２１１にキャッシュするとファイルデータへのアクセス速度が増加するため、ディレクトリデータをキャッシュすることは良いが、ファイルデータもキャッシュする必要があるため、ディレクトリデータのキャッシュに割り当てる記憶領域と、ファイルデータのキャッシュに割り当てる記憶領域のバランスを取る必要がある。ところが上に述べた通り、ディレクトリデータは、ファイルデータに比べて多数のアクセスを受ける傾向がある。そのため頻繁にアクセスされるファイルデータ、ディレクトリデータが時間とともに変化した場合には、ディレクトリデータの参照回数とファイルデータの参照回数を直接比較すると、現時点で頻繁にアクセスされているファイルデータよりも、過去に頻繁にアクセスされていたディレクトリデータの方が優先順位が高くなってしまう。この結果、キャッシュ記憶部２１１に格納されているデータをパージすることが必要になった場合、過去に頻繁にアクセスされていたディレクトリデータがパージされずに、現在頻繁にアクセスされているファイルデータがパージされてしまうという問題が生じる。
【００７３】
本実施例では、参照回数に関して、ファイルデータはファイルデータ同士、ディレクトリデータはディレクトリデータ同士の比較になり、ファイルデータをキャッシュするための記憶領域とディレクトリデータをキャッシュするための記憶領域の大きさのバランスは、互いのデータグループで最も不要なデータの最終アクセス時刻の比較によって取られる。頻繁にアクセスされるファイルデータ、ディレクトリデータが移り代わると、ファイルデータ、ディレクトリデータそれぞれの中で高い優先度を持っていた（参照回数が多かった）データが低い優先度を持つようになり、いずれ部分最低優先度データとなる。この時、最も低い優先度を持つディレクトリデータ、ファイルデータのどちらを捨てるかは、参照回数ではなく、最終アクセス時刻によって決定されるため、多くなりがちなディレクトリデータの参照回数とファイルデータの参照回数が比較されることはなく、ファイルデータとディレクトリデータが使用する記憶領域のバランスが取られるので、適切なキャッシングを行なうことができ、ディレクトリデータ、ファイルデータへのキャッシュヒットが増加し、ファイル検索、ファイルＩ／Ｏの速度が増す。
【００７４】
本実施例の変形として、二次記憶装置２２０中にＤＮＳデータとファイルデータとを格納し、キャッシュ装置２００をプロキシキャッシュ装置として使用する場合について説明する。
【００７５】
ＵＲＬは、データを保持するホストと、ホストで解決されるファイルの識別子からなり、ホストとＩＰアドレスの関連づけはＤＮＳデータに基づいて行なわれる。従って、プロキシキャッシュ装置の高速化のためには、ファイルデータだけでなくＤＮＳデータもキャッシュした方が良い。図８に示した部分キャッシュ管理部２０４−１，２０４−２をそれぞれＤＮＳデータ用，ファイルデータ用に使用すれば、ファイルデータとＤＮＳデータが使用するキャッシュ記憶部２１１の領域のバランスが取られるので、適切なキャッシングを行なうことができ、ファイルデータ、ＤＮＳデータへのキャッシュヒットが増加し、クライアントのリクエストに対するレスポンスタイムが短縮される。ファイルデータとＤＮＳデータを共にキャッシュする場合、上記のファイルデータとディレクトリデータの関係と同様、人気のあるファイルを保持するホストのＤＮＳデータは、そのホストが保持するデータに比べて多数のアクセスを受けるため、ファイルデータとＤＮＳデータの参照回数を直接比較すると、ファイルのためのキャッシュ領域とＤＮＳデータのためのキャッシュ領域のバランスがとれない。
【００７６】
上記実施例ではファイルとディレクトリ（ＤＮＳデータ）の優先度を最終アクセス時刻を用いて比較するが、これ以外にもデータグループＹに属するデータに対して、初めてアクセスされた時刻Ｂを付加し、次回のアクセス予想時刻を予想時刻＝Ｃ＋（Ｃ−Ｂ）／Ｆとする方式も考えられる。ただし、Ｃは現在時刻、Ｆは参照回数である。そして、各データグループの部分最低優先度データの内、予想アクセス時刻が最も遠い時刻を示しているものをパージする。尚、上述した第二の実施例は及びその変形は、第二の実施の形態にも適用できる。
【００７７】
次に、第一の実施の形態に対する第三の実施例について説明する。本実施例は、第１の実施の形態に係るキャッシュ装置を、ＷＷＷデータのキャッシングに用いられるプロキシキャッシュ装置に適用した場合についてのものである。
【００７８】
図１０は本実施例に係るキャッシュ装置３００の構成例を示すブロック図であり、リクエスト処理部３０１と、キャッシュ検索部３０２と、キャッシュ判定部３０３と、キャッシュ記憶部３１４とから構成されている。
【００７９】
キャッシュ判定部３０３は、部分キャッシュ管理部３０４−１，３０４−２と、データグループ決定手段３０８と、最低優先度決定手段３０９と、ヒット率推定手段３１０とを備えている。
【００８０】
部分キャッシュ管理部３０４−１，３０４−２は、優先度割り当て手段３０５−１，３０５−２と、部分最低優先度決定手段３０６−１，３０６−２と、データ操作手段３０７−１，３０７−２とを備えている。また、ヒット率推定手段３１０は、サイズ管理手段３１１と、個数管理手段３１２と、演算手段３１３とを備えている。
【００８１】
本実施例においては、キャッシュ記憶部３１４にキャッシュされているデータを、キャッシュされた後一度もアクセスされていないデータグループＬと、キャッシュされた後一度以上アクセスされたデータグループＨとに分けて管理する。従って、キャッシュ記憶部３１４中のデータグループＬのデータがアクセスされた場合、そのデータはデータグループＬから取り除かれて、データグループＨに移される。データグループＨ，Ｌに属するデータは、それぞれ部分キャッシュ管理部３０４−１，３０４−２によって管理される。各部分キャッシュ管理部３０４−１，３０４−２内の優先度割り当て手段３０５−１，３０５−２は、どちらもＬＲＵに従った優先度を、管理しているデータに割り当てる。
【００８２】
ヒット率推定手段３１０内のサイズ管理手段３１１は、データグループＬ，Ｈが占める記憶領域のサイズ｜Ｌ｜，｜Ｈ｜を管理する。個数管理手段３１２は、データグループＬからデータグループＨに移った後、一度以上アクセスされたことのあるデータの数Ｔと、データグループＬからデータグループＨに移った後、一度もアクセスされたことのないデータの数Ｓとを管理している。演算手段３１３は、サイズ管理手段３１１，個数管理手段３１２で管理されているデータに基づいて、データグループＬ，Ｈそれぞれのヒット率の推定値を求める。
【００８３】
次に、本実施例の動作を説明する。
【００８４】
リクエスト処理部３０１が、外部からのデータＤに対するリクエストを受け付けると（図４のステップＡ１）、キャッシュ検索部３０２が、キャッシュ記憶部３１４にデータＤがキャッシュされているか否かを調べる（ステップＡ２）。
【００８５】
キャッシュされている場合（ステップＡ２がｙ）は、キャッシュ検索部３０２によって、キャッシュ記憶部３１４からリクエストされたデータＤが読み出され（ステップＡ３）、更に、上記データＤを管理している部分キャッシュ管理部３０４−ｉ（ｉ＝１または２）内の優先度割り当て手段３０５−ｉによってデータＤに対する優先度（ＬＲＵに従った優先度）が更新される（ステップＡ４）。また、ステップＡ４の処理が終了した後、データグループ決定手段３０８は、上記データＤがデータグループＬに属するものであれば、部分キャッシュ管理部３０４−１，３０４−２に指示を出し、データＤをデータグループＬからデータグループＨへ移す。
【００８６】
これに対して、データＤがキャッシュされていない場合（ステップＡ２がｎ）は、キャッシュ検索部３０２が、キャッシュ元からオリジナルなデータＤを取得する（ステップＡ５）。その後、データグループ決定手段３０８が、上記データＤをデータグループＬにグループ分けし（ステップＢ１）、データグループＬを管理している部分キャッシュ管理部３０４−２内の優先度割り当て手段３０５−２が、データＤに優先度（ＬＲＵに従った優先度）を割り当てる。
【００８７】
その後、ステップＢ３に於いて、データＤを格納するのに十分な空き領域がキャッシュ記憶部３１４上に存在するか否かが調べられる。そして、十分な空き領域が存在する場合には、部分キャッシュ管理部３０４−２内のデータ操作手段３０７−２によって、データＤがキャッシュ記憶部３１４にキャッシュされる（ステップＢ６）。
【００８８】
これに対して、データＤを格納するのに、十分な空き領域が存在しない場合（ステップＢ３がｙ）は、最低優先度決定手段３０９が、ヒット率推定手段３１０の推定結果に基づいて、パージするデータグループを決定する（ステップＢ４）。
【００８９】
このステップＢ４の処理を詳細に説明すると、次のようになる。ヒット率推定手段３１０内の演算手段３１３は、サイズ管理手段３１１，個数管理手段３１２で管理されているデータ｜Ｌ｜，｜Ｈ｜，Ｓ，Ｔを使用して、データグループＬ，Ｈのヒット率の推定値ＳＬ，ＳＨを次式（１），（２）により求めている。
【００９０】
ＳＬ＝｜Ｌ｜／（Ｓ＋ａ）    …  （１）
ＳＨ＝｜Ｈ｜／（Ｔ＋ａ）    …  （２）
ここで、ａは定数である。
【００９１】
最低優先度決定手段３０９は、データグループＬ，Ｈのヒット率の推定値ＳＬ，ＳＨを比較し、ＳＬ≧ＳＨであれば、データグループＨの優先度の方が高いと判断し、データをパージするデータグループをデータグループＬに決定する。ＳＬ＜ＳＨであれば、データグループＬの方が優先度が高いと判断し、データをパージするデータグループをデータグループＨに決定する。以上がステップＢ４で行う処理の詳細である。
【００９２】
ステップＢ４に於いて、パージするデータグループがデータグループＨに決定された場合には、部分キャッシュ管理部３０４−１内のデータ操作手段３０７−１がデータグループＨ中の最低優先度データをキャッシュ記憶部３１４からパージし、その後、データＤをキャッシュ記憶部３１４にキャッシュする（ステップＢ５，Ｂ６）。また、ステップＢ４に於いて、パージするデータグループがデータグループＬに決定された場合には、部分キャッシュ管理部３０４−２内のデータ操作手段３０７−２が、データグループＬ中の最低優先度データをキャッシュ記憶部３１４からパージし、その後、データＤをキャッシュ記憶部３１４にキャッシュする（ステップＢ５，Ｂ６）。
【００９３】
尚、サイズ管理手段３１１では、例えば、次のようにして、データグループＬ，Ｈが占める記憶領域のサイズ｜Ｌ｜，｜Ｈ｜を管理する。ステップＢ５に於いて、データグループＨを管理している部分キャッシュ管理部３０４−１内のデータ操作手段３０７−１がデータをパージした場合、上記データのサイズ分だけデータグループＨのサイズ｜Ｈ｜を減少させ、ステップＢ６に於いてデータ操作手段３０７−１がデータをキャッシュした場合、上記データのサイズ分だけデータグループＨのサイズ｜Ｈ｜を増加させる。また、ステップＢ５に於いて、データグループＬを管理している部分キャッシュ管理部３０４−２内のデータ操作手段３０７−２がデータをパージした場合には、上記データのサイズ分だけデータグループＬのサイズ｜Ｌ｜を減少させ、ステップＢ６に於いてデータ操作手段３０７−２がデータをキャッシュした場合には、上記データのサイズ分だけデータグループＬのサイズ｜Ｌ｜を増加させる。
【００９４】
また、個数管理手段３１２は、例えば次のようにして、個数Ｓ，Ｔを管理する。ステップＡ３において、キャッシュ記憶部３１４から或るデータαが読み出された場合、そのデータαの識別子とアクセス回数との対が、自手段３１２内に設けられているリスト（図示せず）に繋がれているか否かを調べる。もし、繋がれていない場合は、データαの識別子とアクセス回数（０回）との対を、リストに追加し、更に、個数Ｓを＋１する。これに対して、データαの識別子がリストに繋がれている場合は、それと対になっているアクセス回数を＋１し、更新後のアクセス回数が「１回」であるか否かを調べる。そして、アクセス回数が「１回」である場合には、個数Ｔを＋１し、「１回」でない場合には、個数Ｔに対する更新は行わない。また、ステップＢ５に於いて、データ操作手段３０７−１によって、データグループＨ中の最低優先度データβがパージされた場合、リストに繋がれているデータβの識別子とアクセス回数との対に注目し、アクセス回数が「０回」であるか否かを調べる。そして、アクセス回数が「０回」であれば、個数Ｓを−１し、更に、上記注目した対をリストから削除する。これに対して、アクセス回数が「０回」でなければ、個数Ｔを−１し、更に上記注目した対をリストから削除する。
【００９５】
本実施例は、二つのデータグループを組み合わせることで既存のＬＲＵ，ＬＦＵを単独で使った方式の問題点を克服している。
【００９６】
ＬＲＵを使った場合は、ミラーリングを行うためにあるサイト上のＷＷＷデータを大量にコピーするようなアクセスが発生した場合に、一度しかアクセスされないデータも含めて大量のデータに対するアクセスが発生するため、結果として頻繁に利用されるデータがキャッシュから追い出されてキャッシュの効率が低下する問題点がある。
【００９７】
ＬＦＵを使った場合は、ユーザのアクセスパターンが変化して頻繁にアクセスされるデータが時間とともに変化した場合でも、以前アクセスされていたデータに対するアクセス数が大きかった場合は、なかなかキャッシュから追い出されずにキャッシュの効率を低下する問題点がある。本実施例では、ＷＷＷデータを大量にコピーするようなアクセスが発生した場合でも、一度しかアクセスされないデータはデータグループＬに入れられ、結果としてデータグループＬのヒット率が低下するため、データグループＨに入っている頻繁にアクセスされるデータがパージされることがない。この結果、キャッシュを効率的に利用することができる。
【００９８】
また、ユーザのアクセスパターンが変化して頻繁にアクセスされるデータが時間とともに変化した場合は、アクセスされなくなったデータは、以前に頻繁にアクセスされていたデータであってもデータグループＨから急速に追い出されるためキャッシュの効率が低下する問題点が解決される。
【００９９】
また本実施例は、ＬＲＵと同様にデータ構造としてキューを使ってキャッシュされたデータを管理することができるため、一回のキャッシュ操作に要する計算量はＯ（１）しか必要としない。これに対してＬＦＵ等のようにデータ構造としてヒープを用いた他のキャッシングアルゴリズムでは、キャッシュ中のデータ数がｎの時の一回のキャッシュ操作に要する計算量がＯ(logｎ) のキャッシングアルゴリズムと比較して短い計算時間しか必要とせずに実現できるという特長も持つ。
【０１００】
なお、本実施例の適用範囲はＷＷＷデータのキャッシングに用いられるプロキシキャッシュ装置以外にも、ディスク中のデータを主記憶装置中にキャッシュする目的や、ＤＮＳデータを主記憶装置中にキャッシュする目的にも適用可能であることは明らかである。
【０１０１】
本実施例の変形として、ＷＷＷデータのキャッシングだけでなく、データのプリフェッチも行なうプロキシキャッシュ装置に、第一の実施の形態を適用した場合について説明する。
【０１０２】
本実施例を示した図１０において、データグループＨを管理する部分キャッシュ管理部３０４−１をキャッシュされたデータの管理に、データグループＬを管理する部分キャッシュ管理部３０４−２をプリフェッチされたデータの管理に用いる。データグループ決定手段３０８は、プリフェッチされたデータに対してはデータグループＬを割り当て、データグループＬ中にキャッシュされているデータがアクセスされた場合、そのデータをデータグループＬからデータグループＨに移す。また、何れのデータグループの優先度割り当て手段３０５−１，３０５−２も、ＬＲＵに従って優先度を割り当てる。
【０１０３】
ヒット率推定手段３１０は、第三の実施例と同様に、データグループＬのヒット率の推定値ＳＬ＝｜Ｌ｜／（Ｓ＋ａ）と、データグループＨのヒット率の推定値ＳＨ＝｜Ｈ｜／（Ｔ＋ａ）とを求める。最低優先度決定手段３０９は、図４のステップＢ４に於いて、ヒット率推定手段３１０が算出したヒット率の推定値ＳＬ，ＳＨを比較する。そして、ＳＬ≧ＳＨであれば、データグループＨの優先度の方が高いと判断し、データをパージするデータグループをデータグループＬに決定する。ＳＬ＜ＳＨであれば、データグループＬの方が優先度が高いと判断し、データをパージするデータグループをデータグループＨに決定する。
【０１０４】
本実施例のキャッシュ方式と、プリフェッチされたデータを扱う本実施例の変形例は、容易に組み合わせることが可能である。まず、プリフェッチされたデータからなるデータグループＰと、キャッシュされた後一度もアクセスされていないデータグループＬ、キャッシュされた後一度以上アクセスされたデータグループＨを作り、各データグループをＬＲＵでキャッシュする。また、Ｐに属するデータがアクセスされると、そのデータはＬに、Ｌに属するデータがアクセスされると、そのデータはＨに移される。データグループＨに属するデータで、Ｈに移ってから一度以上アクセスされたデータの数Ｔと、データグループＬからデータグループＨへと移ってからアクセスされたことがないデータの数Ｓ、データグループＬに属するデータで、データグループＰから移されたデータの数Ｖ、データグループＬにキャッシュされたデータの数Ｘを管理する。最低優先度決定手段３０９は、上記Ｔ、Ｓ、Ｖ、Ｘを用いて、｜Ｐ｜／Ｖ、｜Ｌ｜／Ｓ、｜Ｈ｜／Ｔのうち、｜Ｐ｜／Ｖが最大値であればＰの、｜Ｌ｜／Ｓが最大値であればＬの、｜Ｈ｜／Ｔが最大値であればＨの中で最低の優先度を持つデータをパージする。
【０１０５】
さらに、異なるヒット率の推定方法について述べる。ｔ回目のリクエストを受け付けた時のデータグループｉに対してh(t,i)を、ｃを０より大きく１未満の定数として、h(t,i)=ch(t-1,i)+(1-c)Δ(t) と定義する。ただし、ｉはデータグループであり、Δ(t) は、t 回目のリクエストがデータグループｉに属するデータに対するものであれば１、そうでなければ０を取る。そして、ｔ回目のリクエストを受けた時のデータグループｉのデータサイズをs(t,i)とし、h(t,i)/s(t,i) をヒット率とする。ヒット率が最小であるデータグループの部分最低優先度データが最低優先度データとみなされ、パージされる。
【０１０６】
また、第一の実施例で述べたデータグループＸ、Ｙに対して上記同様、ヒット率をh(t,i)/s(t,i) と推定し、最小のh(t,i)/s(t,i) を持つデータグループの部分最低優先度データをパージする方法が、容易に類推できる。
【０１０７】
次に、第一の実施の形態の第四の実施例を述べる。
【０１０８】
本実施例は、HTML(Hyper Text Markup Language)で記述されたWeb ページ(HTML 文書) 、およびそれらのページに埋め込まれている画像、音声、音楽、動画、映像、あるいはJavaなどのプログラミング言語で記述されたプログラムなどのWeb オブジェクトを管理するキャッシュ装置に、第一の実施の形態を適用したものである。
【０１０９】
HTML文書においては、他のHTML文書、もしくはWeb オブジェクトとの論理的な関連をつけるために「リンク」が用いられている。例えば、「<a href = URL>アンカー </a> 」という記述を用いることで、あるHTML文書中の「アンカー」という部分と、URL という識別子で示される Webオブジェクトとを関連づけることができる。
【０１１０】
一つのHTML文書中にたくさんのリンクを持つ Webページというものは、例えばディレクトリ型検索システムのように、多くの Webページを主題別に分類し、また分類をおおまかな大分類から詳細な小分類へと階層的に行なうことで利用者への便宜をはかるようなシステムで良く見られることがある。あるいは、ニュースを提供するシステムのように、ニュース記事そのものを含むのではなく、個別ニュースへのリンクをジャンルごとにまとめあげ、一つの Webページ内にニュース記事の見出しを見やすく配置するような場合にも、一つの HTML 文書中に多くのリンクを含むこととなる。すなわち、多くの情報を分類・整理することによって、そのWeb ページ自体の価値が重要視されるようなWeb ページは、一般に他のWeb ページへのリンクを多く含むこととなっている。以下、このような Webページのことを「インデックスページ」と呼ぶ。
【０１１１】
逆に、事件・事故などを詳細に解説したニュースそのもののWeb ページや、なんらかの技術に関する解説記事、あるいはエッセイ・日記などのように、他の Webページへのリンクをほとんど含まない HTML 文書というものも存在する。このような Webページを以下では「アーティクルページ」と呼ぶ。
【０１１２】
そこで、データグループ決定手段２２では、HTML文書のこのような構造を利用し、HTML文書中に含まれているリンクの数を用いてデータグループを決定する（図４，ステップＢ１）。すなわち、HTML文書中に含まれる「<a href=...>・・・ </a> 」というリンク部分を検出し、その数が定められた数以上であればインデックスページに、そうでなければアーティクルページに、その文書をグループ分けする。一般に、ユーザが Webページを参照する時には、最初にインデックスページを参照し、そのページ内のリンクを用いて、続いてアーティクルページを参照し、場合によってはそのアーティクルページからもう一度先ほどのインデックスページを参照し、別のアーティクルページを参照するというような動作を行なうことが多い。すなわち、ユーザはインデックスページを基準とし、そこからリンクされている幾つかのアーティクルページを参照するという行為を繰り返している。この結果として、インデックスページの参照回数が、アーティクルページの参照回数に比べて多くなっている。図１１に、インデックスページ４００−１から、インデックスページ４００−２、アーティクルページ４００−３、アーティクルページ４００−４…と参照し、Web ページ４００−ｋまで参照する例を示した。
【０１１３】
これまでに提案されている従来のキャッシュ管理手法においては、上記で述べたようなインデックスページやアーティクルページが持つ意味合いをまったく考慮しておらず、キャッシュを有効に活用することができていなかった。
【０１１４】
本実施例においては、データグループ決定手段２２において、Web ページ中のリンク数を検出することで、そのページがインデックスページであるかアーティクルページであるかを判断する。キャッシュ判定部１３には、インデックスページ用とアーティクルページ用の部分キャッシュ管理部２１−１，２１−２が用意されており、インデックスページもしくはアーティクルページは、それぞれ対応する部分キャッシュ管理部において、それぞれ個別のキャッシングアルゴリズムを用いて管理される。キャッシングアルゴリズムとしては、参照回数や最終参照時刻を用いた優先順位に基づく管理方式を採用する。例えば、一般に知られているＬＦＵ(Least Frequently Used) アルゴリズムでは、参照回数を優先度として採用しており、参照回数の最も小さなものが置換え対象となる。またＬＲＵ(Least Recently Used) アルゴリズムでは、「１／（現在時刻−最終参照時刻）」が優先度に相当し、最終参照時刻が最も古いもの、すなわち「１／（現在時刻−最終参照時刻）」の値が最も小さなものが置換え対象となる。また、ＬＲＵとＬＦＵの中間の性質を持つキャッシングアルゴリズムとしては、０＜ｐ＜１なる定数ｐを用いてｐ＊参照回数＋（１−ｐ）＊１／（現在時刻−最終参照時刻）という式から算出される値を、優先順位とする方式も考えられる。
【０１１５】
各部分キャッシュ管理部２１−１，２１−２内の部分最低優先度決定手段３２においては、上記のキャッシングアルゴリズムを用いてWeb ページを管理し、最低の優先度を持つWeb ページを置換えの候補とする。
【０１１６】
最低優先度決定手段２３は、ステップＢ４に於いて、インデックスページとアーティクルページとの内の、どちらを置換え対象とするかを評価式に基づき決定する。
【０１１７】
例えば、評価値をＶ＝１／（現在時刻−最終アクセス時刻) と定義し、インデックスページの評価値Ｖｉとアーティクルページの評価値Ｖａのうち、小さな方を真の置換え対象と決定することができる。
【０１１８】
あるいは正の定数αを用いて、 Vi とα * Va との値の比較を行ない、小さな方を真の置換え対象と決定する方式も考えられる。α≧１の場合には、アーティクルページの方をインデックスページよりも長期間キャッシュに保存することができ、逆にα＜１の場合にはインデックスページの方をアーティクルページよりも長期間キャッシュに保存することができる。
【０１１９】
置き換えの対象とされたページを管理している部分キャッシュ管理部２１−ｉ内のデータ操作手段３３は、ステップＢ５に於いて、自管理部２１−ｉ内の部分最低優先度決定手段３２によって置き換え候補とされた最低優先度を持つデータをパージする。
【０１２０】
データグループ決定手段２２における分類方法として、上記実施例においてはリンク数に基づく分類方法のみを説明したが、これ以外にも埋め込みオブジェクトの数を考慮した分類を行なうこともできる。例えば、HTML文書では「<IMG SRC=...> 」という記述を用いて、画像、音声、音楽、動画などを文書中に埋め込むことができるので、文書中にある<IMG SRC=...> というタグを解析し、埋め込みオブジェクトの数を算出することができる。そこで、ある HTML 文書中のリンク数と埋め込みオブジェクトの数とを用いて、HTMLページをインデックスページとアーティクルページとに分類することができる。
【０１２１】
あるいは、埋め込みオブジェクト自体には HTML 文書とは別の参照特性があると考えて、インデックスページ、アーティクルページ、そして埋め込みオブジェクトのように分類を３種類にすることもできる。いずれの場合においても、データグループ決定手段２２を除く本発明の構成要素は、上記実施例で述べた方法が素直に適用できることは明らかである。
【０１２２】
本実施例においては、Web ページ中の HTML タグを用いながら、Web ページをインデックスページとアーティクルページ、あるいは埋め込みオブジェクトというように、その論理的な意味にもとづく分類を行ない、かつそれぞれのページを独立なキャッシングアルゴリズムで管理し、更に最終的な置換え対象を決定する際には、現在時刻と最終参照時刻とを用いて、最も参照されていない Webページを置換え対象としている。すなわち、Web ページの論理構造を重視した上で、今までに知られている優先順位に基づくキャッシングアルゴリズムが矛盾なく統一的に動作する構成となっている。
【０１２３】
尚、本発明の適用範囲は、HTMLで記述された Webページ(HTML 文書) および画像、音声、音楽、動画などの Webオブジェクトに限られるものではない。ハイパーリンク構造を持つ文書や、画像、音声、音楽、動画、映像を含むマルチメディアデータ、あるいはプログラムを対象とするキャッシュ一般にも適用可能であることもまた明らかである。また、第四の実施例は、第二の実施の形態にも適用できる。
【０１２４】
【発明の効果】
第一の効果は、キャッシュヒット率の向上である。その理由は、データ毎に異なるキャッシングアルゴリズムを適用できるので、データ毎のアクセス特性を反映したキャッシングができるためである。また、データグループ毎にデータ記憶領域を固定的に割り当てる必要がないため、各データグループ毎に独自のキャッシングアルゴリズムを用いているにも関わらず、データ記憶領域を有効に活用でき、このこともキャッシュヒット率向上に寄与している。
【０１２５】
第二の効果は、軽いキャッシュ処理のコストである。その理由は、第三の実施例で述べた通り、本発明ではＯ（１）で高いキャッシュヒット率を達成できるためである。
【０１２６】
第三の効果は、Web ページの論理構造を重視した上で、今までに知られている優先順位に基づくキャッシングアルゴリズムを矛盾なく統一的に動作させられる点である。その理由は、第四の実施例で述べた通り、本発明ではハイパーリンク構造をキャッシュ処理時に考慮できるからである。
【図面の簡単な説明】
【図１】プロキシキャッシュ装置を使用したネットワークシステムの一例を示す図である。
【図２】本発明の第一の実施の形態に係るキャッシュ装置１０の構成例を示すブロック図である。
【図３】キャッシュ装置１０内のキャッシュ判定部及びキャッシュ記憶部の構成例を示すブロック図である。
【図４】第一の実施の形態の処理例を示す流れ図である。
【図５】本発明の第二の実施の形態に係るキャッシュ判定部１３ａ及びキャッシュ記憶部の構成例を示すブロック図である。
【図６】第二の実施の形態の処理例を示す流れ図である。
【図７】第一の実施の形態の第一の実施例を説明するためのブロック図である。
【図８】第一の実施の形態の第二の実施例を説明するためのブロック図である。
【図９】図８に示した第二の実施例を説明するための図である。
【図１０】第一の実施の形態の第三の実施例を説明するためのブロック図である。
【図１１】第一の実施の形態の第四の実施例を説明するための図である。
【符号の説明】
１−１〜１−ｍ…サーバ
２−１〜２−ｎ…クライアント
３…ネットワーク
４…プロキシキャッシュ装置
１０…キャッシュ装置
１１…リクエスト処理部
１２…キャッシュ検索部
１３…キャッシュ判定部
１４…キャッシュ記憶部
２１−１〜２１−ｎ…部分キャッシュ管理部
２２…データグループ決定手段
２３…最低優先度決定手段
２４…空き記憶領域
２５−１〜２５−ｍ…データ
３１…優先度割り当て手段
３２…部分最低優先度決定手段
３３…データ操作手段
１３ａ…キャッシュ判定部
２６−１〜２６−ｎ…部分キャッシュ管理部
３４…サイズ測定手段
３５…ヒット率測定手段
１０１…演算装置
１０２…主記憶装置
１０３…二次記憶装置
１０４…キャッシュ記憶部
１０Ｐ…キャッシュ装置用プログラム
２００…キャッシュ装置
２０１…リクエスト処理部
２０２…キャッシュ検索部
２０３…キャッシュ判定部
２０４−１，２０４−２…部分キャッシュ管理部
２０５−１，２０５−２…優先度割り当て手段
２０６−１，２０６−２…部分最低優先度決定手段
２０７−１，２０７−２…データ操作手段
２０８…最低優先度決定手段
２０９…データグループ決定手段
２１０…主記憶装置
２１１…キャッシュ記憶部
２２０…二次記憶装置
３００…キャッシュ装置
３０１…リクエスト処理部
３０２…キャッシュ検索部
３０３…キャッシュ判定部
３０４−１，３０４−２…部分キャッシュ管理部
３０５−１，３０５−２…優先度割り当て手段
３０６−１，３０６−２…部分最低優先度決定手段
３０７−１，３０７−２…データ操作手段
３０８…データグループ決定手段
３０９…最低優先度決定手段
３１０…ヒット率推定手段
３１１…サイズ管理手段
３１２…個数管理手段
３１３…演算手段
３１４…キャッシュ記憶部
４００−１〜４００−ｋ…Web ページ
【図１】
0004042359.tif 000002
【図２】
0004042359.tif 000003
【図３】
0004042359.tif 000004
【図４】
0004042359.tif 000005
【図５】
0004042359.tif 000006
【図６】
0004042359.tif 000007
【図７】
0004042359.tif 000008
【図８】
0004042359.tif 000009
【図９】
0004042359.tif 000010
【図１０】
0004042359.tif 000011
【図１１】
0004042359.tif 000012