JP2017072982A - 情報処理装置、キャッシュ制御方法およびキャッシュ制御プログラム - Google Patents

情報処理装置、キャッシュ制御方法およびキャッシュ制御プログラム Download PDF

Info

Publication number
JP2017072982A
JP2017072982A JP2015199321A JP2015199321A JP2017072982A JP 2017072982 A JP2017072982 A JP 2017072982A JP 2015199321 A JP2015199321 A JP 2015199321A JP 2015199321 A JP2015199321 A JP 2015199321A JP 2017072982 A JP2017072982 A JP 2017072982A
Authority
JP
Japan
Prior art keywords
stream
page
access
data blocks
data
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.)
Pending
Application number
JP2015199321A
Other languages
English (en)
Inventor
勇気 松尾
Yuki Matsuo
勇気 松尾
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 JP2015199321A priority Critical patent/JP2017072982A/ja
Priority to US15/263,452 priority patent/US20170103024A1/en
Publication of JP2017072982A publication Critical patent/JP2017072982A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1021Hit rate improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/602Details relating to cache prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6026Prefetching based on access pattern detection, e.g. stride based prefetch

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)

Abstract

【課題】プリフェッチを行う場合におけるキャッシュ用メモリの利用効率を向上させる。【解決手段】制御部13は、アクセスされたデータブロック14a,14bの記憶装置11上における位置関係に基づいて、アクセスのストリーム15を示すストリーム情報16を生成する。制御部13は、ストリーム情報16に基づいてメモリ12に先読みされた、データブロック14c,14dへのアクセスを監視し、データブロック14c,14dの何れかが最後にアクセスされてからの経過時間に基づいてストリーム15の停止を判定する。制御部13は、ストリーム15が停止したと判定した場合、データブロック14c,14dの少なくとも一部をメモリ12から削除する。【選択図】図1

Description

