JP6131818B2 - キャッシュ方法、キャッシュ装置、およびコンピュータプログラム - Google Patents

キャッシュ方法、キャッシュ装置、およびコンピュータプログラム Download PDF

Info

Publication number
JP6131818B2
JP6131818B2 JP2013212613A JP2013212613A JP6131818B2 JP 6131818 B2 JP6131818 B2 JP 6131818B2 JP 2013212613 A JP2013212613 A JP 2013212613A JP 2013212613 A JP2013212613 A JP 2013212613A JP 6131818 B2 JP6131818 B2 JP 6131818B2
Authority
JP
Japan
Prior art keywords
unit data
page
accessed
expected value
unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2013212613A
Other languages
English (en)
Other versions
JP2015075978A (ja
Inventor
清水 俊宏
俊宏 清水
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2013212613A priority Critical patent/JP6131818B2/ja
Priority to US14/494,217 priority patent/US9824028B2/en
Publication of JP2015075978A publication Critical patent/JP2015075978A/ja
Application granted granted Critical
Publication of JP6131818B2 publication Critical patent/JP6131818B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/122Replacement control using replacement algorithms of the least frequently used [LFU] type, e.g. with individual count value

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

本発明は、データをキャッシュ領域に保持するキャッシュ方法、キャッシュ装置、およびコンピュータプログラムに関する。
コンピュータには、性能の異なる様々な記憶装置が搭載されている。例えば小容量で高速な記憶装置(RAM(Random Access Memory)など)と大容量で低速な記憶装置(HDD(Hard Disk Drive)など)がある。コンピュータでは、よくアクセスされるデータをできるだけ高速にアクセス可能な記憶装置に格納しておくことで、アクセスの高速化を図ることができる。このような技術は、キャッシュと呼ばれる。また高速にアクセス可能な記憶装置内の記憶領域のうち、低速な記憶装置から読み込んだデータを一時的に格納する領域は、キャッシュ領域と呼ばれる。
データにアクセスする際に、該当データがキャッシュ領域にあれば、そのキャッシュ領域に対してアクセスが行われる。このように、アクセス対象のデータがキャッシュ領域内で見つかることを、キャッシュヒットと呼ぶ。他方、アクセス対象のデータがキャッシュ領域に存在しなければ、低速の記憶装置から該当データが読み出される。このように、アクセス対象のデータがキャッシュ領域内で見つからないことを、キャッシュミスと呼ぶ。
多くの場合、高速記憶装置は小容量であるため、キャッシュ領域の容量にも制限がある。そこで、アクセスされるデータの変化に応じて、キャッシュ領域で保持するデータが変更される。キャッシュ領域で保持するデータを変更する際において、どのデータを追い出すかは、キャッシュヒット率の向上のために重要な問題である。すなわち、キャッシュ領域から、どのデータを追い出すのかの戦略(キャッシュアルゴリズム)が、コンピュータの性能に大きな影響を与える。
キャッシュアルゴリズムとしては、例えばLRU(Least Recently Used)と呼ばれるアルゴリズムがある。このアルゴリズムは、最後に使われてから最も長い時間が経ったデータを、キャッシュ領域から破棄するものである。
なお、コンピュータの使用場面によっては、データのアクセス前に呼ばれたデータに基づいて次にアクセスされるデータがある程度予測できる場合がある。例えば、SNS(Social Networking Service)やWWW(World Wide Web)を用いた情報閲覧であれば、現在閲覧しているページからリンクが張られたページが、次に閲覧されるものと予測できる。また各リンク先が過去に選択された割合を記録しておけば、リンク先のページごとに、次に閲覧される確率を予測できる。このように、次にアクセスされるデータがある程度予測できる場合、各データが次にアクセスされる確率を有効に利用すれば、キャッシュのヒット率を向上させることが可能となる。
例えば、データの読み出しの確率を用いたキャッシュアルゴリズムに関する技術として、マルコフ連鎖を用いた技術がある。この技術では、記憶装置上でのプログラムの局所性がマルコフ連鎖に基づくものとみなして、各データの使用される確率が計算される。そして使用される確率の少ないデータが、リプレース対象となる。
特開平2−219147号公報
しかし、各データが次にアクセスされる確率を用いた従来のキャッシュアルゴリズムでは、次のアクセスの確率しか考慮されないため、キャッシュヒット率の向上効果が十分に得られない場面が存在する。例えばアクセス対象のデータを読み出したとき、次のアクセスにおいてアクセス対象となることのない特定のデータが、さらにその次のアクセスでは、高確率でアクセス対象となることが判明している場合があり得る。この場合、2回先(次の次)に高確率でアクセスされる特定のデータは、次回のアクセスで読み出される可能性は0であるため、従来の技術では、キャッシュ領域から削除される可能性がある。その結果、2回先の特定のデータへのアクセスの実行段階になると、キャッシュミスが発生し、キャッシュヒット率が低下してしまう。
このように、各データが次に読み出される確率を用いた従来のキャッシュアルゴリズムでは、キャッシュヒット率の向上効果が十分とはいえない。
1つの側面では、本件は、キャッシュヒット率を向上させることを目的とする。
1つの案では、アクセス可能な複数の単位データの一部を記憶装置内のキャッシュ領域に保持する処理をコンピュータに実行させるコンピュータプログラムにおいて、コンピュータに、以下の処理を実行させるコンピュータプログラムが提供される。
コンピュータは、複数の単位データそれぞれがアクセスされたときに、次にアクセスされる可能性のある単位データについての、次にアクセスされる確率に基づいて、複数の単位データのうちの2つの単位データからなる組それぞれについて、一方の単位データがアクセスされた後に他方の単位データがアクセスされるまでのアクセス回数として期待される値を計算する。そしてコンピュータは、単位データへのアクセス要求に応じて、キャッシュ領域外から該単位データが読み出された場合、該単位データがアクセスされた後に複数の単位データそれぞれがアクセスされるまでのアクセス回数として期待される値に基づいて、キャッシュ領域から破棄する単位データを決定する。
1態様によれば、キャッシュヒット率を向上させることができる。
第1の実施の形態に係るキャッシュ装置の機能構成例を示す図である。 第2の実施の形態に用いるコンピュータのハードウェアの一構成例を示す図である。 キャッシュ機能を示すブロック図である。 アドレス変換表の一例を示す図である。 アクセスシーケンスの作成状況を示す図である。 優先順決定処理の手順を示すフローチャートである。 マルコフ連鎖を説明する図である。 期待値計算手順の一例を示す図である。 期待値算出例を示す図である。 方程式による期待値の計算例を示す図である。 優先順情報の一例を示す図である。 ページのアクセス処理の手順を示すフローチャートの一例である。 LRUとのキャッシュアルゴリズムの違いを説明する図である。 直後にアクセスするページの遷移確率のみを考慮したキャッシュアルゴリズムとの違いを説明する図である。 第3の実施の形態における占有シーケンス長の期待値の計算例を示す図である。
以下、本実施の形態について図面を参照して説明する。なお各実施の形態は、矛盾のない範囲で複数の実施の形態を組み合わせて実施することができる。
〔第1の実施の形態〕
まず第1の実施の形態について説明する。
図1は、第1の実施の形態に係るキャッシュ装置の機能構成例を示す図である。キャッシュ装置10は、第1の記憶装置11と第2の記憶装置12を有する。第1の記憶装置11は、第2の記憶装置12よりも記憶容量は少ないが、高速にアクセス可能である。そこで、第1の記憶装置11の記憶領域機の一部が、キャッシュ領域11aとして使用される。キャッシュ領域11aには、第2の記憶装置12に格納されているデータの一部が一時的に格納される。これによりキャッシュ領域11aに保持されているデータについては、第2の記憶装置12から読み出す場合に比べ、高速に読み出すことができる。なお第2の記憶装置12内のデータにアクセスする際に、第2の記憶装置12から読み出すデータの単位を、単位データとする。
キャッシュ領域11aを有効に利用するために、第1の実施の形態では、アクセス可能な複数の単位データそれぞれがアクセスされたときに、次にアクセスされる可能性のある単位データについての、次にアクセスされる確率が予め定義される。単位データのアクセスの確率の関係は、例えばオートマトンで定義でき、オートマトンは状態遷移図11bで表すことができる。状態遷移図11bは、第2の記憶装置12内のアクセス単位となる単位データごとの、アクセス状態の遷移確率を示している。状態遷移図11bの各状態には、第2の記憶装置12内の単位データそれぞれに対するアクセス動作が対応付けられる。そして状態遷移図11bにおける状態の遷移として、ある単位データの次に別の単位データにアクセスする確率(P1〜P9)が設定される。状態遷移図11bは、例えば、第1の記憶装置11に予め格納される。
キャッシュ装置10は、状態遷移図11bに示される単位データのアクセスの推移に基づいて、キャッシュ領域11aから破棄する単位データを決定する。破棄する単位データを適切に決定するために、キャッシュ装置10は、計算手段13、決定手段14、およびアクセス手段15を有する。
計算手段13は、第2の記憶装置12内の複数の単位データのうちの2つの単位データからなる組それぞれについて、一方の単位データがアクセスされた後に他方の単位データがアクセスされるまでのアクセス回数として期待される値を計算する。以下、アクセス回数として期待される値を「期待値」と呼ぶこととする。
期待値の計算では、1つの組に関し、2つの単位データのアクセス順の先後関係を入れ替えた、2つの場合に応じた2つの期待値が得られる。例えば、「単位データa」と「単位データb」との組の場合、1つ目の期待値として、「単位データa」がアクセスされた後に「単位データb」がアクセスされるまでのアクセス回数の期待値が得られる。そして、2つ目の期待値として、「単位データb」がアクセスされた後に「単位データa」がアクセスされるまでのアクセス回数の期待値が得られる。これにより、計算手段13が、第2の記憶装置12内の複数の単位データから2つの単位データを取り出して得られる順列それぞれについて、期待値を計算していることとなる。順列は、集合から取り出した所定数のものを、順序づけて並べたものである。
計算手段13は、単位データの組を作成する際には、同じ単位データ同士の組となることを許容してもよい。この場合、計算手段13が、複数の単位データの重複順列それぞれについて期待値を計算することとなる。なお、重複順列とは、同じものを繰り返し取り出してもよいという約束のもとで作成される順列である。
期待値の計算は、例えば状態遷移図11bに示される単位データへのアクセスの推移に基づいて行われる。例えば、計算手段13は、状態遷移図11bに基づいて、組の一方の単位データにアクセスされた後、他方の単位データにアクセスされるまでの状態遷移の経路をすべて検出する。そして計算手段13は、経路ごとに、経路上の遷移確率をすべて乗算すると共に、遷移確率の乗算結果に遷移回数を乗算する。そして計算手段13は、経路ごとに得られた値の総和を期待値とする。
また行列の計算によって期待値を計算することもできる。例えば計算手段13は、複数の単位データそれぞれがアクセスされたときに、次にアクセスされる可能性のある単位データについての、次にアクセスされる確率に基づいて、遷移行列を生成する。そして計算手段13は、生成した遷移行列を用いた行列計算により、期待値を計算する。
計算手段13は、例えば、計算した期待値を登録した期待値表11cを作成する。期待値表11cには、第2の記憶装置12内の複数の単位データのうちの2つの単位データからなる組について、一方の単位データ(始点)がアクセスされた後に、他方の単位データ(終点)がアクセスされるまでのアクセス回数の期待値が、表形式で設定される。計算手段13は、例えば、作成した期待値表11cを第1の記憶装置11に格納する。
決定手段14は、単位データへのアクセス要求に応じて、キャッシュ領域11a外から単位データが読み出された場合、キャッシュ領域11aから破棄する単位データを決定する。例えば決定手段14は、読み出された単位データがアクセスされた後に複数の単位データそれぞれがアクセスされるまでの期待値に基づいて、キャッシュ領域11aから破棄する単位データを決定する。例えば、決定手段14は、期待値が最も大きい単位データを破棄するものと決定する。
アクセス手段15は、アクセス要求に応じてデータアクセスを行う。例えばアクセス手段15は、第2の記憶装置12からアクセス対象の単位データを読み出し、読み出した単位データをアクセス要求に対する応答として出力する。なおアクセス手段15は、アクセス対象の単位データがキャッシュ領域11aに格納されている場合、第2の記憶装置12からの単位データの読み出しを行わずに、キャッシュ領域から単位データを読み出す。
またアクセス手段15は、第2の記憶装置12から単位データを読み出した場合、読み出した単位データをキャッシュ領域11aに格納する。その際、アクセス手段15は、キャッシュ領域11aの空き容量を確認し、空き容量が所定量以下であれば、キャッシュ領域11a内の単位データのうち、決定手段14により破棄対象に決定された単位データを破棄する。
このようなキャッシュ装置10によれば、計算手段13によって、状態遷移図11bで表される、単位データへのアクセスの推移に基づいて、期待値が計算される。計算された期待値が設定された期待値表11cが作成される。その後、アクセス要求に応じて、アクセス手段15により第2の記憶装置12から単位データが読み出されると、決定手段14により、キャッシュ領域11a内の単位データのうち、破棄する単位データが決定される。例えば、キャッシュ領域11aに格納されている単位データのうち、読み出された単位データを始点としたときの期待値が最も高い終点の単位データが、破棄対象に決定される。キャッシュ領域11aの空き領域が不足していれば、アクセス手段15により、破棄対象の単位データがキャッシュ領域11aから破棄され、代わりに、第2の記憶装置12から読み出した単位データがキャッシュ領域11aに格納される。
このようにして、読み込んだ単位データを始点としたときの期待値が最も大きい単位データが、優先的にキャッシュ領域11aから破棄される。期待値が最も大きい単位データは、以後、その単位データにアクセスされるまでのアクセス回数が、最も多くなることが予想される単位データである。換言すると、以後、少ないアクセス回数でアクセスされる可能性の高い単位データは、キャッシュ領域11a内に継続して保持される。これにより、その後のアクセス要求に応じた単位データのアクセスにおいて、アクセス対象となる単位データがキャッシュ領域11aに保持されている可能性が高くなる。すなわち、キャッシュヒット率が向上する。その結果、単位データのアクセス効率が向上する。
なおキャッシュ装置10は、ある単位データがキャッシュ領域11a外から読み出されたときの他の単位データの破棄の優先順を予め決定しておいてもよい。その場合、キャッシュ装置10は、期待値表11cに代えて、破棄の優先順を示す情報を第1の記憶装置11に格納しておく。破棄の優先順が予め決定されている場合、決定手段14は、キャッシュ領域11a外から単位データが読み出されたとき、単位データが読み出されたときの破棄の優先順に基づいて、破棄する単位データを決定する。このように予め優先順を決定しておくことで、破棄する単位データの決定が容易となり、処理の効率化が図れる。
優先順を格納する際には、例えば、期待値が小さい方から所定数の単位データの識別情報を、破棄の優先順に沿って並べ、並べられた識別情報が第1の記憶装置11に格納される。この場合、決定手段14は、キャッシュ領域外から単位データが読み出されたとき、その単位データが読み出されたときの破棄の優先順が示されていない単位ページがキャッシュ領域11aにあれば、その単位データを破棄対象に決定する。また決定手段14は、破棄の優先順が示されていない単位ページがキャッシュ領域11aになければ、キャッシュ領域11aに保持された単位ページのうち、優先順が最も高い単位データを破棄対象に決定する。このように、期待値が小さい方から所定数の単位データの識別情報のみを優先順として保持することで、優先順の保持に用いる記憶容量を少なくできる。また、優先順が設定されていない多数の単位データについては、優先順が最も高いものと判断することで、破棄対象の単位データの決定処理を効率化できる。
なおアクセスされる単位ページの推移の確率がマルコフ連鎖であれば、計算手段13は、単位データへのアクセスを状態遷移としたマルコフ連鎖における遷移確率に基づいて期待値を計算する。マルコフ連鎖は、マルコフ過程のうち、取り得る状態が離散的なものを指す。マルコフ過程は、未来の挙動が現在の値だけで決定され、過去の挙動と無関係であるという確率過程である。
マルコフ連鎖は、1階マルコフ連鎖(単純マルコフ連鎖)であっても、高階マルコフ連鎖(N階マルコフ連鎖)であってもよい。高階マルコフ連鎖の場合、例えば、所定数の単位データへの複数回のアクセスが、マルコフ連鎖における状態遷移となる。高階のマルコフ連鎖を利用して期待値を求めることで、アクセスされる単位ページの推移に応じ、より適切な単位データを破棄対象とすることができる。
また、期待値の計算では、期待される値を近似的に求めてもよい。期待値を近似的に求めることで、期待値算出の処理負荷が軽減される。
なお、図1に示す計算手段13、決定手段14、およびアクセス手段15は、例えばキャッシュ装置10が有するプロセッサにより実現することができる。また、第1の記憶手段は、例えばキャッシュ装置10が有するRAMなどのメモリにより実現することができる。さらに第2の記憶装置12は、例えばキャッシュ装置10が有するHDDにより実現することができる。
また、図1に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。
〔第2の実施の形態〕
次に第2の実施の形態について説明する。第2の実施の形態は、1階マルコフ連鎖を用いて、期待値を求めるものである。以下、第2の実施の形態の説明において単にマルコフ連鎖と呼んだ場合、1階マルコフ連鎖を指すものとする。また第2の実施の形態では、データのアクセスをページ単位で行うものとする。
次に、第2の実施の形態に係るコンピュータについて説明する。
図2は、第2の実施の形態に用いるコンピュータのハードウェアの一構成例を示す図である。コンピュータ100は、プロセッサ101によって装置全体が制御されている。プロセッサ101には、バス109を介してメモリ102と複数の周辺機器が接続されている。プロセッサ101は、マルチプロセッサであってもよい。プロセッサ101は、例えばCPU(Central Processing Unit)、MPU(Micro Processing Unit)、またはDSP(Digital Signal Processor)である。プロセッサ101の機能の少なくとも一部を、ASIC(Application Specific Integrated Circuit)、PLD(Programmable Logic Device)などの電子回路で実現してもよい。
メモリ102は、コンピュータ100の主記憶装置として使用される。メモリ102には、プロセッサ101に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、メモリ102には、プロセッサ101による処理に必要な各種データが格納される。さらにメモリ102には、HDD103に格納されたページ単位のデータの一部がキャッシュされる。メモリ102としては、例えばRAMなどの揮発性の半導体記憶装置が使用される。
バス109に接続されている周辺機器としては、HDD103、グラフィック処理装置104、入力インタフェース105、光学ドライブ装置106、機器接続インタフェース107およびネットワークインタフェース108がある。
HDD103は、内蔵したディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。HDD103は、コンピュータ100の補助記憶装置として使用される。HDD103には、OSのプログラム、アプリケーションプログラム、および各種データが格納される。なお、補助記憶装置としては、フラッシュメモリなどの不揮発性の半導体記憶装置を使用することもできる。
グラフィック処理装置104には、モニタ21が接続されている。グラフィック処理装置104は、プロセッサ101からの命令に従って、画像をモニタ21の画面に表示させる。モニタ21としては、CRT(Cathode Ray Tube)を用いた表示装置や液晶表示装置などがある。
入力インタフェース105には、キーボード22とマウス23とが接続されている。入力インタフェース105は、キーボード22やマウス23から送られてくる信号をプロセッサ101に送信する。なお、マウス23は、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
光学ドライブ装置106は、レーザ光などを利用して、光ディスク24に記録されたデータの読み取りを行う。光ディスク24は、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク24には、DVD(Digital Versatile Disc)、DVD−RAM、CD−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(ReWritable)などがある。
機器接続インタフェース107は、コンピュータ100に周辺機器を接続するための通信インタフェースである。例えば機器接続インタフェース107には、メモリ装置25やメモリリーダライタ26を接続することができる。メモリ装置25は、機器接続インタフェース107との通信機能を搭載した記録媒体である。メモリリーダライタ26は、メモリカード27へのデータの書き込み、またはメモリカード27からのデータの読み出しを行う装置である。メモリカード27は、カード型の記録媒体である。
ネットワークインタフェース108は、ネットワーク20に接続されている。ネットワークインタフェース108は、ネットワーク20を介して、他のコンピュータまたは通信機器との間でデータの送受信を行う。
以上のようなハードウェア構成によって、第2の実施の形態の処理機能を実現することができる。なお、第1の実施の形態に示したキャッシュ装置10も、図2に示したコンピュータ100と同様のハードウェアにより実現することができる。
コンピュータ100は、例えばコンピュータ読み取り可能な記録媒体に記録されたプログラムを実行することにより、第2の実施の形態の処理機能を実現する。コンピュータ100に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。例えば、コンピュータ100に実行させるプログラムをHDD103に格納しておくことができる。プロセッサ101は、HDD103内のプログラムの少なくとも一部をメモリ102にロードし、プログラムを実行する。またコンピュータ100に実行させるプログラムを、光ディスク24、メモリ装置25、メモリカード27などの可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、例えばプロセッサ101からの制御により、HDD103にインストールされた後、実行可能となる。またプロセッサ101が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
次に、コンピュータ100が、HDD103内のページ単位のデータをメモリ102へのキャッシュするために用いる機能について説明する。
図3は、キャッシュ機能を示すブロック図である。図3に示すように、HDD103には、複数のページ31が格納されている。HDD103に対しては、ページ単位でリードまたはライトのアクセスが行われる。
メモリ102には、キャッシュ領域32が設けられている。キャッシュ領域32には、HDD103に格納された複数のページ31のうちの一部のページが格納される。またメモリ102には、アドレス変換表33、アクセスシーケンス34、および優先順情報35が格納されている。アドレス変換表33は、ページのページ番号と、そのページが格納されたHDD103内の記憶領域との対応関係を示す情報である。アクセスシーケンス34は、過去のページアクセスに基づいて生成された、ページのアクセス順を示す情報である。優先順情報35は、各ページが読み出されたときに、キャッシュ領域から追い出す(削除する)ページの優先順を示す情報である。
さらにコンピュータ100は、ページをキャッシュするのに用いる機能として、アクセスシーケンス記録部110、遷移行列生成部120、期待値計算部130、優先順決定部140、およびアクセス部150を有する。
アクセスシーケンス記録部110は、ページが読み出された順番を、アクセスシーケンス34としてメモリ102に記録する。例えばアクセスシーケンス記録部110は、アクセス部150によりページがHDD103から読み出されるごとに、読み出されたページのページ番号を、アクセスシーケンス34の最後尾に追加する。
遷移行列生成部120は、アクセスシーケンス34に基づいて、遷移行列を生成する。遷移行列は、マルコフ連鎖に基づく遷移確率を表した行列である。
期待値計算部130は、遷移行列に基づいて、マルコフ連鎖における状態(ページアクセス後の状態)ごとに、その状態から別の各状態となるまでの遷移回数(実行されたアクセス回数)の期待値を計算する。期待値が大きい状態ほど、その状態に遷移するまでのページアクセス回数が多くなる可能性が高い。なお、ある状態から別の状態となるまでの遷移回数は、別の状態に対応するページがキャッシュ領域32に保持されているとき、そのページが次にアクセスされるまでキャッシュ領域を占有し続ける期間である。その占有期間は、アクセスシーケンス34上の長さで表される。そこで、ある状態から別の状態となるまでのアクセスシーケンス34上での長さを、占有シーケンス長と呼ぶこととする。以降、単に期待値と呼んだ場合も、占有シーケンス長の期待値を指すものとする。
優先順決定部140は、状態ごとに、その状態から別の状態となるまでの、占有シーケンス長の期待値に基づいて、その状態となったときにキャッシュから破棄するページの優先順を決定する。例えば占有シーケンス長の期待値が高いページをキャッシュ領域32に残した場合、そのページが長い期間使用されずにキャッシュ領域32の一部を占有し、キャッシュ領域32の利用効率(キャッシュヒット率)が低下してしまう。そこで優先順決定部140は、占有シーケンス長の期待値が高いほど破棄する優先順が高くなるように、優先順を決定する。優先順決定部140は、決定した優先順を、優先順情報35としてメモリ102に格納する。
アクセス部150は、アクセス要求に応答してメモリ102のキャッシュ領域32、またはHDD103にアクセスし、ページ単位でデータを取得する。例えばアクセス部150は、アクセス要求で指定されたページがキャッシュ領域32にある場合、そのページをキャッシュ領域32から取得する。またアクセス部150は、アクセス要求で指定されたページがキャッシュ領域32内にない場合、そのページをHDD103から取得する。またアクセス部150は、HDD103からページを取得した場合、そのページをキャッシュ領域32に格納する。
またアクセス部150は、キャッシュ領域32内に空き領域がなくなると、キャッシュ領域32に格納されたページをキャッシュ領域32から破棄し、空き領域を確保する。例えばアクセス部150は、キャッシュ領域32に格納されているページのうち、最後にアクセスしたページに対する破棄の優先順が最も高いページを破棄する。なおページの破棄とは、そのページが格納されている領域の属性を、使用中から空きに変更する処理である。
なお、図3に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。なおメモリ102は、図1に示した第1の実施の形態の第1の記憶装置11の一例である。HDD103は、図1に示した第1の実施の形態の第2の記憶装置12の一例である。遷移行列生成部120と期待値計算部130とを合わせた機能は、図1に示した第1の実施の形態の計算手段13の一例である。優先順決定部140は、図1に示した第1の実施の形態の決定手段14の一例である。アクセス部150は、図1に示した第1の実施の形態のアクセス手段15の一例である。
次に、メモリ102に予め格納されるアドレス変換表33について説明する。
図4は、アドレス変換表の一例を示す図である。アドレス変換表33には、ページ番号に対応付けて、HDD上のアドレスが設定されている。アクセス部150は、ページに対してアクセスする場合、アドレス変換表33を参照して、HDD103内のページとページ番号との対応関係を把握できる。例えばアクセス部150は、アプリケーションプログラムを実行するプロセスなどから、ページ番号を指定したアクセス要求を受け付けると、アドレス変換表33を参照し、指定されたページ番号に対応するHDD103のアドレスを取得する。そしてアクセス部150は、取得したアドレスに格納されたページを、HDD103から読み出す。
ページ単位でのアクセスが行われると、アクセスシーケンス記録部110によって、アクセスシーケンス34が作成される。
図5は、アクセスシーケンスの作成状況を示す図である。図5に示すように、アクセスシーケンス34は、アクセスされたページのページ番号がアクセスされた順に並べられた、期待値順位表である。
アクセス部150は、アクセス要求に応じて、メモリ102のキャッシュ領域32内、またはHDD103内のページにアクセスする。図5の例では、HDD103からページ番号「2」のページがアクセスされ、メモリ102に読み込まれている。アクセス部150は、例えばアクセス要求で指定されたページの全部または一部を、アクセス要求に対応する応答として出力する。
アクセスシーケンス記録部110は、アクセス部150のアクセス処理を監視し、アクセス部150によってアクセスされたページのページ番号を取得する。そしてアクセスシーケンス記録部110は、取得したページ番号を、アクセスシーケンス34の最後尾に追加する。
このように、ページへのアクセスがあるごとに、アクセスシーケンス34が更新される。なお、図5に示したアクセス例では、HDD103に格納されたページにアクセスしているが、アクセス対象のページがメモリ102のキャッシュ領域32内にある場合、キャッシュ領域内のページに対してアクセスが行われる。キャッシュ領域32内のページにアクセスされた場合であっても、アクセスシーケンス記録部110は、アクセスシーケンス34を更新する。
このようにして生成されたアクセスシーケンス34に基づいて、マルコフ連鎖を示す連鎖行列を作成し、さらに連鎖行列を用いて、キャッシュ領域32から破棄するページの優先順を、適切に決定することができる。アクセス部150は、優先順に従って、キャッシュ領域32から破棄するページを決定する。なおページの内容が更新されていれば、アクセス部150は、更新後のページをHDD103に書き込む。
図6は、優先順決定処理の手順を示すフローチャートである。優先順決定処理は、例えば所定の期間間隔で定期的に実行される。またキャッシュ領域32に対するキャッシュヒット率が所定値以下になったときに、優先順決定処理を実行してもよい。
[ステップS101]遷移行列生成部120は、アクセスシーケンス34に基づいて遷移行列を作成する。遷移行列生成部120は、生成した遷移行列を期待値計算部130に送信する。
[ステップS102]期待値計算部130は、遷移行列に基づいて、占有シーケンス長の期待値を計算する。期待値は、HDD103内の複数のページそれぞれを直近のアクセス対象のページとしたときに、直近のアクセス対象のページと、そのページ以外のページとの対ごとに求められる。期待値計算部130は、計算した期待値を優先順決定部140に送信する。なお、期待値計算処理の詳細は後述する(図8参照)。
[ステップS103]優先順決定部140は、HDD103内の未選択のページの1つを選択する。
[ステップS104]優先順決定部140は、選択したページを直近のアクセス対象ページとした場合の、HDD103内の各ページの占有シーケンス長の期待値に基づいて、キャッシュ領域32から破棄するページの優先順を決定する。
[ステップS105]優先順決定部140は、決定した優先順をメモリ102に格納する。
[ステップS106]優先順決定部140は、未選択のページがあるか否かを判断する。未選択のページがあれば、処理がステップS103に進められる。すべてのページが選択済みであれば、優先順決定処理が終了する。
このようにしてキャッシュ領域32からのページの破棄の優先順を決定することができる。
次に、マルコフ連鎖の遷移行列の生成方法について詳細に説明する。
遷移行列生成部120は、アクセスシーケンス34に基づいて、ページごとに、そのページからの遷移先の各ページへ遷移する確率を計算する。例えば遷移行列生成部120は、特定のページを遷移元として、そのページの次に読み込まれる各ページの、読み込まれる確率を計算する。その場合、遷移行列生成部120は、まずアクセスシーケンス34から、遷移元のページのページ番号を検索する。次に遷移行列生成部120は、検索でヒットした位置の次のページ番号を抽出する。このときのページ番号の抽出回数を、総遷移回数とする。さらに遷移行列生成部120は、ページ番号ごとに、そのページ番号が抽出された回数を、総遷移回数で除算する。除算結果が、遷移元のページから各ページへの遷移確率となる。このような遷移確率の計算が、HDD103内の各ページを遷移元として、ページごとに行われる。
そして遷移行列生成部120は、各ページ間の遷移確率に基づいて、マルコフ連鎖の遷移行列を生成する。
図7は、マルコフ連鎖を説明する図である。ここでマルコフ連鎖により、ある状態i(iは1以上の整数)の次に状態j(jは1以上の整数)に遷移する確率を、確率aijとする。例えば、ページAが読み込まれた状態を状態iとし、他のページBが読み込まれた状態を状態jとし、ページAが読み込まれた状態で、次にページBが読み込まれる確率が、確率aijである。
マルコフ連鎖は、状態遷移図41で表すことができる。状態遷移図41では、状態を示すノードが、アーク(矢印)で接続されている。ノード内には、その状態に対応するページのページ番号が示されている。またアークの横には、そのアークで遷移する確率が示されている。図7の例では、ページ番号「1」のページから、続けてページ番号「1」のページに遷移する確率は「1/3」である。ページ番号「1」のページから、ページ番号「2」のページに遷移する確率は「1/6」である。ページ番号「1」のページから、ページ番号「3」のページに遷移する確率は「1/2」である。
遷移行列生成部120は、状態遷移図41に示されるページ間での遷移する確率を表す遷移行列Aを生成する。3つの状態を取り得る場合、遷移行列Aは、3行3列の正方行列となる。遷移行列Aのi行,j列の成分が、状態iから状態jに遷移する確率aijである。図7の例では、第1行、第2列の成分「1/6」は、状態「1」から状態「2」に遷移する確率を表している。遷移行列Aにおける行ごとの和は、いずれの行についても「1」となる。
なお、上記の説明では、アクセスシーケンス34に関する統計的な解析によって、遷移行列を生成しているが、遷移確率が既知であれば、その遷移確率を用いて遷移行列を生成することができる。例えばページ間の遷移状況が、グラフのランダムウォークなどで決まっていれば、そのグラフから遷移確率を求め、遷移行列を生成することもできる。なおランダムウォークとは、次の遷移先の状態が、確率的に無作為(ランダム)に決定されることである。
ここで、時刻tにおいて各状態となっている確率を表す行ベクトルPtを、「Pt=Pt-1A」と定義することができる。ページ数が3であれば取り得る状態も3つであり、その場合、行ベクトルPtには、ページに対応付けられた3つの成分が含まれる。3つの成分それぞれには、時刻tにおいて、対応するページが読み込まれた状態をなっている確率が設定される。Pt-1は、時刻tの状態に遷移する直前(時刻t−1)において、各状態となっている確率を表す行ベクトルである。このように、ある時点の状態を示す行ベクトルに右側から遷移行列Aを乗算すれば、1回だけ遷移した後に、各状態になっている確率が得られる。
期待値計算部130は、遷移行列生成部120が生成した遷移行列Aに基づいて、占有シーケンス長の期待値を計算する。
図8は、期待値計算手順の一例を示す図である。
[ステップS111]期待値計算部130は、HDD103に格納されているページのうち、未選択のページを1つ選択する。ここで、選択したページのページ番号をk(kは1以上の整数)とする。
以下ステップS112〜S114において、他のページにアクセスしてから、選択したページがアクセスされるまでの、占有シーケンス長の期待値が求められる。
[ステップS112]期待値計算部130は、遷移行列Aの第k列のすべての成分を「0」に変更した行列Bを生成する。
[ステップS113]期待値計算部130は、(「I−B」の逆行列)×(すべて1の列ベクトル)を計算する。ここでIは、単位行列である。この計算結果が、HDD103内の各ページがアクセスされてから、ページ番号「k」のページがアクセスされるまでの、占有シーケンス長の期待値である。
[ステップS114]期待値計算部130は、HDD103に格納されているページのうち、未選択のページがあるか否かを判断する。未選択のページがあれば、処理がステップS111に進められる。すべてのページについて期待値を計算済みであれば、処理がステップS115に進められる。
[ステップS115]期待値計算部130は、算出したすべての期待値を出力する。出力された期待値は、優先順決定部140に渡される。
このようにして、占有シーケンス長の期待値が計算される。
図9は、期待値算出例を示す図である。図9の例では、状態遷移図42に示すようなマルコフ連鎖となっている。すなわち、5つのページがあり、ページ番号「1」のページにアクセスされた場合、確率「1」で、次にページ番号「2」のページにアクセスされる。ページ番号「2」のページにアクセスされた場合、確率「1」で、次にページ番号「3」のページにアクセスされる。ページ番号「3」のページにアクセスされた場合、確率「1」で、次にページ番号「4」のページにアクセスされる。ページ番号「4」のページにアクセスされた場合、確率「1」で、次にページ番号「5」のページにアクセスされる。ページ番号「5」のページにアクセスされた場合、確率「1」で、次にページ番号「1」のページにアクセスされる。状態遷移図42に示すようなマルコフ連鎖を遷移行列Aで表すと、第1行第2列、第2行第3列、第3行第4列、第4行第5列、第5行第1列の成分が「1」となり、他の成分が「0」となる。
ここで、ページ番号「3」にアクセスされるまでの、占有シーケンス長の期待値を求めるものとする。この場合、期待値計算部130は、遷移行列Aの第3列のすべての成分を0にした行列Bを生成する。次に期待値計算部130は、5行5列の単位行列Iから行列Bを減算し、減算結果の逆行列を生成する。さらに期待値計算部130は、生成した逆行列に、右側から5つの成分のすべてが「1」の列ベクトルを乗算する。図9の例では、乗算結果として、列ベクトル(2,1,5,4,3)が得られる。
得られた列ベクトルの第1〜第5の成分は、それぞれ、ページ番号「1」〜「5」の各ページがアクセスされたときに、その後、ページ番号「3」のページにアクセスされるまでの占有シーケンス長の期待値である。例えば、ページ番号「1」のページがアクセスされたときに、その後、ページ番号「3」のページにアクセスされるまでの占有シーケンス長の期待値は「2」である。
なお、行列を用いずに期待値を計算することも可能である。
図10は、方程式による期待値の計算例を示す図である。図10に示すマルコフ連鎖の状態遷移図43には、2つの状態がある。この状態遷移図43によれば、HDD103内に2つのページがある。そして、ページ番号「1」のページにアクセスされた場合、確率「1/3」で、再度、次にページ番号「1」のページにアクセスされ、確率「2/3」で、次にページ番号「2」のページにアクセスされる。ページ番号「2」のページにアクセスされた場合、確率「1」で、次にページ番号「1」のページにアクセスされる。
このようなマルコフ連鎖のとき、ページ番号「1」のページがアクセスされた後に、ページ番号「2」のページにアクセスされるまでの、占有シーケンス長の期待値xを計算するものとする。
まず、方程式を用いて期待値を計算する。この場合、「x=(1/3)×(x+1)+(2/3)×1」という方程式で表される。この方程式をxについて解くと、x=1.5となる。すなわち、ページ番号「1」のページがアクセスされた後に、ページ番号「2」のページにアクセスされるまでの、占有シーケンス長の期待値として「1.5」が得られる。
ここで、同じマルコフ連鎖における期待値について行列を用いて計算する場合、まず遷移行列Aが生成される。この遷移行列Aは、第1項第1列が「1/3」、第1項第2列が「2/3」、第2項第1列が「1」、第2項第2列が「0」である。さらに、遷移行列Aの第2列の成分を「0」にした行列Bが生成される。そして、I−Bの逆行列が計算される。計算された逆行列に右から、すべてが「1」の列ベクトルが乗算される。その結果、列ベクトル(1.5,2.5)が得られる。得られた列ベクトルの第1の成分は、ページ番号「1」のページがアクセスされた後に、ページ番号「2」のページにアクセスされるまでの、占有シーケンス長の期待値が「1.5」であることを示している。得られた列ベクトルの第2の成分は、ページ番号「2」のページがアクセスされた後に、再度ページ番号「2」のページにアクセスされるまでの、占有シーケンス長の期待値が「2.5」であることを示している。
以上のように、行列または方程式を用いて、占有シーケンス長の期待値を計算できる。すると、優先順決定部140により、ページごとに、そのページにアクセスされたときに、キャッシュ領域32から破棄するページの優先順が決定される。例えば期待値が大きいページほど、破棄する優先順が高くなる。優先順決定部140は、決定した優先順を示す優先順情報35を生成し、メモリ102に格納する。
図11は、優先順情報の一例を示す図である。優先順情報35には、HDD103内のページごとの期待値順位表35a,35b,35c,・・・が含まれている。例えば期待値順位表35aは、ページ番号「1」のページに対応付けられている。期待値順位表35aは、ページ番号「1」のページがアクセスされた後に、各ページにアクセスされるまでの占有シーケンスの期待値が高い順に、各ページのページ番号を並べたものである。期待値順位表35a内の各ページ番号には、そのページ番号で示されるページに関する占有シーケンスの期待値が付与されている。期待値順位表35aにおいて下位に設定されているページほど、ページ番号「1」のページにアクセスされた際に、破棄する優先度が高くなる。
また図11の例では、期待値順位表35a,35b,35c,・・・には、期待値が高い方から所定数のページに対応するページ番号が設定されている。期待値順位表35a,35b,35c,・・・に登録されていないページは、最優先で破棄対象となる。期待値順位表35a,35b,35c,・・・に登録するページ番号の個数は、期待値の数値に応じて変更することができる。例えば、期待値が所定値以下のページのページ番号について、期待値順位表35a,35b,35c,・・・に登録するようにしてもよい。
このような優先順情報35を予め作成しておくことで、アクセス部150がページにアクセスする際に、キャッシュ領域から適切なページを選択して、破棄することができる。
図12は、ページのアクセス処理の手順を示すフローチャートの一例である。
[ステップS121]アクセス部150は、アプリケーションプログラムを実行するプロセスなどからのアクセス要求を取得する。ここで、アクセス要求で指定されたアクセス対象のページを「ページP」とする。
[ステップS122]アクセス部150は、ページPがキャッシュ領域32にあるか否かを判断する。ページPがキャッシュ領域にある場合、処理がステップS127に進められる。ページPがキャッシュ領域32にない場合、処理がステップS123に進められる。
[ステップS123]アクセス部150は、アドレス変換表33を参照し、ページPのディスクのアドレスaを取得する。
[ステップS124]アクセス部150は、HDD103から、取得したアドレスaの位置のページを読み出し、キャッシュ領域32に格納する。
[ステップS125]アクセス部150は、キャッシュ領域32の空き容量が所定値以下か否かを判断する。空き容量が所定値以下であれば、処理がステップS126に進められる。空き容量が所定値より多ければ、処理がステップS127に進められる。
[ステップS126]アクセス部150は、ページPに対応する期待値順位表を参照し、期待値順位表に登録されていないページが、キャッシュ領域32にある場合、該当するページの1つを削除対象とする。またアクセス部150は、期待値順位表に登録されていないページが、キャッシュ領域32にない場合、期待値順位表の登録順が下位のページから順に、そのページがキャッシュ領域32に格納されているかどうかを判断する。次にアクセス部150は、キャッシュ領域32に格納されているページのうち、期待値順位表の登録順が最も下位(期待値が最も大きい)ページを削除対象とする。そしてアクセス部150は、削除対象としたページを、キャッシュ領域32から削除する。なお削除対象のページの内容が更新されている場合、そのページをHDD103に書き込む。
[ステップS127]アクセス部150は、ページPに対する処理を実行する。例えばアクセス部150は、アクセス要求が、ページP内の一部のデータのリード要求であれば、そのデータをアクセス要求の応答として出力する。またアクセス部150は、アクセス要求が、ページP内へのデータのライト要求であれば、キャッシュ領域32内のページPにデータを書き込む。
このようにして、最後にアクセスされたページに基づいて、今後アクセスされるページが推定可能なときに、適切なページをキャッシュ領域から追い出し、キャッシュヒット率を向上させることができる。
以下に、他のキャッシュアルゴリズムに対する優位性について説明する。
図13は、LRUとのキャッシュアルゴリズムの違いを説明する図である。図13に示すマルコフ連鎖の状態遷移図44には8つの状態がある。すなわちHDD103に8つのページが格納されている場合を想定している。ここで、8つのページをページ番号順に並べ、ページ番号「8」のページの次を、ページ番号「1」のページとする。このとき、各ページがアクセスされたとき、ページ番号順で1つ後のページが次にアクセスされる確率が「a」である。またページ番号で3つ前のページが次にアクセスされる確率が「b」である。さらにページ番号で2つ前のページに次にアクセスされる確率が「c」である。またaはbより大きく、bはcより大きい(a≫b≫c)ものとする。そして、キャッシュ領域32には、ページ番号「6」、「7」、「8」それぞれのページが格納されているものとする。このような状況下で、ページ番号「1」のページがアクセスされ、HDD103からそのページが読み込まれたものとする。
このとき第2の実施の形態に示したキャッシュアルゴリズムを適用せずに、LRUによって破棄するページを決定した場合、ページ番号「6」、「7」、「8」の3つのページのうち、アクセス時期が最も古いページが破棄されることとなる。その結果、ページ番号「6」のページが、キャッシュ領域32から破棄される。しかし、状態遷移図44によれば、ページ番号「1」のページがアクセスされたとき、次に、確率「b」でページ番号「6」のページにアクセスされる。一方、ページ番号「1」のページがアクセスされたとき、次にページ番号「7」のページにアクセスされる確率は「c」である。またページ番号「1」のページがアクセスされたとき、次にページ番号「8」のページにアクセスされる確率は「0」である。「b≫c」であり、ページ番号「7」、「8」のページより優先してページ番号「6」のページが破棄されるのは不適切である。
次に、図13に示した例において、第2の実施の形態に示すキャッシュアルゴリズムを適用した場合を考える。第2の実施の形態では、状態遷移図44に示されたような、遷移確率を考慮して破棄するページが決定される。例えばページ番号「6」のページとページ番号「7」のページとの期待値を比較する。ページ番号「6」のページは確率「b」で次にアクセスされ、ページ番号「7」のページは確率「c」で次にアクセスされる。ここで「b≫c」である。このことからページ番号「7」のページの次回のアクセスまでは、他のページへのアクセスが複数回行われる可能性が高い。そのためページ番号「7」のページの方が、ページ番号「6」のページより期待値が高くなる。その結果、ページ番号「7」のページの方が、ページ番号「6」のページよりも優先して破棄される。なおページ番号「7」のページよりもページ番号「8」のページの方が、期待値が高ければ、ページ番号「8」のページが破棄されることとなる。
このように、第2の実施の形態に係るキャッシュアルゴリズムを適用すれば、マルコフ連鎖による遷移確率を有効に利用して適切なページを破棄することができ、LRUよりもキャッシュ領域32の利用効率を向上させることができる。しかも、第2の実施の形態では、現在アクセスしたページの直後にアクセスするページの遷移確率のみではなく、以後、複数回のアクセスの遷移確率から占有シーケンス長の期待値を計算し、期待値に基づいて破棄するページを決定している。そのため、さらにキャッシュ領域32の利用効率を向上させることができる。
図14は、直後にアクセスするページの遷移確率のみを考慮したキャッシュアルゴリズムとの違いを説明する図である。図14に示すマルコフ連鎖の状態遷移図45には7つの状態がある。すなわちHDD103に7つのページが格納されている場合を想定している。ページ番号「1」のページがアクセスされると、次に、ページ番号「2」〜「6」の5つのページのうちの1つのページに、同じ確率「0.2」でアクセスされる。ページ番号「2」〜「6」のいずれかのページがアクセスされると、確率「1」で、次にページ番号「7」のページがアクセスされる。ページ番号「7」のページがアクセスされると、確率「1」で、次にページ番号「1」のページがアクセスされる。そしてキャッシュ領域32には、ページ番号「7」、「2」それぞれのページが格納されているものとする。このような状況下で、ページ番号「1」のページがアクセスされ、HDD103からそのページが読み込まれたものとする。
まず、直後にアクセスするページの遷移確率のみを考慮したキャッシュアルゴリズムによって破棄するデータを決定する場合について説明する。この場合、例えば、次にアクセスする確率が最小のページが破棄される。図14の例では、ページ番号「2」のページは、確率「0.2」で次にアクセスされる可能性があるが、ページ番号「7」のページは次にアクセスされる可能性はない。そこでページ番号「7」のページが破棄されることとなる。しかし、ページ番号「7」のページは、2回先のアクセスにおいて100%の確率でアクセスされる。そうすると、ページ番号「1」のページにアクセスした時点でページ番号「7」のページを破棄してしまうと、2回先(次の次)のアクセスではキャッシュミスヒットとなってしまい、処理効率が向上しない。
次に、図14に示した例において、第2の実施の形態に示すキャッシュアルゴリズムを適用した場合を考える。第2の実施の形態では、複数回のアクセスの遷移確率に基づいて、各ページについて、占有シーケンス長の期待値が計算される。
ページ番号「2」〜「6」のページの期待値は、いずれも級数「1×(1/5)+4×(4/5)×(1/5)+7×(4/5)×(4/5)×(1/5)+...」で表される。この級数を計算すると「13」となる。従ってページ番号「2」〜「6」のページの期待値は「13」となる。ページ番号「7」は、2回先に常にアクセスされる。そのため、ページ番号「7」のページの期待値は「2」である。その結果、図14の例では、ページ番号「2」のページが破棄されることとなる。ページ番号「7」のページが破棄されないことで、2回先のアクセスでは常にキャッシュヒットすることとなり、処理効率が向上する。
しかも、第2の実施の形態では、占有シーケンス長の基準値を予め計算し、優先順情報35を作成しておく。これにより、ページへのアクセス時に基準値の算出処理をせずにすみ、破棄するページを効率的に決定できる。特に、逆行列の計算は負荷が大きく、ページ数をn(nは1以上の整数)としたとき、nの4乗のオーダ(O(n4))の計算となる。そのため基準値を予め計算しておくことで、ページへのアクセスが行われるごとに逆行列の計算を伴う基準値の算出を行う場合に比べ、破棄するページの決定を、極めて効率的に行うことができる。
〔第3の実施の形態〕
次に第3の実施の形態について説明する。第3の実施の形態は、高階マルコフ連鎖を用いて、キャッシュ領域から破棄するページを決定するものである。以下、第3の実施の形態における、第2の実施の形態との相違点について説明する。なお、第3の実施の形態を実現するためのハードウェアやキャッシュ機能の構成は、図2,図3に示した第2の実施の形態の構成と同様である。
第2の実施の形態では1階マルコフ連鎖を利用している。1階マルコフ連鎖では、1度のページのアクセスが、1つの状態に対応付けられる。一方、高階マルコフ連鎖では、連続する複数回のページアクセスを組とし、ページアクセスの組が1つの状態に対応付けられる。例えば、ページ番号「1」、「3」、「4」の各ページに順番にアクセスされた場合、高階マルコフ連鎖では、ページ列{1,3,4}で1つの状態となる。次にページ番号「7」にアクセスされた場合、ページ列{3,4,7}という別の状態に遷移する。
なお高階マルコフ連鎖において、第2の実施の形態と同様に、状態ごとの占有シーケンス長の期待値を求めると、連続してアクセスされたページ列ごとの期待値が求まる。このページ列ごとの期待値を用いて、個々のページごとの占有シーケンス長の期待値を求めることができる。
図15は、第3の実施の形態における占有シーケンス長の期待値の計算例を示す図である。ページiにアクセスした後、ページjにアクセスするまでの占有シーケンス長の期待値を求めるものとする。ページiにアクセスした時点での状態をI=(i'',i',i)とする。ページjに辿り着く状態をJ=(j'',j',j)とする。ページjに複数の経路で辿り着くことができれば、ページjに辿り着く状態J=(j'',j',j)は複数存在する。
このとき期待値計算部130は、ページiからページjに、ページiを経由せずに辿り着く確率pを、状態Jごとに求める。その確率pは、例えば、ページiからページjに辿り着く経路(遷移)それぞれ遷移確率を乗算することで求めることができる。また期待値計算部130は、状態Jごとに、状態Iから状態Jまでの占有シーケンス長の期待値を、第2の実施の形態と同様の手法で計算する。そして期待値計算部130は、状態Jごとに、その状態Jの確率と期待値とを乗算し、複数の状態Jの乗算結果を合計する。期待値計算部130は、得られた合計値を、ページjに関する、占有シーケンス長の期待値とする。
例えば図15の例では、3つの経路でページjに辿り着くことができる。1つ目の経路に対応する状態Jの確率は「p_1」、期待値は「e_1」である。2つ目の経路に対応する状態Jの確率は「p_2」、期待値は「e_2」である。3つ目の経路に対応する状態Jの確率は「p_3」、期待値は「e_3」である。この場合、ページjの期待値は、「p_1×e_1+p_2×e_2+p_3×e_3」となる。
このようにして、高階マルコフ連鎖においても、ページごとの期待値を計算できる。そして期待値が大きいページを優先的にキャッシュ領域32から破棄することで、効率的なページアクセスが可能となる。第3の実施の形態では高階マルコフ連鎖を用いるため、ページアクセスの推移をより高度に解析し、破棄するページをより適切に判断することが可能となる。
〔第4の実施の形態〕
次に第4の実施の形態について説明する。第4の実施の形態は、占有シーケンス長の期待値を、近似値で求め、計算負荷を軽減するものである。
HDD103に格納されるページ数が多くなると、期待値を求めるために行われる逆行列の算出などの計算量が膨大となる。しかも第3の実施の形態のように高階マルコフ連鎖を利用した場合、計算量はさらに増加する。そこで、第4の実施の形態では、期待値を近似値で求め、計算量を削減する。
I−Bの逆行列は、「(I−B)-1=I+B+B2+B3+・・・」と表すことができる。そこで期待値計算部130は、例えば「(I−B)-1=I+B+B2」と近似して、期待値を計算する。
ここで、期待値の計算では、「I+B+B2」に対して、右側から、すべての成分が1の列ベクトルが乗算される。このような計算では、行列Bのサイズが巨大であっても、内容が疎(大多数の成分が「0」)であれば、行列サイズ(行または列の数)に応じた線形時間で期待値を計算することが可能である。
〔その他の実施の形態〕
第2〜第4の実施の形態では、HDD103内のデータをメモリ102にキャッシュする例であるが、他の記憶装置の組み合わせに対しても、上記各実施の形態に示したキャッシュアルゴリズムを適用可能である。例えば、アクセス速度の異なる複数の半導体メモリを有するシステムにおいて、高速にアクセス可能な半導体メモリをキャッシュとして使用する場合にも、各実施の形態に示したキャッシュアルゴリズムを適用できる。さらにネットワークを介して接続された他のコンピュータから取得したデータを、キャッシュする場合にも、各実施の形態に示したキャッシュアルゴリズムを適用できる。またHDD103に代えてSSD(Solid State Drive)を用いることもできる。
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の2以上の構成(特徴)を組み合わせたものであってもよい。
10 キャッシュ装置
11 第1の記憶装置
11a キャッシュ領域
11b 状態遷移図
11c 期待値表
12 第2の記憶装置
13 計算手段
14 決定手段
15 アクセス手段

Claims (10)

  1. アクセス可能な複数の単位データの一部を記憶装置内のキャッシュ領域に保持する処理をコンピュータに実行させるコンピュータプログラムにおいて、
    前記コンピュータに、
    前記複数の単位データそれぞれがアクセスされたときに、次にアクセスされる可能性のある単位データについての、次にアクセスされる確率に基づいて、前記複数の単位データのうちの2つの単位データからなる組それぞれについて、一方の単位データがアクセスされた後に他方の単位データがアクセスされるまでのアクセス回数として期待される値を計算し、
    単位データへのアクセス要求に応じて、前記キャッシュ領域外から該単位データが読み出された場合、該単位データがアクセスされた後に前記複数の単位データそれぞれがアクセスされるまでのアクセス回数として期待される値に基づいて、前記キャッシュ領域から破棄する単位データを決定する、
    処理を実行させるコンピュータプログラム。
  2. 期待される値の計算では、前記複数の単位データそれぞれがアクセスされたときに、次にアクセスされる可能性のある単位データについての、次にアクセスされる確率に基づいて、遷移行列を生成し、前記遷移行列を用いた行列計算により、期待される値を算出することを特徴とする請求項1記載のコンピュータプログラム。
  3. 破棄する単位データの決定では、期待される値が最も大きい単位データを破棄するものと決定することを特徴とする請求項1または2記載のコンピュータプログラム。
  4. 前記コンピュータに、さらに、
    前記複数の単位データそれぞれについての、他の単位データがアクセスされた後にアクセスされるまでのアクセス回数の期待値に基づいて、前記複数の単位データそれぞれについて、該単位データが前記キャッシュ領域外から読み出されたときの他の単位データの破棄の優先順を決定し、決定した優先順を前記記憶装置に格納する処理を実行させ、
    破棄する単位データの決定では、前記キャッシュ領域外から単位データが読み出されたとき、該単位データが読み出されたときの破棄の優先順に基づいて、破棄する単位データを決定する、
    ことを特徴とする請求項1乃至3のいずれかに記載のコンピュータプログラム。
  5. 優先順の格納では、期待される値が小さい方から所定数の単位データの識別情報を、破棄の優先順に沿って並べ、並べられた識別情報を格納し、
    破棄する単位データの決定では、前記キャッシュ領域外から単位データが読み出されたとき、該単位データが読み出されたときの破棄の優先順が示されていない単位ページが前記キャッシュ領域にあれば、該単位データを破棄対象に決定し、該単位ページがなければ、前記キャッシュ領域に保持された単位ページのうち、優先順が最も高い単位データを破棄対象に決定する、
    ことを特徴とする請求項4記載のコンピュータプログラム。
  6. 期待される値の計算では、単位データへのアクセスを状態遷移としたマルコフ連鎖における遷移確率に基づいて期待される値を計算することを特徴とする請求項1乃至5のいずれかに記載のコンピュータプログラム。
  7. 期待される値の計算では、所定数の単位データへの複数回のアクセスを状態遷移とした高階のマルコフ連鎖における遷移確率に基づいて期待される値を計算することを特徴とする請求項6記載のコンピュータプログラム。
  8. 期待される値の計算では、期待される値を近似的に求めることを特徴とする請求項1乃至7のいずれかに記載のコンピュータプログラム。
  9. アクセス可能な複数の単位データの一部を記憶装置内のキャッシュ領域に保持する処理をコンピュータで実行するキャッシュ方法において、
    前記コンピュータが、
    前記複数の単位データそれぞれがアクセスされたときに、次にアクセスされる可能性のある単位データについての、次にアクセスされる確率に基づいて、前記複数の単位データのうちの2つの単位データからなる組それぞれについて、一方の単位データがアクセスされた後に他方の単位データがアクセスされるまでのアクセス回数として期待される値を計算し、
    単位データへのアクセス要求に応じて、前記キャッシュ領域外から該単位データが読み出された場合、該単位データがアクセスされた後に前記複数の単位データそれぞれがアクセスされるまでのアクセス回数として期待される値に基づいて、前記キャッシュ領域から破棄する単位データを決定する、
    キャッシュ方法。
  10. アクセス可能な複数の単位データの一部を記憶装置内のキャッシュ領域に保持するキャッシュ装置において、
    前記複数の単位データそれぞれがアクセスされたときに、次にアクセスされる可能性のある単位データについての、次にアクセスされる確率に基づいて、前記複数の単位データのうちの2つの単位データからなる組それぞれについて、一方の単位データがアクセスされた後に他方の単位データがアクセスされるまでのアクセス回数として期待される値を計算する計算手段と、
    単位データへのアクセス要求に応じて、前記キャッシュ領域外から該単位データが読み出された場合、該単位データがアクセスされた後に前記複数の単位データそれぞれがアクセスされるまでのアクセス回数として期待される値に基づいて、前記キャッシュ領域から破棄する単位データを決定する決定手段と、
    を有するキャッシュ装置。
JP2013212613A 2013-10-10 2013-10-10 キャッシュ方法、キャッシュ装置、およびコンピュータプログラム Expired - Fee Related JP6131818B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2013212613A JP6131818B2 (ja) 2013-10-10 2013-10-10 キャッシュ方法、キャッシュ装置、およびコンピュータプログラム
US14/494,217 US9824028B2 (en) 2013-10-10 2014-09-23 Cache method and cache apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013212613A JP6131818B2 (ja) 2013-10-10 2013-10-10 キャッシュ方法、キャッシュ装置、およびコンピュータプログラム

Publications (2)

Publication Number Publication Date
JP2015075978A JP2015075978A (ja) 2015-04-20
JP6131818B2 true JP6131818B2 (ja) 2017-05-24

Family

ID=52810655

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013212613A Expired - Fee Related JP6131818B2 (ja) 2013-10-10 2013-10-10 キャッシュ方法、キャッシュ装置、およびコンピュータプログラム

Country Status (2)

Country Link
US (1) US9824028B2 (ja)
JP (1) JP6131818B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3101549B1 (en) * 2015-06-04 2018-09-26 Tata Consultancy Services Limited Estimating cache size for cache routers in information centric networks
KR102036419B1 (ko) * 2017-12-27 2019-10-24 충북대학교 산학협력단 그래프 처리 성능 향상을 위한 복수 계층 캐싱 방법 및 복수 계층 캐싱 시스템

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0256653A (ja) * 1988-08-23 1990-02-26 Toshiba Corp 階層化メモリ管理方式
JPH02219147A (ja) * 1989-02-21 1990-08-31 Mitsubishi Electric Corp 高速緩衝記憶装置
JP3707854B2 (ja) * 1996-03-01 2005-10-19 株式会社東芝 キャッシュ機能を有するコンピュータ及びキャッシュメモリ制御方法
WO1999060564A2 (en) 1998-05-15 1999-11-25 Storage Technology Corporation Caching method for data blocks of variable size
US6678805B1 (en) * 2000-05-25 2004-01-13 Microsoft Corporation Structure organization for improved cache performance
US6738865B1 (en) 2000-06-09 2004-05-18 International Business Machines Corporation Method, system, and program for demoting data from cache based on least recently accessed and least frequently accessed data
JP4500850B2 (ja) * 2007-12-27 2010-07-14 富士通株式会社 制御装置,ストレージシステム,及びメモリ制御方法

Also Published As

Publication number Publication date
US9824028B2 (en) 2017-11-21
JP2015075978A (ja) 2015-04-20
US20150106570A1 (en) 2015-04-16

Similar Documents

Publication Publication Date Title
CN114253458B (zh) 内存缺页异常的处理方法、装置、设备及存储介质
US9471497B2 (en) Methods for combining access history and sequentiality for intelligent prefetching and devices thereof
US20160085527A1 (en) Code placement using a dynamic call graph
CN104063330B (zh) 数据预取方法及装置
CN107220188B (zh) 一种自适应缓冲块替换方法
JP2012008725A (ja) データをソートする装置及び方法
CN105302830B (zh) 一种地图瓦片缓存方法及装置
JP6402647B2 (ja) データ配置プログラム、データ配置装置およびデータ配置方法
CN116910314B (zh) 基于键值分离的键值存储系统中范围查询优化方法及装置
JP6155833B2 (ja) 伝達情報変動検知方法、伝達情報変動検知装置および伝達情報変動検知プログラム
WO2025194554A1 (zh) 应用于大语言模型的文本推理加速方法及相关装置
US11281588B2 (en) Method, apparatus and computer program product for managing I/O operation using prediction model to predict storage area to be accessed
CN104021226B (zh) 预取规则的更新方法及装置
CN117130663B (zh) 一种指令读取方法及l2指令缓存、电子设备和存储介质
JP6131818B2 (ja) キャッシュ方法、キャッシュ装置、およびコンピュータプログラム
JP5447523B2 (ja) データ処理装置、データ記録方法、データ記録プログラム
CN118210739A (zh) 多级缓存管理方法、设备及计算机可读存储介质
JP6394231B2 (ja) データ配置制御プログラム、データ配置制御装置およびデータ配置制御方法
US12282428B2 (en) Selective speculative prefetch requests for a last-level cache
CN103761052B (zh) 一种管理高速缓存的方法及存储装置
CN118820311B (zh) 键值缓存方法、文本解码方法、装置以及计算机存储介质
KR20110115759A (ko) 에스에스디 확장버퍼를 사용한 버퍼 캐쉬 관리 방법 및 에스에스디를 확장버퍼로서 사용하는 장치
JP6194875B2 (ja) キャッシュ装置、キャッシュシステム、キャッシュ方法、及びキャッシュプログラム
JP2023505783A (ja) Gpuパケット集約システム
JP6112193B2 (ja) アクセス制御プログラム、ディスク装置及びアクセス制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160606

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170308

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170321

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170403

R150 Certificate of patent or registration of utility model

Ref document number: 6131818

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees