JP2017117179A - 情報処理装置、キャッシュ制御プログラムおよびキャッシュ制御方法 - Google Patents
情報処理装置、キャッシュ制御プログラムおよびキャッシュ制御方法 Download PDFInfo
- Publication number
- JP2017117179A JP2017117179A JP2015251547A JP2015251547A JP2017117179A JP 2017117179 A JP2017117179 A JP 2017117179A JP 2015251547 A JP2015251547 A JP 2015251547A JP 2015251547 A JP2015251547 A JP 2015251547A JP 2017117179 A JP2017117179 A JP 2017117179A
- Authority
- JP
- Japan
- Prior art keywords
- data
- page
- memory block
- lru list
- cache
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/123—Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
- G06F12/124—Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list being minimized, e.g. non MRU
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/602—Details relating to cache prefetching
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
【課題】プリフェッチデータの残存を抑えること。【解決手段】制御部1aは、第1LRUリストL1で管理されるメモリブロックBL2が参照されたとき、メモリブロックBL2のデータがプリフェッチされたデータの場合、メモリブロックBL2の第1LRUリストL1による管理を維持する。制御部1aは、メモリブロックBL2のデータがプリフェッチされていないデータの場合、メモリブロックBL2を管理するLRUリストを第1LRUリストL1から第2LRUリストL2に変更する。【選択図】図1
Description
本発明は情報処理装置、キャッシュ制御プログラムおよびキャッシュ制御方法に関する。
現在、データを記憶する種々の装置が用いられている。例えば、ある記憶装置に対し、当該記憶装置よりも高速にアクセス可能なキャッシュメモリを設けることがある。今後アクセスされる可能性の高いデータを記憶装置から読み出してキャッシュに格納する。該当のデータが要求された際、キャッシュメモリからデータを読み出して要求元へ送ることで、データアクセスを高速化できる。
キャッシュメモリの記憶容量は有限である。そこで、キャッシュメモリのリソースの管理に、LRU(Least Recently Used)と呼ばれるアルゴリズムが利用され得る。例えば、キャッシュ内のデータに対し、前回使用からの経過時間が長いほどLRU優先度を低く設定して、キャッシュメモリを管理する方法がある。キャッシュメモリに新データを記録する際、キャッシュメモリに空きがなければ、LRU優先度が最も低いデータをキャッシュメモリから追い出し、新データをLRU優先度が最高のデータとしてキャッシュメモリに記憶する。あるいは、新データのLRU優先度を無条件に最高にするのではなく、データの現在のLRU優先度、データの属性などを用いて次のLRU優先度を導出することも考えられている。また、読み出しデータがシーケンシャル性を有すると判定されてプリフェッチを行う際に、キャッシュメモリの残容量に応じて、プリフェッチサイズおよびプリフェッチ量を動的に変更する提案もある。
LRUでは、LRUリストと呼ばれるリスト構造のデータによりメモリブロックを管理し得る。この場合、複数のLRUリストを利用して、アクセス数が比較的少ないデータを第1LRUリストで、アクセス数が比較的多いデータを第2LRUリストでそれぞれ別個に管理する方法が考えられる。すると、例えば第2LRUリストのサイズを大きくするほど、アクセス数が比較的多い有用なデータがキャッシュメモリに留まる時間を増やせる。
ここで、キャッシュメモリにはプリフェッチされたデータ(プリフェッチデータ)も格納され得る。プリフェッチは、シーケンシャルにアクセスされるデータの読み出しに利用されることが多く、プリフェッチデータは、短期間に1回以上参照された後は参照されることがなくなる。複数のLRUリストを用いて上記方法によりキャッシュメモリを管理すると、ほとんど参照されなくなったプリフェッチデータが第2LRUリストに残存してしまうおそれがあるという問題がある。
1つの側面では、本発明は、プリフェッチデータの残存を抑える情報処理装置、キャッシュ制御プログラムおよびキャッシュ制御方法を提供することを目的とする。
1つの態様では、複数のメモリブロックをキャッシュメモリとして制御し、メモリブロックを第1LRUリストおよび第2LRUリストにより管理する情報処理装置が提供される。この情報処理装置は、制御部を有する。制御部は、第1LRUリストで管理される第1メモリブロックが参照されたとき、第1メモリブロックのデータがプリフェッチされたデータの場合、第1メモリブロックの第1LRUリストによる管理を維持し、第1メモリブロックのデータがプリフェッチされていないデータの場合、第1メモリブロックを管理するLRUリストを第1LRUリストから第2LRUリストに変更する。
また、1つの態様では、複数のメモリブロックをキャッシュメモリとして制御し、メモリブロックを第1LRUリストおよび第2LRUリストにより管理するキャッシュ制御プログラムが提供される。このキャッシュ制御プログラムは、コンピュータに、第1LRUリストで管理される第1メモリブロックが参照されたとき、第1メモリブロックのデータがプリフェッチされたデータの場合、第1メモリブロックの第1LRUリストによる管理を維持し、第1メモリブロックのデータがプリフェッチされていないデータの場合、第1メモリブロックを管理するLRUリストを第1LRUリストから第2LRUリストに変更する、処理を実行させる。
また、1つの態様では、複数のメモリブロックをキャッシュメモリとして制御し、メモリブロックを第1LRUリストおよび第2LRUリストにより管理するキャッシュ制御方法が提供される。このキャッシュ制御方法では、コンピュータが、第1LRUリストで管理される第1メモリブロックが参照されたとき、第1メモリブロックのデータがプリフェッチされたデータの場合、第1メモリブロックの第1LRUリストによる管理を維持し、第1メモリブロックのデータがプリフェッチされていないデータの場合、第1メモリブロックを管理するLRUリストを第1LRUリストから第2LRUリストに変更する。
1つの側面では、プリフェッチデータの残存を抑えることができる。
以下、本実施の形態を図面を参照して説明する。
[第1の実施の形態]
図1は、第1の実施の形態の情報処理装置を示す図である。情報処理装置1は、制御部1aおよびメモリ1bを有する。情報処理装置1は、記憶装置2に接続されている。記憶装置2は、情報処理装置1に外付けされてもよい。記憶装置2は、情報処理装置1に内蔵されてもよい。記憶装置2は、例えば情報処理装置1の補助記憶装置である。記憶装置2は、例えばHDD(Hard Disk Drive)でもよい。
[第1の実施の形態]
図1は、第1の実施の形態の情報処理装置を示す図である。情報処理装置1は、制御部1aおよびメモリ1bを有する。情報処理装置1は、記憶装置2に接続されている。記憶装置2は、情報処理装置1に外付けされてもよい。記憶装置2は、情報処理装置1に内蔵されてもよい。記憶装置2は、例えば情報処理装置1の補助記憶装置である。記憶装置2は、例えばHDD(Hard Disk Drive)でもよい。
制御部1aは、CPU(Central Processing Unit)、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)などを含み得る。制御部1aはプログラムを実行するプロセッサであってもよい。「プロセッサ」には、複数のプロセッサの集合(マルチプロセッサ)も含まれ得る。メモリ1bは、情報処理装置1の主記憶装置である。メモリ1bは、RAM(Random Access Memory)と呼ばれるものでもよい。情報処理装置1は、コンピュータと呼ばれるものでもよい。
制御部1aは、記憶装置2に記憶されたデータにアクセスする。例えば、制御部1aは、情報処理装置1で実行されるアプリケーションソフトウェアにより発行されたデータへのアクセス要求を受け付ける。あるいは、制御部1aは、情報処理装置1にネットワークを介して接続された他のコンピュータ(図1では図示を省略している)から、データへのアクセス要求を受け付けてもよい。制御部1aは、アクセス要求で要求されたデータを記憶装置2から読み出し、要求元(情報処理装置1上のソフトウェアやネットワークを介して接続された他のコンピュータ)に応答する。
メモリ1bは、キャッシュメモリM1として用いられる。具体的には、メモリ1bは、複数のメモリブロックBL1,BL2,BL3,・・・を有する。メモリブロックBL1,BL2,BL3,・・・それぞれは、メモリ1bにおいて使用可能な記憶領域の1単位である。例えば、メモリブロックBL1,BL2,BL3,・・・それぞれは、所定サイズの共通の記憶容量を有する。キャッシュメモリM1は、メモリブロックBL1,BL2,BL3,・・・の集合である。
制御部1aは、キャッシュメモリM1を用いて、データへのアクセスを高速化し得る。
第1に、制御部1aは、アクセス要求に基づいて、記憶装置2へのシーケンシャルなアクセスを検出すると、記憶装置2内の今後アクセスされるデータを予測して、該当データがアクセスされる前に、キャッシュメモリM1に先読み(プリフェッチ)する。ここで、シーケンシャルなアクセスとは、記憶装置2におけるアクセス対象のアドレスに連続性(完全に連続でなくてもよい)があるデータアクセスである。プリフェッチされたデータは、今後アクセスされる可能性が高いデータであるといえる。
第1に、制御部1aは、アクセス要求に基づいて、記憶装置2へのシーケンシャルなアクセスを検出すると、記憶装置2内の今後アクセスされるデータを予測して、該当データがアクセスされる前に、キャッシュメモリM1に先読み(プリフェッチ)する。ここで、シーケンシャルなアクセスとは、記憶装置2におけるアクセス対象のアドレスに連続性(完全に連続でなくてもよい)があるデータアクセスである。プリフェッチされたデータは、今後アクセスされる可能性が高いデータであるといえる。
第2に、制御部1aは、アクセス要求に応じて、キャッシュメモリM1に格納されていないデータを、記憶装置2から読み出して応答する際、キャッシュメモリM1に当該データを格納する。該当のデータは、アクセス要求元などから再度アクセスされる可能性が高いからである。このようにしてキャッシュメモリに格納されるデータを、前述のプリフェッチされるデータ(シーケンシャルにアクセスされるデータ)に対して、ランダムデータと呼ぶことができる。
制御部1aは、LRUのアルゴリズムを用いて、キャッシュメモリM1に含まれるメモリブロックBL1,BL2,BL3,・・・を管理する。あるいは、メモリブロックBL1,BL2,BL3,・・・それぞれには、記憶装置2から読み出されたデータが格納される。このため、制御部1aは、LRUのアルゴリズムを用いて、メモリブロックBL1,BL2,BL3,・・・それぞれに格納されるデータを管理するということもできる。
制御部1aは、メモリブロックBL1,BL2,BL3,・・・それぞれの管理に、LRUリストを用いる。LRUリストは、例えば、構造体と呼ばれるリスト要素がポインタによって順番に連結されたデータ構造をもつデータである。例えば、LRUリストの先頭のリスト要素が、LRU側(当該LRUリストに属するメモリブロックのうち、前回のアクセスから最も時間が経過しているメモリブロックまたは当該メモリブロックに格納されたデータ)に対応する。一方、LRUリストの末尾のリスト要素が、MRU(Most Recently Used)側(当該LRUリストに属するメモリブロックのうち、最後にアクセスされたメモリブロックまたは当該メモリブロックに格納されたデータ)に対応する。制御部1aは、新データをキャッシュメモリM1に格納する際、キャッシュメモリM1に空きがなければ、LRUリストのLRU側(先頭)のリスト要素に対応するメモリブロックに新データを格納する(該当メモリブロック内の旧データは消される)。
ここで、制御部1aは、2つのLRUリストを用いる。1つ目は第1LRUリストL1である。2つ目は第2LRUリストL2である。例えば、第1LRUリストL1および第2LRUリストL2は、ある時点で次のリスト要素を有する。
第1LRUリストL1は、リスト要素L1a,L1b,L1c,・・・,L1mを有する。リスト要素L1a,L1b,L1c,・・・,L1mはこの順番でポインタにより連結されている。リスト要素L1aが第1LRUリストL1の先頭である。リスト要素L1mが第1LRUリストL1の末尾である。
第2LRUリストL2は、リスト要素L2a,L2b,L2c,・・・,L2nを有する。リスト要素L2a,L2b,L2c,・・・,L2nはこの順番でポインタにより連結されている。
メモリブロックBL1,BL2,BL3,・・・それぞれは、第1LRUリストL1または第2LRUリストL2のリスト要素に対応付けられている。例えば、メモリブロックBL1はリスト要素L1aに対応付けられている。メモリブロックBL2はリスト要素L1bに対応付けられている。メモリブロックBL3はリスト要素L2bに対応付けられている。
第1LRUリストL1は、記憶装置2から新たに読み出されたデータを書き込んだメモリブロックを管理するために用いられる。例えば、制御部1aは、第1LRUリストL1を用いて、プリフェッチされたデータおよびキャッシュヒット回数0回のランダムデータを格納したメモリブロックを管理する。
第2LRUリストは、キャッシュヒットの実績のあるデータが書き込まれたメモリブロックを管理するために用いられる。例えば、制御部1aは、第1LRUリストL1で管理されるメモリブロックのうち、キャッシュヒット回数1回以上のデータを格納したメモリブロックを、第2LRUリストL2を用いて管理する。すると、第2LRUリストL2のサイズを、第1LRUリストL1のサイズよりも大きくすることで、第2LRUリストで管理されるメモリブロックに格納されたデータを、キャッシュメモリM1に長く留めることができる。
このようにヒット回数の多いデータを保護するためのLRUリストと、それ以外のデータ用のLRUリストとを設け、何度もヒットする有用データを保護するメモリブロックの管理方式としてARC(Adaptive Replacement Cache)と呼ばれる方法がある。
一方、制御部1aは次のような制御を行う。
制御部1aは、第1LRUリストL1で管理される第1メモリブロックが参照されたとき、第1メモリブロックのデータがプリフェッチされたデータであるか否かを判定する。第1メモリブロックのデータがプリフェッチされたデータの場合、制御部1aは、第1メモリブロックの第1LRUリストL1による管理を維持する。第1メモリブロックのデータがプリフェッチされていないデータの場合、制御部1aは、第1メモリブロックを管理するLRUリストを第1LRUリストL1から第2LRUリストL2に変更する。
制御部1aは、第1LRUリストL1で管理される第1メモリブロックが参照されたとき、第1メモリブロックのデータがプリフェッチされたデータであるか否かを判定する。第1メモリブロックのデータがプリフェッチされたデータの場合、制御部1aは、第1メモリブロックの第1LRUリストL1による管理を維持する。第1メモリブロックのデータがプリフェッチされていないデータの場合、制御部1aは、第1メモリブロックを管理するLRUリストを第1LRUリストL1から第2LRUリストL2に変更する。
例えば、制御部1aは、メモリブロックBL2(上記第1メモリブロックに相当)に格納されたデータに対するアクセス要求を受け付けたとする。この場合、制御部1aは、要求されたデータが、メモリブロックBL2に格納されていることを検出する。そして、制御部1aは、メモリブロックBL2に格納されたデータが、プリフェッチされたデータであるか否かを判定する。例えば、制御部1aは、メモリブロックBL2に該当のデータを格納する際に、該当のデータがプリフェッチによりメモリブロックBL2に格納されたものであるか否かを示す識別情報を、メモリブロックBL2に対応するリスト要素L1bに設定してもよい。すると、制御部1aは、メモリブロックBL2に格納されたデータが、プリフェッチされたデータであるか否かを、リスト要素L1bを参照することで判定できる。
制御部1aは、メモリブロックBL2に格納されたデータが、プリフェッチされたデータの場合、メモリブロックBL2に対応するリスト要素L1bを、第1LRUリストL1の末尾に移動させる。より具体的には、制御部1aは、リスト要素L1mの次のリスト要素を示すポインタにリスト要素L1bのアドレスを設定する。制御部1aは、リスト要素L1aの次のリスト要素を示すポインタにリスト要素L1cのアドレスを設定する。すなわち、制御部1aは、メモリブロックBL2の第1LRUリストL1による管理を維持する。
制御部1aは、メモリブロックBL2に格納されたデータが、プリフェッチされていないデータの場合(プリフェッチされたデータでない場合)、メモリブロックBL2に対応するリスト要素L1bを、第2LRUリストL2の末尾に移動させる。より具体的には、制御部1aは、リスト要素L2nの次のリスト要素を示すポインタにリスト要素L1bのアドレスを設定する。制御部1aは、リスト要素L1aの次のリスト要素を示すポインタにリスト要素L1cのアドレスを設定する。すなわち、制御部1aは、メモリブロックBL2を管理するLRUリストを、第1LRUリストL1から第2LRUリストL2に変更する。
こうして、制御部1aは、第1LRUリストL1で管理されるデータのうち、プリフェッチされたデータについては、キャッシュヒットしても、第1LRUリストL1による管理を維持する。すなわち、制御部1aは、当該プリフェッチされたデータを格納したメモリブロックについては、キャッシュヒットしても、第2LRUリストL2での管理に変更しない。
ところで、プリフェッチされたデータとランダムデータとを同等に扱うことも考えられる。すなわち、プリフェッチされたデータを格納したメモリブロックもキャッシュヒットに応じて、第1LRUリストL1から第2LRUリストL2に移行して管理することが考えられる。しかし、その場合、参照されなくなったデータがキャッシュメモリM1に残存してしまう可能性が高まる。プリフェッチされたデータは、シーケンシャルにアクセスされるデータ(例えば、ストリーミングされるデータなど)の読み出しに利用されることが多く、ある短期間に1回以上参照された後は参照されなくなることが多いからである。
そこで、制御部1aは、プリフェッチされたデータを格納したメモリブロックについては、LRUリスト間の移動を抑え、第1LRUリストL1での管理に留めることで、当該メモリブロックが第2LRUリストL2で管理されることを抑制する。制御部1aは、第2LRUリストL2では、キャッシュヒットの実績のあるランダムデータを格納したメモリブロックを管理し、プリフェッチされたデータを格納したメモリブロックを管理しない。すると、第2LRUリストL2において、プリフェッチされたデータを格納したメモリブロックのリスト要素が残存することを防げる。したがって、キャッシュメモリM1にプリフェッチされたデータが残存することを抑えることができ、キャッシュメモリM1を効率的に利用できる。
[第2の実施の形態]
図2は、第2の実施の形態のストレージ装置のハードウェア例を示す図である。ストレージ装置10は、制御装置100およびディスク装置200を有する。制御装置100は、コントローラマネージャ(CM:Controller Manager)あるいは単にコントローラと呼ばれるものでもよい。制御装置100は、ディスク装置200に対するデータアクセスを制御する。制御装置100は、第1の実施の形態の情報処理装置1の一例である。
図2は、第2の実施の形態のストレージ装置のハードウェア例を示す図である。ストレージ装置10は、制御装置100およびディスク装置200を有する。制御装置100は、コントローラマネージャ(CM:Controller Manager)あるいは単にコントローラと呼ばれるものでもよい。制御装置100は、ディスク装置200に対するデータアクセスを制御する。制御装置100は、第1の実施の形態の情報処理装置1の一例である。
ディスク装置200は、1または複数のHDDを含む。ディスク装置200は、ドライブエンクロージャ(DE:Drive Enclosure)やディスクシェルフなどと呼ばれるものでもよい。制御装置100は、RAID(Redundant Arrays of Independent Disks)の技術により、ディスク装置200に含まれる複数のHDDを組み合わせて論理的な記憶領域を実現してもよい。ストレージ装置10は、ディスク装置200と併せて、SSD(Solid State Drive)などの他の種類の記憶装置を備えてもよい。
制御装置100は、プロセッサ101、RAM102、NVRAM(Non-Volatile RAM)103、DI(Drive Interface)104、媒体リーダ105およびNA(Network Adapter)106を有する。各ユニットは制御装置100のバスに接続されている。
プロセッサ101は、制御装置100の情報処理を制御する。プロセッサ101は、マルチプロセッサであってもよい。プロセッサ101は、例えばCPU、DSP、ASICまたはFPGAなどである。プロセッサ101は、CPU、DSP、ASIC、FPGAなどのうちの2以上の要素の組み合わせであってもよい。
RAM102は、制御装置100の主記憶装置である。RAM102は、プロセッサ101に実行させるOS(Operating System)やファームウェアのプログラムの少なくとも一部を一時的に記憶する。また、RAM102は、プロセッサ101による処理に用いる各種データを記憶する。RAM102は、例えば、DRAM(Dynamic RAM)である。
RAM102には、ディスク装置200から読み出したデータを格納するためのキャッシュメモリ(キャッシュと称する)C1が設けられている。キャッシュC1は、RAM102のある記憶領域を所定サイズに区分した複数のメモリブロックの集合である。メモリブロックを「キャッシュページ」または「ページ」と称することがある。すなわち、キャッシュC1は複数のキャッシュページ(または複数のページ)の集合であるともいえる。
NVRAM103は、制御装置100の補助記憶装置である。NVRAM103は、OSのプログラム、ファームウェアのプログラム、および各種データを記憶する。
DI104は、ディスク装置200と通信するためのインタフェースである。例えば、DI104として、SAS(Serial Attached SCSI)などのインタフェースを用いることができる。なお、SCSIは、Small Computer System Interfaceの略である。
DI104は、ディスク装置200と通信するためのインタフェースである。例えば、DI104として、SAS(Serial Attached SCSI)などのインタフェースを用いることができる。なお、SCSIは、Small Computer System Interfaceの略である。
媒体リーダ105は、記録媒体21に記録されたプログラムやデータを読み取る装置である。記録媒体21として、例えば、フラッシュメモリカードなどの不揮発性の半導体メモリを使用することができる。媒体リーダ105は、例えば、プロセッサ101からの命令に従って、記録媒体21から読み取ったプログラムやデータをRAM102またはNVRAM103に格納する。
NA106は、ネットワーク20を介して他の装置と通信を行う。例えば、ネットワーク20には、ストレージ装置10に格納されたデータを用いて業務処理を行うコンピュータ(図2では図示を省略している)が接続される。その場合、NA106は、当該コンピュータから、ネットワーク20を介して、ディスク装置200に格納されたデータに対するアクセス要求を受信する。
図3は、キャッシュページの例を示す図である。キャッシュC1は、複数のキャッシュページ(単にページと称する)を有する。ページは、キャッシュC1の記憶領域を一定サイズ毎に分割した、キャッシュC1の管理単位である。キャッシュC1は、ページP0,P1,P2,P3,・・・を含む。
例えば、プロセッサ101は、あるアクセス要求に対してキャッシュミスした際には、ディスク装置200からデータを取得し、キャッシュC1に格納する。あるいは、プロセッサ101は、あるデータをディスク装置200からプリフェッチして、キャッシュC1に格納することもある。何れの場合でも、キャッシュC1に空きがなければ、何れかのページを選択して、データを置換することになる。制御装置100は、何れのページを置換対象とするかを決定するために、LRUのアルゴリズムを用いる。
図4は、プリフェッチデータのアクセスパターンの例を示す図である。プロセッサ101は、連続的にアクセスされ、将来読み出し要求が来ると予測されるデータを、事前にディスク装置200から読み出して、キャッシュC1に格納しておき、当該データに対する読み出し要求への応答時間を削減する。このような手法は、データの先読み(プリフェッチ)と呼ばれる。先読みを行うことを、「プリフェッチする」ということがある。ただし、プリフェッチされたデータ(プリフェッチデータ)は、被アクセスを予測してキャッシュC1に格納したデータであるため、プリフェッチ時点においては、実際に使用されるかどうかは未確定である。
また、プリフェッチデータは、シーケンシャルにアクセスされるデータであるため、ある期間において一時的にアクセスされることが多い。すなわち、各ページは、アドレス連続的・一時的にアクセスされた後、アクセスされなくなる。なお、当該期間において、1つのページが複数回アクセスされることはある。
図5は、ランダムデータのアクセスパターンの例を示す図である。前述のシーケンシャルアクセスされるデータに対して、ランダムアクセスされるデータをランダムデータと呼べる。ランダムデータは、あるアクセス要求に対してキャッシュミスした際に、プロセッサ101によりディスク装置200から読み出され、キャッシュC1に格納される。キャッシュC1に格納されたランダムデータに対するアクセスは、様々である。このため、ランダムデータに対するその後のアクセス状況に応じて、一度しかアクセスされないページや、同じ箇所(ページ)が何度もアクセスされる、いわゆる“ホットスポット”となるページも存在することになる。
制御装置100は、このようにプリフェッチデータやランダムデータが格納されるキャッシュC1の各ページを効率的に管理する機能を提供する。
図6は、制御装置の機能例を示す図である。制御装置100は、キャッシュ制御部110および管理情報記憶部120を有する。キャッシュ制御部110の機能は、RAM102に記憶されたプログラムをプロセッサ101が実行することで発揮される。管理情報記憶部120は、RAM102またはNVRAM103に確保された記憶領域として実現される。
図6は、制御装置の機能例を示す図である。制御装置100は、キャッシュ制御部110および管理情報記憶部120を有する。キャッシュ制御部110の機能は、RAM102に記憶されたプログラムをプロセッサ101が実行することで発揮される。管理情報記憶部120は、RAM102またはNVRAM103に確保された記憶領域として実現される。
キャッシュ制御部110は、ディスク装置200に格納されたデータに対するアクセス要求を受信する。アクセス要求は、例えば、ネットワーク20に接続されたコンピュータによって発行される。キャッシュ制御部110は、キャッシュミスした場合はディスク装置200から要求されたデータを読み出してアクセス要求元に応答し、当該データをキャッシュC1に格納する。キャッシュ制御部110は、キャッシュヒットした場合はキャッシュC1から読み出したデータをアクセス要求元に応答する。キャッシュ制御部110は、キャッシュC1に含まれる複数のページを、2つのLRUリストによって管理する。第1のLRUリストを“LRU1”と呼ぶ。第2のLRUリストを“LRU2”と呼ぶ。キャッシュ制御部110が管理するLRUリストは、先頭側がLRU側に相当し、末尾側がMRU側に相当する。
キャッシュ制御部110は、キャッシュヒット判定部111、置換ページ決定部112およびプリフェッチ制御部113を有する。
キャッシュヒット判定部111は、アクセス要求で要求されたデータが、キャッシュC1に存在する(キャッシュヒット)か、または、キャッシュC1に存在しない(キャッシュミス)か、を判定する。
キャッシュヒット判定部111は、アクセス要求で要求されたデータが、キャッシュC1に存在する(キャッシュヒット)か、または、キャッシュC1に存在しない(キャッシュミス)か、を判定する。
キャッシュヒット判定部111は、キャッシュヒットした場合には、要求されたデータをキャッシュC1から読み出して、アクセス要求元に送信する。このとき、キャッシュヒット判定部111は、要求されたデータを、LRU1で管理されるページから読み出したか、または、LRU2で管理されるページから読み出したかに応じて、LRU1およびLRU2に対する操作が異なる。
まず、LRU1で管理されるページからデータを読み出した場合である。このとき、読み出したデータがプリフェッチデータであれば、キャッシュヒット判定部111は、当該プリフェッチデータを格納したページのLRU1による管理を維持する。すなわち、キャッシュヒット判定部111は、当該ページのリスト要素をLRU1のMRU側(末尾)に移動させる。一方、読み出したデータがプリフェッチデータでなければ、キャッシュヒット判定部111は、当該データを格納したページを管理するLRUリストを、LRU1からLRU2に変更する。すなわち、キャッシュヒット判定部111は、当該ページのリスト要素をLRU2のMRU側(末尾)に移動させる。
次に、LRU2で管理されるページからデータを読み出した場合である。このとき、読み出したデータは、プリフェッチデータではなく、ランダムデータである。キャッシュヒット判定部111は、当該データを格納したページのリスト要素をLRU2のMRU側(末尾)に移動させる。
キャッシュヒット判定部111は、キャッシュミスした場合には、要求されたデータ(ランダムデータ)をディスク装置200から読み出して、アクセス要求元に送信する。キャッシュヒット判定部111は、キャッシュミスした場合、キャッシュC1の新たなページを置換ページ決定部112から取得し、ディスク装置200から読み出したデータを当該ページに格納する。このとき、キャッシュヒット判定部111は、LRU1を操作して、新たなデータを格納したページに対応するリスト要素を、LRU1のMRU側(末尾)に連結する。
置換ページ決定部112は、キャッシュヒット判定部111またはプリフェッチ制御部113からの新たなページの要求に応じて、キャッシュC1の何れかのページを、要求元のキャッシュヒット判定部111またはプリフェッチ制御部113に提供する。置換ページ決定部112は、キャッシュC1に空きページがあれば、空きページを提供する。置換ページ決定部112は、キャッシュC1に空きページがなければ、LRU1またはLRU2に基づいて、置換対象とするページを決定する。
プリフェッチ制御部113は、ディスク装置200に格納されたデータに対するシーケンシャルなアクセスを検出し、プリフェッチを行う。プリフェッチ制御部113は、プリフェッチを行う際に、プリフェッチデータを格納するための新たなページを置換ページ決定部112から取得し、プリフェッチデータを格納する。
管理情報記憶部120は、キャッシュヒット判定部111、置換ページ決定部112およびプリフェッチ制御部113の処理に用いられる各種のデータを記憶する。例えば、管理情報記憶部120は、前述のLRU1およびLRU2を記憶する。また、管理情報記憶部120は、プリフェッチ制御部113がシーケンシャルなアクセスを検出するためのパラメータを記憶する。
図7は、2つのLRUによるページ管理の例を示す図である。前述のように、キャッシュ制御部110は、2つのLRUリスト(LRU1およびLRU2)を用いてキャッシュC1に格納したデータを管理する。図7では、プリフェッチデータを格納したページをプリフェッチページと称している。また、ランダムデータを格納したページをランダムページと称している。
キャッシュ制御部110は、プリフェッチデータのページ(プリフェッチページ)、および、キャッシュヒット0回のランダムデータのページ(ランダムページ)を、LRU1により管理する。キャッシュ制御部110は、キャッシュヒット1回以上のランダムデータのページ(ランダムページ)を、LRU2により管理する。
具体的には、キャッシュヒット判定部111は、LRU1で管理されるページが参照されたとき、該当ページに格納されたデータが、プリフェッチデータである場合、当該ページのLRU1による管理を維持する。この処理は、次のように表わすこともできる。すなわち、キャッシュヒット判定部111は、LRU1で管理されるページが参照されたとき、当該ページがプリフェッチページである場合、当該ページのLRU1による管理を維持する。
一方、キャッシュヒット判定部111は、LRU1で管理されるページが参照されたとき、該当ページに格納されたデータが、プリフェッチデータではない場合(ランダムデータである場合)、当該ページを管理するLRUリストを、LRU1からLRU2に変更する。この処理は、次のように表わすこともできる。すなわち、キャッシュヒット判定部111は、LRU1で管理されるページが参照されたとき、当該ページがプリフェッチページでない場合(ランダムページである場合)、当該ページを管理するLRUリストを、LRU1からLRU2に変更する。
図8は、ページ管理構造体の例を示す図である。ページ管理構造体は、LRUリストおよび後述するFreeList(空きページを管理するためのリスト)のリスト要素である。図8では、各ページ管理構造体と各ページとの対応関係が分かり易いように、キャッシュC1におけるページP0,P1,P2,P3,・・・も図示している。
ページ管理構造体は、ページP0,P1,P2,P3,・・・それぞれに対して1つずつ設けられる。各ページ管理構造体は、管理情報記憶部120(すなわち、RAM102上の所定の記憶領域)に格納される。
ページ管理構造体は、論理ブロックアドレス(LBA:Logical Block Address)、フラグf、次のページ管理構造体を示すポインタnext、前のページ管理構造体を示すポインタprevを含む。
LBAは、該当のページに格納したデータのディスク装置200におけるLBAである。ページが空きの場合、LBAは設定なし(null)である。
フラグfは、該当のページに格納したデータが、プリフェッチデータであるか否かを示す識別情報である。プリフェッチデータである場合、フラグfは“true”(“1”と表わしてもよい)である。プリフェッチデータでない場合、フラグfは“false”(“0”と表わしてもよい)である。ページが空きの場合、フラグfは“false”である。
フラグfは、該当のページに格納したデータが、プリフェッチデータであるか否かを示す識別情報である。プリフェッチデータである場合、フラグfは“true”(“1”と表わしてもよい)である。プリフェッチデータでない場合、フラグfは“false”(“0”と表わしてもよい)である。ページが空きの場合、フラグfは“false”である。
ポインタnextは、次のページ管理構造体が格納されたRAM102上のアドレスを示す情報である。ポインタprevは、前のページ管理構造体が格納されたRAM102上のアドレスを示す情報である。
例えば、図8では、ページP0のページ管理構造体(図8では管理構造体と略記)に対して、LBA=LBA0、フラグf=f0、ポインタnext=next0、ポインタprev=prev0が設定されている。他のページのページ管理構造体も、同様に、LBA、フラグf、ポインタnext、ポインタprevが設定される。
ここで、あるページに対応するページ管理構造体をあるLRUリストに追加することを、「該当ページをLRUリストに登録する」と表わすこともできる。
図9は、各LRUの先頭・末尾へのポインタの管理構造体の例を示す図である。各LRUの先頭・末尾へのポインタの管理構造体は、LRU1およびLRU2それぞれに対して設けられる。LRU1の先頭・末尾へのポインタの管理構造体を、「LRU1の管理構造体」と称する。LRU2の先頭・末尾へのポインタの管理構造体を、「LRU2の管理構造体」と称する。LRU1の管理構造体およびLRU2の管理構造体は、管理情報記憶部120に格納される。
図9は、各LRUの先頭・末尾へのポインタの管理構造体の例を示す図である。各LRUの先頭・末尾へのポインタの管理構造体は、LRU1およびLRU2それぞれに対して設けられる。LRU1の先頭・末尾へのポインタの管理構造体を、「LRU1の管理構造体」と称する。LRU2の先頭・末尾へのポインタの管理構造体を、「LRU2の管理構造体」と称する。LRU1の管理構造体およびLRU2の管理構造体は、管理情報記憶部120に格納される。
LRU1の管理構造体は、ポインタnextLRU1およびポインタprevLRU1を含む。ポインタnextLRU1は、LRU1の先頭のページ管理構造体が格納されているRAM102上のアドレスを示す情報である。ポインタprevLRU1は、LRU1の末尾のページ管理構造体が格納されているRAM102上のアドレスを示す情報である。
LRU2の管理構造体は、ポインタnextLRU2およびポインタprevLRU2を含む。ポインタnextLRU2は、LRU2の先頭のページ管理構造体が格納されているRAM102上のアドレスを示す情報である。ポインタprevLRU2は、LRU2の末尾のページ管理構造体が格納されているRAM102上のアドレスを示す情報である。
図10は、FreeListの先頭へのポインタの管理構造体の例を示す図である。FreeListの先頭へのポインタの管理構造体は、FreeListと呼ばれるリストに対して設けられる。FreeListは、キャッシュC1における空きページを管理するためのリストである。FreeListの先頭へのポインタの管理構造体を、「FreeListの管理構造体」と称する。FreeListの管理構造体は、管理情報記憶部120に格納される。
FreeListの管理構造体は、ポインタheadFreeListを含む。ポインタheadFreeListは、FreeListの先頭のページ管理構造体が格納されているRAM102上のアドレスを示す情報である。
図11は、LRUxにページ管理構造体が繋がる様子の例を示す図である。図11のLRUxの表記は、“LRU1”および“LRU2”の何れかを示す。LRU1およびLRU2それぞれは、ページ管理構造体がポインタにより連結されたリスト構造をもつ。
例えば、LRU1の管理構造体のポインタnextLRU1を起点に、ページ管理構造体のポインタnextを辿ることで、LRU1の先頭のページ管理構造体から、LRU1の末尾のページ管理構造体までを順番に辿れる。LRU1の末尾のページ管理構造体のポインタnextは、LRU1の管理構造体を示す。
同様に、LRU1の管理構造体のポインタprevLRU1を起点に、ページ管理構造体のポインタprevを辿ることで、LRU1の末尾のページ管理構造体から、LRU1の先頭のページ管理構造体までを順番に辿れる。LRU1の先頭のページ管理構造体のポインタprevは、LRU1の管理構造体を示す。
また、例えば、LRU2の管理構造体のポインタnextLRU2を起点に、ページ管理構造体のポインタnextを辿ることで、LRU2の先頭のページ管理構造体から、LRU2の末尾のページ管理構造体までを順番に辿れる。LRU2の末尾のページ管理構造体のポインタnextは、LRU2の管理構造体を示す。
同様に、LRU2の管理構造体のポインタprevLRU2を起点に、ページ管理構造体のポインタprevを辿ることで、LRU2の末尾のページ管理構造体から、LRU2の先頭のページ管理構造体までを順番に辿れる。LRU2の先頭のページ管理構造体のポインタprevは、LRU2の管理構造体を示す。
キャッシュ制御部110は、各構造体に含まれるポインタの設定を変更することで、LRU1およびLRU2に連結されたページ管理構造体の連結順序を変更できる。キャッシュ制御部110は、LRUxの先頭または末尾のページ管理構造体を変更する場合は、LRUxの管理構造体に含まれるポインタnextLRUxやポインタprevLRUxの設定を、該当のページ管理構造体を指すように変更する。
図12は、FreeListにページ管理構造体が繋がる様子の例を示す図である。FreeListは、ページ管理構造体がポインタにより連結されたリスト構造をもつ。
例えば、FreeListの管理構造体のポインタheadFreeListを起点に、ページ管理構造体のポインタnextを辿ることで、FreeListの先頭のページ管理構造体から、FreeListの末尾のページ管理構造体までを順番に辿れる。FreeListに属するページ管理構造体は、ポインタprevを管理しなくてよい。キャッシュC1にデータを格納する際、FreeListの先頭のページ管理構造体に対応するページから使用していけばよいからである。したがって、FreeListに属するページ管理構造体では、ポインタprevは、設定なし(null)である。
例えば、FreeListの管理構造体のポインタheadFreeListを起点に、ページ管理構造体のポインタnextを辿ることで、FreeListの先頭のページ管理構造体から、FreeListの末尾のページ管理構造体までを順番に辿れる。FreeListに属するページ管理構造体は、ポインタprevを管理しなくてよい。キャッシュC1にデータを格納する際、FreeListの先頭のページ管理構造体に対応するページから使用していけばよいからである。したがって、FreeListに属するページ管理構造体では、ポインタprevは、設定なし(null)である。
上記のように、ページ管理構造体を連結するリストは、LRU1,LRU2およびFreeListの計3系統存在することになる。1つのページ管理構造体は、LRU1,LRU2およびFreeListのうちの何れかのリストに属する(ストレージ装置10の電源オン直後は、各ページは空き状態でありFreeListに属することになる)。
図13は、置換ページ決定部が使用するパラメータの例を示す図である。置換ページ決定部112は、LRU1のサイズ制限値Sを使用する。サイズ制限値Sは、LRU1の最大サイズを規定する値である。例えば、サイズ制限値Sは、LRU1に属するページ管理構造体の数(LRU1に属するページの数)により表わされる。サイズ制限値Sは、管理情報記憶部120に予め格納される。
なお、管理情報記憶部120は、LRU2のサイズ制限値も予め記憶している。LRU2のサイズ制限値は、LRU1のサイズ制限値Sよりも大きな値である。
図14は、プリフェッチ制御部が使用するパラメータの例を示す図である。図14(A)は、アクセス管理テーブルT1,T2,・・・,Ttを例示している。管理情報記憶部120は、t個のアクセス管理テーブルT1,T2,・・・,Ttを記憶する。ここで、tは、1以上の整数である。プリフェッチ制御部113は、アクセス管理テーブルT1,T2,・・・,Ttを用いて、t個の連続するアクセスを管理する。
図14は、プリフェッチ制御部が使用するパラメータの例を示す図である。図14(A)は、アクセス管理テーブルT1,T2,・・・,Ttを例示している。管理情報記憶部120は、t個のアクセス管理テーブルT1,T2,・・・,Ttを記憶する。ここで、tは、1以上の整数である。プリフェッチ制御部113は、アクセス管理テーブルT1,T2,・・・,Ttを用いて、t個の連続するアクセスを管理する。
例えば、ストレージ装置10が、ネットワーク20に接続された複数のコンピュータからアクセス要求を受け付ける場合、1つのコンピュータから発行されたアクセスを1つのアクセス管理テーブルで管理することが考えられる。または、1つのコンピュータで複数のソフトウェアが実行されており、アクセス要求を基にアクセス元のソフトウェアを識別できる場合、当該コンピュータの1つのソフトウェアから発行されたアクセスを1つのアクセス管理テーブルで管理してもよい。以下では、アクセス管理テーブルT1のデータ構造を説明するが、アクセス管理テーブルT2,・・・,Ttも同様のデータ構造となる。
アクセス管理テーブルT1は、最近実際にアクセスされた最後のアドレスAlast、プリフェッチ済データの最後尾のアドレスAprefetchおよびアドレス連続性アクセスの回数カウンターCを含む。
アドレスAlastは、ある1つのアクセス元(着目するアクセス元)が連続して発行したアドレス要求で要求されたディスク装置200の論理アドレスのうち、最後の論理アドレス(直近にアクセスされた論理アドレス)を示す。
アドレスAprefetchは、着目するアクセス元によるアクセスに対してプリフェッチ済であるデータの、ディスク装置200における最後尾の論理アドレスを示す。
カウンターCは、アクセス先の論理アドレスに連続性があると判断された回数をカウントするためのカウンターである。
カウンターCは、アクセス先の論理アドレスに連続性があると判断された回数をカウントするためのカウンターである。
図14(B)は、プリフェッチ制御部113が使用する定数値として、管理情報記憶部120に予め格納する値を例示している。第1に、プリフェッチ制御部113は、間隔のあるアドレス連続性で許容する間隔Rを使用する。第2に、プリフェッチ制御部113は、プリフェッチを開始するまでのアドレス連続性のあるアクセス回数N(Nは2以上の整数)を使用する。第3に、プリフェッチ制御部113は、プリフェッチにおける先読み量P(PはRよりも大きいサイズ)を使用する。
間隔Rは、連続して発行されたアクセス要求によりディスク装置200がシーケンシャルにアクセスされているとみなす論理アドレスの間隔である。例えば、プリフェッチ制御部113は、第1のアクセス要求で指定された論理アドレス範囲の末尾の論理アドレスと、第1のアクセス要求の次の第2のアクセス要求で指定された論理アドレス範囲の先頭の論理アドレスとの差によって、連続する2つのアクセス要求によりアクセスされる論理アドレスの間隔を求めることができる。ディスク装置200の論理アドレスに対する、ある程度飛び飛びのアクセスもシーケンシャルなアクセスとして許容する場合には、1よりも大きな所定のサイズをRに設定できる。
アクセス回数Nは、前述のカウンターCの値と比較される値であり、プリフェッチを行うまでにカウントされるべきカウンターCの閾値である。
先読み量Pは、プリフェッチの際に、ディスク装置200から読み出すデータのサイズである。例えば、先読み量Pは、論理アドレスの範囲として指定される。
先読み量Pは、プリフェッチの際に、ディスク装置200から読み出すデータのサイズである。例えば、先読み量Pは、論理アドレスの範囲として指定される。
次に、以上のような制御装置100による処理手順を説明する。
図15は、キャッシュヒット判定の例を示すフローチャートである。以下、図15に示す処理をステップ番号に沿って説明する。
図15は、キャッシュヒット判定の例を示すフローチャートである。以下、図15に示す処理をステップ番号に沿って説明する。
(S11)キャッシュヒット判定部111は、ユーザからのデータに対するアクセス要求(データアクセス要求)を検出する。例えば、ストレージ装置10にネットワーク20を介して接続されたコンピュータを、ここでいうユーザと考えてもよい。
(S12)キャッシュヒット判定部111は、アクセス要求に応じてユーザに通知すべきページのうち、最小アドレスのページがキャッシュC1にあるか否かを判定する。最小アドレスのページがキャッシュにある場合(キャッシュヒット)、処理をステップS13に進める。最小アドレスのページがキャッシュにない場合(キャッシュミス)、処理をステップS16に進める。ここで、アクセス要求には、ディスク装置200におけるアクセス対象の論理アドレス範囲が含まれる。最小アドレスとは、当該アクセス対象の全論理アドレス範囲のうち、ユーザに未だ通知していない(対象のデータを応答していない)部分に属する最小の論理アドレス(ディスク装置200上の論理アドレス)である。最小アドレスのデータを格納したページがキャッシュC1にあるか否かは、管理情報記憶部120に記憶されたLRU1またはLRU2によりページ管理構造体に設定されたLBA値を参照することで判定できる。
(S13)キャッシュヒット判定部111は、最小アドレスに対応するページ管理構造体のフラグfが“true”であるか否かを判定する。フラグfが“true”である場合、処理をステップS14に進める。フラグfが“true”でない場合(すなわち、“false”である場合)、処理をステップS15に進める。
(S14)キャッシュヒット判定部111は、該当のページ管理構造体をLRU1の末尾(MRU側)に移動させる(ポインタの設定変更を行う)。そして、処理をステップS18に進める。
(S15)キャッシュヒット判定部111は、該当のページ管理構造体をLRU2の末尾(MRU側)に移動させる(ポインタの設定変更を行う)。このとき、移動元のLRUリストが、LRU1であることもある。その場合、キャッシュヒット判定部111は、該当のページ管理構造体を管理するLRUリストを、LRU1からLRU2に変更することになる。そして、処理をステップS18に進める。
(S16)キャッシュヒット判定部111は、置換ページ決定部112に新たなページを要求する。キャッシュヒット判定部111は、置換ページ決定部112から新たなページを取得する。
(S17)キャッシュヒット判定部111は、ディスク装置200からページにデータを読み込み、該当のページに対応するページ管理構造体をLRU1の末尾に移動させる(ポインタの設定変更を行う)。すなわち、キャッシュヒット判定部111は、キャッシュミスしたランダムデータをディスク装置200から読み出し、キャッシュC1に新たに格納する。このとき、キャッシュヒット判定部111は、該当のページに対応するページ管理構造体に、ランダムデータの読み出し元の論理アドレス(ディスク装置200における論理アドレス)を設定する(LBA値を設定)。
(S18)キャッシュヒット判定部111は、ユーザに該当のページを通知する。すなわち、キャッシュヒット判定部111は、該当のページに格納されたデータをユーザに送信する。
(S19)キャッシュヒット判定部111は、アクセス要求で要求されたアドレス範囲のページを全てユーザに通知したか否かを判定する。全てユーザに通知した場合、処理を終了する。全てユーザに通知していない場合(未通知部分がある場合)、処理をステップS12に進める。
なお、ステップS15ではキャッシュヒット判定部111は、LRU1からLRU2の末尾にページ管理構造体を移動させる際、LRU2のサイズがLRU2に関するサイズ上限値を上回ったならば、LRU2の先頭に相当するページを解放してFreeListの末尾に追加してもよい。
図16は、置換ページ決定の例を示すフローチャートである。以下、図16に示す処理をステップ番号に沿って説明する。
(S21)置換ページ決定部112は、キャッシュヒット判定部111またはプリフェッチ制御部113から新たなページの要求を受け付ける。置換ページ決定部112は、1つのページの要求を受け付けることもあるし、複数のページの要求を受け付けることもある。
(S21)置換ページ決定部112は、キャッシュヒット判定部111またはプリフェッチ制御部113から新たなページの要求を受け付ける。置換ページ決定部112は、1つのページの要求を受け付けることもあるし、複数のページの要求を受け付けることもある。
(S22)置換ページ決定部112は、管理情報記憶部120に記憶されたFreeListを参照して、FreeListにページがあるか否かを判定する。FreeListにページがある場合(FreeListに属するページ管理構造体がある場合)、処理をステップS23に進める。FreeListにページがない場合(FreeListに属するページ管理構造体がない場合)、処理をステップS24に進める。
(S23)置換ページ決定部112は、FreeListにあるページを選択し、要求元(キャッシュヒット判定部111またはプリフェッチ制御部113)に通知する。FreeListにあるページとは、例えば、FreeListの先頭のページ管理構造体(ポインタheadFreeListで示されるページ管理構造体)に対応するページである。そして、処理をステップS28に進める。
(S24)置換ページ決定部112は、LRU1のページ管理構造体の数がSよりも大きいか否かを判定する。LRU1のページ管理構造体の数がSよりも大きい場合、処理をステップS25に進める。LRU1のページ管理構造体の数がSよりも大きくない場合(S以下の場合)、処理をステップS26に進める。
(S25)置換ページ決定部112は、LRU1の先頭ページを選択する。より具体的には、置換ページ決定部112は、LRU1の先頭のページ管理構造体に対応するページを選択する。LRU1の先頭のページ管理構造体は、LRU1の管理構造体のポインタnextLRU1で示されるページ管理構造体である。置換ページ決定部112は、選択したページを置換対象ページとする。そして、処理をステップS27に進める。
(S26)置換ページ決定部112は、LRU2の先頭ページを選択する。より具体的には、置換ページ決定部112は、LRU2の先頭のページ管理構造体に対応するページを選択する。LRU2の先頭のページ管理構造体は、LRU2の管理構造体のポインタnextLRU2で示されるページ管理構造体である。置換ページ決定部112は、選択したページを置換対象ページとする。そして、処理をステップS27に進める。
(S27)置換ページ決定部112は、置換対象ページを要求元に通知する。置換ページ決定部112は、置換対象ページに対応するページ管理構造体の各設定値を初期値(空き状態である場合の値)に初期化する。
(S28)置換ページ決定部112は、要求された数のページを通知したか否かを判定する。要求された数のページを通知した場合、処理を終了する。要求された数のページを通知していない場合、処理をステップS22に進める。
図17は、プリフェッチ制御の例を示すフローチャートである。以下、図17に示す処理をステップ番号に沿って説明する。
(S31)プリフェッチ制御部113は、ユーザがアドレスA〜A+Lの範囲のデータにアクセス要求したことを検出する。例えば、ストレージ装置10にネットワーク20を介して接続されたコンピュータを、ユーザと考えてもよい。また、アドレスA〜A+Lの範囲は、ディスク装置200における論理アドレスの範囲を示す。Lは、論理アドレスAに対するオフセット値であり、アクセス対象範囲の終点を定める。
(S31)プリフェッチ制御部113は、ユーザがアドレスA〜A+Lの範囲のデータにアクセス要求したことを検出する。例えば、ストレージ装置10にネットワーク20を介して接続されたコンピュータを、ユーザと考えてもよい。また、アドレスA〜A+Lの範囲は、ディスク装置200における論理アドレスの範囲を示す。Lは、論理アドレスAに対するオフセット値であり、アクセス対象範囲の終点を定める。
(S32)プリフェッチ制御部113は、論理アドレスAに最も近いAlastをもつアクセス管理テーブルTk(図17ではテーブルTkと表記)を特定する。
(S33)プリフェッチ制御部113は、ステップS32で特定したアクセス管理テーブルTkについて、Alast<A<Alast+Rが成立するか否かを判定する。成立する場合、処理をステップS34に進める。成立しない場合、処理をステップS40に進める。
(S33)プリフェッチ制御部113は、ステップS32で特定したアクセス管理テーブルTkについて、Alast<A<Alast+Rが成立するか否かを判定する。成立する場合、処理をステップS34に進める。成立しない場合、処理をステップS40に進める。
(S34)プリフェッチ制御部113は、アクセス管理テーブルTkのカウンターCをインクリメントする(カウンターCの設定値に1を加算する)。
(S35)プリフェッチ制御部113は、カウンターCがN以上であるか否かを判定する。カウンターCがN以上である場合、処理をステップS36に進める。カウンターCがN以上でない場合(Nよりも小さい場合)、処理をステップS39に進める。
(S35)プリフェッチ制御部113は、カウンターCがN以上であるか否かを判定する。カウンターCがN以上である場合、処理をステップS36に進める。カウンターCがN以上でない場合(Nよりも小さい場合)、処理をステップS39に進める。
(S36)プリフェッチ制御部113は、アドレスAprefetch〜A+L+Pの範囲(論理アドレスの範囲)のプリフェッチに必要な数のページを置換ページ決定部112に要求する。
(S37)プリフェッチ制御部113は、置換ページ決定部112から要求した数のページの通知を受け付ける(プリフェッチデータを格納するページを確保)。プリフェッチ制御部113は、確保したページにディスク装置200からデータをプリフェッチし、該当のページに対応するページ管理構造体のフラグfを“true”に設定する。また、プリフェッチ制御部113は、プリフェッチデータの読み出し元の論理アドレス(ディスク装置200の論理アドレス)を該当のページに対応するページ管理構造体に設定する(LBA値を設定)。そして、プリフェッチ制御部113は、プリフェッチデータを格納したページのページ管理構造体を、LRU1の末尾に移動させる(ポインタの設定変更を行う)。
(S38)プリフェッチ制御部113は、アクセス管理テーブルTkのAprefetchを、A+L+Pに更新する。そして、処理をステップS41に進める。
(S39)プリフェッチ制御部113は、アクセス管理テーブルTkのAprefetchを、A+Lに更新する。論理アドレスA+Lまでは今回のアクセス要求によりアクセス済になるからである。そして、処理をステップS41に進める。
(S39)プリフェッチ制御部113は、アクセス管理テーブルTkのAprefetchを、A+Lに更新する。論理アドレスA+Lまでは今回のアクセス要求によりアクセス済になるからである。そして、処理をステップS41に進める。
(S40)プリフェッチ制御部113は、アクセス管理テーブルTkのカウンターCを0に更新する。そして、処理をステップS41に進める。
(S41)プリフェッチ制御部113は、アクセス管理テーブルTkのAlastを、A+Lに更新する。
(S41)プリフェッチ制御部113は、アクセス管理テーブルTkのAlastを、A+Lに更新する。
このようにして、キャッシュ制御部110は、LRU1で管理されるページのうち、プリフェッチデータを格納したページについては、キャッシュヒットしても、LRU1による管理を維持する。また、キャッシュ制御部110は、LRU1で管理されるページのうち、ランダムデータを格納したページについては、キャッシュヒットすると、当該ページを管理するLRUリストをLRU1からLRU2に変更する。
ところで、プリフェッチデータは、シーケンシャルにアクセスされるデータの読み出しに利用されることが多く、ある短期間に1回以上参照された後は参照されることがなくなることが多い。すなわち、プリフェッチデータを格納したページは、アドレス連続的に一時的にアクセスされた後はアクセスされなくなることが多い。上記のように、ヒット回数によって使用するLRUリストを分けて有用データを保護するキャッシュページ管理方式において、プリフェッチデータをランダムデータと同等に扱うことも考えられる。具体的には、プリフェッチデータのページがヒットした際に、当該ページを有用LRUリスト(例えば、LRU2)に登録すると、アクセスされなくなったプリフェッチデータがキャッシュに残存してしまう。
そこで、キャッシュ制御部110は、上記のように、プリフェッチデータを格納したページについては、LRU1での管理に留める。すなわち、プリフェッチデータを格納したページに対応するページ管理構造体のLRUリスト間の移動(LRU1からLRU2への移動)を抑止する。キャッシュ制御部110は、LRU2では、キャッシュヒットの実績のあるランダムデータを格納したページを管理し、プリフェッチデータを格納したページを管理しない。すると、LRU2において、プリフェッチデータを格納したページのページ管理構造体が残存することを防げる。その結果、プリフェッチデータがキャッシュC1に残存するのを防ぎ、キャッシュC1を有効活用できるようになる。
ここで、第2の実施の形態の例では、キャッシュ制御部110は、ランダムデータを格納したページのページ管理構造体についてキャッシュヒット1回の実績で、LRU1からLRU2へ移動させるものとした。一方、キャッシュ制御部110は、2回以上の所定回のヒット実績があった場合に当該移動を行ってもよい。
なお、第2の実施の形態では、ストレージ装置10を例示したが、キャッシュ制御部110の機能をサーバコンピュータやクライアントコンピュータが有してもよい。すなわち、サーバコンピュータやクライアントコンピュータを第1の実施の形態の情報処理装置1の一例と考えてもよい。
図18は、サーバコンピュータのハードウェア例を示す図である。サーバコンピュータ300は、プロセッサ301、RAM302、HDD303、画像信号処理部304、入力信号処理部305、媒体リーダ306および通信インタフェース307を有する。各ユニットはサーバコンピュータ300のバスに接続されている。クライアントコンピュータもサーバコンピュータ300と同様のユニットを用いて実現できる。
プロセッサ301は、サーバコンピュータ300の情報処理を制御する。プロセッサ301は、マルチプロセッサであってもよい。プロセッサ301は、例えばCPU、DSP、ASICまたはFPGAなどである。プロセッサ301は、CPU、DSP、ASIC、FPGAなどのうちの2以上の要素の組み合わせであってもよい。
RAM302は、サーバコンピュータ300の主記憶装置である。RAM302は、プロセッサ301に実行させるOSのプログラムやアプリケーションプログラムの少なくとも一部を一時的に記憶する。また、RAM302は、プロセッサ301による処理に用いる各種データを記憶する。
RAM302には、HDD303から読み出したデータを格納するためのキャッシュC2が設けられている。キャッシュC2は、キャッシュC1と同様に、RAM302のある記憶領域を所定サイズに区分したページの集合である。
HDD303は、サーバコンピュータ300の補助記憶装置である。HDD303は、内蔵した磁気ディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。HDD303は、OSのプログラム、アプリケーションプログラム、および各種データを記憶する。サーバコンピュータ300は、フラッシュメモリやSSDなどの他の種類の補助記憶装置を備えてもよく、複数の補助記憶装置を備えてもよい。
画像信号処理部304は、プロセッサ301からの命令に従って、サーバコンピュータ300に接続されたディスプレイ31に画像を出力する。ディスプレイ31としては、CRT(Cathode Ray Tube)ディスプレイや液晶ディスプレイなどを用いることができる。
入力信号処理部305は、サーバコンピュータ300に接続された入力デバイス32から入力信号を取得し、プロセッサ301に出力する。入力デバイス32としては、例えば、マウスやタッチパネルなどのポインティングデバイス、キーボードなどを用いることができる。
媒体リーダ306は、記録媒体33に記録されたプログラムやデータを読み取る装置である。記録媒体33として、例えば、フレキシブルディスク(FD:Flexible Disk)やHDDなどの磁気ディスク、CD(Compact Disc)やDVD(Digital Versatile Disc)などの光ディスク、光磁気ディスク(MO:Magneto-Optical disk)を使用できる。また、記録媒体33として、例えば、フラッシュメモリカードなどの不揮発性の半導体メモリを使用することもできる。媒体リーダ306は、例えば、プロセッサ301からの命令に従って、記録媒体33から読み取ったプログラムやデータをRAM302またはHDD303に格納する。
通信インタフェース307は、ネットワーク34を介して他の装置と通信を行う。通信インタフェース307は、有線通信インタフェースでもよいし、無線通信インタフェースでもよい。
サーバコンピュータ300は、RAM302に記憶されたプログラムをプロセッサ301により実行することで、HDD303へのデータアクセスに対し、キャッシュ制御部110と同様の機能を発揮することができる。
ここで、第1の実施の形態の情報処理は、制御部1aにプログラムを実行させることで実現できる。また、第2の実施の形態の情報処理は、プロセッサ101,301にプログラムを実行させることで実現できる。プログラムは、コンピュータ読み取り可能な記録媒体21,33に記録できる。
例えば、プログラムを記録した記録媒体21,33を配布することで、プログラムを流通させることができる。また、プログラムを他のコンピュータに格納しておき、ネットワーク経由でプログラムを配布してもよい。コンピュータは、例えば、記録媒体21,33に記録されたプログラムまたは他のコンピュータから受信したプログラムを、RAM102やNVRAM103(あるいは、RAM302やHDD303)などの記憶装置に格納(インストール)してもよい。コンピュータは、当該記憶装置からプログラムを読み込んで実行してもよい。
1 情報処理装置
1a 制御部
1b メモリ
2 記憶装置
M1 キャッシュメモリ
BL1,BL2,BL3 メモリブロック
L1 第1LRUリスト
L2 第2LRUリスト
L1a,L1b,L1c,・・・,L1m,L2a,L2b,L2c,・・・,L2n リスト要素
1a 制御部
1b メモリ
2 記憶装置
M1 キャッシュメモリ
BL1,BL2,BL3 メモリブロック
L1 第1LRUリスト
L2 第2LRUリスト
L1a,L1b,L1c,・・・,L1m,L2a,L2b,L2c,・・・,L2n リスト要素
Claims (7)
- 複数のメモリブロックをキャッシュメモリとして制御し、前記メモリブロックを第1LRU(Least Recently Used)リストおよび第2LRUリストにより管理する情報処理装置であって、
前記第1LRUリストで管理される第1メモリブロックが参照されたとき、前記第1メモリブロックのデータがプリフェッチされたデータの場合、前記第1メモリブロックの前記第1LRUリストによる管理を維持し、前記第1メモリブロックのデータがプリフェッチされていないデータの場合、前記第1メモリブロックを管理するLRUリストを前記第1LRUリストから前記第2LRUリストに変更する制御部、
を有する情報処理装置。 - 前記制御部は、前記第1メモリブロックのデータがプリフェッチされたデータの場合、前記第1メモリブロックに対応するリスト要素を前記第1LRUリストの末尾に移動させ、前記第1メモリブロックのデータがプリフェッチされていないデータの場合、前記第1メモリブロックに対応するリスト要素を前記第2LRUリストの末尾に移動させる、請求項1記載の情報処理装置。
- 前記制御部は、新たにデータが書き込まれた前記メモリブロックを前記第1LRUリストに登録する、請求項1または2記載の情報処理装置。
- 前記制御部は、プリフェッチされたデータを何れかのメモリブロックに新たに書き込むと、当該メモリブロックに対応するリスト要素に、プリフェッチされたデータが書き込まれたことを示す識別情報を設定する、請求項1乃至3の何れか1項に記載の情報処理装置。
- 前記制御部は、データの書き込み先の空きメモリブロックがない場合、前記第1LRUリストに属するリスト要素の数と当該リスト要素の数の制限値との比較に応じて、書き込み先のメモリブロックの取得に、前記第1LRUリストおよび前記第2LRUリストの何れを用いるかを選択する、請求項1乃至4の何れか1項に記載の情報処理装置。
- 複数のメモリブロックをキャッシュメモリとして制御し、前記メモリブロックを第1LRUリストおよび第2LRUリストにより管理するキャッシュ制御プログラムであって、
コンピュータに、
前記第1LRUリストで管理される第1メモリブロックが参照されたとき、前記第1メモリブロックのデータがプリフェッチされたデータの場合、前記第1メモリブロックの前記第1LRUリストによる管理を維持し、前記第1メモリブロックのデータがプリフェッチされていないデータの場合、前記第1メモリブロックを管理するLRUリストを前記第1LRUリストから前記第2LRUリストに変更する、
処理を実行させるキャッシュ制御プログラム。 - 複数のメモリブロックをキャッシュメモリとして制御し、前記メモリブロックを第1LRUリストおよび第2LRUリストにより管理するキャッシュ制御方法であって、
コンピュータが、
前記第1LRUリストで管理される第1メモリブロックが参照されたとき、前記第1メモリブロックのデータがプリフェッチされたデータの場合、前記第1メモリブロックの前記第1LRUリストによる管理を維持し、前記第1メモリブロックのデータがプリフェッチされていないデータの場合、前記第1メモリブロックを管理するLRUリストを前記第1LRUリストから前記第2LRUリストに変更する、
キャッシュ制御方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015251547A JP2017117179A (ja) | 2015-12-24 | 2015-12-24 | 情報処理装置、キャッシュ制御プログラムおよびキャッシュ制御方法 |
US15/375,697 US20170185520A1 (en) | 2015-12-24 | 2016-12-12 | Information processing apparatus and cache control method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015251547A JP2017117179A (ja) | 2015-12-24 | 2015-12-24 | 情報処理装置、キャッシュ制御プログラムおよびキャッシュ制御方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2017117179A true JP2017117179A (ja) | 2017-06-29 |
Family
ID=59087864
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015251547A Pending JP2017117179A (ja) | 2015-12-24 | 2015-12-24 | 情報処理装置、キャッシュ制御プログラムおよびキャッシュ制御方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20170185520A1 (ja) |
JP (1) | JP2017117179A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2019095881A (ja) * | 2017-11-20 | 2019-06-20 | 富士通株式会社 | ストレージ制御装置およびプログラム |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10972574B2 (en) * | 2016-04-27 | 2021-04-06 | Seven Bridges Genomics Inc. | Methods and systems for stream-processing of biomedical data |
JP7261037B2 (ja) * | 2019-02-21 | 2023-04-19 | 株式会社日立製作所 | データ処理装置、ストレージ装置およびプリフェッチ方法 |
US11163698B2 (en) | 2019-05-12 | 2021-11-02 | International Business Machines Corporation | Cache hit ratios for selected volumes using synchronous I/O |
US11237730B2 (en) | 2019-05-12 | 2022-02-01 | International Business Machines Corporation | Favored cache status for selected volumes within a storage system |
US11151035B2 (en) | 2019-05-12 | 2021-10-19 | International Business Machines Corporation | Cache hit ratios for selected volumes within a storage system |
US11169919B2 (en) | 2019-05-12 | 2021-11-09 | International Business Machines Corporation | Cache preference for selected volumes within a storage system |
US11176052B2 (en) * | 2019-05-12 | 2021-11-16 | International Business Machines Corporation | Variable cache status for selected volumes within a storage system |
US11372778B1 (en) | 2020-12-08 | 2022-06-28 | International Business Machines Corporation | Cache management using multiple cache memories and favored volumes with multiple residency time multipliers |
US11379382B2 (en) * | 2020-12-08 | 2022-07-05 | International Business Machines Corporation | Cache management using favored volumes and a multiple tiered cache memory |
-
2015
- 2015-12-24 JP JP2015251547A patent/JP2017117179A/ja active Pending
-
2016
- 2016-12-12 US US15/375,697 patent/US20170185520A1/en not_active Abandoned
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2019095881A (ja) * | 2017-11-20 | 2019-06-20 | 富士通株式会社 | ストレージ制御装置およびプログラム |
JP7011156B2 (ja) | 2017-11-20 | 2022-01-26 | 富士通株式会社 | ストレージ制御装置およびプログラム |
Also Published As
Publication number | Publication date |
---|---|
US20170185520A1 (en) | 2017-06-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2017117179A (ja) | 情報処理装置、キャッシュ制御プログラムおよびキャッシュ制御方法 | |
JP5271424B2 (ja) | ダイナミックストレージ階層化によるオンラインデータ配置をボリュームに提供するためのアロケートオンライトのスナップショット機構 | |
US9201794B2 (en) | Dynamic hierarchical memory cache awareness within a storage system | |
US8572325B2 (en) | Dynamic adjustment of read/write ratio of a disk cache | |
US20140082310A1 (en) | Method and apparatus of storage tier and cache management | |
JP6269048B2 (ja) | データ配置制御プログラム、データ配置制御方法およびデータ配置制御装置 | |
US8874823B2 (en) | Systems and methods for managing data input/output operations | |
JP6106028B2 (ja) | サーバ及びキャッシュ制御方法 | |
EP2711841A1 (en) | Data processing method, device and system based on block storage | |
JP6417951B2 (ja) | ストレージ制御装置およびストレージ制御プログラム | |
US20140149668A1 (en) | Prefetching according to attributes of access requests | |
JP2015207123A (ja) | ストレージ装置、ストレージ制御方法およびストレージ制御プログラム | |
US20180349287A1 (en) | Persistent Storage Device Information Cache | |
KR20190020825A (ko) | 캐시 테스트 영역에 기초하여 프리페치된 데이터에 대한 캐시 이전 정책을 선택하기 | |
US20130086307A1 (en) | Information processing apparatus, hybrid storage apparatus, and cache method | |
JP6476969B2 (ja) | ストレージ制御装置、制御プログラムおよび制御方法 | |
JP2017072982A (ja) | 情報処理装置、キャッシュ制御方法およびキャッシュ制御プログラム | |
US20110167203A1 (en) | Method and apparatus for cache control in a data storage device | |
US7246202B2 (en) | Cache controller, cache control method, and computer system | |
US20120124291A1 (en) | Secondary Cache Memory With A Counter For Determining Whether to Replace Cached Data | |
CN108228088B (zh) | 用于管理存储***的方法和设备 | |
JP7197783B2 (ja) | 情報処理システム、管理装置および管理プログラム | |
KR20190019157A (ko) | 캐시 엔트리에서 메모리 액세스 요청의 펜던시를 식별하기 위한 시스템 및 방법 | |
JP7170093B2 (ja) | 記憶デバイスのための改良された先読み能力 | |
JP5800347B2 (ja) | 情報処理装置及びデータアクセス方法 |