本発明は情報処理装置、キャッシュ制御方法およびキャッシュ制御プログラムに関する。
情報処理システムでは、大量のデータを記憶するために比較的低速な記憶装置(例えば、HDD(Hard Disk Drive)やSSD(Solid State Drive)などの補助記憶装置)を使用することが多い。アクセス要求が発行される毎に低速な記憶装置にアクセスすると、データアクセスが処理性能のボトルネックになることがある。そこで、低速な記憶装置に記憶されたデータの一部を、比較的高速なメモリ(例えば、RAM(Random Access Memory)などの主記憶装置)にキャッシュしておくことがある。メモリにキャッシュされたデータは、元の記憶装置にアクセスせずに提供することができる。
例えば、使用される可能性の高い所定のデータをメモリにキャッシュしておくことが考えられる。また、例えば、一度使用されたデータは再度使用される可能性が高いというアクセスの局所性を仮定して、使用されたデータをメモリに残しておくことが考えられる。ここで、データをキャッシュするメモリは元の記憶装置よりも容量が小さいことが多いため、キャッシュするデータの置換が発生する。メモリから削除するデータを選択する方法として、LRU(Least Recently Used)アルゴリズムなどのページ置換アルゴリズムが用いられる。LRUアルゴリズムは、最近最も使用されていないデータ(連続して使用されていない時間が最も長いデータ)を優先的に削除するものである。
ところで、データアクセスの中には、元の記憶装置上の連続した領域をシーケンシャルにアクセスするものや一定間隔ずつ空いた領域をアクセスするものなど、連続性のあるデータアクセスが存在する。連続性のあるデータアクセスが検出された場合、アクセス要求を待たずに次に要求されるデータを予測してメモリに先読みすること(プリフェッチ)を行うことがある。プリフェッチによって、短時間に繰り返し使用されるものではないデータについてもデータアクセスを高速化することができる。
なお、バッファに先読みされた複数のデータブロックの中から削除するものを決定する置換決定回路が提案されている。提案の置換決定回路は、LRUアルゴリズムによって2以上の削除候補のデータブロックが選択されると、選択された削除候補のうちバッファ上で1度もアクセスされなかったデータブロックを優先的に削除する。
また、プロセッサとは別に、プロセッサが使用するデータをキャッシュメモリに先読みするキャッシュ制御部を有するデータ処理装置が提案されている。当該キャッシュ制御部は、キャッシュメモリに記憶されたデータのうちプロセッサによって使用されたデータを優先的に削除する。また、複数の記憶領域のうちプリフェッチに使用可能な記憶領域を制限するキャッシュ記憶装置が提案されている。提案のキャッシュ記憶装置は、新たなデータを先読みするとき、プリフェッチ用の記憶領域に記憶されたデータを削除し、プリフェッチ用でない記憶領域に記憶されたデータは削除しない。
特開昭63−318654号公報 特開平9−212421号公報 特開2001−195304号公報
連続性のあるデータアクセスは広範囲の領域のデータを要求することが多く、連続性のあるデータアクセスが継続している間は次々とデータがメモリに先読みされることになる。しかし、連続性のあるデータアクセスは、要求元のプロセスの停止などによっていつかは停止する。連続性のあるデータアクセスが停止した後、先読みされていたデータが短時間のうちに他のプロセスなどによって使用される可能性は低い。
このとき、先読みしたデータとそれ以外の他のデータとを纏めて通常のページ置換アルゴリズムを適用すると、以降使用される可能性の低い先読みデータよりも、使用される可能性がある他のデータが先にメモリから削除されてしまうことが発生し得る。そのため、キャッシュ用メモリの利用効率が低下するという問題がある。また、上記特許文献3に記載された技術のようにプリフェッチ用の記憶領域と他の記憶領域を分離すると、2種類の記憶領域の一方に空きがあり他方に空きがない状況が発生する可能性があり、キャッシュ用メモリの利用効率が低下してしまうおそれがある。
1つの側面では、本発明は、プリフェッチを行う場合におけるキャッシュ用メモリの利用効率を向上できる情報処理装置、キャッシュ制御方法およびキャッシュ制御プログラムを提供することを目的とする。
1つの態様では、メモリと制御部とを有する情報処理装置が提供される。メモリは、記憶装置に記憶されたデータブロックをキャッシュする。制御部は、アクセスされた複数の第1のデータブロックの記憶装置上における位置関係に基づいて、所定の規則条件を満たすアクセスのストリームを検出し、ストリームを示すストリーム情報を生成する。制御部は、ストリーム情報に基づいて記憶装置からメモリに先読みされた、複数の第2のデータブロックへのアクセスを監視し、複数の第2のデータブロックの何れかが最後にアクセスされてからの経過時間に基づいてストリームの停止を判定する。制御部は、ストリームが停止したと判定した場合、複数の第2のデータブロックの少なくとも一部をメモリから削除する。
また、1つの態様では、コンピュータが実行するキャッシュ制御方法が提供される。また、1つの態様では、コンピュータに実行させるキャッシュ制御プログラムが提供される。
1つの側面では、プリフェッチを行う場合におけるキャッシュ用メモリの利用効率が向上する。
第1の実施の形態の情報処理装置の例を示す図である。 情報処理装置のハードウェア例を示すブロック図である。 キャッシュのページ管理の例を示す図である。 連続性のあるデータアクセスとプリフェッチの例を示す図である。 LRUアルゴリズムの例を示す図である。 ストリームが消失したページの例を示す図である。 情報処理装置の機能例を示すブロック図である。 管理構造体の例を示す図である。 ハッシュテーブルの例を示す図である。 LRU管理リストと優先置換ページリストの例を示す図である。 ストリームテーブルの例を示す図である。 プリフェッチ制御の手順例を示すフローチャートである。 置換ページ決定の手順例を示すフローチャートである。 キャッシュヒット判定の手順例を示すフローチャートである。 連続性検出の手順例を示すフローチャートである。 連続性検出の手順例を示すフローチャート(続き)である。 ストリーム消失判定の手順例を示すフローチャートである。
以下、本実施の形態を図面を参照して説明する。
[第1の実施の形態]
第1の実施の形態を説明する。
図1は、第1の実施の形態の情報処理装置の例を示す図である。
第1の実施の形態の情報処理装置10は、情報処理装置10で実行されるプロセスまたは他の情報処理装置で実行されるプロセスからの要求に応じて、データアクセスを行う。データアクセスには、データの読み出しとデータの書き込みとが含まれる。情報処理装置10は、サーバコンピュータなどのサーバ装置でもよいし、クライアントコンピュータなどのクライアント装置でもよい。また、情報処理装置10は、ストレージ装置でもよい。
情報処理装置10は、記憶装置11、メモリ12および制御部13を有する。ただし、記憶装置11は情報処理装置10からアクセス可能であればよく、情報処理装置10の外部に存在していてもよい。記憶装置11は、アクセスが比較的低速な記憶装置である。例えば、記憶装置11は、HDDやSSDなどの不揮発性の記憶装置である。メモリ12は、記憶装置11よりもアクセスが高速なメモリである。例えば、メモリ12は、RAMなどの揮発性の半導体メモリである。メモリ12の記憶容量は記憶装置11よりも小さい。
制御部13は、例えば、CPU(Central Processing Unit)やDSP(Digital Signal Processor)などのプロセッサである。ただし、制御部13は、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの特定用途の電子回路を含んでもよい。プロセッサは、RAMなどのメモリに記憶されたプログラムを実行する。プログラムには、キャッシュ制御プログラムが含まれる。複数のプロセッサの集合(マルチプロセッサ)を「プロセッサ」と呼ぶこともある。
記憶装置11は、データブロック14a,14b,14c,14dを含む複数のデータブロックを記憶する。各データブロックは、記憶装置11からメモリ12にロードされるデータ単位であり、例えば、所定サイズのデータ単位である。データブロックは、ページやセグメントなどと言うこともできる。データブロック14a,14b,14c,14dの位置は、記憶装置11の物理アドレスを用いて特定することができる。
データブロック14a,14b,14c,14dは、物理アドレスの小さい順または物理アドレスの大きい順に並んでいる。例えば、データブロック14bはデータブロック14aより物理アドレスが大きく、データブロック14cはデータブロック14bより物理アドレスが大きく、データブロック14dはデータブロック14cより物理アドレスが大きい。データブロック14a,14b,14c,14dが存在する領域は、記憶装置11上で隣接していてもよいし、閾値未満の距離だけ離れていてもよい。
メモリ12は、記憶装置11に記憶された複数のデータブロックのうちの一部のデータブロックをキャッシュする。キャッシュ用に使用可能なメモリ12の領域が満杯であるときに、キャッシュされていないデータブロックが要求されると、メモリ12に記憶された1または2以上のデータブロックがメモリ12から削除される。削除するデータブロックの選択には、LRUアルゴリズムなどの所定のページ置換アルゴリズムが用いられる。LRUアルゴリズムは、メモリ12上で最近最も使用されていないデータブロック(連続して使用されていない時間が最も長いデータブロック)を優先的に削除するものである。ただし、後述するように、所定条件を満たしたデータブロックが、通常のページ置換アルゴリズムによって選択されるデータブロックよりも優先的に削除されることがある。
制御部13は、メモリ12にロードされてアクセスされた2以上のデータブロック(第1のデータブロック)について、それらデータブロックの記憶装置11上における位置関係に基づいて、所定の規則条件を満たすアクセスのストリーム15を検出する。ストリーム15は、例えば、2以上のデータブロックを物理アドレスの昇順または降順にアクセスするものであり、前回と今回のデータブロックの距離が閾値未満であるものである。ストリーム15は、連続性のあるデータアクセスと言うこともできる。
例えば、データブロック14aがアクセスされた後にデータブロック14bがアクセスされた場合、データブロック14aの近辺の2以上のデータブロックを物理アドレスの昇順にアクセスするストリーム15が検出される。制御部13は、検出したストリーム15を示すストリーム情報16を生成する。ストリーム情報16は、メモリ12に記憶されてもよい。ストリーム情報16は、例えば、ストリーム15の識別情報や、ストリーム15によって最後にアクセスされたデータブロックの物理アドレスなどを含む。
制御部13は、生成したストリーム情報16に基づいて、要求を待たずに記憶装置11からメモリ12に2以上のデータブロック(第2のデータブロック)を先読みする(プリフェッチ)。例えば、制御部13は、ストリーム15によって最後にアクセスされたデータブロックよりも物理アドレスが大きく、最後にアクセスされたデータブロックからの距離が閾値以下であるデータブロックを、メモリ12に先読みする。一例として、制御部13は、データブロック14c,14dを記憶装置11からメモリ12に先読みする。
制御部13は、メモリ12に先読みされたデータブロックへのアクセスを監視する。特に、制御部13は、ストリーム情報16に基づいて先読みされたデータブロック(ストリーム15に関するデータブロック)へのアクセスの時間間隔を監視する。制御部13は、先読みされたデータブロックの何れかが最後にアクセスされてからの経過時間(アクセスがない状態の継続時間)に基づいて、ストリーム15の停止を判定する。ストリーム15の停止は、連続性のあるアクセスが終了したことを示し、「ストリームの消失」と言うこともできる。ストリーム15の停止は、ストリーム15に属するアクセス要求を発行していたプロセスが停止したことを意味する場合がある。
例えば、制御部13は、経過時間が閾値を超えた場合にストリーム15が停止したと判定し、経過時間が閾値を超えていない場合にストリーム15がまだ停止していないと判定する。閾値は、先読みされたデータブロックへの過去のアクセスの時間間隔(例えば、その最大値)に基づいて決定してもよい。一例として、先読みされたデータブロック14cがアクセスされた後、データブロック14dがアクセスされないまま経過時間が閾値を超えたとする。この場合、制御部13は、ストリーム15が停止したと判定する。
ストリーム15が停止したと判定した場合、制御部13は、ストリーム情報16に基づくデータブロックの先読みを終了し、ストリーム情報16に基づいて先読みされていたデータブロックの全部または一部をメモリ12から削除する。削除するデータブロックには、メモリ12にキャッシュされてからアクセスされたものに加えて、アクセスされなかったものも含まれ得る。停止したストリーム15に関するデータブロックは、通常のページ置換アルゴリズムによって選択されるデータブロックよりも優先的に削除される。
ストリーム15に関するデータブロックをメモリ12から削除するタイミングは、ストリーム15が停止したと判定したときでもよいし、キャッシュされたデータブロックを入れ替えるときでもよい。一例として、制御部13は、メモリ12のキャッシュ用領域が不足したとき、ストリーム情報16に基づいて先読みされたデータブロック14c,14dを他のデータブロックよりも優先してメモリ12から削除する。
第1の実施の形態の情報処理装置10によれば、ストリーム15を示すストリーム情報16に基づいて先読みされたデータブロック14c,14dについて、メモリ12上でのアクセスが監視される。先読みされたデータブロック14c,14dの何れかが最後にアクセスされてからの経過時間に基づいて、ストリーム15の停止(ストリーム15の消失)が判定される。ストリーム15が停止したと判定された場合、データブロック14c,14dの少なくとも一部がメモリ12から削除される。
ストリーム情報16に基づいて先読みされたデータブロックは、ストリーム15が停止していない間はアクセスされる可能性がある一方、ストリーム15が停止するとアクセスされる可能性が急激に低下する。ストリーム15が停止した後、先読みされていたデータブロックが短時間のうちに他のプロセスなどによって使用される可能性は低い。アクセスされる可能性が低くなったデータブロック14c,14dを優先的にメモリ12から削除することで、メモリ12に空き領域を確保することができる。よって、アクセスされる可能性のある他のデータブロックが先にメモリ12から削除されてしまうことを抑制でき、メモリ12のキャッシュ用領域の利用効率を向上させることができる。
[第2の実施の形態]
次に、第2の実施の形態を説明する。
図2は、情報処理装置のハードウェア例を示すブロック図である。
情報処理装置100は、CPU101、RAM102、HDD103、画像信号処理部104、入力信号処理部105、媒体リーダ106および通信インタフェース107を有する。CPU101、RAM102、HDD103、画像信号処理部104、入力信号処理部105、媒体リーダ106および通信インタフェース107は、バス108に接続されている。なお、情報処理装置100は、第1の実施の形態の情報処理装置10に対応する。CPU101は、第1の実施の形態の制御部13に対応する。RAM102は、第1の実施の形態のメモリ12に対応する。HDD103は、第1の実施の形態の記憶装置11に対応する。情報処理装置100は、クライアントコンピュータなどのクライアント装置でもよいし、サーバコンピュータなどのサーバ装置でもよい。
CPU101は、プログラムの命令を実行する演算回路を含むプロセッサである。CPU101は、HDD103に記憶されたプログラムやデータの少なくとも一部をRAM102にロードし、プログラムを実行する。なお、CPU101は複数のプロセッサコアを備えてもよく、情報処理装置100は複数のプロセッサを備えてもよく、以下で説明する処理を複数のプロセッサまたはプロセッサコアを用いて並列に実行してもよい。また、複数のプロセッサの集合(マルチプロセッサ)を「プロセッサ」と呼んでもよい。
RAM102は、CPU101が実行するプログラムやCPU101が演算に用いるデータを一時的に記憶する揮発性の半導体メモリである。なお、情報処理装置100は、RAM以外の種類のメモリを備えてもよく、複数個のメモリを備えてもよい。
HDD103は、OS(Operating System)やミドルウェアやアプリケーションソフトウェアなどのソフトウェアのプログラム、および、データを記憶する不揮発性の記憶装置である。プログラムには、キャッシュ制御プログラムが含まれる。なお、情報処理装置100は、フラッシュメモリやSSDなどの他の種類の記憶装置を備えてもよく、複数の不揮発性の記憶装置を備えてもよい。
画像信号処理部104は、CPU101からの命令に従って、情報処理装置100に接続されたディスプレイ111に画像を出力する。ディスプレイ111としては、CRT(Cathode Ray Tube)ディスプレイ、液晶ディスプレイ(LCD:Liquid Crystal Display)、プラズマディスプレイ、有機EL(OEL:Organic Electro-Luminescence)ディスプレイなどを用いることができる。
入力信号処理部105は、情報処理装置100に接続された入力デバイス112から入力信号を取得し、CPU101に出力する。入力デバイス112としては、マウスやタッチパネルやタッチパッドやトラックボールなどのポインティングデバイス、キーボード、リモートコントローラ、ボタンスイッチなどを用いることができる。また、情報処理装置100に、複数の種類の入力デバイスが接続されていてもよい。
媒体リーダ106は、記録媒体113に記録されたプログラムやデータを読み取る読み取り装置である。記録媒体113として、例えば、フレキシブルディスク(FD:Flexible Disk)やHDDなどの磁気ディスク、CD(Compact Disc)やDVD(Digital Versatile Disc)などの光ディスク、光磁気ディスク(MO:Magneto-Optical disk)、半導体メモリなどを使用できる。媒体リーダ106は、例えば、記録媒体113から読み取ったプログラムやデータをRAM102またはHDD103に格納する。
通信インタフェース107は、ネットワーク114に接続され、ネットワーク114を介して他の装置と通信を行うインタフェースである。通信インタフェース107は、スイッチなどの通信装置とケーブルで接続される有線通信インタフェースでもよいし、基地局と無線リンクで接続される無線通信インタフェースでもよい。
次に、HDD103に記憶されたデータのRAM102へのキャッシュを説明する。
図3は、キャッシュのページ管理の例を示す図である。
情報処理装置100は、情報処理装置100または他の情報処理装置のプロセスが発行したアクセス要求に応じて、データの読み出しまたは書き込みを行う。アクセス要求に応じたデータ処理は、RAM102にキャッシュされたデータに対して行う。アクセス要求によって指定されたデータがRAM102にキャッシュされていない場合、情報処理装置100は、HDD103からRAM102にデータをロードする。HDD103からRAM102へのデータのロードは、所定サイズのページ単位で行う。
RAM102には、それぞれ1つのページを記憶できる複数の領域が予め確保されている。複数の領域それぞれについて、当該領域に記憶されたページを管理するための管理構造体が予め生成されてRAM102に記憶されている。複数の領域は、領域121a,121b,121cを含む。RAM102は、領域121aに対応する管理構造体131aと、領域121bに対応する管理構造体131bと、領域121cに対応する管理構造体131cとを記憶する。HDD103は、ページ21a(P1)、ページ21b(P2)、ページ21c(P3)、ページ21d(P4)を含む複数のページを記憶する。
ページ21aに属する物理アドレスを指定したアクセス要求が到着した場合、例えば、情報処理装置100は、ページ21aをHDD103から領域121aにロードする(ページイン)。このとき、情報処理装置100は、管理構造体131aを更新する。また、ページ21bに属する物理アドレスを指定したアクセス要求が到着した場合、例えば、情報処理装置100は、ページ21bをHDD103から領域121bにロードする。このとき、情報処理装置100は、管理構造体131bを更新する。また、ページ21dに属する物理アドレスを指定したアクセス要求が到着した場合、例えば、情報処理装置100は、ページ21dをHDD103から領域121cにロードする。このとき、情報処理装置100は、管理構造体131cを更新する。
図4は、連続性のあるデータアクセスとプリフェッチの例を示す図である。
1つのプロセスが行うデータアクセスには、HDD103上の離れたページに対する散発的なデータアクセスと、HDD103上の近接するページに対する連続性のあるデータアクセスとがある。第2の実施の形態では、連続性のあるデータアクセスとして、HDD103の物理アドレスの昇順に複数のページが要求されるものを考える。連続性のあるデータアクセスの集合を「ストリーム」と言うことがある。
連続性のあるデータアクセスには、(A)連続領域のアクセスと、(B)間欠的領域のアクセスとが含まれる。連続領域のアクセスは、あるページを要求した後に、当該ページより物理アドレスが大きい隣のページを要求するものである。複数のアクセス要求によって次々と隣のページが要求されることにより、一続きの連続領域が要求されることになる。間欠的領域のアクセスは、あるページを要求した後に、当該ページより物理アドレスが大きく当該ページの末尾からの距離が閾値R未満であるページを要求するものである。
例えば、連続領域のアクセスについて、あるページを要求するデータアクセス31aが発生する。次に、データアクセス31aの隣のページを要求するデータアクセス31bが発生する。同様に、データアクセス31bの隣のページを要求するデータアクセス31cが発生する。データアクセス31cの隣のページを要求するデータアクセス31dが発生する。データアクセス31a,31b,31c,31dは、1つのストリームに属する。
また、例えば、間欠的領域のアクセスについて、あるページを要求するデータアクセス32aが発生する。次に、データアクセス32aの近くのページを要求するデータアクセス32bが発生する。データアクセス32aの末尾とデータアクセス32bの先頭との間の距離は、閾値R未満である。同様に、データアクセス32bの近くのページを要求するデータアクセス32cが発生する。データアクセス32bの末尾とデータアクセス32cの先頭との間の距離は、閾値R未満である。データアクセス32cの近くのページを要求するデータアクセス32dが発生する。データアクセス32cの末尾とデータアクセス32dの先頭との間の距離は、閾値R未満である。データアクセス32a,32b,32c,32dは、連続領域のアクセスの場合と同様に1つのストリームに属する。
ここで、連続性のあるデータアクセスについては、データアクセスに規則性があるため次に要求される可能性のあるページを絞り込むことが可能である。そこで、情報処理装置100は、アクセスのストリームが検出されると、アクセス要求を待たずに、HDD103からRAM102にページを先読みする(プリフェッチ)。
上記の連続領域のアクセスの場合、情報処理装置100は、データアクセス31dの後にプリフェッチ31eを実行する。プリフェッチ31eでは、情報処理装置100は、データアクセス31dのページより物理アドレスが大きくデータアクセス31dの末尾から所定距離内にあるページを先読みする。上記の間欠的領域のアクセスの場合、情報処理装置100は、データアクセス32dの後にプリフェッチ32eを実行する。プリフェッチ32eでは、情報処理装置100は、データアクセス32dのページより物理アドレスが大きくデータアクセス32dの末尾から所定距離内にあるページを先読みする。
図5は、LRUアルゴリズムの例を示す図である。
RAM102の全ての領域がページを記憶しており、キャッシュされていない他のページが要求された場合、情報処理装置100は、何れかの領域のページをRAM102から追い出すことになる。第2の実施の形態では、キャッシュされた複数のページの中から追い出すページを選択するページ置換アルゴリズムとして、LRUアルゴリズムを用いる。
情報処理装置100は、RAM102に記憶された複数のページを、例えば、図5に示すようなリストを用いて管理する。MRU(Most Recently Used)ページは、直近に使用されたページである。LRUページは、最近最も使用されていないページである。ここでは、ページ21a,21b,21c,21d、ページ21e(P5)およびページ21f(P6)がリストに登録されている。ページ21aはリストの先頭にあるページであり、MRUページである。ページ21bはリストの2番目、ページ21cはリストの3番目、ページ21dはリストの4番目、ページ21eはリストの末尾から2番目にあるページである。ページ21fはリストの末尾にあるページであり、LRUページである。
このとき、キャッシュ済みのページ21cが要求される(キャッシュヒットする)と、リスト上でページ21cが先頭に移動してMRUページになる。これに伴い、リスト上でページ21a,21bがLRU側にシフトする。キャッシュされていないページ21g(P7)が要求される(キャッシュミスヒットする)と、リスト上でページ21gが先頭に追加されMRUページになる。これに伴い、リスト上でページ21a,21b,21c,21d,21eがLRU側にシフトする。また、リストの末尾に登録されていたページ21f(LRUページ)が、リストから追い出される。
よって、通常のLRUアルゴリズムによれば、ページ21fがRAM102から削除され(ページアウト)、ページ21gがRAM102にロードされる(ページイン)。すなわち、ページ21fがページ21gに置き換えられることになる。
しかし、プリフェッチによってロードされたページとそれ以外のページとを纏めて通常のLRUアルゴリズムを適用すると、以降使用される可能性の低いページがRAM102に残りやすくなり、RAM102の利用効率が低下するおそれがある。すなわち、あるストリームの進行が停止する(ストリームが消失する)と、当該ストリームに関して先読みされたページ(ストリームが消失したページ)は以降使用される可能性が低くなる。そこで、情報処理装置100は、LRUアルゴリズムによって選択されるページよりも、ストリームが消失したページを優先的に削除する。
図6は、ストリームが消失したページの例を示す図である。
ここでは、1つのページのサイズが10kB(キロバイト)であるとする。図6に記載されたアドレス範囲は、HDD103の物理アドレスの範囲である。まず、プリフェッチ以外の方法により、300〜309kBのページ22fがRAM102にロードされる。次に、プリフェッチによって、100〜109kBのページ22a、110〜119kBのページ22b、120〜129kBのページ22c、130〜139kBのページ22d、140〜149kBのページ22eが順にRAM102にロードされる。
ストリームによってページ22aが要求されると、ページ22aがMRUページになる。次に、ページ22aが要求されてから10ms(ミリ秒)後に、ストリームによってページ22bが要求されると、ページ22bがMRUページになる。このとき、アクセス要求の間隔が十分に短いため、当該ストリームはまだ消失していないと判断される。次に、ページ22bが要求されてから5ms後に、ストリームによってページ22cが要求されると、ページ22cがMRUページになる。このとき、アクセス要求の間隔が十分に短いため、当該ストリームはまだ消失していないと判断される。
次に、ページ22cが要求されてから20ms経過してもページ22a,22b,22c,22d,22eの何れも要求されない場合、情報処理装置100は、当該ストリームが消失したと判断する。すると、消失したストリームに関して先読みされていたページ22a,22b,22c,22d,22eが削除可能となる。ただし、20msは一例であり、経過時間の閾値は後述する方法によって決定される。削除可能になるページは、消失したストリームに関連する全てのページであり、キャッシュされてから使用されたページ22a,22b,22cと使用されなかったページ22d,22eの両方を含む。
なお、第2の実施の形態では、ストリームが消失したページは、すぐにRAM102から削除されるのではなく、プリフェッチを行うときまたはキャッシュミスヒットが発生したときに削除される。ストリームが消失したページがRAM102に残っている場合、LRUアルゴリズムによって選択されるページよりも優先的に削除される。よって、ページ22a,22b,22c,22d,22eは、ページ22fよりも優先的に削除される。
次に、情報処理装置100の機能について説明する。
図7は、情報処理装置の機能例を示すブロック図である。
情報処理装置100は、記憶部130、アクセス要求受付部141、プリフェッチ制御部142、置換ページ決定部143、キャッシュヒット判定部144、連続性検出部145およびストリーム消失判定部146を有する。記憶部130は、例えば、RAM102またはHDD103に確保した記憶領域を用いて実装される。アクセス要求受付部141、プリフェッチ制御部142、置換ページ決定部143、キャッシュヒット判定部144、連続性検出部145およびストリーム消失判定部146は、例えば、CPU101が実行するプログラムモジュールを用いて実装される。
記憶部130は、管理構造体群131、ハッシュテーブル132、LRU管理リスト133、優先置換ページリスト134およびストリームテーブル群135を記憶する。
管理構造体群131は、RAM102にキャッシュされたページを管理するための管理構造体の集合である。1つの管理構造体は、1つのページを記憶できる1つの領域に対応する。RAM102には複数の領域が予め確保されており、それら複数の領域に対応するように管理構造体群131が予め生成されている。管理構造体群131には、図3に示した管理構造体131a,131b,131cが含まれる。
ハッシュテーブル132は、ストリームを識別するストリームIDのハッシュ値と、当該ストリームについて先読みされたページを管理するための管理構造体とを対応付けたテーブルである。ハッシュテーブル132を用いることで、あるストリームのストリームIDから、当該ストリームに関連する管理構造体を高速に検索することができる。
LRU管理リスト133は、RAM102にキャッシュされているページの使用状況を示すリストである。LRU管理リスト133は、LRUアルゴリズムに用いられる。LRU管理リスト133は、図5に示したようなページ間の順位(MRUページからLRUページに至る順位)を示す。LRU管理リスト133は、ページ管理が容易になるように、該当するページに対応する管理構造体へのポインタを含む。LRU管理リスト133を用いることで、ページアウトさせるページを選択できる。なお、情報処理装置100がLRUアルゴリズム以外のページ置換アルゴリズムを使用する場合、LRU管理リスト133に代えて、当該ページ置換アルゴリズムに応じた情報が記憶部130に記憶される。
優先置換ページリスト134は、LRU管理リスト133に基づいて選択されるページ(LRUページ)よりも優先的にページアウトさせるページの候補を示すリストである。優先置換ページリスト134が示すページは、ストリームが消失したページであり、以降使用される可能性が低いページである。優先置換ページリスト134は、ページ管理が容易になるように、該当するページに対応する管理構造体へのポインタを含む。
ストリームテーブル群135は、ストリームを管理するためのストリームテーブルの集合である。1つのストリームテーブルは、1つのストリームに対応する。情報処理装置100において検出可能なストリームの最大数に相当する数のストリームテーブルが、予め生成されている。ストリームテーブル群135に含まれるストリームテーブルの数は、多いことが好ましい。例えば、数千から1万程度のストリームテーブルが用意される。ストリームテーブル群135を用いることで、連続性のあるアクセスのストリームが検出され、検出されたストリームに対してストリームIDが付与される。
アクセス要求受付部141は、情報処理装置100で実行されるアプリケーションプロセスが発行したアクセス要求、または、他の情報処理装置が送信したアクセス要求を受け付ける。アクセス要求は、読み出し要求または書き込み要求である。読み出し要求には、対象のデータが格納されているHDD103の領域を示すアドレス情報が含まれる。アドレス情報は、例えば、先頭の物理アドレスとデータ長を含む。書き込み要求には、書き込むデータと、当該データを格納すべきHDD103の領域を示すアドレス情報が含まれる。以下では、アクセス要求として主に読み出し要求を想定して説明することがある。
プリフェッチ制御部142は、連続性検出部145からの指示に応じてページのプリフェッチを行う。すなわち、プリフェッチ制御部142は、連続性検出部145から指定されたページをHDD103からRAM102にロードする。このとき、プリフェッチ制御部142は、ページを格納する領域を置換ページ決定部143に問い合わせる。プリフェッチ制御部142は、置換ページ決定部143によって決定された領域に、HDD103から読み出したページを上書きする。また、プリフェッチ制御部142は、上書きした領域に対応する管理構造体を、先読みしたページに対応するように更新する。
置換ページ決定部143は、プリフェッチ制御部142またはキャッシュヒット判定部144からの問い合わせに応じて、ページを読み込むべき領域を決定する。これは、RAM102にキャッシュされているページ(先読みされたものとそれ以外のものを含む)の中からページアウトさせるページを選択するという意味も含む。置換ページ決定部143は、優先置換ページリスト134が空でない場合、優先置換ページリスト134が示すページを優先的に選択する。一方、置換ページ決定部143は、優先置換ページリスト134が空である場合、LRUアルゴリズムに従ってページを選択する。後者の場合、置換ページ決定部143は、LRU管理リスト133を参照および更新する。
キャッシュヒット判定部144は、アクセス要求受付部141が受け付けたアクセス要求に従って、要求されたデータの提供またはデータの書き込みを実行する。対象ページがRAM102にキャッシュされていない場合、キャッシュヒット判定部144は、対象ページを格納する領域を置換ページ決定部143に問い合わせる。キャッシュヒット判定部144は、置換ページ決定部143によって決定された領域に、HDD103から読み出したページを上書きする。また、キャッシュヒット判定部144は、上書きした領域に対応する管理構造体を、格納したページに対応するように更新する。対象ページがRAM102にキャッシュされている場合、キャッシュヒット判定部144は、対象ページがMRUページになるようにLRU管理リスト133を更新する。
そして、キャッシュヒット判定部144は、RAM102上の対象ページに対してデータ処理を行う。アクセス要求が読み出し要求である場合、キャッシュヒット判定部144は、要求されたデータをアクセス要求の発行元に送信する。アクセス要求が書き込み要求である場合、キャッシュヒット判定部144は、ページを更新してその結果をアクセス要求の発行元に送信する。
連続性検出部145は、アクセス要求受付部141が受け付けるアクセス要求を監視する。連続性検出部145は、ストリームテーブル群135を用いて連続性のあるアクセスを検出し、各アクセスの属するストリームを判定する。連続性検出部145は、ストリームの進行(指定される物理アドレスの増加)に応じて、先読みするページを決定し、プリフェッチ制御部142にプリフェッチを指示する。また、連続性検出部145は、アクセス要求受付部141がアクセス要求を受け付ける毎に、消失したストリームが存在するか判定するようストリーム消失判定部146に指示する。
ストリーム消失判定部146は、連続性検出部145からの指示に応じて、ストリームテーブル群135によって管理される複数のストリームの中に消失したストリームがあるか判定する。具体的には、ストリーム消失判定部146は、ストリーム毎に、最後にアクセス要求を受け付けた時刻と現在時刻との差(経過時間)を算出する。ストリーム消失判定部146は、経過時間が閾値を超えるストリームを消失したストリームと判定する。経過時間の閾値は、過去のアクセス要求の時間間隔に基づいてストリーム毎に決定する。
消失したストリームが検出されると、ストリーム消失判定部146は、ハッシュテーブル132を用いて、消失したストリームに関するページを検索する。ストリーム消失判定部146は、優先置換ページリスト134が示すページに検索されたページが追加されるように、優先置換ページリスト134を更新する。これにより、ストリームが消失したページが、他のページよりも優先的にRAM102から削除されることになる。
図8は、管理構造体の例を示す図である。
管理構造体群131に管理構造体131aが含まれる。管理構造体131aは、RAM102の領域121aに対応する。管理構造体131aは、ストリームフラグ、ストリームID、キャッシュアドレスおよびディスクアドレスを含む。
ストリームフラグは、領域121aに記憶されたページがストリームに基づいて先読みされたページであるかを示す。ストリームフラグが「ON」(または「1」)であることは、記憶されたページがストリームに基づく先読みページであることを示す。ストリームフラグが「OFF」(または「0」)であることは、記憶されたページがストリームに基づく先読みページでないことを示す。ストリームフラグの初期値は「OFF」である。
ストリームIDは、ストリームフラグが「ON」である場合に、プリフェッチの契機となったストリームを示す。ストリームフラグが「OFF」である場合は、ストリームIDは「NULL」または「0」でよい。
キャッシュアドレスは、領域121aを識別するRAM102の物理アドレスである。キャッシュアドレスは、例えば、領域121aの先頭の物理アドレスである。管理構造体131aは予め領域121aに対応付けられているため、キャッシュアドレスは管理構造体131aが生成されたときに固定される。ディスクアドレスは、領域121aに記憶されたページが存在するHDD103の位置を示す物理アドレスである。ディスクアドレスは、例えば、当該ページの先頭の物理アドレスである。領域121aにページが上書きされると、管理構造体131aのディスクアドレスが更新される。
図9は、ハッシュテーブルの例を示す図である。
ハッシュテーブル132は、ハッシュ値と連結リストへのリンクとの組を複数含む。ハッシュテーブル132に登録されるハッシュ値は、所定のハッシュ関数を用いて算出したストリームIDのハッシュ値である。ハッシュ関数としては、異なるストリームIDから同じハッシュ値が算出される衝突の可能性が十分に小さいものを使用する。
ストリームIDのハッシュ値から、連結リストを参照することができる。連結リストは、1または2以上のポインタを連結したものである。連結リストに含まれる各ポインタは、管理構造体群131に含まれる何れかの管理構造体を指している。ポインタとして、管理構造体が記憶された位置を示すRAM102の物理アドレスを用いてもよいし、管理構造体に予め付与された構造体IDを用いてもよい。
ハッシュテーブル132は、ストリームIDに対して、当該ストリームIDを含む管理構造体を対応付けたものと言うことができる。ハッシュテーブル132を用いることで、あるストリームに関連する全ての管理構造体を検索することができる。
図10は、LRU管理リストと優先置換ページリストの例を示す図である。
LRU管理リスト133は、管理構造体を指す複数のポインタを連結した連結リストである。前述のように、ポインタとして、管理構造体が記憶された位置を示す物理アドレスを用いてもよいし、管理構造体に予め付与された構造体IDを用いてもよい。LRU管理リスト133の先頭のポインタは、MRUページに対応する管理構造体を指す。LRU管理リスト133の末尾のポインタは、LRUページに対応する管理構造体を指す。
あるページについてページヒットが発生すると、当該ページに対応する管理構造体を指すポインタがLRU管理リスト133の先頭に移動する。あるページについてページアウトが発生すると、同じ領域に他のページが読み込まれることになるため、当該ページに対応する管理構造体を指すポインタがLRU管理リスト133の先頭に移動する。LRUアルゴリズムに基づいて削除するページを選択する場合、LRU管理リスト133の末尾にあるポインタが指す管理構造体に対応するページが選択される。
優先置換ページリスト134は、管理構造体を指す1または2以上のポインタを連結した連結リストである。前述のように、ポインタとして、管理構造体が記憶された位置を示す物理アドレスを用いてもよいし、管理構造体に予め付与された構造体IDを用いてもよい。ポインタが指す管理構造体に対応するページは、ストリーム消失判定部146によってストリームが消失したと判定されたページである。
ストリームが消失したページが検出されると、例えば、検出されたページに対応する管理構造体を指すポインタが優先置換ページリスト134の末尾に追加される。ストリームが通過したページをRAM102から削除するとき、優先置換ページリスト134から、削除するページに対応する管理構造体を示すポインタが削除される。優先置換ページリスト134に複数のポインタが含まれている場合、それら複数のポインタの選択順序は任意でよい。例えば、先頭のポインタから先に選択していく。
図11は、ストリームテーブルの例を示す図である。
ストリームテーブル群135にストリームテーブル135aが含まれる。ストリームテーブル135aは、使用フラグ、ストリームID、アクセスアドレス(Alast)、プリフェッチアドレス(Apre)、連続カウンタ(C)、アクセス時刻(Last)および最大間隔(Max)を含む。
使用フラグは、ストリームテーブル135aが使用されているか否かを示す。ストリームIDは、ストリームテーブル135aによって管理されるストリームに付与された識別番号である。ストリームテーブル135aによって管理されていた前のストリームが消失し、その後に検出された新たなストリームを管理するためにストリームテーブル135aが再利用されることがある。その場合、ストリームテーブル135aに登録されたストリームIDが新たなストリームIDに書き換えられる。
アクセスアドレスは、ストリームテーブル135aによって管理されるストリームが最後に指定したアドレス範囲の末尾を示す。すなわち、アクセスアドレスは、当該ストリームによって最後に使用されたデータの末尾を示すHDD103の物理アドレスである。プリフェッチアドレスは、ストリームテーブル135aによって管理されるストリームについて最後に先読みしたページの末尾を示すHDD103の物理アドレスである。
連続カウンタは、所定条件を満たすアクセス要求が検出された回数を示す。連続カウンタは、ストリームテーブル135aによって管理されるストリームに属する「連続性のあるアクセス」の数を示していると言うこともできる。所定条件は、アクセス要求によって指定されたアドレス範囲の先頭が、AlastとAlast+Rの間に存在することである。
アクセス時刻は、ストリームテーブル135aによって管理されるストリームに属するアクセス要求を最後に受け付けた時刻である。アクセス時刻は、例えば、ミリ秒の単位で測定される。アクセス時刻は、新たなアクセス要求の到着に応じて更新される。最大間隔は、一のアクセス要求を受け付けてから同じストリームに属する次のアクセス要求を受け付けるまでの時間間隔の実績のうちの最大値である。時間間隔は、例えば、ミリ秒単位で測定される。時間間隔は、新たなアクセス要求が到着したときに、ストリームテーブル135aに登録されているアクセス時刻と現在時刻との差として算出できる。最大間隔は、最新の時間間隔がそれまでの最大間隔を超える場合に更新される。
次に、情報処理装置100の処理手順について説明する。
図12は、プリフェッチ制御の手順例を示すフローチャートである。
(S10)プリフェッチ制御部142は、連続性検出部145からプリフェッチ要求を取得する。プリフェッチ要求は、先読みする1または2以上のページの先頭と末尾を示すディスクアドレスと、ストリームIDとを含む。
(S11)プリフェッチ制御部142は、プリフェッチ要求に含まれるディスクアドレスに基づいて、先読みするページのページ数を算出する。プリフェッチ制御部142は、ページ数を含む決定要求を置換ページ決定部143に送信する。
(S12)プリフェッチ制御部142は、ステップS11で算出したページ数に相当する数の管理構造体のポインタを、置換ページ決定部143から受信する。プリフェッチ制御部142は、受信したポインタが指す管理構造体からキャッシュアドレスを取得する。プリフェッチ制御部142は、プリフェッチ要求に含まれるディスクアドレスが示すHDD103のページを、キャッシュアドレスが示すRAM102の領域にコピーする。2以上のページを先読みする場合、使用する管理構造体の順序は任意でよい。
(S13)プリフェッチ制御部142は、ステップS12で受信したポインタが指す管理構造体のストリームID、ディスクアドレスおよびストリームフラグを更新する。管理構造体に登録するストリームIDは、プリフェッチ要求に含まれるストリームIDである。管理構造体に登録するディスクアドレスは、ページの先頭を示すHDD103の物理アドレスである。2以上のページを先読みした場合、ディスクアドレスは管理構造体によって異なる。管理構造体に登録するストリームフラグは「ON」(または「1」)である。
(S14)プリフェッチ制御部142は、所定のハッシュ関数を用いて、プリフェッチ要求に含まれるストリームIDのハッシュ値を算出する。プリフェッチ制御部142は、ハッシュテーブル132から、算出したハッシュ値に対応する連結リストを検索し、ステップS12で受信したポインタを連結リストの末尾に追加する。
図13は、置換ページ決定の手順例を示すフローチャートである。
(S20)置換ページ決定部143は、プリフェッチ制御部142またはキャッシュヒット判定部144から、ページ数を含む決定要求を受信する。
(S21)置換ページ決定部143は、優先置換ページリスト134が空であるか(ポインタが1つも登録されていないか)判断する。優先置換ページリスト134が空である場合、ステップS23に処理が進む。優先置換ページリスト134が空でない(1つ以上のポインタが登録されている)場合、ステップS22に処理が進む。
(S22)置換ページ決定部143は、優先置換ページリスト134から1つポインタ(例えば、先頭のポインタ)を抽出する。抽出したポインタは優先置換ページリスト134から削除される。置換ページ決定部143は、抽出したポインタを決定要求の送信元に返信する。また、置換ページ決定部143は、抽出したポインタと同じ管理構造体を指すポインタをLRU管理リスト133から検索し、検索したポインタをLRU管理リスト133から削除する。そして、ステップS26に処理が進む。
(S23)置換ページ決定部143は、LRUアルゴリズムに従ってLRU管理リスト133を更新し、RAM102から追い出すページに対応する管理構造体のポインタを1つ選択する。具体的には、置換ページ決定部143は、LRU管理リスト133の末尾にあるポインタを先頭に移動し、先頭に移動したポインタを選択する。ただし、置換ページ決定部143が他のページ置換アルゴリズムを使用することも可能である。置換ページ決定部143は、選択したポインタを決定要求の送信元に返信する。
(S24)置換ページ決定部143は、ステップS23で選択したポインタが指す管理構造体からストリームフラグを取得し、ストリームフラグが「ON」(または「1」)であるか判断する。ストリームフラグが「ON」である場合はステップS25に処理が進み、「OFF」(または「0」)である場合はステップS26に処理が進む。
(S25)置換ページ決定部143は、ステップS23で選択したポインタが指す管理構造体からストリームIDを取得し、ストリームIDのハッシュ値を算出する。置換ページ決定部143は、ハッシュテーブル132から、算出したハッシュ値に対応する連結リストを検索し、ステップS23で選択したポインタと同じ管理構造体を指すポインタを検索する。置換ページ決定部143は、検索したポインタを削除する。
(S26)置換ページ決定部143は、決定要求で指定されたページ数に相当する数のポインタを返信したか判断する。指定された数のポインタを返信済みである場合は置換ページ決定が終了し、それ以外の場合はステップS21に処理が進む。
図14は、キャッシュヒット判定の手順例を示すフローチャートである。
(S30)キャッシュヒット判定部144は、アドレス情報を含むアクセス要求を、アクセス要求受付部141から受信する。アドレス情報は、例えば、読み出すデータの先頭を示すHDD103の物理アドレスとデータ長とを含む。
(S31)キャッシュヒット判定部144は、アクセス要求に含まれるアドレス情報に基づいて、1または2以上の対象ページを特定する。キャッシュヒット判定部144は、各管理構造体に含まれるディスクアドレスに基づいて、特定した対象ページがRAM102にキャッシュされているか判断する。対象ページがキャッシュされている場合(キャッシュヒットの場合)、ステップS32に処理が進む。対象ページがキャッシュされていない場合(キャッシュミスヒットの場合)、ステップS33に処理が進む。
(S32)キャッシュヒット判定部144は、LRU管理リスト133から、対象ページのディスクアドレスを含む管理構造体を指すポインタを検索し、検索されたポインタをLRU管理リスト133の先頭に移動する。ただし、他のページ置換アルゴリズムが使用されている場合には、当該アルゴリズムに応じた処理が行われる。そして、ステップS35に処理が進む。
(S33)キャッシュヒット判定部144は、ステップS31で特定した対象ページのページ数を算出し、ページ数を含む決定要求を置換ページ決定部143に送信する。
(S34)キャッシュヒット判定部144は、ステップS33で算出したページ数に相当する数の管理構造体のポインタを、置換ページ決定部143から受信する。キャッシュヒット判定部144は、受信したポインタが指す管理構造体からキャッシュアドレスを取得する。キャッシュヒット判定部144は、HDD103の対象ページを、キャッシュアドレスが示すRAM102の領域にコピーする。また、キャッシュヒット判定部144は、受信したポインタが指す管理構造体のストリームID、ディスクアドレスおよびストリームフラグを更新する。管理構造体に登録するストリームIDは、「NULL」または「0」である。管理構造体に登録するディスクアドレスは、対象ページの先頭を示すHDD103の物理アドレスである。管理構造体に登録するストリームフラグは「OFF」(または「0」)である。
(S35)キャッシュヒット判定部144は、RAM102にキャッシュされたページの中から、アクセス要求に含まれるアドレス情報が示すデータを抽出し、抽出したデータをアクセス要求の送信元に返信する。ただし、アクセス要求が書き込み要求である場合、書き込み要求に含まれるデータを用いて、RAM102にキャッシュされたページを更新し、更新の成否をアクセス要求の送信元に通知する。なお、キャッシュされたページが更新された場合、更新された直後または当該ページがRAM102から追い出されるときに、当該ページがHDD103に書き戻される。
図15は、連続性検出の手順例を示すフローチャートである。
(S40)連続性検出部145は、アクセス要求受付部141が受け付けるアクセス要求を監視し、アドレス範囲が[A,A+L]であるアクセス要求(先頭の物理アドレスがAでありデータ長がLであるアクセス要求)を検出する。
(S41)連続性検出部145は、現在時刻(Now)を算出する。
(S42)連続性検出部145は、ストリームテーブル群135の中から、使用フラグが「ON」(または「1」)であるストリームテーブルを検索する。連続性検出部145は、該当するストリームテーブルが存在するか判断する。該当するストリームテーブルがある場合はステップS44に処理が進み、ない場合はステップS43に処理が進む。
(S43)連続性検出部145は、ストリームテーブル群135の中から、任意のストリームテーブルを1つ選択する。そして、ステップS47に処理が進む。
(S44)連続性検出部145は、使用フラグが「ON」であるストリームテーブルの中から、アクセスアドレス(Alast)がAに最も近いストリームテーブルを検索する。
(S45)連続性検出部145は、ステップS44で検索されたストリームテーブルのアクセスアドレス(Alast)が、Alast<A<Alast+Rの関係を満たすか判断する。上記関係における「R」は、図4のような連続性のあるアクセスと判断されるアクセスの間隔の閾値であり、予め決めておく。上記関係を満たす場合はステップS49に処理が進み、満たさない場合はステップS46に処理が進む。
(S46)連続性検出部145は、ストリームテーブル群135の中から、使用フラグが「OFF」(または「0」)であるストリームテーブルを1つ選択する。ただし、ストリームテーブル群135の中に使用フラグが「OFF」のストリームテーブルが存在しない場合、ステップS44で検索されたストリームテーブルを選択する。
(S47)連続性検出部145は、ステップS43またはステップS46で選択したストリームテーブルのアクセスアドレス(Alast)、プリフェッチアドレス(Apre)、連続カウンタ(C)、ストリームID、アクセス時刻(Last)および最大間隔(Max)を更新する。アクセスアドレスとプリフェッチアドレスは、アクセス要求によって指定されたアドレス範囲の末尾(A+L)とする。連続カウンタは、「0」に初期化する。ストリームIDは、新たな識別番号とする。アクセス時刻は、現在時刻(Now)とする。ただし、アクセス時刻を「0」などの任意の値としてもよい。最大間隔は「0」とする。
(S48)連続性検出部145は、選択したストリームテーブルの使用フラグを「ON」に更新する。そして、ステップS57に処理が進む。
(S49)連続性検出部145は、ステップS44で検索されたストリームテーブルを選択する。連続性検出部145は、選択したストリームテーブルのアクセスアドレス(Alast)と連続カウンタ(C)を更新する。アクセスアドレスは、アクセス要求によって指定されたアドレス範囲の末尾(A+L)とする。連続カウンタは、現在の連続カウンタをインクリメントしたもの(C+1)とする。
(S50)連続性検出部145は、ステップS49で選択したストリームテーブルからアクセス時刻(Last)を取得し、現在時刻からアクセス時刻を引いた経過時間を算出する。連続性検出部145は、選択したストリームテーブルから最大間隔(Max)を取得し、算出した経過時間が最大間隔を超えるか判断する。経過時間が最大間隔を超える場合はステップS51に処理が進み、それ以外の場合はステップS52に処理が進む。
(S51)連続性検出部145は、選択したストリームテーブルの最大間隔を、ステップS50で算出した経過時間(Now−Last)に更新する。
(S52)連続性検出部145は、選択したストリームテーブルのアクセス時刻を、現在時刻に更新する。そして、ステップS53に処理が進む。
図16は、連続性検出の手順例を示すフローチャート(続き)である。
(S53)連続性検出部145は、ステップS49で更新した連続カウンタ(C)が閾値N以上であるか判断する。閾値Nは、ステップS45の関係を満たすアクセスの集合がストリームであると判断されるためのアクセス回数の閾値である。閾値Nは、2以上の整数であり、予め決めておく。C≧Nの関係を満たす場合はステップS55に処理が進み、この関係を満たさない場合はステップS54に処理が進む。
(S54)連続性検出部145は、ステップS49で選択したストリームテーブルのプリフェッチアドレス(Apre)を、アクセス要求によって指定されたアドレス範囲の末尾(A+L)に更新する。そして、ステップS57に処理が進む。
(S55)連続性検出部145は、プリフェッチ制御部142にプリフェッチ要求を送信する。プリフェッチ要求には、ステップS49で選択したストリームテーブルのストリームIDが含まれる。また、プリフェッチ要求は、先読みするページ群の先頭のアドレスとしてApreを含み、先読みするページ群の末尾のアドレスとしてA+L+Pを含む。「P」は、1回のプリフェッチで読み込むデータの量であり、予め決めておく。
(S56)連続性検出部145は、ステップS49で選択したストリームテーブルのプリフェッチアドレス(Apre)を、プリフェッチされたページの末尾を示すHDD103の物理アドレス(A+L+P)に更新する。
(S57)連続性検出部145は、ストリーム消失判定部146を呼び出す。
図17は、ストリーム消失判定の手順例を示すフローチャートである。
(S60)ストリーム消失判定部146は、ストリームテーブル群135の中から、次の3つの条件を満たすストリームテーブルを検索する。第1の条件は、使用フラグが「ON」であることである。第2の条件は、連続カウンタが閾値N以上であることである。第3の条件は、現在時刻とアクセス時刻の差(Now−Last)が、最大間隔のk倍(Max×k)より大きいことである。係数「k」は、ストリームが消失したと判定するまでの待ち時間を調整するための1より大きい値であり、予め決めておく。第3の条件は、アクセス要求のない時間が、過去のアクセス間隔の最大よりも十分に長いことを表す。
(S61)ストリーム消失判定部146は、ステップS60において該当するストリームテーブルが検索されたか判断する。該当するストリームテーブルがある場合、ステップS62に処理が進み、該当するストリームテーブル毎にステップS62〜S65が実行される。該当するストリームテーブルがない場合、ストリーム消失判定が終了する。
(S62)ストリーム消失判定部146は、ステップS60で検索されたストリームテーブルの使用フラグを「ON」から「OFF」に更新する。
(S63)ストリーム消失判定部146は、ステップS60で検索されたストリームテーブルからストリームIDを取得し、ストリームIDのハッシュ値を算出する。ストリーム消失判定部146は、ハッシュテーブル132から、算出したハッシュ値に対応する連結リストを検索し、連結リストに含まれるポインタが指す管理構造体(上記のストリームIDを含む管理構造体)を検索する。ストリーム消失判定部146は、該当する管理構造体が1つ以上あるか判断する。該当する管理構造体がある場合はステップS64に処理が進み、該当する管理構造体がない場合はストリーム消失判定が終了する。
(S64)ストリーム消失判定部146は、ステップS63で検索された管理構造体を指すポインタを、優先置換ページリスト134に登録する。
(S65)ストリーム消失判定部146は、ステップS63で検索された連結リストから、ステップS63で検索された管理構造体を指すポインタを削除する。
第2の実施の形態の情報処理装置100によれば、先読みされたページに対してストリームを識別するストリームIDが対応付けられ、ストリーム毎にアクセス要求が到着する時間間隔が監視される。過去の時間間隔と比べて十分に長い時間アクセス要求がないストリームが消失したストリームと判定され、RAM102にキャッシュされたページの中から、ストリームが消失したページが検索される。ストリームが消失したページは、その後に使用される可能性が低いため、LRUアルゴリズムによって選択されるページよりも優先的にRAM102から削除される。これにより、ストリームが消失したページよりも使用される可能性の高い他のページをRAM102に残しつつ、RAM102に空き領域を確保することができる。よって、LRUアルゴリズムのみを使用する場合と比べて、キャッシュ用領域の利用効率を向上させることができる。
なお、前述のように、第1の実施の形態の情報処理は、情報処理装置10にプログラムを実行させることで実現できる。第2の実施の形態の情報処理は、情報処理装置100にプログラムを実行させることで実現できる。
プログラムは、コンピュータ読み取り可能な記録媒体(例えば、記録媒体113)に記録しておくことができる。記録媒体として、例えば、磁気ディスク、光ディスク、光磁気ディスク、半導体メモリなどを使用できる。磁気ディスクには、FDおよびHDDが含まれる。光ディスクには、CD、CD−R(Recordable)/RW(Rewritable)、DVDおよびDVD−R/RWが含まれる。プログラムは、可搬型の記録媒体に記録されて配布されることがある。その場合、可搬型の記録媒体から他の記録媒体(例えば、HDD103)にプログラムをコピーして実行してもよい。
10 情報処理装置
11 記憶装置
12 メモリ
13 制御部
14a,14b,14c,14d データブロック
15 ストリーム
16 ストリーム情報

