(57)【要約】【課題】キャッシュヒット率を向上させる。【解決手段】キャッシュ装置１０は、アクセス可能な複数の単位データの一部をキャッシュ領域１１ａに保持する。計算手段１３は、複数の単位データのうちの２つの単位データからなる組それぞれについて、一方の単位データがアクセスされた後に他方の単位データがアクセスされるまでのアクセス回数として期待される値を計算する。この計算は、複数の単位データそれぞれがアクセスされたときに、次にアクセスされる可能性のある単位データについての、次にアクセスされる確率に基づいて行われる。決定手段１４は、キャッシュ領域１１ａ外から単位データが読み出された場合、キャッシュ領域１１ａから破棄する単位データを決定する。破棄する単位データは、読み出された単位データがアクセスされた後に複数の単位データそれぞれがアクセスされるまでのアクセス回数として期待される値に基づいて行われる。【選択図】図１
2015075978.tif 000002
【特許請求の範囲】
【請求項１】
アクセス可能な複数の単位データの一部を記憶装置内のキャッシュ領域に保持する処理をコンピュータに実行させるコンピュータプログラムにおいて、
前記コンピュータに、
前記複数の単位データそれぞれがアクセスされたときに、次にアクセスされる可能性のある単位データについての、次にアクセスされる確率に基づいて、前記複数の単位データのうちの２つの単位データからなる組それぞれについて、一方の単位データがアクセスされた後に他方の単位データがアクセスされるまでのアクセス回数として期待される値を計算し、
単位データへのアクセス要求に応じて、前記キャッシュ領域外から該単位データが読み出された場合、該単位データがアクセスされた後に前記複数の単位データそれぞれがアクセスされるまでのアクセス回数として期待される値に基づいて、前記キャッシュ領域から破棄する単位データを決定する、
処理を実行させるコンピュータプログラム。
【請求項２】
期待される値の計算では、前記複数の単位データそれぞれがアクセスされたときに、次にアクセスされる可能性のある単位データについての、次にアクセスされる確率に基づいて、遷移行列を生成し、前記遷移行列を用いた行列計算により、期待される値を算出することを特徴とする請求項１記載のコンピュータプログラム。
【請求項３】
破棄する単位データの決定では、期待される値が最も大きい単位データを破棄するものと決定することを特徴とする請求項１または２記載のコンピュータプログラム。
【請求項４】
前記コンピュータに、さらに、
前記複数の単位データそれぞれについての、他の単位データがアクセスされた後にアクセスされるまでのアクセス回数の期待値に基づいて、前記複数の単位データそれぞれについて、該単位データが前記キャッシュ領域外から読み出されたときの他の単位データの破棄の優先順を決定し、決定した優先順を前記記憶装置に格納する処理を実行させ、
破棄する単位データの決定では、前記キャッシュ領域外から単位データが読み出されたとき、該単位データが読み出されたときの破棄の優先順に基づいて、破棄する単位データを決定する、
ことを特徴とする請求項１乃至３のいずれかに記載のコンピュータプログラム。
【請求項５】
優先順の格納では、期待される値が小さい方から所定数の単位データの識別情報を、破棄の優先順に沿って並べ、並べられた識別情報を格納し、
破棄する単位データの決定では、前記キャッシュ領域外から単位データが読み出されたとき、該単位データが読み出されたときの破棄の優先順が示されていない単位ページが前記キャッシュ領域にあれば、該単位データを破棄対象に決定し、該単位ページがなければ、前記キャッシュ領域に保持された単位ページのうち、優先順が最も高い単位データを破棄対象に決定する、
ことを特徴とする請求項４記載のコンピュータプログラム。
【請求項６】
期待される値の計算では、単位データへのアクセスを状態遷移としたマルコフ連鎖における遷移確率に基づいて期待される値を計算することを特徴とする請求項１乃至５のいずれかに記載のコンピュータプログラム。
【請求項７】
期待される値の計算では、所定数の単位データへの複数回のアクセスを状態遷移とした高階のマルコフ連鎖における遷移確率に基づいて期待される値を計算することを特徴とする請求項６記載のコンピュータプログラム。
【請求項８】
期待される値の計算では、期待される値を近似的に求めることを特徴とする請求項１乃至７のいずれかに記載のコンピュータプログラム。
【請求項９】
アクセス可能な複数の単位データの一部を記憶装置内のキャッシュ領域に保持する処理をコンピュータで実行するキャッシュ方法において、
前記コンピュータが、
前記複数の単位データそれぞれがアクセスされたときに、次にアクセスされる可能性のある単位データについての、次にアクセスされる確率に基づいて、前記複数の単位データのうちの２つの単位データからなる組それぞれについて、一方の単位データがアクセスされた後に他方の単位データがアクセスされるまでのアクセス回数として期待される値を計算し、
単位データへのアクセス要求に応じて、前記キャッシュ領域外から該単位データが読み出された場合、該単位データがアクセスされた後に前記複数の単位データそれぞれがアクセスされるまでのアクセス回数として期待される値に基づいて、前記キャッシュ領域から破棄する単位データを決定する、
キャッシュ方法。
【請求項１０】
アクセス可能な複数の単位データの一部を記憶装置内のキャッシュ領域に保持するキャッシュ装置において、
前記複数の単位データそれぞれがアクセスされたときに、次にアクセスされる可能性のある単位データについての、次にアクセスされる確率に基づいて、前記複数の単位データのうちの２つの単位データからなる組それぞれについて、一方の単位データがアクセスされた後に他方の単位データがアクセスされるまでのアクセス回数として期待される値を計算する計算手段と、
単位データへのアクセス要求に応じて、前記キャッシュ領域外から該単位データが読み出された場合、該単位データがアクセスされた後に前記複数の単位データそれぞれがアクセスされるまでのアクセス回数として期待される値に基づいて、前記キャッシュ領域から破棄する単位データを決定する決定手段と、
を有するキャッシュ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データをキャッシュ領域に保持するキャッシュ方法、キャッシュ装置、およびコンピュータプログラムに関する。
【背景技術】
【０００２】
コンピュータには、性能の異なる様々な記憶装置が搭載されている。例えば小容量で高速な記憶装置（ＲＡＭ（Random Access Memory）など）と大容量で低速な記憶装置（ＨＤＤ（Hard Disk Drive）など）がある。コンピュータでは、よくアクセスされるデータをできるだけ高速にアクセス可能な記憶装置に格納しておくことで、アクセスの高速化を図ることができる。このような技術は、キャッシュと呼ばれる。また高速にアクセス可能な記憶装置内の記憶領域のうち、低速な記憶装置から読み込んだデータを一時的に格納する領域は、キャッシュ領域と呼ばれる。
【０００３】
データにアクセスする際に、該当データがキャッシュ領域にあれば、そのキャッシュ領域に対してアクセスが行われる。このように、アクセス対象のデータがキャッシュ領域内で見つかることを、キャッシュヒットと呼ぶ。他方、アクセス対象のデータがキャッシュ領域に存在しなければ、低速の記憶装置から該当データが読み出される。このように、アクセス対象のデータがキャッシュ領域内で見つからないことを、キャッシュミスと呼ぶ。
【０００４】
多くの場合、高速記憶装置は小容量であるため、キャッシュ領域の容量にも制限がある。そこで、アクセスされるデータの変化に応じて、キャッシュ領域で保持するデータが変更される。キャッシュ領域で保持するデータを変更する際において、どのデータを追い出すかは、キャッシュヒット率の向上のために重要な問題である。すなわち、キャッシュ領域から、どのデータを追い出すのかの戦略（キャッシュアルゴリズム）が、コンピュータの性能に大きな影響を与える。
【０００５】
キャッシュアルゴリズムとしては、例えばＬＲＵ（Least Recently Used）と呼ばれるアルゴリズムがある。このアルゴリズムは、最後に使われてから最も長い時間が経ったデータを、キャッシュ領域から破棄するものである。
【０００６】
なお、コンピュータの使用場面によっては、データのアクセス前に呼ばれたデータに基づいて次にアクセスされるデータがある程度予測できる場合がある。例えば、ＳＮＳ（Social Networking Service）やＷＷＷ（World Wide Web）を用いた情報閲覧であれば、現在閲覧しているページからリンクが張られたページが、次に閲覧されるものと予測できる。また各リンク先が過去に選択された割合を記録しておけば、リンク先のページごとに、次に閲覧される確率を予測できる。このように、次にアクセスされるデータがある程度予測できる場合、各データが次にアクセスされる確率を有効に利用すれば、キャッシュのヒット率を向上させることが可能となる。
【０００７】
例えば、データの読み出しの確率を用いたキャッシュアルゴリズムに関する技術として、マルコフ連鎖を用いた技術がある。この技術では、記憶装置上でのプログラムの局所性がマルコフ連鎖に基づくものとみなして、各データの使用される確率が計算される。そして使用される確率の少ないデータが、リプレース対象となる。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開平２−２１９１４７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかし、各データが次にアクセスされる確率を用いた従来のキャッシュアルゴリズムでは、次のアクセスの確率しか考慮されないため、キャッシュヒット率の向上効果が十分に得られない場面が存在する。例えばアクセス対象のデータを読み出したとき、次のアクセスにおいてアクセス対象となることのない特定のデータが、さらにその次のアクセスでは、高確率でアクセス対象となることが判明している場合があり得る。この場合、２回先（次の次）に高確率でアクセスされる特定のデータは、次回のアクセスで読み出される可能性は０であるため、従来の技術では、キャッシュ領域から削除される可能性がある。その結果、２回先の特定のデータへのアクセスの実行段階になると、キャッシュミスが発生し、キャッシュヒット率が低下してしまう。
【００１０】
このように、各データが次に読み出される確率を用いた従来のキャッシュアルゴリズムでは、キャッシュヒット率の向上効果が十分とはいえない。
１つの側面では、本件は、キャッシュヒット率を向上させることを目的とする。
【課題を解決するための手段】
【００１１】
１つの案では、アクセス可能な複数の単位データの一部を記憶装置内のキャッシュ領域に保持する処理をコンピュータに実行させるコンピュータプログラムにおいて、コンピュータに、以下の処理を実行させるコンピュータプログラムが提供される。
【００１２】
コンピュータは、複数の単位データそれぞれがアクセスされたときに、次にアクセスされる可能性のある単位データについての、次にアクセスされる確率に基づいて、複数の単位データのうちの２つの単位データからなる組それぞれについて、一方の単位データがアクセスされた後に他方の単位データがアクセスされるまでのアクセス回数として期待される値を計算する。そしてコンピュータは、単位データへのアクセス要求に応じて、キャッシュ領域外から該単位データが読み出された場合、該単位データがアクセスされた後に複数の単位データそれぞれがアクセスされるまでのアクセス回数として期待される値に基づいて、キャッシュ領域から破棄する単位データを決定する。
【発明の効果】
【００１３】
１態様によれば、キャッシュヒット率を向上させることができる。
【図面の簡単な説明】
【００１４】
【図１】第１の実施の形態に係るキャッシュ装置の機能構成例を示す図である。
【図２】第２の実施の形態に用いるコンピュータのハードウェアの一構成例を示す図である。
【図３】キャッシュ機能を示すブロック図である。
【図４】アドレス変換表の一例を示す図である。
【図５】アクセスシーケンスの作成状況を示す図である。
【図６】優先順決定処理の手順を示すフローチャートである。
【図７】マルコフ連鎖を説明する図である。
【図８】期待値計算手順の一例を示す図である。
【図９】期待値算出例を示す図である。
【図１０】方程式による期待値の計算例を示す図である。
【図１１】優先順情報の一例を示す図である。
【図１２】ページのアクセス処理の手順を示すフローチャートの一例である。
【図１３】ＬＲＵとのキャッシュアルゴリズムの違いを説明する図である。
【図１４】直後にアクセスするページの遷移確率のみを考慮したキャッシュアルゴリズムとの違いを説明する図である。
【図１５】第３の実施の形態における占有シーケンス長の期待値の計算例を示す図である。
【発明を実施するための形態】
【００１５】
以下、本実施の形態について図面を参照して説明する。なお各実施の形態は、矛盾のない範囲で複数の実施の形態を組み合わせて実施することができる。
〔第１の実施の形態〕
まず第１の実施の形態について説明する。
【００１６】
図１は、第１の実施の形態に係るキャッシュ装置の機能構成例を示す図である。キャッシュ装置１０は、第１の記憶装置１１と第２の記憶装置１２を有する。第１の記憶装置１１は、第２の記憶装置１２よりも記憶容量は少ないが、高速にアクセス可能である。そこで、第１の記憶装置１１の記憶領域機の一部が、キャッシュ領域１１ａとして使用される。キャッシュ領域１１ａには、第２の記憶装置１２に格納されているデータの一部が一時的に格納される。これによりキャッシュ領域１１ａに保持されているデータについては、第２の記憶装置１２から読み出す場合に比べ、高速に読み出すことができる。なお第２の記憶装置１２内のデータにアクセスする際に、第２の記憶装置１２から読み出すデータの単位を、単位データとする。
【００１７】
キャッシュ領域１１ａを有効に利用するために、第１の実施の形態では、アクセス可能な複数の単位データそれぞれがアクセスされたときに、次にアクセスされる可能性のある単位データについての、次にアクセスされる確率が予め定義される。単位データのアクセスの確率の関係は、例えばオートマトンで定義でき、オートマトンは状態遷移図１１ｂで表すことができる。状態遷移図１１ｂは、第２の記憶装置１２内のアクセス単位となる単位データごとの、アクセス状態の遷移確率を示している。状態遷移図１１ｂの各状態には、第２の記憶装置１２内の単位データそれぞれに対するアクセス動作が対応付けられる。そして状態遷移図１１ｂにおける状態の遷移として、ある単位データの次に別の単位データにアクセスする確率（Ｐ1〜Ｐ9）が設定される。状態遷移図１１ｂは、例えば、第１の記憶装置１１に予め格納される。
【００１８】
キャッシュ装置１０は、状態遷移図１１ｂに示される単位データのアクセスの推移に基づいて、キャッシュ領域１１ａから破棄する単位データを決定する。破棄する単位データを適切に決定するために、キャッシュ装置１０は、計算手段１３、決定手段１４、およびアクセス手段１５を有する。
【００１９】
計算手段１３は、第２の記憶装置１２内の複数の単位データのうちの２つの単位データからなる組それぞれについて、一方の単位データがアクセスされた後に他方の単位データがアクセスされるまでのアクセス回数として期待される値を計算する。以下、アクセス回数として期待される値を「期待値」と呼ぶこととする。
【００２０】
期待値の計算では、１つの組に関し、２つの単位データのアクセス順の先後関係を入れ替えた、２つの場合に応じた２つの期待値が得られる。例えば、「単位データａ」と「単位データｂ」との組の場合、１つ目の期待値として、「単位データａ」がアクセスされた後に「単位データｂ」がアクセスされるまでのアクセス回数の期待値が得られる。そして、２つ目の期待値として、「単位データｂ」がアクセスされた後に「単位データａ」がアクセスされるまでのアクセス回数の期待値が得られる。これにより、計算手段１３が、第２の記憶装置１２内の複数の単位データから２つの単位データを取り出して得られる順列それぞれについて、期待値を計算していることとなる。順列は、集合から取り出した所定数のものを、順序づけて並べたものである。
【００２１】
計算手段１３は、単位データの組を作成する際には、同じ単位データ同士の組となることを許容してもよい。この場合、計算手段１３が、複数の単位データの重複順列それぞれについて期待値を計算することとなる。なお、重複順列とは、同じものを繰り返し取り出してもよいという約束のもとで作成される順列である。
【００２２】
期待値の計算は、例えば状態遷移図１１ｂに示される単位データへのアクセスの推移に基づいて行われる。例えば、計算手段１３は、状態遷移図１１ｂに基づいて、組の一方の単位データにアクセスされた後、他方の単位データにアクセスされるまでの状態遷移の経路をすべて検出する。そして計算手段１３は、経路ごとに、経路上の遷移確率をすべて乗算すると共に、遷移確率の乗算結果に遷移回数を乗算する。そして計算手段１３は、経路ごとに得られた値の総和を期待値とする。
【００２３】
また行列の計算によって期待値を計算することもできる。例えば計算手段１３は、複数の単位データそれぞれがアクセスされたときに、次にアクセスされる可能性のある単位データについての、次にアクセスされる確率に基づいて、遷移行列を生成する。そして計算手段１３は、生成した遷移行列を用いた行列計算により、期待値を計算する。
【００２４】
計算手段１３は、例えば、計算した期待値を登録した期待値表１１ｃを作成する。期待値表１１ｃには、第２の記憶装置１２内の複数の単位データのうちの２つの単位データからなる組について、一方の単位データ（始点）がアクセスされた後に、他方の単位データ（終点）がアクセスされるまでのアクセス回数の期待値が、表形式で設定される。計算手段１３は、例えば、作成した期待値表１１ｃを第１の記憶装置１１に格納する。
【００２５】
決定手段１４は、単位データへのアクセス要求に応じて、キャッシュ領域１１ａ外から単位データが読み出された場合、キャッシュ領域１１ａから破棄する単位データを決定する。例えば決定手段１４は、読み出された単位データがアクセスされた後に複数の単位データそれぞれがアクセスされるまでの期待値に基づいて、キャッシュ領域１１ａから破棄する単位データを決定する。例えば、決定手段１４は、期待値が最も大きい単位データを破棄するものと決定する。
【００２６】
アクセス手段１５は、アクセス要求に応じてデータアクセスを行う。例えばアクセス手段１５は、第２の記憶装置１２からアクセス対象の単位データを読み出し、読み出した単位データをアクセス要求に対する応答として出力する。なおアクセス手段１５は、アクセス対象の単位データがキャッシュ領域１１ａに格納されている場合、第２の記憶装置１２からの単位データの読み出しを行わずに、キャッシュ領域から単位データを読み出す。
【００２７】
またアクセス手段１５は、第２の記憶装置１２から単位データを読み出した場合、読み出した単位データをキャッシュ領域１１ａに格納する。その際、アクセス手段１５は、キャッシュ領域１１ａの空き容量を確認し、空き容量が所定量以下であれば、キャッシュ領域１１ａ内の単位データのうち、決定手段１４により破棄対象に決定された単位データを破棄する。
【００２８】
このようなキャッシュ装置１０によれば、計算手段１３によって、状態遷移図１１ｂで表される、単位データへのアクセスの推移に基づいて、期待値が計算される。計算された期待値が設定された期待値表１１ｃが作成される。その後、アクセス要求に応じて、アクセス手段１５により第２の記憶装置１２から単位データが読み出されると、決定手段１４により、キャッシュ領域１１ａ内の単位データのうち、破棄する単位データが決定される。例えば、キャッシュ領域１１ａに格納されている単位データのうち、読み出された単位データを始点としたときの期待値が最も高い終点の単位データが、破棄対象に決定される。キャッシュ領域１１ａの空き領域が不足していれば、アクセス手段１５により、破棄対象の単位データがキャッシュ領域１１ａから破棄され、代わりに、第２の記憶装置１２から読み出した単位データがキャッシュ領域１１ａに格納される。
【００２９】
このようにして、読み込んだ単位データを始点としたときの期待値が最も大きい単位データが、優先的にキャッシュ領域１１ａから破棄される。期待値が最も大きい単位データは、以後、その単位データにアクセスされるまでのアクセス回数が、最も多くなることが予想される単位データである。換言すると、以後、少ないアクセス回数でアクセスされる可能性の高い単位データは、キャッシュ領域１１ａ内に継続して保持される。これにより、その後のアクセス要求に応じた単位データのアクセスにおいて、アクセス対象となる単位データがキャッシュ領域１１ａに保持されている可能性が高くなる。すなわち、キャッシュヒット率が向上する。その結果、単位データのアクセス効率が向上する。
【００３０】
なおキャッシュ装置１０は、ある単位データがキャッシュ領域１１ａ外から読み出されたときの他の単位データの破棄の優先順を予め決定しておいてもよい。その場合、キャッシュ装置１０は、期待値表１１ｃに代えて、破棄の優先順を示す情報を第１の記憶装置１１に格納しておく。破棄の優先順が予め決定されている場合、決定手段１４は、キャッシュ領域１１ａ外から単位データが読み出されたとき、単位データが読み出されたときの破棄の優先順に基づいて、破棄する単位データを決定する。このように予め優先順を決定しておくことで、破棄する単位データの決定が容易となり、処理の効率化が図れる。
【００３１】
優先順を格納する際には、例えば、期待値が小さい方から所定数の単位データの識別情報を、破棄の優先順に沿って並べ、並べられた識別情報が第１の記憶装置１１に格納される。この場合、決定手段１４は、キャッシュ領域外から単位データが読み出されたとき、その単位データが読み出されたときの破棄の優先順が示されていない単位ページがキャッシュ領域１１ａにあれば、その単位データを破棄対象に決定する。また決定手段１４は、破棄の優先順が示されていない単位ページがキャッシュ領域１１ａになければ、キャッシュ領域１１ａに保持された単位ページのうち、優先順が最も高い単位データを破棄対象に決定する。このように、期待値が小さい方から所定数の単位データの識別情報のみを優先順として保持することで、優先順の保持に用いる記憶容量を少なくできる。また、優先順が設定されていない多数の単位データについては、優先順が最も高いものと判断することで、破棄対象の単位データの決定処理を効率化できる。
【００３２】
なおアクセスされる単位ページの推移の確率がマルコフ連鎖であれば、計算手段１３は、単位データへのアクセスを状態遷移としたマルコフ連鎖における遷移確率に基づいて期待値を計算する。マルコフ連鎖は、マルコフ過程のうち、取り得る状態が離散的なものを指す。マルコフ過程は、未来の挙動が現在の値だけで決定され、過去の挙動と無関係であるという確率過程である。
【００３３】
マルコフ連鎖は、１階マルコフ連鎖（単純マルコフ連鎖）であっても、高階マルコフ連鎖（Ｎ階マルコフ連鎖）であってもよい。高階マルコフ連鎖の場合、例えば、所定数の単位データへの複数回のアクセスが、マルコフ連鎖における状態遷移となる。高階のマルコフ連鎖を利用して期待値を求めることで、アクセスされる単位ページの推移に応じ、より適切な単位データを破棄対象とすることができる。
【００３４】
また、期待値の計算では、期待される値を近似的に求めてもよい。期待値を近似的に求めることで、期待値算出の処理負荷が軽減される。
なお、図１に示す計算手段１３、決定手段１４、およびアクセス手段１５は、例えばキャッシュ装置１０が有するプロセッサにより実現することができる。また、第１の記憶手段は、例えばキャッシュ装置１０が有するＲＡＭなどのメモリにより実現することができる。さらに第２の記憶装置１２は、例えばキャッシュ装置１０が有するＨＤＤにより実現することができる。
【００３５】
また、図１に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。
〔第２の実施の形態〕
次に第２の実施の形態について説明する。第２の実施の形態は、１階マルコフ連鎖を用いて、期待値を求めるものである。以下、第２の実施の形態の説明において単にマルコフ連鎖と呼んだ場合、１階マルコフ連鎖を指すものとする。また第２の実施の形態では、データのアクセスをページ単位で行うものとする。
【００３６】
次に、第２の実施の形態に係るコンピュータについて説明する。
図２は、第２の実施の形態に用いるコンピュータのハードウェアの一構成例を示す図である。コンピュータ１００は、プロセッサ１０１によって装置全体が制御されている。プロセッサ１０１には、バス１０９を介してメモリ１０２と複数の周辺機器が接続されている。プロセッサ１０１は、マルチプロセッサであってもよい。プロセッサ１０１は、例えばＣＰＵ（Central Processing Unit）、ＭＰＵ（Micro Processing Unit）、またはＤＳＰ（Digital Signal Processor）である。プロセッサ１０１の機能の少なくとも一部を、ＡＳＩＣ（Application Specific Integrated Circuit）、ＰＬＤ（Programmable Logic Device）などの電子回路で実現してもよい。
【００３７】
メモリ１０２は、コンピュータ１００の主記憶装置として使用される。メモリ１０２には、プロセッサ１０１に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、メモリ１０２には、プロセッサ１０１による処理に必要な各種データが格納される。さらにメモリ１０２には、ＨＤＤ１０３に格納されたページ単位のデータの一部がキャッシュされる。メモリ１０２としては、例えばＲＡＭなどの揮発性の半導体記憶装置が使用される。
【００３８】
バス１０９に接続されている周辺機器としては、ＨＤＤ１０３、グラフィック処理装置１０４、入力インタフェース１０５、光学ドライブ装置１０６、機器接続インタフェース１０７およびネットワークインタフェース１０８がある。
【００３９】
ＨＤＤ１０３は、内蔵したディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。ＨＤＤ１０３は、コンピュータ１００の補助記憶装置として使用される。ＨＤＤ１０３には、ＯＳのプログラム、アプリケーションプログラム、および各種データが格納される。なお、補助記憶装置としては、フラッシュメモリなどの不揮発性の半導体記憶装置を使用することもできる。
【００４０】
グラフィック処理装置１０４には、モニタ２１が接続されている。グラフィック処理装置１０４は、プロセッサ１０１からの命令に従って、画像をモニタ２１の画面に表示させる。モニタ２１としては、ＣＲＴ（Cathode Ray Tube）を用いた表示装置や液晶表示装置などがある。
【００４１】
入力インタフェース１０５には、キーボード２２とマウス２３とが接続されている。入力インタフェース１０５は、キーボード２２やマウス２３から送られてくる信号をプロセッサ１０１に送信する。なお、マウス２３は、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
【００４２】
光学ドライブ装置１０６は、レーザ光などを利用して、光ディスク２４に記録されたデータの読み取りを行う。光ディスク２４は、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク２４には、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。
【００４３】
機器接続インタフェース１０７は、コンピュータ１００に周辺機器を接続するための通信インタフェースである。例えば機器接続インタフェース１０７には、メモリ装置２５やメモリリーダライタ２６を接続することができる。メモリ装置２５は、機器接続インタフェース１０７との通信機能を搭載した記録媒体である。メモリリーダライタ２６は、メモリカード２７へのデータの書き込み、またはメモリカード２７からのデータの読み出しを行う装置である。メモリカード２７は、カード型の記録媒体である。
【００４４】
ネットワークインタフェース１０８は、ネットワーク２０に接続されている。ネットワークインタフェース１０８は、ネットワーク２０を介して、他のコンピュータまたは通信機器との間でデータの送受信を行う。
【００４５】
以上のようなハードウェア構成によって、第２の実施の形態の処理機能を実現することができる。なお、第１の実施の形態に示したキャッシュ装置１０も、図２に示したコンピュータ１００と同様のハードウェアにより実現することができる。
【００４６】
コンピュータ１００は、例えばコンピュータ読み取り可能な記録媒体に記録されたプログラムを実行することにより、第２の実施の形態の処理機能を実現する。コンピュータ１００に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。例えば、コンピュータ１００に実行させるプログラムをＨＤＤ１０３に格納しておくことができる。プロセッサ１０１は、ＨＤＤ１０３内のプログラムの少なくとも一部をメモリ１０２にロードし、プログラムを実行する。またコンピュータ１００に実行させるプログラムを、光ディスク２４、メモリ装置２５、メモリカード２７などの可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、例えばプロセッサ１０１からの制御により、ＨＤＤ１０３にインストールされた後、実行可能となる。またプロセッサ１０１が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
【００４７】
次に、コンピュータ１００が、ＨＤＤ１０３内のページ単位のデータをメモリ１０２へのキャッシュするために用いる機能について説明する。
図３は、キャッシュ機能を示すブロック図である。図３に示すように、ＨＤＤ１０３には、複数のページ３１が格納されている。ＨＤＤ１０３に対しては、ページ単位でリードまたはライトのアクセスが行われる。
【００４８】
メモリ１０２には、キャッシュ領域３２が設けられている。キャッシュ領域３２には、ＨＤＤ１０３に格納された複数のページ３１のうちの一部のページが格納される。またメモリ１０２には、アドレス変換表３３、アクセスシーケンス３４、および優先順情報３５が格納されている。アドレス変換表３３は、ページのページ番号と、そのページが格納されたＨＤＤ１０３内の記憶領域との対応関係を示す情報である。アクセスシーケンス３４は、過去のページアクセスに基づいて生成された、ページのアクセス順を示す情報である。優先順情報３５は、各ページが読み出されたときに、キャッシュ領域から追い出す（削除する）ページの優先順を示す情報である。
【００４９】
さらにコンピュータ１００は、ページをキャッシュするのに用いる機能として、アクセスシーケンス記録部１１０、遷移行列生成部１２０、期待値計算部１３０、優先順決定部１４０、およびアクセス部１５０を有する。
【００５０】
アクセスシーケンス記録部１１０は、ページが読み出された順番を、アクセスシーケンス３４としてメモリ１０２に記録する。例えばアクセスシーケンス記録部１１０は、アクセス部１５０によりページがＨＤＤ１０３から読み出されるごとに、読み出されたページのページ番号を、アクセスシーケンス３４の最後尾に追加する。
【００５１】
遷移行列生成部１２０は、アクセスシーケンス３４に基づいて、遷移行列を生成する。遷移行列は、マルコフ連鎖に基づく遷移確率を表した行列である。
期待値計算部１３０は、遷移行列に基づいて、マルコフ連鎖における状態（ページアクセス後の状態）ごとに、その状態から別の各状態となるまでの遷移回数（実行されたアクセス回数）の期待値を計算する。期待値が大きい状態ほど、その状態に遷移するまでのページアクセス回数が多くなる可能性が高い。なお、ある状態から別の状態となるまでの遷移回数は、別の状態に対応するページがキャッシュ領域３２に保持されているとき、そのページが次にアクセスされるまでキャッシュ領域を占有し続ける期間である。その占有期間は、アクセスシーケンス３４上の長さで表される。そこで、ある状態から別の状態となるまでのアクセスシーケンス３４上での長さを、占有シーケンス長と呼ぶこととする。以降、単に期待値と呼んだ場合も、占有シーケンス長の期待値を指すものとする。
【００５２】
優先順決定部１４０は、状態ごとに、その状態から別の状態となるまでの、占有シーケンス長の期待値に基づいて、その状態となったときにキャッシュから破棄するページの優先順を決定する。例えば占有シーケンス長の期待値が高いページをキャッシュ領域３２に残した場合、そのページが長い期間使用されずにキャッシュ領域３２の一部を占有し、キャッシュ領域３２の利用効率（キャッシュヒット率）が低下してしまう。そこで優先順決定部１４０は、占有シーケンス長の期待値が高いほど破棄する優先順が高くなるように、優先順を決定する。優先順決定部１４０は、決定した優先順を、優先順情報３５としてメモリ１０２に格納する。
【００５３】
アクセス部１５０は、アクセス要求に応答してメモリ１０２のキャッシュ領域３２、またはＨＤＤ１０３にアクセスし、ページ単位でデータを取得する。例えばアクセス部１５０は、アクセス要求で指定されたページがキャッシュ領域３２にある場合、そのページをキャッシュ領域３２から取得する。またアクセス部１５０は、アクセス要求で指定されたページがキャッシュ領域３２内にない場合、そのページをＨＤＤ１０３から取得する。またアクセス部１５０は、ＨＤＤ１０３からページを取得した場合、そのページをキャッシュ領域３２に格納する。
【００５４】
またアクセス部１５０は、キャッシュ領域３２内に空き領域がなくなると、キャッシュ領域３２に格納されたページをキャッシュ領域３２から破棄し、空き領域を確保する。例えばアクセス部１５０は、キャッシュ領域３２に格納されているページのうち、最後にアクセスしたページに対する破棄の優先順が最も高いページを破棄する。なおページの破棄とは、そのページが格納されている領域の属性を、使用中から空きに変更する処理である。
【００５５】
なお、図３に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。なおメモリ１０２は、図１に示した第１の実施の形態の第１の記憶装置１１の一例である。ＨＤＤ１０３は、図１に示した第１の実施の形態の第２の記憶装置１２の一例である。遷移行列生成部１２０と期待値計算部１３０とを合わせた機能は、図１に示した第１の実施の形態の計算手段１３の一例である。優先順決定部１４０は、図１に示した第１の実施の形態の決定手段１４の一例である。アクセス部１５０は、図１に示した第１の実施の形態のアクセス手段１５の一例である。
【００５６】
次に、メモリ１０２に予め格納されるアドレス変換表３３について説明する。
図４は、アドレス変換表の一例を示す図である。アドレス変換表３３には、ページ番号に対応付けて、ＨＤＤ上のアドレスが設定されている。アクセス部１５０は、ページに対してアクセスする場合、アドレス変換表３３を参照して、ＨＤＤ１０３内のページとページ番号との対応関係を把握できる。例えばアクセス部１５０は、アプリケーションプログラムを実行するプロセスなどから、ページ番号を指定したアクセス要求を受け付けると、アドレス変換表３３を参照し、指定されたページ番号に対応するＨＤＤ１０３のアドレスを取得する。そしてアクセス部１５０は、取得したアドレスに格納されたページを、ＨＤＤ１０３から読み出す。
【００５７】
ページ単位でのアクセスが行われると、アクセスシーケンス記録部１１０によって、アクセスシーケンス３４が作成される。
図５は、アクセスシーケンスの作成状況を示す図である。図５に示すように、アクセスシーケンス３４は、アクセスされたページのページ番号がアクセスされた順に並べられた、期待値順位表である。
【００５８】
アクセス部１５０は、アクセス要求に応じて、メモリ１０２のキャッシュ領域３２内、またはＨＤＤ１０３内のページにアクセスする。図５の例では、ＨＤＤ１０３からページ番号「２」のページがアクセスされ、メモリ１０２に読み込まれている。アクセス部１５０は、例えばアクセス要求で指定されたページの全部または一部を、アクセス要求に対応する応答として出力する。
【００５９】
アクセスシーケンス記録部１１０は、アクセス部１５０のアクセス処理を監視し、アクセス部１５０によってアクセスされたページのページ番号を取得する。そしてアクセスシーケンス記録部１１０は、取得したページ番号を、アクセスシーケンス３４の最後尾に追加する。
【００６０】
このように、ページへのアクセスがあるごとに、アクセスシーケンス３４が更新される。なお、図５に示したアクセス例では、ＨＤＤ１０３に格納されたページにアクセスしているが、アクセス対象のページがメモリ１０２のキャッシュ領域３２内にある場合、キャッシュ領域内のページに対してアクセスが行われる。キャッシュ領域３２内のページにアクセスされた場合であっても、アクセスシーケンス記録部１１０は、アクセスシーケンス３４を更新する。
【００６１】
このようにして生成されたアクセスシーケンス３４に基づいて、マルコフ連鎖を示す連鎖行列を作成し、さらに連鎖行列を用いて、キャッシュ領域３２から破棄するページの優先順を、適切に決定することができる。アクセス部１５０は、優先順に従って、キャッシュ領域３２から破棄するページを決定する。なおページの内容が更新されていれば、アクセス部１５０は、更新後のページをＨＤＤ１０３に書き込む。
【００６２】
図６は、優先順決定処理の手順を示すフローチャートである。優先順決定処理は、例えば所定の期間間隔で定期的に実行される。またキャッシュ領域３２に対するキャッシュヒット率が所定値以下になったときに、優先順決定処理を実行してもよい。
【００６３】
［ステップＳ１０１］遷移行列生成部１２０は、アクセスシーケンス３４に基づいて遷移行列を作成する。遷移行列生成部１２０は、生成した遷移行列を期待値計算部１３０に送信する。
【００６４】
［ステップＳ１０２］期待値計算部１３０は、遷移行列に基づいて、占有シーケンス長の期待値を計算する。期待値は、ＨＤＤ１０３内の複数のページそれぞれを直近のアクセス対象のページとしたときに、直近のアクセス対象のページと、そのページ以外のページとの対ごとに求められる。期待値計算部１３０は、計算した期待値を優先順決定部１４０に送信する。なお、期待値計算処理の詳細は後述する（図８参照）。
【００６５】
［ステップＳ１０３］優先順決定部１４０は、ＨＤＤ１０３内の未選択のページの１つを選択する。
［ステップＳ１０４］優先順決定部１４０は、選択したページを直近のアクセス対象ページとした場合の、ＨＤＤ１０３内の各ページの占有シーケンス長の期待値に基づいて、キャッシュ領域３２から破棄するページの優先順を決定する。
【００６６】
［ステップＳ１０５］優先順決定部１４０は、決定した優先順をメモリ１０２に格納する。
［ステップＳ１０６］優先順決定部１４０は、未選択のページがあるか否かを判断する。未選択のページがあれば、処理がステップＳ１０３に進められる。すべてのページが選択済みであれば、優先順決定処理が終了する。
【００６７】
このようにしてキャッシュ領域３２からのページの破棄の優先順を決定することができる。
次に、マルコフ連鎖の遷移行列の生成方法について詳細に説明する。
【００６８】
遷移行列生成部１２０は、アクセスシーケンス３４に基づいて、ページごとに、そのページからの遷移先の各ページへ遷移する確率を計算する。例えば遷移行列生成部１２０は、特定のページを遷移元として、そのページの次に読み込まれる各ページの、読み込まれる確率を計算する。その場合、遷移行列生成部１２０は、まずアクセスシーケンス３４から、遷移元のページのページ番号を検索する。次に遷移行列生成部１２０は、検索でヒットした位置の次のページ番号を抽出する。このときのページ番号の抽出回数を、総遷移回数とする。さらに遷移行列生成部１２０は、ページ番号ごとに、そのページ番号が抽出された回数を、総遷移回数で除算する。除算結果が、遷移元のページから各ページへの遷移確率となる。このような遷移確率の計算が、ＨＤＤ１０３内の各ページを遷移元として、ページごとに行われる。
【００６９】
そして遷移行列生成部１２０は、各ページ間の遷移確率に基づいて、マルコフ連鎖の遷移行列を生成する。
図７は、マルコフ連鎖を説明する図である。ここでマルコフ連鎖により、ある状態ｉ（ｉは１以上の整数）の次に状態ｊ（ｊは１以上の整数）に遷移する確率を、確率ａijとする。例えば、ページＡが読み込まれた状態を状態ｉとし、他のページＢが読み込まれた状態を状態ｊとし、ページＡが読み込まれた状態で、次にページＢが読み込まれる確率が、確率ａijである。
【００７０】
マルコフ連鎖は、状態遷移図４１で表すことができる。状態遷移図４１では、状態を示すノードが、アーク（矢印）で接続されている。ノード内には、その状態に対応するページのページ番号が示されている。またアークの横には、そのアークで遷移する確率が示されている。図７の例では、ページ番号「１」のページから、続けてページ番号「１」のページに遷移する確率は「１／３」である。ページ番号「１」のページから、ページ番号「２」のページに遷移する確率は「１／６」である。ページ番号「１」のページから、ページ番号「３」のページに遷移する確率は「１／２」である。
【００７１】
遷移行列生成部１２０は、状態遷移図４１に示されるページ間での遷移する確率を表す遷移行列Ａを生成する。３つの状態を取り得る場合、遷移行列Ａは、３行３列の正方行列となる。遷移行列Ａのｉ行，ｊ列の成分が、状態ｉから状態ｊに遷移する確率ａijである。図７の例では、第１行、第２列の成分「１／６」は、状態「１」から状態「２」に遷移する確率を表している。遷移行列Ａにおける行ごとの和は、いずれの行についても「１」となる。
【００７２】
なお、上記の説明では、アクセスシーケンス３４に関する統計的な解析によって、遷移行列を生成しているが、遷移確率が既知であれば、その遷移確率を用いて遷移行列を生成することができる。例えばページ間の遷移状況が、グラフのランダムウォークなどで決まっていれば、そのグラフから遷移確率を求め、遷移行列を生成することもできる。なおランダムウォークとは、次の遷移先の状態が、確率的に無作為（ランダム）に決定されることである。
【００７３】
ここで、時刻ｔにおいて各状態となっている確率を表す行ベクトルＰtを、「Ｐt＝Ｐt-1Ａ」と定義することができる。ページ数が３であれば取り得る状態も３つであり、その場合、行ベクトルＰtには、ページに対応付けられた３つの成分が含まれる。３つの成分それぞれには、時刻ｔにおいて、対応するページが読み込まれた状態をなっている確率が設定される。Ｐt-1は、時刻ｔの状態に遷移する直前（時刻ｔ−１）において、各状態となっている確率を表す行ベクトルである。このように、ある時点の状態を示す行ベクトルに右側から遷移行列Ａを乗算すれば、１回だけ遷移した後に、各状態になっている確率が得られる。
【００７４】
期待値計算部１３０は、遷移行列生成部１２０が生成した遷移行列Ａに基づいて、占有シーケンス長の期待値を計算する。
図８は、期待値計算手順の一例を示す図である。
【００７５】
［ステップＳ１１１］期待値計算部１３０は、ＨＤＤ１０３に格納されているページのうち、未選択のページを１つ選択する。ここで、選択したページのページ番号をｋ（ｋは１以上の整数）とする。
【００７６】
以下ステップＳ１１２〜Ｓ１１４において、他のページにアクセスしてから、選択したページがアクセスされるまでの、占有シーケンス長の期待値が求められる。
［ステップＳ１１２］期待値計算部１３０は、遷移行列Ａの第ｋ列のすべての成分を「０」に変更した行列Ｂを生成する。
【００７７】
［ステップＳ１１３］期待値計算部１３０は、（「Ｉ−Ｂ」の逆行列）×（すべて１の列ベクトル）を計算する。ここでＩは、単位行列である。この計算結果が、ＨＤＤ１０３内の各ページがアクセスされてから、ページ番号「ｋ」のページがアクセスされるまでの、占有シーケンス長の期待値である。
【００７８】
［ステップＳ１１４］期待値計算部１３０は、ＨＤＤ１０３に格納されているページのうち、未選択のページがあるか否かを判断する。未選択のページがあれば、処理がステップＳ１１１に進められる。すべてのページについて期待値を計算済みであれば、処理がステップＳ１１５に進められる。
【００７９】
［ステップＳ１１５］期待値計算部１３０は、算出したすべての期待値を出力する。出力された期待値は、優先順決定部１４０に渡される。
このようにして、占有シーケンス長の期待値が計算される。
【００８０】
図９は、期待値算出例を示す図である。図９の例では、状態遷移図４２に示すようなマルコフ連鎖となっている。すなわち、５つのページがあり、ページ番号「１」のページにアクセスされた場合、確率「１」で、次にページ番号「２」のページにアクセスされる。ページ番号「２」のページにアクセスされた場合、確率「１」で、次にページ番号「３」のページにアクセスされる。ページ番号「３」のページにアクセスされた場合、確率「１」で、次にページ番号「４」のページにアクセスされる。ページ番号「４」のページにアクセスされた場合、確率「１」で、次にページ番号「５」のページにアクセスされる。ページ番号「５」のページにアクセスされた場合、確率「１」で、次にページ番号「１」のページにアクセスされる。状態遷移図４２に示すようなマルコフ連鎖を遷移行列Ａで表すと、第１行第２列、第２行第３列、第３行第４列、第４行第５列、第５行第１列の成分が「１」となり、他の成分が「０」となる。
【００８１】
ここで、ページ番号「３」にアクセスされるまでの、占有シーケンス長の期待値を求めるものとする。この場合、期待値計算部１３０は、遷移行列Ａの第３列のすべての成分を０にした行列Ｂを生成する。次に期待値計算部１３０は、５行５列の単位行列Ｉから行列Ｂを減算し、減算結果の逆行列を生成する。さらに期待値計算部１３０は、生成した逆行列に、右側から５つの成分のすべてが「１」の列ベクトルを乗算する。図９の例では、乗算結果として、列ベクトル（２，１，５，４，３）が得られる。
【００８２】
得られた列ベクトルの第１〜第５の成分は、それぞれ、ページ番号「１」〜「５」の各ページがアクセスされたときに、その後、ページ番号「３」のページにアクセスされるまでの占有シーケンス長の期待値である。例えば、ページ番号「１」のページがアクセスされたときに、その後、ページ番号「３」のページにアクセスされるまでの占有シーケンス長の期待値は「２」である。
【００８３】
なお、行列を用いずに期待値を計算することも可能である。
図１０は、方程式による期待値の計算例を示す図である。図１０に示すマルコフ連鎖の状態遷移図４３には、２つの状態がある。この状態遷移図４３によれば、ＨＤＤ１０３内に２つのページがある。そして、ページ番号「１」のページにアクセスされた場合、確率「１／３」で、再度、次にページ番号「１」のページにアクセスされ、確率「２／３」で、次にページ番号「２」のページにアクセスされる。ページ番号「２」のページにアクセスされた場合、確率「１」で、次にページ番号「１」のページにアクセスされる。
【００８４】
このようなマルコフ連鎖のとき、ページ番号「１」のページがアクセスされた後に、ページ番号「２」のページにアクセスされるまでの、占有シーケンス長の期待値ｘを計算するものとする。
【００８５】
まず、方程式を用いて期待値を計算する。この場合、「ｘ＝（１／３）×（ｘ＋１）＋（２／３）×１」という方程式で表される。この方程式をｘについて解くと、ｘ＝１．５となる。すなわち、ページ番号「１」のページがアクセスされた後に、ページ番号「２」のページにアクセスされるまでの、占有シーケンス長の期待値として「１．５」が得られる。
【００８６】
ここで、同じマルコフ連鎖における期待値について行列を用いて計算する場合、まず遷移行列Ａが生成される。この遷移行列Ａは、第１項第１列が「１／３」、第１項第２列が「２／３」、第２項第１列が「１」、第２項第２列が「０」である。さらに、遷移行列Ａの第２列の成分を「０」にした行列Ｂが生成される。そして、Ｉ−Ｂの逆行列が計算される。計算された逆行列に右から、すべてが「１」の列ベクトルが乗算される。その結果、列ベクトル（１．５，２．５）が得られる。得られた列ベクトルの第１の成分は、ページ番号「１」のページがアクセスされた後に、ページ番号「２」のページにアクセスされるまでの、占有シーケンス長の期待値が「１．５」であることを示している。得られた列ベクトルの第２の成分は、ページ番号「２」のページがアクセスされた後に、再度ページ番号「２」のページにアクセスされるまでの、占有シーケンス長の期待値が「２．５」であることを示している。
【００８７】
以上のように、行列または方程式を用いて、占有シーケンス長の期待値を計算できる。すると、優先順決定部１４０により、ページごとに、そのページにアクセスされたときに、キャッシュ領域３２から破棄するページの優先順が決定される。例えば期待値が大きいページほど、破棄する優先順が高くなる。優先順決定部１４０は、決定した優先順を示す優先順情報３５を生成し、メモリ１０２に格納する。
【００８８】
図１１は、優先順情報の一例を示す図である。優先順情報３５には、ＨＤＤ１０３内のページごとの期待値順位表３５ａ，３５ｂ，３５ｃ，・・・が含まれている。例えば期待値順位表３５ａは、ページ番号「１」のページに対応付けられている。期待値順位表３５ａは、ページ番号「１」のページがアクセスされた後に、各ページにアクセスされるまでの占有シーケンスの期待値が高い順に、各ページのページ番号を並べたものである。期待値順位表３５ａ内の各ページ番号には、そのページ番号で示されるページに関する占有シーケンスの期待値が付与されている。期待値順位表３５ａにおいて下位に設定されているページほど、ページ番号「１」のページにアクセスされた際に、破棄する優先度が高くなる。
【００８９】
また図１１の例では、期待値順位表３５ａ，３５ｂ，３５ｃ，・・・には、期待値が高い方から所定数のページに対応するページ番号が設定されている。期待値順位表３５ａ，３５ｂ，３５ｃ，・・・に登録されていないページは、最優先で破棄対象となる。期待値順位表３５ａ，３５ｂ，３５ｃ，・・・に登録するページ番号の個数は、期待値の数値に応じて変更することができる。例えば、期待値が所定値以下のページのページ番号について、期待値順位表３５ａ，３５ｂ，３５ｃ，・・・に登録するようにしてもよい。
【００９０】
このような優先順情報３５を予め作成しておくことで、アクセス部１５０がページにアクセスする際に、キャッシュ領域から適切なページを選択して、破棄することができる。
図１２は、ページのアクセス処理の手順を示すフローチャートの一例である。
【００９１】
［ステップＳ１２１］アクセス部１５０は、アプリケーションプログラムを実行するプロセスなどからのアクセス要求を取得する。ここで、アクセス要求で指定されたアクセス対象のページを「ページＰ」とする。
【００９２】
［ステップＳ１２２］アクセス部１５０は、ページＰがキャッシュ領域３２にあるか否かを判断する。ページＰがキャッシュ領域にある場合、処理がステップＳ１２７に進められる。ページＰがキャッシュ領域３２にない場合、処理がステップＳ１２３に進められる。
【００９３】
［ステップＳ１２３］アクセス部１５０は、アドレス変換表３３を参照し、ページＰのディスクのアドレスａを取得する。
［ステップＳ１２４］アクセス部１５０は、ＨＤＤ１０３から、取得したアドレスａの位置のページを読み出し、キャッシュ領域３２に格納する。
【００９４】
［ステップＳ１２５］アクセス部１５０は、キャッシュ領域３２の空き容量が所定値以下か否かを判断する。空き容量が所定値以下であれば、処理がステップＳ１２６に進められる。空き容量が所定値より多ければ、処理がステップＳ１２７に進められる。
【００９５】
［ステップＳ１２６］アクセス部１５０は、ページＰに対応する期待値順位表を参照し、期待値順位表に登録されていないページが、キャッシュ領域３２にある場合、該当するページの１つを削除対象とする。またアクセス部１５０は、期待値順位表に登録されていないページが、キャッシュ領域３２にない場合、期待値順位表の登録順が下位のページから順に、そのページがキャッシュ領域３２に格納されているかどうかを判断する。次にアクセス部１５０は、キャッシュ領域３２に格納されているページのうち、期待値順位表の登録順が最も下位（期待値が最も大きい）ページを削除対象とする。そしてアクセス部１５０は、削除対象としたページを、キャッシュ領域３２から削除する。なお削除対象のページの内容が更新されている場合、そのページをＨＤＤ１０３に書き込む。
【００９６】
［ステップＳ１２７］アクセス部１５０は、ページＰに対する処理を実行する。例えばアクセス部１５０は、アクセス要求が、ページＰ内の一部のデータのリード要求であれば、そのデータをアクセス要求の応答として出力する。またアクセス部１５０は、アクセス要求が、ページＰ内へのデータのライト要求であれば、キャッシュ領域３２内のページＰにデータを書き込む。
【００９７】
このようにして、最後にアクセスされたページに基づいて、今後アクセスされるページが推定可能なときに、適切なページをキャッシュ領域から追い出し、キャッシュヒット率を向上させることができる。
【００９８】
以下に、他のキャッシュアルゴリズムに対する優位性について説明する。
図１３は、ＬＲＵとのキャッシュアルゴリズムの違いを説明する図である。図１３に示すマルコフ連鎖の状態遷移図４４には８つの状態がある。すなわちＨＤＤ１０３に８つのページが格納されている場合を想定している。ここで、８つのページをページ番号順に並べ、ページ番号「８」のページの次を、ページ番号「１」のページとする。このとき、各ページがアクセスされたとき、ページ番号順で１つ後のページが次にアクセスされる確率が「ａ」である。またページ番号で３つ前のページが次にアクセスされる確率が「ｂ」である。さらにページ番号で２つ前のページに次にアクセスされる確率が「ｃ」である。またａはｂより大きく、ｂはｃより大きい（ａ≫ｂ≫ｃ）ものとする。そして、キャッシュ領域３２には、ページ番号「６」、「７」、「８」それぞれのページが格納されているものとする。このような状況下で、ページ番号「１」のページがアクセスされ、ＨＤＤ１０３からそのページが読み込まれたものとする。
【００９９】
このとき第２の実施の形態に示したキャッシュアルゴリズムを適用せずに、ＬＲＵによって破棄するページを決定した場合、ページ番号「６」、「７」、「８」の３つのページのうち、アクセス時期が最も古いページが破棄されることとなる。その結果、ページ番号「６」のページが、キャッシュ領域３２から破棄される。しかし、状態遷移図４４によれば、ページ番号「１」のページがアクセスされたとき、次に、確率「ｂ」でページ番号「６」のページにアクセスされる。一方、ページ番号「１」のページがアクセスされたとき、次にページ番号「７」のページにアクセスされる確率は「ｃ」である。またページ番号「１」のページがアクセスされたとき、次にページ番号「８」のページにアクセスされる確率は「０」である。「ｂ≫ｃ」であり、ページ番号「７」、「８」のページより優先してページ番号「６」のページが破棄されるのは不適切である。
【０１００】
次に、図１３に示した例において、第２の実施の形態に示すキャッシュアルゴリズムを適用した場合を考える。第２の実施の形態では、状態遷移図４４に示されたような、遷移確率を考慮して破棄するページが決定される。例えばページ番号「６」のページとページ番号「７」のページとの期待値を比較する。ページ番号「６」のページは確率「ｂ」で次にアクセスされ、ページ番号「７」のページは確率「ｃ」で次にアクセスされる。ここで「ｂ≫ｃ」である。このことからページ番号「７」のページの次回のアクセスまでは、他のページへのアクセスが複数回行われる可能性が高い。そのためページ番号「７」のページの方が、ページ番号「６」のページより期待値が高くなる。その結果、ページ番号「７」のページの方が、ページ番号「６」のページよりも優先して破棄される。なおページ番号「７」のページよりもページ番号「８」のページの方が、期待値が高ければ、ページ番号「８」のページが破棄されることとなる。
【０１０１】
このように、第２の実施の形態に係るキャッシュアルゴリズムを適用すれば、マルコフ連鎖による遷移確率を有効に利用して適切なページを破棄することができ、ＬＲＵよりもキャッシュ領域３２の利用効率を向上させることができる。しかも、第２の実施の形態では、現在アクセスしたページの直後にアクセスするページの遷移確率のみではなく、以後、複数回のアクセスの遷移確率から占有シーケンス長の期待値を計算し、期待値に基づいて破棄するページを決定している。そのため、さらにキャッシュ領域３２の利用効率を向上させることができる。
【０１０２】
図１４は、直後にアクセスするページの遷移確率のみを考慮したキャッシュアルゴリズムとの違いを説明する図である。図１４に示すマルコフ連鎖の状態遷移図４５には７つの状態がある。すなわちＨＤＤ１０３に７つのページが格納されている場合を想定している。ページ番号「１」のページがアクセスされると、次に、ページ番号「２」〜「６」の５つのページのうちの１つのページに、同じ確率「０．２」でアクセスされる。ページ番号「２」〜「６」のいずれかのページがアクセスされると、確率「１」で、次にページ番号「７」のページがアクセスされる。ページ番号「７」のページがアクセスされると、確率「１」で、次にページ番号「１」のページがアクセスされる。そしてキャッシュ領域３２には、ページ番号「７」、「２」それぞれのページが格納されているものとする。このような状況下で、ページ番号「１」のページがアクセスされ、ＨＤＤ１０３からそのページが読み込まれたものとする。
【０１０３】
まず、直後にアクセスするページの遷移確率のみを考慮したキャッシュアルゴリズムによって破棄するデータを決定する場合について説明する。この場合、例えば、次にアクセスする確率が最小のページが破棄される。図１４の例では、ページ番号「２」のページは、確率「０．２」で次にアクセスされる可能性があるが、ページ番号「７」のページは次にアクセスされる可能性はない。そこでページ番号「７」のページが破棄されることとなる。しかし、ページ番号「７」のページは、２回先のアクセスにおいて１００％の確率でアクセスされる。そうすると、ページ番号「１」のページにアクセスした時点でページ番号「７」のページを破棄してしまうと、２回先（次の次）のアクセスではキャッシュミスヒットとなってしまい、処理効率が向上しない。
【０１０４】
次に、図１４に示した例において、第２の実施の形態に示すキャッシュアルゴリズムを適用した場合を考える。第２の実施の形態では、複数回のアクセスの遷移確率に基づいて、各ページについて、占有シーケンス長の期待値が計算される。
【０１０５】
ページ番号「２」〜「６」のページの期待値は、いずれも級数「１×（１／５）＋４×（４／５）×（１／５）＋７×（４／５）×（４／５）×（１／５）＋．．．」で表される。この級数を計算すると「１３」となる。従ってページ番号「２」〜「６」のページの期待値は「１３」となる。ページ番号「７」は、２回先に常にアクセスされる。そのため、ページ番号「７」のページの期待値は「２」である。その結果、図１４の例では、ページ番号「２」のページが破棄されることとなる。ページ番号「７」のページが破棄されないことで、２回先のアクセスでは常にキャッシュヒットすることとなり、処理効率が向上する。
【０１０６】
しかも、第２の実施の形態では、占有シーケンス長の基準値を予め計算し、優先順情報３５を作成しておく。これにより、ページへのアクセス時に基準値の算出処理をせずにすみ、破棄するページを効率的に決定できる。特に、逆行列の計算は負荷が大きく、ページ数をｎ（ｎは１以上の整数）としたとき、ｎの４乗のオーダ（Ｏ（ｎ4））の計算となる。そのため基準値を予め計算しておくことで、ページへのアクセスが行われるごとに逆行列の計算を伴う基準値の算出を行う場合に比べ、破棄するページの決定を、極めて効率的に行うことができる。
【０１０７】
〔第３の実施の形態〕
次に第３の実施の形態について説明する。第３の実施の形態は、高階マルコフ連鎖を用いて、キャッシュ領域から破棄するページを決定するものである。以下、第３の実施の形態における、第２の実施の形態との相違点について説明する。なお、第３の実施の形態を実現するためのハードウェアやキャッシュ機能の構成は、図２，図３に示した第２の実施の形態の構成と同様である。
【０１０８】
第２の実施の形態では１階マルコフ連鎖を利用している。１階マルコフ連鎖では、１度のページのアクセスが、１つの状態に対応付けられる。一方、高階マルコフ連鎖では、連続する複数回のページアクセスを組とし、ページアクセスの組が１つの状態に対応付けられる。例えば、ページ番号「１」、「３」、「４」の各ページに順番にアクセスされた場合、高階マルコフ連鎖では、ページ列｛１，３，４｝で１つの状態となる。次にページ番号「７」にアクセスされた場合、ページ列｛３，４，７｝という別の状態に遷移する。
【０１０９】
なお高階マルコフ連鎖において、第２の実施の形態と同様に、状態ごとの占有シーケンス長の期待値を求めると、連続してアクセスされたページ列ごとの期待値が求まる。このページ列ごとの期待値を用いて、個々のページごとの占有シーケンス長の期待値を求めることができる。
【０１１０】
図１５は、第３の実施の形態における占有シーケンス長の期待値の計算例を示す図である。ページｉにアクセスした後、ページｊにアクセスするまでの占有シーケンス長の期待値を求めるものとする。ページｉにアクセスした時点での状態をＩ＝（i'',i',i）とする。ページｊに辿り着く状態をＪ＝（j'',j',j）とする。ページｊに複数の経路で辿り着くことができれば、ページｊに辿り着く状態Ｊ＝（j'',j',j）は複数存在する。
【０１１１】
このとき期待値計算部１３０は、ページｉからページｊに、ページｉを経由せずに辿り着く確率ｐを、状態Ｊごとに求める。その確率ｐは、例えば、ページｉからページｊに辿り着く経路（遷移）それぞれ遷移確率を乗算することで求めることができる。また期待値計算部１３０は、状態Ｊごとに、状態Ｉから状態Ｊまでの占有シーケンス長の期待値を、第２の実施の形態と同様の手法で計算する。そして期待値計算部１３０は、状態Ｊごとに、その状態Ｊの確率と期待値とを乗算し、複数の状態Ｊの乗算結果を合計する。期待値計算部１３０は、得られた合計値を、ページｊに関する、占有シーケンス長の期待値とする。
【０１１２】
例えば図１５の例では、３つの経路でページｊに辿り着くことができる。１つ目の経路に対応する状態Ｊの確率は「ｐ＿１」、期待値は「ｅ＿１」である。２つ目の経路に対応する状態Ｊの確率は「ｐ＿２」、期待値は「ｅ＿２」である。３つ目の経路に対応する状態Ｊの確率は「ｐ＿３」、期待値は「ｅ＿３」である。この場合、ページｊの期待値は、「ｐ＿１×ｅ＿１＋ｐ＿２×ｅ＿２＋ｐ＿３×ｅ＿３」となる。
【０１１３】
このようにして、高階マルコフ連鎖においても、ページごとの期待値を計算できる。そして期待値が大きいページを優先的にキャッシュ領域３２から破棄することで、効率的なページアクセスが可能となる。第３の実施の形態では高階マルコフ連鎖を用いるため、ページアクセスの推移をより高度に解析し、破棄するページをより適切に判断することが可能となる。
【０１１４】
〔第４の実施の形態〕
次に第４の実施の形態について説明する。第４の実施の形態は、占有シーケンス長の期待値を、近似値で求め、計算負荷を軽減するものである。
【０１１５】
ＨＤＤ１０３に格納されるページ数が多くなると、期待値を求めるために行われる逆行列の算出などの計算量が膨大となる。しかも第３の実施の形態のように高階マルコフ連鎖を利用した場合、計算量はさらに増加する。そこで、第４の実施の形態では、期待値を近似値で求め、計算量を削減する。
【０１１６】
Ｉ−Ｂの逆行列は、「（Ｉ−Ｂ）-1＝Ｉ＋Ｂ＋Ｂ2＋Ｂ3＋・・・」と表すことができる。そこで期待値計算部１３０は、例えば「（Ｉ−Ｂ）-1＝Ｉ＋Ｂ＋Ｂ2」と近似して、期待値を計算する。
【０１１７】
ここで、期待値の計算では、「Ｉ＋Ｂ＋Ｂ2」に対して、右側から、すべての成分が１の列ベクトルが乗算される。このような計算では、行列Ｂのサイズが巨大であっても、内容が疎（大多数の成分が「０」）であれば、行列サイズ（行または列の数）に応じた線形時間で期待値を計算することが可能である。
【０１１８】
〔その他の実施の形態〕
第２〜第４の実施の形態では、ＨＤＤ１０３内のデータをメモリ１０２にキャッシュする例であるが、他の記憶装置の組み合わせに対しても、上記各実施の形態に示したキャッシュアルゴリズムを適用可能である。例えば、アクセス速度の異なる複数の半導体メモリを有するシステムにおいて、高速にアクセス可能な半導体メモリをキャッシュとして使用する場合にも、各実施の形態に示したキャッシュアルゴリズムを適用できる。さらにネットワークを介して接続された他のコンピュータから取得したデータを、キャッシュする場合にも、各実施の形態に示したキャッシュアルゴリズムを適用できる。またＨＤＤ１０３に代えてＳＳＤ（Solid State Drive）を用いることもできる。
【０１１９】
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の２以上の構成（特徴）を組み合わせたものであってもよい。
【符号の説明】
【０１２０】
１０  キャッシュ装置
１１  第１の記憶装置
１１ａ  キャッシュ領域
１１ｂ  状態遷移図
１１ｃ  期待値表
１２  第２の記憶装置
１３  計算手段
１４  決定手段
１５  アクセス手段
【図１】
2015075978.tif 000003
【図２】
2015075978.tif 000004
【図３】
2015075978.tif 000005
【図４】
2015075978.tif 000006
【図５】
2015075978.tif 000007
【図６】
2015075978.tif 000008
【図７】
2015075978.tif 000009
【図８】
2015075978.tif 000010
【図９】
2015075978.tif 000011
【図１０】
2015075978.tif 000012
【図１１】
2015075978.tif 000013
【図１２】
2015075978.tif 000014
【図１３】
2015075978.tif 000015
【図１４】
2015075978.tif 000016
【図１５】
2015075978.tif 000017