(57)【要約】【課題】揮発性のメモリデバイスと同等の高速化を実現しながら、不揮発性のメモリデバイスを用いてキャッシュを大容量化する。【解決手段】ディスクドライブと、前記ディスクドライブに読み書きされるデータを一時的に格納するキャッシュメモリと、を備えるストレージシステムであって、前記キャッシュメモリは、揮発性の第１メモリと、不揮発性の第２メモリと、を備え、前記ストレージシステムは、データ書き込み要求又はデータ読み出し要求を受信し、前記要求されたデータを前記第１メモリに格納し、前記第１メモリに含まれる空き領域の容量の合計が所定の閾値より小さい場合、前記第１メモリの前記記憶領域の一つを選択し、前記選択された記憶領域に格納されたデータを前記第２メモリに格納し、前記選択された記憶領域を空き記憶領域に変更する。【選択図】図２
2009205335.tif 000002
【特許請求の範囲】
【請求項１】
ホスト計算機に接続されるホストインターフェースと、ディスクドライブと、前記ディスクドライブに接続されるドライブインターフェースと、前記ディスクドライブから読み出されたデータ及び前記ディスクドライブに書き込まれるデータの少なくとも一方を一時的に格納するキャッシュメモリと、を備えるストレージシステムであって、
前記キャッシュメモリは、揮発性の第１メモリと、不揮発性の第２メモリと、を備え、
前記ディスクドライブ、前記第１メモリ及び前記第２メモリは、それぞれ、複数の記憶領域を含み、
前記第１メモリ及び前記第２メモリの前記各記憶領域は、前記ディスクドライブの記憶領域に対応付けられた第１記憶領域、又は、前記ディスクドライブの記憶領域に対応付けられていない第２記憶領域のいずれかであり、
前記ストレージシステムは、さらに、前記第１メモリ及び前記第２メモリへのデータの書き込み及び読み出しを制御する制御プロセッサを備え、
前記制御プロセッサは、
データを前記ディスクドライブに書き込む要求又はデータを前記ディスクドライブから読み出す要求を受信し、
前記要求されたデータを前記第１メモリに格納し、
前記第１メモリに含まれる前記第２記憶領域の容量の合計が所定の閾値より小さい場合、前記第１メモリの前記複数の第１記憶領域の一つを選択し、
前記選択された第１メモリの第１記憶領域に格納されたデータを前記第２メモリに格納し、
前記選択された第１メモリの第１記憶領域を前記第２記憶領域に変更することを特徴とするストレージシステム。
【請求項２】
前記制御プロセッサは、前記ディスクドライブに既に格納されているデータが格納された前記第１メモリの第１記憶領域を選択することを特徴とする請求項１に記載のストレージシステム。
【請求項３】
前記制御プロセッサは、
前記ディスクドライブに既に格納されているデータが格納され、かつ、アクセス頻度が所定の値より低い前記第１メモリの第１記憶領域が存在する場合、前記ディスクドライブに既に格納されているデータが格納され、かつ、アクセス頻度が前記所定の値より低い前記第１メモリの第１記憶領域を選択し、
前記ディスクドライブに既に格納されているデータが格納され、かつ、アクセス頻度が前記所定の値より低い前記第１メモリの第１記憶領域が存在しない場合、アクセス頻度が最も低い前記第１メモリの第１記憶領域を選択することを特徴とする請求項１に記載のストレージシステム。
【請求項４】
前記制御プロセッサは、さらに、
前記第２メモリが、前記選択された第１メモリの第１記憶領域に格納されたデータに対応する第１記憶領域を含むか否かを判定し、
前記第２メモリが前記対応する第１記憶領域を含むと判定された場合、前記対応する第１メモリの第１記憶領域に格納されたデータが、前記ディスクドライブに既に格納されているか否かを判定し、
前記対応する第１メモリの第１記憶領域に格納されたデータが、前記ディスクドライブに未だ格納されていないと判定された場合、前記選択された第１メモリの第１記憶領域に格納されたデータを前記対応する第２メモリの第１記憶領域に格納した後、前記選択された第１メモリの第１記憶領域を前記第２記憶領域に変更し、
前記対応する第１メモリの第１記憶領域に格納されたデータが、前記ディスクドライブに既に格納されていると判定された場合、前記選択された第１メモリの第１記憶領域に格納されたデータを前記対応する第２メモリの第１記憶領域に格納せずに、前記選択された第１メモリの第１記憶領域を前記第２記憶領域に変更することを特徴とする請求項１に記載のストレージシステム。
【請求項５】
前記制御プロセッサは、さらに、
前記第２メモリが前記対応する第１メモリの第１記憶領域に格納されたデータを含まないと判定された場合、前記第２メモリに含まれる前記第２記憶領域の容量の合計が所定の閾値より小さいか否かを判定し、
前記第２メモリの第２記憶領域の容量の合計が所定の閾値より小さいと判定された場合、前記第２メモリの最もアクセス頻度が低い第１記憶領域を検索し、
前記選択された第１メモリの第１記憶領域に格納されたデータを前記検索された第２メモリの第１記憶領域に格納した後、前記選択された第２メモリの第１記憶領域を前記第２記憶領域に変更することを特徴とする請求項４に記載のストレージシステム。
【請求項６】
前記制御プロセッサは、さらに、
前記検索された第２メモリの第１記憶領域に格納されたデータに対応する前記第１メモリの第１記憶領域があるか否かを判定し、
前前記検索された第２メモリの第１記憶領域に格納されたデータに対応する前記第１メモリの第１記憶領域があると判定された場合、前記検索された第２メモリの第１記憶領域の次にアクセス頻度が低い第１記憶領域を新たに検索することを特徴とする請求項５に記載のストレージシステム。
【請求項７】
前記制御プロセッサは、さらに、
前記検索された第２メモリの第１記憶領域に格納されたデータが、前記ディスクドライブに既に格納されているか否かを判定し、
前記検索された第２メモリの第１記憶領域に格納されたデータが、前記ディスクドライブに未だ格納されていないと判定された場合、前記検索された第２メモリの第１記憶領域に格納されたデータを前記ディスクドライブに格納し、
前記検索された第２メモリの第１記憶領域に格納されたデータが、前記ディスクドライブに既に格納されていると判定された場合、前記第２メモリに、前記ディスクドライブに格納されていないデータが格納された前記第１記憶領域が含まれるか否かを判定し、
前記第２メモリに、前記ディスクドライブに格納されていないデータが格納された前記第１記憶領域が含まれると判定された場合、前記検索された第２メモリの第１記憶領域の次にアクセス頻度が低い第１記憶領域を新たに検索することを特徴とする請求項５に記載のストレージシステム。
【請求項８】
上位計算機と接続するホストＩＦ部と、
２個以上のディスクドライブと、
前記ディスクドライブに接続し、前記ディスクドライブを制御するドライブＩＦ部と、
前記ディスクドライブから読み込みまたは前記ディスクドライブへ書き込むデータを一時的に蓄えるキャッシュメモリ部と、
前記ホストＩＦ部と前記ディスクＩＦ部と前記キャッシュメモリ部の間を接続する伝送部を備えるストレージシステムであって、
前記キャッシュメモリ部が、
揮発性の第１のメモリデバイスと、
不揮発性の第２のメモリデバイスを備え、
前記ディスクドライブから読み込みまたは前記ディスクドライブへ書き込むデータを一時的に蓄える時に、前記第１のメモリデバイスに蓄え、前記第１のメモリデバイスの容量が不足した時に前記第１のメモリデバイスに蓄えられたデータを前記第２のメモリデバイスに移動することを特徴とするストレージシステム。
【請求項９】
前記ディスクドライブに書き込むデータを前記キャッシュメモリ部に一時的に蓄える時に、前記キャッシュメモリ部の第１のメモリデバイスに蓄え、前記第２のメモリデバイスに移動しないことを特徴とする前記請求項８に記載のストレージシステム
【請求項１０】
前記ディスクドライブに書き込むデータを前記キャッシュメモリ部に一時的に蓄える時に、前記キャッシュメモリ部の第１のメモリデバイスに蓄え、当該前記ディスクドライブに書き込むデータを前記ディスクドライブに書き込んだ後に、当該前記ディスクドライブに書き込むデータを更に前記キャッシュメモリ部の第２のメモリデバイスに移動することを特徴とする前記請求項８に記載のストレージシステム。
【請求項１１】
上位計算機からの読み出し要求に応じ、前記第１のメモリデバイスに蓄えられたデータであれば前記第１のメモリデバイスより読み出して当該上位計算機に返送し、前記第２のメモリデバイスに蓄えられたデータであれば前記第２のメモリデバイスより読み出して当該上位計算機に返送することを特徴とする前記請求項８に記載のストレージシステム。
【請求項１２】
上位計算機からの読み出し要求に応じ、前記第１のメモリデバイスに蓄えられたデータであれば前記第１のメモリデバイスより読み出して当該上位計算機に返送し、前記第２のメモリデバイスに蓄えられたデータであれば前記第２のメモリデバイスより前記第１のメモリデバイスに移動し、更に当該上位計算機に返送することを特徴とする前記請求項８に記載のストレージシステム。
【請求項１３】
前記第１のメモリデバイスより前記第２のメモリデバイスにデータを移動する時に、前記第２のメモリデバイスの容量が不足したら、前記第２のメモリデバイスのデータのうち、前記第１のメモリデバイスに蓄えられていないデータを消去することを特徴とする前記請求項８に記載のストレージシステム。
【請求項１４】
２個以上のディスクドライブと、上位計算機の要求に応じ前記ディスクドライブから読み込みまたは前記ディスクドライブへ書き込むデータを一時的に蓄える揮発性の第１のメモリデバイスと不揮発性の第２のメモリデバイスを備えるストレージシステムを制御する方法であって、
前記ディスクドライブから読み込みまたは前記ディスクドライブへ書き込むデータを一時的に蓄える時に、前記第１のメモリデバイスに蓄えるステップと、
前記第１のメモリデバイスの容量が不足した時に前記第１のメモリデバイスに蓄えられたデータを前記第２のメモリデバイスに移動するステップと、
前記第１のメモリデバイスから前記第２のメモリデバイスにデータを移動したら、前記第１のメモリデバイスから当該データを消去して空き領域を増加させるステップを含むことを特徴とするストレージシステムを制御する方法。
【請求項１５】
前記ディスクドライブに書き込むデータを一時的に蓄える時に、前記第１のメモリデバイスに蓄えるステップを含み、前記ディスクドライブに書き込むデータを前記第２のメモリデバイスに移動しないことを特徴とする前記請求項１４に記載のストレージシステムを制御する方法。
【請求項１６】
前記ディスクドライブに書き込むデータを一時的に蓄える時に、前記第１のメモリデバイスに蓄えるステップと、
当該前記ディスクドライブに書き込むデータを前記ディスクドライブに書き込んだ後に、当該前記ディスクドライブに書き込むデータを更に前記第２のメモリデバイスに移動するステップを含む前記請求項１４に記載のストレージシステムを制御する方法。
【請求項１７】
上位計算機からの読み出し要求に応じ、
前記第１のメモリデバイスに蓄えられたデータであれば前記第１のメモリデバイスより読み出して当該上位計算機に返送するステップと、
前記第２のメモリデバイスに蓄えられたデータであれば前記第２のメモリデバイスより読み出して当該上位計算機に返送するステップを含む前記請求項１４に記載のストレージシステムを制御する方法。
【請求項１８】
上位計算機からの読み出し要求に応じ、
前記第１のメモリデバイスに蓄えられたデータであれば前記第１のメモリデバイスより読み出して当該上位計算機に返送するステップと、
前記第２のメモリデバイスに蓄えられたデータであれば前記第２のメモリデバイスより前記第１のメモリデバイスに移動するステップと、
及び、更に当該上位計算機に当該データを返送するステップを含む前記請求項１４に記載のストレージシステムを制御する方法。
【請求項１９】
前記第１のメモリデバイスより前記第２のメモリデバイスにデータを移動する時に、前記第２のメモリデバイスの容量が不足したら、前記第２のメモリデバイスのデータのうち、前記第１のメモリデバイスに蓄えられていないデータを消去するステップを含む前記請求項１４に記載のストレージシステムを制御する方法。
【請求項２０】
前記第２のメモリデバイスのデータのうち、前記ディスクドライブに書き込むデータを、前記ディスクドライブから読み出したデータより優先して選択するステップと、前記ディスクドライブに書き込むデータを優先して選んだときに当該データを前記ディスクドライブに書き込むステップと、当該データを前記ディスクドライブに書き込んだら、前記第２のメモリデバイス上の当該データを消去するステップを含む前記請求項１４に記載のストレージシステムを制御する方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本願明細書に開示される技術は、キャッシュメモリを備えるストレージシステムに関し、特に、揮発性と不揮発性の２種類のキャッシュメモリを備えるストレージシステムに関する。
【背景技術】
【０００２】
従来から、ハードディスクドライブを備えるストレージシステムでは、上位計算機から読み込み又は書き込みされるデータを一時的に格納するキャッシュメモリを備えることによって、データの読み込み及び書き込みの高速化が図られてきた。キャッシュメモリを構成するメモリデバイスには、従来、揮発性であるが、ハードディスクドライブに比べれば遥かに高速であるＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）を用いることが一般的であった。但し、このＤＲＡＭはビット当たりの単価がハードディスクに比べ大変高く、このためあまり大きな容量のＤＲＡＭを備えると、システムが大変高価になるという問題があった。また、ＤＲＡＭは特に揮発性のメモリデバイスであるため、システムの電源断時のデータ保全のためにバッテリを備えることも多い。しかし、容量の大きなＤＲＡＭを備えると、バッテリも大量に備える必要が発生し、それによって更にシステムが高価になるという問題があった。
【０００３】
これに対し、近年ではフラッシュメモリに代表される不揮発性のメモリデバイスがストレージシステムにおけるキャッシュメモリのメモリデバイスとして用いられる場合がある。このような不揮発性のメモリデバイスからのデータの読み出し速度は、ハードディスクドライブに比べれば高速であるが、ＤＲＡＭよりは低速であり、データの書き込み速度はさらに低速である。このため、不揮発性のメモリデバイスに加えてＤＲＡＭのような揮発性ではあるが書き込みの高速なメモリデバイスを同時に備えるストレージシステムにおいて、不揮発性のメモリデバイスへの書き込みデータを高速な揮発性のメモリデバイスが一時的に蓄えるようにバッファ制御が行われる場合がある（例えば特許文献１）。このような技術では、不揮発性のメモリデバイスへの書き込み頻度の粗密が平均化される。
【特許文献１】米国特許出願公開第２００７／００５０５４０号明細書
【発明の開示】
【発明が解決しようとする課題】
【０００４】
上記特許文献１によれば、高速な揮発性のメモリデバイスは、不揮発性のメモリデバイスに格納されるデータのバッファとして使用されるため、最終的には必ず不揮発性メモリデバイスへデータが書き込まれる。このため、システムとしての書き込みのスループットは不揮発性メモリデバイスの低速な書き込み速度に制限される。また、不揮発性メモリデバイスの読み出し速度は、ＤＲＡＭのような揮発性メモリデバイスより劣るため、データ読み出しに関する高速化の効果が低い。
【０００５】
本発明は、上述の問題点に鑑みてなされたものである。本発明が解決しようとする課題は、ストレージシステムのキャッシュメモリの効果を充分に高めるために、ＤＲＡＭのような揮発性のメモリデバイスと同等の高速化を実現しながら、フラッシュメモリのような不揮発性のメモリデバイスを用いることによって大容量化を実現することである。さらに、本発明が解決しようとする課題は、揮発性のＤＲＡＭのようなメモリデバイスのみを大容量化した場合と比較して、電源断に備えるバッテリを少なくすることである。
【課題を解決するための手段】
【０００６】
本願で開示する代表的な発明は、ホスト計算機に接続されるホストインターフェースと、ディスクドライブと、前記ディスクドライブに接続されるドライブインターフェースと、前記ディスクドライブから読み出されたデータ及び前記ディスクドライブに書き込まれるデータの少なくとも一方を一時的に格納するキャッシュメモリと、を備えるストレージシステムであって、前記キャッシュメモリは、揮発性の第１メモリと、不揮発性の第２メモリと、を備え、前記ディスクドライブ、前記第１メモリ及び前記第２メモリは、それぞれ、複数の記憶領域を含み、前記第１メモリ及び前記第２メモリの前記各記憶領域は、前記ディスクドライブの記憶領域に対応付けられた第１記憶領域、又は、前記ディスクドライブの記憶領域に対応付けられていない第２記憶領域のいずれかであり、前記ストレージシステムは、さらに、前記第１メモリ及び前記第２メモリへのデータの書き込み及び読み出しを制御する制御プロセッサを備え、前記制御プロセッサは、データを前記ディスクドライブに書き込む要求又はデータを前記ディスクドライブから読み出す要求を受信し、前記要求されたデータを前記第１メモリに格納し、前記第１メモリに含まれる前記第２記憶領域の容量の合計が所定の閾値より小さい場合、前記第１メモリの前記複数の第１記憶領域の一つを選択し、前記選択された第１メモリの第１記憶領域に格納されたデータを前記第２メモリに格納し、前記選択された第１メモリの第１記憶領域を前記第２記憶領域に変更することを特徴とする。
【発明の効果】
【０００７】
ストレージシステムのキャッシュメモリを、読み出し及び書き込みの速度を維持しながら、大容量化することができる。また、電源断に備えるバッテリを削減することによってシステムを小型化・軽量化及び省電力化することができる。
【発明を実施するための最良の形態】
【０００８】
本発明を実施するための形態を、図面を参照して説明する。なお、以降は本発明の実施の例であり、本発明の実施の形態を限るものではない。
【０００９】
図１は、本発明の第１の実施形態のストレージシステム１の全体の構成の例を示すブロック図である。
【００１０】
図１に示すように、ストレージシステム１は、一つ以上のホストインターフェース（ＩＦ）部１０１、一つ以上のドライブＩＦ部１０２、一つ以上のディスクドライブ１０３、伝送部１０４及び一つ以上のキャッシュメモリ部１０５を備える。
【００１１】
ホストＩＦ部１０１は、上位装置であるホスト計算機（図示省略）と接続され、ホスト計算機との間でデータをやり取りする。ドライブＩＦ部１０２は、複数のディスクドライブ１０３と接続され、ディスクドライブ１０３を制御する。キャッシュメモリ部１０５は、ホストＩＦ部１０１にて受信されるホスト計算機からの要求に応じ、ディスクドライブ１０３から読み出されたデータ及びディスクドライブ１０３へ書き込まれるデータを一時的に格納する。
【００１２】
ホストＩＦ部１０１とキャッシュメモリ部１０５との間、及び、ドライブＩＦ部１０２とキャッシュメモリ部との間は、伝送部１０４によって接続される。図１では一つの伝送部１０４がホストＩＦ部１０１とキャッシュメモリ部１０５との間、及び、ドライブＩＦ部１０２とキャッシュメモリ部１０５との間を接続するが、伝送部１０４は複数あってもよい。複数の伝送部１０４のうち少なくとも一つがホストＩＦ部１０１とキャッシュメモリ部１０５とを接続し、別の少なくとも一つがドライブＩＦ部１０２とキャッシュメモリ部１０５とを接続してもよい。
【００１３】
図２は、本発明の第２の実施形態のキャッシュメモリ部１０５の構成の例を示すブロック図である。
【００１４】
図２において、ＤＲＡＭ２１１は高速な揮発性のメモリデバイスである。フラッシュメモリ２１２は不揮発性の、ＤＲＡＭ２１１に比べれば低速なメモリデバイスである。キャッシュメモリ部１０５は、複数のＤＲＡＭ２１１及び複数のフラッシュメモリ２１２を備えてもよい。ＤＲＡＭ２１１及びフラッシュメモリ２１２はそれぞれキャッシュメモリ制御部２０に接続され、制御される。
【００１５】
各キャッシュメモリ部１０５に含まれる全ＤＲＡＭ２１１の容量の合計及び全フラッシュメモリ２１２の容量の合計は任意である。ただし、キャッシュメモリ部１０５全体のビットコストを抑制するためには、全フラッシュメモリ２１２の容量の合計が全ＤＲＡＭ２１１の容量の合計より大きいことが望ましい。
【００１６】
キャッシュメモリ制御部２０は、ＤＭＡコントローラ１＿２０１、ＤＭＡコントローラ２＿２０２、アービタ２０３、ＤＲＡＭコントローラ２０４及びＦＭ＿Ｉ／Ｆ２０５を備える。
【００１７】
キャッシュメモリ制御部２０は、キャッシュメモリ部１０５全体を制御する制御用ＭＰＵ（Ｍｉｃｒｏ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）２１０と接続される。制御用ＭＰＵ２１０には、ローカルメモリ２１３が接続されてもよい。ローカルメモリ２１３には、例えば、制御用ＭＰＵ２１０によって実行される制御プログラム２１４が格納される。
【００１８】
ＤＭＡコントローラ１＿２０１は、伝送部１０４と接続され、ＤＲＡＭ２１１もしくはＤＭＡコントローラ２＿２０２と伝送部１０４との間のデータの転送を制御する。ＤＭＡコントローラ２＿２０２は、ＤＲＡＭ２１１もしくはＤＭＡコントローラ１＿２０１とフラッシュメモリ２１２との間のデータの転送を制御する。アービタ２０３は、ＤＭＡコントローラ１＿２０１及びＤＭＡコントローラ２＿２０２からＤＲＡＭ２１１へのアクセスを調停する。ＤＲＡＭコントローラ２０４は、ＤＲＡＭ２１１を制御する。ＦＭ＿Ｉ／Ｆ２０５は、フラッシュメモリ２１２に接続され、フラッシュメモリ２１２を制御する。
【００１９】
制御用ＭＰＵ２１０は、例えば、制御プログラム２１４に従ってＤＭＡコントローラ１＿２０１及びＤＭＡコントローラ２＿２０２を制御することによって、ＤＲＡＭ２１１及びフラッシュメモリ２１２に対するデータの書き込み、読み出し及び消去等を制御することができる。以下の説明においてキャッシュメモリ部１０５が実行する処理は、実際には、上記のように制御用ＭＰＵ２１０によって制御される。
【００２０】
図３は、本発明の第１の実施形態のストレージシステム１を制御する処理の例を示すフローチャートである。
【００２１】
図３において、まず、ホスト計算機からの要求をアクセスコマンドとして受信する（ステップ３０１）。具体的にはホストＩＦ部１０１にてホスト計算機からのアクセスコマンドを受信した後、アクセスコマンドをホストＩＦ部１０１にて解析し、アクセスされるデータが格納されるディスクドライブ１０３及び一時的にアクセスするデータを蓄えるキャッシュメモリ部１０５を選択する。またこのアクセスコマンドの解析はストレージシステム１の他の部分で実施してもよい。
【００２２】
次に、選択されたキャッシュメモリ部１０５において、要求されたデータがＤＲＡＭ２１１上にあるか否か（言い換えると、アクセス要求によってアクセス先として指定されたディスクドライブ１０３の記憶領域に対応付けられた記憶領域がＤＲＡＭ２１１上にあるか否か）を検索する（ステップ３０２）。このような対応付けの管理、及び、その対応付けに基づく上記の検索は、周知のキャッシュメモリ制御技術を用いて実行することができる。例えば、キャッシュメモリ部１０５の記憶領域に対応付けられたディスクドライブ１０３の記憶領域を示す論理ブロックアドレスが、キャッシュメモリ部１０５に記録されてもよい。後述するステップ３０４の検索も同様である。またこのような検索の処理はホストＩＦ部がキャッシュメモリ部１０５をアクセスして行うことができる。あるいはストレージシステム１の中に他に検索制御を行うプロセッサ部を設けてもよい。
【００２３】
次に、検索がヒットしたか否か（すなわち、要求されたデータがＤＲＡＭ２１１上に存在するか否か）を判定する（ステップ３０３）。要求されたデータがＤＲＡＭ２１１上に存在しない場合、処理はステップ３０４に進む。一方、要求されたデータがＤＲＡＭ２１１上に存在する場合、処理は後述する図４のステップ４０５に進む。
【００２４】
ステップ３０４において、要求されたデータがキャッシュメモリ部１０５のフラッシュメモリ２１２上に存在するか否か（言い換えると、アクセス要求によってアクセス先として指定されたディスクドライブ１０３の記憶領域に対応付けられた記憶領域がフラッシュメモリ２１２上に存在するか否か）を検索する。このような検索の処理もホストＩＦ部がキャッシュメモリ部１０５をアクセスして行うことができる。あるいはストレージシステム１の中に他に検索制御を行うプロセッサ部を設けてもよい。
【００２５】
次に、検索がヒットしたか否か（すなわち、要求されたデータがフラッシュメモリ２１２上に存在するか否か）を判定する（ステップ３０５）。要求されたデータがフラッシュメモリ２１２上に存在しない場合、要求されたデータはキャッシュメモリ部１０５に格納されていない（すなわち、要求されたデータはディスクドライブ１０３のみに格納されている）。この場合、処理はステップ３１３に進む。一方、要求されたデータがフラッシュメモリ２１２上に存在する場合、処理は後述する図４のステップ４０１に進む。
【００２６】
ステップ３１３において、ＤＲＡＭ２１１上に空き領域があるか否か判定する。空き領域とは、ディスクドライブ１０３のいずれの記憶領域にも対応付けられていないＤＲＡＭ２１１の記憶領域である。ＤＲＡＭ２１１上に空き領域があればステップ３０７へ進む。ＤＲＡＭ２１１上に空き領域がなければステップ３０６へ進む。
【００２７】
ステップ３０６において、ＤＲＡＭ２１１上に空き領域を確保する。ここで実行されるＤＲＡＭ空き領域確保処理の詳細については後述する（図５及び図６参照）。空き領域の確保処理は、元のホスト計算機からのアクセスコマンドを受信したホストＩＦ部１０１がおこなってもよいし、キャッシュメモリ部１０５にて行ってもよい。あるいはストレージシステム１の中に他に空き領域確保を行うプロセッサ部を設けてもよい。
【００２８】
次にステップ３０７では、ホスト計算機からの要求が読み出し（ＲＤ）であるか書き込み（ＷＲ）であるか判定する。要求が書き込み（ＷＲ）である場合、処理はステップ３０８に進み、キャッシュメモリ部１０５は、ホストＩＦ部１０１から伝送部１０４を通じてホスト計算機から送信される書き込みデータを受信する。
【００２９】
次に、キャッシュメモリ部１０５は、ステップ３０６で確保したＤＲＡＭ２１１上の空き領域に受信した書き込みデータを格納する（ステップ３０９）。
【００３０】
ステップ３０７において、ホスト計算機からの要求が読み出しであった場合、処理はステップ３１０に進む。ステップ３１０において、ディスクドライブ１０３から要求されたデータを読み出し、キャッシュメモリ部１０５に送信する。次に、キャッシュメモリ部１０５は、送信されたデータを、ステップ３０６で確保した空き領域に格納する（ステップ３１１）。次に、キャッシュメモリ部１０５は、ＤＲＡＭ２１１上に格納したデータを読み出して、伝送部１０４を通じてホストＩＦ部１０４に送信し、ホストＩＦ部１０４が要求元のホスト計算機に送信する。
【００３１】
図４は、本発明の第１の実施形態のストレージシステム１において、キャッシュヒットした場合に実行される処理の例を示すフローチャートである。
【００３２】
具体的には、図４の処理は、図３のステップ３０３でＤＲＡＭ２１１上に要求されたデータが存在すると判定された場合、及び、ステップ３０５でフラッシュメモリ２１２上に要求されたデータが存在すると判定された場合の処理の第１の例である。
【００３３】
図３のステップ３０５でフラッシュメモリ２１２上に要求されたデータが存在すると判定された場合、処理はステップ４０１に進む。ステップ４０１において、キャッシュメモリ部１０５は、要求されたデータをフラッシュメモリ２１２から読み出す。
【００３４】
次に、ステップ４０２において、キャッシュメモリ部１０５は、ＤＲＡＭ２１１上に空き領域があるか否かを判定する。空き領域がある場合、処理はステップ４０４へ進む。空き領域がない場合、処理はステップ４０３に進む。
【００３５】
なお、ステップ４０２において、ＤＲＡＭ２１１に空き領域が残っている場合であっても、空き領域の容量の合計が所定の閾値以下となった場合には、空き領域がないと判定して、処理がステップ４０３に進んでもよい。
【００３６】
ステップ４０３において、図３のステップ３０６と同様のＤＲＡＭ空き領域確保処理を実行する。この空き領域の確保処理も、図３のステップ３０６と同様に元のホスト計算機からのアクセスコマンドを受信したホストＩＦ部１０１がおこなってもよいし、キャッシュメモリ部１０５にて行ってもよい。あるいはストレージシステム１の中に他に空き領域確保を行うプロセッサ部を設けてもよい。その後、処理はステップ４０４へ進む。
【００３７】
ステップ４０４において、キャッシュメモリ部１０５は、ステップ４０１でフラッシュメモリ２１２から読み出されたデータをＤＲＡＭ２１１上の空き領域に格納する。その後、処理はステップ４０５に進む。
【００３８】
図３のステップ３０３において、ＤＲＡＭ２１１上に要求されたデータが存在すると判定された場合にも、処理はステップ４０５に進む。
【００３９】
ステップ４０５において、ホスト計算機からの要求が読み出し（ＲＤ）であるか書き込み（ＷＲ）であるか判定する。要求が読み出し（ＲＤ）である場合、処理はステップ４０６に進む。ステップ４０６において、キャッシュメモリ部１０５は、要求されたデータをＤＲＡＭ２１１から読み出して、伝送部１０４を通じてホストＩＦ部１０１に送信し、ホストＩＦ部１０１が要求元のホスト計算機に送信する。
【００４０】
ステップ４０５において、要求が書き込み（ＷＲ）であると判定された場合、処理はステップ４０７に進む。ステップ４０７においてキャッシュメモリ部１０５は、ホスト計算機からホストＩＦ部１０１及び伝送部１０４を通じて書き込みデータを受信する。次に、ステップ４０８において、キャッシュメモリ部１０５は、ＤＲＡＭ２１１上の当該データを受信した書き込みデータで更新する（すなわち、当該データに、受信した書き込みデータを上書きする）。ここで、当該データとは、書き込み要求によって書き込み対象として指定されたディスクドライブ１０３のブロック（図示省略）に対応付けられたＤＲＡＭ２１１のブロック（図示省略）に格納されたデータである。また、ブロックとは、記憶領域の管理単位である。
【００４１】
以上の処理によって、ホスト計算機から新たにアクセスされたデータは、そのアクセスが読み出し（ＲＤ）又は書き込み（ＷＲ）のいずれであるかに関わらず、ＤＲＡＭ２１１上に格納される。このため、その後のアクセスにおいてＤＲＡＭ２１１上でヒットする可能性を高めることができる。また、ホスト計算機から書き込まれたデータはＤＲＡＭ２１１上に格納されるため、その書き込みは高速に処理される。
【００４２】
図５及び図６は、本発明の第１の実施形態のストレージシステムにおいて実行されるＤＲＡＭ空き領域確保処理の例を示すフローチャートである。
【００４３】
具体的には、図５及び図６に示す処理は、図３のステップ３０６及び図４のステップ４０３において実行される。図５及び図６に示す処理は、元のホスト計算機からのアクセスコマンドを受信したホストＩＦ部１０１がおこなってもよいし、キャッシュメモリ部１０５にて行ってもよい。あるいはストレージシステム１の中に他に空き領域確保を行うプロセッサ部を設けてもよい。以下では例としてキャッシュメモリ部１０５が行うとして説明する。
【００４４】
まず、キャッシュメモリ部１０５は、ＤＲＡＭ２１１上のデータを格納するブロックのうち、最も古くアクセスされたブロックを検索する（ステップ６０１）。この検索及び後述する同様の検索（例えばステップ６０５）は、従来のキャッシュメモリに適用される周知のＬＲＵ（Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ）アルゴリズムによって実行することができる。
【００４５】
次に、ステップ６０２において、キャッシュメモリ部１０５は、検索されたブロックのデータがいわゆるダーティの状態か否かを判定する。ＤＲＡＭ２１１上のブロックのデータがダーティの状態であることは、ＤＲＡＭ２１１上のブロックに格納されたデータの少なくとも一部が、まだディスクドライブ１０３に格納されていない（すなわち、ＤＲＡＭ２１１のブロックに格納されたデータの少なくとも一部が、そのブロックに対応するディスクドライブ１０３のブロックに格納されたデータと異なる）ことを意味する。検索されたブロックのデータがダーティの状態でない場合、処理はステップ６０３へ進む。
【００４６】
ステップ６０３において、キャッシュメモリ部１０５は、検索されたブロックを吐き出し対象として選択する。その後、処理は図６のステップ７０１へ進む。
【００４７】
ここで、ブロックの吐き出しとは、ＤＲＡＭ２１１のブロックを空き領域に変更することを意味する。その際、必要があれば、そのブロックに格納されているデータの複製が、フラッシュメモリ２１２及びディスクドライブ１０３の少なくとも一方に格納される。
【００４８】
ステップ６０２において、検索されたブロックのデータがダーティであると判定された場合、処理はステップ６０４へ進む。ステップ６０４において、キャッシュメモリ部１０５は、所定の回数、検索を繰り返したか否かを判定する。具体的には、キャッシュメモリ部１０５は、ステップ６０１及び後述するステップ６０５に示す検索が所定の回数実行されたか否かを判定する。所定の回数、検索を繰り返したと判定された場合、処理はステップ６０３に進む。所定の回数、検索を繰り返していないと判定された場合、処理はステップ６０５に進む。
【００４９】
ステップ６０４において、検索が所定の回数繰り返されたと判定された場合、ステップ６０３において、キャッシュメモリ部１０５は、最後のステップ６０５において検索されたブロックを吐き出し対象として選択してもよいし、ステップ６０１において検索されたブロックを吐き出し対象として選択してもよい。
【００５０】
ステップ６０５において、キャッシュメモリ部１０５は、ＤＲＡＭ２１１上で次に古くアクセスされたブロックを検索する。その後処理はステップ６０２に戻る。
【００５１】
図５のステップ６０３が実行されると、処理は図６のステップ７０１へ進む。ステップ７０１において、キャッシュメモリ部１０５は、フラッシュメモリ２１２に、図５のステップ６０３で吐き出し対象として選択されたブロック（以下、吐き出し対象ブロックと記載する）に対応するブロックがあるか否かを判定する。
【００５２】
吐き出し対象ブロックに対応するフラッシュメモリ２１２のブロックとは、吐き出し対象ブロックに対応付けられたディスクドライブ１０３の記憶領域に対応付けられたフラッシュメモリ２１２のブロックである。すなわち、このようなブロックが存在する場合、ディスクドライブ１０３の一つの記憶領域が、ＤＲＡＭ２１１の吐き出し対象ブロック、及び、それに対応するフラッシュメモリ２１２のブロックの両方に対応付けられている。
【００５３】
吐き出し対象ブロックに対応するブロックがフラッシュメモリ２１２にない場合、処理はステップ７０２に進む。
【００５４】
ステップ７０２において、キャッシュメモリ部１０５は、フラッシュメモリ２１２上に空き領域があるか否かを判定する。空き領域がある場合、処理はステップ７０９に進む。
【００５５】
ステップ７０９において、キャッシュメモリ部１０５は、フラッシュメモリ２１２の空き領域に吐き出し対象ブロックのデータを格納する。
【００５６】
次に、ステップ７１０において、キャッシュメモリ部１０５は、ＤＲＡＭ２１１上の吐き出し対象ブロックを空きブロックとする。具体的には、キャッシュメモリ部１０５は、吐き出し対象ブロックとディスクドライブ１０３のブロックとの対応付けを解除する。これによって、以後、その吐き出し対象ブロックに、ディスクドライブ１０３の任意のブロックを新たに対応付けることが可能になる。
【００５７】
ステップ７０２において、フラッシュメモリ２１２に空き領域がないと判定された場合、処理はステップ７０３に進む。ステップ７０３において、キャッシュメモリ部１０５は、フラッシュメモリ２１２上の最も古くアクセスされたブロックを検索する。
【００５８】
次に、キャッシュメモリ部１０５は、ステップ７０３（又は後述するステップ７０５）で検索されたフラッシュメモリ２１２上のブロックのデータが、ＤＲＡＭ２１１上にもまだ残っているか否か（言い換えると、ステップ７０３で検索されたフラッシュメモリ２１２上のブロックに対応付けられたディスクドライブ１０３のブロックが、ＤＲＡＭ２１１上のブロックにも対応付けられているか否か）を判定する（ステップ７０４）。
【００５９】
まだＤＲＡＭ２１１上にデータが残っている場合、処理はステップ７０５に進む。ステップ７０５において、キャッシュメモリ部１０５は、フラッシュメモリ２１２上で次に古くアクセスされたブロックを検索する。その後処理はステップ７０４に戻る。
【００６０】
ステップ７０４において、ＤＲＡＭ２１１上にデータが残っていないと判定された場合、処理はステップ７０６に進む。
【００６１】
ステップ７０６において、キャッシュメモリ部１０５は、フラッシュメモリ２１２上の検索されたブロックのデータがダーティの状態であるか否かを判定する。フラッシュメモリ２１２上のブロックのデータがダーティの状態であることは、フラッシュメモリ２１２上のブロックに格納されたデータの少なくとも一部が、まだディスクドライブ１０３に格納されていない（すなわち、フラッシュメモリ２１２のブロックに格納されたデータの少なくとも一部が、そのブロックに対応するディスクドライブ１０３のブロックに格納されたデータと異なる）ことを意味する。
【００６２】
検索されたブロックのデータがダーティの状態である場合、処理はステップ７０７に進む。ステップ７０７において、キャッシュメモリ部１０５は、フラッシュメモリ２１２上の検索されたブロックのデータをディスクドライブ１０３に書き込む。その後処理はステップ７０８に進む。
【００６３】
ステップ７０６において、検索されたブロックがダーティの状態でないと判定された場合、ステップ７０７は実行されず、処理はステップ７０８に進む。
【００６４】
ステップ７０８において、キャッシュメモリ部１０５は、フラッシュメモリ２１２上の検索されたブロックを消去して、そのブロックを空き領域とする。その後、処理はステップ７０９に進む。
【００６５】
ステップ７０１において、ＤＲＡＭ２１１上の吐き出し対象ブロックに対応するブロックがフラッシュメモリ２１２上にあると判定された場合、処理はステップ７１１に進む。
【００６６】
ステップ７１１において、キャッシュメモリ部１０５は、ＤＲＡＭ２１１上の吐き出し対象ブロックのデータがダーティの状態であるか否かを判定する。吐き出し対象ブロックのデータがダーティの状態でないと判定された場合、処理はステップ７１０に進む。この場合、吐き出し対象ブロックと、それに対応するフラッシュメモリ２１２のブロックに、同一のデータが格納されている。このため、キャッシュメモリ部１０５は、吐き出し対象ブロックのデータをフラッシュメモリ２１２に書き込まずに、ステップ７１０においてＤＲＡＭ２１１上の吐き出し対象ブロックを空きブロックとする。
【００６７】
ステップ７１１において、吐き出し対象ブロックのデータがダーティであると判定された場合、処理はステップ７０８に進む。この場合、キャッシュメモリ部１０５は、フラッシュメモリ２１２上の検索されたブロックを消去し（ステップ７０８）、その後の処理（ステップ７０９及びステップ７１０）を実行する。
【００６８】
なお、ステップ７０２において、フラッシュメモリ２１２の空き領域がまだ残っている場合であっても、残りの空き領域の容量の合計が所定の閾値以下になった場合には、空き領域がないと判定して、ステップ７０９へ進まず、ステップ７０３に進んでもよい。
【００６９】
従来のキャッシュメモリにおいては、ヒット率が、キャッシュメモリの使用による性能向上の程度を決定する重要なパラメータである。このため、従来のキャッシュメモリにおいては、一般に、ヒット率の向上を期待して、ＬＲＵアルゴリズムに基づくデータの吐き出しが実行される。ＬＲＵアルゴリズムによれば、最も古くアクセスされたブロックのアクセス頻度が最も低い（すなわち、そのブロックが将来アクセスされる可能性が最も低い）という予測に基づいて、最も古くアクセスされたブロックのデータが吐き出される。
【００７０】
しかし、本発明のようにキャッシュメモリがアクセス速度の異なる２種類のメモリ（例えばＤＲＡＭ２１１とフラッシュメモリ２１２）によって構成される場合、性能向上の程度は、ヒット率に加えて、それぞれのメモリに対するアクセス頻度によっても左右される。特にフラッシュメモリ２１２に対する書き込み速度が遅いため、フラッシュメモリ２１２に対する書き込みアクセスの頻度が高くなれば、性能は大きく低下する。
【００７１】
このため、本実施形態では、ヒット率を維持しつつ、フラッシュメモリ２１２へのアクセス頻度、特に、フラッシュメモリ２１２への書き込みアクセス頻度が小さくなるようにデータの書き込み及び吐き出しが制御される。
【００７２】
具体的には、本実施形態において、書き込みデータは、ＤＲＡＭ２１１に優先的に格納される（ステップ３０９及びステップ４０８参照）。これによって、ＤＲＡＭ２１１からデータがあふれない限り、フラッシュメモリ２１２へのアクセスが発生しないため、フラッシュメモリ２１２へのアクセスに起因する性能の低下が抑制される。
【００７３】
ＤＲＡＭ２１１に空き領域がない場合、ＤＲＡＭ２１１のブロックのうち、アクセス頻度が所定の値より低く、かつ、書き込みアクセス頻度が低いブロックのデータが優先的に吐き出され、フラッシュメモリ２１２に格納される（図５参照）。
【００７４】
書き込みアクセス頻度は、データがダーティであるか否かに基づいて予測される。ブロックのデータがダーティであることは、そのデータが比較的最近書き込まれたことを意味する。このため、ダーティなブロックへの書き込みアクセス頻度は、ダーティでないブロックへのそれより高い（すなわち、将来、ダーティなブロックへの書き込みが発生する可能性は、ダーティでないブロックへの書き込みが発生する可能性より高い）と予測される。このため、ダーティでないブロックが優先的に吐き出し対象ブロックとして選択される（ステップ６０２及びステップ６０３）。
【００７５】
アクセス頻度は、従来と同様、ＬＲＵアルゴリズムに基づいて予測される（ステップ６０１）。アクセス頻度が所定の値より低いか否かは、ステップ６０４において判定される。ステップ６０４における「所定の閾値」が高くなるほど、フラッシュメモリ２１２への書き込みアクセスが抑制されることが期待されるが、その代わり、ヒット率が低下する可能性が高くなる。このため、これらの要因に基づく性能が最大になるように「所定の閾値」が決定されることが望ましい。
【００７６】
第１の実施形態において、ＤＲＡＭ２１１から吐き出されたデータは、フラッシュメモリ２１２に格納される。ＤＲＡＭ２１１の吐き出し対象ブロックに対応するブロックがフラッシュメモリ２１２にある場合、ＤＲＡＭ２１１から吐き出されたデータは、その対応するブロックに格納される。ただし、ＤＲＡＭ２１１の吐き出し対象ブロックがダーティでない場合、吐き出されたデータは、それに対応するフラッシュメモリ２１２のブロックに既に格納されているデータと同一であるため、吐き出されたデータはフラッシュメモリ２１２に書き込まれない（ステップ７０１及びステップ７０８〜ステップ７１１）。
【００７７】
ＤＲＡＭ２１１の吐き出し対象ブロックに対応するブロックがフラッシュメモリ２１２になく、かつ、フラッシュメモリ２１２に空き領域がない場合、いずれかのブロックのデータを消去することによって空き領域が作成される（ステップ７０３〜ステップ７０８）。
【００７８】
このとき、より古くアクセスされたブロックのデータが優先的に消去される（ステップ７０３及びステップ７０５）。
【００７９】
さらに、フラッシュメモリ２１２のブロックのうち、そのブロックに対応するＤＲＡＭ２１１のブロックがあるか否かが判定される（ステップ７０４）。そして、そのフラッシュメモリ２１２のブロックに対応するＤＲＡＭ２１１のブロックがない場合、そのフラッシュメモリ２１２のブロックのデータが優先的に消去される。言い換えると、そのフラッシュメモリ２１２のブロックに対応するＤＲＡＭ２１１のブロックがある場合、そのフラッシュメモリ２１２のブロックが消去されないように、データの吐き出しが制御される。
【００８０】
ＤＲＡＭ２１１のブロックのデータは、将来フラッシュメモリ２１２に吐き出される可能性がある。その時点で、ＤＲＡＭ２１１の吐き出し対象ブロックに対応するフラッシュメモリ２１２のブロックがあり、かつ、それらのブロックに同一のデータが格納されている場合、吐き出されるデータをフラッシュメモリ２１２にあらためて書き込む必要がない（ステップ７１１において「Ｎｏ」の場合）。このため、ステップ７０４の判定を実行することによって、フラッシュメモリ２１２への書き込みアクセスによる性能低下が抑制される。
【００８１】
さらに、フラッシュメモリ２１２からダーティなブロックのデータが優先的に消去される（ステップ７０６及びステップ７０８）。
【００８２】
上記のように、図５及び図６によれば、ダーティでないブロックのデータが優先的にフラッシュメモリ２１２に格納され、さらに、ダーティなブロックのデータが優先的にフラッシュメモリ２１２から消去される。このように、フラッシュメモリ２１２に格納されるダーティなデータを減らすことによって、フラッシュメモリ２１２への書き込みアクセスによる性能低下が抑制される。
【００８３】
次に、本発明の第２の実施形態について説明する。
【００８４】
図７は、本発明の第２の実施形態のストレージシステム１において、キャッシュヒットした場合に実行される処理の例を示すフローチャートである。
【００８５】
具体的には、図７の処理は、図３のステップ３０３でＤＲＡＭ２１１上に要求されたデータが存在すると判定された場合、及び、ステップ３０５でフラッシュメモリ２１２上に要求されたデータが存在すると判定された場合の処理の第２の例である。
【００８６】
本発明の第２の実施形態のストレージシステム１の全体及びキャッシュメモリ部１０５の構成は、第１の実施形態と同様である（図１及び図２参照）。第２の実施形態のストレージシステム１においては、図４に示す処理の代わりに図７に示す処理が実行されることを除いて、第１の実施形態と同様の処理が実行される。以下、第２の実施形態が第１の実施形態と異なる点についてのみ説明する。なお、図７の処理も図４に記載した処理と同様に、ホストＩＦ部がキャッシュメモリ部１０５をアクセスして行ってもよいし、キャッシュメモリ部１０５にて行ってもよい。あるいはストレージシステム１の中に他に処理を行うプロセッサ部を設けてもよい。
【００８７】
図３のステップ３０５でフラッシュメモリ２１２上に当該データが存在する（ホスト計算機からアクセス要求を受けたディスクドライブ１０３の要求を受けた記憶領域に対応付けられたフラッシュメモリ２１２の記憶領域が存在する）と判定された場合、処理はステップ５０１へ進む。
【００８８】
ステップ５０１において、ホスト計算機からの要求が読み出し（ＲＤ）であるか書き込み（ＷＲ）であるかを判定する。要求が読み出し（ＲＤ）である場合、処理はステップ５０２に進む。
【００８９】
ステップ５０２において、キャッシュメモリ部１０５は、要求されたデータをフラッシュメモリ２１２から読み出す。次に、キャッシュメモリ部１０５は、読み出したデータを伝送部１０４を通じてホストＩＦ部１０１に送信し、ホストＩＦ部１０１が要求元のホスト計算機へ送信する（ステップ５０３）。
【００９０】
ステップ５０１においてホスト計算機からの要求が書き込み（ＷＲ）であると判定された場合、処理はステップ５０４に進む。
【００９１】
ステップ５０４において、キャッシュメモリ部１０５は、フラッシュメモリ２１２にある現データ（書き込み要求されたディスクドライブ１０３の要求を受けた記憶領域に対応付けられたフラッシュメモリ２１２の記憶領域に格納されていたデータ）を読み出す。
【００９２】
次に、ステップ５０５において、キャッシュメモリ部１０５は、ＤＲＡＭ２１１上に空き領域があるか否かを判定する。ＤＲＡＭ２１１上に空き領域がある場合、処理はステップ５０７に進む。ＤＲＡＭ２１１上に空き領域がない場合、処理はステップ５０６に進む。
【００９３】
ステップ５０６において、図３のステップ３０６及び図４のステップ４０３と同様のＤＲＡＭ空き領域の確保処理を実行する。この空き領域の確保処理も、図３のステップ３０６、図４のステップ４０３と同様に元のホスト計算機からのアクセスコマンドを受信したホストＩＦ部１０１がおこなってもよいし、キャッシュメモリ部１０５にて行ってもよい。あるいはストレージシステム１の中に他に空き領域確保を行うプロセッサ部を設けてもよい。
【００９４】
ステップ５０７において、キャッシュメモリ部１０５は、ステップ５０４でフラッシュメモリ２１２から読み出されたデータをＤＲＡＭ２１１上の空き領域に格納する。
【００９５】
その後、処理はステップ５０８に進む。ステップ５０８において、キャッシュメモリ部１０５は、ホスト計算機から書き込みデータを受信する。次に、ステップ５０９において、キャッシュメモリ部１０５は、ＤＲＡＭ２１１上の当該データを受信した書き込みデータで更新する。
【００９６】
図３のステップ３０３において、ＤＲＡＭ２１１上に当該データが存在する（ホスト計算機からアクセス要求を受けたディスクドライブ１０３の要求を受けた記憶領域に対応付けられたＤＲＡＭ２１１の記憶領域が存在する）と判定された場合、処理はステップ５１０に進む。ステップ５１０において、ホスト計算機からの要求が読み出し（ＲＤ）であるか書き込み（ＷＲ）であるかを判定する。ホスト計算機からの要求が（ＷＲ）である場合、処理はステップ５０８に進み、ステップ５０８以降の処理が実行される。
【００９７】
ステップ５１０において、ホスト計算機からの要求が読み出し（ＲＤ）であると判定された場合、処理はステップ５１１に進む。ステップ５１１において、キャッシュメモリ部１０５は、要求されたデータをＤＲＡＭ２１１から読み出して、伝送部１０４を通じてホストＩＦ部１０１に送信し、ホストＩＦ部１０１が要求元のホスト計算機へ送信する。
【００９８】
図７に示す処理によれば、ホスト計算機からの要求が読み出し（ＲＤ）であり、ＤＲＡＭ２１１に要求されたデータが格納されておらず、かつ、フラッシュメモリ２１２に要求されたデータが格納されている場合、そのデータをフラッシュメモリ２１２から直接読み出して返送することができる。すなわち、そのデータをＤＲＡＭ２１１に書き込む必要がないため、フラッシュメモリ２１２にデータが格納されている場合の応答時間を短縮することができる。
【００９９】
さらに、上記のようにＤＲＡＭ２１１でキャッシュミスし、フラッシュメモリ２１２でキャッシュヒットした場合に、フラッシュメモリ２１２から読み出されたデータをＤＲＡＭ２１１に格納するためには、ＤＲＡＭ２１１のデータを吐き出す必要が生じる可能性がある。すなわち、吐き出されたデータをフラッシュメモリ２１２に書き込む必要が生じる可能性がある。図７に示す処理によれば、所定の条件が満たされる場合にＤＲＡＭ２１１への書き込みが省略されるため、フラッシュメモリ２１２へのデータの書き込みが発生する可能性を減らすことができる。
【０１００】
次に、本発明の第３の実施形態について説明する。
【０１０１】
本発明の第３の実施形態のストレージシステム１の全体及びキャッシュメモリ部１０５の構成は、第１の実施形態と同様である（図１及び図２参照）。第３の実施形態のストレージシステム１においては、図６に示す処理の代わりに図８に示す処理が実行されることを除いて、第１の実施形態と同様の処理が実行される。以下、第３の実施形態が第１の実施形態と異なる点についてのみ説明する。
【０１０２】
図８は、本発明の第３の実施形態のストレージシステム１において実行されるＤＲＡＭ空き領域確保処理の例を示すフローチャートである。
【０１０３】
なお、第３の実施形態では、図３のステップ３０６及び図４のステップ４０３におけるＤＲＡＭ空き領域確保処理として、まず図５に示す処理が実行され、続いて図８に示す処理が実行される。図８に示す処理は、図５及び図６に示した処理と同様に、元のホスト計算機からのアクセスコマンドを受信したホストＩＦ部１０１がおこなってもよいし、キャッシュメモリ部１０５にて行ってもよい。あるいはストレージシステム１の中に他に空き領域確保を行うプロセッサ部を設けてもよい。以下では例としてキャッシュメモリ部１０５が行うとして説明する。
【０１０４】
本実施形態では、図５のステップ６０３が実行された後、処理はステップ８０１に進む。
【０１０５】
ステップ８０１において、キャッシュメモリ部１０５は、フラッシュメモリ２１２に、図５のステップ６０３で吐き出し対象として選択されたブロックに対応するブロックがあるか否かを判定する。吐き出し対象ブロックに対応するブロックがフラッシュメモリ２１２にない場合、処理はステップ８０２に進む。
【０１０６】
ステップ８０２において、キャッシュメモリ部１０５は、ＤＲＡＭ２１１上の吐き出し対象ブロックのデータがダーティの状態であるか否かを判定する。吐き出し対象ブロックのデータがダーティの状態でない場合、処理はステップ８０４に進む。吐き出し対象ブロックのデータがダーティの状態である場合、処理はステップ８０３に進む。
【０１０７】
ステップ８０３において、キャッシュメモリ部１０５は、ＤＲＡＭ２１１上の吐き出し対象ブロックのデータをディスクドライブ１０３に書き込む。その後、処理はステップ８０４に進む。
【０１０８】
ステップ８０４において、キャッシュメモリ部１０５は、フラッシュメモリ２１２上に空き領域があるか否かを判定する。空き領域がある場合、処理はステップ８０９に進む。
【０１０９】
ステップ８０９において、キャッシュメモリ部１０５は、フラッシュメモリ２１２の空き領域に吐き出し対象ブロックのデータを格納する。
【０１１０】
次に、ステップ８１０において、キャッシュメモリ部１０５は、ＤＲＡＭ２１１上の吐き出し対象ブロックを空きブロックとする。
【０１１１】
ステップ８０４において、フラッシュメモリ２１２上に空き領域がないと判定された場合、処理はステップ８０５に進む。ステップ８０５において、キャッシュメモリ部１０５は、フラッシュメモリ２１２上の最も古くアクセスされたブロックを検索する。
【０１１２】
次に、キャッシュメモリ部１０５は、ステップ８０５（又は後述するステップ８０７）で検索されたフラッシュメモリ２１２上のブロックのデータが、ＤＲＡＭ２１１上にもまだ残っているか否かを判定する（ステップ８０６）。
【０１１３】
まだＤＲＡＭ２１１上にデータが残っている場合、処理はステップ８０７に進む。ステップ８０７において、キャッシュメモリ部１０５は、フラッシュメモリ２１２上で次に古くアクセスされたブロックを検索する。その後処理はステップ８０６に戻る。
【０１１４】
ステップ８０６において、ＤＲＡＭ２１１上にデータが残っていないと判定された場合、処理はステップ８０８に進む。
【０１１５】
ステップ８０８において、キャッシュメモリ部１０５は、フラッシュメモリ２１２上の検索されたブロックを消去して、そのブロックを空き領域とする。その後、処理はステップ８０９に進む。
【０１１６】
ステップ８０１において、ＤＲＡＭ２１１上の吐き出し対象ブロックに対応するブロックがフラッシュメモリ２１２上にあると判定された場合、処理はステップ８１１に進む。
【０１１７】
ステップ８１１において、キャッシュメモリ部１０５は、ＤＲＡＭ２１１上の吐き出し対象ブロックのデータがダーティの状態であるか否かを判定する。吐き出し対象ブロックのデータがダーティの状態でないと判定された場合、処理はステップ８１０に進む。この場合、吐き出し対象ブロックと、それに対応するフラッシュメモリ２１２のブロックに、同一のデータが格納されている。このため、キャッシュメモリ部１０５は、吐き出し対象ブロックのデータをフラッシュメモリ２１２に書き込まずに、ステップ８１０においてＤＲＡＭ２１１上の吐き出し対象ブロックを空きブロックとする。
【０１１８】
ステップ８１１において、吐き出し対象ブロックのデータがダーティであると判定された場合、処理はステップ８１２に進む。
【０１１９】
ステップ８１２において、キャッシュメモリ部１０５は、ＤＲＡＭ２１１上の吐き出し対象ブロックのデータをディスクドライブ１０３に書き込む。
【０１２０】
次に、処理はステップ８０８に進む。この場合、キャッシュメモリ部１０５は、フラッシュメモリ２１２上の検索されたブロックを消去し（ステップ８０８）、その後の処理（ステップ８０９及びステップ８１０）を実行する。
【０１２１】
なお、ステップ８０４において、フラッシュメモリ２１２の空き領域がまだ残っている場合であっても、残りの空き領域の容量の合計が所定の閾値以下になった場合には、空き領域がないと判定して、ステップ８０９へ進まず、ステップ８０５に進んでもよい。
【０１２２】
以上の図８の処理によれば、吐き出し対象ブロックのデータがダーティである場合、そのデータは、フラッシュメモリ２１２に書き込まれる前にディスクドライブ１０３に書き込まれる。その結果、フラッシュメモリ２１２には、ダーティなブロックが存在しなくなる。
【０１２３】
なお、本実施形態において、第２の実施形態と同様、図４に示す処理の代わりに図７に示す処理が実行されてもよい。
【０１２４】
次に、本発明の第４の実施形態について説明する。
【０１２５】
本発明の第４の実施形態のストレージシステム１の全体及びキャッシュメモリ部１０５の構成は、第１の実施形態と同様である（図１及び図２参照）。第４の実施形態のストレージシステム１においては、図６に示す処理の代わりに図９に示す処理が実行されることを除いて、第１の実施形態と同様の処理が実行される。以下、第４の実施形態が第１の実施形態と異なる点についてのみ説明する。
【０１２６】
図９は、本発明の第４の実施形態のストレージシステム１において実行されるＤＲＡＭ空き領域確保処理の例を示すフローチャートである。
【０１２７】
なお、第４の実施形態では、図３のステップ３０６及び図４のステップ４０３におけるＤＲＡＭ空き領域確保処理として、まず図５に示す処理が実行され、続いて図９に示す処理が実行される。図９に示す処理は、図５及び図６、図８に示した処理と同様に、元のホスト計算機からのアクセスコマンドを受信したホストＩＦ部１０１がおこなってもよいし、キャッシュメモリ部１０５にて行ってもよい。あるいはストレージシステム１の中に他に空き領域確保を行うプロセッサ部を設けてもよい。以下では例としてキャッシュメモリ部１０５が行うとして説明する。
【０１２８】
本実施形態では、図５のステップ６０３が実行された後、処理はステップ９０１に進む。
【０１２９】
ステップ９０１において、キャッシュメモリ部１０５は、フラッシュメモリ２１２に、図５のステップ６０３で吐き出し対象として選択されたブロックに対応するブロックがあるか否かを判定する。吐き出し対象ブロックに対応するブロックがフラッシュメモリ２１２にない場合、処理はステップ９０２に進む。
【０１３０】
ステップ９０２において、キャッシュメモリ部１０５は、ＤＲＡＭ２１１上の吐き出し対象ブロックのデータがダーティの状態であるか否かを判定する。吐き出し対象ブロックのデータがダーティの状態でない場合、処理はステップ９０４に進む。吐き出し対象ブロックのデータがダーティの状態である場合、処理はステップ９０３に進む。
【０１３１】
ステップ９０３において、キャッシュメモリ部１０５は、ＤＲＡＭ２１１上の吐き出し対象ブロックのデータをディスクドライブ１０３に書き込む。その後、処理はステップ９１０に進む。
【０１３２】
ステップ９０４において、キャッシュメモリ部１０５は、フラッシュメモリ２１２上に空き領域があるか否かを判定する。空き領域がある場合、処理はステップ９０９に進む。
【０１３３】
ステップ９０９において、キャッシュメモリ部１０５は、フラッシュメモリ２１２の空き領域に吐き出し対象ブロックのデータを格納する。
【０１３４】
次に、ステップ９１０において、キャッシュメモリ部１０５は、ＤＲＡＭ２１１上の吐き出し対象ブロックを空きブロックとする。
【０１３５】
ステップ９０４において、フラッシュメモリ２１２上に空き領域がないと判定された場合、処理はステップ９０５に進む。ステップ９０５において、キャッシュメモリ部１０５は、フラッシュメモリ２１２上の最も古くアクセスされたブロックを検索する。
【０１３６】
次に、キャッシュメモリ部１０５は、ステップ９０５（又は後述するステップ９０７）で検索されたフラッシュメモリ２１２上のブロックのデータが、ＤＲＡＭ２１１上にもまだ残っているか否かを判定する（ステップ９０６）。
【０１３７】
まだＤＲＡＭ２１１上にデータが残っている場合、処理はステップ９０７に進む。ステップ９０７において、キャッシュメモリ部１０５は、フラッシュメモリ２１２上で次に古くアクセスされたブロックを検索する。その後処理はステップ９０６に戻る。
【０１３８】
ステップ９０６において、ＤＲＡＭ２１１上にデータが残っていないと判定された場合、処理はステップ９０８に進む。
【０１３９】
ステップ９０８において、キャッシュメモリ部１０５は、フラッシュメモリ２１２上の検索されたブロックを消去して、そのブロックを空き領域とする。その後、処理はステップ９０９に進む。
【０１４０】
ステップ９０１において、ＤＲＡＭ２１１上の吐き出し対象ブロックに対応するブロックがフラッシュメモリ２１２上にあると判定された場合、処理はステップ９１１に進む。
【０１４１】
ステップ９１１において、キャッシュメモリ部１０５は、ＤＲＡＭ２１１上の吐き出し対象ブロックのデータがダーティの状態であるか否かを判定する。吐き出し対象ブロックのデータがダーティの状態でないと判定された場合、処理はステップ９１０に進む。この場合、吐き出し対象ブロックと、それに対応するフラッシュメモリ２１２のブロックに、同一のデータが格納されている。このため、キャッシュメモリ部１０５は、吐き出し対象ブロックのデータをフラッシュメモリ２１２に書き込まずに、ステップ９１０においてＤＲＡＭ２１１上の吐き出し対象ブロックを空きブロックとする。
【０１４２】
ステップ９１１において、吐き出し対象ブロックのデータがダーティであると判定された場合、処理はステップ９１２に進む。
【０１４３】
ステップ９１２において、キャッシュメモリ部１０５は、ＤＲＡＭ２１１上の吐き出し対象ブロックのデータをディスクドライブ１０３に書き込む。
【０１４４】
次に、キャッシュメモリ部１０５は、ステップ９１３において、フラッシュメモリ２１２上の当該ブロックを消去する。その後、処理はステップ９１０へ進む。
【０１４５】
なお、ステップ９０４において、フラッシュメモリ２１２の空き領域がまだ残っている場合であっても、残りの空き領域の容量の合計が所定の閾値以下になった場合には、空き領域がないと判定して、ステップ９０９へ進まず、ステップ９０５に進んでもよい。
【０１４６】
以上の図９の処理によれば、吐き出し対象ブロックのデータがダーティである場合、そのデータは、フラッシュメモリ２１２に書き込まれない。その結果、フラッシュメモリ２１２には、ダーティなブロックが存在しなくなる。
【０１４７】
なお、本実施形態において、第２の実施形態と同様、図４に示す処理の代わりに図７に示す処理が実行されてもよい。
【０１４８】
次に、本発明の第５の実施形態について説明する。
【０１４９】
本発明の第５の実施形態のストレージシステム１の全体及びキャッシュメモリ部１０５の構成は、第１の実施形態と同様である（図１及び図２参照）。第５の実施形態のストレージシステム１においては、図６に示す処理の代わりに図１０に示す処理が実行されることを除いて、第１の実施形態と同様の処理が実行される。以下、第５の実施形態が第１の実施形態と異なる点についてのみ説明する。
【０１５０】
図１０は、本発明の第５の実施形態のストレージシステム１において実行されるＤＲＡＭ空き領域確保処理の例を示すフローチャートである。
【０１５１】
なお、第５の実施形態では、図３のステップ３０６及び図４のステップ４０３におけるＤＲＡＭ空き領域確保処理として、まず図５に示す処理が実行され、続いて図１０に示す処理が実行される。図１０に示す処理は、図５及び図６、図８、図９に示した処理と同様に、元のホスト計算機からのアクセスコマンドを受信したホストＩＦ部１０１がおこなってもよいし、キャッシュメモリ部１０５にて行ってもよい。あるいはストレージシステム１の中に他に空き領域確保を行うプロセッサ部を設けてもよい。以下では例としてキャッシュメモリ部１０５が行うとして説明する。
【０１５２】
本実施形態では、図５のステップ６０３が実行された後、処理はステップ７２１に進む。
【０１５３】
ステップ７２１において、キャッシュメモリ部１０５は、フラッシュメモリ２１２に、図５のステップ６０３で吐き出し対象として選択されたブロックに対応するブロックがあるか否かを判定する。吐き出し対象ブロックに対応するブロックがフラッシュメモリ２１２にない場合、処理はステップ７２２に進む。
【０１５４】
ステップ７２２において、キャッシュメモリ部１０５は、フラッシュメモリ２１２上に空き領域があるか否かを判定する。空き領域がある場合、処理はステップ７２９に進む。
【０１５５】
ステップ７２９において、キャッシュメモリ部１０５は、フラッシュメモリ２１２の空き領域に吐き出し対象ブロックのデータを格納する。
【０１５６】
次に、ステップ７３０において、キャッシュメモリ部１０５は、ＤＲＡＭ２１１上の吐き出し対象ブロックを空きブロックとする。
【０１５７】
ステップ７２２において、フラッシュメモリ２１２上に空き領域がないと判定された場合、処理はステップ７２３に進む。
【０１５８】
ステップ７２３において、キャッシュメモリ部１０５は、フラッシュメモリ２１２上の最も古くアクセスされたブロックを検索する。
【０１５９】
次に、キャッシュメモリ部１０５は、ステップ７２３（又は後述するステップ７２５）で検索されたフラッシュメモリ２１２上のブロックのデータが、ＤＲＡＭ２１１上にもまだ残っているか否かを判定する（ステップ７２４）。まだＤＲＡＭ２１１上にデータが残っている場合、処理はステップ７２５に進む。ステップ７０５において、キャッシュメモリ部１０５は、フラッシュメモリ２１２上で次に古くアクセスされたブロックを検索する。その後処理はステップ７２４に戻る。
【０１６０】
ステップ７２４において、ＤＲＡＭ２１１上にデータが残っていないと判定された場合、処理はステップ７２６に進む。
【０１６１】
ステップ７２６において、キャッシュメモリ部１０５は、フラッシュメモリ２１２上の検索されたブロックのデータがダーティの状態であるか否かを判定する。検索されたブロックのデータがダーティの状態である場合、処理はステップ７２７に進む。ステップ７２７において、キャッシュメモリ部１０５は、フラッシュメモリ２１２上の検索されたブロックのデータをディスクドライブ１０３に書き込む。その後処理はステップ７２８に進む。
【０１６２】
ステップ７２６において、検索されたブロックのデータがダーティでないと判定された場合、処理はステップ７３２へ進む。ステップ７３２において、キャッシュメモリ部１０５は、フラッシュメモリ２１２上に他にダーティなデータが残っているか否かを判定する。ダーティなデータが残っていない場合、処理はステップ７２８へ進む。ダーティなデータが残っている場合、処理はステップ７２５へ進む。ステップ７２５において、キャッシュメモリ部１０５は、再び次に古くアクセスされたフラッシュメモリ２１２上のブロックを検索する。その後、処理はステップ７２４に戻り、ステップ７２４以降の処理が実行される。
【０１６３】
ステップ７２８において、キャッシュメモリ部１０５は、フラッシュメモリ２１２上の検索されたブロックを消去して、そのブロックを空き領域とする。その後、処理はステップ７２９に進む。
【０１６４】
ステップ７２１において、ＤＲＡＭ２１１上の吐き出し対象ブロックに対応するブロックがフラッシュメモリ２１２上にあると判定された場合、処理はステップ７３１に進む。
【０１６５】
ステップ７３１において、キャッシュメモリ部１０５は、ＤＲＡＭ２１１上の吐き出し対象ブロックのデータがダーティの状態であるか否かを判定する。吐き出し対象ブロックのデータがダーティの状態でないと判定された場合、処理はステップ７３０に進む。この場合、吐き出し対象ブロックと、それに対応するフラッシュメモリ２１２のブロックに、同一のデータが格納されている。このため、キャッシュメモリ部１０５は、吐き出し対象ブロックのデータをフラッシュメモリ２１２に書き込まずに、ステップ７３０においてＤＲＡＭ２１１上の当該ブロックを空きブロックとする。
【０１６６】
ステップ７３１において、吐き出し対象ブロックのデータがダーティであると判定された場合、処理はステップ７２８に進み、ステップ７２８以降の処理が実行される。
【０１６７】
なお、ステップ７２２において、フラッシュメモリ２１２の空き領域がまだ残っている場合であっても、残りの空き領域の容量の合計が所定の閾値以下になった場合には、空き領域がないと判定して、ステップ７２９へ進まず、ステップ７２３に進んでもよい。
【０１６８】
図１０に示す処理によれば、ダーティなブロックをフラッシュメモリ２１２上から優先して吐き出すことができる。
【０１６９】
なお、本実施形態において、第２の実施形態と同様、図４に示す処理の代わりに図７に示す処理が実行されてもよい。
【０１７０】
以上の図３から図１０に示す処理は、上記のようにキャッシュメモリ部１０５の制御用ＭＰＵ２１０がローカルメモリ２１３に格納された制御プログラム２１４を実行することによって実現されてもよいが、他のプロセッサによって実現されてもよい。例えば、ホストＩＦ部１０１、ドライブＩＦ部１０２及び伝送部１０４の少なくとも一つが制御用ＭＰＵ２１０及びローカルメモリ２１３と同等のプロセッサ（図示省略）及びメモリ（図示省略）を備えてもよい。その場合、それらのプロセッサのいずれかが図３から図１０に示す処理を実行してもよいし、複数のプロセッサが協同して図３から図１０に示す処理を実行してもよい。あるいはストレージシステム１の中に他に処理を行うプロセッサ部を設けてもよい。
【０１７１】
以上の本発明の実施形態によれば、ストレージシステムのキャッシュメモリの一部をビットコストの低いフラッシュメモリによって置き換えることによって、キャッシュメモリを安価に大容量化することができる。フラッシュメモリは不揮発性であるため、停電時にデータを保持するためのバッテリを省略することができる。このため、キャッシュメモリを小型化、軽量化及び省電力化することができる。さらに、本発明の実施形態によれば、ＤＲＡＭが優先的に使用され、フラッシュメモリには、アクセス頻度が低いデータ、特に、書き込みアクセス頻度が低いデータが優先的に格納される。これによって、フラッシュメモリを使用することによる性能低下を抑制することができる。
【０１７２】
本発明は、ハードディスクドライブとキャッシュメモリとを備えるストレージシステムに適用することができる。
【０１７３】
本発明の代表的な観点として、特許請求の範囲に記載したものに加えて、次のものが挙げられる。
【０１７４】
（１）ホスト計算機に接続されるホストインターフェースと、ディスクドライブと、前記ディスクドライブに接続されるドライブインターフェースと、前記ディスクドライブから読み出されたデータ及び前記ディスクドライブに書き込まれるデータの少なくとも一方を一時的に格納するキャッシュメモリと、を備えるストレージシステムであって、
前記キャッシュメモリは、揮発性の第１メモリと、不揮発性の第２メモリと、を備え、
前記ディスクドライブ、前記第１メモリ及び前記第２メモリは、それぞれ、複数の記憶領域を含み、
前記第１メモリ及び前記第２メモリの前記各記憶領域は、前記ディスクドライブの記憶領域に対応付けられた第１記憶領域、又は、前記ディスクドライブの記憶領域に対応付けられていない第２記憶領域のいずれかであり、
前記ストレージシステムは、さらに、前記第１メモリ及び前記第２メモリへのデータの書き込み及び読み出しを制御する制御プロセッサを備え、
前記制御プロセッサは、
データを前記ディスクドライブに書き込む要求又はデータを前記ディスクドライブから読み出す要求を受信し、
前記要求されたデータを前記第１メモリに格納し、
前記第１メモリに含まれる前記第２記憶領域の容量の合計が所定の閾値より小さい場合、前記第１メモリの前記複数の第１記憶領域の一つを選択し、
前記選択された第１メモリの第１記憶領域に格納されたデータを前記第２メモリに格納し、
前記選択された第１メモリの第１記憶領域を前記第２記憶領域に変更することを特徴とするストレージシステム。
【０１７５】
（２）前記制御プロセッサは、さらに、
前記選択された第１メモリの第１記憶領域に格納されたデータが、前記ディスクドライブに格納されているか否かを判定し、
前記選択された第１メモリの第１記憶領域に格納されたデータが、前記ディスクドライブに格納されていないと判定された場合、前記選択された第１メモリの第１記憶領域に格納されたデータを前記第２メモリに格納せずに、前記選択された第１メモリの第１記憶領域に格納されたデータを前記ディスクドライブに格納することを特徴とする（１）に記載のストレージシステム。
【０１７６】
（３）前記制御プロセッサは、さらに、
前記選択された第１メモリの第１記憶領域に格納されたデータが、前記ディスクドライブに格納されているか否かを判定し、
前記選択された第１メモリの第１記憶領域に格納されたデータが、前記ディスクドライブに格納されていないと判定された場合、前記選択された第１メモリの第１記憶領域に格納されたデータをさらに前記ディスクドライブに格納することを特徴とする（１）に記載のストレージシステム。
【０１７７】
（４）前記制御プロセッサは、さらに、
前記要求されたデータが前記第１メモリに格納されていない場合、前記要求されたデータが前記第２メモリに格納されているか否かを判定し、
前記受信した要求が前記データを前記ディスクドライブから読み出す要求であるか否かを判定し、
前記要求されたデータが前記第２メモリに格納されていると判定され、かつ、前記受信した要求が前記データを前記ディスクドライブから読み出す要求であると判定された場合、前記第２メモリから前記要求されたデータを読み出し、
前記読み出されたデータを前記第１メモリに格納し、さらに、前記読み出されたデータを前記ホスト計算機に送信することを特徴とする（１）に記載のストレージシステム。
【０１７８】
（５）前記制御プロセッサは、さらに、
前記要求されたデータが前記第１メモリに格納されていない場合、前記要求されたデータが前記第２メモリに格納されているか否かを判定し、
前記受信した要求が前記データを前記ディスクドライブから読み出す要求であるか否かを判定し、
前記要求されたデータが前記第２メモリに格納されていると判定され、かつ、前記受信した要求が前記データを前記ディスクドライブから読み出す要求であると判定された場合、前記第２メモリから前記要求されたデータを読み出し、
前記読み出されたデータを、前記第１メモリに格納せずに前記ホスト計算機に送信することを特徴とする（１）に記載のストレージシステム。
【図面の簡単な説明】
【０１７９】
【図１】本発明の第１の実施形態のストレージシステムの全体の構成の例を示すブロック図である。
【図２】本発明の第１の実施形態のキャッシュメモリ部の構成の例を示すブロック図である。
【図３】本発明の第１の実施形態のストレージシステムを制御する処理の例を示すフローチャートである。
【図４】本発明の第１の実施形態のストレージシステムにおいて、キャッシュヒットした場合に実行される処理の例を示すフローチャートである。
【図５】本発明の第１の実施形態のストレージシステムにおいて実行されるＤＲＡＭ空き領域確保処理の例を示すフローチャートの第１の部分である。
【図６】本発明の第１の実施形態のストレージシステムにおいて実行されるＤＲＡＭ空き領域確保処理の例を示すフローチャートの第２の部分である。
【図７】本発明の第２の実施形態のストレージシステムにおいて、キャッシュヒットした場合に実行される処理の例を示すフローチャートである。
【図８】本発明の第３の実施形態のストレージシステムにおいて実行されるＤＲＡＭ空き領域確保処理の例を示すフローチャートである。
【図９】本発明の第４の実施形態のストレージシステムにおいて実行されるＤＲＡＭ空き領域確保処理の例を示すフローチャートである。
【図１０】本発明の第５の実施形態のストレージシステムにおいて実行されるＤＲＡＭ空き領域確保処理の例を示すフローチャートである。
【符号の説明】
【０１８０】
１  ストレージシステム
１０１  ホストＩＦ部
１０２  ドライブＩＦ部
１０３  ディスクドライブ
１０４  伝送部
１０５  キャッシュメモリ部
２０  キャッシュメモリ制御部
２１０  制御用ＭＰＵ
２１１  ＤＲＡＭ
２１２  フラッシュメモリ
２１３  ローカルメモリ
２１４  制御プログラム
【図１】
2009205335.tif 000003
【図２】
2009205335.tif 000004
【図３】
2009205335.tif 000005
【図４】
2009205335.tif 000006
【図５】
2009205335.tif 000007
【図６】
2009205335.tif 000008
【図７】
2009205335.tif 000009
【図８】
2009205335.tif 000010
【図９】
2009205335.tif 000011
【図１０】
2009205335.tif 000012