Claims (6)

  1. 記憶装置に記憶されたデータブロックをキャッシュするメモリと、
    アクセスされた複数の第1のデータブロックの前記記憶装置上における位置関係に基づいて、所定の規則条件を満たすアクセスのストリームを検出し、前記ストリームを示すストリーム情報を生成し、前記ストリーム情報に基づいて前記記憶装置から前記メモリに先読みされた、複数の第2のデータブロックへのアクセスを監視し、前記複数の第2のデータブロックの何れかが最後にアクセスされてからの経過時間に基づいて前記ストリームの停止を判定し、前記ストリームが停止したと判定した場合、前記複数の第2のデータブロックの少なくとも一部を前記メモリから削除する制御部と、
    を有する情報処理装置。
  2. 前記複数の第2のデータブロックの少なくとも一部の削除は、前記ストリーム情報に基づく先読み以外の方法によって前記メモリにキャッシュされた第3のデータブロックの削除よりも優先的に実行される、
    請求項1記載の情報処理装置。
  3. 前記複数の第2のデータブロックの少なくとも一部の削除は、前記メモリに先読みされてからアクセスされなかった第2のデータブロックを削除することを含む、
    請求項1記載の情報処理装置。
  4. 前記複数の第2のデータブロックへのアクセスの監視は、一の第2のデータブロックのアクセスから次の第2のデータブロックのアクセスまでの時間間隔の算出を含み、
    前記ストリームの停止の判定では、前記時間間隔の最大値に基づいて閾値を算出し、前記経過時間が前記閾値を超えた場合に前記ストリームが停止したと判定する、
    請求項1記載の情報処理装置。
  5. コンピュータが実行するキャッシュ制御方法であって、
    アクセスされた複数の第1のデータブロックの記憶装置上における位置関係に基づいて、所定の規則条件を満たすアクセスのストリームを検出し、前記ストリームを示すストリーム情報を生成し、
    前記ストリーム情報に基づいて前記記憶装置からメモリに先読みされた、複数の第2のデータブロックへのアクセスを監視し、前記複数の第2のデータブロックの何れかが最後にアクセスされてからの経過時間に基づいて前記ストリームの停止を判定し、
    前記ストリームが停止したと判定した場合、前記複数の第2のデータブロックの少なくとも一部を前記メモリから削除する、
    キャッシュ制御方法。
  6. コンピュータに、
    アクセスされた複数の第1のデータブロックの記憶装置上における位置関係に基づいて、所定の規則条件を満たすアクセスのストリームを検出し、前記ストリームを示すストリーム情報を生成し、
    前記ストリーム情報に基づいて前記記憶装置からメモリに先読みされた、複数の第2のデータブロックへのアクセスを監視し、前記複数の第2のデータブロックの何れかが最後にアクセスされてからの経過時間に基づいて前記ストリームの停止を判定し、
    前記ストリームが停止したと判定した場合、前記複数の第2のデータブロックの少なくとも一部を前記メモリから削除する、
    処理を実行させるキャッシュ制御プログラム。
