JP6799256B2 - ストレージ制御装置、ストレージシステム、ストレージ制御方法およびストレージ制御プログラム - Google Patents

ストレージ制御装置、ストレージシステム、ストレージ制御方法およびストレージ制御プログラム Download PDF

Info

Publication number
JP6799256B2
JP6799256B2 JP2016229640A JP2016229640A JP6799256B2 JP 6799256 B2 JP6799256 B2 JP 6799256B2 JP 2016229640 A JP2016229640 A JP 2016229640A JP 2016229640 A JP2016229640 A JP 2016229640A JP 6799256 B2 JP6799256 B2 JP 6799256B2
Authority
JP
Japan
Prior art keywords
list
data block
requested
cache
entry
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.)
Active
Application number
JP2016229640A
Other languages
English (en)
Other versions
JP2018088020A (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 JP2016229640A priority Critical patent/JP6799256B2/ja
Priority to US15/791,460 priority patent/US10579541B2/en
Publication of JP2018088020A publication Critical patent/JP2018088020A/ja
Application granted granted Critical
Publication of JP6799256B2 publication Critical patent/JP6799256B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/122Replacement control using replacement algorithms of the least frequently used [LFU] type, e.g. with individual count value
    • 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/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • G06F12/0848Partitioned cache, e.g. separate instruction and operand caches
    • 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/128Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • G06F2212/621Coherency control relating to peripheral accessing, e.g. from DMA or I/O device

Description

本発明は、ストレージ制御装置、ストレージシステム、ストレージ制御方法およびストレージ制御プログラムに関する。
キャッシュ領域を管理するためのデータ置換アルゴリズムとして、ARC(Adaptive Replacement Cache)が知られている。ARCでは、キャッシュ領域は、Recencyを基に管理される領域とFrequencyを基に管理される領域とに分割される。また、各領域から追い出されたデータの履歴に基づいて、各領域の大きさが最適化される。
また、ARCをベースとした技術として、H−ARC(Hierarchical−ARC)が知られている。H−ARCでは、キャッシュ領域がさらにダーティデータ用とクリーンデータ用とに分割される。
また、キャッシュに関連する次のような技術が提案されている。例えば、ディスクドライブが有するフラッシュメモリに格納されているデータブロックを、ARCで管理するようにしたハイブリッドディスクドライブが提案されている。また、ライトバック対象のダーティデータをキャッシュ領域上で圧縮して、ディスクドライブへのライトに備えるようにしたディスク制御装置が提案されている。
特開2013−196755号公報 特開平7−129470号公報
「H−ARC: A Non−Volatile Memory Based Cache Policy for Solid State Drives」
ところで、H−ARCでは、キャッシュ領域に格納されたデータが4つのLRU(Least Recently Used)リストによって管理される。第1、第2のリストは、クリーンデータを管理し、第3、第4のリストは、ダーティデータを管理する。また、第1のリストに属するデータのリードが要求されると、このデータは第2のリストに移動する。これにより、第2のリストでは、第1のリストと比較してリード頻度の高いデータが管理される。また、第3のリストに属するデータの更新が要求されると、このデータは第4のリストに移動する。これにより、第4のリストでは、第3のリストと比較して更新頻度の高いデータが管理される。
しかし、H−ARCでは、第3のリストに属するデータのリードが要求された場合、このデータは、更新頻度が高いとは言えないにもかかわらず、第4のリストに移動してしまう。このため、更新頻度が高いデータを正確に管理できなくなり、キャッシュ領域の管理効率が悪化するという問題がある。
1つの側面では、本発明は、キャッシュ領域に格納されたデータの更新頻度を正確に管理できるストレージ制御装置、ストレージシステム、ストレージ制御方法およびストレージ制御プログラムを提供することを目的とする。
1つの態様では、記憶装置に対するアクセスをキャッシュメモリを用いて制御するストレージ制御装置が提供される。このストレージ制御装置は、記憶部と制御部とを有する。記憶部は、キャッシュメモリに格納されたデータブロックのうち読み出しが要求された第1のデータブロックがLRU(Least Recently Used)方式で管理される第1のリストと、キャッシュメモリに格納されたデータブロックのうち書き込みが要求された第2のデータブロックがLRU方式で管理される第2のリストとを記憶する。制御部は、第2のリストに属する第2のデータブロックのうち第3のデータブロックの読み出しが要求されたとき、第2のリストの状態をそのまま維持するとともに、第1のリストにおける第3のデータブロックの所属状態を更新する。
また、1つの態様では、上記の記憶装置とストレージ制御装置とを有するストレージシステムが提供される。
さらに、1つの態様では、記憶装置に対するアクセスをキャッシュメモリを用いて制御するストレージ制御方法が提供される。このストレージ制御方法では、コンピュータは、キャッシュメモリに格納された第3のデータブロックの読み出しが要求されたとき、キャッシュメモリに格納されたデータブロックのうち書き込みが要求された第2のデータブロックがLRU方式で管理される第2のリストを参照し、第3のデータブロックが第2のリストに属する場合、第2のリストの状態をそのまま維持するとともに、キャッシュメモリに格納されたデータブロックのうち読み出しが要求された第1のデータブロックがLRU方式で管理される第1のリストにおける、第3のデータブロックの所属状態を更新する。
また、1つの態様では、上記のストレージ制御方法と同様の処理をコンピュータに実行させるストレージ制御プログラムが提供される。
1つの側面では、キャッシュ領域に格納された更新頻度が高いデータを正確に管理できる。
第1の実施の形態のストレージシステムを示す図である。 第2の実施の形態のストレージシステムを示す図である。 CMのハードウェア例を示す図である。 CMが備える機能の構成例を示す図である。 キャッシュ管理方法の比較例を示す図である。 第2の実施の形態で利用されるエントリのリストの例を示す図である。 R系リストおよびD系リストの管理方法について説明するための図である。 リスト管理テーブルのデータ構成例を示す図である。 メタデータのデータ構成例を示す図である。 リスト操作の一例を示す図である。 ページ分類表の例を示す図である。 I/O処理時の推移表の例を示す図である。 ページ解放判定時の推移表の例を示す図である。 キャッシュリストの大きさの調整方法の例を示す図である。 理想長増減テーブルの例を示す図である。 キャッシュ制御処理の例を示すフローチャート(その1)である。 キャッシュ制御処理の例を示すフローチャート(その2)である。 キャッシュ制御処理の例を示すフローチャート(その3)である。
以下、本実施の形態について図面を参照して説明する。
[第1の実施の形態]
図1は、第1の実施の形態のストレージシステムを示す図である。図1に示すストレージシステムは、ストレージ制御装置10と記憶装置20とを有する。ストレージ制御装置10は、記憶装置20へのアクセスを、キャッシュメモリ11を用いて制御する。例えば、ストレージ制御装置10は、図示しないホスト装置から記憶装置20へのアクセス要求を受信し、アクセスが要求されたデータをキャッシュメモリ11に一時的に格納する。その後、ストレージ制御装置10は、ホスト装置からアクセス要求を受信したとき、アクセスが要求されたデータがキャッシュメモリ11に存在する場合、キャッシュメモリ11にアクセスすることでアクセス速度を向上させる。記憶装置20は、例えば、HDD(Hard Disk Drive)やSSD(Solid State Drive)を1台または複数台備えている。
ストレージ制御装置10は、上記のキャッシュメモリ11に加えて、記憶部12と制御部13とを有する。記憶部12は、例えば、RAM(Random Access Memory)などの揮発性記憶装置の記憶領域として実装される。また、記憶部12とキャッシュメモリ11は、同一の記憶装置によって実現されてもよい。制御部13は、例えば、プロセッサである。プロセッサには、CPU(Central Processing Unit)、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)などを含み得る。また、制御部13は、マルチプロセッサであってもよい。
記憶部12は、リスト12a,12bを記憶する。リスト12aにおいては、キャッシュメモリ11に格納されたデータブロックのうち、読み出しが要求されたデータブロックが、LRU方式で管理される。リスト12bにおいては、キャッシュメモリ11に格納されたデータブロックのうち、書き込みが要求されたデータブロックが、LRU方式で管理される。
なお、図1では例として、記憶部12はさらに、リスト12c,12dを記憶している。リスト12cには、リスト12aに属するデータブロックの読み出しが要求された場合に、このデータブロックの所属先がリスト12aから移動される。これにより、リスト12cには、リスト12aと比較して読み出し頻度の高いデータブロックが所属することになる。リスト12dには、リスト12bに属するデータブロックの更新が要求された場合に、このデータブロックの所属先がリスト12bから移動される。これにより、リスト12dには、リスト12bと比較して更新頻度の高いデータブロックが所属することになる。また、リスト12c,12dが記憶される場合、キャッシュメモリ11に格納されたあるデータブロックが、リスト12a〜12dのいずれにも所属しなくなると、このデータブロックはキャッシュメモリ11から追い出される。
制御部13は、例えば、キャッシュメモリ11に格納されたデータブロック14の読み出し要求を受信すると、次のような処理を実行する。制御部13は、リスト12bを参照し、データブロック14がリスト12bに属しているかを判定する(ステップS1)。図1では、リストの要素を「エントリ」と記載し、一例として、データブロック14に対応するエントリ14aがリスト12bに含まれている場合を示している。
図1の例のように、データブロック14がリスト12bに属している場合、制御部13は、リスト12bの状態をそのまま維持するとともに、リスト12aにおけるデータブロック14の所属状態を更新する(ステップS2)。例えば、データブロック14に対応するエントリ14bがリスト12aにすでに含まれている場合、制御部13は、点線矢印で示すように、エントリ14bをリスト12aからリスト12cに移動させる。なお、リスト12cが存在しない場合、エントリ14bはリスト12aの先頭に移動されてもよい。また、データブロック14に対応するエントリ14bがリスト12a,12cに含まれていない場合、制御部13は、エントリ14bをリスト12aに対して新たに追加する。
ここで、リスト12b,12dにより、キャッシュメモリ11に格納されたデータブロックの更新頻度が管理される。すなわち、更新頻度の比較的低いデータブロックがリスト12bで管理され、更新頻度の比較的高いデータブロックがリスト12dで管理される。また、リスト12dが存在しない場合でも、リスト12bにより、キャッシュメモリ11に格納されたデータブロックの更新頻度が管理される。すなわち、更新頻度の高いデータブロックほど、リスト12bに長く所属する。
本実施の形態のストレージ制御装置10によれば、上記のように、リスト12bに属するデータブロック14の読み出しが要求された場合、リスト12bの状態がそのまま維持される。これにより、読み出し要求が、リスト12b、またはリスト12b,12dによる更新頻度の管理に影響を与えなくなる。したがって、ストレージ制御装置10は、キャッシュメモリ11に格納されたデータブロックの更新頻度を正確に管理できるようになる。
一方、リスト12bに属するデータブロック14の読み出しが要求された場合、リスト12bでなく、リスト12aにおけるデータブロック14の所属状態が更新される。したがって、ストレージ制御装置10は、リスト12a、またはリスト12a,12cを用いて、キャッシュメモリ11に格納されたデータブロックの読み出し頻度を管理できる。
[第2の実施の形態]
図2は、第2の実施の形態のストレージシステムを示す図である。図2に示すストレージシステムは、ストレージ装置100およびホスト装置400を含む。ストレージ装置100とホスト装置400とは、例えば、ファイバチャネル(FC:Fibre Channel)やiSCSI(Internet Small Computer System Interface)などを用いたSAN(Storage Area Network)を介して接続される。
ストレージ装置100は、CE(Controller Enclosure)200およびDE(Device Enclosure)300を有する。CE200は、CM(Controller Module)210を有する。CM210は、ストレージ装置100全体を制御する。
DE300は、複数の記憶装置を搭載する。DE300は、記憶装置としてHDDを備えたディスクアレイ装置である。なお、DE300に搭載される記憶装置は、SSDなどの他の種類の記憶装置であってもよい。
また、CM210は、ホスト装置400からの要求に応じて、DE300に搭載された記憶装置に対するアクセスを制御する。具体的には、CM210は、DE300内の記憶装置の物理記憶領域によって実現される論理ボリュームを作成する。論理ボリュームには、LUN(Logical Unit Number)が割り当てられる。また、論理ボリュームは、一定サイズの論理ブロックに分割され、各論理ブロックにはLBA(Logical Block Address)が付与されている。そして、CM210は、ホスト装置400からのアクセス要求に応じて、論理ボリュームに対するアクセスを制御する。
図3は、CMのハードウェア例を示す図である。CM210は、プロセッサ210a、RAM210b、SSD210c、CA(Channel Adapter)210dおよびDI(Device Interface)210eを有する。
プロセッサ210aは、CM210の情報処理を制御する。プロセッサ210aは、複数のプロセッシング要素を含むマルチプロセッサであってもよい。
RAM210bは、CM210の主記憶装置である。RAM210bは、プロセッサ210aに実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部を一時的に記憶する。また、RAM210bは、プロセッサ210aによる処理に用いる各種データを記憶する。
SSD210cは、CM210の補助記憶装置である。SSD210cは、不揮発性の半導体メモリである。SSD210cには、OSのプログラム、アプリケーションプログラム、および各種データが格納される。なお、CM210は、補助記憶装置として、SSD210cの代わりにHDDを備えていてもよい。
CA210dは、ホスト装置400と通信するためのインタフェースである。DI210eは、DE300と通信するためのインタフェースである。
図4は、CMが備える機能の構成例を示す図である。CM210は、記憶部211、ホストI/O処理部212、キャッシュ制御部213およびディスクI/O処理部214を有する。
記憶部211は、RAM210bに確保した記憶領域として実装される。記憶部211は、キャッシュ領域211aと管理情報記憶部211bとを有する。キャッシュ領域211aは、論理ボリュームに含まれる一部の論理ブロックのデータを一時的に記憶する。キャッシュ領域211aは、ページ単位で管理され、1つのページに1つの論理ブロックのデータが格納される。なお、以下の説明では、論理ブロックのデータを「データブロック」と記載する場合がある。管理情報記憶部211bは、キャッシュ領域211aへの格納制御で利用される各種の管理情報を記憶する。
ホストI/O処理部212、キャッシュ制御部213およびディスクI/O処理部214は、例えば、プロセッサ210aが実行するプログラムのモジュールとして実装される。
ホストI/O処理部212は、ホスト装置400からアクセス要求(ライト要求またはリード要求)を受信し、アクセス要求に応じた処理をキャッシュ制御部213に依頼する。例えば、ライト要求を受信した場合、ホストI/O処理部212は、書き込み先アドレスと、ライト要求とともに受信したライトデータとをキャッシュ制御部213に受け渡し、ライト処理を依頼する。一方、リード要求を受信した場合、ホストI/O処理部212は、読み出し元アドレスをキャッシュ制御部213に受け渡し、リード処理を依頼する。そして、ホストI/O処理部212は、リードデータをキャッシュ制御部213から受け取ってホスト装置400に送信する。
キャッシュ制御部213は、ホストI/O処理部212から依頼されたアクセス処理を、キャッシュ領域211aを用いて実行する。すなわち、キャッシュ制御部213は、リード要求に応じてDE300から読み出したデータブロックや、ライトが要求されたデータブロックを、キャッシュ領域211aに一時的に格納する。そして、キャッシュ制御部213は基本的に、アクセスが要求されたデータブロックがキャッシュ領域211aに存在する場合、DE300にアクセスせずに、キャッシュ領域211aにアクセスすることによってライト処理やリード処理を実行する。また、キャッシュ制御部213は、最近アクセスされたデータブロックや、アクセス頻度の高いデータブロックがキャッシュ領域211aに保持されるように、キャッシュ領域211aの読み書き処理を管理する。
ディスクI/O処理部214は、キャッシュ制御部213からの要求に応じてDE300にアクセスする。例えば、リードが要求されたデータブロックがキャッシュ領域211aに存在しない場合、ディスクI/O処理部214は、キャッシュ制御部213からの要求に応じてそのデータブロックをDE300から読み出す。また、ディスクI/O処理部214は、キャッシュ領域211aに存在するダーティデータを、キャッシュ制御部213からの要求に応じてDE300に書き込む。
次に、キャッシュ領域211aの管理方法について説明する。以下の説明では、まず、図5を用いて、第2の実施の形態のキャッシュ管理方法と比較するための比較例について説明した後、図6以降で第2の実施の形態のキャッシュ管理方法について説明する。
図5は、キャッシュ管理方法の比較例を示す図である。この図5では、H−ARCを用いたキャッシュ管理方法を示す。
H−ARCでは、キャッシュ領域に格納されたデータブロックは、4つのリストC1,C2,D1a,D2aによって管理される。リストC1,C2,D1a,D2aは、いずれもLRUで管理される。また、キャッシュ領域に格納されたデータブロックは、リストC1,C2,D1a,D2aのいずれか1つに属する。
例えば、キャッシュ領域に存在しないデータブロックに対するリードが要求されると、このデータブロックはリストC1に追加される。さらに、リストC1に属するデータブロックに対するリードが要求されると、このデータブロックの所属先はリストC2に移動される。したがって、リストC1には、キャッシュ領域に存在しない状態からリードが1回要求されたデータブロックが所属する、また、リストC2には、キャッシュ領域に存在しない状態からリードが2回以上要求されたデータブロック、換言すると、リードに関して1回以上キャッシュヒットしたデータブロックが所属する。
また、キャッシュ領域に存在しないデータブロックに対するライトが要求されると、ライトが要求されるデータブロックはリストD1aに追加される。さらに、リストD1aに格納されたデータブロックに対する更新が要求されると、更新後のデータブロックの所属先はリストD2aに移動される。したがって、リストD1aには、キャッシュ領域に存在しない状態からライトが1回要求された論理ブロックのデータが所属する。また、リストD2aには、キャッシュ領域に存在しない状態からライトが2回以上要求されたデータブロック、換言すると、1回以上更新されたデータブロックが所属される。
以上の処理により、リストC1,D1aは、Recencyを基に管理されるようになり、リストC2,D2aは、Popularity(またはFrequency)を基に管理されるようになる。
ここで、リストD1a,D2aに属するデータブロックは、リストD1a,D2aから追い出されるときなどの所定のタイミングで、DE300にライトバックされる。リストD1aからのライトバックでは、キャッシュ領域に格納された後、更新されなかったデータブロックがライトバックされる。一方、リストD2aからのライトバックでは、キャッシュ領域に格納された後に1回以上更新されたデータブロックがライトバックされる。このため、リストD1aよりリストD2aに属するデータブロックの方が、同じ論理ブロックについて、ホスト装置からの書き込み回数に対するDE300への相対的な書き込み(ライトバック)回数が少なくなる。
すなわち、更新頻度の高い論理ブロックのデータがリストD2aに保持されることで、そのようなデータをできるだけ長い時間DE300にライトバックしないような制御が行われる。これにより、ホスト装置からの書き込み回数全体より、DE300への実際の書き込み回数を低減することができる。例えば、バックエンドの記憶装置として、SSDのような書き込み回数に制限のある記憶装置を用いた場合には、その記憶装置への書き込み回数が低減され、その結果、記憶装置の寿命を延ばすことができる。
なお、H−ARCでは、さらにゴーストキャッシュに対応するリストGC1,GC2,GD1a,GD2aが用いられる。リストGC1,GC2,GD1a,GD2aは、いずれもLRUで管理される。リストGC1,GC2,GD1a,GD2aには、それぞれリストC1,C2,D1a,D2aから追い出されたデータブロックが追加される。リストGC1,GC2,GD1a,GD2aに属するデータブロックは、キャッシュ領域には実際には格納されておらず、実際にはリストGC1,GC2,GD1a,GD2aにはそれらのデータブロックのメタデータのみがリンクされている。これらのリストGC1,GC2,GD1a,GD2aは、リストC1,C2,D1a,D2aの大きさを最適化するために用いられる。
ところで、H−ARCには次のような問題がある。上記のように、リストD2aは、Popularity(またはFrequency)を基に管理される。すなわち、リストD2aの目的は、上書きされやすいデータブロックを管理することである。しかし、H−ARCでは、リストD1aに属するデータブロックのリードが要求されると、このデータブロックの所属先はリストD2aに移動される。さらに、このデータブロックのリードが続けて要求されると、このデータブロックはリストD2aに所属し続ける。
このような制御は、例えば、次のような理由から行われる。上記のデータブロックは、ライトが要求された後にリードが要求されており、アクセス頻度が高いと考えられることから、Popularityを基に管理されるリストに移動させて、キャッシュ領域から落ちにくくするべきと考えられる。ただし、このデータブロックはライトが要求されたダーティデータであるので、リストD2aに移動される。
しかし、上記のようなケースでは、ライトが1回しか要求されなかったデータブロックがリストD2aに保持されてしまう。すなわち、リード頻度は高いものの、上書きの頻度が高いとは言えない論理ブロックのデータが、リストD2aに保持される。このため、上書きされやすいデータブロックを保持するという本来の目的に合致しないデータブロックが、リストD2aの一部を占拠することになる。その結果、キャッシュ領域の管理効率が悪化し、DE300へのライトバック回数の低減効果が阻害されるという問題がある。
以下、第2の実施の形態のキャッシュ管理方法について説明する。本実施の形態では、リードヒットしやすいと考えられるデータブロックを管理するためのリストと、ダーティデータを管理するためのリストとが、互いに独立したリストとして設けられる。これにより、リード頻度が、上書きのされやすさの判定に影響を与えないようにし、上書きされやすい論理ブロックについてのライトバック回数を確実に低減できるようにする。
図6は、第2の実施の形態で利用されるエントリのリストの例を示す図である。本実施の形態では、R系リスト221とD系リスト222が利用される。R系リスト221は、リードヒットしやすいと考えられるデータブロックに対応するエントリのリストである。D系リスト222は、ダーティデータに対応するエントリのリストである。
ここで、エントリとは、キャッシュ領域211aに格納されたデータブロックのメタデータ、またはキャッシュ領域211aから追い出されたデータブロックのメタデータにリンクするデータである。
また、R系リスト221に属するエントリと、D系リスト222に属するエントリとは、互いに独立している。このため、同じデータブロックのメタデータにリンクするエントリは、R系リスト221とD系リスト222のどちらか一方だけに存在する場合だけでなく、これらの両方に存在する場合もある。以下、R系リスト221に属するエントリを「R系エントリ」、D系リスト222に属するエントリを「D系エントリ」と記載する場合がある。
R系リスト221は、リストR1,R2,GR1,GR2を含む。D系リスト222は、リストD1,D2,GD1,GD2を含む。リストR1,R2,GR1,GR2,D1,D2,GD1,GD2は、いずれもLRUで管理される。
リストR1,R2は、主にリード要求に応じてキャッシュ領域211aに格納されたデータブロックに対応するエントリが属するリストである。R系リスト221に存在しないエントリに対応するデータブロックのリードが要求されると、このデータブロックに対応するエントリがリストR1の先頭(MRU側、MRU:Most Recently Used)に追加される。また、リストR1に存在するエントリに対応するデータブロックのリードが要求されると、このエントリがリストR2の先頭(MRU側)に移動される。さらに、リストR2に存在するエントリに対応するデータブロックのリードが要求された場合も、このエントリがリストR2の先頭に移動される。
このような制御により、リストR1は、Recencyを基に管理され、リストR2は、Popularity(またはFrequency)を基に管理される。すなわち、リストR1には、対応するエントリがR系リスト221に存在しない状態からリードが1回要求されたデータブロックに対応するエントリが保持される。一方、リストR2には、対応するエントリがR系リスト221に存在しない状態からリードが2回以上要求されたデータブロック、換言すると、リストR1,R2において1回以上ヒットしたデータブロックに対応するエントリが保持される。したがって、リストR2には、リード頻度が高いと考えられるデータブロックに対応するエントリが保持されることになる。
リストGR1には、リストR1から追い出されたエントリが追加される。リストGR2には、リストR2から追い出されたエントリが追加される。また、リストGR1,GR2のいずれかに存在するエントリに対応するデータブロックのリードが要求されると、このエントリがリストR2の先頭に移動される。
次に、リストD1,D2は、ライト要求に応じてキャッシュ領域211aに格納されたデータブロックに対応するエントリが属するリストである。D系リスト222に存在しないエントリに対応するデータブロックへのライトが要求されると、このデータブロックに対応するエントリがリストD1の先頭(MRU側)に追加される。また、リストD1に存在するエントリに対応するデータブロックに対して上書きするようなライトが要求されると、このエントリがリストD2の先頭(MRU側)に移動される。さらに、リストD2に存在するエントリに対して上書きするようなライトが要求された場合も、このエントリがリストD2の先頭に移動される。
このような制御により、リストD1は、Recencyを基に管理され、リストD2は、Popularity(またはFrequency)を基に管理される。すなわち、リストD1には、対応するエントリがD系リスト222に存在しない状態からライトが1回要求されたデータブロックに対応するエントリが保持される。一方、リストD2には、対応するエントリがD系リスト222に存在しない状態からライトが2回以上要求されたデータブロック、換言すると、リストD1,D2において1回以上ヒットしたデータブロックに対応するエントリが保持される。したがって、リストD2には、ライト頻度が高いと考えられるデータブロックに対応するエントリが保持されることになる。
リストGD1には、リストD1から追い出されたエントリが追加される。リストGD2には、リストD2から追い出されたエントリが追加される。また、リストGD1,GD2のいずれかに存在するエントリに対応するデータブロックのライトが要求されると、このエントリがリストD2の先頭に移動される。
ここで、リストD1,D2に属するエントリに対応するデータブロックは、リストD1,D2からリストGD1,GD2に追い出されるときなどの所定のタイミングで、DE300にライトバックされる。リストD1からのライトバックでは、キャッシュ領域211aに格納された後、更新されなかったデータブロックがライトバックされる。一方、リストD2からのライトバックでは、キャッシュ領域211aに格納された後に1回以上更新されたデータブロックがライトバックされる。このため、リストD1よりリストD2の方が、同じ論理ブロックについて、ホスト装置400からの書き込み回数に対するDE300への相対的な書き込み(ライトバック)回数が少なくなる。
すなわち、更新頻度の高い論理ブロックのデータに対応するエントリがリストD2に保持されることで、そのようなデータをできるだけ長い時間DE300にライトバックしないような制御が行われる。これにより、ホスト装置400からの書き込み回数全体より、DE300への実際の書き込み回数を低減することができる。
なお、本実施の形態では、リストR1,R2は、リードが要求されたデータブロックだけでなく、ライトが要求されたデータブロックに対応するエントリも保持し得るものとする。例えば、対応するエントリがリストR1,R2,D1,D2のいずれにも存在しないデータブロックに対するライトが要求された場合に、このデータブロックに対応するエントリは、リストD1だけでなくリストR1にも追加される。エントリがリストR1に追加される理由は、ライトが要求されたデータブロックは、その後にリードが要求される可能性があるので、リードヒットしやすいデータブロックと考えることもできるからである。また、このデータブロックに対するリードがさらに要求された場合には、通常のリードヒット時と同様に、このデータブロックに対応するエントリはリストR1からリストR2に移動される。
このような制御が行われることで、H−ARCの場合とは異なり、リストR1,R2は、ダーティデータに対応するエントリも保持し得る。ただし、リストR1,R2がダーティデータに対応するエントリを保持する場合、このダーティデータに対応するエントリはリストD1,D2のどちらかにも必ず保持されている。
図7は、R系リストおよびD系リストの管理方法について説明するための図である。前述のように、R系リスト221およびD系リスト222に含まれるエントリは、データブロックのメタデータにリンクするデータである。各エントリは、例えば、メタデータに対するリンク情報と、エントリ自身が属するリストにおける前後のエントリへのポインタとを含む。
図7に示すように、R系リスト221に属する各エントリ、D系リスト222に属する各エントリ、および、エントリからリンクされるメタデータは、管理情報記憶部211bに記憶される。なお、少なくとも、対応するデータブロックがキャッシュ領域211aに格納されているメタデータは、対応するデータブロックとともにキャッシュ領域211aに格納されていてもよい。また、管理情報記憶部211bには、R系リスト221およびD系リスト222を管理するためのリスト管理テーブル241も格納される。
ここで、図8は、リスト管理テーブルのデータ構成例を示す図である。リスト管理テーブル241には、リストR1,R2,GR1,GR2,D1,D2,GD1,GD2のそれぞれについて、次の情報が登録される。リスト管理テーブル241には、例えば、対応するリストを識別するためのリスト名、リスト上の先頭エントリへのポインタ、リスト上の末尾エントリへのポインタ、現在のリスト長、および理想長が登録される。理想長とは、後述する計算によって得られる理想的なリスト長の目標値である。なお、現在のリスト長と理想長は、リストに属するエントリの数によって表される。また、リストGR1,GR2,GD1,GD2にそれぞれ対応するリスト管理テーブル241には、理想長は設定されない。
以下、図7に戻って説明を続ける。
前述のH−ARCでは、あるデータブロックに対応するエントリは、リストC1,C2,D1a,D2aおよびリストGC1,GC2,GD1a,GD2aにそれぞれ対応するリストのうち、1つだけに属することができた。これに対して、本実施の形態では、R系リスト221に属するエントリとD系リスト222に属するエントリとは、それぞれ独立している。そして、あるデータブロックに対応するエントリは、R系リスト221だけに属する場合もあるし、D系リスト222だけに属する場合もあるし、R系リスト221とD系リスト222の両方に属する場合もある。
例えば、図7において、メタデータ231aに対応するエントリとしては、リストR1に属するエントリ221aのみが存在している。また、メタデータ231bに対応するエントリとしては、リストGR1に存在するエントリ221bのみが存在している。一方、メタデータ231cに対応するエントリとしては、リストR2に属するエントリ221cと、リストD2に属するエントリ222cとが存在している。また、メタデータ231dに対応するエントリとしては、リストR2に属するエントリ221dと、リストGD2に属するエントリ222dとが存在している。
ここで、図9は、メタデータのデータ構成例を示す図である。メタデータ231には、例えば、LUN、LBA、GR1フラグ、R1フラグ、R2フラグ、GR2フラグ、GD1フラグ、D1フラグ、D2フラグ、GD2フラグが登録される。
LUNは、論理ボリュームの識別番号を示し、LBAは、論理ボリューム上の論理ブロックの識別番号を示す。メタデータ231は、データブロック毎に作成される情報であり、LUNおよびLBAにより、対応するデータブロックが特定される。
GR1フラグは、対応するエントリがリストGR1に属しているか否かを示す。R1フラグは、対応するエントリがリストR1に属しているか否かを示す。R2フラグは、対応するエントリがリストR2に属しているか否かを示す。GR2フラグは、対応するエントリがリストGR2に属しているか否かを示す。
メタデータ231に対応するエントリがR系リスト221に属している場合、GR1フラグ、R1フラグ、R2フラグ、GR2フラグのいずれか1つが“1”に設定され、その他が“0”に設定される。なお、値が“1”の場合、エントリが対応するリストに属していることを示す。一方、メタデータ231に対応するエントリがR系リスト221に属していない場合、GR1フラグ、R1フラグ、R2フラグ、GR2フラグはいずれも“0”に設定される。
GD1フラグは、対応するエントリがリストGD1に属しているか否かを示す。D1フラグは、対応するエントリがリストD1に属しているか否かを示す。D2フラグは、対応するエントリがリストD2に属しているか否かを示す。GD2フラグは、対応するエントリがリストGD2に属しているか否かを示す。
メタデータ231に対応するエントリがD系リスト222に属している場合、GD1フラグ、D1フラグ、D2フラグ、GD2フラグのいずれか1つが“1”に設定され、その他が“0”に設定される。一方、メタデータ231に対応するエントリがD系リスト222に属していない場合、GD1フラグ、D1フラグ、D2フラグ、GD2フラグはいずれも“0”に設定される。
以上のように、GR1フラグ、R1フラグ、R2フラグ、GR2フラグは、対応するエントリのR系リスト221における所属状況を示し、GD1フラグ、D1フラグ、D2フラグ、GD2フラグは、対応するエントリのD系リスト222における所属状況を示す。換言すると、GR1フラグ、R1フラグ、R2フラグ、GR2フラグは、メタデータ231に対応するデータブロックに付加されたR系の属性を示し、GD1フラグ、D1フラグ、D2フラグ、GD2フラグは、このデータブロックに付加されたD系の属性を示す。そして、キャッシュ制御部213は、キャッシュ領域211aに格納された、またはキャッシュ領域211aから追い出されたデータブロックについてのR系、D系の2種類の属性を操作する。これにより、キャッシュ制御部213は、キャッシュ領域211aへのデータの格納やキャッシュ領域211aからのデータの追い出しの処理を制御する。
以下、図7に戻って説明を続ける。
対応するエントリがリストR1,R2,D1,D2の少なくとも1つに属しているメタデータについては、対応するデータブロックがキャッシュ領域211aに格納されている。例えば、リストR1上のエントリ221aからリンクされているメタデータ231aについては、対応するデータブロック232aがキャッシュ領域211aに格納されている。また、リストR2上のエントリ221cとリストD2上のエントリ222cとからリンクされているメタデータ231cについては、対応するデータブロック232cがキャッシュ領域211aに格納されている。さらに、リストR2上のエントリ221dからリンクされているメタデータ231dについては、対応するデータブロック232dがキャッシュ領域211aに格納されている。
一方、対応するエントリがリストGR1,GR2,GD1,GD2の少なくとも1つに属しているものの、リストR1,R2,D1,D2には属していないメタデータについては、対応するデータブロックはキャッシュ領域211aに存在しない。例えば、リストGR1に属するエントリ221bからのみリンクされているメタデータ231bについては、対応するデータブロックはキャッシュ領域211aに存在しない。
このように、リストR1,R2,D1,D2に属するエントリについては、対応する実データがキャッシュ領域211aに必ず格納されている。しかし、リストGR1,GR2,GD1,GD2に属するエントリについては、対応する実データがキャッシュ領域211aに格納されていない場合がある。
また、上記のような構造から、キャッシュ領域211aからデータブロックが追い出されるケースは、次のようなケースとなる。キャッシュ領域211aに格納されたデータブロックに対応するエントリがリストR1,R2のいずれかから追い出されたとき、このデータブロックに対応するエントリがリストD1,D2のどちらにも存在しない場合には、このデータブロックはキャッシュ領域211aから追い出される。また、キャッシュ領域211aに格納されたデータブロックに対応するエントリがリストD1,D2のいずれかから追い出されたとき、このデータブロックに対応するエントリがリストR1,R2のどちらにも存在しない場合には、このデータブロックはキャッシュ領域211aから追い出される。このとき、追い出されるデータブロックがダーティ状態の場合は、データブロックのライトバックが行われる。
なお、以下の説明では、リストR1,R2,D1,D2を「キャッシュリスト」と呼び、リストGR1,GR2,GD1,GD2を「ゴーストリスト」と呼ぶ場合がある。また、アクセスが要求されたデータブロックに対応するエントリがリストR1,R2,D1,D2の少なくとも1つに存在することを、「キャッシュヒット」と呼ぶ場合がある。一方、リードが要求されたデータブロックに対応するエントリがリストGR1,GR2のいずれかに存在することを、「ゴーストヒット」と呼ぶ場合がある。また、ライトが要求されたデータブロックに対応するエントリがリストGD1,GD2のいずれかに存在することも、同様に「ゴーストヒット」と呼ぶ場合がある。
ここで、図7で説明したように、R系リスト221のエントリとD系リスト222のエントリは、独立して管理される。このような管理方法を用いたことにより、キャッシュ制御部213は、ライト頻度に応じたD系リスト222の操作を、リード頻度とは完全に切り離して制御することが可能になっている。これにより、前述したH−ARCでの問題点を解決することが可能になる。
図10は、リスト操作の一例を示す図である。この図10では、対応するエントリがリスト上に存在しないデータブロックについて、ライト要求、リード要求、リード要求が順に発行された場合を示す。図10(A)は、H−ARCを用いた場合を示し、図10(B)は、第2の実施の形態の場合を示す。
H−ARCを用いた場合には、図10(A)に示すように、まず、上記のデータブロックに対するライトが要求されると、この論理ブロックに対応するエントリ501がリストD1aの先頭に追加される(ステップS11)。その後、エントリ501がリストD1aに存在する状態で同じデータブロックに対するリードが要求されると、エントリ501はリストD2aの先頭に移動される(ステップS12)。さらに、エントリ501がリストD2aに存在する状態で同じデータブロックに対するリードが要求されると、エントリ501は再度リストD2aの先頭に移動される(ステップS13)。このように、H−ARCでは、ライトが1回しか要求されておらず、上書き頻度が高いとは言えないデータブロックに対応するエントリ501が、リストD2aに保持され続けてしまう。
これに対して、本実施の形態では、図10(B)に示すように、まず、上記のデータブロックに対するライトが要求されると、このデータブロックに対応するエントリ222eがリストD1の先頭に追加される。これとともに、同じデータブロックに対応するエントリ221eがリストR1の先頭にも追加される(ステップS21)。その後、エントリ221e,222eがリストR1,D1にそれぞれに存在する状態で、同じデータブロックに対するリードが要求されたとする。このとき、リストR1上のエントリ221eは、リストR2の先頭に移動される(ステップS22)。しかし、リストD1上のエントリ222eは移動されず、リストD1上に残る。さらに、エントリ221e,222eがリストR1,D1にそれぞれに存在する状態で、同じデータブロックに対するリードが要求されたとする。このとき、リストR2上のエントリ221eは、再度リストR2の先頭に移動される(ステップS23)。しかし、この場合もリストD1上のエントリ222eは移動されず、リストD1上に残る。
上記のステップS22,S23のようにリードが要求された場合には、R系リスト221上でのエントリの移動は行われるものの、D系リスト222上でのエントリの移動は行われない。このため、エントリ222eは、1回のみライトが要求されたデータブロックに対応するエントリとしてリストD1に残り、2回以上ライトが要求されたデータブロックに対応するエントリを保持するためのリストD2に移動することはない。したがって、リストD2には上書きされやすいと考えられるデータブロックに対応するエントリだけを確実に保持させることができるようになる。その結果、キャッシュ領域211aの管理効率が改善され、DE300へのライトバック回数の低減効果が阻害されなくなる。
次に、リストに対するエントリの所属状態をキャッシュページの種別で表した場合について説明する。なお、キャッシュページのサイズは、論理ブロックのサイズと同じであるものとする。
図11は、ページ分類表の例を示す図である。ページ分類表601は、R系、D系、ページ種別の項目を含む。R系の項目は、キャッシュページ内のデータブロックに対応するエントリが属しているR系リスト221内のリストを示す。D系の項目は、キャッシュページ内のデータブロックに対応するエントリが属しているD系リスト222内のリストを示す。ページ種別の項目は、キャッシュページの種別を表す。
このページ分類表601は、キャッシュ領域211a内のキャッシュページに格納されたデータブロックに対応するエントリの、リストに対する所属状態によって、キャッシュページを分類した一覧表である。例えば、ページ種別“Cross”は、対応するエントリが、リストR1,R2のいずれかに属し、かつ、リストD1,D2のいずれかに属する状態である。ページ種別“Buffer”は、対応するエントリが、リストD1,D2のいずれかに属しているが、R系リスト221においては少なくともリストR1,R2のどちらにも属していない状態である。ページ種別“Clean”は、対応するエントリが、リストR1,R2のいずれかに属しているが、D系リスト222においては少なくともリストD1,D2のどちらにも属していない状態である。なお、ページ種別“−”は、データブロックがキャッシュページに格納されていないため、該当するキャッシュページが存在しないことを示す。
次に、ページ種別の遷移について説明する。
図12は、I/O処理時の推移表の例を示す図である。I/O処理時の推移表602は、I/O種別、推移前のページ種別、推移後のページ種別の項目を含む。I/O種別の項目は、リードとライトのどちらが要求されたかを示す。推移前のページ種別の項目は、推移前のページ種別を示す。推移後のページ種別の項目は、推移後のページ種別を示す。
例えば、推移表602の第3行は、I/O種別“Read”、推移前のページ種別“Buffer”、推移後のページ種別“Cross”を示す。これは、ページ種別が“Buffer”のキャッシュページに格納されたデータブロックに対するリードが要求された場合、対応するエントリがリストR1またはリストR2に登録されることで、ページ種別が“Cross”に推移することを示す。
ここで、上記の推移表602の第2行によれば、推移前のページ種別が“Clean”の場合にリードが要求されると、R系リスト221においては対応するエントリがリストR2に移動される。しかし、D系リスト222においてはエントリの移動が行わず、対応するエントリがリストD1,D2のいずれかに登録されることはない。このため、ページ種別は“Clean”のまま変化しない。このように、リードが要求された場合にはD系リスト222が変更されないことによって、リストD2に目的に合致しないデータブロックに対応するエントリが登録される事態が防止される。
図13は、ページ解放判定時の推移表の例を示す図である。ページ解放判定時の推移表603は、系列、推移前のページ種別、推移後のページ種別の項目を含む。系列の項目は、R系、D系のどちらのキャッシュリストからエントリが追い出されたかを示す。推移前のページ種別の項目は、推移前のページ種別を示す。推移後のページ種別の項目は、推移後のページ種別を示す。
この推移表603において示すように、ページ種別“Cross”のキャッシュページに格納されたデータブロックについて、対応するリストがR系またはD系のキャッシュリストから追い出される場合、対応するリストはR系またはD系のキャッシュリストに残る。このため、データブロックはキャッシュページに残ったままとなり、キャッシュページは解放されない。
一方、ページ種別“Clean”または“Buffer”のキャッシュページに格納されたデータブロックについて、対応するエントリがR系またはD系のキャッシュリストから追い出される場合、対応するエントリはR系、D系のいずれのキャッシュリストにも残らない。このため、データブロックはキャッシュ領域211aから追い出され、対応するキャッシュページが解放される。なお、ページ種別が“Buffer”のキャッシュページに格納されたデータブロックについて、対応するエントリがD系のキャッシュリストから追い出される際、このデータブロックがダーティ状態である場合は、データブロックのライトバックが行われる。
次に、キャッシュリストの大きさの調整方法について説明する。
図14は、キャッシュリストの大きさの調整方法の例を示す図である。
図8に示したように、リスト管理テーブル241には、キャッシュリスト、すなわちリストR1,R2,D1,D2のそれぞれについて、現在のリスト長と理想長とが保持される。理想長とは、リスト長の目標値である。キャッシュ制御部213は、ゴーストヒットが発生した場合、理想長を調整する。また、ゴーストヒットにより、ヒットしたゴーストリスト上のエントリをキャッシュリスト上に移動する必要が生じるため、いずれかのキャッシュリストからエントリを追い出す必要が生じる。キャッシュ制御部213は、理想長の調整後、リストR1,R2,D1,D2のいずれからエントリを追い出すかを決定する。その際、CM210は、現在のリスト長が理想長に近づくように、追い出すエントリを決定する。例えば、CM210は、理想長と現在のリスト長との差分の絶対値が最も大きいリストからエントリを追い出す。
ここで、H−ARCでは、リストC1,C2,D1a,D2aを合わせた大きさがキャッシュ領域の大きさと一致していた。しかし、本実施の形態では、キャッシュ領域211a内のデータブロックに対応するエントリが、R系リスト221とD系リスト222の両方に属することが可能になっている。このため、リストR1,R2,D1,D2を合計した大きさはキャッシュ領域211aより大きくなり得る。したがって、H−ARCと同様の理想長算出方法を用いることができない。
そこで、本実施の形態では、ゴーストリスト、すなわちリストGR1,GR2,GD1,GD2のそれぞれが、Far領域とNear領域とに分割される。そして、キャッシュ制御部213は、ゴーストヒットした場合に、どのゴーストリストにヒットしたかと、Far領域とNear領域のどちらのエントリにヒットしたかとによって、理想長を調整する。
図14では、リストR1,GR1,D1,GD1のそれぞれの先頭(MRU側)は、図14中右側であるものとする。また、リストR2,GR2,D2,GD2のそれぞれの先頭側(MRU側)は、図14中左側であるものとする。また、|R1|,|R2|,|GR1|,|GR2|,|D1|,|D2|,|GD1|,|GD2|は、それぞれリストR1,R2,GR1,GR2,D1,D2,GD1,GD2の現在のリスト長を示す。
図14に示すように、リストGR1のうち、先頭側の長さ|R2|の領域がNear領域に設定され、リストGR2のうち、先頭側の長さ|R1|の領域がNear領域に設定される。ここで、リストR1,R2の合計サイズは、最大でキャッシュサイズ(キャッシュ領域211aのサイズ)であるものとする。この場合、リストR1,GR1の合計サイズと、リストR2,GR2の合計サイズは、いずれも最大でキャッシュサイズとなる。
また、リストGD1のうち、先頭側の長さ|D2|の領域がNear領域に設定され、リストGD2のうち、先頭側の長さ|D1|の領域がNear領域に設定される。ここで、リストD1,D2の合計サイズは、最大でキャッシュサイズであるものとする。この場合、リストD1,GD1の合計サイズと、リストD2,GD2の合計サイズは、いずれも最大でキャッシュサイズとなる。
ここでは一例として、リストGR1にゴーストヒットした場合のリスト長調整方法について説明する。
リストGR1にゴーストヒットするということは、隣接するリストR1のリスト長を拡大する必要があることを意味する。ただし、リストGR1のNear領域のエントリは、Far領域のエントリと比較して、リストR1から追い出されてからの時間が短い。このため、Near領域においてヒットしたエントリは、リストR1がもう少しだけ大きければ、リストR1から追い出される前にリストR2に移動できたと考えられる。したがって、Near領域にヒットした場合は、Far領域にヒットした場合より、リストR1のリスト長を大きく拡大する必要性は低いと考えられる。
このような観点から、リストGR1のNear領域にヒットした場合、キャッシュリスト全体のサイズ、すなわちリストR1,R2の合計サイズを増やす必要性は低いと考えることができる。そこで、キャッシュ制御部213は、リストGR1のNear領域にヒットした場合、リストR1,R2の各理想長の合計値を変えずに、リストR1の理想長を増やし、リストR2の理想長を減らす。
一方、リストGR1のFar領域にヒットした場合には、キャッシュリスト全体のサイズ、すなわちリストR1,R2の合計サイズを増やす必要性が高いと考えることができる。そこで、キャッシュ制御部213は、リストR1の理想長を増やすとともに、リストD1,D2のいずれかの理想長を減らす。
ここで、リストD1,D2のそれぞれの理想長をLd1,Ld2とする。例えば、キャッシュ制御部213は、(Ld1−|D1|)が(Ld2−|D2|)以上の場合、リストD1の理想長Ld1を減らす。また、キャッシュ制御部213は、(Ld1−|D1|)が(Ld2−|D2|)未満の場合、リストD2の理想長Ld2を減らす。
なお、上記のようにリストGR1のエントリにヒットした場合、このエントリはリストR2に追加される。このとき、キャッシュ制御部213は、いずれかのキャッシュリストから末端(LRU側)のエントリを追い出す。例えば、キャッシュ制御部213は、リストR1,R2のどちらかから末端のエントリを追い出す。このとき、キャッシュ制御部213は、リストR1,R2の長さが、それぞれ調整後のリストR1,R2の理想長に近づくように、リストR1,R2のどちらから末端のエントリを追い出すかを決定する。
以上、リストGR1にゴーストヒットした場合の理想長調整方法について説明したが、他のリストにゴーストヒットした場合については、次の図15に示す理想長増減テーブルにしたがって理想長を調整することができる。
図15は、理想長増減テーブルの例を示す図である。なお、図15に示す理想長増減テーブル242は、例えば、管理情報記憶部211bに格納されて、理想長の調整の際にキャッシュ制御部213によって参照されてもよい。
理想長増減テーブル242は、ゴーストリスト、ヒットした領域、理想長減、理想長増の項目を含む。ゴーストリストの項目は、ヒットしたゴーストリストのリスト名を示す。ヒットした領域の項目は、ゴーストリストのNear領域とFar領域のどちらにヒットしたかを示す。理想長減の項目は、理想長を減らすキャッシュリストのリスト名を示す。理想長増の項目は、理想長を増やすキャッシュリストのリスト名を示す。
例えば、理想長増減テーブル242は、ゴーストリスト“GR2”、ヒットした領域“Far領域”、理想長減“D1またはD2”、理想長増“R2”を示す。これは、リストGR2のNear領域にゴーストヒットした場合、キャッシュ制御部213は、リストD1またはリストD2の理想長を減らし、リストR2の理想長を増やすことを示す。
また、例えば、理想長増減テーブル242は、ゴーストリスト“GD1”、ヒットした領域“Far領域”、理想長減“R1またはR2”、理想長増“D1”を示す。これは、リストGD1のFar領域にゴーストヒットした場合、キャッシュ制御部213は、リストR1またはリストR2の理想長を減らし、リストD1の理想長を増やすことを示す。ここで、リストR1またはリストR2のどちらの理想長を減らすかは、例えば次のような方法で決定される。なお、リストR1,R2のそれぞれの理想長をLr1,Lr2とする。キャッシュ制御部213は、(Lr1−|R1|)が(Lr2−|R2|)以上の場合、リストR1の理想長Lr1を減らす。また、キャッシュ制御部213は、(Lr1−|R1|)が(Lr2−|R2|)未満の場合、リストR2の理想長Lr2を減らす。
このように、キャッシュ制御部213は、ゴーストヒットがNear領域とFar領域のどちらで発生したかの違いによって、各リストの理想長を調整する。そして、キャッシュ制御部213は、リストR1,R2,D1,D2の各リスト長が対応する理想長に近づくように、リストR1,R2,D1,D2から追い出すエントリを決定する。これにより、リストR1,R2,D1,D2の各リスト長が適切に調整される。
例えば、リードが要求されるデータブロックが多いと考えられる場合には、R系のキャッシュリストの大きさが拡張され、さらに、リード頻度の高いデータブロックが多いと考えられる場合には、リストR2の大きさが拡張される。これにより、リードヒットの確率を高めることができる。また、ライトが要求されるデータブロックが多いと考えられる場合には、D系のキャッシュリストの大きさが拡張され、さらに、上書きの頻度が高いデータブロックが多いと考えられる場合には、リストD2の大きさが拡張される。これにより、上書きの頻度が高いデータブロックについてのライトバック回数を低減できる。
次に、CM210が実行する処理について、フローチャートを用いて説明する。
図16は、キャッシュ制御処理の例を示すフローチャート(その1)である。図16の処理は、ホストI/O処理部212がホスト装置400からアクセス要求を受信することで開始される。以下、図16に示す処理をステップ番号に沿って説明する。
(S31)キャッシュ制御部213は、アクセスが要求された論理ブロックのデータ(データブロック)がキャッシュ領域211aに存在するか否かを判定する。データブロックが存在する場合、キャッシュ制御部213は、処理をステップS32に進める。データブロックが存在しない場合(キャッシュミスの場合)、キャッシュ制御部213は、処理をステップS51に進める。
(S32)キャッシュ制御部213は、アクセスが要求されたデータブロックが格納されているキャッシュページのページ種別が、Bufferであるか否かを判定する。ページ種別がBufferの場合、キャッシュ制御部213は、処理をステップS33に進める。ページ種別がBuffer以外の場合、キャッシュ制御部213は、処理をステップS36に進める。
(S33)キャッシュ制御部213は、アクセスが要求されたデータブロックに対応するエントリが、リストGR1またはリストGR2に属しているか否かを判定する。エントリがリストGR1またはリストGR2に属している場合、キャッシュ制御部213は、処理をステップS35に進める。エントリがリストGR1,GR2のいずれにも属していない場合、キャッシュ制御部213は、処理をステップS34に進める。
(S34)このケースは、D系リスト222にヒットし、R系リスト221にヒットしなかったケースである。この場合、キャッシュ制御部213は、リストR1の先頭に、アクセスが要求されたデータブロックに対応するエントリを追加する。また、キャッシュ制御部213は、エントリの追加に伴い、このエントリがリンクするメタデータ231、およびリスト管理テーブル241を更新する。そして、キャッシュ制御部213は、処理をステップS41に進める。
(S35)このケースは、リードが要求され、リストGR1またはリストGR2のいずれかにゴーストヒットしたケースである。この場合、キャッシュ制御部213は、R系のゴーストヒット処理を実行する。具体的には、キャッシュ制御部213は、理想長増減テーブル242にしたがって、R系のキャッシュリスト、またはR系およびD系のキャッシュリストの各理想長を調整する。そして、キャッシュ制御部213は、リストR1,R2の現在のリスト長と調整後の理想長とに基づいて、リストR1,R2のいずれかからエントリをゴーストリストに追い出す。
(S36)キャッシュ制御部213は、アクセスが要求されたデータブロックに対応するエントリをリストR2の先頭に移動させる。また、キャッシュ制御部213は、エントリの移動に伴い、このエントリ、エントリがリンクするメタデータ231、およびリスト管理テーブル241を更新する。ただし、キャッシュ制御部213は、メタデータ231のR2フラグに“1”が設定されている場合、メタデータ231を更新しなくてもよい。以上の処理が完了すると、キャッシュ制御部213は、処理をステップS41に進める。
図17は、キャッシュ制御処理の例を示すフローチャート(その2)である。以下、図17に示す処理をステップ番号に沿って説明する。
(S41)キャッシュ制御部213は、ホスト装置400からのアクセス要求がライト要求であるか否かを判定する。アクセス要求がライト要求の場合、キャッシュ制御部213は、処理をステップS42に進める。アクセス要求がリード要求の場合、キャッシュ制御部213は、処理を終了する。
(S42)キャッシュ制御部213は、アクセスが要求されたデータブロックが格納されているキャッシュページのページ種別がCleanであるか否かを判定する。ページ種別がCleanの場合、キャッシュ制御部213は、処理をステップS43に進める。ページ種別がClean以外の場合、キャッシュ制御部213は、処理をステップS46に進める。
(S43)キャッシュ制御部213は、アクセスが要求されたデータブロックに対応するエントリが、リストGD1またはリストGD2に属しているか否かを判定する。エントリがリストGD1またはリストGD2に属している場合、キャッシュ制御部213は、処理をステップS45に進める。エントリがリストGD1,GD2のいずれにも属していない場合、キャッシュ制御部213は、処理をステップS44に進める。
(S44)このケースは、R系リスト221にヒットし、D系リスト222にヒットしなかったケースである。この場合、キャッシュ制御部213は、ライトが要求されたデータブロックに対応するエントリをリストD1の先頭に追加する。また、キャッシュ制御部213は、エントリの追加に伴い、このエントリがリンクするメタデータ231、およびリスト管理テーブル241を更新する。そして、キャッシュ制御部213は、処理を終了する。
(S45)このケースは、ライトが要求され、リストGD1またはリストGD2のいずれかにゴーストヒットしたケースである。この場合、キャッシュ制御部213は、D系のゴーストヒット処理を実行する。具体的には、キャッシュ制御部213は、理想長増減テーブル242にしたがって、D系のキャッシュリスト、またはR系およびD系のキャッシュリストの各理想長を調整する。そして、キャッシュ制御部213は、リストD1,D2の現在のリスト長と調整後の理想長とに基づいて、リストD1,D2のいずれかからエントリをゴーストリストに追い出す。
(S46)キャッシュ制御部213は、アクセスが要求されたデータブロックに対応するエントリをリストD2の先頭に移動させる。また、キャッシュ制御部213は、エントリの移動に伴い、このエントリ、エントリがリンクするメタデータ231、およびリスト管理テーブル241を更新する。ただし、キャッシュ制御部213は、メタデータ231のD2フラグに“1”が設定されている場合、メタデータ231を更新しなくてもよい。以上の処理が完了すると、キャッシュ制御部213は、処理を終了する。
図18は、キャッシュ制御処理の例を示すフローチャート(その3)である。以下、図18に示す処理をステップ番号に沿って説明する。
(S51)キャッシュ制御部213は、アクセスが要求されたデータブロックをキャッシュ領域211aに格納する。具体的には、リードが要求された場合、キャッシュ制御部213は、リードが要求されたデータブロックを、DE300内の記憶装置からディスクI/O処理部214を介して取得し、取得したデータブロックをキャッシュ領域211aに格納する。また、ライトが要求された場合、キャッシュ制御部213は、ホスト装置400から受信したデータブロックをキャッシュ領域211aに格納する。
(S52)キャッシュ制御部213は、アクセスが要求されたデータブロックに対応するエントリが、リストGR1またはリストGR2に属しているか否かを判定する。エントリがリストGR1またはリストGR2に属している場合、キャッシュ制御部213は、処理をステップS54に進める。エントリがリストGR1,GR2のいずれにも属していない場合、キャッシュ制御部213は、処理をステップS53に進める。
(S53)キャッシュ制御部213は、アクセスが要求されたデータブロックに対応するエントリをリストR1の先頭に追加する。また、キャッシュ制御部213は、エントリの追加に伴い、エントリがリンクするメタデータ231、およびリスト管理テーブル241を更新する。キャッシュ制御部213は、該当するメタデータ231が存在しない場合、このメタデータ231を作成する。そして、キャッシュ制御部213は、処理をステップS56に進める。
(S54)キャッシュ制御部213は、R系のゴーストヒット処理を実行する。すなわち、キャッシュ制御部213は、R系のキャッシュリスト、またはR系およびD系のキャッシュリストの各理想長を調整し、リストR1,R2の現在のリスト長と調整後の理想長とに基づいて、リストR1,R2のいずれかからエントリをゴーストリストに追い出す。
(S55)キャッシュ制御部213は、アクセスが要求されたデータブロックに対応するエントリをリストR2の先頭に移動させる。また、キャッシュ制御部213は、エントリの移動に伴い、このエントリ、エントリがリンクするメタデータ231、およびリスト管理テーブル241を更新する。ただし、キャッシュ制御部213は、メタデータ231のR2フラグに“1”が設定されている場合、メタデータ231を更新しなくてもよい。
(S56)キャッシュ制御部213は、ホスト装置400からのアクセス要求がライト要求であるか否かを判定する。アクセス要求がライト要求の場合、キャッシュ制御部213は、処理をステップS57に進める。アクセス要求がリード要求の場合、キャッシュ制御部213は、処理を終了する。
(S57)キャッシュ制御部213は、アクセスが要求されたデータブロックに対応するエントリが、リストGD1またはリストGD2に属しているか否かを判定する。エントリがリストGD1またはリストGD2に属している場合、キャッシュ制御部213は、処理をステップS59に進める。エントリがリストGD1,GD2のいずれにも属していない場合、キャッシュ制御部213は、処理をステップS58に進める。
(S58)キャッシュ制御部213は、アクセスが要求されたデータブロックに対応するエントリをリストD1の先頭に追加する。また、キャッシュ制御部213は、エントリの追加に伴い、エントリがリンクするメタデータ231、およびリスト管理テーブル241を更新する。キャッシュ制御部213は、該当するメタデータ231が存在しない場合、このメタデータ231を作成する。そして、キャッシュ制御部213は、処理を終了する。
(S59)キャッシュ制御部213は、D系のゴーストヒット処理を実行する。すなわち、キャッシュ制御部213は、D系のキャッシュリスト、またはR系およびD系のキャッシュリストの各理想長を調整し、リストD1,D2の現在のリスト長と調整後の理想長とに基づいて、リストD1,D2のいずれかからエントリをゴーストリストに追い出す。
(S60)キャッシュ制御部213は、アクセスが要求されたデータブロックに対応するエントリをリストD2の先頭に移動させる。また、キャッシュ制御部213は、エントリの移動に伴い、このエントリ、エントリがリンクするメタデータ231、およびリスト管理テーブル241を更新する。ただし、キャッシュ制御部213は、メタデータ231のD2フラグに“1”が設定されている場合、メタデータ231を更新しなくてもよい。以上の処理が完了すると、キャッシュ制御部213は、処理を終了する。
なお、第1の実施の形態の情報処理は、ストレージ制御装置10に用いられるプロセッサに、プログラムを実行させることで実現できる。また、第2の実施の形態の情報処理は、プロセッサ210aにプログラムを実行させることで実現できる。プログラムは、コンピュータ読み取り可能な記録媒体に記録できる。
例えば、プログラムを記録した記録媒体は、プログラムを流通させることで配布することができる。また、ホストI/O処理部212、キャッシュ制御部213およびディスクI/O処理部214に相当する機能を実現するプログラムは、別個のプログラムとして各プログラムを別個に配布することができる。ホストI/O処理部212、キャッシュ制御部213およびディスクI/O処理部214の機能は、別個のコンピュータにより実現されてもよい。コンピュータは、例えば、記録媒体に記録されたプログラムを、RAM210b、SSD210cに格納し、プログラムを読み込んで実行してもよい。
10 ストレージ制御装置
11 キャッシュメモリ
12 記憶部
12a〜12d リスト
13 制御部
14 データブロック
14a,14b エントリ
20 記憶装置

