以下に添付図面を参照して、この発明にかかるキャッシュ制御装置、キャッシュ制御方法およびキャッシュ制御プログラムの最良な実施の形態を詳細に説明する。
(第1の実施の形態)
第1の実施の形態にかかるキャッシュ制御装置は、キャッシュデータの管理情報を予め定められた日時の範囲ごとにグループに分けて削除優先度順にキャッシュ管理情報記憶部に保存し、キャッシュデータの実体や参照日時を前記キャッシュ管理情報記憶部と別個の記憶媒体上のキャッシュ記憶部に保存し、キャッシュデータの削除時に削除優先度と参照日時を参照して削除するキャッシュデータを決定し、当該キャッシュデータを削除するものである。
図1は、本発明の実施の形態にかかるキャッシュ制御装置が適用されるネットワークシステムの全体構成を示す説明図である。同図に示すように、このネットワークシステムは、インターネット102を介して接続されるWebサーバ101a〜101cおよびプロキシサーバ103と、当該プロキシサーバ103とLAN(Local Area Network)105を介して接続されるWebクライアント106a〜106cとを備えている。また、プロキシサーバ103およびWebクライアント106a〜106cは、キャッシュデータを記憶するためのハードディスクドライブ装置(HDD:Hard Disk Drive)104、107a〜107cを備えている。
Webクライアント106a〜106cは、ユーザが指定した情報の閲覧の要求をHTTPリクエストとしてLAN105を介して接続されたプロキシサーバ103に送信するものである。プロキシサーバ103は、Webクライアント106a〜106cから送信されたHTTPリクエストを所望のWebオブジェクトを持つWebサーバ101a〜101cのいずれかにインターネット102を介して転送する。
Webサーバ101a〜101cは、プロキシサーバ103から受信したHTTPリクエストに対応して、要求されたWebオブジェクトを含むHTTPレスポンスを、プロキシサーバ103を介してHTTPリクエストを送信したWebクライアント106a〜106cのいずれかに転送する。
一般に、上記のようなWebシステムにおいて、LAN105と比較してインターネット102は実効的な通信容量(バンド幅)が低く、そこが性能上のボトルネックになって通信の遅延が発生し、Webクライアント106a〜106cのレスポンスタイムが低下する。
そこで本実施の形態では、図1に示すようにインターネット102とLAN105の間に、アクセス頻度の高いWebオブジェクトのデータをキャッシュデータとして記憶するHDD104を備えたプロキシサーバ103を設置し、HDD104に所望のWebオブジェクトが存在する場合は、そのWebオブジェクトを取得し、HTTPレスポンスを返すことでインターネット102を流れるデータ量を削減することでボトルネックを解消する。
また、Webクライアント106a〜106cのそれぞれにキャッシュデータを記憶したHDD107a〜107cを設置し、HDD107a〜107cに所望のWebオブジェクトが存在する場合は、そのWebオブジェクトを取得しHTTPレスポンスを返すことにより、同様にボトルネックの解消を行うように構成してもよい。
また、Webサーバ101a〜101cに対する過負荷のためレスポンスタイムが遅延する場合がある。その場合、キャッシュサーバとしてリバース・プロキシ・サーバ(図示せず)をそれぞれWebサーバ101a〜101cとインターネット102の間に設置し、リバース・プロキシ・サーバに設置されたキャッシュデータを記憶したHDD内に所望Webオブジェクトが存在する場合は、Webサーバ101a〜101cにHTTPリクエストを転送せずにリバース・プロキシ・サーバのキャッシュから所望のWebオブジェクトを取得しHTTPレスポンスを返すように構成してもよい。
以上に述べたように、本実施の形態にかかるキャッシュ制御装置はプロキシサーバやWebクライアント、あるいはリバース・プロキシ・サーバ上に実装することができる。なお、プロキシサーバ103とWebサーバ101a〜101cを接続する通信回線は、上述のようなインターネット102に限られるものではなく、WAN(Wide Area Network)、公衆回線、PHSや携帯電話を用いた無線ネットワークなどあらゆる通信回線に適用することができる。
以下においては、キャッシュ制御装置をプロキシサーバ103上に構成した場合について説明する。従って、プロキシサーバ103をキャッシュ制御装置103と呼ぶ。
図2は、第1の実施の形態にかかるキャッシュ制御装置103の構成を示すブロック図である。同図に示すように、キャッシュ制御装置103は、通信部201と、キャッシュ記憶制御部210と、キャッシュ管理部220とを備えている。また、第1の実施の形態にかかるキャッシュ制御装置103は、HDD104にキャッシュ記憶部231を、RAM(Random Access Memory)240にキャッシュ管理情報記憶部241と、総キャッシュサイズ記憶部242とを備えている。
通信部201は、インターネット102およびLAN105を介して、それぞれWebサーバ101a〜101cおよびWebクライアント106a〜106cと接続され、HTTPプロトコルなどの所定の通信プロトコルに従って通信を行う。また、ローカルループバックや内外部バスを介して、コンピュータに接続されている別の装置やアプリケーション、OS(Operating System)などと通信する機能も有する。なお、通信プロトコルはHTTPプロトコルに限られるものではなく、Webシステムに使用されるものであればあらゆる通信プロトコルに対し本発明を適用することができる。
キャッシュ記憶制御部210は、キャッシュ記憶部231に対する登録処理、削除処理などを制御するもので、キャッシュ登録部211と、キャッシュ削除部212と、キャッシュ参照部213と、キャッシュ検索部214と、参照日時取得部215と、参照日時更新部216とから構成されている。
キャッシュ管理部220は、キャッシュ記憶制御部210と連動し、キャッシュ管理情報記憶部241に対する登録処理、削除処理などを制御するもので、管理情報登録部221と、管理情報移動部222と、管理情報削除部223と、削除判定部224と、グループ検索部225と、グループ削除部226と、グループ生成部227とから構成されている。
キャッシュ記憶部231は、キャッシュデータの実体を記憶する記憶部である。図3は、キャッシュ記憶部231の構造の一例を示す説明図である。同図に示すように、キャッシュ記憶部231は、キャッシュデータを一意に識別するためのキャッシュデータに固有の識別子と、キャッシュデータの実体であるキャッシュデータと、キャッシュデータの最新の参照日時を表す参照日時とを格納している。
キャッシュ登録部211は、キャッシュ記憶部231に対して、新規キャッシュデータの登録または既存キャッシュデータの更新を行う。キャッシュ削除部212は、キャッシュ記憶部231に記憶されたキャッシュデータの削除を行う。キャッシュ参照部213は、参照要求のあったキャッシュデータをキャッシュ記憶部231から取得する。キャッシュ検索部214は、上述のキャッシュ登録部211、キャッシュ削除部212、キャッシュ参照部213が処理の対象として指定したキャッシュデータの識別子に対応するキャッシュデータを、キャッシュ記憶部231から検索する処理を行う。
参照日時取得部215は、削除判定部224が指定したキャッシュデータの識別子に対応するキャッシュデータの参照日時を、キャッシュ記憶部231から取得する。参照日時更新部は、キャッシュ参照部213によりキャッシュデータが参照されるたびに、参照されたキャッシュデータの参照日時を更新する処理を行う。
キャッシュ管理情報記憶部241は、キャッシュデータの管理情報を記憶する記憶部である。図4は、キャッシュ管理情報記憶部241の構造の一例を示す説明図である。同図に示すように、キャッシュ管理情報記憶部241は、予め定められた時間間隔で分割されたグループごとに双方向連結リスト構造によりキャッシュデータの管理情報を格納している。また、グループ内では、生成日時、またはグループを移動したときはその移動日時の古い順にリストのヘッド401からリストのテイル402に並ぶようにキャッシュデータの管理情報を格納している。すなわち、リストのヘッド401側に削除優先度が高いデータがくるように管理情報が格納される。
また、同図に示すように、キャッシュデータの管理情報としては、キャッシュデータの識別子403と、キャッシュデータのサイズを表すキャッシュサイズ404とが格納されている。
同図においては、グループを分割する時間間隔を10分とし、参照日時が12:00から12:09である最も古いグループに、識別子Aのキャッシュデータの管理情報410と識別子Bのキャッシュデータの管理情報411とが、参照日時が19:30から19:39である最も新しいグループに識別子Cキャッシュデータの管理情報412が格納されている状態の例が示されている。
管理情報登録部221は、キャッシュ登録部211と連動し、新規に登録したキャッシュデータの管理情報をキャッシュ管理情報記憶部241に登録する処理を実行する。管理情報移動部222は、削除候補となったが削除判定部224により最終的に削除しないと判定されたキャッシュデータの管理情報を別のグループに移動する処理を行う。削除判定処理と管理情報移動処理の詳細は後述する。
管理情報削除部223は、キャッシュ削除部212により削除されたキャッシュデータに対応するキャッシュデータの管理情報を、キャッシュ管理情報記憶部241から削除する。
削除判定部224は、キャッシュ記憶部231の空き容量を増加させるためにキャッシュデータの削除が必要となったときに、キャッシュ管理情報記憶部241内に格納されたキャッシュデータの管理情報から、削除候補となるキャッシュデータの識別子を選択し、キャッシュ記憶部231に格納された参照日時を参照して、当該削除候補となるキャッシュデータを実際に削除するか否かを判定する。削除判定処理の詳細は後述する。
グループ検索部225は、上述の管理情報移動部222、管理情報削除部223、削除判定部224が処理の対象として指定したグループを、キャッシュ管理情報記憶部241から検索する処理を行う。
グループ削除部226は、管理情報削除部223によりキャッシュデータの管理情報が削除された結果、グループに属するキャッシュデータが存在しなくなったときに、当該グループをキャッシュ管理情報記憶部241から削除する処理を実行する。
グループ生成部227は、管理情報登録部221によるキャッシュデータの管理情報の新規登録時、または、管理情報移動部222によるキャッシュデータの管理情報の移動時に、登録対象または移動対象となるグループが存在しなかった場合に新規にグループを生成する処理を実行する。
総キャッシュサイズ記憶部242は、キャッシュ記憶部231に格納されているすべてのキャッシュデータのサイズの合計を表す総キャッシュサイズを記憶する記憶部である。キャッシュデータが登録、削除されるごとに、キャッシュ管理情報記憶部241に格納されているキャッシュサイズなどを参照して総キャッシュサイズが更新される。
次に、このように構成された第1の実施の形態にかかるキャッシュ制御装置103によるキャッシュ制御処理について説明する。図5は、第1の実施の形態にかかるキャッシュ制御装置103おいて、キャッシュデータを新規に登録する処理の全体の流れを示すフローチャートである。
まず、キャッシュ登録部211が、新規に登録するキャッシュデータの識別子と、キャッシュデータの実体と、参照日時として生成日時とを、キャッシュ記憶部231に登録する(ステップS501)。次に、管理情報登録部221が、グループ検索部225を利用して、日時の範囲が最新である最新グループを、キャッシュ管理情報記憶部241から取得する(ステップS502)。
管理情報登録部221は、取得した最新グループの日時の範囲と新規に登録するキャッシュデータの参照日時とを比較し、キャッシュデータの参照日時が取得した最新グループの日時の範囲内であるか否かを判断する(ステップS503)。範囲内である場合は(ステップS503:YES)、新規に登録するキャッシュデータの管理情報を、最新グループの最後尾に追加する(ステップS506)。
新規に登録するキャッシュデータの参照日時が取得した最新グループの日時の範囲内でない場合は(ステップS503:NO)、グループ生成部227が、当該参照日時を含む範囲を有するグループを新規に生成する(ステップS504)。その後、管理情報登録部221が、新規に生成したグループを最新グループと判断して(ステップS505)、新規に登録するキャッシュデータの管理情報を、最新グループの最後尾に追加する(ステップS506)。
次に、管理情報登録部221は、総キャッシュサイズ記憶部242に格納された総キャッシュサイズに、新規に登録したキャッシュデータのサイズを加算する(ステップS507)。管理情報登録部221は、加算した後の総キャッシュサイズが、予め定められたキャッシュ容量の上限値を超えたか否かを判断し(ステップS508)、超えている場合は(ステップS508:YES)、キャッシュデータの削除処理に遷移する(ステップS509)。キャッシュデータ削除処理の詳細については後述する。
加算した後の総キャッシュサイズがキャッシュ容量の上限値を超えていない場合は(ステップS508:NO)、キャッシュデータの新規登録処理が終了する。
次に、第1の実施の形態にかかるキャッシュ制御装置103によるキャッシュデータの参照処理について説明する。図6は、第1の実施の形態にかかるキャッシュ制御装置103おいて、既に登録されているキャッシュデータを参照する処理の全体の流れを示すフローチャートである。
まず、通信部201を介して参照の要求があったキャッシュデータの識別子を指定して、キャッシュ参照部がキャッシュ記憶部231から該当するキャッシュデータを取得する(ステップS601)。さらに、参照日時更新部216が、キャッシュ記憶部231内に格納されている該当するキャッシュデータの参照日時を更新する(ステップS602)。
従来のキャッシュ制御装置においては、キャッシュデータが参照されるたびにキャッシュ管理情報記憶部241に相当する管理情報記憶部内のキャッシュデータの管理情報を検索し、参照日時順にソートするなどの処理を実行していたが、上述のように、第1の実施の形態にかかるキャッシュ制御装置103においては、キャッシュデータの参照時にはキャッシュ記憶部231内の参照日時の更新処理のみを実行する。このため、参照時の処理負荷が軽減され、レスポンスを向上させることができる。
次に、第1の実施の形態にかかるキャッシュ制御装置103によるキャッシュデータの削除処理について説明する。図7は、第1の実施の形態にかかるキャッシュ制御装置103おいて、キャッシュ記憶部231の容量を確保するためにキャッシュデータを削除する処理の全体の流れを示すフローチャートである。
まず、キャッシュデータ削除の必要が生じた場合、削除判定部224が、キャッシュ管理情報記憶部241から、日時の範囲が最も古いグループを表す最古グループを取得する(ステップS701)。次に、取得した最古グループに格納されたキャッシュデータの管理情報のうち、最も削除優先度が高い管理情報、すなわち、リストの先頭(ヘッド)に存在する管理情報に格納されたキャッシュデータの識別子を取得する(ステップS702)。
削除判定部224は、取得したキャッシュデータの識別子を削除候補のキャッシュデータの識別子とし(ステップS703)、参照日時取得部215を利用して、当該削除候補のキャッシュデータの識別子に対応するキャッシュデータの参照日時を、キャッシュ記憶部231から取得する(ステップS704)。
次に、削除判定部224は、取得した参照日時が、当該削除候補のキャッシュデータが所属しているグループの日時の範囲内であるか否かを判断する(ステップS705)。範囲内である場合は(ステップS705:YES)、当該削除候補のキャッシュデータを実際に削除するため、以下の処理を実行する。
まず、キャッシュ削除部212が、当該削除候補のキャッシュデータの識別子に対応するキャッシュデータをキャッシュ記憶部231から削除する(ステップS706)。さらに、管理情報削除部223が、当該削除候補のキャッシュデータの識別子に対応する管理情報を、所属しているグループから削除する(ステップS707)。
次に、管理情報削除部223は、当該削除候補のキャッシュデータが所属していたグループが空か否か、すなわち、管理情報が全く存在しなくなったか否かを判断する(ステップS708)。当該削除候補のキャッシュデータが所属していたグループが空である場合は(ステップS708:YES)、グループ削除部226が、該当グループを削除する(ステップS709)。
当該削除候補のキャッシュデータが所属していたグループが空でない場合(ステップS708:NO)、または、上述の処理でグループを削除した後、管理情報削除部223が、総キャッシュサイズ記憶部242に格納された総キャッシュサイズから、削除したキャッシュデータのサイズを減算する(ステップS710)。
次に、管理情報削除部223は、総キャッシュサイズが、予め定められたキャッシュ容量の下限値より小さいか否かを判断し(ステップS711)、小さくない場合は(ステップS711:NO)、キャッシュデータ削除処理の先頭に戻って削除処理を繰り返す。
総キャッシュサイズが、予め定められたキャッシュ容量の下限値より小さい場合は(ステップS711:YES)、キャッシュデータの削除処理を終了する。
ステップS705において、取得した参照日時が、当該削除候補のキャッシュデータが所属しているグループの日時の範囲内でないと判断された場合は(ステップS705:NO)、当該削除候補のキャッシュデータは削除せず、参照日時に応じた適当なグループに移動するため、以下の処理を実行する。
まず、グループ検索部225が、移動すべきグループ、すなわち、取得した参照日時を日時の範囲に含むグループをキャッシュ管理情報記憶部241内から検索する(ステップS712)。検索結果から、管理情報移動部222は、移動先のグループが存在するか否かを判断し(ステップS713)、存在しない場合は(ステップS713:NO)、グループ生成部227が所得した参照日時を日時の範囲に含むグループを新規に生成し(ステップS714)、生成した新規グループを移動先のグループとする(ステップS715)。
移動先のグループが存在する場合(ステップS713:YES)、または、移動先のグループを新規に生成した後、管理情報移動部222は、移動先のグループの最後尾に削除候補とされたキャッシュデータの管理情報を移動する(ステップS716)。
ステップS712からステップS716までの処理では、キャッシュデータの管理情報を移動しただけでキャッシュデータの削除は実行されておらず、キャッシュ記憶部231の容量は変わっていない。そのため、さらに次の削除候補を取得し削除処理を実行するために、キャッシュデータ削除処理の先頭に戻り処理を繰り返す。
なお、第1の実施の形態にかかるキャッシュ制御装置103においては、総キャッシュサイズが予め定められた上限値を超えた場合にキャッシュデータ削除処理が開始され、総キャッシュサイズが予め定められた下限値を下回るまで削除処理を繰り返すように構成されている。しかし、キャッシュデータ削除処理の開始・終了条件はこれに限られるものではなく、キャッシュ記憶部231の容量を確保することのできる削除方法であれば、あらゆる削除方法に対し本発明を適用できる。例えば、新しいキャッシュデータを登録するのに必要な容量が不足する場合にキャッシュデータ削除処理を開始し、必要な容量を確保した時点で削除処理を終了するように構成してもよい。
また、第1の実施の形態にかかるキャッシュ制御装置103においては、上述のように、キャッシュデータの管理情報をグループの最後尾に移動する場合があるため、厳密に参照日時が古いものからキャッシュデータが削除されない場合が生じる。しかし、その誤差は予め定められた日時の範囲以下になるため、日時の範囲を適切に指定することで、その誤差がキャッシュヒット率を大幅に低下させるものとはならないようにすることができる。
例えば、キャッシュ記憶部231に保存可能なサイズと、閲覧するコンテンツの平均オブジェクトサイズと、平均アクセス頻度とから総キャッシュサイズがキャッシュ可能サイズに到達するのに要する時間を算出し、その時間を基に適当な日時の範囲を決定すればよい。また、実際にキャッシュ制御装置を運用して、キャッシュヒット率とスループットの向上効果を考慮し、日時の範囲を調整することで最適な値を決定することができる。
図8−1、図8―2は、第1の実施の形態にかかるキャッシュ制御装置103において、キャッシュデータが新規登録または参照されるときのキャッシュ記憶部231とキャッシュ管理情報記憶部241のキャッシュデータの格納の一例を示した説明図である。
図8−1は、キャッシュ記憶部231に記憶されているキャッシュデータの一例を示している。図8−2は、図8−1に示されたキャッシュデータに対応する、キャッシュ管理情報記憶部241に記憶されているキャッシュ管理情報の一例を示している。なお、参照日時は時刻だけでなく日付も管理しているが、以下簡単のため、日付は同一とし時刻のみを用いて説明する。
図8−1において、キャッシュ記憶部231には、時刻12:03:06に生成された識別子Aのキャッシュデータ801と、時刻12:08:08に生成された識別子Bのキャッシュデータ802とが記憶されており、その後、キャッシュデータ802が時刻12:13:31に参照され、識別子Cのキャッシュデータ803が時刻19:39:43に生成されたことを示している。
図8−2におけるキャッシュ管理情報記憶部241は、グループに分割するための日時の範囲を10分とした場合の格納例を示している。この場合、日時の範囲が最も古いグループを表す最古グループは、参照日時が12:00から12:09のグループであり、リストのヘッド811と、リストのテイル810の間に、識別子Aのキャッシュデータの管理情報812と、識別子Bのキャッシュデータの管理情報813とが格納されている。また、日時の範囲が最も新しいグループを表す最新グループは、ヘッド831とテイル830で表される参照日時が19:30から19:39のグループである。最古グループと最新グループの間には、例えば、ヘッド821およびテイル820で表されるリストに、参照日時が12:10から12:19のグループに属するキャッシュデータの管理情報が格納される。
識別子Cのキャッシュデータ803が生成された場合、キャッシュ登録部211が、キャッシュ記憶部231に識別子Cと、識別子Cに対応するキャッシュデータの実体と、参照日時19:39:43とを保存する。さらに、管理情報登録部221が、最新グループのテイル側に、識別子Cのキャッシュデータの管理情報832を登録する。
識別子Bのキャッシュデータ802が時刻12:13:31に参照された場合、参照日時更新部216が、キャッシュ記憶部231に格納されたキャッシュデータ802の参照日時を、12:13:31に更新する。
図9−1、図9―2は、第1の実施の形態にかかるキャッシュ制御装置103において、キャッシュデータが削除されるときのキャッシュ記憶部231とキャッシュ管理情報記憶部241のキャッシュデータの格納の一例を示した説明図である。
図9−1、図9−2は、図8−1、図8−2において、識別子Bのキャッシュデータが参照され、識別子Cのキャッシュデータ803が登録された後、総キャッシュサイズが上限値を超えたため削除処理が実行された場合の例を示している。
まず、削除判定部224が、ヘッド911およびテイル910で表される最古グループのリストの先頭に存在する管理情報912の識別子Aを削除候補として取得する。さらに、参照日時取得部215が、識別子Aのキャッシュデータの参照日時12:03:06を、キャッシュ記憶部231から取得する。参照日時12:03:06は、最古グループの日時の範囲内であるので、削除判定部224は、識別子Aのキャッシュデータを削除すると判定する。
従って、キャッシュ削除部212により、キャッシュ記憶部231から識別子Aのキャッシュデータ901が削除され、管理情報削除部223により、キャッシュ管理情報記憶部241から、識別子Aのキャッシュデータの管理情報912が削除される。また、総キャッシュサイズから、識別子Aのキャッシュデータのサイズ9834が減算される。
減算後の総キャッシュサイズが、予め定められた下限値より大きい場合は、さらに削除が必要であるため、削除判定部224は、次の削除候補として管理情報913の識別子Bを取得する。さらに、参照日時取得部215が、識別子Bのキャッシュデータの参照日時12:13:31を、キャッシュ記憶部231から取得する。参照日時12:13:31は、最古グループの日時の範囲内ではないので、削除判定部224は、識別子Bのキャッシュデータを削除すると判定しない。
そこで、管理情報移動部222は、ヘッド921およびテイル920で表される参照日時が12:10から12:19のグループを、識別子Bのキャッシュデータの移動先として選択し、グループのリストの最後尾、すなわちリストのテイル920側に識別子Bのキャッシュデータの管理情報922を移動する。
このように、第1の実施の形態にかかるキャッシュ制御装置は、キャッシュデータの参照時にはキャッシュ管理情報の検索およびソート処理を実行せず、キャッシュデータの削除時に削除優先度と参照日時を参照して削除するキャッシュデータを決定し、当該キャッシュデータを削除することができる。これにより、参照時のキャッシュ制御装置の処理負荷を軽減させ、スループットを向上させることができる。
(第2の実施の形態)
第2の実施の形態にかかるキャッシュ制御装置は、キャッシュデータの管理情報にさらにグループごとのキャッシュデータのサイズの合計を表すグループサイズを加えてキャッシュ管理情報記憶部に保存し、キャッシュデータの実体や参照日時を前記キャッシュ管理情報記憶部と別個の記憶媒体上のキャッシュ記憶部に保存し、キャッシュデータの削除時に削除優先度と参照日時とグループサイズを参照して削除するキャッシュデータを決定し、当該キャッシュデータを削除するものである。
図10は、第2の実施の形態にかかるキャッシュ制御装置1000の構成を示すブロック図である。同図に示すように、キャッシュ制御装置1000は、通信部201と、キャッシュ記憶制御部210と、キャッシュ管理部220とを備えている。また、第2の実施の形態にかかるキャッシュ制御装置1000は、HDD104にキャッシュ記憶部231を、RAM(Random Access Memory)1010にキャッシュ管理情報記憶部1011と、総キャッシュサイズ記憶部242とを備えている。
図10に示すように、第2の実施の形態においては、キャッシュ管理情報記憶部1011に記憶する項目としてグループサイズを追加したことが第1の実施の形態と異なっている。その他の構成および機能は、第1の実施の形態にかかる構成を表すブロック図である図2と同様であるので、同一符号を付し、ここでの説明は省略する。
キャッシュ管理情報記憶部1011は、キャッシュデータの管理情報として、キャッシュデータの識別子と、キャッシュデータのサイズを表すキャッシュサイズと、グループごとにグループに属するキャッシュデータのサイズの合計を表すグループサイズとを格納している。
図11は、キャッシュ管理情報記憶部1011の構造の一例を示す説明図である。同図に示すように、キャッシュ管理情報記憶部1011は、グループのテイルにグループサイズ1101を格納している。
次に、このように構成された第2の実施の形態にかかるキャッシュ制御装置1000によるキャッシュ制御処理について説明する。図12は、第2の実施の形態にかかるキャッシュ制御装置1000おいて、キャッシュデータを新規に登録する処理の全体の流れを示すフローチャートである。
ステップS1201からステップS1206までの、最新グループ検索処理、グループ生成処理、管理情報登録処理は、第1の実施の形態にかかるキャッシュ制御装置103におけるステップS501からステップS506までと同様の処理なので、その説明を省略する。
管理情報登録部221は、新規に登録するキャッシュデータの管理情報を、最新グループの最後尾に追加した後(ステップS1206)、追加したキャッシュデータのサイズを、追加したグループのグループサイズに加算する(ステップS1207)。このように、第2の実施の形態にかかるキャッシュ制御装置1000においては、キャッシュ管理情報記憶部1011にグループサイズを格納するようにしているため、キャッシュデータ登録時にグループサイズの加算処理が必要となる点が、第1の実施の形態にかかるキャッシュ制御装置103と異なっている。
ステップS1208からステップS1210までの、総キャッシュサイズ加算処理、キャッシュ容量チェック処理、キャッシュデータ削除処理は、第1の実施の形態にかかるキャッシュ制御装置103におけるステップS507からステップS509までと同様の処理なので、その説明を省略する。
図13は、第2の実施の形態にかかるキャッシュ制御装置1000おいて、キャッシュ記憶部231の容量を確保するためにキャッシュデータを削除する処理の全体の流れを示すフローチャートである。
ステップS1301からステップS1304までの、削除候補取得処理は、第1の実施の形態にかかるキャッシュ制御装置103におけるステップS701からステップS704までと同様の処理なので、その説明を省略する。
次に、削除判定部224は、取得した参照日時が、当該削除候補のキャッシュデータが所属しているグループの日時の範囲内であるか否かを判断する(ステップS1305)。範囲内である場合は(ステップS1305:YES)、当該削除候補のキャッシュデータを実際に削除するため、以下の処理を実行する。
まず、キャッシュ削除部212が、当該削除候補のキャッシュデータの識別子に対応するキャッシュデータをキャッシュ記憶部231から削除する(ステップS1306)。さらに、管理情報削除部223が、当該削除候補のキャッシュデータの識別子に対応する管理情報を、所属しているグループから削除する(ステップS1307)。
次に、管理情報削除部223は、削除したキャッシュデータが所属していたグループが空か否かを判断する(ステップS1308)。削除したキャッシュデータが所属していたグループが空である場合は(ステップS1308:YES)、グループ削除部226が、該当グループを削除し(ステップS1309)、ステップS1311の総キャッシュサイズ減算処理に遷移する。
削除したキャッシュデータが所属していたグループが空でない場合は(ステップS1308:NO)、管理情報削除部223は、当該グループのグループサイズから削除したキャッシュデータのサイズを減算し(ステップS1310)、ステップS1311の総キャッシュサイズ減算処理に遷移する。
ステップS1311からステップS1312までの、総キャッシュサイズ減算処理、キャッシュ容量チェック処理、は、第1の実施の形態にかかるキャッシュ制御装置103におけるステップS710からステップS711までと同様の処理なので、その説明を省略する。
ステップS1305において、取得した参照日時が、当該削除候補のキャッシュデータが所属しているグループの日時の範囲内でないと判断された場合は(ステップS1305:NO)、当該削除候補のキャッシュデータを削除するか、参照日時に応じた適当なグループに移動するかをグループサイズから判断するため、以下の処理を実行する。
まず、削除判定部224は、削除候補が所属するグループから、削除候補のキャッシュデータの参照日時を日時の範囲として含むグループ、すなわち、移動先の候補となるグループまでの全グループのグループサイズを加算する(ステップS1313)。
次に、削除判定部224は、加算したサイズが、総キャッシュサイズから予め定められたキャッシュ容量の下限値を減算した値以下であるか否かを判断する(ステップS1314)。加算したサイズが総キャッシュサイズから予め定められたキャッシュ容量の下限値を減算した値以下である場合は(ステップS1314:YES)、管理情報削除部223は、削除候補のキャッシュデータの管理情報を削除する(ステップS1307)。
これは、移動先の候補となるグループまでの全てのグループに属するデータを削除したとしても、キャッシュ容量の下限値以下にならない、すなわち、移動先の候補となるグループに属する全管理情報も最終的に削除候補となるため、移動をせずに削除処理を実行するためである。特に、削除候補のキャッシュデータを移動先の候補となるグループに移動したとしても、当該キャッシュデータをさらに移動することはなく、必ず削除対象となることから、削除処理を効率化することができるという利点がある。
加算したサイズが総キャッシュサイズから予め定められたキャッシュ容量の下限値を減算した値以下でない場合は(ステップS1314:NO)、削除候補のキャッシュデータは削除せず、参照日時に応じた適当なグループに移動するため、以下の処理を実行する。
ステップS1315からステップS1319までの、移動先グループ検索処理、グループ存在チェック・生成処理、管理情報移動処理は、第1の実施の形態にかかるキャッシュ制御装置103におけるステップS712からステップS716までと同様の処理なので、その説明を省略する。
管理情報移動部222は、削除候補のキャッシュデータの管理情報を移動した後、移動元のグループのグループサイズから当該キャッシュデータのサイズを減算するとともに、移動先のグループのグループサイズに当該キャッシュデータのサイズを加算する(ステップS1320)。
ステップS1315からステップS1320までの処理では、キャッシュデータの管理情報を移動しただけでキャッシュデータの削除は実行されておらず、キャッシュ記憶部231の容量は変わっていない。そのため、さらに次の削除候補を取得し削除処理を実行するために、キャッシュデータ削除処理の先頭に戻り処理を繰り返す。
図14−1、図14―2は、第2の実施の形態にかかるキャッシュ制御装置1000において、キャッシュデータが新規登録または参照されるときのキャッシュ記憶部231とキャッシュ管理情報記憶部1011のキャッシュデータの格納の一例を示した説明図である。
図14−1は、キャッシュ記憶部231に記憶されているキャッシュデータの一例を示している。図14−2は、図14−1に示されたキャッシュデータに対応する、キャッシュ管理情報記憶部241に記憶されているキャッシュ管理情報の一例を示している。
図14−1において、キャッシュ記憶部231には、時刻12:03:06に生成された識別子Aのキャッシュデータ1401と、時刻12:08:08に生成された識別子Bのキャッシュデータ1402とが記憶されており、その後、キャッシュデータ1402が時刻12:13:31に参照され、識別子Cのキャッシュデータ1403が時刻19:39:43に生成されたことを示している。
図14−2におけるキャッシュ管理情報記憶部1011は、グループに分割するための日時の範囲を10分とした場合の格納例を示している。この場合、日時の範囲が最も古いグループを表す最古グループは、参照日時が12:00から12:09のグループであり、リストのヘッド1411と、リストのテイル1410の間に、識別子Aのキャッシュデータの管理情報1412と、識別子Bのキャッシュデータの管理情報1413とが格納されている。また、日時の範囲が最も新しいグループを表す最新グループは、ヘッド1431とテイル1430で表される参照日時が19:30から19:39のグループである。最古グループと最新グループの間には、例えば、ヘッド1421およびテイル1420で表されるリストに、参照日時が12:10から12:19のグループに属するキャッシュデータの管理情報が格納される。
識別子Cのキャッシュデータ1403が生成された場合、キャッシュ登録部211が、キャッシュ記憶部231に識別子Cと、識別子Cに対応するキャッシュデータの実体と、参照日時19:39:43とを保存する。さらに、管理情報登録部221が、最新グループのテイル側に、識別子Cのキャッシュデータの管理情報1432を登録する。
ここで、第2の実施の形態にかかるキャッシュ制御装置1000においては、登録したグループのグループサイズ1440に、登録したキャッシュデータのサイズを加算する点が、第1の実施の形態にかかるキャッシュ制御装置103と異なる。すなわち、登録したグループのグループサイズである913245に、登録したキャッシュデータのサイズ94632が加算され、グループサイズ1440の値が1007877に更新される。
識別子Bのキャッシュデータ1402が時刻12:13:31に参照された場合、参照日時更新部216が、キャッシュ記憶部231に格納されたキャッシュデータ1402の参照日時を、12:13:31に更新する。
図15−1、図15―2は、第2の実施の形態にかかるキャッシュ制御装置1000において、キャッシュデータが削除されるときのキャッシュ記憶部231とキャッシュ管理情報記憶部1011のキャッシュデータの格納の一例を示した説明図である。
図15−1、図15−2は、図14−1、図14−2において、識別子Bのキャッシュデータが参照され、識別子Cのキャッシュデータ1403が登録された後、総キャッシュサイズが上限値を超えたため削除処理が実行された場合の例を示している。
まず、削除判定部224が、ヘッド1511およびテイル1510で表される最古グループの先頭に存在する管理情報1512の識別子Aを削除候補として取得する。さらに、参照日時取得部215が、識別子Aのキャッシュデータの参照日時12:03:06を、キャッシュ記憶部231から取得する。参照日時12:03:06は、最古グループの日時の範囲内であるので、削除判定部224は、識別子Aのキャッシュデータを削除すると判定する。
従って、キャッシュ削除部212により、キャッシュ記憶部231から識別子Aのキャッシュデータ1501が削除され、管理情報削除部223により、キャッシュ管理情報記憶部241から、識別子Aのキャッシュデータの管理情報1512が削除される。また、総キャッシュサイズから、識別子Aのキャッシュデータのサイズ9834が減算される。
ここで、第2の実施の形態にかかるキャッシュ制御装置1000においては、最古グループのグループサイズ1540から、識別子Aのキャッシュデータのサイズを減算する点が、第1の実施の形態にかかるキャッシュ制御装置103と異なる。すなわち、最古グループのグループサイズである139732から、削除した識別子Aのキャッシュデータのサイズ9834が減算され、グループサイズ1540の値が129898に更新される。
減算後の総キャッシュサイズが、予め定められた下限値より大きい場合は、さらに削除が必要であるため、削除判定部224は、次の削除候補として管理情報1513の識別子Bを取得する。さらに、参照日時取得部215が、識別子Bのキャッシュデータの参照日時12:13:31を、キャッシュ記憶部231から取得する。参照日時12:13:31は、最古グループの日時の範囲内ではないので、削除判定部224は、識別子Bのキャッシュデータを削除すると判定しない。
第2の実施の形態にかかるキャッシュ制御装置103においては、識別子Bのキャッシュデータの管理情報をすぐに移動せず、移動先の候補となるグループのグループサイズ等から、移動せずに当該データを削除するか否か判定する点が、第1の実施の形態にかかるキャッシュ制御装置103と異なる。
すなわち、移動先の候補となるグループまでの全グループのグループサイズ1540、1541を加算し、これが総キャッシュサイズから予め定められたキャッシュ容量の下限値を減算した値以下である場合には当該キャッシュデータを移動せずに削除する。例えば、総キャッシュサイズから予め定められたキャッシュ容量の下限値を減算した値が250000であったとすると、グループサイズ1540の値139732と、グループサイズ1541の値96492とを加算した値である236224は当該減算した値以下であるため、識別子Bのキャッシュデータ1502および識別子Bのキャッシュデータの管理情報は移動せずに削除される。
このように、第2の実施の形態にかかるキャッシュ制御装置は、キャッシュデータの削除時に削除優先度と参照日時に加え、グループサイズを参照して削除するキャッシュデータを決定することができる。これにより、キャッシュデータ削除時の管理情報の移動回数を低減させ、スループットを向上させることができる。
(第3の実施の形態)
第3の実施の形態にかかるキャッシュ制御装置は、キャッシュデータの管理情報を予め定められた日時の範囲ごとにグループに分けて削除優先度順にキャッシュ管理情報記憶部に保存し、キャッシュデータの実体や参照日時を前記キャッシュ管理情報記憶部と同一の記憶媒体上のキャッシュ記憶部に保存し、キャッシュデータの削除時に削除優先度と参照日時を参照して削除するキャッシュデータを決定し、当該キャッシュデータを削除するものである。
図16は、第3の実施の形態にかかるキャッシュ制御装置1600の構成を示すブロック図である。同図に示すように、キャッシュ制御装置1600は、通信部201と、キャッシュ記憶制御部210と、キャッシュ管理部220とを備えている。また、第3の実施の形態にかかるキャッシュ制御装置1600は、HDD1610にキャッシュ記憶部231と、キャッシュ管理情報記憶部1611と、総キャッシュサイズ記憶部1612とを備えている。
図16に示すように、第3の実施の形態においては、キャッシュ管理情報記憶部1611および総キャッシュサイズ記憶部1612を、キャッシュ記憶部231と同一の記憶装置であるHDD1610内に格納したことが、第1の実施の形態と異なっている。その他の構成および機能は、第1の実施の形態にかかる構成を表すブロック図である図2と同様であるので、同一符号を付し、ここでの説明は省略する。
図17は、キャッシュ管理情報記憶部1611の構造の一例を示す説明図である。同図に示すように、キャッシュ管理情報記憶部1611は、予め定められた時間間隔で分割されたグループごとに、日時をファイル名としたファイル1701a〜1701cによりキャッシュデータの管理情報を格納している。また、グループ内では、生成日時、またはグループを移動したときはその移動日時の古い順にファイルの先頭にくるようにキャッシュデータの管理情報を格納している。すなわち、ファイルの先頭側に削除優先度が高いデータがくるように管理情報が格納される。
また、同図に示すように、キャッシュデータの管理情報としては、キャッシュデータの識別子1702と、キャッシュデータのサイズを表すキャッシュサイズ1703とが格納されている。このように、第3の実施の形態にかかるキャッシュ制御装置1600においては、キャッシュデータの管理情報を一般的なファイルシステムを利用して記憶する点が、第1および第2の実施の形態にかかるキャッシュ制御装置と異なっている。
同図においては、グループを分割する時間間隔を10分とし、参照日時が12:00から12:09である最も古いグループに、識別子Aのキャッシュデータの管理情報1704と識別子Bのキャッシュデータの管理情報1705とが、参照日時が19:30から19:39である最も新しいグループに識別子Cキャッシュデータの管理情報1706が格納されている状態の例が示されている。
図18−1、図18―2は、第3の実施の形態にかかるキャッシュ制御装置1600において、キャッシュデータが新規登録または参照されるときのキャッシュ記憶部231とキャッシュ管理情報記憶部1611のキャッシュデータの格納の一例を示した説明図である。
図18−1は、キャッシュ記憶部231に記憶されているキャッシュデータの一例を示している。図18−2は、図18−1に示されたキャッシュデータに対応する、キャッシュ管理情報記憶部1611に記憶されているキャッシュ管理情報の一例を示している。
図18−1において、キャッシュ記憶部231には、時刻12:03:06に生成された識別子Aのキャッシュデータ1801と、時刻12:08:08に生成された識別子Bのキャッシュデータ1802とが記憶されており、その後、キャッシュデータ1802が時刻12:13:31に参照され、識別子Cのキャッシュデータ1803が時刻19:39:43に生成されたことを示している。
図18−2におけるキャッシュ管理情報記憶部241は、グループに分割するための日時の範囲を10分とした場合の格納例を示している。この場合、日時の範囲が最も古いグループを表す最古グループは、参照日時が12:00から12:09のグループ1811であり、ファイル名が“2004/08/28_12:00”で表されている。グループ1811の中には、識別子Aのキャッシュデータの管理情報1814と、識別子Bのキャッシュデータの管理情報1815とが格納されている。また、日時の範囲が最も新しいグループを表す最新グループは、ファイル名が“2004/08/28_19:30”で表される参照日時が19:30から19:39のグループ1813である。最古グループと最新グループの間には、例えば、ファイル名が“2004/08/28_12:10”で表される、参照日時が12:10から12:19のグループ1812に属するキャッシュデータの管理情報が格納される。
識別子Cのキャッシュデータ1803が生成された場合、キャッシュ登録部211が、キャッシュ記憶部231に識別子Cと、識別子Cに対応するキャッシュデータの実体と、参照日時19:39:43とを保存する。さらに、管理情報登録部221が、最新のグループ1813のファイルの最後尾に、識別子Cのキャッシュデータの管理情報1816を登録する。
識別子Bのキャッシュデータ1802が時刻12:13:31に参照された場合、参照日時更新部216が、キャッシュ記憶部231に格納されたキャッシュデータ1802の参照日時を、12:13:31に更新する。
図19−1、図19―2は、第3の実施の形態にかかるキャッシュ制御装置1600において、キャッシュデータが削除されるときのキャッシュ記憶部231とキャッシュ管理情報記憶部1611のキャッシュデータの格納の一例を示した説明図である。
図19−1、図19−2は、図18−1、図18−2において、識別子Bのキャッシュデータが参照され、識別子Cのキャッシュデータ1803が登録された後、総キャッシュサイズが上限値を超えたため削除処理が実行された場合の例を示している。
まず、削除判定部224が、ファイル名“2004/08/28_12:00”で表される最古グループ1911の先頭に存在する管理情報1913の識別子Aを削除候補として取得する。さらに、参照日時取得部215が、識別子Aのキャッシュデータの参照日時12:03:06を、キャッシュ記憶部231から取得する。参照日時12:03:06は、最古グループの日時の範囲内であるので、削除判定部224は、識別子Aのキャッシュデータを削除すると判定する。
従って、キャッシュ削除部212により、キャッシュ記憶部231から識別子Aのキャッシュデータ1901が削除され、管理情報削除部223により、キャッシュ管理情報記憶部241から、識別子Aのキャッシュデータの管理情報1913が削除される。また、総キャッシュサイズから、識別子Aのキャッシュデータのサイズ9834が減算される。
減算後の総キャッシュサイズが、予め定められた下限値より大きい場合は、さらに削除が必要であるため、削除判定部224は、次の削除候補として管理情報1914の識別子Bを取得する。さらに、参照日時取得部215が、識別子Bのキャッシュデータの参照日時12:13:31を、キャッシュ記憶部231から取得する。参照日時12:13:31は、最古グループの日時の範囲内ではないので、削除判定部224は、識別子Bのキャッシュデータを削除すると判定しない。
そこで、管理情報移動部222は、ファイル名“2004/08/28_12:10”で表される参照日時が12:10から12:19のグループ1912を、識別子Bのキャッシュデータの移動先として選択し、グループの最後尾に識別子Bのキャッシュデータの管理情報1915を移動する。
このように、第3の実施の形態にかかるキャッシュ制御装置は、容量の問題等によりキャッシュ記憶部とキャッシュ管理情報記憶部を同一の記憶媒体上に保存する場合においても、参照時のキャッシュ制御装置の処理負荷を軽減させ、スループットを向上させることができる。また、一般的なファイルシステムを利用してキャッシュ管理情報を管理しているため、RAMをファイルシステムとして使用する構成においても本発明を適用することができる。従って、必要に応じてキャッシュ記憶部とキャッシュ管理情報記憶部を別個の記憶媒体上に保存するように容易に構成を変更することができるという利点がある。
(第4の実施の形態)
第4の実施の形態にかかるキャッシュ制御装置は、キャッシュデータの管理情報にさらにグループごとのキャッシュデータのサイズの合計を表すグループサイズを加えてキャッシュ管理情報記憶部に保存し、キャッシュデータの実体や参照日時を前記キャッシュ管理情報記憶部と同一の記憶媒体上のキャッシュ記憶部に保存し、キャッシュデータの削除時に削除優先度と参照日時とグループサイズを参照して削除するキャッシュデータを決定し、当該キャッシュデータを削除するものである。
図20は、第4の実施の形態にかかるキャッシュ制御装置2000の構成を示すブロック図である。同図に示すように、キャッシュ制御装置2000は、通信部201と、キャッシュ記憶制御部210と、キャッシュ管理部220とを備えている。また、第4の実施の形態にかかるキャッシュ制御装置1600は、HDD2010にキャッシュ記憶部231と、キャッシュ管理情報記憶部2011と、総キャッシュサイズ記憶部1612とを備えている。
図20に示すように、第4の実施の形態においては、キャッシュ管理情報記憶部2011に記憶する項目としてグループサイズを追加したことが第3の実施の形態と異なっている。その他の構成および機能は、第3の実施の形態にかかる構成を表すブロック図である図16と同様であるので、同一符号を付し、ここでの説明は省略する。
また、キャッシュ管理情報記憶部2011は、第2の実施の形態におけるキャッシュ管理情報記憶部1011と同様に、キャッシュデータの管理情報として、キャッシュデータの識別子と、キャッシュデータのサイズを表すキャッシュサイズと、グループごとにグループに属するキャッシュデータのサイズの合計を表すグループサイズとを格納している。
図21−1、図21―2は、第4の実施の形態にかかるキャッシュ制御装置2000において、キャッシュデータが新規登録または参照されるときのキャッシュ記憶部231とキャッシュ管理情報記憶部2011のキャッシュデータの格納の一例を示した説明図である。
図21−1は、キャッシュ記憶部231に記憶されているキャッシュデータの一例を示している。図21−2は、図21−1に示されたキャッシュデータに対応する、キャッシュ管理情報記憶部241に記憶されているキャッシュ管理情報の一例を示している。
図21−1において、キャッシュ記憶部231には、時刻12:03:06に生成された識別子Aのキャッシュデータ2101と、時刻12:08:08に生成された識別子Bのキャッシュデータ2102とが記憶されており、その後、キャッシュデータ2102が時刻12:13:31に参照され、識別子Cのキャッシュデータ2103が時刻19:39:43に生成されたことを示している。
図21−2におけるキャッシュ管理情報記憶部2011は、グループに分割するための日時の範囲を10分とした場合の格納例を示している。この場合、日時の範囲が最も古いグループを表す最古グループは、参照日時が12:00から12:09のグループ2111であり、ファイル名が“2004/08/28_12:00”で表されている。グループ2111の中には、識別子Aのキャッシュデータの管理情報2114と、識別子Bのキャッシュデータの管理情報2115とが格納されている。また、日時の範囲が最も新しいグループを表す最新グループは、ファイル名が“2004/08/28_19:30”で表される参照日時が19:30から19:39のグループ2113である。最古グループと最新グループの間には、例えば、ファイル名が“2004/08/28_12:10”で表される、参照日時が12:10から12:19のグループ2112に属するキャッシュデータの管理情報が格納される。
識別子Cのキャッシュデータ2103が生成された場合、キャッシュ登録部211が、キャッシュ記憶部231に識別子Cと、識別子Cに対応するキャッシュデータの実体と、参照日時19:39:43とを保存する。さらに、管理情報登録部221が、最新グループのテイル側に、識別子Cのキャッシュデータの管理情報2116を登録する。
ここで、第4の実施の形態にかかるキャッシュ制御装置2000においては、登録したグループのグループサイズ2120に、登録したキャッシュデータのサイズを加算する点が、第3の実施の形態にかかるキャッシュ制御装置1600と異なる。すなわち、登録したグループのグループサイズである913245に、登録したキャッシュデータのサイズ94632が加算され、グループサイズ2120の値が1007877に更新される。
識別子Bのキャッシュデータ2102が時刻12:13:31に参照された場合、参照日時更新部216が、キャッシュ記憶部231に格納されたキャッシュデータ2102の参照日時を、12:13:31に更新する。
図22−1、図22―2は、第4の実施の形態にかかるキャッシュ制御装置2000において、キャッシュデータが削除されるときのキャッシュ記憶部231とキャッシュ管理情報記憶部2011のキャッシュデータの格納の一例を示した説明図である。
図22−1、図22−2は、図21−1、図21−2において、識別子Bのキャッシュデータが参照され、識別子Cのキャッシュデータ2103が登録された後、総キャッシュサイズが上限値を超えたため削除処理が実行された場合の例を示している。
まず、削除判定部224が、ファイル名“2004/08/28_12:00”で表される最古グループ2211の先頭に存在する管理情報2212の識別子Aを削除候補として取得する。さらに、参照日時取得部215が、識別子Aのキャッシュデータの参照日時12:03:06を、キャッシュ記憶部231から取得する。参照日時12:03:06は、最古グループの日時の範囲内であるので、削除判定部224は、識別子Aのキャッシュデータを削除すると判定する。
従って、キャッシュ削除部212により、キャッシュ記憶部231から識別子Aのキャッシュデータ2201が削除され、管理情報削除部223により、キャッシュ管理情報記憶部241から、識別子Aのキャッシュデータの管理情報2212が削除される。また、総キャッシュサイズから、識別子Aのキャッシュデータのサイズ9834が減算される。
ここで、第4の実施の形態にかかるキャッシュ制御装置2000においては、最古グループのグループサイズ2220から、識別子Aのキャッシュデータのサイズを減算する点が、第3の実施の形態にかかるキャッシュ制御装置1600と異なる。すなわち、最古グループのグループサイズである139732から、削除した識別子Aのキャッシュデータのサイズ9834が減算され、グループサイズ2220の値が129898に更新される。
減算後の総キャッシュサイズが、予め定められた下限値より大きい場合は、さらに削除が必要であるため、削除判定部224は、次の削除候補として管理情報2213の識別子Bを取得する。さらに、参照日時取得部215が、識別子Bのキャッシュデータの参照日時12:13:31を、キャッシュ記憶部231から取得する。参照日時12:13:31は、最古グループの日時の範囲内ではないので、削除判定部224は、識別子Bのキャッシュデータを削除すると判定しない。
第4の実施の形態にかかるキャッシュ制御装置103においては、識別子Bのキャッシュデータの管理情報をすぐに移動せず、移動先の候補となるグループのグループサイズ等から、移動せずに当該データを削除するか否か判定する点が、第3の実施の形態にかかるキャッシュ制御装置1600と異なる。
すなわち、移動先の候補となるグループまでの全グループのグループサイズ2220、2221を加算し、これが総キャッシュサイズから予め定められたキャッシュ容量の下限値を減算した値以下である場合には当該キャッシュデータを移動せずに削除する。例えば、総キャッシュサイズから予め定められたキャッシュ容量の下限値を減算した値が250000であったとすると、グループサイズ2220の値139732と、グループサイズ2221の値96492とを加算した値である236224は当該減算した値以下であるため、識別子Bのキャッシュデータおよび識別子Bのキャッシュデータの管理情報は移動せずに削除される。
このように、第4の実施の形態にかかるキャッシュ制御装置は、キャッシュデータの削除時に削除優先度と参照日時に加え、グループサイズを参照して削除するキャッシュデータを決定することができる。これにより、キャッシュデータ削除時の管理情報の移動回数を低減させ、スループットを向上させることができる。また、容量の問題等によりキャッシュ記憶部とキャッシュ管理情報記憶部を同一の記憶媒体上に保存する場合においても、参照時のキャッシュ制御装置の処理負荷を軽減させ、スループットを向上させることができる。さらに、一般的なファイルシステムを利用してキャッシュ管理情報を管理しているため、RAMをファイルシステムとして使用する構成においても本発明を適用することができる。従って、必要に応じてキャッシュ記憶部とキャッシュ管理情報記憶部を別個の記憶媒体上に保存するように容易に構成を変更することができるという利点がある。
第1〜第4の実施の形態にかかるキャッシュ制御装置は、CPUなどの制御装置と、ROM(Read Only Memory)やRAMなどの記憶装置と、HDD、CDドライブ装置などの外部記憶装置と、ディスプレイ装置などの表示装置と、キーボードやマウスなどの入力装置を備えており、通常のコンピュータを利用したハードウェア構成となっている。
第1〜第4の実施の形態にかかるキャッシュ制御装置で実行されるキャッシュ制御プログラムは、インストール可能な形式又は実行可能な形式のファイルでCD−ROM、フレキシブルディスク(FD)、CD−R、DVD(Digital Versatile Disk)等のコンピュータで読み取り可能な記録媒体に記録されて提供される。
また、第1〜第4の実施の形態にかかるキャッシュ制御装置で実行されるキャッシュ制御プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。また、第1〜第4の実施の形態にかかるキャッシュ制御装置で実行されるキャッシュ制御プログラムをインターネット等のネットワーク経由で提供または配布するように構成しても良い。
また、第1〜第4の実施の形態のキャッシュ制御プログラムを、ROM等に予め組み込んで提供するように構成してもよい。
第1〜第4の実施の形態にかかるキャッシュ制御装置で実行されるキャッシュ制御プログラムは、上述した各部(キャッシュ登録部、キャッシュ削除部、キャッシュ参照部、キャッシュ検索部、参照日時取得部、参照日時更新部、管理情報登録部、管理情報移動部、管理情報削除部、削除判定部、グループ検索部、グループ削除部、グループ生成部)を含むモジュール構成となっており、実際のハードウェアとしてはCPU(プロセッサ)が上記記憶媒体からキャッシュ制御プログラムを読み出して実行することにより上記各部が主記憶装置上にロードされ、キャッシュ登録部、キャッシュ削除部、キャッシュ参照部、キャッシュ検索部、参照日時取得部、参照日時更新部、管理情報登録部、管理情報移動部、管理情報削除部、削除判定部、グループ検索部、グループ削除部、グループ生成部が主記憶装置上に生成されるようになっている。