JP2015199321A 2015-10-07 2015-10-07 情報処理装置、キャッシュ制御方法およびキャッシュ制御プログラム Pending JP2017072982A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2015199321A JP2017072982A (ja) 2015-10-07 2015-10-07 情報処理装置、キャッシュ制御方法およびキャッシュ制御プログラム
US15/263,452 US20170103024A1 (en) 2015-10-07 2016-09-13 Information processing apparatus and cache control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015199321A JP2017072982A (ja) 2015-10-07 2015-10-07 情報処理装置、キャッシュ制御方法およびキャッシュ制御プログラム

Publications (1)

Publication Number Publication Date
JP2017072982A true JP2017072982A (ja) 2017-04-13

Family

ID=58499504

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015199321A Pending JP2017072982A (ja) 2015-10-07 2015-10-07 情報処理装置、キャッシュ制御方法およびキャッシュ制御プログラム

Country Status (2)

Country Link
US (1) US20170103024A1 (ja)
JP (1) JP2017072982A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021524078A (ja) * 2018-05-18 2021-09-09 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation キャッシュからトラックを削除するのに用いる複数のキャッシュ削除アルゴリズムの1つを選択
US11194504B2 (en) 2019-04-08 2021-12-07 Hitachi, Ltd. Information processing device and data management method of information processing device

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017072981A (ja) * 2015-10-07 2017-04-13 富士通株式会社 情報処理装置、キャッシュ制御方法およびキャッシュ制御プログラム
US9977623B2 (en) * 2015-10-15 2018-05-22 Sandisk Technologies Llc Detection of a sequential command stream
CN107329908A (zh) * 2017-07-07 2017-11-07 联想(北京)有限公司 一种数据处理方法和电子设备
US10866893B2 (en) * 2018-01-23 2020-12-15 Home Depot Product Authority, Llc Cache coherency engine
US11586545B2 (en) * 2021-07-02 2023-02-21 Vmware, Inc. Smart prefetching for remote memory
US11442865B1 (en) * 2021-07-02 2022-09-13 Vmware, Inc. Smart prefetching for remote memory
US20230195747A1 (en) * 2021-12-17 2023-06-22 Sap Se Performant dropping of snapshots by linking converter streams

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021524078A (ja) * 2018-05-18 2021-09-09 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation キャッシュからトラックを削除するのに用いる複数のキャッシュ削除アルゴリズムの1つを選択
JP7216741B2 (ja) 2018-05-18 2023-02-01 インターナショナル・ビジネス・マシーンズ・コーポレーション キャッシュからトラックを削除するのに用いる複数のキャッシュ削除アルゴリズムの1つを選択
US11194504B2 (en) 2019-04-08 2021-12-07 Hitachi, Ltd. Information processing device and data management method of information processing device