Claims (11)

  1. 記憶装置に対するアクセスをキャッシュメモリを用いて制御するストレージ制御装置において、
    前記キャッシュメモリに格納されたデータブロックのうち読み出しが要求された第1のデータブロックがLRU(Least Recently Used)方式で管理される第1のリストと、前記キャッシュメモリに格納されたデータブロックのうち書き込みが要求された第2のデータブロックがLRU方式で管理される第2のリストとを記憶する記憶部と、
    前記第2のリストに属する前記第2のデータブロックのうち第3のデータブロックの読み出しが要求されたとき、前記第2のリストの状態をそのまま維持するとともに、前記第1のリストにおける前記第3のデータブロックの所属状態を更新する制御部と、
    を有するストレージ制御装置。
  2. 前記記憶部は、LRU方式で管理される第3のリストをさらに記憶し、
    前記制御部は、さらに、前記第1のリストに属する前記第1のデータブロックのうち第4のデータブロックの読み出しが要求されたとき、前記第4のデータブロックの所属先を前記第1のリストから前記第3のリストに移動させ、
    前記第3のデータブロックの所属状態の更新では、前記第3のデータブロックが前記第1のリストにも属する場合、前記第3のデータブロックの所属先を前記第1のリストから前記第3のリストに移動させる、
    請求項1記載のストレージ制御装置。
  3. 前記第3のデータブロックの所属状態の更新では、前記第3のデータブロックが前記第1のリストに属さない場合、前記第3のデータブロックを前記第1のリストにも所属させる、
    請求項2記載のストレージ制御装置。
  4. 前記記憶部は、LRU方式で管理される第4のリストをさらに記憶し、
    前記制御部は、さらに、
    前記第2のリストに属する前記第2のデータブロックのうち第5のデータブロックの更新が要求されたとき、更新された前記第5のデータブロックの所属先を前記第2のリストから前記第4のリストに移動させ、
    前記第4のリストに属する第6のデータブロックの読み出しが要求されたとき、前記第4のリストの状態をそのまま維持するとともに、前記第1のリストにおける前記第6のデータブロックの所属状態を更新する、
    請求項2または3記載のストレージ制御装置。
  5. 前記制御部は、さらに、前記第4のリストに属する前記第6のデータブロックの更新が要求されたとき、前記第4のリストにおける前記第6のデータブロックの要素を前記第4のリストの先頭に移動させる、
    請求項4記載のストレージ制御装置。
  6. 前記制御部は、さらに、前記キャッシュメモリに格納された第7のデータブロックが、前記第1乃至第4のリストのいずれにも所属しなくなった場合、前記第7のデータブロックを前記キャッシュメモリから追い出す、
    請求項4または5記載のストレージ制御装置。
  7. 前記記憶部は、LRU方式で管理される第5のリストをさらに記憶し、
    前記制御部は、さらに、
    前記第1のリストから追い出されたデータブロックを前記第5のリストに所属させ、
    前記第5のリストに所属する第8のデータブロックの読み出しが要求されたとき、前記第8のデータブロックの所属先を前記第5のリストから前記第3のリストに移動させるとともに、前記第1のリストの大きさの目標値を算出する、
    請求項4乃至6のいずれか1項に記載のストレージ制御装置。
  8. 前記制御部は、前記第8のデータブロックの読み出しが要求されたとき、前記第5のリストにおける前記第8のデータブロックの位置に基づいて、前記第1のリストと前記第3のリストの大きさの目標値、または、前記第1のリストと前記第2のリストもしくは前記第4のリストの大きさの目標値のいずれかを算出する、
    請求項7記載のストレージ制御装置。
  9. 記憶装置と、前記記憶装置に対するアクセスをキャッシュメモリを用いて制御するストレージ制御装置と、を有し、
    前記ストレージ制御装置は、
    前記キャッシュメモリに格納されたデータブロックのうち読み出しが要求された第1のデータブロックがLRU方式で管理される第1のリストと、前記キャッシュメモリに格納されたデータブロックのうち書き込みが要求された第2のデータブロックがLRU方式で管理される第2のリストとを記憶する記憶部と、
    前記第2のリストに属する前記第2のデータブロックのうち第3のデータブロックの読み出しが要求されたとき、前記第2のリストの状態をそのまま維持するとともに、前記第1のリストにおける前記第3のデータブロックの所属状態を更新する制御部と、
    を有するストレージシステム。
  10. 記憶装置に対するアクセスをキャッシュメモリを用いて制御するストレージ制御方法において、
    コンピュータが、
    前記キャッシュメモリに格納された第3のデータブロックの読み出しが要求されたとき、前記キャッシュメモリに格納されたデータブロックのうち書き込みが要求された第2のデータブロックがLRU方式で管理される第2のリストを参照し、
    前記第3のデータブロックが前記第2のリストに属する場合、前記第2のリストの状態をそのまま維持するとともに、前記キャッシュメモリに格納されたデータブロックのうち読み出しが要求された第1のデータブロックがLRU方式で管理される第1のリストにおける、前記第3のデータブロックの所属状態を更新する、
    ストレージ制御方法。
  11. 記憶装置に対するアクセスをキャッシュメモリを用いて制御するストレージ制御プログラムにおいて、
    コンピュータに、
    前記キャッシュメモリに格納された第3のデータブロックの読み出しが要求されたとき、前記キャッシュメモリに格納されたデータブロックのうち書き込みが要求された第2のデータブロックがLRU方式で管理される第2のリストを参照し、
    前記第3のデータブロックが前記第2のリストに属する場合、前記第2のリストの状態をそのまま維持するとともに、前記キャッシュメモリに格納されたデータブロックのうち読み出しが要求された第1のデータブロックがLRU方式で管理される第1のリストにおける、前記第3のデータブロックの所属状態を更新する、
    処理を実行させるストレージ制御プログラム。
