(57)【要約】      （修正有）【課題】管理リストの更新処理にかかるプロセッサの処理負荷を低減させることができるストレージ制御装置、キャッシュメモリ制御方法及びストレージシステムを提供する。【解決手段】キャッシュメモリの第１ページに関する処理が実行されたことに伴い処理報告が生成され、処理報告は管理リストの更新処理待ちキューに保持される。更新処理待ちキューに、第１ページに関する他の処理報告が既に蓄積されている場合には、生成された処理報告は更新処理待ちキューに入力されることなく消去される。これにより、管理リストの更新処理に要するプロセッサ負荷を抑制することができる。【選択図】図９
2018163457.tif 000002
【特許請求の範囲】
【請求項１】
複数の領域を含むキャッシュメモリを有し、
情報処理装置からコマンドを受信し、
前記コマンドの受信に基づき、前記キャッシュメモリへのアクセスを含むコマンド処理を実行し、
前記複数の領域のうち、前記コマンド処理においてアクセスされた領域を特定する処理報告を生成し、
生成された前記処理報告をキューに入力し、
前記キューに入力された前記処理報告に基づき、前記領域へのアクセスを管理リストに記録する管理リスト更新処理を実行するストレージ制御装置であって、
前記情報処理装置から第１コマンドを受信した場合、前記第１コマンドの受信に基づき、前記キャッシュメモリの前記複数の領域の第１領域へのアクセスを含む第１コマンド処理を実行し、
前記第１領域を特定する第１処理報告を生成し、前記キューに、前記第１領域を特定する１又は複数の第２処理報告が保持されている場合には、生成された前記第１処理報告の前記キューへの入力を行わないか、若しくは、１又は複数の前記第２処理報告の少なくとも一つを前記キューから削除するか、又は、
前記キューに、前記第１領域を特定する１又は複数の前記第２処理報告が保持されている場合には、前記第１処理報告の生成を実行しない
ことを特徴とするストレージ制御装置。
【請求項２】
前記管理リストに前記第１領域を含む前記複数の領域が登録されている場合、前記第１処理報告に基づく前記管理リスト更新処理は、前記複数の領域のうち前記第１領域が、直近にアクセスされた時刻が最も新しいことを示すよう、前記管理リストを変更する処理を含むことを特徴とする請求項１に記載のストレージ制御装置。
【請求項３】
前記複数の領域のうち、直近にアクセスされた前記時刻が最も古い領域に保持されたデータを消去することを特徴とする請求項２に記載のストレージ制御装置。
【請求項４】
前記第１コマンドが第１データの読み出しを要求する場合であって、前記第１データが前記第１領域に保持されている場合は、前記第１データを前記第１領域から読み出して、読み出された前記第１データを前記情報処理装置へ送信し、
前記第１コマンドが前記第１データの読み出しを要求する場合であって、前記第１データが前記第１領域を含む前記キャッシュメモリに保持されていない場合は、前記第１データをストレージ装置から読み出して、読み出された前記第１データを前記情報処理装置へ送信し、前記第１データを前記キャッシュメモリの前記第１領域へ保持させる
ことを特徴とする請求項１乃至３何れか一項に記載のストレージ制御装置。
【請求項５】
前記第１コマンドが第１データの書き込みを要求する場合、前記第１データを前記第１領域に保持させることを特徴とする請求項１乃至３何れか一項に記載のストレージ制御装置。
【請求項６】
前記キューに１又は複数の前記第２処理報告が保持されている場合に、１又は複数の前記第２処理報告の個数を特定し、
前記個数が所定値以上の場合に、生成された前記第１処理報告の前記キューへの入力を行わない、若しくは、前記１又は複数の第２処理報告の少なくとも一つを前記キューから削除する、又は、前記第１処理報告の生成を行わない
ことを特徴とする請求項１乃至５何れか一項に記載のストレージ制御装置。
【請求項７】
更に、前記管理リスト更新処理を実行するプロセッサを含み、
前記プロセッサの処理負荷を特定し、
前記プロセッサの前記処理負荷が第１の値である場合は、前記所定値は第２の値であり、
前記プロセッサの前記処理負荷が、前記第１の値よりも高い第３の値である場合は、前記所定値は、前記第２の値よりも低い第４の値である
ことを特徴とする請求項６に記載のストレージ制御装置。
【請求項８】
前記管理リストに、前記第１領域が登録されているかを示す第１情報と、前記キューに、１又は複数の前記第２処理報告が保持されているかを示す第２情報とに基づいて、前記第１処理報告の前記キューへの入力を行うかの判断、若しくは、１又は複数の前記第２処理報告の少なくとも一つを前記キューから削除するかの判断、又は、前記第１処理報告の生成を行うかの判断を行う
ことを特徴とする請求項１乃至７何れか一項に記載のストレージ制御装置。
【請求項９】
複数の領域を含むキャッシュメモリを有するストレージ制御装置が、
情報処理装置からコマンドを受信し、
前記コマンドの受信に基づき、前記キャッシュメモリへのアクセスを含むコマンド処理を実行し、
前記複数の領域のうち、前記コマンド処理においてアクセスされた領域を特定する処理報告を生成し、
生成された前記処理報告をキューに入力し、
前記キューに入力された前記処理報告に基づき、前記領域へのアクセスを管理リストに記録する管理リスト更新処理を実行し、
前記情報処理装置から第１コマンドを受信した場合、前記第１コマンドの受信に基づき、前記キャッシュメモリの前記複数の領域の第１領域へのアクセスを含む第１コマンド処理を実行し、
前記第１領域を特定する第１処理報告を生成し、前記キューに、前記第１領域を特定する１又は複数の第２処理報告が保持されている場合には、生成された前記第１処理報告の前記キューへの入力を行わないか、若しくは、１又は複数の前記第２処理報告の少なくとも一つを前記キューから削除するか、又は、
前記キューに、前記第１領域を特定する１又は複数の前記第２処理報告が保持されている場合には、前記第１処理報告の生成を実行しない
ことを特徴とするキャッシュメモリ制御方法。
【請求項１０】
ストレージ装置と、
複数の領域を含むキャッシュメモリを有するストレージ制御装置と、
を含み、
前記ストレージ制御装置は、
情報処理装置からコマンドを受信し、
前記コマンドの受信に基づき、前記キャッシュメモリへのアクセスを含むコマンド処理を実行し、
前記複数の領域のうち、前記コマンド処理においてアクセスされた領域を特定する処理報告を生成し、
生成された前記処理報告をキューに入力し、
前記キューに入力された前記処理報告に基づき、前記領域へのアクセスを管理リストに記録する管理リスト更新処理を実行するストレージ制御装置であって、
前記情報処理装置から第１コマンドを受信した場合、前記第１コマンドの受信に基づき、前記キャッシュメモリの前記複数の領域の第１領域へのアクセスを含む第１コマンド処理を実行し、
前記第１領域を特定する第１処理報告を生成し、前記キューに、前記第１領域を特定する１又は複数の第２処理報告が保持されている場合には、生成された前記第１処理報告の前記キューへの入力を行わないか、若しくは、１又は複数の前記第２処理報告の少なくとも一つを前記キューから削除するか、又は、
前記キューに、前記第１領域を特定する１又は複数の前記第２処理報告が保持されている場合には、前記第１処理報告の生成を実行しない
ことを特徴とするストレージシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、ストレージ制御装置、キャッシュメモリ制御方法及びストレージシステムに関する。
【背景技術】
【０００２】
ストレージシステムは、データを格納するストレージ装置と、ストレージ装置を制御するストレージ制御装置を含む。ストレージ装置は、例えばＨａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ（ＨＤＤ）やＳｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ（ＳＳＤ）等の不揮発性のデータ格納装置である。ストレージ制御装置は、ホストサーバから受信するデータ書き込み要求やデータ読み出し要求に応じてストレージ装置を制御し、ストレージ装置へのデータの書き込み処理やストレージ装置からのデータの読み出し処理を実行する。以下、データ書き込み要求は「ライトコマンド」と、データ読み出し要求は「リードコマンド」と表記される。また、ライトコマンド及びリードコマンドを併せて単に「コマンド」と呼ぶ。また、ストレージ制御装置に対してコマンドが入力されることを「アクセス」と呼ぶ。
【０００３】
ストレージ制御装置は、キャッシュメモリとして例えばＤＲＡＭを含む。ストレージ制御装置は、ホストサーバからライトコマンドを受信した場合、ライトコマンドの対象となるデータをキャッシュメモリに保持させ、その後、キャッシュメモリに保持されたデータのストレージ装置への格納処理を実行する。また、ストレージ制御装置はホストサーバからリードコマンドを受信した場合、リードコマンドの対象となるデータがキャッシュメモリに保持されている場合は、キャッシュメモリから当該データを読み出す。キャッシュメモリから読み出されたデータはホストサーバへ送信される。リードコマンドの対象となるデータがキャッシュメモリに保持されていない場合は、ストレージ制御装置は、ストレージ装置から当該データを読み出す。ストレージ装置から読み出されたデータはホストサーバへ送信されるとともにキャッシュメモリに保持される。
【０００４】
キャッシュメモリの容量はストレージ装置の容量に比べて小さいため、ストレージ制御装置は、ストレージ装置に格納されているデータのうち、キャッシュメモリに保持させるデータを選定する必要がある。言い換えればストレージ制御装置は、キャッシュメモリの空き容量を確保するために、キャッシュメモリに保持されているデータのうち、どのデータを削除するかを特定し、特定されたデータを削除する処理を行う。キャッシュメモリから削除されるデータを特定するためのアルゴリズムとして、例えばＬｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ（ＬＲＵ）方式が知られている。ＬＲＵ方式においては、キャッシュメモリに保持されるデータに対するアクセスの直近の時刻に基づいて管理リストが更新され、キャッシュメモリに保持されたデータのうち、直近のアクセス時刻が最も古いデータが優先的にキャッシュメモリから削除される。ストレージ制御装置は、キャッシュメモリの管理を行うために、アクセスに基づいて、管理リストを更新する処理を実行する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１５‐１９１６０４号公報
【特許文献２】特開２００７‐３３４７５２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ストレージ制御装置に対して複数のアクセスがあった場合、ストレージ制御装置のプロセッサは、各アクセスに対応して管理リストの更新処理を実行するため、プロセッサの処理負荷が増大する。開示の技術は、管理リストの更新処理にかかるプロセッサの処理負荷を低減させることを目的とする。
【課題を解決するための手段】
【０００７】
複数の領域を含むキャッシュメモリを有し、情報処理装置からコマンドを受信し、前記コマンドの受信に基づき、前記キャッシュメモリへのアクセスを含むコマンド処理を実行し、前記複数の領域のうち、前記コマンド処理においてアクセスされた領域を特定する処理報告を生成し、生成された前記処理報告をキューに入力し、前記キューに入力された前記処理報告に基づき、前記領域へのアクセスを管理リストに記録する管理リスト更新処理を実行するストレージ制御装置であって、前記情報処理装置から第１コマンドを受信した場合、前記第１コマンドの受信に基づき、前記キャッシュメモリの前記複数の領域の第１領域へのアクセスを含む第１コマンド処理を実行し、前記第１領域を特定する第１処理報告を生成し、前記キューに、前記第１領域を特定する１又は複数の第２処理報告が保持されている場合には、生成された前記第１処理報告の前記キューへの入力を行わないか、若しくは、１又は複数の前記第２処理報告の少なくとも一つを前記キューから削除するか、又は、前記キューに、前記第１領域を特定する１又は複数の前記第２処理報告が保持されている場合には、前記第１処理報告の生成を実行しないことを特徴とするストレージ制御装置が開示される。
【発明の効果】
【０００８】
開示の技術により、管理リストの更新処理にかかるプロセッサの処理負荷を低減させることができる。
【図面の簡単な説明】
【０００９】
【図１】情報処理装置に接続されたストレージシステムを示す図である。
【図２】ＣＭのハードウェアを示す図である。
【図３】ＣＭのプロセッサによって実現される機能ブロックを示す図である。
【図４】メタデータリストの内容例を示す図である。
【図５】管理リストの内容例を示す図である。
【図６】コマンドを受信したＣＭのプロセッサによって実行される処理の一例を示すフローチャートである。
【図７】コマンドを受信したＣＭのプロセッサによって実行される処理の他の例を示すフローチャートである。
【図８】処理報告生成部による処理報告の生成、キューへの処理報告の入力、及び管理リスト制御部による管理リストの更新処理を説明するための図である。
【図９】キュー制御部の機能を説明するための図である。
【図１０】プロセッサによって実行される処理であって、主にキューへの処理報告の入力に関する処理のフローチャートである。
【図１１】プロセッサによって実行される処理であって、主に管理リストの更新に関する処理のフローチャートである。
【図１２】プロセッサによって実行される処理であって、主にキューへの処理報告の入力に関する処理の他の例のフローチャートである。
【図１３】プロセッサによって実行される処理であって、主にキューへの処理報告の入力に関する処理の更に他の例のフローチャートである。
【図１４】プロセッサによって実行される処理であって、リードコマンドの受信に基づいて実行されるデータの読み出し処理に関するフローチャートである。
【図１５】プロセッサによって実行される処理であって、ライトコマンドに基づいて実行されるデータの書き込み処理に関するフローチャートである。
【図１６】第２実施例におけるキュー制御部の機能を説明するための図である。
【図１７】キュー制御部によって実行される処理のフローチャートである。
【図１８】第２実施例の変形例におけるＣＭのプロセッサの機能ブロックを示す図である。
【図１９】第１管理リストと第２管理リストの機能を説明するための図である。
【図２０】第２実施例において２つの管理リストを用いてキャッシュメモリのページ管理が行われる場合の、キュー制御部の機能を説明するための図である。
【発明を実施するための形態】
【００１０】
＜第１実施例＞
図１は、情報処理装置１０に接続されたストレージシステムを示す図である。情報処理装置１０は例えばホストサーバである。ストレージシステムは、ストレージ制御装置２０とストレージ装置３０を含む。ストレージ制御装置２０は、制御装置２１ａ及び２１ｂを含む。制御装置２１ａ及び２１ｂは互いに、例えばＰＣＩ  Ｅｘｐｒｅｓｓ（登録商標）バスによって接続され、相互にデータの送受信を行うことができる。制御装置２１ａ及び２１ｂはそれぞれＣｏｎｔｒｏｌ  Ｍａｎａｇｅｒ（以下、ＣＭ）と呼ばれる。以下、ＣＭ２１ａ及び２１ｂを区別しない場合は、単に「ＣＭ２１」と表記するものとする。ＣＭ２１は、情報処理装置１０から送信されたコマンドに基づき、ストレージ装置３０へのデータの書き込み処理やストレージ装置３０からのデータの読み出し処理を実行する。ストレージ装置３０は、例えばＨＤＤ又はＳＳＤ等の不揮発性のデータ格納装置である。
【００１１】
図２は、ＣＭ２１のハードウェアを示す図である。ＣＭ２１は、Ｃｈａｎｎｅｌ  Ａｄａｐｔｏｒ（ＣＡ）２１０と、プロセッサ２２０と、不揮発性メモリ２４０と、揮発性メモリ２５０と、Ｉｎｐｕｔ  Ｏｕｔｐｕｔ  Ｃｏｎｔｒｏｌｌｅｒ（ＩＯＣ）２６０と、Ｅｘｐａｎｄｅｒ（ＥＸＰ）２７０とを有する。
【００１２】
ＣＡ２１０は、情報処理装置１０に対するインターフェース回路であり、情報処理装置１０からコマンドを受信する。また、ストレージ装置３０から読み出されたデータは、ＣＡ２１０を介して情報処理装置１０に対して送信される。更に、情報処理装置１０から受信したコマンドに対する完了通知がＣＡ２１０を介して情報処理装置１０に対して送信される。
【００１３】
プロセッサ２２０は、不揮発性メモリ２４０に格納されたコンピュータプログラムを揮発性メモリ２５０にロードして実行する。例えばプロセッサ２２０は、コマンドの受信に応じて、データの書き込み処理又は読み出し処理を実行する。プロセッサ２２０はハードウェアプロセッサであり、Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ（ＣＰＵ）、Ｍｉｃｒｏ  Ｃｏｎｔｒｏｌ  Ｕｎｉｔ（ＭＣＵ）、Ｍｉｃｒｏ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ（ＭＰＵ）、Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ（ＤＳＰ）、Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ（ＦＰＧＡ）等が適用可能である。
【００１４】
不揮発性メモリ２４０は、コンピュータで読み取り可能な記録媒体である。不揮発性メモリ２４０には、プロセッサ２２０によって実行されるコンピュータプログラム等が格納される。不揮発性メモリ２４０は、例えばＲｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ（ＲＯＭ）、Ｍａｓｋ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ（マスクＲＯＭ）、Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ（ＰＲＯＭ）、フラッシュメモリ、Ｍａｇｎｅｔｏｒｅｓｉｓｔｉｖｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ（ＭＲＡＭ）、Ｒｅｓｉｓｔａｎｃｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ（ＲｅＲＡＭ）、Ｆｅｒｒｏｅｌｅｃｔｒｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ（ＦｅＲＡＭ）等である。コンピュータプログラムは、不揮発性メモリ２４０以外の記憶媒体であって、コンピュータで読み取り可能な記録媒体（ただし、搬送波は除く）に記録されることもできる。また、コンピュータプログラムが記録されたＤｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ（ＤＶＤ）、Ｃｏｍｐａｃｔ  Ｄｉｓｃ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ（ＣＤ−ＲＯＭ）などの可搬型記録媒体を流通させることもできる。また、コンピュータプログラムは、ネットワークを介して送信され得る。
【００１５】
揮発性メモリ２５０は、コンピュータで読み取り可能な記録媒体である。揮発性メモリ２５０には、不揮発性メモリ２４０に格納されているコンピュータプログラムがロードされる。また揮発性メモリ２５０には、プロセッサ２２０による演算処理に使用されるデータや演算処理の結果であるデータ等が保持される。また揮発性メモリ２５０は、上述のキャッシュメモリとして使用され、ＣＭ２１がコマンドを受信した場合、書き込み対象となるデータ又は読み出し対象となるデータがキャッシュメモリに保持される。揮発性メモリ２５０は、例えばＳｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ（ＳＲＡＭ）やＤｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ（ＤＲＡＭ）等である。
【００１６】
ＩＯＣ２６０はＣＭ２１とストレージ装置３０との間で行われるデータの送受信を制御する。ＥＸＰ２７０は、ＣＭ２１とストレージ装置３０との間で行われるデータの送受信を中継する。
【００１７】
図３は、ＣＭ２１のプロセッサ２２０によって実現される機能ブロックを示す図である。プロセッサ２２０は、データ送受信部２２１、ヒット判定部２２２、キャッシュメモリ制御部２２３、ストレージ装置制御部２２４、完了通知部２２５、処理報告生成部２２６、キュー制御部２２７、管理リスト制御部２２８として機能する。またプロセッサ２２０はメタデータリスト２３１、管理リスト２３２、キュー２３３を含む。まずメタデータリスト２３１、管理リスト２３２について説明する。
【００１８】
キャッシュメモリはページ単位で管理されている。１ページは例えば４Ｋバイトの容量を有する記憶領域である。この場合、例えばキャッシュメモリの容量が６４Ｇバイトであれば、キャッシュメモリは１６Ｍ個のページを有する。キャッシュメモリへのデータの書き込み処理やキャッシュメモリからのデータの読み出し処理は、ページ単位で実行される。メタデータリスト２３１には、各ページに保持されたデータのアドレスを示すメタデータが、各ページに対応付けられて登録される。メタデータには例えばデータのＬｏｇｉｃａｌ  Ｕｎｉｔ  Ｎｕｍｂｅｒ（ＬＵＮ）及びＬｏｇｉｃａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓ（ＬＢＡ）が含まれる。
【００１９】
図４は、メタデータリスト２３１の内容例を示す図である。図４においては、例えばページＡのメタデータが、ＬＵＮが１０であり、ＬＢＡが４０９６であることが示されている。これは、ＬＵＮが１０であってＬＢＡが４０９６から４Ｋバイトのデータが、ページＡに保持されていることを示す。同様に、ページＤにはＬＵＮが２、ＬＢＡが８１９２から４Ｋバイトのデータが保持されていることが示され、ページＥにはＬＵＮが６、ＬＢＡが１２２８８から４Ｋバイトのデータが保持されていることが示される。
【００２０】
図５は、管理リスト２３２の内容例を示す図である。管理リスト２３２には、キャッシュメモリに含まれる複数のページのうち、データを保持しているページが登録される。また管理リスト２３２においては、データを保持している複数のページが、各ページに対する直近のアクセスの時刻に基づいて順に配置されている。具体的には、直近にアクセスされた時刻が新しい順となるように、複数のページが管理リスト２３２に登録される。図５においてＭＲＵは、Ｍｏｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄの略であり、当該ページについての直近のアクセスの時刻が、他のページに比べて新しいことを示す。また、ＬＲＵは、Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ Ｕｓｅｄの略であり、当該ページについての直近のアクセスの時刻が、他のページに比べて古いことを示す。よって、あるページに対するアクセスがあった場合に、アクセスされた当該ページが管理リスト２３２のＭＲＵの位置に配置されるように、管理リスト制御部２２８が管理リスト２３２を更新する。そしてキャッシュメモリ制御部２２３は、キャッシュメモリの空き容量を増加させる場合には、管理リスト２３２のＬＲＵの位置にあるページのデータを消去する。
【００２１】
次に、図３に示された他の機能ブロックについて説明する。データ送受信部２２１は、情報処理装置１０から送信されたコマンドやデータを受信する。またデータ送受信部２２１は、ストレージ装置３０やキャッシュメモリから読み出されたデータを情報処理装置１０に送信する。
【００２２】
ヒット判定部２２２は、コマンドがデータ送受信部２２１により受信された場合に、メタデータリスト２３１に基づいてヒット判定を行う。コマンドがリードコマンドである場合は、ヒット判定部２２２は、コマンドにて指定されるアドレスのデータがキャッシュメモリに保持されているか否か判定する。またコマンドがライトコマンドである場合は、ヒット判定部２２２は、コマンドにて指定されるアドレスのデータがキャッシュメモリに保持されているか否か、又はキャッシュメモリに空き容量（空きページ）があるか否かを判定する。
【００２３】
キャッシュメモリ制御部２２３は、キャッシュメモリへのデータの書き込み処理やキャッシュメモリからのデータの読み出し処理等、キャッシュメモリの制御全般を行う。またキャッシュメモリ制御部２２３は、キャッシュメモリの空きページを確保する場合には、管理リスト２３２に基づき、キャッシュメモリからデータの消去を行う。
【００２４】
ストレージ装置制御部２２４は、ストレージ装置３０へのデータの書き込み処理やストレージ装置３０からのデータの読み出し処理等、ストレージ装置３０の制御全般を行う。本明細書において、キャッシュメモリ制御部２２３とストレージ装置制御部２２４をまとめて「コマンド処理部」と称する場合がある。
【００２５】
完了通知部２２５は、情報処理装置１０から送信されたコマンドに関する処理が完了したことを示す完了通知を、情報処理装置１０に対して送信する。例えばコマンドがライトコマンドである場合は、ライトコマンドの対象データがキャッシュメモリに保持された後又は対象データがストレージ装置３０に格納された後に、完了通知が送信される。またコマンドがリードコマンドである場合は、リードコマンドの対象データが全て情報処理装置１０に送信された後に、完了通知が送信される。
【００２６】
処理報告生成部２２６は、コマンド処理部による処理が実行された際に、キャッシュメモリのどのページが使用されたのか、を示す処理報告を生成する。例えばコマンドがライトコマンドであり、ライトコマンドの対象となるデータがページＡに保持された場合には、ページＡを特定する情報を含む処理報告が生成される。またコマンドがリードコマンドであり、リードコマンドの対象となるデータがキャッシュメモリのページＡに保持されていた場合、ページＡからのデータの読み出し処理が実行されたことに伴い、ページＡを特定する情報を含む処理報告が生成される。またコマンドがリードコマンドであり、リードコマンドの対象となるデータがキャッシュメモリに保持されていない場合であって、ストレージ装置３０から読み出されたデータがページＡに保持された場合には、ページＡを特定する情報を含む処理報告が生成される。
【００２７】
キュー制御部２２７は、処理報告生成部２２６によって生成された処理報告の、キュー２３３への入力を制御する。生成された処理報告に関し、所定の条件が満たされた場合には、キュー制御部２２７はキュー２３３へ処理報告を入力せずに処理報告を削除する。一方、所定の条件が満たされない場合は、キュー制御部２２７はキュー２３３への処理報告の入力を実行する。所定の条件及びキュー２３３の詳細については後述する。
【００２８】
管理リスト制御部２２８は、キュー２３３に蓄積された処理報告を順に取り出し、管理リスト２３２の更新処理を実行する。例えばキュー２３３から取り出された処理報告がページＡに関するものである場合、ページＡが管理リスト２３２のＭＲＵの位置に配置されるように管理リスト２３２の更新処理を行う。
【００２９】
図６は、コマンドを受信したＣＭ２１のプロセッサ２２０によって実行される処理の一例を示すフローチャートである。処理フローは処理Ｓ４００により開始され、処理Ｓ４０２においてデータ送受信部２２１が、情報処理装置１０からコマンドを受信する。処理Ｓ４０４においてヒット判定部２２２が、受信されたコマンドに関するヒット判定を実行する。そして処理Ｓ４０６において管理リスト制御部２２８が、受信されたコマンドの処理に応じて管理リスト２３２の更新処理を実行する。その後、処理Ｓ４０８において、受信されたコマンドに応じた処理、例えばデータの書き込み処理やデータの読み出し処理（以下、「コマンド処理」と呼ぶ）が、コマンド処理部によって実行される。そして処理Ｓ４１０において完了通知部２２５が、コマンド処理が完了したことを示す完了通知を、情報処理装置１０に送信する。その後、処理フローは処理Ｓ４１２にて終了する。
【００３０】
図６に示された処理フローにおいて、多数のコマンドが短期間に集中してＣＭ２１に入力されることがある。これをＩＯ集中と呼ぶ。ＩＯ集中が生じた場合、データ送受信部２２１やヒット判定部２２２はある程度並列に、コマンド受信の処理（処理Ｓ４０２）やヒット判定の処理（処理Ｓ４０４）を行うことができる。一方、管理リスト制御部２２８による管理リスト２３２の更新処理は、複数の処理が同時に並行して行われないよう制御される。これは、もし管理リスト２３２の複数の更新処理が同時に並行して行われると、管理リスト２３２に登録された情報に誤りが生じ得るためである。そのため、管理リスト２３２に対する一つの更新処理が実行される場合には、他の更新処理に対してロックが発生するよう制御が行われる。よって管理リスト２３２の複数の更新処理は順に実行されることとなり、複数の更新処理に時間を要する場合がある。
【００３１】
ここで図６において、コマンド処理（処理Ｓ４０８）及び完了通知の送信処理（処理Ｓ４１０）は、管理リスト２３２の更新処理（処理Ｓ４０６）の後に実行される。そのため、ＩＯ集中が生じた場合には、管理リスト２３２の更新処理に遅延が生じ、更にはコマンド処理及び完了通知の送信処理に遅延が生じることとなる。
【００３２】
この問題を解決するための処理フローについて説明する。図７は、コマンドを受信したＣＭ２１のプロセッサ２２０によって実行される処理の他の例を示すフローチャートである。処理フローは処理Ｓ４２０により開始され、処理Ｓ４２２においてデータ送受信部２２１が、情報処理装置１０からコマンドを受信し、処理Ｓ４２４においてヒット判定部２２２が、受信されたコマンドに関するヒット判定を実行する。ここまでの処理フローは図６に示された処理フローと同一である。次に処理Ｓ４２６においてコマンド処理部が、コマンド処理を実行する。そして、処理Ｓ４２８において完了通知部２２５が、コマンド処理が完了したことを示す完了通知を、情報処理装置１０に送信する。その後、処理Ｓ４３０において管理リスト制御部２２８が、コマンド処理に応じて管理リスト２３２を更新する。その後、処理フローは処理Ｓ４３２にて終了する。
【００３３】
図７に開示された処理フローは、管理リスト２３２の更新処理（処理Ｓ４３０）が、コマンド処理（処理Ｓ４２６）や完了通知の送信処理（処理Ｓ４２８）よりも後に実行される点において、図６に開示された処理フローと相違する。図７に開示された処理フローにより、ＩＯ集中が生じた際、コマンド処理及び完了通知の送信処理が、管理リスト２３２の更新処理の遅延に伴って遅延することを解消させることができる。尚、図７に開示された処理フローにおいては、キャッシュメモリ制御部２２３は、キャッシュメモリに常に空き容量が確保されるよう制御する。
【００３４】
次に、図７に示された処理フローが実行される場合における、処理報告生成部２２６による処理及びキュー２３３について説明する。図７に開示された処理フローにおいて、ＩＯ集中が生じた場合、複数のコマンド処理が実行され、複数の完了通知が送信された後に、管理リスト２３２の更新処理が、複数のコマンド処理に対応して複数発生する。上述のように、複数コマンドに応じた複数の受信処理や、複数コマンドに応じた複数のヒット判定処理はそれぞれ並列で実行され得る。また複数のコマンドに応じた複数のコマンド処理、複数のコマンドに応じた完了通知の送信処理もそれぞれ並列で実行され得る。しかし、管理リスト２３２の複数の更新処理は並列には実行されない。そこで処理報告部２２６は、各コマンド処理に対応した処理報告を生成する。処理報告には、コマンド処理において使用されたキャッシュメモリのページを特定する情報が含まれる。そして生成された処理報告はキュー２３３に入力される。その後、管理リスト制御部２２８が、キュー２３３に蓄積された処理報告をキュー２３３から順に取り出し、取り出された処理報告に基づいて管理リスト２３２の更新処理を順に実行する。
【００３５】
図８は、処理報告生成部２２６による処理報告の生成、キュー２３３への処理報告の入力、及び管理リスト制御部２２８による管理リスト２３２の更新処理を説明するための図である。まず処理報告生成部２２６が、コマンド処理が実行されたことに伴い、処理報告を生成する。処理報告生成部２２６によって生成された処理報告であって、未だキュー２３３に入力されていないものを「処理報告ＰＲ」と呼ぶこととする。例えばコマンド処理が、キャッシュメモリのページＡへのアクセスを含むものであった場合には、ページＡを特定する情報を含む処理報告ＰＲが生成される。
【００３６】
生成された処理報告ＰＲは、キュー２３３の最後尾に入力される。図中、キュー２３３は一番上が先頭、一番下が最後尾であるものとする。またキュー２３３に蓄積された処理報告を「処理報告ＱＲ」と呼ぶこととする。キュー２３３に蓄積された処理報告ＱＲは、キュー２３３の先頭から順に管理リスト制御部２２８によって取り出される。管理リスト制御部２２８は、取り出された処理報告ＱＲに基づき、管理リスト２３２の更新処理を実行する。図８においては、キュー２３３の先頭から取り出された処理報告ＱＲがページＡに関するものであるため、ページＡが管理リスト２３２のＭＲＵの位置に移動される様子が開示されている。管理リスト制御部２２８は、このようなキュー２３３からの処理報告ＱＲの取り出し処理及び管理リスト２３２の更新処理を順に実行する。
【００３７】
尚、キュー２３３からページＡに関する処理報告ＱＲが取り出された時点において、管理リスト２３２にページＡが登録されていない場合は、管理リスト制御部２２８は、ページＡを新たに管理リスト２３２のＭＲＵの位置に登録する。
【００３８】
図８を用いて、ＩＯ集中が生じた場合の、管理リスト制御部２２８の処理に関する課題について説明する。ＩＯ集中が生じた場合、特定のページへのアクセスが複数回発生する場合がある。図８においては、キュー２３３にはページＡへのアクセスによって生成された複数の処理報告ＱＲが蓄積されている。このような場合、管理リスト制御部２２８がキュー２３３から順に処理報告ＱＲを取り出して管理リスト２３２の更新処理を実行すると、管理リスト２３２においてページＡがＭＲＵの位置へ移動される処理が繰り返し頻繁に実行されることとなる。管理リスト２３２において同一ページが繰り返しＭＲＵの位置に移動される処理は、プロセッサ２２０の処理負荷を増加させることになる。
【００３９】
尚、図８では、ページＡが管理リスト２３２中において対象ページがＭＲＵの位置に移動されるよう図示されているが、管理リスト２３２の更新処理は、ＭＲＵの位置を示すＭＲＵポインタや、ＬＲＵの位置を示すＬＲＵポインタを移動させる処理であってもよい。
【００４０】
管理リスト２３２において同一ページが繰り返しＭＲＵの位置に移動される処理によってプロセッサ２２０の処理負荷を増加させてしまうという課題を解決するための手法について説明する。図９は、キュー制御部２２７の機能を説明するための図である。処理報告生成部２２６によって生成された処理報告ＰＲをキュー２３３に入力するか否かは、キュー制御部２２７によって決定される。キュー制御部２２７は、所定の条件が満たされた場合には、生成された処理報告ＰＲをキュー２３３に入力しない。所定の条件とは、例えば処理報告生成部２２６によって生成された処理報告ＰＲがページＡに関するものである場合、ページＡに関する他の処理報告ＱＲが既にキュー２３３に蓄積されている、という条件である。図９においては、キュー２３３には既に、ページＡに関する他の処理報告ＱＲが蓄積されている。そのため、キュー制御部２２７は、生成されたページＡに関する処理報告ＰＲを、キュー２３３に入力することなく消去する。これにより、ページＡについてのアクセスが複数なされた場合に、管理リスト２３２においてページＡをＭＲＵの位置に移動させる処理が繰り返し実行されることが抑制される。
【００４１】
図９に開示された例の概念は以下のように説明される。生成された処理報告ＰＲが示すページと同一のページに関する処理報告ＱＲが少なくともｎ個（ｎは自然数）、キュー２３３に蓄積されている場合には、生成された処理報告ＰＲはキュー２３３には入力されない。この場合、キュー２３３に蓄積されている処理報告ＱＲであって、生成された処理報告ＰＲが示すページと同一のページを示す処理報告ＱＲの個数をカウントする。そしてカウントされた個数に基づきキュー制御部２２７は、処理報告ＰＲをキュー２３３へ入力させるか否かを判定する。この方法により、同一ページに関する処理報告ＱＲがｎ個を超えてキュー２３３に蓄積されることが回避される。
【００４２】
ｎの値として、ストレージ制御装置２０の管理者によって指定された値がストレージ制御装置２０に入力してもよく、またプロセッサ２２０が自身で定めた値に設定されてもよい。例えば、プロセッサ２２０が自身の処理負荷を測定し、測定された処理負荷に応じてキュー制御部２２７がｎを定めてもよい。例えば、プロセッサ２２０の処理負荷が所定値以上である場合にはｎが第１の値に設定され、プロセッサ２２０の処理負荷が所定値未満になるとｎが第１の値よりも大きい第２の値に設定されてもよい。
【００４３】
またｎの値は、キャッシュメモリの全容量を考慮して定められてもよい。例えば、キャッシュメモリの全容量が第１容量である場合のｎは第３の値に設定され、キャッシュメモリの全容量が第１容量よりも小さい第２容量である場合のｎは、第３の値よりも大きい第４の値に設定されてもよい。第３の値は上述の第１の値と同一の値であってもよい。
【００４４】
図１０は、プロセッサ２２０によって実行される処理であって、主にキュー２３３への処理報告ＰＲの入力に関する処理のフローチャートである。コマンド処理が実行されたことをトリガとして処理フローが処理Ｓ５００により開始され、処理Ｓ５０２において処理報告生成部２２６が、コマンド処理に応じて処理報告ＰＲを生成する。処理Ｓ５０４においてキュー制御部２２７が、キュー２３３に蓄積されている処理報告ＱＲの中に、生成された処理報告ＰＲが示すページ（以下、「対象ページ」と呼ぶ）と同一のページに関する処理報告ＱＲが有るかを判定する。対象ページと同一ページに関する処理報告ＱＲが有ると判定された場合は、処理フローは処理Ｓ５０６へ進み、対象ページと同一ページに関する処理報告ＱＲが有ると判定されない場合は、処理フローは処理Ｓ５０８へ進む。処理Ｓ５０６においてキュー制御部２２７は、生成された処理報告ＰＲを消去する。よって、処理報告ＰＲはキュー２３３に入力されない。一方、処理Ｓ５０８においてキュー制御部２２７は、生成された処理報告ＰＲをキュー２３３に入力する。そして処理フローは処理Ｓ５１０にて終了する。
【００４５】
図１１は、プロセッサ２２０によって実行される処理であって、主に管理リスト２３２の更新に関する処理のフローチャートである。処理フローは処理Ｓ６００により開始され、処理Ｓ６０２において管理リスト制御部２２８が、キュー２３３の先頭から処理報告ＱＲを取り出す。そして処理Ｓ６０４において管理リスト制御部２２８が、取り出された処理報告ＱＲに基づいて管理リスト２３２の更新処理を行う。そして処理Ｓ６０６において管理リスト制御部２２８が、管理リスト２３２の更新処理が行われた処理報告ＱＲを消去する。更に処理Ｓ６０８において管理リスト制御部２２８は、キュー２３３に他の処理報告ＱＲが蓄積されているかを判定する。他の処理報告ＱＲが蓄積されていると判定された場合は、処理フローは処理Ｓ６０２へ戻り、他の処理報告ＱＲが蓄積されていると判定されない場合は、処理フローは処理Ｓ６１０へ進み、処理Ｓ６１０にて処理フローは終了する。
【００４６】
次に、キュー２３３への処理報告ＰＲの入力に関する処理の変形例について説明する。図９及び図１０においては、対象ページが、キュー２３３に既に蓄積された処理報告ＱＲが示すページと同一である場合に、処理報告ＰＲはキュー２３３に入力されることなく消去される例が示された。他の例においては、処理報告生成部２２６によって生成された処理報告ＰＲではなく、既にキュー２３３に蓄積されている処理報告ＱＲが、キュー２３３から削除されてもよい。この方法によっても、同一ページについての管理リスト２３２の更新処理が繰り返し実行されることが抑制される。
【００４７】
図１２は、プロセッサ２２０によって実行される処理であって、主にキュー２３３への処理報告ＰＲの入力に関する処理の変形例のフローチャートである。コマンド処理が実行されたことをトリガとして処理フローが処理Ｓ５２０により開始され、処理Ｓ５２２において処理報告生成部２２６が、コマンド処理に応じて処理報告ＰＲを生成する。処理Ｓ５２４においてキュー制御部２２７が、キュー２３３の中に、ページ対象と同一のページに関する処理報告ＱＲが有るかを判定する。対象ページと同一のページに関する処理報告ＱＲが有ると判定された場合は、処理フローは処理Ｓ５２６へ進み、対象ページと同一のページに関する処理報告ＱＲが有ると判定されない場合は、処理フローは処理Ｓ５２８へ進む。処理Ｓ５２６においてキュー制御部２２７は、キュー２３３に蓄積されていた処理報告ＱＲをキュー２３３から削除する。処理Ｓ５２８においてキュー制御部２２７は、生成された処理報告ＰＲをキュー２３３に入力する。そして処理フローは処理Ｓ５３０にて終了する。
【００４８】
図１２開示された例において、削除対象となる処理報告ＱＲが複数ある場合には、キュー制御部２２７によって選択された少なくとも一つの処理報告ＱＲが削除される。
【００４９】
次に、キュー２３３への処理報告の入力に関する処理の他の変形例について説明する。図９、図１０及び図１２に開示された例では、まず処理報告生成部２２６によって処理報告ＰＲが生成され、生成された処理報告ＰＲが示すページと同一のページを示す他の処理報告ＱＲが既にキュー２３３に蓄積されているかが判断された。他の方法として、処理報告生成部２２６が、既にキュー２３３に蓄積されている処理報告ＱＲが示すページと同一のページに関する処理報告ＰＲを生成しない、という方法が挙げられる。この方法によっても、同一ページに関する管理リスト２３２の更新処理が繰り返し実行されることが抑制される。
【００５０】
図１３は、プロセッサ２２０によって実行される処理であって、主にキュー２３３への処理報告の入力に関する処理の他の変形例のフローチャートである。コマンド処理が実行されたことをトリガとして処理フローが処理Ｓ５４０により開始され、処理Ｓ５４２において処理報告生成部２２６が、キュー２３３に蓄積されている処理報告ＱＲをモニタすることにより、新たに処理報告ＰＲを生成するかを判定する。具体的には処理報告生成部２２６は、新たに処理報告ＰＲが生成されると仮定した場合に、新たに生成される処理報告ＰＲが示すページと、キュー２３３に蓄積された処理報告ＱＲが示すページとが同一となるかを判定する。新たに生成される処理報告ＰＲが示すページと、キュー２３３に蓄積された処理報告ＱＲが示すページとが同一となる場合には、処理報告生成部２２６は新たな処理報告ＰＲの生成処理を実行しないと判定する。処理Ｓ５４２において、新たな処理報告ＰＲの生成処理を実行すると判定された場合は、処理フローは処理Ｓ５４４へ進み、新たな処理報告ＰＲの生成処理を実行すると判定されない場合は、処理フローは処理Ｓ５４８へ進む。
【００５１】
処理Ｓ５４４において処理報告生成部２２６は、処理報告ＰＲを生成し、処理Ｓ５４６においてキュー制御部２２７が、生成された処理報告ＰＲをキュー２３３に入力する。その後、処理Ｓ５４８において処理フローが終了する。
【００５２】
ここまで、プロセッサ２２０によって実行される、キュー２３３の制御及び管理リスト２３２の制御に関する処理フローが説明された。以下に、ＣＭ２１のプロセッサ２２０によって実行される他の処理内容について説明する。
【００５３】
図１４は、プロセッサ２２０によって実行される処理であって、リードコマンドの受信に基づいて実行されるデータの読み出し処理に関するフローチャートである。処理フローは処理Ｓ７００により開始され、処理Ｓ７０２においてデータ送受信部２２１がリードコマンドを受信する。処理Ｓ７０４においてヒット判定部２２２が、受信されたリードコマンドに関してキャッシュメモリのヒット判定を行う。ヒットと判定された場合は、処理フローは処理Ｓ７０６へ進み、ヒットと判定されない場合は、処理フローは処理Ｓ７１０へ進む。
【００５４】
処理フローが処理Ｓ７０６へ進んだ場合、処理Ｓ７０６においてキャッシュメモリ制御部２２３が、キャッシュメモリからデータを読み出す処理を行う。そして処理Ｓ７０８においてデータ送受信部２２１が、データ（ここではキャッシュメモリから読み出されたデータ）を、リードコマンドの送信元である情報処理装置１０に送信する。
【００５５】
一方、処理フローが処理Ｓ７１０へ進んだ場合、処理Ｓ７１０においてキャッシュメモリ制御部２２３が、キャッシュメモリに空きページがあるかを判定する。空きページがあると判定された場合は、処理フローは処理Ｓ７１４へ進み、空きページがあると判定されない場合は、処理フローは処理Ｓ７１２へ進む。処理Ｓ７１２においてキャッシュメモリ制御部２２３が、空きページを確保する。具体的には、キャッシュメモリ制御部２２３は、管理リスト２３２においてＬＲＵに位置するページのデータを消去することにより、空きページを確保する。
【００５６】
処理Ｓ７１４においてストレージ装置制御部２２４が、ストレージ装置３０からデータを読み出す処理を行う。そして処理Ｓ７１６においてキャッシュメモリ制御部２２３が、ストレージ装置３０から読み出されたデータを空きページに保持させる。その後、処理Ｓ７０８においてデータ送受信部２２１が、データ（ここではストレージ装置３０から読み出されたデータ）を、リードコマンドの送信元である情報処理装置１０に送信しその後、処理Ｓ７１８において処理フローが終了する。
【００５７】
図１５は、プロセッサ２２０によって実行される処理であって、ライトコマンドに基づいて実行されるデータの書き込み処理に関するフローチャートである。処理フローは処理Ｓ７２０により開始され、処理Ｓ７２２においてデータ送受信部２２１がライトコマンドを受信する。処理Ｓ７２４においてヒット判定部２２２が、受信されたライトコマンドに関してキャッシュメモリのヒット判定を行う。ヒットと判定された場合は、処理フローは処理Ｓ７２６へ進み、ヒットと判定されない場合は、処理フローは処理Ｓ７３０へ進む。
【００５８】
処理フローが処理Ｓ７２６へ進んだ場合、処理Ｓ７２６においてキャッシュメモリ制御部２２３が、書き込み対象のデータを、キャッシュメモリ上に上書きする。そして処理Ｓ７２８においてストレージ装置制御部２２４が、キャッシュメモリに保持されたデータを、ストレージ装置３０に書き込む処理を実行する。
【００５９】
一方、処理フローが処理Ｓ７３０へ進んだ場合、処理Ｓ７３０においてキャッシュメモリ制御部２２３が、キャッシュメモリ上の空きページを確保する。具体的には、キャッシュメモリ制御部２２３は、管理リスト２３２においてＬＲＵに位置するページのデータを消去することにより、空きページを確保する。そして処理Ｓ７３２においてキャッシュメモリ制御部２２３が、確保された空きページにデータを保持させる。そして処理Ｓ７２８において、データがストレージ装置３０に書き込まれた後、処理Ｓ７３４において処理フローが終了する。
【００６０】
ここまで第１実施例が開示された。第１実施例に開示された方法により、管理リスト２３２の更新に要するプロセッサ２２０の処理負荷を軽減させることができる。尚、管理リスト２３２のリスト長（キャッシュメモリのページ数）はキュー２３３の最大長よりも長いことが好ましい。管理リスト２３２のリスト長がキュー２３３の最大長よりも長ければ、特定のページに関する処理報告がキューに入力されることなく消去されることによって当該ページのデータがキャッシュメモリから削除される可能性を抑制することができる。尚、第１実施例において、「処理報告ＰＲをキュー２３３に入力しないで消去する処理」として説明された処理は、「処理報告ＰＲを一旦キュー２３３に入力した後にキュー２３３から削除する処理」も含むものとする。
＜第２実施例＞
第１実施例では、キュー２３３に蓄積された処理報告ＱＲが示すページに基づいて、新たに生成された処理報告ＰＲをキュー２３３に入力するか否かが判断された。また第１実施例の変形例では、キュー２３３に蓄積された処理報告ＱＲが示すページに基づいて、キュー２３３に蓄積された処理報告ＱＲを消去するか否かが判断され、又は新たな処理報告ＰＲの生成を行うか否かが判断された。第２実施例では更に、管理リスト２３２に登録されているページの情報に基づいて、生成された処理報告ＰＲをキュー２３３に入力するか否か、又はキュー２３３に蓄積された処理報告ＱＲを消去するか否か、又は処理報告ＰＲの生成を行うか否かが判断される。
【００６１】
図１６は、第２実施例におけるキュー制御部２２７の機能を説明するための図である。まず処理報告生成部２２６が処理報告ＰＲを生成する。ここでは図９と同様に、ページＡを示す情報を含む処理報告ＰＲが生成されるものとする。キュー制御部２２７は、生成された処理報告ＰＲをキュー２３３に入力するか否かの判定を行う。この際、キュー制御部２２７は、キュー２３３の内容に加え、管理リスト２３２の内容もモニタする。そしてキュー制御部２２７は、キュー２３３の内容及び管理リスト２３２の内容に基づいて、処理報告ＰＲをキュー２３３に入力せずに消去するか、処理報告ＰＲをキュー２３３に入力するかを決定する。
【００６２】
例えば、管理リスト２３２にページＡが登録されていない場合であって、ページＡに関する処理報告ＱＲがキュー２３３に２つ以上蓄積されている場合は、キュー制御部２２７は、ページＡに関する処理報告ＰＲをキュー２３３に入力しない。管理リスト２３２にページＡが登録されていない場合であって、ページＡに関する処理報告ＱＲがキュー２３３に１つ蓄積されている又は蓄積されていない場合は、キュー制御部２２７は、ページＡに関する処理報告ＰＲをキュー２３３に入力する。
【００６３】
一方、管理リスト２３２にページＡが登録されている場合であって、ページＡに関する処理報告ＱＲがキュー２３３に１つ以上蓄積されている場合は、キュー制御部２２７は、ページＡに関する処理報告ＰＲをキュー２３３に入力しない。そして、管理リスト２３２にページＡが登録されている場合であって、ページＡに関する処理報告ＱＲがキュー２３３に蓄積されていない場合は、キュー制御部２２７は、ページＡに関する処理報告ＰＲをキュー２３３に入力する。
【００６４】
図１７は、キュー制御部２２７によって実行される処理のフローチャートである。処理フローは処理Ｓ８００により開始され、処理Ｓ８０２においてキュー制御部２２７が、管理リスト２３２に対象ページが登録されているかを判定する。管理リスト２３２に対象ページが登録されていると判定された場合は、処理フローは処理Ｓ８０４に進み、管理リスト２３２に対象ページが登録されていると判定されない場合は、処理フローは処理Ｓ８０６に進む。
【００６５】
処理フローが処理Ｓ８０４へ進んだ場合、処理Ｓ８０４においてキュー制御部２２７は、対象ページと同一のページに関する処理報告ＱＲがキュー２３３に１つ以上蓄積されているかを判定する。対象ページと同一のページに関する処理報告ＱＲがキュー２３３に１つ以上蓄積されていると判定された場合は、処理フローは処理Ｓ８０８へ進み、対象ページと同一のページに関する処理報告ＱＲがキュー２３３に１つ以上蓄積されていると判定されない場合は、処理フローは処理Ｓ８１０へ進む。処理Ｓ８０８においてキュー制御部２２７は、キュー２３３に処理報告ＰＲを入力しない。一方、処理Ｓ８１０においてキュー制御部２２７は、キュー２３３に処理報告ＰＲを入力する。
【００６６】
処理フローが処理Ｓ８０６へ進んだ場合、処理Ｓ８０６においてキュー制御部２２７は、対象ページと同一のページに関する処理報告ＱＲがキュー２３３に２つ以上蓄積されているかを判定する。対象ページと同一のページに関する処理報告ＱＲがキュー２３３に２つ以上蓄積されていると判定された場合は、処理フローは処理Ｓ８０８へ進み、対象ページと同一のページに関する処理報告ＱＲがキュー２３３に２つ以上蓄積されていると判定されない場合は、処理フローは処理Ｓ８１０へ進む。処理Ｓ８０８においてキュー制御部２２７は、キュー２３３に処理報告ＰＲを入力しない。一方、処理Ｓ８１０においてキュー制御部２２７は、キュー２３３に処理報告ＰＲを入力する。その後、処理Ｓ８１２において処理フローは終了する。
【００６７】
第２実施例によって開示される概念を示すと以下のようになる。処理報告生成部２２６によって生成された処理報告ＰＲが示すページと同一のページに関するｎ個の処理報告ＱＲが既にキュー２３３に蓄積されている場合には、処理報告ＰＲはキュー２３３には入力されずに消去される。そして、管理リスト２３２に、処理報告生成部２２６によって生成された処理報告ＰＲが示すページと同一のページが登録されている場合におけるｎは、管理リスト２３２に同一のページが登録されていない場合におけるｎに比べて低い値に設定される。
【００６８】
尚、管理リスト２３２に例えばページＡが登録されているかどうかを判定するための方法としては、例えばフラグを用いる方法が挙げられる。この方法では、ページＡが管理リスト２３２に登録された時点で、ページＡが管理リスト２３２に登録されていることを示すフラグが生成され、ページＡが管理リスト２３２から削除された時点で、フラグが消去される。このフラグの有無により、管理リスト２３２にページＡが登録されているか否かの判断が行われる。
【００６９】
次に、第２実施例の変形例について説明する。図１８は、第２実施例の変形例におけるプロセッサ２２０の機能ブロックを示す図である。図３に示された機能ブロックと同一の機能ブロックについては同一の参照符号が付され、説明は省略される。プロセッサ２２０は第１管理リスト２３２１、第２管理リスト２３２２を有する。以下、第１管理リスト２３２１と第２管理リスト２３２２を区別しない場合は、単に「管理リスト２３２」と表記するものとする。
【００７０】
図１９は、第１管理リスト２３２１と第２管理リスト２３２２の機能を説明するための図である。第１管理リスト２３２１及び第２管理リスト２３２２のそれぞれは、ＬＲＵ方式によって制御される。キャッシュメモリのあるページが第１管理リスト２３２１にも第２管理リスト２３２２にも登録されていない状態において、当該ページにアクセスがあった場合、当該ページはまず第１管理リスト２３２１に登録される。そしてその後、当該ページが第１管理リスト２３２１から消去されるまでの間に当該ページに対して更なるアクセスがあった場合、つまり当該ページに対するヒット判定においてヒットと判定された場合は、当該ページは第２管理リスト２３２２に移動される。当該ページが第２管理リスト２３２２から消去されるまでに、当該ページに対して更なるアクセスがあった場合は、当該ページは第２管理リスト２３２２におけるＭＲＵの位置に移動される。つまり、１回のみアクセスされたページが登録される第１管理リスト２３２１と、２回以上のアクセスがあったページが登録される第２管理リスト２３２２を用いて、キャッシュメモリのページ管理が行われる。
【００７１】
このように２つの管理リスト２３２を用いることにより、例えばストレージ装置３０のシーケンシャルスキャンのように大量のデータが順に読み出される場合であっても、アクセス頻度が高いデータがキャッシュメモリから押し出されることを抑制することができる。
【００７２】
第２実施例は、２つの管理リスト２３２を用いたキャッシュメモリのページ管理においても適用可能である。図２０は、第２実施例において２つの管理リスト２３２を用いてキャッシュメモリのページ管理が行われる場合の、キュー制御部２２７の機能を説明するための図である。まず、処理報告生成部２２６がページＡに関する処理報告ＰＲを生成したとする。キュー制御部２２７は、処理報告ＰＲをキュー２３３に蓄積させるかどうかの判断において、まず２つの管理リスト２３２の内容をモニタする。２つの管理リスト２３２の何れにもページＡが登録されていない場合は、キュー制御部２２７は、キュー２３３にページＡに関する処理報告ＱＲが２つ以上蓄積されているかどうかを判定する。キュー２３３にページＡに関する処理報告ＱＲが２つ以上蓄積されている場合は、キュー制御部２２７は、処理報告ＰＲをキュー２３３に入力することなく消去する。逆に、キュー２３３にページＡに関する処理報告ＱＲが１つ蓄積されている、又は蓄積されていない場合は、キュー制御部２２７は、処理報告ＰＲをキュー２３３に入力する。
【００７３】
一方、２つの管理リスト２３２の何れかにページＡが登録されている場合は、キュー制御部２２７は、キュー２３３にページＡに関する処理報告ＱＲが１つ以上蓄積されているかどうかを判定する。そしてキュー２３３にページＡに関する処理報告ＱＲが１つ以上蓄積されている場合は、キュー制御部２２７は、処理報告ＰＲをキュー２３３に入力することなく消去する。逆に、キュー２３３にページＡに関する処理報告ＱＲが蓄積されていない場合は、キュー制御部２２７は、処理報告ＰＲをキュー２３３に入力する。
【００７４】
第２実施例の変形例によって開示される概念を示すと以下のようになる。処理報告生成部２２６によって生成された処理報告ＰＲが示すページと同一のページに関するｎ個の処理報告ＱＲが既にキュー２３３に蓄積されている場合には、処理報告ＰＲはキュー２３３には入力されずに消去される。そして、２つの管理リスト２３２の何れかに、生成された処理報告ＰＲが示すページと同一のページが登録されている場合におけるｎは、２つの管理リスト２３２の何れにも同一のページが登録されていない場合におけるｎに比べて低い値に設定される。
【００７５】
尚、第２実施例の変形例において、処理報告ＰＲが示すページが、第１管理リスト２３２１と第２管理リスト２３２２のどちらに登録されているのかによって、ｎが異なる値に設定されてもよい。例えば、２つの管理リスト２３２の何れにも、処理報告ＰＲが示すページＡが登録されていない場合であって、ページＡを示す処理報告ＱＲが３つ以上キュー２３３に蓄積されている場合は、処理報告ＰＲはキュー２３３に入力されない。逆に、キュー２３３に蓄積されているページＡに関する処理報告ＱＲの数が２以下である場合は、キュー制御部２２７は、処理報告ＰＲをキュー２３３に入力する。
【００７６】
一方、第１管理リスト２３２１にページＡが登録されている場合であって、キュー２３３に蓄積されたページＡに関する処理報告ＱＲの数が２以上である場合は、キュー制御部２２７は、処理報告ＰＲをキュー２３３に入力せずに消去する。逆に、キュー２３３に蓄積されたページＡに関する処理報告ＱＲの数が１以下である場合は、キュー制御部２２７は、処理報告ＰＲをキュー２３３に入力する。
【００７７】
更に、第２管理リスト２３２２にページＡが登録されている場合であって、キュー２３３に蓄積されたページＡに関する処理報告ＱＲの数が１以上である場合は、キュー制御部２２７は、処理報告ＰＲをキュー２３３に入力せずに消去する。逆に、キュー２３３にはページＡに関する処理報告ＱＲが蓄積されていない場合は、キュー制御部２２７は、処理報告ＰＲをキュー２３３に入力する。
【００７８】
第２実施例の変形例においては、管理リスト２３２の数が２つである場合について説明したが、管理リスト２３２の数は３つ以上であってもよい。例えばＭ個の管理リスト２３２（第１管理リスト２３２１、第２管理リスト２３２２、第３管理リスト２３２３・・・・第Ｍ管理リスト２３２Ｍ）が用いられる場合の例を説明する。アクセスされたページのヒット回数が０回の場合は、第１管理リスト２３２１に登録され、ヒット回数が１回から２回の場合は第２管理リスト２３２２に登録され、ヒット回数が３回から６回の場合は第３管理リスト２３２３に登録される。そして、ヒット回数が２Ｍ−１以上である場合は第Ｍ管理リスト２３２Ｍに登録される。このようにＭ個の管理リスト２３２が用いられる場合において、キュー管理部２２７は、Ｍ個の管理リスト２３２の何れかにページＡが登録されているかを示す情報と、キュー２３３にページＡに関する処理報告ＱＲが何個蓄積されているかを示す情報を取得する。そしてこれらの情報に基づいて、ページＡに関する処理報告ＰＲをキュー２３３に入力するか否かの判断を実行する。もしくは、キュー管理部２２７は、Ｍ個の管理リスト２３２のうちどの管理リスト２３２にページＡが登録されているかを示す情報と、キュー２３３にページＡに関する処理報告ＱＲが何個蓄積されているかを示す情報とを取得する。そしてこれらの情報に基づいて、ページＡに関する処理報告ＰＲをキュー２３３に入力するか否かの判断を実行してもよい。例えば、ページＡを示すｎ個の処理報告ＱＲがキュー２３３に蓄積されている場合には、キュー管理部２２７は、ページＡを示す処理報告ＰＲをキュー２３３に入力せずに消去する。そして、第ｉ管理リスト２３２ｉにページＡが登録されている場合のｎは、第ｊ管理リスト２３２ｊ（ｊ＞ｉ）にページＡが登録されている場合のｎに比べて高い値に設定されてもよい。
【００７９】
ここまで第２実施例とその変形例について説明した。第２実施例において開示された管理リスト２３２の数や、複数の管理リスト２３２によるページ管理方法、また数値ｎの設定方法は一例であり、当業者が適宜変更し得るものである。
【００８０】
また第２実施例及びその変形例においても、第１実施例の変形例と同様に、処理報告ＰＲをキュー２３３に入力せずに消去する処理に代えて、キュー２３３に蓄積された処理報告ＱＲを消去する処理、又は処理報告ＰＲを生成しない処理が行われてもよい。
【００８１】
開示の実施形態に基づき、更に以下の付記を開示する。
（付記１）
複数の領域を含むキャッシュメモリを有し、
情報処理装置からコマンドを受信し、
前記コマンドの受信に基づき、前記キャッシュメモリへのアクセスを含むコマンド処理を実行し、
前記複数の領域のうち、前記コマンド処理においてアクセスされた領域を特定する処理報告を生成し、
生成された前記処理報告をキューに入力し、
前記キューに入力された前記処理報告に基づき、前記領域へのアクセスを管理リストに記録する管理リスト更新処理を実行するストレージ制御装置であって、
前記情報処理装置から第１コマンドを受信した場合、前記第１コマンドの受信に基づき、前記キャッシュメモリの前記複数の領域の第１領域へのアクセスを含む第１コマンド処理を実行し、
前記第１領域を特定する第１処理報告を生成し、前記キューに、前記第１領域を特定する１又は複数の第２処理報告が保持されている場合には、生成された前記第１処理報告の前記キューへの入力を行わないか、若しくは、１又は複数の前記第２処理報告の少なくとも一つを前記キューから削除するか、又は、
前記キューに、前記第１領域を特定する１又は複数の前記第２処理報告が保持されている場合には、前記第１処理報告の生成を実行しない
ことを特徴とするストレージ制御装置。
（付記２）
前記管理リストに前記第１領域を含む前記複数の領域が登録されている場合、前記第１処理報告に基づく前記管理リスト更新処理は、前記複数の領域のうち前記第１領域が、直近にアクセスされた時刻が最も新しいことを示すよう、前記管理リストを変更する処理を含むことを特徴とする付記１に記載のストレージ制御装置。
（付記３）
前記複数の領域のうち、直近にアクセスされた前記時刻が最も古い領域に保持されたデータを消去することを特徴とする付記２に記載のストレージ制御装置。
（付記４）
前記第１コマンドが第１データの読み出しを要求する場合であって、前記第１データが前記第１領域に保持されている場合は、前記第１データを前記第１領域から読み出して、読み出された前記第１データを前記情報処理装置へ送信し、
前記第１コマンドが前記第１データの読み出しを要求する場合であって、前記第１データが前記第１領域を含む前記キャッシュメモリに保持されていない場合は、前記第１データをストレージ装置から読み出して、読み出された前記第１データを前記情報処理装置へ送信し、前記第１データを前記キャッシュメモリの前記第１領域へ保持させる
ことを特徴とする付記１乃至３何れか一つに記載のストレージ制御装置。
（付記５）
前記第１コマンドが第１データの書き込みを要求する場合、前記第１データを前記第１領域に保持させることを特徴とする付記１乃至３何れか一つに記載のストレージ制御装置。
（付記６）
前記キューに１又は複数の前記第２処理報告が保持されている場合に、１又は複数の前記第２処理報告の個数を特定し、
前記個数が所定値以上の場合に、生成された前記第１処理報告の前記キューへの入力を行わない、若しくは、前記１又は複数の第２処理報告の少なくとも一つを前記キューから削除する、又は、前記第１処理報告の生成を行わない
ことを特徴とする付記１乃至５何れか一つに記載のストレージ制御装置。
（付記７）
更に、前記管理リスト更新処理を実行するプロセッサを含み、
前記プロセッサの処理負荷を特定し、
前記プロセッサの前記処理負荷が第１の値である場合は、前記所定値は第２の値であり、
前記プロセッサの前記処理負荷が、前記第１の値よりも高い第３の値である場合は、前記所定値は、前記第２の値よりも低い第４の値である
ことを特徴とする付記６に記載のストレージ制御装置。
（付記８）
複数の前記コマンドが前記ストレージ制御装置によって受信された場合、複数の前記コマンドの受信に基づいて複数の前記コマンド処理を実行し、
複数の前記コマンド処理に基づいて複数の前記処理報告を生成し、
複数の前記処理報告を前記キューに入力し、
複数の前記処理報告を前記キューから順次取り出すことにより、複数の前記管理リスト更新処理を順次実行する
ことを特徴とする付記１乃至７何れか一つに記載のストレージ制御装置。
（付記９）
前記管理リストに、前記第１領域が登録されているかを示す第１情報と、前記キューに、１又は複数の前記第２処理報告が保持されているかを示す第２情報とに基づいて、前記第１処理報告の前記キューへの入力を行うかの判断、若しくは、１又は複数の前記第２処理報告の少なくとも一つを前記キューから削除するかの判断、又は、前記第１処理報告の生成を行うかの判断を行う
ことを特徴とする付記１乃至８何れか一つに記載のストレージ制御装置。
（付記１０）
前記コマンド処理は、前記ストレージ装置へのアクセスを更に含み、
前記処理報告の生成は、前記ストレージ装置へのアクセスの後に実行される
ことを特徴とする付記４乃至９何れか一つに記載のストレージ制御装置。
（付記１１）
複数の領域を含むキャッシュメモリを有するストレージ制御装置が、
情報処理装置からコマンドを受信し、
前記コマンドの受信に基づき、前記キャッシュメモリへのアクセスを含むコマンド処理を実行し、
前記複数の領域のうち、前記コマンド処理においてアクセスされた領域を特定する処理報告を生成し、
生成された前記処理報告をキューに入力し、
前記キューに入力された前記処理報告に基づき、前記領域へのアクセスを管理リストに記録する管理リスト更新処理を実行し、
前記情報処理装置から第１コマンドを受信した場合、前記第１コマンドの受信に基づき、前記キャッシュメモリの前記複数の領域の第１領域へのアクセスを含む第１コマンド処理を実行し、
前記第１領域を特定する第１処理報告を生成し、前記キューに、前記第１領域を特定する１又は複数の第２処理報告が保持されている場合には、生成された前記第１処理報告の前記キューへの入力を行わないか、若しくは、１又は複数の前記第２処理報告の少なくとも一つを前記キューから削除するか、又は、
前記キューに、前記第１領域を特定する１又は複数の前記第２処理報告が保持されている場合には、前記第１処理報告の生成を実行しない
ことを特徴とするキャッシュメモリ制御方法。
（付記１２）
前記管理リストに前記第１領域を含む前記複数の領域が登録されている場合、前記第１処理報告に基づく前記管理リスト更新処理は、前記複数の領域のうち前記第１領域が、直近にアクセスされた時刻が最も新しいことを示すよう、前記管理リストを変更する処理を含むことを特徴とする付記１１に記載のキャッシュメモリ制御方法。
（付記１３）
前記複数の領域のうち、直近にアクセスされた前記時刻が最も古い領域に保持されたデータを消去することを特徴とする付記１２に記載のキャッシュメモリ制御方法。
（付記１４）
前記第１コマンドが第１データの読み出しを要求する場合であって、前記第１データが前記第１領域に保持されている場合は、前記第１データを前記第１領域から読み出して、読み出された前記第１データを前記情報処理装置へ送信し、
前記第１コマンドが前記第１データの読み出しを要求する場合であって、前記第１データが前記第１領域を含む前記キャッシュメモリに保持されていない場合は、前記第１データをストレージ装置から読み出して、読み出された前記第１データを前記情報処理装置へ送信し、前記第１データを前記キャッシュメモリの前記第１領域へ保持させる
ことを特徴とすることを特徴とする付記１１乃至１３何れか一つに記載のキャッシュメモリ制御方法。
（付記１５）
前記第１コマンドが第１データの書き込みを要求する場合、前記第１データを前記第１領域に保持させることを特徴とする付記１１乃至１３何れか一つに記載のキャッシュメモリ制御方法。
（付記１６）
前記キューに１又は複数の前記第２処理報告が保持されている場合に、１又は複数の前記第２処理報告の個数を特定し、
前記個数が所定値以上の場合に、生成された前記第１処理報告の前記キューへの入力を行わないか、若しくは、１又は複数の前記第２処理報告の少なくとも一つを前記キューから削除するか、又は、前記第１処理報告の生成を行わない
ことを特徴とする付記１１乃至１５何れか一つに記載のキャッシュメモリ制御方法。
（付記１７）
前記ストレージ制御装置に含まれる、前記管理リスト更新処理を実行するプロセッサの処理負荷を特定する工程を更に含み、
前記プロセッサの前記処理負荷が第１の値である場合は、前記所定値は第２の値であり、
前記プロセッサの前記処理負荷が、前記第１の値よりも高い第３の値である場合は、前記所定値は、前記第２の値よりも低い第４の値である
ことを特徴とする付記１６に記載のキャッシュメモリ制御方法。
（付記１８）
複数の前記コマンドが前記ストレージ制御装置によって受信された場合、複数の前記コマンドの受信に基づいて複数の前記コマンド処理を実行し、
複数の前記コマンド処理に基づいて複数の前記処理報告を生成し、
複数の前記処理報告を前記キューに入力し、
複数の前記処理報告を前記キューから順次取り出すことにより、複数の前記管理リスト更新処理を順次実行する
ことを特徴とする付記１１乃至１７何れか一つに記載のキャッシュメモリ制御方法。
（付記１９）
前記管理リストに、前記第１領域が登録されているかを示す第１情報と、前記キューに、１又は複数の前記第２処理報告が保持されているかを示す第２情報とに基づいて、前記第１処理報告の前記キューへの入力を行うかの判断、若しくは、前記１又は複数の第２処理報告の少なくとも一つを前記キューから削除するかの判断、又は、前記第１処理報告の生成を行うかの判断を行う
ことを特徴とする付記１１乃至１８何れか一つに記載のキャッシュメモリ制御方法。
（付記２０）
ストレージ装置と、
複数の領域を含むキャッシュメモリを有するストレージ制御装置と、
を含み、
前記ストレージ制御装置は、
情報処理装置からコマンドを受信し、
前記コマンドの受信に基づき、前記キャッシュメモリへのアクセスを含むコマンド処理を実行し、
前記複数の領域のうち、前記コマンド処理においてアクセスされた領域を特定する処理報告を生成し、
生成された前記処理報告をキューに入力し、
前記キューに入力された前記処理報告に基づき、前記領域へのアクセスを管理リストに記録する管理リスト更新処理を実行するストレージ制御装置であって、
前記情報処理装置から第１コマンドを受信した場合、前記第１コマンドの受信に基づき、前記キャッシュメモリの前記複数の領域の第１領域へのアクセスを含む第１コマンド処理を実行し、
前記第１領域を特定する第１処理報告を生成し、前記キューに、前記第１領域を特定する１又は複数の第２処理報告が保持されている場合には、生成された前記第１処理報告の前記キューへの入力を行わないか、若しくは、１又は複数の前記第２処理報告の少なくとも一つを前記キューから削除するか、又は、
前記キューに、前記第１領域を特定する１又は複数の前記第２処理報告が保持されている場合には、前記第１処理報告の生成を実行しない
ことを特徴とするストレージシステム。
【符号の説明】
【００８２】
１０  情報処理装置
２０  ストレージ制御装置
２１、２１ａ、２１ｂ  制御装置（ＣＭ）
３０  ストレージ装置
２１０  ＣＡ
２２０  プロセッサ
２４０  不揮発性メモリ
２５０  揮発性メモリ
２６０  ＩＯＣ
２７０  ＥＸＰ
２２１  データ送受信部
２２２  ヒット判定部
２２３  キャッシュメモリ制御部
２２４  ストレージ装置制御部
２２５  完了通知部
２２６  処理報告生成部
２２７  キュー制御部
２２８  管理リスト制御部
２３１  メタデータリスト
２３２  管理リスト
２３２１  第１管理リスト
２３２２  第２管理リスト
２３３  キュー
【図１】
2018163457.tif 000003
【図２】
2018163457.tif 000004
【図３】
2018163457.tif 000005
【図４】
2018163457.tif 000006
【図５】
2018163457.tif 000007
【図６】
2018163457.tif 000008
【図７】
2018163457.tif 000009
【図８】
2018163457.tif 000010
【図９】
2018163457.tif 000011
【図１０】
2018163457.tif 000012
【図１１】
2018163457.tif 000013
【図１２】
2018163457.tif 000014
【図１３】
2018163457.tif 000015
【図１４】
2018163457.tif 000016
【図１５】
2018163457.tif 000017
【図１６】
2018163457.tif 000018
【図１７】
2018163457.tif 000019
【図１８】
2018163457.tif 000020
【図１９】
2018163457.tif 000021
【図２０】
2018163457.tif 000022