Also Published As

Publication number Publication date
US20170103024A1 (en) 2017-04-13

Similar Documents

Publication Publication Date Title
JP2017072982A (ja) 情報処理装置、キャッシュ制御方法およびキャッシュ制御プログラム
US7360015B2 (en) Preventing storage of streaming accesses in a cache
CN109478165B (zh) 一种基于缓存测试区针对预取数据选择缓存转移策略的方法和一种处理器
US10509732B2 (en) Selecting cache aging policy for prefetches based on cache test regions
US11803484B2 (en) Dynamic application of software data caching hints based on cache test regions
JP4829191B2 (ja) キャッシュシステム
US9996476B2 (en) Management of cache lists via dynamic sizing of the cache lists
JPWO2008155815A1 (ja) 情報処理装置
US20100217937A1 (en) Data processing apparatus and method
JP6402647B2 (ja) データ配置プログラム、データ配置装置およびデータ配置方法
KR102453192B1 (ko) 다른 캐시에서의 엔트리들의 가용성을 기반으로 한 캐시 엔트리 교체
WO2018161272A1 (zh) 一种缓存替换方法,装置和系统
JP2017117179A (ja) 情報処理装置、キャッシュ制御プログラムおよびキャッシュ制御方法
US9852082B2 (en) Information processing apparatus and cache control method
JP2023507078A (ja) プリフェッチレベルの降格
US20210286730A1 (en) Method, electronic device and computer program product for managing cache
US9851925B2 (en) Data allocation control apparatus and data allocation control method
JP5104340B2 (ja) 計算機装置およびそのキャッシュリカバリ方法
JP5800347B2 (ja) 情報処理装置及びデータアクセス方法
CN114450668A (zh) 电路和方法
JP5709207B2 (ja) メモリシステム、キャッシュメモリ制御方法及びメモリ制御プログラム
JP2016028319A (ja) アクセス制御プログラム、アクセス制御装置及びアクセス制御方法