JP2016229640A 2016-11-28 2016-11-28 ストレージ制御装置、ストレージシステム、ストレージ制御方法およびストレージ制御プログラム Active JP6799256B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2016229640A JP6799256B2 (ja) 2016-11-28 2016-11-28 ストレージ制御装置、ストレージシステム、ストレージ制御方法およびストレージ制御プログラム
US15/791,460 US10579541B2 (en) 2016-11-28 2017-10-24 Control device, storage system and method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016229640A JP6799256B2 (ja) 2016-11-28 2016-11-28 ストレージ制御装置、ストレージシステム、ストレージ制御方法およびストレージ制御プログラム

Publications (2)

Publication Number Publication Date
JP2018088020A JP2018088020A (ja) 2018-06-07
JP6799256B2 true JP6799256B2 (ja) 2020-12-16

Family

ID=62193259

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016229640A Active JP6799256B2 (ja) 2016-11-28 2016-11-28 ストレージ制御装置、ストレージシステム、ストレージ制御方法およびストレージ制御プログラム

Country Status (2)

Country Link
US (1) US10579541B2 (ja)
JP (1) JP6799256B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7367470B2 (ja) 2019-11-05 2023-10-24 富士通株式会社 情報処理装置およびキャッシュ制御プログラム

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07129470A (ja) 1993-11-09 1995-05-19 Hitachi Ltd ディスク制御方法
US6996676B2 (en) * 2002-11-14 2006-02-07 International Business Machines Corporation System and method for implementing an adaptive replacement cache policy
US7818493B2 (en) * 2007-09-07 2010-10-19 Sandisk Corporation Adaptive block list management
US8271729B2 (en) * 2009-09-18 2012-09-18 International Business Machines Corporation Read and write aware cache storing cache lines in a read-often portion and a write-often portion
US9141527B2 (en) * 2011-02-25 2015-09-22 Intelligent Intellectual Property Holdings 2 Llc Managing cache pools
US20130242425A1 (en) 2012-03-16 2013-09-19 Toshiba America Electronics Components, Inc. Write reordering in a hybrid disk drive
CN106201348B (zh) * 2012-06-20 2019-08-20 华为技术有限公司 非易失性存储设备的缓存管理方法及装置
EP2680152B1 (en) * 2012-06-27 2017-05-03 Alcatel Lucent Process for managing the storage of a list of N items in a memory cache of C items of a cache system
KR101481633B1 (ko) * 2013-07-03 2015-01-15 아주대학교산학협력단 플래시 메모리 기반 세가지 상태를 가지는 버퍼 관리 장치 및 방법
US9285999B2 (en) * 2013-11-27 2016-03-15 Vmware, Inc. Cache migration
US9471228B2 (en) * 2014-11-20 2016-10-18 Red Hat, Inc. Caching policies for solid state disks
US9442863B1 (en) * 2015-04-09 2016-09-13 Vmware, Inc. Cache entry management using read direction detection
US20170220592A1 (en) * 2016-02-01 2017-08-03 Microsoft Technology Licensing, Llc Modular data operations system
KR20170130011A (ko) * 2016-05-17 2017-11-28 삼성전자주식회사 캐시 메모리를 포함하는 서버 장치 및 그것의 동작 방법

Also Published As

Publication number Publication date
US20180150408A1 (en) 2018-05-31
US10579541B2 (en) 2020-03-03
JP2018088020A (ja) 2018-06-07

Similar Documents

Publication Publication Date Title
US8886882B2 (en) Method and apparatus of storage tier and cache management
US8271736B2 (en) Data block frequency map dependent caching
JP5908100B2 (ja) ストレージ・システムの二次キャッシュ内にデータをポピュレートするための方法、制御装置、プログラム
US8745325B2 (en) Using an attribute of a write request to determine where to cache data in a storage system having multiple caches including non-volatile storage cache in a sequential access storage device
US8935479B2 (en) Adaptive cache promotions in a two level caching system
US8677062B2 (en) Caching data in a storage system having multiple caches including non-volatile storage cache in a sequential access storage device
JP5349897B2 (ja) ストレージシステム
US20160026579A1 (en) Storage Controller and Method for Managing Metadata Operations in a Cache
US8095738B2 (en) Differential caching mechanism based on media I/O speed
JP6711121B2 (ja) 情報処理装置、キャッシュメモリ制御方法、およびキャッシュメモリ制御プログラム
JP5117608B1 (ja) 情報処理装置、ハイブリッド記憶装置、およびキャッシュ方法
WO2010088608A2 (en) Systems and methods for block-level management of tiered storage
US9996476B2 (en) Management of cache lists via dynamic sizing of the cache lists
US11204870B2 (en) Techniques for determining and using caching scores for cached data
US20160004644A1 (en) Storage Controller and Method for Managing Modified Data Flush Operations From a Cache
WO2016203612A1 (ja) ストレージ装置
US8825952B2 (en) Handling high priority requests in a sequential access storage device having a non-volatile storage cache
US20180307440A1 (en) Storage control apparatus and storage control method
US8996789B2 (en) Handling high priority requests in a sequential access storage device having a non-volatile storage cache
JP6799256B2 (ja) ストレージ制御装置、ストレージシステム、ストレージ制御方法およびストレージ制御プログラム
JP6928247B2 (ja) ストレージ制御装置およびストレージ制御プログラム
US11176050B2 (en) Information processing device and computer-readable recording medium having stored therein cache control program
JP2010176305A (ja) 情報処理装置およびデータ記憶装置
JP2016186735A (ja) 記憶制御システム及び記憶制御装置
US11099985B2 (en) Storage controller, storage array device, data depositing method, and storage medium

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190807

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20190815

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20190815

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200814

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200818

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20201008

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: 20201020

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20201102

R150 Certificate of patent or registration of utility model

Ref document number: 6799256

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150